@koda-sl/baker-bridge 0.108.0-dev.fe3d33fa3 → 0.109.0-dev.3bafd569e

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 (321) hide show
  1. package/README.md +107 -51
  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 +4 -0
  102. package/dist/hono/agent-session.d.ts.map +1 -1
  103. package/dist/hono/agent-session.js +28 -2
  104. package/dist/hono/agent-session.js.map +1 -1
  105. package/dist/hono/agent-session.test.js +37 -0
  106. package/dist/hono/agent-session.test.js.map +1 -1
  107. package/dist/hono/agent-tasks.d.ts.map +1 -1
  108. package/dist/hono/agent-tasks.js +11 -7
  109. package/dist/hono/agent-tasks.js.map +1 -1
  110. package/dist/hono/agent-tasks.test.js +15 -0
  111. package/dist/hono/agent-tasks.test.js.map +1 -1
  112. package/dist/hono/agent.d.ts +2 -0
  113. package/dist/hono/agent.d.ts.map +1 -1
  114. package/dist/hono/agent.js +22 -4
  115. package/dist/hono/agent.js.map +1 -1
  116. package/dist/hono/agent.test.js +8 -2
  117. package/dist/hono/agent.test.js.map +1 -1
  118. package/dist/hono/attachments.d.ts +6 -1
  119. package/dist/hono/attachments.d.ts.map +1 -1
  120. package/dist/hono/attachments.js +9 -4
  121. package/dist/hono/attachments.js.map +1 -1
  122. package/dist/hono/attachments.test.js +5 -0
  123. package/dist/hono/attachments.test.js.map +1 -1
  124. package/dist/hono/avatar-accent.d.ts +23 -5
  125. package/dist/hono/avatar-accent.d.ts.map +1 -1
  126. package/dist/hono/avatar-accent.js +54 -63
  127. package/dist/hono/avatar-accent.js.map +1 -1
  128. package/dist/hono/avatar-accent.test.js +64 -35
  129. package/dist/hono/avatar-accent.test.js.map +1 -1
  130. package/dist/hono/avatar-casting.d.ts +1 -0
  131. package/dist/hono/avatar-casting.d.ts.map +1 -1
  132. package/dist/hono/avatar-casting.js +18 -4
  133. package/dist/hono/avatar-casting.js.map +1 -1
  134. package/dist/hono/avatar-casting.test.js +5 -0
  135. package/dist/hono/avatar-casting.test.js.map +1 -1
  136. package/dist/hono/avatar-face-question.d.ts +23 -6
  137. package/dist/hono/avatar-face-question.d.ts.map +1 -1
  138. package/dist/hono/avatar-face-question.js +48 -59
  139. package/dist/hono/avatar-face-question.js.map +1 -1
  140. package/dist/hono/avatar-face-question.test.js +46 -101
  141. package/dist/hono/avatar-face-question.test.js.map +1 -1
  142. package/dist/hono/baker-ui-tool-schemas.test.js +30 -4
  143. package/dist/hono/baker-ui-tool-schemas.test.js.map +1 -1
  144. package/dist/hono/blocking-card.d.ts +12 -0
  145. package/dist/hono/blocking-card.d.ts.map +1 -0
  146. package/dist/hono/blocking-card.js +12 -0
  147. package/dist/hono/blocking-card.js.map +1 -0
  148. package/dist/hono/bridge-job.d.ts +78 -3
  149. package/dist/hono/bridge-job.d.ts.map +1 -1
  150. package/dist/hono/bridge-job.js +322 -61
  151. package/dist/hono/bridge-job.js.map +1 -1
  152. package/dist/hono/bridge-job.test.js +551 -26
  153. package/dist/hono/bridge-job.test.js.map +1 -1
  154. package/dist/hono/check-content.d.ts +49 -0
  155. package/dist/hono/check-content.d.ts.map +1 -0
  156. package/dist/hono/check-content.js +182 -0
  157. package/dist/hono/check-content.js.map +1 -0
  158. package/dist/hono/check-content.test.d.ts +2 -0
  159. package/dist/hono/check-content.test.d.ts.map +1 -0
  160. package/dist/hono/check-content.test.js +87 -0
  161. package/dist/hono/check-content.test.js.map +1 -0
  162. package/dist/hono/connection-input.d.ts +163 -12
  163. package/dist/hono/connection-input.d.ts.map +1 -1
  164. package/dist/hono/connection-input.js +162 -12
  165. package/dist/hono/connection-input.js.map +1 -1
  166. package/dist/hono/connection-input.test.js +112 -9
  167. package/dist/hono/connection-input.test.js.map +1 -1
  168. package/dist/hono/convex.d.ts +8 -0
  169. package/dist/hono/convex.d.ts.map +1 -1
  170. package/dist/hono/convex.js +8 -0
  171. package/dist/hono/convex.js.map +1 -1
  172. package/dist/hono/convex.test.js +4 -1
  173. package/dist/hono/convex.test.js.map +1 -1
  174. package/dist/hono/credential-input.d.ts +39 -0
  175. package/dist/hono/credential-input.d.ts.map +1 -0
  176. package/dist/hono/credential-input.js +78 -0
  177. package/dist/hono/credential-input.js.map +1 -0
  178. package/dist/hono/credential-scrub.d.ts +42 -0
  179. package/dist/hono/credential-scrub.d.ts.map +1 -0
  180. package/dist/hono/credential-scrub.js +173 -0
  181. package/dist/hono/credential-scrub.js.map +1 -0
  182. package/dist/hono/credential-scrub.test.d.ts +2 -0
  183. package/dist/hono/credential-scrub.test.d.ts.map +1 -0
  184. package/dist/hono/credential-scrub.test.js +130 -0
  185. package/dist/hono/credential-scrub.test.js.map +1 -0
  186. package/dist/hono/env.d.ts +1 -0
  187. package/dist/hono/env.d.ts.map +1 -1
  188. package/dist/hono/env.js +2 -0
  189. package/dist/hono/env.js.map +1 -1
  190. package/dist/hono/flow-crypto.d.ts +2 -1
  191. package/dist/hono/flow-crypto.d.ts.map +1 -1
  192. package/dist/hono/flow-crypto.js +50 -26
  193. package/dist/hono/flow-crypto.js.map +1 -1
  194. package/dist/hono/flow-crypto.test.js +32 -0
  195. package/dist/hono/flow-crypto.test.js.map +1 -1
  196. package/dist/hono/flow-input-card-fields.test.d.ts +10 -0
  197. package/dist/hono/flow-input-card-fields.test.d.ts.map +1 -0
  198. package/dist/hono/flow-input-card-fields.test.js +26 -0
  199. package/dist/hono/flow-input-card-fields.test.js.map +1 -0
  200. package/dist/hono/flow-input-fields.test.js +1 -1
  201. package/dist/hono/flow-input-fields.test.js.map +1 -1
  202. package/dist/hono/flow-input.d.ts +23 -2
  203. package/dist/hono/flow-input.d.ts.map +1 -1
  204. package/dist/hono/flow-input.js +63 -14
  205. package/dist/hono/flow-input.js.map +1 -1
  206. package/dist/hono/flow-input.test.js +67 -11
  207. package/dist/hono/flow-input.test.js.map +1 -1
  208. package/dist/hono/jev.d.ts +16 -0
  209. package/dist/hono/jev.d.ts.map +1 -0
  210. package/dist/hono/jev.js +60 -0
  211. package/dist/hono/jev.js.map +1 -0
  212. package/dist/hono/jev.test.d.ts +2 -0
  213. package/dist/hono/jev.test.d.ts.map +1 -0
  214. package/dist/hono/jev.test.js +15 -0
  215. package/dist/hono/jev.test.js.map +1 -0
  216. package/dist/hono/knowledge-content.d.ts.map +1 -1
  217. package/dist/hono/knowledge-content.js +4 -2
  218. package/dist/hono/knowledge-content.js.map +1 -1
  219. package/dist/hono/knowledge-content.test.js +6 -5
  220. package/dist/hono/knowledge-content.test.js.map +1 -1
  221. package/dist/hono/mcp-servers.d.ts +8 -1
  222. package/dist/hono/mcp-servers.d.ts.map +1 -1
  223. package/dist/hono/mcp-servers.js +17 -6
  224. package/dist/hono/mcp-servers.js.map +1 -1
  225. package/dist/hono/mcp-servers.test.js +25 -0
  226. package/dist/hono/mcp-servers.test.js.map +1 -1
  227. package/dist/hono/model-capabilities.d.ts.map +1 -1
  228. package/dist/hono/model-capabilities.js +20 -9
  229. package/dist/hono/model-capabilities.js.map +1 -1
  230. package/dist/hono/model-capabilities.test.js +16 -8
  231. package/dist/hono/model-capabilities.test.js.map +1 -1
  232. package/dist/hono/oom-priority.agent.test.d.ts +2 -0
  233. package/dist/hono/oom-priority.agent.test.d.ts.map +1 -0
  234. package/dist/hono/oom-priority.agent.test.js +138 -0
  235. package/dist/hono/oom-priority.agent.test.js.map +1 -0
  236. package/dist/hono/oom-priority.d.ts +39 -0
  237. package/dist/hono/oom-priority.d.ts.map +1 -0
  238. package/dist/hono/oom-priority.js +138 -0
  239. package/dist/hono/oom-priority.js.map +1 -0
  240. package/dist/hono/oom-priority.test.d.ts +2 -0
  241. package/dist/hono/oom-priority.test.d.ts.map +1 -0
  242. package/dist/hono/oom-priority.test.js +52 -0
  243. package/dist/hono/oom-priority.test.js.map +1 -0
  244. package/dist/hono/openrouter-session.d.ts.map +1 -1
  245. package/dist/hono/openrouter-session.js +12 -1
  246. package/dist/hono/openrouter-session.js.map +1 -1
  247. package/dist/hono/openrouter-session.test.js +9 -3
  248. package/dist/hono/openrouter-session.test.js.map +1 -1
  249. package/dist/hono/prompt-context.d.ts +8 -1
  250. package/dist/hono/prompt-context.d.ts.map +1 -1
  251. package/dist/hono/prompt-context.js +45 -7
  252. package/dist/hono/prompt-context.js.map +1 -1
  253. package/dist/hono/prompt-context.test.js +32 -1
  254. package/dist/hono/prompt-context.test.js.map +1 -1
  255. package/dist/hono/publish-recovery.d.ts +1 -1
  256. package/dist/hono/publish-recovery.d.ts.map +1 -1
  257. package/dist/hono/publish-recovery.js +9 -6
  258. package/dist/hono/publish-recovery.js.map +1 -1
  259. package/dist/hono/publish-recovery.test.js +11 -2
  260. package/dist/hono/publish-recovery.test.js.map +1 -1
  261. package/dist/hono/relay.d.ts +10 -1
  262. package/dist/hono/relay.d.ts.map +1 -1
  263. package/dist/hono/relay.js +6 -0
  264. package/dist/hono/relay.js.map +1 -1
  265. package/dist/hono/sandbox-content.d.ts +2 -0
  266. package/dist/hono/sandbox-content.d.ts.map +1 -1
  267. package/dist/hono/sandbox-content.js +8 -4
  268. package/dist/hono/sandbox-content.js.map +1 -1
  269. package/dist/hono/sandbox-content.test.js +20 -1
  270. package/dist/hono/sandbox-content.test.js.map +1 -1
  271. package/dist/hono/server.d.ts.map +1 -1
  272. package/dist/hono/server.js +32 -0
  273. package/dist/hono/server.js.map +1 -1
  274. package/dist/hono/server.test.js +21 -1
  275. package/dist/hono/server.test.js.map +1 -1
  276. package/dist/hono/session-continuity.integration.test.js +10 -1
  277. package/dist/hono/session-continuity.integration.test.js.map +1 -1
  278. package/dist/hono/tag-fields.d.ts.map +1 -1
  279. package/dist/hono/tag-fields.js +2 -0
  280. package/dist/hono/tag-fields.js.map +1 -1
  281. package/dist/hono/tag-input.d.ts +124 -3
  282. package/dist/hono/tag-input.d.ts.map +1 -1
  283. package/dist/hono/tag-input.js +27 -17
  284. package/dist/hono/tag-input.js.map +1 -1
  285. package/dist/hono/tag-input.test.js +19 -1
  286. package/dist/hono/tag-input.test.js.map +1 -1
  287. package/dist/hono/types.d.ts +15 -0
  288. package/dist/hono/types.d.ts.map +1 -1
  289. package/dist/hono/workspace-script.d.ts +10 -0
  290. package/dist/hono/workspace-script.d.ts.map +1 -0
  291. package/dist/hono/workspace-script.js +19 -0
  292. package/dist/hono/workspace-script.js.map +1 -0
  293. package/dist/hono/workspace-settle.d.ts +20 -0
  294. package/dist/hono/workspace-settle.d.ts.map +1 -0
  295. package/dist/hono/workspace-settle.js +50 -0
  296. package/dist/hono/workspace-settle.js.map +1 -0
  297. package/dist/review/digest.d.ts +15 -2
  298. package/dist/review/digest.d.ts.map +1 -1
  299. package/dist/review/digest.js +90 -59
  300. package/dist/review/digest.js.map +1 -1
  301. package/dist/review/digest.test.js +94 -6
  302. package/dist/review/digest.test.js.map +1 -1
  303. package/dist/review/evidence-block.js +1 -1
  304. package/dist/review/evidence-block.js.map +1 -1
  305. package/dist/review/evidence-block.test.js +0 -10
  306. package/dist/review/evidence-block.test.js.map +1 -1
  307. package/dist/review/shell-policy.d.ts +6 -0
  308. package/dist/review/shell-policy.d.ts.map +1 -1
  309. package/dist/review/shell-policy.js +240 -72
  310. package/dist/review/shell-policy.js.map +1 -1
  311. package/dist/review/shell-policy.test.js +114 -0
  312. package/dist/review/shell-policy.test.js.map +1 -1
  313. package/package.json +10 -5
  314. package/dist/hono/latitude-telemetry.d.ts +0 -17
  315. package/dist/hono/latitude-telemetry.d.ts.map +0 -1
  316. package/dist/hono/latitude-telemetry.js +0 -52
  317. package/dist/hono/latitude-telemetry.js.map +0 -1
  318. package/dist/hono/latitude-telemetry.test.d.ts +0 -2
  319. package/dist/hono/latitude-telemetry.test.d.ts.map +0 -1
  320. package/dist/hono/latitude-telemetry.test.js +0 -18
  321. 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,IAAI,GAAW,CAAC;AAEhB,KAAK,UAAU,GAAG,CAAC,GAAG,IAAc;IAClC,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,OAAe;IAChD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,GAAG,GAAG,0CAA0C,CAAC;AAEvD,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC5D,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACtD,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,KAAK,CAAC,wCAAwC,EAAE,8BAA8B,CAAC,CAAC;QACtF,MAAM,KAAK,CAAC,GAAG,GAAG,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAClG,MAAM,KAAK,CAAC,GAAG,GAAG,YAAY,EAAE,4BAA4B,CAAC,CAAC;QAC9D,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAEzC,MAAM,KAAK,CAAC,GAAG,GAAG,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,KAAK,CAAC,GAAG,GAAG,iBAAiB,EAAE,gEAAgE,CAAC,CAAC;QACvG,MAAM,KAAK,CAAC,GAAG,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,EAAE,EAAE,IAAI;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;gBAClD,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;aACvG;SACF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,CAAC,WAAW,EAAE,OAAO,CAAC;YACtB,CAAC,YAAY,EAAE,UAAU,CAAC;YAC1B,CAAC,gBAAgB,EAAE,OAAO,CAAC;YAC3B,CAAC,WAAW,EAAE,SAAS,CAAC;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9D,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,4BAA4B;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,KAAK,CACT,+CAA+C,EAC/C,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACzD,CAAC;QACF,MAAM,KAAK,CAAC,mDAAmD,EAAE,gBAAgB,CAAC,CAAC;QACnF,MAAM,KAAK,CAAC,iDAAiD,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,iDAAiD,EAAE,kCAAkC,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACjE,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC1E,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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", "shopify"];
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";
@@ -32,11 +33,35 @@ declare const connectionRequestShape: z.ZodObject<{
32
33
  "x-ads": "x-ads";
33
34
  }>;
34
35
  reason: z.ZodString;
35
- }, z.core.$strip>;
36
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
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";
@@ -52,13 +77,37 @@ export declare const connectionInputToolShape: {
52
77
  "x-ads": "x-ads";
53
78
  }>;
54
79
  reason: z.ZodString;
55
- }, z.core.$strip>>;
80
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
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";
@@ -76,10 +125,12 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
76
125
  accountLabel: z.ZodOptional<z.ZodString>;
77
126
  selected: z.ZodArray<z.ZodString>;
78
127
  cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
128
+ mediaSourceKey: z.ZodOptional<z.ZodString>;
79
129
  }, z.core.$strip>, z.ZodObject<{
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";
@@ -95,13 +146,43 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
95
146
  "x-ads": "x-ads";
96
147
  }>;
97
148
  reason: z.ZodOptional<z.ZodString>;
98
- }, 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>]>;
99
179
  export type ConnectionInputResult = z.infer<typeof connectionInputResultSchema>;
100
180
  export declare const connectionInputResolutionSchema: z.ZodObject<{
101
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
181
+ results: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
102
182
  status: z.ZodLiteral<"connected">;
103
183
  platform: z.ZodEnum<{
104
184
  calendly: "calendly";
185
+ "chatgpt-ads": "chatgpt-ads";
105
186
  "google-ads": "google-ads";
106
187
  "google-analytics": "google-analytics";
107
188
  "google-drive": "google-drive";
@@ -119,10 +200,12 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
119
200
  accountLabel: z.ZodOptional<z.ZodString>;
120
201
  selected: z.ZodArray<z.ZodString>;
121
202
  cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
203
+ mediaSourceKey: z.ZodOptional<z.ZodString>;
122
204
  }, z.core.$strip>, z.ZodObject<{
123
205
  status: z.ZodLiteral<"declined">;
124
206
  platform: z.ZodEnum<{
125
207
  calendly: "calendly";
208
+ "chatgpt-ads": "chatgpt-ads";
126
209
  "google-ads": "google-ads";
127
210
  "google-analytics": "google-analytics";
128
211
  "google-drive": "google-drive";
@@ -138,9 +221,52 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
138
221
  "x-ads": "x-ads";
139
222
  }>;
140
223
  reason: z.ZodOptional<z.ZodString>;
141
- }, 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>]>>;
142
254
  }, z.core.$strip>;
143
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[];
144
270
  /** Parse-at-boundary for the resolution posted to `POST /connection-input-decision`. */
145
271
  export declare function parseConnectionInputResolution(value: unknown): ConnectionInputResolution | null;
146
272
  export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
@@ -148,13 +274,15 @@ export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
148
274
  * `canUseTool` sees the RAW model input — MCP validation hasn't run yet — so the
149
275
  * requests are normalized here before anything downstream trusts them. Unknown
150
276
  * platforms (TikTok Ads, a hallucinated id) are dropped rather than shown as a
151
- * dead tab.
277
+ * dead tab. The dashboard applies the same rules (`connectionRequestsFromToolInput`)
278
+ * because it resolves tabs by index into this list.
152
279
  */
153
280
  export declare function normalizeConnectionInputToolInput(input: unknown): ConnectionInputRequest[];
154
281
  export declare function createConnectionInputTool(): import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
155
- connections: z.ZodArray<z.ZodObject<{
282
+ connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
156
283
  platform: z.ZodEnum<{
157
284
  calendly: "calendly";
285
+ "chatgpt-ads": "chatgpt-ads";
158
286
  "google-ads": "google-ads";
159
287
  "google-analytics": "google-analytics";
160
288
  "google-drive": "google-drive";
@@ -170,7 +298,30 @@ export declare function createConnectionInputTool(): import("@anthropic-ai/claud
170
298
  "x-ads": "x-ads";
171
299
  }>;
172
300
  reason: z.ZodString;
173
- }, z.core.$strip>>;
301
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
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>]>>;
174
325
  resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
175
326
  }>;
176
327
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"connection-input.d.ts","sourceRoot":"","sources":["../../src/hono/connection-input.ts"],"names":[],"mappings":"AAoBA,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,EACV,SAAS,CACD,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBAK1B,CAAC;AAEH,eAAO,MAAM,wBAAwB;IACnC,WAAW;;;;;;;;;;;;;;;;;;;IAKX,UAAU;CAKX,CAAC;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAgBtC,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,CAgB1F;AASD,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"}