@opencode/browse 0.0.6-dev.27 → 0.0.6

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.
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  opencodeBrowserVersion2,
4
4
  opencodeBrowserBuildId2
5
- } from "./main-vp3devjb.mjs";
5
+ } from "./main-ry14nc9q.mjs";
6
6
  import {
7
7
  dataRoot,
8
8
  fromCheckout,
@@ -12,7 +12,7 @@ import {
12
12
  devExtension,
13
13
  installCommand,
14
14
  autoUpdateStatus
15
- } from "./main-a6mpfd6z.mjs";
15
+ } from "./main-3cza6vx1.mjs";
16
16
  import {
17
17
  extensionProtocolVersion,
18
18
  extensionProtocolAdvice
@@ -35,31 +35,26 @@ import {
35
35
  ensureExtensionConnected,
36
36
  stoppedRelayStatus,
37
37
  statusCollections
38
- } from "./main-xzc7qp1c.mjs";
39
- import"./main-bq8az9yr.mjs";
38
+ } from "./main-605j7tjk.mjs";
39
+ import"./main-yv64m9we.mjs";
40
40
  import {
41
41
  updateJson2,
42
42
  formatUpdateNotice2,
43
43
  updateNotice2
44
- } from "./main-x96gxahz.mjs";
44
+ } from "./main-q5j1am67.mjs";
45
45
  import {
46
46
  settingKeys,
47
47
  formatSettings,
48
48
  ensureSessionExists,
49
- readClient,
50
- socketPath,
51
- connect,
52
- pair,
53
- unpair,
54
49
  addSecret,
55
50
  listSecrets,
56
51
  removeSecret
57
- } from "./main-cxrsjs2z.mjs";
52
+ } from "./main-hanwxg2c.mjs";
58
53
  import {
59
54
  defaultJournalBaseDir,
60
55
  readJournalEntries,
61
56
  formatJournalEntry
62
- } from "./main-a4yj9bpn.mjs";
57
+ } from "./main-njp635rz.mjs";
63
58
 
64
59
  // src/cli.ts
65
60
  import { NodeRuntime, NodeServices } from "@effect/platform-node";
@@ -950,7 +945,7 @@ var status = Command.make("status", {
950
945
  }
951
946
  })).pipe(Command.withDescription("Show relay, extension, and target status"));
952
947
  var mcp = Command.make("mcp", {}, Effect4.fn("Cli.mcp")(function* () {
953
- const { runMcpServer } = yield* Effect4.promise(() => import("./mcp-za7ymfdd.mjs"));
948
+ const { runMcpServer } = yield* Effect4.promise(() => import("./mcp-4w28g9h2.mjs"));
954
949
  yield* runMcpServer;
955
950
  })).pipe(Command.withDescription("Run the browse MCP server over stdio"));
956
951
  registerCliCommand(400, () => tabs);
@@ -971,7 +966,7 @@ registerCliCommand(810, ({ packageRoot }) => Command.make("doctor", {
971
966
  }
972
967
  })).pipe(Command.withDescription("Diagnose the local browse install and runtime")));
973
968
  registerCliCommand(820, () => Command.make("skill", {}, Effect4.fn("Cli.skill")(function* () {
974
- const { skillText } = yield* Effect4.promise(() => import("./skill-text-kyjcembk.mjs"));
969
+ const { skillText } = yield* Effect4.promise(() => import("./skill-text-rc6te209.mjs"));
975
970
  yield* Console2.log(skillText.trimEnd());
976
971
  })).pipe(Command.withDescription("Print the browse agent skill text")));
977
972
  registerCliCommand(900, () => mcp);
@@ -1406,7 +1401,7 @@ registerCliCommand(710, () => flightRecorder);
1406
1401
  import { Console as Console6, Effect as Effect8 } from "effect";
1407
1402
  import { Command as Command5, Flag as Flag6 } from "effect/cli";
1408
1403
  var serve = Command5.make("serve", {}, Effect8.fn("Cli.serve")(function* () {
1409
- const [{ startRelay }, { parseAdditionalExtensionOrigins }] = yield* Effect8.promise(() => Promise.all([import("./relay-xqg264d4.mjs"), import("./helpers-zeewknn2.mjs")]));
1404
+ const [{ startRelay }, { parseAdditionalExtensionOrigins }] = yield* Effect8.promise(() => Promise.all([import("./relay-21t4e4tv.mjs"), import("./helpers-ynamkf6t.mjs")]));
1410
1405
  const port = yield* portConfig;
1411
1406
  const additionalExtensionOrigins = parseAdditionalExtensionOrigins(yield* extensionOriginsConfig);
1412
1407
  yield* Effect8.scoped(Effect8.gen(function* () {
@@ -1579,59 +1574,7 @@ var secretsRemove = Command6.make("remove", { name: Argument4.String("name") },
1579
1574
  yield* Console7.log(removed ? `Removed ${name}` : `No secret named ${name}`);
1580
1575
  })).pipe(Command6.withDescription("Delete a site secret"));
1581
1576
  var secrets = Command6.make("secrets").pipe(Command6.withDescription("Site secrets agents can type without seeing them, and captured credential profiles"), Command6.withSubcommands([secretsAdd, secretsList, secretsRemove, secretsStatus, secretsRefresh, secretsRun]));
1582
- var deadboltConnect = Command6.make("connect", { json: jsonFlag }, Effect9.fn("Cli.deadboltConnect")(function* ({ json }) {
1583
- const paired = yield* Effect9.tryPromise({
1584
- try: () => pair(),
1585
- catch: (cause) => cause instanceof Error ? cause : new Error("Could not connect to Deadbolt")
1586
- });
1587
- if (json) {
1588
- yield* emitJson({ connected: true, id: paired.id });
1589
- return;
1590
- }
1591
- yield* Console7.log(`Connected browse to Deadbolt as client ${paired.id}.`);
1592
- yield* Console7.log("Agents can use only the logins you allow, in Deadbolt: deadbolt agents allow <site> (narrow with --login, --fields, --expires), or deadbolt agents allow --all for every login");
1593
- })).pipe(Command6.withDescription("Pair browse with Deadbolt (runs `deadbolt agents add-client browse`, which asks you to confirm) and store its client token (0600)"));
1594
- var deadboltDisconnect = Command6.make("disconnect", {}, Effect9.fn("Cli.deadboltDisconnect")(function* () {
1595
- const result = yield* Effect9.try({
1596
- try: () => unpair(),
1597
- catch: (cause) => cause instanceof Error ? cause : new Error("Could not disconnect from Deadbolt")
1598
- });
1599
- if (!result.removed) {
1600
- yield* Console7.log("browse isn't connected to Deadbolt");
1601
- return;
1602
- }
1603
- yield* Console7.log(result.revoked ? "Disconnected: the client is removed in Deadbolt and its token deleted here." : "Deleted the client token here. Deadbolt didn't confirm removing the client: check `deadbolt agents clients`.");
1604
- })).pipe(Command6.withDescription("Remove browse's Deadbolt client (in Deadbolt and here)"));
1605
- var deadboltStatus = Command6.make("status", { json: jsonFlag }, Effect9.fn("Cli.deadboltStatus")(function* ({ json }) {
1606
- const client = readClient();
1607
- const socket = socketPath();
1608
- const status = client ? yield* Effect9.promise(() => connect({ client, socket }).status().then((value) => ({ reachable: true, ...value }), (error) => ({
1609
- reachable: false,
1610
- error: error instanceof Error ? error.message : String(error)
1611
- }))) : undefined;
1612
- const report = {
1613
- connected: client !== undefined,
1614
- ...client ? { id: client.id } : {},
1615
- socket,
1616
- ...status ? { deadbolt: status } : {}
1617
- };
1618
- if (json) {
1619
- yield* emitJson(report);
1620
- return;
1621
- }
1622
- if (!client) {
1623
- yield* Console7.log("Not connected to Deadbolt. Run `opencode-browser deadbolt connect`.");
1624
- return;
1625
- }
1626
- yield* Console7.log(`Connected as Deadbolt client ${client.id}; socket ${socket}`);
1627
- if (status && status.reachable)
1628
- yield* Console7.log(`Deadbolt ${status.version ?? ""} (protocol ${status.protocol}) is ${status.unlocked ? "unlocked" : "locked: agent sign-ins are paused until you unlock it"}`);
1629
- else if (status)
1630
- yield* Console7.log(`Deadbolt isn't reachable: ${status.error}`);
1631
- })).pipe(Command6.withDescription("Show whether browse is paired with Deadbolt and whether Deadbolt is reachable and unlocked"));
1632
- var deadbolt = Command6.make("deadbolt").pipe(Command6.withDescription("Let agents sign in with the Deadbolt logins you grant them, without seeing any value"), Command6.withSubcommands([deadboltConnect, deadboltDisconnect, deadboltStatus]));
1633
1577
  registerCliCommand(610, () => secrets);
1634
- registerCliCommand(620, () => deadbolt);
1635
1578
 
1636
1579
  // src/cli/session.ts
1637
1580
  import { Console as Console8, Effect as Effect10, Option as Option8 } from "effect";
package/dist/cli.mjs CHANGED
@@ -2,29 +2,29 @@
2
2
 
3
3
  // src/main.ts
4
4
  import path from "node:path";
5
- var embeddedVersion = "0.0.6-dev.27";
5
+ var embeddedVersion = "0.0.6";
6
6
  var setupCommands = new Set(["install", "uninstall", "extension", "pair", "rollback", "set"]);
7
7
  var command = process.argv[2];
8
8
  var invokedAs = path.basename(process.argv[1] ?? "");
9
9
  if (command === "--version" || command === "-v") {
10
- const opencodeBrowserVersion = embeddedVersion ?? (await import("./version-1hb8s8jj.mjs")).opencodeBrowserVersion;
10
+ const opencodeBrowserVersion = embeddedVersion ?? (await import("./version-8gwa4g0s.mjs")).opencodeBrowserVersion;
11
11
  process.stdout.write(`${opencodeBrowserVersion}
12
12
  `);
13
13
  } else if (invokedAs === "opencode-browser-mcp" || command === "mcp" && process.argv.length === 3) {
14
14
  const { NodeRuntime } = await import("@effect/platform-node");
15
- const { runMcpServer } = await import("./mcp-za7ymfdd.mjs");
15
+ const { runMcpServer } = await import("./mcp-4w28g9h2.mjs");
16
16
  runMcpServer.pipe(NodeRuntime.runMain);
17
17
  } else if (command === "mcp" && globalThis.__OPENCODE_BROWSER_COMPILED__ && process.env.OPENCODE_BROWSER_MCP_DIRECT !== "1") {
18
- const { runBinaryMcp } = await import("./supervisor-w6hs0gbw.mjs");
18
+ const { runBinaryMcp } = await import("./supervisor-9qwn7rb1.mjs");
19
19
  await runBinaryMcp(process.argv.slice(3));
20
20
  } else if (command === "runtime-install" || command === "runtime-switch") {
21
- const { runRuntimeInstall, runRuntimeSwitch } = await import("./runtime-update-gteb0gp8.mjs");
21
+ const { runRuntimeInstall, runRuntimeSwitch } = await import("./runtime-update-zjx0kaj7.mjs");
22
22
  await (command === "runtime-install" ? runRuntimeInstall : runRuntimeSwitch)(process.argv.slice(3));
23
23
  } else if (command === "update") {
24
- const { runUpdateCommand } = await import("./update-pj25xbh4.mjs");
24
+ const { runUpdateCommand } = await import("./update-sxawv22k.mjs");
25
25
  await runUpdateCommand(process.argv.slice(3));
26
26
  } else if (command && setupCommands.has(command)) {
27
- const { runSetup } = await import("./setup-zka6z53q.mjs");
27
+ const { runSetup } = await import("./setup-0z9803a3.mjs");
28
28
  await runSetup(command, process.argv.slice(3));
29
29
  } else {
30
30
  if (!command || command === "--help" || command === "-h") {
@@ -59,9 +59,9 @@ if (command === "--version" || command === "-v") {
59
59
  `);
60
60
  }
61
61
  if (command === "status" && !process.argv.includes("--json")) {
62
- const { printSetupStatus } = await import("./setup-zka6z53q.mjs");
62
+ const { printSetupStatus } = await import("./setup-0z9803a3.mjs");
63
63
  printSetupStatus();
64
64
  }
65
- const { runCli } = await import("./cli-n0qhph13.mjs");
65
+ const { runCli } = await import("./cli-jp1jev7t.mjs");
66
66
  runCli();
67
67
  }
@@ -31,7 +31,7 @@ import {
31
31
  isRestrictedTarget2,
32
32
  isRestrictedUrl2,
33
33
  dataUrlDocument2
34
- } from "./main-xzc7qp1c.mjs";
34
+ } from "./main-605j7tjk.mjs";
35
35
  import"./main-3gthmkzw.mjs";
36
36
  export {
37
37
  HttpRouteError2 as HttpRouteError,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  writePrivateJsonFileSync
3
- } from "./main-bq8az9yr.mjs";
3
+ } from "./main-yv64m9we.mjs";
4
4
  import {
5
5
  dataRoot,
6
6
  devExtensionUrl,
7
7
  devExtensionFolder
8
- } from "./main-a6mpfd6z.mjs";
8
+ } from "./main-3cza6vx1.mjs";
9
9
 
10
10
  // src/relay/browser-pairing.ts
11
11
  import crypto from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  opencodeBrowserVersion2
3
- } from "./main-vp3devjb.mjs";
3
+ } from "./main-ry14nc9q.mjs";
4
4
 
5
5
  // src/update/auto-update.ts
6
6
  import { spawn } from "node:child_process";
@@ -70,7 +70,7 @@ function storeConfig(env = process.env, baked = { id: "mfnicocicmmlkpjnaffgihfjh
70
70
  return id ? { id } : {};
71
71
  }
72
72
  var RELEASE_SERVICE = "https://anoma.ly/release";
73
- function devExtension(baked = { file: "browse-extension-0.0.6-dev.27.zip", sha256: "c7696375313ea9d7bbd41e65895e0594c6ec66ccebbda988216fb3c79f1950fb", size: 172557 }) {
73
+ function devExtension(baked = undefined) {
74
74
  return baked && /^[0-9a-f]{64}$/.test(baked.sha256) && /^[\w.-]+\.zip$/.test(baked.file) ? baked : undefined;
75
75
  }
76
76
  var devExtensionUrl = (extension, env = process.env) => `${(env.OPENCODE_BROWSER_RELEASE_SERVICE || RELEASE_SERVICE).replace(/\/+$/, "")}/browse/files/${extension.sha256}/${extension.file}`;
@@ -6,17 +6,17 @@ import {
6
6
  } from "./main-3gthmkzw.mjs";
7
7
  import {
8
8
  relayAuthorization
9
- } from "./main-bq8az9yr.mjs";
9
+ } from "./main-yv64m9we.mjs";
10
10
  import {
11
11
  opencodeBrowserBuildId2
12
- } from "./main-vp3devjb.mjs";
12
+ } from "./main-ry14nc9q.mjs";
13
13
  import {
14
14
  compiledBinary,
15
15
  scriptEntry,
16
16
  cliCommand,
17
17
  installCommand,
18
18
  npmRuntime
19
- } from "./main-a6mpfd6z.mjs";
19
+ } from "./main-3cza6vx1.mjs";
20
20
 
21
21
  // src/relay/helpers.ts
22
22
  import { Option, Predicate, Schema as Schema3 } from "effect";
@@ -312,35 +312,6 @@ var AuthProfileSummary = Schema.Struct({
312
312
  slotCount: Schema.Number,
313
313
  slots: Schema.Array(AuthProfileSlotSummary)
314
314
  });
315
- var DeadboltLoginsRequest = Schema.Struct({
316
- sessionId: Schema.optionalKey(Schema.String)
317
- });
318
- var DeadboltListedLogin = Schema.Struct({
319
- origin: Schema.String,
320
- title: Schema.String,
321
- username: Schema.optionalKey(Schema.String),
322
- hasPassword: Schema.Boolean,
323
- hasTotp: Schema.Boolean,
324
- hasPasskey: Schema.Boolean,
325
- granted: Schema.Boolean,
326
- fields: Schema.optionalKey(Schema.Array(Schema.String)),
327
- passkeys: Schema.Boolean,
328
- signIn: Schema.optionalKey(Schema.Struct({ provider: Schema.String, account: Schema.optionalKey(Schema.String) }))
329
- });
330
- var DeadboltListedPasskey = Schema.Struct({
331
- origin: Schema.String,
332
- username: Schema.optionalKey(Schema.String),
333
- displayName: Schema.optionalKey(Schema.String),
334
- granted: Schema.Boolean
335
- });
336
- var DeadboltLoginsResponse = Schema.Struct({
337
- connected: Schema.Boolean,
338
- origins: Schema.Array(Schema.String),
339
- logins: Schema.Array(DeadboltListedLogin),
340
- passkeys: Schema.Array(DeadboltListedPasskey),
341
- error: Schema.optionalKey(Schema.Struct({ code: Schema.String, message: Schema.String })),
342
- note: Schema.optionalKey(Schema.String)
343
- });
344
315
  var NetworkEndpointDigest = Schema.Struct({
345
316
  method: Schema.String,
346
317
  url: Schema.String,
@@ -1113,7 +1084,6 @@ var make = Effect2.fn("RelayClient.make")(function* (options) {
1113
1084
  networkStop: (request) => postJson("/network/stop", { ...request }, NetworkStopResponse),
1114
1085
  networkCancel: (request) => postJson("/network/cancel", { ...request }, NetworkCancelResponse),
1115
1086
  authStatus: (request) => postJson("/auth/status", { ...request }, AuthProfileSummary),
1116
- deadboltLogins: (request) => postJson("/cli/deadbolt/logins", { ...request }, DeadboltLoginsResponse),
1117
1087
  authRefresh: (request) => postJson("/auth/refresh", { ...request }, NetworkStopResponse),
1118
1088
  authRun: (request) => postJson("/auth/run", { ...request }, AuthRunResponse),
1119
1089
  recordingStart: ({ sessionId, tabId, ...request }) => postJson("/recording/start", { ...recordingTargetBody({ sessionId, tabId }), ...request }, RecordingStartResponse),
@@ -1437,4 +1407,4 @@ function isRelayStartingOrUnreachable(error) {
1437
1407
  return isRelayStarting(error) || isRelayUnreachable(error);
1438
1408
  }
1439
1409
 
1440
- export { ExecuteRequest, SessionAdoptRequest, SessionNewRequest, SessionEnsureRequest, SessionIdRequest, SessionAllowlistRequest, AuthenticatedJsonRequest, AuthenticatedJsonOutcome, RelayShutdownRequest, NetworkStartRequest, NetworkSessionRequest, NetworkStopRequest, DeadboltLoginsRequest, AuthProfileRequest, AuthRefreshRequest, AuthRunRequest, RecordingTargetRequest, RecordingStartRequest, FlightRecorderStartRequest, FlightRecorderSaveRequest, HttpRouteError2, formatHostForUrl2, listenHttpServer2, closeHttpServer2, closeWebSocketServer2, logCloseError2, sendJson2, readJsonBody2, stableUnpackedExtensionOrigin2, chromeExtensionOriginForPath2, parseAdditionalExtensionOrigins2, validateHostHeader2, validateBrowserFetchSite2, validateWebSocketOrigin2, defaultHost2, defaultPort2, optionalSessionId2, isValidSessionId2, requiredSessionId2, parseTargetSelection2, generateSessionId2, sendCdpResponse2, sendCdpEvent2, getObject2, getString2, getNumber2, getIdText2, headerValue2, getTargetInfo2, isRestrictedTarget2, isRestrictedUrl2, dataUrlDocument2, portConfig, extensionOriginsConfig, endpointForPort, RelayUnreachable, RelayRejected, Service, layerFetch, layerFetchMcp, shouldWaitForExtensionReconnect, relayBuildProblem, ensureRelay, restartRelay, extensionReconnectWaitMs, ensureExtensionConnected, stoppedRelayStatus, statusCollections, startManagedRelay };
1410
+ export { ExecuteRequest, SessionAdoptRequest, SessionNewRequest, SessionEnsureRequest, SessionIdRequest, SessionAllowlistRequest, AuthenticatedJsonRequest, AuthenticatedJsonOutcome, RelayShutdownRequest, NetworkStartRequest, NetworkSessionRequest, NetworkStopRequest, AuthProfileRequest, AuthRefreshRequest, AuthRunRequest, RecordingTargetRequest, RecordingStartRequest, FlightRecorderStartRequest, FlightRecorderSaveRequest, HttpRouteError2, formatHostForUrl2, listenHttpServer2, closeHttpServer2, closeWebSocketServer2, logCloseError2, sendJson2, readJsonBody2, stableUnpackedExtensionOrigin2, chromeExtensionOriginForPath2, parseAdditionalExtensionOrigins2, validateHostHeader2, validateBrowserFetchSite2, validateWebSocketOrigin2, defaultHost2, defaultPort2, optionalSessionId2, isValidSessionId2, requiredSessionId2, parseTargetSelection2, generateSessionId2, sendCdpResponse2, sendCdpEvent2, getObject2, getString2, getNumber2, getIdText2, headerValue2, getTargetInfo2, isRestrictedTarget2, isRestrictedUrl2, dataUrlDocument2, portConfig, extensionOriginsConfig, endpointForPort, RelayUnreachable, RelayRejected, Service, layerFetch, layerFetchMcp, shouldWaitForExtensionReconnect, relayBuildProblem, ensureRelay, restartRelay, extensionReconnectWaitMs, ensureExtensionConnected, stoppedRelayStatus, statusCollections, startManagedRelay };