@opengeni/sdk 0.52.1 → 0.57.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 (54) hide show
  1. package/README.md +61 -7
  2. package/dist/artifacts.js +5 -5
  3. package/dist/{chunk-V5F253OG.js → chunk-GU6JF75T.js} +6 -3
  4. package/dist/chunk-GU6JF75T.js.map +1 -0
  5. package/dist/{chunk-FRJFNDIR.js → chunk-HJ3HHUT5.js} +5 -1
  6. package/dist/chunk-HJ3HHUT5.js.map +1 -0
  7. package/dist/{chunk-KIHGPM7H.js → chunk-JDLDDRNE.js} +20 -14
  8. package/dist/chunk-JDLDDRNE.js.map +1 -0
  9. package/dist/{chunk-FHI4DFIG.js → chunk-JRPFWI6T.js} +2 -2
  10. package/dist/{chunk-ILQZR5N6.js → chunk-PKQ377ED.js} +693 -34
  11. package/dist/chunk-PKQ377ED.js.map +1 -0
  12. package/dist/{chunk-MZWTWOX6.js → chunk-ST5DDKJP.js} +327 -1
  13. package/dist/chunk-ST5DDKJP.js.map +1 -0
  14. package/dist/{chunk-DXDL7EEW.js → chunk-YKZME56C.js} +197 -113
  15. package/dist/chunk-YKZME56C.js.map +1 -0
  16. package/dist/client.d.ts +106 -16
  17. package/dist/codex-realtime-controller.d.ts +3 -0
  18. package/dist/codex-realtime-controller.js +2 -2
  19. package/dist/core.js +7 -7
  20. package/dist/desktop.d.ts +8 -0
  21. package/dist/editable-artifacts.js +4 -4
  22. package/dist/gateway-realtime-transport.d.ts +1 -0
  23. package/dist/gateway-realtime-transport.js +5 -3
  24. package/dist/index.d.ts +6 -2
  25. package/dist/index.js +68 -34
  26. package/dist/index.js.map +1 -1
  27. package/dist/interaction-revision-stream.d.ts +11 -0
  28. package/dist/interaction.d.ts +604 -5
  29. package/dist/interaction.js +27 -1
  30. package/dist/realtime.d.ts +3 -3
  31. package/dist/realtime.js +11 -7
  32. package/dist/realtime.js.map +1 -1
  33. package/dist/types.d.ts +267 -64
  34. package/dist/workspace-live-stream.d.ts +14 -0
  35. package/package.json +2 -2
  36. package/src/client.ts +861 -60
  37. package/src/codex-realtime-controller.ts +25 -7
  38. package/src/codex-realtime-lifecycle.ts +1 -0
  39. package/src/desktop.ts +11 -1
  40. package/src/errors.ts +16 -2
  41. package/src/gateway-realtime-transport.ts +252 -109
  42. package/src/index.ts +42 -13
  43. package/src/interaction-revision-stream.ts +117 -0
  44. package/src/interaction.ts +1049 -5
  45. package/src/realtime.ts +14 -4
  46. package/src/types.ts +336 -67
  47. package/src/workspace-live-stream.ts +137 -0
  48. package/dist/chunk-DXDL7EEW.js.map +0 -1
  49. package/dist/chunk-FRJFNDIR.js.map +0 -1
  50. package/dist/chunk-ILQZR5N6.js.map +0 -1
  51. package/dist/chunk-KIHGPM7H.js.map +0 -1
  52. package/dist/chunk-MZWTWOX6.js.map +0 -1
  53. package/dist/chunk-V5F253OG.js.map +0 -1
  54. /package/dist/{chunk-FHI4DFIG.js.map → chunk-JRPFWI6T.js.map} +0 -0
package/README.md CHANGED
@@ -139,6 +139,60 @@ and long-lived credentials are never placed in the WebSocket URL. Hosts may
139
139
  inject both `fetch` and the WebSocket factory for authenticated proxies and
140
140
  tests; negotiated frame and mutation limits are enforced before work is queued.
141
141
 
142
+ ## Browser and computer interaction (`@opengeni/sdk/interaction`)
143
+
144
+ An interaction **resource** is a workspace-scoped, durable object with a stable
145
+ id and lifecycle, such as a `BrowserSession`, `ComputerSession`, browser
146
+ identity, network route, auth run, or pending human intervention. This use of
147
+ "resource" is unrelated to the file/repository `resources` attached to a chat
148
+ message. A **facade** is only the typed, resource-oriented SDK organization
149
+ shown below; it owns no state or authority of its own.
150
+
151
+ `OpenGeniClient.interaction` is the framework-free resource facade over the same
152
+ public BrowserSession, ComputerSession, identity, auth, network-route, and human
153
+ intervention APIs used by OpenGeni itself. It adds no second state or execution
154
+ path: facade methods call the ordinary typed transport, and every mutation still
155
+ uses the canonical generation fences, operation receipt, permission check, and
156
+ placement controller.
157
+
158
+ ```ts
159
+ const browser = await client.interaction.browsers.currentOrOpen({
160
+ workspaceId,
161
+ associationSessionId: session.id,
162
+ initialUrl: "http://127.0.0.1:3000",
163
+ });
164
+
165
+ const { targets } = await browser.tabs.list();
166
+ const target = targets.find((candidate) => candidate.selected) ?? targets[0]!;
167
+ const page = await browser.observe(target.id);
168
+
169
+ const receipt = await browser.act({
170
+ operationId: crypto.randomUUID(),
171
+ targetId: target.id,
172
+ expectedTargetGeneration: target.targetGeneration,
173
+ expectedDocumentGeneration: target.documentGeneration,
174
+ expectedFrameId: page.frameId,
175
+ action: { type: "click", locator: { kind: "role", role: "button", name: "Continue" } },
176
+ });
177
+
178
+ if (receipt.state === "outcome_unknown") {
179
+ // Do not replay a mutation blindly. Re-observe, then inspect this exact receipt.
180
+ console.log(await browser.receipt(receipt.operationId));
181
+ }
182
+ ```
183
+
184
+ Browser identities are immutable version graphs: live browser state stays
185
+ private until `browser.publishRevision(...)` explicitly creates a new revision.
186
+ Protected auth fills resolve connection secrets only inside the broker/controller
187
+ path; normal SDK reads, observations, diagnostics, receipts, and logs never
188
+ return credential values. `client.openWorkspaceInteractionRevisionStream(...)`
189
+ is the low-volume latest-wins invalidation stream for keeping resource catalogs
190
+ fresh without attaching them to an inference/session event stream.
191
+
192
+ Use the flat `OpenGeniClient` interaction methods when implementing a proxy or
193
+ custom transport. Use `client.interaction` for application logic. Both are the
194
+ same API and authority boundary.
195
+
142
196
  ## Workspace artifacts
143
197
 
144
198
  Workspace artifacts are generic, immutable HTML publications. The SDK does not
@@ -484,13 +538,13 @@ Every public endpoint group has typed methods:
484
538
  | Packs | `listPacks`, `registerPack`, `getPack`, `enablePack`, `deletePack`, `listPackInstallations` |
485
539
  | Capabilities | `listCapabilities`, `createCapability`, `enableCapability`, `disableCapability`, `discoverMcpCapabilities` |
486
540
  | Plugin packages | `previewPlugin`, `installPlugin`, `previewPluginUninstall`, `uninstallPlugin` |
487
- | API Integrations | `listApiIntegrationPresets`, `listApiIntegrations`, `previewApiIntegration`, `startApiIntegrationOAuth`, `installApiIntegration`, `previewApiIntegrationUninstall`, `uninstallApiIntegration`, `listIntegrationFeatures`, `configureIntegrationFeature`, `pauseIntegrationFeature`, `resumeIntegrationFeature`, `removeIntegrationFeature`, `browseGoogleDriveIntegrationSource`, `saveGoogleDriveIntegrationSource` |
541
+ | API Integrations | `listIntegrationDefinitions`, `listApiIntegrations`, `previewApiIntegration`, `startApiIntegrationOAuth`, `installApiIntegration`, `previewApiIntegrationUninstall`, `uninstallApiIntegration`, `listIntegrationFacets`, `configureIntegrationFacet`, `pauseIntegrationFacet`, `resumeIntegrationFacet`, `removeIntegrationFacet`, `browseGoogleDriveFacetSource`, `saveGoogleDriveFacetSource` |
488
542
  | Remote Skills | `previewSkillImport`, `installSkill`, `previewSkillUninstall`, `uninstallSkill` |
489
543
  | GitHub | `getGitHubApp`, `githubConnectUrl`, `listGitHubRepositories`, `syncGitHubRepositories`, `createGitHubAppManifest` |
490
544
  | API keys | `listApiKeys`, `createApiKey`, `deleteApiKey` |
491
545
  | Billing | `getBilling`, `getBillingUsage`, `getBillingEntitlements`, `createBillingCheckout` |
492
546
 
493
- `listApiIntegrationPresets` returns safe curated-provider metadata without any
547
+ `listIntegrationDefinitions` returns safe Integration Definition metadata without any
494
548
  deployment OAuth client credentials. API Integrations are multi-instance:
495
549
  `installApiIntegration` may supply a
496
550
  stable `instanceKey`, display name, and exact Connection. The returned
@@ -499,14 +553,14 @@ selected in one session without tool-name collision. Uninstall preview and
499
553
  uninstall both require the exact `instanceKey` and instance version; neither
500
554
  operation disconnects the underlying Connection.
501
555
 
502
- Adapter-owned Integration features are listed and mutated under the exact
503
- `capabilityId` + `instanceKey` + `featureKey`. Generic primitive schemas use
504
- `configureIntegrationFeature`; lifecycle changes and removal require the
556
+ Adapter-owned Integration facets are listed and mutated under the exact
557
+ `capabilityId` + `instanceKey` + `facetKey`. Generic primitive schemas use
558
+ `configureIntegrationFacet`; lifecycle changes and removal require the
505
559
  binding's exact optimistic version plus a caller UUID idempotency key. Google
506
560
  Drive's nested folder/Shared Drive source schema has dedicated
507
- `browseGoogleDriveIntegrationSource` and `saveGoogleDriveIntegrationSource`
561
+ `browseGoogleDriveFacetSource` and `saveGoogleDriveFacetSource`
508
562
  methods. They verify provider metadata through that instance's exact Connection
509
- and persist only a versioned feature binding—never provider credentials, page
563
+ and persist only a versioned facet binding—never provider credentials, page
510
564
  tokens, or selected-source configuration on the Connection.
511
565
 
512
566
  ### Protocol routes (deliberately not in the SDK)
package/dist/artifacts.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  OpenGeniClient
3
- } from "./chunk-FHI4DFIG.js";
4
- import "./chunk-ILQZR5N6.js";
5
- import "./chunk-V5F253OG.js";
6
- import "./chunk-MZWTWOX6.js";
7
- import "./chunk-FRJFNDIR.js";
3
+ } from "./chunk-JRPFWI6T.js";
4
+ import "./chunk-PKQ377ED.js";
5
+ import "./chunk-HJ3HHUT5.js";
6
+ import "./chunk-GU6JF75T.js";
7
+ import "./chunk-ST5DDKJP.js";
8
8
  export {
9
9
  OpenGeniClient
10
10
  };
@@ -21,7 +21,7 @@ var OpenGeniApiError = class extends Error {
21
21
  this.code = options.code ?? decoded?.code ?? (gatewayFailure && fromResponse ? "upstream_unavailable" : void 0);
22
22
  this.retryable = options.retryable ?? decoded?.retryable ?? retryableApiStatus(status);
23
23
  this.correlationId = correlationId;
24
- this.outcomeUnknown = options.outcomeUnknown ?? (gatewayFailure && !!options.mutation && !decoded);
24
+ this.outcomeUnknown = options.outcomeUnknown ?? decoded?.outcomeUnknown ?? (gatewayFailure && !!options.mutation && !decoded);
25
25
  this.body = !fromResponse || decoded ? body : "";
26
26
  this.details = decoded?.details;
27
27
  }
@@ -37,13 +37,16 @@ function decodeApiErrorBody(body) {
37
37
  const message = boundedApiField(nested.message);
38
38
  const requestId = boundedCorrelationId(nested.requestId);
39
39
  const retryable = typeof nested.retryable === "boolean" ? nested.retryable : void 0;
40
+ const outcomeUnknown = typeof nested.outcomeUnknown === "boolean" ? nested.outcomeUnknown : void 0;
40
41
  const details = boundedApiDetails(nested.details);
41
- if (!code && !message && !requestId && retryable === void 0 && !details) return null;
42
+ if (!code && !message && !requestId && retryable === void 0 && outcomeUnknown === void 0 && !details)
43
+ return null;
42
44
  return {
43
45
  code,
44
46
  message,
45
47
  requestId,
46
48
  retryable,
49
+ outcomeUnknown,
47
50
  details
48
51
  };
49
52
  } catch {
@@ -113,4 +116,4 @@ export {
113
116
  isAbortError,
114
117
  isRetryableStreamError
115
118
  };
116
- //# sourceMappingURL=chunk-V5F253OG.js.map
119
+ //# sourceMappingURL=chunk-GU6JF75T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["/** Error for a non-2xx OpenGeni API response. */\nexport class OpenGeniApiError extends Error {\n readonly status: number;\n readonly code: string | undefined;\n readonly retryable: boolean;\n readonly correlationId: string | undefined;\n /** True only when an uncontrolled transport failed after a mutation may have been accepted. */\n readonly outcomeUnknown: boolean;\n readonly body: string;\n readonly details: Record<string, unknown> | undefined;\n\n constructor(\n status: number,\n body: string,\n options: {\n code?: string | undefined;\n retryable?: boolean | undefined;\n correlationId?: string | undefined;\n outcomeUnknown?: boolean | undefined;\n displayMessage?: string | undefined;\n mutation?: boolean | undefined;\n } = {},\n ) {\n const decoded = decodeApiErrorBody(body);\n const correlationId = decoded?.requestId ?? boundedCorrelationId(options.correlationId);\n const gatewayFailure = status >= 502 && status <= 504;\n const fromResponse = options.mutation !== undefined;\n const message = decoded?.message ?? (fromResponse ? \"Request failed.\" : body || \"(empty body)\");\n const displayMessage =\n options.displayMessage ??\n (gatewayFailure && fromResponse\n ? (decoded?.message ?? \"OpenGeni is temporarily unavailable — retry.\")\n : `OpenGeni API ${status}: ${message}`);\n super(correlationId ? `${displayMessage} Reference: ${correlationId}.` : displayMessage);\n this.name = \"OpenGeniApiError\";\n this.status = status;\n this.code =\n options.code ??\n decoded?.code ??\n (gatewayFailure && fromResponse ? \"upstream_unavailable\" : undefined);\n this.retryable = options.retryable ?? decoded?.retryable ?? retryableApiStatus(status);\n this.correlationId = correlationId;\n this.outcomeUnknown =\n options.outcomeUnknown ??\n decoded?.outcomeUnknown ??\n (gatewayFailure && !!options.mutation && !decoded);\n this.body = !fromResponse || decoded ? body : \"\";\n this.details = decoded?.details;\n }\n}\n\nfunction decodeApiErrorBody(body: string): {\n code: string | undefined;\n message: string | undefined;\n requestId: string | undefined;\n retryable: boolean | undefined;\n outcomeUnknown: boolean | undefined;\n details: Record<string, unknown> | undefined;\n} | null {\n if (!body) return null;\n try {\n const decoded: unknown = JSON.parse(body);\n if (!decoded || typeof decoded !== \"object\" || Array.isArray(decoded)) return null;\n const record = decoded as Record<string, unknown>;\n const nested =\n record.error && typeof record.error === \"object\" && !Array.isArray(record.error)\n ? (record.error as Record<string, unknown>)\n : record;\n const code = boundedApiField(nested.code);\n const message = boundedApiField(nested.message);\n const requestId = boundedCorrelationId(nested.requestId);\n const retryable = typeof nested.retryable === \"boolean\" ? nested.retryable : undefined;\n const outcomeUnknown =\n typeof nested.outcomeUnknown === \"boolean\" ? nested.outcomeUnknown : undefined;\n const details = boundedApiDetails(nested.details);\n if (\n !code &&\n !message &&\n !requestId &&\n retryable === undefined &&\n outcomeUnknown === undefined &&\n !details\n )\n return null;\n return {\n code,\n message,\n requestId,\n retryable,\n outcomeUnknown,\n details,\n };\n } catch {\n return null;\n }\n}\n\nfunction boundedApiDetails(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return;\n const entries = Object.entries(value as Record<string, unknown>).slice(0, 16);\n const details: Record<string, unknown> = {};\n for (const [key, entry] of entries) {\n if (!/^[a-zA-Z][\\w.-]{0,63}$/.test(key)) continue;\n if (typeof entry === \"string\") {\n const bounded = boundedApiField(entry);\n if (bounded !== undefined) details[key] = bounded;\n } else if (typeof entry === \"number\" || typeof entry === \"boolean\" || entry === null) {\n details[key] = entry;\n }\n }\n return Object.keys(details).length > 0 ? details : undefined;\n}\n\nfunction boundedApiField(value: unknown): string | undefined {\n if (typeof value !== \"string\") return;\n const bytes = new TextEncoder().encode(value);\n return bytes.byteLength <= 512 ? value : new TextDecoder().decode(bytes.slice(0, 512));\n}\n\nfunction retryableApiStatus(status: number): boolean {\n return status === 408 || status === 409 || status === 425 || status === 429 || status >= 500;\n}\n\nfunction boundedCorrelationId(value: unknown): string | undefined {\n if (typeof value !== \"string\" || value.length > 128 || !/^[\\w.:-]+$/.test(value)) {\n return;\n }\n return value;\n}\n\n/** A short-lived session-list snapshot cursor can no longer be continued. */\nexport class OpenGeniSessionListCursorError extends OpenGeniApiError {}\n\n/** The browser bundle and API disagree about their state-changing wire contract. */\nexport class OpenGeniApiContractMismatchError extends Error {\n readonly expected: string;\n readonly actual: string;\n\n constructor(expected: string, actual: string) {\n super(`OpenGeni API contract mismatch: client expects ${expected}, API serves ${actual}`);\n this.name = \"OpenGeniApiContractMismatchError\";\n this.expected = expected;\n this.actual = actual;\n }\n}\n\n/** Error for an unrecoverable event-stream condition (not a transient drop). */\nexport class OpenGeniStreamError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"OpenGeniStreamError\";\n }\n}\n\nexport function isAbortError(error: unknown): boolean {\n return (\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (error instanceof Error && error.name === \"AbortError\")\n );\n}\n\n/**\n * Transient conditions worth a reconnect: network-level failures (`fetch`\n * rejects with `TypeError`) and HTTP statuses that signal a temporary server\n * or contention condition. Auth/validation failures (401/403/404/...) are\n * permanent and surface to the caller instead.\n */\nexport function isRetryableStreamError(error: unknown): boolean {\n if (error instanceof OpenGeniApiError) return error.retryable;\n return error instanceof TypeError;\n}\n"],"mappings":"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","names":[]}
@@ -47,6 +47,9 @@ var SESSION_EVENT_TYPES = [
47
47
  "artifact.created",
48
48
  "goal.set",
49
49
  "goal.updated",
50
+ "goal.progress",
51
+ "goal.rewrite.proposed",
52
+ "goal.rewrite.rejected",
50
53
  "goal.completed",
51
54
  "goal.paused",
52
55
  "goal.resumed",
@@ -86,6 +89,7 @@ var SESSION_EVENT_TYPES = [
86
89
  "terminal.pty.output.delta",
87
90
  "terminal.pty.exited",
88
91
  "session.title_set",
92
+ "session.visibility.changed",
89
93
  "session.mcp.approval_policy.updated",
90
94
  "session.tool_policy.updated",
91
95
  // Multi-account Codex (P1): the session's inference account changed.
@@ -215,4 +219,4 @@ export {
215
219
  GENERATED_VIDEO_MAX_BYTES,
216
220
  KNOWN_USAGE_EVENT_TYPES
217
221
  };
218
- //# sourceMappingURL=chunk-FRJFNDIR.js.map
222
+ //# sourceMappingURL=chunk-HJ3HHUT5.js.map