@mandible-ai/mandible 0.3.7 → 0.3.9
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 +30 -4
- package/dist/src/environments/network/index.d.ts +61 -0
- package/dist/src/environments/network/index.d.ts.map +1 -0
- package/dist/src/environments/network/index.js +317 -0
- package/dist/src/environments/network/index.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -288,6 +288,8 @@ Action providers wrap external capabilities into a standard interface for colony
|
|
|
288
288
|
|
|
289
289
|
The provider assembles context by walking signal lineage (`caused_by` chains), giving the agent full awareness of the work pipeline state.
|
|
290
290
|
|
|
291
|
+
See [Action Providers Guide](docs/how-to/action-providers.md) for full configuration reference, output mapping, and context assembly.
|
|
292
|
+
|
|
291
293
|
## Signal types
|
|
292
294
|
|
|
293
295
|
Signal types use a `domain:state` convention and support glob patterns for sensing:
|
|
@@ -345,7 +347,7 @@ const env = new GitHubEnvironment({
|
|
|
345
347
|
|
|
346
348
|
### Writing your own
|
|
347
349
|
|
|
348
|
-
Implement the `Environment` interface:
|
|
350
|
+
Implement the `Environment` interface (see [Custom Environment Guide](docs/how-to/custom-environment.md) for a full walkthrough):
|
|
349
351
|
|
|
350
352
|
```typescript
|
|
351
353
|
interface Environment {
|
|
@@ -380,7 +382,7 @@ Built-in hosts: `local()` (in-process), `docker()` (containers). Cloud hosts liv
|
|
|
380
382
|
|
|
381
383
|
## Patterns
|
|
382
384
|
|
|
383
|
-
Reusable coordination patterns built on top of the core primitives.
|
|
385
|
+
Reusable coordination patterns built on top of the core primitives. See [Bridging Signals](docs/how-to/bridge-signals.md) and [Monitoring Trust](docs/how-to/monitor-trust.md) for detailed usage.
|
|
384
386
|
|
|
385
387
|
### SignalBridge
|
|
386
388
|
|
|
@@ -399,9 +401,25 @@ const bridge = createBridge({
|
|
|
399
401
|
await bridge.start();
|
|
400
402
|
```
|
|
401
403
|
|
|
404
|
+
### DebugBridge
|
|
405
|
+
|
|
406
|
+
One-way gate from a signal server into a local environment. Enables ad-hoc testing from the cloud console — deposit a signal in the console and it flows through the WebSocket into the colony's real environment.
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
import { createDebugBridge } from '@mandible-ai/mandible';
|
|
410
|
+
|
|
411
|
+
const bridge = createDebugBridge({
|
|
412
|
+
url: 'wss://signals.mandible.cloud/ws',
|
|
413
|
+
apiKey: 'mnd_...',
|
|
414
|
+
project: 'my-project',
|
|
415
|
+
environment: localEnv,
|
|
416
|
+
});
|
|
417
|
+
await bridge.start();
|
|
418
|
+
```
|
|
419
|
+
|
|
402
420
|
### Sentinel
|
|
403
421
|
|
|
404
|
-
Trust monitoring colony that watches an environment for signals with invalid or missing provenance. When violations are detected, the sentinel deposits `
|
|
422
|
+
Trust monitoring colony that watches an environment for signals with invalid or missing provenance. When violations are detected, the sentinel deposits `sentinel:flagged` report signals that other colonies can react to.
|
|
405
423
|
|
|
406
424
|
```typescript
|
|
407
425
|
import { createSentinel } from '@mandible-ai/mandible';
|
|
@@ -446,6 +464,7 @@ src/
|
|
|
446
464
|
context.ts Context assembly from signal lineage
|
|
447
465
|
patterns/
|
|
448
466
|
bridge.ts SignalBridge — cross-environment mirroring with attestation
|
|
467
|
+
debug-bridge.ts DebugBridge — signal server → environment gate
|
|
449
468
|
sentinel.ts Sentinel — trust monitoring and violation reporting
|
|
450
469
|
|
|
451
470
|
tests/
|
|
@@ -456,6 +475,13 @@ tests/
|
|
|
456
475
|
providers/ Agent, structured output, bash provider tests
|
|
457
476
|
colonies/ Integration tests for colony workflows
|
|
458
477
|
|
|
478
|
+
docs/
|
|
479
|
+
how-to/
|
|
480
|
+
bridge-signals.md SignalBridge + DebugBridge usage guide
|
|
481
|
+
action-providers.md withClaudeCode, withStructuredOutput, withBash reference
|
|
482
|
+
monitor-trust.md Sentinel pattern + trust policies
|
|
483
|
+
custom-environment.md Implementing the Environment interface
|
|
484
|
+
|
|
459
485
|
examples/
|
|
460
486
|
code-pipeline/
|
|
461
487
|
colonies.ts Shared colony definitions (shaper, critic, keeper)
|
|
@@ -508,7 +534,7 @@ Both colonies are wired to real Claude agents via `withClaudeCode`. The dashboar
|
|
|
508
534
|
|
|
509
535
|
- [x] `mandible dev` CLI + live dashboard
|
|
510
536
|
- [x] `withClaudeCode` wired to Claude Code SDK
|
|
511
|
-
- [x] Test suite (
|
|
537
|
+
- [x] Test suite (473 tests, 95%+ coverage)
|
|
512
538
|
- [x] GitHub environment adapter
|
|
513
539
|
- [x] `mandible()` DSL with Host/Environment separation
|
|
514
540
|
- [x] `local()` and `docker()` host implementations
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,317 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/environments/network/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ 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';
|
|
19
21
|
export { DEFAULT_DECAY_POLICY } from './core/types.js';
|
|
20
22
|
export { generateIdentity, signSignal, createSigner, verifySignature, verifyAttestationChain, verifySignal, createAttestation, prepareForBridge, canonicalHash, attestationHash, } from './core/attestation.js';
|
|
21
23
|
export { createBridge } from './patterns/bridge.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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,6 +23,7 @@ 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';
|
|
26
27
|
// Default policies
|
|
27
28
|
export { DEFAULT_DECAY_POLICY } from './core/types.js';
|
|
28
29
|
// Attestation & signing utilities
|
package/dist/src/index.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/package.json
CHANGED