@ganakailabs/cloudeval-cli 0.23.0 → 0.24.1

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.
package/README.md CHANGED
@@ -50,6 +50,8 @@ The shell installer can detect Codex, Claude Desktop, Cursor, and VS Code,
50
50
  skip clients where CloudEval MCP is already configured, and offer setup only
51
51
  for missing clients that can be configured automatically. Manual-only clients
52
52
  are summarized with a follow-up command instead of forcing another prompt.
53
+ It also asks whether to share limited CLI telemetry, defaulting to yes; decline
54
+ or set `CLOUDEVAL_TELEMETRY=0` to write `telemetry.enabled=false`.
53
55
  When a CLI update exposes new MCP capabilities, restart or reload your MCP
54
56
  client when you are ready; CloudEval never restarts those apps automatically.
55
57
 
@@ -74,6 +76,27 @@ cloudeval mcp serve --toolset readonly
74
76
  cloudeval capabilities --format json
75
77
  ```
76
78
 
79
+ ## Telemetry
80
+
81
+ Telemetry is default-on and uses curated Azure Application Insights custom
82
+ events only. CloudEval records command family, success, duration, safe option
83
+ enums, CLI/runtime versions, OS major version, architecture, install source,
84
+ update/install outcomes, MCP tool names, and TUI metadata. After login, events
85
+ may include signed-in email and first/last/full name.
86
+
87
+ Telemetry does not include prompts, command output, tokens, local paths, project
88
+ or resource IDs, account/session/tenant IDs, stack traces, raw error messages,
89
+ or cloud resource names.
90
+
91
+ ```bash
92
+ cloudeval config set telemetry.enabled false
93
+ cloudeval config get telemetry.enabled --format json
94
+ cloudeval config set telemetry.enabled true
95
+ cloudeval config unset telemetry.enabled
96
+ ```
97
+
98
+ For one run, use `CLOUDEVAL_TELEMETRY=0` or `CLOUDEVAL_TELEMETRY=1`.
99
+
77
100
  ## Uninstall
78
101
 
79
102
  To remove local installer-owned artifacts while keeping CloudEval config,
@@ -14,19 +14,104 @@ This notice is not a substitute for legal review before public or enterprise dis
14
14
  | --- | ---: |
15
15
  | (MIT OR CC0-1.0) | 2 |
16
16
  | 0BSD | 1 |
17
- | BSD-3-Clause | 1 |
18
- | ISC | 6 |
19
- | MIT | 90 |
17
+ | Apache-2.0 | 50 |
18
+ | BSD-3-Clause | 14 |
19
+ | ISC | 12 |
20
+ | MIT | 172 |
20
21
 
21
22
  ## Production Packages
22
23
 
23
24
  | Package | Version | License | Author | Source |
24
25
  | --- | --- | --- | --- | --- |
25
26
  | @alcalzone/ansi-tokenize | 0.1.3 | MIT | AlCalzone | NOASSERTION |
27
+ | @azure-rest/core-client | 2.6.0 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-client-rest/ |
28
+ | @azure/abort-controller | 2.1.2 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/abort-controller/README.md |
29
+ | @azure/core-auth | 1.10.1 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-auth/README.md |
30
+ | @azure/core-client | 1.10.1 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-client/ |
31
+ | @azure/core-rest-pipeline | 1.23.0 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-rest-pipeline/ |
32
+ | @azure/core-tracing | 1.3.1 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-tracing/README.md |
33
+ | @azure/core-util | 1.13.1 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-util/ |
34
+ | @azure/functions | 3.5.1 | MIT | Microsoft | https://github.com/Azure/azure-functions-nodejs-library |
35
+ | @azure/identity | 4.13.1 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity/README.md |
36
+ | @azure/logger | 1.3.0 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger/README.md |
37
+ | @azure/monitor-opentelemetry-exporter | 1.0.0-beta.41 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/monitor/monitor-opentelemetry-exporter/README.md |
38
+ | @azure/monitor-opentelemetry | 1.18.0 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/monitor/monitor-opentelemetry/README.md |
39
+ | @azure/msal-browser | 5.11.0 | MIT | Microsoft | https://github.com/AzureAD/microsoft-authentication-library-for-js#readme |
40
+ | @azure/msal-common | 16.6.2 | MIT | Microsoft | https://github.com/AzureAD/microsoft-authentication-library-for-js#readme |
41
+ | @azure/msal-node | 5.2.2 | MIT | Microsoft | https://github.com/AzureAD/microsoft-authentication-library-for-js#readme |
42
+ | @azure/opentelemetry-instrumentation-azure-sdk | 1.0.0 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/README.md |
26
43
  | @colors/colors | 1.5.0 | MIT | DABH | https://github.com/DABH/colors.js |
44
+ | @colors/colors | 1.6.0 | MIT | DABH | https://github.com/DABH/colors.js |
45
+ | @grpc/grpc-js | 1.14.4 | Apache-2.0 | Google Inc. | https://grpc.io/ |
46
+ | @grpc/proto-loader | 0.8.1 | Apache-2.0 | Google Inc. | https://grpc.io/ |
47
+ | @js-sdsl/ordered-map | 4.4.2 | MIT | ZLY201 | https://js-sdsl.org |
48
+ | @microsoft/applicationinsights-web-snippet | 1.2.3 | MIT | NOASSERTION | https://github.com/microsoft/ApplicationInsights-JS/tree/main#readme |
49
+ | @opentelemetry/api-logs | 0.211.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs |
50
+ | @opentelemetry/api-logs | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs |
51
+ | @opentelemetry/api | 1.9.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/api |
52
+ | @opentelemetry/configuration | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/configuration |
53
+ | @opentelemetry/context-async-hooks | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-async-hooks |
54
+ | @opentelemetry/core | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core |
55
+ | @opentelemetry/exporter-logs-otlp-grpc | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc |
56
+ | @opentelemetry/exporter-logs-otlp-http | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-http |
57
+ | @opentelemetry/exporter-logs-otlp-proto | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto |
58
+ | @opentelemetry/exporter-metrics-otlp-grpc | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc |
59
+ | @opentelemetry/exporter-metrics-otlp-http | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http |
60
+ | @opentelemetry/exporter-metrics-otlp-proto | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto |
61
+ | @opentelemetry/exporter-prometheus | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus |
62
+ | @opentelemetry/exporter-trace-otlp-grpc | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc |
63
+ | @opentelemetry/exporter-trace-otlp-http | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http |
64
+ | @opentelemetry/exporter-trace-otlp-proto | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto |
65
+ | @opentelemetry/exporter-zipkin | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin |
66
+ | @opentelemetry/instrumentation-bunyan | 0.62.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-bunyan#readme |
67
+ | @opentelemetry/instrumentation-http | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http |
68
+ | @opentelemetry/instrumentation-mongodb | 0.70.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mongodb#readme |
69
+ | @opentelemetry/instrumentation-mysql | 0.63.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mysql#readme |
70
+ | @opentelemetry/instrumentation-pg | 0.69.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-pg#readme |
71
+ | @opentelemetry/instrumentation-redis | 0.65.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-redis#readme |
72
+ | @opentelemetry/instrumentation-winston | 0.61.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-winston#readme |
73
+ | @opentelemetry/instrumentation | 0.211.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation |
74
+ | @opentelemetry/instrumentation | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation |
75
+ | @opentelemetry/otlp-exporter-base | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-exporter-base |
76
+ | @opentelemetry/otlp-grpc-exporter-base | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base |
77
+ | @opentelemetry/otlp-transformer | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer |
78
+ | @opentelemetry/propagator-b3 | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-b3 |
79
+ | @opentelemetry/propagator-jaeger | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger |
80
+ | @opentelemetry/redis-common | 0.38.3 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/redis-common#readme |
81
+ | @opentelemetry/resource-detector-azure | 0.25.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/resource-detector-azure#readme |
82
+ | @opentelemetry/resources | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources |
83
+ | @opentelemetry/sdk-logs | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/sdk-logs |
84
+ | @opentelemetry/sdk-metrics | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics |
85
+ | @opentelemetry/sdk-node | 0.217.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node |
86
+ | @opentelemetry/sdk-trace-base | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base |
87
+ | @opentelemetry/sdk-trace-node | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node |
88
+ | @opentelemetry/sdk-trace-web | 2.7.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web |
89
+ | @opentelemetry/semantic-conventions | 1.41.1 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions |
90
+ | @opentelemetry/sql-common | 0.41.2 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/sql-common#readme |
91
+ | @opentelemetry/winston-transport | 0.27.0 | Apache-2.0 | OpenTelemetry Authors | https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/winston-transport#readme |
92
+ | @protobufjs/aspromise | 1.1.2 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
93
+ | @protobufjs/base64 | 1.1.2 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
94
+ | @protobufjs/codegen | 2.0.5 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
95
+ | @protobufjs/eventemitter | 1.1.1 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
96
+ | @protobufjs/fetch | 1.1.1 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
97
+ | @protobufjs/float | 1.0.2 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
98
+ | @protobufjs/inquire | 1.1.2 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
99
+ | @protobufjs/path | 1.1.2 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
100
+ | @protobufjs/pool | 1.1.0 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
101
+ | @protobufjs/utf8 | 1.1.1 | BSD-3-Clause | Daniel Wirtz | https://github.com/dcodeIO/protobuf.js#readme |
27
102
  | @sindresorhus/is | 4.6.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is#readme |
103
+ | @types/bunyan | 1.8.11 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bunyan |
104
+ | @types/mysql | 2.15.27 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mysql |
105
+ | @types/node | 20.19.27 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node |
106
+ | @types/pg-pool | 2.0.7 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/pg-pool |
107
+ | @types/pg | 8.15.6 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/pg |
28
108
  | @types/prop-types | 15.7.15 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/prop-types |
29
109
  | @types/react | 18.3.27 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react |
110
+ | @types/triple-beam | 1.3.5 | MIT | NOASSERTION | https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/triple-beam |
111
+ | @typespec/ts-http-runtime | 0.3.5 | MIT | Microsoft Corporation | https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/ts-http-runtime/ |
112
+ | acorn-import-attributes | 1.9.5 | MIT | Sven Sauleau | https://github.com/xtuc/acorn-import-attributes#readme |
113
+ | acorn | 8.15.0 | MIT | NOASSERTION | https://github.com/acornjs/acorn |
114
+ | agent-base | 7.1.4 | MIT | Nathan Rajlich | https://github.com/TooTallNate/proxy-agents#readme |
30
115
  | ansi-escapes | 6.2.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/ansi-escapes#readme |
31
116
  | ansi-escapes | 7.2.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/ansi-escapes#readme |
32
117
  | ansi-regex | 5.0.1 | MIT | Sindre Sorhus | https://github.com/chalk/ansi-regex#readme |
@@ -34,12 +119,16 @@ This notice is not a substitute for legal review before public or enterprise dis
34
119
  | ansi-styles | 4.3.0 | MIT | Sindre Sorhus | https://github.com/chalk/ansi-styles#readme |
35
120
  | ansi-styles | 6.2.3 | MIT | Sindre Sorhus | https://github.com/chalk/ansi-styles#readme |
36
121
  | any-promise | 1.3.0 | MIT | Kevin Beaty | http://github.com/kevinbeaty/any-promise |
122
+ | applicationinsights | 3.15.0 | MIT | Microsoft Application Insights Team | https://github.com/microsoft/ApplicationInsights-node.js#readme |
37
123
  | asciichart | 1.5.25 | MIT | Igor Kroitor | https://github.com/kroitor/asciichart |
38
124
  | auto-bind | 5.0.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/auto-bind#readme |
125
+ | buffer-equal-constant-time | 1.0.1 | BSD-3-Clause | GoInstant Inc., a salesforce.com company | https://github.com/goinstant/buffer-equal-constant-time#readme |
126
+ | bundle-name | 4.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/bundle-name#readme |
39
127
  | chalk | 4.1.2 | MIT | NOASSERTION | https://github.com/chalk/chalk#readme |
40
128
  | chalk | 5.6.2 | MIT | NOASSERTION | https://github.com/chalk/chalk#readme |
41
129
  | char-regex | 1.0.2 | MIT | Richie Bendall | https://github.com/Richienb/char-regex#readme |
42
130
  | ci-info | 3.9.0 | MIT | Thomas Watson Steen | https://github.com/watson/ci-info |
131
+ | cjs-module-lexer | 2.2.0 | MIT | Guy Bedford | https://github.com/nodejs/cjs-module-lexer#readme |
43
132
  | cli-boxes | 3.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/cli-boxes#readme |
44
133
  | cli-cursor | 4.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/cli-cursor#readme |
45
134
  | cli-highlight | 2.1.11 | ISC | Felix Becker | https://github.com/felixfbecker/cli-highlight#readme |
@@ -47,53 +136,105 @@ This notice is not a substitute for legal review before public or enterprise dis
47
136
  | cli-table3 | 0.6.5 | MIT | James Talmage | https://github.com/cli-table/cli-table3 |
48
137
  | cli-truncate | 3.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/cli-truncate#readme |
49
138
  | cliui | 7.0.4 | ISC | Ben Coe | https://github.com/yargs/cliui#readme |
139
+ | cliui | 8.0.1 | ISC | Ben Coe | https://github.com/yargs/cliui#readme |
50
140
  | code-excerpt | 4.0.0 | MIT | vdemedes | https://github.com/vadimdemedes/code-excerpt#readme |
51
141
  | color-convert | 2.0.1 | MIT | Heather Arthur | https://github.com/Qix-/color-convert#readme |
52
142
  | color-name | 1.1.4 | MIT | DY | https://github.com/colorjs/color-name |
53
143
  | commander | 12.1.0 | MIT | TJ Holowaychuk | https://github.com/tj/commander.js#readme |
54
144
  | convert-to-spaces | 2.0.1 | MIT | Vadim Demedes | https://github.com/vadimdemedes/convert-to-spaces#readme |
55
145
  | csstype | 3.2.3 | MIT | Fredrik Nicol | https://github.com/frenic/csstype#readme |
146
+ | debug | 4.4.3 | MIT | Josh Junon | https://github.com/debug-js/debug#readme |
147
+ | default-browser-id | 5.0.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/default-browser-id#readme |
148
+ | default-browser | 5.5.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/default-browser#readme |
149
+ | define-lazy-prop | 3.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/define-lazy-prop#readme |
150
+ | diagnostic-channel-publishers | 1.0.8 | MIT | NOASSERTION | https://github.com/Microsoft/node-diagnostic-channel |
151
+ | diagnostic-channel | 1.1.1 | MIT | NOASSERTION | https://github.com/Microsoft/node-diagnostic-channel |
56
152
  | eastasianwidth | 0.2.0 | MIT | Masaki Komagata | https://github.com/komagata/eastasianwidth#readme |
153
+ | ecdsa-sig-formatter | 1.0.11 | Apache-2.0 | D2L Corporation | https://github.com/Brightspace/node-ecdsa-sig-formatter#readme |
57
154
  | emoji-regex | 8.0.0 | MIT | Mathias Bynens | https://mths.be/emoji-regex |
58
155
  | emoji-regex | 9.2.2 | MIT | Mathias Bynens | https://mths.be/emoji-regex |
59
156
  | emojilib | 2.4.0 | MIT | Mu-An Chiou | https://github.com/muan/emojilib#readme |
60
157
  | environment | 1.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/environment#readme |
61
158
  | escalade | 3.2.0 | MIT | Luke Edwards | https://github.com/lukeed/escalade#readme |
62
159
  | escape-string-regexp | 2.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/escape-string-regexp#readme |
160
+ | fecha | 4.2.3 | MIT | Taylor Hakes | https://github.com/taylorhakes/fecha |
161
+ | forwarded-parse | 2.1.2 | MIT | Luigi Pinca | https://github.com/lpinca/forwarded-parse |
63
162
  | get-caller-file | 2.0.5 | ISC | Stefan Penner | https://github.com/stefanpenner/get-caller-file#readme |
64
163
  | has-flag | 4.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/has-flag#readme |
65
164
  | highlight.js | 10.7.3 | BSD-3-Clause | Ivan Sagalaev | https://highlightjs.org/ |
165
+ | http-proxy-agent | 7.0.2 | MIT | Nathan Rajlich | https://github.com/TooTallNate/proxy-agents#readme |
166
+ | https-proxy-agent | 7.0.6 | MIT | Nathan Rajlich | https://github.com/TooTallNate/proxy-agents#readme |
167
+ | iconv-lite | 0.6.3 | MIT | Alexander Shtuchkin | https://github.com/ashtuchkin/iconv-lite |
168
+ | import-in-the-middle | 2.0.6 | Apache-2.0 | Bryan English | https://github.com/nodejs/import-in-the-middle#readme |
169
+ | import-in-the-middle | 3.0.1 | Apache-2.0 | Bryan English | https://github.com/nodejs/import-in-the-middle#readme |
66
170
  | indent-string | 5.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/indent-string#readme |
171
+ | inherits | 2.0.4 | ISC | NOASSERTION | https://github.com/isaacs/inherits#readme |
67
172
  | ink-scroll-view | 0.3.6 | MIT | ByteLand Technology | https://www.byteland.app/opensource/ink-scroll-view |
68
173
  | ink-spinner | 4.0.3 | MIT | Vadim Demedes | https://github.com/vadimdemedes/ink-spinner#readme |
69
174
  | ink-syntax-highlight | 2.0.2 | MIT | Vitalii Sashyn | https://github.com/vsashyn/ink-syntax-highlight#readme |
70
175
  | ink-text-input | 5.0.1 | MIT | Vadim Demedes | https://github.com/vadimdemedes/ink-text-input#readme |
71
176
  | ink | 4.4.1 | MIT | Vadim Demedes | https://github.com/vadimdemedes/ink#readme |
72
177
  | is-ci | 3.0.1 | MIT | Thomas Watson Steen | https://github.com/watson/is-ci |
178
+ | is-docker | 3.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is-docker#readme |
73
179
  | is-fullwidth-code-point | 3.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is-fullwidth-code-point#readme |
74
180
  | is-fullwidth-code-point | 4.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is-fullwidth-code-point#readme |
181
+ | is-inside-container | 1.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is-inside-container#readme |
75
182
  | is-lower-case | 2.0.2 | MIT | Blake Embrey | https://github.com/blakeembrey/change-case/tree/master/packages/is-lower-case#readme |
76
183
  | is-upper-case | 2.0.2 | MIT | Blake Embrey | https://github.com/blakeembrey/change-case/tree/master/packages/is-upper-case#readme |
184
+ | is-wsl | 3.1.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/is-wsl#readme |
77
185
  | js-tokens | 4.0.0 | MIT | Simon Lydell | https://github.com/lydell/js-tokens#readme |
186
+ | jsonwebtoken | 9.0.3 | MIT | auth0 | https://github.com/auth0/node-jsonwebtoken#readme |
187
+ | jwa | 2.0.1 | MIT | Brian J. Brennan | https://github.com/brianloveswords/node-jwa#readme |
188
+ | jws | 4.0.1 | MIT | Brian J Brennan | https://github.com/brianloveswords/node-jws#readme |
189
+ | lodash.camelcase | 4.3.0 | MIT | John-David Dalton | https://lodash.com/ |
190
+ | lodash.includes | 4.3.0 | MIT | John-David Dalton | https://lodash.com/ |
191
+ | lodash.isboolean | 3.0.3 | MIT | John-David Dalton | https://lodash.com/ |
192
+ | lodash.isinteger | 4.0.4 | MIT | John-David Dalton | https://lodash.com/ |
193
+ | lodash.isnumber | 3.0.3 | MIT | John-David Dalton | https://lodash.com/ |
194
+ | lodash.isplainobject | 4.0.6 | MIT | John-David Dalton | https://lodash.com/ |
195
+ | lodash.isstring | 4.0.1 | MIT | John-David Dalton | https://lodash.com/ |
196
+ | lodash.once | 4.1.1 | MIT | John-David Dalton | https://lodash.com/ |
78
197
  | lodash | 4.18.1 | MIT | John-David Dalton | https://lodash.com/ |
198
+ | logform | 2.7.0 | MIT | Charlie Robbins | https://github.com/winstonjs/logform#readme |
199
+ | long | 4.0.0 | Apache-2.0 | Daniel Wirtz | https://github.com/dcodeIO/long.js#readme |
200
+ | long | 5.3.2 | Apache-2.0 | Daniel Wirtz | https://github.com/dcodeIO/long.js#readme |
79
201
  | loose-envify | 1.4.0 | MIT | Andres Suarez | https://github.com/zertosh/loose-envify |
80
202
  | marked-terminal | 7.3.0 | MIT | Mikael Brevik | https://github.com/mikaelbr/marked-terminal |
81
203
  | marked | 17.0.1 | MIT | Christopher Jeffrey | https://marked.js.org |
82
204
  | mimic-fn | 2.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/mimic-fn#readme |
205
+ | module-details-from-path | 1.0.4 | MIT | Thomas Watson | https://github.com/watson/module-details-from-path#readme |
206
+ | ms | 2.1.3 | MIT | NOASSERTION | https://github.com/vercel/ms#readme |
83
207
  | mz | 2.7.0 | MIT | Jonathan Ong | https://github.com/normalize/mz#readme |
84
208
  | node-emoji | 2.2.0 | MIT | Daniel Bugl | https://github.com/omnidan/node-emoji#readme |
85
209
  | object-assign | 4.1.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/object-assign#readme |
86
210
  | onetime | 5.1.2 | MIT | Sindre Sorhus | https://github.com/sindresorhus/onetime#readme |
211
+ | open | 10.2.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/open#readme |
87
212
  | parse5-htmlparser2-tree-adapter | 6.0.1 | MIT | Ivan Nikulin | https://github.com/inikulin/parse5 |
88
213
  | parse5 | 5.1.1 | MIT | Ivan Nikulin | https://github.com/inikulin/parse5 |
89
214
  | parse5 | 6.0.1 | MIT | Ivan Nikulin | https://github.com/inikulin/parse5 |
90
215
  | patch-console | 2.0.0 | MIT | vdemedes | https://github.com/vadimdemedes/patch-console#readme |
216
+ | pg-int8 | 1.0.1 | ISC | NOASSERTION | https://github.com/charmander/pg-int8#readme |
217
+ | pg-protocol | 1.14.0 | MIT | NOASSERTION | https://github.com/brianc/node-postgres#readme |
218
+ | pg-types | 2.2.0 | MIT | Brian M. Carlson | https://github.com/brianc/node-pg-types |
219
+ | postgres-array | 2.0.0 | MIT | Ben Drucker | https://github.com/bendrucker/postgres-array#readme |
220
+ | postgres-bytea | 1.0.1 | MIT | Ben Drucker | https://github.com/bendrucker/postgres-bytea#readme |
221
+ | postgres-date | 1.0.7 | MIT | Ben Drucker | https://github.com/bendrucker/postgres-date#readme |
222
+ | postgres-interval | 1.2.0 | MIT | Ben Drucker | https://github.com/bendrucker/postgres-interval#readme |
223
+ | protobufjs | 7.6.1 | BSD-3-Clause | Daniel Wirtz | https://protobufjs.github.io/protobuf.js/ |
224
+ | protobufjs | 8.0.2 | BSD-3-Clause | Daniel Wirtz | https://protobufjs.github.io/protobuf.js/ |
91
225
  | react-devtools-core | 4.28.5 | MIT | NOASSERTION | https://github.com/facebook/react#readme |
92
226
  | react-reconciler | 0.29.2 | MIT | NOASSERTION | https://reactjs.org/ |
93
227
  | react | 18.3.1 | MIT | NOASSERTION | https://reactjs.org/ |
228
+ | readable-stream | 3.6.2 | MIT | NOASSERTION | https://github.com/nodejs/readable-stream#readme |
94
229
  | require-directory | 2.1.1 | MIT | Troy Goode | https://github.com/troygoode/node-require-directory/ |
230
+ | require-in-the-middle | 8.0.1 | MIT | Thomas Watson Steen | https://github.com/nodejs/require-in-the-middle#readme |
95
231
  | restore-cursor | 4.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/restore-cursor#readme |
232
+ | run-applescript | 7.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/run-applescript#readme |
233
+ | safe-buffer | 5.2.1 | MIT | Feross Aboukhadijeh | https://github.com/feross/safe-buffer |
234
+ | safe-stable-stringify | 2.5.0 | MIT | Ruben Bridgewater | https://github.com/BridgeAR/safe-stable-stringify#readme |
235
+ | safer-buffer | 2.1.2 | MIT | Nikita Skovoroda | https://github.com/ChALkeR/safer-buffer#readme |
96
236
  | scheduler | 0.23.2 | MIT | NOASSERTION | https://reactjs.org/ |
237
+ | semver | 7.7.3 | ISC | GitHub Inc. | https://github.com/npm/node-semver#readme |
97
238
  | shell-quote | 1.8.3 | MIT | James Halliday | https://github.com/ljharb/shell-quote |
98
239
  | signal-exit | 3.0.7 | ISC | Ben Coe | https://github.com/tapjs/signal-exit |
99
240
  | skin-tone | 2.0.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/skin-tone#readme |
@@ -101,6 +242,7 @@ This notice is not a substitute for legal review before public or enterprise dis
101
242
  | slice-ansi | 6.0.0 | MIT | NOASSERTION | https://github.com/chalk/slice-ansi#readme |
102
243
  | sql.js | 1.14.1 | MIT | NOASSERTION | http://github.com/sql-js/sql.js |
103
244
  | stack-utils | 2.0.6 | MIT | James Talmage | https://github.com/tapjs/stack-utils#readme |
245
+ | string_decoder | 1.3.0 | MIT | NOASSERTION | https://github.com/nodejs/string_decoder |
104
246
  | string-width | 4.2.3 | MIT | Sindre Sorhus | https://github.com/sindresorhus/string-width#readme |
105
247
  | string-width | 5.1.2 | MIT | Sindre Sorhus | https://github.com/sindresorhus/string-width#readme |
106
248
  | strip-ansi | 6.0.1 | MIT | Sindre Sorhus | https://github.com/chalk/strip-ansi#readme |
@@ -109,16 +251,26 @@ This notice is not a substitute for legal review before public or enterprise dis
109
251
  | supports-hyperlinks | 3.2.0 | MIT | NOASSERTION | https://github.com/chalk/supports-hyperlinks#readme |
110
252
  | thenify-all | 1.6.0 | MIT | Jonathan Ong | https://github.com/thenables/thenify-all#readme |
111
253
  | thenify | 3.3.1 | MIT | Jonathan Ong | https://github.com/thenables/thenify#readme |
254
+ | triple-beam | 1.4.1 | MIT | Charlie Robbins | https://github.com/winstonjs/triple-beam#readme |
112
255
  | tslib | 2.8.1 | 0BSD | Microsoft Corp. | https://www.typescriptlang.org/ |
113
256
  | type-fest | 0.12.0 | (MIT OR CC0-1.0) | Sindre Sorhus | https://github.com/sindresorhus/type-fest#readme |
114
257
  | type-fest | 3.13.1 | (MIT OR CC0-1.0) | Sindre Sorhus | https://github.com/sindresorhus/type-fest#readme |
258
+ | undici-types | 6.21.0 | MIT | NOASSERTION | https://undici.nodejs.org |
115
259
  | unicode-emoji-modifier-base | 1.0.0 | MIT | Mathias Bynens | https://github.com/mathiasbynens/unicode-emoji-modifier-base |
260
+ | util-deprecate | 1.0.2 | MIT | Nathan Rajlich | https://github.com/TooTallNate/util-deprecate |
261
+ | uuid | 8.3.2 | MIT | NOASSERTION | https://github.com/uuidjs/uuid#readme |
116
262
  | widest-line | 4.0.1 | MIT | Sindre Sorhus | https://github.com/sindresorhus/widest-line#readme |
263
+ | winston-transport | 4.9.0 | MIT | Charlie Robbins | https://github.com/winstonjs/winston-transport#readme |
117
264
  | wrap-ansi | 7.0.0 | MIT | Sindre Sorhus | https://github.com/chalk/wrap-ansi#readme |
118
265
  | wrap-ansi | 8.1.0 | MIT | Sindre Sorhus | https://github.com/chalk/wrap-ansi#readme |
119
266
  | ws | 7.5.10 | MIT | Einar Otto Stangvik | https://github.com/websockets/ws |
120
267
  | ws | 8.18.3 | MIT | Einar Otto Stangvik | https://github.com/websockets/ws |
268
+ | wsl-utils | 0.1.0 | MIT | Sindre Sorhus | https://github.com/sindresorhus/wsl-utils#readme |
269
+ | xtend | 4.0.2 | MIT | Raynos | https://github.com/Raynos/xtend |
121
270
  | y18n | 5.0.8 | ISC | Ben Coe | https://github.com/yargs/y18n |
271
+ | yaml | 2.9.0 | ISC | Eemeli Aro | https://eemeli.org/yaml/ |
122
272
  | yargs-parser | 20.2.9 | ISC | Ben Coe | https://github.com/yargs/yargs-parser#readme |
273
+ | yargs-parser | 21.1.1 | ISC | Ben Coe | https://github.com/yargs/yargs-parser#readme |
123
274
  | yargs | 16.2.0 | MIT | NOASSERTION | https://yargs.js.org/ |
275
+ | yargs | 17.7.2 | MIT | NOASSERTION | https://yargs.js.org/ |
124
276
  | yoga-wasm-web | 0.3.3 | MIT | NOASSERTION | https://github.com/shuding/yoga-wasm-web#readme |
@@ -5,10 +5,10 @@ import {
5
5
  listSessions,
6
6
  recordSessionTurn,
7
7
  resolveFrontendBaseUrl
8
- } from "./chunk-RCRNSEQS.js";
8
+ } from "./chunk-QSBGUI25.js";
9
9
  import {
10
10
  Onboarding
11
- } from "./chunk-LVR2XXJK.js";
11
+ } from "./chunk-N4REL72M.js";
12
12
  import {
13
13
  checkUserStatus,
14
14
  completeActiveAssistantMessage,
@@ -35,13 +35,13 @@ import {
35
35
  reduceChunk,
36
36
  runReports,
37
37
  streamChat
38
- } from "./chunk-DLACXFC6.js";
38
+ } from "./chunk-KBHRBGSX.js";
39
39
  import {
40
40
  Banner
41
- } from "./chunk-5BLEZWMN.js";
41
+ } from "./chunk-ALFAROPP.js";
42
42
  import {
43
43
  CLI_VERSION
44
- } from "./chunk-Y6LNVH7K.js";
44
+ } from "./chunk-OUDEVMM7.js";
45
45
  import {
46
46
  raisedButtonStyle,
47
47
  terminalTheme
@@ -5850,7 +5850,7 @@ var getUserIdentityFromToken = async (token) => {
5850
5850
  return { name: "You" };
5851
5851
  }
5852
5852
  try {
5853
- const { extractEmailFromToken } = await import("./dist-AS6Z6RQQ.js");
5853
+ const { extractEmailFromToken } = await import("./dist-CFLR5FML.js");
5854
5854
  const email = extractEmailFromToken(token) ?? void 0;
5855
5855
  return {
5856
5856
  name: getFirstNameForDisplay({ email }),
@@ -7285,7 +7285,7 @@ var App = ({
7285
7285
  setIsLoggingIn(true);
7286
7286
  setLoaderStep(1);
7287
7287
  try {
7288
- const { login } = await import("./dist-AS6Z6RQQ.js");
7288
+ const { login } = await import("./dist-CFLR5FML.js");
7289
7289
  const newToken = await login(baseUrl, {
7290
7290
  headless: Boolean(process.env.SSH_TTY || process.env.CI)
7291
7291
  });
@@ -3,8 +3,8 @@ import {
3
3
  bannerMetaColor,
4
4
  bannerSegmentColor,
5
5
  splitBannerLineSegments
6
- } from "./chunk-5BLEZWMN.js";
7
- import "./chunk-Y6LNVH7K.js";
6
+ } from "./chunk-ALFAROPP.js";
7
+ import "./chunk-OUDEVMM7.js";
8
8
  import "./chunk-ZDKRIOMB.js";
9
9
  export {
10
10
  Banner,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Onboarding
3
- } from "./chunk-LVR2XXJK.js";
4
- import "./chunk-DLACXFC6.js";
3
+ } from "./chunk-N4REL72M.js";
4
+ import "./chunk-KBHRBGSX.js";
5
5
  import "./chunk-ZDKRIOMB.js";
6
6
  export {
7
7
  Onboarding
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CLI_VERSION
3
- } from "./chunk-Y6LNVH7K.js";
3
+ } from "./chunk-OUDEVMM7.js";
4
4
  import {
5
5
  shouldUseColor,
6
6
  terminalTheme
@@ -3304,6 +3304,55 @@ var responseJson = async (response, label) => {
3304
3304
  }
3305
3305
  return await response.json();
3306
3306
  };
3307
+ var formatResponseError = (response, label, body) => {
3308
+ const redactedBody = redactSensitiveText(body.trim());
3309
+ return new Error(
3310
+ `${label} failed with status ${response.status} ${response.statusText}${redactedBody ? `: ${redactedBody}` : ""}`
3311
+ );
3312
+ };
3313
+ var buildInlineWorkspaceImportRequest = async (workspaceFiles) => ({
3314
+ source: "upload",
3315
+ files: await Promise.all(
3316
+ workspaceFiles.map(async (file) => ({
3317
+ path: file.path,
3318
+ content: await file.blob.text()
3319
+ }))
3320
+ )
3321
+ });
3322
+ var runIacPipeline = async (input, projectId, connectionId) => {
3323
+ const apiBase = normalizeApiBase(input.baseUrl);
3324
+ const pipelineUrl = `${apiBase}/projects/${encodeURIComponent(projectId)}/iac/pipeline?user_id=${encodeURIComponent(input.userId)}`;
3325
+ const connectionImportBody = {
3326
+ import_request: { source: "connection", connection_id: connectionId },
3327
+ resolve: true,
3328
+ refresh_analysis: true
3329
+ };
3330
+ const response = await fetch(pipelineUrl, {
3331
+ method: "POST",
3332
+ headers: withIdempotencyHeader(getCLIHeaders(input.authToken)),
3333
+ body: JSON.stringify(connectionImportBody)
3334
+ });
3335
+ if (response.ok) {
3336
+ return await response.json();
3337
+ }
3338
+ const failureBody = await response.text().catch(() => "");
3339
+ const workspaceFiles = input.workspaceFiles ?? [];
3340
+ const canRetryAsUpload = response.status === 422 && workspaceFiles.length > 0 && /source/i.test(failureBody) && /upload/i.test(failureBody);
3341
+ if (!canRetryAsUpload) {
3342
+ throw formatResponseError(response, "IaC pipeline", failureBody);
3343
+ }
3344
+ const uploadImportBody = {
3345
+ import_request: await buildInlineWorkspaceImportRequest(workspaceFiles),
3346
+ resolve: true,
3347
+ refresh_analysis: true
3348
+ };
3349
+ const retryResponse = await fetch(pipelineUrl, {
3350
+ method: "POST",
3351
+ headers: withIdempotencyHeader(getCLIHeaders(input.authToken)),
3352
+ body: JSON.stringify(uploadImportBody)
3353
+ });
3354
+ return responseJson(retryResponse, "IaC pipeline");
3355
+ };
3307
3356
  var appendConnectionBody = (payload, input) => {
3308
3357
  if (input.cloudSync) {
3309
3358
  return JSON.stringify({
@@ -3418,21 +3467,11 @@ var createQuickProject = async (input) => {
3418
3467
  "Project creation"
3419
3468
  );
3420
3469
  let iacPipeline;
3421
- if (input.workspaceFiles?.length) {
3422
- iacPipeline = await responseJson(
3423
- await fetch(
3424
- `${apiBase}/projects/${encodeURIComponent(String(project.id))}/iac/pipeline?user_id=${encodeURIComponent(input.userId)}`,
3425
- {
3426
- method: "POST",
3427
- headers: withIdempotencyHeader(getCLIHeaders(input.authToken)),
3428
- body: JSON.stringify({
3429
- import_request: { source: "connection", connection_id: connectionId },
3430
- resolve: true,
3431
- refresh_analysis: true
3432
- })
3433
- }
3434
- ),
3435
- "IaC pipeline"
3470
+ if (!input.cloudSync) {
3471
+ iacPipeline = await runIacPipeline(
3472
+ input,
3473
+ String(project.id),
3474
+ connectionId
3436
3475
  );
3437
3476
  }
3438
3477
  return {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeOnboarding
3
- } from "./chunk-DLACXFC6.js";
3
+ } from "./chunk-KBHRBGSX.js";
4
4
  import {
5
5
  terminalTheme
6
6
  } from "./chunk-ZDKRIOMB.js";
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var CLI_VERSION = "0.23.0";
2
+ var CLI_VERSION = "0.24.1";
3
3
 
4
4
  export {
5
5
  CLI_VERSION
@@ -234,23 +234,48 @@ var normalizeCliMode = (value) => {
234
234
  }
235
235
  throw new Error("mode must be one of: ask, agent");
236
236
  };
237
+ var parseConfigBoolean = (key, value) => {
238
+ const normalized = value.trim().toLowerCase();
239
+ if (["true", "1", "yes", "on"].includes(normalized)) {
240
+ return true;
241
+ }
242
+ if (["false", "0", "no", "off"].includes(normalized)) {
243
+ return false;
244
+ }
245
+ throw new Error(`${key} must be true or false`);
246
+ };
237
247
  var normalizeConfigKey = (key) => {
238
248
  const normalized = key.trim();
249
+ if (normalized === "telemetry.enabled") {
250
+ return normalized;
251
+ }
239
252
  const mapped = keyAliases[normalized];
240
253
  if (!mapped) {
241
254
  throw new Error(
242
- `Unsupported config key '${key}'. Supported keys: baseUrl, frontendUrl, defaultProjectId, model, mode, outputFormat.`
255
+ `Unsupported config key '${key}'. Supported keys: baseUrl, frontendUrl, defaultProjectId, model, mode, outputFormat, telemetry.enabled.`
243
256
  );
244
257
  }
245
258
  return mapped;
246
259
  };
247
260
  var readCliConfigValue = (config, key) => {
248
261
  const normalized = normalizeConfigKey(key);
262
+ if (normalized === "telemetry.enabled") {
263
+ return typeof config.telemetry?.enabled === "boolean" ? String(config.telemetry.enabled) : void 0;
264
+ }
249
265
  const value = config[normalized];
250
266
  return typeof value === "string" ? value : void 0;
251
267
  };
252
268
  var writeCliConfigValue = (config, key, value) => {
253
269
  const normalized = normalizeConfigKey(key);
270
+ if (normalized === "telemetry.enabled") {
271
+ return {
272
+ ...config,
273
+ telemetry: {
274
+ ...config.telemetry || {},
275
+ enabled: parseConfigBoolean("telemetry.enabled", value)
276
+ }
277
+ };
278
+ }
254
279
  const normalizedValue = normalized === "mode" ? normalizeCliMode(value) : value;
255
280
  return {
256
281
  ...config,
@@ -259,6 +284,19 @@ var writeCliConfigValue = (config, key, value) => {
259
284
  };
260
285
  var unsetCliConfigValue = (config, key) => {
261
286
  const normalized = normalizeConfigKey(key);
287
+ if (normalized === "telemetry.enabled") {
288
+ const next2 = { ...config };
289
+ if (next2.telemetry) {
290
+ const telemetry = { ...next2.telemetry };
291
+ delete telemetry.enabled;
292
+ if (Object.keys(telemetry).length > 0) {
293
+ next2.telemetry = telemetry;
294
+ } else {
295
+ delete next2.telemetry;
296
+ }
297
+ }
298
+ return next2;
299
+ }
262
300
  const next = { ...config };
263
301
  delete next[normalized];
264
302
  return next;