@ours.network/install 1.2.1-nightly.32 → 1.2.1-nightly.33

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 CHANGED
@@ -8,9 +8,9 @@ This permanent command contains no tunnel credentials or enrollment expiry. On a
8
8
 
9
9
  `--disable-fleet-agents-setup` installs the Fleet CLI and saves the choice without opening its agent/model wizard or rewriting existing Fleet configuration. Configure agents in the App after device linking. Complete presets still work unattended; partial presets require a terminal and cannot use `OURS_ASSUME_YES`.
10
10
 
11
- The separate `ours-fleet setup-tunnel --file /private/setup-payload` step requires the matching Fleet follow-up release. Its private App payload remains scoped, signed-root-bound and expiring. Then run `ours-fleet link-device` and paste its private single-use code into the App. Do not put the expiring tunnel payload in the permanent installer command.
11
+ The separate `ours-fleet setup-tunnel <encoded-v2-grant>` step is supported by the pinned Fleet release. Its private App payload remains scoped, signed-root-bound and expiring. Fleet prints its QR and private single-use connection code immediately after successful setup; scan or paste it into the App. `ours-fleet link-device` remains available for additional devices or expired codes. Do not put the expiring tunnel payload in the permanent installer command.
12
12
 
13
- Native packages currently provide server-only installation; full Fleet/App onboarding requires the supported gateway (Docker or Podman). The installer refuses unsupported native full-stack setup before changing anything. This PR does not add a native gateway or release unpublished Fleet commands.
13
+ Native packages currently provide server-only installation; full Fleet/App onboarding requires the supported gateway (Docker or Podman). The installer refuses unsupported native full-stack setup before changing anything. This flow does not add a native gateway.
14
14
 
15
15
  See [one-connection setup, localhost:4050 and systemd migration](GATEWAY_SETUP.md) for the gateway-only client workflow.
16
16
 
@@ -624,4 +624,27 @@ Existing installation records keep their ports and identities. A listener acquir
624
624
  by another process after preflight still causes startup to fail safely; no foreign
625
625
  process is stopped and no retained installation is silently moved.
626
626
 
627
- Workspace setup pins Fleet `1.2.0-nightly.41` with its recorded registry integrity. This release includes first-time Fleet setup through the host API for the account App, direct App access to the workspace services with the device credential, separate `ours-fleet setup-tunnel` and `ours-fleet link-device` commands, host prerequisite checks before the one-time workspace proof (`setup-tunnel --check`), `setup-tunnel --resume` to finish a setup that stopped after the host saved its private pending setup record (not when the proof's answer was lost, or after the setup window expired with an unconfirmed non-default port), and persists the available Fleet loopback port used by the workspace tunnel. It also accepts a setup-generated configuration left behind after the host enrollment state was removed, runs the host Codex when it is at least as new as the packaged one, offers only the Codex models the signed-in account can use, and removes the temporary setup contact after confirmation. Fleet serves no pages and opens no browser: every screen is in the App. Fleet also serves the workspace notification routes, produces notifications through the server gateway with the imported producer credential, accepts the App's device credential on the notification presence socket so an open App receives no push, and defaults agent wakes to `monitor.interrupt: after_tool` (Hermes: no interrupt; role snapshots saved before this default keep no interrupt). Existing installation identities and configured ports remain retained; a retained-port collision fails safely.
627
+ Workspace setup pins Fleet `1.2.0-nightly.44` with its recorded registry integrity. This release includes first-time Fleet setup through the host API for the account App, direct App access to the workspace services with the device credential, v2 positional one-use grants and automatic QR/connection-code output from `ours-fleet setup-tunnel`, optional private file/stdin inputs for legacy v1 payloads, a separate `ours-fleet link-device` command for additional devices, host prerequisite checks before the one-time workspace proof (`setup-tunnel --check`), `setup-tunnel --resume` to finish a setup that stopped after the host saved its private pending setup record (not when the proof's answer was lost, or after the setup window expired with an unconfirmed non-default port), and persists the available Fleet loopback port used by the workspace tunnel. It also accepts a setup-generated configuration left behind after the host enrollment state was removed, runs the host Codex when it is at least as new as the packaged one, offers only the Codex models the signed-in account can use, and removes the temporary setup contact after confirmation. Fleet serves no pages and opens no browser: every screen is in the App. Fleet also serves the workspace notification routes, produces notifications through the server gateway with the imported producer credential, accepts the App's device credential on the notification presence socket so an open App receives no push, and defaults agent wakes to `monitor.interrupt: after_tool` (Hermes: no interrupt; role snapshots saved before this default keep no interrupt). Existing installation identities and configured ports remain retained; a retained-port collision fails safely.
628
+
629
+ ### App tunnel setup prerelease sequencing
630
+
631
+ The simplified App flow shows one copyable `ours-fleet setup-tunnel <encoded-v2-grant>`
632
+ command for the installed host, including an SSH session on a VPS. Its argument
633
+ contains only the existing v2 single-use grant (`version`, `appOrigin`, `code`,
634
+ `expiresAt`), never a connector token or broad provider credential. The command can
635
+ appear in shell history and process listings: keep it private and remove it from
636
+ history after use. Base64 is encoding, not encryption. Server-side expiry and
637
+ one-time redemption remain enforced. Fleet checks prerequisites before HTTPS POST
638
+ redemption; it never prints the grant or puts it in a URL, and retains existing
639
+ signed-root binding and scoped connector token-file controls. It prints the QR and
640
+ connection code automatically; the App checks readiness and opens the code field.
641
+ Private `--file`/`--stdin` transports remain optional and are the only transports
642
+ for legacy v1 payloads with long-lived credentials.
643
+
644
+ The nightly installer release manifest selects published Fleet `1.2.0-nightly.44`
645
+ and its actual registry integrity through the normal release manifest/source-policy
646
+ generators. This release includes v2 argument and private-input support. The former
647
+ nightly.41 selection predates this capability. Merge and publish the repinned
648
+ installer before deploying the App; the pin change alone is not an installer
649
+ publication. Existing v1 private-file enrollment remains compatible. The legacy
650
+ App wrapper refuses an older Fleet before reading or redeeming its grant.
@@ -13,7 +13,7 @@
13
13
  "@ours.network/codex": "1.2.0-nightly.10",
14
14
  "@ours.network/cowork": "1.3.3-nightly.20261001.6d49d3a",
15
15
  "@ours.network/daemon": "3.8.1-nightly.7",
16
- "@ours.network/fleet": "1.2.0-nightly.41",
16
+ "@ours.network/fleet": "1.2.0-nightly.44",
17
17
  "@ours.network/mcp": "1.2.0-nightly.10",
18
18
  "@ours.network/messenger-server": "1.0.31-nightly.14",
19
19
  "@ours.network/notifications": "0.3.1-nightly.1",
@@ -712,9 +712,9 @@
712
712
  }
713
713
  },
714
714
  "node_modules/@fastify/websocket": {
715
- "version": "11.3.2",
716
- "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.3.2.tgz",
717
- "integrity": "sha512-WATdeYgpwf/3/AmKJ0TcP9dQtThJEeppbfgV5t2jkp4BJT6KgvKBgIK2sns/2xlyfoxZEiYkE4JBxH3PwVKkrw==",
715
+ "version": "11.3.3",
716
+ "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.3.3.tgz",
717
+ "integrity": "sha512-NBJoykKpFwrdX9Ezod1rt30p5NoPFu7vgeuUowSM3JVI5/hFNRPhetqkWMTiF/ifIzctwitbJut1gZ6FDg1mwQ==",
718
718
  "funding": [
719
719
  {
720
720
  "type": "github",
@@ -1001,9 +1001,9 @@
1001
1001
  }
1002
1002
  },
1003
1003
  "node_modules/@ours.network/fleet": {
1004
- "version": "1.2.0-nightly.41",
1005
- "resolved": "https://registry.npmjs.org/@ours.network/fleet/-/fleet-1.2.0-nightly.41.tgz",
1006
- "integrity": "sha512-7Ws+tGwSgoQVaAb0va6RNzs2lLH0TBJAOTWJn/rt4UcWJFDXzGyoWLgGou2KdKM9S54z4x0E7BGeRM5ZefLw9g==",
1004
+ "version": "1.2.0-nightly.44",
1005
+ "resolved": "https://registry.npmjs.org/@ours.network/fleet/-/fleet-1.2.0-nightly.44.tgz",
1006
+ "integrity": "sha512-kbtcb8cwqM4cIbEJyLAnG8sOxfrArtm676aex8IggYKQ+EqD487kp7IEJ3jGoVvEClJ8PE13cRolmyV9aSx7QA==",
1007
1007
  "license": "FSL-1.1-Apache-2.0",
1008
1008
  "dependencies": {
1009
1009
  "@agentclientprotocol/sdk": "^1.3.0",
@@ -2120,9 +2120,9 @@
2120
2120
  "license": "MIT"
2121
2121
  },
2122
2122
  "node_modules/hono": {
2123
- "version": "4.13.12",
2124
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.12.tgz",
2125
- "integrity": "sha512-6E2QDAc9Ick9Sq77ZrGS/dk2WUYni91aufTw6LJKpV7w8kW5/GxVUc650FOADOmlwg3K+f7Pun6XlV+pYmW6gw==",
2123
+ "version": "4.13.13",
2124
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.13.tgz",
2125
+ "integrity": "sha512-CQ46U0ZkAGmbT/4UxdzzGJpacP2IeKgY4a5/tOI9AABbpOMfK739wfDXmv1usCk+3RkKj1hQy4/fjhiwa2xlrA==",
2126
2126
  "license": "MIT",
2127
2127
  "engines": {
2128
2128
  "node": ">=16.9.0"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "channel": "nightly",
4
- "installerVersion": "1.2.1-nightly.32",
4
+ "installerVersion": "1.2.1-nightly.33",
5
5
  "packages": {
6
6
  "@ours.network/sdk": {
7
7
  "version": "3.8.1-nightly.15",
@@ -28,8 +28,8 @@
28
28
  "integrity": "sha512-rIkrtixoHqBfgCKDDCEYFl4W2Zzh0hOw3axX2+GppQ9gYkujKrk9M2KLGoYhu8RwwTMRl497jgMcTBe7UAHCgA=="
29
29
  },
30
30
  "@ours.network/fleet": {
31
- "version": "1.2.0-nightly.41",
32
- "integrity": "sha512-7Ws+tGwSgoQVaAb0va6RNzs2lLH0TBJAOTWJn/rt4UcWJFDXzGyoWLgGou2KdKM9S54z4x0E7BGeRM5ZefLw9g=="
31
+ "version": "1.2.0-nightly.44",
32
+ "integrity": "sha512-kbtcb8cwqM4cIbEJyLAnG8sOxfrArtm676aex8IggYKQ+EqD487kp7IEJ3jGoVvEClJ8PE13cRolmyV9aSx7QA=="
33
33
  },
34
34
  "@ours.network/mcp": {
35
35
  "version": "1.2.0-nightly.10",
@@ -2,7 +2,7 @@
2
2
  "release": {
3
3
  "schema": 1,
4
4
  "channel": "nightly",
5
- "installerVersion": "1.2.1-nightly.32",
5
+ "installerVersion": "1.2.1-nightly.33",
6
6
  "packages": {
7
7
  "@ours.network/sdk": {
8
8
  "version": "3.8.1-nightly.15",
@@ -29,8 +29,8 @@
29
29
  "integrity": "sha512-rIkrtixoHqBfgCKDDCEYFl4W2Zzh0hOw3axX2+GppQ9gYkujKrk9M2KLGoYhu8RwwTMRl497jgMcTBe7UAHCgA=="
30
30
  },
31
31
  "@ours.network/fleet": {
32
- "version": "1.2.0-nightly.41",
33
- "integrity": "sha512-7Ws+tGwSgoQVaAb0va6RNzs2lLH0TBJAOTWJn/rt4UcWJFDXzGyoWLgGou2KdKM9S54z4x0E7BGeRM5ZefLw9g=="
32
+ "version": "1.2.0-nightly.44",
33
+ "integrity": "sha512-kbtcb8cwqM4cIbEJyLAnG8sOxfrArtm676aex8IggYKQ+EqD487kp7IEJ3jGoVvEClJ8PE13cRolmyV9aSx7QA=="
34
34
  },
35
35
  "@ours.network/mcp": {
36
36
  "version": "1.2.0-nightly.10",
@@ -87,7 +87,7 @@
87
87
  },
88
88
  "@ours.network/fleet": {
89
89
  "type": "npm",
90
- "version": "1.2.0-nightly.41"
90
+ "version": "1.2.0-nightly.44"
91
91
  },
92
92
  "@ours.network/mcp": {
93
93
  "type": "npm",
package/lib/setup.mjs CHANGED
@@ -139,7 +139,7 @@ export async function executeSetupPlan(plan, effects, { server = runServerComman
139
139
  disableFleetAgentsSetup: plan.disableFleetAgentsSetup, preset: true, nonInteractive: !plan.interactive }, effects);
140
140
  if (result !== 0) return result;
141
141
  }
142
- if (plan.disableFleetAgentsSetup && plan.integrations?.includes('fleet')) effects.out(info('Fleet is installed. Run ours-fleet setup-tunnel with the private expiring App setup file, then ours-fleet link-device. Configure agents and models in the App after linking.'));
142
+ if (plan.disableFleetAgentsSetup && plan.integrations?.includes('fleet')) effects.out(info('Fleet is installed. Run ours-fleet setup-tunnel with the expiring one-use payload from the App command; a compatible Fleet prints the QR and connection code automatically. Configure agents and models in the App after linking.'));
143
143
  effects.out(ok(`Requested ${plan.operation} completed. Existing identities were retained.`));
144
144
  if (plan.integrations?.includes('fleet') && !plan.disableFleetAgentsSetup) effects.out(info('Fleet is configured but stopped. Review its settings, then run ours-fleet doctor, ours-fleet config and ours-fleet up.'));
145
145
  return 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ours.network/install",
3
- "version": "1.2.1-nightly.32",
3
+ "version": "1.2.1-nightly.33",
4
4
  "private": false,
5
5
  "description": "The all-in-one ours.network installer: one shared daemon, MCP, cowork, Telegram, Fleet initialization, harness plugins, Human identity, progress UI, and guided next steps.",
6
6
  "type": "module",