@opentabs-dev/opentabs-plugin-google-cloud 0.0.74

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 (137) hide show
  1. package/README.md +159 -0
  2. package/dist/adapter.iife.js +15556 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/gcloud-api.d.ts +18 -0
  5. package/dist/gcloud-api.d.ts.map +1 -0
  6. package/dist/gcloud-api.js +106 -0
  7. package/dist/gcloud-api.js.map +1 -0
  8. package/dist/index.d.ts +14 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +100 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/disable-service.d.ts +8 -0
  13. package/dist/tools/disable-service.d.ts.map +1 -0
  14. package/dist/tools/disable-service.js +22 -0
  15. package/dist/tools/disable-service.js.map +1 -0
  16. package/dist/tools/enable-service.d.ts +8 -0
  17. package/dist/tools/enable-service.d.ts.map +1 -0
  18. package/dist/tools/enable-service.js +22 -0
  19. package/dist/tools/enable-service.js.map +1 -0
  20. package/dist/tools/get-billing-info.d.ts +11 -0
  21. package/dist/tools/get-billing-info.d.ts.map +1 -0
  22. package/dist/tools/get-billing-info.js +22 -0
  23. package/dist/tools/get-billing-info.js.map +1 -0
  24. package/dist/tools/get-bucket.d.ts +12 -0
  25. package/dist/tools/get-bucket.d.ts.map +1 -0
  26. package/dist/tools/get-bucket.js +21 -0
  27. package/dist/tools/get-bucket.js.map +1 -0
  28. package/dist/tools/get-cloud-run-service.d.ts +18 -0
  29. package/dist/tools/get-cloud-run-service.d.ts.map +1 -0
  30. package/dist/tools/get-cloud-run-service.js +24 -0
  31. package/dist/tools/get-cloud-run-service.js.map +1 -0
  32. package/dist/tools/get-cluster.d.ts +17 -0
  33. package/dist/tools/get-cluster.d.ts.map +1 -0
  34. package/dist/tools/get-cluster.js +24 -0
  35. package/dist/tools/get-cluster.js.map +1 -0
  36. package/dist/tools/get-current-project.d.ts +5 -0
  37. package/dist/tools/get-current-project.d.ts.map +1 -0
  38. package/dist/tools/get-current-project.js +23 -0
  39. package/dist/tools/get-current-project.js.map +1 -0
  40. package/dist/tools/get-function.d.ts +17 -0
  41. package/dist/tools/get-function.d.ts.map +1 -0
  42. package/dist/tools/get-function.js +24 -0
  43. package/dist/tools/get-function.js.map +1 -0
  44. package/dist/tools/get-iam-policy.d.ts +10 -0
  45. package/dist/tools/get-iam-policy.d.ts.map +1 -0
  46. package/dist/tools/get-iam-policy.js +24 -0
  47. package/dist/tools/get-iam-policy.js.map +1 -0
  48. package/dist/tools/get-instance.d.ts +18 -0
  49. package/dist/tools/get-instance.d.ts.map +1 -0
  50. package/dist/tools/get-instance.js +24 -0
  51. package/dist/tools/get-instance.js.map +1 -0
  52. package/dist/tools/get-project.d.ts +13 -0
  53. package/dist/tools/get-project.d.ts.map +1 -0
  54. package/dist/tools/get-project.js +24 -0
  55. package/dist/tools/get-project.js.map +1 -0
  56. package/dist/tools/get-sql-instance.d.ts +16 -0
  57. package/dist/tools/get-sql-instance.d.ts.map +1 -0
  58. package/dist/tools/get-sql-instance.js +23 -0
  59. package/dist/tools/get-sql-instance.js.map +1 -0
  60. package/dist/tools/list-billing-accounts.d.ts +13 -0
  61. package/dist/tools/list-billing-accounts.d.ts.map +1 -0
  62. package/dist/tools/list-billing-accounts.js +28 -0
  63. package/dist/tools/list-billing-accounts.js.map +1 -0
  64. package/dist/tools/list-buckets.d.ts +15 -0
  65. package/dist/tools/list-buckets.d.ts.map +1 -0
  66. package/dist/tools/list-buckets.js +27 -0
  67. package/dist/tools/list-buckets.js.map +1 -0
  68. package/dist/tools/list-cloud-run-services.d.ts +19 -0
  69. package/dist/tools/list-cloud-run-services.d.ts.map +1 -0
  70. package/dist/tools/list-cloud-run-services.js +30 -0
  71. package/dist/tools/list-cloud-run-services.js.map +1 -0
  72. package/dist/tools/list-clusters.d.ts +15 -0
  73. package/dist/tools/list-clusters.d.ts.map +1 -0
  74. package/dist/tools/list-clusters.js +24 -0
  75. package/dist/tools/list-clusters.js.map +1 -0
  76. package/dist/tools/list-disks.d.ts +19 -0
  77. package/dist/tools/list-disks.d.ts.map +1 -0
  78. package/dist/tools/list-disks.js +39 -0
  79. package/dist/tools/list-disks.js.map +1 -0
  80. package/dist/tools/list-enabled-services.d.ts +15 -0
  81. package/dist/tools/list-enabled-services.d.ts.map +1 -0
  82. package/dist/tools/list-enabled-services.js +27 -0
  83. package/dist/tools/list-enabled-services.js.map +1 -0
  84. package/dist/tools/list-firewalls.d.ts +18 -0
  85. package/dist/tools/list-firewalls.d.ts.map +1 -0
  86. package/dist/tools/list-firewalls.js +27 -0
  87. package/dist/tools/list-firewalls.js.map +1 -0
  88. package/dist/tools/list-functions.d.ts +18 -0
  89. package/dist/tools/list-functions.d.ts.map +1 -0
  90. package/dist/tools/list-functions.js +30 -0
  91. package/dist/tools/list-functions.js.map +1 -0
  92. package/dist/tools/list-iam-roles.d.ts +15 -0
  93. package/dist/tools/list-iam-roles.d.ts.map +1 -0
  94. package/dist/tools/list-iam-roles.js +27 -0
  95. package/dist/tools/list-iam-roles.js.map +1 -0
  96. package/dist/tools/list-instances.d.ts +20 -0
  97. package/dist/tools/list-instances.d.ts.map +1 -0
  98. package/dist/tools/list-instances.js +46 -0
  99. package/dist/tools/list-instances.js.map +1 -0
  100. package/dist/tools/list-log-entries.d.ts +18 -0
  101. package/dist/tools/list-log-entries.d.ts.map +1 -0
  102. package/dist/tools/list-log-entries.js +41 -0
  103. package/dist/tools/list-log-entries.js.map +1 -0
  104. package/dist/tools/list-networks.d.ts +16 -0
  105. package/dist/tools/list-networks.d.ts.map +1 -0
  106. package/dist/tools/list-networks.js +27 -0
  107. package/dist/tools/list-networks.js.map +1 -0
  108. package/dist/tools/list-objects.d.ts +18 -0
  109. package/dist/tools/list-objects.d.ts.map +1 -0
  110. package/dist/tools/list-objects.js +40 -0
  111. package/dist/tools/list-objects.js.map +1 -0
  112. package/dist/tools/list-projects.d.ts +15 -0
  113. package/dist/tools/list-projects.d.ts.map +1 -0
  114. package/dist/tools/list-projects.js +33 -0
  115. package/dist/tools/list-projects.js.map +1 -0
  116. package/dist/tools/list-service-accounts.d.ts +15 -0
  117. package/dist/tools/list-service-accounts.d.ts.map +1 -0
  118. package/dist/tools/list-service-accounts.js +30 -0
  119. package/dist/tools/list-service-accounts.js.map +1 -0
  120. package/dist/tools/list-sql-instances.d.ts +18 -0
  121. package/dist/tools/list-sql-instances.d.ts.map +1 -0
  122. package/dist/tools/list-sql-instances.js +30 -0
  123. package/dist/tools/list-sql-instances.js.map +1 -0
  124. package/dist/tools/schemas.d.ts +427 -0
  125. package/dist/tools/schemas.d.ts.map +1 -0
  126. package/dist/tools/schemas.js +329 -0
  127. package/dist/tools/schemas.js.map +1 -0
  128. package/dist/tools/start-instance.d.ts +9 -0
  129. package/dist/tools/start-instance.d.ts.map +1 -0
  130. package/dist/tools/start-instance.js +23 -0
  131. package/dist/tools/start-instance.js.map +1 -0
  132. package/dist/tools/stop-instance.d.ts +9 -0
  133. package/dist/tools/stop-instance.d.ts.map +1 -0
  134. package/dist/tools/stop-instance.js +23 -0
  135. package/dist/tools/stop-instance.js.map +1 -0
  136. package/dist/tools.json +2153 -0
  137. package/package.json +54 -0
@@ -0,0 +1,18 @@
1
+ export declare const isAuthenticated: () => boolean;
2
+ export declare const waitForAuth: () => Promise<boolean>;
3
+ interface ProjectContext {
4
+ projectId: string;
5
+ }
6
+ export declare const getProjectContext: () => ProjectContext | null;
7
+ export declare const resolveProjectId: (explicit?: string) => string;
8
+ /**
9
+ * Call a GCP REST API via gapi.client.request().
10
+ * Auth (SAPISIDHASH + cookies) is handled automatically by the gapi proxy.
11
+ */
12
+ export declare const gcpApi: <T>(path: string, options?: {
13
+ method?: string;
14
+ params?: Record<string, string | number | boolean | undefined>;
15
+ body?: unknown;
16
+ }) => Promise<T>;
17
+ export {};
18
+ //# sourceMappingURL=gcloud-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcloud-api.d.ts","sourceRoot":"","sources":["../src/gcloud-api.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,eAAe,QAAO,OAGlC,CAAC;AAEF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,OAAO,CAUnD,CAAC;AAMF,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,eAAO,MAAM,iBAAiB,QAAO,cAAc,GAAG,IAUrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,MAAM,KAAG,MAOpD,CAAC;AA6BF;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAU,CAAC,EAC5B,MAAM,MAAM,EACZ,UAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,KACL,OAAO,CAAC,CAAC,CAuCX,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { ToolError, getCookie, getPageGlobal, waitUntil, getCurrentUrl, getAuthCache, setAuthCache, clearAuthCache, } from '@opentabs-dev/plugin-sdk';
2
+ // ---------------------------------------------------------------------------
3
+ // Auth detection
4
+ // ---------------------------------------------------------------------------
5
+ const getGapi = () => {
6
+ const gapi = getPageGlobal('gapi');
7
+ return gapi?.client ?? null;
8
+ };
9
+ export const isAuthenticated = () => {
10
+ // gapi.client must be loaded AND user must have a session cookie
11
+ return getGapi() !== null && !!getCookie('SAPISID');
12
+ };
13
+ export const waitForAuth = async () => {
14
+ try {
15
+ await waitUntil(() => isAuthenticated(), {
16
+ interval: 500,
17
+ timeout: 8000,
18
+ });
19
+ return true;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ };
25
+ const getProjectFromUrl = () => {
26
+ const url = getCurrentUrl();
27
+ const match = url.match(/[?&]project=([^&#]+)/);
28
+ return match?.[1] ?? null;
29
+ };
30
+ export const getProjectContext = () => {
31
+ const cached = getAuthCache('google-cloud');
32
+ const urlProject = getProjectFromUrl();
33
+ if (urlProject) {
34
+ if (!cached || cached.projectId !== urlProject) {
35
+ setAuthCache('google-cloud', { projectId: urlProject });
36
+ }
37
+ return { projectId: urlProject };
38
+ }
39
+ return cached;
40
+ };
41
+ export const resolveProjectId = (explicit) => {
42
+ if (explicit)
43
+ return explicit;
44
+ const ctx = getProjectContext();
45
+ if (ctx?.projectId)
46
+ return ctx.projectId;
47
+ throw ToolError.validation('No project ID found — provide a project_id parameter or navigate to a project in the console.');
48
+ };
49
+ // ---------------------------------------------------------------------------
50
+ // API caller
51
+ // ---------------------------------------------------------------------------
52
+ const classifyGapiError = (err) => {
53
+ const code = err.result?.error?.code ?? err.status;
54
+ const message = err.result?.error?.message ?? `GCP API error (HTTP ${err.status})`;
55
+ switch (code) {
56
+ case 401:
57
+ case 403:
58
+ clearAuthCache('google-cloud');
59
+ throw ToolError.auth(message);
60
+ case 404:
61
+ throw ToolError.notFound(message);
62
+ case 429:
63
+ throw ToolError.rateLimited(message);
64
+ case 400:
65
+ throw ToolError.validation(message);
66
+ default:
67
+ throw ToolError.internal(message);
68
+ }
69
+ };
70
+ /**
71
+ * Call a GCP REST API via gapi.client.request().
72
+ * Auth (SAPISIDHASH + cookies) is handled automatically by the gapi proxy.
73
+ */
74
+ export const gcpApi = async (path, options = {}) => {
75
+ const client = getGapi();
76
+ if (!client)
77
+ throw ToolError.auth('Not authenticated — please log in to Google Cloud Console.');
78
+ const method = options.method ?? 'GET';
79
+ // Filter out undefined params
80
+ const params = {};
81
+ if (options.params) {
82
+ for (const [k, v] of Object.entries(options.params)) {
83
+ if (v !== undefined)
84
+ params[k] = v;
85
+ }
86
+ }
87
+ const result = await new Promise((resolve, reject) => {
88
+ const timeout = setTimeout(() => reject({ status: 0, result: { error: { code: 0, message: 'Request timed out after 25 seconds' } } }), 25000);
89
+ client
90
+ .request({
91
+ path,
92
+ method,
93
+ params: Object.keys(params).length > 0 ? params : undefined,
94
+ body: options.body,
95
+ })
96
+ .then(response => {
97
+ clearTimeout(timeout);
98
+ resolve(response.result);
99
+ }, err => {
100
+ clearTimeout(timeout);
101
+ reject(err);
102
+ });
103
+ }).catch(err => classifyGapiError(err));
104
+ return result;
105
+ };
106
+ //# sourceMappingURL=gcloud-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcloud-api.js","sourceRoot":"","sources":["../src/gcloud-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
2
+ import type { ToolDefinition } from '@opentabs-dev/plugin-sdk';
3
+ declare class GoogleCloudPlugin extends OpenTabsPlugin {
4
+ readonly name = "google-cloud";
5
+ readonly description = "OpenTabs plugin for Google Cloud Console";
6
+ readonly displayName = "Google Cloud";
7
+ readonly urlPatterns: string[];
8
+ readonly homepage = "https://console.cloud.google.com";
9
+ readonly tools: ToolDefinition[];
10
+ isReady(): Promise<boolean>;
11
+ }
12
+ declare const _default: GoogleCloudPlugin;
13
+ export default _default;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAuD/D,cAAM,iBAAkB,SAAQ,cAAc;IAC5C,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,8CAA8C;IAClE,SAAkB,WAAW,kBAAkB;IAC/C,QAAQ,CAAC,WAAW,WAAsC;IAC1D,SAAkB,QAAQ,sCAAsC;IAChE,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAoD9B;IAEI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAIlC;;AAED,wBAAuC"}
package/dist/index.js ADDED
@@ -0,0 +1,100 @@
1
+ import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
2
+ import { isAuthenticated, waitForAuth } from './gcloud-api.js';
3
+ // Projects
4
+ import { getCurrentProject } from './tools/get-current-project.js';
5
+ import { listProjects } from './tools/list-projects.js';
6
+ import { getProject } from './tools/get-project.js';
7
+ // Compute
8
+ import { listInstances } from './tools/list-instances.js';
9
+ import { getInstance } from './tools/get-instance.js';
10
+ import { startInstance } from './tools/start-instance.js';
11
+ import { stopInstance } from './tools/stop-instance.js';
12
+ import { listDisks } from './tools/list-disks.js';
13
+ import { listNetworks } from './tools/list-networks.js';
14
+ import { listFirewalls } from './tools/list-firewalls.js';
15
+ // Storage
16
+ import { listBuckets } from './tools/list-buckets.js';
17
+ import { getBucket } from './tools/get-bucket.js';
18
+ import { listObjects } from './tools/list-objects.js';
19
+ // IAM
20
+ import { listServiceAccounts } from './tools/list-service-accounts.js';
21
+ import { listIamRoles } from './tools/list-iam-roles.js';
22
+ import { getIamPolicy } from './tools/get-iam-policy.js';
23
+ // Services
24
+ import { listEnabledServices } from './tools/list-enabled-services.js';
25
+ import { enableService } from './tools/enable-service.js';
26
+ import { disableService } from './tools/disable-service.js';
27
+ // Cloud Functions
28
+ import { listFunctions } from './tools/list-functions.js';
29
+ import { getFunction } from './tools/get-function.js';
30
+ // Cloud Run
31
+ import { listCloudRunServices } from './tools/list-cloud-run-services.js';
32
+ import { getCloudRunService } from './tools/get-cloud-run-service.js';
33
+ // Logging
34
+ import { listLogEntries } from './tools/list-log-entries.js';
35
+ // Billing
36
+ import { listBillingAccounts } from './tools/list-billing-accounts.js';
37
+ import { getBillingInfo } from './tools/get-billing-info.js';
38
+ // Kubernetes
39
+ import { listClusters } from './tools/list-clusters.js';
40
+ import { getCluster } from './tools/get-cluster.js';
41
+ // Cloud SQL
42
+ import { listSqlInstances } from './tools/list-sql-instances.js';
43
+ import { getSqlInstance } from './tools/get-sql-instance.js';
44
+ class GoogleCloudPlugin extends OpenTabsPlugin {
45
+ name = 'google-cloud';
46
+ description = 'OpenTabs plugin for Google Cloud Console';
47
+ displayName = 'Google Cloud';
48
+ urlPatterns = ['*://console.cloud.google.com/*'];
49
+ homepage = 'https://console.cloud.google.com';
50
+ tools = [
51
+ // Projects
52
+ getCurrentProject,
53
+ listProjects,
54
+ getProject,
55
+ // Compute
56
+ listInstances,
57
+ getInstance,
58
+ startInstance,
59
+ stopInstance,
60
+ listDisks,
61
+ listNetworks,
62
+ listFirewalls,
63
+ // Storage
64
+ listBuckets,
65
+ getBucket,
66
+ listObjects,
67
+ // IAM
68
+ listServiceAccounts,
69
+ listIamRoles,
70
+ getIamPolicy,
71
+ // Services
72
+ listEnabledServices,
73
+ enableService,
74
+ disableService,
75
+ // Cloud Functions
76
+ listFunctions,
77
+ getFunction,
78
+ // Cloud Run
79
+ listCloudRunServices,
80
+ getCloudRunService,
81
+ // Logging
82
+ listLogEntries,
83
+ // Billing
84
+ listBillingAccounts,
85
+ getBillingInfo,
86
+ // Kubernetes
87
+ listClusters,
88
+ getCluster,
89
+ // Cloud SQL
90
+ listSqlInstances,
91
+ getSqlInstance,
92
+ ];
93
+ async isReady() {
94
+ if (isAuthenticated())
95
+ return true;
96
+ return waitForAuth();
97
+ }
98
+ }
99
+ export default new GoogleCloudPlugin();
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM;AACN,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,iBAAkB,SAAQ,cAAc;IACnC,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,0CAA0C,CAAC;IAChD,WAAW,GAAG,cAAc,CAAC;IACtC,WAAW,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACxC,QAAQ,GAAG,kCAAkC,CAAC;IACvD,KAAK,GAAqB;QACjC,WAAW;QACX,iBAAiB;QACjB,YAAY;QACZ,UAAU;QAEV,UAAU;QACV,aAAa;QACb,WAAW;QACX,aAAa;QACb,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,aAAa;QAEb,UAAU;QACV,WAAW;QACX,SAAS;QACT,WAAW;QAEX,MAAM;QACN,mBAAmB;QACnB,YAAY;QACZ,YAAY;QAEZ,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,cAAc;QAEd,kBAAkB;QAClB,aAAa;QACb,WAAW;QAEX,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAElB,UAAU;QACV,cAAc;QAEd,UAAU;QACV,mBAAmB;QACnB,cAAc;QAEd,aAAa;QACb,YAAY;QACZ,UAAU;QAEV,YAAY;QACZ,gBAAgB;QAChB,cAAc;KACf,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,IAAI,eAAe,EAAE;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;CACF;AAED,eAAe,IAAI,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const disableService: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ service_name: z.ZodString;
4
+ project_id: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=disable-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable-service.d.ts","sourceRoot":"","sources":["../../src/tools/disable-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;kBAqBzB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ export const disableService = defineTool({
5
+ name: 'disable_service',
6
+ displayName: 'Disable Service',
7
+ description: 'Disable a GCP API service in the project. WARNING: This may break resources that depend on this service.',
8
+ summary: 'Disable a GCP API service',
9
+ icon: 'toggle-left',
10
+ group: 'Services',
11
+ input: z.object({
12
+ service_name: z.string().describe('Service API name (e.g., "compute.googleapis.com")'),
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ }),
15
+ output: z.object({ success: z.boolean().describe('Whether the operation was initiated') }),
16
+ handle: async (params) => {
17
+ const projectId = resolveProjectId(params.project_id);
18
+ await gcpApi(`https://serviceusage.googleapis.com/v1/projects/${projectId}/services/${params.service_name}:disable`, { method: 'POST', body: {} });
19
+ return { success: true };
20
+ },
21
+ });
22
+ //# sourceMappingURL=disable-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable-service.js","sourceRoot":"","sources":["../../src/tools/disable-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EACT,0GAA0G;IAC5G,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACtF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAChG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;IAC1F,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,CACV,mDAAmD,SAAS,aAAa,MAAM,CAAC,YAAY,UAAU,EACtG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const enableService: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ service_name: z.ZodString;
4
+ project_id: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=enable-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-service.d.ts","sourceRoot":"","sources":["../../src/tools/enable-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;kBAqBxB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ export const enableService = defineTool({
5
+ name: 'enable_service',
6
+ displayName: 'Enable Service',
7
+ description: 'Enable a GCP API service in the project. The service name is the API identifier (e.g., "compute.googleapis.com").',
8
+ summary: 'Enable a GCP API service',
9
+ icon: 'toggle-right',
10
+ group: 'Services',
11
+ input: z.object({
12
+ service_name: z.string().describe('Service API name (e.g., "compute.googleapis.com")'),
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ }),
15
+ output: z.object({ success: z.boolean().describe('Whether the operation was initiated') }),
16
+ handle: async (params) => {
17
+ const projectId = resolveProjectId(params.project_id);
18
+ await gcpApi(`https://serviceusage.googleapis.com/v1/projects/${projectId}/services/${params.service_name}:enable`, { method: 'POST', body: {} });
19
+ return { success: true };
20
+ },
21
+ });
22
+ //# sourceMappingURL=enable-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-service.js","sourceRoot":"","sources":["../../src/tools/enable-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EACT,mHAAmH;IACrH,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACtF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAChG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;IAC1F,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,CACV,mDAAmD,SAAS,aAAa,MAAM,CAAC,YAAY,SAAS,EACrG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export declare const getBillingInfo: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ billing_info: z.ZodObject<{
6
+ project_id: z.ZodString;
7
+ billing_account_name: z.ZodString;
8
+ billing_enabled: z.ZodBoolean;
9
+ }, z.core.$strip>;
10
+ }, z.core.$strip>>;
11
+ //# sourceMappingURL=get-billing-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-billing-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;;;;;;;kBAmBzB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { billingInfoSchema, mapBillingInfo } from './schemas.js';
5
+ export const getBillingInfo = defineTool({
6
+ name: 'get_billing_info',
7
+ displayName: 'Get Billing Info',
8
+ description: 'Get billing information for a project, including whether billing is enabled and which billing account is linked.',
9
+ summary: 'Get project billing info',
10
+ icon: 'receipt',
11
+ group: 'Billing',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ }),
15
+ output: z.object({ billing_info: billingInfoSchema }),
16
+ handle: async (params) => {
17
+ const projectId = resolveProjectId(params.project_id);
18
+ const data = await gcpApi(`https://cloudbilling.googleapis.com/v1/projects/${projectId}/billingInfo`);
19
+ return { billing_info: mapBillingInfo(data) };
20
+ },
21
+ });
22
+ //# sourceMappingURL=get-billing-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-billing-info.js","sourceRoot":"","sources":["../../src/tools/get-billing-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGjE,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EACT,kHAAkH;IACpH,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAChG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IACrD,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,mDAAmD,SAAS,cAAc,CAC3E,CAAC;QACF,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const getBucket: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ bucket_name: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ bucket: z.ZodObject<{
6
+ name: z.ZodString;
7
+ location: z.ZodString;
8
+ storage_class: z.ZodString;
9
+ creation_time: z.ZodString;
10
+ }, z.core.$strip>;
11
+ }, z.core.$strip>>;
12
+ //# sourceMappingURL=get-bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket.d.ts","sourceRoot":"","sources":["../../src/tools/get-bucket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,SAAS;;;;;;;;;kBAepB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi } from '../gcloud-api.js';
4
+ import { bucketSchema, mapBucket } from './schemas.js';
5
+ export const getBucket = defineTool({
6
+ name: 'get_bucket',
7
+ displayName: 'Get Bucket',
8
+ description: 'Get detailed information about a specific Cloud Storage bucket.',
9
+ summary: 'Get a Cloud Storage bucket',
10
+ icon: 'database',
11
+ group: 'Storage',
12
+ input: z.object({
13
+ bucket_name: z.string().describe('Bucket name'),
14
+ }),
15
+ output: z.object({ bucket: bucketSchema }),
16
+ handle: async (params) => {
17
+ const data = await gcpApi(`https://storage.googleapis.com/storage/v1/b/${params.bucket_name}`);
18
+ return { bucket: mapBucket(data) };
19
+ },
20
+ });
21
+ //# sourceMappingURL=get-bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket.js","sourceRoot":"","sources":["../../src/tools/get-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,iEAAiE;IAC9E,OAAO,EAAE,4BAA4B;IACrC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;KAChD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC1C,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAY,+CAA+C,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1G,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACrC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const getCloudRunService: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ location: z.ZodString;
4
+ service_name: z.ZodString;
5
+ project_id: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ service: z.ZodObject<{
8
+ name: z.ZodString;
9
+ uri: z.ZodString;
10
+ creator: z.ZodString;
11
+ last_modifier: z.ZodString;
12
+ ingress: z.ZodString;
13
+ launch_stage: z.ZodString;
14
+ create_time: z.ZodString;
15
+ update_time: z.ZodString;
16
+ }, z.core.$strip>;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=get-cloud-run-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cloud-run-service.d.ts","sourceRoot":"","sources":["../../src/tools/get-cloud-run-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;kBAoB7B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { cloudRunServiceSchema, mapCloudRunService } from './schemas.js';
5
+ export const getCloudRunService = defineTool({
6
+ name: 'get_cloud_run_service',
7
+ displayName: 'Get Cloud Run Service',
8
+ description: 'Get detailed information about a specific Cloud Run service.',
9
+ summary: 'Get a Cloud Run service',
10
+ icon: 'rocket',
11
+ group: 'Cloud Run',
12
+ input: z.object({
13
+ location: z.string().describe('Location (e.g., "us-central1")'),
14
+ service_name: z.string().describe('Service name'),
15
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
16
+ }),
17
+ output: z.object({ service: cloudRunServiceSchema }),
18
+ handle: async (params) => {
19
+ const projectId = resolveProjectId(params.project_id);
20
+ const data = await gcpApi(`https://run.googleapis.com/v2/projects/${projectId}/locations/${params.location}/services/${params.service_name}`);
21
+ return { service: mapCloudRunService(data) };
22
+ },
23
+ });
24
+ //# sourceMappingURL=get-cloud-run-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cloud-run-service.js","sourceRoot":"","sources":["../../src/tools/get-cloud-run-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,8DAA8D;IAC3E,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAChG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACpD,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,0CAA0C,SAAS,cAAc,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,YAAY,EAAE,CACnH,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const getCluster: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ location: z.ZodString;
4
+ cluster_name: z.ZodString;
5
+ project_id: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ cluster: z.ZodObject<{
8
+ name: z.ZodString;
9
+ location: z.ZodString;
10
+ status: z.ZodString;
11
+ node_count: z.ZodNumber;
12
+ cluster_version: z.ZodString;
13
+ endpoint: z.ZodString;
14
+ create_time: z.ZodString;
15
+ }, z.core.$strip>;
16
+ }, z.core.$strip>>;
17
+ //# sourceMappingURL=get-cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cluster.d.ts","sourceRoot":"","sources":["../../src/tools/get-cluster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;kBAoBrB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { clusterSchema, mapCluster } from './schemas.js';
5
+ export const getCluster = defineTool({
6
+ name: 'get_cluster',
7
+ displayName: 'Get GKE Cluster',
8
+ description: 'Get detailed information about a specific GKE cluster.',
9
+ summary: 'Get a GKE cluster',
10
+ icon: 'container',
11
+ group: 'Kubernetes',
12
+ input: z.object({
13
+ location: z.string().describe('Location (zone or region, e.g., "us-central1-a")'),
14
+ cluster_name: z.string().describe('Cluster name'),
15
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
16
+ }),
17
+ output: z.object({ cluster: clusterSchema }),
18
+ handle: async (params) => {
19
+ const projectId = resolveProjectId(params.project_id);
20
+ const data = await gcpApi(`https://container.googleapis.com/v1/projects/${projectId}/locations/${params.location}/clusters/${params.cluster_name}`);
21
+ return { cluster: mapCluster(data) };
22
+ },
23
+ });
24
+ //# sourceMappingURL=get-cluster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cluster.js","sourceRoot":"","sources":["../../src/tools/get-cluster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,wDAAwD;IACrE,OAAO,EAAE,mBAAmB;IAC5B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACjF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAChG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,gDAAgD,SAAS,cAAc,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,YAAY,EAAE,CACzH,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ export declare const getCurrentProject: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
3
+ project_id: z.ZodString;
4
+ }, z.core.$strip>>;
5
+ //# sourceMappingURL=get-current-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-project.d.ts","sourceRoot":"","sources":["../../src/tools/get-current-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;kBAmB5B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { getProjectContext } from '../gcloud-api.js';
4
+ export const getCurrentProject = defineTool({
5
+ name: 'get_current_project',
6
+ displayName: 'Get Current Project',
7
+ description: 'Get the currently active GCP project from the console URL. Returns the project ID the user is currently viewing.',
8
+ summary: 'Get the active project from the console URL',
9
+ icon: 'folder-open',
10
+ group: 'Projects',
11
+ input: z.object({}),
12
+ output: z.object({
13
+ project_id: z.string().describe('Currently active project ID'),
14
+ }),
15
+ handle: async () => {
16
+ const ctx = getProjectContext();
17
+ if (!ctx?.projectId) {
18
+ throw ToolError.validation('No project selected — navigate to a project in the Google Cloud Console.');
19
+ }
20
+ return { project_id: ctx.projectId };
21
+ },
22
+ });
23
+ //# sourceMappingURL=get-current-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-project.js","sourceRoot":"","sources":["../../src/tools/get-current-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACT,kHAAkH;IACpH,OAAO,EAAE,6CAA6C;IACtD,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC/D,CAAC;IACF,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;YACpB,MAAM,SAAS,CAAC,UAAU,CAAC,0EAA0E,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const getFunction: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ location: z.ZodString;
4
+ function_name: z.ZodString;
5
+ project_id: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ function: z.ZodObject<{
8
+ name: z.ZodString;
9
+ state: z.ZodString;
10
+ environment: z.ZodString;
11
+ runtime: z.ZodString;
12
+ entry_point: z.ZodString;
13
+ url: z.ZodString;
14
+ update_time: z.ZodString;
15
+ }, z.core.$strip>;
16
+ }, z.core.$strip>>;
17
+ //# sourceMappingURL=get-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-function.d.ts","sourceRoot":"","sources":["../../src/tools/get-function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;kBAoBtB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { cloudFunctionSchema, mapCloudFunction } from './schemas.js';
5
+ export const getFunction = defineTool({
6
+ name: 'get_function',
7
+ displayName: 'Get Function',
8
+ description: 'Get detailed information about a specific Cloud Function.',
9
+ summary: 'Get a Cloud Function',
10
+ icon: 'zap',
11
+ group: 'Cloud Functions',
12
+ input: z.object({
13
+ location: z.string().describe('Location (e.g., "us-central1")'),
14
+ function_name: z.string().describe('Function name'),
15
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
16
+ }),
17
+ output: z.object({ function: cloudFunctionSchema }),
18
+ handle: async (params) => {
19
+ const projectId = resolveProjectId(params.project_id);
20
+ const data = await gcpApi(`https://cloudfunctions.googleapis.com/v2/projects/${projectId}/locations/${params.location}/functions/${params.function_name}`);
21
+ return { function: mapCloudFunction(data) };
22
+ },
23
+ });
24
+ //# sourceMappingURL=get-function.js.map