@ours.network/fleet 1.2.0-nightly.40 → 1.2.0-nightly.41

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.
@@ -1,7 +1,7 @@
1
1
  import { lstatSync, readFileSync, readdirSync, realpathSync } from 'node:fs';
2
2
  import { join, relative } from 'node:path';
3
3
  import { parse } from 'yaml';
4
- import { loadConfig, resolveMonitorConfig, resolvePermissions, ROLE_NAME_RE, } from '../config.js';
4
+ import { loadConfig, resolveSnapshotMonitor, resolvePermissions, ROLE_NAME_RE, } from '../config.js';
5
5
  import { agentsRoot, tmpRoot } from '../paths.js';
6
6
  import { readSpawnLineage } from '../web/topology.js';
7
7
  const MAX_SNAPSHOT_BYTES = 256 * 1024;
@@ -54,7 +54,7 @@ function snapshot(path, name) {
54
54
  session, identity: typeof raw.identity === 'string' ? raw.identity : name,
55
55
  permissions: resolvePermissions(undefined, raw.permissions),
56
56
  permissionsDeclared: raw.permissions !== undefined,
57
- monitor: resolveMonitorConfig(undefined, raw.monitor),
57
+ monitor: resolveSnapshotMonitor(raw.monitor),
58
58
  sourceFile: '(temp)',
59
59
  },
60
60
  };
@@ -1,9 +1,9 @@
1
1
  {
2
- "version": "1.2.0-nightly.40",
3
- "buildId": "de6076ea1748",
4
- "commit": "147b0e1859d9dc59f46140b0171329e9a479d3cc",
2
+ "version": "1.2.0-nightly.41",
3
+ "buildId": "aa7ed657a14a",
4
+ "commit": "bbdc34de495026f1119ce9df3442a787d8d02dc0",
5
5
  "dirty": true,
6
- "builtAt": "2026-10-03T11:45:41.330Z",
6
+ "builtAt": "2026-10-03T12:50:11.407Z",
7
7
  "capabilities": [
8
8
  "workspace.enroll.preserve-profile-v1",
9
9
  "cowork.http-management-v1",
package/dist/config.d.ts CHANGED
@@ -343,6 +343,11 @@ export declare function resolvePermissions(defaults: unknown, role: Partial<Comm
343
343
  * without tool-boundary steering fall back to non-cancelling delivery.
344
344
  */
345
345
  export declare function defaultMonitorInterrupt(harness: string | undefined): MonitorInterrupt;
346
+ /**
347
+ * Resolve a persisted temporary-role monitor. A snapshot written before
348
+ * monitor.interrupt existed keeps the non-interrupting delivery it ran with.
349
+ */
350
+ export declare function resolveSnapshotMonitor(monitor: unknown): MonitorConfig;
346
351
  export declare function resolveMonitorConfig(defMonitor: unknown, roleMonitor?: Partial<MonitorConfig>, labels?: {
347
352
  base?: string;
348
353
  file?: string;
package/dist/config.js CHANGED
@@ -1150,6 +1150,15 @@ function resolveStartStaggerMs(raw, base) {
1150
1150
  export function defaultMonitorInterrupt(harness) {
1151
1151
  return harness === 'hermes' ? false : 'after_tool';
1152
1152
  }
1153
+ /**
1154
+ * Resolve a persisted temporary-role monitor. A snapshot written before
1155
+ * monitor.interrupt existed keeps the non-interrupting delivery it ran with.
1156
+ */
1157
+ export function resolveSnapshotMonitor(monitor) {
1158
+ if (!isPlainObject(monitor))
1159
+ return resolveMonitorConfig(undefined, monitor);
1160
+ return resolveMonitorConfig(undefined, { interrupt: false, ...monitor });
1161
+ }
1153
1162
  export function resolveMonitorConfig(defMonitor, roleMonitor, labels = {}) {
1154
1163
  const where = labels.file && labels.name ? `${labels.file}: role '${labels.name}' ` : '';
1155
1164
  if (defMonitor !== undefined && !isPlainObject(defMonitor))
package/dist/runner.js CHANGED
@@ -8,7 +8,7 @@ import { fileURLToPath } from 'node:url';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { parse } from 'yaml';
10
10
  import { agentDir, stateRoot } from './paths.js';
11
- import { loadConfig, findRole, isolationContextFor, resolveMonitorConfig, resolvePermissions, } from './config.js';
11
+ import { loadConfig, findRole, isolationContextFor, resolveSnapshotMonitor, resolvePermissions, } from './config.js';
12
12
  import { getAdapter } from './harness/registry.js';
13
13
  import { createMonitor, probeIdentityPresence, } from './monitor.js';
14
14
  import { DaemonGenerationObserver, RoleRecoveryController, probeDaemonGeneration, } from './daemon-recovery.js';
@@ -432,12 +432,9 @@ export function loadTempRole(name) {
432
432
  throw new Error(`temp role '${name}' has no snapshot at ${p}`);
433
433
  const role = parse(readFileSync(p, 'utf8'));
434
434
  // Upgrade snapshots written before monitor.mode/interrupt existed. A snapshot
435
- // with no monitor block keeps the historical native/no-supervisor behavior,
436
- // and one without interrupt keeps the non-interrupting delivery it ran with.
435
+ // with no monitor block keeps the historical native/no-supervisor behavior.
437
436
  if (role.monitor)
438
- role.monitor = resolveMonitorConfig(undefined, {
439
- interrupt: false, ...role.monitor,
440
- });
437
+ role.monitor = resolveSnapshotMonitor(role.monitor);
441
438
  role.__temp = true;
442
439
  return role;
443
440
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ours.network/fleet",
3
- "version": "1.2.0-nightly.40",
3
+ "version": "1.2.0-nightly.41",
4
4
  "description": "Harness-agnostic fleet of persistent, identity-bound AI agents. Declarative fleet.yaml, managed native/ACP sessions, supervision, and ours.network messaging.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",