instar 1.3.1600 → 1.3.1601

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.
Files changed (73) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +27 -0
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/AppConversationService.d.ts +39 -1
  5. package/dist/core/AppConversationService.d.ts.map +1 -1
  6. package/dist/core/AppConversationService.js +137 -2
  7. package/dist/core/AppConversationService.js.map +1 -1
  8. package/dist/core/AppConversationStore.d.ts +2 -0
  9. package/dist/core/AppConversationStore.d.ts.map +1 -1
  10. package/dist/core/AppConversationStore.js +4 -0
  11. package/dist/core/AppConversationStore.js.map +1 -1
  12. package/dist/core/AppMediaReplicator.d.ts +241 -0
  13. package/dist/core/AppMediaReplicator.d.ts.map +1 -0
  14. package/dist/core/AppMediaReplicator.js +903 -0
  15. package/dist/core/AppMediaReplicator.js.map +1 -0
  16. package/dist/core/AppMediaStore.d.ts +28 -0
  17. package/dist/core/AppMediaStore.d.ts.map +1 -1
  18. package/dist/core/AppMediaStore.js +87 -13
  19. package/dist/core/AppMediaStore.js.map +1 -1
  20. package/dist/core/MeshRpc.d.ts +1 -1
  21. package/dist/core/MeshRpc.d.ts.map +1 -1
  22. package/dist/core/MeshRpc.js +4 -0
  23. package/dist/core/MeshRpc.js.map +1 -1
  24. package/dist/core/PostUpdateMigrator.d.ts +8 -0
  25. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  26. package/dist/core/PostUpdateMigrator.js +35 -2
  27. package/dist/core/PostUpdateMigrator.js.map +1 -1
  28. package/dist/core/WindowRunLivenessAuthority.d.ts.map +1 -1
  29. package/dist/core/WindowRunLivenessAuthority.js +11 -1
  30. package/dist/core/WindowRunLivenessAuthority.js.map +1 -1
  31. package/dist/core/appConversationText.d.ts +5 -0
  32. package/dist/core/appConversationText.d.ts.map +1 -1
  33. package/dist/core/appConversationText.js +17 -2
  34. package/dist/core/appConversationText.js.map +1 -1
  35. package/dist/core/appInboundDispatch.d.ts +14 -0
  36. package/dist/core/appInboundDispatch.d.ts.map +1 -1
  37. package/dist/core/appInboundDispatch.js +25 -0
  38. package/dist/core/appInboundDispatch.js.map +1 -1
  39. package/dist/data/standards-guard-index.json +1 -1
  40. package/dist/data/standards-guard-index.meta.json +2 -2
  41. package/dist/data/standards-registry.meta.json +1 -1
  42. package/dist/native/instar-desktop-host +0 -0
  43. package/dist/server/AgentServer.d.ts.map +1 -1
  44. package/dist/server/AgentServer.js +8 -1
  45. package/dist/server/AgentServer.js.map +1 -1
  46. package/dist/server/CapabilityIndex.js +1 -1
  47. package/dist/server/CapabilityIndex.js.map +1 -1
  48. package/dist/server/mobileConversationRoutes.d.ts +48 -0
  49. package/dist/server/mobileConversationRoutes.d.ts.map +1 -1
  50. package/dist/server/mobileConversationRoutes.js +259 -33
  51. package/dist/server/mobileConversationRoutes.js.map +1 -1
  52. package/dist/server/mobileMediaRoutes.d.ts.map +1 -1
  53. package/dist/server/mobileMediaRoutes.js +11 -1
  54. package/dist/server/mobileMediaRoutes.js.map +1 -1
  55. package/dist/server/mobilePairingRoutes.d.ts.map +1 -1
  56. package/dist/server/mobilePairingRoutes.js +34 -12
  57. package/dist/server/mobilePairingRoutes.js.map +1 -1
  58. package/dist/server/routes.d.ts.map +1 -1
  59. package/dist/server/routes.js +28 -2
  60. package/dist/server/routes.js.map +1 -1
  61. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  62. package/dist/testing/selfActionRegistry.js +41 -0
  63. package/dist/testing/selfActionRegistry.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/data/builtin-manifest.json +64 -64
  66. package/src/data/standards-guard-index.json +1 -1
  67. package/src/data/standards-guard-index.meta.json +2 -2
  68. package/src/data/standards-registry.meta.json +1 -1
  69. package/upgrades/1.3.1601.md +68 -0
  70. package/upgrades/side-effects/mobile-native-chat-media-cross-machine.md +131 -0
  71. package/upgrades/side-effects/native-conversations-gaps.md +129 -0
  72. package/upgrades/side-effects/window-run-liveness-later-loss.md +81 -0
  73. package/upgrades/1.3.1600.md +0 -34
@@ -0,0 +1,241 @@
1
+ import type { AppMediaStore } from './AppMediaStore.js';
2
+ import type { AppConversationStore } from './AppConversationStore.js';
3
+ export declare const APP_MEDIA_SLICE_BYTES: number;
4
+ export declare const MAX_SERVES_AT_ONCE = 2;
5
+ export declare const PULL_TICK_MS = 5000;
6
+ export declare const SLICES_PER_TICK = 8;
7
+ export declare const LOAD_PAUSE_MAX_MS: number;
8
+ export declare const BACKOFF_MIN_MS = 30000;
9
+ export declare const BACKOFF_MAX_MS: number;
10
+ export declare const GIVE_UP_MS: number;
11
+ export declare const PEER_FAILURES_TO_OPEN = 5;
12
+ export declare const PEER_OPEN_MS: number;
13
+ export declare const PEER_OPENS_TO_LATCH = 3;
14
+ export declare const INVENTORY_EVERY_MS: number;
15
+ export declare const INVENTORY_FRESH_MS: number;
16
+ export declare const INVENTORY_PAGE = 5000;
17
+ export declare const INVENTORY_MAX_PAGES = 50;
18
+ export declare const NUDGE_MAX = 500;
19
+ export declare const SINGLE_COPY_GRACE_MS: number;
20
+ export declare const SINGLE_COPY_OFFLINE_MS: number;
21
+ export declare const UNMEASURABLE_ALARM_MS: number;
22
+ /** The owner waits this long for missing blobs before dispatching with "still copying" (§4.12). */
23
+ export declare const OWNER_PULL_WAIT_MS = 60000;
24
+ /** A "still copying" row older than this becomes a "could not be copied" line. */
25
+ export declare const PENDING_DELIVERY_TTL_MS: number;
26
+ /** The app-media-path helper waits this long for a pull (§4.5). */
27
+ export declare const MEDIA_PATH_WAIT_MS = 30000;
28
+ /** The mesh verb. One verb, three operations, all read/observe class. */
29
+ export type AppMediaPullCommand = {
30
+ type: 'app-media-pull';
31
+ op: 'slice' | 'inventory' | 'nudge';
32
+ sha256?: string;
33
+ offset?: number;
34
+ /** inventory: the version the asker already holds (answer `unchanged` or a diff). */
35
+ since?: string;
36
+ /** inventory: page cursor (hashes strictly after this one). */
37
+ after?: string;
38
+ /** nudge: hashes the asker holds alone. */
39
+ hashes?: string[];
40
+ };
41
+ export type SliceAnswer = {
42
+ ok: true;
43
+ size: number;
44
+ offset: number;
45
+ dataB64: string;
46
+ } | {
47
+ ok: false;
48
+ reason: string;
49
+ };
50
+ export type InventoryAnswer = {
51
+ ok: true;
52
+ version: string;
53
+ unchanged: true;
54
+ } | {
55
+ ok: true;
56
+ version: string;
57
+ diff: {
58
+ added: string[];
59
+ removed: string[];
60
+ };
61
+ } | {
62
+ ok: true;
63
+ version: string;
64
+ full: true;
65
+ hashes: string[];
66
+ next: string | null;
67
+ } | {
68
+ ok: false;
69
+ reason: string;
70
+ };
71
+ export interface MeshSendResult {
72
+ ok: boolean;
73
+ status?: number;
74
+ result?: unknown;
75
+ reason?: string;
76
+ }
77
+ export interface AppMediaTransport {
78
+ /** Every registered peer (never this machine); `online: null` when unknown. */
79
+ peers: () => Array<{
80
+ machineId: string;
81
+ nickname?: string;
82
+ online: boolean | null;
83
+ }>;
84
+ send: (machineId: string, command: AppMediaPullCommand, timeoutMs: number) => Promise<MeshSendResult>;
85
+ /** This machine's load verdict (trustworthy-machine-load); absent ⇒ never paused for load. */
86
+ loadVerdict?: () => string;
87
+ }
88
+ export interface AppMediaReplicatorDeps {
89
+ media: AppMediaStore;
90
+ store: AppConversationStore;
91
+ selfId: () => string;
92
+ now?: () => number;
93
+ report?: (detail: string) => void;
94
+ raiseAttention?: (item: {
95
+ conditionKey: string;
96
+ title: string;
97
+ body: string;
98
+ }) => void;
99
+ clearAttention?: (conditionKey: string) => void;
100
+ /** A blob landed on this machine (pending "still copying" rows resolve here). */
101
+ onBlobLanded?: (sha: string) => void;
102
+ }
103
+ export declare class AppMediaReplicator {
104
+ private readonly d;
105
+ private transport;
106
+ private readonly now;
107
+ private readonly db;
108
+ private serving;
109
+ private ticking;
110
+ private wanted;
111
+ private wantedAt;
112
+ private wantedDirty;
113
+ /** On-demand pulls (a download, app-media-path, an owner dispatch) go first and ignore the load pause. */
114
+ private readonly priority;
115
+ private readonly waiters;
116
+ private readonly peerCursor;
117
+ /** The one peer each partial copy comes from (§ blame, above). In memory: after a restart a part with no known source is restarted. */
118
+ private readonly partPeer;
119
+ /** When an on-demand ask or a nudge last skipped this file's backoff (at most once per backoff window). */
120
+ private readonly lastHurryAt;
121
+ private readonly peerInventories;
122
+ private ownInventories;
123
+ private loadPausedSince;
124
+ private lastInventoryRound;
125
+ private inventoryRunning;
126
+ private singleSince;
127
+ private nudgedAt;
128
+ private unmeasurableSince;
129
+ /** First time each held hash was seen held alone (the 24 h offline-peer rule). */
130
+ private readonly singleFirstSeen;
131
+ /** Notice latch: one notice per condition episode, re-armed only when the condition clears. */
132
+ private readonly raised;
133
+ private tickTimer;
134
+ readonly counters: {
135
+ slicesServed: number;
136
+ slicesPulled: number;
137
+ blobsLanded: number;
138
+ verifyFailures: number;
139
+ busyRefusals: number;
140
+ nudgesSent: number;
141
+ };
142
+ constructor(d: AppMediaReplicatorDeps);
143
+ attachTransport(t: AppMediaTransport | null): void;
144
+ hasTransport(): boolean;
145
+ start(): void;
146
+ stop(): void;
147
+ private report;
148
+ /** New events landed (replication or a local send): the wanted list is recomputed on the next tick. */
149
+ markWantedDirty(hashes?: readonly string[]): void;
150
+ private rearm;
151
+ serve(raw: unknown): Promise<SliceAnswer | InventoryAnswer | {
152
+ ok: true;
153
+ queued: number;
154
+ } | {
155
+ ok: false;
156
+ reason: string;
157
+ }>;
158
+ /** Unpurged references from any event this machine holds (live or deleted conversations). */
159
+ private referenced;
160
+ private serveSlice;
161
+ /** This machine's held, unpurged hashes; recomputed at most every 5 minutes, last 3 versions kept for diffs. */
162
+ ownInventory(): {
163
+ version: string;
164
+ hashes: string[];
165
+ };
166
+ private serveInventory;
167
+ private serveNudge;
168
+ /** Referenced, unpurged hashes this machine does not hold. Cached for a minute (or until dirty). */
169
+ private wantedHashes;
170
+ private partPath;
171
+ private removePart;
172
+ private pullRow;
173
+ isUnrecoverable(sha: string): boolean;
174
+ /** Ask for this blob now (download, app-media-path, owner dispatch). */
175
+ want(sha: string): void;
176
+ /**
177
+ * Skip a file's backoff for one immediate attempt, at most once per backoff window: an app
178
+ * polling a download every 2 s, or repeated nudges, can never turn the backoff into a hot loop.
179
+ */
180
+ private hurry;
181
+ /** Whether an on-demand copy can start now; otherwise the plain reason (the download route's 202 vs 404). */
182
+ canFetch(sha: string): {
183
+ ok: true;
184
+ } | {
185
+ ok: false;
186
+ reason: string;
187
+ };
188
+ /** Online peers with a closed breaker that could hold this file (a fresh inventory that lacks it rules a peer out). */
189
+ private candidatePeers;
190
+ private noPeerReason;
191
+ /** On-demand asks waiting for a blob right now (observability and tests). */
192
+ waiterCount(): number;
193
+ /** Resolve true when the blob is held, or false after `ms` (the pull keeps going in the background). */
194
+ awaitBlob(sha: string, ms: number): Promise<boolean>;
195
+ /** Why a blob is not here yet, in plain words (app-media-path's message). */
196
+ whyNotHere(sha: string): string;
197
+ private settleWaiters;
198
+ /** One pull tick. Single-flight; never throws. */
199
+ tick(): Promise<void>;
200
+ /** How many slices this tick may move for background (non-priority) pulls. */
201
+ private backgroundBudget;
202
+ private runTick;
203
+ private peerChoice;
204
+ private advancePeer;
205
+ private pullOneSlice;
206
+ /** Hash the complete part in a worker; keep it only if length and SHA-256 equal the reference. */
207
+ private finishPart;
208
+ /** The file stopped being wanted mid-copy (purged): its partial copy and pull state go, waiters hear no. */
209
+ private dropUnreferenced;
210
+ private landed;
211
+ /** Backoff 30 s → 1 h; unrecoverable after 7 days with no peer serving it. */
212
+ private blobFailure;
213
+ private peerRow;
214
+ breakerOpen(id: string, t?: number): boolean;
215
+ private verifyFailure;
216
+ private peerSuccess;
217
+ /** Fetch every online peer's inventory (diff when possible), then evaluate the alarms. */
218
+ inventoryRound(): Promise<void>;
219
+ private fetchInventory;
220
+ /**
221
+ * Held, unpurged blobs no peer inventory younger than 2 hours lists. `count: null` (never 0)
222
+ * when that cannot be measured: no mesh transport, or a peer whose inventory is old or missing.
223
+ */
224
+ singleCopy(): {
225
+ count: number | null;
226
+ hashes: string[];
227
+ reason: string | null;
228
+ };
229
+ private unrecoverableCount;
230
+ private conversationsOf;
231
+ /** The single-copy alarm ladder (§4.12). Called after each inventory round. */
232
+ evaluateAlarms(): void;
233
+ /** One notice per machine while blobs are unrecoverable (§4.12). */
234
+ evaluateUnrecoverable(): void;
235
+ /** Raise once per condition and reason; a new reason refreshes the same item. */
236
+ private raiseOnce;
237
+ private clearNotice;
238
+ /** Observability for tests and /health. */
239
+ status(): Record<string, unknown>;
240
+ }
241
+ //# sourceMappingURL=AppMediaReplicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppMediaReplicator.d.ts","sourceRoot":"","sources":["../../src/core/AppMediaReplicator.ts"],"names":[],"mappings":"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"}