History

fix google discovery

Rhys Sullivan committed 7 months ago

Commit b93e8121 parent 499a4125 files · +116 −28Browse files

Unified · Split

5 files
  1. .executor/executor.jsonc +109 −1
  2. apps/web/src/plugins/index.ts +4 −1
  3. apps/web/src/views/secrets.tsx +1 −12
  4. packages/platform/server/src/index.ts +0 −12
  5. plugins/google-discovery/react/components.tsx +2 −2
.executor/executor.jsonc+109−1
@@ -118,7 +118,6 @@ · 117 unmodified lines
118 "mcp-mcp": {118 "mcp-mcp": {
119 "name": "Mcp MCP",119 "name": "Mcp MCP",
120 "namespace": "mcp.mcp",120 "namespace": "mcp.mcp",
121 "kind": "mcp",
122 "config": {121 "config": {
123 "endpoint": "https://mcp.linear.app/mcp",122 "endpoint": "https://mcp.linear.app/mcp",
124 "transport": "auto",123 "transport": "auto",
@@ -195,6 +194,115 @@ · 70 unmodified lines
195 "client_id_issued_at": 1774854942194 "client_id_issued_at": 1774854942
196 }195 }
197 }196 }
197 },
198 "kind": "mcp"
199 },
200 "google-calendar": {
201 "name": "Google Calendar",
202 "namespace": "google.calendar",
203 "config": {
204 "service": "calendar",
205 "version": "v3",
206 "discoveryUrl": "https://calendar-json.googleapis.com/$discovery/rest?version=v3",
207 "defaultHeaders": null,
208 "scopes": [
209 "https://www.googleapis.com/auth/calendar"
210 ],
211 "auth": {
212 "kind": "oauth2",
213 "clientId": "171149749557-apegmds63qp2h2u2s55p6rom1j6m3m5k.apps.googleusercontent.com",
214 "clientSecretRef": {
215 "secretId": "sec_f2c1f3ce-97c5-429b-a7bf-22fcd6007de3"
216 },
217 "clientAuthentication": "client_secret_post",
218 "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
219 "tokenEndpoint": "https://oauth2.googleapis.com/token",
220 "scopes": [
221 "https://www.googleapis.com/auth/calendar"
222 ],
223 "accessTokenRef": {
224 "secretId": "sec_023e64bd-8e6b-49cc-b33c-950c31612846"
225 },
226 "refreshTokenRef": {
227 "secretId": "sec_e4c2e96c-b809-4d72-873c-a8ba7d595610"
228 },
229 "expiresAt": 1774859675319
230 }
231 },
232 "kind": "google_discovery"
233 },
234 "google-drive": {
235 "name": "Google Drive",
236 "namespace": "google.drive",
237 "config": {
238 "service": "drive",
239 "version": "v3",
240 "discoveryUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v3/rest",
241 "defaultHeaders": null,
242 "scopes": [
243 "https://www.googleapis.com/auth/drive",
244 "https://www.googleapis.com/auth/drive.apps.readonly"
245 ],
246 "auth": {
247 "kind": "oauth2",
248 "clientId": "171149749557-apegmds63qp2h2u2s55p6rom1j6m3m5k.apps.googleusercontent.com",
249 "clientSecretRef": {
250 "secretId": "sec_f2c1f3ce-97c5-429b-a7bf-22fcd6007de3"
251 },
252 "clientAuthentication": "client_secret_post",
253 "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
254 "tokenEndpoint": "https://oauth2.googleapis.com/token",
255 "scopes": [
256 "https://www.googleapis.com/auth/drive",
257 "https://www.googleapis.com/auth/drive.apps.readonly"
258 ],
259 "accessTokenRef": {
260 "secretId": "sec_39d48e40-634c-4673-8038-8fc7c027c698"
261 },
262 "refreshTokenRef": {
263 "secretId": "sec_ec05b35f-c0ff-4529-b80e-a5638589a6eb"
264 },
265 "expiresAt": 1774859675319
266 }
267 },
268 "kind": "google_discovery"
269 },
270 "google-gmail": {
271 "name": "Gmail",
272 "namespace": "google.gmail",
273 "kind": "google_discovery",
274 "config": {
275 "service": "gmail",
276 "version": "v1",
277 "discoveryUrl": "https://gmail.googleapis.com/$discovery/rest?version=v1",
278 "defaultHeaders": null,
279 "scopes": [
280 "https://mail.google.com/",
281 "https://www.googleapis.com/auth/gmail.settings.basic",
282 "https://www.googleapis.com/auth/gmail.settings.sharing"
283 ],
284 "auth": {
285 "kind": "oauth2",
286 "clientId": "171149749557-apegmds63qp2h2u2s55p6rom1j6m3m5k.apps.googleusercontent.com",
287 "clientSecretRef": {
288 "secretId": "sec_f2c1f3ce-97c5-429b-a7bf-22fcd6007de3"
289 },
290 "clientAuthentication": "client_secret_post",
291 "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
292 "tokenEndpoint": "https://oauth2.googleapis.com/token",
293 "scopes": [
294 "https://mail.google.com/",
295 "https://www.googleapis.com/auth/gmail.settings.basic",
296 "https://www.googleapis.com/auth/gmail.settings.sharing"
297 ],
298 "accessTokenRef": {
299 "secretId": "sec_379eee62-86fe-49fe-93dc-8af40fa04dc3"
300 },
301 "refreshTokenRef": {
302 "secretId": "sec_c58e7cb5-296b-4024-8f22-8b49ef7a7f38"
303 },
304 "expiresAt": 1774859675319
305 }
198 }306 }
199 }307 }
200 },308 },
apps/web/src/plugins/index.ts+4−1
@@ -68,8 +68,11 @@ export const getFrontendPluginRoute = ( · 67 unmodified lines
68 routeKey: string,68 routeKey: string,
69) => frontendPluginRegistry.getRoute(pluginKey, routeKey);69) => frontendPluginRegistry.getRoute(pluginKey, routeKey);
70 70
71const resolveSourcePluginKey = (kind: string): string =>
72 isGoogleDiscoverySource(kind) ? "google-discovery" : kind;
73
71export const getSourceFrontendPlugin = (kind: string) => {74export const getSourceFrontendPlugin = (kind: string) => {
72 const plugin = getFrontendPlugin(kind);75 const plugin = getFrontendPlugin(resolveSourcePluginKey(kind));
73 return plugin && isSourceFrontendPlugin(plugin) ? plugin : null;76 return plugin && isSourceFrontendPlugin(plugin) ? plugin : null;
74};77};
75 78
apps/web/src/views/secrets.tsx+1−12
@@ -104,17 +104,6 @@ export function SecretsPage() { · 103 unmodified lines
104 </p>104 </p>
105 </div>105 </div>
106 <div className="flex gap-2">106 <div className="flex gap-2">
107 <Button
108 size="sm"
109 variant="outline"
110 onClick={() => {
111 setShowCreateStore(true);
112 }}
113 disabled={creatableStorePlugins.length === 0}
114 >
115 <IconPlus className="size-3.5" />
116 Add store
117 </Button>
118 <Button107 <Button
119 size="sm"108 size="sm"
120 onClick={() => {109 onClick={() => {
@@ -150,7 +139,7 @@ export function SecretsPage() { · 29 unmodified lines
150 items.length === 0 ? (139 items.length === 0 ? (
151 <SectionEmptyState140 <SectionEmptyState
152 title="No secret stores yet"141 title="No secret stores yet"
153 description="Add a store to connect an external backend like 1Password."142 description="External secret stores are currently unavailable in this app."
154 />143 />
155 ) : (144 ) : (
156 <div className="grid gap-3 md:grid-cols-2">145 <div className="grid gap-3 md:grid-cols-2">
packages/platform/server/src/index.ts+0−12
@@ -21,10 +21,6 @@ import { openApiHttpPlugin } from "@executor/plugin-openapi-http"; · 20 unmodified lines
21import {21import {
22 openApiSdkPlugin,22 openApiSdkPlugin,
23} from "@executor/plugin-openapi-sdk";23} from "@executor/plugin-openapi-sdk";
24import { onePasswordHttpPlugin } from "@executor/plugin-onepassword-http";
25import {
26 onePasswordSdkPlugin,
27} from "@executor/plugin-onepassword-sdk";
28import {24import {
29 createExecutorApiLayer,25 createExecutorApiLayer,
30} from "@executor/platform-api/http";26} from "@executor/platform-api/http";
@@ -66,7 +62,6 @@ import { createFileGraphqlSourceStorage } from "./graphql-source-storage"; · 35 unmodified lines
66import { createFileMcpOAuthSessionStorage } from "./mcp-oauth-session-storage";62import { createFileMcpOAuthSessionStorage } from "./mcp-oauth-session-storage";
67import { createFileMcpSourceStorage } from "./mcp-source-storage";63import { createFileMcpSourceStorage } from "./mcp-source-storage";
68import { createFileOpenApiSourceStorage } from "./openapi-source-storage";64import { createFileOpenApiSourceStorage } from "./openapi-source-storage";
69import { createFileOnePasswordStoreStorage } from "./onepassword-store-storage";
70 65
71export { createFileGoogleDiscoveryOAuthSessionStorage } from "./google-discovery-oauth-session-storage";66export { createFileGoogleDiscoveryOAuthSessionStorage } from "./google-discovery-oauth-session-storage";
72export { createFileGoogleDiscoverySourceStorage } from "./google-discovery-source-storage";67export { createFileGoogleDiscoverySourceStorage } from "./google-discovery-source-storage";
@@ -74,7 +69,6 @@ export { createFileGraphqlSourceStorage } from "./graphql-source-storage"; · 1 unmodified line
74export { createFileMcpOAuthSessionStorage } from "./mcp-oauth-session-storage";69export { createFileMcpOAuthSessionStorage } from "./mcp-oauth-session-storage";
75export { createFileMcpSourceStorage } from "./mcp-source-storage";70export { createFileMcpSourceStorage } from "./mcp-source-storage";
76export { createFileOpenApiSourceStorage } from "./openapi-source-storage";71export { createFileOpenApiSourceStorage } from "./openapi-source-storage";
77export { createFileOnePasswordStoreStorage } from "./onepassword-store-storage";
78 72
79export {73export {
80 DEFAULT_EXECUTOR_DATA_DIR,74 DEFAULT_EXECUTOR_DATA_DIR,
@@ -142,7 +136,6 @@ const executorHttpPlugins = [ · 61 unmodified lines
142 graphqlHttpPlugin(),136 graphqlHttpPlugin(),
143 googleDiscoveryHttpPlugin(),137 googleDiscoveryHttpPlugin(),
144 mcpHttpPlugin(),138 mcpHttpPlugin(),
145 onePasswordHttpPlugin(),
146 openApiHttpPlugin(),139 openApiHttpPlugin(),
147] as const;140] as const;
148 141
@@ -194,11 +187,6 @@ const createExecutorRuntime = ( · 45 unmodified lines
194 rootDir: resolve(localDataDir, "plugins", "openapi", "sources"),187 rootDir: resolve(localDataDir, "plugins", "openapi", "sources"),
195 }),188 }),
196 }),189 }),
197 onePasswordSdkPlugin({
198 storage: createFileOnePasswordStoreStorage({
199 rootDir: resolve(localDataDir, "plugins", "onepassword", "stores"),
200 }),
201 }),
202 ] as const,190 ] as const,
203 executionResolver: options.executionResolver,191 executionResolver: options.executionResolver,
204 resolveSecretMaterial: options.resolveSecretMaterial,192 resolveSecretMaterial: options.resolveSecretMaterial,
plugins/google-discovery/react/components.tsx+2−2
@@ -913,8 +913,8 @@ function GoogleDiscoveryBatchConnectPanel(props: { · 912 unmodified lines
913 onClick={() => toggleTemplate(template.id)}913 onClick={() => toggleTemplate(template.id)}
914 className={914 className={
915 selected915 selected
916 ? "h-auto rounded-lg border border-primary/30 bg-primary/5 px-4 py-3 text-left"916 ? "h-auto whitespace-normal rounded-lg border border-primary/30 bg-primary/5 px-4 py-3 text-left"
917 : "h-auto rounded-lg border border-border px-4 py-3 text-left hover:bg-accent/40"917 : "h-auto whitespace-normal rounded-lg border border-border px-4 py-3 text-left hover:bg-accent/40"
918 }918 }
919 >919 >
920 <div className="flex items-start gap-3">920 <div className="flex items-start gap-3">