@koda-sl/baker-bridge 0.108.0 → 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.
- package/README.md +107 -51
- package/dist/broker/baker-api.d.ts +23 -0
- package/dist/broker/baker-api.d.ts.map +1 -0
- package/dist/broker/baker-api.js +55 -0
- package/dist/broker/baker-api.js.map +1 -0
- package/dist/broker/broker-client.d.ts +10 -0
- package/dist/broker/broker-client.d.ts.map +1 -0
- package/dist/broker/broker-client.js +60 -0
- package/dist/broker/broker-client.js.map +1 -0
- package/dist/broker/broker-process.d.ts +10 -0
- package/dist/broker/broker-process.d.ts.map +1 -0
- package/dist/broker/broker-process.js +20 -0
- package/dist/broker/broker-process.js.map +1 -0
- package/dist/broker/broker-process.test.d.ts +2 -0
- package/dist/broker/broker-process.test.d.ts.map +1 -0
- package/dist/broker/broker-process.test.js +13 -0
- package/dist/broker/broker-process.test.js.map +1 -0
- package/dist/broker/ca.d.ts +38 -0
- package/dist/broker/ca.d.ts.map +1 -0
- package/dist/broker/ca.js +80 -0
- package/dist/broker/ca.js.map +1 -0
- package/dist/broker/ca.test.d.ts +2 -0
- package/dist/broker/ca.test.d.ts.map +1 -0
- package/dist/broker/ca.test.js +58 -0
- package/dist/broker/ca.test.js.map +1 -0
- package/dist/broker/credential-cache.d.ts +24 -0
- package/dist/broker/credential-cache.d.ts.map +1 -0
- package/dist/broker/credential-cache.js +76 -0
- package/dist/broker/credential-cache.js.map +1 -0
- package/dist/broker/credential-cache.test.d.ts +2 -0
- package/dist/broker/credential-cache.test.d.ts.map +1 -0
- package/dist/broker/credential-cache.test.js +136 -0
- package/dist/broker/credential-cache.test.js.map +1 -0
- package/dist/broker/credential-text.d.ts +45 -0
- package/dist/broker/credential-text.d.ts.map +1 -0
- package/dist/broker/credential-text.js +103 -0
- package/dist/broker/credential-text.js.map +1 -0
- package/dist/broker/credential-text.test.d.ts +2 -0
- package/dist/broker/credential-text.test.d.ts.map +1 -0
- package/dist/broker/credential-text.test.js +54 -0
- package/dist/broker/credential-text.test.js.map +1 -0
- package/dist/broker/env.d.ts +21 -0
- package/dist/broker/env.d.ts.map +1 -0
- package/dist/broker/env.js +20 -0
- package/dist/broker/env.js.map +1 -0
- package/dist/broker/main.d.ts +3 -0
- package/dist/broker/main.d.ts.map +1 -0
- package/dist/broker/main.js +57 -0
- package/dist/broker/main.js.map +1 -0
- package/dist/broker/proxy.d.ts +24 -0
- package/dist/broker/proxy.d.ts.map +1 -0
- package/dist/broker/proxy.integration.test.d.ts +2 -0
- package/dist/broker/proxy.integration.test.d.ts.map +1 -0
- package/dist/broker/proxy.integration.test.js +197 -0
- package/dist/broker/proxy.integration.test.js.map +1 -0
- package/dist/broker/proxy.js +147 -0
- package/dist/broker/proxy.js.map +1 -0
- package/dist/broker/rewrite.d.ts +44 -0
- package/dist/broker/rewrite.d.ts.map +1 -0
- package/dist/broker/rewrite.js +291 -0
- package/dist/broker/rewrite.js.map +1 -0
- package/dist/broker/rewrite.test.d.ts +2 -0
- package/dist/broker/rewrite.test.d.ts.map +1 -0
- package/dist/broker/rewrite.test.js +171 -0
- package/dist/broker/rewrite.test.js.map +1 -0
- package/dist/broker/socket-service.d.ts +18 -0
- package/dist/broker/socket-service.d.ts.map +1 -0
- package/dist/broker/socket-service.js +113 -0
- package/dist/broker/socket-service.js.map +1 -0
- package/dist/broker/socket-service.test.d.ts +2 -0
- package/dist/broker/socket-service.test.d.ts.map +1 -0
- package/dist/broker/socket-service.test.js +80 -0
- package/dist/broker/socket-service.test.js.map +1 -0
- package/dist/broker/supervisor-main.d.ts +3 -0
- package/dist/broker/supervisor-main.d.ts.map +1 -0
- package/dist/broker/supervisor-main.js +70 -0
- package/dist/broker/supervisor-main.js.map +1 -0
- package/dist/broker/supervisor.d.ts +25 -0
- package/dist/broker/supervisor.d.ts.map +1 -0
- package/dist/broker/supervisor.js +88 -0
- package/dist/broker/supervisor.js.map +1 -0
- package/dist/broker/supervisor.test.d.ts +2 -0
- package/dist/broker/supervisor.test.d.ts.map +1 -0
- package/dist/broker/supervisor.test.js +161 -0
- package/dist/broker/supervisor.test.js.map +1 -0
- package/dist/broker/token-bucket.d.ts +9 -0
- package/dist/broker/token-bucket.d.ts.map +1 -0
- package/dist/broker/token-bucket.js +18 -0
- package/dist/broker/token-bucket.js.map +1 -0
- package/dist/broker/usage-reporter.d.ts +18 -0
- package/dist/broker/usage-reporter.d.ts.map +1 -0
- package/dist/broker/usage-reporter.js +31 -0
- package/dist/broker/usage-reporter.js.map +1 -0
- package/dist/broker/usage-reporter.test.d.ts +2 -0
- package/dist/broker/usage-reporter.test.d.ts.map +1 -0
- package/dist/broker/usage-reporter.test.js +20 -0
- package/dist/broker/usage-reporter.test.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/hono/agent-session.d.ts +4 -0
- package/dist/hono/agent-session.d.ts.map +1 -1
- package/dist/hono/agent-session.js +28 -2
- package/dist/hono/agent-session.js.map +1 -1
- package/dist/hono/agent-session.test.js +37 -0
- package/dist/hono/agent-session.test.js.map +1 -1
- package/dist/hono/agent-tasks.d.ts.map +1 -1
- package/dist/hono/agent-tasks.js +11 -7
- package/dist/hono/agent-tasks.js.map +1 -1
- package/dist/hono/agent-tasks.test.js +15 -0
- package/dist/hono/agent-tasks.test.js.map +1 -1
- package/dist/hono/agent.d.ts +2 -0
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +19 -2
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/agent.test.js +8 -2
- package/dist/hono/agent.test.js.map +1 -1
- package/dist/hono/avatar-accent.d.ts +23 -5
- package/dist/hono/avatar-accent.d.ts.map +1 -1
- package/dist/hono/avatar-accent.js +54 -63
- package/dist/hono/avatar-accent.js.map +1 -1
- package/dist/hono/avatar-accent.test.js +64 -35
- package/dist/hono/avatar-accent.test.js.map +1 -1
- package/dist/hono/avatar-casting.d.ts +1 -0
- package/dist/hono/avatar-casting.d.ts.map +1 -1
- package/dist/hono/avatar-casting.js +18 -4
- package/dist/hono/avatar-casting.js.map +1 -1
- package/dist/hono/avatar-casting.test.js +5 -0
- package/dist/hono/avatar-casting.test.js.map +1 -1
- package/dist/hono/avatar-face-question.d.ts +23 -6
- package/dist/hono/avatar-face-question.d.ts.map +1 -1
- package/dist/hono/avatar-face-question.js +48 -59
- package/dist/hono/avatar-face-question.js.map +1 -1
- package/dist/hono/avatar-face-question.test.js +46 -101
- package/dist/hono/avatar-face-question.test.js.map +1 -1
- package/dist/hono/baker-ui-tool-schemas.test.js +30 -4
- package/dist/hono/baker-ui-tool-schemas.test.js.map +1 -1
- package/dist/hono/blocking-card.d.ts +12 -0
- package/dist/hono/blocking-card.d.ts.map +1 -0
- package/dist/hono/blocking-card.js +12 -0
- package/dist/hono/blocking-card.js.map +1 -0
- package/dist/hono/bridge-job.d.ts +68 -2
- package/dist/hono/bridge-job.d.ts.map +1 -1
- package/dist/hono/bridge-job.js +301 -56
- package/dist/hono/bridge-job.js.map +1 -1
- package/dist/hono/bridge-job.test.js +489 -26
- package/dist/hono/bridge-job.test.js.map +1 -1
- package/dist/hono/check-content.d.ts +49 -0
- package/dist/hono/check-content.d.ts.map +1 -0
- package/dist/hono/check-content.js +182 -0
- package/dist/hono/check-content.js.map +1 -0
- package/dist/hono/check-content.test.d.ts +2 -0
- package/dist/hono/check-content.test.d.ts.map +1 -0
- package/dist/hono/check-content.test.js +87 -0
- package/dist/hono/check-content.test.js.map +1 -0
- package/dist/hono/connection-input.d.ts +170 -12
- package/dist/hono/connection-input.d.ts.map +1 -1
- package/dist/hono/connection-input.js +166 -14
- package/dist/hono/connection-input.js.map +1 -1
- package/dist/hono/connection-input.test.js +112 -9
- package/dist/hono/connection-input.test.js.map +1 -1
- package/dist/hono/convex.d.ts +8 -0
- package/dist/hono/convex.d.ts.map +1 -1
- package/dist/hono/convex.js +8 -0
- package/dist/hono/convex.js.map +1 -1
- package/dist/hono/convex.test.js +4 -1
- package/dist/hono/convex.test.js.map +1 -1
- package/dist/hono/credential-input.d.ts +39 -0
- package/dist/hono/credential-input.d.ts.map +1 -0
- package/dist/hono/credential-input.js +78 -0
- package/dist/hono/credential-input.js.map +1 -0
- package/dist/hono/credential-scrub.d.ts +42 -0
- package/dist/hono/credential-scrub.d.ts.map +1 -0
- package/dist/hono/credential-scrub.js +173 -0
- package/dist/hono/credential-scrub.js.map +1 -0
- package/dist/hono/credential-scrub.test.d.ts +2 -0
- package/dist/hono/credential-scrub.test.d.ts.map +1 -0
- package/dist/hono/credential-scrub.test.js +130 -0
- package/dist/hono/credential-scrub.test.js.map +1 -0
- package/dist/hono/env.d.ts +1 -0
- package/dist/hono/env.d.ts.map +1 -1
- package/dist/hono/env.js +2 -0
- package/dist/hono/env.js.map +1 -1
- package/dist/hono/flow-crypto.d.ts +2 -1
- package/dist/hono/flow-crypto.d.ts.map +1 -1
- package/dist/hono/flow-crypto.js +50 -26
- package/dist/hono/flow-crypto.js.map +1 -1
- package/dist/hono/flow-crypto.test.js +32 -0
- package/dist/hono/flow-crypto.test.js.map +1 -1
- package/dist/hono/flow-input-card-fields.test.d.ts +10 -0
- package/dist/hono/flow-input-card-fields.test.d.ts.map +1 -0
- package/dist/hono/flow-input-card-fields.test.js +26 -0
- package/dist/hono/flow-input-card-fields.test.js.map +1 -0
- package/dist/hono/flow-input-fields.test.js +1 -1
- package/dist/hono/flow-input-fields.test.js.map +1 -1
- package/dist/hono/flow-input.d.ts +23 -2
- package/dist/hono/flow-input.d.ts.map +1 -1
- package/dist/hono/flow-input.js +63 -14
- package/dist/hono/flow-input.js.map +1 -1
- package/dist/hono/flow-input.test.js +67 -11
- package/dist/hono/flow-input.test.js.map +1 -1
- package/dist/hono/jev.d.ts +16 -0
- package/dist/hono/jev.d.ts.map +1 -0
- package/dist/hono/jev.js +60 -0
- package/dist/hono/jev.js.map +1 -0
- package/dist/hono/jev.test.d.ts +2 -0
- package/dist/hono/jev.test.d.ts.map +1 -0
- package/dist/hono/jev.test.js +15 -0
- package/dist/hono/jev.test.js.map +1 -0
- package/dist/hono/knowledge-content.d.ts.map +1 -1
- package/dist/hono/knowledge-content.js +4 -2
- package/dist/hono/knowledge-content.js.map +1 -1
- package/dist/hono/knowledge-content.test.js +6 -5
- package/dist/hono/knowledge-content.test.js.map +1 -1
- package/dist/hono/mcp-servers.d.ts +8 -1
- package/dist/hono/mcp-servers.d.ts.map +1 -1
- package/dist/hono/mcp-servers.js +17 -6
- package/dist/hono/mcp-servers.js.map +1 -1
- package/dist/hono/mcp-servers.test.js +25 -0
- package/dist/hono/mcp-servers.test.js.map +1 -1
- package/dist/hono/model-capabilities.d.ts.map +1 -1
- package/dist/hono/model-capabilities.js +20 -9
- package/dist/hono/model-capabilities.js.map +1 -1
- package/dist/hono/model-capabilities.test.js +16 -8
- package/dist/hono/model-capabilities.test.js.map +1 -1
- package/dist/hono/oom-priority.agent.test.d.ts +2 -0
- package/dist/hono/oom-priority.agent.test.d.ts.map +1 -0
- package/dist/hono/oom-priority.agent.test.js +138 -0
- package/dist/hono/oom-priority.agent.test.js.map +1 -0
- package/dist/hono/oom-priority.d.ts +39 -0
- package/dist/hono/oom-priority.d.ts.map +1 -0
- package/dist/hono/oom-priority.js +138 -0
- package/dist/hono/oom-priority.js.map +1 -0
- package/dist/hono/oom-priority.test.d.ts +2 -0
- package/dist/hono/oom-priority.test.d.ts.map +1 -0
- package/dist/hono/oom-priority.test.js +52 -0
- package/dist/hono/oom-priority.test.js.map +1 -0
- package/dist/hono/openrouter-session.d.ts.map +1 -1
- package/dist/hono/openrouter-session.js +12 -1
- package/dist/hono/openrouter-session.js.map +1 -1
- package/dist/hono/openrouter-session.test.js +9 -3
- package/dist/hono/openrouter-session.test.js.map +1 -1
- package/dist/hono/prompt-context.d.ts +8 -1
- package/dist/hono/prompt-context.d.ts.map +1 -1
- package/dist/hono/prompt-context.js +45 -7
- package/dist/hono/prompt-context.js.map +1 -1
- package/dist/hono/prompt-context.test.js +32 -1
- package/dist/hono/prompt-context.test.js.map +1 -1
- package/dist/hono/publish-recovery.d.ts +1 -1
- package/dist/hono/publish-recovery.d.ts.map +1 -1
- package/dist/hono/publish-recovery.js +9 -6
- package/dist/hono/publish-recovery.js.map +1 -1
- package/dist/hono/publish-recovery.test.js +11 -2
- package/dist/hono/publish-recovery.test.js.map +1 -1
- package/dist/hono/relay.d.ts +10 -1
- package/dist/hono/relay.d.ts.map +1 -1
- package/dist/hono/relay.js +6 -0
- package/dist/hono/relay.js.map +1 -1
- package/dist/hono/sandbox-content.d.ts +2 -0
- package/dist/hono/sandbox-content.d.ts.map +1 -1
- package/dist/hono/sandbox-content.js +8 -4
- package/dist/hono/sandbox-content.js.map +1 -1
- package/dist/hono/sandbox-content.test.js +20 -1
- package/dist/hono/sandbox-content.test.js.map +1 -1
- package/dist/hono/server.d.ts.map +1 -1
- package/dist/hono/server.js +32 -0
- package/dist/hono/server.js.map +1 -1
- package/dist/hono/server.test.js +21 -1
- package/dist/hono/server.test.js.map +1 -1
- package/dist/hono/session-continuity.integration.test.js +10 -1
- package/dist/hono/session-continuity.integration.test.js.map +1 -1
- package/dist/hono/tag-fields.d.ts.map +1 -1
- package/dist/hono/tag-fields.js +2 -0
- package/dist/hono/tag-fields.js.map +1 -1
- package/dist/hono/tag-input.d.ts +124 -3
- package/dist/hono/tag-input.d.ts.map +1 -1
- package/dist/hono/tag-input.js +27 -17
- package/dist/hono/tag-input.js.map +1 -1
- package/dist/hono/tag-input.test.js +19 -1
- package/dist/hono/tag-input.test.js.map +1 -1
- package/dist/hono/tool-mentions.d.ts.map +1 -1
- package/dist/hono/tool-mentions.js +1 -0
- package/dist/hono/tool-mentions.js.map +1 -1
- package/dist/hono/tool-mentions.test.js +5 -0
- package/dist/hono/tool-mentions.test.js.map +1 -1
- package/dist/hono/types.d.ts +8 -0
- package/dist/hono/types.d.ts.map +1 -1
- package/dist/hono/workspace-script.d.ts +10 -0
- package/dist/hono/workspace-script.d.ts.map +1 -0
- package/dist/hono/workspace-script.js +19 -0
- package/dist/hono/workspace-script.js.map +1 -0
- package/dist/hono/workspace-settle.d.ts +20 -0
- package/dist/hono/workspace-settle.d.ts.map +1 -0
- package/dist/hono/workspace-settle.js +50 -0
- package/dist/hono/workspace-settle.js.map +1 -0
- package/dist/review/digest.d.ts +8 -1
- package/dist/review/digest.d.ts.map +1 -1
- package/dist/review/digest.js +10 -43
- package/dist/review/digest.js.map +1 -1
- package/dist/review/digest.test.js +11 -6
- package/dist/review/digest.test.js.map +1 -1
- package/dist/review/evidence-block.js +1 -1
- package/dist/review/evidence-block.js.map +1 -1
- package/dist/review/evidence-block.test.js +0 -10
- package/dist/review/evidence-block.test.js.map +1 -1
- package/dist/review/shell-policy.d.ts +6 -0
- package/dist/review/shell-policy.d.ts.map +1 -1
- package/dist/review/shell-policy.js +240 -72
- package/dist/review/shell-policy.js.map +1 -1
- package/dist/review/shell-policy.test.js +114 -0
- package/dist/review/shell-policy.test.js.map +1 -1
- package/package.json +9 -5
- package/dist/hono/latitude-telemetry.d.ts +0 -17
- package/dist/hono/latitude-telemetry.d.ts.map +0 -1
- package/dist/hono/latitude-telemetry.js +0 -52
- package/dist/hono/latitude-telemetry.js.map +0 -1
- package/dist/hono/latitude-telemetry.test.d.ts +0 -2
- package/dist/hono/latitude-telemetry.test.d.ts.map +0 -1
- package/dist/hono/latitude-telemetry.test.js +0 -18
- 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 @@
|
|
|
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,14 +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">>;
|
|
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>]>;
|
|
35
60
|
export declare const connectionInputToolShape: {
|
|
36
|
-
connections: z.ZodArray<z.ZodObject<{
|
|
61
|
+
connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
37
62
|
platform: z.ZodEnum<{
|
|
38
63
|
calendly: "calendly";
|
|
64
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
39
65
|
"google-ads": "google-ads";
|
|
40
66
|
"google-analytics": "google-analytics";
|
|
41
67
|
"google-drive": "google-drive";
|
|
@@ -47,16 +73,41 @@ export declare const connectionInputToolShape: {
|
|
|
47
73
|
meta: "meta";
|
|
48
74
|
pipedrive: "pipedrive";
|
|
49
75
|
savvycal: "savvycal";
|
|
76
|
+
shopify: "shopify";
|
|
50
77
|
"x-ads": "x-ads";
|
|
51
78
|
}>;
|
|
52
79
|
reason: z.ZodString;
|
|
53
|
-
|
|
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>]>>;
|
|
54
104
|
resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
|
|
55
105
|
};
|
|
56
|
-
export declare const connectionInputResultSchema: z.
|
|
106
|
+
export declare const connectionInputResultSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
57
107
|
status: z.ZodLiteral<"connected">;
|
|
58
108
|
platform: z.ZodEnum<{
|
|
59
109
|
calendly: "calendly";
|
|
110
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
60
111
|
"google-ads": "google-ads";
|
|
61
112
|
"google-analytics": "google-analytics";
|
|
62
113
|
"google-drive": "google-drive";
|
|
@@ -68,15 +119,18 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
|
|
|
68
119
|
meta: "meta";
|
|
69
120
|
pipedrive: "pipedrive";
|
|
70
121
|
savvycal: "savvycal";
|
|
122
|
+
shopify: "shopify";
|
|
71
123
|
"x-ads": "x-ads";
|
|
72
124
|
}>;
|
|
73
125
|
accountLabel: z.ZodOptional<z.ZodString>;
|
|
74
126
|
selected: z.ZodArray<z.ZodString>;
|
|
75
127
|
cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
128
|
+
mediaSourceKey: z.ZodOptional<z.ZodString>;
|
|
76
129
|
}, z.core.$strip>, z.ZodObject<{
|
|
77
130
|
status: z.ZodLiteral<"declined">;
|
|
78
131
|
platform: z.ZodEnum<{
|
|
79
132
|
calendly: "calendly";
|
|
133
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
80
134
|
"google-ads": "google-ads";
|
|
81
135
|
"google-analytics": "google-analytics";
|
|
82
136
|
"google-drive": "google-drive";
|
|
@@ -88,16 +142,47 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
|
|
|
88
142
|
meta: "meta";
|
|
89
143
|
pipedrive: "pipedrive";
|
|
90
144
|
savvycal: "savvycal";
|
|
145
|
+
shopify: "shopify";
|
|
91
146
|
"x-ads": "x-ads";
|
|
92
147
|
}>;
|
|
93
148
|
reason: z.ZodOptional<z.ZodString>;
|
|
94
|
-
}, z.core.$strip
|
|
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>]>;
|
|
95
179
|
export type ConnectionInputResult = z.infer<typeof connectionInputResultSchema>;
|
|
96
180
|
export declare const connectionInputResolutionSchema: z.ZodObject<{
|
|
97
|
-
results: z.ZodArray<z.
|
|
181
|
+
results: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
98
182
|
status: z.ZodLiteral<"connected">;
|
|
99
183
|
platform: z.ZodEnum<{
|
|
100
184
|
calendly: "calendly";
|
|
185
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
101
186
|
"google-ads": "google-ads";
|
|
102
187
|
"google-analytics": "google-analytics";
|
|
103
188
|
"google-drive": "google-drive";
|
|
@@ -109,15 +194,18 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
|
|
|
109
194
|
meta: "meta";
|
|
110
195
|
pipedrive: "pipedrive";
|
|
111
196
|
savvycal: "savvycal";
|
|
197
|
+
shopify: "shopify";
|
|
112
198
|
"x-ads": "x-ads";
|
|
113
199
|
}>;
|
|
114
200
|
accountLabel: z.ZodOptional<z.ZodString>;
|
|
115
201
|
selected: z.ZodArray<z.ZodString>;
|
|
116
202
|
cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
203
|
+
mediaSourceKey: z.ZodOptional<z.ZodString>;
|
|
117
204
|
}, z.core.$strip>, z.ZodObject<{
|
|
118
205
|
status: z.ZodLiteral<"declined">;
|
|
119
206
|
platform: z.ZodEnum<{
|
|
120
207
|
calendly: "calendly";
|
|
208
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
121
209
|
"google-ads": "google-ads";
|
|
122
210
|
"google-analytics": "google-analytics";
|
|
123
211
|
"google-drive": "google-drive";
|
|
@@ -129,12 +217,56 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
|
|
|
129
217
|
meta: "meta";
|
|
130
218
|
pipedrive: "pipedrive";
|
|
131
219
|
savvycal: "savvycal";
|
|
220
|
+
shopify: "shopify";
|
|
132
221
|
"x-ads": "x-ads";
|
|
133
222
|
}>;
|
|
134
223
|
reason: z.ZodOptional<z.ZodString>;
|
|
135
|
-
}, z.core.$strip
|
|
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>]>>;
|
|
136
254
|
}, z.core.$strip>;
|
|
137
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[];
|
|
138
270
|
/** Parse-at-boundary for the resolution posted to `POST /connection-input-decision`. */
|
|
139
271
|
export declare function parseConnectionInputResolution(value: unknown): ConnectionInputResolution | null;
|
|
140
272
|
export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
|
|
@@ -142,13 +274,15 @@ export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
|
|
|
142
274
|
* `canUseTool` sees the RAW model input — MCP validation hasn't run yet — so the
|
|
143
275
|
* requests are normalized here before anything downstream trusts them. Unknown
|
|
144
276
|
* platforms (TikTok Ads, a hallucinated id) are dropped rather than shown as a
|
|
145
|
-
* dead tab.
|
|
277
|
+
* dead tab. The dashboard applies the same rules (`connectionRequestsFromToolInput`)
|
|
278
|
+
* because it resolves tabs by index into this list.
|
|
146
279
|
*/
|
|
147
280
|
export declare function normalizeConnectionInputToolInput(input: unknown): ConnectionInputRequest[];
|
|
148
281
|
export declare function createConnectionInputTool(): import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
|
|
149
|
-
connections: z.ZodArray<z.ZodObject<{
|
|
282
|
+
connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
150
283
|
platform: z.ZodEnum<{
|
|
151
284
|
calendly: "calendly";
|
|
285
|
+
"chatgpt-ads": "chatgpt-ads";
|
|
152
286
|
"google-ads": "google-ads";
|
|
153
287
|
"google-analytics": "google-analytics";
|
|
154
288
|
"google-drive": "google-drive";
|
|
@@ -160,10 +294,34 @@ export declare function createConnectionInputTool(): import("@anthropic-ai/claud
|
|
|
160
294
|
meta: "meta";
|
|
161
295
|
pipedrive: "pipedrive";
|
|
162
296
|
savvycal: "savvycal";
|
|
297
|
+
shopify: "shopify";
|
|
163
298
|
"x-ads": "x-ads";
|
|
164
299
|
}>;
|
|
165
300
|
reason: z.ZodString;
|
|
166
|
-
|
|
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>]>>;
|
|
167
325
|
resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
|
|
168
326
|
}>;
|
|
169
327
|
export {};
|