@vm0/cli 9.246.9 → 9.247.0

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 (89) hide show
  1. package/{agent-G5F4BJAY.js → agent-YLCZG4ST.js} +5 -5
  2. package/{banking-Z46ZGJZD.js → banking-A4VPNAGY.js} +3 -3
  3. package/{chat-35B55XKY.js → chat-C6P67WYO.js} +4 -4
  4. package/{chunk-36XYOMWZ.js → chunk-FYZS5VEA.js} +71 -13
  5. package/chunk-FYZS5VEA.js.map +1 -0
  6. package/{chunk-3CSWRANL.js → chunk-HFXL5AVL.js} +2 -2
  7. package/{chunk-CSZ7QXX6.js → chunk-HYRTW4LY.js} +2 -2
  8. package/{chunk-KABC7CZS.js → chunk-JREZPGL7.js} +165 -48
  9. package/chunk-JREZPGL7.js.map +1 -0
  10. package/{chunk-MPMZUEOC.js → chunk-KBKTQLGX.js} +2 -2
  11. package/{chunk-R76DGX22.js → chunk-LA4I64KW.js} +2 -2
  12. package/{chunk-P2O4QBQZ.js → chunk-TM2JASGG.js} +2 -2
  13. package/{chunk-UXZHW5TS.js → chunk-VTVYDURY.js} +4 -4
  14. package/{computer-use-7W7H6ELG.js → computer-use-HZLNEZ2I.js} +3 -3
  15. package/{connector-KB3JLUFF.js → connector-6LDMVILB.js} +6 -6
  16. package/{credit-ZZF5YEYK.js → credit-E4DPMKBT.js} +4 -4
  17. package/{developer-support-DSNPXULZ.js → developer-support-E3FEFRY2.js} +3 -3
  18. package/{doctor-FWDBTPA6.js → doctor-ILWD6C2K.js} +3 -3
  19. package/{generate-K7MKITGV.js → generate-N6R5TZZ2.js} +4 -4
  20. package/{github-SGOHUEUZ.js → github-VDCFYJIH.js} +3 -3
  21. package/{goal-BLVEJSTJ.js → goal-DQCWM4I3.js} +3 -3
  22. package/{host-UFPDWT67.js → host-7CN3NZRQ.js} +3 -3
  23. package/{logs-7SJM6BBF.js → logs-52MLVLCY.js} +4 -4
  24. package/{mail-CGMM2FE4.js → mail-MEI2ARFN.js} +5 -5
  25. package/{maps-W3XAEZVV.js → maps-HOSDZCTR.js} +3 -3
  26. package/{model-AJQY5LZZ.js → model-YPG2ESDH.js} +4 -4
  27. package/{model-provider-APW6JITN.js → model-provider-CRSYVHTZ.js} +4 -4
  28. package/{org-5SZSNBM5.js → org-QAEZNHHR.js} +3 -3
  29. package/package.json +1 -1
  30. package/{phone-FUXN6RQI.js → phone-KBACVWG7.js} +3 -3
  31. package/{preference-2FSADPLE.js → preference-CZ5T4ZH6.js} +3 -3
  32. package/{resource-3RHJGT56.js → resource-6O5NRYUA.js} +3 -3
  33. package/{scrape-S6KOEH3K.js → scrape-XTWF7NE4.js} +3 -3
  34. package/{search-3YOIF3JN.js → search-OI5PNIX3.js} +4 -4
  35. package/{secret-PFVU45SQ.js → secret-S6Z5NHSK.js} +3 -3
  36. package/{slack-KS5DCC45.js → slack-RTT7D47V.js} +3 -3
  37. package/{teams-B2AUD3SX.js → teams-WS6I3ZMV.js} +3 -3
  38. package/{telegram-BCPH3ECW.js → telegram-Q2GNTJFX.js} +3 -3
  39. package/{variable-S4UWL5CG.js → variable-4WVPWYYU.js} +3 -3
  40. package/{video-ONM6HE6G.js → video-B3UGIF3E.js} +2 -2
  41. package/weather-JLYOYLJR.js +216 -0
  42. package/weather-JLYOYLJR.js.map +1 -0
  43. package/{web-Z4CC5ZTB.js → web-3RIJORTL.js} +3 -3
  44. package/{web-search-FCLPKEJ4.js → web-search-CVZYQ7HH.js} +3 -3
  45. package/{whoami-GODNJUJB.js → whoami-U2VXOZNF.js} +5 -5
  46. package/{workflow-CRLNDUSK.js → workflow-OTBS5W7K.js} +3 -3
  47. package/zero.js +47 -36
  48. package/zero.js.map +1 -1
  49. package/chunk-36XYOMWZ.js.map +0 -1
  50. package/chunk-KABC7CZS.js.map +0 -1
  51. /package/{agent-G5F4BJAY.js.map → agent-YLCZG4ST.js.map} +0 -0
  52. /package/{banking-Z46ZGJZD.js.map → banking-A4VPNAGY.js.map} +0 -0
  53. /package/{chat-35B55XKY.js.map → chat-C6P67WYO.js.map} +0 -0
  54. /package/{chunk-3CSWRANL.js.map → chunk-HFXL5AVL.js.map} +0 -0
  55. /package/{chunk-CSZ7QXX6.js.map → chunk-HYRTW4LY.js.map} +0 -0
  56. /package/{chunk-MPMZUEOC.js.map → chunk-KBKTQLGX.js.map} +0 -0
  57. /package/{chunk-R76DGX22.js.map → chunk-LA4I64KW.js.map} +0 -0
  58. /package/{chunk-P2O4QBQZ.js.map → chunk-TM2JASGG.js.map} +0 -0
  59. /package/{chunk-UXZHW5TS.js.map → chunk-VTVYDURY.js.map} +0 -0
  60. /package/{computer-use-7W7H6ELG.js.map → computer-use-HZLNEZ2I.js.map} +0 -0
  61. /package/{connector-KB3JLUFF.js.map → connector-6LDMVILB.js.map} +0 -0
  62. /package/{credit-ZZF5YEYK.js.map → credit-E4DPMKBT.js.map} +0 -0
  63. /package/{developer-support-DSNPXULZ.js.map → developer-support-E3FEFRY2.js.map} +0 -0
  64. /package/{doctor-FWDBTPA6.js.map → doctor-ILWD6C2K.js.map} +0 -0
  65. /package/{generate-K7MKITGV.js.map → generate-N6R5TZZ2.js.map} +0 -0
  66. /package/{github-SGOHUEUZ.js.map → github-VDCFYJIH.js.map} +0 -0
  67. /package/{goal-BLVEJSTJ.js.map → goal-DQCWM4I3.js.map} +0 -0
  68. /package/{host-UFPDWT67.js.map → host-7CN3NZRQ.js.map} +0 -0
  69. /package/{logs-7SJM6BBF.js.map → logs-52MLVLCY.js.map} +0 -0
  70. /package/{mail-CGMM2FE4.js.map → mail-MEI2ARFN.js.map} +0 -0
  71. /package/{maps-W3XAEZVV.js.map → maps-HOSDZCTR.js.map} +0 -0
  72. /package/{model-AJQY5LZZ.js.map → model-YPG2ESDH.js.map} +0 -0
  73. /package/{model-provider-APW6JITN.js.map → model-provider-CRSYVHTZ.js.map} +0 -0
  74. /package/{org-5SZSNBM5.js.map → org-QAEZNHHR.js.map} +0 -0
  75. /package/{phone-FUXN6RQI.js.map → phone-KBACVWG7.js.map} +0 -0
  76. /package/{preference-2FSADPLE.js.map → preference-CZ5T4ZH6.js.map} +0 -0
  77. /package/{resource-3RHJGT56.js.map → resource-6O5NRYUA.js.map} +0 -0
  78. /package/{scrape-S6KOEH3K.js.map → scrape-XTWF7NE4.js.map} +0 -0
  79. /package/{search-3YOIF3JN.js.map → search-OI5PNIX3.js.map} +0 -0
  80. /package/{secret-PFVU45SQ.js.map → secret-S6Z5NHSK.js.map} +0 -0
  81. /package/{slack-KS5DCC45.js.map → slack-RTT7D47V.js.map} +0 -0
  82. /package/{teams-B2AUD3SX.js.map → teams-WS6I3ZMV.js.map} +0 -0
  83. /package/{telegram-BCPH3ECW.js.map → telegram-Q2GNTJFX.js.map} +0 -0
  84. /package/{variable-S4UWL5CG.js.map → variable-4WVPWYYU.js.map} +0 -0
  85. /package/{video-ONM6HE6G.js.map → video-B3UGIF3E.js.map} +0 -0
  86. /package/{web-Z4CC5ZTB.js.map → web-3RIJORTL.js.map} +0 -0
  87. /package/{web-search-FCLPKEJ4.js.map → web-search-CVZYQ7HH.js.map} +0 -0
  88. /package/{whoami-GODNJUJB.js.map → whoami-U2VXOZNF.js.map} +0 -0
  89. /package/{workflow-CRLNDUSK.js.map → workflow-OTBS5W7K.js.map} +0 -0
@@ -9,12 +9,12 @@ import {
9
9
  deleteZeroVariable,
10
10
  listZeroVariables,
11
11
  setZeroVariable
12
- } from "./chunk-36XYOMWZ.js";
12
+ } from "./chunk-FYZS5VEA.js";
13
13
  import "./chunk-LTDQISD7.js";
14
14
  import {
15
15
  source_default,
16
16
  withErrorHandler
17
- } from "./chunk-CSZ7QXX6.js";
17
+ } from "./chunk-HYRTW4LY.js";
18
18
  import "./chunk-LRHXR7JT.js";
19
19
  import {
20
20
  Command
@@ -115,4 +115,4 @@ var zeroVariableCommand = new Command().name("variable").description("Read or wr
115
115
  export {
116
116
  zeroVariableCommand
117
117
  };
118
- //# sourceMappingURL=variable-S4UWL5CG.js.map
118
+ //# sourceMappingURL=variable-4WVPWYYU.js.map
@@ -6,7 +6,7 @@ import {
6
6
  downloadWebFile,
7
7
  transcribeAudio,
8
8
  withErrorHandler
9
- } from "./chunk-CSZ7QXX6.js";
9
+ } from "./chunk-HYRTW4LY.js";
10
10
  import "./chunk-LRHXR7JT.js";
11
11
  import {
12
12
  Command
@@ -245,4 +245,4 @@ Tip (video understanding):
245
245
  export {
246
246
  zeroVideoCommand
247
247
  };
248
- //# sourceMappingURL=video-ONM6HE6G.js.map
248
+ //# sourceMappingURL=video-B3UGIF3E.js.map
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __createRequire } from "node:module";
3
+ const require = __createRequire(import.meta.url);
4
+ import {
5
+ callZeroWeather
6
+ } from "./chunk-FYZS5VEA.js";
7
+ import "./chunk-LTDQISD7.js";
8
+ import {
9
+ source_default,
10
+ withErrorHandler
11
+ } from "./chunk-HYRTW4LY.js";
12
+ import "./chunk-LRHXR7JT.js";
13
+ import {
14
+ Command,
15
+ InvalidArgumentError
16
+ } from "./chunk-B3W2RUBP.js";
17
+ import {
18
+ init_esm_shims
19
+ } from "./chunk-DIRAZ3YX.js";
20
+
21
+ // src/commands/zero/weather/index.ts
22
+ init_esm_shims();
23
+ var WEATHER_UNITS = ["metric", "imperial"];
24
+ function parseLatitude(value) {
25
+ const latitude = Number(value);
26
+ if (!Number.isFinite(latitude) || latitude < -90 || latitude > 90) {
27
+ throw new InvalidArgumentError("latitude must be a number from -90 to 90");
28
+ }
29
+ return latitude;
30
+ }
31
+ function parseLongitude(value) {
32
+ const longitude = Number(value);
33
+ if (!Number.isFinite(longitude) || longitude < -180 || longitude > 180) {
34
+ throw new InvalidArgumentError(
35
+ "longitude must be a number from -180 to 180"
36
+ );
37
+ }
38
+ return longitude;
39
+ }
40
+ function parseIntegerInRange(value, min, max) {
41
+ const parsed = Number(value);
42
+ if (!Number.isInteger(parsed) || parsed < min || parsed > max) {
43
+ throw new InvalidArgumentError(
44
+ `value must be an integer from ${min} to ${max}`
45
+ );
46
+ }
47
+ return parsed;
48
+ }
49
+ function parseWeatherUnits(value) {
50
+ if (WEATHER_UNITS.includes(value)) {
51
+ return value;
52
+ }
53
+ throw new InvalidArgumentError(
54
+ `units must be one of: ${WEATHER_UNITS.join(", ")}`
55
+ );
56
+ }
57
+ function coordinatePayload(options) {
58
+ return {
59
+ lat: options.lat,
60
+ lng: options.lng,
61
+ languageCode: options.language
62
+ };
63
+ }
64
+ function locationPayload(options) {
65
+ return {
66
+ ...coordinatePayload(options),
67
+ units: options.units
68
+ };
69
+ }
70
+ function pagedPayload(options) {
71
+ return {
72
+ ...locationPayload(options),
73
+ pageSize: options.pageSize,
74
+ pageToken: options.pageToken
75
+ };
76
+ }
77
+ function renderWeatherMetadata(response) {
78
+ if (response.provider) {
79
+ console.log(source_default.dim(` Provider: ${response.provider}`));
80
+ }
81
+ if (response.attribution) {
82
+ console.log(source_default.dim(` ${response.attribution}`));
83
+ }
84
+ if (response.billingCategory) {
85
+ console.log(source_default.dim(` Billing category: ${response.billingCategory}`));
86
+ }
87
+ if (response.billingQuantity !== void 0) {
88
+ console.log(source_default.dim(` Billing quantity: ${response.billingQuantity}`));
89
+ }
90
+ if (response.creditsCharged !== void 0) {
91
+ console.log(source_default.dim(` Credits charged: ${response.creditsCharged}`));
92
+ }
93
+ }
94
+ function renderWeatherResponse(label, response) {
95
+ console.log(source_default.green(`\u2713 ${label}`));
96
+ renderWeatherMetadata(response);
97
+ console.log(JSON.stringify(response.result ?? response, null, 2));
98
+ }
99
+ async function runWeatherRequest(label, endpoint, payload, options) {
100
+ const response = await callZeroWeather(endpoint, payload);
101
+ if (options.json) {
102
+ console.log(JSON.stringify(response));
103
+ return;
104
+ }
105
+ renderWeatherResponse(label, response);
106
+ }
107
+ function addCoordinateOptions(command) {
108
+ return command.requiredOption("--lat <number>", "Latitude", parseLatitude).requiredOption("--lng <number>", "Longitude", parseLongitude).option("--language <code>", "IETF BCP-47 response language code").option("--json", "Print the raw response as JSON");
109
+ }
110
+ function addLocationOptions(command) {
111
+ return addCoordinateOptions(command).option(
112
+ "--units <system>",
113
+ "Units system: metric or imperial",
114
+ parseWeatherUnits,
115
+ "metric"
116
+ );
117
+ }
118
+ function addHourlyPaginationOptions(command) {
119
+ return command.option("--page-size <n>", "Records per page, from 1 to 24", (value) => {
120
+ return parseIntegerInRange(value, 1, 24);
121
+ }).option("--page-token <token>", "Token for the next page");
122
+ }
123
+ var currentCommand = addLocationOptions(
124
+ new Command().name("current").description("Get current weather conditions")
125
+ ).action(
126
+ withErrorHandler(async (options) => {
127
+ await runWeatherRequest(
128
+ "Current weather retrieved",
129
+ "current",
130
+ locationPayload(options),
131
+ options
132
+ );
133
+ })
134
+ );
135
+ var hourlyForecastCommand = addHourlyPaginationOptions(
136
+ addLocationOptions(
137
+ new Command().name("hourly").description("Get up to 240 hours of hourly forecasts")
138
+ )
139
+ ).option("--hours <n>", "Total forecast hours, from 1 to 240", (value) => {
140
+ return parseIntegerInRange(value, 1, 240);
141
+ }).action(
142
+ withErrorHandler(async (options) => {
143
+ await runWeatherRequest(
144
+ "Hourly forecast retrieved",
145
+ "forecast/hourly",
146
+ { ...pagedPayload(options), hours: options.hours },
147
+ options
148
+ );
149
+ })
150
+ );
151
+ var dailyForecastCommand = addLocationOptions(
152
+ new Command().name("daily").description("Get up to 10 days of daily forecasts")
153
+ ).option("--days <n>", "Total forecast days, from 1 to 10", (value) => {
154
+ return parseIntegerInRange(value, 1, 10);
155
+ }).option("--page-size <n>", "Records per page, from 1 to 10", (value) => {
156
+ return parseIntegerInRange(value, 1, 10);
157
+ }).option("--page-token <token>", "Token for the next page").action(
158
+ withErrorHandler(async (options) => {
159
+ await runWeatherRequest(
160
+ "Daily forecast retrieved",
161
+ "forecast/daily",
162
+ { ...pagedPayload(options), days: options.days },
163
+ options
164
+ );
165
+ })
166
+ );
167
+ var hourlyHistoryCommand = addHourlyPaginationOptions(
168
+ addLocationOptions(
169
+ new Command().name("hourly").description("Get up to 24 hours of recent hourly history")
170
+ )
171
+ ).option("--hours <n>", "Total history hours, from 1 to 24", (value) => {
172
+ return parseIntegerInRange(value, 1, 24);
173
+ }).action(
174
+ withErrorHandler(async (options) => {
175
+ await runWeatherRequest(
176
+ "Hourly weather history retrieved",
177
+ "history/hourly",
178
+ { ...pagedPayload(options), hours: options.hours },
179
+ options
180
+ );
181
+ })
182
+ );
183
+ var airQualityCurrentCommand = addCoordinateOptions(
184
+ new Command().name("current").description("Get current air quality")
185
+ ).action(
186
+ withErrorHandler(async (options) => {
187
+ await runWeatherRequest(
188
+ "Current air quality retrieved",
189
+ "air-quality/current",
190
+ coordinatePayload(options),
191
+ options
192
+ );
193
+ })
194
+ );
195
+ var forecastCommand = new Command().name("forecast").description("Get hourly or daily weather forecasts").addCommand(hourlyForecastCommand).addCommand(dailyForecastCommand);
196
+ var historyCommand = new Command().name("history").description("Get recent weather history").addCommand(hourlyHistoryCommand);
197
+ var airQualityCommand = new Command().name("air-quality").description("Get current air quality").addCommand(airQualityCurrentCommand);
198
+ var zeroWeatherCommand = new Command().name("weather").description("Use managed Zero weather and air quality services").addCommand(currentCommand).addCommand(forecastCommand).addCommand(historyCommand).addCommand(airQualityCommand).addHelpText(
199
+ "after",
200
+ `
201
+ Examples:
202
+ Current conditions: zero weather current --lat 39.9042 --lng 116.4074 --language zh-CN --json
203
+ Hourly forecast: zero weather forecast hourly --lat 39.9042 --lng 116.4074 --hours 48 --page-size 24 --json
204
+ Daily forecast: zero weather forecast daily --lat 39.9042 --lng 116.4074 --days 10 --page-size 10 --json
205
+ Hourly history: zero weather history hourly --lat 39.9042 --lng 116.4074 --hours 24 --json
206
+ Current air quality: zero weather air-quality current --lat 39.9042 --lng 116.4074 --language zh-CN --json
207
+
208
+ Notes:
209
+ - Authenticates via ZERO_TOKEN (requires weather:read capability) or a CLI token
210
+ - Each command makes one Google Weather or Air Quality API request; use page tokens for additional weather pages
211
+ - Calls are recorded for usage analytics and currently charge 0 credits`
212
+ );
213
+ export {
214
+ zeroWeatherCommand
215
+ };
216
+ //# sourceMappingURL=weather-JLYOYLJR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/zero/weather/index.ts"],"sourcesContent":["import { Command, InvalidArgumentError } from \"commander\";\nimport chalk from \"chalk\";\n\nimport { callZeroWeather, type ZeroWeatherResponse } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nconst WEATHER_UNITS = [\"metric\", \"imperial\"] as const;\n\ntype WeatherUnits = (typeof WEATHER_UNITS)[number];\n\ninterface JsonOption {\n readonly json?: boolean;\n}\n\ninterface CoordinateOptions extends JsonOption {\n readonly lat: number;\n readonly lng: number;\n readonly language?: string;\n}\n\ninterface LocationOptions extends CoordinateOptions {\n readonly units: WeatherUnits;\n}\n\ninterface PagedOptions extends LocationOptions {\n readonly pageSize?: number;\n readonly pageToken?: string;\n}\n\ninterface HourlyForecastOptions extends PagedOptions {\n readonly hours?: number;\n}\n\ninterface DailyForecastOptions extends PagedOptions {\n readonly days?: number;\n}\n\ninterface HourlyHistoryOptions extends PagedOptions {\n readonly hours?: number;\n}\n\nfunction parseLatitude(value: string): number {\n const latitude = Number(value);\n if (!Number.isFinite(latitude) || latitude < -90 || latitude > 90) {\n throw new InvalidArgumentError(\"latitude must be a number from -90 to 90\");\n }\n return latitude;\n}\n\nfunction parseLongitude(value: string): number {\n const longitude = Number(value);\n if (!Number.isFinite(longitude) || longitude < -180 || longitude > 180) {\n throw new InvalidArgumentError(\n \"longitude must be a number from -180 to 180\",\n );\n }\n return longitude;\n}\n\nfunction parseIntegerInRange(value: string, min: number, max: number): number {\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < min || parsed > max) {\n throw new InvalidArgumentError(\n `value must be an integer from ${min} to ${max}`,\n );\n }\n return parsed;\n}\n\nfunction parseWeatherUnits(value: string): WeatherUnits {\n if (WEATHER_UNITS.includes(value as WeatherUnits)) {\n return value as WeatherUnits;\n }\n throw new InvalidArgumentError(\n `units must be one of: ${WEATHER_UNITS.join(\", \")}`,\n );\n}\n\nfunction coordinatePayload(\n options: CoordinateOptions,\n): Record<string, unknown> {\n return {\n lat: options.lat,\n lng: options.lng,\n languageCode: options.language,\n };\n}\n\nfunction locationPayload(options: LocationOptions): Record<string, unknown> {\n return {\n ...coordinatePayload(options),\n units: options.units,\n };\n}\n\nfunction pagedPayload(options: PagedOptions): Record<string, unknown> {\n return {\n ...locationPayload(options),\n pageSize: options.pageSize,\n pageToken: options.pageToken,\n };\n}\n\nfunction renderWeatherMetadata(response: ZeroWeatherResponse): void {\n if (response.provider) {\n console.log(chalk.dim(` Provider: ${response.provider}`));\n }\n if (response.attribution) {\n console.log(chalk.dim(` ${response.attribution}`));\n }\n if (response.billingCategory) {\n console.log(chalk.dim(` Billing category: ${response.billingCategory}`));\n }\n if (response.billingQuantity !== undefined) {\n console.log(chalk.dim(` Billing quantity: ${response.billingQuantity}`));\n }\n if (response.creditsCharged !== undefined) {\n console.log(chalk.dim(` Credits charged: ${response.creditsCharged}`));\n }\n}\n\nfunction renderWeatherResponse(\n label: string,\n response: ZeroWeatherResponse,\n): void {\n console.log(chalk.green(`✓ ${label}`));\n renderWeatherMetadata(response);\n console.log(JSON.stringify(response.result ?? response, null, 2));\n}\n\nasync function runWeatherRequest(\n label: string,\n endpoint:\n | \"current\"\n | \"forecast/hourly\"\n | \"forecast/daily\"\n | \"history/hourly\"\n | \"air-quality/current\",\n payload: Record<string, unknown>,\n options: JsonOption,\n): Promise<void> {\n const response = await callZeroWeather(endpoint, payload);\n if (options.json) {\n console.log(JSON.stringify(response));\n return;\n }\n renderWeatherResponse(label, response);\n}\n\nfunction addCoordinateOptions(command: Command): Command {\n return command\n .requiredOption(\"--lat <number>\", \"Latitude\", parseLatitude)\n .requiredOption(\"--lng <number>\", \"Longitude\", parseLongitude)\n .option(\"--language <code>\", \"IETF BCP-47 response language code\")\n .option(\"--json\", \"Print the raw response as JSON\");\n}\n\nfunction addLocationOptions(command: Command): Command {\n return addCoordinateOptions(command).option(\n \"--units <system>\",\n \"Units system: metric or imperial\",\n parseWeatherUnits,\n \"metric\",\n );\n}\n\nfunction addHourlyPaginationOptions(command: Command): Command {\n return command\n .option(\"--page-size <n>\", \"Records per page, from 1 to 24\", (value) => {\n return parseIntegerInRange(value, 1, 24);\n })\n .option(\"--page-token <token>\", \"Token for the next page\");\n}\n\nconst currentCommand = addLocationOptions(\n new Command().name(\"current\").description(\"Get current weather conditions\"),\n).action(\n withErrorHandler(async (options: LocationOptions) => {\n await runWeatherRequest(\n \"Current weather retrieved\",\n \"current\",\n locationPayload(options),\n options,\n );\n }),\n);\n\nconst hourlyForecastCommand = addHourlyPaginationOptions(\n addLocationOptions(\n new Command()\n .name(\"hourly\")\n .description(\"Get up to 240 hours of hourly forecasts\"),\n ),\n)\n .option(\"--hours <n>\", \"Total forecast hours, from 1 to 240\", (value) => {\n return parseIntegerInRange(value, 1, 240);\n })\n .action(\n withErrorHandler(async (options: HourlyForecastOptions) => {\n await runWeatherRequest(\n \"Hourly forecast retrieved\",\n \"forecast/hourly\",\n { ...pagedPayload(options), hours: options.hours },\n options,\n );\n }),\n );\n\nconst dailyForecastCommand = addLocationOptions(\n new Command()\n .name(\"daily\")\n .description(\"Get up to 10 days of daily forecasts\"),\n)\n .option(\"--days <n>\", \"Total forecast days, from 1 to 10\", (value) => {\n return parseIntegerInRange(value, 1, 10);\n })\n .option(\"--page-size <n>\", \"Records per page, from 1 to 10\", (value) => {\n return parseIntegerInRange(value, 1, 10);\n })\n .option(\"--page-token <token>\", \"Token for the next page\")\n .action(\n withErrorHandler(async (options: DailyForecastOptions) => {\n await runWeatherRequest(\n \"Daily forecast retrieved\",\n \"forecast/daily\",\n { ...pagedPayload(options), days: options.days },\n options,\n );\n }),\n );\n\nconst hourlyHistoryCommand = addHourlyPaginationOptions(\n addLocationOptions(\n new Command()\n .name(\"hourly\")\n .description(\"Get up to 24 hours of recent hourly history\"),\n ),\n)\n .option(\"--hours <n>\", \"Total history hours, from 1 to 24\", (value) => {\n return parseIntegerInRange(value, 1, 24);\n })\n .action(\n withErrorHandler(async (options: HourlyHistoryOptions) => {\n await runWeatherRequest(\n \"Hourly weather history retrieved\",\n \"history/hourly\",\n { ...pagedPayload(options), hours: options.hours },\n options,\n );\n }),\n );\n\nconst airQualityCurrentCommand = addCoordinateOptions(\n new Command().name(\"current\").description(\"Get current air quality\"),\n).action(\n withErrorHandler(async (options: CoordinateOptions) => {\n await runWeatherRequest(\n \"Current air quality retrieved\",\n \"air-quality/current\",\n coordinatePayload(options),\n options,\n );\n }),\n);\n\nconst forecastCommand = new Command()\n .name(\"forecast\")\n .description(\"Get hourly or daily weather forecasts\")\n .addCommand(hourlyForecastCommand)\n .addCommand(dailyForecastCommand);\n\nconst historyCommand = new Command()\n .name(\"history\")\n .description(\"Get recent weather history\")\n .addCommand(hourlyHistoryCommand);\n\nconst airQualityCommand = new Command()\n .name(\"air-quality\")\n .description(\"Get current air quality\")\n .addCommand(airQualityCurrentCommand);\n\nexport const zeroWeatherCommand = new Command()\n .name(\"weather\")\n .description(\"Use managed Zero weather and air quality services\")\n .addCommand(currentCommand)\n .addCommand(forecastCommand)\n .addCommand(historyCommand)\n .addCommand(airQualityCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n Current conditions: zero weather current --lat 39.9042 --lng 116.4074 --language zh-CN --json\n Hourly forecast: zero weather forecast hourly --lat 39.9042 --lng 116.4074 --hours 48 --page-size 24 --json\n Daily forecast: zero weather forecast daily --lat 39.9042 --lng 116.4074 --days 10 --page-size 10 --json\n Hourly history: zero weather history hourly --lat 39.9042 --lng 116.4074 --hours 24 --json\n Current air quality: zero weather air-quality current --lat 39.9042 --lng 116.4074 --language zh-CN --json\n\nNotes:\n - Authenticates via ZERO_TOKEN (requires weather:read capability) or a CLI token\n - Each command makes one Google Weather or Air Quality API request; use page tokens for additional weather pages\n - Calls are recorded for usage analytics and currently charge 0 credits`,\n );\n"],"mappings":"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","names":[]}
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
- import "./chunk-36XYOMWZ.js";
4
+ import "./chunk-FYZS5VEA.js";
5
5
  import "./chunk-LTDQISD7.js";
6
6
  import {
7
7
  downloadWebFile,
8
8
  uploadWebFile,
9
9
  withErrorHandler
10
- } from "./chunk-CSZ7QXX6.js";
10
+ } from "./chunk-HYRTW4LY.js";
11
11
  import "./chunk-LRHXR7JT.js";
12
12
  import {
13
13
  Command
@@ -105,4 +105,4 @@ Examples:
105
105
  export {
106
106
  zeroWebCommand
107
107
  };
108
- //# sourceMappingURL=web-Z4CC5ZTB.js.map
108
+ //# sourceMappingURL=web-3RIJORTL.js.map
@@ -9,12 +9,12 @@ import {
9
9
  zeroWebSearchDomainSchema,
10
10
  zeroWebSearchRecencySchema,
11
11
  zeroWebSearchRequestSchema
12
- } from "./chunk-36XYOMWZ.js";
12
+ } from "./chunk-FYZS5VEA.js";
13
13
  import "./chunk-LTDQISD7.js";
14
14
  import {
15
15
  source_default,
16
16
  withErrorHandler
17
- } from "./chunk-CSZ7QXX6.js";
17
+ } from "./chunk-HYRTW4LY.js";
18
18
  import "./chunk-LRHXR7JT.js";
19
19
  import {
20
20
  Command,
@@ -147,4 +147,4 @@ Notes:
147
147
  export {
148
148
  zeroWebSearchCommand
149
149
  };
150
- //# sourceMappingURL=web-search-FCLPKEJ4.js.map
150
+ //# sourceMappingURL=web-search-CVZYQ7HH.js.map
@@ -4,15 +4,15 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  loadConnectorPermissionInfos,
6
6
  policyIcon
7
- } from "./chunk-UXZHW5TS.js";
7
+ } from "./chunk-VTVYDURY.js";
8
8
  import {
9
9
  permissionGrantsToFirewallPolicies
10
- } from "./chunk-MPMZUEOC.js";
10
+ } from "./chunk-KBKTQLGX.js";
11
11
  import {
12
12
  getZeroAgentUserConnectors,
13
13
  listZeroConnectors,
14
14
  listZeroUserPermissionGrants
15
- } from "./chunk-36XYOMWZ.js";
15
+ } from "./chunk-FYZS5VEA.js";
16
16
  import "./chunk-LTDQISD7.js";
17
17
  import {
18
18
  getActiveOrg,
@@ -20,7 +20,7 @@ import {
20
20
  getToken,
21
21
  source_default,
22
22
  withErrorHandler
23
- } from "./chunk-CSZ7QXX6.js";
23
+ } from "./chunk-HYRTW4LY.js";
24
24
  import {
25
25
  decodeZeroTokenPayload
26
26
  } from "./chunk-LRHXR7JT.js";
@@ -195,4 +195,4 @@ Notes:
195
195
  export {
196
196
  zeroWhoamiCommand
197
197
  };
198
- //# sourceMappingURL=whoami-GODNJUJB.js.map
198
+ //# sourceMappingURL=whoami-U2VXOZNF.js.map
@@ -19,12 +19,12 @@ import {
19
19
  listWorkflows,
20
20
  updateWorkflow,
21
21
  updateWorkflowAutomation
22
- } from "./chunk-36XYOMWZ.js";
22
+ } from "./chunk-FYZS5VEA.js";
23
23
  import "./chunk-LTDQISD7.js";
24
24
  import {
25
25
  source_default,
26
26
  withErrorHandler
27
- } from "./chunk-CSZ7QXX6.js";
27
+ } from "./chunk-HYRTW4LY.js";
28
28
  import "./chunk-LRHXR7JT.js";
29
29
  import {
30
30
  Command
@@ -1792,4 +1792,4 @@ Examples:
1792
1792
  export {
1793
1793
  zeroWorkflowCommand
1794
1794
  };
1795
- //# sourceMappingURL=workflow-CRLNDUSK.js.map
1795
+ //# sourceMappingURL=workflow-OTBS5W7K.js.map