@sanity/sdk 2.11.1 → 2.12.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 (47) hide show
  1. package/dist/_chunks-dts/utils.d.ts +171 -19
  2. package/dist/_chunks-es/_internal.js +41 -26
  3. package/dist/_chunks-es/_internal.js.map +1 -1
  4. package/dist/_chunks-es/createGroqSearchFilter.js +15 -4
  5. package/dist/_chunks-es/createGroqSearchFilter.js.map +1 -1
  6. package/dist/_chunks-es/telemetryManager.js +25 -19
  7. package/dist/_chunks-es/telemetryManager.js.map +1 -1
  8. package/dist/_chunks-es/version.js +1 -1
  9. package/dist/_exports/_internal.d.ts +27 -11
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.js +355 -75
  12. package/dist/index.js.map +1 -1
  13. package/package.json +8 -8
  14. package/src/_exports/index.ts +23 -2
  15. package/src/config/sanityConfig.ts +12 -0
  16. package/src/document/actions.test.ts +112 -1
  17. package/src/document/actions.ts +148 -1
  18. package/src/document/applyDocumentActions.ts +4 -3
  19. package/src/document/documentStore.ts +6 -5
  20. package/src/document/events.test.ts +57 -2
  21. package/src/document/events.ts +43 -24
  22. package/src/document/processActions/edit.ts +9 -44
  23. package/src/document/processActions/processActions.ts +44 -3
  24. package/src/document/processActions/releaseArchive.ts +77 -0
  25. package/src/document/processActions/releaseCreate.ts +59 -0
  26. package/src/document/processActions/releaseDelete.ts +65 -0
  27. package/src/document/processActions/releaseEdit.ts +36 -0
  28. package/src/document/processActions/releasePublish.ts +45 -0
  29. package/src/document/processActions/releaseSchedule.ts +87 -0
  30. package/src/document/processActions/releaseUtil.ts +31 -0
  31. package/src/document/processActions/shared.ts +94 -2
  32. package/src/document/processActions.test.ts +423 -1
  33. package/src/document/reducers.ts +40 -5
  34. package/src/releases/getPerspectiveState.test.ts +1 -1
  35. package/src/releases/releasesStore.test.ts +50 -1
  36. package/src/releases/releasesStore.ts +41 -18
  37. package/src/releases/utils/sortReleases.test.ts +2 -2
  38. package/src/releases/utils/sortReleases.ts +1 -1
  39. package/src/telemetry/environment.test.ts +119 -0
  40. package/src/telemetry/environment.ts +92 -0
  41. package/src/telemetry/{__telemetry__/sdk.telemetry.ts → events.ts} +9 -9
  42. package/src/telemetry/initTelemetry.test.ts +240 -16
  43. package/src/telemetry/initTelemetry.ts +39 -16
  44. package/src/telemetry/telemetryManager.test.ts +129 -65
  45. package/src/telemetry/telemetryManager.ts +41 -29
  46. package/src/telemetry/devMode.test.ts +0 -60
  47. package/src/telemetry/devMode.ts +0 -41
@@ -1,10 +1,10 @@
1
1
  import { createBatchedStore } from "@sanity/telemetry";
2
2
  import { createLogger } from "./createGroqSearchFilter.js";
3
3
  import { CORE_SDK_VERSION } from "./version.js";
4
- import { SDKDevSessionEnded, SDKDevError, SDKHookMounted, SDKDevSessionStarted } from "./_internal.js";
4
+ import { SDKSessionEnded, SDKError, SDKHookMounted, SDKSessionStarted } from "./_internal.js";
5
5
  const FLUSH_INTERVAL_MS = 3e4, CONSENT_TAG = "telemetry-consent.sdk", BATCH_TAG = "telemetry.batch", log = createLogger("telemetry");
6
6
  function createTelemetryManager(options) {
7
- const { sessionId, getClient, projectId } = options, startedAt = Date.now(), emittedHooks = /* @__PURE__ */ new Set();
7
+ const { sessionId, getClient, projectId, environment } = options, startedAt = Date.now(), emittedHooks = /* @__PURE__ */ new Set();
8
8
  let cachedConsent = null;
9
9
  const resolveConsent = async () => {
10
10
  if (cachedConsent) return cachedConsent;
@@ -17,21 +17,25 @@ function createTelemetryManager(options) {
17
17
  cachedConsent = { status: "undetermined" };
18
18
  }
19
19
  return cachedConsent;
20
- }, enrichBatch = (batch) => batch.map((event) => ({
21
- ...event,
22
- context: {
23
- version: CORE_SDK_VERSION,
24
- environment: "development",
25
- origin: typeof window < "u" ? window.location.origin : "node"
26
- }
27
- })), store = createBatchedStore(
20
+ }, enrichBatch = (batch) => batch.map((event) => {
21
+ const existing = "context" in event ? event.context : void 0;
22
+ return {
23
+ ...event,
24
+ context: {
25
+ ...existing,
26
+ version: CORE_SDK_VERSION,
27
+ environment,
28
+ origin: typeof window < "u" ? window.location.origin : "node"
29
+ }
30
+ };
31
+ }), store = createBatchedStore(
28
32
  sessionId,
29
33
  {
30
34
  flushInterval: FLUSH_INTERVAL_MS,
31
35
  resolveConsent,
32
36
  sendEvents: async (batch) => {
33
37
  const client = getClient();
34
- return log.debug("sending event batch", { batchSize: batch.length }), client.request({
38
+ return log.debug("sending event batch", { batchSize: batch.length, environment }), client.request({
35
39
  uri: "/intake/batch",
36
40
  method: "POST",
37
41
  body: { projectId, batch: enrichBatch(batch) },
@@ -46,12 +50,13 @@ function createTelemetryManager(options) {
46
50
  return status === "granted";
47
51
  },
48
52
  logSessionStarted(data) {
49
- log.debug("event: SDK Dev Session Started", {
53
+ log.debug("event: SDK Session Started", {
50
54
  projectId: data.projectId,
51
55
  perspective: data.perspective,
52
56
  authMethod: data.authMethod,
53
- version: CORE_SDK_VERSION
54
- }), logger.log(SDKDevSessionStarted, {
57
+ version: CORE_SDK_VERSION,
58
+ environment
59
+ }), logger.log(SDKSessionStarted, {
55
60
  version: CORE_SDK_VERSION,
56
61
  ...data
57
62
  });
@@ -59,15 +64,16 @@ function createTelemetryManager(options) {
59
64
  logHookFirstUsed(hookName) {
60
65
  emittedHooks.has(hookName) || (emittedHooks.add(hookName), log.debug("event: SDK Hook Mounted", { hookName }), logger.log(SDKHookMounted, { hookName }));
61
66
  },
62
- logDevError(errorType, hookName) {
63
- log.debug("event: SDK Dev Error", { errorType, hookName }), logger.log(SDKDevError, { errorType, hookName });
67
+ logError(errorType, hookName) {
68
+ log.debug("event: SDK Error", { errorType, hookName }), logger.log(SDKError, { errorType, hookName });
64
69
  },
65
70
  endSession() {
66
71
  const durationSeconds = Math.round((Date.now() - startedAt) / 1e3);
67
- log.debug("event: SDK Dev Session Ended", {
72
+ log.debug("event: SDK Session Ended", {
68
73
  durationSeconds,
69
- hooksUsed: [...emittedHooks]
70
- }), logger.log(SDKDevSessionEnded, {
74
+ hooksUsed: [...emittedHooks],
75
+ environment
76
+ }), logger.log(SDKSessionEnded, {
71
77
  durationSeconds,
72
78
  hooksUsed: [...emittedHooks]
73
79
  }), store.flush().catch(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryManager.js","sources":["../../src/telemetry/telemetryManager.ts"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\nimport {\n type ConsentStatus,\n createBatchedStore,\n type SessionId,\n type TelemetryEvent,\n type TelemetryLogger,\n type TelemetryStore,\n} from '@sanity/telemetry'\n\nimport {createLogger} from '../utils/logger'\nimport {CORE_SDK_VERSION} from '../version'\nimport {\n SDKDevError,\n SDKDevSessionEnded,\n SDKDevSessionStarted,\n SDKHookMounted,\n} from './__telemetry__/sdk.telemetry'\n\nconst FLUSH_INTERVAL_MS = 30_000\nconst CONSENT_TAG = 'telemetry-consent.sdk'\nconst BATCH_TAG = 'telemetry.batch'\n\nconst log = createLogger('telemetry')\n\n/**\n * Manages dev-mode telemetry for a single SDK instance.\n *\n * Wraps `@sanity/telemetry`'s batched store with SDK-specific concerns:\n * consent caching, session lifecycle events, and hook usage tracking.\n *\n * @internal\n */\nexport interface TelemetryManager {\n /**\n * Eagerly resolve and cache the user's consent status.\n * Returns true only when the user has explicitly opted in (`granted`).\n * Call this before logging any events to avoid buffering events that\n * will be dropped on the first flush.\n */\n checkConsent(): Promise<boolean>\n\n /** Log a \"SDK Dev Session Started\" event */\n logSessionStarted(data: {projectId: string; perspective: string; authMethod: string}): void\n\n /** Log a \"SDK Hook First Used\" event (deduplicated per hook name) */\n logHookFirstUsed(hookName: string): void\n\n /** Log a \"SDK Dev Error\" event */\n logDevError(errorType: string, hookName: string): void\n\n /** Log a \"SDK Dev Session Ended\" event and tear down the store */\n endSession(): void\n\n /** Tear down the store without logging a session-end event */\n dispose(): void\n\n /** The set of hook names used during this session */\n readonly hooksUsed: ReadonlySet<string>\n}\n\ninterface TelemetryManagerOptions {\n sessionId: string\n getClient: () => SanityClient\n projectId: string\n}\n\n/**\n * Creates a telemetry manager for a single SDK instance session.\n *\n * The manager initializes a `createBatchedStore` from `@sanity/telemetry`,\n * caches the consent check for the lifetime of the session, and provides\n * typed methods for each SDK telemetry event.\n *\n * @internal\n */\nexport function createTelemetryManager(options: TelemetryManagerOptions): TelemetryManager {\n const {sessionId, getClient, projectId} = options\n const startedAt = Date.now()\n const emittedHooks = new Set<string>()\n\n let cachedConsent: {status: ConsentStatus} | null = null\n\n const resolveConsent = async (): Promise<{status: ConsentStatus}> => {\n if (cachedConsent) return cachedConsent\n try {\n const client = getClient()\n const result = await client.request<{status: ConsentStatus}>({\n uri: '/intake/telemetry-status',\n tag: CONSENT_TAG,\n })\n cachedConsent = result\n } catch {\n cachedConsent = {status: 'undetermined'}\n }\n return cachedConsent\n }\n\n const enrichBatch = (batch: TelemetryEvent[]) =>\n batch.map((event) => ({\n ...event,\n context: {\n version: CORE_SDK_VERSION,\n environment: 'development' as const,\n origin: typeof window !== 'undefined' ? window.location.origin : 'node',\n },\n }))\n\n const sendEvents = async (batch: TelemetryEvent[]): Promise<unknown> => {\n const client = getClient()\n log.debug('sending event batch', {batchSize: batch.length})\n return client.request({\n uri: '/intake/batch',\n method: 'POST',\n body: {projectId, batch: enrichBatch(batch)},\n tag: BATCH_TAG,\n })\n }\n\n const store: TelemetryStore<Record<string, unknown>> = createBatchedStore(\n sessionId as SessionId,\n {\n flushInterval: FLUSH_INTERVAL_MS,\n resolveConsent,\n sendEvents,\n },\n )\n\n const logger: TelemetryLogger<Record<string, unknown>> = store.logger\n\n return {\n async checkConsent() {\n const {status} = await resolveConsent()\n return status === 'granted'\n },\n\n logSessionStarted(data) {\n log.debug('event: SDK Dev Session Started', {\n projectId: data.projectId,\n perspective: data.perspective,\n authMethod: data.authMethod,\n version: CORE_SDK_VERSION,\n })\n logger.log(SDKDevSessionStarted, {\n version: CORE_SDK_VERSION,\n ...data,\n })\n },\n\n logHookFirstUsed(hookName: string) {\n if (emittedHooks.has(hookName)) return\n emittedHooks.add(hookName)\n log.debug('event: SDK Hook Mounted', {hookName})\n logger.log(SDKHookMounted, {hookName})\n },\n\n logDevError(errorType: string, hookName: string) {\n log.debug('event: SDK Dev Error', {errorType, hookName})\n logger.log(SDKDevError, {errorType, hookName})\n },\n\n endSession() {\n const durationSeconds = Math.round((Date.now() - startedAt) / 1000)\n log.debug('event: SDK Dev Session Ended', {\n durationSeconds,\n hooksUsed: [...emittedHooks],\n })\n logger.log(SDKDevSessionEnded, {\n durationSeconds,\n hooksUsed: [...emittedHooks],\n })\n\n store.flush().catch(() => {\n // Best-effort flush on dispose; swallow errors\n })\n store.end()\n },\n\n dispose() {\n store.end()\n },\n\n get hooksUsed(): ReadonlySet<string> {\n return emittedHooks\n },\n }\n}\n"],"names":[],"mappings":";;;;AAmBA,MAAM,oBAAoB,KACpB,cAAc,yBACd,YAAY,mBAEZ,MAAM,aAAa,WAAW;AAqD7B,SAAS,uBAAuB,SAAoD;AACzF,QAAM,EAAC,WAAW,WAAW,UAAA,IAAa,SACpC,YAAY,KAAK,IAAA,GACjB,eAAe,oBAAI,IAAA;AAEzB,MAAI,gBAAgD;AAEpD,QAAM,iBAAiB,YAA8C;AACnE,QAAI,cAAe,QAAO;AAC1B,QAAI;AAMF,sBAJe,MADA,UAAA,EACa,QAAiC;AAAA,QAC3D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,IAEH,QAAQ;AACN,sBAAgB,EAAC,QAAQ,eAAA;AAAA,IAC3B;AACA,WAAO;AAAA,EACT,GAEM,cAAc,CAAC,UACnB,MAAM,IAAI,CAAC,WAAW;AAAA,IACpB,GAAG;AAAA,IACH,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,MACb,QAAQ,OAAO,SAAW,MAAc,OAAO,SAAS,SAAS;AAAA,IAAA;AAAA,EACnE,EACA,GAaE,QAAiD;AAAA,IACrD;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf;AAAA,MACA,YAhBe,OAAO,UAA8C;AACtE,cAAM,SAAS,UAAA;AACf,eAAA,IAAI,MAAM,uBAAuB,EAAC,WAAW,MAAM,OAAA,CAAO,GACnD,OAAO,QAAQ;AAAA,UACpB,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,MAAM,EAAC,WAAW,OAAO,YAAY,KAAK,EAAA;AAAA,UAC1C,KAAK;AAAA,QAAA,CACN;AAAA,MACH;AAAA,IAAA;AAAA,EAQE,GAGI,SAAmD,MAAM;AAE/D,SAAO;AAAA,IACL,MAAM,eAAe;AACnB,YAAM,EAAC,WAAU,MAAM,eAAA;AACvB,aAAO,WAAW;AAAA,IACpB;AAAA,IAEA,kBAAkB,MAAM;AACtB,UAAI,MAAM,kCAAkC;AAAA,QAC1C,WAAW,KAAK;AAAA,QAChB,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK;AAAA,QACjB,SAAS;AAAA,MAAA,CACV,GACD,OAAO,IAAI,sBAAsB;AAAA,QAC/B,SAAS;AAAA,QACT,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AAAA,IAEA,iBAAiB,UAAkB;AAC7B,mBAAa,IAAI,QAAQ,MAC7B,aAAa,IAAI,QAAQ,GACzB,IAAI,MAAM,2BAA2B,EAAC,SAAA,CAAS,GAC/C,OAAO,IAAI,gBAAgB,EAAC,UAAS;AAAA,IACvC;AAAA,IAEA,YAAY,WAAmB,UAAkB;AAC/C,UAAI,MAAM,wBAAwB,EAAC,WAAW,SAAA,CAAS,GACvD,OAAO,IAAI,aAAa,EAAC,WAAW,UAAS;AAAA,IAC/C;AAAA,IAEA,aAAa;AACX,YAAM,kBAAkB,KAAK,OAAO,KAAK,IAAA,IAAQ,aAAa,GAAI;AAClE,UAAI,MAAM,gCAAgC;AAAA,QACxC;AAAA,QACA,WAAW,CAAC,GAAG,YAAY;AAAA,MAAA,CAC5B,GACD,OAAO,IAAI,oBAAoB;AAAA,QAC7B;AAAA,QACA,WAAW,CAAC,GAAG,YAAY;AAAA,MAAA,CAC5B,GAED,MAAM,MAAA,EAAQ,MAAM,MAAM;AAAA,MAE1B,CAAC,GACD,MAAM,IAAA;AAAA,IACR;AAAA,IAEA,UAAU;AACR,YAAM,IAAA;AAAA,IACR;AAAA,IAEA,IAAI,YAAiC;AACnC,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"telemetryManager.js","sources":["../../src/telemetry/telemetryManager.ts"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\nimport {\n type ConsentStatus,\n createBatchedStore,\n type SessionId,\n type TelemetryEvent,\n type TelemetryLogger,\n type TelemetryStore,\n} from '@sanity/telemetry'\n\nimport {createLogger} from '../utils/logger'\nimport {CORE_SDK_VERSION} from '../version'\nimport {type TelemetryEnvironment} from './environment'\nimport {SDKError, SDKHookMounted, SDKSessionEnded, SDKSessionStarted} from './events'\n\nconst FLUSH_INTERVAL_MS = 30_000\nconst CONSENT_TAG = 'telemetry-consent.sdk'\nconst BATCH_TAG = 'telemetry.batch'\n\nconst log = createLogger('telemetry')\n\n/**\n * Manages telemetry for a single SDK instance.\n *\n * Wraps `@sanity/telemetry`'s batched store with SDK-specific concerns:\n * consent caching, session lifecycle events, and hook usage tracking.\n * The `environment` is captured at construction time and recorded in\n * the event context so downstream pipelines can distinguish dev and\n * production sessions.\n *\n * @internal\n */\nexport interface TelemetryManager {\n /**\n * Eagerly resolve and cache the user's consent status.\n * Returns true only when the user has explicitly opted in (`granted`).\n * Call this before logging any events to avoid buffering events that\n * will be dropped on the first flush.\n */\n checkConsent(): Promise<boolean>\n\n /** Log a \"SDK Session Started\" event */\n logSessionStarted(data: {projectId: string; perspective: string; authMethod: string}): void\n\n /** Log a \"SDK Hook Mounted\" event (deduplicated per hook name) */\n logHookFirstUsed(hookName: string): void\n\n /** Log a \"SDK Error\" event */\n logError(errorType: string, hookName: string): void\n\n /** Log a \"SDK Session Ended\" event and tear down the store */\n endSession(): void\n\n /** Tear down the store without logging a session-end event */\n dispose(): void\n\n /** The set of hook names used during this session */\n readonly hooksUsed: ReadonlySet<string>\n}\n\ninterface TelemetryManagerOptions {\n sessionId: string\n getClient: () => SanityClient\n projectId: string\n environment: TelemetryEnvironment\n}\n\n/**\n * Creates a telemetry manager for a single SDK instance session.\n *\n * The manager initializes a `createBatchedStore` from `@sanity/telemetry`,\n * caches the consent check for the lifetime of the session, and provides\n * typed methods for each SDK telemetry event.\n *\n * @internal\n */\nexport function createTelemetryManager(options: TelemetryManagerOptions): TelemetryManager {\n const {sessionId, getClient, projectId, environment} = options\n const startedAt = Date.now()\n const emittedHooks = new Set<string>()\n\n let cachedConsent: {status: ConsentStatus} | null = null\n\n const resolveConsent = async (): Promise<{status: ConsentStatus}> => {\n if (cachedConsent) return cachedConsent\n try {\n const client = getClient()\n const result = await client.request<{status: ConsentStatus}>({\n uri: '/intake/telemetry-status',\n tag: CONSENT_TAG,\n })\n cachedConsent = result\n } catch {\n cachedConsent = {status: 'undetermined'}\n }\n return cachedConsent\n }\n\n const enrichBatch = (batch: TelemetryEvent[]) =>\n batch.map((event) => {\n // Trace events (`trace.start` / `trace.log` / `trace.error` /\n // `trace.complete`) arrive with their own caller-provided `context`.\n // Log / userProperties events don't. Narrow via `in` so `event`\n // stays typed as `TelemetryEvent`, then merge so we don't drop the\n // trace context. SDK-owned fields below win on conflict.\n const existing =\n 'context' in event ? (event.context as Record<string, unknown> | undefined) : undefined\n return {\n ...event,\n context: {\n ...existing,\n version: CORE_SDK_VERSION,\n environment,\n origin: typeof window !== 'undefined' ? window.location.origin : 'node',\n },\n }\n })\n\n const sendEvents = async (batch: TelemetryEvent[]): Promise<unknown> => {\n const client = getClient()\n log.debug('sending event batch', {batchSize: batch.length, environment})\n return client.request({\n uri: '/intake/batch',\n method: 'POST',\n body: {projectId, batch: enrichBatch(batch)},\n tag: BATCH_TAG,\n })\n }\n\n const store: TelemetryStore<Record<string, unknown>> = createBatchedStore(\n sessionId as SessionId,\n {\n flushInterval: FLUSH_INTERVAL_MS,\n resolveConsent,\n sendEvents,\n },\n )\n\n const logger: TelemetryLogger<Record<string, unknown>> = store.logger\n\n return {\n async checkConsent() {\n const {status} = await resolveConsent()\n return status === 'granted'\n },\n\n logSessionStarted(data) {\n log.debug('event: SDK Session Started', {\n projectId: data.projectId,\n perspective: data.perspective,\n authMethod: data.authMethod,\n version: CORE_SDK_VERSION,\n environment,\n })\n logger.log(SDKSessionStarted, {\n version: CORE_SDK_VERSION,\n ...data,\n })\n },\n\n logHookFirstUsed(hookName: string) {\n if (emittedHooks.has(hookName)) return\n emittedHooks.add(hookName)\n log.debug('event: SDK Hook Mounted', {hookName})\n logger.log(SDKHookMounted, {hookName})\n },\n\n logError(errorType: string, hookName: string) {\n log.debug('event: SDK Error', {errorType, hookName})\n logger.log(SDKError, {errorType, hookName})\n },\n\n endSession() {\n const durationSeconds = Math.round((Date.now() - startedAt) / 1000)\n log.debug('event: SDK Session Ended', {\n durationSeconds,\n hooksUsed: [...emittedHooks],\n environment,\n })\n logger.log(SDKSessionEnded, {\n durationSeconds,\n hooksUsed: [...emittedHooks],\n })\n\n store.flush().catch(() => {\n // Best-effort flush on dispose; swallow errors\n })\n store.end()\n },\n\n dispose() {\n store.end()\n },\n\n get hooksUsed(): ReadonlySet<string> {\n return emittedHooks\n },\n }\n}\n"],"names":[],"mappings":";;;;AAeA,MAAM,oBAAoB,KACpB,cAAc,yBACd,YAAY,mBAEZ,MAAM,aAAa,WAAW;AAyD7B,SAAS,uBAAuB,SAAoD;AACzF,QAAM,EAAC,WAAW,WAAW,WAAW,YAAA,IAAe,SACjD,YAAY,KAAK,IAAA,GACjB,mCAAmB,IAAA;AAEzB,MAAI,gBAAgD;AAEpD,QAAM,iBAAiB,YAA8C;AACnE,QAAI,cAAe,QAAO;AAC1B,QAAI;AAMF,sBAJe,MADA,UAAA,EACa,QAAiC;AAAA,QAC3D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,IAEH,QAAQ;AACN,sBAAgB,EAAC,QAAQ,eAAA;AAAA,IAC3B;AACA,WAAO;AAAA,EACT,GAEM,cAAc,CAAC,UACnB,MAAM,IAAI,CAAC,UAAU;AAMnB,UAAM,WACJ,aAAa,QAAS,MAAM,UAAkD;AAChF,WAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG;AAAA,QACH,SAAS;AAAA,QACT;AAAA,QACA,QAAQ,OAAO,SAAW,MAAc,OAAO,SAAS,SAAS;AAAA,MAAA;AAAA,IACnE;AAAA,EAEJ,CAAC,GAaG,QAAiD;AAAA,IACrD;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf;AAAA,MACA,YAhBe,OAAO,UAA8C;AACtE,cAAM,SAAS,UAAA;AACf,eAAA,IAAI,MAAM,uBAAuB,EAAC,WAAW,MAAM,QAAQ,YAAA,CAAY,GAChE,OAAO,QAAQ;AAAA,UACpB,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,MAAM,EAAC,WAAW,OAAO,YAAY,KAAK,EAAA;AAAA,UAC1C,KAAK;AAAA,QAAA,CACN;AAAA,MACH;AAAA,IAAA;AAAA,EAQE,GAGI,SAAmD,MAAM;AAE/D,SAAO;AAAA,IACL,MAAM,eAAe;AACnB,YAAM,EAAC,WAAU,MAAM,eAAA;AACvB,aAAO,WAAW;AAAA,IACpB;AAAA,IAEA,kBAAkB,MAAM;AACtB,UAAI,MAAM,8BAA8B;AAAA,QACtC,WAAW,KAAK;AAAA,QAChB,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK;AAAA,QACjB,SAAS;AAAA,QACT;AAAA,MAAA,CACD,GACD,OAAO,IAAI,mBAAmB;AAAA,QAC5B,SAAS;AAAA,QACT,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AAAA,IAEA,iBAAiB,UAAkB;AAC7B,mBAAa,IAAI,QAAQ,MAC7B,aAAa,IAAI,QAAQ,GACzB,IAAI,MAAM,2BAA2B,EAAC,SAAA,CAAS,GAC/C,OAAO,IAAI,gBAAgB,EAAC,UAAS;AAAA,IACvC;AAAA,IAEA,SAAS,WAAmB,UAAkB;AAC5C,UAAI,MAAM,oBAAoB,EAAC,WAAW,SAAA,CAAS,GACnD,OAAO,IAAI,UAAU,EAAC,WAAW,UAAS;AAAA,IAC5C;AAAA,IAEA,aAAa;AACX,YAAM,kBAAkB,KAAK,OAAO,KAAK,IAAA,IAAQ,aAAa,GAAI;AAClE,UAAI,MAAM,4BAA4B;AAAA,QACpC;AAAA,QACA,WAAW,CAAC,GAAG,YAAY;AAAA,QAC3B;AAAA,MAAA,CACD,GACD,OAAO,IAAI,iBAAiB;AAAA,QAC1B;AAAA,QACA,WAAW,CAAC,GAAG,YAAY;AAAA,MAAA,CAC5B,GAED,MAAM,MAAA,EAAQ,MAAM,MAAM;AAAA,MAE1B,CAAC,GACD,MAAM,IAAA;AAAA,IACR;AAAA,IAEA,UAAU;AACR,YAAM,IAAA;AAAA,IACR;AAAA,IAEA,IAAI,YAAiC;AACnC,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { getEnv } from "./createGroqSearchFilter.js";
2
- var version = "2.11.1";
2
+ var version = "2.12.0";
3
3
  const CORE_SDK_VERSION = getEnv("PKG_VERSION") || `${version}-development`;
4
4
  export {
5
5
  CORE_SDK_VERSION
@@ -1,10 +1,13 @@
1
- import { F as createGroqSearchFilter, Lr as SanityInstance, U as getUsersKey, W as parseUsersKey, Y as getQueryKey, Z as parseQueryKey, a as isProjectUserNotFoundClientError, ht as PREVIEW_PROJECTION, i as getClientErrorApiType, mt as transformProjectionToPreview, n as getClientErrorApiBody, r as getClientErrorApiDescription, t as ApiErrorBody, zr as isStudioConfig } from "../_chunks-dts/utils.js";
1
+ import { $ as parseQueryKey, G as parseUsersKey, I as createGroqSearchFilter, W as getUsersKey, Z as getQueryKey, _t as PREVIEW_PROJECTION, a as isProjectUserNotFoundClientError, gt as transformProjectionToPreview, i as getClientErrorApiType, ii as SanityInstance, n as getClientErrorApiBody, oi as isStudioConfig, r as getClientErrorApiDescription, t as ApiErrorBody } from "../_chunks-dts/utils.js";
2
2
  import { SanityClient } from "@sanity/client";
3
3
  /**
4
- * Manages dev-mode telemetry for a single SDK instance.
4
+ * Manages telemetry for a single SDK instance.
5
5
  *
6
6
  * Wraps `@sanity/telemetry`'s batched store with SDK-specific concerns:
7
7
  * consent caching, session lifecycle events, and hook usage tracking.
8
+ * The `environment` is captured at construction time and recorded in
9
+ * the event context so downstream pipelines can distinguish dev and
10
+ * production sessions.
8
11
  *
9
12
  * @internal
10
13
  */
@@ -16,17 +19,17 @@ interface TelemetryManager {
16
19
  * will be dropped on the first flush.
17
20
  */
18
21
  checkConsent(): Promise<boolean>;
19
- /** Log a "SDK Dev Session Started" event */
22
+ /** Log a "SDK Session Started" event */
20
23
  logSessionStarted(data: {
21
24
  projectId: string;
22
25
  perspective: string;
23
26
  authMethod: string;
24
27
  }): void;
25
- /** Log a "SDK Hook First Used" event (deduplicated per hook name) */
28
+ /** Log a "SDK Hook Mounted" event (deduplicated per hook name) */
26
29
  logHookFirstUsed(hookName: string): void;
27
- /** Log a "SDK Dev Error" event */
28
- logDevError(errorType: string, hookName: string): void;
29
- /** Log a "SDK Dev Session Ended" event and tear down the store */
30
+ /** Log a "SDK Error" event */
31
+ logError(errorType: string, hookName: string): void;
32
+ /** Log a "SDK Session Ended" event and tear down the store */
30
33
  endSession(): void;
31
34
  /** Tear down the store without logging a session-end event */
32
35
  dispose(): void;
@@ -34,10 +37,23 @@ interface TelemetryManager {
34
37
  readonly hooksUsed: ReadonlySet<string>;
35
38
  }
36
39
  /**
37
- * Initializes dev-mode telemetry for a SDK instance if the environment
38
- * qualifies. Both `telemetryManager` and `clientStore` are dynamically
39
- * imported to avoid circular dependencies and to keep telemetry code
40
- * out of production bundles via code splitting.
40
+ * Initializes telemetry for a SDK instance if the runtime environment
41
+ * qualifies. The environment is resolved by `getTelemetryEnvironment()`:
42
+ *
43
+ * - `'development'` local dev servers (`localhost` / `127.0.0.1`, or
44
+ * Node with `NODE_ENV=development`). This is the original opt-in
45
+ * surface.
46
+ * - `'production'` — apps deployed to Sanity-controlled domains
47
+ * (e.g. `*.sanity.studio`, the dashboard). End users are
48
+ * authenticated Sanity users with Populus consent records, so we
49
+ * apply the same consent gate as the Studio's `telemetry-sink`.
50
+ *
51
+ * Apps on customer-controlled domains return `null` and skip telemetry
52
+ * entirely.
53
+ *
54
+ * `telemetryManager` and `clientStore` are dynamically imported so the
55
+ * telemetry code path stays out of production bundles for apps that
56
+ * don't qualify. Only the lightweight environment check runs at boot.
41
57
  *
42
58
  * The `projectId` must be passed explicitly because the resource
43
59
  * configuration is typically set by the React layer after the
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as ProjectsOptions, $n as NodeState, $r as ReleasePerspective, $t as getFavoritesState, A as isImportError, An as DocumentAction, Ar as AgentTranslateOptions, At as TransportEvent, B as loadMoreUsers, Bn as getDatasetsState, Br as CanvasResource, Bt as UsersGroupState, C as getIndexForKey, Cn as PermissionDeniedReason, Cr as AgentGenerateResult, Ct as ProjectionValuePending, D as slicePath, Dn as CreateDocumentAction, Dr as AgentPromptResult, Dt as PresenceLocation, E as jsonMatch, En as StateSource, Er as AgentPromptOptions, Et as DisconnectEvent, F as createGroqSearchFilter, Fn as deleteDocument, Fr as agentTransform, Ft as ResolveUserOptions, G as getPerspectiveState, Gn as LogLevel, Gr as DocumentHandle, Gt as resolveOrganizations, H as resolveUsers, Hn as configureLogging, Hr as DatasetHandle, Ht as Organizations, I as FetcherStore, In as discardDocument, Ir as agentTranslate, It as ResolveUsersOptions, J as QueryOptions, Jn as LoggerConfig, Jr as DocumentTypeHandle, Jt as OrganizationMember, K as ReleaseDocument, Kn as LogNamespace, Kr as DocumentResource, Kt as Organization, L as FetcherStoreState, Ln as editDocument, Lr as SanityInstance, Lt as SanityUser, M as Intent, Mn as PublishDocumentAction, Mr as agentGenerate, Mt as GetUserOptions, N as IntentFilter, Nn as UnpublishDocumentAction, Nr as agentPatch, Nt as GetUsersOptions, O as stringifyPath, On as DeleteDocumentAction, Or as AgentTransformOptions, Ot as RollCallEvent, P as defineIntent, Pn as createDocument, Pr as agentPrompt, Pt as Membership, Q as resolveQuery, Qn as createProjectHandle, Qr as ProjectHandle, Qt as FavoriteStatusResponse, R as getUserState, Rn as publishDocument, Rr as createSanityInstance, Rt as SanityUserResponse, S as SanityProject, Sn as DocumentPermissionsResult, Sr as AgentGenerateOptions, St as ValuePending, T as joinPaths, Tn as Selector, Tr as AgentPatchResult, Tt as getPresence, U as getUsersKey, Un as InstanceContext, Ur as DatasetResource, Ut as OrganizationsOptions, V as resolveUser, Vn as resolveDatasets, Vr as CanvasSource, Vt as UsersStoreState, W as parseUsersKey, Wn as LogContext, Wr as DatasetSource, Wt as getOrganizationsState, X as getQueryState, Xn as createDocumentHandle, Xr as MediaLibrarySource, Xt as getOrganizationState, Y as getQueryKey, Yn as createDatasetHandle, Yr as MediaLibraryResource, Yt as OrganizationOptions, Z as parseQueryKey, Zn as createDocumentTypeHandle, Zr as PerspectiveHandle, Zt as resolveOrganization, _ as getTokenState, _n as getDocumentSyncStatus, _r as logout, _t as getPreviewState, a as isProjectUserNotFoundClientError, ai as isDatasetResource, an as DocumentCreatedEvent, ar as destroyController, at as ProjectBase, b as Role, bn as resolvePermissions, br as OrgVerificationResult, bt as PreviewStoreState, c as ErrorAuthState, ci as isMediaLibrarySource, cn as DocumentEditedEvent, cr as releaseChannel, ct as ProjectMetadata, d as LoggingInAuthState, dn as DocumentTransactionSubmissionResult, dr as RequestNewTokenMessage, dt as resolveProject, ei as SanityConfig, en as resolveFavoritesState, er as getNodeState, et as getProjectsState, f as getAuthState, fn as DocumentUnpublishedEvent, fr as WindowMessage, ft as ResolvePreviewOptions, g as getLoginUrlState, gn as getDocumentState, gr as getClientState, gt as GetPreviewStateOptions, h as getIsInDashboardState, hn as DocumentOptions, hr as getClient, ht as PREVIEW_PROJECTION, i as getClientErrorApiType, ii as isCanvasSource, in as ActionErrorEvent, ir as ComlinkControllerState, it as Project, j as getCorsErrorProjectId, jn as EditDocumentAction, jr as AgentTranslateResult, jt as UserPresence, k as CORE_SDK_VERSION, kn as DiscardDocumentAction, kr as AgentTransformResult, kt as StateEvent, l as LoggedInAuthState, li as AuthConfig, ln as DocumentEvent, lr as FrameMessage, lt as ProjectOptions, m as getDashboardOrganizationId, mn as TransactionRevertedEvent, mr as ClientStoreState, mt as transformProjectionToPreview, n as getClientErrorApiBody, ni as TokenSource, nn as ApplyDocumentActionsOptions, nr as getOrCreateNode, nt as resolveProjection, o as AuthState, oi as isDatasetSource, on as DocumentDeletedEvent, or as getOrCreateChannel, ot as ProjectMember, p as getCurrentUserState, pn as TransactionAcceptedEvent, pr as ClientOptions, pt as resolvePreview, q as getActiveReleasesState, qn as Logger, qr as DocumentSource, qt as OrganizationBase, r as getClientErrorApiDescription, ri as isCanvasResource, rn as applyDocumentActions, rr as releaseNode, rt as getProjectionState, s as AuthStoreState, si as isMediaLibraryResource, sn as DocumentDiscardedEvent, sr as getOrCreateController, st as ProjectMemberRole, t as ApiErrorBody, ti as StudioConfig, tn as ActionsResult, tr as ComlinkNodeState, tt as resolveProjects, u as LoggedOutAuthState, ui as AuthProvider, un as DocumentPublishedEvent, ur as NewTokenResponseMessage, ut as getProjectState, v as setAuthToken, vn as getPermissionsState, vr as handleAuthCallback, vt as PreviewMedia, w as getPathDepth, wn as JsonMatch, wr as AgentPatchOptions, wt as ValidProjection, x as SanityDocument, xn as subscribeDocumentEvents, xr as AuthStateType, xt as PreviewValue, y as CurrentUser, yn as resolveDocument, yr as observeOrganizationVerificationState, yt as PreviewQueryResult, z as getUsersState, zn as unpublishDocument, zr as isStudioConfig, zt as UserProfile } from "./_chunks-dts/utils.js";
2
- export { ActionErrorEvent, ActionsResult, AgentGenerateOptions, AgentGenerateResult, AgentPatchOptions, AgentPatchResult, AgentPromptOptions, AgentPromptResult, AgentTransformOptions, AgentTransformResult, AgentTranslateOptions, AgentTranslateResult, ApiErrorBody, ApplyDocumentActionsOptions, AuthConfig, AuthProvider, AuthState, AuthStateType, AuthStoreState, CORE_SDK_VERSION, CanvasResource, CanvasSource, ClientOptions, ClientStoreState as ClientState, ComlinkControllerState, ComlinkNodeState, CreateDocumentAction, CurrentUser, DatasetHandle, DatasetResource, DatasetSource, DeleteDocumentAction, DiscardDocumentAction, DisconnectEvent, DocumentAction, DocumentCreatedEvent, DocumentDeletedEvent, DocumentDiscardedEvent, DocumentEditedEvent, DocumentEvent, DocumentHandle, DocumentOptions, DocumentPermissionsResult, DocumentPublishedEvent, DocumentResource, DocumentSource, DocumentTransactionSubmissionResult, DocumentTypeHandle, DocumentUnpublishedEvent, EditDocumentAction, ErrorAuthState, FavoriteStatusResponse, FetcherStore, FetcherStoreState, FrameMessage, GetPreviewStateOptions, GetUserOptions, GetUsersOptions, InstanceContext, Intent, IntentFilter, JsonMatch, LogContext, LogLevel, LogNamespace, LoggedInAuthState, LoggedOutAuthState, Logger, LoggerConfig, LoggingInAuthState, MediaLibraryResource, MediaLibrarySource, Membership, NewTokenResponseMessage, NodeState, OrgVerificationResult, Organization, OrganizationBase, OrganizationMember, OrganizationOptions, Organizations, OrganizationsOptions, PREVIEW_PROJECTION, PermissionDeniedReason, PerspectiveHandle, PresenceLocation, PreviewMedia, PreviewQueryResult, PreviewStoreState, PreviewValue, Project, ProjectBase, ProjectHandle, ProjectMember, ProjectMemberRole, ProjectMetadata, ProjectOptions, ProjectionValuePending, ProjectsOptions, PublishDocumentAction, QueryOptions, ReleaseDocument, ReleasePerspective, RequestNewTokenMessage, ResolvePreviewOptions, ResolveUserOptions, ResolveUsersOptions, Role, RollCallEvent, SanityConfig, SanityDocument, SanityInstance, SanityProject, SanityUser, SanityUserResponse, Selector, StateEvent, StateSource, StudioConfig, TokenSource, TransactionAcceptedEvent, TransactionRevertedEvent, TransportEvent, UnpublishDocumentAction, UserPresence, UserProfile, UsersGroupState, UsersStoreState, ValidProjection, ValuePending, WindowMessage, agentGenerate, agentPatch, agentPrompt, agentTransform, agentTranslate, applyDocumentActions, configureLogging, createDatasetHandle, createDocument, createDocumentHandle, createDocumentTypeHandle, createGroqSearchFilter, createProjectHandle, createSanityInstance, defineIntent, deleteDocument, destroyController, discardDocument, editDocument, getActiveReleasesState, getAuthState, getClient, getClientErrorApiBody, getClientErrorApiDescription, getClientErrorApiType, getClientState, getCorsErrorProjectId, getCurrentUserState, getDashboardOrganizationId, getDatasetsState, getDocumentState, getDocumentSyncStatus, getFavoritesState, getIndexForKey, getIsInDashboardState, getLoginUrlState, getNodeState, getOrCreateChannel, getOrCreateController, getOrCreateNode, getOrganizationState, getOrganizationsState, getPathDepth, getPermissionsState, getPerspectiveState, getPresence, getPreviewState, getProjectState, getProjectionState, getProjectsState, getQueryKey, getQueryState, getTokenState, getUserState, getUsersKey, getUsersState, handleAuthCallback, isCanvasResource, isCanvasSource, isDatasetResource, isDatasetSource, isImportError, isMediaLibraryResource, isMediaLibrarySource, isProjectUserNotFoundClientError, isStudioConfig, joinPaths, jsonMatch, loadMoreUsers, logout, observeOrganizationVerificationState, parseQueryKey, parseUsersKey, publishDocument, releaseChannel, releaseNode, resolveDatasets, resolveDocument, resolveFavoritesState, resolveOrganization, resolveOrganizations, resolvePermissions, resolvePreview, resolveProject, resolveProjection, resolveProjects, resolveQuery, resolveUser, resolveUsers, setAuthToken, slicePath, stringifyPath, subscribeDocumentEvents, transformProjectionToPreview, unpublishDocument };
1
+ import { $ as parseQueryKey, $n as editDocument, $r as agentGenerate, $t as resolveOrganization, A as CORE_SDK_VERSION, Ai as isMediaLibrarySource, An as Action, Ar as FrameMessage, At as RollCallEvent, B as getUsersState, Bn as PublishDocumentAction, Br as observeOrganizationVerificationState, Bt as SanityUserResponse, C as SanityProject, Ci as StudioConfig, Cn as resolvePermissions, Cr as getOrCreateNode, Ct as PreviewValue, D as jsonMatch, Di as isDatasetResource, Dn as JsonMatch, Dr as getOrCreateChannel, Dt as getPresence, E as joinPaths, Ei as isCanvasSource, En as PermissionDeniedReason, Er as destroyController, Et as ValidProjection, F as defineIntent, Fn as DeleteReleaseAction, Fr as ClientStoreState, Ft as GetUsersOptions, G as parseUsersKey, Gn as UnpublishDocumentAction, Gr as AgentPatchOptions, Gt as OrganizationsOptions, H as resolveUser, Hn as ReleaseAction, Hr as AuthStateType, Ht as UsersGroupState, I as createGroqSearchFilter, In as DiscardDocumentAction, Ir as getClient, It as Membership, J as getActiveReleasesState, Jn as createDocument, Jr as AgentPromptResult, Jt as Organization, K as getPerspectiveState, Kn as UnscheduleReleaseAction, Kr as AgentPatchResult, Kt as getOrganizationsState, L as FetcherStore, Ln as DocumentAction, Lr as getClientState, Lt as ResolveUserOptions, M as getCorsErrorProjectId, Mi as AuthProvider, Mn as CreateDocumentAction, Mr as RequestNewTokenMessage, Mt as TransportEvent, N as Intent, Nn as CreateReleaseAction, Nr as WindowMessage, Nt as UserPresence, O as slicePath, Oi as isDatasetSource, On as Selector, Or as getOrCreateController, Ot as DisconnectEvent, P as IntentFilter, Pn as DeleteDocumentAction, Pr as ClientOptions, Pt as GetUserOptions, Q as getQueryState, Qn as discardDocument, Qr as AgentTranslateResult, Qt as getOrganizationState, R as FetcherStoreState, Rn as EditDocumentAction, Rr as logout, Rt as ResolveUsersOptions, S as SanityDocument, Si as SanityConfig, Sn as resolveDocument, Sr as ComlinkNodeState, St as PreviewStoreState, T as getPathDepth, Ti as isCanvasResource, Tn as DocumentPermissionsResult, Tr as ComlinkControllerState, Tt as ProjectionValuePending, U as resolveUsers, Un as ScheduleReleaseAction, Ur as AgentGenerateOptions, Ut as UsersStoreState, V as loadMoreUsers, Vn as PublishReleaseAction, Vr as OrgVerificationResult, Vt as UserProfile, W as getUsersKey, Wn as UnarchiveReleaseAction, Wr as AgentGenerateResult, Wt as Organizations, X as QueryOptions, Xn as deleteDocument, Xr as AgentTransformResult, Xt as OrganizationMember, Y as getAllReleasesState, Yn as createRelease, Yr as AgentTransformOptions, Yt as OrganizationBase, Z as getQueryKey, Zn as deleteRelease, Zr as AgentTranslateOptions, Zt as OrganizationOptions, _ as getTokenState, _i as MediaLibrarySource, _n as TransactionRevertedEvent, _r as createDocumentHandle, _t as PREVIEW_PROJECTION, a as isProjectUserNotFoundClientError, ai as createSanityInstance, an as ApplyDocumentActionsOptions, ar as unpublishDocument, at as getProjectionState, b as ReleaseDocument, bi as ReleaseHandle, bn as getDocumentSyncStatus, br as NodeState, bt as PreviewMedia, c as ErrorAuthState, ci as CanvasSource, cn as DocumentCreatedEvent, cr as resolveDatasets, ct as ProjectMember, d as LoggingInAuthState, di as DatasetSource, dn as DocumentEditedEvent, dr as LogContext, dt as ProjectOptions, ei as agentPatch, en as FavoriteStatusResponse, er as editRelease, et as resolveQuery, f as getAuthState, fi as DocumentHandle, fn as DocumentEvent, fr as LogLevel, ft as getProjectState, g as getLoginUrlState, gi as MediaLibraryResource, gn as TransactionAcceptedEvent, gr as createDatasetHandle, gt as transformProjectionToPreview, h as getIsInDashboardState, hi as DocumentTypeHandle, hn as DocumentUnpublishedEvent, hr as LoggerConfig, ht as resolvePreview, i as getClientErrorApiType, ii as SanityInstance, in as ActionsResult, ir as unarchiveRelease, it as resolveProjection, j as isImportError, ji as AuthConfig, jn as ArchiveReleaseAction, jr as NewTokenResponseMessage, jt as StateEvent, k as stringifyPath, ki as isMediaLibraryResource, kn as StateSource, kr as releaseChannel, kt as PresenceLocation, l as LoggedInAuthState, li as DatasetHandle, ln as DocumentDeletedEvent, lr as configureLogging, lt as ProjectMemberRole, m as getDashboardOrganizationId, mi as DocumentSource, mn as DocumentTransactionSubmissionResult, mr as Logger, mt as ResolvePreviewOptions, n as getClientErrorApiBody, ni as agentTransform, nn as resolveFavoritesState, nr as publishRelease, nt as getProjectsState, o as AuthState, oi as isStudioConfig, on as applyDocumentActions, or as unscheduleRelease, ot as Project, p as getCurrentUserState, pi as DocumentResource, pn as DocumentPublishedEvent, pr as LogNamespace, pt as resolveProject, q as ReleaseState, qn as archiveRelease, qr as AgentPromptOptions, qt as resolveOrganizations, r as getClientErrorApiDescription, ri as agentTranslate, rn as getReleaseDocumentId, rr as scheduleRelease, rt as resolveProjects, s as AuthStoreState, si as CanvasResource, sn as ActionErrorEvent, sr as getDatasetsState, st as ProjectBase, t as ApiErrorBody, ti as agentPrompt, tn as getFavoritesState, tr as publishDocument, tt as ProjectsOptions, u as LoggedOutAuthState, ui as DatasetResource, un as DocumentDiscardedEvent, ur as InstanceContext, ut as ProjectMetadata, v as setAuthToken, vi as PerspectiveHandle, vn as DocumentOptions, vr as createDocumentTypeHandle, vt as GetPreviewStateOptions, w as getIndexForKey, wi as TokenSource, wn as subscribeDocumentEvents, wr as releaseNode, wt as ValuePending, x as Role, xi as ReleasePerspective, xn as getPermissionsState, xr as getNodeState, xt as PreviewQueryResult, y as CurrentUser, yi as ProjectHandle, yn as getDocumentState, yr as createProjectHandle, yt as getPreviewState, z as getUserState, zn as EditReleaseAction, zr as handleAuthCallback, zt as SanityUser } from "./_chunks-dts/utils.js";
2
+ export { Action, ActionErrorEvent, ActionsResult, AgentGenerateOptions, AgentGenerateResult, AgentPatchOptions, AgentPatchResult, AgentPromptOptions, AgentPromptResult, AgentTransformOptions, AgentTransformResult, AgentTranslateOptions, AgentTranslateResult, ApiErrorBody, ApplyDocumentActionsOptions, ArchiveReleaseAction, AuthConfig, AuthProvider, AuthState, AuthStateType, AuthStoreState, CORE_SDK_VERSION, CanvasResource, CanvasSource, ClientOptions, ClientStoreState as ClientState, ComlinkControllerState, ComlinkNodeState, CreateDocumentAction, CreateReleaseAction, CurrentUser, DatasetHandle, DatasetResource, DatasetSource, DeleteDocumentAction, DeleteReleaseAction, DiscardDocumentAction, DisconnectEvent, DocumentAction, DocumentCreatedEvent, DocumentDeletedEvent, DocumentDiscardedEvent, DocumentEditedEvent, DocumentEvent, DocumentHandle, DocumentOptions, DocumentPermissionsResult, DocumentPublishedEvent, DocumentResource, DocumentSource, DocumentTransactionSubmissionResult, DocumentTypeHandle, DocumentUnpublishedEvent, EditDocumentAction, EditReleaseAction, ErrorAuthState, FavoriteStatusResponse, FetcherStore, FetcherStoreState, FrameMessage, GetPreviewStateOptions, GetUserOptions, GetUsersOptions, InstanceContext, Intent, IntentFilter, JsonMatch, LogContext, LogLevel, LogNamespace, LoggedInAuthState, LoggedOutAuthState, Logger, LoggerConfig, LoggingInAuthState, MediaLibraryResource, MediaLibrarySource, Membership, NewTokenResponseMessage, NodeState, OrgVerificationResult, Organization, OrganizationBase, OrganizationMember, OrganizationOptions, Organizations, OrganizationsOptions, PREVIEW_PROJECTION, PermissionDeniedReason, PerspectiveHandle, PresenceLocation, PreviewMedia, PreviewQueryResult, PreviewStoreState, PreviewValue, Project, ProjectBase, ProjectHandle, ProjectMember, ProjectMemberRole, ProjectMetadata, ProjectOptions, ProjectionValuePending, ProjectsOptions, PublishDocumentAction, PublishReleaseAction, QueryOptions, ReleaseAction, ReleaseDocument, ReleaseHandle, ReleasePerspective, ReleaseState, RequestNewTokenMessage, ResolvePreviewOptions, ResolveUserOptions, ResolveUsersOptions, Role, RollCallEvent, SanityConfig, SanityDocument, SanityInstance, SanityProject, SanityUser, SanityUserResponse, ScheduleReleaseAction, Selector, StateEvent, StateSource, StudioConfig, TokenSource, TransactionAcceptedEvent, TransactionRevertedEvent, TransportEvent, UnarchiveReleaseAction, UnpublishDocumentAction, UnscheduleReleaseAction, UserPresence, UserProfile, UsersGroupState, UsersStoreState, ValidProjection, ValuePending, WindowMessage, agentGenerate, agentPatch, agentPrompt, agentTransform, agentTranslate, applyDocumentActions, archiveRelease, configureLogging, createDatasetHandle, createDocument, createDocumentHandle, createDocumentTypeHandle, createGroqSearchFilter, createProjectHandle, createRelease, createSanityInstance, defineIntent, deleteDocument, deleteRelease, destroyController, discardDocument, editDocument, editRelease, getActiveReleasesState, getAllReleasesState, getAuthState, getClient, getClientErrorApiBody, getClientErrorApiDescription, getClientErrorApiType, getClientState, getCorsErrorProjectId, getCurrentUserState, getDashboardOrganizationId, getDatasetsState, getDocumentState, getDocumentSyncStatus, getFavoritesState, getIndexForKey, getIsInDashboardState, getLoginUrlState, getNodeState, getOrCreateChannel, getOrCreateController, getOrCreateNode, getOrganizationState, getOrganizationsState, getPathDepth, getPermissionsState, getPerspectiveState, getPresence, getPreviewState, getProjectState, getProjectionState, getProjectsState, getQueryKey, getQueryState, getReleaseDocumentId, getTokenState, getUserState, getUsersKey, getUsersState, handleAuthCallback, isCanvasResource, isCanvasSource, isDatasetResource, isDatasetSource, isImportError, isMediaLibraryResource, isMediaLibrarySource, isProjectUserNotFoundClientError, isStudioConfig, joinPaths, jsonMatch, loadMoreUsers, logout, observeOrganizationVerificationState, parseQueryKey, parseUsersKey, publishDocument, publishRelease, releaseChannel, releaseNode, resolveDatasets, resolveDocument, resolveFavoritesState, resolveOrganization, resolveOrganizations, resolvePermissions, resolvePreview, resolveProject, resolveProjection, resolveProjects, resolveQuery, resolveUser, resolveUsers, scheduleRelease, setAuthToken, slicePath, stringifyPath, subscribeDocumentEvents, transformProjectionToPreview, unarchiveRelease, unpublishDocument, unscheduleRelease };