@opengeni/runtime 3.2.2 → 3.4.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 (69) hide show
  1. package/dist/agent-LJT5NPWT.js +9 -0
  2. package/dist/assets/codemode-client.json +1 -1
  3. package/dist/browser-current-tab.d.ts +46 -0
  4. package/dist/browser-model-text.d.ts +126 -0
  5. package/dist/{chunk-2AUDDDO2.js → chunk-3DFH3ZHU.js} +784 -121
  6. package/dist/chunk-3DFH3ZHU.js.map +1 -0
  7. package/dist/{chunk-HJSIPTFA.js → chunk-4XDJ4TJA.js} +2 -2
  8. package/dist/{chunk-XQ23VCZ4.js → chunk-6FQ6KEII.js} +3 -3
  9. package/dist/{chunk-7LJ7KDPI.js → chunk-ERD4ICVB.js} +4 -3
  10. package/dist/{chunk-462CH77G.js → chunk-ETTCGPBT.js} +400 -9
  11. package/dist/chunk-ETTCGPBT.js.map +1 -0
  12. package/dist/{chunk-7OUG7WBV.js → chunk-GWRBALGQ.js} +181 -13
  13. package/dist/chunk-GWRBALGQ.js.map +1 -0
  14. package/dist/{chunk-YG26XE7B.js → chunk-JYDG2A7H.js} +2 -2
  15. package/dist/{chunk-RSHQSLEJ.js → chunk-KIL4FGX5.js} +3 -3
  16. package/dist/{chunk-NWS4HPB7.js → chunk-MIAL5I4O.js} +2 -2
  17. package/dist/{chunk-Z5U6WE22.js → chunk-PRZPGRIK.js} +2 -2
  18. package/dist/{chunk-KCPW4K7L.js → chunk-PZQUUBEB.js} +2 -2
  19. package/dist/{chunk-5WJOPANS.js → chunk-Y5THZH5N.js} +7 -7
  20. package/dist/codex-tool-search.d.ts +9 -0
  21. package/dist/gmail-rest-mcp.js +8 -8
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.js +14 -12
  24. package/dist/interaction-tool-json-schema.d.ts +27 -0
  25. package/dist/{lazy-manifest-AJ6XPJ4F.js → lazy-manifest-BLZ3UZLX.js} +4 -4
  26. package/dist/lazy-tool-transport.d.ts +10 -0
  27. package/dist/{localSources-SSIEH5F5.js → localSources-I6SIQ6CX.js} +6 -6
  28. package/dist/model-call.js +3 -3
  29. package/dist/sandbox/browser-control-client.d.ts +87 -0
  30. package/dist/sandbox/browser-control-http.d.ts +33 -0
  31. package/dist/sandbox/index.d.ts +1 -1
  32. package/dist/sandbox/index.js +7 -7
  33. package/dist/sandbox/routing/backend-resolver.d.ts +1 -0
  34. package/dist/sandbox/selfhosted/session.d.ts +22 -0
  35. package/dist/slack-rest-mcp.js +8 -8
  36. package/dist/workspace-tool-gateway.js +12 -12
  37. package/package.json +14 -14
  38. package/src/browser-current-tab.ts +139 -0
  39. package/src/browser-model-text.ts +378 -0
  40. package/src/bundled_site_skills/opengeni-sites/SKILL.md +46 -12
  41. package/src/codex-tool-search.ts +53 -0
  42. package/src/index.ts +39 -1
  43. package/src/interaction-tool-json-schema.ts +281 -0
  44. package/src/interaction-tools.ts +425 -235
  45. package/src/lazy-tool-transport.ts +229 -10
  46. package/src/model-input.ts +12 -1
  47. package/src/sandbox/browser-control-client.ts +425 -0
  48. package/src/sandbox/browser-control-http.ts +32 -0
  49. package/src/sandbox/index.ts +4 -0
  50. package/src/sandbox/routing/backend-resolver.ts +2 -0
  51. package/src/sandbox/selfhosted/session.ts +154 -0
  52. package/dist/agent-CTPLA3HP.js +0 -9
  53. package/dist/browser-action-json-schema.d.ts +0 -4
  54. package/dist/chunk-2AUDDDO2.js.map +0 -1
  55. package/dist/chunk-462CH77G.js.map +0 -1
  56. package/dist/chunk-7OUG7WBV.js.map +0 -1
  57. package/src/browser-action-json-schema.ts +0 -10
  58. /package/dist/{agent-CTPLA3HP.js.map → agent-LJT5NPWT.js.map} +0 -0
  59. /package/dist/{chunk-HJSIPTFA.js.map → chunk-4XDJ4TJA.js.map} +0 -0
  60. /package/dist/{chunk-XQ23VCZ4.js.map → chunk-6FQ6KEII.js.map} +0 -0
  61. /package/dist/{chunk-7LJ7KDPI.js.map → chunk-ERD4ICVB.js.map} +0 -0
  62. /package/dist/{chunk-YG26XE7B.js.map → chunk-JYDG2A7H.js.map} +0 -0
  63. /package/dist/{chunk-RSHQSLEJ.js.map → chunk-KIL4FGX5.js.map} +0 -0
  64. /package/dist/{chunk-NWS4HPB7.js.map → chunk-MIAL5I4O.js.map} +0 -0
  65. /package/dist/{chunk-Z5U6WE22.js.map → chunk-PRZPGRIK.js.map} +0 -0
  66. /package/dist/{chunk-KCPW4K7L.js.map → chunk-PZQUUBEB.js.map} +0 -0
  67. /package/dist/{chunk-5WJOPANS.js.map → chunk-Y5THZH5N.js.map} +0 -0
  68. /package/dist/{lazy-manifest-AJ6XPJ4F.js.map → lazy-manifest-BLZ3UZLX.js.map} +0 -0
  69. /package/dist/{localSources-SSIEH5F5.js.map → localSources-I6SIQ6CX.js.map} +0 -0
@@ -16,7 +16,7 @@ import {
16
16
  randomUUID,
17
17
  relativePosixPathWithinRoot,
18
18
  shellQuote
19
- } from "./chunk-7LJ7KDPI.js";
19
+ } from "./chunk-ERD4ICVB.js";
20
20
 
21
21
  // ../../node_modules/.bun/@openai+agents-core@0.14.3+933c5e7db4cd33c2/node_modules/@openai/agents-core/dist/sandbox/shared/output.mjs
22
22
  var APPROX_BYTES_PER_TOKEN = 4;
@@ -1231,4 +1231,4 @@ export {
1231
1231
  materializeLocalSourceManifest,
1232
1232
  materializeLocalSourceManifestEntry
1233
1233
  };
1234
- //# sourceMappingURL=chunk-YG26XE7B.js.map
1234
+ //# sourceMappingURL=chunk-JYDG2A7H.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  connectorAttachmentFileName
3
- } from "./chunk-Z5U6WE22.js";
3
+ } from "./chunk-PRZPGRIK.js";
4
4
  import {
5
5
  isRoutingMutationOutcomeUnknownError
6
- } from "./chunk-5WJOPANS.js";
6
+ } from "./chunk-Y5THZH5N.js";
7
7
 
8
8
  // src/slack-rest-mcp.ts
9
9
  import {
@@ -597,4 +597,4 @@ export {
597
597
  SLACK_REST_API_BASE2 as SLACK_REST_API_BASE,
598
598
  SLACK_REST_MCP_TOOLS
599
599
  };
600
- //# sourceMappingURL=chunk-RSHQSLEJ.js.map
600
+ //# sourceMappingURL=chunk-KIL4FGX5.js.map
@@ -3,7 +3,7 @@ import {
3
3
  UserError,
4
4
  cloneManifest,
5
5
  isRecord
6
- } from "./chunk-7LJ7KDPI.js";
6
+ } from "./chunk-ERD4ICVB.js";
7
7
 
8
8
  // ../../node_modules/.bun/@openai+agents-core@0.14.3+933c5e7db4cd33c2/node_modules/@openai/agents-core/dist/sandbox/client.mjs
9
9
  var DEFAULT_SANDBOX_ARCHIVE_LIMITS = {
@@ -91,4 +91,4 @@ export {
91
91
  NoopSnapshotSpec,
92
92
  isNoopSnapshotSpec
93
93
  };
94
- //# sourceMappingURL=chunk-NWS4HPB7.js.map
94
+ //# sourceMappingURL=chunk-MIAL5I4O.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isRoutingMutationOutcomeUnknownError,
3
3
  isRoutingMutationOutputRejectedError
4
- } from "./chunk-5WJOPANS.js";
4
+ } from "./chunk-Y5THZH5N.js";
5
5
  import {
6
6
  assertMcpPayloadWithinBytes
7
7
  } from "./chunk-LJNCGUMB.js";
@@ -164,4 +164,4 @@ export {
164
164
  connectorAttachmentSandboxPath,
165
165
  projectConnectorAttachmentTransfers
166
166
  };
167
- //# sourceMappingURL=chunk-Z5U6WE22.js.map
167
+ //# sourceMappingURL=chunk-PRZPGRIK.js.map
@@ -9,7 +9,7 @@ import {
9
9
  logToolActionError,
10
10
  logger,
11
11
  randomUUID
12
- } from "./chunk-7LJ7KDPI.js";
12
+ } from "./chunk-ERD4ICVB.js";
13
13
 
14
14
  // ../../node_modules/.bun/@openai+agents-core@0.14.3+933c5e7db4cd33c2/node_modules/@openai/agents-core/dist/mcpServers.mjs
15
15
  var DEFAULT_CONNECT_TIMEOUT_MS = 1e4;
@@ -828,4 +828,4 @@ export {
828
828
  connectMcpServers,
829
829
  MemorySession
830
830
  };
831
- //# sourceMappingURL=chunk-KCPW4K7L.js.map
831
+ //# sourceMappingURL=chunk-PZQUUBEB.js.map
@@ -26,17 +26,17 @@ import {
26
26
  truncateOutput,
27
27
  validateCredentialPair,
28
28
  validateRemoteSandboxPathForManifest
29
- } from "./chunk-YG26XE7B.js";
29
+ } from "./chunk-JYDG2A7H.js";
30
30
  import {
31
31
  isNoopSnapshotSpec,
32
32
  normalizeSandboxClientCreateArgs,
33
33
  resolveSandboxArchiveLimits,
34
34
  validateSandboxArchiveLimits
35
- } from "./chunk-NWS4HPB7.js";
35
+ } from "./chunk-MIAL5I4O.js";
36
36
  import {
37
37
  isSandboxPathNotFoundError,
38
38
  probeSandboxPathExists
39
- } from "./chunk-HJSIPTFA.js";
39
+ } from "./chunk-4XDJ4TJA.js";
40
40
  import {
41
41
  Environment,
42
42
  FileMode,
@@ -94,7 +94,7 @@ import {
94
94
  shellQuote,
95
95
  stableJsonStringify,
96
96
  withSandboxSpan
97
- } from "./chunk-7LJ7KDPI.js";
97
+ } from "./chunk-ERD4ICVB.js";
98
98
 
99
99
  // src/sandbox/selfhosted/control-rpc.ts
100
100
  import { ControlRequest as ControlRequest2, ControlResponse, ErrorCode } from "@opengeni/agent-proto";
@@ -15086,7 +15086,7 @@ var CloudflareSandboxSession = class {
15086
15086
  async materializeEntry(args) {
15087
15087
  assertSandboxEntryMetadataSupported("CloudflareSandboxClient", args.path, args.entry, MOUNT_MANIFEST_METADATA_SUPPORT);
15088
15088
  if (entryContainsLocalSource(args.entry)) {
15089
- const { applyLocalSourceManifestEntryToState: applyLocalSourceManifestEntryToState2 } = await import("./localSources-SSIEH5F5.js");
15089
+ const { applyLocalSourceManifestEntryToState: applyLocalSourceManifestEntryToState2 } = await import("./localSources-I6SIQ6CX.js");
15090
15090
  await applyLocalSourceManifestEntryToState2(this.state, args.path, args.entry, "cloudflare", this.writer(), this.remotePathResolver, this.manifestMaterializationOptions(args.runAs));
15091
15091
  return;
15092
15092
  }
@@ -15097,7 +15097,7 @@ var CloudflareSandboxSession = class {
15097
15097
  assertSandboxManifestMetadataSupported("CloudflareSandboxClient", manifest, MOUNT_MANIFEST_METADATA_SUPPORT);
15098
15098
  assertCloudflareManifestMountsSupported(manifest);
15099
15099
  if (manifestContainsLocalSource(manifest)) {
15100
- const { applyLocalSourceManifestToState: applyLocalSourceManifestToState2 } = await import("./localSources-SSIEH5F5.js");
15100
+ const { applyLocalSourceManifestToState: applyLocalSourceManifestToState2 } = await import("./localSources-I6SIQ6CX.js");
15101
15101
  await applyLocalSourceManifestToState2(this.state, manifest, "cloudflare", this.writer(), this.remotePathResolver, this.manifestMaterializationOptions(runAs));
15102
15102
  return;
15103
15103
  }
@@ -26127,4 +26127,4 @@ export {
26127
26127
  renderRoutingMutationOutcomeUnknownToolResult,
26128
26128
  RoutingSandboxSession
26129
26129
  };
26130
- //# sourceMappingURL=chunk-5WJOPANS.js.map
26130
+ //# sourceMappingURL=chunk-Y5THZH5N.js.map
@@ -29,6 +29,15 @@ export declare const HARNESS_CONTROL_MCP_SERVER_ID = "opengeni";
29
29
  export declare const HARNESS_CONTROL_FIRST_PARTY_TOOLS: readonly ["goal_set", "goal_update", "goal_complete", "goal_pause", "goal_resume", "command_read", "command_wait", "wait_for_input"];
30
30
  /** True for an exact harness control tool name on the first-party server. */
31
31
  export declare function isHarnessControlMcpToolName(registryId: string, modelName: string): boolean;
32
+ /** True when a prepared function tool is an interaction family's entry tool. */
33
+ export declare function isInteractionEntryFunctionTool(tool: unknown, mcpServerIds?: ReadonlySet<string>, modelServerIds?: ReadonlyMap<string, string>): boolean;
34
+ /** True when a model tool name is an interaction family's entry tool. */
35
+ export declare function isInteractionEntryToolName(name: string): boolean;
36
+ /**
37
+ * The companions an entry tool discloses once it is called: the rest of its
38
+ * family that is still searchable, within the same byte budgets as a search.
39
+ */
40
+ export declare function interactionEntryCompanions(entryName: string, searchable: Tool[]): Tool[];
32
41
  /**
33
42
  * True when a prepared MCP function tool is one of the harness control tools
34
43
  * served by the authorized first-party `opengeni` server. These stay in the
@@ -11,15 +11,15 @@ import {
11
11
  gmailToolAvailableOnDeployment,
12
12
  gmailToolSupportsScopes,
13
13
  isOfficialGmailMcpConfig
14
- } from "./chunk-XQ23VCZ4.js";
15
- import "./chunk-Z5U6WE22.js";
16
- import "./chunk-5WJOPANS.js";
14
+ } from "./chunk-6FQ6KEII.js";
15
+ import "./chunk-PRZPGRIK.js";
16
+ import "./chunk-Y5THZH5N.js";
17
17
  import "./chunk-4A4XTKKX.js";
18
- import "./chunk-YG26XE7B.js";
19
- import "./chunk-NWS4HPB7.js";
20
- import "./chunk-HJSIPTFA.js";
21
- import "./chunk-KCPW4K7L.js";
22
- import "./chunk-7LJ7KDPI.js";
18
+ import "./chunk-JYDG2A7H.js";
19
+ import "./chunk-MIAL5I4O.js";
20
+ import "./chunk-4XDJ4TJA.js";
21
+ import "./chunk-PZQUUBEB.js";
22
+ import "./chunk-ERD4ICVB.js";
23
23
  import "./chunk-LJNCGUMB.js";
24
24
  import "./chunk-PLDDJCW6.js";
25
25
  export {
package/dist/index.d.ts CHANGED
@@ -708,6 +708,9 @@ export declare function buildOpenGeniAgent(settings: Settings, resources: Resour
708
708
  * or writes those rules must derive the identity through this function.
709
709
  */
710
710
  export declare function sessionMcpApprovalConnectionId(serverId: string, url: string): string;
711
+ /** Why interaction_request_human arguments cannot be recorded as an
712
+ * intervention, in words the model can act on, or null when they can. */
713
+ export declare function interactionRequestArgumentsProblem(serialized: string): string | null;
711
714
  /**
712
715
  * Codex and reviewed Responses-compatible Gateway routes accept ordinary
713
716
  * FUNCTION tools plus `input_image` content inside a function_call_output. The
package/dist/index.js CHANGED
@@ -99,6 +99,7 @@ import {
99
99
  identityFromLegacyTemplate,
100
100
  incrementalModelInputProjectionFilter,
101
101
  inspectPersistentAgentInstructions,
102
+ interactionRequestArgumentsProblem,
102
103
  interactionToolErrorOutput,
103
104
  interruptionKindForCallItem,
104
105
  invokePreparedAgentTool,
@@ -187,7 +188,7 @@ import {
187
188
  workspaceEnvironmentInstructions,
188
189
  wrapAttemptToolDefinitions,
189
190
  wrapAttemptToolExecute
190
- } from "./chunk-2AUDDDO2.js";
191
+ } from "./chunk-3DFH3ZHU.js";
191
192
  import {
192
193
  ActiveBackendUnresolvableError,
193
194
  BROWSER_CONTROL_ADMIN_TOKEN_FILE,
@@ -403,7 +404,7 @@ import {
403
404
  withRunCredentialsSession,
404
405
  withoutSandboxProviderIdentity,
405
406
  workspaceArchiveDownloadTemporaryDirectory
406
- } from "./chunk-462CH77G.js";
407
+ } from "./chunk-ETTCGPBT.js";
407
408
  import {
408
409
  SKILL_MAX_FILES,
409
410
  SKILL_MAX_FILE_BYTES,
@@ -558,7 +559,7 @@ import {
558
559
  toolCallIdFromSdkItem,
559
560
  vercelGatewayRoutingFetch,
560
561
  withClaudeUsageObserver
561
- } from "./chunk-7OUG7WBV.js";
562
+ } from "./chunk-GWRBALGQ.js";
562
563
  import {
563
564
  UnsupportedProtocolJsonValueError,
564
565
  normalizeProtocolJsonValue
@@ -572,7 +573,7 @@ import {
572
573
  gmailToolAvailableOnDeployment,
573
574
  gmailToolSupportsScopes,
574
575
  isOfficialGmailMcpConfig
575
- } from "./chunk-XQ23VCZ4.js";
576
+ } from "./chunk-6FQ6KEII.js";
576
577
  import {
577
578
  OFFICIAL_SLACK_MCP_URL,
578
579
  SLACK_REST_API_BASE,
@@ -580,14 +581,14 @@ import {
580
581
  SlackRestMcpServer,
581
582
  isOfficialSlackMcpConfig,
582
583
  slackRestToolIsMutation
583
- } from "./chunk-RSHQSLEJ.js";
584
+ } from "./chunk-KIL4FGX5.js";
584
585
  import {
585
586
  CONNECTOR_ATTACHMENT_PROVIDER_RESULT_MAX_BYTES,
586
587
  CONNECTOR_ATTACHMENT_SANITIZED_RESULT_MAX_BYTES,
587
588
  ConnectorAttachmentTransferError,
588
589
  connectorAttachmentSandboxPath,
589
590
  projectConnectorAttachmentTransfers
590
- } from "./chunk-Z5U6WE22.js";
591
+ } from "./chunk-PRZPGRIK.js";
591
592
  import {
592
593
  CODE_SEARCH_RG_MAX_BYTES,
593
594
  ChannelAConflictError,
@@ -684,15 +685,15 @@ import {
684
685
  validateCodeSearchRipgrepArgs,
685
686
  withModalCommandStartSignal,
686
687
  withRoutingMutationOutputRejectionFence
687
- } from "./chunk-5WJOPANS.js";
688
+ } from "./chunk-Y5THZH5N.js";
688
689
  import "./chunk-4A4XTKKX.js";
689
- import "./chunk-YG26XE7B.js";
690
- import "./chunk-NWS4HPB7.js";
691
- import "./chunk-HJSIPTFA.js";
692
- import "./chunk-KCPW4K7L.js";
690
+ import "./chunk-JYDG2A7H.js";
691
+ import "./chunk-MIAL5I4O.js";
692
+ import "./chunk-4XDJ4TJA.js";
693
+ import "./chunk-PZQUUBEB.js";
693
694
  import {
694
695
  MaxTurnsExceededError
695
- } from "./chunk-7LJ7KDPI.js";
696
+ } from "./chunk-ERD4ICVB.js";
696
697
  import "./chunk-LJNCGUMB.js";
697
698
  import "./chunk-PLDDJCW6.js";
698
699
  export {
@@ -1084,6 +1085,7 @@ export {
1084
1085
  inspectModalSandboxLifecycle,
1085
1086
  inspectPersistentAgentInstructions,
1086
1087
  inspectRecordingArtifact,
1088
+ interactionRequestArgumentsProblem,
1087
1089
  interactionToolErrorOutput,
1088
1090
  interruptionKindForCallItem,
1089
1091
  invokePreparedAgentTool,
@@ -0,0 +1,27 @@
1
+ import type { AttemptToolJsonSchema } from "@opengeni/contracts";
2
+ import { z } from "zod";
3
+ /**
4
+ * The JSON Schema an interaction tool shows the model.
5
+ *
6
+ * Model providers expand every `$ref` when they render a tool, so a tagged
7
+ * union such as a browser action, whose locator union repeats in each of its
8
+ * twenty variants, costs several thousand tokens. Each tagged union of objects
9
+ * is shown as one object instead: the tag lists every variant, each field
10
+ * appears once, and one compact line names the fields each variant takes.
11
+ * Validation-only limits are left out. The tool's own Zod schema stays the
12
+ * authority and rejects any invalid combination with the exact field.
13
+ */
14
+ export declare function interactionToolInputJsonSchema(schema: z.ZodType): AttemptToolJsonSchema;
15
+ /**
16
+ * Let the model pass an element ref as a bare string wherever a locator is
17
+ * expected (`"locator":"e1a2b3c4d"`). It is the common case and a third of
18
+ * the output tokens of `{kind:'ref',ref}`. The tool expands it before
19
+ * validation.
20
+ */
21
+ export declare function withRefShorthandLocators(schema: AttemptToolJsonSchema): AttemptToolJsonSchema;
22
+ /**
23
+ * Name exactly what is wrong with invalid tool arguments. A union failure
24
+ * reports the variant the arguments chose (the one whose tag matched), so a
25
+ * click without a locator role says `action.locator.role`, not only "invalid".
26
+ */
27
+ export declare function describeInvalidToolArguments(error: z.ZodError): string;
@@ -1,9 +1,9 @@
1
1
  import "./chunk-4A4XTKKX.js";
2
- import "./chunk-NWS4HPB7.js";
3
- import "./chunk-HJSIPTFA.js";
2
+ import "./chunk-MIAL5I4O.js";
3
+ import "./chunk-4XDJ4TJA.js";
4
4
  import {
5
5
  Manifest
6
- } from "./chunk-7LJ7KDPI.js";
6
+ } from "./chunk-ERD4ICVB.js";
7
7
  import "./chunk-PLDDJCW6.js";
8
8
 
9
9
  // src/lazy-manifest.ts
@@ -43,4 +43,4 @@ async function recordLazyMaterializedDirectories(session, target) {
43
43
  export {
44
44
  recordLazyMaterializedDirectories
45
45
  };
46
- //# sourceMappingURL=lazy-manifest-AJ6XPJ4F.js.map
46
+ //# sourceMappingURL=lazy-manifest-BLZ3UZLX.js.map
@@ -52,6 +52,8 @@ export declare class LazyToolRuntime {
52
52
  wrapModel(model: Model): Model;
53
53
  private searchableTools;
54
54
  search(rawArguments: unknown): Tool[];
55
+ /** Model-visible schemas an entry-tool call discloses, or [] for any other tool. */
56
+ familyDisclosure(toolName: string): Record<string, unknown>[];
55
57
  genericSearchOutput(rawArguments: unknown): string;
56
58
  private buildListTool;
57
59
  private buildNativeSearchTool;
@@ -95,6 +97,14 @@ export declare function restoreGenericDispatchHistoryItems(input: Array<Record<s
95
97
  */
96
98
  export declare function restoreDirectDeferredCallArgumentTypes(candidate: Record<string, unknown>, runtime: LazyToolRuntime): Record<string, unknown>;
97
99
  export declare function transformGenericDispatchResponse(response: ModelResponse, runtime: LazyToolRuntime): ModelResponse;
100
+ /**
101
+ * Show each entry-tool call's frozen family disclosure right after its result,
102
+ * as the same search call and output a model-issued search would have produced
103
+ * (native tool_search items, or a generic tool_search function call). Tools the
104
+ * history already disclosed are not repeated. The expansion depends only on
105
+ * earlier items, so every later request reproduces the identical prefix.
106
+ */
107
+ export declare function expandInteractionFamilyDisclosures<T>(input: T[]): T[];
98
108
  /** Wrap per-run model resolution without changing any provider client or SDK tool object. */
99
109
  export declare class LazyToolModelProvider implements ModelProvider {
100
110
  private readonly inner;
@@ -3,11 +3,11 @@ import {
3
3
  applyLocalSourceManifestToState,
4
4
  materializeLocalSourceManifest,
5
5
  materializeLocalSourceManifestEntry
6
- } from "./chunk-YG26XE7B.js";
7
- import "./chunk-NWS4HPB7.js";
8
- import "./chunk-HJSIPTFA.js";
9
- import "./chunk-KCPW4K7L.js";
10
- import "./chunk-7LJ7KDPI.js";
6
+ } from "./chunk-JYDG2A7H.js";
7
+ import "./chunk-MIAL5I4O.js";
8
+ import "./chunk-4XDJ4TJA.js";
9
+ import "./chunk-PZQUUBEB.js";
10
+ import "./chunk-ERD4ICVB.js";
11
11
  import "./chunk-PLDDJCW6.js";
12
12
  export {
13
13
  applyLocalSourceManifestEntryToState,
@@ -15,4 +15,4 @@ export {
15
15
  materializeLocalSourceManifest,
16
16
  materializeLocalSourceManifestEntry
17
17
  };
18
- //# sourceMappingURL=localSources-SSIEH5F5.js.map
18
+ //# sourceMappingURL=localSources-I6SIQ6CX.js.map
@@ -4,10 +4,10 @@ import {
4
4
  SingleModelCallUnsupportedError,
5
5
  normalizeModelCallUsage,
6
6
  runSingleModelCall
7
- } from "./chunk-7OUG7WBV.js";
7
+ } from "./chunk-GWRBALGQ.js";
8
8
  import "./chunk-5ULGMFKR.js";
9
- import "./chunk-KCPW4K7L.js";
10
- import "./chunk-7LJ7KDPI.js";
9
+ import "./chunk-PZQUUBEB.js";
10
+ import "./chunk-ERD4ICVB.js";
11
11
  import "./chunk-LJNCGUMB.js";
12
12
  import "./chunk-PLDDJCW6.js";
13
13
  export {
@@ -3,6 +3,7 @@ import { type BrowserFrameMetadata } from "@opengeni/sdk";
3
3
  import { BROWSER_PROFILE_ARTIFACT_FORMAT, type BrowserActionCommand as BrowserActionCommandValue, type BrowserActionReceipt as BrowserActionReceiptValue, type BrowserClipboard as BrowserClipboardValue, type BrowserDiagnosticBatch as BrowserDiagnosticBatchValue, type BrowserDownload as BrowserDownloadValue, type BrowserDownloadExportReceipt as BrowserDownloadExportReceiptValue, type BrowserDownloadExportRequest as BrowserDownloadExportRequestValue, type BrowserDownloadListResponse as BrowserDownloadListResponseValue, type BrowserDomReadRequest as BrowserDomReadRequestValue, type BrowserDomReadResponse as BrowserDomReadResponseValue, type BrowserExternalAuthCommand as BrowserExternalAuthCommandValue, type BrowserExternalAuthResult as BrowserExternalAuthResultValue, type BrowserDiagnosticKind, type BrowserTargetListResponse as BrowserTargetListResponseValue, type BrowserObservation as BrowserObservationValue, type BrowserRevisionMaterialization as BrowserRevisionMaterializationValue, type BrowserTarget as BrowserTargetValue, type BrowserTargetState as BrowserTargetStateValue, type BrowserWorkspaceFileStageRequest as BrowserWorkspaceFileStageRequestValue, type BrowserWorkspaceFileStageResponse as BrowserWorkspaceFileStageResponseValue, type BrowserPasskeySyncRequest as BrowserPasskeySyncRequestValue, type BrowserPasskeySyncResponse as BrowserPasskeySyncResponseValue, type ComputerActionCommand as ComputerActionCommandValue, type ComputerActionReceipt as ComputerActionReceiptValue, type ComputerClipboard as ComputerClipboardValue, type ComputerObservation as ComputerObservationValue, type ComputerSessionCapabilities as ComputerSessionCapabilitiesValue, type ComputerTarget as ComputerTargetValue, type InteractionError as InteractionErrorValue, type NetworkRouteConsistency as NetworkRouteConsistencyValue } from "@opengeni/contracts";
4
4
  import type { BrowserControlEnsureRequest, BrowserControlEnsureResponse, BrowserFramesOpenRequest, ComputerFramesOpenRequest, StreamChannel } from "@opengeni/agent-proto";
5
5
  import { type EnsureBrowserControlServerResult } from "./browser-control-server.js";
6
+ import type { BrowserControlHttpCall, BrowserControlHttpOutcome } from "./browser-control-http.js";
6
7
  import { type ExposedPortEndpoint } from "./stream-port.js";
7
8
  export declare const BROWSER_CONTROL_ADMIN_TOKEN_FILE = "/tmp/opengeni-browserd/authority/admin-token";
8
9
  type ExecResultLike = {
@@ -68,6 +69,8 @@ export type BrowserControlPlacementSession = {
68
69
  }) => void;
69
70
  };
70
71
  ensureBrowserControl?: (request: BrowserControlEnsureRequest) => Promise<BrowserControlEnsureResponse>;
72
+ /** Agent-native controller transport, addressed by authority scope. */
73
+ browserControlHttp?: (request: BrowserControlHttpCall) => Promise<BrowserControlHttpOutcome>;
71
74
  openBrowserFrames?: (request: BrowserFramesOpenRequest) => Promise<{
72
75
  channel: StreamChannel;
73
76
  endpoint: ExposedPortEndpoint;
@@ -125,6 +128,8 @@ export type PlacementBrowserSessionReference = {
125
128
  };
126
129
  export type PlacementBrowserSession = PlacementBrowserSessionReference & {
127
130
  observation: BrowserObservationValue;
131
+ /** The tab inventory at creation, when the controller reports it. */
132
+ targets?: BrowserTargetValue[];
128
133
  };
129
134
  export type PlacementComputerSessionReference = {
130
135
  computerSessionId: string;
@@ -262,6 +267,55 @@ export type PlacementBrowserStateCaptureReceipt = PlacementBrowserSessionReferen
262
267
  }>;
263
268
  };
264
269
  };
270
+ /** The exact controller authority a preserved working copy was launched
271
+ * under; the controller refuses any other. */
272
+ export type PlacementBrowserWorkingCopyAuthority = PlacementBrowserSessionReference & {
273
+ tokenGeneration: number;
274
+ controlToken: string;
275
+ viewToken: string;
276
+ };
277
+ export declare const BROWSER_WORKING_COPY_REFUSALS: readonly ["unsupported_platform", "browser_running", "working_copy_invalid", "receipt_not_adoptable", "authority_changed", "process_state_unknown", "adoption_not_needed", "adoption_unresolved"];
278
+ export type PlacementBrowserWorkingCopyRefusal = (typeof BROWSER_WORKING_COPY_REFUSALS)[number];
279
+ export declare const BROWSER_WORKING_COPY_ADOPTION_PHASES: readonly ["intent", "copied", "receipt", "source_preserved", "adopted", "interrupted", "failed", "collision", "reverting", "reverted"];
280
+ export type PlacementBrowserWorkingCopyAdoptionPhase = (typeof BROWSER_WORKING_COPY_ADOPTION_PHASES)[number];
281
+ export type PlacementBrowserWorkingCopyAdoption = PlacementBrowserSessionReference & {
282
+ operationId: string;
283
+ manifestDigest: string;
284
+ phase: PlacementBrowserWorkingCopyAdoptionPhase;
285
+ failureCode: string | null;
286
+ /** Directories this adoption kept beside the browser's own, by name. */
287
+ retainedDirectories: string[];
288
+ createdAt: string;
289
+ updatedAt: string;
290
+ };
291
+ export type PlacementBrowserWorkingCopyInspection = PlacementBrowserSessionReference & {
292
+ platformSupported: boolean;
293
+ refusal: PlacementBrowserWorkingCopyRefusal | null;
294
+ /** Exact digest of the bytes an adoption would take; null when refused. */
295
+ manifest: {
296
+ digest: string;
297
+ entries: number;
298
+ bytes: number;
299
+ excluded: string[];
300
+ } | null;
301
+ profileIdentityMatches: boolean;
302
+ /** false only when no process provably uses the profile. */
303
+ profileInUse: boolean | null;
304
+ receipt: {
305
+ operationId: string;
306
+ intent: "launch" | "suspend" | "retire" | "adopt";
307
+ state: string;
308
+ directoryLaunchAllowed: boolean;
309
+ authorityMatches: boolean;
310
+ /** True when this working copy was first launched from a saved checkpoint. */
311
+ launchedFromCheckpoint: boolean;
312
+ adoption: {
313
+ operationId: string;
314
+ manifestDigest: string;
315
+ } | null;
316
+ } | null;
317
+ activeAdoption: PlacementBrowserWorkingCopyAdoption | null;
318
+ };
265
319
  export type ProvisionBrowserControlClientInput = {
266
320
  adminToken: string;
267
321
  adminTokenFile?: string;
@@ -348,6 +402,32 @@ export declare class BrowserControlClient {
348
402
  * return only integrity/compatibility metadata. Secret authority is carried
349
403
  * in a private placement request file and never returned by browserd. */
350
404
  captureState(input: CapturePlacementBrowserStateInput): Promise<PlacementBrowserStateCaptureReceipt>;
405
+ /** Read-only evidence about a preserved working copy whose controller
406
+ * memory was lost: the exact digest of its bytes and whether it can be
407
+ * adopted. Hashing a large profile can take minutes. */
408
+ inspectWorkingCopy(input: PlacementBrowserWorkingCopyAuthority): Promise<PlacementBrowserWorkingCopyInspection>;
409
+ /** Adopt the exact inspected bytes of a preserved working copy. A lost reply
410
+ * is checked with {@link workingCopyAdoption}. Sending the same operation id
411
+ * again never repeats a side effect: it only settles what that operation
412
+ * already did, under the authority that approved it. */
413
+ adoptWorkingCopy(input: PlacementBrowserWorkingCopyAuthority & {
414
+ operationId: string;
415
+ manifestDigest: string;
416
+ }): Promise<PlacementBrowserWorkingCopyAdoption>;
417
+ /** The recorded state of one adoption, read without changing it. */
418
+ workingCopyAdoption(reference: PlacementBrowserSessionReference, operationId: string): Promise<{
419
+ inFlight: boolean;
420
+ adoption: PlacementBrowserWorkingCopyAdoption | null;
421
+ }>;
422
+ /** Revert one unfinished adoption under the browser's current authority:
423
+ * its own directory goes back to the live path and the staged copy is
424
+ * kept. Retrying the same revert finishes one that stopped part way. */
425
+ revertWorkingCopyAdoption(input: PlacementBrowserWorkingCopyAuthority & {
426
+ operationId: string;
427
+ }): Promise<{
428
+ inFlight: boolean;
429
+ adoption: PlacementBrowserWorkingCopyAdoption | null;
430
+ }>;
351
431
  sessionClient(input: {
352
432
  reference: PlacementBrowserSessionReference;
353
433
  controlToken: string;
@@ -434,6 +514,13 @@ export declare class BrowserControlClient {
434
514
  private requestBytes;
435
515
  private requestStream;
436
516
  private controllerPort;
517
+ /** The agent-native transport: one in-process loopback request on the
518
+ * Connected Machine, addressed by authority scope, with no process started.
519
+ * Null when the placement does not serve it; the caller then keeps its
520
+ * command transport. A controller that is not running receives nothing, so
521
+ * it is ensured and the request sent once more whatever its method. */
522
+ private requestNative;
523
+ private ensureControllerPort;
437
524
  }
438
525
  export declare class BrowserControlSessionClient {
439
526
  readonly reference: PlacementBrowserSessionReference;
@@ -0,0 +1,33 @@
1
+ /** One request to an agent-owned browser/computer controller, addressed by its
2
+ * exact authority scope rather than a local port. */
3
+ export type BrowserControlHttpCall = {
4
+ scopeId: string;
5
+ scopeGeneration: string;
6
+ method: "GET" | "POST" | "PUT" | "DELETE";
7
+ /** Absolute controller path with optional query. */
8
+ path: string;
9
+ bearerToken: string;
10
+ /** JSON request body bytes, when the request has a body. */
11
+ body?: Uint8Array;
12
+ timeoutMs: number;
13
+ maxResponseBytes: number;
14
+ };
15
+ /** What a placement transport did with one controller request. */
16
+ export type BrowserControlHttpOutcome =
17
+ /** The placement cannot serve it natively; nothing was sent. */
18
+ {
19
+ kind: "unsupported";
20
+ }
21
+ /** No controller for that scope and generation accepted it; nothing was
22
+ * delivered, so the caller may ensure the controller and send again. */
23
+ | {
24
+ kind: "controller_absent";
25
+ } | {
26
+ kind: "response";
27
+ status: number;
28
+ /** Lowercase header names. */
29
+ headers: Map<string, string>;
30
+ body: Uint8Array;
31
+ };
32
+ /** Extra time beyond the request's own deadline for the reply to arrive. */
33
+ export declare const BROWSER_CONTROL_HTTP_REPLY_GRACE_MS = 5000;
@@ -37,7 +37,7 @@ export { createTurnToolCancellationController, TurnSandboxCommandCancelledError,
37
37
  export type { TurnSandboxCommandArgs, TurnSandboxCommandSession, TurnToolCancellationController, TurnToolCancellationFence, } from "./turn-tool-cancellation.js";
38
38
  export { TERMINAL_STREAM_PORT, TERMINAL_SERVER_TIMEOUT_MS, TerminalServerError, TerminalServerUnsupportedError, buildTerminalServerScript, ensureTerminalServer, tearDownTerminalServer, type EnsureTerminalServerOptions, type EnsureTerminalServerResult, } from "./terminal-server.js";
39
39
  export { BROWSER_CONTROL_PORT, BROWSER_CONTROL_SERVER_TIMEOUT_MS, BrowserControlServerError, BrowserControlServerUnsupportedError, buildBrowserControlServerScript, ensureBrowserControlServer, tearDownBrowserControlServer, type EnsureBrowserControlServerOptions, type EnsureBrowserControlServerResult, } from "./browser-control-server.js";
40
- export { BROWSER_CONTROL_ADMIN_TOKEN_FILE, BrowserControlClient, BrowserControlProtocolError, BrowserControlRequestError, BrowserControlSessionClient, BrowserControlTransportError, BrowserControlUnsupportedError, ComputerFrameEvidenceMismatchError, decodeComputerControlFrameMetadataHeader, provisionBrowserControlClient, validateComputerControlFrameEvidence, type BrowserControlPlacementSession, type BrowserControlScreenshotOptions, type BrowserControlFrame, type BrowserStateDownloadGrant, type BrowserStateUploadGrant, type BrowserViewGrant, type CapturePlacementBrowserStateInput, type CreatePlacementBrowserSessionInput, type PlacementBrowserSession, type PlacementBrowserSessionReference, type PlacementBrowserNetworkRoute, type PlacementBrowserTransport, type PlacementBrowserStateCaptureReceipt, type ComputerControlFrame, type ComputerControlFrameMetadata, type ComputerFrameEvidenceMismatchReason, type ExpectedComputerFrameEvidence, type ProvisionBrowserControlClientInput, type ProvisionBrowserControlClientResult, type RestorePlacementBrowserStateInput, } from "./browser-control-client.js";
40
+ export { BROWSER_CONTROL_ADMIN_TOKEN_FILE, BrowserControlClient, BrowserControlProtocolError, BrowserControlRequestError, BrowserControlSessionClient, BrowserControlTransportError, BrowserControlUnsupportedError, ComputerFrameEvidenceMismatchError, decodeComputerControlFrameMetadataHeader, provisionBrowserControlClient, validateComputerControlFrameEvidence, type BrowserControlPlacementSession, type BrowserControlScreenshotOptions, type BrowserControlFrame, type BrowserStateDownloadGrant, type BrowserStateUploadGrant, type BrowserViewGrant, type CapturePlacementBrowserStateInput, type CreatePlacementBrowserSessionInput, type PlacementBrowserSession, type PlacementBrowserSessionReference, type PlacementBrowserNetworkRoute, type PlacementBrowserTransport, type PlacementBrowserStateCaptureReceipt, type PlacementBrowserWorkingCopyAdoption, type PlacementBrowserWorkingCopyAuthority, type PlacementBrowserWorkingCopyInspection, type PlacementBrowserWorkingCopyRefusal, type ComputerControlFrame, type ComputerControlFrameMetadata, type ComputerFrameEvidenceMismatchReason, type ExpectedComputerFrameEvidence, type ProvisionBrowserControlClientInput, type ProvisionBrowserControlClientResult, type RestorePlacementBrowserStateInput, } from "./browser-control-client.js";
41
41
  export { RunCredentialValidationError, normalizeRunCredentialsResolution, runCredentialRoot, runCredentialPointerFile, materializeRunCredentials, clearRunCredentials, clearRunCredentialsForAttempt, withRunCredentialEnvironment, withRunCredentialsSession, withRunCredentialsClient, type RunCredentialExpectedScope, type NormalizedRunCredentialMaterial, type RunCredentialCommandSession, type RunCredentialCommandRunner, type RunCredentialSessionReady, type MaterializeRunCredentialsOptions, } from "./run-credentials.js";
42
42
  export { SECRET_ENV_TOTAL_MAX_BYTES, SECRET_ENV_VALUE_MAX_BYTES, SECRET_FILE_ROOT, clearSecretFilesCommand, prepareSecretExec, prepareSecretStdin, resolveSecretImagePath, resolveSecretLiteralText, resolveSecretPatchText, runWithSecretCarry, secretExecCarryFor, secretFilePath, secretScopeFor, type SecretCarry, type SecretExecCarry, type SecretStdinCarry, } from "./secret-delivery.js";
43
43
  export { CodemodeTokenPathError, codemodeTokenFileForSession, codemodeTokenFileFromEnvironment, withCodemodeTokenEnvironment, withCodemodeTokenSession, withCodemodeTokenClient, } from "./codemode-token.js";
@@ -213,7 +213,7 @@ import {
213
213
  withRunCredentialsSession,
214
214
  withoutSandboxProviderIdentity,
215
215
  workspaceArchiveDownloadTemporaryDirectory
216
- } from "../chunk-462CH77G.js";
216
+ } from "../chunk-ETTCGPBT.js";
217
217
  import "../chunk-5ULGMFKR.js";
218
218
  import {
219
219
  CODE_SEARCH_RG_MAX_BYTES,
@@ -311,13 +311,13 @@ import {
311
311
  validateCodeSearchRipgrepArgs,
312
312
  withModalCommandStartSignal,
313
313
  withRoutingMutationOutputRejectionFence
314
- } from "../chunk-5WJOPANS.js";
314
+ } from "../chunk-Y5THZH5N.js";
315
315
  import "../chunk-4A4XTKKX.js";
316
- import "../chunk-YG26XE7B.js";
317
- import "../chunk-NWS4HPB7.js";
318
- import "../chunk-HJSIPTFA.js";
319
- import "../chunk-KCPW4K7L.js";
320
- import "../chunk-7LJ7KDPI.js";
316
+ import "../chunk-JYDG2A7H.js";
317
+ import "../chunk-MIAL5I4O.js";
318
+ import "../chunk-4XDJ4TJA.js";
319
+ import "../chunk-PZQUUBEB.js";
320
+ import "../chunk-ERD4ICVB.js";
321
321
  import "../chunk-PLDDJCW6.js";
322
322
  export {
323
323
  ActiveBackendUnresolvableError,
@@ -32,6 +32,7 @@ export interface SelfhostedConnectionBinding {
32
32
  operationResourcePolicySupported: boolean;
33
33
  operationCpuQuotaSupported: boolean;
34
34
  transactionalFsWriteSupported?: boolean;
35
+ browserControlHttpSupported?: boolean;
35
36
  }
36
37
  export interface ActiveBackendResolverDeps {
37
38
  /** The workspace the session belongs to (the control-plane subject scope). */