@viewportai/daemon 0.1.0 → 0.2.0
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/dist/cli/commands.d.ts +1 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +1 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/daemon-lifecycle.d.ts +3 -0
- package/dist/cli/daemon-lifecycle.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle.js +11 -1
- package/dist/cli/daemon-lifecycle.js.map +1 -1
- package/dist/cli/daemon-settings.d.ts.map +1 -1
- package/dist/cli/daemon-settings.js +115 -3
- package/dist/cli/daemon-settings.js.map +1 -1
- package/dist/cli/lifecycle-commands.d.ts.map +1 -1
- package/dist/cli/lifecycle-commands.js +2 -0
- package/dist/cli/lifecycle-commands.js.map +1 -1
- package/dist/cli/remote-commands.d.ts +3 -0
- package/dist/cli/remote-commands.d.ts.map +1 -0
- package/dist/cli/remote-commands.js +236 -0
- package/dist/cli/remote-commands.js.map +1 -0
- package/dist/cli/setup-command.d.ts.map +1 -1
- package/dist/cli/setup-command.js +4 -1
- package/dist/cli/setup-command.js.map +1 -1
- package/dist/cli/supervisor-protocol.d.ts +12 -0
- package/dist/cli/supervisor-protocol.d.ts.map +1 -1
- package/dist/cli/supervisor.d.ts.map +1 -1
- package/dist/cli/supervisor.js +30 -0
- package/dist/cli/supervisor.js.map +1 -1
- package/dist/core/config-schema.d.ts +16 -0
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +12 -0
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/config.d.ts +23 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +46 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/session-state-file.d.ts.map +1 -1
- package/dist/core/session-state-file.js +3 -1
- package/dist/core/session-state-file.js.map +1 -1
- package/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/hooks/installers/claude.js +4 -1
- package/dist/hooks/installers/claude.js.map +1 -1
- package/dist/hooks/router.d.ts.map +1 -1
- package/dist/hooks/router.js +11 -0
- package/dist/hooks/router.js.map +1 -1
- package/dist/hooks/supervision.d.ts +2 -0
- package/dist/hooks/supervision.d.ts.map +1 -1
- package/dist/hooks/supervision.js +12 -0
- package/dist/hooks/supervision.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +14 -0
- package/dist/plugins/loader.js.map +1 -1
- package/dist/relay/bridge-backoff.d.ts +3 -0
- package/dist/relay/bridge-backoff.d.ts.map +1 -0
- package/dist/relay/bridge-backoff.js +10 -0
- package/dist/relay/bridge-backoff.js.map +1 -0
- package/dist/relay/bridge-constants.d.ts +12 -0
- package/dist/relay/bridge-constants.d.ts.map +1 -0
- package/dist/relay/bridge-constants.js +12 -0
- package/dist/relay/bridge-constants.js.map +1 -0
- package/dist/relay/bridge-crypto.d.ts +18 -0
- package/dist/relay/bridge-crypto.d.ts.map +1 -0
- package/dist/relay/bridge-crypto.js +63 -0
- package/dist/relay/bridge-crypto.js.map +1 -0
- package/dist/relay/bridge-errors.d.ts +6 -0
- package/dist/relay/bridge-errors.d.ts.map +1 -0
- package/dist/relay/bridge-errors.js +9 -0
- package/dist/relay/bridge-errors.js.map +1 -0
- package/dist/relay/bridge-jwt.d.ts +18 -0
- package/dist/relay/bridge-jwt.d.ts.map +1 -0
- package/dist/relay/bridge-jwt.js +130 -0
- package/dist/relay/bridge-jwt.js.map +1 -0
- package/dist/relay/bridge-key-exchange.d.ts +49 -0
- package/dist/relay/bridge-key-exchange.d.ts.map +1 -0
- package/dist/relay/bridge-key-exchange.js +234 -0
- package/dist/relay/bridge-key-exchange.js.map +1 -0
- package/dist/relay/bridge-network.d.ts +12 -0
- package/dist/relay/bridge-network.d.ts.map +1 -0
- package/dist/relay/bridge-network.js +90 -0
- package/dist/relay/bridge-network.js.map +1 -0
- package/dist/relay/bridge-noise-v3.d.ts +74 -0
- package/dist/relay/bridge-noise-v3.d.ts.map +1 -0
- package/dist/relay/bridge-noise-v3.js +403 -0
- package/dist/relay/bridge-noise-v3.js.map +1 -0
- package/dist/relay/daemon-relay-bridge.d.ts +93 -0
- package/dist/relay/daemon-relay-bridge.d.ts.map +1 -0
- package/dist/relay/daemon-relay-bridge.js +1005 -0
- package/dist/relay/daemon-relay-bridge.js.map +1 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +9 -7
- package/dist/server/auth.js.map +1 -1
- package/dist/server/http-server.d.ts +6 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +102 -15
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/pairing-offers.d.ts +2 -1
- package/dist/server/pairing-offers.d.ts.map +1 -1
- package/dist/server/pairing-offers.js +438 -204
- package/dist/server/pairing-offers.js.map +1 -1
- package/dist/server/ring-buffer.d.ts +48 -7
- package/dist/server/ring-buffer.d.ts.map +1 -1
- package/dist/server/ring-buffer.js +387 -14
- package/dist/server/ring-buffer.js.map +1 -1
- package/dist/server/security.d.ts.map +1 -1
- package/dist/server/security.js +5 -1
- package/dist/server/security.js.map +1 -1
- package/dist/server/ws-command-handlers.d.ts.map +1 -1
- package/dist/server/ws-command-handlers.js +18 -6
- package/dist/server/ws-command-handlers.js.map +1 -1
- package/dist/server/ws-daemon-event-bridge.d.ts.map +1 -1
- package/dist/server/ws-daemon-event-bridge.js +14 -2
- package/dist/server/ws-daemon-event-bridge.js.map +1 -1
- package/dist/server/ws-server.d.ts.map +1 -1
- package/dist/server/ws-server.js +26 -3
- package/dist/server/ws-server.js.map +1 -1
- package/dist/startup-relay-security.d.ts +3 -0
- package/dist/startup-relay-security.d.ts.map +1 -0
- package/dist/startup-relay-security.js +61 -0
- package/dist/startup-relay-security.js.map +1 -0
- package/dist/startup-session-persistence.d.ts +7 -0
- package/dist/startup-session-persistence.d.ts.map +1 -0
- package/dist/startup-session-persistence.js +72 -0
- package/dist/startup-session-persistence.js.map +1 -0
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +115 -65
- package/dist/startup.js.map +1 -1
- package/dist/tracking/git-tracker.d.ts +4 -0
- package/dist/tracking/git-tracker.d.ts.map +1 -1
- package/dist/tracking/git-tracker.js +80 -15
- package/dist/tracking/git-tracker.js.map +1 -1
- package/docs/configuration.md +63 -5
- package/docs/relay-noise-conformance-vectors.json +41 -0
- package/docs/relay-noise-v3-conformance-vectors.json +50 -0
- package/docs/security.md +3 -2
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"generatedAt": "2026-03-04",
|
|
4
|
+
"notes": "Deterministic vectors for relay handshake profile validation (noise-ik / noise-ikpsk2).",
|
|
5
|
+
"vectors": [
|
|
6
|
+
{
|
|
7
|
+
"id": "ik-basic",
|
|
8
|
+
"profile": "noise-ik",
|
|
9
|
+
"requestId": "kex-vector-ik-1",
|
|
10
|
+
"clientPrivateKey": "ERERERERERERERERERERERERERERERERERERERERERE",
|
|
11
|
+
"clientPublicKey": "BAIX5hfwtkQ5KCePlpmeaaI6TywVK99tbN9m5bgCgtTtGUp968uXcS0t2jyoWqh2Wlb0X8dYWZZS8ol8ZTBuV5Q",
|
|
12
|
+
"daemonPrivateKey": "IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI",
|
|
13
|
+
"daemonPublicKey": "BNZak5d8qj0bCBhS_1ennkZfFmBXcwS66tUF3TpIWJzzUBheiVNy32Ih6joTdVfkc_3bZ1XwW9UHw8Uz_OnJEoU",
|
|
14
|
+
"clientNonce": "ABEiM0RVZneImaq7zN3u_w",
|
|
15
|
+
"daemonNonce": "_-7dzLuqmYh3ZlVEMyIRAA",
|
|
16
|
+
"sessionId": "rs_vector_ik_001",
|
|
17
|
+
"epoch": 1,
|
|
18
|
+
"expectedClientProof": "V1-7QcRCwkCgpUZdz92mmA",
|
|
19
|
+
"expectedSessionKey": "2Bw_9xNEr7U2bshJajaT6a63Bm77dZmgmGiPw9fbS58",
|
|
20
|
+
"expectedDaemonProof": "m15GgIvhB0WjKzB3oZU3Kw"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "ikpsk2-basic",
|
|
24
|
+
"profile": "noise-ikpsk2",
|
|
25
|
+
"requestId": "kex-vector-ikpsk2-1",
|
|
26
|
+
"clientPrivateKey": "MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM",
|
|
27
|
+
"clientPublicKey": "BFGnWAgziY6hsYPL1zUKQJkHjG7xweGOlwzXaDA18l59ARBSJxKwtafP8IFoVIaYSpTmgx7axG5zYPqdg0p6gaE",
|
|
28
|
+
"daemonPrivateKey": "REREREREREREREREREREREREREREREREREREREREREQ",
|
|
29
|
+
"daemonPublicKey": "BFs2iQ2svXyalrt0oe4os9LXW3LgmiDvJc-Ob9ip8DUNDhS-2NRoKjTYNTi9_1uW6JpmZuwNtXRdAvoSEAct91o",
|
|
30
|
+
"pairingSecret": "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU",
|
|
31
|
+
"clientNonce": "ECEyQ1RldoeYqbq8vdzt_g",
|
|
32
|
+
"daemonNonce": "ASNFZ4mrze_-3LqYdlQyEA",
|
|
33
|
+
"sessionId": "rs_vector_ikpsk2_001",
|
|
34
|
+
"previousSessionId": "rs_prev_ikpsk2_000",
|
|
35
|
+
"epoch": 2,
|
|
36
|
+
"expectedClientProof": "gxbCj7oTAia0k6YEW5T2PA",
|
|
37
|
+
"expectedSessionKey": "vm3VqaI4W7Ck1qvRYSFQzK4qXr8phYC8D6pNVuAmRmI",
|
|
38
|
+
"expectedDaemonProof": "vLWX1F1A5AIvXwS9E9B3wA"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"notes": "Deterministic canonical Noise v3 vectors (IK + IKpsk2 over P256/AESGCM/SHA256).",
|
|
4
|
+
"daemonIdentity": {
|
|
5
|
+
"publicKey": "BEjeT9qtvf7dbK9yPDuvSgIT_gIuC9_8DdJNtM6yu70uaCxRVd08fy2qBFGWRo_HfQ_Ic8IWNb0I-PaM9El6Bxw",
|
|
6
|
+
"privateKey": "1V4lEUVCsNxmJrw8SKKiloYegBmQXbjg6ULOYaCbExA"
|
|
7
|
+
},
|
|
8
|
+
"clientDeterministicKeys": {
|
|
9
|
+
"staticPrivateKey": "v4lfwcrqWG-_LamDGhdRAKpVCdMdZH9AYp4yVI7pZgs",
|
|
10
|
+
"ephemeralPrivateKey": "Y4yFYdFFptSiqrsWLNb0BF8FujQ4Gp54yOiuUO2wnSw"
|
|
11
|
+
},
|
|
12
|
+
"daemonDeterministicEphemeralPrivateKey": "xwtFlQfRSqj7TfIfVp2cPcD2TrrzTZc-5E61gdW4XjM",
|
|
13
|
+
"vectors": [
|
|
14
|
+
{
|
|
15
|
+
"id": "noise-v3-ik-basic",
|
|
16
|
+
"profile": "noise-ik",
|
|
17
|
+
"requestId": "kex-v3-vector-1",
|
|
18
|
+
"sessionId": "rs_v3_ik_001",
|
|
19
|
+
"epoch": 1,
|
|
20
|
+
"init": {
|
|
21
|
+
"clientEphemeralPublicKey": "BHErztyDPFhPO3RxajbwuTwrAEesaf3--FHDHImukoCoxQIw6ew2a-qL-c6dnQh2bOvKeVgoJTZT2Zx_PJLD0s4",
|
|
22
|
+
"encryptedClientStatic": "9K4kr_VZJmhalGOiYr_IpvLDm0PEp0jDZtSd6YxdOpuNBD1vGD4C1-Pxv6MBQtYJ6I_9lw6e2qW9sIE2ySIhFFFrC97k2e2tO0wc8c_gZleu"
|
|
23
|
+
},
|
|
24
|
+
"response": {
|
|
25
|
+
"daemonEphemeralPublicKey": "BCFLYWYVAiqwpxnxZm11SNq3fv1hFPtla1C9kBqczCEtnAQbFDtdcg9SzT8ko_YoWCBzcEc-XYe3LVTtDVXTWmk",
|
|
26
|
+
"encryptedMetadata": "kh17Tgmt2gdzgTzpZVQHYr7DJ7FmU8Kx-iF0cSoCilnADs4JMDgnHQ71P4aP4m47y54W_VEK",
|
|
27
|
+
"proof": "EsL1rhQdgvL_2AoOh8BWMxNX4VShoDtt3YRlG2HHbxs"
|
|
28
|
+
},
|
|
29
|
+
"sessionKey": "CtfvOunKO94iXJLzudF7smlvEG5lkoxvMh3fvFRVehw"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "noise-v3-ikpsk2-basic",
|
|
33
|
+
"profile": "noise-ikpsk2",
|
|
34
|
+
"requestId": "kex-v3-vector-1",
|
|
35
|
+
"pairingSecret": "uMcC7ZiGjk2YUNTDxbfbvhRHAQ59gVld9ip-w6-ho_g",
|
|
36
|
+
"sessionId": "rs_v3_ikpsk2_001",
|
|
37
|
+
"epoch": 1,
|
|
38
|
+
"init": {
|
|
39
|
+
"clientEphemeralPublicKey": "BHErztyDPFhPO3RxajbwuTwrAEesaf3--FHDHImukoCoxQIw6ew2a-qL-c6dnQh2bOvKeVgoJTZT2Zx_PJLD0s4",
|
|
40
|
+
"encryptedClientStatic": "FrVP0AVl8_uQgoHC2KW_7cmtwkv1oSxYam82utmGOxYduS0tjBU4UZQXv-scDEojEsrhkgQwSRoa7gLR97PIfswEjmS9vHlFtiYoRkdzPlMy"
|
|
41
|
+
},
|
|
42
|
+
"response": {
|
|
43
|
+
"daemonEphemeralPublicKey": "BCFLYWYVAiqwpxnxZm11SNq3fv1hFPtla1C9kBqczCEtnAQbFDtdcg9SzT8ko_YoWCBzcEc-XYe3LVTtDVXTWmk",
|
|
44
|
+
"encryptedMetadata": "hd-OUzTSqxTDw0_o3gRF0VbCU7IUDX9aDbQ9WFisV1oRLvZkQp7mPeFDakxNTzappXSiG5IaU2U_vA",
|
|
45
|
+
"proof": "zx6bUnDrHuanKjH9XBOnyx_m-sVfuL6j_esaWMJS9H0"
|
|
46
|
+
},
|
|
47
|
+
"sessionKey": "bgjWrm-nTtATWBYP1ph0wfFbZSlSbLhOQcCvR8PjrOA"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
package/docs/security.md
CHANGED
|
@@ -19,8 +19,9 @@
|
|
|
19
19
|
- Host header allowlist enforcement.
|
|
20
20
|
- Origin allowlist enforcement.
|
|
21
21
|
- Token auth (`~/.viewport/auth-token`) for protected API/WS.
|
|
22
|
-
- WS auth supports `?token=` query fallback
|
|
23
|
-
-
|
|
22
|
+
- WS auth supports `?token=` query fallback only in `local` profile by default.
|
|
23
|
+
- In `lan`/`relay`, query-token auth is disabled unless `VIEWPORT_ALLOW_QUERY_TOKEN_NON_LOCAL=1`.
|
|
24
|
+
- Tradeoff: query tokens can leak via logs/history, so use `Authorization: Bearer ...` whenever possible.
|
|
24
25
|
- Preferred path is `Authorization: Bearer ...`.
|
|
25
26
|
- WebSocket payload limits, backpressure handling, and rate limiting.
|
|
26
27
|
- Path traversal protection for file APIs.
|