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

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.
@@ -8,15 +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.3",
12
- "@ours.network/cli": "2.8.1-nightly.1",
13
- "@ours.network/codex": "1.2.0-nightly.3",
14
- "@ours.network/cowork": "1.3.2-nightly.20260918.4d9242e",
15
- "@ours.network/fleet": "1.2.0-nightly.1",
16
- "@ours.network/mcp": "1.2.0-nightly.3",
17
- "@ours.network/messenger-server": "1.0.31-nightly.1",
18
- "@ours.network/sdk": "3.8.1-nightly.3",
19
- "@ours.network/tg-connector": "1.0.1-nightly.1"
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"
20
21
  }
21
22
  },
22
23
  "node_modules/@adapt-toolkit/sdk": {
@@ -439,9 +440,9 @@
439
440
  }
440
441
  },
441
442
  "node_modules/@agentclientprotocol/sdk": {
442
- "version": "1.4.0",
443
- "resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-1.4.0.tgz",
444
- "integrity": "sha512-/eufudw+aFY1LKLolT6yFE6UMmYRl7fMJ/DEONSIyR6wI3slHWITBsANRGqXEY8FRzqUxwh7QEaGiZHcJPVThg==",
443
+ "version": "1.5.0",
444
+ "resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-1.5.0.tgz",
445
+ "integrity": "sha512-524jwbB2iYWA+kWWyv9fhKbhU89dH/lu9u5EXwVNmfYzopV8BujCDxByBDZhxRUkB7RWIJzISCnwivdDk+bdVg==",
445
446
  "license": "Apache-2.0",
446
447
  "peerDependencies": {
447
448
  "zod": "^3.25.0 || ^4.0.0"
@@ -565,9 +566,9 @@
565
566
  ]
566
567
  },
567
568
  "node_modules/@anthropic-ai/sdk": {
568
- "version": "0.126.0",
569
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.126.0.tgz",
570
- "integrity": "sha512-VhiZl6rA/8uC+MgDaOhEcAWaIZ2tPnIY885jlZqxrGrutUW2nqCtophBtlsX0tk5kChBUjV/1NVjL3y0M4OwUg==",
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==",
571
572
  "license": "MIT",
572
573
  "optional": true,
573
574
  "peer": true,
@@ -811,9 +812,9 @@
811
812
  }
812
813
  },
813
814
  "node_modules/@fastify/websocket": {
814
- "version": "11.3.0",
815
- "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.3.0.tgz",
816
- "integrity": "sha512-g89ag4BCcD9YP5wBZXixzoLnuf5j89p/sXFcfpCiv2pdEkYYukBEoK3heVzqsp0EAtszVDc2BBZG0KZqeAShIA==",
815
+ "version": "11.3.1",
816
+ "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.3.1.tgz",
817
+ "integrity": "sha512-3117Fteg0MC9zRl0ilNAQelRb+PNDvNuWe0yJ+jnLthaPPZnlml+GraGpesNUEQvLl8+3C+W4aKZz10XmQ10Mg==",
817
818
  "funding": [
818
819
  {
819
820
  "type": "github",
@@ -1051,13 +1052,14 @@
1051
1052
  }
1052
1053
  },
1053
1054
  "node_modules/@ours.network/claude-code": {
1054
- "version": "1.2.0-nightly.3",
1055
- "resolved": "https://registry.npmjs.org/@ours.network/claude-code/-/claude-code-1.2.0-nightly.3.tgz",
1056
- "integrity": "sha512-7ta6KnvoHB2i/yoaykhXvzKFQTIOPtDHeTzG1PRwHjdTJ4vcGEh4jWYMd2c1jjj73lC3q9qW3LYSRutIJovtQg==",
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==",
1057
1058
  "license": "FSL-1.1-Apache-2.0",
1058
1059
  "dependencies": {
1059
1060
  "@modelcontextprotocol/sdk": "^1.29.0",
1060
- "@ours.network/sdk": "3.8.1-nightly.3",
1061
+ "@ours.network/mcp": "1.2.0-nightly.6",
1062
+ "@ours.network/sdk": "3.8.1-nightly.10",
1061
1063
  "ws": "^8.21.0",
1062
1064
  "zod": "^3.25.76"
1063
1065
  },
@@ -1066,34 +1068,29 @@
1066
1068
  }
1067
1069
  },
1068
1070
  "node_modules/@ours.network/cli": {
1069
- "version": "2.8.1-nightly.1",
1070
- "resolved": "https://registry.npmjs.org/@ours.network/cli/-/cli-2.8.1-nightly.1.tgz",
1071
- "integrity": "sha512-1Rmbqlr790FhqQW/wQ//YEL7b0Q2KVSCA2TlpjaLRkj9Xh55rOoazBJjFuW/fUpTz3Z1B3MUPK9LWiYd+A0kNA==",
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==",
1072
1074
  "license": "FSL-1.1-Apache-2.0",
1073
1075
  "dependencies": {
1074
- "@adapt-toolkit/sdk": "0.10.13-nightly.1",
1075
- "@adapt-toolkit/sdk-native": "0.10.13-nightly.1",
1076
- "@ours.network/sdk": "3.8.1-nightly.3",
1077
- "pg": "^8.16.3"
1076
+ "@ours.network/sdk": "3.8.1-nightly.10"
1078
1077
  },
1079
1078
  "bin": {
1080
1079
  "ours": "dist/cli.js"
1081
1080
  },
1082
1081
  "engines": {
1083
1082
  "node": ">=22"
1084
- },
1085
- "optionalDependencies": {
1086
- "better-sqlite3": "^13.0.3"
1087
1083
  }
1088
1084
  },
1089
1085
  "node_modules/@ours.network/codex": {
1090
- "version": "1.2.0-nightly.3",
1091
- "resolved": "https://registry.npmjs.org/@ours.network/codex/-/codex-1.2.0-nightly.3.tgz",
1092
- "integrity": "sha512-dIWDqbo6hJzujegHRO6x1SsBnh5p1c6gRGj/WkPha/hcN7s/27P4jqBnJ7czQyVGiNVFZ1aAxj4c9+CDLzHENw==",
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==",
1093
1089
  "license": "FSL-1.1-Apache-2.0",
1094
1090
  "dependencies": {
1095
1091
  "@modelcontextprotocol/sdk": "^1.29.0",
1096
- "@ours.network/sdk": "3.8.1-nightly.3",
1092
+ "@ours.network/mcp": "1.2.0-nightly.6",
1093
+ "@ours.network/sdk": "3.8.1-nightly.10",
1097
1094
  "ws": "^8.21.0",
1098
1095
  "zod": "^3.25.76"
1099
1096
  },
@@ -1106,12 +1103,12 @@
1106
1103
  }
1107
1104
  },
1108
1105
  "node_modules/@ours.network/cowork": {
1109
- "version": "1.3.2-nightly.20260918.4d9242e",
1110
- "resolved": "https://registry.npmjs.org/@ours.network/cowork/-/cowork-1.3.2-nightly.20260918.4d9242e.tgz",
1111
- "integrity": "sha512-04D2lJ97SrTrkVRRbdTZ0y+KvQdG/bpnmFFjsyUqQTij+5zEkNizTG/xhcCL8m7Mb0XvVFL8WzJ62Xgh5ahlRw==",
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==",
1112
1109
  "license": "FSL-1.1-Apache-2.0",
1113
1110
  "dependencies": {
1114
- "@ours.network/sdk": "3.8.1-nightly.3",
1111
+ "@ours.network/sdk": "3.8.1-nightly.10",
1115
1112
  "ajv": "8.20.0",
1116
1113
  "better-sqlite3": "13.0.3",
1117
1114
  "react": "18.3.1",
@@ -1125,17 +1122,40 @@
1125
1122
  "node": ">=22"
1126
1123
  }
1127
1124
  },
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==",
1129
+ "license": "FSL-1.1-Apache-2.0",
1130
+ "dependencies": {
1131
+ "@adapt-toolkit/sdk": "0.10.13-nightly.1",
1132
+ "@adapt-toolkit/sdk-native": "0.10.13-nightly.1",
1133
+ "@ours.network/sdk": "3.8.1-nightly.10",
1134
+ "ajv": "^8.20.0",
1135
+ "pg": "^8.16.3"
1136
+ },
1137
+ "bin": {
1138
+ "ours-daemon": "dist/cli.js"
1139
+ },
1140
+ "engines": {
1141
+ "node": ">=22"
1142
+ },
1143
+ "optionalDependencies": {
1144
+ "better-sqlite3": "^13.0.3"
1145
+ }
1146
+ },
1128
1147
  "node_modules/@ours.network/fleet": {
1129
- "version": "1.2.0-nightly.1",
1130
- "resolved": "https://registry.npmjs.org/@ours.network/fleet/-/fleet-1.2.0-nightly.1.tgz",
1131
- "integrity": "sha512-vioCobVbosmp9BgYo2XccjpPoVQd1wwV+Mt64Bm41/Vxtro2j85PUdy4AWcsY9jEFnJmj/UQfc5E5AxvlpPnrw==",
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==",
1132
1151
  "license": "FSL-1.1-Apache-2.0",
1133
1152
  "dependencies": {
1134
1153
  "@agentclientprotocol/sdk": "^1.3.0",
1135
1154
  "@fastify/static": "^10.1.2",
1136
1155
  "@fastify/websocket": "^11.2.0",
1137
- "@ours.network/cli": "2.8.1-nightly.1",
1138
- "@ours.network/sdk": "3.8.1-nightly.3",
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",
1139
1159
  "commander": "^12.1.0",
1140
1160
  "fastify": "^5.4.0",
1141
1161
  "react": "^19.1.1",
@@ -1183,13 +1203,14 @@
1183
1203
  "license": "MIT"
1184
1204
  },
1185
1205
  "node_modules/@ours.network/mcp": {
1186
- "version": "1.2.0-nightly.3",
1187
- "resolved": "https://registry.npmjs.org/@ours.network/mcp/-/mcp-1.2.0-nightly.3.tgz",
1188
- "integrity": "sha512-z0N5jn1jj9iwGRqU1d3AM2RX9mCr4T/WhASEKr+Vh52yNDMzhVjFlx0U0v8aS+GTfOQaPZTfL3TGMc17ETjh3g==",
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==",
1189
1209
  "license": "FSL-1.1-Apache-2.0",
1190
1210
  "dependencies": {
1191
- "@ours.network/cli": "2.8.1-nightly.1",
1192
- "@ours.network/sdk": "3.8.1-nightly.3"
1211
+ "@modelcontextprotocol/sdk": "^1.0.4",
1212
+ "@ours.network/sdk": "3.8.1-nightly.10",
1213
+ "zod": "^3.23.8"
1193
1214
  },
1194
1215
  "bin": {
1195
1216
  "ours-mcp": "dist/cli.js"
@@ -1199,14 +1220,14 @@
1199
1220
  }
1200
1221
  },
1201
1222
  "node_modules/@ours.network/messenger-server": {
1202
- "version": "1.0.31-nightly.1",
1203
- "resolved": "https://registry.npmjs.org/@ours.network/messenger-server/-/messenger-server-1.0.31-nightly.1.tgz",
1204
- "integrity": "sha512-XB6N+Ppd4txmI0+2ZVFMWJxXi4DtMIDlFSHOzszNM5hopFebpw1Df+KKCK4Cgd/LZUkoOOYWGEYpib9m3RbHWw==",
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==",
1205
1226
  "license": "FSL-1.1-Apache-2.0",
1206
1227
  "dependencies": {
1207
1228
  "@eslint-community/regexpp": "4.12.2",
1208
1229
  "@fontsource-variable/jetbrains-mono": "^5.3.0",
1209
- "@ours.network/sdk": "3.8.1-nightly.3",
1230
+ "@ours.network/sdk": "3.8.1-nightly.10",
1210
1231
  "@radix-ui/react-dialog": "^1.1.23",
1211
1232
  "framer-motion": "^12.43.0",
1212
1233
  "jsqr": "^1.4.0",
@@ -1232,34 +1253,25 @@
1232
1253
  }
1233
1254
  },
1234
1255
  "node_modules/@ours.network/sdk": {
1235
- "version": "3.8.1-nightly.3",
1236
- "resolved": "https://registry.npmjs.org/@ours.network/sdk/-/sdk-3.8.1-nightly.3.tgz",
1237
- "integrity": "sha512-iUVCs+jryoeR2Ip/uHzpkJwbpoJeLDASUaE3lC+eYDj8dbI1MBwTpeOXFemUK052O6lA4ZWrhyRgE9pJU3a+Kw==",
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==",
1238
1259
  "license": "FSL-1.1-Apache-2.0",
1239
1260
  "workspaces": [
1240
1261
  ".",
1241
1262
  "packages/*"
1242
1263
  ],
1243
- "dependencies": {
1244
- "@adapt-toolkit/sdk": "0.10.13-nightly.1",
1245
- "@adapt-toolkit/sdk-native": "0.10.13-nightly.1",
1246
- "ajv": "^8.20.0",
1247
- "pg": "^8.16.3"
1248
- },
1249
1264
  "engines": {
1250
1265
  "node": ">=22"
1251
- },
1252
- "optionalDependencies": {
1253
- "better-sqlite3": "^13.0.3"
1254
1266
  }
1255
1267
  },
1256
1268
  "node_modules/@ours.network/tg-connector": {
1257
- "version": "1.0.1-nightly.1",
1258
- "resolved": "https://registry.npmjs.org/@ours.network/tg-connector/-/tg-connector-1.0.1-nightly.1.tgz",
1259
- "integrity": "sha512-/Do7EfINknDks3yYndOi9aLc1alxB50qk+WKv8DRuZpDB89DDMQ+DoSGQerdvsMp32nQ3LICL8TPjcdFMZfx8Q==",
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==",
1260
1272
  "license": "FSL-1.1-Apache-2.0",
1261
1273
  "dependencies": {
1262
- "@ours.network/sdk": "3.8.1-nightly.3",
1274
+ "@ours.network/sdk": "3.8.1-nightly.10",
1263
1275
  "undici": "^7.28.0"
1264
1276
  },
1265
1277
  "bin": {
@@ -4285,9 +4297,9 @@
4285
4297
  }
4286
4298
  },
4287
4299
  "node_modules/lru-cache": {
4288
- "version": "11.5.2",
4289
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
4290
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
4300
+ "version": "11.5.3",
4301
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz",
4302
+ "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==",
4291
4303
  "license": "BlueOak-1.0.0",
4292
4304
  "engines": {
4293
4305
  "node": "20 || >=22"
@@ -1,43 +1,57 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "channel": "nightly",
4
- "installerVersion": "1.2.1-nightly.1",
4
+ "installerVersion": "1.2.1-nightly.11",
5
5
  "packages": {
6
6
  "@ours.network/sdk": {
7
- "version": "3.8.1-nightly.3",
8
- "integrity": "sha512-iUVCs+jryoeR2Ip/uHzpkJwbpoJeLDASUaE3lC+eYDj8dbI1MBwTpeOXFemUK052O6lA4ZWrhyRgE9pJU3a+Kw=="
7
+ "version": "3.8.1-nightly.10",
8
+ "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
9
9
  },
10
10
  "@ours.network/cli": {
11
- "version": "2.8.1-nightly.1",
12
- "integrity": "sha512-1Rmbqlr790FhqQW/wQ//YEL7b0Q2KVSCA2TlpjaLRkj9Xh55rOoazBJjFuW/fUpTz3Z1B3MUPK9LWiYd+A0kNA=="
11
+ "version": "2.8.1-nightly.8",
12
+ "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
13
13
  },
14
14
  "@ours.network/tg-connector": {
15
- "version": "1.0.1-nightly.1",
16
- "integrity": "sha512-/Do7EfINknDks3yYndOi9aLc1alxB50qk+WKv8DRuZpDB89DDMQ+DoSGQerdvsMp32nQ3LICL8TPjcdFMZfx8Q=="
15
+ "version": "1.0.1-nightly.4",
16
+ "integrity": "sha512-PN4kwCU45NKKoE+mkmFxrhpzY5dYEtjDK6pmQqNqnHFUHDSnoBHACIuUITqtbqeG+srnRGpSQwu9gSbDmcFiaw=="
17
17
  },
18
18
  "@ours.network/cowork": {
19
- "version": "1.3.2-nightly.20260918.4d9242e",
20
- "integrity": "sha512-04D2lJ97SrTrkVRRbdTZ0y+KvQdG/bpnmFFjsyUqQTij+5zEkNizTG/xhcCL8m7Mb0XvVFL8WzJ62Xgh5ahlRw=="
19
+ "version": "1.3.2-nightly.20260921.4b9a45e",
20
+ "integrity": "sha512-RWhWpthIl3yU7aU5TdwJvdSAFQQYyKFrTNrtFxk/P0CBxLegfT3ILYRn4Pl1SR1ToIACXvKQc3DpBT6ifFhuVA=="
21
21
  },
22
22
  "@ours.network/messenger-server": {
23
- "version": "1.0.31-nightly.1",
24
- "integrity": "sha512-XB6N+Ppd4txmI0+2ZVFMWJxXi4DtMIDlFSHOzszNM5hopFebpw1Df+KKCK4Cgd/LZUkoOOYWGEYpib9m3RbHWw=="
23
+ "version": "1.0.31-nightly.4",
24
+ "integrity": "sha512-YuMUBzCvHjUchoITtugj9Oj50TojPQd/lR2VfrqgiZUbVnG1hNZVvcSF/qIrLUB/1wrBcXHbPdX+tNvET5dCmQ=="
25
25
  },
26
26
  "@ours.network/fleet": {
27
- "version": "1.2.0-nightly.1",
28
- "integrity": "sha512-vioCobVbosmp9BgYo2XccjpPoVQd1wwV+Mt64Bm41/Vxtro2j85PUdy4AWcsY9jEFnJmj/UQfc5E5AxvlpPnrw=="
27
+ "version": "1.2.0-nightly.4",
28
+ "integrity": "sha512-8BNjKSv4kjrnqrnRxEQnTR8nTqiLyrqTT3GPA6JTiH8xftfMCTkGQLK3xhwRYWQHihG3QPnJ+du/ljtFrtlUUA=="
29
29
  },
30
30
  "@ours.network/mcp": {
31
- "version": "1.2.0-nightly.3",
32
- "integrity": "sha512-z0N5jn1jj9iwGRqU1d3AM2RX9mCr4T/WhASEKr+Vh52yNDMzhVjFlx0U0v8aS+GTfOQaPZTfL3TGMc17ETjh3g=="
31
+ "version": "1.2.0-nightly.6",
32
+ "integrity": "sha512-GzZ2u8U3Al76rVd2BY8/Shqy5myDxGY7bvuKlVeNwJBohszqza1Qre49CYx3rV+WnOVwcJkWlb8irxWK30MzwQ=="
33
33
  },
34
34
  "@ours.network/codex": {
35
- "version": "1.2.0-nightly.3",
36
- "integrity": "sha512-dIWDqbo6hJzujegHRO6x1SsBnh5p1c6gRGj/WkPha/hcN7s/27P4jqBnJ7czQyVGiNVFZ1aAxj4c9+CDLzHENw=="
35
+ "version": "1.2.0-nightly.6",
36
+ "integrity": "sha512-Ckv6aqsDkrTWKCcuFCR1Yzc0h50pR0q9ICLgyiFVmfKStXQh8j4D6cNT2wKayQHMCo1T+wkyKLgBXrIdpPDc8A=="
37
37
  },
38
38
  "@ours.network/claude-code": {
39
- "version": "1.2.0-nightly.3",
40
- "integrity": "sha512-7ta6KnvoHB2i/yoaykhXvzKFQTIOPtDHeTzG1PRwHjdTJ4vcGEh4jWYMd2c1jjj73lC3q9qW3LYSRutIJovtQg=="
39
+ "version": "1.2.0-nightly.6",
40
+ "integrity": "sha512-Xt7mQw3R4yyhkExMsj9nvZX1dEXgpgYAKhgBfylAgA+nJ+2f4tgjwuIg+6fQEiMjq4mTNs0JUkkw2Kh6Hwn/PQ=="
41
+ },
42
+ "@ours.network/daemon": {
43
+ "version": "3.8.1-nightly.2",
44
+ "integrity": "sha512-QgQJJm9xNLtpMBKOK1iXyDxJxwsKkVZdJPNDY9ptYnV4QJWasYii+EIcTPbYY4w/Apr8Fpbi1k9eUMiinft3eg=="
45
+ }
46
+ },
47
+ "hostCli": {
48
+ "@ours.network/sdk": {
49
+ "version": "3.8.1-nightly.10",
50
+ "integrity": "sha512-FrWOzqWuVVdHb2qNfG8GtDQkuVN8SsZfUrG/cG37j4qtvRtR4gHcvoeZhgcBB3OvrDh2jn3B+Y2bqTYoSTKwCw=="
51
+ },
52
+ "@ours.network/cli": {
53
+ "version": "2.8.1-nightly.8",
54
+ "integrity": "sha512-7kZ1EzLpWNsyAdil4NoZfQc5RtAcbfIqc0AgTaMyaGA+ayqZRVdarYuBOo+fOT6dwbLLlMvWpZQgVMtR7ND4Lg=="
41
55
  }
42
56
  }
43
57
  }
@@ -7,7 +7,7 @@ export const ROOT = resolve(process.env.OURS_BUILD_ROOT || '/opt/ours');
7
7
  export const SOURCE_ROOT = resolve(process.env.OURS_SOURCE_ROOT || '/src');
8
8
  export const OUT = join(ROOT, 'docker/vendor');
9
9
  export const CONFIG = JSON.parse(readFileSync(join(ROOT, 'sources.json'), 'utf8'));
10
- export const SELECTED = new Set((process.env.OURS_BUILD_PACKAGES || 'sdk,cli,mcp,tg-connector,cowork,messenger-server').split(',').map(name => '@ours.network/' + name));
10
+ export const SELECTED = new Set((process.env.OURS_BUILD_PACKAGES || 'sdk,cli,daemon,tg-connector,cowork,messenger-server').split(',').map(name => '@ours.network/' + name));
11
11
  export const inheritedLock = process.env.OURS_INSTALLER_LOCK_FD === '3' ? [3] : [];
12
12
  export const run = (args, cwd) => execFileSync(args[0], args.slice(1), { cwd, stdio: ['inherit', 'inherit', 'inherit', ...inheritedLock] });
13
13
  export const capture = (args, cwd, env = process.env) => execFileSync(args[0], args.slice(1), { cwd, env, encoding: 'utf8', stdio: ['ignore', 'pipe', 'inherit', ...inheritedLock] });
@@ -2,8 +2,13 @@ import { join } from 'node:path';
2
2
  import { SOURCE_ROOT, SELECTED, pack, run } from './build-common.mjs';
3
3
  const source = join(SOURCE_ROOT, 'sdk');
4
4
  run(['npm', 'ci', '--no-audit', '--no-fund'], source);
5
- run(['bash', 'scripts/compile-mufl.sh'], source);
5
+ if (SELECTED.has('@ours.network/daemon')) run(['bash', 'scripts/compile-mufl.sh'], source);
6
6
  run(['npm', 'run', 'build'], source);
7
7
  if (SELECTED.has('@ours.network/cli')) run(['npm', 'run', 'build:cli'], source);
8
8
  pack(source, '@ours.network/sdk', 'sdk');
9
9
  pack(join(source, 'packages/cli'), '@ours.network/cli', 'sdk');
10
+
11
+ if (SELECTED.has('@ours.network/daemon')) {
12
+ run(['npm', 'run', 'build:daemon'], source);
13
+ pack(join(source, 'packages/daemon'), '@ours.network/daemon', 'sdk');
14
+ }
@@ -8,7 +8,7 @@ import { semanticRecordEqual } from './provenance-compare.mjs';
8
8
  export const BASE_RECORDS = ['package-lock.json', 'dependency-tree.json'];
9
9
  export const CONTEXT = 'build-context.json';
10
10
  const admitted = new WeakMap();
11
- const packages = new Set(['sdk', 'cli', 'mcp', 'tg-connector', 'cowork', 'messenger-server', 'fleet', 'codex', 'claude-code', 'install'].map(n => '@ours.network/' + n));
11
+ const packages = new Set(['sdk', 'cli', 'daemon', 'mcp', 'tg-connector', 'cowork', 'messenger-server', 'fleet', 'codex', 'claude-code', 'install'].map(n => '@ours.network/' + n));
12
12
  const digest = (bytes, algorithm = 'sha256', encoding = 'hex') => createHash(algorithm).update(bytes).digest(encoding);
13
13
  const fail = text => { throw new Error(`Build context: ${text}`); };
14
14
  const keys = (v, expected) => v && !Array.isArray(v) && typeof v === 'object' && Object.keys(v).sort().join('\0') === [...expected].sort().join('\0');
@@ -0,0 +1,15 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+
4
+ // Native callers provide an exact selected executable. Compose mounts the
5
+ // selected runtime and supplies its bin directory, including retained releases.
6
+ export function daemonOwner(env = process.env) {
7
+ if (env.OURS_CLI_PATH) return env.OURS_CLI_PATH;
8
+ const bin = env.OURS_DAEMON_BIN_DIR;
9
+ if (!bin) throw new Error('daemon maintenance requires its selected executable or bin directory');
10
+ const daemon = join(bin, 'ours-daemon');
11
+ if (existsSync(daemon)) return daemon;
12
+ const legacy = join(bin, 'ours');
13
+ if (existsSync(legacy)) return legacy;
14
+ throw new Error('selected runtime contains no daemon administrator');
15
+ }
@@ -6,6 +6,8 @@ import { pathToFileURL } from 'node:url';
6
6
  import { copyPrivateTree, scanSource, createArchive, validateArchive } from './state-archive.mjs';
7
7
  import { publishNoReplace } from './state-native.mjs';
8
8
 
9
+ import { daemonOwner } from './daemon-owner.mjs';
10
+
9
11
  const COMPONENTS = ['daemon', 'telegram', 'cowork', 'messenger'];
10
12
  import { recordNames, readBuildRecords, validateBuildRecordSet } from './build-context.mjs';
11
13
  const DAEMON_STATE = '/var/lib/ours';
@@ -207,7 +209,7 @@ export async function runDockerLayoutCommand(argv, env = process.env) {
207
209
  const build = env.OURS_BUILD_ROOT || '/opt/ours';
208
210
  const options = {
209
211
  uid: process.getuid(), gid: process.getgid(), instanceId: env.OURS_DAEMON_ID,
210
- cli: env.OURS_CLI_PATH || '/opt/ours/node_modules/.bin/ours',
212
+ cli: daemonOwner({ OURS_DAEMON_BIN_DIR: '/opt/ours/node_modules/.bin', ...env }),
211
213
  configPath: env.OURS_DAEMON_CONFIG || '/var/lib/ours/config.json',
212
214
  provenance: readBuildRecords(build),
213
215
  };
@@ -20,10 +20,19 @@ export function releaseBinding(policy) {
20
20
  if (release?.schema !== 1 || !['stable', 'nightly'].includes(release.channel)) fail('invalid release binding');
21
21
  const pattern = release.channel === 'nightly' ? nightly : stable;
22
22
  if (typeof release.installerVersion !== 'string' || !pattern.test(release.installerVersion)) fail('invalid installer version/channel');
23
- if (!release.packages || JSON.stringify(Object.keys(release.packages).sort()) !== JSON.stringify([...names].sort())) fail('release must select exactly nine ours packages');
23
+ if (release.scope !== undefined && release.scope !== 'host-cli') fail('invalid release scope');
24
+ const required = release.scope === 'host-cli' ? ['@ours.network/cli', '@ours.network/sdk'] : [...names, ...(release.packages?.['@ours.network/daemon'] ? ['@ours.network/daemon'] : [])];
25
+ if (!release.packages || JSON.stringify(Object.keys(release.packages).sort()) !== JSON.stringify([...required].sort())) fail('release must select exactly the required ours packages');
26
+ if (release.scope === 'host-cli' && Object.hasOwn(release, 'hostCli')) fail('nested host CLI selection');
24
27
  for (const [name, entry] of Object.entries(release.packages)) {
25
28
  if (typeof entry?.version !== 'string' || !pattern.test(entry.version) || !/^sha512-[A-Za-z0-9+/]{86}==$/.test(entry.integrity ?? '')) fail(`invalid release artifact: ${name}`);
26
29
  }
30
+ if (Object.hasOwn(release, 'hostCli')) {
31
+ if (!release.hostCli || Object.keys(release.hostCli).sort().join(',') !== '@ours.network/cli,@ours.network/sdk') fail('host CLI must select exactly CLI and SDK');
32
+ for (const [name, entry] of Object.entries(release.hostCli)) {
33
+ if (typeof entry?.version !== 'string' || !pattern.test(entry.version) || !/^sha512-[A-Za-z0-9+/]{86}==$/.test(entry.integrity ?? '')) fail(`invalid host CLI artifact: ${name}`);
34
+ }
35
+ }
27
36
  if (!policy.packages || !Object.keys(policy.packages).length) fail('missing release source selection');
28
37
  for (const [name, entry] of Object.entries(policy.packages)) {
29
38
  if (entry?.type !== 'npm' || entry.version !== release.packages[name]?.version || Object.keys(entry).sort().join(',') !== 'type,version') fail(`source selection differs from release: ${name}`);
@@ -92,3 +101,11 @@ export function verifyRuntimeRelease(root) {
92
101
  if (!existsSync(path)) return { verified: false, reason: 'legacy runtime without sources' };
93
102
  return verifyReleaseGraph(root, json(path));
94
103
  }
104
+
105
+ /** The client command has its own exact dependency selection, never a graph bypass. */
106
+ export function hostCliPolicy(policy) {
107
+ const release = releaseBinding(policy);
108
+ if (!release?.hostCli) return null;
109
+ const { hostCli, ...base } = release;
110
+ return { release: { ...base, scope: 'host-cli', packages: hostCli }, packages: Object.fromEntries(Object.entries(hostCli).map(([name, p]) => [name, { type: 'npm', version: p.version }])) };
111
+ }
@@ -9,6 +9,8 @@ import { createArchive, extractArchive, validateArchive, scanSource, copyPrivate
9
9
  import { exchange, tryLock, setMtimeNs } from './state-native.mjs';
10
10
  import { recordNames, readBuildRecords, equalBuildRecords, initializeBuildMarker } from './build-context.mjs';
11
11
 
12
+ import { daemonOwner } from './daemon-owner.mjs';
13
+
12
14
  const PROVENANCE = '.ours-provenance';
13
15
  const APPLICATIONS = ['daemon', 'telegram', 'cowork', 'messenger'];
14
16
  const exists = path => { try { fs.lstatSync(path); return true; } catch (e) { if (e.code === 'ENOENT') return false; throw e; } };
@@ -145,9 +147,9 @@ export async function runStateOperation(argv, env = process.env, checkpoints = {
145
147
  }
146
148
  function retainAuthority(staging) {
147
149
  if (!['daemon', 'server'].includes(domain)) return;
148
- if (!env.OURS_CLI_PATH || !env.OURS_DAEMON_CONFIG) fail('daemon maintenance requires its selected executable and configuration');
150
+ if (!env.OURS_DAEMON_CONFIG) fail('daemon maintenance requires its selected executable and configuration');
149
151
  const daemon = commonTree ? join(staging, 'daemon') : staging;
150
- owner([env.OURS_CLI_PATH, 'config', 'access-retain', '--config', env.OURS_DAEMON_CONFIG, '--target-state-dir', daemon, '--json']);
152
+ owner([daemonOwner(env), 'config', 'access-retain', '--config', env.OURS_DAEMON_CONFIG, '--target-state-dir', daemon, '--json']);
151
153
  if (!commonTree) return;
152
154
  const credentials = join(live, 'credentials'), destination = join(staging, 'credentials');
153
155
  for (const name of ['telegram', 'cowork', 'messenger']) if (!privateStat(join(credentials, name, 'daemon-token'), false, 0o600).size) fail('current managed credential is empty');
@@ -2,7 +2,7 @@ import { readBuildRecords, initializeBuildMarker } from '../maintenance/build-co
2
2
  import { spawnSync } from 'node:child_process';
3
3
  import { randomBytes } from 'node:crypto';
4
4
  import {
5
- closeSync, constants, fstatSync, lstatSync, mkdirSync, openSync, readFileSync,
5
+ existsSync, closeSync, constants, fstatSync, lstatSync, mkdirSync, openSync, readFileSync,
6
6
  realpathSync, renameSync, unlinkSync, writeFileSync, readdirSync, chmodSync, chownSync,
7
7
  } from 'node:fs';
8
8
 
@@ -67,7 +67,7 @@ function validateCommon(idName = 'OURS_DAEMON_ID') {
67
67
 
68
68
  function composeConfig(domain) {
69
69
  if (domain === 'daemon') {
70
- const value = { stateDir: '/var/lib/ours', port: 3050, apiVisibility: 'owner', networkMcp: { profile: { endpoint: 'http://127.0.0.1:3050', expectedInstanceId: process.env.OURS_DAEMON_ID, credentialPath: '/var/lib/ours/daemon-token' }, applicationConfigPath: '/var/lib/ours-mcp/config.json' } };
70
+ const value = { stateDir: '/var/lib/ours', port: 3050, apiVisibility: 'owner' };
71
71
  if (process.env.OURS_BROKER_URL) value.brokerUrl = process.env.OURS_BROKER_URL;
72
72
  return value;
73
73
  }
@@ -155,7 +155,7 @@ async function telegramInput() {
155
155
  }
156
156
 
157
157
  function cliJson(args) {
158
- const result = spawnSync(process.execPath, ['/opt/ours/node_modules/@ours.network/cli/dist/cli.js', ...args], {
158
+ const result = spawnSync(process.execPath, [existsSync('/opt/ours/node_modules/@ours.network/daemon/dist/cli.js') ? '/opt/ours/node_modules/@ours.network/daemon/dist/cli.js' : '/opt/ours/node_modules/@ours.network/cli/dist/cli.js', ...args], {
159
159
  encoding: 'utf8', timeout: 60_000, maxBuffer: 1024 * 1024,
160
160
  });
161
161
  if (result.status !== 0) fail('Official OURS CLI operation failed');
@@ -10,4 +10,4 @@ else
10
10
  exit "$status"
11
11
  fi
12
12
  node /opt/ours/docker/check-start.mjs
13
- exec node /opt/ours/node_modules/@ours.network/cli/dist/cli.js daemon serve
13
+ exec node /opt/ours/node_modules/@ours.network/daemon/dist/cli.js serve