@mandible-ai/mandible 0.3.10 → 0.3.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.
@@ -16,8 +16,6 @@ export { FilesystemEnvironment } from './environments/filesystem/index.js';
16
16
  export { DoltEnvironment } from './environments/dolt/index.js';
17
17
  export { GitHubEnvironment } from './environments/github/index.js';
18
18
  export type { GitHubEnvConfig } from './environments/github/index.js';
19
- export { NetworkEnvironment } from './environments/network/index.js';
20
- export type { NetworkEnvironmentConfig } from './environments/network/index.js';
21
19
  export { DEFAULT_DECAY_POLICY } from './core/types.js';
22
20
  export { generateIdentity, signSignal, createSigner, verifySignature, verifyAttestationChain, verifySignal, createAttestation, prepareForBridge, canonicalHash, attestationHash, } from './core/attestation.js';
23
21
  export { createBridge } from './patterns/bridge.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,IAAI,cAAc,EAC/B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,IAAI,EAEJ,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGjG,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGlF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAIhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGjF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG7H,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEtE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -23,7 +23,6 @@ export { SignalValidationError, validateSignalInput } from './core/validation.js
23
23
  export { FilesystemEnvironment } from './environments/filesystem/index.js';
24
24
  export { DoltEnvironment } from './environments/dolt/index.js';
25
25
  export { GitHubEnvironment } from './environments/github/index.js';
26
- export { NetworkEnvironment } from './environments/network/index.js';
27
26
  // Default policies
28
27
  export { DEFAULT_DECAY_POLICY } from './core/types.js';
29
28
  // Attestation & signing utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAkC/D,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qDAAqD;AACrD,qDAAqD;AACrD,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGvD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAElF,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAIrE,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,kCAAkC;AAClC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAkC/D,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qDAAqD;AACrD,qDAAqD;AACrD,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGvD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAElF,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,kCAAkC;AAClC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mandible-ai/mandible",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "Universal stigmergy framework for autonomous agent coordination — like ant colonies using pheromone trails",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -1,61 +0,0 @@
1
- import type { Environment, Signal, SignalQuery, SignalMeta, Subscription, DecayResult } from '../../core/types.js';
2
- export interface NetworkEnvironmentConfig {
3
- /** Signal server WebSocket URL */
4
- url: string;
5
- /** API key for authentication */
6
- apiKey: string;
7
- /** Project ID for signal isolation */
8
- project: string;
9
- /** Human-readable environment name (default: 'network') */
10
- name?: string;
11
- /** Auto-reconnect on disconnect (default: true) */
12
- reconnect?: boolean;
13
- /** Connection timeout in ms (default: 10000) */
14
- connectTimeout?: number;
15
- }
16
- export declare class NetworkEnvironment implements Environment {
17
- readonly name: string;
18
- readonly url: string;
19
- readonly apiKey: string;
20
- readonly project: string;
21
- private shouldReconnect;
22
- private connectTimeout;
23
- private ws;
24
- private connected;
25
- private intentionalClose;
26
- private attempt;
27
- private msgCounter;
28
- private pingTimer;
29
- private pongTimer;
30
- private reconnectTimer;
31
- private pendingRequests;
32
- private subscriptions;
33
- private connectPromise;
34
- constructor(config: NetworkEnvironmentConfig);
35
- private ensureConnected;
36
- private connect;
37
- private connectWs;
38
- private startKeepalive;
39
- private clearTimers;
40
- private scheduleReconnect;
41
- private rejectAllPending;
42
- private nextId;
43
- private send;
44
- private request;
45
- deposit(input: Omit<Signal, 'id' | 'meta'> & {
46
- meta?: Partial<SignalMeta>;
47
- }): Promise<Signal>;
48
- observe(query: SignalQuery): Promise<Signal[]>;
49
- withdraw(signalId: string): Promise<void>;
50
- claim(signalId: string, claimant: string, leaseDuration?: number): Promise<boolean>;
51
- release(signalId: string): Promise<void>;
52
- watch(query: SignalQuery, callback: (signal: Signal) => void): Subscription;
53
- history(query: SignalQuery & {
54
- includeWithdrawn?: boolean;
55
- }): Promise<Signal[]>;
56
- decay(): Promise<DecayResult>;
57
- snapshot(): Promise<Signal[]>;
58
- /** Disconnect from the signal server and clean up. */
59
- close(): void;
60
- }
61
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/environments/network/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EACxE,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,wBAAwB;IACvC,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,qBAAa,kBAAmB,YAAW,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,cAAc,CAA8B;gBAExC,MAAM,EAAE,wBAAwB;IAa5C,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,OAAO;IAgCf,OAAO,CAAC,SAAS;IAyEjB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,OAAO;IAoBT,OAAO,CACX,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;KAAE,GAClE,OAAO,CAAC,MAAM,CAAC;IAYZ,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,YAAY;IAuCrE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/E,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAK7B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASnC,sDAAsD;IACtD,KAAK,IAAI,IAAI;CAYd"}
@@ -1,317 +0,0 @@
1
- // PURPOSE: NetworkEnvironment — Environment backed by the signal server over WebSocket.
2
- // PURPOSE: Enables colonies in separate zones to share signals through a common signal server substrate.
3
- import WebSocket from 'ws';
4
- const PING_INTERVAL = 30_000;
5
- const PONG_TIMEOUT = 10_000;
6
- const MAX_BACKOFF = 30_000;
7
- const REQUEST_TIMEOUT = 30_000;
8
- const DEFAULT_CONNECT_TIMEOUT = 10_000;
9
- export class NetworkEnvironment {
10
- name;
11
- url;
12
- apiKey;
13
- project;
14
- shouldReconnect;
15
- connectTimeout;
16
- ws = null;
17
- connected = false;
18
- intentionalClose = false;
19
- attempt = 0;
20
- msgCounter = 0;
21
- pingTimer = null;
22
- pongTimer = null;
23
- reconnectTimer = null;
24
- pendingRequests = new Map();
25
- subscriptions = new Map();
26
- connectPromise = null;
27
- constructor(config) {
28
- this.name = config.name ?? 'network';
29
- this.url = config.url;
30
- this.apiKey = config.apiKey;
31
- this.project = config.project;
32
- this.shouldReconnect = config.reconnect !== false;
33
- this.connectTimeout = config.connectTimeout ?? DEFAULT_CONNECT_TIMEOUT;
34
- }
35
- // ----------------------------------------------------------
36
- // Connection lifecycle
37
- // ----------------------------------------------------------
38
- ensureConnected() {
39
- if (this.connected && this.ws?.readyState === WebSocket.OPEN) {
40
- return Promise.resolve();
41
- }
42
- if (this.connectPromise)
43
- return this.connectPromise;
44
- this.connectPromise = this.connect();
45
- return this.connectPromise;
46
- }
47
- connect() {
48
- return new Promise((resolve, reject) => {
49
- let settled = false;
50
- const timeout = setTimeout(() => {
51
- if (!settled) {
52
- settled = true;
53
- this.connectPromise = null;
54
- reject(new Error(`[NetworkEnvironment:${this.name}] connection timeout after ${this.connectTimeout}ms`));
55
- }
56
- }, this.connectTimeout);
57
- this.connectWs(() => {
58
- if (!settled) {
59
- settled = true;
60
- clearTimeout(timeout);
61
- this.connectPromise = null;
62
- resolve();
63
- }
64
- }, (err) => {
65
- if (!settled) {
66
- settled = true;
67
- clearTimeout(timeout);
68
- this.connectPromise = null;
69
- reject(err);
70
- }
71
- });
72
- });
73
- }
74
- connectWs(onAuthenticated, onFailed) {
75
- this.intentionalClose = false;
76
- const socket = new WebSocket(this.url);
77
- this.ws = socket;
78
- socket.on('open', () => {
79
- this.attempt = 0;
80
- socket.send(JSON.stringify({ type: 'auth', apiKey: this.apiKey, project: this.project }));
81
- });
82
- socket.on('message', (raw) => {
83
- let msg;
84
- try {
85
- msg = JSON.parse(typeof raw === 'string' ? raw : raw.toString());
86
- }
87
- catch {
88
- return;
89
- }
90
- if (msg.type === 'authenticated') {
91
- this.connected = true;
92
- this.startKeepalive(socket);
93
- onAuthenticated?.();
94
- }
95
- else if (msg.type === 'result' && msg.id) {
96
- const pending = this.pendingRequests.get(msg.id);
97
- if (pending) {
98
- this.pendingRequests.delete(msg.id);
99
- clearTimeout(pending.timer);
100
- pending.resolve(msg.data);
101
- }
102
- }
103
- else if (msg.type === 'error' && msg.id) {
104
- const pending = this.pendingRequests.get(msg.id);
105
- if (pending) {
106
- this.pendingRequests.delete(msg.id);
107
- clearTimeout(pending.timer);
108
- pending.reject(new Error(`${msg.code ?? 'UNKNOWN'}: ${msg.message ?? 'Unknown error'}`));
109
- }
110
- }
111
- else if (msg.type === 'error' && !msg.id) {
112
- // Broadcast error (e.g. AUTH_FAILED)
113
- const err = new Error(`${msg.code ?? 'UNKNOWN'}: ${msg.message ?? 'Unknown error'}`);
114
- onFailed?.(err);
115
- }
116
- else if (msg.type === 'signal' && msg.signal) {
117
- // Push notification from a subscription
118
- const signal = msg.signal;
119
- const subId = msg.subscriptionId;
120
- if (subId && this.subscriptions.has(subId)) {
121
- this.subscriptions.get(subId)(signal);
122
- }
123
- else {
124
- // Broadcast to all subscriptions (server may not include subscriptionId)
125
- for (const cb of this.subscriptions.values()) {
126
- cb(signal);
127
- }
128
- }
129
- }
130
- });
131
- socket.on('pong', () => {
132
- if (this.pongTimer) {
133
- clearTimeout(this.pongTimer);
134
- this.pongTimer = null;
135
- }
136
- });
137
- socket.on('error', (err) => {
138
- const error = err instanceof Error ? err : new Error(String(err));
139
- onFailed?.(error);
140
- });
141
- socket.on('close', () => {
142
- this.clearTimers();
143
- this.connected = false;
144
- this.ws = null;
145
- this.rejectAllPending('WebSocket closed');
146
- if (!this.intentionalClose && this.shouldReconnect) {
147
- this.scheduleReconnect();
148
- }
149
- });
150
- }
151
- startKeepalive(socket) {
152
- this.pingTimer = setInterval(() => {
153
- if (socket.readyState === WebSocket.OPEN) {
154
- socket.ping();
155
- this.pongTimer = setTimeout(() => {
156
- socket.terminate();
157
- }, PONG_TIMEOUT);
158
- }
159
- }, PING_INTERVAL);
160
- }
161
- clearTimers() {
162
- if (this.pingTimer) {
163
- clearInterval(this.pingTimer);
164
- this.pingTimer = null;
165
- }
166
- if (this.pongTimer) {
167
- clearTimeout(this.pongTimer);
168
- this.pongTimer = null;
169
- }
170
- if (this.reconnectTimer) {
171
- clearTimeout(this.reconnectTimer);
172
- this.reconnectTimer = null;
173
- }
174
- }
175
- scheduleReconnect() {
176
- const delay = Math.min(1000 * 2 ** this.attempt, MAX_BACKOFF);
177
- this.attempt++;
178
- this.reconnectTimer = setTimeout(() => {
179
- if (!this.intentionalClose) {
180
- this.connectPromise = this.connect();
181
- }
182
- }, delay);
183
- }
184
- rejectAllPending(reason) {
185
- for (const [, pending] of this.pendingRequests) {
186
- clearTimeout(pending.timer);
187
- pending.reject(new Error(reason));
188
- }
189
- this.pendingRequests.clear();
190
- }
191
- // ----------------------------------------------------------
192
- // RPC helpers
193
- // ----------------------------------------------------------
194
- nextId() {
195
- return `net_${++this.msgCounter}`;
196
- }
197
- send(msg) {
198
- if (this.ws && this.ws.readyState === WebSocket.OPEN) {
199
- this.ws.send(JSON.stringify(msg));
200
- }
201
- }
202
- request(msg) {
203
- return new Promise((resolve, reject) => {
204
- const id = this.nextId();
205
- const timer = setTimeout(() => {
206
- this.pendingRequests.delete(id);
207
- reject(new Error(`Request timed out: ${msg.type}`));
208
- }, REQUEST_TIMEOUT);
209
- this.pendingRequests.set(id, {
210
- resolve: resolve,
211
- reject,
212
- timer,
213
- });
214
- this.send({ ...msg, id });
215
- });
216
- }
217
- // ----------------------------------------------------------
218
- // Environment interface
219
- // ----------------------------------------------------------
220
- async deposit(input) {
221
- await this.ensureConnected();
222
- return this.request({
223
- type: 'deposit',
224
- signal: {
225
- type: input.type,
226
- payload: input.payload,
227
- meta: input.meta,
228
- },
229
- });
230
- }
231
- async observe(query) {
232
- await this.ensureConnected();
233
- // Strip function predicates — can't serialize to server
234
- const { filter, ...serializableQuery } = query;
235
- const signals = await this.request({ type: 'observe', query: serializableQuery });
236
- // Apply local filter if provided
237
- return filter ? signals.filter(filter) : signals;
238
- }
239
- async withdraw(signalId) {
240
- await this.ensureConnected();
241
- await this.request({ type: 'withdraw', signalId });
242
- }
243
- async claim(signalId, claimant, leaseDuration) {
244
- await this.ensureConnected();
245
- return this.request({ type: 'claim', signalId, claimant, leaseDuration });
246
- }
247
- async release(signalId) {
248
- await this.ensureConnected();
249
- await this.request({ type: 'release', signalId });
250
- }
251
- watch(query, callback) {
252
- let subId = null;
253
- let active = true;
254
- const { filter, ...serializableQuery } = query;
255
- const wrappedCb = filter
256
- ? (signal) => { if (filter(signal))
257
- callback(signal); }
258
- : callback;
259
- const setup = async () => {
260
- await this.ensureConnected();
261
- const result = await this.request({
262
- type: 'subscribe',
263
- query: serializableQuery,
264
- });
265
- if (!active) {
266
- // Unsubscribed before subscribe completed
267
- this.request({ type: 'unsubscribe', subscriptionId: result.subscriptionId }).catch(() => { });
268
- return;
269
- }
270
- subId = result.subscriptionId;
271
- this.subscriptions.set(subId, wrappedCb);
272
- };
273
- setup().catch(() => {
274
- // Connection failed — watch silently fails, will work on reconnect
275
- });
276
- return {
277
- unsubscribe: () => {
278
- active = false;
279
- if (subId) {
280
- this.subscriptions.delete(subId);
281
- this.request({ type: 'unsubscribe', subscriptionId: subId }).catch(() => { });
282
- }
283
- },
284
- };
285
- }
286
- async history(query) {
287
- await this.ensureConnected();
288
- const { filter, ...serializableQuery } = query;
289
- const signals = await this.request({ type: 'history', query: serializableQuery });
290
- return filter ? signals.filter(filter) : signals;
291
- }
292
- async decay() {
293
- await this.ensureConnected();
294
- return this.request({ type: 'decay' });
295
- }
296
- async snapshot() {
297
- await this.ensureConnected();
298
- return this.request({ type: 'snapshot' });
299
- }
300
- // ----------------------------------------------------------
301
- // Lifecycle
302
- // ----------------------------------------------------------
303
- /** Disconnect from the signal server and clean up. */
304
- close() {
305
- this.intentionalClose = true;
306
- this.clearTimers();
307
- this.rejectAllPending('NetworkEnvironment closed');
308
- this.subscriptions.clear();
309
- if (this.ws) {
310
- this.ws.close();
311
- this.ws = null;
312
- }
313
- this.connected = false;
314
- this.connectPromise = null;
315
- }
316
- }
317
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/environments/network/index.ts"],"names":[],"mappings":"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"}