@ours.network/fleet 1.2.0-nightly.27 → 1.2.0-nightly.29
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/README.md +2 -0
- package/dist/build-info.json +5 -4
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.js +2 -0
- package/dist/cli.js +2 -1
- package/dist/workspace-enrollment.d.ts +1 -0
- package/dist/workspace-enrollment.js +4 -1
- package/package.json +2 -10
package/README.md
CHANGED
|
@@ -1825,3 +1825,5 @@ See [Room layouts](docs/room-layouts.md) for YAML examples and CLI commands.
|
|
|
1825
1825
|
### Dedicated notification service
|
|
1826
1826
|
|
|
1827
1827
|
Configure the web backend with `OURS_NOTIFICATIONS_ORIGIN` and a Fleet-scoped `OURS_NOTIFICATIONS_PRODUCER_TOKEN`. It reads each local supervisor ledger incrementally with persistent checkpoints under web state, correlating owner browser/channel prompts with terminal completion. Monitor/startup turns do not notify. First installation skips existing history; no agent restart or conversation controller is needed. Persist web state across deployment/restarts. Reads are bounded to 256 KiB per role per tick, and oversized model/media records are skipped across chunks. Expose `/notifications` through the generic authenticated prefix gateway with a server-side user token and `stripBrowserContext: true`; producer tokens stay server-side. All browser sessions of this single-owner console map to one stable notification account. See [ours-notifications](https://github.com/adapt-toolkit/ours-notifications) for configuration/API/release details.
|
|
1828
|
+
|
|
1829
|
+
Existing-host enrollment: `ours-fleet workspace-enroll --file <private-file> --preserve-profile` requires Messenger to advertise preservation support before any enrollment POST. It omits Name/Surname and leaves existing/absent profile untouched. Existing Fleet models and agents are retained; the installer must skip init when its configuration exists. Signed root proof, tunnel setup and device QR issuance remain the normal enrollment flow. Older Messenger fails closed and requires its preservation-capable release.
|
package/dist/build-info.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.0-nightly.
|
|
3
|
-
"buildId": "
|
|
4
|
-
"commit": "
|
|
2
|
+
"version": "1.2.0-nightly.29",
|
|
3
|
+
"buildId": "cc1740d5df7b",
|
|
4
|
+
"commit": "e4737a56d25b0244222bd94b25c299825b8f916f",
|
|
5
5
|
"dirty": true,
|
|
6
|
-
"builtAt": "2026-10-
|
|
6
|
+
"builtAt": "2026-10-01T10:23:02.435Z",
|
|
7
7
|
"capabilities": [
|
|
8
|
+
"workspace.enroll.preserve-profile-v1",
|
|
8
9
|
"cowork.http-management-v1",
|
|
9
10
|
"monitor.interrupt.after_tool"
|
|
10
11
|
]
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
/** `monitor.interrupt: after_tool` — cancel at the next tool boundary (#67). */
|
|
16
16
|
export declare const CAP_MONITOR_INTERRUPT_AFTER_TOOL = "monitor.interrupt.after_tool";
|
|
17
17
|
export declare const CAP_HTTP_COWORK = "cowork.http-management-v1";
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const CAP_WORKSPACE_PRESERVE_PROFILE = "workspace.enroll.preserve-profile-v1";
|
|
19
|
+
export declare const CAPABILITIES: readonly ["workspace.enroll.preserve-profile-v1", "cowork.http-management-v1", "monitor.interrupt.after_tool"];
|
|
19
20
|
export type Capability = (typeof CAPABILITIES)[number];
|
|
20
21
|
/** Does this build declare `token`? */
|
|
21
22
|
export declare const hasCapability: (token: string) => boolean;
|
package/dist/capabilities.js
CHANGED
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
/** `monitor.interrupt: after_tool` — cancel at the next tool boundary (#67). */
|
|
16
16
|
export const CAP_MONITOR_INTERRUPT_AFTER_TOOL = 'monitor.interrupt.after_tool';
|
|
17
17
|
export const CAP_HTTP_COWORK = 'cowork.http-management-v1';
|
|
18
|
+
export const CAP_WORKSPACE_PRESERVE_PROFILE = 'workspace.enroll.preserve-profile-v1';
|
|
18
19
|
export const CAPABILITIES = [
|
|
20
|
+
CAP_WORKSPACE_PRESERVE_PROFILE,
|
|
19
21
|
CAP_HTTP_COWORK,
|
|
20
22
|
CAP_MONITOR_INTERRUPT_AFTER_TOOL,
|
|
21
23
|
];
|
package/dist/cli.js
CHANGED
|
@@ -1531,10 +1531,11 @@ webCommand.command('open').description('securely open or re-pair a browser with
|
|
|
1531
1531
|
});
|
|
1532
1532
|
cOpt(program.command('workspace-enroll').description('enroll this host using a private account setup file'))
|
|
1533
1533
|
.requiredOption('--file <path>', 'owned private payload file')
|
|
1534
|
+
.option('--preserve-profile', 'retain the existing human profile without creating or rewriting it')
|
|
1534
1535
|
.option('--migrate-app-origin', 'explicitly migrate the same workspace to its new account origin after verified signed proof')
|
|
1535
1536
|
.action(async (opts) => {
|
|
1536
1537
|
try {
|
|
1537
|
-
const result = await enrollWorkspace(readWorkspacePayload(opts.file), opts.configuration, { migrateAppOrigin: opts.migrateAppOrigin });
|
|
1538
|
+
const result = await enrollWorkspace(readWorkspacePayload(opts.file), opts.configuration, { migrateAppOrigin: opts.migrateAppOrigin, preserveProfile: opts.preserveProfile });
|
|
1538
1539
|
if (!existsSync(new WebAccessStore().path))
|
|
1539
1540
|
configureWebAccess({ pairing: true });
|
|
1540
1541
|
const manager = new WebServiceManager();
|
|
@@ -18,6 +18,7 @@ export interface WorkspacePayload {
|
|
|
18
18
|
export declare function readWorkspacePayload(file: string): WorkspacePayload;
|
|
19
19
|
export declare function enrollWorkspace(payload: WorkspacePayload, configuration?: string, options?: {
|
|
20
20
|
migrateAppOrigin?: boolean;
|
|
21
|
+
preserveProfile?: boolean;
|
|
21
22
|
}): Promise<{
|
|
22
23
|
origin: string;
|
|
23
24
|
hostWorkspaceId: string;
|
|
@@ -63,6 +63,8 @@ export async function enrollWorkspace(payload, configuration = defaultConfigPath
|
|
|
63
63
|
const identity = await request('workspace/enrollment-identity');
|
|
64
64
|
if (!/^[a-f0-9]{64}$/i.test(identity.cid))
|
|
65
65
|
throw Error('Bound Messenger identity unavailable');
|
|
66
|
+
if (options.preserveProfile && identity.preserveProfile !== true)
|
|
67
|
+
throw Error('Existing-host setup requires Messenger profile-preservation support; update the host Messenger before retrying');
|
|
66
68
|
if (loaded.rooms && loaded.rooms.owner.expected_cid.toLowerCase() !== identity.cid.toLowerCase())
|
|
67
69
|
throw Error('Retained room owner CID conflicts with the Human root');
|
|
68
70
|
const inviteFile = loaded.rooms?.owner.public_invite_file || join(dir, 'owner.invite');
|
|
@@ -74,7 +76,8 @@ export async function enrollWorkspace(payload, configuration = defaultConfigPath
|
|
|
74
76
|
const devices = new WorkspaceDeviceStore();
|
|
75
77
|
const hostWorkspaceId = devices.workspaceId;
|
|
76
78
|
devices.close();
|
|
77
|
-
const
|
|
79
|
+
const { name, surname, ...proofPayload } = payload;
|
|
80
|
+
const result = await request('workspace/enroll', options.preserveProfile ? { ...proofPayload, hostWorkspaceId, preserveProfile: true } : { ...payload, hostWorkspaceId });
|
|
78
81
|
if (!result.submitted || !/^[a-f0-9]{64}$/i.test(result.rootCid) || typeof result.ownerInvite !== 'string')
|
|
79
82
|
throw Error('Malformed workspace enrollment response');
|
|
80
83
|
if (loaded.rooms && loaded.rooms.owner.expected_cid.toLowerCase() !== result.rootCid.toLowerCase())
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ours.network/fleet",
|
|
3
|
-
"version": "1.2.0-nightly.
|
|
3
|
+
"version": "1.2.0-nightly.29",
|
|
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",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@fastify/static": "^10.1.2",
|
|
43
43
|
"@fastify/websocket": "^11.2.0",
|
|
44
44
|
"@ours.network/cli": "2.8.1-nightly.13",
|
|
45
|
-
"@ours.network/mcp": "1.2.0-nightly.
|
|
45
|
+
"@ours.network/mcp": "1.2.0-nightly.10",
|
|
46
46
|
"@ours.network/sdk": "3.8.1-nightly.15",
|
|
47
47
|
"commander": "^12.1.0",
|
|
48
48
|
"fastify": "^5.4.0",
|
|
@@ -62,13 +62,5 @@
|
|
|
62
62
|
"@types/ws": "^8.18.1",
|
|
63
63
|
"typescript": "^5.5.0",
|
|
64
64
|
"vitest": "^2.0.0"
|
|
65
|
-
},
|
|
66
|
-
"overrides": {
|
|
67
|
-
"@ours.network/mcp": {
|
|
68
|
-
"@ours.network/sdk": "$@ours.network/sdk"
|
|
69
|
-
},
|
|
70
|
-
"@ours.network/cli": {
|
|
71
|
-
"@ours.network/sdk": "$@ours.network/sdk"
|
|
72
|
-
}
|
|
73
65
|
}
|
|
74
66
|
}
|