@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
+ import { z } from 'zod';
2
+ export declare const listFunctions: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ page_size: z.ZodOptional<z.ZodNumber>;
5
+ page_token: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ functions: z.ZodArray<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
+ next_page_token: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=list-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-functions.d.ts","sourceRoot":"","sources":["../../src/tools/list-functions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;kBA2BxB,CAAC"}
@@ -0,0 +1,30 @@
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 listFunctions = defineTool({
6
+ name: 'list_functions',
7
+ displayName: 'List Functions',
8
+ description: 'List Cloud Functions in the project across all locations.',
9
+ summary: 'List Cloud Functions',
10
+ icon: 'zap',
11
+ group: 'Cloud Functions',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ page_size: z.number().int().min(1).max(100).optional().describe('Max results per page (default 50)'),
15
+ page_token: z.string().optional().describe('Page token from a previous response'),
16
+ }),
17
+ output: z.object({
18
+ functions: z.array(cloudFunctionSchema).describe('List of Cloud Functions'),
19
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
20
+ }),
21
+ handle: async (params) => {
22
+ const projectId = resolveProjectId(params.project_id);
23
+ const data = await gcpApi(`https://cloudfunctions.googleapis.com/v2/projects/${projectId}/locations/-/functions`, { params: { pageSize: params.page_size ?? 50, pageToken: params.page_token } });
24
+ return {
25
+ functions: (data.functions ?? []).map(mapCloudFunction),
26
+ next_page_token: data.nextPageToken ?? '',
27
+ };
28
+ },
29
+ });
30
+ //# sourceMappingURL=list-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-functions.js","sourceRoot":"","sources":["../../src/tools/list-functions.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,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,2DAA2D;IACxE,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACpG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,qDAAqD,SAAS,wBAAwB,EACtF,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAC/E,CAAC;QACF,OAAO;YACL,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACvD,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const listIamRoles: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ page_size: z.ZodOptional<z.ZodNumber>;
5
+ page_token: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ roles: z.ZodArray<z.ZodObject<{
8
+ name: z.ZodString;
9
+ title: z.ZodString;
10
+ description: z.ZodString;
11
+ stage: z.ZodString;
12
+ }, z.core.$strip>>;
13
+ next_page_token: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=list-iam-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-iam-roles.d.ts","sourceRoot":"","sources":["../../src/tools/list-iam-roles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;;;;;;;;;;;kBAwBvB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { roleSchema, mapRole } from './schemas.js';
5
+ export const listIamRoles = defineTool({
6
+ name: 'list_iam_roles',
7
+ displayName: 'List IAM Roles',
8
+ description: 'List custom IAM roles defined in the project. Use "roles" as a prefix to list predefined roles.',
9
+ summary: 'List custom IAM roles',
10
+ icon: 'key',
11
+ group: 'IAM',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ page_size: z.number().int().min(1).max(300).optional().describe('Max results per page (default 50)'),
15
+ page_token: z.string().optional().describe('Page token from a previous response'),
16
+ }),
17
+ output: z.object({
18
+ roles: z.array(roleSchema).describe('List of IAM roles'),
19
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
20
+ }),
21
+ handle: async (params) => {
22
+ const projectId = resolveProjectId(params.project_id);
23
+ const data = await gcpApi(`https://iam.googleapis.com/v1/projects/${projectId}/roles`, { params: { pageSize: params.page_size ?? 50, pageToken: params.page_token } });
24
+ return { roles: (data.roles ?? []).map(mapRole), next_page_token: data.nextPageToken ?? '' };
25
+ },
26
+ });
27
+ //# sourceMappingURL=list-iam-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-iam-roles.js","sourceRoot":"","sources":["../../src/tools/list-iam-roles.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,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,iGAAiG;IAC9G,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACpG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,QAAQ,EAC3D,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAC/E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;IAC/F,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const listInstances: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ zone: z.ZodOptional<z.ZodString>;
5
+ max_results: z.ZodOptional<z.ZodNumber>;
6
+ page_token: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ instances: z.ZodArray<z.ZodObject<{
9
+ id: z.ZodString;
10
+ name: z.ZodString;
11
+ zone: z.ZodString;
12
+ machine_type: z.ZodString;
13
+ status: z.ZodString;
14
+ internal_ip: z.ZodString;
15
+ external_ip: z.ZodString;
16
+ creation_timestamp: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ next_page_token: z.ZodString;
19
+ }, z.core.$strip>>;
20
+ //# sourceMappingURL=list-instances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-instances.d.ts","sourceRoot":"","sources":["../../src/tools/list-instances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;kBA8CxB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { instanceSchema, mapInstance } from './schemas.js';
5
+ export const listInstances = defineTool({
6
+ name: 'list_instances',
7
+ displayName: 'List Instances',
8
+ description: 'List Compute Engine VM instances in a zone. If no zone is specified, lists instances across all zones using aggregated list.',
9
+ summary: 'List Compute Engine VM instances',
10
+ icon: 'server',
11
+ group: 'Compute',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ zone: z.string().optional().describe('Zone (e.g., "us-central1-a"). If omitted, lists across all zones.'),
15
+ max_results: z.number().int().min(1).max(500).optional().describe('Max results (default 50)'),
16
+ page_token: z.string().optional().describe('Page token from a previous response'),
17
+ }),
18
+ output: z.object({
19
+ instances: z.array(instanceSchema).describe('List of VM instances'),
20
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
21
+ }),
22
+ handle: async (params) => {
23
+ const projectId = resolveProjectId(params.project_id);
24
+ if (params.zone) {
25
+ const data = await gcpApi(`https://compute.googleapis.com/compute/v1/projects/${projectId}/zones/${params.zone}/instances`, { params: { maxResults: params.max_results ?? 50, pageToken: params.page_token } });
26
+ return {
27
+ instances: (data.items ?? []).map(mapInstance),
28
+ next_page_token: data.nextPageToken ?? '',
29
+ };
30
+ }
31
+ // Aggregated list across all zones
32
+ const data = await gcpApi(`https://compute.googleapis.com/compute/v1/projects/${projectId}/aggregated/instances`, { params: { maxResults: params.max_results ?? 50, pageToken: params.page_token } });
33
+ const instances = [];
34
+ if (data.items) {
35
+ for (const zone of Object.values(data.items)) {
36
+ if (zone.instances)
37
+ instances.push(...zone.instances);
38
+ }
39
+ }
40
+ return {
41
+ instances: instances.map(mapInstance),
42
+ next_page_token: data.nextPageToken ?? '',
43
+ };
44
+ },
45
+ });
46
+ //# sourceMappingURL=list-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-instances.js","sourceRoot":"","sources":["../../src/tools/list-instances.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,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EACT,8HAA8H;IAChI,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,QAAQ;IACd,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;QAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QACzG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,sDAAsD,SAAS,UAAU,MAAM,CAAC,IAAI,YAAY,EAChG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CACnF,CAAC;YACF,OAAO;gBACL,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC9C,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;aAC1C,CAAC;QACJ,CAAC;QACD,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,sDAAsD,SAAS,uBAAuB,EACtF,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CACnF,CAAC;QACF,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,SAAS;oBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACrC,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const listLogEntries: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ filter: z.ZodOptional<z.ZodString>;
5
+ page_size: z.ZodOptional<z.ZodNumber>;
6
+ page_token: z.ZodOptional<z.ZodString>;
7
+ order_by: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strip>, z.ZodObject<{
9
+ entries: z.ZodArray<z.ZodObject<{
10
+ log_name: z.ZodString;
11
+ severity: z.ZodString;
12
+ timestamp: z.ZodString;
13
+ text: z.ZodString;
14
+ resource_type: z.ZodString;
15
+ }, z.core.$strip>>;
16
+ next_page_token: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=list-log-entries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-log-entries.d.ts","sourceRoot":"","sources":["../../src/tools/list-log-entries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;kBAuCzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { logEntrySchema, mapLogEntry } from './schemas.js';
5
+ export const listLogEntries = defineTool({
6
+ name: 'list_log_entries',
7
+ displayName: 'List Log Entries',
8
+ description: "List log entries from Cloud Logging. Supports advanced log filters (e.g., 'severity>=ERROR', 'resource.type=\"gce_instance\"').",
9
+ summary: 'List Cloud Logging entries',
10
+ icon: 'scroll-text',
11
+ group: 'Logging',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ filter: z.string().optional().describe("Cloud Logging filter expression (e.g., 'severity>=ERROR')"),
15
+ page_size: z.number().int().min(1).max(1000).optional().describe('Max results per page (default 50)'),
16
+ page_token: z.string().optional().describe('Page token from a previous response'),
17
+ order_by: z.string().optional().describe('Sort order: "timestamp desc" (default) or "timestamp asc"'),
18
+ }),
19
+ output: z.object({
20
+ entries: z.array(logEntrySchema).describe('List of log entries'),
21
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
22
+ }),
23
+ handle: async (params) => {
24
+ const projectId = resolveProjectId(params.project_id);
25
+ const data = await gcpApi('https://logging.googleapis.com/v2/entries:list', {
26
+ method: 'POST',
27
+ body: {
28
+ resourceNames: [`projects/${projectId}`],
29
+ filter: params.filter,
30
+ pageSize: params.page_size ?? 50,
31
+ pageToken: params.page_token,
32
+ orderBy: params.order_by ?? 'timestamp desc',
33
+ },
34
+ });
35
+ return {
36
+ entries: (data.entries ?? []).map(mapLogEntry),
37
+ next_page_token: data.nextPageToken ?? '',
38
+ };
39
+ },
40
+ });
41
+ //# sourceMappingURL=list-log-entries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-log-entries.js","sourceRoot":"","sources":["../../src/tools/list-log-entries.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,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EACT,iIAAiI;IACnI,OAAO,EAAE,4BAA4B;IACrC,IAAI,EAAE,aAAa;IACnB,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;QAC/F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QACnG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACrG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;KACtG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAChE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,EAChD;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,aAAa,EAAE,CAAC,YAAY,SAAS,EAAE,CAAC;gBACxC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;gBAChC,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB;aAC7C;SACF,CACF,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;YAC9C,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare const listNetworks: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ max_results: z.ZodOptional<z.ZodNumber>;
5
+ page_token: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ networks: z.ZodArray<z.ZodObject<{
8
+ id: z.ZodString;
9
+ name: z.ZodString;
10
+ auto_create_subnetworks: z.ZodBoolean;
11
+ routing_mode: z.ZodString;
12
+ creation_timestamp: z.ZodString;
13
+ }, z.core.$strip>>;
14
+ next_page_token: z.ZodString;
15
+ }, z.core.$strip>>;
16
+ //# sourceMappingURL=list-networks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-networks.d.ts","sourceRoot":"","sources":["../../src/tools/list-networks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;kBAwBvB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { networkSchema, mapNetwork } from './schemas.js';
5
+ export const listNetworks = defineTool({
6
+ name: 'list_networks',
7
+ displayName: 'List Networks',
8
+ description: 'List VPC networks in the project.',
9
+ summary: 'List VPC networks',
10
+ icon: 'network',
11
+ group: 'Compute',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ max_results: z.number().int().min(1).max(500).optional().describe('Max results (default 50)'),
15
+ page_token: z.string().optional().describe('Page token from a previous response'),
16
+ }),
17
+ output: z.object({
18
+ networks: z.array(networkSchema).describe('List of VPC networks'),
19
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
20
+ }),
21
+ handle: async (params) => {
22
+ const projectId = resolveProjectId(params.project_id);
23
+ const data = await gcpApi(`https://compute.googleapis.com/compute/v1/projects/${projectId}/global/networks`, { params: { maxResults: params.max_results ?? 50, pageToken: params.page_token } });
24
+ return { networks: (data.items ?? []).map(mapNetwork), next_page_token: data.nextPageToken ?? '' };
25
+ },
26
+ });
27
+ //# sourceMappingURL=list-networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-networks.js","sourceRoot":"","sources":["../../src/tools/list-networks.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,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,mCAAmC;IAChD,OAAO,EAAE,mBAAmB;IAC5B,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;QAC/F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACjE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,sDAAsD,SAAS,kBAAkB,EACjF,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CACnF,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;IACrG,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const listObjects: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ bucket_name: z.ZodString;
4
+ prefix: z.ZodOptional<z.ZodString>;
5
+ delimiter: z.ZodOptional<z.ZodString>;
6
+ max_results: z.ZodOptional<z.ZodNumber>;
7
+ page_token: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strip>, z.ZodObject<{
9
+ objects: z.ZodArray<z.ZodObject<{
10
+ name: z.ZodString;
11
+ size: z.ZodString;
12
+ content_type: z.ZodString;
13
+ updated: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ prefixes: z.ZodArray<z.ZodString>;
16
+ next_page_token: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=list-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-objects.d.ts","sourceRoot":"","sources":["../../src/tools/list-objects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;kBAqCtB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi } from '../gcloud-api.js';
4
+ import { objectSchema, mapObject } from './schemas.js';
5
+ export const listObjects = defineTool({
6
+ name: 'list_objects',
7
+ displayName: 'List Objects',
8
+ description: 'List objects in a Cloud Storage bucket. Supports prefix filtering for directory-like browsing.',
9
+ summary: 'List objects in a storage bucket',
10
+ icon: 'file',
11
+ group: 'Storage',
12
+ input: z.object({
13
+ bucket_name: z.string().describe('Bucket name'),
14
+ prefix: z.string().optional().describe('Object name prefix for filtering (e.g., "logs/2024/")'),
15
+ delimiter: z.string().optional().describe('Delimiter for directory-like listing (typically "/")'),
16
+ max_results: z.number().int().min(1).max(1000).optional().describe('Max results (default 50)'),
17
+ page_token: z.string().optional().describe('Page token from a previous response'),
18
+ }),
19
+ output: z.object({
20
+ objects: z.array(objectSchema).describe('List of objects'),
21
+ prefixes: z.array(z.string()).describe('Common prefixes (subdirectories when delimiter is used)'),
22
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
23
+ }),
24
+ handle: async (params) => {
25
+ const data = await gcpApi(`https://storage.googleapis.com/storage/v1/b/${params.bucket_name}/o`, {
26
+ params: {
27
+ prefix: params.prefix,
28
+ delimiter: params.delimiter,
29
+ maxResults: params.max_results ?? 50,
30
+ pageToken: params.page_token,
31
+ },
32
+ });
33
+ return {
34
+ objects: (data.items ?? []).map(mapObject),
35
+ prefixes: data.prefixes ?? [],
36
+ next_page_token: data.nextPageToken ?? '',
37
+ };
38
+ },
39
+ });
40
+ //# sourceMappingURL=list-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-objects.js","sourceRoot":"","sources":["../../src/tools/list-objects.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,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,gGAAgG;IAC7G,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QACjG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC9F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC1D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACjG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,+CAA+C,MAAM,CAAC,WAAW,IAAI,EACrE;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACpC,SAAS,EAAE,MAAM,CAAC,UAAU;aAC7B;SACF,CACF,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const listProjects: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ page_size: z.ZodOptional<z.ZodNumber>;
4
+ page_token: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ projects: z.ZodArray<z.ZodObject<{
7
+ project_id: z.ZodString;
8
+ project_number: z.ZodString;
9
+ name: z.ZodString;
10
+ state: z.ZodString;
11
+ create_time: z.ZodString;
12
+ }, z.core.$strip>>;
13
+ next_page_token: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=list-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;;;;;;;;;;;kBA+BvB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi } from '../gcloud-api.js';
4
+ import { projectSchema, mapProjectV1 } from './schemas.js';
5
+ export const listProjects = defineTool({
6
+ name: 'list_projects',
7
+ displayName: 'List Projects',
8
+ description: 'List all GCP projects accessible to the current user. Returns project IDs, names, and lifecycle states.',
9
+ summary: 'List accessible GCP projects',
10
+ icon: 'folder',
11
+ group: 'Projects',
12
+ input: z.object({
13
+ page_size: z.number().int().min(1).max(100).optional().describe('Max results per page (default 50, max 100)'),
14
+ page_token: z.string().optional().describe('Page token from a previous response for pagination'),
15
+ }),
16
+ output: z.object({
17
+ projects: z.array(projectSchema).describe('List of projects'),
18
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
19
+ }),
20
+ handle: async (params) => {
21
+ const data = await gcpApi('https://cloudresourcemanager.googleapis.com/v1/projects', {
22
+ params: {
23
+ pageSize: params.page_size ?? 50,
24
+ pageToken: params.page_token,
25
+ },
26
+ });
27
+ return {
28
+ projects: (data.projects ?? []).map(mapProjectV1),
29
+ next_page_token: data.nextPageToken ?? '',
30
+ };
31
+ },
32
+ });
33
+ //# sourceMappingURL=list-projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.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,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,yGAAyG;IAC3G,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAC7G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KACjG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,yDAAyD,EACzD;YACE,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;gBAChC,SAAS,EAAE,MAAM,CAAC,UAAU;aAC7B;SACF,CACF,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YACjD,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const listServiceAccounts: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ page_size: z.ZodOptional<z.ZodNumber>;
5
+ page_token: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ service_accounts: z.ZodArray<z.ZodObject<{
8
+ email: z.ZodString;
9
+ name: z.ZodString;
10
+ display_name: z.ZodString;
11
+ disabled: z.ZodBoolean;
12
+ }, z.core.$strip>>;
13
+ next_page_token: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=list-service-accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-service-accounts.d.ts","sourceRoot":"","sources":["../../src/tools/list-service-accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;kBA2B9B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { serviceAccountSchema, mapServiceAccount } from './schemas.js';
5
+ export const listServiceAccounts = defineTool({
6
+ name: 'list_service_accounts',
7
+ displayName: 'List Service Accounts',
8
+ description: 'List IAM service accounts in the project.',
9
+ summary: 'List IAM service accounts',
10
+ icon: 'bot',
11
+ group: 'IAM',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ page_size: z.number().int().min(1).max(100).optional().describe('Max results per page (default 50)'),
15
+ page_token: z.string().optional().describe('Page token from a previous response'),
16
+ }),
17
+ output: z.object({
18
+ service_accounts: z.array(serviceAccountSchema).describe('List of service accounts'),
19
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
20
+ }),
21
+ handle: async (params) => {
22
+ const projectId = resolveProjectId(params.project_id);
23
+ const data = await gcpApi(`https://iam.googleapis.com/v1/projects/${projectId}/serviceAccounts`, { params: { pageSize: params.page_size ?? 50, pageToken: params.page_token } });
24
+ return {
25
+ service_accounts: (data.accounts ?? []).map(mapServiceAccount),
26
+ next_page_token: data.nextPageToken ?? '',
27
+ };
28
+ },
29
+ });
30
+ //# sourceMappingURL=list-service-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-service-accounts.js","sourceRoot":"","sources":["../../src/tools/list-service-accounts.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,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACpG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACpF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,kBAAkB,EACrE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAC/E,CAAC;QACF,OAAO;YACL,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9D,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const listSqlInstances: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodOptional<z.ZodString>;
4
+ max_results: z.ZodOptional<z.ZodNumber>;
5
+ page_token: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ instances: z.ZodArray<z.ZodObject<{
8
+ name: z.ZodString;
9
+ database_version: z.ZodString;
10
+ state: z.ZodString;
11
+ region: z.ZodString;
12
+ tier: z.ZodString;
13
+ ip_address: z.ZodString;
14
+ create_time: z.ZodString;
15
+ }, z.core.$strip>>;
16
+ next_page_token: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=list-sql-instances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sql-instances.d.ts","sourceRoot":"","sources":["../../src/tools/list-sql-instances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;kBA2B3B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { gcpApi, resolveProjectId } from '../gcloud-api.js';
4
+ import { sqlInstanceSchema, mapSqlInstance } from './schemas.js';
5
+ export const listSqlInstances = defineTool({
6
+ name: 'list_sql_instances',
7
+ displayName: 'List Cloud SQL Instances',
8
+ description: 'List Cloud SQL database instances in the project.',
9
+ summary: 'List Cloud SQL instances',
10
+ icon: 'database',
11
+ group: 'Cloud SQL',
12
+ input: z.object({
13
+ project_id: z.string().optional().describe('Project ID (defaults to currently active project)'),
14
+ max_results: z.number().int().min(1).max(500).optional().describe('Max results (default 50)'),
15
+ page_token: z.string().optional().describe('Page token from a previous response'),
16
+ }),
17
+ output: z.object({
18
+ instances: z.array(sqlInstanceSchema).describe('List of Cloud SQL instances'),
19
+ next_page_token: z.string().describe('Token for next page, empty if no more results'),
20
+ }),
21
+ handle: async (params) => {
22
+ const projectId = resolveProjectId(params.project_id);
23
+ const data = await gcpApi(`https://sqladmin.googleapis.com/v1/projects/${projectId}/instances`, { params: { maxResults: params.max_results ?? 50, pageToken: params.page_token } });
24
+ return {
25
+ instances: (data.items ?? []).map(mapSqlInstance),
26
+ next_page_token: data.nextPageToken ?? '',
27
+ };
28
+ },
29
+ });
30
+ //# sourceMappingURL=list-sql-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sql-instances.js","sourceRoot":"","sources":["../../src/tools/list-sql-instances.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,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,0BAA0B;IACvC,WAAW,EAAE,mDAAmD;IAChE,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC7E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtF,CAAC;IACF,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,+CAA+C,SAAS,YAAY,EACpE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CACnF,CAAC;QACF,OAAO;YACL,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;YACjD,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}