@salesforce/b2c-tooling-sdk 2.3.0 → 2.5.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 (203) hide show
  1. package/data/guides/enrichment.json +291 -0
  2. package/data/guides/index.json +426 -37
  3. package/data/schemas/dw.schema.json +590 -0
  4. package/data/tooling/index.json +18 -9
  5. package/dist/esm/cli/base-command.d.ts +20 -1
  6. package/dist/esm/cli/base-command.js +61 -11
  7. package/dist/esm/cli/base-command.js.map +1 -1
  8. package/dist/esm/cli/cartridge-command.js +2 -1
  9. package/dist/esm/cli/cartridge-command.js.map +1 -1
  10. package/dist/esm/cli/command-search.d.ts +85 -0
  11. package/dist/esm/cli/command-search.js +147 -0
  12. package/dist/esm/cli/command-search.js.map +1 -0
  13. package/dist/esm/cli/config.d.ts +10 -1
  14. package/dist/esm/cli/config.js +18 -9
  15. package/dist/esm/cli/config.js.map +1 -1
  16. package/dist/esm/cli/hooks.d.ts +13 -0
  17. package/dist/esm/cli/hooks.js +11 -0
  18. package/dist/esm/cli/hooks.js.map +1 -1
  19. package/dist/esm/cli/index.d.ts +2 -0
  20. package/dist/esm/cli/index.js +2 -0
  21. package/dist/esm/cli/index.js.map +1 -1
  22. package/dist/esm/cli/instance-command.d.ts +1 -0
  23. package/dist/esm/cli/instance-command.js +2 -1
  24. package/dist/esm/cli/instance-command.js.map +1 -1
  25. package/dist/esm/cli/mrt-command.d.ts +3 -2
  26. package/dist/esm/cli/mrt-command.js +4 -4
  27. package/dist/esm/cli/mrt-command.js.map +1 -1
  28. package/dist/esm/cli/oauth-command.d.ts +1 -0
  29. package/dist/esm/cli/ods-command.d.ts +1 -0
  30. package/dist/esm/cli/webdav-command.d.ts +1 -0
  31. package/dist/esm/clients/custom-apis.d.ts +36 -2
  32. package/dist/esm/clients/custom-apis.js +57 -4
  33. package/dist/esm/clients/custom-apis.js.map +1 -1
  34. package/dist/esm/clients/index.d.ts +1 -1
  35. package/dist/esm/clients/index.js +1 -1
  36. package/dist/esm/clients/index.js.map +1 -1
  37. package/dist/esm/clients/scapi-backend-utils.d.ts +15 -0
  38. package/dist/esm/clients/scapi-backend-utils.js +28 -1
  39. package/dist/esm/clients/scapi-backend-utils.js.map +1 -1
  40. package/dist/esm/clients/scapi-fallback-backend.js +2 -2
  41. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -1
  42. package/dist/esm/clients/scapi-schemas.generated.d.ts +2 -2
  43. package/dist/esm/compat/dispatcher.js +2 -2
  44. package/dist/esm/compat/dispatcher.js.map +1 -1
  45. package/dist/esm/config/config-origins.d.ts +19 -0
  46. package/dist/esm/config/config-origins.js +11 -0
  47. package/dist/esm/config/config-origins.js.map +1 -0
  48. package/dist/esm/config/config-write.d.ts +86 -0
  49. package/dist/esm/config/config-write.js +296 -0
  50. package/dist/esm/config/config-write.js.map +1 -0
  51. package/dist/esm/config/dw-json-schema.d.ts +14 -0
  52. package/dist/esm/config/dw-json-schema.js +269 -0
  53. package/dist/esm/config/dw-json-schema.js.map +1 -0
  54. package/dist/esm/config/dw-json.d.ts +2 -0
  55. package/dist/esm/config/dw-json.js +10 -6
  56. package/dist/esm/config/dw-json.js.map +1 -1
  57. package/dist/esm/config/index.d.ts +13 -4
  58. package/dist/esm/config/index.js +8 -3
  59. package/dist/esm/config/index.js.map +1 -1
  60. package/dist/esm/config/instance-manager.d.ts +64 -28
  61. package/dist/esm/config/instance-manager.js +145 -63
  62. package/dist/esm/config/instance-manager.js.map +1 -1
  63. package/dist/esm/config/mapping.d.ts +5 -0
  64. package/dist/esm/config/mapping.js +20 -1
  65. package/dist/esm/config/mapping.js.map +1 -1
  66. package/dist/esm/config/project-environment.d.ts +62 -0
  67. package/dist/esm/config/project-environment.js +113 -0
  68. package/dist/esm/config/project-environment.js.map +1 -1
  69. package/dist/esm/config/resolver.d.ts +22 -0
  70. package/dist/esm/config/resolver.js +106 -37
  71. package/dist/esm/config/resolver.js.map +1 -1
  72. package/dist/esm/config/sources/dw-json-source.d.ts +9 -1
  73. package/dist/esm/config/sources/dw-json-source.js +59 -23
  74. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  75. package/dist/esm/config/sources/env-source.d.ts +70 -9
  76. package/dist/esm/config/sources/env-source.js +205 -47
  77. package/dist/esm/config/sources/env-source.js.map +1 -1
  78. package/dist/esm/config/sources/index.d.ts +1 -1
  79. package/dist/esm/config/sources/index.js +1 -1
  80. package/dist/esm/config/sources/index.js.map +1 -1
  81. package/dist/esm/config/types.d.ts +53 -3
  82. package/dist/esm/docs/search.js +3 -1
  83. package/dist/esm/docs/search.js.map +1 -1
  84. package/dist/esm/docs/types.d.ts +3 -1
  85. package/dist/esm/guidance/bundle.d.ts +33 -0
  86. package/dist/esm/guidance/bundle.js +268 -0
  87. package/dist/esm/guidance/bundle.js.map +1 -0
  88. package/dist/esm/guidance/catalog.d.ts +8 -1
  89. package/dist/esm/guidance/catalog.js +48 -6
  90. package/dist/esm/guidance/catalog.js.map +1 -1
  91. package/dist/esm/guidance/index.d.ts +1 -0
  92. package/dist/esm/guidance/index.js +1 -0
  93. package/dist/esm/guidance/index.js.map +1 -1
  94. package/dist/esm/guidance/types.d.ts +17 -1
  95. package/dist/esm/guidance/types.js.map +1 -1
  96. package/dist/esm/index.d.ts +1 -1
  97. package/dist/esm/index.js +1 -1
  98. package/dist/esm/index.js.map +1 -1
  99. package/dist/esm/operations/jobs/run-system-job.js +2 -2
  100. package/dist/esm/operations/jobs/run-system-job.js.map +1 -1
  101. package/dist/esm/plugins/discovery.js +2 -1
  102. package/dist/esm/plugins/discovery.js.map +1 -1
  103. package/dist/esm/scapi/catalog.d.ts +5 -2
  104. package/dist/esm/scapi/catalog.js.map +1 -1
  105. package/dist/esm/scapi/index.d.ts +6 -2
  106. package/dist/esm/scapi/index.js +4 -2
  107. package/dist/esm/scapi/index.js.map +1 -1
  108. package/dist/esm/scapi/live.d.ts +14 -3
  109. package/dist/esm/scapi/live.js +33 -5
  110. package/dist/esm/scapi/live.js.map +1 -1
  111. package/dist/esm/scapi/local.d.ts +26 -0
  112. package/dist/esm/scapi/local.js +143 -0
  113. package/dist/esm/scapi/local.js.map +1 -0
  114. package/dist/esm/scapi/request.d.ts +2 -2
  115. package/dist/esm/scapi/request.js +4 -2
  116. package/dist/esm/scapi/request.js.map +1 -1
  117. package/dist/esm/scapi/runtime.d.ts +5 -0
  118. package/dist/esm/scapi/runtime.js.map +1 -1
  119. package/dist/esm/scapi/schema-source.d.ts +90 -0
  120. package/dist/esm/scapi/schema-source.js +146 -0
  121. package/dist/esm/scapi/schema-source.js.map +1 -0
  122. package/dist/esm/scapi/worker-source.js +31 -7
  123. package/dist/esm/scapi/worker-source.js.map +1 -1
  124. package/dist/esm/telemetry/telemetry.d.ts +1 -0
  125. package/dist/esm/telemetry/telemetry.js +18 -1
  126. package/dist/esm/telemetry/telemetry.js.map +1 -1
  127. package/dist/esm/telemetry/types.d.ts +9 -0
  128. package/dist/esm/test-utils/config-isolation.js +21 -15
  129. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  130. package/dist/esm/ux/agent-context.d.ts +69 -0
  131. package/dist/esm/ux/agent-context.js +133 -0
  132. package/dist/esm/ux/agent-context.js.map +1 -0
  133. package/dist/esm/ux/confirm.d.ts +27 -0
  134. package/dist/esm/ux/confirm.js +32 -0
  135. package/dist/esm/ux/confirm.js.map +1 -1
  136. package/dist/esm/ux/index.d.ts +2 -1
  137. package/dist/esm/ux/index.js +2 -1
  138. package/dist/esm/ux/index.js.map +1 -1
  139. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +83 -42
  140. package/node_modules/@salesforce/b2c-api-schemas/package.json +1 -1
  141. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +6798 -238
  142. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +2296 -205
  143. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +5571 -666
  144. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +6062 -371
  145. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +3426 -360
  146. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +351 -99
  147. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +172 -12
  148. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +1497 -111
  149. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +202 -36
  150. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +79 -10
  151. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +785 -49
  152. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +191 -40
  153. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +1483 -107
  154. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +4854 -787
  155. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +119 -15
  156. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +1699 -80
  157. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +252 -18
  158. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +329 -23
  159. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +4208 -234
  160. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +1591 -247
  161. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +396 -8
  162. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +1242 -69
  163. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +2354 -248
  164. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +1550 -45
  165. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/segmentation/v1.json +6615 -0
  166. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1520 -59
  167. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +397 -17
  168. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1241 -27
  169. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1069 -68
  170. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +410 -23
  171. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +502 -102
  172. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1112 -94
  173. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +820 -93
  174. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +845 -92
  175. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +2716 -674
  176. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +130 -47
  177. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +233 -63
  178. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +630 -70
  179. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +2886 -348
  180. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +520 -19
  181. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +3115 -293
  182. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +3313 -138
  183. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +266 -52
  184. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +256 -48
  185. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +1744 -306
  186. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1661 -120
  187. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +2174 -118
  188. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1373 -24
  189. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +531 -20
  190. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +154 -6
  191. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +596 -79
  192. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +456 -42
  193. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +101 -23
  194. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +184 -41
  195. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +995 -47
  196. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +370 -67
  197. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +319 -11
  198. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1109 -64
  199. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/deployments/v1.json +1442 -0
  200. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/environments/v1.json +4293 -0
  201. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/storefronts/v1.json +1371 -0
  202. package/package.json +5 -2
  203. package/specs/scapi-schemas-v1.yaml +4 -1
@@ -3,11 +3,12 @@
3
3
  * SPDX-License-Identifier: Apache-2
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- import { randomBytes } from 'node:crypto';
6
+ import { createHash, randomBytes } from 'node:crypto';
7
7
  import fs from 'node:fs';
8
8
  import path from 'node:path';
9
9
  import { AppInsightsClient } from './app-insights-client.js';
10
10
  import { getLogger } from '../logging/index.js';
11
+ import { getAgentContext } from '../ux/agent-context.js';
11
12
  const generateRandomId = () => randomBytes(20).toString('hex');
12
13
  /**
13
14
  * Best-effort detection of a CI / non-interactive automation environment.
@@ -38,6 +39,19 @@ function detectCI() {
38
39
  env.BITBUCKET_BUILD_NUMBER ||
39
40
  env.CODEBUILD_BUILD_ID);
40
41
  }
42
+ function buildAgentAttributes(cliId) {
43
+ const context = getAgentContext();
44
+ if (!context.isAgentic || !context.harness)
45
+ return { isAgent: false };
46
+ const attributes = { isAgent: true, agent: context.harness.id };
47
+ if (context.sessionId) {
48
+ attributes.agentSessionKey = createHash('sha256')
49
+ .update(`b2c-agent-session-v1\0${cliId}\0${context.harness.id}\0${context.sessionId}`)
50
+ .digest('hex')
51
+ .slice(0, 32);
52
+ }
53
+ return attributes;
54
+ }
41
55
  /**
42
56
  * Sanitize attributes to only include string, number, boolean (App Insights–safe).
43
57
  * Aligns with sf CLI telemetry record() validation.
@@ -147,6 +161,7 @@ export class Telemetry {
147
161
  flushIntervalMs;
148
162
  flushTimer;
149
163
  isCI;
164
+ agentAttributes;
150
165
  /**
151
166
  * Check if telemetry is disabled via environment variables.
152
167
  * Supports both SF_DISABLE_TELEMETRY (sf CLI standard) and SFCC_DISABLE_TELEMETRY.
@@ -175,6 +190,7 @@ export class Telemetry {
175
190
  this.version = options.version ?? '0.0.0';
176
191
  this.flushIntervalMs = options.flushIntervalMs;
177
192
  this.isCI = detectCI();
193
+ this.agentAttributes = buildAgentAttributes(this.cliId);
178
194
  if (process.env.SFCC_TELEMETRY_LOG === 'true') {
179
195
  this.traceLog = getLogger().child({ component: 'telemetry' });
180
196
  }
@@ -309,6 +325,7 @@ export class Telemetry {
309
325
  timestamp: String(Date.now()),
310
326
  processUptime: process.uptime() * 1000,
311
327
  isCI: this.isCI,
328
+ ...this.agentAttributes,
312
329
  };
313
330
  }
314
331
  createClient() {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,15 @@ export interface TelemetryEventProperties extends TelemetryAttributes {
36
36
  * can otherwise dominate volume and skew blended KPIs.
37
37
  */
38
38
  isCI: boolean;
39
+ /** Whether the event originated from a process driven by an AI coding agent. */
40
+ isAgent: boolean;
41
+ /** Detected agent harness id (e.g. `claude-code`), when {@link isAgent} is true. */
42
+ agent?: string;
43
+ /**
44
+ * Salted, truncated hash of the agent harness session id, for grouping events
45
+ * from one agent session. The raw session id is never sent.
46
+ */
47
+ agentSessionKey?: string;
39
48
  }
40
49
  /**
41
50
  * Options for creating a Telemetry instance.
@@ -3,46 +3,52 @@
3
3
  * SPDX-License-Identifier: Apache-2
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
+ import { mkdtempSync, rmSync } from 'node:fs';
7
+ import { tmpdir } from 'node:os';
8
+ import path from 'node:path';
6
9
  import { resetLogger } from '../logging/index.js';
7
- const ADDITIONAL_ENV_VARS = ['COMMERCE_API_SLAS_SECRET', 'LANGUAGE', 'NO_COLOR'];
10
+ const ADDITIONAL_ENV_VARS = ['B2C_CONFIG_DIR', 'COMMERCE_API_SLAS_SECRET', 'LANGUAGE', 'NO_COLOR'];
11
+ function isIsolatedEnvVar(key) {
12
+ return (key.startsWith('SFCC_') || key.startsWith('MRT_') || key.startsWith('PUBLIC__') || ADDITIONAL_ENV_VARS.includes(key));
13
+ }
8
14
  let state = null;
9
15
  export function isolateConfig() {
10
16
  if (state)
11
17
  throw new Error('isolateConfig() called without cleanup - call restoreConfig() first');
12
18
  const savedEnvVars = {};
13
19
  for (const key of Object.keys(process.env)) {
14
- if (key.startsWith('SFCC_') || key.startsWith('MRT_') || key.startsWith('PUBLIC__')) {
20
+ if (isIsolatedEnvVar(key)) {
15
21
  savedEnvVars[key] = process.env[key];
16
22
  delete process.env[key];
17
23
  }
18
24
  }
19
- for (const key of ADDITIONAL_ENV_VARS) {
20
- savedEnvVars[key] = process.env[key];
21
- delete process.env[key];
22
- }
23
25
  process.env.SFCC_CONFIG = '/dev/null';
26
+ // Commands load no .env during tests
27
+ process.env.SFCC_DOTENV_FILE = '';
24
28
  process.env.MRT_CREDENTIALS_FILE = '/dev/null';
25
29
  process.env.SFCC_LOG_LEVEL = 'silent';
30
+ // An empty settings directory, so the user's global default dw.json is never read or written
31
+ const configDirectory = mkdtempSync(path.join(tmpdir(), 'b2c-test-config-'));
32
+ process.env.B2C_CONFIG_DIR = configDirectory;
26
33
  // Reset global logger so it picks up the new SFCC_LOG_LEVEL
27
34
  resetLogger();
28
- state = { savedEnvVars };
35
+ state = { configDirectory, savedEnvVars };
29
36
  }
30
37
  export function restoreConfig() {
31
38
  if (!state)
32
39
  return;
33
40
  // Reset logger before restoring env vars
34
41
  resetLogger();
35
- delete process.env.SFCC_CONFIG;
36
- delete process.env.MRT_CREDENTIALS_FILE;
37
- delete process.env.SFCC_LOG_LEVEL;
38
- for (const [key, value] of Object.entries(state.savedEnvVars)) {
39
- if (value === undefined) {
42
+ // Drop anything the test set, not just the variables isolateConfig() replaced
43
+ for (const key of Object.keys(process.env)) {
44
+ if (isIsolatedEnvVar(key))
40
45
  delete process.env[key];
41
- }
42
- else {
46
+ }
47
+ for (const [key, value] of Object.entries(state.savedEnvVars)) {
48
+ if (value !== undefined)
43
49
  process.env[key] = value;
44
- }
45
50
  }
51
+ rmSync(state.configDirectory, { recursive: true, force: true });
46
52
  state = null;
47
53
  }
48
54
  //# sourceMappingURL=config-isolation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-isolation.js","sourceRoot":"","sources":["../../../src/test-utils/config-isolation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,CAAC,0BAA0B,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAMjF,IAAI,KAAK,GAA0B,IAAI,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAElG,MAAM,YAAY,GAAuC,EAAE,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpF,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;IAEtC,4DAA4D;IAC5D,WAAW,EAAE,CAAC;IAEd,KAAK,GAAG,EAAC,YAAY,EAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,yCAAyC;IACzC,WAAW,EAAE,CAAC;IAEd,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACxC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"config-isolation.js","sourceRoot":"","sources":["../../../src/test-utils/config-isolation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEnG,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,CACL,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CACrH,CAAC;AACJ,CAAC;AAOD,IAAI,KAAK,GAA0B,IAAI,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAElG,MAAM,YAAY,GAAuC,EAAE,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IACtC,qCAAqC;IACrC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;IACtC,6FAA6F;IAC7F,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,eAAe,CAAC;IAE7C,4DAA4D;IAC5D,WAAW,EAAE,CAAC;IAEd,KAAK,GAAG,EAAC,eAAe,EAAE,YAAY,EAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,yCAAyC;IACzC,WAAW,EAAE,CAAC;IAEd,8EAA8E;IAC9E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;IAE9D,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Best-effort detection of AI coding agent harnesses (Claude Code, Cursor,
3
+ * Codex, etc.) from the environment of the current process.
4
+ *
5
+ * Detection is advisory: it tailors help output, disables interactive prompts,
6
+ * and attributes telemetry. It must never block or fail a command.
7
+ *
8
+ * Detection relies only on environment variables that harnesses set for their
9
+ * child processes. Users can override detection with `SFCC_AGENT`:
10
+ *
11
+ * - `SFCC_AGENT=<name>` forces agent mode and reports `<name>` as the harness
12
+ * - `SFCC_AGENT=0` (or `false`/`no`/`off`) disables detection entirely
13
+ *
14
+ * @module ux/agent-context
15
+ */
16
+ /** An AI coding agent harness (the tool driving the CLI). */
17
+ export interface AgentHarness {
18
+ /** Stable identifier (e.g. `claude-code`). */
19
+ id: string;
20
+ /** Human-readable name (e.g. `Claude Code`). */
21
+ name: string;
22
+ }
23
+ /** A single detector match. */
24
+ export interface AgentMatch {
25
+ harness: AgentHarness;
26
+ /** Harness session/thread/conversation identifier, when exposed. */
27
+ sessionId?: string;
28
+ /** Environment variable names that produced the match. */
29
+ signals: readonly string[];
30
+ }
31
+ /** Result of agent detection. */
32
+ export interface AgentContext {
33
+ /** True when any harness was detected (or forced via `SFCC_AGENT`). */
34
+ isAgentic: boolean;
35
+ /** Highest-precedence harness, or null. */
36
+ harness: AgentHarness | null;
37
+ /** First available session identifier across matches, or null. */
38
+ sessionId: null | string;
39
+ /** All matches in precedence order. */
40
+ matches: readonly AgentMatch[];
41
+ }
42
+ export type AgentEnvironment = Readonly<Record<string, string | undefined>>;
43
+ export type AgentDetector = (env: AgentEnvironment) => AgentMatch | null;
44
+ /**
45
+ * Detectors in precedence order. Direct agents precede host surfaces so that,
46
+ * for example, Claude Code launched inside Warp is reported as Claude Code
47
+ * while the Warp match is retained in `matches`.
48
+ */
49
+ export declare const agentDetectors: readonly AgentDetector[];
50
+ /**
51
+ * Detects whether the current process is being driven by an AI coding agent.
52
+ *
53
+ * @param env - Environment to inspect (defaults to `process.env`)
54
+ * @param detectors - Detectors in precedence order (defaults to {@link agentDetectors})
55
+ */
56
+ export declare function detectAgentContext(env?: AgentEnvironment, detectors?: readonly AgentDetector[]): AgentContext;
57
+ /**
58
+ * Cached {@link detectAgentContext} for `process.env`. The environment of a
59
+ * process does not change in ways relevant to detection, so detect once.
60
+ */
61
+ export declare function getAgentContext(): AgentContext;
62
+ /** Clears the cached agent context (for tests). */
63
+ export declare function resetAgentContext(): void;
64
+ /**
65
+ * Whether interactive prompts can be shown: stdin is a TTY and the process is
66
+ * not driven by an AI agent (agents typically cannot answer prompts, and
67
+ * hanging on one wastes the agent's turn).
68
+ */
69
+ export declare function isInteractive(): boolean;
@@ -0,0 +1,133 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ const FALSE_LIKE_VALUES = new Set(['', '0', 'false', 'no', 'off']);
7
+ /** Returns the trimmed value, treating false-like values as unset. */
8
+ function value(env, name) {
9
+ const raw = env[name];
10
+ if (typeof raw !== 'string')
11
+ return undefined;
12
+ const normalized = raw.trim();
13
+ return FALSE_LIKE_VALUES.has(normalized.toLowerCase()) ? undefined : normalized;
14
+ }
15
+ /**
16
+ * Builds a detector that matches when any marker env var equals its expected
17
+ * value (or is set to any truthy value when `expected` is omitted).
18
+ */
19
+ function markerDetector(harness, markers, sessionVars = []) {
20
+ return (env) => {
21
+ const signals = [];
22
+ for (const { name, expected } of markers) {
23
+ const matched = expected === undefined ? value(env, name) !== undefined : env[name] === expected;
24
+ if (matched)
25
+ signals.push(name);
26
+ }
27
+ if (signals.length === 0)
28
+ return null;
29
+ let sessionId;
30
+ for (const name of sessionVars) {
31
+ const v = value(env, name);
32
+ if (v) {
33
+ signals.push(name);
34
+ sessionId ??= v;
35
+ }
36
+ }
37
+ return { harness, sessionId, signals };
38
+ };
39
+ }
40
+ /**
41
+ * Detectors in precedence order. Direct agents precede host surfaces so that,
42
+ * for example, Claude Code launched inside Warp is reported as Claude Code
43
+ * while the Warp match is retained in `matches`.
44
+ */
45
+ export const agentDetectors = [
46
+ markerDetector({ id: 'opencode', name: 'OpenCode' }, [{ name: 'OPENCODE', expected: '1' }]),
47
+ markerDetector({ id: 'qwen-code', name: 'Qwen Code' }, [{ name: 'QWEN_CODE_SESSION_ID' }], ['QWEN_CODE_SESSION_ID']),
48
+ markerDetector({ id: 'pi', name: 'Pi' }, [
49
+ { name: 'PI_CODING_AGENT', expected: 'true' },
50
+ { name: 'AI_AGENT', expected: 'pi' },
51
+ ], ['PI_SESSION_ID']),
52
+ markerDetector({ id: 'cursor-agent', name: 'Cursor Agent' }, [{ name: 'CURSOR_AGENT', expected: '1' }], ['CURSOR_CONVERSATION_ID']),
53
+ markerDetector({ id: 'claude-code', name: 'Claude Code' }, [{ name: 'CLAUDECODE', expected: '1' }], ['CLAUDE_CODE_SESSION_ID']),
54
+ markerDetector({ id: 'codex', name: 'OpenAI Codex' }, [{ name: 'CODEX_THREAD_ID' }], ['CODEX_THREAD_ID']),
55
+ markerDetector({ id: 'amp', name: 'Amp' }, [{ name: 'AMP_CURRENT_THREAD_ID' }], ['AMP_CURRENT_THREAD_ID']),
56
+ markerDetector({ id: 'gemini-cli', name: 'Gemini CLI' }, [{ name: 'GEMINI_CLI', expected: '1' }]),
57
+ markerDetector({ id: 'auggie', name: 'Auggie' }, [{ name: 'AUGMENT_AGENT', expected: '1' }]),
58
+ markerDetector({ id: 'crush', name: 'Crush' }, [
59
+ { name: 'CRUSH', expected: '1' },
60
+ { name: 'AI_AGENT', expected: 'crush' },
61
+ ]),
62
+ markerDetector({ id: 'vscode-copilot-agent', name: 'GitHub Copilot in VS Code' }, [
63
+ { name: 'AI_AGENT', expected: 'github_copilot_vscode_agent' },
64
+ { name: 'COPILOT_AGENT', expected: '1' },
65
+ ]),
66
+ markerDetector({ id: 'warp', name: 'Warp' }, [{ name: 'OZ_RUN_ID' }], ['OZ_RUN_ID']),
67
+ ];
68
+ const NOT_AGENTIC = { isAgentic: false, harness: null, sessionId: null, matches: [] };
69
+ /** Normalizes a user-supplied agent name into an id (lowercase, dash-separated). */
70
+ function toAgentId(name) {
71
+ return (name
72
+ .toLowerCase()
73
+ .replaceAll(/[^a-z0-9]+/g, '-')
74
+ .replaceAll(/^-|-$/g, '') || 'custom');
75
+ }
76
+ /**
77
+ * Detects whether the current process is being driven by an AI coding agent.
78
+ *
79
+ * @param env - Environment to inspect (defaults to `process.env`)
80
+ * @param detectors - Detectors in precedence order (defaults to {@link agentDetectors})
81
+ */
82
+ export function detectAgentContext(env = process.env, detectors = agentDetectors) {
83
+ const override = env.SFCC_AGENT;
84
+ if (override !== undefined) {
85
+ const forced = value(env, 'SFCC_AGENT');
86
+ if (!forced)
87
+ return NOT_AGENTIC;
88
+ // Values like "1"/"true" force agent mode without naming a harness.
89
+ const generic = ['1', 'true', 'yes', 'on'].includes(forced.toLowerCase());
90
+ const harness = generic ? { id: 'unknown', name: 'Unknown agent' } : { id: toAgentId(forced), name: forced };
91
+ const match = { harness, signals: ['SFCC_AGENT'] };
92
+ return { isAgentic: true, harness, sessionId: null, matches: [match] };
93
+ }
94
+ const matches = [];
95
+ for (const detector of detectors) {
96
+ try {
97
+ const match = detector(env);
98
+ if (match)
99
+ matches.push(match);
100
+ }
101
+ catch {
102
+ // Detection is advisory and must never prevent a command from running.
103
+ }
104
+ }
105
+ return {
106
+ isAgentic: matches.length > 0,
107
+ harness: matches[0]?.harness ?? null,
108
+ sessionId: matches.find((m) => m.sessionId)?.sessionId ?? null,
109
+ matches,
110
+ };
111
+ }
112
+ let cached;
113
+ /**
114
+ * Cached {@link detectAgentContext} for `process.env`. The environment of a
115
+ * process does not change in ways relevant to detection, so detect once.
116
+ */
117
+ export function getAgentContext() {
118
+ cached ??= detectAgentContext();
119
+ return cached;
120
+ }
121
+ /** Clears the cached agent context (for tests). */
122
+ export function resetAgentContext() {
123
+ cached = undefined;
124
+ }
125
+ /**
126
+ * Whether interactive prompts can be shown: stdin is a TTY and the process is
127
+ * not driven by an AI agent (agents typically cannot answer prompts, and
128
+ * hanging on one wastes the agent's turn).
129
+ */
130
+ export function isInteractive() {
131
+ return Boolean(process.stdin.isTTY) && !getAgentContext().isAgentic;
132
+ }
133
+ //# sourceMappingURL=agent-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-context.js","sourceRoot":"","sources":["../../../src/ux/agent-context.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,41 @@
1
1
  export interface ConfirmOptions {
2
2
  /** Default to yes when the user presses Enter without typing. Defaults to false (no). */
3
3
  defaultYes?: boolean;
4
+ /**
5
+ * Behavior when prompting is not possible (no TTY on stdin, or an AI agent
6
+ * is driving the process):
7
+ *
8
+ * - `'error'` (default): throw {@link ConfirmationRequiredError} so the
9
+ * command fails fast with a non-zero exit instead of hanging
10
+ * - `'default'`: resolve to the default answer (`defaultYes`) without prompting
11
+ */
12
+ nonInteractive?: 'default' | 'error';
13
+ }
14
+ /**
15
+ * Thrown by {@link confirm} when a confirmation is required but cannot be
16
+ * prompted for. Callers should skip the prompt with an explicit flag
17
+ * (typically `--force` or `--yes`).
18
+ */
19
+ export declare class ConfirmationRequiredError extends Error {
20
+ /** The confirmation message that could not be prompted. */
21
+ readonly prompt: string;
22
+ readonly code = "CONFIRMATION_REQUIRED";
23
+ constructor(
24
+ /** The confirmation message that could not be prompted. */
25
+ prompt: string);
4
26
  }
5
27
  /**
6
28
  * Simple yes/no confirmation prompt.
7
29
  *
8
30
  * Output goes to stderr so it doesn't interfere with structured stdout output.
9
31
  *
32
+ * When prompting is not possible (stdin is not a TTY, or an AI agent is
33
+ * detected), this throws {@link ConfirmationRequiredError} by default rather
34
+ * than waiting on input that will never arrive. See {@link ConfirmOptions.nonInteractive}.
35
+ *
10
36
  * @param message - Prompt message (the hint is appended automatically)
11
37
  * @param options - Options to control default behavior
12
38
  * @returns true if user confirmed, false otherwise
39
+ * @throws ConfirmationRequiredError when prompting is not possible and `nonInteractive` is `'error'`
13
40
  */
14
41
  export declare function confirm(message: string, options?: ConfirmOptions): Promise<boolean>;
@@ -4,17 +4,49 @@
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import * as readline from 'node:readline';
7
+ import { getAgentContext, isInteractive } from './agent-context.js';
8
+ /**
9
+ * Thrown by {@link confirm} when a confirmation is required but cannot be
10
+ * prompted for. Callers should skip the prompt with an explicit flag
11
+ * (typically `--force` or `--yes`).
12
+ */
13
+ export class ConfirmationRequiredError extends Error {
14
+ prompt;
15
+ code = 'CONFIRMATION_REQUIRED';
16
+ constructor(
17
+ /** The confirmation message that could not be prompted. */
18
+ prompt) {
19
+ const agent = getAgentContext().harness;
20
+ const reason = agent
21
+ ? `running under an AI agent (${agent.name}), so interactive prompts are disabled`
22
+ : 'no interactive terminal is available';
23
+ super(`Confirmation required but ${reason}:\n ${prompt.trim()}\n` +
24
+ `Re-run with the command's --force (or --yes) flag to proceed without prompting.`);
25
+ this.prompt = prompt;
26
+ this.name = 'ConfirmationRequiredError';
27
+ }
28
+ }
7
29
  /**
8
30
  * Simple yes/no confirmation prompt.
9
31
  *
10
32
  * Output goes to stderr so it doesn't interfere with structured stdout output.
11
33
  *
34
+ * When prompting is not possible (stdin is not a TTY, or an AI agent is
35
+ * detected), this throws {@link ConfirmationRequiredError} by default rather
36
+ * than waiting on input that will never arrive. See {@link ConfirmOptions.nonInteractive}.
37
+ *
12
38
  * @param message - Prompt message (the hint is appended automatically)
13
39
  * @param options - Options to control default behavior
14
40
  * @returns true if user confirmed, false otherwise
41
+ * @throws ConfirmationRequiredError when prompting is not possible and `nonInteractive` is `'error'`
15
42
  */
16
43
  export async function confirm(message, options) {
17
44
  const defaultYes = options?.defaultYes ?? false;
45
+ if (!isInteractive()) {
46
+ if (options?.nonInteractive === 'default')
47
+ return defaultYes;
48
+ throw new ConfirmationRequiredError(message);
49
+ }
18
50
  const hint = defaultYes ? '(Y/n)' : '(y/N)';
19
51
  const rl = readline.createInterface({
20
52
  input: process.stdin,
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../../src/ux/confirm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAO1C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,OAAwB;IACrE,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE5C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../../src/ux/confirm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAgBlE;;;;GAIG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAKvC;IAJF,IAAI,GAAG,uBAAuB,CAAC;IAExC;IACE,2DAA2D;IAClD,MAAc;QAEvB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,OAAO,CAAC;QACxC,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,8BAA8B,KAAK,CAAC,IAAI,wCAAwC;YAClF,CAAC,CAAC,sCAAsC,CAAC;QAC3C,KAAK,CACH,6BAA6B,MAAM,QAAQ,MAAM,CAAC,IAAI,EAAE,IAAI;YAC1D,iFAAiF,CACpF,CAAC;QATO,WAAM,GAAN,MAAM,CAAQ;QAUvB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,OAAwB;IACrE,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAEhD,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,IAAI,OAAO,EAAE,cAAc,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QAC7D,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE5C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1,2 @@
1
- export { confirm, type ConfirmOptions } from './confirm.js';
1
+ export { confirm, ConfirmationRequiredError, type ConfirmOptions } from './confirm.js';
2
+ export { agentDetectors, detectAgentContext, getAgentContext, isInteractive, resetAgentContext, type AgentContext, type AgentDetector, type AgentEnvironment, type AgentHarness, type AgentMatch, } from './agent-context.js';
@@ -3,5 +3,6 @@
3
3
  * SPDX-License-Identifier: Apache-2
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- export { confirm } from './confirm.js';
6
+ export { confirm, ConfirmationRequiredError } from './confirm.js';
7
+ export { agentDetectors, detectAgentContext, getAgentContext, isInteractive, resetAgentContext, } from './agent-context.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ux/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAsB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ux/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAE,yBAAyB,EAAsB,MAAM,cAAc,CAAC;AACrF,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,GAMlB,MAAM,oBAAoB,CAAC"}