@rnsk/toolkits 0.0.8 → 0.0.9

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 (201) hide show
  1. package/README.md +9 -1
  2. package/dist/index.d.ts +9 -1
  3. package/dist/index.js +17 -1
  4. package/dist/toolkits/bitbucket/icon.d.ts +5 -0
  5. package/dist/toolkits/bitbucket/icon.js +6 -0
  6. package/dist/toolkits/bitbucket/manifest.d.ts +3 -0
  7. package/dist/toolkits/bitbucket/manifest.js +56 -0
  8. package/dist/toolkits/bitbucket/tools/client.d.ts +38 -0
  9. package/dist/toolkits/bitbucket/tools/client.js +87 -0
  10. package/dist/toolkits/bitbucket/tools/commits.d.ts +149 -0
  11. package/dist/toolkits/bitbucket/tools/commits.js +444 -0
  12. package/dist/toolkits/bitbucket/tools/index.d.ts +1093 -0
  13. package/dist/toolkits/bitbucket/tools/index.js +770 -0
  14. package/dist/toolkits/bitbucket/tools/issues.d.ts +73 -0
  15. package/dist/toolkits/bitbucket/tools/issues.js +234 -0
  16. package/dist/toolkits/bitbucket/tools/pipelines.d.ts +124 -0
  17. package/dist/toolkits/bitbucket/tools/pipelines.js +446 -0
  18. package/dist/toolkits/bitbucket/tools/pull-requests.d.ts +174 -0
  19. package/dist/toolkits/bitbucket/tools/pull-requests.js +541 -0
  20. package/dist/toolkits/bitbucket/tools/reports.d.ts +84 -0
  21. package/dist/toolkits/bitbucket/tools/reports.js +213 -0
  22. package/dist/toolkits/bitbucket/tools/repositories.d.ts +156 -0
  23. package/dist/toolkits/bitbucket/tools/repositories.js +531 -0
  24. package/dist/toolkits/bitbucket/tools/search.d.ts +17 -0
  25. package/dist/toolkits/bitbucket/tools/search.js +67 -0
  26. package/dist/toolkits/bitbucket/tools/snippets.d.ts +34 -0
  27. package/dist/toolkits/bitbucket/tools/snippets.js +122 -0
  28. package/dist/toolkits/bitbucket/tools/users-workspaces.d.ts +65 -0
  29. package/dist/toolkits/bitbucket/tools/users-workspaces.js +294 -0
  30. package/dist/toolkits/discord/icon.d.ts +5 -0
  31. package/dist/toolkits/discord/icon.js +12 -0
  32. package/dist/toolkits/discord/manifest.d.ts +3 -0
  33. package/dist/toolkits/discord/manifest.js +52 -0
  34. package/dist/toolkits/discord/tools/applications.d.ts +79 -0
  35. package/dist/toolkits/discord/tools/applications.js +216 -0
  36. package/dist/toolkits/discord/tools/client.d.ts +22 -0
  37. package/dist/toolkits/discord/tools/client.js +69 -0
  38. package/dist/toolkits/discord/tools/guilds.d.ts +39 -0
  39. package/dist/toolkits/discord/tools/guilds.js +123 -0
  40. package/dist/toolkits/discord/tools/index.d.ts +222 -0
  41. package/dist/toolkits/discord/tools/index.js +170 -0
  42. package/dist/toolkits/discord/tools/misc.d.ts +7 -0
  43. package/dist/toolkits/discord/tools/misc.js +40 -0
  44. package/dist/toolkits/discord/tools/users.d.ts +28 -0
  45. package/dist/toolkits/discord/tools/users.js +128 -0
  46. package/dist/toolkits/figma/tools/index.d.ts +1 -1
  47. package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
  48. package/dist/toolkits/gitlab/icon.d.ts +5 -0
  49. package/dist/toolkits/gitlab/icon.js +6 -0
  50. package/dist/toolkits/gitlab/manifest.d.ts +3 -0
  51. package/dist/toolkits/gitlab/manifest.js +36 -0
  52. package/dist/toolkits/gitlab/tools/client.d.ts +7 -0
  53. package/dist/toolkits/gitlab/tools/client.js +45 -0
  54. package/dist/toolkits/gitlab/tools/index.d.ts +306 -0
  55. package/dist/toolkits/gitlab/tools/index.js +36 -0
  56. package/dist/toolkits/gitlab/tools/issues.d.ts +45 -0
  57. package/dist/toolkits/gitlab/tools/issues.js +103 -0
  58. package/dist/toolkits/gitlab/tools/merge-requests.d.ts +35 -0
  59. package/dist/toolkits/gitlab/tools/merge-requests.js +91 -0
  60. package/dist/toolkits/gitlab/tools/pipelines.d.ts +30 -0
  61. package/dist/toolkits/gitlab/tools/pipelines.js +66 -0
  62. package/dist/toolkits/gitlab/tools/projects.d.ts +36 -0
  63. package/dist/toolkits/gitlab/tools/projects.js +94 -0
  64. package/dist/toolkits/gitlab/tools/repository.d.ts +21 -0
  65. package/dist/toolkits/gitlab/tools/repository.js +53 -0
  66. package/dist/toolkits/gitlab/tools/users-groups.d.ts +11 -0
  67. package/dist/toolkits/gitlab/tools/users-groups.js +30 -0
  68. package/dist/toolkits/google-ads/tools/get-rmf-report.d.ts +2 -2
  69. package/dist/toolkits/google-ads/tools/index.d.ts +2 -2
  70. package/dist/toolkits/google-analytics/icon.d.ts +5 -0
  71. package/dist/toolkits/google-analytics/icon.js +11 -0
  72. package/dist/toolkits/google-analytics/manifest.d.ts +3 -0
  73. package/dist/toolkits/google-analytics/manifest.js +48 -0
  74. package/dist/toolkits/google-analytics/tools/admin.d.ts +73 -0
  75. package/dist/toolkits/google-analytics/tools/admin.js +238 -0
  76. package/dist/toolkits/google-analytics/tools/audiences.d.ts +81 -0
  77. package/dist/toolkits/google-analytics/tools/audiences.js +190 -0
  78. package/dist/toolkits/google-analytics/tools/client.d.ts +47 -0
  79. package/dist/toolkits/google-analytics/tools/client.js +74 -0
  80. package/dist/toolkits/google-analytics/tools/custom-definitions.d.ts +62 -0
  81. package/dist/toolkits/google-analytics/tools/custom-definitions.js +106 -0
  82. package/dist/toolkits/google-analytics/tools/index.d.ts +16 -0
  83. package/dist/toolkits/google-analytics/tools/index.js +88 -0
  84. package/dist/toolkits/google-analytics/tools/links.d.ts +22 -0
  85. package/dist/toolkits/google-analytics/tools/links.js +56 -0
  86. package/dist/toolkits/google-analytics/tools/measurement.d.ts +3 -0
  87. package/dist/toolkits/google-analytics/tools/measurement.js +55 -0
  88. package/dist/toolkits/google-analytics/tools/reports.d.ts +136 -0
  89. package/dist/toolkits/google-analytics/tools/reports.js +200 -0
  90. package/dist/toolkits/google-contacts/icon.d.ts +5 -0
  91. package/dist/toolkits/google-contacts/icon.js +6 -0
  92. package/dist/toolkits/google-contacts/manifest.d.ts +3 -0
  93. package/dist/toolkits/google-contacts/manifest.js +48 -0
  94. package/dist/toolkits/google-contacts/tools/client.d.ts +19 -0
  95. package/dist/toolkits/google-contacts/tools/client.js +44 -0
  96. package/dist/toolkits/google-contacts/tools/contacts.d.ts +94 -0
  97. package/dist/toolkits/google-contacts/tools/contacts.js +273 -0
  98. package/dist/toolkits/google-contacts/tools/directory.d.ts +36 -0
  99. package/dist/toolkits/google-contacts/tools/directory.js +99 -0
  100. package/dist/toolkits/google-contacts/tools/groups.d.ts +68 -0
  101. package/dist/toolkits/google-contacts/tools/groups.js +169 -0
  102. package/dist/toolkits/google-contacts/tools/index.d.ts +347 -0
  103. package/dist/toolkits/google-contacts/tools/index.js +34 -0
  104. package/dist/toolkits/google-contacts/tools/photos.d.ts +26 -0
  105. package/dist/toolkits/google-contacts/tools/photos.js +52 -0
  106. package/dist/toolkits/google-maps/icon.d.ts +5 -0
  107. package/dist/toolkits/google-maps/icon.js +39 -0
  108. package/dist/toolkits/google-maps/manifest.d.ts +3 -0
  109. package/dist/toolkits/google-maps/manifest.js +55 -0
  110. package/dist/toolkits/google-maps/tools/client.d.ts +27 -0
  111. package/dist/toolkits/google-maps/tools/client.js +72 -0
  112. package/dist/toolkits/google-maps/tools/geocode.d.ts +49 -0
  113. package/dist/toolkits/google-maps/tools/geocode.js +168 -0
  114. package/dist/toolkits/google-maps/tools/index.d.ts +432 -0
  115. package/dist/toolkits/google-maps/tools/index.js +31 -0
  116. package/dist/toolkits/google-maps/tools/misc.d.ts +70 -0
  117. package/dist/toolkits/google-maps/tools/misc.js +158 -0
  118. package/dist/toolkits/google-maps/tools/places.d.ts +112 -0
  119. package/dist/toolkits/google-maps/tools/places.js +185 -0
  120. package/dist/toolkits/google-maps/tools/routes.d.ts +48 -0
  121. package/dist/toolkits/google-maps/tools/routes.js +97 -0
  122. package/dist/toolkits/google-maps/tools/tiles.d.ts +51 -0
  123. package/dist/toolkits/google-maps/tools/tiles.js +84 -0
  124. package/dist/toolkits/google-photos/icon.d.ts +5 -0
  125. package/dist/toolkits/google-photos/icon.js +6 -0
  126. package/dist/toolkits/google-photos/manifest.d.ts +3 -0
  127. package/dist/toolkits/google-photos/manifest.js +47 -0
  128. package/dist/toolkits/google-photos/tools/albums.d.ts +83 -0
  129. package/dist/toolkits/google-photos/tools/albums.js +180 -0
  130. package/dist/toolkits/google-photos/tools/client.d.ts +24 -0
  131. package/dist/toolkits/google-photos/tools/client.js +77 -0
  132. package/dist/toolkits/google-photos/tools/index.d.ts +261 -0
  133. package/dist/toolkits/google-photos/tools/index.js +22 -0
  134. package/dist/toolkits/google-photos/tools/media.d.ts +52 -0
  135. package/dist/toolkits/google-photos/tools/media.js +142 -0
  136. package/dist/toolkits/google-photos/tools/uploads.d.ts +58 -0
  137. package/dist/toolkits/google-photos/tools/uploads.js +107 -0
  138. package/dist/toolkits/google-tasks/tools/index.d.ts +1 -1
  139. package/dist/toolkits/google-tasks/tools/update-task-full.d.ts +1 -1
  140. package/dist/toolkits/groww/tools/index.d.ts +1 -1
  141. package/dist/toolkits/groww/tools/instruments.d.ts +1 -1
  142. package/dist/toolkits/reddit/tools/index.d.ts +1 -1
  143. package/dist/toolkits/reddit/tools/search-across-subreddits.d.ts +1 -1
  144. package/dist/toolkits/slack/icon.d.ts +5 -0
  145. package/dist/toolkits/slack/icon.js +20 -0
  146. package/dist/toolkits/slack/manifest.d.ts +3 -0
  147. package/dist/toolkits/slack/manifest.js +93 -0
  148. package/dist/toolkits/slack/tools/admin-apps.d.ts +32 -0
  149. package/dist/toolkits/slack/tools/admin-apps.js +116 -0
  150. package/dist/toolkits/slack/tools/admin-conversations.d.ts +62 -0
  151. package/dist/toolkits/slack/tools/admin-conversations.js +246 -0
  152. package/dist/toolkits/slack/tools/admin-invites.d.ts +19 -0
  153. package/dist/toolkits/slack/tools/admin-invites.js +75 -0
  154. package/dist/toolkits/slack/tools/admin-users.d.ts +52 -0
  155. package/dist/toolkits/slack/tools/admin-users.js +182 -0
  156. package/dist/toolkits/slack/tools/audit.d.ts +20 -0
  157. package/dist/toolkits/slack/tools/audit.js +81 -0
  158. package/dist/toolkits/slack/tools/calls.d.ts +38 -0
  159. package/dist/toolkits/slack/tools/calls.js +141 -0
  160. package/dist/toolkits/slack/tools/canvas.d.ts +24 -0
  161. package/dist/toolkits/slack/tools/canvas.js +102 -0
  162. package/dist/toolkits/slack/tools/client.d.ts +22 -0
  163. package/dist/toolkits/slack/tools/client.js +73 -0
  164. package/dist/toolkits/slack/tools/conversations.d.ts +131 -0
  165. package/dist/toolkits/slack/tools/conversations.js +463 -0
  166. package/dist/toolkits/slack/tools/emoji.d.ts +29 -0
  167. package/dist/toolkits/slack/tools/emoji.js +118 -0
  168. package/dist/toolkits/slack/tools/files.d.ts +113 -0
  169. package/dist/toolkits/slack/tools/files.js +368 -0
  170. package/dist/toolkits/slack/tools/index.d.ts +28 -0
  171. package/dist/toolkits/slack/tools/index.js +187 -0
  172. package/dist/toolkits/slack/tools/messages.d.ts +106 -0
  173. package/dist/toolkits/slack/tools/messages.js +340 -0
  174. package/dist/toolkits/slack/tools/misc.d.ts +42 -0
  175. package/dist/toolkits/slack/tools/misc.js +127 -0
  176. package/dist/toolkits/slack/tools/reactions-stars-pins.d.ts +69 -0
  177. package/dist/toolkits/slack/tools/reactions-stars-pins.js +236 -0
  178. package/dist/toolkits/slack/tools/reminders.d.ts +22 -0
  179. package/dist/toolkits/slack/tools/reminders.js +83 -0
  180. package/dist/toolkits/slack/tools/search.d.ts +49 -0
  181. package/dist/toolkits/slack/tools/search.js +155 -0
  182. package/dist/toolkits/slack/tools/slack-lists.d.ts +65 -0
  183. package/dist/toolkits/slack/tools/slack-lists.js +282 -0
  184. package/dist/toolkits/slack/tools/teams.d.ts +75 -0
  185. package/dist/toolkits/slack/tools/teams.js +285 -0
  186. package/dist/toolkits/slack/tools/usergroups.d.ts +56 -0
  187. package/dist/toolkits/slack/tools/usergroups.js +194 -0
  188. package/dist/toolkits/slack/tools/users.d.ts +87 -0
  189. package/dist/toolkits/slack/tools/users.js +396 -0
  190. package/dist/toolkits/youtube/tools/add-video-to-playlist.d.ts +1 -1
  191. package/dist/toolkits/youtube/tools/delete-video.d.ts +1 -1
  192. package/dist/toolkits/youtube/tools/index.d.ts +10 -10
  193. package/dist/toolkits/youtube/tools/list-caption-track.d.ts +1 -1
  194. package/dist/toolkits/youtube/tools/list-playlist-items.d.ts +1 -1
  195. package/dist/toolkits/youtube/tools/list-video-categories.d.ts +1 -1
  196. package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
  197. package/dist/toolkits/youtube/tools/report-video-abuse.d.ts +1 -1
  198. package/dist/toolkits/youtube/tools/search-youtube.d.ts +1 -1
  199. package/dist/toolkits/youtube/tools/update-thumbnail.d.ts +1 -1
  200. package/dist/toolkits/youtube/tools/update-video.d.ts +1 -1
  201. package/package.json +1 -1
@@ -0,0 +1,3 @@
1
+ declare const _default: import("../../index.js").ToolkitManifest;
2
+ export default _default;
3
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1,55 @@
1
+ import { defineToolkit, defineTool } from '../../core/define.js';
2
+ import { inferToolScope } from '../../core/scope.js';
3
+ import { GMAPS_ICON } from './icon.js';
4
+ import { googleMapsTools } from './tools/index.js';
5
+ export default defineToolkit({
6
+ id: 'google-maps',
7
+ displayName: 'Google Maps',
8
+ shortDescription: 'Search places, geocode addresses, compute routes, and render map tiles.',
9
+ category: 'Developer Tools & DevOps',
10
+ icon: GMAPS_ICON,
11
+ auth: {
12
+ type: 'oauth2',
13
+ tokenField: 'googleMapsToken',
14
+ provider: {
15
+ slug: 'google-maps',
16
+ env: { clientId: 'GOOGLE_MAPS_CLIENT_ID', clientSecret: 'GOOGLE_MAPS_CLIENT_SECRET' },
17
+ authorizeUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
18
+ tokenUrl: 'https://oauth2.googleapis.com/token',
19
+ scopes: [
20
+ 'https://www.googleapis.com/auth/cloud-platform',
21
+ 'https://www.googleapis.com/auth/maps-platform.geocode',
22
+ 'https://www.googleapis.com/auth/maps-platform.geocode.address',
23
+ 'https://www.googleapis.com/auth/maps-platform.geocode.location',
24
+ 'https://www.googleapis.com/auth/maps-platform.geocode.place',
25
+ ],
26
+ exchangeStyle: 'form',
27
+ extraAuthParams: { access_type: 'offline', prompt: 'consent' },
28
+ connectDescription: 'Connect Google Maps for places, geocoding, routes, and tiles.',
29
+ callbackPath: '/api/auth/google-maps/callback',
30
+ stateCookie: 'google_maps_oauth_state',
31
+ },
32
+ },
33
+ allowedHosts: [
34
+ 'places.googleapis.com',
35
+ 'routes.googleapis.com',
36
+ 'geocode.googleapis.com',
37
+ 'tile.googleapis.com',
38
+ 'aerialview.googleapis.com',
39
+ 'www.googleapis.com',
40
+ 'maps.googleapis.com',
41
+ ],
42
+ tools: googleMapsTools.map((entry) => defineTool({
43
+ name: entry.name,
44
+ description: entry.description,
45
+ tool: entry.tool,
46
+ requiredAuth: entry.requiredAuth,
47
+ scope: entry.scope ?? inferToolScope(entry.name),
48
+ })),
49
+ meta: {
50
+ since: '0.0.8',
51
+ homepage: 'https://maps.google.com',
52
+ docsUrl: 'https://developers.google.com/maps/documentation',
53
+ },
54
+ });
55
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const PLACES_API_BASE = "https://places.googleapis.com/v1";
3
+ export declare const ROUTES_API_BASE = "https://routes.googleapis.com";
4
+ export declare const GEOCODE_API_BASE = "https://geocode.googleapis.com/v4beta";
5
+ export declare const TILE_API_BASE = "https://tile.googleapis.com/v1";
6
+ export declare const AERIAL_API_BASE = "https://aerialview.googleapis.com/v1";
7
+ export declare const googleMapsTokenField: z.ZodString;
8
+ export declare function buildQuery(params: Record<string, string | number | boolean | undefined>): string;
9
+ export interface MapsRequestOptions {
10
+ method?: string;
11
+ query?: Record<string, string | number | boolean | undefined>;
12
+ body?: unknown;
13
+ headers?: Record<string, string>;
14
+ responseType?: 'json' | 'bytes';
15
+ }
16
+ export declare function mapsRequest(googleMapsToken: string, base: string, path: string, options?: MapsRequestOptions): Promise<{
17
+ ok: false;
18
+ error: any;
19
+ data?: undefined;
20
+ } | {
21
+ ok: true;
22
+ data: any;
23
+ error?: undefined;
24
+ }>;
25
+ export declare function toFieldMask(mask: string | undefined, prefix: string, fallback: string): string;
26
+ export declare function normalizePlaceName(name: string): string;
27
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1,72 @@
1
+ // @ts-nocheck
2
+ import { z } from 'zod';
3
+ export const PLACES_API_BASE = 'https://places.googleapis.com/v1';
4
+ export const ROUTES_API_BASE = 'https://routes.googleapis.com';
5
+ export const GEOCODE_API_BASE = 'https://geocode.googleapis.com/v4beta';
6
+ export const TILE_API_BASE = 'https://tile.googleapis.com/v1';
7
+ export const AERIAL_API_BASE = 'https://aerialview.googleapis.com/v1';
8
+ export const googleMapsTokenField = z.string().describe('Google Maps OAuth access token (Bearer)');
9
+ export function buildQuery(params) {
10
+ const search = new URLSearchParams();
11
+ for (const [key, value] of Object.entries(params)) {
12
+ if (value !== undefined)
13
+ search.set(key, String(value));
14
+ }
15
+ const qs = search.toString();
16
+ return qs ? `?${qs}` : '';
17
+ }
18
+ export async function mapsRequest(googleMapsToken, base, path, options) {
19
+ const url = `${base}${path}${buildQuery(options?.query ?? {})}`;
20
+ const headers = { Authorization: `Bearer ${googleMapsToken}` };
21
+ if (options?.body !== undefined)
22
+ headers['Content-Type'] = 'application/json';
23
+ if (options?.headers)
24
+ Object.assign(headers, options.headers);
25
+ const response = await fetch(url, {
26
+ method: options?.method ?? 'GET',
27
+ headers,
28
+ body: options?.body !== undefined ? JSON.stringify(options.body) : undefined,
29
+ });
30
+ if (!response.ok) {
31
+ const details = await response.json().catch(() => ({}));
32
+ return { ok: false, error: details };
33
+ }
34
+ if (response.status === 204) {
35
+ return { ok: true, data: { success: true } };
36
+ }
37
+ if (options?.responseType === 'bytes') {
38
+ const bytes = Buffer.from(await response.arrayBuffer());
39
+ return {
40
+ ok: true,
41
+ data: { contentBase64: bytes.toString('base64'), byteSize: bytes.length, mimetype: response.headers.get('content-type') ?? 'application/octet-stream' },
42
+ };
43
+ }
44
+ const data = await response.json().catch(() => ({}));
45
+ return { ok: true, data };
46
+ }
47
+ export function toFieldMask(mask, prefix, fallback) {
48
+ if (!mask || mask.trim() === '' || mask.trim() === '*')
49
+ return fallback;
50
+ return mask
51
+ .split(',')
52
+ .map((f) => f.trim())
53
+ .filter(Boolean)
54
+ .map((f) => {
55
+ if (f.startsWith(`${prefix}.`) || f === prefix)
56
+ return f;
57
+ const aliases = {
58
+ name: 'displayName',
59
+ address: 'formattedAddress',
60
+ url: 'websiteUri',
61
+ website: 'websiteUri',
62
+ type: 'types',
63
+ phone: 'nationalPhoneNumber',
64
+ };
65
+ return `${prefix}.${aliases[f] ?? f}`;
66
+ })
67
+ .join(',');
68
+ }
69
+ export function normalizePlaceName(name) {
70
+ return name.startsWith('places/') ? name : `places/${name}`;
71
+ }
72
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,49 @@
1
+ export declare const geocodeAddressWithQuery: import("ai").Tool<{
2
+ googleMapsToken: string;
3
+ addressQuery: string;
4
+ languageCode?: string | undefined;
5
+ regionCode?: string | undefined;
6
+ }, any>;
7
+ export declare const geocodeDestinations: import("ai").Tool<{
8
+ googleMapsToken: string;
9
+ languageCode?: string | undefined;
10
+ regionCode?: string | undefined;
11
+ addressQuery?: string | Record<string, any> | undefined;
12
+ place?: string | undefined;
13
+ locationQuery?: {
14
+ location: {
15
+ latitude: number;
16
+ longitude: number;
17
+ };
18
+ } | undefined;
19
+ travelModes?: ("DRIVE" | "WALK")[] | undefined;
20
+ }, any>;
21
+ export declare const reverseGeocodeLocation: import("ai").Tool<{
22
+ googleMapsToken: string;
23
+ latitude: number;
24
+ longitude: number;
25
+ types?: string[] | undefined;
26
+ languageCode?: string | undefined;
27
+ regionCode?: string | undefined;
28
+ }, any>;
29
+ export declare const geocodePlace: import("ai").Tool<{
30
+ googleMapsToken: string;
31
+ placeId: string;
32
+ languageCode?: string | undefined;
33
+ regionCode?: string | undefined;
34
+ }, any>;
35
+ export declare const geocodingApi: import("ai").Tool<{
36
+ googleMapsToken: string;
37
+ language?: string | undefined;
38
+ key?: string | undefined;
39
+ placeId?: string | undefined;
40
+ address?: string | undefined;
41
+ latlng?: string | undefined;
42
+ bounds?: string | undefined;
43
+ region?: string | undefined;
44
+ components?: string | undefined;
45
+ resultType?: string | undefined;
46
+ locationType?: string | undefined;
47
+ extraComputations?: ("ADDRESS_DESCRIPTORS" | "BUILDING_AND_ENTRANCES")[] | undefined;
48
+ }, any>;
49
+ //# sourceMappingURL=geocode.d.ts.map
@@ -0,0 +1,168 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { GEOCODE_API_BASE, googleMapsTokenField, mapsRequest } from './client.js';
5
+ export const geocodeAddressWithQuery = tool({
6
+ description: 'Converts a full address string to coordinates (v4beta). Include city/state/country — vague strings return zero or wrong results. Verify formattedAddress before use.',
7
+ inputSchema: z.object({
8
+ googleMapsToken: googleMapsTokenField,
9
+ addressQuery: z.string().min(1).describe("Full address, e.g. '1600 Amphitheatre Parkway Mountain View CA'"),
10
+ regionCode: z.string().optional().describe("ccTLD region, e.g. 'US'"),
11
+ languageCode: z.string().optional().describe("Language, e.g. 'en'"),
12
+ }),
13
+ execute: async ({ googleMapsToken, addressQuery, regionCode, languageCode }) => {
14
+ try {
15
+ const result = await mapsRequest(googleMapsToken, GEOCODE_API_BASE, '/geocode/address', {
16
+ query: { address: addressQuery, regionCode, languageCode },
17
+ });
18
+ if (!result.ok)
19
+ return { error: 'Failed to geocode address', details: result.error };
20
+ return result.data;
21
+ }
22
+ catch (error) {
23
+ return { error: 'Error geocoding address', message: error instanceof Error ? error.message : 'Unknown error' };
24
+ }
25
+ },
26
+ });
27
+ export const geocodeDestinations = tool({
28
+ description: 'Returns rich destination data (primary place, containing places, sub-destinations, landmarks, entrances, DRIVE/WALK navigation points) for an address, place ID, or coordinates. Provide exactly one lookup.',
29
+ inputSchema: z.object({
30
+ googleMapsToken: googleMapsTokenField,
31
+ place: z.string().optional().describe("Place resource 'places/{placeId}'"),
32
+ addressQuery: z.union([z.string(), z.record(z.any())]).optional().describe('Unstructured address string or structured postal address'),
33
+ locationQuery: z.object({
34
+ location: z.object({ latitude: z.number().min(-90).max(90), longitude: z.number().min(-180).max(180) }),
35
+ }).optional().describe('Coordinates lookup'),
36
+ regionCode: z.string().optional().describe("ccTLD region, e.g. 'US'"),
37
+ languageCode: z.string().optional().describe("Language, e.g. 'en'"),
38
+ travelModes: z.array(z.enum(['DRIVE', 'WALK'])).optional().describe('Filter navigation points'),
39
+ }),
40
+ execute: async ({ googleMapsToken, place, addressQuery, locationQuery, regionCode, languageCode, travelModes }) => {
41
+ try {
42
+ const lookups = [place, addressQuery, locationQuery].filter((v) => v !== undefined);
43
+ if (lookups.length !== 1)
44
+ return { error: 'Provide exactly one of place, addressQuery, or locationQuery' };
45
+ const body = {};
46
+ if (place)
47
+ body.place = place;
48
+ if (addressQuery !== undefined) {
49
+ body.addressQuery = typeof addressQuery === 'string' ? { addressQuery } : { address: addressQuery };
50
+ }
51
+ if (locationQuery)
52
+ body.locationQuery = locationQuery;
53
+ if (regionCode)
54
+ body.regionCode = regionCode;
55
+ if (languageCode)
56
+ body.languageCode = languageCode;
57
+ if (travelModes)
58
+ body.travelModes = travelModes;
59
+ const result = await mapsRequest(googleMapsToken, GEOCODE_API_BASE, '/geocode/destinations', {
60
+ method: 'POST',
61
+ body,
62
+ });
63
+ if (!result.ok)
64
+ return { error: 'Failed to geocode destinations', details: result.error };
65
+ return result.data;
66
+ }
67
+ catch (error) {
68
+ return { error: 'Error geocoding destinations', message: error instanceof Error ? error.message : 'Unknown error' };
69
+ }
70
+ },
71
+ });
72
+ export const reverseGeocodeLocation = tool({
73
+ description: 'Converts coordinates to addresses. One coordinate pair can return many results — verify formattedAddress and components before committing.',
74
+ inputSchema: z.object({
75
+ googleMapsToken: googleMapsTokenField,
76
+ latitude: z.number().min(-90).max(90),
77
+ longitude: z.number().min(-180).max(180),
78
+ regionCode: z.string().optional().describe("ccTLD region, e.g. 'US'"),
79
+ languageCode: z.string().optional().describe("BCP-47 language, e.g. 'en'"),
80
+ types: z.array(z.string()).optional().describe('Type tags to keep; others are removed'),
81
+ }),
82
+ execute: async ({ googleMapsToken, latitude, longitude, regionCode, languageCode, types }) => {
83
+ try {
84
+ const result = await mapsRequest(googleMapsToken, GEOCODE_API_BASE, '/geocode/location', {
85
+ query: { location: `${latitude},${longitude}`, regionCode, languageCode, types: types?.join(',') },
86
+ });
87
+ if (!result.ok)
88
+ return { error: 'Failed to reverse geocode', details: result.error };
89
+ return result.data;
90
+ }
91
+ catch (error) {
92
+ return { error: 'Error reverse geocoding', message: error instanceof Error ? error.message : 'Unknown error' };
93
+ }
94
+ },
95
+ });
96
+ export const geocodePlace = tool({
97
+ description: 'Looks up address and coordinates for a place ID (places/{id} or bare ID).',
98
+ inputSchema: z.object({
99
+ googleMapsToken: googleMapsTokenField,
100
+ placeId: z.string().describe("Place ID, e.g. 'ChIJj61dQgK6j4AR4GeTYWZsKWw' or 'places/...'"),
101
+ regionCode: z.string().optional().describe("ccTLD region, e.g. 'US'"),
102
+ languageCode: z.string().optional().describe("Language, e.g. 'en' (default en)"),
103
+ }),
104
+ execute: async ({ googleMapsToken, placeId, regionCode, languageCode }) => {
105
+ try {
106
+ const place = placeId.startsWith('places/') ? placeId : `places/${placeId}`;
107
+ const result = await mapsRequest(googleMapsToken, GEOCODE_API_BASE, '/geocode/place', {
108
+ query: { place, regionCode, languageCode },
109
+ });
110
+ if (!result.ok)
111
+ return { error: 'Failed to geocode place', details: result.error };
112
+ return result.data;
113
+ }
114
+ catch (error) {
115
+ return { error: 'Error geocoding place', message: error instanceof Error ? error.message : 'Unknown error' };
116
+ }
117
+ },
118
+ });
119
+ export const geocodingApi = tool({
120
+ description: 'Unified v4beta geocoder: forward (address), reverse (latlng), or place-ID lookup. Provide exactly one of address, latlng, or placeId.',
121
+ inputSchema: z.object({
122
+ googleMapsToken: googleMapsTokenField,
123
+ address: z.string().optional().describe("Street address to geocode, e.g. '1600 Amphitheatre Parkway, Mountain View, CA'"),
124
+ latlng: z.string().optional().describe("Coordinates for reverse geocoding, e.g. '40.714224,-73.961452'"),
125
+ placeId: z.string().optional().describe('Place ID for place geocoding'),
126
+ key: z.string().optional().describe('API key override (uses OAuth by default)'),
127
+ bounds: z.string().optional().describe('Bias viewport sw_lat,sw_lng|ne_lat,ne_lng'),
128
+ region: z.string().optional().describe("Bias ccTLD region, e.g. 'US'"),
129
+ language: z.string().optional().describe("Result language, e.g. 'en'"),
130
+ components: z.string().optional().describe("Restrictive filters, e.g. 'postal_code:94043|country:US'"),
131
+ resultType: z.string().optional().describe("Filter types for reverse/place, e.g. 'street_address|locality'"),
132
+ locationType: z.string().optional().describe("Filter location types, e.g. 'ROOFTOP|RANGE_INTERPOLATED'"),
133
+ extraComputations: z.array(z.enum(['ADDRESS_DESCRIPTORS', 'BUILDING_AND_ENTRANCES'])).optional(),
134
+ }),
135
+ execute: async ({ googleMapsToken, address, latlng, placeId, key, ...rest }) => {
136
+ try {
137
+ const modes = [address, latlng, placeId].filter((v) => v !== undefined);
138
+ if (modes.length !== 1)
139
+ return { error: 'Provide exactly one of address, latlng, or placeId' };
140
+ const query = { key };
141
+ for (const [k, v] of Object.entries(rest))
142
+ if (v !== undefined)
143
+ query[k] = String(v);
144
+ let path;
145
+ if (address) {
146
+ path = '/geocode/address';
147
+ query.address = address;
148
+ }
149
+ else if (latlng) {
150
+ path = '/geocode/location';
151
+ const [latitude, longitude] = latlng.split(',').map((s) => s.trim());
152
+ query.location = `${latitude},${longitude}`;
153
+ }
154
+ else {
155
+ path = '/geocode/place';
156
+ query.place = placeId.startsWith('places/') ? placeId : `places/${placeId}`;
157
+ }
158
+ const result = await mapsRequest(googleMapsToken, GEOCODE_API_BASE, path, { query });
159
+ if (!result.ok)
160
+ return { error: 'Failed to geocode', details: result.error };
161
+ return result.data;
162
+ }
163
+ catch (error) {
164
+ return { error: 'Error geocoding', message: error instanceof Error ? error.message : 'Unknown error' };
165
+ }
166
+ },
167
+ });
168
+ //# sourceMappingURL=geocode.js.map