superbee 0.4.4-pre.10 → 0.4.4-pre.11

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.
package/dist/superbee.mjs CHANGED
@@ -44,7 +44,7 @@ var __toESM = (mod, isNodeMode, target3) => (target3 = mod != null ? __create(__
44
44
  var define_SUPERBEE_BUILD_IDENTITY_default;
45
45
  var init_define_SUPERBEE_BUILD_IDENTITY = __esm({
46
46
  "<define:__SUPERBEE_BUILD_IDENTITY__>"() {
47
- define_SUPERBEE_BUILD_IDENTITY_default = { schema: "superbee.build-identity.v1", package: { name: "superbee", version: "0.4.4-pre.10" }, source: { commit: "81c77f780e9c7b2dec6e83702f1627d8a1eb9dbc", dirty: false }, artifact: { channel: "npm-package" }, compatibility_contracts: { skill: 1, hook: 1, mcp: 1 } };
47
+ define_SUPERBEE_BUILD_IDENTITY_default = { schema: "superbee.build-identity.v1", package: { name: "superbee", version: "0.4.4-pre.11" }, source: { commit: "cef05a992af831496c63bfb020b73ccb5eba34b7", dirty: false }, artifact: { channel: "npm-package" }, compatibility_contracts: { skill: 1, hook: 1, mcp: 1 } };
48
48
  }
49
49
  });
50
50
 
@@ -28987,7 +28987,7 @@ var init_command_spec = __esm({
28987
28987
  {
28988
28988
  id: "pull",
28989
28989
  leaves: [publicLeaf("pull", "pull", zero, 6, DIR_OUT_SURFACE)],
28990
- usage: "pull --doc-key <key> --out (<path> | -) [--dir <path>] [--remote <url>]",
28990
+ usage: "pull --doc-key <key> --out (<path> | -) [--from-host] [--dir <path>] [--remote <url>]",
28991
28991
  summary: "Pull a doc's canonical form or a blob's raw bytes out of the store (the reverse of promote)"
28992
28992
  },
28993
28993
  {
@@ -55949,6 +55949,9 @@ function wording(client, target3, resume2) {
55949
55949
  const { prefix } = client;
55950
55950
  const failure3 = (error51) => hostedFailure(error51, target3, resume2);
55951
55951
  const readFailure2 = (error51, route, missing2) => {
55952
+ if (error51 instanceof HostedReadAdapterError && error51.code === "unsupported") {
55953
+ return new CliError("NOT_IMPLEMENTED", missing2.message, { details: { host: target3.origin, route, reason: "unsupported" }, help: missing2.help });
55954
+ }
55952
55955
  if (isRouteNotServed(error51)) {
55953
55956
  return new CliError("NOT_IMPLEMENTED", missing2.message, { details: { host: target3.origin, route: error51.route, status: 404 }, help: missing2.help });
55954
55957
  }
@@ -55992,6 +55995,26 @@ function wording(client, target3, resume2) {
55992
55995
  reader(bundleId2) {
55993
55996
  return client.reader(bundleId2);
55994
55997
  },
55998
+ async blobHead(bundleId2, key4, options) {
55999
+ try {
56000
+ return await client.blobHead(bundleId2, key4, options);
56001
+ } catch (error51) {
56002
+ throw readFailure2(error51, `${prefix}/blob-heads`, {
56003
+ message: `${target3.origin} does not serve blob reads yet`,
56004
+ help: "a later release of the host serves them"
56005
+ });
56006
+ }
56007
+ },
56008
+ async readBlob(bundleId2, key4, options) {
56009
+ try {
56010
+ return await client.readBlob(bundleId2, key4, options);
56011
+ } catch (error51) {
56012
+ throw readFailure2(error51, `${prefix}/blob-read`, {
56013
+ message: `${target3.origin} does not serve blob reads yet`,
56014
+ help: "a later release of the host serves them"
56015
+ });
56016
+ }
56017
+ },
55995
56018
  within(slug) {
55996
56019
  return wording(client.within(slug), target3, resume2);
55997
56020
  },
@@ -56084,6 +56107,7 @@ var init_client2 = __esm({
56084
56107
  init_define_SUPERBEE_BUILD_IDENTITY();
56085
56108
  init_define_SUPERBEE_UPDATE_POLICY();
56086
56109
  init_hosted_client();
56110
+ init_hosted_transport();
56087
56111
  init_errors6();
56088
56112
  init_invocation();
56089
56113
  init_command_text();
@@ -104914,6 +104938,26 @@ Options:
104914
104938
  import { parseArgs as parseArgs16 } from "node:util";
104915
104939
  import { promises as fs16 } from "node:fs";
104916
104940
  import path53 from "node:path";
104941
+ import { homedir as homedir30 } from "node:os";
104942
+ async function pullHostedBlob(bundle, key4, out, json4, deps2) {
104943
+ const home2 = deps2.hosted?.auth?.home ?? homedir30();
104944
+ const binding2 = await bindingForPath(home2, await fs16.realpath(bundle.root));
104945
+ if (!binding2) throw new CliError("USAGE", "--from-host requires a bound hosted checkout", {
104946
+ help: "pass --dir with the original checkout folder; ordinary pull reads a local working copy"
104947
+ });
104948
+ const resume2 = commandFragment`${cliInvocation()} pull --doc-key ${commandToken(key4)} --out ${commandToken(out)} --from-host --dir ${commandToken(binding2.path)}${json4 ? commandFragment` --json` : commandFragment``}`;
104949
+ const { client } = await openCheckoutConnection(binding2, deps2.hosted, resume2, home2);
104950
+ const head2 = await client.blobHead(binding2.bundle_id, key4);
104951
+ if (!head2) throw new CliError("NOT_FOUND", `no hosted blob at key '${key4}'`);
104952
+ const result3 = await client.readBlob(binding2.bundle_id, key4, { pin: head2 });
104953
+ if (!result3) throw new CliError("CONFLICT", `hosted blob '${key4}' changed during readback`, {
104954
+ help: "retry the same pull to read a fresh version and content type"
104955
+ });
104956
+ return {
104957
+ bytes: result3.bytes,
104958
+ fields: { route: "blob", source: "hosted", content_type: result3.contentType, version: result3.version, size_bytes: result3.bytes.byteLength }
104959
+ };
104960
+ }
104917
104961
  function isDocRouteKey2(key4) {
104918
104962
  return key4.toLowerCase().endsWith(".md");
104919
104963
  }
@@ -104979,6 +105023,7 @@ async function pull2(argv2, deps2 = {}) {
104979
105023
  options: {
104980
105024
  "doc-key": { type: "string" },
104981
105025
  out: { type: "string" },
105026
+ "from-host": { type: "boolean" },
104982
105027
  dir: { type: "string" },
104983
105028
  remote: { type: "string" },
104984
105029
  json: { type: "boolean" },
@@ -105005,12 +105050,15 @@ async function pull2(argv2, deps2 = {}) {
105005
105050
  });
105006
105051
  }
105007
105052
  if (out !== "-") assertPathOutsidePrivateState(path53.resolve(out));
105053
+ if (values["from-host"] && (values.remote !== void 0 || isDocRouteKey2(key4))) {
105054
+ throw new CliError("USAGE", "--from-host reads blobs from a bound hosted checkout; it cannot be used with --remote or a .md key");
105055
+ }
105008
105056
  const bundle = await openBundle(values.dir, await resolveRemoteFlag(values.remote, values.dir));
105009
105057
  const mode = resolveMode(values);
105010
105058
  const streamMode = out === "-";
105011
105059
  const docRoute = isDocRouteKey2(key4);
105012
105060
  const runToTarget = async () => {
105013
- const result3 = docRoute ? await pullDoc(bundle, key4, values.remote) : await pullBlob(bundle, key4, values.remote);
105061
+ const result3 = values["from-host"] ? await pullHostedBlob(bundle, key4, out, !!values.json, deps2) : docRoute ? await pullDoc(bundle, key4, values.remote) : await pullBlob(bundle, key4, values.remote);
105014
105062
  const receipt5 = { pull: "read", key: key4, ...result3.fields, out };
105015
105063
  const version5 = result3.fields.version;
105016
105064
  const fileHint = streamMode ? "<file>" : out;
@@ -105055,6 +105103,8 @@ var init_pull = __esm({
105055
105103
  init_doc();
105056
105104
  init_egress();
105057
105105
  init_command_text();
105106
+ init_binding2();
105107
+ init_checkout_connection();
105058
105108
  PULL_USAGE = `superbee pull \u2014 pull a doc or blob's bytes out of the store (the reverse of 'promote')
105059
105109
 
105060
105110
  Usage:
@@ -105070,6 +105120,12 @@ Routes by the --doc-key's target (case-insensitive), symmetric with 'promote':
105070
105120
  Any OTHER key is a BLOB: raw bytes, self-verified against the returned version (a real integrity
105071
105121
  check \u2014 catches transport corruption over --remote too, not just a local tautology).
105072
105122
 
105123
+ In a hosted checkout, the default still reads the local working copy; its blob content_type is
105124
+ inferred from the filename. --from-host explicitly reads the bound host's current blob instead,
105125
+ using its stored content type and version together as the byte-read pin. It requires sign-in as
105126
+ the checkout's person and refuses a changed pin rather than mixing observations or falling back
105127
+ to local bytes. It does not sync, place host changes, or send edits; only --out is written.
105128
+
105073
105129
  --out - streams raw bytes to stdout; the receipt goes to STDERR instead (the byte stream stays
105074
105130
  pure), and any error also routes to stderr in that mode. --out <path> writes the file and prints the
105075
105131
  receipt to stdout. A destination path landing INSIDE an open LOCAL bundle carries a loud 'warning'
@@ -105082,6 +105138,8 @@ Options:
105082
105138
  --doc-key <key> Source key (required)
105083
105139
  --out <path> Write bytes to this local path
105084
105140
  --out - Stream raw bytes to stdout; receipt -> stderr
105141
+ --from-host Read a blob's verified bytes and stored MIME from a bound hosted checkout's
105142
+ host (not documents, a local/Git bundle, or --remote)
105085
105143
  --dir <path> Bundle directory (default: discovered from the cwd)
105086
105144
  --remote <url> Talk to a wire-protocol server instead of a local bundle (mutually
105087
105145
  exclusive with --dir; remote access is always explicit)
@@ -105181,7 +105239,7 @@ Options:
105181
105239
  });
105182
105240
 
105183
105241
  // ../cli/src/commands/delete.ts
105184
- import { homedir as homedir30 } from "node:os";
105242
+ import { homedir as homedir31 } from "node:os";
105185
105243
  import { parseArgs as parseArgs18 } from "node:util";
105186
105244
  function isDocRouteKey3(key4) {
105187
105245
  return key4.toLowerCase().endsWith(".md");
@@ -105223,7 +105281,7 @@ async function deleteCommand(argv2, deps2 = {}) {
105223
105281
  );
105224
105282
  }
105225
105283
  const remote = await resolveRemoteFlag(values.remote, values.dir);
105226
- const home2 = deps2.hosted?.auth?.home ?? deps2.home ?? homedir30(), cwd = deps2.cwd ?? deps2.hosted?.cwd ?? process.cwd();
105284
+ const home2 = deps2.hosted?.auth?.home ?? deps2.home ?? homedir31(), cwd = deps2.cwd ?? deps2.hosted?.cwd ?? process.cwd();
105227
105285
  if (deps2.home !== void 0 && deps2.hosted?.auth !== void 0 && deps2.home !== deps2.hosted.auth.home) throw new CliError("USAGE", "offline admission and hosted delivery must use the same private-state home");
105228
105286
  if (!remote && !isDocRouteKey3(key4)) {
105229
105287
  const pending = await admitOfflineBlob({ operation: "delete", key: key4, ...values.dir === void 0 ? {} : { dir: values.dir }, ...rawExpected === void 0 ? {} : { expectedVersion: rawExpected.trim() }, home: home2, cwd });
@@ -110003,7 +110061,7 @@ var init_local_operation_file = __esm({
110003
110061
  });
110004
110062
 
110005
110063
  // ../cli/src/operation-plugins.ts
110006
- import { homedir as homedir31 } from "node:os";
110064
+ import { homedir as homedir32 } from "node:os";
110007
110065
  import path56 from "node:path";
110008
110066
  function refusal3(reason) {
110009
110067
  return new CliError("USAGE", `Local operation registration refused (${reason}).`, { details: { reason }, help: "Register a reviewed self-contained local operation bundle, preview its digest, then explicitly accept that digest. Changed code requires registration and rebinding." });
@@ -110034,17 +110092,17 @@ function parse3(raw) {
110034
110092
  if (total > DEFAULT_SITE_CAPABILITY_LIMITS.maxTotalDescriptorBytes) throw refusal3("operation_descriptor_limit");
110035
110093
  return m;
110036
110094
  }
110037
- async function registerOperationPlugin(folder, accept, input = homedir31()) {
110095
+ async function registerOperationPlugin(folder, accept, input = homedir32()) {
110038
110096
  const result3 = await lifecycle3.register(folder, accept, input);
110039
110097
  return { operation: "op register", ...receipt3(result3.snapshot), accepted: result3.accepted, ..."generation" in result3 ? { generation: result3.generation } : {} };
110040
110098
  }
110041
- async function listOperationPlugins(input = homedir31()) {
110099
+ async function listOperationPlugins(input = homedir32()) {
110042
110100
  return { operation: "op registered", plugins: (await lifecycle3.list(input)).map((s) => ({ ...receipt3(s), generation: s.pointer.generation })) };
110043
110101
  }
110044
- async function removeOperationPlugin(id, input = homedir31()) {
110102
+ async function removeOperationPlugin(id, input = homedir32()) {
110045
110103
  return { operation: "op unregister", plugin: id, removed: await lifecycle3.remove(id, input) };
110046
110104
  }
110047
- async function selectLocalOperation(id, input = homedir31()) {
110105
+ async function selectLocalOperation(id, input = homedir32()) {
110048
110106
  const s = await lifecycle3.select(id, input, (m, key4) => m.superbeeLocalOperations.operations.some((o) => o.id === key4));
110049
110107
  if (!s) return void 0;
110050
110108
  const d = s.manifest.superbeeLocalOperations, op2 = d.operations.find((o) => o.id === id);
@@ -110222,7 +110280,7 @@ var init_local_operation_child = __esm({
110222
110280
  import { spawn as spawn5 } from "node:child_process";
110223
110281
  import { createHash as createHash19, randomUUID as randomUUID7 } from "node:crypto";
110224
110282
  import { lstat as lstat10, mkdir as mkdir4, realpath as realpath9, readdir as readdir7, writeFile as writeFile3 } from "node:fs/promises";
110225
- import { homedir as homedir32 } from "node:os";
110283
+ import { homedir as homedir33 } from "node:os";
110226
110284
  import path57 from "node:path";
110227
110285
  async function localFileBytes(file2, maximum) {
110228
110286
  try {
@@ -110239,10 +110297,10 @@ async function ordinaryDirectory(value, home2, bundle) {
110239
110297
  if (!status2.isDirectory() || status2.isSymbolicLink() || canonical2 !== value || canonical2 === bundle || within(bundle, canonical2)) throw refuse2("ordinary_output_directory_required");
110240
110298
  return canonical2;
110241
110299
  }
110242
- async function localBundle(dir, cwd = process.cwd(), home2 = homedir32()) {
110300
+ async function localBundle(dir, cwd = process.cwd(), home2 = homedir33()) {
110243
110301
  const target3 = await resolveLocalBundleTarget(dir, cwd);
110244
110302
  assertBundleOutsidePrivateState(target3.canonicalRoot, home2);
110245
- const facts = await bundleHomeAt(target3.canonicalRoot, { home: typeof home2 === "string" ? home2 : homedir32() });
110303
+ const facts = await bundleHomeAt(target3.canonicalRoot, { home: typeof home2 === "string" ? home2 : homedir33() });
110246
110304
  if (facts.home === "hosted") throw refuse2("hosted_local_execution_not_supported");
110247
110305
  if (process.platform !== "darwin" && process.platform !== "linux") throw refuse2("unsupported_supervision_platform");
110248
110306
  return target3.canonicalRoot;
@@ -110307,7 +110365,7 @@ async function probeToolVersion(file2, versionFlag, versionChannel) {
110307
110365
  child.once("exit", (code3) => void finish(code3 === 0 ? void 0 : "tool_probe_failed"));
110308
110366
  });
110309
110367
  }
110310
- async function bindLocalOperation(operation, bundle, config2, accept, home2 = homedir32()) {
110368
+ async function bindLocalOperation(operation, bundle, config2, accept, home2 = homedir33()) {
110311
110369
  if (await localBundle(bundle, process.cwd(), home2) !== bundle) throw refuse2("canonical_bundle_required");
110312
110370
  const selection = await selectLocalOperation(operation, home2);
110313
110371
  if (!selection) throw refuse2("unknown_local_operation");
@@ -110433,7 +110491,7 @@ async function stopGroup(pid, grace) {
110433
110491
  return false;
110434
110492
  }
110435
110493
  async function runLocalOperation(operation, bundle, bindingId, input, options = {}) {
110436
- const home2 = options.home ?? homedir32();
110494
+ const home2 = options.home ?? homedir33();
110437
110495
  if (options.exportOutput !== void 0 && (!record15(options.exportOutput) || typeof options.exportOutput.role !== "string" || !key3.test(options.exportOutput.role) || typeof options.exportOutput.path !== "string" || !options.exportOutput.path || options.exportOutput.path.includes("\0"))) throw refuse2("export_output_argument");
110438
110496
  if (!/^[0-9a-f-]{36}$/.test(bindingId)) throw refuse2("binding_id");
110439
110497
  const binding2 = JSON.parse(await readUserStateFile(home2, path57.join(canonicalUserStateDir(home2), "local-operation-bindings", `${bindingId}.json`), 65536));
@@ -110769,7 +110827,7 @@ var init_transport = __esm({
110769
110827
 
110770
110828
  // ../cli/src/source-local/run.ts
110771
110829
  import { realpath as realpath10 } from "node:fs/promises";
110772
- import { homedir as homedir33 } from "node:os";
110830
+ import { homedir as homedir34 } from "node:os";
110773
110831
  function publicSourceReason(reason) {
110774
110832
  return reason === void 0 ? void 0 : typeof reason === "string" && PUBLIC_SOURCE_REASONS.has(reason) ? reason : "unclassified";
110775
110833
  }
@@ -110777,7 +110835,7 @@ async function context(feedId, dir, stateInput) {
110777
110835
  const bundle = await openBundle(dir);
110778
110836
  const root = await realpath10(bundle.root);
110779
110837
  assertPathOutsidePrivateState(root);
110780
- if (await bindingForPath(homedir33(), root)) throw sourceRefusal("hosted_target_unsupported");
110838
+ if (await bindingForPath(homedir34(), root)) throw sourceRefusal("hosted_target_unsupported");
110781
110839
  const [registry2, edition, feed] = await Promise.all([loadKinds(bundle), readBundleOkfVersion2(bundle), readDoc2(bundle, feedId)]);
110782
110840
  if (feed.frontmatter.type !== "Source Feed" || typeof feed.frontmatter.connector !== "string") throw sourceRefusal("feed_invalid");
110783
110841
  const parsed2 = parseConnectorDoc(await readDoc2(bundle, feed.frontmatter.connector), { kinds: registry2 });
@@ -110999,7 +111057,7 @@ var init_run = __esm({
110999
111057
 
111000
111058
  // ../cli/src/source-local/snapshot.ts
111001
111059
  import { realpath as realpath11 } from "node:fs/promises";
111002
- import { homedir as homedir34 } from "node:os";
111060
+ import { homedir as homedir35 } from "node:os";
111003
111061
  import { dirname as dirname5, resolve as resolve2 } from "node:path";
111004
111062
  async function guardFile(file2, home2, root) {
111005
111063
  const selected2 = resolve2(file2);
@@ -111031,7 +111089,7 @@ function safeError(error51) {
111031
111089
  async function context2(feed, dir, home2) {
111032
111090
  const bundle = await openBundle(dir), root = await realpath11(bundle.root);
111033
111091
  assertPathOutsidePrivateState(root, home2);
111034
- if (await bindingForPath(typeof home2 === "string" ? home2 : homedir34(), root)) throw sourceRefusal("hosted_target_unsupported");
111092
+ if (await bindingForPath(typeof home2 === "string" ? home2 : homedir35(), root)) throw sourceRefusal("hosted_target_unsupported");
111035
111093
  const [registry2, edition, source2] = await Promise.all([loadKinds(bundle), readBundleOkfVersion2(bundle), readDocVersioned2(bundle, feed)]);
111036
111094
  const okfVersion = edition === "0.2" ? "0.2" : "0.1";
111037
111095
  const bound2 = bindSnapshotSource(source2.doc, registry2, { okfVersion });
@@ -111054,7 +111112,7 @@ function assertBinding(current, binding2) {
111054
111112
  }
111055
111113
  async function bindLocalSnapshot(feed, options, deps2 = {}) {
111056
111114
  try {
111057
- const home2 = deps2.stateInput ?? homedir34(), c = await context2(feed, options.dir, home2);
111115
+ const home2 = deps2.stateInput ?? homedir35(), c = await context2(feed, options.dir, home2);
111058
111116
  const current = await readSourceEnvelope(sourceStateFile(c.root, feed), home2);
111059
111117
  assertBinding(current, c.binding);
111060
111118
  const preview4 = {
@@ -111125,7 +111183,7 @@ async function prepared(feed, options, home2) {
111125
111183
  }
111126
111184
  async function runLocalSnapshot(feed, options, deps2 = {}) {
111127
111185
  try {
111128
- const home2 = deps2.stateInput ?? homedir34();
111186
+ const home2 = deps2.stateInput ?? homedir35();
111129
111187
  if (!options.accept) {
111130
111188
  const p = await prepared(feed, options, home2);
111131
111189
  return {
@@ -111225,7 +111283,7 @@ function selectionMap(value) {
111225
111283
  }
111226
111284
  async function checkLocalSnapshot(file2, options, deps2 = {}) {
111227
111285
  try {
111228
- const home2 = deps2.stateInput ?? homedir34();
111286
+ const home2 = deps2.stateInput ?? homedir35();
111229
111287
  const snapshot3 = decodeSnapshot(await selectedBytes(file2, SNAPSHOT_MAX_BYTES, home2));
111230
111288
  let raw;
111231
111289
  try {
@@ -112173,7 +112231,7 @@ var init_status = __esm({
112173
112231
 
112174
112232
  // ../cli/src/commands/status.ts
112175
112233
  import { parseArgs as parseArgs29 } from "node:util";
112176
- import { homedir as homedir35 } from "node:os";
112234
+ import { homedir as homedir36 } from "node:os";
112177
112235
  import { realpath as realpath12 } from "node:fs/promises";
112178
112236
  function cap3(rows, limit) {
112179
112237
  const bounded2 = limit > 0 ? rows.slice(0, limit) : rows;
@@ -112358,7 +112416,7 @@ async function status(argv2, deps2 = {}) {
112358
112416
  limit = Number(raw);
112359
112417
  }
112360
112418
  const remote = await resolveRemoteFlag(values.remote, values.dir);
112361
- const home2 = deps2.home ?? homedir35();
112419
+ const home2 = deps2.home ?? homedir36();
112362
112420
  const hosted = remote ? null : await hostedCheckoutAt(values.dir, home2).catch(() => null);
112363
112421
  if (!remote && !hosted) await (deps2.autoPull ?? maybeAutoPull2)(values.dir);
112364
112422
  const now = (deps2.now ?? (() => /* @__PURE__ */ new Date()))();
@@ -144602,10 +144660,10 @@ Use \`superbee mcp status --host <id>\` to verify it and restart the host after
144602
144660
  });
144603
144661
 
144604
144662
  // ../cli/src/hosted/served-bundle.ts
144605
- import { homedir as homedir36 } from "node:os";
144663
+ import { homedir as homedir37 } from "node:os";
144606
144664
  import path59 from "node:path";
144607
144665
  async function servedBundle(bundle, options = {}) {
144608
- const home2 = options.home ?? homedir36();
144666
+ const home2 = options.home ?? homedir37();
144609
144667
  let root;
144610
144668
  try {
144611
144669
  root = (await resolveLocalBundleTarget(bundle.root)).canonicalRoot;
@@ -144783,7 +144841,7 @@ var init_served_bundle = __esm({
144783
144841
  });
144784
144842
 
144785
144843
  // ../cli/src/hosted/reachable.ts
144786
- import { homedir as homedir37 } from "node:os";
144844
+ import { homedir as homedir38 } from "node:os";
144787
144845
  async function hostedBundleRows(client, target3, home2) {
144788
144846
  const listing = readBundleListing(await client.bundles());
144789
144847
  const folders = await liveCheckoutFolders(home2, target3);
@@ -144832,7 +144890,7 @@ async function reachableHostedBundles(options) {
144832
144890
  }
144833
144891
  }
144834
144892
  async function askHosts(options) {
144835
- const home2 = options.auth?.home ?? options.home ?? homedir37();
144893
+ const home2 = options.auth?.home ?? options.home ?? homedir38();
144836
144894
  const base = options.auth ?? defaultHostedAuthDeps(home2);
144837
144895
  const live = [];
144838
144896
  for (const target3 of await candidateHosts(home2)) {
@@ -144904,7 +144962,7 @@ var init_folder_answered = __esm({
144904
144962
  });
144905
144963
 
144906
144964
  // ../cli/src/mcp-workspace-resolver.ts
144907
- import { homedir as homedir38 } from "node:os";
144965
+ import { homedir as homedir39 } from "node:os";
144908
144966
  function createCatalogMcpWorkspaceResolver(options = {}) {
144909
144967
  const listEntries = options.listEntries ?? listCatalogEntries;
144910
144968
  const resolveEntry2 = options.resolveEntry ?? resolveCatalogEntry;
@@ -144913,7 +144971,7 @@ function createCatalogMcpWorkspaceResolver(options = {}) {
144913
144971
  const deriveName = options.deriveName ?? deriveBundleDisplayName;
144914
144972
  const reachable = options.reachable ?? (() => reachableHostedBundles({ budgetMs: MCP_HOSTED_BUDGET_MS, ...options.home !== void 0 ? { home: options.home } : {} }));
144915
144973
  const now = options.now ?? Date.now;
144916
- const home2 = options.hosted?.auth?.home ?? options.home ?? homedir38();
144974
+ const home2 = options.hosted?.auth?.home ?? options.home ?? homedir39();
144917
144975
  const select = async (selector2, during) => {
144918
144976
  const entry = await resolveEntry2(selector2, options.home);
144919
144977
  const value = await during(entry.locator.path);
@@ -146490,7 +146548,7 @@ var init_host_command = __esm({
146490
146548
 
146491
146549
  // ../cli/src/mcp-install-targets.ts
146492
146550
  import { readFileSync as readFileSync12 } from "node:fs";
146493
- import { homedir as homedir39 } from "node:os";
146551
+ import { homedir as homedir40 } from "node:os";
146494
146552
  function resolveMcpInstallTarget(value) {
146495
146553
  return TARGET_BY_NAME.get(value.trim().toLowerCase());
146496
146554
  }
@@ -146706,7 +146764,7 @@ function selectMcpRegistration(entries) {
146706
146764
  return entries.find((entry) => entry.name === CURRENT_MCP_REGISTRATION) ?? LEGACY_MCP_REGISTRATIONS.map((name) => entries.find((entry) => entry.name === name)).find(Boolean);
146707
146765
  }
146708
146766
  function environment(deps2) {
146709
- return deps2.environment ?? { home: homedir39(), env: process.env, platform: process.platform };
146767
+ return deps2.environment ?? { home: homedir40(), env: process.env, platform: process.platform };
146710
146768
  }
146711
146769
  function inspectMcpHost(target3, deps2 = {}) {
146712
146770
  const input = environment(deps2);
@@ -146862,7 +146920,7 @@ var init_mcp_install_targets = __esm({
146862
146920
  // ../cli/src/mcp-registration.ts
146863
146921
  import { execFileSync as execFileSync3 } from "node:child_process";
146864
146922
  import { readFileSync as readFileSync13, realpathSync as realpathSync14 } from "node:fs";
146865
- import { homedir as homedir40 } from "node:os";
146923
+ import { homedir as homedir41 } from "node:os";
146866
146924
  function isRecord18(value) {
146867
146925
  return typeof value === "object" && value !== null && !Array.isArray(value);
146868
146926
  }
@@ -146870,7 +146928,7 @@ function own5(value, key4) {
146870
146928
  return Object.prototype.hasOwnProperty.call(value, key4) ? value[key4] : void 0;
146871
146929
  }
146872
146930
  function defaultEnvironment() {
146873
- return { home: homedir40(), env: process.env, platform: process.platform };
146931
+ return { home: homedir41(), env: process.env, platform: process.platform };
146874
146932
  }
146875
146933
  function isMissing(error51) {
146876
146934
  return isRecord18(error51) && own5(error51, "code") === "ENOENT";
@@ -147881,7 +147939,7 @@ var init_skill_compatibility = __esm({
147881
147939
  // ../cli/src/commands/skill.ts
147882
147940
  import { createHash as createHash20 } from "node:crypto";
147883
147941
  import { existsSync as existsSync12, lstatSync as lstatSync8, readFileSync as readFileSync14, readdirSync as readdirSync4, realpathSync as realpathSync15, renameSync as renameSync6, rmSync as rmSync5, rmdirSync as rmdirSync3 } from "node:fs";
147884
- import { homedir as homedir41 } from "node:os";
147942
+ import { homedir as homedir42 } from "node:os";
147885
147943
  import { dirname as dirname6, join as join17 } from "node:path";
147886
147944
  import { parseArgs as parseArgs32 } from "node:util";
147887
147945
  function listFilesRelative(dir, prefix = "") {
@@ -147947,7 +148005,7 @@ function skillTargetsForName(dirName, scope, deps2 = {}) {
147947
148005
  opencode: paths.join(cwd, ".claude", "skills", dirName)
147948
148006
  };
147949
148007
  }
147950
- const home2 = deps2.home ?? homedir41();
148008
+ const home2 = deps2.home ?? homedir42();
147951
148009
  const env = deps2.env ?? process.env;
147952
148010
  return {
147953
148011
  claude: paths.join(resolveHostConfigRoot(HOST_CONFIG_ROOTS.claude, home2, env, platform), "skills", dirName),
@@ -149114,7 +149172,7 @@ import {
149114
149172
  unlinkSync as unlinkSync3,
149115
149173
  writeFileSync as writeFileSync5
149116
149174
  } from "node:fs";
149117
- import { homedir as homedir42 } from "node:os";
149175
+ import { homedir as homedir43 } from "node:os";
149118
149176
  import { isAbsolute as isAbsolute3, join as join18 } from "node:path";
149119
149177
  function asRecord(value) {
149120
149178
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
@@ -149645,7 +149703,7 @@ function transitionMatchingActiveToCooldown(home2, token, now) {
149645
149703
  }
149646
149704
  function runPassiveUpdateOrientation(deps2 = {}) {
149647
149705
  if (currentDistribution()?.updatesEnabled === false) return void 0;
149648
- const home2 = deps2.home ?? homedir42();
149706
+ const home2 = deps2.home ?? homedir43();
149649
149707
  const runningVersion = deps2.runningVersion ?? staticBuildIdentity().package.version;
149650
149708
  const now = deps2.now ?? (() => /* @__PURE__ */ new Date());
149651
149709
  const initial = inspectUpdateCache({ home: home2, runningVersion, now: now() });
@@ -149700,7 +149758,7 @@ function runPassiveUpdateOrientation(deps2 = {}) {
149700
149758
  async function runUpdateRefreshWorker(token, deps2 = {}) {
149701
149759
  if (currentDistribution()?.updatesEnabled === false) return;
149702
149760
  if (!isUpdateLeaseToken(token)) return;
149703
- const home2 = deps2.home ?? homedir42();
149761
+ const home2 = deps2.home ?? homedir43();
149704
149762
  const runningVersion = deps2.runningVersion ?? staticBuildIdentity().package.version;
149705
149763
  const now = deps2.now ?? (() => /* @__PURE__ */ new Date());
149706
149764
  if (!parseStrictSemver(runningVersion) || !activeLeaseAuthority(home2, token, now())) return;
@@ -150412,7 +150470,7 @@ ASLITE_NO_UPDATE_CHECK, NO_UPDATE_NOTIFIER, or CI.
150412
150470
 
150413
150471
  // ../cli/src/commands/session-start.ts
150414
150472
  import { realpath as realpath14 } from "node:fs/promises";
150415
- import { homedir as homedir43 } from "node:os";
150473
+ import { homedir as homedir44 } from "node:os";
150416
150474
  import { parseArgs as parseArgs34 } from "node:util";
150417
150475
  import path61 from "node:path";
150418
150476
  async function bundleFreshness(root, userHome, now, signIn, env) {
@@ -150432,7 +150490,7 @@ async function bundleFreshness(root, userHome, now, signIn, env) {
150432
150490
  return { home: "local", freshness: "local only" };
150433
150491
  }
150434
150492
  async function otherCatalogBundles(currentRoot, options = {}) {
150435
- const userHome = options.home ?? homedir43();
150493
+ const userHome = options.home ?? homedir44();
150436
150494
  const now = options.now ?? /* @__PURE__ */ new Date();
150437
150495
  const deadline = Date.now() + (options.deadlineMs ?? SESSION_START_PROBE_DEADLINE_MS);
150438
150496
  const current = currentRoot === null ? null : await realpath14(currentRoot).catch(() => path61.resolve(currentRoot));
@@ -150473,7 +150531,7 @@ async function sessionBundleRoot(dir, known) {
150473
150531
  }
150474
150532
  }
150475
150533
  async function hostedSessionStartPull(binding2, budgetMs, deps2 = {}) {
150476
- const home2 = deps2.sync?.auth?.home ?? homedir43();
150534
+ const home2 = deps2.sync?.auth?.home ?? homedir44();
150477
150535
  const state = await sessionPullState(binding2, budgetMs, home2, deps2);
150478
150536
  const counts = typeof state === "object" ? state : {};
150479
150537
  const pulledAt = (await readFreshness(home2, binding2.checkout_id).catch(() => null))?.pulled_at ?? null;
@@ -150942,12 +151000,12 @@ __export(bundle_retire_exports, {
150942
151000
  bundleRetire: () => bundleRetire
150943
151001
  });
150944
151002
  import { randomUUID as randomUUID9 } from "node:crypto";
150945
- import { homedir as homedir44 } from "node:os";
151003
+ import { homedir as homedir45 } from "node:os";
150946
151004
  import { parseArgs as parseArgs35 } from "node:util";
150947
151005
  async function bundleRetire(argv2, partial2 = {}) {
150948
151006
  const deps2 = {
150949
151007
  stdout: partial2.stdout ?? ((text7) => void process.stdout.write(text7)),
150950
- auth: partial2.auth ?? defaultHostedAuthDeps(homedir44()),
151008
+ auth: partial2.auth ?? defaultHostedAuthDeps(homedir45()),
150951
151009
  ...partial2.fetch ? { fetch: partial2.fetch } : {},
150952
151010
  terminal: partial2.terminal ?? processTerminal()
150953
151011
  };
@@ -151496,7 +151554,7 @@ var init_catalog_guard = __esm({
151496
151554
 
151497
151555
  // ../cli/src/commands/catalog.ts
151498
151556
  import { parseArgs as parseArgs38 } from "node:util";
151499
- import { homedir as homedir45 } from "node:os";
151557
+ import { homedir as homedir46 } from "node:os";
151500
151558
  function entryReceipt(entry) {
151501
151559
  return {
151502
151560
  schema_version: 1,
@@ -151531,7 +151589,7 @@ function requestsPathField(argv2) {
151531
151589
  async function catalogInner(argv2, deps2) {
151532
151590
  const stdout = deps2.stdout ?? ((s) => void process.stdout.write(s));
151533
151591
  const cwd = deps2.cwd ?? (() => process.cwd());
151534
- const home2 = deps2.home ?? homedir45;
151592
+ const home2 = deps2.home ?? homedir46;
151535
151593
  const parsed2 = parseSelectorOrUsage(
151536
151594
  () => parseArgs38({
151537
151595
  args: argv2,
@@ -152115,11 +152173,11 @@ __export(view_content_exports, {
152115
152173
  viewUpdate: () => viewUpdate
152116
152174
  });
152117
152175
  import { lstat as lstat11, realpath as realpath15, writeFile as writeFile4 } from "node:fs/promises";
152118
- import { homedir as homedir46 } from "node:os";
152176
+ import { homedir as homedir47 } from "node:os";
152119
152177
  import path63 from "node:path";
152120
152178
  import { parseArgs as parseArgs41 } from "node:util";
152121
152179
  function homeOf(deps2) {
152122
- return deps2.hosted?.auth?.home ?? homedir46();
152180
+ return deps2.hosted?.auth?.home ?? homedir47();
152123
152181
  }
152124
152182
  async function locate(sub, rawId, dir, deps2) {
152125
152183
  const target3 = await resolveLocalBundleTarget(dir, deps2.cwd ?? process.cwd());
@@ -153144,11 +153202,11 @@ var init_setup_plan = __esm({
153144
153202
  });
153145
153203
 
153146
153204
  // ../cli/src/commands/setup-hosted.ts
153147
- import { homedir as homedir47 } from "node:os";
153205
+ import { homedir as homedir48 } from "node:os";
153148
153206
  import { parseArgs as parseArgs43 } from "node:util";
153149
153207
  async function setupHosted(argv2, partial2 = {}) {
153150
153208
  const stdout = partial2.stdout ?? ((text7) => void process.stdout.write(text7));
153151
- const auth = partial2.auth ?? defaultHostedAuthDeps(homedir47());
153209
+ const auth = partial2.auth ?? defaultHostedAuthDeps(homedir48());
153152
153210
  const { values } = parseLeafOrUsage(
153153
153211
  () => parseArgs43({
153154
153212
  args: argv2,
@@ -153292,7 +153350,7 @@ import {
153292
153350
  stat as stat8,
153293
153351
  unlink as unlink11
153294
153352
  } from "node:fs/promises";
153295
- import { homedir as homedir48 } from "node:os";
153353
+ import { homedir as homedir49 } from "node:os";
153296
153354
  import { dirname as dirname7, join as join19 } from "node:path";
153297
153355
  function errno3(error51) {
153298
153356
  return error51?.code;
@@ -153412,7 +153470,7 @@ async function preflightLegacy(input) {
153412
153470
  function blockedSource(error51) {
153413
153471
  return error51 instanceof UnsafeMigrationSource ? { reason: `legacy operational state at ${error51.display} ${error51.detail}`, command: error51.command } : { reason: "legacy operational state is not safe to migrate automatically", command: "superbee setup" };
153414
153472
  }
153415
- async function inspectUserStateMigration(input = homedir48()) {
153473
+ async function inspectUserStateMigration(input = homedir49()) {
153416
153474
  if (staticBuildIdentity().package.name === LEGACY_BRIDGE_PACKAGE_NAME) {
153417
153475
  return { state: "ready", reason: "the separately published Aslite bridge retains its legacy state root", records: 0 };
153418
153476
  }
@@ -153591,7 +153649,7 @@ function receipt4(status2, changed, records) {
153591
153649
  next: { command: "superbee setup" }
153592
153650
  };
153593
153651
  }
153594
- async function migrateUserState(input = homedir48(), hooks = {}) {
153652
+ async function migrateUserState(input = homedir49(), hooks = {}) {
153595
153653
  if (staticBuildIdentity().package.name === LEGACY_BRIDGE_PACKAGE_NAME) {
153596
153654
  throw new CliError("NOT_IMPLEMENTED", "state migration is available only from the Superbee package", { help: "npm install -g superbee" });
153597
153655
  }
@@ -153704,7 +153762,7 @@ var init_user_state_migration = __esm({
153704
153762
  });
153705
153763
 
153706
153764
  // ../cli/src/commands/setup.ts
153707
- import { homedir as homedir49 } from "node:os";
153765
+ import { homedir as homedir50 } from "node:os";
153708
153766
  import { parseArgs as parseArgs44 } from "node:util";
153709
153767
  function setupHost(value) {
153710
153768
  return MCP_INSTALL_TARGETS.find((target3) => target3.id === value)?.id;
@@ -153906,7 +153964,7 @@ async function setup(argv2, injected = {}) {
153906
153964
  const deps2 = {
153907
153965
  stdout,
153908
153966
  cwd: injected.cwd ?? (() => process.cwd()),
153909
- home: injected.home ?? homedir49,
153967
+ home: injected.home ?? homedir50,
153910
153968
  inspectDistribution: injected.inspectDistribution ?? (() => resolvePersistentInstallAuthority()),
153911
153969
  inspectSkill: injected.inspectSkill ?? ((selectedScope) => inspectSkillStatus(selectedScope)),
153912
153970
  inspectHook: injected.inspectHook ?? ((selectedScope) => inspectHookStatus(selectedScope)),
@@ -154171,13 +154229,13 @@ var init_loopback = __esm({
154171
154229
  });
154172
154230
 
154173
154231
  // ../cli/src/commands/hosted-auth.ts
154174
- import { homedir as homedir50 } from "node:os";
154232
+ import { homedir as homedir51 } from "node:os";
154175
154233
  import { parseArgs as parseArgs45 } from "node:util";
154176
154234
  function commandDeps(deps2) {
154177
154235
  return {
154178
154236
  stdout: deps2.stdout ?? ((text7) => void process.stdout.write(text7)),
154179
154237
  stderr: deps2.stderr ?? ((text7) => void process.stderr.write(text7)),
154180
- auth: deps2.auth ?? defaultHostedAuthDeps(homedir50())
154238
+ auth: deps2.auth ?? defaultHostedAuthDeps(homedir51())
154181
154239
  };
154182
154240
  }
154183
154241
  function iso(ms) {
@@ -154787,14 +154845,14 @@ var init_node = __esm({
154787
154845
 
154788
154846
  // ../cli/src/commands/export.ts
154789
154847
  import { randomBytes as randomBytes11 } from "node:crypto";
154790
- import { homedir as homedir51 } from "node:os";
154848
+ import { homedir as homedir52 } from "node:os";
154791
154849
  import { link as link3, lstat as lstat13, mkdir as mkdir6, open as open4, readdir as readdir10, realpath as realpath16, rename as rename3, rm as rm2, unlink as unlink13 } from "node:fs/promises";
154792
154850
  import path65 from "node:path";
154793
154851
  import { parseArgs as parseArgs46 } from "node:util";
154794
154852
  function exportDeps(partial2) {
154795
154853
  return {
154796
154854
  stdout: partial2.stdout ?? ((text7) => void process.stdout.write(text7)),
154797
- auth: partial2.auth ?? defaultHostedAuthDeps(homedir51()),
154855
+ auth: partial2.auth ?? defaultHostedAuthDeps(homedir52()),
154798
154856
  cwd: partial2.cwd ?? process.cwd(),
154799
154857
  ...partial2.fetch ? { fetch: partial2.fetch } : {}
154800
154858
  };
@@ -155951,14 +156009,14 @@ var init_checkout_adopt = __esm({
155951
156009
  });
155952
156010
 
155953
156011
  // ../cli/src/commands/checkout.ts
155954
- import { homedir as homedir52 } from "node:os";
156012
+ import { homedir as homedir53 } from "node:os";
155955
156013
  import { lstat as lstat15, mkdir as mkdir7, readFile as readFile5, readdir as readdir11, realpath as realpath18, rmdir as rmdir3, stat as stat9, unlink as unlink14 } from "node:fs/promises";
155956
156014
  import path67 from "node:path";
155957
156015
  import { parseArgs as parseArgs47 } from "node:util";
155958
156016
  function checkoutDeps(partial2) {
155959
156017
  return {
155960
156018
  stdout: partial2.stdout ?? ((text7) => void process.stdout.write(text7)),
155961
- auth: partial2.auth ?? defaultHostedAuthDeps(homedir52()),
156019
+ auth: partial2.auth ?? defaultHostedAuthDeps(homedir53()),
155962
156020
  cwd: partial2.cwd ?? process.cwd(),
155963
156021
  ...partial2.fetch ? { fetch: partial2.fetch } : {}
155964
156022
  };
@@ -156668,7 +156726,7 @@ __export(op_local_exports, {
156668
156726
  });
156669
156727
  import { parseArgs as parseArgs48 } from "node:util";
156670
156728
  import path68 from "node:path";
156671
- import { homedir as homedir53 } from "node:os";
156729
+ import { homedir as homedir54 } from "node:os";
156672
156730
  async function localOp(argv2, deps2) {
156673
156731
  const sub = argv2[0];
156674
156732
  if (!["register", "registered", "unregister", "bind", "list", "run"].includes(sub ?? "")) throw new CliError("USAGE", "Unknown local operation command.");
@@ -156693,7 +156751,7 @@ async function localOp(argv2, deps2) {
156693
156751
  deps2.stdout(renderUsage(OP_USAGE));
156694
156752
  return;
156695
156753
  }
156696
- const cwd = deps2.cwd ?? process.cwd(), home2 = deps2.hosted?.auth?.home ?? homedir53();
156754
+ const cwd = deps2.cwd ?? process.cwd(), home2 = deps2.hosted?.auth?.home ?? homedir54();
156697
156755
  if (values.local !== true) throw new CliError("USAGE", "Local operation registration and binding require --local.");
156698
156756
  if (!["register", "registered", "unregister", "list", "bind", "run"].includes(sub ?? "")) throw new CliError("USAGE", "Unknown local operation command.");
156699
156757
  if (values.input !== void 0) throw new CliError("USAGE", "Local operations require --input-file.");
@@ -156761,7 +156819,7 @@ var init_op_local = __esm({
156761
156819
  });
156762
156820
 
156763
156821
  // ../cli/src/commands/op.ts
156764
- import { homedir as homedir54 } from "node:os";
156822
+ import { homedir as homedir55 } from "node:os";
156765
156823
  import path69 from "node:path";
156766
156824
  import { parseArgs as parseArgs49 } from "node:util";
156767
156825
  async function op(argv2, deps2 = {}) {
@@ -156782,7 +156840,7 @@ async function op(argv2, deps2 = {}) {
156782
156840
  }
156783
156841
  async function homeOf2(dir, deps2) {
156784
156842
  const target3 = await resolveLocalBundleTarget(dir, deps2.cwd ?? process.cwd());
156785
- const facts = await bundleHomeAt(target3.canonicalRoot, { home: deps2.hosted?.auth?.home ?? homedir54() });
156843
+ const facts = await bundleHomeAt(target3.canonicalRoot, { home: deps2.hosted?.auth?.home ?? homedir55() });
156786
156844
  return facts.home === "hosted" ? { home: "hosted", binding: facts.binding } : { home: facts.home };
156787
156845
  }
156788
156846
  function noHostOperations(home2) {
@@ -157083,7 +157141,7 @@ Options:
157083
157141
  });
157084
157142
 
157085
157143
  // ../cli/src/hosted/inbox-session.ts
157086
- import { homedir as homedir55 } from "node:os";
157144
+ import { homedir as homedir56 } from "node:os";
157087
157145
  function helpFor(command) {
157088
157146
  return command === "notify" ? commandFragment`${cliInvocation()} notify --help` : commandFragment`${cliInvocation()} inbox --help`;
157089
157147
  }
@@ -157095,7 +157153,7 @@ async function checkoutOf(scope, deps2) {
157095
157153
  if (scope.dir === void 0 && error51 instanceof CliError && error51.code === "NOT_FOUND") return null;
157096
157154
  throw error51;
157097
157155
  }
157098
- const facts = await bundleHomeAt(canonicalRoot, { home: deps2.hosted?.auth?.home ?? homedir55() });
157156
+ const facts = await bundleHomeAt(canonicalRoot, { home: deps2.hosted?.auth?.home ?? homedir56() });
157099
157157
  return facts.home === "hosted" ? facts.binding : null;
157100
157158
  }
157101
157159
  async function openInboxSession(command, scope, deps2, resumeFor, options = {}) {
@@ -158986,7 +159044,7 @@ var init_publish_staged = __esm({
158986
159044
  // ../cli/src/commands/publish.ts
158987
159045
  import { randomUUID as randomUUID10 } from "node:crypto";
158988
159046
  import { lstat as lstat16, readFile as readFile6, realpath as realpath19, unlink as unlink15 } from "node:fs/promises";
158989
- import { homedir as homedir56 } from "node:os";
159047
+ import { homedir as homedir57 } from "node:os";
158990
159048
  import path72 from "node:path";
158991
159049
  import { parseArgs as parseArgs53 } from "node:util";
158992
159050
  function publishDeps(partial2) {
@@ -158994,7 +159052,7 @@ function publishDeps(partial2) {
158994
159052
  stdout: partial2.stdout ?? ((text7) => void process.stdout.write(text7)),
158995
159053
  stderr: partial2.stderr ?? ((text7) => void process.stderr.write(text7)),
158996
159054
  ...partial2.sleep ? { sleep: partial2.sleep } : {},
158997
- auth: partial2.auth ?? defaultHostedAuthDeps(homedir56()),
159055
+ auth: partial2.auth ?? defaultHostedAuthDeps(homedir57()),
158998
159056
  cwd: partial2.cwd ?? process.cwd(),
158999
159057
  ...partial2.fetch ? { fetch: partial2.fetch } : {}
159000
159058
  };
@@ -159632,12 +159690,12 @@ Examples:
159632
159690
  });
159633
159691
 
159634
159692
  // ../cli/src/commands/access.ts
159635
- import { homedir as homedir57 } from "node:os";
159693
+ import { homedir as homedir58 } from "node:os";
159636
159694
  import { parseArgs as parseArgs54 } from "node:util";
159637
159695
  function accessDeps(partial2) {
159638
159696
  return {
159639
159697
  stdout: partial2.stdout ?? ((text7) => void process.stdout.write(text7)),
159640
- auth: partial2.auth ?? defaultHostedAuthDeps(homedir57()),
159698
+ auth: partial2.auth ?? defaultHostedAuthDeps(homedir58()),
159641
159699
  ...partial2.fetch ? { fetch: partial2.fetch } : {}
159642
159700
  };
159643
159701
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superbee",
3
- "version": "0.4.4-pre.10",
3
+ "version": "0.4.4-pre.11",
4
4
  "type": "module",
5
5
  "description": "Agent-facing Superbee CLI for reading and writing local OKF knowledge bundles: context notes, docs, cross-links, and live bundle Views.",
6
6
  "keywords": [
@@ -370,6 +370,15 @@ superbee sync --resolve keep --doc index.md # the next sync sends yours over
370
370
 
371
371
  ## Ordinary files (SVGs, images, `data/*.json`)
372
372
 
373
+ `pull --doc-key <key> --out <path> --from-host --dir <checkout>` reads one blob's bytes and stored
374
+ content type directly from the bound host, using its version and content type together as the
375
+ read pin. It checks the checkout's signed-in person and workspace and verifies the returned bytes.
376
+ A changed pin, denied access or unsupported host refuses without falling back to local bytes.
377
+ It does not sync, send edits or refresh the working copy; only the requested output is written.
378
+ Use `--out -` for raw stdout with the receipt on stderr. Ordinary `pull` still reads the local
379
+ working copy, including unsent edits; its content type is inferred from the filename. The explicit
380
+ host option is for blobs only and cannot be combined with `--remote`.
381
+
373
382
  Files other than `.md` documents are ordinary files. Sync sends and refreshes only **tracked**
374
383
  ones. Treat an edit to a tracked file as a publish: the next `superbee sync` sends it to the hosted
375
384
  bundle for everyone.