@sanity/client 6.28.3-instruct.0 → 6.28.3-instruct.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/dist/index.d.ts CHANGED
@@ -41,6 +41,18 @@ export declare interface ActionErrorItem {
41
41
  index: number
42
42
  }
43
43
 
44
+ /** @public */
45
+ declare class AiClient {
46
+ #private
47
+ constructor(client: SanityClient, httpRequest: HttpRequest)
48
+ instruct(request: InstructAsyncInstruction): Promise<{
49
+ _id: string
50
+ }>
51
+ instruct<DocumentShape extends Record<string, Any>>(
52
+ request: InstructSyncInstruction<DocumentShape>,
53
+ ): Promise<IdentifiedSanityDocumentStub & DocumentShape>
54
+ }
55
+
44
56
  /** @internal */
45
57
  export declare type AllDocumentIdsMutationOptions = BaseMutationOptions & {
46
58
  returnFirst: false
@@ -118,110 +130,6 @@ export declare class AssetsClient {
118
130
  ): Promise<SanityAssetDocument | SanityImageAssetDocument>
119
131
  }
120
132
 
121
- /** @beta */
122
- export declare type AssistAsyncInstruction<
123
- T extends Record<string, Any_2> = Record<string, Any_2>,
124
- > = (ExistingDocumentRequest | CreateDocumentRequest<T>) & AssistRequestBase & Async
125
-
126
- /** @public */
127
- declare class AssistClient {
128
- #private
129
- constructor(client: SanityClient, httpRequest: HttpRequest)
130
- instruct(request: AssistAsyncInstruction): Promise<{
131
- _id: string
132
- }>
133
- instruct<DocumentShape extends Record<string, Any>>(
134
- request: AssistSyncInstruction<DocumentShape>,
135
- ): Promise<IdentifiedSanityDocumentStub & DocumentShape>
136
- }
137
-
138
- /** @beta */
139
- export declare type AssistInstruction<T extends Record<string, Any_2> = Record<string, Any_2>> =
140
- | AssistSyncInstruction<T>
141
- | AssistAsyncInstruction<T>
142
-
143
- declare interface AssistRequestBase {
144
- /** schemaId as reported by sanity deploy / sanity schema store */
145
- schemaId: string
146
- /** string template using $variable – more on this below under "Dynamic instruction" */
147
- instruction: string
148
- /** param values for the string template, keys are the variable name, ie if the template has "$variable", one key must be "variable" */
149
- instructionParams?: InstructionParams
150
- /**
151
- * Optional document path output target for the instruction.
152
- * When provided, the instruction will apply to this path in the document and its children.
153
- *
154
- * ## Examples
155
- * - `path: 'title'` will output to the title field in the document
156
- * - `path: 'array[_key="xx"]'` will output to the item with `_key: 'xx'` in the array field
157
- */
158
- path?: string
159
- /**
160
- * Controls sub-paths in the document that can be output to.
161
- *
162
- * The string-paths are relative to the `path` param
163
- *
164
- * Note: these path strings are less strictly validated than the `path` param itself:
165
- * if an relative-path does not exist or is invalid, it will be silently ignored.
166
- *
167
- * @see AssistRequestBase#conditionalPaths
168
- * @see AssistRequestBase#outputTypes
169
- */
170
- relativeOutputPaths?:
171
- | {
172
- include: string[]
173
- }
174
- | {
175
- exclude: string[]
176
- }
177
- /**
178
- * Controls which types the instruction is allowed to output to.
179
- *
180
- * @see AssistRequestBase#relativeOutputPaths
181
- * @see AssistRequestBase#conditionalPaths
182
- */
183
- outputTypes?:
184
- | {
185
- include: string[]
186
- }
187
- | {
188
- exclude: string[]
189
- }
190
- /**
191
- * When a type or field in the schema has a function set for `hidden` or `readOnly`, it is conditional.
192
- *
193
- * By default, AI Assist will not output to conditional `readOnly` and `hidden` fields,
194
- * ie, they are considered to resolve to `readOnly: true` / `hidden: true`.
195
- *
196
- * `conditionalPaths` param allows setting the default conditional value for
197
- * `hidden` and `readOnly` to false,
198
- * or individually set `hidden` and `readOnly` state for individual document paths.
199
- *
200
- *
201
- * Note: fields and types with explicit readOnly: true or hidden: true in the schema, are not available to AI Assist,
202
- * and cannot be changed via conditionalPaths.
203
- *
204
- * conditionalPaths state only apply to fields and types that have conditional `hidden` or `readOnly` in their schema definition.
205
- *
206
- * @see AssistRequestBase#relativeOutputPaths
207
- * @see AssistRequestBase#outputTypes
208
- */
209
- conditionalPaths?: {
210
- defaultReadOnly?: boolean
211
- defaultHidden?: boolean
212
- paths?: {
213
- /** path here is not a relative path: it must be the full document path, regardless of `path` param on the request itself */
214
- path: string
215
- readOnly: boolean
216
- hidden: boolean
217
- }[]
218
- }
219
- }
220
-
221
- /** @beta */
222
- export declare type AssistSyncInstruction<T extends Record<string, Any_2> = Record<string, Any_2>> =
223
- (ExistingDocumentRequest | CreateDocumentRequest<T>) & AssistRequestBase & Sync
224
-
225
133
  declare interface Async {
226
134
  /**
227
135
  * When async: true, requests responds with status 201 and {_id} as response body as soon as the request is validated.
@@ -573,12 +481,6 @@ export declare class ConnectionFailedError extends Error {
573
481
  readonly name = 'ConnectionFailedError'
574
482
  }
575
483
 
576
- /** @beta */
577
- export declare interface ConstantInstructionParam {
578
- type: 'constant'
579
- value: string
580
- }
581
-
582
484
  /** @public */
583
485
  export declare interface ContentSourceMap {
584
486
  mappings: ContentSourceMapMappings
@@ -928,23 +830,6 @@ declare interface ExistingDocumentRequest {
928
830
  documentId: string
929
831
  }
930
832
 
931
- /**
932
- *
933
- * Includes a LLM-friendly version of the field value in the instruction
934
- * @beta
935
- * */
936
- export declare interface FieldInstructionParam {
937
- type: 'field'
938
- /**
939
- * Examples: 'title', 'array[_key=="key"].field
940
- */
941
- path: string
942
- /**
943
- * If omitted, implicitly uses the documentId of the instruction target
944
- */
945
- documentId?: string
946
- }
947
-
948
833
  /** @public */
949
834
  export declare type FilterDefault = (props: {
950
835
  /**
@@ -1011,13 +896,6 @@ export declare type FirstDocumentMutationOptions = BaseMutationOptions & {
1011
896
  returnDocuments?: true
1012
897
  }
1013
898
 
1014
- /** @beta */
1015
- export declare interface GroqInstructionParam {
1016
- type: 'groq'
1017
- query: string
1018
- params?: Record<string, string>
1019
- }
1020
-
1021
899
  /** @public */
1022
900
  export declare type HttpRequest = {
1023
901
  (options: RequestOptions, requester: Requester): ReturnType<Requester>
@@ -1079,15 +957,141 @@ export declare type InsertPatch =
1079
957
  }
1080
958
 
1081
959
  /** @beta */
1082
- export declare type InstructionParam =
960
+ export declare type InstructAsyncInstruction<
961
+ T extends Record<string, Any_2> = Record<string, Any_2>,
962
+ > = (ExistingDocumentRequest | CreateDocumentRequest<T>) & InstructRequestBase & Async
963
+
964
+ /** @beta */
965
+ export declare interface InstructConstantInstructionParam {
966
+ type: 'constant'
967
+ value: string
968
+ }
969
+
970
+ /**
971
+ *
972
+ * Includes a LLM-friendly version of the field value in the instruction
973
+ * @beta
974
+ * */
975
+ export declare interface InstructFieldInstructionParam {
976
+ type: 'field'
977
+ /**
978
+ * Examples: 'title', 'array[_key=="key"].field'
979
+ */
980
+ path: string
981
+ /**
982
+ * If omitted, implicitly uses the documentId of the instruction target
983
+ */
984
+ documentId?: string
985
+ }
986
+
987
+ /**
988
+ * Includes a LLM-friendly version of GROQ query result in the instruction
989
+ * @beta
990
+ * */
991
+ export declare interface InstructGroqInstructionParam {
992
+ type: 'groq'
993
+ query: string
994
+ params?: Record<string, string>
995
+ }
996
+
997
+ /** @beta */
998
+ export declare type InstructInstruction<T extends Record<string, Any_2> = Record<string, Any_2>> =
999
+ | InstructSyncInstruction<T>
1000
+ | InstructAsyncInstruction<T>
1001
+
1002
+ /** @beta */
1003
+ export declare type InstructInstructionParam =
1083
1004
  | string
1084
- | ConstantInstructionParam
1085
- | FieldInstructionParam
1005
+ | InstructConstantInstructionParam
1006
+ | InstructFieldInstructionParam
1086
1007
  | DocumentInstructionParam
1087
- | GroqInstructionParam
1008
+ | InstructGroqInstructionParam
1009
+
1010
+ /** @beta */
1011
+ export declare type InstructInstructionParams = Record<string, InstructInstructionParam>
1012
+
1013
+ declare interface InstructRequestBase {
1014
+ /** schemaId as reported by sanity deploy / sanity schema store */
1015
+ schemaId: string
1016
+ /** string template using $variable – more on this below under "Dynamic instruction" */
1017
+ instruction: string
1018
+ /** param values for the string template, keys are the variable name, ie if the template has "$variable", one key must be "variable" */
1019
+ instructionParams?: InstructInstructionParams
1020
+ /**
1021
+ * Optional document path output target for the instruction.
1022
+ * When provided, the instruction will apply to this path in the document and its children.
1023
+ *
1024
+ * ## Examples
1025
+ * - `path: 'title'` will output to the title field in the document
1026
+ * - `path: 'array[_key="xx"]'` will output to the item with `_key: 'xx'` in the array field
1027
+ */
1028
+ path?: string
1029
+ /**
1030
+ * Controls sub-paths in the document that can be output to.
1031
+ *
1032
+ * The string-paths are relative to the `path` param
1033
+ *
1034
+ * Note: these path strings are less strictly validated than the `path` param itself:
1035
+ * if an relative-path does not exist or is invalid, it will be silently ignored.
1036
+ *
1037
+ * @see InstructRequestBase#conditionalPaths
1038
+ * @see InstructRequestBase#outputTypes
1039
+ */
1040
+ relativeOutputPaths?:
1041
+ | {
1042
+ include: string[]
1043
+ }
1044
+ | {
1045
+ exclude: string[]
1046
+ }
1047
+ /**
1048
+ * Controls which types the instruction is allowed to output to.
1049
+ *
1050
+ * @see InstructRequestBase#relativeOutputPaths
1051
+ * @see InstructRequestBase#conditionalPaths
1052
+ */
1053
+ outputTypes?:
1054
+ | {
1055
+ include: string[]
1056
+ }
1057
+ | {
1058
+ exclude: string[]
1059
+ }
1060
+ /**
1061
+ * When a type or field in the schema has a function set for `hidden` or `readOnly`, it is conditional.
1062
+ *
1063
+ * By default, AI Instruct will not output to conditional `readOnly` and `hidden` fields,
1064
+ * ie, they are considered to resolve to `readOnly: true` / `hidden: true`.
1065
+ *
1066
+ * `conditionalPaths` param allows setting the default conditional value for
1067
+ * `hidden` and `readOnly` to false,
1068
+ * or individually set `hidden` and `readOnly` state for individual document paths.
1069
+ *
1070
+ *
1071
+ * Note: fields and types with explicit readOnly: true or hidden: true in the schema, are not available to AI Instruct,
1072
+ * and cannot be changed via conditionalPaths.
1073
+ *
1074
+ * conditionalPaths state only apply to fields and types that have conditional `hidden` or `readOnly` in their schema definition.
1075
+ *
1076
+ * @see InstructRequestBase#relativeOutputPaths
1077
+ * @see InstructRequestBase#outputTypes
1078
+ */
1079
+ conditionalPaths?: {
1080
+ defaultReadOnly?: boolean
1081
+ defaultHidden?: boolean
1082
+ paths?: {
1083
+ /** path here is not a relative path: it must be the full document path, regardless of `path` param on the request itself */
1084
+ path: string
1085
+ readOnly: boolean
1086
+ hidden: boolean
1087
+ }[]
1088
+ }
1089
+ }
1088
1090
 
1089
1091
  /** @beta */
1090
- export declare type InstructionParams = Record<string, InstructionParam>
1092
+ export declare type InstructSyncInstruction<
1093
+ T extends Record<string, Any_2> = Record<string, Any_2>,
1094
+ > = (ExistingDocumentRequest | CreateDocumentRequest<T>) & InstructRequestBase & Sync
1091
1095
 
1092
1096
  /**
1093
1097
  * Set up a listener that will be notified when mutations occur on documents matching the provided query/filter.
@@ -1449,6 +1453,18 @@ export declare type MutationSelectionQueryParams = {
1449
1453
  [key: string]: Any
1450
1454
  }
1451
1455
 
1456
+ /** @public */
1457
+ declare class ObservableAiClient {
1458
+ #private
1459
+ constructor(client: ObservableSanityClient, httpRequest: HttpRequest)
1460
+ instruct(request: InstructAsyncInstruction): Observable<{
1461
+ _id: string
1462
+ }>
1463
+ instruct<DocumentShape extends Record<string, Any>>(
1464
+ request: InstructSyncInstruction<DocumentShape>,
1465
+ ): Observable<IdentifiedSanityDocumentStub & DocumentShape>
1466
+ }
1467
+
1452
1468
  /** @internal */
1453
1469
  export declare class ObservableAssetsClient {
1454
1470
  #private
@@ -1503,18 +1519,6 @@ export declare class ObservableAssetsClient {
1503
1519
  >
1504
1520
  }
1505
1521
 
1506
- /** @public */
1507
- declare class ObservableAssistClient {
1508
- #private
1509
- constructor(client: ObservableSanityClient, httpRequest: HttpRequest)
1510
- instruct(request: AssistAsyncInstruction): Observable<{
1511
- _id: string
1512
- }>
1513
- instruct<DocumentShape extends Record<string, Any>>(
1514
- request: AssistSyncInstruction<DocumentShape>,
1515
- ): Observable<IdentifiedSanityDocumentStub & DocumentShape>
1516
- }
1517
-
1518
1522
  /** @internal */
1519
1523
  export declare class ObservableDatasetsClient {
1520
1524
  #private
@@ -1638,7 +1642,7 @@ export declare class ObservableSanityClient {
1638
1642
  live: LiveClient
1639
1643
  projects: ObservableProjectsClient
1640
1644
  users: ObservableUsersClient
1641
- assist: ObservableAssistClient
1645
+ ai: ObservableAiClient
1642
1646
  /**
1643
1647
  * Instance properties
1644
1648
  */
@@ -2558,7 +2562,7 @@ export declare class SanityClient {
2558
2562
  live: LiveClient
2559
2563
  projects: ProjectsClient
2560
2564
  users: UsersClient
2561
- assist: AssistClient
2565
+ ai: AiClient
2562
2566
  /**
2563
2567
  * Observable version of the Sanity client, with the same configuration as the promise-based one
2564
2568
  */
package/dist/index.js CHANGED
@@ -555,7 +555,7 @@ const projectHeader = "X-Sanity-Project-ID";
555
555
  function requestOptions(config, overrides = {}) {
556
556
  const headers2 = {}, token = overrides.token || config.token;
557
557
  token && (headers2.Authorization = `Bearer ${token}`), !overrides.useGlobalApi && !config.useProjectHostname && config.projectId && (headers2[projectHeader] = config.projectId);
558
- const withCredentials = !!(typeof overrides.withCredentials > "u" ? config.token || config.withCredentials : overrides.withCredentials), timeout = typeof overrides.timeout > "u" ? config.timeout : overrides.timeout;
558
+ const withCredentials = !!(typeof overrides.withCredentials > "u" ? config.withCredentials : overrides.withCredentials), timeout = typeof overrides.timeout > "u" ? config.timeout : overrides.timeout;
559
559
  return Object.assign({}, overrides, {
560
560
  headers: Object.assign({}, headers2, overrides.headers || {}),
561
561
  timeout: typeof timeout > "u" ? 5 * 60 * 1e3 : timeout,
@@ -778,6 +778,42 @@ function _createAbortError(signal) {
778
778
  const error = new Error(signal?.reason ?? "The operation was aborted.");
779
779
  return error.name = "AbortError", error;
780
780
  }
781
+ function _instruct(client, httpRequest, request) {
782
+ const dataset2 = hasDataset(client.config());
783
+ return _request(client, httpRequest, {
784
+ method: "POST",
785
+ uri: `/assist/tasks/instruct/${dataset2}`,
786
+ body: request
787
+ });
788
+ }
789
+ class ObservableAiClient {
790
+ #client;
791
+ #httpRequest;
792
+ constructor(client, httpRequest) {
793
+ this.#client = client, this.#httpRequest = httpRequest;
794
+ }
795
+ /**
796
+ * Run an ad-hoc instruction for a target document.
797
+ * @param request instruction request
798
+ */
799
+ instruct(request) {
800
+ return _instruct(this.#client, this.#httpRequest, request);
801
+ }
802
+ }
803
+ class AiClient {
804
+ #client;
805
+ #httpRequest;
806
+ constructor(client, httpRequest) {
807
+ this.#client = client, this.#httpRequest = httpRequest;
808
+ }
809
+ /**
810
+ * Run an ad-hoc instruction for a target document.
811
+ * @param request instruction request
812
+ */
813
+ instruct(request) {
814
+ return lastValueFrom(_instruct(this.#client, this.#httpRequest, request));
815
+ }
816
+ }
781
817
  class ObservableAssetsClient {
782
818
  #client;
783
819
  #httpRequest;
@@ -837,42 +873,6 @@ function optionsFromFile(opts, file) {
837
873
  opts
838
874
  );
839
875
  }
840
- function _instruct(client, httpRequest, request) {
841
- const dataset2 = hasDataset(client.config());
842
- return _request(client, httpRequest, {
843
- method: "POST",
844
- uri: `/assist/tasks/instruct/${dataset2}`,
845
- body: request
846
- });
847
- }
848
- class ObservableAssistClient {
849
- #client;
850
- #httpRequest;
851
- constructor(client, httpRequest) {
852
- this.#client = client, this.#httpRequest = httpRequest;
853
- }
854
- /**
855
- * Run an ad-hoc instruction for a target document.
856
- * @param request instruction request
857
- */
858
- instruct(request) {
859
- return _instruct(this.#client, this.#httpRequest, request);
860
- }
861
- }
862
- class AssistClient {
863
- #client;
864
- #httpRequest;
865
- constructor(client, httpRequest) {
866
- this.#client = client, this.#httpRequest = httpRequest;
867
- }
868
- /**
869
- * Run an ad-hoc instruction for a target document.
870
- * @param request instruction request
871
- */
872
- instruct(request) {
873
- return lastValueFrom(_instruct(this.#client, this.#httpRequest, request));
874
- }
875
- }
876
876
  var defaults = (obj, defaults2) => Object.keys(defaults2).concat(Object.keys(obj)).reduce((target, prop) => (target[prop] = typeof obj[prop] > "u" ? defaults2[prop] : obj[prop], target), {});
877
877
  const pick = (obj, props) => props.reduce((selection, prop) => (typeof obj[prop] > "u" || (selection[prop] = obj[prop]), selection), {}), eventSourcePolyfill = defer(() => import("@sanity/eventsource")).pipe(
878
878
  map(({ default: EventSource2 }) => EventSource2),
@@ -901,7 +901,7 @@ function _listen(query, params, opts = {}) {
901
901
  if (uri.length > MAX_URL_LENGTH)
902
902
  return throwError(() => new Error("Query too large for listener"));
903
903
  const listenFor = options.events ? options.events : ["mutation"], esOptions = {};
904
- return (token || withCredentials) && (esOptions.withCredentials = !0), token && (esOptions.headers = {
904
+ return withCredentials && (esOptions.withCredentials = !0), token && (esOptions.headers = {
905
905
  Authorization: `Bearer ${token}`
906
906
  }), connectEventSource(() => (
907
907
  // use polyfill if there is no global EventSource or if we need to set headers
@@ -1208,7 +1208,7 @@ class ObservableSanityClient {
1208
1208
  live;
1209
1209
  projects;
1210
1210
  users;
1211
- assist;
1211
+ ai;
1212
1212
  /**
1213
1213
  * Private properties
1214
1214
  */
@@ -1219,7 +1219,7 @@ class ObservableSanityClient {
1219
1219
  */
1220
1220
  listen = _listen;
1221
1221
  constructor(httpRequest, config = defaultConfig) {
1222
- this.config(config), this.#httpRequest = httpRequest, this.assets = new ObservableAssetsClient(this, this.#httpRequest), this.datasets = new ObservableDatasetsClient(this, this.#httpRequest), this.live = new LiveClient(this), this.projects = new ObservableProjectsClient(this, this.#httpRequest), this.users = new ObservableUsersClient(this, this.#httpRequest), this.assist = new ObservableAssistClient(this, this.#httpRequest);
1222
+ this.config(config), this.#httpRequest = httpRequest, this.assets = new ObservableAssetsClient(this, this.#httpRequest), this.datasets = new ObservableDatasetsClient(this, this.#httpRequest), this.live = new LiveClient(this), this.projects = new ObservableProjectsClient(this, this.#httpRequest), this.users = new ObservableUsersClient(this, this.#httpRequest), this.ai = new ObservableAiClient(this, this.#httpRequest);
1223
1223
  }
1224
1224
  /**
1225
1225
  * Clone the client - returns a new instance
@@ -1358,7 +1358,7 @@ class SanityClient {
1358
1358
  live;
1359
1359
  projects;
1360
1360
  users;
1361
- assist;
1361
+ ai;
1362
1362
  /**
1363
1363
  * Observable version of the Sanity client, with the same configuration as the promise-based one
1364
1364
  */
@@ -1373,7 +1373,7 @@ class SanityClient {
1373
1373
  */
1374
1374
  listen = _listen;
1375
1375
  constructor(httpRequest, config = defaultConfig) {
1376
- this.config(config), this.#httpRequest = httpRequest, this.assets = new AssetsClient(this, this.#httpRequest), this.datasets = new DatasetsClient(this, this.#httpRequest), this.live = new LiveClient(this), this.projects = new ProjectsClient(this, this.#httpRequest), this.users = new UsersClient(this, this.#httpRequest), this.assist = new AssistClient(this, this.#httpRequest), this.observable = new ObservableSanityClient(httpRequest, config);
1376
+ this.config(config), this.#httpRequest = httpRequest, this.assets = new AssetsClient(this, this.#httpRequest), this.datasets = new DatasetsClient(this, this.#httpRequest), this.live = new LiveClient(this), this.projects = new ProjectsClient(this, this.#httpRequest), this.users = new UsersClient(this, this.#httpRequest), this.ai = new AiClient(this, this.#httpRequest), this.observable = new ObservableSanityClient(httpRequest, config);
1377
1377
  }
1378
1378
  /**
1379
1379
  * Clone the client - returns a new instance
@@ -1549,7 +1549,7 @@ function defineDeprecatedCreateClient(createClient2) {
1549
1549
  return printNoDefaultExport(), createClient2(config);
1550
1550
  };
1551
1551
  }
1552
- var name = "@sanity/client", version = "6.28.3-instruct.0";
1552
+ var name = "@sanity/client", version = "6.28.3-instruct.1";
1553
1553
  const middleware = [
1554
1554
  debug({ verbose: !0, namespace: "sanity:client" }),
1555
1555
  headers({ "User-Agent": `${name} ${version}` }),