@ours.network/install 1.2.1-nightly.11 → 1.2.1-nightly.13

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
@@ -68,12 +68,12 @@ it. They exclude the daemon and its native database/ADAPT dependencies. Fleet
68
68
  runs beside the harnesses on the client machine and calls the daemon HTTP API.
69
69
  Client commands report an unavailable server and never start one automatically.
70
70
 
71
- The development policy selects published SDK `3.8.1-nightly.9`, CLI
72
- `2.8.1-nightly.7`, and daemon `3.8.1-nightly.1`, together with exact reviewed
73
- consumer source commits. The isolated host CLI pair uses these released client
74
- artifacts. The nightly release manifest selects the complete published consumer
75
- set and standalone daemon with verified SHA512 integrities. Packaged installers
76
- use this exact release set; mixed or unselected nested SDK versions remain rejected.
71
+ The checked-in source policy and packed installer select the same exact published
72
+ nightly release set, including SDK `3.8.1-nightly.10`, CLI `2.8.1-nightly.8`, and
73
+ daemon `3.8.1-nightly.2`. The isolated host CLI pair uses these released client
74
+ artifacts. `releases/nightly.json` binds the gateway-capable consumers and daemon
75
+ to verified SHA512 integrities. Mixed or unselected nested ours versions remain
76
+ rejected. An explicit `--sources` override remains available for development.
77
77
 
78
78
  ## Migrate an existing global installation
79
79
 
@@ -333,3 +333,113 @@ origin directly. UUID/capability checks still precede credential-bearing calls.
333
333
  This adds client HTTPS support, not an HTTPS daemon listener, certificate
334
334
  provisioning or automatic reverse-proxy configuration. Existing local HTTP and
335
335
  SSH-tunnel profiles continue to work.
336
+
337
+ ## One-URL Docker gateway
338
+
339
+ New Docker installations use one loopback-published nginx port (default 3050).
340
+ Clients import one `serverUrl`; their daemon endpoint is `<serverUrl>/daemon` and
341
+ Fleet derives `<serverUrl>/cowork/management/rpc`. Cowork, Messenger and Telegram
342
+ backend ports are internal only. Existing installations retain their prior layout
343
+ on ordinary install/update. Select compatible releases before explicitly migrating:
344
+
345
+ ```sh
346
+ ours-install server gateway-enable --state-dir /private/ours
347
+ ```
348
+
349
+ Migration checks the installed Cowork, Messenger and Telegram capabilities before
350
+ stopping services, verifies authenticated daemon and read-only Cowork management,
351
+ and preserves the existing credential and client integration settings. Failure
352
+ restores routing, client profile and prior service selection. An interrupted
353
+ migration blocks other mutations: repeat `gateway-enable` to finish rollback,
354
+ then run it again to attempt migration. The private `gateway-transition.json`
355
+ retains recovery state until rollback or migration completes. Back up the whole
356
+ installation using the normal server backup procedure before maintenance.
357
+
358
+ For a nested external URL, pass `--server-url https://ours.example/base` during
359
+ Docker install or `gateway-enable`. This sets browser origin and path configuration;
360
+ it does **not** publish a public listener, provide TLS, or install external
361
+ credentials. Configure the authenticated entry first and retain the `/base` path
362
+ when proxying. A compatible release must contain these capabilities:
363
+ `cowork.http-management-v1`, `messenger.gateway-prefix-v1`, and
364
+ `telegram.gateway-listener-v1`. Older releases are rejected without enabling the
365
+ new listener; no package version is silently substituted.
366
+
367
+ ### Authenticated external entry
368
+
369
+ Messenger has no application authentication. Loopback access trusts local users;
370
+ never forward this gateway publicly without authentication. All applications on
371
+ this origin share one trust boundary: scripts or XSS in any application can make
372
+ requests to the others. Cowork's entered server credential grants operator room
373
+ administration and stays in memory until reload. Path prefixes do not isolate
374
+ applications. Only expose this origin to trusted operators.
375
+
376
+ A supported external entry is nginx TLS plus HTTP Basic authentication for browser
377
+ paths, with machine paths left to their existing server-token checks. Create the
378
+ password file using an interactive `htpasswd` prompt and make it readable by the
379
+ proxy worker. Use real certificates and the matching `--server-url`. The inner
380
+ gateway remains bound to `127.0.0.1:3050`; neither backend ports nor the inner
381
+ listener should be externally forwarded. Example for `/base`:
382
+
383
+ ```nginx
384
+ # In http {}:
385
+ map $http_upgrade $ours_connection { default upgrade; '' close; }
386
+ server {
387
+ listen 443 ssl;
388
+ server_name ours.example;
389
+ ssl_certificate /private/tls/fullchain.pem;
390
+ ssl_certificate_key /private/tls/key.pem;
391
+ auth_basic "ours operators";
392
+ auth_basic_user_file /private/ours-users;
393
+ access_log off;
394
+ proxy_set_header Host $http_host;
395
+ proxy_set_header Upgrade $http_upgrade;
396
+ proxy_set_header Connection $ours_connection;
397
+ proxy_http_version 1.1;
398
+ proxy_read_timeout 300s;
399
+ proxy_buffering off;
400
+ location = /base/.well-known/ours { auth_basic off; proxy_pass http://127.0.0.1:3050; }
401
+ location /base/daemon/ { auth_basic off; proxy_pass http://127.0.0.1:3050; }
402
+ location = /base/cowork/management/rpc { auth_basic off; proxy_pass http://127.0.0.1:3050; }
403
+ location /base/tg-connector/ { auth_basic off; proxy_pass http://127.0.0.1:3050; }
404
+ location /base/ { proxy_pass http://127.0.0.1:3050; }
405
+ location / { return 404; }
406
+ }
407
+ ```
408
+
409
+ Browser requests include same-origin proxy credentials. Fleet/SDK use the issued
410
+ `X-Ours-Api-Token`, require no browser login, and reject redirects. An SSH tunnel
411
+ to the loopback gateway is another private transport option, but every client must
412
+ establish its own tunnel and use a URL/origin matching that tunnel; it is not
413
+ automatic remote access. Do not treat a token entered in Cowork as Messenger auth.
414
+
415
+ Publish compatible Cowork, Messenger, Telegram and Fleet artifacts before enabling
416
+ gateway defaults in a qualified installer release. Gateway client setup acquires
417
+ and checks Fleet before activating the managed profile or publishing native
418
+ commands. Migration also checks the installed `ours-fleet version --json`
419
+ capability before stopping services when the selected managed profile includes
420
+ Fleet. Upgrade that executable first. The gate does not inventory differently pinned
421
+ running Fleet instances or remote clients: upgrade every client using this server
422
+ to a compatible Fleet release before cutover.
423
+
424
+ ### Cross-repository gateway qualification
425
+
426
+ Build Cowork, Fleet, Messenger and Telegram checkouts with their locked dependencies.
427
+ The real-service test uses disposable local daemon state, a local test broker,
428
+ nginx Docker containers and Chromium; it never uses installed identities or tokens.
429
+ It requires Linux Docker host networking and `openssl`. Set:
430
+
431
+ ```sh
432
+ OURS_TEST_GATEWAY_SERVICES=1 \
433
+ OURS_TEST_COWORK_ROOT=/checkouts/ours-cowork \
434
+ OURS_TEST_FLEET_ROOT=/checkouts/ours-fleet \
435
+ OURS_TEST_MESSENGER_ROOT=/checkouts/ours-messenger-server \
436
+ OURS_TEST_TELEGRAM_ROOT=/checkouts/ours-tg-connector \
437
+ OURS_TEST_BROWSER=/opt/google/chrome/chrome \
438
+ node --test packages/installer/test/gateway-services.test.mjs
439
+ ```
440
+
441
+ Run `OURS_TEST_DOCKER=1 node --test packages/installer/test/gateway-docker.test.mjs`
442
+ separately for Compose port isolation with a client container. That routing test
443
+ uses echo upstreams; the real-service test covers Fleet room operations, browser
444
+ paths, external authentication and Messenger WebSocket access. Neither test is
445
+ cross-platform Docker Desktop qualification or a live deployment test.
@@ -0,0 +1,4 @@
1
+ FROM nginx:1.28-alpine@sha256:a8b39bd9cf0f83869a2162827a0caf6137ddf759d50a171451b335cecc87d236
2
+ COPY --chmod=644 nginx.conf /etc/nginx/nginx.conf
3
+ USER 101:101
4
+ ENTRYPOINT ["nginx", "-g", "daemon off;"]
@@ -8,16 +8,16 @@
8
8
  "name": "ours-release-set-verification",
9
9
  "version": "0.0.0",
10
10
  "dependencies": {
11
- "@ours.network/claude-code": "1.2.0-nightly.6",
12
- "@ours.network/cli": "2.8.1-nightly.8",
13
- "@ours.network/codex": "1.2.0-nightly.6",
14
- "@ours.network/cowork": "1.3.2-nightly.20260921.4b9a45e",
15
- "@ours.network/daemon": "3.8.1-nightly.2",
16
- "@ours.network/fleet": "1.2.0-nightly.4",
17
- "@ours.network/mcp": "1.2.0-nightly.6",
18
- "@ours.network/messenger-server": "1.0.31-nightly.4",
19
- "@ours.network/sdk": "3.8.1-nightly.10",
20
- "@ours.network/tg-connector": "1.0.1-nightly.4"
11
+ "@ours.network/claude-code": "1.2.0-nightly.7",
12
+ "@ours.network/cli": "2.8.1-nightly.9",
13
+ "@ours.network/codex": "1.2.0-nightly.7",
14
+ "@ours.network/cowork": "1.3.3-nightly.20260923.2d2ff89",
15
+ "@ours.network/daemon": "3.8.1-nightly.3",
16
+ "@ours.network/fleet": "1.2.0-nightly.6",
17
+ "@ours.network/mcp": "1.2.0-nightly.7",
18
+ "@ours.network/messenger-server": "1.0.31-nightly.6",
19
+ "@ours.network/sdk": "3.8.1-nightly.11",
20
+ "@ours.network/tg-connector": "1.0.1-nightly.6"
21
21
  }
22
22
  },
23
23
  "node_modules/@adapt-toolkit/sdk": {
@@ -566,9 +566,9 @@
566
566
  ]
567
567
  },
568
568
  "node_modules/@anthropic-ai/sdk": {
569
- "version": "0.127.0",
570
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.127.0.tgz",
571
- "integrity": "sha512-OKiVbG9LHCxjn4fBJZJFy/Bz3hqE1RYpwaeSEDNheQnvz0XNKmGT/Lhkz2Sf1a27Ldt3vVv+BkU81I0U/8EpoQ==",
569
+ "version": "0.128.0",
570
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.128.0.tgz",
571
+ "integrity": "sha512-tl5cBFZC1jVFrTuQyvQObA4WmuNgcYVeXfriqOumgtLAHUm4gPUj18YnszBW60v0PrjDB8nBDOC6wd9CmHQFlA==",
572
572
  "license": "MIT",
573
573
  "optional": true,
574
574
  "peer": true,
@@ -1052,14 +1052,14 @@
1052
1052
  }
1053
1053
  },
1054
1054
  "node_modules/@ours.network/claude-code": {
1055
- "version": "1.2.0-nightly.6",
1056
- "resolved": "https://registry.npmjs.org/@ours.network/claude-code/-/claude-code-1.2.0-nightly.6.tgz",
1057
- "integrity": "sha512-Xt7mQw3R4yyhkExMsj9nvZX1dEXgpgYAKhgBfylAgA+nJ+2f4tgjwuIg+6fQEiMjq4mTNs0JUkkw2Kh6Hwn/PQ==",
1055
+ "version": "1.2.0-nightly.7",
1056
+ "resolved": "https://registry.npmjs.org/@ours.network/claude-code/-/claude-code-1.2.0-nightly.7.tgz",
1057
+ "integrity": "sha512-3k8xcb9dd9o/p+xXWEmezo53lBNXj3toHhLxhMnqeNRv73abTFCEqQy50TjSRGZSqTr4yi2FmHEium7YuKvmqA==",
1058
1058
  "license": "FSL-1.1-Apache-2.0",
1059
1059
  "dependencies": {
1060
1060
  "@modelcontextprotocol/sdk": "^1.29.0",
1061
- "@ours.network/mcp": "1.2.0-nightly.6",
1062
- "@ours.network/sdk": "3.8.1-nightly.10",
1061
+ "@ours.network/mcp": "1.2.0-nightly.7",
1062
+ "@ours.network/sdk": "3.8.1-nightly.11",
1063
1063
  "ws": "^8.21.0",
1064
1064
  "zod": "^3.25.76"
1065
1065
  },
@@ -1068,12 +1068,12 @@
1068
1068
  }
1069
1069
  },
1070
1070
  "node_modules/@ours.network/cli": {
1071
- "version": "2.8.1-nightly.8",
1072
- "resolved": "https://registry.npmjs.org/@ours.network/cli/-/cli-2.8.1-nightly.8.tgz",
1073
- "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg==",
1071
+ "version": "2.8.1-nightly.9",
1072
+ "resolved": "https://registry.npmjs.org/@ours.network/cli/-/cli-2.8.1-nightly.9.tgz",
1073
+ "integrity": "sha512-vC6E2Tjgje2yJrw5WdSDEH/rt8YWphk1jLjao0Ie2gz+1oyNiAd9Q8VfFZGDSFa7p5xlVRTZzmOgybJuKbabew==",
1074
1074
  "license": "FSL-1.1-Apache-2.0",
1075
1075
  "dependencies": {
1076
- "@ours.network/sdk": "3.8.1-nightly.10"
1076
+ "@ours.network/sdk": "3.8.1-nightly.11"
1077
1077
  },
1078
1078
  "bin": {
1079
1079
  "ours": "dist/cli.js"
@@ -1083,14 +1083,14 @@
1083
1083
  }
1084
1084
  },
1085
1085
  "node_modules/@ours.network/codex": {
1086
- "version": "1.2.0-nightly.6",
1087
- "resolved": "https://registry.npmjs.org/@ours.network/codex/-/codex-1.2.0-nightly.6.tgz",
1088
- "integrity": "sha512-Ckv6aqsDkrTWKCcuFCR1Yzc0h50pR0q9ICLgyiFVmfKStXQh8j4D6cNT2wKayQHMCo1T+wkyKLgBXrIdpPDc8A==",
1086
+ "version": "1.2.0-nightly.7",
1087
+ "resolved": "https://registry.npmjs.org/@ours.network/codex/-/codex-1.2.0-nightly.7.tgz",
1088
+ "integrity": "sha512-6BhRYNI/usYxxAQm3BKsQJD6QvrWOLZ3CjscAJZC35wKft3YC6ejDZ7AV5YdfDM2UcEc/LpcLej4GVkh0ZDRWA==",
1089
1089
  "license": "FSL-1.1-Apache-2.0",
1090
1090
  "dependencies": {
1091
1091
  "@modelcontextprotocol/sdk": "^1.29.0",
1092
- "@ours.network/mcp": "1.2.0-nightly.6",
1093
- "@ours.network/sdk": "3.8.1-nightly.10",
1092
+ "@ours.network/mcp": "1.2.0-nightly.7",
1093
+ "@ours.network/sdk": "3.8.1-nightly.11",
1094
1094
  "ws": "^8.21.0",
1095
1095
  "zod": "^3.25.76"
1096
1096
  },
@@ -1103,12 +1103,12 @@
1103
1103
  }
1104
1104
  },
1105
1105
  "node_modules/@ours.network/cowork": {
1106
- "version": "1.3.2-nightly.20260921.4b9a45e",
1107
- "resolved": "https://registry.npmjs.org/@ours.network/cowork/-/cowork-1.3.2-nightly.20260921.4b9a45e.tgz",
1108
- "integrity": "sha512-RWhWpthIl3yU7aU5TdwJvdSAFQQYyKFrTNrtFxk/P0CBxLegfT3ILYRn4Pl1SR1ToIACXvKQc3DpBT6ifFhuVA==",
1106
+ "version": "1.3.3-nightly.20260923.2d2ff89",
1107
+ "resolved": "https://registry.npmjs.org/@ours.network/cowork/-/cowork-1.3.3-nightly.20260923.2d2ff89.tgz",
1108
+ "integrity": "sha512-0dwh40D7mSfx2qg25wQsy83ed5IZR5DSOXi1libYqWdtFOznfGcp3H14T+0oEJPeRdae1kT9bzS3q3RCrUsg/A==",
1109
1109
  "license": "FSL-1.1-Apache-2.0",
1110
1110
  "dependencies": {
1111
- "@ours.network/sdk": "3.8.1-nightly.10",
1111
+ "@ours.network/sdk": "3.8.1-nightly.11",
1112
1112
  "ajv": "8.20.0",
1113
1113
  "better-sqlite3": "13.0.3",
1114
1114
  "react": "18.3.1",
@@ -1123,14 +1123,14 @@
1123
1123
  }
1124
1124
  },
1125
1125
  "node_modules/@ours.network/daemon": {
1126
- "version": "3.8.1-nightly.2",
1127
- "resolved": "https://registry.npmjs.org/@ours.network/daemon/-/daemon-3.8.1-nightly.2.tgz",
1128
- "integrity": "sha512-QgQJJm9xNLtpMBKOK1iXyDxJxwsKkVZdJPNDY9ptYnV4QJWasYii+EIcTPbYY4w/Apr8Fpbi1k9eUMiinft3eg==",
1126
+ "version": "3.8.1-nightly.3",
1127
+ "resolved": "https://registry.npmjs.org/@ours.network/daemon/-/daemon-3.8.1-nightly.3.tgz",
1128
+ "integrity": "sha512-PHtaqjXGUphqX/18YigPa3rcfXmMcgkFLi0eCNlJWIZ16IiMSz1WiLXhmYHPIw1AD/Ng5TqQJ9jZZo28AGRdQw==",
1129
1129
  "license": "FSL-1.1-Apache-2.0",
1130
1130
  "dependencies": {
1131
1131
  "@adapt-toolkit/sdk": "0.10.13-nightly.1",
1132
1132
  "@adapt-toolkit/sdk-native": "0.10.13-nightly.1",
1133
- "@ours.network/sdk": "3.8.1-nightly.10",
1133
+ "@ours.network/sdk": "3.8.1-nightly.11",
1134
1134
  "ajv": "^8.20.0",
1135
1135
  "pg": "^8.16.3"
1136
1136
  },
@@ -1145,17 +1145,17 @@
1145
1145
  }
1146
1146
  },
1147
1147
  "node_modules/@ours.network/fleet": {
1148
- "version": "1.2.0-nightly.4",
1149
- "resolved": "https://registry.npmjs.org/@ours.network/fleet/-/fleet-1.2.0-nightly.4.tgz",
1150
- "integrity": "sha512-8BNjKSv4kjrnqrnRxEQnTR8nTqiLyrqTT3GPA6JTiH8xftfMCTkGQLK3xhwRYWQHihG3QPnJ+du/ljtFrtlUUA==",
1148
+ "version": "1.2.0-nightly.6",
1149
+ "resolved": "https://registry.npmjs.org/@ours.network/fleet/-/fleet-1.2.0-nightly.6.tgz",
1150
+ "integrity": "sha512-BAPTdAgltpJJ7emxu66JJIrQVRjTfWnorDBSDK+Kvpp1FCxZFCLYr1rfA5+PJ9SO8ElqJBWBLCxcyQUv9NpmZg==",
1151
1151
  "license": "FSL-1.1-Apache-2.0",
1152
1152
  "dependencies": {
1153
1153
  "@agentclientprotocol/sdk": "^1.3.0",
1154
1154
  "@fastify/static": "^10.1.2",
1155
1155
  "@fastify/websocket": "^11.2.0",
1156
- "@ours.network/cli": "2.8.1-nightly.8",
1157
- "@ours.network/mcp": "1.2.0-nightly.6",
1158
- "@ours.network/sdk": "3.8.1-nightly.10",
1156
+ "@ours.network/cli": "2.8.1-nightly.9",
1157
+ "@ours.network/mcp": "1.2.0-nightly.7",
1158
+ "@ours.network/sdk": "3.8.1-nightly.11",
1159
1159
  "commander": "^12.1.0",
1160
1160
  "fastify": "^5.4.0",
1161
1161
  "react": "^19.1.1",
@@ -1203,13 +1203,13 @@
1203
1203
  "license": "MIT"
1204
1204
  },
1205
1205
  "node_modules/@ours.network/mcp": {
1206
- "version": "1.2.0-nightly.6",
1207
- "resolved": "https://registry.npmjs.org/@ours.network/mcp/-/mcp-1.2.0-nightly.6.tgz",
1208
- "integrity": "sha512-GzZ2u8U3Al76rVd2BY8/Shqy5myDxGY7bvuKlVeNwJBohszqza1Qre49CYx3rV+WnOVwcJkWlb8irxWK30MzwQ==",
1206
+ "version": "1.2.0-nightly.7",
1207
+ "resolved": "https://registry.npmjs.org/@ours.network/mcp/-/mcp-1.2.0-nightly.7.tgz",
1208
+ "integrity": "sha512-E9x7abO9BXt4MBSnsYh2m0A2E/xmhJHhsgoMLwoGunY6zhIiBx8SNejKPCLXLI+JXUw7nozptcTipBMpqhKqYA==",
1209
1209
  "license": "FSL-1.1-Apache-2.0",
1210
1210
  "dependencies": {
1211
1211
  "@modelcontextprotocol/sdk": "^1.0.4",
1212
- "@ours.network/sdk": "3.8.1-nightly.10",
1212
+ "@ours.network/sdk": "3.8.1-nightly.11",
1213
1213
  "zod": "^3.23.8"
1214
1214
  },
1215
1215
  "bin": {
@@ -1220,14 +1220,14 @@
1220
1220
  }
1221
1221
  },
1222
1222
  "node_modules/@ours.network/messenger-server": {
1223
- "version": "1.0.31-nightly.4",
1224
- "resolved": "https://registry.npmjs.org/@ours.network/messenger-server/-/messenger-server-1.0.31-nightly.4.tgz",
1225
- "integrity": "sha512-YuMUBzCvHjUchoITtugj9Oj50TojPQd/lR2VfrqgiZUbVnG1hNZVvcSF/qIrLUB/1wrBcXHbPdX+tNvET5dCmQ==",
1223
+ "version": "1.0.31-nightly.6",
1224
+ "resolved": "https://registry.npmjs.org/@ours.network/messenger-server/-/messenger-server-1.0.31-nightly.6.tgz",
1225
+ "integrity": "sha512-enlos6BWfKiHdUNLRoPMzb0yfxRLWvfxH6uNaOjfAG88BK5qo74hQLwQ7CR4HbVE6OCDAGPLBe1BV7dQSRsbxw==",
1226
1226
  "license": "FSL-1.1-Apache-2.0",
1227
1227
  "dependencies": {
1228
1228
  "@eslint-community/regexpp": "4.12.2",
1229
1229
  "@fontsource-variable/jetbrains-mono": "^5.3.0",
1230
- "@ours.network/sdk": "3.8.1-nightly.10",
1230
+ "@ours.network/sdk": "3.8.1-nightly.11",
1231
1231
  "@radix-ui/react-dialog": "^1.1.23",
1232
1232
  "framer-motion": "^12.43.0",
1233
1233
  "jsqr": "^1.4.0",
@@ -1253,9 +1253,9 @@
1253
1253
  }
1254
1254
  },
1255
1255
  "node_modules/@ours.network/sdk": {
1256
- "version": "3.8.1-nightly.10",
1257
- "resolved": "https://registry.npmjs.org/@ours.network/sdk/-/sdk-3.8.1-nightly.10.tgz",
1258
- "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw==",
1256
+ "version": "3.8.1-nightly.11",
1257
+ "resolved": "https://registry.npmjs.org/@ours.network/sdk/-/sdk-3.8.1-nightly.11.tgz",
1258
+ "integrity": "sha512-dGiMUFXdZLzdwo0U2ilBTanG/aSBfUwfIkicGgCV2gQ710DYcWny9yqRAPCErw0zrh4sspm0HsWEUP/Q+Y/Q9g==",
1259
1259
  "license": "FSL-1.1-Apache-2.0",
1260
1260
  "workspaces": [
1261
1261
  ".",
@@ -1266,12 +1266,12 @@
1266
1266
  }
1267
1267
  },
1268
1268
  "node_modules/@ours.network/tg-connector": {
1269
- "version": "1.0.1-nightly.4",
1270
- "resolved": "https://registry.npmjs.org/@ours.network/tg-connector/-/tg-connector-1.0.1-nightly.4.tgz",
1271
- "integrity": "sha512-PN4kwCU45NKKoE+mkmFxrhpzY5dYEtjDK6pmQqNqnHFUHDSnoBHACIuUITqtbqeG+srnRGpSQwu9gSbDmcFiaw==",
1269
+ "version": "1.0.1-nightly.6",
1270
+ "resolved": "https://registry.npmjs.org/@ours.network/tg-connector/-/tg-connector-1.0.1-nightly.6.tgz",
1271
+ "integrity": "sha512-ywgwHm59UotZJanvBj3fp0cjwcX3BC+sP+0UU0+P32Qdrl53DKKi6VAt0xleBmUmC874sWc4tW9y4J/Sg/cCOA==",
1272
1272
  "license": "FSL-1.1-Apache-2.0",
1273
1273
  "dependencies": {
1274
- "@ours.network/sdk": "3.8.1-nightly.10",
1274
+ "@ours.network/sdk": "3.8.1-nightly.11",
1275
1275
  "undici": "^7.28.0"
1276
1276
  },
1277
1277
  "bin": {
@@ -1,57 +1,57 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "channel": "nightly",
4
- "installerVersion": "1.2.1-nightly.11",
4
+ "installerVersion": "1.2.1-nightly.13",
5
5
  "packages": {
6
6
  "@ours.network/sdk": {
7
- "version": "3.8.1-nightly.10",
8
- "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
7
+ "version": "3.8.1-nightly.11",
8
+ "integrity": "sha512-dGiMUFXdZLzdwo0U2ilBTanG/aSBfUwfIkicGgCV2gQ710DYcWny9yqRAPCErw0zrh4sspm0HsWEUP/Q+Y/Q9g=="
9
9
  },
10
10
  "@ours.network/cli": {
11
- "version": "2.8.1-nightly.8",
12
- "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
11
+ "version": "2.8.1-nightly.9",
12
+ "integrity": "sha512-vC6E2Tjgje2yJrw5WdSDEH/rt8YWphk1jLjao0Ie2gz+1oyNiAd9Q8VfFZGDSFa7p5xlVRTZzmOgybJuKbabew=="
13
13
  },
14
14
  "@ours.network/tg-connector": {
15
- "version": "1.0.1-nightly.4",
16
- "integrity": "sha512-PN4kwCU45NKKoE+mkmFxrhpzY5dYEtjDK6pmQqNqnHFUHDSnoBHACIuUITqtbqeG+srnRGpSQwu9gSbDmcFiaw=="
15
+ "version": "1.0.1-nightly.6",
16
+ "integrity": "sha512-ywgwHm59UotZJanvBj3fp0cjwcX3BC+sP+0UU0+P32Qdrl53DKKi6VAt0xleBmUmC874sWc4tW9y4J/Sg/cCOA=="
17
17
  },
18
18
  "@ours.network/cowork": {
19
- "version": "1.3.2-nightly.20260921.4b9a45e",
20
- "integrity": "sha512-RWhWpthIl3yU7aU5TdwJvdSAFQQYyKFrTNrtFxk/P0CBxLegfT3ILYRn4Pl1SR1ToIACXvKQc3DpBT6ifFhuVA=="
19
+ "version": "1.3.3-nightly.20260923.2d2ff89",
20
+ "integrity": "sha512-0dwh40D7mSfx2qg25wQsy83ed5IZR5DSOXi1libYqWdtFOznfGcp3H14T+0oEJPeRdae1kT9bzS3q3RCrUsg/A=="
21
21
  },
22
22
  "@ours.network/messenger-server": {
23
- "version": "1.0.31-nightly.4",
24
- "integrity": "sha512-YuMUBzCvHjUchoITtugj9Oj50TojPQd/lR2VfrqgiZUbVnG1hNZVvcSF/qIrLUB/1wrBcXHbPdX+tNvET5dCmQ=="
23
+ "version": "1.0.31-nightly.6",
24
+ "integrity": "sha512-enlos6BWfKiHdUNLRoPMzb0yfxRLWvfxH6uNaOjfAG88BK5qo74hQLwQ7CR4HbVE6OCDAGPLBe1BV7dQSRsbxw=="
25
25
  },
26
26
  "@ours.network/fleet": {
27
- "version": "1.2.0-nightly.4",
28
- "integrity": "sha512-8BNjKSv4kjrnqrnRxEQnTR8nTqiLyrqTT3GPA6JTiH8xftfMCTkGQLK3xhwRYWQHihG3QPnJ+du/ljtFrtlUUA=="
27
+ "version": "1.2.0-nightly.6",
28
+ "integrity": "sha512-BAPTdAgltpJJ7emxu66JJIrQVRjTfWnorDBSDK+Kvpp1FCxZFCLYr1rfA5+PJ9SO8ElqJBWBLCxcyQUv9NpmZg=="
29
29
  },
30
30
  "@ours.network/mcp": {
31
- "version": "1.2.0-nightly.6",
32
- "integrity": "sha512-GzZ2u8U3Al76rVd2BY8/Shqy5myDxGY7bvuKlVeNwJBohszqza1Qre49CYx3rV+WnOVwcJkWlb8irxWK30MzwQ=="
31
+ "version": "1.2.0-nightly.7",
32
+ "integrity": "sha512-E9x7abO9BXt4MBSnsYh2m0A2E/xmhJHhsgoMLwoGunY6zhIiBx8SNejKPCLXLI+JXUw7nozptcTipBMpqhKqYA=="
33
33
  },
34
34
  "@ours.network/codex": {
35
- "version": "1.2.0-nightly.6",
36
- "integrity": "sha512-Ckv6aqsDkrTWKCcuFCR1Yzc0h50pR0q9ICLgyiFVmfKStXQh8j4D6cNT2wKayQHMCo1T+wkyKLgBXrIdpPDc8A=="
35
+ "version": "1.2.0-nightly.7",
36
+ "integrity": "sha512-6BhRYNI/usYxxAQm3BKsQJD6QvrWOLZ3CjscAJZC35wKft3YC6ejDZ7AV5YdfDM2UcEc/LpcLej4GVkh0ZDRWA=="
37
37
  },
38
38
  "@ours.network/claude-code": {
39
- "version": "1.2.0-nightly.6",
40
- "integrity": "sha512-Xt7mQw3R4yyhkExMsj9nvZX1dEXgpgYAKhgBfylAgA+nJ+2f4tgjwuIg+6fQEiMjq4mTNs0JUkkw2Kh6Hwn/PQ=="
39
+ "version": "1.2.0-nightly.7",
40
+ "integrity": "sha512-3k8xcb9dd9o/p+xXWEmezo53lBNXj3toHhLxhMnqeNRv73abTFCEqQy50TjSRGZSqTr4yi2FmHEium7YuKvmqA=="
41
41
  },
42
42
  "@ours.network/daemon": {
43
- "version": "3.8.1-nightly.2",
44
- "integrity": "sha512-QgQJJm9xNLtpMBKOK1iXyDxJxwsKkVZdJPNDY9ptYnV4QJWasYii+EIcTPbYY4w/Apr8Fpbi1k9eUMiinft3eg=="
43
+ "version": "3.8.1-nightly.3",
44
+ "integrity": "sha512-PHtaqjXGUphqX/18YigPa3rcfXmMcgkFLi0eCNlJWIZ16IiMSz1WiLXhmYHPIw1AD/Ng5TqQJ9jZZo28AGRdQw=="
45
45
  }
46
46
  },
47
47
  "hostCli": {
48
48
  "@ours.network/sdk": {
49
- "version": "3.8.1-nightly.10",
50
- "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
49
+ "version": "3.8.1-nightly.11",
50
+ "integrity": "sha512-dGiMUFXdZLzdwo0U2ilBTanG/aSBfUwfIkicGgCV2gQ710DYcWny9yqRAPCErw0zrh4sspm0HsWEUP/Q+Y/Q9g=="
51
51
  },
52
52
  "@ours.network/cli": {
53
- "version": "2.8.1-nightly.8",
54
- "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
53
+ "version": "2.8.1-nightly.9",
54
+ "integrity": "sha512-vC6E2Tjgje2yJrw5WdSDEH/rt8YWphk1jLjao0Ie2gz+1oyNiAd9Q8VfFZGDSFa7p5xlVRTZzmOgybJuKbabew=="
55
55
  }
56
56
  }
57
57
  }
@@ -2,100 +2,100 @@
2
2
  "release": {
3
3
  "schema": 1,
4
4
  "channel": "nightly",
5
- "installerVersion": "1.2.1-nightly.11",
5
+ "installerVersion": "1.2.1-nightly.13",
6
6
  "packages": {
7
7
  "@ours.network/sdk": {
8
- "version": "3.8.1-nightly.10",
9
- "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
8
+ "version": "3.8.1-nightly.11",
9
+ "integrity": "sha512-dGiMUFXdZLzdwo0U2ilBTanG/aSBfUwfIkicGgCV2gQ710DYcWny9yqRAPCErw0zrh4sspm0HsWEUP/Q+Y/Q9g=="
10
10
  },
11
11
  "@ours.network/cli": {
12
- "version": "2.8.1-nightly.8",
13
- "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
12
+ "version": "2.8.1-nightly.9",
13
+ "integrity": "sha512-vC6E2Tjgje2yJrw5WdSDEH/rt8YWphk1jLjao0Ie2gz+1oyNiAd9Q8VfFZGDSFa7p5xlVRTZzmOgybJuKbabew=="
14
14
  },
15
15
  "@ours.network/tg-connector": {
16
- "version": "1.0.1-nightly.4",
17
- "integrity": "sha512-PN4kwCU45NKKoE+mkmFxrhpzY5dYEtjDK6pmQqNqnHFUHDSnoBHACIuUITqtbqeG+srnRGpSQwu9gSbDmcFiaw=="
16
+ "version": "1.0.1-nightly.6",
17
+ "integrity": "sha512-ywgwHm59UotZJanvBj3fp0cjwcX3BC+sP+0UU0+P32Qdrl53DKKi6VAt0xleBmUmC874sWc4tW9y4J/Sg/cCOA=="
18
18
  },
19
19
  "@ours.network/cowork": {
20
- "version": "1.3.2-nightly.20260921.4b9a45e",
21
- "integrity": "sha512-RWhWpthIl3yU7aU5TdwJvdSAFQQYyKFrTNrtFxk/P0CBxLegfT3ILYRn4Pl1SR1ToIACXvKQc3DpBT6ifFhuVA=="
20
+ "version": "1.3.3-nightly.20260923.2d2ff89",
21
+ "integrity": "sha512-0dwh40D7mSfx2qg25wQsy83ed5IZR5DSOXi1libYqWdtFOznfGcp3H14T+0oEJPeRdae1kT9bzS3q3RCrUsg/A=="
22
22
  },
23
23
  "@ours.network/messenger-server": {
24
- "version": "1.0.31-nightly.4",
25
- "integrity": "sha512-YuMUBzCvHjUchoITtugj9Oj50TojPQd/lR2VfrqgiZUbVnG1hNZVvcSF/qIrLUB/1wrBcXHbPdX+tNvET5dCmQ=="
24
+ "version": "1.0.31-nightly.6",
25
+ "integrity": "sha512-enlos6BWfKiHdUNLRoPMzb0yfxRLWvfxH6uNaOjfAG88BK5qo74hQLwQ7CR4HbVE6OCDAGPLBe1BV7dQSRsbxw=="
26
26
  },
27
27
  "@ours.network/fleet": {
28
- "version": "1.2.0-nightly.4",
29
- "integrity": "sha512-8BNjKSv4kjrnqrnRxEQnTR8nTqiLyrqTT3GPA6JTiH8xftfMCTkGQLK3xhwRYWQHihG3QPnJ+du/ljtFrtlUUA=="
28
+ "version": "1.2.0-nightly.6",
29
+ "integrity": "sha512-BAPTdAgltpJJ7emxu66JJIrQVRjTfWnorDBSDK+Kvpp1FCxZFCLYr1rfA5+PJ9SO8ElqJBWBLCxcyQUv9NpmZg=="
30
30
  },
31
31
  "@ours.network/mcp": {
32
- "version": "1.2.0-nightly.6",
33
- "integrity": "sha512-GzZ2u8U3Al76rVd2BY8/Shqy5myDxGY7bvuKlVeNwJBohszqza1Qre49CYx3rV+WnOVwcJkWlb8irxWK30MzwQ=="
32
+ "version": "1.2.0-nightly.7",
33
+ "integrity": "sha512-E9x7abO9BXt4MBSnsYh2m0A2E/xmhJHhsgoMLwoGunY6zhIiBx8SNejKPCLXLI+JXUw7nozptcTipBMpqhKqYA=="
34
34
  },
35
35
  "@ours.network/codex": {
36
- "version": "1.2.0-nightly.6",
37
- "integrity": "sha512-Ckv6aqsDkrTWKCcuFCR1Yzc0h50pR0q9ICLgyiFVmfKStXQh8j4D6cNT2wKayQHMCo1T+wkyKLgBXrIdpPDc8A=="
36
+ "version": "1.2.0-nightly.7",
37
+ "integrity": "sha512-6BhRYNI/usYxxAQm3BKsQJD6QvrWOLZ3CjscAJZC35wKft3YC6ejDZ7AV5YdfDM2UcEc/LpcLej4GVkh0ZDRWA=="
38
38
  },
39
39
  "@ours.network/claude-code": {
40
- "version": "1.2.0-nightly.6",
41
- "integrity": "sha512-Xt7mQw3R4yyhkExMsj9nvZX1dEXgpgYAKhgBfylAgA+nJ+2f4tgjwuIg+6fQEiMjq4mTNs0JUkkw2Kh6Hwn/PQ=="
40
+ "version": "1.2.0-nightly.7",
41
+ "integrity": "sha512-3k8xcb9dd9o/p+xXWEmezo53lBNXj3toHhLxhMnqeNRv73abTFCEqQy50TjSRGZSqTr4yi2FmHEium7YuKvmqA=="
42
42
  },
43
43
  "@ours.network/daemon": {
44
- "version": "3.8.1-nightly.2",
45
- "integrity": "sha512-QgQJJm9xNLtpMBKOK1iXyDxJxwsKkVZdJPNDY9ptYnV4QJWasYii+EIcTPbYY4w/Apr8Fpbi1k9eUMiinft3eg=="
44
+ "version": "3.8.1-nightly.3",
45
+ "integrity": "sha512-PHtaqjXGUphqX/18YigPa3rcfXmMcgkFLi0eCNlJWIZ16IiMSz1WiLXhmYHPIw1AD/Ng5TqQJ9jZZo28AGRdQw=="
46
46
  }
47
47
  },
48
48
  "hostCli": {
49
49
  "@ours.network/sdk": {
50
- "version": "3.8.1-nightly.10",
51
- "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
50
+ "version": "3.8.1-nightly.11",
51
+ "integrity": "sha512-dGiMUFXdZLzdwo0U2ilBTanG/aSBfUwfIkicGgCV2gQ710DYcWny9yqRAPCErw0zrh4sspm0HsWEUP/Q+Y/Q9g=="
52
52
  },
53
53
  "@ours.network/cli": {
54
- "version": "2.8.1-nightly.8",
55
- "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
54
+ "version": "2.8.1-nightly.9",
55
+ "integrity": "sha512-vC6E2Tjgje2yJrw5WdSDEH/rt8YWphk1jLjao0Ie2gz+1oyNiAd9Q8VfFZGDSFa7p5xlVRTZzmOgybJuKbabew=="
56
56
  }
57
57
  }
58
58
  },
59
59
  "packages": {
60
60
  "@ours.network/sdk": {
61
61
  "type": "npm",
62
- "version": "3.8.1-nightly.10"
62
+ "version": "3.8.1-nightly.11"
63
63
  },
64
64
  "@ours.network/cli": {
65
65
  "type": "npm",
66
- "version": "2.8.1-nightly.8"
66
+ "version": "2.8.1-nightly.9"
67
67
  },
68
68
  "@ours.network/tg-connector": {
69
69
  "type": "npm",
70
- "version": "1.0.1-nightly.4"
70
+ "version": "1.0.1-nightly.6"
71
71
  },
72
72
  "@ours.network/cowork": {
73
73
  "type": "npm",
74
- "version": "1.3.2-nightly.20260921.4b9a45e"
74
+ "version": "1.3.3-nightly.20260923.2d2ff89"
75
75
  },
76
76
  "@ours.network/messenger-server": {
77
77
  "type": "npm",
78
- "version": "1.0.31-nightly.4"
78
+ "version": "1.0.31-nightly.6"
79
79
  },
80
80
  "@ours.network/fleet": {
81
81
  "type": "npm",
82
- "version": "1.2.0-nightly.4"
82
+ "version": "1.2.0-nightly.6"
83
83
  },
84
84
  "@ours.network/mcp": {
85
85
  "type": "npm",
86
- "version": "1.2.0-nightly.6"
86
+ "version": "1.2.0-nightly.7"
87
87
  },
88
88
  "@ours.network/codex": {
89
89
  "type": "npm",
90
- "version": "1.2.0-nightly.6"
90
+ "version": "1.2.0-nightly.7"
91
91
  },
92
92
  "@ours.network/claude-code": {
93
93
  "type": "npm",
94
- "version": "1.2.0-nightly.6"
94
+ "version": "1.2.0-nightly.7"
95
95
  },
96
96
  "@ours.network/daemon": {
97
97
  "type": "npm",
98
- "version": "3.8.1-nightly.2"
98
+ "version": "3.8.1-nightly.3"
99
99
  }
100
100
  }
101
101
  }
@@ -53,6 +53,7 @@ export async function serverBuildTransition(record, args, effects) {
53
53
  }
54
54
  await stage('Verify retained state and identities', () => effects.validateServerBuildState(record));
55
55
  await stage('Restore previously running services and check readiness', () => effects.serverLifecycle(record, 'start', runningServices));
56
+ if (record.gateway && ['daemon', 'cowork', 'gateway'].every(name => runningServices.includes(name))) await stage('Verify authenticated gateway management', () => effects.verifyGateway(record));
56
57
  const completed = { ...record, sourcePolicyHash: candidate.sourcePolicyHash };
57
58
  delete completed.buildTransition;
58
59
  effects.writeJson(path, JSON.stringify(completed, null, 2) + '\n');