@botbuddy/cli 1.36.1 → 1.36.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botbuddy/cli",
3
- "version": "1.36.1",
3
+ "version": "1.36.2",
4
4
  "description": "BotBuddy — Swarm coordination CLI for multi-agent workflows",
5
5
  "type": "module",
6
6
  "bin": {
Binary file
@@ -43,10 +43,10 @@ export async function saveHarnessSession(session, { cwd = process.cwd() } = {})
43
43
  worktree: root,
44
44
  minted_at: new Date().toISOString(),
45
45
  expires_at: session.expires_at,
46
- // BOT-1650 (Codex round-28 P2): mark provenance so a TIMER wait only relays for
47
- // a bootstrap-issued cache (the cross-shell receipt-of-principal contract). A
48
- // bb setup / self-heal cache shares this schema but omits this marker, so a
49
- // plain timer from such a shell stays fully offline.
46
+ // BOT-1650 (Codex round-28 P2): mark bootstrap provenance. Since BOT-2000 a
47
+ // TIMER wait relays for ANY runtime cache (bootstrap or bb setup / self-heal),
48
+ // so this marker no longer gates timer relaying; it still distinguishes a
49
+ // bootstrap-issued cache for the bootstrap bridge's own reuse checks.
50
50
  harness_origin: "bootstrap_agent_session",
51
51
  ...(session.session_token_generation ? { session_token_generation: session.session_token_generation } : {}),
52
52
  };
package/src/wait.mjs CHANGED
@@ -19,7 +19,7 @@ import { VERSION } from "./version.mjs";
19
19
  import { fileURLToPath } from "node:url";
20
20
  import { latestPublicCliCommand } from "./public-invocation.mjs";
21
21
  import { AGENT_KEY_RE, readAgentSessionTokenEnv, legacyAgentAliasHint } from "./agent-key.mjs";
22
- import { clearAgentState, hasBootstrapAgentSession, isRejectedCachedSession, resolveAgentSessionCredential, selfHealAgentSession } from "./agent-session.mjs";
22
+ import { clearAgentState, hasAgentSessionRuntime, isRejectedCachedSession, resolveAgentSessionCredential, selfHealAgentSession } from "./agent-session.mjs";
23
23
  import { touchAgentStateExpiry } from "./agent-state.mjs";
24
24
  import { SETUP_BLOCK } from "./setup-block.mjs";
25
25
  import { createWaitCheckpointStore, WaitCheckpointError } from "./wait-checkpoint.mjs";
@@ -1568,11 +1568,12 @@ export async function runWait(argv, { recoveryLocalWaitId = null } = {}) {
1568
1568
  : new WaitCheckpointError("wait_checkpoint_write_failed", String(error?.message ?? error)));
1569
1569
  }
1570
1570
 
1571
- // BOT-1650: a plain timer stays offline, but a timer from a bootstrapped harness
1572
- // registers so its terminal receipt proves the current session principal (the
1573
- // cross-shell bootstrap contract). Detected without a network self-heal.
1571
+ // BOT-1650 / BOT-2000: a timer from a worktree with any agent-session runtime
1572
+ // file (bootstrap or `bb setup`) registers, so it shows on /waits and its terminal
1573
+ // receipt proves the session principal. Only a credential-less worktree's timer
1574
+ // stays offline. Detected without a network self-heal.
1574
1575
  const needsRelay = conditions.some((c) => c.type !== "timer")
1575
- || await hasBootstrapAgentSession({ cwd: process.cwd() });
1576
+ || await hasAgentSessionRuntime({ cwd: process.cwd() });
1576
1577
  if (needsRelay) {
1577
1578
  try {
1578
1579
  const credential = await resolveAgentSessionCredential({ argv, env: process.env, cwd: process.cwd() });