youmd 0.8.5 → 0.8.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.
@@ -55,6 +55,16 @@ function envAssignment(name, value, options = {}) {
55
55
  if (stringValue.startsWith("~/")) {
56
56
  return `${name}="$HOME${stringValue.slice(1).replace(/["\\$`]/g, (char) => `\\${char}`)}"`;
57
57
  }
58
+ if (stringValue === "$HOME")
59
+ return `${name}="$HOME"`;
60
+ if (stringValue.startsWith("$HOME/")) {
61
+ return `${name}="$HOME/${stringValue.slice("$HOME/".length).replace(/["\\$`]/g, (char) => `\\${char}`)}"`;
62
+ }
63
+ if (stringValue === "${HOME}")
64
+ return `${name}="$HOME"`;
65
+ if (stringValue.startsWith("${HOME}/")) {
66
+ return `${name}="$HOME/${stringValue.slice("${HOME}/".length).replace(/["\\$`]/g, (char) => `\\${char}`)}"`;
67
+ }
58
68
  }
59
69
  return `${name}=${shellQuote(stringValue)}`;
60
70
  }
@@ -79,10 +89,47 @@ DAYS="\${YOUMD_ACTIVE_DAYS:-30}"
79
89
  EXPAND_DAYS="\${YOUMD_EXPAND_ACTIVE_DAYS:-90}"
80
90
  LIMIT="\${YOUMD_PROJECT_LIMIT:-80}"
81
91
  HYDRATE_TIMEOUT="\${YOUMD_PORTFOLIO_HYDRATE_TIMEOUT_SECONDS:-180}"
92
+ MIN_YOUMD_VERSION="\${YOUMD_MIN_VERSION:-0.8.6}"
82
93
  mkdir -p "$ROOT"
83
94
 
84
95
  command_exists() { command -v "$1" >/dev/null 2>&1; }
85
96
  node_major() { node -e 'console.log(process.versions.node.split(".")[0])' 2>/dev/null || echo 0; }
97
+ version_at_least() {
98
+ local current="\${1#v}"
99
+ local required="\${2#v}"
100
+ local IFS=.
101
+ local current_parts=($current)
102
+ local required_parts=($required)
103
+ local i current_value required_value
104
+ for i in 0 1 2; do
105
+ current_value="\${current_parts[$i]:-0}"
106
+ required_value="\${required_parts[$i]:-0}"
107
+ current_value="\${current_value%%[^0-9]*}"
108
+ required_value="\${required_value%%[^0-9]*}"
109
+ current_value="\${current_value:-0}"
110
+ required_value="\${required_value:-0}"
111
+ if ((10#$current_value > 10#$required_value)); then return 0; fi
112
+ if ((10#$current_value < 10#$required_value)); then return 1; fi
113
+ done
114
+ return 0
115
+ }
116
+ ensure_youmd_min_version() {
117
+ local installed
118
+ installed="$(youmd --version 2>/dev/null | tr -d '[:space:]' || true)"
119
+ echo "[you.md] installed version: \${installed:-unknown}"
120
+ if [ -n "$installed" ] && version_at_least "$installed" "$MIN_YOUMD_VERSION"; then
121
+ return 0
122
+ fi
123
+ echo "[you.md] installed youmd is older than required \${MIN_YOUMD_VERSION}; forcing GitHub source install"
124
+ curl -fsSL https://you.md/install.sh | YOUMD_INSTALL_CHANNEL=source YOUMD_SOURCE_REF=main bash
125
+ export PATH="$HOME/.youmd/bin:$HOME/.youmd/npm-global/bin:/opt/homebrew/opt/node@22/bin:/usr/local/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
126
+ installed="$(youmd --version 2>/dev/null | tr -d '[:space:]' || true)"
127
+ echo "[you.md] installed version after forced source install: \${installed:-unknown}"
128
+ if [ -z "$installed" ] || ! version_at_least "$installed" "$MIN_YOUMD_VERSION"; then
129
+ echo "[you.md] youmd \${MIN_YOUMD_VERSION}+ is required for Secret Vault, agent bus, and fresh-machine restore. npm latest may still be behind; rerun after this commit is deployed or install from GitHub main." >&2
130
+ exit 1
131
+ fi
132
+ }
86
133
  run_with_timeout() {
87
134
  seconds="$1"
88
135
  shift
@@ -165,13 +212,14 @@ ensure_github_auth() {
165
212
 
166
213
  bootstrap_prereqs
167
214
 
168
- echo "[you.md] installing runtime"
169
- curl -fsSL https://you.md/install.sh | bash
215
+ echo "[you.md] installing runtime from GitHub main"
216
+ curl -fsSL https://you.md/install.sh | YOUMD_INSTALL_CHANNEL=source YOUMD_SOURCE_REF=main bash
170
217
  export PATH="$HOME/.youmd/bin:$HOME/.youmd/npm-global/bin:/opt/homebrew/opt/node@22/bin:/usr/local/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
171
218
  if ! command_exists youmd; then
172
219
  echo "[you.md] youmd was installed but is not on PATH. Try a new Terminal, then rerun this command." >&2
173
220
  exit 1
174
221
  fi
222
+ ensure_youmd_min_version
175
223
 
176
224
  if [ -n "\${YOUMD_API_KEY:-}" ]; then
177
225
  echo "[you.md] logging in with bootstrap key"
@@ -184,10 +232,12 @@ fi
184
232
  echo "[you.md] pulling identity bundle and syncing local brain"
185
233
  youmd pull
186
234
  youmd sync
235
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) authenticated, pulled identity, and started setup" || true
187
236
 
188
237
  echo "[you.md] installing resident realtime/identity/skillstack/project-context daemons early"
189
238
  youmd stack daemon install || true
190
239
  youmd stack daemon status || true
240
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) installed resident realtime/skillstack daemons" || true
191
241
 
192
242
  GITHUB_READY=0
193
243
  if ensure_github_auth; then
@@ -205,9 +255,11 @@ youmd mcp --install claude --auto || true
205
255
  youmd mcp --install codex --auto || true
206
256
  youmd skill link claude || true
207
257
  youmd skill link codex || true
258
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) restored shared skills/stacks and MCP config" || true
208
259
 
209
260
  if [ "$GITHUB_READY" != "1" ]; then
210
261
  echo "[you.md] GitHub auth is still missing; project clone pass skipped. Rerun after gh auth login."
262
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) stopped: GitHub auth required before private project clone" || true
211
263
  exit 2
212
264
  fi
213
265
 
@@ -235,22 +287,26 @@ echo "[you.md] previewing graph-backed 30-day project setup plan (ACTIVE + Top P
235
287
  run_machine_projects_recent_only "\${PROJECT_ARGS[@]}" --dry-run || true
236
288
  echo "[you.md] creating code workspace and cloning ACTIVE + Top Priority/Focusing 30-day project repos"
237
289
  run_machine_projects_recent_only "\${PROJECT_ARGS[@]}"
290
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) finished 30-day active/focused project clone pass into $ROOT" || true
238
291
 
239
292
  echo "[you.md] checking encrypted env-vault tooling without printing secrets"
240
293
  youmd env backup --root "$ROOT" --preflight || true
294
+ SECRET_VAULT_RESTORED=0
241
295
  if [ -z "\${YOUMD_ENV_VAULT:-}" ] && [ "\${YOUMD_SECRET_VAULT_PULL:-1}" = "1" ]; then
242
296
  SECRET_VAULT_DIR="\${YOUMD_SECRET_VAULT_DIR:-$HOME/.youmd/secret-vault}"
243
- echo "[you.md] checking You.md Secret Vault for the latest encrypted env vault"
244
- if SECRET_VAULT_PATH="$(youmd env vault pull --out "$SECRET_VAULT_DIR" --print-path 2>/dev/null)"; then
245
- if [ -n "$SECRET_VAULT_PATH" ] && [ -f "$SECRET_VAULT_PATH" ]; then
246
- export YOUMD_ENV_VAULT="$SECRET_VAULT_PATH"
247
- echo "[you.md] using You.md Secret Vault snapshot: $YOUMD_ENV_VAULT"
248
- fi
297
+ echo "[you.md] registering this Mac as a trusted Secret Vault device"
298
+ youmd env vault device-register || true
299
+ echo "[you.md] checking You.md Secret Vault for the latest encrypted env vault and trusted-device envelope"
300
+ if youmd env vault pull --out "$SECRET_VAULT_DIR" --restore --root "$ROOT" --map-existing --existing-only --skip-agent-auth; then
301
+ SECRET_VAULT_RESTORED=1
302
+ echo "[you.md] restored env vault through trusted-device Secret Vault"
303
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) restored encrypted env vault through trusted-device Secret Vault" || true
249
304
  else
250
- echo "[you.md] account-backed Secret Vault not available yet; falling back to local/iCloud vault discovery"
305
+ echo "[you.md] account-backed Secret Vault restore not available yet; falling back to local/iCloud vault discovery"
306
+ echo "[you.md] if this Mac was just registered, run this on the source Mac: youmd env vault share"
251
307
  fi
252
308
  fi
253
- if [ -z "\${YOUMD_ENV_VAULT:-}" ]; then
309
+ if [ "$SECRET_VAULT_RESTORED" != "1" ] && [ -z "\${YOUMD_ENV_VAULT:-}" ]; then
254
310
  for DEFAULT_ENV_VAULT_DIR in "$HOME/Desktop/youmd-env-vault" "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Desktop/youmd-env-vault" "$HOME/Library/Mobile Documents/com~apple~CloudDocs/youmd-env-vault"; do
255
311
  if [ -d "$DEFAULT_ENV_VAULT_DIR" ]; then
256
312
  DETECTED_ENV_VAULT="$(find "$DEFAULT_ENV_VAULT_DIR" -maxdepth 1 -type f \\( -name "env-vault-*.tar.enc" -o -name "env-vault-*.tar.age" -o -name "env-vault-*.tar.gpg" \\) -print 2>/dev/null | sort | tail -n 1 || true)"
@@ -262,7 +318,9 @@ if [ -z "\${YOUMD_ENV_VAULT:-}" ]; then
262
318
  fi
263
319
  done
264
320
  fi
265
- if [ -n "\${YOUMD_ENV_VAULT:-}" ]; then
321
+ if [ "$SECRET_VAULT_RESTORED" = "1" ]; then
322
+ :
323
+ elif [ -n "\${YOUMD_ENV_VAULT:-}" ]; then
266
324
  if [ ! -f "$YOUMD_ENV_VAULT" ]; then
267
325
  echo "[you.md] env vault path does not exist: $YOUMD_ENV_VAULT" >&2
268
326
  exit 1
@@ -281,10 +339,13 @@ if [ -n "\${YOUMD_ENV_VAULT:-}" ]; then
281
339
  youmd env restore "$YOUMD_ENV_VAULT" --root "$ROOT" --list --map-existing --existing-only --skip-agent-auth
282
340
  echo "[you.md] restoring encrypted .env.local vault into existing cloned project dirs"
283
341
  youmd env restore "$YOUMD_ENV_VAULT" --root "$ROOT" --map-existing --existing-only --skip-agent-auth
342
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) restored encrypted env vault into existing project dirs" || true
284
343
  else
285
344
  echo "[you.md] env vault not restored yet"
286
345
  echo "[you.md] On the old/source Mac, create the encrypted vault first:"
287
346
  echo "youmd env vault push --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault"
347
+ echo "[you.md] Then share local decrypt access to registered trusted Macs:"
348
+ echo "youmd env vault share"
288
349
  echo "[you.md] Or create a transferable local copy without account sync:"
289
350
  echo "youmd env backup --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault"
290
351
  echo "[you.md] The setup command also auto-detects vaults in local Desktop and iCloud Desktop: ~/Library/Mobile Documents/com~apple~CloudDocs/Desktop/youmd-env-vault"
@@ -293,7 +354,8 @@ else
293
354
  echo "[you.md] Or restore manually after clone:"
294
355
  echo "youmd env restore <vault> --root \\"$ROOT\\" --map-existing --existing-only --skip-agent-auth"
295
356
  if [ "\${YOUMD_REQUIRE_ENV_VAULT:-}" = "1" ]; then
296
- echo "[you.md] strict proof requires YOUMD_ENV_VAULT; stopping before readiness is marked complete" >&2
357
+ echo "[you.md] strict proof requires Secret Vault restore or YOUMD_ENV_VAULT; stopping before readiness is marked complete" >&2
358
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) stopped: strict env vault restore still required; source Mac may need youmd env vault share" || true
297
359
  exit 1
298
360
  fi
299
361
  fi
@@ -301,6 +363,7 @@ echo "[you.md] rehydrating portfolio graph with local README/project-context/env
301
363
  run_with_timeout "$HYDRATE_TIMEOUT" youmd project portfolio-hydrate --root "$ROOT" --days "$DAYS" --limit "$LIMIT" || true
302
364
  echo "[you.md] auditing cloned project readiness"
303
365
  youmd machine verify --root "$ROOT" --max-projects "$LIMIT" --write-report --sync-report || true
366
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) synced machine readiness proof for $ROOT" || true
304
367
  FULL_PROJECT_SET_COMPLETE=0
305
368
  EXPAND_TO_90="\${YOUMD_EXPAND_TO_90_DAYS:-}"
306
369
  if [ -z "$EXPAND_TO_90" ] && [ "\${YOUMD_SKIP_90_DAY_EXPANSION_PROMPT:-}" != "1" ] && [ -t 0 ]; then
@@ -319,6 +382,7 @@ case "$EXPAND_TO_90" in
319
382
  run_machine_projects_recent_only "\${EXPAND_PROJECT_ARGS[@]}"
320
383
  run_with_timeout "$HYDRATE_TIMEOUT" youmd project portfolio-hydrate --root "$ROOT" --days "$EXPAND_DAYS" --limit "$LIMIT" || true
321
384
  youmd machine verify --root "$ROOT" --max-projects "$LIMIT" --write-report --sync-report || true
385
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) expanded to active/focused \${EXPAND_DAYS}-day project set and synced proof" || true
322
386
  FULL_PROJECT_SET_COMPLETE=1
323
387
  ;;
324
388
  *)
@@ -350,8 +414,10 @@ youmd stack daemon status || true
350
414
  youmd status
351
415
  if [ "$FULL_PROJECT_SET_COMPLETE" = "1" ]; then
352
416
  echo "[you.md] fresh-machine full \${EXPAND_DAYS}-day project setup complete: $ROOT"
417
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) complete: full \${EXPAND_DAYS}-day active/focused setup at $ROOT" || true
353
418
  else
354
419
  echo "[you.md] fresh-machine \${DAYS}-day setup pass complete; \${EXPAND_DAYS}-day expansion is still open: $ROOT"
420
+ youmd agent send --channel machine-sync --kind status "fresh machine \$(hostname) complete for \${DAYS}-day active/focused pass at $ROOT; \${EXPAND_DAYS}-day expansion still open" || true
355
421
  fi`;
356
422
  }
357
423
  function buildFreshMachineBootstrapCommand(options = {}) {
@@ -385,7 +451,7 @@ function buildFreshMachineBootstrapPrompt(options = {}) {
385
451
  "",
386
452
  authLine,
387
453
  "",
388
- "Behind-the-scenes operating rule: use the You.md CLI and You Agent yourself before asking Houston to do anything. Run deterministic commands like `youmd status`, `youmd whoami`, `youmd pull`, `youmd sync`, `youmd skill install all`, `youmd skill sync`, `youmd env vault list`, `youmd env vault pull`, `youmd machine prompt`, `youmd machine verify`, and `youmd project portfolio-hydrate` as needed. Use `you` / `youmd chat` only when you need the You Agent to synthesize or route context, then turn its output into concrete shell actions. Interrupt Houston only for true human-gated steps: GitHub browser auth, macOS Keychain/passphrase entry, npm OTP, OS permissions, or an explicit choice such as the 90-day expansion.",
454
+ "Behind-the-scenes operating rule: use the You.md CLI and You Agent yourself before asking Houston to do anything. Run deterministic commands like `youmd status`, `youmd whoami`, `youmd pull`, `youmd sync`, `youmd skill install all`, `youmd skill sync`, `youmd env vault list`, `youmd env vault device-register`, `youmd env vault pull --restore`, `youmd machine prompt`, `youmd machine verify`, `youmd project portfolio-hydrate`, and `youmd agent status` as needed. Use `youmd agent send --channel machine-sync --kind status \"...\"` to report setup milestones back to Houston's other trusted Macs over the realtime agent bus. Use `you` / `youmd chat` only when you need the You Agent to synthesize or route context, then turn its output into concrete shell actions. Interrupt Houston only for true human-gated steps: GitHub browser auth, source-Mac vault sharing/passphrase entry if the trusted-device envelope has not been created yet, npm OTP, OS permissions, or an explicit choice such as the 90-day expansion.",
389
455
  "",
390
456
  "Exact setup command:",
391
457
  "",
@@ -402,15 +468,16 @@ function buildFreshMachineBootstrapPrompt(options = {}) {
402
468
  "- install/configure MCP for Claude Code and Codex",
403
469
  "- restore shared agent skills, stack config, Claude/Codex links, and agent host config",
404
470
  "- use the installed You.md CLI behind the scenes for status, skill sync, Secret Vault pull, portfolio graph hydration, machine verification, and You Agent context routing instead of making Houston manually drive those steps",
471
+ "- publish setup milestones through `youmd agent send` so Houston's source Mac and realtime daemon can see the Mac mini come online without clipboard babysitting",
405
472
  "- hydrate the portfolio graph from You.md + authenticated GitHub before cloning",
406
473
  `- preview the graph-backed plan, create ${root}, and clone only projects marked ACTIVE plus Top Priority/Focusing from the last ${days} days first`,
407
474
  `- ask whether to expand to all ACTIVE plus Top Priority/Focusing projects from the last ${expandDays} days before calling the full project clone set complete`,
408
- "- check env-vault tooling, pull the latest account-backed You.md Secret Vault encrypted snapshot when available, otherwise auto-detect the newest local Desktop or iCloud Desktop `youmd-env-vault/env-vault-*` file if `YOUMD_ENV_VAULT` is not set, list the encrypted vault, try macOS Keychain service `youmd-env-vault` for the passphrase, restore env files into existing cloned project dirs with `--map-existing --existing-only --skip-agent-auth`, then rehydrate local project/env evidence",
475
+ "- check env-vault tooling, register this Mac as a trusted Secret Vault device, pull the latest account-backed You.md Secret Vault encrypted snapshot when available, unwrap the vault passphrase locally through a trusted-device key envelope, restore env files into existing cloned project dirs with `--map-existing --existing-only --skip-agent-auth`, otherwise auto-detect the newest local Desktop or iCloud Desktop `youmd-env-vault/env-vault-*` file if `YOUMD_ENV_VAULT` is not set, then rehydrate local project/env evidence",
409
476
  "- write and sync a secret-safe machine proof report, with optional bounded install/check/server proof flags",
410
477
  "- bound portfolio hydration with `YOUMD_PORTFOLIO_HYDRATE_TIMEOUT_SECONDS` so large restored roots do not wedge setup",
411
478
  "",
412
479
  `Project source: You.md portfolio graph + authenticated GitHub recent repos, capped at ${limit} tracked projects before local audit evidence is merged. When the graph exists, new-computer setup clones only projects with status ACTIVE and focus Top Priority/Focusing; inactive, unsorted, on-ice, abandoned, killed, and unreviewed GitHub-only repos are skipped unless --include-inactive is explicitly used. First pass is ${days} days with out-of-window projects skipped; the ${expandDays}-day pass is explicit.`,
413
- "Secret rule: .env.local values are never embedded here. Best path: on the old/source Mac, run `youmd env vault push --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault` once. That uploads only encrypted archive bytes plus a safe manifest to You.md Secret Vault, so a trusted new Mac can pull it after login. Local fallback: run `youmd env backup --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault`, move the generated `env-vault-*.tar.enc` file to `~/Desktop/youmd-env-vault/` or the iCloud Desktop `youmd-env-vault/` on the new machine, then run this command. The command checks Secret Vault first, then auto-detects the newest local vault; you can also override with `YOUMD_ENV_VAULT=/path/to/env-vault-*.tar.enc`. If macOS Keychain contains service `youmd-env-vault` for the current user, restore uses it automatically; otherwise it prompts. The restore path lists variable names/counts and target paths only, never values, maps old folder names onto cloned dirs, and skips agent auth config so it does not clobber the new machine's active Claude/Codex login.",
480
+ "Secret rule: .env.local values are never embedded here. Best path: on the old/source Mac, run `youmd env vault push --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault` once, then after the new Mac registers itself run `youmd env vault share` on the source Mac. That uploads only encrypted archive bytes plus safe manifest metadata, and stores only per-device encrypted passphrase envelopes. A trusted new Mac pulls the encrypted snapshot after login and decrypts locally with its private device key; raw env values never hit the browser, chat, or You.md servers. Local fallback: run `youmd env backup --root ~/Desktop/CODE_2025 --out ~/Desktop/youmd-env-vault`, move the generated `env-vault-*.tar.enc` file to `~/Desktop/youmd-env-vault/` or the iCloud Desktop `youmd-env-vault/` on the new machine, then run this command. The command checks Secret Vault first, then auto-detects the newest local vault; you can also override with `YOUMD_ENV_VAULT=/path/to/env-vault-*.tar.enc`. The restore path lists variable names/counts and target paths only, never values, maps old folder names onto cloned dirs, and skips agent auth config so it does not clobber the new machine's active Claude/Codex login.",
414
481
  "",
415
482
  "After the command finishes, report:",
416
483
  "- the `youmd status` sync state",
@@ -1 +1 @@
1
- {"version":3,"file":"machine-bootstrap-prompt.js","sourceRoot":"","sources":["../../src/lib/machine-bootstrap-prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,4EA0RC;AAED,8EAaC;AAED,4EAwDC;AAlZD,uCAAyB;AAEZ,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAClD,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAChC,QAAA,iCAAiC,GAAG,EAAE,CAAC;AACvC,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAY9C,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,SAAS,aAAa,CACpB,IAAY,EACZ,KAAkC,EAClC,UAAoC,EAAE;IAEtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,WAAW,KAAK,GAAG;YAAE,OAAO,GAAG,IAAI,UAAU,CAAC;QAClD,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,UAAU,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,MAAM,EAAE,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gCAAgC;IAC9C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwRN,CAAC;AACJ,CAAC;AAED,SAAgB,iCAAiC,CAAC,UAAwC,EAAE;IAC1F,MAAM,WAAW,GAAG;QAClB,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC;QAC9C,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACtF,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,IAAI,kCAA0B,CAAC;QAC9E,aAAa,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,IAAI,mCAA2B,CAAC;QAClF,aAAa,CAAC,0BAA0B,EAAE,OAAO,CAAC,gBAAgB,CAAC;QACnE,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9F,aAAa,CAAC,yBAAyB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;KACpF,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,qJAAqJ,CAAC;IACzK,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,gCAAgC,EAAE,CAAC,EAAE,CAAC;AAChH,CAAC;AAED,SAAgB,gCAAgC,CAAC,UAAwC,EAAE;IACzF,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,kCAA0B,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,kCAA0B,CAAC;IACxD,MAAM,UAAU,GAAG,yCAAiC,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mCAA2B,CAAC;IAC3D,MAAM,OAAO,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;QAC7B,CAAC,CAAC,+FAA+F;QACjG,CAAC,CAAC,sFAAsF,CAAC;IAE3F,OAAO;QACL,2DAA2D;QAC3D,EAAE;QACF,4PAA4P;QAC5P,EAAE;QACF,yIAAyI;QACzI,EAAE;QACF,QAAQ;QACR,EAAE;QACF,itBAAitB;QACjtB,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,SAAS;QACT,OAAO;QACP,KAAK;QACL,EAAE;QACF,kBAAkB;QAClB,+GAA+G;QAC/G,0GAA0G;QAC1G,mDAAmD;QACnD,qHAAqH;QACrH,qLAAqL;QACrL,mDAAmD;QACnD,wFAAwF;QACxF,iOAAiO;QACjO,iFAAiF;QACjF,2CAA2C,IAAI,oFAAoF,IAAI,aAAa;QACpJ,2FAA2F,UAAU,0DAA0D;QAC/J,yeAAye;QACze,6GAA6G;QAC7G,uHAAuH;QACvH,EAAE;QACF,yFAAyF,KAAK,uUAAuU,IAAI,kDAAkD,UAAU,wBAAwB;QAC7f,ujCAAujC;QACvjC,EAAE;QACF,qCAAqC;QACrC,iCAAiC;QACjC,WAAW,IAAI,kBAAkB;QACjC,4CAA4C;QAC5C,iDAAiD;QACjD,mCAAmC;QACnC,uFAAuF;QACvF,EAAE;QACF,gNAAgN;KACjN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"machine-bootstrap-prompt.js","sourceRoot":"","sources":["../../src/lib/machine-bootstrap-prompt.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export type RealtimeSyncHead = {
32
32
  brainDumps?: number;
33
33
  machineProofs?: number;
34
34
  };
35
+ agentBus?: {
36
+ status?: "active" | "idle" | string;
37
+ channelCount?: number;
38
+ recentCount?: number;
39
+ latestMessageAt?: number | null;
40
+ messages?: RealtimeAgentMessage[];
41
+ secretValuesExposed?: false;
42
+ };
35
43
  repoMirror?: {
36
44
  repoFullName?: string | null;
37
45
  commitSha?: string | null;
@@ -52,6 +60,9 @@ export type RealtimeSyncHead = {
52
60
  flow?: string;
53
61
  available?: boolean;
54
62
  snapshotCount?: number;
63
+ trustedDeviceCount?: number;
64
+ keyEnvelopeCount?: number;
65
+ latestSnapshotEnvelopeCount?: number;
55
66
  id?: string | null;
56
67
  label?: string | null;
57
68
  createdAt?: number | null;
@@ -74,11 +85,41 @@ export type RealtimeSyncHead = {
74
85
  };
75
86
  };
76
87
  export declare const REALTIME_SYNC_STATUS_PATH: string;
88
+ export declare const REALTIME_AGENT_INBOX_PATH: string;
89
+ export type RealtimeAgentMessage = {
90
+ id?: string;
91
+ messageId: string;
92
+ channel: string;
93
+ kind: string;
94
+ body: string;
95
+ sourceHost?: string | null;
96
+ sourceAgent: string;
97
+ sourceRuntime?: string | null;
98
+ targetHost?: string | null;
99
+ targetAgent?: string | null;
100
+ metadata?: unknown;
101
+ createdAt: number;
102
+ secretValuesExposed: false;
103
+ };
104
+ export type RealtimeAgentBusStatus = {
105
+ state: "active" | "idle" | "unknown";
106
+ summary: string;
107
+ channelCount: number;
108
+ recentCount: number;
109
+ latestMessageAt?: number | null;
110
+ messages: RealtimeAgentMessage[];
111
+ inboxPath: string;
112
+ sendCommand: string;
113
+ secretValuesExposed: false;
114
+ };
77
115
  export type RealtimeSecretVaultStatus = {
78
116
  state: "ready" | "missing" | "scope-missing" | "unknown";
79
- flow: "account-backed-encrypted-snapshot";
117
+ flow: "account-backed-encrypted-snapshot+trusted-device-envelopes";
80
118
  available: boolean;
81
119
  snapshotCount: number;
120
+ trustedDeviceCount: number;
121
+ keyEnvelopeCount: number;
122
+ latestSnapshotEnvelopeCount: number;
82
123
  summary: string;
83
124
  latestSnapshot?: {
84
125
  id?: string | null;
@@ -98,6 +139,8 @@ export type RealtimeSecretVaultStatus = {
98
139
  sourceHost?: string | null;
99
140
  sourceRoot?: string | null;
100
141
  };
142
+ deviceRegisterCommand: string;
143
+ shareCommand: string;
101
144
  pullCommand: string;
102
145
  restoreCommand: string;
103
146
  secretValuesExposed: false;
@@ -113,16 +156,19 @@ export type RealtimeSyncStatusFile = {
113
156
  latestInstalledAt?: number | null;
114
157
  };
115
158
  portfolio?: RealtimeSyncHead["portfolio"];
159
+ agentBus: RealtimeAgentBusStatus;
116
160
  repoMirror?: RealtimeSyncHead["repoMirror"];
117
161
  github?: RealtimeSyncHead["github"];
118
162
  secretVault: RealtimeSecretVaultStatus;
119
163
  secretValuesExposed: false;
120
164
  };
121
165
  export declare function describeRealtimeSecretVault(head: RealtimeSyncHead | null | undefined): RealtimeSecretVaultStatus;
166
+ export declare function describeRealtimeAgentBus(head: RealtimeSyncHead | null | undefined): RealtimeAgentBusStatus;
122
167
  export declare function realtimeSyncHeadSignature(head: RealtimeSyncHead | null | undefined): string;
123
168
  export declare function summarizeRealtimeSyncHead(head: RealtimeSyncHead): string;
124
169
  export declare function buildRealtimeSyncStatusFile(head: RealtimeSyncHead): RealtimeSyncStatusFile;
125
170
  export declare function writeRealtimeSyncStatusFile(head: RealtimeSyncHead): void;
126
171
  export declare function readRealtimeSyncStatusFile(): RealtimeSyncStatusFile | null;
172
+ export declare function writeRealtimeAgentInboxFile(head: RealtimeSyncHead): void;
127
173
  export declare function shouldRunBoundedSync(lastRunAt: number, now: number, minIntervalMs: number): boolean;
128
174
  //# sourceMappingURL=realtime-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-sync.d.ts","sourceRoot":"","sources":["../../src/lib/realtime-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-sync.d.ts","sourceRoot":"","sources":["../../src/lib/realtime-sync.ts"],"names":[],"mappings":"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"}
@@ -33,18 +33,21 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.REALTIME_SYNC_STATUS_PATH = void 0;
36
+ exports.REALTIME_AGENT_INBOX_PATH = exports.REALTIME_SYNC_STATUS_PATH = void 0;
37
37
  exports.describeRealtimeSecretVault = describeRealtimeSecretVault;
38
+ exports.describeRealtimeAgentBus = describeRealtimeAgentBus;
38
39
  exports.realtimeSyncHeadSignature = realtimeSyncHeadSignature;
39
40
  exports.summarizeRealtimeSyncHead = summarizeRealtimeSyncHead;
40
41
  exports.buildRealtimeSyncStatusFile = buildRealtimeSyncStatusFile;
41
42
  exports.writeRealtimeSyncStatusFile = writeRealtimeSyncStatusFile;
42
43
  exports.readRealtimeSyncStatusFile = readRealtimeSyncStatusFile;
44
+ exports.writeRealtimeAgentInboxFile = writeRealtimeAgentInboxFile;
43
45
  exports.shouldRunBoundedSync = shouldRunBoundedSync;
44
46
  const fs = __importStar(require("fs"));
45
47
  const os = __importStar(require("os"));
46
48
  const path = __importStar(require("path"));
47
49
  exports.REALTIME_SYNC_STATUS_PATH = path.join(os.homedir(), ".youmd", "realtime-sync-status.json");
50
+ exports.REALTIME_AGENT_INBOX_PATH = path.join(os.homedir(), ".youmd", "agent-bus", "inbox.json");
48
51
  function shortSha(value) {
49
52
  if (!value)
50
53
  return null;
@@ -59,6 +62,8 @@ function describeRealtimeSecretVault(head) {
59
62
  : vault
60
63
  ? "missing"
61
64
  : "unknown";
65
+ const deviceRegisterCommand = "youmd env vault device-register";
66
+ const shareCommand = "youmd env vault share";
62
67
  const pullCommand = "youmd env vault pull --out ~/.youmd/secret-vault";
63
68
  const restoreCommand = "youmd env vault pull --restore --root ~/Desktop/CODE_YOU --map-existing --existing-only --skip-agent-auth";
64
69
  if (state === "ready") {
@@ -66,12 +71,17 @@ function describeRealtimeSecretVault(head) {
66
71
  const vars = vault?.variableCount ?? 0;
67
72
  const source = vault?.sourceHost ? ` from ${vault.sourceHost}` : "";
68
73
  const hash = shortSha(vault?.sha256);
74
+ const trustedDevices = vault?.trustedDeviceCount ?? 0;
75
+ const latestEnvelopes = vault?.latestSnapshotEnvelopeCount ?? 0;
69
76
  return {
70
77
  state,
71
- flow: "account-backed-encrypted-snapshot",
78
+ flow: "account-backed-encrypted-snapshot+trusted-device-envelopes",
72
79
  available: true,
73
80
  snapshotCount: vault?.snapshotCount ?? 1,
74
- summary: `Secret Vault ready: ${projects} projects / ${vars} vars${source}${hash ? ` / ${hash}` : ""}`,
81
+ trustedDeviceCount: trustedDevices,
82
+ keyEnvelopeCount: vault?.keyEnvelopeCount ?? latestEnvelopes,
83
+ latestSnapshotEnvelopeCount: latestEnvelopes,
84
+ summary: `Secret Vault ready: ${projects} projects / ${vars} vars${source} / ${latestEnvelopes}/${trustedDevices} device envelopes${hash ? ` / ${hash}` : ""}`,
75
85
  latestSnapshot: {
76
86
  id: vault?.id ?? null,
77
87
  label: vault?.label ?? null,
@@ -90,6 +100,8 @@ function describeRealtimeSecretVault(head) {
90
100
  sourceHost: vault?.sourceHost ?? null,
91
101
  sourceRoot: vault?.sourceRoot ?? null,
92
102
  },
103
+ deviceRegisterCommand,
104
+ shareCommand,
93
105
  pullCommand,
94
106
  restoreCommand,
95
107
  secretValuesExposed: false,
@@ -98,10 +110,15 @@ function describeRealtimeSecretVault(head) {
98
110
  if (state === "scope-missing") {
99
111
  return {
100
112
  state,
101
- flow: "account-backed-encrypted-snapshot",
113
+ flow: "account-backed-encrypted-snapshot+trusted-device-envelopes",
102
114
  available: false,
103
115
  snapshotCount: 0,
116
+ trustedDeviceCount: 0,
117
+ keyEnvelopeCount: 0,
118
+ latestSnapshotEnvelopeCount: 0,
104
119
  summary: "Secret Vault unknown: current realtime key lacks vault scope",
120
+ deviceRegisterCommand,
121
+ shareCommand,
105
122
  pullCommand,
106
123
  restoreCommand,
107
124
  secretValuesExposed: false,
@@ -110,10 +127,15 @@ function describeRealtimeSecretVault(head) {
110
127
  if (state === "missing") {
111
128
  return {
112
129
  state,
113
- flow: "account-backed-encrypted-snapshot",
130
+ flow: "account-backed-encrypted-snapshot+trusted-device-envelopes",
114
131
  available: false,
115
132
  snapshotCount: vault?.snapshotCount ?? 0,
116
- summary: "Secret Vault missing: upload encrypted snapshot from the source Mac with `youmd env vault push`",
133
+ trustedDeviceCount: vault?.trustedDeviceCount ?? 0,
134
+ keyEnvelopeCount: vault?.keyEnvelopeCount ?? 0,
135
+ latestSnapshotEnvelopeCount: vault?.latestSnapshotEnvelopeCount ?? 0,
136
+ summary: "Secret Vault missing: upload encrypted snapshot from the source Mac with `youmd env vault push`, then register/share trusted devices",
137
+ deviceRegisterCommand,
138
+ shareCommand,
117
139
  pullCommand,
118
140
  restoreCommand,
119
141
  secretValuesExposed: false,
@@ -121,15 +143,47 @@ function describeRealtimeSecretVault(head) {
121
143
  }
122
144
  return {
123
145
  state,
124
- flow: "account-backed-encrypted-snapshot",
146
+ flow: "account-backed-encrypted-snapshot+trusted-device-envelopes",
125
147
  available: false,
126
148
  snapshotCount: 0,
149
+ trustedDeviceCount: 0,
150
+ keyEnvelopeCount: 0,
151
+ latestSnapshotEnvelopeCount: 0,
127
152
  summary: "Secret Vault not observed yet: realtime daemon has not received a vault-scoped sync head",
153
+ deviceRegisterCommand,
154
+ shareCommand,
128
155
  pullCommand,
129
156
  restoreCommand,
130
157
  secretValuesExposed: false,
131
158
  };
132
159
  }
160
+ function describeRealtimeAgentBus(head) {
161
+ const bus = head?.agentBus;
162
+ const messages = (bus?.messages ?? [])
163
+ .filter((message) => {
164
+ return Boolean(message &&
165
+ typeof message.messageId === "string" &&
166
+ typeof message.body === "string" &&
167
+ message.secretValuesExposed === false);
168
+ })
169
+ .slice(-12);
170
+ const latest = bus?.latestMessageAt ?? (messages.length ? messages[messages.length - 1]?.createdAt : null);
171
+ const state = bus?.status === "active" || messages.length ? "active" : bus ? "idle" : "unknown";
172
+ const latestLabel = latest ? new Date(latest).toISOString() : "none yet";
173
+ return {
174
+ state,
175
+ summary: state === "unknown"
176
+ ? "Agent bus not observed yet"
177
+ : `${messages.length} recent agent message${messages.length === 1 ? "" : "s"} / latest ${latestLabel}`,
178
+ channelCount: bus?.channelCount ?? new Set(messages.map((message) => message.channel)).size,
179
+ recentCount: bus?.recentCount ?? messages.length,
180
+ latestMessageAt: latest,
181
+ messages,
182
+ inboxPath: exports.REALTIME_AGENT_INBOX_PATH,
183
+ sendCommand: 'youmd agent send "hello from this Mac"',
184
+ secretValuesExposed: false,
185
+ };
186
+ }
133
187
  function realtimeSyncHeadSignature(head) {
134
188
  if (!head)
135
189
  return "none";
@@ -146,12 +200,31 @@ function realtimeSyncHeadSignature(head) {
146
200
  names: head.skills?.names ?? [],
147
201
  },
148
202
  portfolio: head.portfolio ?? null,
203
+ agentBus: {
204
+ status: head.agentBus?.status ?? null,
205
+ latestMessageAt: head.agentBus?.latestMessageAt ?? null,
206
+ recentCount: head.agentBus?.recentCount ?? 0,
207
+ messages: (head.agentBus?.messages ?? []).map((message) => ({
208
+ messageId: message.messageId,
209
+ channel: message.channel,
210
+ kind: message.kind,
211
+ body: message.body,
212
+ sourceHost: message.sourceHost ?? null,
213
+ sourceAgent: message.sourceAgent,
214
+ targetHost: message.targetHost ?? null,
215
+ targetAgent: message.targetAgent ?? null,
216
+ createdAt: message.createdAt,
217
+ })),
218
+ },
149
219
  repoMirror: head.repoMirror ?? null,
150
220
  github: head.github ?? null,
151
221
  encryptedEnvVault: {
152
222
  status: head.encryptedEnvVault?.status ?? null,
153
223
  available: head.encryptedEnvVault?.available ?? false,
154
224
  snapshotCount: head.encryptedEnvVault?.snapshotCount ?? 0,
225
+ trustedDeviceCount: head.encryptedEnvVault?.trustedDeviceCount ?? 0,
226
+ keyEnvelopeCount: head.encryptedEnvVault?.keyEnvelopeCount ?? 0,
227
+ latestSnapshotEnvelopeCount: head.encryptedEnvVault?.latestSnapshotEnvelopeCount ?? 0,
155
228
  id: head.encryptedEnvVault?.id ?? null,
156
229
  createdAt: head.encryptedEnvVault?.createdAt ?? null,
157
230
  fileName: head.encryptedEnvVault?.fileName ?? null,
@@ -171,8 +244,9 @@ function summarizeRealtimeSyncHead(head) {
171
244
  const skills = `${head.skills?.installedCount ?? 0} skills`;
172
245
  const projects = `${head.portfolio?.projects ?? 0} projects`;
173
246
  const tasks = `${head.portfolio?.tasks ?? 0} tasks`;
247
+ const agentMessages = `${head.agentBus?.recentCount ?? 0} agent msgs`;
174
248
  const vault = describeRealtimeSecretVault(head).summary;
175
- return `${bundle}, ${skills}, ${projects}, ${tasks}, ${vault}`;
249
+ return `${bundle}, ${skills}, ${projects}, ${tasks}, ${agentMessages}, ${vault}`;
176
250
  }
177
251
  function buildRealtimeSyncStatusFile(head) {
178
252
  return {
@@ -186,6 +260,7 @@ function buildRealtimeSyncStatusFile(head) {
186
260
  latestInstalledAt: head.skills?.latestInstalledAt ?? null,
187
261
  },
188
262
  portfolio: head.portfolio,
263
+ agentBus: describeRealtimeAgentBus(head),
189
264
  repoMirror: head.repoMirror,
190
265
  github: head.github,
191
266
  secretVault: describeRealtimeSecretVault(head),
@@ -195,6 +270,7 @@ function buildRealtimeSyncStatusFile(head) {
195
270
  function writeRealtimeSyncStatusFile(head) {
196
271
  fs.mkdirSync(path.dirname(exports.REALTIME_SYNC_STATUS_PATH), { recursive: true, mode: 0o700 });
197
272
  fs.writeFileSync(exports.REALTIME_SYNC_STATUS_PATH, JSON.stringify(buildRealtimeSyncStatusFile(head), null, 2), { mode: 0o600 });
273
+ writeRealtimeAgentInboxFile(head);
198
274
  }
199
275
  function readRealtimeSyncStatusFile() {
200
276
  try {
@@ -209,6 +285,15 @@ function readRealtimeSyncStatusFile() {
209
285
  return null;
210
286
  }
211
287
  }
288
+ function writeRealtimeAgentInboxFile(head) {
289
+ const agentBus = describeRealtimeAgentBus(head);
290
+ fs.mkdirSync(path.dirname(exports.REALTIME_AGENT_INBOX_PATH), { recursive: true, mode: 0o700 });
291
+ fs.writeFileSync(exports.REALTIME_AGENT_INBOX_PATH, JSON.stringify({
292
+ schemaVersion: "you-md/realtime-agent-bus-inbox/v1",
293
+ generatedAt: Date.now(),
294
+ ...agentBus,
295
+ }, null, 2), { mode: 0o600 });
296
+ }
212
297
  function shouldRunBoundedSync(lastRunAt, now, minIntervalMs) {
213
298
  return lastRunAt === 0 || now - lastRunAt >= minIntervalMs;
214
299
  }
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-sync.js","sourceRoot":"","sources":["../../src/lib/realtime-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-sync.js","sourceRoot":"","sources":["../../src/lib/realtime-sync.ts"],"names":[],"mappings":"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"}