@uxnan/shared 0.0.8-alpha.20260720 → 0.0.9-alpha.20260721
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 +1 -1
- package/dist/src/models/metrics.d.ts +11 -12
- package/dist/src/models/metrics.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ flowchart TB
|
|
|
52
52
|
| JSON-RPC | envelope types + constructors (`makeRequest`, `makeNotification`, `makeResponse`, `makeErrorResponse`), error codes (`JsonRpcErrorCode` + Uxnan-specific `-32000..-32008`), `RpcError`, typed method registry (`JsonRpcMethodRegistry` + `METHOD_NAMES`), `isKnownMethod` |
|
|
53
53
|
| Streaming | `StreamNotification` enum + param types (`TurnStartedParams`, `MessageDeltaParams`, `ThinkingDeltaParams`, `ContentBlockParams`, `TurnCompletedParams`, `TurnUsage`, `TurnErrorParams`, `TurnAbortedParams`, `ModelResolvedParams`) |
|
|
54
54
|
| E2EE | handshake messages (`clientHello` / `serverHello` / `clientAuth` / `ready`), `buildHandshakeTranscript`, `SecureEnvelope`, `PairingPayload` v2 (`relay` optional + `hosts: string[]`) with `Base64(utf8(JSON))` QR encoding |
|
|
55
|
-
| Models | thread / turn / message (with `MessageContent` polymorphic blocks), git, workspace (incl. `browseDirs` + `exists`), project, auth, session/trust (`BridgeStatus` incl. `latestVersion?`/`updateAvailable?`), approval, question (interactive multiple-choice) |
|
|
55
|
+
| Models | thread / turn / message (with `MessageContent` polymorphic blocks), git, workspace (incl. `browseDirs` + `exists`), project, auth, session/trust (`BridgeStatus` incl. `latestVersion?`/`updateAvailable?`), bridge-owned profile metrics (complete-ledger export/import), approval, question (interactive multiple-choice) |
|
|
56
56
|
| Agents | `IAgentAdapter` (with `respondApproval`, `listModels`, `nativeSessionId`, `SendTurnOptions { threadId, turnId, text, service?, effort?, options?, attachments?, cwd?, accessMode? }`), `AgentModel` (incl. `version?`, `isDefault?`, `options?`, `contextWindow?`, `isLatestAlias?`), `AgentCapabilities` (incl. `images`, `approvals`, `reportsContextUsage`), `AgentConfig` (cwd, agentId, model, plus optional `binaryPath`/`extraArgs`) |
|
|
57
57
|
| Version | `compareVersions` / `isNewerVersion` — dependency-free SemVer precedence (used by the bridge's npm update check) |
|
|
58
58
|
| Validation | Ajv validators for requests, responses, envelopes, pairing payload, push payloads |
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* agents/models used, connection time, git actions, an activity heatmap). Those
|
|
7
7
|
* were derived on the phone from local storage and so were lost on an app
|
|
8
8
|
* uninstall (the app has no cloud login). To make them durable, the **bridge**
|
|
9
|
-
* becomes the source of truth: it
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
12
|
-
* snapshot per PC and sums
|
|
9
|
+
* becomes the source of truth: it persists a complete activity ledger
|
|
10
|
+
* (conversations, turns/messages, reported tokens, sessions and Git actions)
|
|
11
|
+
* and serves it over `metrics/get`. Deleting mutable conversation history does
|
|
12
|
+
* not subtract activity. The phone renders one snapshot per PC and sums PCs.
|
|
13
13
|
*
|
|
14
14
|
* A `metrics/export` produces an opaque, tamper-proof file only the SAME bridge
|
|
15
15
|
* can later verify + decrypt (AES-256-GCM under a secret held in the PC's OS
|
|
@@ -76,10 +76,9 @@ export interface MetricsActivityDay {
|
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
78
|
* Aggregated metrics for ONE PC (the bridge that returns it), built from the
|
|
79
|
-
* bridge's
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* cannot inflate — the bridge observes it. Source of `metrics/get`.
|
|
79
|
+
* bridge's durable activity ledger. The phone renders this per PC and sums
|
|
80
|
+
* across PCs for the all-PCs profile. Every field is a count the phone cannot
|
|
81
|
+
* inflate — the bridge observes and retains it. Source of `metrics/get`.
|
|
83
82
|
*/
|
|
84
83
|
export interface MetricsSnapshot {
|
|
85
84
|
/** Schema version, for forward-compatible parsing. */
|
|
@@ -123,7 +122,7 @@ export interface MetricsSnapshot {
|
|
|
123
122
|
updatedAt: number;
|
|
124
123
|
}
|
|
125
124
|
/**
|
|
126
|
-
* `metrics/export` request. The bridge seals its metrics
|
|
125
|
+
* `metrics/export` request. The bridge seals its complete metrics ledger into an
|
|
127
126
|
* opaque, tamper-proof blob that only THIS same bridge can later verify +
|
|
128
127
|
* decrypt (AES-256-GCM under a secret held in the OS keychain). An optional user
|
|
129
128
|
* [passphrase] adds a second confidentiality layer (scrypt-derived), so a leaked
|
|
@@ -145,8 +144,8 @@ export interface MetricsExportResult {
|
|
|
145
144
|
* `metrics/import` request. The phone sends back a previously exported [blob].
|
|
146
145
|
* The bridge verifies it was sealed by THIS PC — a foreign or edited file is
|
|
147
146
|
* rejected — decrypts it (using [passphrase] when the file was passphrase-locked)
|
|
148
|
-
* and merges its
|
|
149
|
-
* nothing). Returns the refreshed snapshot.
|
|
147
|
+
* and merges its ledger rows by id (idempotent: re-importing the same file
|
|
148
|
+
* changes nothing). Returns the refreshed snapshot.
|
|
150
149
|
*/
|
|
151
150
|
export interface MetricsImportParams {
|
|
152
151
|
/** The sealed blob produced by a prior `metrics/export` on this PC. */
|
|
@@ -155,7 +154,7 @@ export interface MetricsImportParams {
|
|
|
155
154
|
passphrase?: string;
|
|
156
155
|
}
|
|
157
156
|
export interface MetricsImportResult {
|
|
158
|
-
/** How many
|
|
157
|
+
/** How many ledger rows were inserted or advanced. */
|
|
159
158
|
imported: number;
|
|
160
159
|
/** The refreshed snapshot after the merge. */
|
|
161
160
|
snapshot: MetricsSnapshot;
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* agents/models used, connection time, git actions, an activity heatmap). Those
|
|
7
7
|
* were derived on the phone from local storage and so were lost on an app
|
|
8
8
|
* uninstall (the app has no cloud login). To make them durable, the **bridge**
|
|
9
|
-
* becomes the source of truth: it
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
12
|
-
* snapshot per PC and sums
|
|
9
|
+
* becomes the source of truth: it persists a complete activity ledger
|
|
10
|
+
* (conversations, turns/messages, reported tokens, sessions and Git actions)
|
|
11
|
+
* and serves it over `metrics/get`. Deleting mutable conversation history does
|
|
12
|
+
* not subtract activity. The phone renders one snapshot per PC and sums PCs.
|
|
13
13
|
*
|
|
14
14
|
* A `metrics/export` produces an opaque, tamper-proof file only the SAME bridge
|
|
15
15
|
* can later verify + decrypt (AES-256-GCM under a secret held in the PC's OS
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxnan/shared",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9-alpha.20260721",
|
|
4
4
|
"description": "Shared JSON-RPC and E2EE contracts for the Uxnan ecosystem (bridge, relay, mobile).",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"author": "Luis Donaldo Gamas Vazquez",
|