usebeeline 0.0.105 → 0.0.107

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 (2) hide show
  1. package/dist/usebeeline.mjs +119 -63
  2. package/package.json +1 -1
@@ -3987,7 +3987,7 @@ __export(self_update_exports, {
3987
3987
  import { createHash as createHash7 } from "node:crypto";
3988
3988
  import { constants as fsConstants2 } from "node:fs";
3989
3989
  import { access, chmod as chmod5, lstat as lstat3, mkdir as mkdir15, open, readFile as readFile10, rename as rename4, rm as rm6, symlink as symlink3, writeFile as writeFile10 } from "node:fs/promises";
3990
- import { spawn as spawn5 } from "node:child_process";
3990
+ import { spawn as spawn6 } from "node:child_process";
3991
3991
  import { homedir as homedir9 } from "node:os";
3992
3992
  import { dirname as dirname11, join as join9, resolve as resolve22 } from "node:path";
3993
3993
  function anchorLayout(rawLibDir) {
@@ -4137,7 +4137,7 @@ async function fetchText(url, fetchImpl) {
4137
4137
  }
4138
4138
  function run(command, args, timeoutMs) {
4139
4139
  return new Promise((resolveRun) => {
4140
- const child = spawn5(command, args, { stdio: ["ignore", "ignore", "pipe"] });
4140
+ const child = spawn6(command, args, { stdio: ["ignore", "ignore", "pipe"] });
4141
4141
  let stderr = "";
4142
4142
  child.stderr?.setEncoding("utf8");
4143
4143
  child.stderr?.on("data", (chunk) => {
@@ -4210,7 +4210,7 @@ async function stageRelease(layout, manifestUrl, published, opts = {}) {
4210
4210
  }
4211
4211
  await writeFile10(tempArchive, Buffer.concat(chunks), { mode: 384 });
4212
4212
  const entries = (await new Promise((resolveList, rejectList) => {
4213
- const child = spawn5("tar", ["-tzf", tempArchive], { stdio: ["ignore", "pipe", "inherit"] });
4213
+ const child = spawn6("tar", ["-tzf", tempArchive], { stdio: ["ignore", "pipe", "inherit"] });
4214
4214
  let out = "";
4215
4215
  child.stdout?.on("data", (chunk) => {
4216
4216
  out += chunk.toString("utf8");
@@ -8157,9 +8157,8 @@ async function syncAgentModelCatalog(input) {
8157
8157
  }
8158
8158
 
8159
8159
  // apps/body/dist/connector-squire.js
8160
- import { execFile } from "node:child_process";
8161
- var REMOTE_LOGIN_BINARIES = ["Xvfb", "x11vnc", "websockify", "cloudflared"];
8162
- var SQUIRE_CONNECT_PACKAGE = "@trusty-squire/mcp";
8160
+ import { execFile, spawn as spawn2 } from "node:child_process";
8161
+ var SQUIRE_CONNECT_PACKAGE = "@trusty-squire/mcp@next";
8163
8162
  var defaultShellRunner = (command, args) => new Promise((resolve31) => {
8164
8163
  execFile(command, [...args], { timeout: 12e4, maxBuffer: 4 * 1024 * 1024, encoding: "utf8" }, (error, stdout6, stderr) => {
8165
8164
  const code = error?.code;
@@ -8170,26 +8169,63 @@ var defaultShellRunner = (command, args) => new Promise((resolve31) => {
8170
8169
  });
8171
8170
  });
8172
8171
  });
8172
+ var CONNECT_TIMEOUT_MS = 3e5;
8173
+ var defaultStreamedRunner = (command, args) => new Promise((resolve31) => {
8174
+ const child = spawn2(command, args, {
8175
+ stdio: ["ignore", "pipe", "pipe"]
8176
+ });
8177
+ let stdout6 = "";
8178
+ let stderr = "";
8179
+ let resolved = false;
8180
+ const safetyTimer = setTimeout(() => {
8181
+ if (!resolved) {
8182
+ resolved = true;
8183
+ resolve31({ stdout: stdout6, stderr, signIn: void 0, abort: () => {
8184
+ } });
8185
+ }
8186
+ child.kill();
8187
+ }, CONNECT_TIMEOUT_MS);
8188
+ const abort = () => {
8189
+ clearTimeout(safetyTimer);
8190
+ child.kill();
8191
+ };
8192
+ const finish = (result) => {
8193
+ if (!resolved) {
8194
+ resolved = true;
8195
+ clearTimeout(safetyTimer);
8196
+ resolve31(result);
8197
+ }
8198
+ };
8199
+ const checkOutput = () => {
8200
+ const combined = `${stdout6}
8201
+ ${stderr}`;
8202
+ const signIn = parseConnectOutput(combined);
8203
+ if (signIn) {
8204
+ finish({ stdout: stdout6, stderr, signIn, abort });
8205
+ }
8206
+ };
8207
+ child.stdout?.on("data", (chunk) => {
8208
+ stdout6 += String(chunk);
8209
+ checkOutput();
8210
+ });
8211
+ child.stderr?.on("data", (chunk) => {
8212
+ stderr += String(chunk);
8213
+ checkOutput();
8214
+ });
8215
+ child.on("close", () => {
8216
+ finish({ stdout: stdout6, stderr, signIn: void 0, abort: () => {
8217
+ } });
8218
+ });
8219
+ child.on("error", () => {
8220
+ finish({ stdout: stdout6, stderr, signIn: void 0, abort: () => {
8221
+ } });
8222
+ });
8223
+ });
8173
8224
  var step = (label, status, reason) => ({
8174
8225
  label,
8175
8226
  status,
8176
8227
  ...reason ? { reason } : {}
8177
8228
  });
8178
- function binaryExists(binary) {
8179
- return new Promise((resolve31) => {
8180
- execFile("sh", ["-c", `command -v ${JSON.stringify(binary)}`], (error, stdout6) => {
8181
- const path = String(stdout6 ?? "").trim();
8182
- resolve31({ binary, found: !error && path.length > 0, ...path ? { path } : {} });
8183
- });
8184
- });
8185
- }
8186
- async function checkRemoteLoginPrerequisites(probe = binaryExists) {
8187
- return Promise.all(REMOTE_LOGIN_BINARIES.map(probe));
8188
- }
8189
- function missingPrerequisiteStep(checks) {
8190
- const missing = checks.filter((check) => !check.found).map((check) => check.binary);
8191
- return step("remote sign-in prerequisites", "failed", `missing on this helper: ${missing.join(", ")}`);
8192
- }
8193
8229
  function parseConnectOutput(output) {
8194
8230
  const url = output.match(/https:\/\/[^\s"'<>]+/)?.[0];
8195
8231
  if (!url)
@@ -8212,6 +8248,7 @@ function parseSignedInAs(output) {
8212
8248
  }
8213
8249
  async function installSquire(options) {
8214
8250
  const run2 = options.run ?? defaultShellRunner;
8251
+ const streamRun = options.streamRun ?? defaultStreamedRunner;
8215
8252
  const steps = [step("helper reached", "done")];
8216
8253
  const emit = () => options.onProgress?.([...steps]);
8217
8254
  const push = (next) => {
@@ -8224,34 +8261,25 @@ async function installSquire(options) {
8224
8261
  return { status: "error", steps, errorMessage: reason };
8225
8262
  };
8226
8263
  emit();
8227
- const checks = await checkRemoteLoginPrerequisites(options.probeBinary);
8228
- if (checks.some((check) => !check.found)) {
8229
- push(missingPrerequisiteStep(checks));
8230
- return fail("this helper cannot host the remote sign-in surface");
8231
- }
8232
- push(step("remote sign-in prerequisites", "done"));
8233
- const install = await run2("npx", [
8264
+ const install = await streamRun("npx", [
8234
8265
  "-y",
8235
8266
  SQUIRE_CONNECT_PACKAGE,
8236
8267
  "connect",
8237
- "--target=pi",
8268
+ "--force-relogin=google",
8269
+ "--target=codex",
8238
8270
  "--skip-browser"
8239
8271
  ]);
8240
- if (install.code !== 0) {
8241
- push(step("trusty-squire installed", "failed", install.stderr.trim() || "connect failed"));
8242
- return fail("the trusty-squire install command failed");
8272
+ if (!install.signIn) {
8273
+ const stderr = install.stderr.trim();
8274
+ push(step("trusty-squire installed", "failed", stderr || "connect printed no sign-in URL"));
8275
+ return fail(stderr || "the trusty-squire connect command printed no sign-in surface");
8243
8276
  }
8244
8277
  const version = await installedSquireVersion(run2);
8245
8278
  push(step(`trusty-squire${version ? ` ${version}` : ""} installed`, "done"));
8246
- const output = `${install.stdout}
8247
- ${install.stderr}`;
8248
- const signIn = parseConnectOutput(output);
8249
- if (!signIn) {
8250
- push(step("waiting for sign-in", "failed", "connect printed no sign-in URL"));
8251
- return fail("the trusty-squire connect command printed no sign-in surface");
8252
- }
8279
+ const signIn = install.signIn;
8280
+ const signedInAs = parseSignedInAs(`${install.stdout}
8281
+ ${install.stderr}`);
8253
8282
  push(step("waiting for sign-in", "done"));
8254
- const signedInAs = parseSignedInAs(output);
8255
8283
  const pair = await pairSquire(options.mcp, options.workspaceId);
8256
8284
  if (!pair.ok) {
8257
8285
  push(step("paired to workspace", "failed", pair.reason));
@@ -8346,7 +8374,7 @@ async function revokeGrants(mcp, ref) {
8346
8374
  }
8347
8375
 
8348
8376
  // apps/body/dist/squire-mcp-client.js
8349
- import { spawn as spawn2 } from "node:child_process";
8377
+ import { spawn as spawn3 } from "node:child_process";
8350
8378
  var INITIALIZE_TIMEOUT_MS = 3e4;
8351
8379
  var CALL_TIMEOUT_MS = 12e4;
8352
8380
  var StdioSquireMcpClient = class {
@@ -8402,8 +8430,10 @@ var StdioSquireMcpClient = class {
8402
8430
  return this.initialized;
8403
8431
  }
8404
8432
  initialize() {
8405
- const child = (this.options.spawn ?? spawn2)(this.options.command ?? "npx", [
8406
- ...this.options.args ?? ["-y", "@trusty-squire/mcp"]
8433
+ const child = (this.options.spawn ?? spawn3)(this.options.command ?? "npx", [
8434
+ // `@next` RC: only the RC coordinates with a running Trusty Squire broker
8435
+ // for concurrent sessions; stable `latest` cannot share its browser.
8436
+ ...this.options.args ?? ["-y", "@trusty-squire/mcp@next"]
8407
8437
  ]);
8408
8438
  this.child = child;
8409
8439
  this.buffer = "";
@@ -8692,7 +8722,7 @@ import { closeSync, openSync } from "node:fs";
8692
8722
  import { mkdir, readFile as readFile2, readdir, rename, stat, writeFile as writeFile2 } from "node:fs/promises";
8693
8723
  import { homedir as homedir2 } from "node:os";
8694
8724
  import { dirname as dirname2, resolve as resolve6 } from "node:path";
8695
- import { spawn as spawn3 } from "node:child_process";
8725
+ import { spawn as spawn4 } from "node:child_process";
8696
8726
  import { promisify } from "node:util";
8697
8727
 
8698
8728
  // node_modules/@noble/hashes/_u64.js
@@ -17413,7 +17443,7 @@ async function launchRuntimeDaemon(configPath, opts = {}) {
17413
17443
  const entrypoint = opts.entrypoint ?? process.argv[1];
17414
17444
  if (!entrypoint)
17415
17445
  throw new Error("cannot resolve daemon CLI entrypoint");
17416
- const child = spawn3(process.execPath, [...opts.execArgv ?? [], entrypoint, "daemon", "--config", resolve6(configPath)], {
17446
+ const child = spawn4(process.execPath, [...opts.execArgv ?? [], entrypoint, "daemon", "--config", resolve6(configPath)], {
17417
17447
  cwd: directory,
17418
17448
  env: opts.env ?? process.env,
17419
17449
  detached: !foreground,
@@ -18351,9 +18381,9 @@ var GrantCommandRunner = class {
18351
18381
  ...Object.fromEntries(secrets)
18352
18382
  };
18353
18383
  const cap = this.options.outputCapBytes ?? GRANT_COMMAND_OUTPUT_CAP_BYTES;
18354
- const spawn9 = surfaceAllows(policy.surface, "run-host-command") ? { command: argv[0], args: argv.slice(1) } : roomSandboxCommand(policy, room.cwd, argv);
18384
+ const spawn10 = surfaceAllows(policy.surface, "run-host-command") ? { command: argv[0], args: argv.slice(1) } : roomSandboxCommand(policy, room.cwd, argv);
18355
18385
  const outcome = await new Promise((resolveRun) => {
18356
- const child = execFile3(spawn9.command, spawn9.args, {
18386
+ const child = execFile3(spawn10.command, spawn10.args, {
18357
18387
  cwd: room.cwd,
18358
18388
  env,
18359
18389
  timeout: this.options.timeoutMs ?? GRANT_COMMAND_TIMEOUT_MS,
@@ -18988,7 +19018,7 @@ Then take exactly one action:
18988
19018
  }
18989
19019
 
18990
19020
  // apps/body/dist/external-mcp-capabilities.js
18991
- var SQUIRE_MCP_VERSION = "1.1.12";
19021
+ var SQUIRE_MCP_VERSION = "next";
18992
19022
  var SQUIRE_MCP_PACKAGE = `@trusty-squire/mcp@${SQUIRE_MCP_VERSION}`;
18993
19023
  function isTrustySquireMcpLaunch(command, args = []) {
18994
19024
  return [command, ...args].some((value) => {
@@ -25210,9 +25240,10 @@ async function runStartCommand(args, interactiveUi) {
25210
25240
  }
25211
25241
 
25212
25242
  // apps/body/dist/connect-command.js
25213
- import { spawn as spawn6 } from "node:child_process";
25214
- import { createHash as createHash8 } from "node:crypto";
25243
+ import { spawn as spawn7 } from "node:child_process";
25244
+ import { createHash as createHash8, randomUUID as randomUUID5 } from "node:crypto";
25215
25245
  import { chmod as chmod6, mkdir as mkdir16, readFile as readFile11, unlink as unlink2, writeFile as writeFile11 } from "node:fs/promises";
25246
+ import { homedir as homedir10, hostname } from "node:os";
25216
25247
  import { dirname as dirname12, resolve as resolve23 } from "node:path";
25217
25248
  import { stdin as stdin3, stdout as stdout4 } from "node:process";
25218
25249
 
@@ -25297,7 +25328,7 @@ async function verifyProviderKey(input) {
25297
25328
  }
25298
25329
 
25299
25330
  // apps/body/dist/pair-agent-selection.js
25300
- import { spawn as spawn4 } from "node:child_process";
25331
+ import { spawn as spawn5 } from "node:child_process";
25301
25332
  import { stdin as stdin2, stdout as stdout3 } from "node:process";
25302
25333
  var NO_AGENT_MESSAGE = `No supported ACP-capable coding agent was detected.
25303
25334
  Install one of these supported agents:
@@ -25325,7 +25356,7 @@ async function clackSelectAgent(candidates) {
25325
25356
  }
25326
25357
  async function installAdapter(install, opts) {
25327
25358
  await new Promise((resolveInstall, rejectInstall) => {
25328
- const child = spawn4(install.command, install.args, {
25359
+ const child = spawn5(install.command, install.args, {
25329
25360
  cwd: opts.cwd,
25330
25361
  env: opts.env ?? process.env,
25331
25362
  stdio: "inherit"
@@ -25826,7 +25857,29 @@ function parseConnectSubscriptions(value) {
25826
25857
  ...new Set((value ?? "").split(",").map((entry) => entry.trim().toLowerCase()).filter(Boolean))
25827
25858
  ];
25828
25859
  }
25829
- function requestConnectGrant(baseUrl, pairingCode, selection, fetchImpl) {
25860
+ async function readMachineId(env = process.env) {
25861
+ const configDir = resolve23(env.XDG_CONFIG_HOME ?? resolve23(homedir10(), ".config"), "beeline");
25862
+ const machineIdPath = resolve23(configDir, "machine-id");
25863
+ let machineId;
25864
+ let machineName = hostname();
25865
+ try {
25866
+ const existing = await readFile11(machineIdPath, "utf8");
25867
+ machineId = existing.trim();
25868
+ if (!/^[0-9a-f-]{32,}$/.test(machineId))
25869
+ throw new Error("invalid persisted machine id");
25870
+ } catch {
25871
+ machineId = randomUUID5();
25872
+ try {
25873
+ await mkdir16(configDir, { recursive: true, mode: 448 });
25874
+ await writeFile11(machineIdPath, `${machineId}
25875
+ `, { mode: 384 });
25876
+ } catch {
25877
+ machineId = createHash8("sha256").update(machineName).digest("hex").slice(0, 36);
25878
+ }
25879
+ }
25880
+ return { machineId, machineName };
25881
+ }
25882
+ function requestConnectGrant(baseUrl, pairingCode, selection, fetchImpl, machineInfo) {
25830
25883
  const normalizedPairingCode = normalizeAgentPairingCode(pairingCode);
25831
25884
  if (!normalizedPairingCode)
25832
25885
  throw new Error("invalid pairing code");
@@ -25841,7 +25894,8 @@ function requestConnectGrant(baseUrl, pairingCode, selection, fetchImpl) {
25841
25894
  // This wizard always finishes the join itself (`finishConnectedAgentPairing`,
25842
25895
  // called once the rename prompt below settles), so the claim must not
25843
25896
  // join Rooms or announce yet.
25844
- defer_join: true
25897
+ defer_join: true,
25898
+ ...machineInfo ? { machine_id: machineInfo.machineId, machine_name: machineInfo.machineName } : {}
25845
25899
  }, fetchImpl);
25846
25900
  }
25847
25901
  async function renameConnectedAgent(baseUrl, pairingCode, name, fetchImpl) {
@@ -25920,7 +25974,7 @@ async function writeProviderEnv(selection, agentPubkey) {
25920
25974
  }
25921
25975
  async function runInstalledFinish(binary, grantPath) {
25922
25976
  await new Promise((resolveRun, rejectRun) => {
25923
- const child = spawn6(binary, ["connect-finish", grantPath], {
25977
+ const child = spawn7(binary, ["connect-finish", grantPath], {
25924
25978
  stdio: ["ignore", "pipe", "pipe"]
25925
25979
  });
25926
25980
  let diagnostic = "";
@@ -25971,7 +26025,8 @@ async function runConnectWizard(code, fetchImpl, eventSubscriptions, accessPolic
25971
26025
  });
25972
26026
  const selection = await collectConnectWizard(clackPrompts, loadConnectModelCatalog, fileConnectKeyStore, process.env, (input) => verifyProviderKey({ ...input, fetchImpl }));
25973
26027
  const baseUrl = (process.env.BEELINE_AUTH_URL ?? "https://server.usebeeline.app").replace(/\/$/, "");
25974
- const claimed = await brassSpinner("Connecting to your Beeline Workspace\u2026", () => requestConnectGrant(baseUrl, pairingCode, selection, fetchImpl), (connectedGrant) => `Connected to ${connectedGrant.workspace_name}`);
26028
+ const machineInfo = await readMachineId(process.env);
26029
+ const claimed = await brassSpinner("Connecting to your Beeline Workspace\u2026", () => requestConnectGrant(baseUrl, pairingCode, selection, fetchImpl, machineInfo), (connectedGrant) => `Connected to ${connectedGrant.workspace_name}`);
25975
26030
  const grant = { ...claimed, agent_name: await confirmSeededName(baseUrl, pairingCode, claimed, fetchImpl) };
25976
26031
  await finishConnectedAgentPairing(baseUrl, pairingCode, grant.workspace_joined, eventSubscriptions, fetchImpl);
25977
26032
  const installedRelease = await brassSpinner("Installing the Beeline daemon\u2026", () => installCurrentRelease(fetchImpl), (release) => `Installed Beeline helper ${release.version}`);
@@ -26093,7 +26148,7 @@ init_self_update_manifest();
26093
26148
 
26094
26149
  // apps/body/dist/managed-update.js
26095
26150
  init_self_update();
26096
- import { spawn as spawn7 } from "node:child_process";
26151
+ import { spawn as spawn8 } from "node:child_process";
26097
26152
  import { mkdir as mkdir18, rm as rm7, stat as stat3, writeFile as writeFile13 } from "node:fs/promises";
26098
26153
  import { dirname as dirname14, resolve as resolve25 } from "node:path";
26099
26154
 
@@ -26507,7 +26562,7 @@ async function runManagedUpdateWorkerProcess() {
26507
26562
  if (!entrypoint)
26508
26563
  throw new Error("cannot resolve the current Beeline entrypoint");
26509
26564
  await new Promise((resolveWorker, rejectWorker) => {
26510
- const child = spawn7(process.execPath, [entrypoint, "managed-update-worker"], {
26565
+ const child = spawn8(process.execPath, [entrypoint, "managed-update-worker"], {
26511
26566
  detached: true,
26512
26567
  env: { ...process.env, BEELINE_INTERNAL_UPDATE_WORKER: "1" },
26513
26568
  stdio: ["ignore", "pipe", "pipe"]
@@ -26861,7 +26916,7 @@ async function clearDaemonStartFailures(runtimeDir) {
26861
26916
 
26862
26917
  // apps/body/dist/update-functional-probe.js
26863
26918
  import { mkdir as mkdir20, rm as rm9 } from "node:fs/promises";
26864
- import { homedir as homedir10 } from "node:os";
26919
+ import { homedir as homedir11 } from "node:os";
26865
26920
  import { resolve as resolve27 } from "node:path";
26866
26921
  var UPDATE_PROBE_SESSION_TIMEOUT_MS = 1e4;
26867
26922
  var UPDATE_PROBE_SESSION_OPEN_TIMEOUT_MS = 2e4;
@@ -26967,7 +27022,7 @@ async function runUpdateFunctionalProbe(input) {
26967
27022
  ...input.config.agentEnv,
26968
27023
  ...await prepareRoomAgentHome({
26969
27024
  root: homeRoot,
26970
- operatorHome: input.config.operatorHome ?? homedir10(),
27025
+ operatorHome: input.config.operatorHome ?? homedir11(),
26971
27026
  sharedSkills: input.config.sharedSkills ?? [],
26972
27027
  ...input.config.agentKind ? { agentKind: input.config.agentKind } : {},
26973
27028
  skillReleaseId: input.releaseId,
@@ -26988,7 +27043,7 @@ async function runUpdateFunctionalProbe(input) {
26988
27043
  let turnCompleted = true;
26989
27044
  if (input.config.bwrapPath) {
26990
27045
  const { stateDirs, tmpDir } = harnessStateDirsFromEnv(agentEnv);
26991
- const operatorHome = input.config.operatorHome ?? homedir10();
27046
+ const operatorHome = input.config.operatorHome ?? homedir11();
26992
27047
  const homeStateDirs = harnessHomeStateDirs(command, agentEnv.HOME ?? operatorHome);
26993
27048
  await Promise.all(homeStateDirs.map((dir) => mkdir20(dir, { recursive: true })));
26994
27049
  spawnCommand = wrapAgentCommand({
@@ -27139,7 +27194,7 @@ async function runUpdateFunctionalProbe(input) {
27139
27194
  }
27140
27195
 
27141
27196
  // apps/body/dist/current-release-probe.js
27142
- import { spawn as spawn8 } from "node:child_process";
27197
+ import { spawn as spawn9 } from "node:child_process";
27143
27198
  import { dirname as dirname16, join as join10 } from "node:path";
27144
27199
  init_self_update();
27145
27200
  var CURRENT_RELEASE_PROBE_TIMEOUT_MS = 12e4;
@@ -27190,7 +27245,7 @@ async function probeReleaseInSubprocess(input) {
27190
27245
  }
27191
27246
  const timeoutMs = input.timeoutMs ?? CURRENT_RELEASE_PROBE_TIMEOUT_MS;
27192
27247
  return new Promise((resolve31) => {
27193
- const child = spawn8(input.execPath ?? process.execPath, [entrypoint, UPDATE_PROBE_COMMAND, "--config", input.runtimeConfigPath], { env: input.env ?? process.env, stdio: ["ignore", "pipe", "pipe"] });
27248
+ const child = spawn9(input.execPath ?? process.execPath, [entrypoint, UPDATE_PROBE_COMMAND, "--config", input.runtimeConfigPath], { env: input.env ?? process.env, stdio: ["ignore", "pipe", "pipe"] });
27194
27249
  let stdout6 = "";
27195
27250
  let stderr = "";
27196
27251
  let settled = false;
@@ -27608,6 +27663,7 @@ async function runStoredDaemon(pathOrPointer) {
27608
27663
  ...runtime.modelSelection ? { runtimeSelection: runtime.modelSelection } : {},
27609
27664
  ...config.modelUnavailable ? { startupUnavailable: config.modelUnavailable.unavailable.label } : {}
27610
27665
  });
27666
+ void readMachineId(process.env).then(({ machineId, machineName }) => daemonApi.execute("postAgentMachineReport", { machineId, machineName }));
27611
27667
  connectorLoop ??= new ConnectorAssignmentLoop({
27612
27668
  api: daemonApi,
27613
27669
  agentId: runtime.agent.publicKey,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "usebeeline",
3
- "version": "0.0.105",
3
+ "version": "0.0.107",
4
4
  "description": "Connect an AI coding agent to Beeline with one command.",
5
5
  "homepage": "https://usebeeline.app",
6
6
  "bugs": {