@opengeni/sdk 7.1.0 → 7.1.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.
Files changed (47) hide show
  1. package/README.md +6 -0
  2. package/dist/artifacts.js +5 -5
  3. package/dist/browser.d.ts +1 -1
  4. package/dist/browser.js +3 -3
  5. package/dist/chat/index.js +6 -6
  6. package/dist/{chunk-MG4QFBKR.js → chunk-B7S4YVGX.js} +2 -2
  7. package/dist/{chunk-LSO66LQA.js → chunk-E5WAYGHT.js} +1 -1
  8. package/dist/chunk-E5WAYGHT.js.map +1 -0
  9. package/dist/{chunk-YHF66FWZ.js → chunk-MPN5UJWE.js} +2 -2
  10. package/dist/{chunk-Y7DRKEFZ.js → chunk-NP7DDXHK.js} +94 -5
  11. package/dist/chunk-NP7DDXHK.js.map +1 -0
  12. package/dist/{chunk-ZN6WWXAX.js → chunk-PCVFOBSV.js} +2 -2
  13. package/dist/{chunk-X6Y2JCAN.js → chunk-RAG3P2UV.js} +2 -2
  14. package/dist/{chunk-QTBAMHEF.js → chunk-YUOPVPZW.js} +25 -1
  15. package/dist/chunk-YUOPVPZW.js.map +1 -0
  16. package/dist/client.d.ts +10 -2
  17. package/dist/core.js +4 -4
  18. package/dist/document-authority.js +4 -4
  19. package/dist/editable-artifacts.js +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +7 -7
  22. package/dist/interaction.d.ts +35 -0
  23. package/dist/interaction.js +1 -1
  24. package/dist/knowledge.d.ts +1 -1
  25. package/dist/knowledge.js.map +1 -1
  26. package/dist/session-message-search.d.ts +12 -0
  27. package/dist/site-browser-runtime.gen.d.ts +1 -1
  28. package/dist/site-document.js +1 -1
  29. package/dist/site-document.js.map +1 -1
  30. package/dist/site.js +4 -4
  31. package/dist/types.d.ts +3 -3
  32. package/package.json +2 -2
  33. package/src/browser.ts +2 -0
  34. package/src/client.ts +146 -2
  35. package/src/index.ts +2 -0
  36. package/src/interaction.ts +102 -0
  37. package/src/knowledge.ts +1 -0
  38. package/src/session-message-search.ts +8 -0
  39. package/src/site-browser-runtime.gen.ts +1 -1
  40. package/src/types.ts +5 -0
  41. package/dist/chunk-LSO66LQA.js.map +0 -1
  42. package/dist/chunk-QTBAMHEF.js.map +0 -1
  43. package/dist/chunk-Y7DRKEFZ.js.map +0 -1
  44. /package/dist/{chunk-MG4QFBKR.js.map → chunk-B7S4YVGX.js.map} +0 -0
  45. /package/dist/{chunk-YHF66FWZ.js.map → chunk-MPN5UJWE.js.map} +0 -0
  46. /package/dist/{chunk-ZN6WWXAX.js.map → chunk-PCVFOBSV.js.map} +0 -0
  47. /package/dist/{chunk-X6Y2JCAN.js.map → chunk-RAG3P2UV.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-FMLDFJ2Q.js";
4
4
  import {
5
5
  OpenGeniClient
6
- } from "./chunk-Y7DRKEFZ.js";
6
+ } from "./chunk-NP7DDXHK.js";
7
7
  import {
8
8
  OpenGeniApiError
9
9
  } from "./chunk-OO5LPTO7.js";
@@ -636,4 +636,4 @@ export {
636
636
  isOpenGeniSiteBridgeCancelMessage,
637
637
  sanitizeOpenGeniSiteToolCallRequest
638
638
  };
639
- //# sourceMappingURL=chunk-YHF66FWZ.js.map
639
+ //# sourceMappingURL=chunk-MPN5UJWE.js.map
@@ -5,11 +5,12 @@ import {
5
5
  OPENGENI_API_CONTRACT_REVISION,
6
6
  OPENGENI_CORRELATION_HEADER,
7
7
  RETAINED_OUTPUT_MAX_PAGE_BYTES
8
- } from "./chunk-LSO66LQA.js";
8
+ } from "./chunk-E5WAYGHT.js";
9
9
  import {
10
10
  OpenGeniInteractionClient,
11
- decodeComputerFrameMetadataHeader
12
- } from "./chunk-QTBAMHEF.js";
11
+ decodeComputerFrameMetadataHeader,
12
+ parseBrowserFrameMetadata
13
+ } from "./chunk-YUOPVPZW.js";
13
14
  import {
14
15
  OpenGeniApiContractMismatchError,
15
16
  OpenGeniApiError,
@@ -1197,6 +1198,19 @@ var OpenGeniClient = class {
1197
1198
  options
1198
1199
  );
1199
1200
  }
1201
+ /** Read one selected search result's complete visible text when <=12,000
1202
+ * UTF-16 units. Stale, duplicate or non-message references fail with 404.
1203
+ * The response never includes audit payload fields such as modelContext.
1204
+ */
1205
+ async getSessionMessagePreview(workspaceId, sessionId, reference, options = {}) {
1206
+ return this.requestJson(
1207
+ "GET",
1208
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/sessions/${encodeURIComponent(sessionId)}/events/${encodeURIComponent(reference.eventId)}/message-preview`,
1209
+ void 0,
1210
+ { sequence: String(reference.sequence) },
1211
+ options
1212
+ );
1213
+ }
1200
1214
  async listSessions(workspaceId, options = {}) {
1201
1215
  if (options.search?.trim() || options.originSiteId) {
1202
1216
  const page = await this.listSessionPage(workspaceId, options);
@@ -2905,6 +2919,54 @@ var OpenGeniClient = class {
2905
2919
  options
2906
2920
  );
2907
2921
  }
2922
+ async captureBrowserTarget(workspaceId, browserSessionId, targetId, options = {}, captureOptions = {}) {
2923
+ const query = new URLSearchParams();
2924
+ if (captureOptions.fullPage !== void 0) {
2925
+ if (typeof captureOptions.fullPage !== "boolean") {
2926
+ throw new TypeError("browser screenshot fullPage must be a boolean");
2927
+ }
2928
+ query.set("fullPage", String(captureOptions.fullPage));
2929
+ }
2930
+ if (captureOptions.format !== void 0) {
2931
+ if (captureOptions.format !== "jpeg" && captureOptions.format !== "png") {
2932
+ throw new TypeError("browser screenshot format must be jpeg or png");
2933
+ }
2934
+ query.set("format", captureOptions.format);
2935
+ }
2936
+ if (captureOptions.quality !== void 0) {
2937
+ if (!Number.isSafeInteger(captureOptions.quality) || captureOptions.quality < 1 || captureOptions.quality > 100) {
2938
+ throw new RangeError("browser screenshot quality must be an integer from 1 to 100");
2939
+ }
2940
+ query.set("quality", String(captureOptions.quality));
2941
+ }
2942
+ const suffix = query.size > 0 ? `?${query}` : "";
2943
+ const response = await this.requestResponse(
2944
+ "GET",
2945
+ `/v1/workspaces/${workspaceId}/browser-sessions/${encodeURIComponent(browserSessionId)}/targets/${encodeURIComponent(targetId)}/screenshot${suffix}`,
2946
+ {},
2947
+ options
2948
+ );
2949
+ const mediaType = response.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase();
2950
+ const header = response.headers.get("x-opengeni-browser-frame");
2951
+ if (mediaType !== "image/jpeg" && mediaType !== "image/png" || !header || header.length > 64 * 1024) {
2952
+ await cancelResponseBody(response, "browser frame metadata is invalid");
2953
+ throw new OpenGeniApiError(502, "browser frame metadata is invalid");
2954
+ }
2955
+ let metadata;
2956
+ try {
2957
+ metadata = parseBrowserFrameMetadata(
2958
+ JSON.parse(atob(header.replace(/-/gu, "+").replace(/_/gu, "/")))
2959
+ );
2960
+ } catch {
2961
+ await cancelResponseBody(response, "browser frame metadata is invalid");
2962
+ throw new OpenGeniApiError(502, "browser frame metadata is invalid");
2963
+ }
2964
+ const data = await readBoundedResponseBytes(response, 24 * 1024 * 1024, null);
2965
+ if (metadata.browserSessionId !== browserSessionId || metadata.targetId !== targetId || metadata.mediaType !== mediaType) {
2966
+ throw new OpenGeniApiError(502, "browser frame evidence does not match its request");
2967
+ }
2968
+ return { ...metadata, data };
2969
+ }
2908
2970
  async closeBrowserTarget(workspaceId, browserSessionId, targetId, options = {}) {
2909
2971
  return await this.requestJson(
2910
2972
  "DELETE",
@@ -2923,6 +2985,32 @@ var OpenGeniClient = class {
2923
2985
  options
2924
2986
  );
2925
2987
  }
2988
+ async getBrowserTargetState(workspaceId, browserSessionId, targetId, options = {}) {
2989
+ const state = await this.requestJson(
2990
+ "GET",
2991
+ `/v1/workspaces/${workspaceId}/browser-sessions/${encodeURIComponent(browserSessionId)}/targets/${encodeURIComponent(targetId)}/state`,
2992
+ void 0,
2993
+ {},
2994
+ options
2995
+ );
2996
+ if (state.browserSessionId !== browserSessionId || state.targetId !== targetId) {
2997
+ throw new OpenGeniApiError(502, "browser target state belongs to another binding");
2998
+ }
2999
+ return state;
3000
+ }
3001
+ async readBrowserDom(workspaceId, browserSessionId, targetId, request, options = {}) {
3002
+ const result = await this.requestJson(
3003
+ "POST",
3004
+ `/v1/workspaces/${workspaceId}/browser-sessions/${encodeURIComponent(browserSessionId)}/targets/${encodeURIComponent(targetId)}/dom-read`,
3005
+ request,
3006
+ {},
3007
+ options
3008
+ );
3009
+ if (result.browserSessionId !== browserSessionId || result.targetId !== targetId || result.kind !== request.kind || result.targetGeneration !== request.expectedTargetGeneration || result.documentGeneration !== request.expectedDocumentGeneration || result.frameId !== request.expectedFrameId) {
3010
+ throw new OpenGeniApiError(502, "browser DOM read belongs to another binding");
3011
+ }
3012
+ return result;
3013
+ }
2926
3014
  async actInBrowser(workspaceId, browserSessionId, request, options = {}) {
2927
3015
  return await this.requestJson(
2928
3016
  "POST",
@@ -4463,7 +4551,8 @@ var OpenGeniClient = class {
4463
4551
  async downloadRetainedScreenshot(workspaceId, sessionId, artifactId, options = {}) {
4464
4552
  const metadata = await this.getSessionRetainedArtifact(workspaceId, sessionId, artifactId);
4465
4553
  if (!metadata.available) return { metadata, bytes: null };
4466
- if (metadata.kind !== "computer_screenshot" || metadata.contentType !== "image/png" || !metadata.dimensions || metadata.originalBytes <= 0 || metadata.originalBytes > COMPUTER_SCREENSHOT_MAX_BYTES) {
4554
+ const supportedScreenshot = metadata.kind === "computer_screenshot" && metadata.contentType === "image/png" || metadata.kind === "browser_screenshot" && ["image/png", "image/jpeg", "image/webp"].includes(metadata.contentType);
4555
+ if (!supportedScreenshot || !metadata.dimensions || metadata.originalBytes <= 0 || metadata.originalBytes > COMPUTER_SCREENSHOT_MAX_BYTES) {
4467
4556
  throw new OpenGeniApiError(502, "retained screenshot metadata is invalid");
4468
4557
  }
4469
4558
  const bytes = await this.downloadRetainedArtifactBytes(metadata, options);
@@ -6317,4 +6406,4 @@ export {
6317
6406
  parseMediaGenerationResult,
6318
6407
  OpenGeniClient
6319
6408
  };
6320
- //# sourceMappingURL=chunk-Y7DRKEFZ.js.map
6409
+ //# sourceMappingURL=chunk-NP7DDXHK.js.map