@ours.network/fleet 1.2.0-nightly.1 → 1.2.0-nightly.3
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 +21 -2
- package/dist/agent-recovery-gate.js +1 -1
- package/dist/build-info.json +4 -4
- package/dist/client-profile.js +2 -2
- package/dist/doctor.js +2 -2
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -80,7 +80,7 @@ The state dir contract:
|
|
|
80
80
|
|---|---|---|
|
|
81
81
|
| Node ≥ 22 | runs `ours-fleet` and its maintained adapters | nodejs.org, `apt`, or `brew` |
|
|
82
82
|
| a harness CLI, logged in | the agent itself | e.g. Claude Code (`claude`) or Codex CLI (`codex`) |
|
|
83
|
-
| `ours` CLI + shared daemon | identity + agent-to-agent messaging | `npm i -g @ours.network/cli && ours
|
|
83
|
+
| `ours` CLI + shared daemon | identity + agent-to-agent messaging | `npm i -g @ours.network/cli@2.8.1-nightly.7 @ours.network/daemon@3.8.1-nightly.1 && ours-daemon start` |
|
|
84
84
|
|
|
85
85
|
Linux only: `ours-fleet init` enables *linger* so roles run without a login session
|
|
86
86
|
and survive reboots. macOS: launchd agents start **at login** (no linger
|
|
@@ -1653,7 +1653,7 @@ After building Fleet with the selected SDK and CLI artifacts installed, run
|
|
|
1653
1653
|
`npm run test:v1-recovery` in an isolated Docker container with external networking
|
|
1654
1654
|
disabled. The existing test covers retry and terminal failure cases using a
|
|
1655
1655
|
temporary daemon and no authenticated AI harness. By default both daemon and
|
|
1656
|
-
token-update commands use `node_modules/@ours.network/
|
|
1656
|
+
token-update commands use `node_modules/@ours.network/daemon/dist/cli.js`;
|
|
1657
1657
|
`FLEET_DAEMON_CLI` and `FLEET_TOKEN_CLI` can select explicitly prepared CLI entries.
|
|
1658
1658
|
These package checks do not replace native Fleet/harness or platform acceptance.
|
|
1659
1659
|
|
|
@@ -1678,3 +1678,22 @@ under identical input names and versions, plus a missing-vendor negative check):
|
|
|
1678
1678
|
```sh
|
|
1679
1679
|
node scripts/check-build-selected.mjs --sdk /artifacts/ours.network-sdk-3.7.2.tgz --cli /artifacts/ours.network-cli-2.7.2.tgz
|
|
1680
1680
|
```
|
|
1681
|
+
|
|
1682
|
+
### Remote clients over HTTPS
|
|
1683
|
+
|
|
1684
|
+
A client may select an `https://` origin backed by a TLS reverse proxy. Keep the
|
|
1685
|
+
daemon listener private and configure the proxy separately with a certificate
|
|
1686
|
+
trusted by the client and matching the hostname. Node uses its normal trust
|
|
1687
|
+
store; a private CA may be supplied through `NODE_EXTRA_CA_CERTS` before starting
|
|
1688
|
+
the client. Certificate verification must remain enabled.
|
|
1689
|
+
|
|
1690
|
+
The existing issued client credential works over either transport; changing the
|
|
1691
|
+
URL scheme does not require a new credential. Keep the server's master on the
|
|
1692
|
+
server. Forward `x-ours-api-token` and the `x-ours-*` session headers unchanged,
|
|
1693
|
+
and support streamed request/response bodies and long polling. Client requests
|
|
1694
|
+
refuse redirects, including HTTPS-to-HTTP redirects: configure the final HTTPS
|
|
1695
|
+
origin directly. UUID/capability checks still precede credential-bearing calls.
|
|
1696
|
+
|
|
1697
|
+
This adds client HTTPS support, not an HTTPS daemon listener, certificate
|
|
1698
|
+
provisioning or automatic reverse-proxy configuration. Existing local HTTP and
|
|
1699
|
+
SSH-tunnel profiles continue to work.
|
|
@@ -118,7 +118,7 @@ export async function recoverAgentIdentity(session, identity) {
|
|
|
118
118
|
const unsubscribe = session.subscribeConversation(event => events.push(event));
|
|
119
119
|
try {
|
|
120
120
|
const queued = await session.queuePrompt([
|
|
121
|
-
'[fleet-recovery] The shared ours
|
|
121
|
+
'[fleet-recovery] The shared ours-daemon restarted.',
|
|
122
122
|
`Call ours choose_identity with name ${JSON.stringify(identity)} and force false.`,
|
|
123
123
|
'Then call current_identity, then get_messages. Complete all three in that order.',
|
|
124
124
|
'Do not create/delete identities, force-bind, interrupt, or restart any service/session.',
|
package/dist/build-info.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.0-nightly.
|
|
3
|
-
"buildId": "
|
|
4
|
-
"commit": "
|
|
2
|
+
"version": "1.2.0-nightly.3",
|
|
3
|
+
"buildId": "2a8eea26f2b1",
|
|
4
|
+
"commit": "892adea95e96f4b2a2e4adf850fe409fe1705eda",
|
|
5
5
|
"dirty": true,
|
|
6
|
-
"builtAt": "2026-09-
|
|
6
|
+
"builtAt": "2026-09-21T09:07:12.483Z",
|
|
7
7
|
"capabilities": [
|
|
8
8
|
"monitor.interrupt.after_tool"
|
|
9
9
|
]
|
package/dist/client-profile.js
CHANGED
|
@@ -97,9 +97,9 @@ export function readClientProfile(env) {
|
|
|
97
97
|
catch {
|
|
98
98
|
throw invalid(configPath, 'has an invalid endpoint');
|
|
99
99
|
}
|
|
100
|
-
if (url.protocol !== 'http:' || url.username || url.password || url.pathname !== '/'
|
|
100
|
+
if ((url.protocol !== 'http:' && url.protocol !== 'https:') || url.username || url.password || url.pathname !== '/'
|
|
101
101
|
|| url.search || url.hash)
|
|
102
|
-
throw invalid(configPath, 'endpoint must be
|
|
102
|
+
throw invalid(configPath, 'endpoint must be an HTTP or HTTPS origin');
|
|
103
103
|
const expectedInstanceId = row.expectedInstanceId.trim();
|
|
104
104
|
if (!LOWERCASE_UUID.test(expectedInstanceId))
|
|
105
105
|
throw invalid(configPath, 'expectedInstanceId must be a lowercase UUID');
|
package/dist/doctor.js
CHANGED
|
@@ -286,7 +286,7 @@ export async function doctor(opts = {}, exec = realExec, platform = process.plat
|
|
|
286
286
|
catch (error) {
|
|
287
287
|
checks.push({
|
|
288
288
|
name: 'ours daemon', ok: false,
|
|
289
|
-
detail: `not reachable through the SDK — start it with: ours
|
|
289
|
+
detail: `not reachable through the SDK — start it with: ours-daemon start `
|
|
290
290
|
+ `[${error?.message ?? String(error)}]`,
|
|
291
291
|
});
|
|
292
292
|
}
|
|
@@ -478,7 +478,7 @@ export async function doctor(opts = {}, exec = realExec, platform = process.plat
|
|
|
478
478
|
catch (e) {
|
|
479
479
|
const target = selected?.endpoint ?? `:${endpoint.port}`;
|
|
480
480
|
detail = `unreachable on ${target} — monitored roles run degraded until it is up ` +
|
|
481
|
-
`(start it: ours
|
|
481
|
+
`(start it: ours-daemon start) [${e?.message ?? e}]`;
|
|
482
482
|
}
|
|
483
483
|
checks.push({ name: checkName, ok, detail });
|
|
484
484
|
}
|
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.3",
|
|
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",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"@agentclientprotocol/sdk": "^1.3.0",
|
|
42
42
|
"@fastify/static": "^10.1.2",
|
|
43
43
|
"@fastify/websocket": "^11.2.0",
|
|
44
|
-
"@ours.network/cli": "2.8.1-nightly.
|
|
45
|
-
"@ours.network/sdk": "3.8.1-nightly.
|
|
44
|
+
"@ours.network/cli": "2.8.1-nightly.7",
|
|
45
|
+
"@ours.network/sdk": "3.8.1-nightly.9",
|
|
46
46
|
"commander": "^12.1.0",
|
|
47
47
|
"fastify": "^5.4.0",
|
|
48
48
|
"react": "^19.1.1",
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"@types/ws": "^8.18.1",
|
|
64
64
|
"typescript": "^5.5.0",
|
|
65
65
|
"vite": "^7.0.6",
|
|
66
|
-
"vitest": "^2.0.0"
|
|
66
|
+
"vitest": "^2.0.0",
|
|
67
|
+
"@ours.network/daemon": "3.8.1-nightly.1"
|
|
67
68
|
}
|
|
68
69
|
}
|