@terminals-tech/agent-zero 1.0.1 → 2.0.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/agency/commandRouter.d.ts +10 -0
- package/dist/agency/commandRouter.d.ts.map +1 -1
- package/dist/agency/commandRouter.js +206 -0
- package/dist/agency/commandRouter.js.map +1 -1
- package/dist/agency/runtime.d.ts +24 -0
- package/dist/agency/runtime.d.ts.map +1 -1
- package/dist/agency/runtime.js +103 -0
- package/dist/agency/runtime.js.map +1 -1
- package/dist/channels/gemini.d.ts +73 -0
- package/dist/channels/gemini.d.ts.map +1 -0
- package/dist/channels/gemini.js +246 -0
- package/dist/channels/gemini.js.map +1 -0
- package/dist/interop/a2a.d.ts +133 -0
- package/dist/interop/a2a.d.ts.map +1 -0
- package/dist/interop/a2a.js +357 -0
- package/dist/interop/a2a.js.map +1 -0
- package/dist/interop/index.d.ts +10 -0
- package/dist/interop/index.d.ts.map +1 -0
- package/dist/interop/index.js +10 -0
- package/dist/interop/index.js.map +1 -0
- package/dist/interop/mcp.d.ts +111 -0
- package/dist/interop/mcp.d.ts.map +1 -0
- package/dist/interop/mcp.js +337 -0
- package/dist/interop/mcp.js.map +1 -0
- package/dist/moltbook/approvalGate.d.ts +23 -0
- package/dist/moltbook/approvalGate.d.ts.map +1 -1
- package/dist/moltbook/approvalGate.js +45 -0
- package/dist/moltbook/approvalGate.js.map +1 -1
- package/dist/moltbook/attentionField.d.ts +14 -0
- package/dist/moltbook/attentionField.d.ts.map +1 -1
- package/dist/moltbook/attentionField.js +37 -1
- package/dist/moltbook/attentionField.js.map +1 -1
- package/dist/moltbook/daemon.d.ts +24 -0
- package/dist/moltbook/daemon.d.ts.map +1 -1
- package/dist/moltbook/daemon.js +164 -0
- package/dist/moltbook/daemon.js.map +1 -1
- package/dist/moltbook/responseComposer.d.ts +7 -2
- package/dist/moltbook/responseComposer.d.ts.map +1 -1
- package/dist/moltbook/responseComposer.js +36 -7
- package/dist/moltbook/responseComposer.js.map +1 -1
- package/dist/moltbook/strategicContext.d.ts +89 -0
- package/dist/moltbook/strategicContext.d.ts.map +1 -0
- package/dist/moltbook/strategicContext.js +283 -0
- package/dist/moltbook/strategicContext.js.map +1 -0
- package/dist/primitives/index.d.ts +6 -2
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +6 -2
- package/dist/primitives/index.js.map +1 -1
- package/dist/rail/persistence.d.ts +70 -1
- package/dist/rail/persistence.d.ts.map +1 -1
- package/dist/rail/persistence.js +270 -3
- package/dist/rail/persistence.js.map +1 -1
- package/dist/rail/plugin.d.ts +76 -0
- package/dist/rail/plugin.d.ts.map +1 -0
- package/dist/rail/plugin.js +141 -0
- package/dist/rail/plugin.js.map +1 -0
- package/dist/rail/server.d.ts +121 -30
- package/dist/rail/server.d.ts.map +1 -1
- package/dist/rail/server.js +404 -28
- package/dist/rail/server.js.map +1 -1
- package/dist/rail/wsServer.d.ts +7 -0
- package/dist/rail/wsServer.d.ts.map +1 -1
- package/dist/rail/wsServer.js +233 -11
- package/dist/rail/wsServer.js.map +1 -1
- package/dist/resonance/globalKuramoto.d.ts +20 -0
- package/dist/resonance/globalKuramoto.d.ts.map +1 -1
- package/dist/resonance/globalKuramoto.js +93 -2
- package/dist/resonance/globalKuramoto.js.map +1 -1
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +1 -0
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/modelRegistry.d.ts +54 -0
- package/dist/routing/modelRegistry.d.ts.map +1 -0
- package/dist/routing/modelRegistry.js +150 -0
- package/dist/routing/modelRegistry.js.map +1 -0
- package/dist/routing/thermodynamic.d.ts +12 -3
- package/dist/routing/thermodynamic.d.ts.map +1 -1
- package/dist/routing/thermodynamic.js +19 -9
- package/dist/routing/thermodynamic.js.map +1 -1
- package/dist/runtime/agent-zero.d.ts +38 -2
- package/dist/runtime/agent-zero.d.ts.map +1 -1
- package/dist/runtime/agent-zero.js +104 -7
- package/dist/runtime/agent-zero.js.map +1 -1
- package/dist/runtime/contextWindow.d.ts +62 -0
- package/dist/runtime/contextWindow.d.ts.map +1 -0
- package/dist/runtime/contextWindow.js +125 -0
- package/dist/runtime/contextWindow.js.map +1 -0
- package/dist/runtime/identity.d.ts +65 -0
- package/dist/runtime/identity.d.ts.map +1 -0
- package/dist/runtime/identity.js +199 -0
- package/dist/runtime/identity.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/sessionStore.d.ts +70 -0
- package/dist/runtime/sessionStore.d.ts.map +1 -0
- package/dist/runtime/sessionStore.js +134 -0
- package/dist/runtime/sessionStore.js.map +1 -0
- package/dist/security/capabilities.d.ts +46 -0
- package/dist/security/capabilities.d.ts.map +1 -1
- package/dist/security/capabilities.js +176 -0
- package/dist/security/capabilities.js.map +1 -1
- package/dist/security/combinators.d.ts +89 -0
- package/dist/security/combinators.d.ts.map +1 -0
- package/dist/security/combinators.js +168 -0
- package/dist/security/combinators.js.map +1 -0
- package/dist/security/index.d.ts +7 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +4 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/isolation.d.ts +76 -0
- package/dist/security/isolation.d.ts.map +1 -0
- package/dist/security/isolation.js +118 -0
- package/dist/security/isolation.js.map +1 -0
- package/dist/security/sandbox.d.ts +38 -1
- package/dist/security/sandbox.d.ts.map +1 -1
- package/dist/security/sandbox.js +68 -8
- package/dist/security/sandbox.js.map +1 -1
- package/package.json +12 -3
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Network-wide phase synchronization with TTL enforcement,
|
|
5
5
|
* adaptive coupling, and flood attack detection.
|
|
6
6
|
*/
|
|
7
|
-
import { KuramotoEngine } from './kuramoto.js';
|
|
7
|
+
import { KuramotoEngine, computeCoherence } from './kuramoto.js';
|
|
8
8
|
const DEFAULT_GLOBAL_CONFIG = {
|
|
9
9
|
frequencyVariance: 0.1,
|
|
10
10
|
couplingStrength: 0.5,
|
|
@@ -19,6 +19,7 @@ const DEFAULT_GLOBAL_CONFIG = {
|
|
|
19
19
|
minCoupling: 0.1,
|
|
20
20
|
maxCoupling: 1.5,
|
|
21
21
|
groupthinkThreshold: 0.95,
|
|
22
|
+
crossModelCouplingFactor: 0.7,
|
|
22
23
|
};
|
|
23
24
|
export class GlobalKuramotoEngine {
|
|
24
25
|
engine;
|
|
@@ -62,6 +63,7 @@ export class GlobalKuramotoEngine {
|
|
|
62
63
|
lastReported: Date.now(),
|
|
63
64
|
networkLatency: 0,
|
|
64
65
|
trustScore: 1.0,
|
|
66
|
+
modelType: observer.modelType,
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
69
|
removeAgent(agentId) {
|
|
@@ -71,10 +73,63 @@ export class GlobalKuramotoEngine {
|
|
|
71
73
|
}
|
|
72
74
|
tick() {
|
|
73
75
|
const result = this.engine.tick();
|
|
76
|
+
// Post-tick: apply cross-model coupling reduction
|
|
77
|
+
this.applyCrossModelCorrection();
|
|
74
78
|
if (this.config.adaptiveCoupling) {
|
|
75
79
|
this.adaptCoupling(result.coherence);
|
|
76
80
|
}
|
|
77
|
-
|
|
81
|
+
// Recompute coherence after correction
|
|
82
|
+
const correctedCoherence = this.engine.getCoherence();
|
|
83
|
+
return { coherence: correctedCoherence, phases: result.phases, adaptedK: this.currentCoupling };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Apply reduced coupling between oscillators of different model types.
|
|
87
|
+
* The base KuramotoEngine applies uniform coupling K to all pairs.
|
|
88
|
+
* This post-tick step partially reverts phase changes from cross-model
|
|
89
|
+
* pairs so they effectively couple at K * crossModelCouplingFactor.
|
|
90
|
+
*/
|
|
91
|
+
applyCrossModelCorrection() {
|
|
92
|
+
const oscillators = this.engine.getOscillators();
|
|
93
|
+
const factor = this.config.crossModelCouplingFactor ?? 0.7;
|
|
94
|
+
const N = oscillators.length;
|
|
95
|
+
// No correction needed if factor is 1 or fewer than 2 oscillators
|
|
96
|
+
if (factor >= 1.0 || N < 2)
|
|
97
|
+
return;
|
|
98
|
+
// Check if any oscillators have model types assigned
|
|
99
|
+
let hasModelTypes = false;
|
|
100
|
+
for (const osc of oscillators) {
|
|
101
|
+
const meta = this.networkMeta.get(osc.id);
|
|
102
|
+
if (meta?.modelType) {
|
|
103
|
+
hasModelTypes = true;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (!hasModelTypes)
|
|
108
|
+
return;
|
|
109
|
+
for (const osc of oscillators) {
|
|
110
|
+
const meta = this.networkMeta.get(osc.id);
|
|
111
|
+
if (!meta?.modelType)
|
|
112
|
+
continue;
|
|
113
|
+
let crossModelInfluence = 0;
|
|
114
|
+
for (const other of oscillators) {
|
|
115
|
+
if (other.id === osc.id)
|
|
116
|
+
continue;
|
|
117
|
+
const otherMeta = this.networkMeta.get(other.id);
|
|
118
|
+
if (otherMeta?.modelType && otherMeta.modelType !== meta.modelType) {
|
|
119
|
+
crossModelInfluence += Math.sin(other.phase - osc.phase);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// The engine applied full coupling K/N * sin(diff) * dt to all pairs.
|
|
123
|
+
// Cross-model pairs should only couple at factor * K, so revert (1-factor) portion.
|
|
124
|
+
if (crossModelInfluence !== 0) {
|
|
125
|
+
const revertAmount = (this.currentCoupling / N) *
|
|
126
|
+
crossModelInfluence *
|
|
127
|
+
(1 - factor) *
|
|
128
|
+
(this.config.dt / 1000);
|
|
129
|
+
osc.phase -= revertAmount;
|
|
130
|
+
osc.observer.phase = osc.phase;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
78
133
|
}
|
|
79
134
|
adaptCoupling(coherence) {
|
|
80
135
|
if (coherence < this.config.coherenceThreshold) {
|
|
@@ -118,6 +173,42 @@ export class GlobalKuramotoEngine {
|
|
|
118
173
|
}
|
|
119
174
|
return false;
|
|
120
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Calculate per-model-type Kuramoto order parameter.
|
|
178
|
+
* Groups oscillators by modelType and computes coherence within each group.
|
|
179
|
+
* Oscillators without a modelType are grouped under the key 'unknown'.
|
|
180
|
+
*/
|
|
181
|
+
getCoherenceByModel() {
|
|
182
|
+
const oscillators = this.engine.getOscillators();
|
|
183
|
+
const groups = new Map();
|
|
184
|
+
for (const osc of oscillators) {
|
|
185
|
+
const meta = this.networkMeta.get(osc.id);
|
|
186
|
+
const modelType = meta?.modelType ?? 'unknown';
|
|
187
|
+
const group = groups.get(modelType);
|
|
188
|
+
if (group) {
|
|
189
|
+
group.push(osc);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
groups.set(modelType, [osc]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const result = new Map();
|
|
196
|
+
for (const [modelType, oscs] of groups) {
|
|
197
|
+
result.set(modelType, computeCoherence(oscs));
|
|
198
|
+
}
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Check if any model-specific cluster exceeds the groupthink threshold.
|
|
203
|
+
*/
|
|
204
|
+
getGroupthinkByModel() {
|
|
205
|
+
const coherenceByModel = this.getCoherenceByModel();
|
|
206
|
+
const result = new Map();
|
|
207
|
+
for (const [modelType, coherence] of coherenceByModel) {
|
|
208
|
+
result.set(modelType, coherence > this.config.groupthinkThreshold);
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
121
212
|
// Compatibility methods for drop-in replacement of KuramotoEngine in server.ts
|
|
122
213
|
addObserver(observer) {
|
|
123
214
|
this.addAgent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalKuramoto.js","sourceRoot":"","sources":["../../src/resonance/globalKuramoto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAwC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"globalKuramoto.js","sourceRoot":"","sources":["../../src/resonance/globalKuramoto.ts"],"names":[],"mappings":"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"}
|
package/dist/routing/index.d.ts
CHANGED
|
@@ -5,4 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { ThermodynamicRouter, computeEnergy, softmax, sample, cosineSimilarity, findNearestWell, DEFAULT_ROUTER_CONFIG, } from './thermodynamic.js';
|
|
7
7
|
export type { RouterConfig } from './thermodynamic.js';
|
|
8
|
+
export { ModelRegistry, generateDeterministicEmbedding, } from './modelRegistry.js';
|
|
9
|
+
export type { ModelEntry, ModelCapability, } from './modelRegistry.js';
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EACL,aAAa,EACb,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,UAAU,EACV,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
|
package/dist/routing/index.js
CHANGED
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
* Thermodynamic message routing via Boltzmann sampling.
|
|
5
5
|
*/
|
|
6
6
|
export { ThermodynamicRouter, computeEnergy, softmax, sample, cosineSimilarity, findNearestWell, DEFAULT_ROUTER_CONFIG, } from './thermodynamic.js';
|
|
7
|
+
export { ModelRegistry, generateDeterministicEmbedding, } from './modelRegistry.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,aAAa,EACb,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry
|
|
3
|
+
*
|
|
4
|
+
* Registry of available AI models with capabilities, costs, and identity
|
|
5
|
+
* embeddings for semantic routing. Identity embeddings enable the
|
|
6
|
+
* thermodynamic router to factor model affinity into energy calculations.
|
|
7
|
+
*/
|
|
8
|
+
export interface ModelCapability {
|
|
9
|
+
name: string;
|
|
10
|
+
strength: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ModelEntry {
|
|
13
|
+
id: string;
|
|
14
|
+
provider: 'anthropic' | 'google' | 'openai' | 'openrouter';
|
|
15
|
+
name: string;
|
|
16
|
+
capabilities: ModelCapability[];
|
|
17
|
+
costPer1kTokens: number;
|
|
18
|
+
maxContextTokens: number;
|
|
19
|
+
supportsStreaming: boolean;
|
|
20
|
+
supportsTools: boolean;
|
|
21
|
+
identityEmbedding: number[];
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate a deterministic 768-dim unit embedding from a seed string.
|
|
26
|
+
* Uses a simple LCG seeded from the string hash for reproducibility.
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateDeterministicEmbedding(seed: string): number[];
|
|
29
|
+
export declare class ModelRegistry {
|
|
30
|
+
private models;
|
|
31
|
+
register(entry: ModelEntry): void;
|
|
32
|
+
unregister(modelId: string): void;
|
|
33
|
+
get(modelId: string): ModelEntry | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Find models that have a specific capability, optionally above a minimum strength.
|
|
36
|
+
*/
|
|
37
|
+
findByCapability(capabilityName: string, minStrength?: number): ModelEntry[];
|
|
38
|
+
/**
|
|
39
|
+
* Find the model whose identity embedding is closest to the task embedding.
|
|
40
|
+
* Optionally filters by max cost per 1k tokens.
|
|
41
|
+
*/
|
|
42
|
+
findBestMatch(taskEmbedding: number[], maxCost?: number): ModelEntry | null;
|
|
43
|
+
/**
|
|
44
|
+
* Estimate cost in USD for a given model and token counts.
|
|
45
|
+
* Returns 0 if model is not found.
|
|
46
|
+
*/
|
|
47
|
+
estimateCost(modelId: string, inputTokens: number, outputTokens: number): number;
|
|
48
|
+
listAll(): ModelEntry[];
|
|
49
|
+
/**
|
|
50
|
+
* Create a registry pre-populated with default model entries.
|
|
51
|
+
*/
|
|
52
|
+
static createWithDefaults(): ModelRegistry;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=modelRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelRegistry.d.ts","sourceRoot":"","sources":["../../src/routing/modelRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAcrE;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsC;IAEpD,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIjC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI5C;;OAEG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,UAAU,EAAE;IAW/E;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAiB3E;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAMhF,OAAO,IAAI,UAAU,EAAE;IAIvB;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,aAAa;CAmE3C"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry
|
|
3
|
+
*
|
|
4
|
+
* Registry of available AI models with capabilities, costs, and identity
|
|
5
|
+
* embeddings for semantic routing. Identity embeddings enable the
|
|
6
|
+
* thermodynamic router to factor model affinity into energy calculations.
|
|
7
|
+
*/
|
|
8
|
+
import { cosineSimilarity } from './thermodynamic.js';
|
|
9
|
+
/**
|
|
10
|
+
* Generate a deterministic 768-dim unit embedding from a seed string.
|
|
11
|
+
* Uses a simple LCG seeded from the string hash for reproducibility.
|
|
12
|
+
*/
|
|
13
|
+
export function generateDeterministicEmbedding(seed) {
|
|
14
|
+
let hash = 0;
|
|
15
|
+
for (let i = 0; i < seed.length; i++) {
|
|
16
|
+
hash = ((hash << 5) - hash + seed.charCodeAt(i)) | 0;
|
|
17
|
+
}
|
|
18
|
+
const embedding = new Array(768);
|
|
19
|
+
for (let i = 0; i < 768; i++) {
|
|
20
|
+
hash = (hash * 1103515245 + 12345) & 0x7fffffff;
|
|
21
|
+
embedding[i] = (hash / 0x7fffffff) * 2 - 1;
|
|
22
|
+
}
|
|
23
|
+
// Normalize to unit vector
|
|
24
|
+
const norm = Math.sqrt(embedding.reduce((s, v) => s + v * v, 0));
|
|
25
|
+
if (norm === 0)
|
|
26
|
+
return embedding;
|
|
27
|
+
return embedding.map(v => v / norm);
|
|
28
|
+
}
|
|
29
|
+
export class ModelRegistry {
|
|
30
|
+
models = new Map();
|
|
31
|
+
register(entry) {
|
|
32
|
+
this.models.set(entry.id, entry);
|
|
33
|
+
}
|
|
34
|
+
unregister(modelId) {
|
|
35
|
+
this.models.delete(modelId);
|
|
36
|
+
}
|
|
37
|
+
get(modelId) {
|
|
38
|
+
return this.models.get(modelId);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Find models that have a specific capability, optionally above a minimum strength.
|
|
42
|
+
*/
|
|
43
|
+
findByCapability(capabilityName, minStrength = 0) {
|
|
44
|
+
const results = [];
|
|
45
|
+
for (const model of this.models.values()) {
|
|
46
|
+
const cap = model.capabilities.find(c => c.name === capabilityName);
|
|
47
|
+
if (cap && cap.strength >= minStrength) {
|
|
48
|
+
results.push(model);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Find the model whose identity embedding is closest to the task embedding.
|
|
55
|
+
* Optionally filters by max cost per 1k tokens.
|
|
56
|
+
*/
|
|
57
|
+
findBestMatch(taskEmbedding, maxCost) {
|
|
58
|
+
let bestModel = null;
|
|
59
|
+
let bestSimilarity = -Infinity;
|
|
60
|
+
for (const model of this.models.values()) {
|
|
61
|
+
if (maxCost !== undefined && model.costPer1kTokens > maxCost)
|
|
62
|
+
continue;
|
|
63
|
+
const similarity = cosineSimilarity(taskEmbedding, model.identityEmbedding);
|
|
64
|
+
if (similarity > bestSimilarity) {
|
|
65
|
+
bestSimilarity = similarity;
|
|
66
|
+
bestModel = model;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return bestModel;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Estimate cost in USD for a given model and token counts.
|
|
73
|
+
* Returns 0 if model is not found.
|
|
74
|
+
*/
|
|
75
|
+
estimateCost(modelId, inputTokens, outputTokens) {
|
|
76
|
+
const model = this.models.get(modelId);
|
|
77
|
+
if (!model)
|
|
78
|
+
return 0;
|
|
79
|
+
return model.costPer1kTokens * ((inputTokens + outputTokens) / 1000);
|
|
80
|
+
}
|
|
81
|
+
listAll() {
|
|
82
|
+
return Array.from(this.models.values());
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a registry pre-populated with default model entries.
|
|
86
|
+
*/
|
|
87
|
+
static createWithDefaults() {
|
|
88
|
+
const registry = new ModelRegistry();
|
|
89
|
+
registry.register({
|
|
90
|
+
id: 'claude-opus-4',
|
|
91
|
+
provider: 'anthropic',
|
|
92
|
+
name: 'Claude Opus 4',
|
|
93
|
+
capabilities: [
|
|
94
|
+
{ name: 'reasoning', strength: 0.95 },
|
|
95
|
+
{ name: 'code', strength: 0.9 },
|
|
96
|
+
],
|
|
97
|
+
costPer1kTokens: 0.015,
|
|
98
|
+
maxContextTokens: 200000,
|
|
99
|
+
supportsStreaming: true,
|
|
100
|
+
supportsTools: true,
|
|
101
|
+
identityEmbedding: generateDeterministicEmbedding('claude-opus-4'),
|
|
102
|
+
});
|
|
103
|
+
registry.register({
|
|
104
|
+
id: 'claude-sonnet-4',
|
|
105
|
+
provider: 'anthropic',
|
|
106
|
+
name: 'Claude Sonnet 4',
|
|
107
|
+
capabilities: [
|
|
108
|
+
{ name: 'reasoning', strength: 0.85 },
|
|
109
|
+
{ name: 'code', strength: 0.85 },
|
|
110
|
+
],
|
|
111
|
+
costPer1kTokens: 0.003,
|
|
112
|
+
maxContextTokens: 200000,
|
|
113
|
+
supportsStreaming: true,
|
|
114
|
+
supportsTools: true,
|
|
115
|
+
identityEmbedding: generateDeterministicEmbedding('claude-sonnet-4'),
|
|
116
|
+
});
|
|
117
|
+
registry.register({
|
|
118
|
+
id: 'gemini-2.5-flash',
|
|
119
|
+
provider: 'google',
|
|
120
|
+
name: 'Gemini 2.5 Flash',
|
|
121
|
+
capabilities: [
|
|
122
|
+
{ name: 'reasoning', strength: 0.8 },
|
|
123
|
+
{ name: 'code', strength: 0.75 },
|
|
124
|
+
{ name: 'search', strength: 0.9 },
|
|
125
|
+
],
|
|
126
|
+
costPer1kTokens: 0.0001,
|
|
127
|
+
maxContextTokens: 1000000,
|
|
128
|
+
supportsStreaming: true,
|
|
129
|
+
supportsTools: true,
|
|
130
|
+
identityEmbedding: generateDeterministicEmbedding('gemini-2.5-flash'),
|
|
131
|
+
});
|
|
132
|
+
registry.register({
|
|
133
|
+
id: 'gemini-2.5-pro',
|
|
134
|
+
provider: 'google',
|
|
135
|
+
name: 'Gemini 2.5 Pro',
|
|
136
|
+
capabilities: [
|
|
137
|
+
{ name: 'reasoning', strength: 0.9 },
|
|
138
|
+
{ name: 'code', strength: 0.85 },
|
|
139
|
+
{ name: 'vision', strength: 0.9 },
|
|
140
|
+
],
|
|
141
|
+
costPer1kTokens: 0.00125,
|
|
142
|
+
maxContextTokens: 1000000,
|
|
143
|
+
supportsStreaming: true,
|
|
144
|
+
supportsTools: true,
|
|
145
|
+
identityEmbedding: generateDeterministicEmbedding('gemini-2.5-pro'),
|
|
146
|
+
});
|
|
147
|
+
return registry;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=modelRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelRegistry.js","sourceRoot":"","sources":["../../src/routing/modelRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,14 +20,20 @@ export interface RouterConfig {
|
|
|
20
20
|
coherenceWeight: number;
|
|
21
21
|
/** Weight for semantic distance */
|
|
22
22
|
semanticWeight: number;
|
|
23
|
+
/** Weight for model affinity bonus (default 0) */
|
|
24
|
+
modelWeight?: number;
|
|
23
25
|
/** Annealing schedule */
|
|
24
26
|
annealingSchedule: 'none' | 'linear' | 'exponential' | 'adaptive';
|
|
25
27
|
}
|
|
26
28
|
export declare const DEFAULT_ROUTER_CONFIG: RouterConfig;
|
|
27
29
|
/**
|
|
28
|
-
* Compute energy for routing a message to a specific agent
|
|
30
|
+
* Compute energy for routing a message to a specific agent.
|
|
31
|
+
* Lower energy = higher probability of selection.
|
|
32
|
+
*
|
|
33
|
+
* Model affinity is an optional bonus: when the model's identity embedding
|
|
34
|
+
* is semantically close to the message, energy decreases (better fit).
|
|
29
35
|
*/
|
|
30
|
-
export declare function computeEnergy(messageEmbedding: number[], agent: Observer, agentLoad: number, agentCoherence: number, agentAttractor: number[], config: RouterConfig): number;
|
|
36
|
+
export declare function computeEnergy(messageEmbedding: number[], agent: Observer, agentLoad: number, agentCoherence: number, agentAttractor: number[], config: RouterConfig, modelEmbedding?: number[]): number;
|
|
31
37
|
/**
|
|
32
38
|
* Softmax with temperature for Boltzmann distribution
|
|
33
39
|
*/
|
|
@@ -53,13 +59,15 @@ export declare class ThermodynamicRouter {
|
|
|
53
59
|
private step;
|
|
54
60
|
constructor(config?: Partial<RouterConfig>);
|
|
55
61
|
/**
|
|
56
|
-
* Route a message to the optimal agent using thermodynamic sampling
|
|
62
|
+
* Route a message to the optimal agent using thermodynamic sampling.
|
|
63
|
+
* Agents may optionally carry a modelEmbedding for model-affinity routing.
|
|
57
64
|
*/
|
|
58
65
|
route(message: Message, agents: Array<{
|
|
59
66
|
observer: Observer;
|
|
60
67
|
load: number;
|
|
61
68
|
coherence: number;
|
|
62
69
|
attractor: number[];
|
|
70
|
+
modelEmbedding?: number[];
|
|
63
71
|
}>): Observer;
|
|
64
72
|
/**
|
|
65
73
|
* Get energy landscape for visualization
|
|
@@ -69,6 +77,7 @@ export declare class ThermodynamicRouter {
|
|
|
69
77
|
load: number;
|
|
70
78
|
coherence: number;
|
|
71
79
|
attractor: number[];
|
|
80
|
+
modelEmbedding?: number[];
|
|
72
81
|
}>): Map<string, {
|
|
73
82
|
energy: number;
|
|
74
83
|
probability: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermodynamic.d.ts","sourceRoot":"","sources":["../../src/routing/thermodynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEjG,wEAAwE;AACxE,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;CACnE;AAED,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"thermodynamic.d.ts","sourceRoot":"","sources":["../../src/routing/thermodynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEjG,wEAAwE;AACxE,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;CACnE;AAED,eAAO,MAAM,qBAAqB,EAAE,YAOnC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,YAAY,EACpB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAYzE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAYhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAmBjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,WAAW,EAAE,GACnB,WAAW,GAAG,IAAI,CAepB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAa;gBAEb,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAK9C;;;OAGG;IACH,KAAK,CACH,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,GACD,QAAQ;IAoCX;;OAEG;IACH,eAAe,CACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,GACD,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA4BvD;;OAEG;IACH,OAAO,CAAC,MAAM;IAqBd;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -12,23 +12,32 @@
|
|
|
12
12
|
export const MIN_TEMPERATURE = 0.01;
|
|
13
13
|
export const DEFAULT_ROUTER_CONFIG = {
|
|
14
14
|
temperature: 1.0,
|
|
15
|
-
loadWeight: 0.
|
|
15
|
+
loadWeight: 0.2,
|
|
16
16
|
coherenceWeight: 0.2,
|
|
17
|
-
semanticWeight: 0.
|
|
17
|
+
semanticWeight: 0.3,
|
|
18
|
+
modelWeight: 0.3,
|
|
18
19
|
annealingSchedule: 'adaptive',
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
21
|
-
* Compute energy for routing a message to a specific agent
|
|
22
|
+
* Compute energy for routing a message to a specific agent.
|
|
23
|
+
* Lower energy = higher probability of selection.
|
|
24
|
+
*
|
|
25
|
+
* Model affinity is an optional bonus: when the model's identity embedding
|
|
26
|
+
* is semantically close to the message, energy decreases (better fit).
|
|
22
27
|
*/
|
|
23
|
-
export function computeEnergy(messageEmbedding, agent, agentLoad, agentCoherence, agentAttractor, config) {
|
|
28
|
+
export function computeEnergy(messageEmbedding, agent, agentLoad, agentCoherence, agentAttractor, config, modelEmbedding) {
|
|
24
29
|
// Semantic distance (cosine similarity inverted)
|
|
25
30
|
const semanticDistance = 1 - cosineSimilarity(messageEmbedding, agentAttractor);
|
|
26
31
|
// Load penalty (busy agents cost more)
|
|
27
32
|
const loadPenalty = agentLoad * config.loadWeight;
|
|
28
33
|
// Coherence bonus (aligned agents cost less)
|
|
29
34
|
const coherenceBonus = agentCoherence * config.coherenceWeight;
|
|
30
|
-
//
|
|
31
|
-
|
|
35
|
+
// Model affinity bonus: how well does the model's identity match the task?
|
|
36
|
+
const modelAffinity = modelEmbedding
|
|
37
|
+
? cosineSimilarity(messageEmbedding, modelEmbedding) * (config.modelWeight ?? 0)
|
|
38
|
+
: 0;
|
|
39
|
+
// Total energy (affinity is a bonus, so subtracted)
|
|
40
|
+
return (semanticDistance * config.semanticWeight) + loadPenalty - coherenceBonus - modelAffinity;
|
|
32
41
|
}
|
|
33
42
|
/**
|
|
34
43
|
* Softmax with temperature for Boltzmann distribution
|
|
@@ -107,7 +116,8 @@ export class ThermodynamicRouter {
|
|
|
107
116
|
this.temperature = this.config.temperature;
|
|
108
117
|
}
|
|
109
118
|
/**
|
|
110
|
-
* Route a message to the optimal agent using thermodynamic sampling
|
|
119
|
+
* Route a message to the optimal agent using thermodynamic sampling.
|
|
120
|
+
* Agents may optionally carry a modelEmbedding for model-affinity routing.
|
|
111
121
|
*/
|
|
112
122
|
route(message, agents) {
|
|
113
123
|
if (agents.length === 0) {
|
|
@@ -118,7 +128,7 @@ export class ThermodynamicRouter {
|
|
|
118
128
|
}
|
|
119
129
|
const messageEmbedding = message.embedding ?? new Array(768).fill(0);
|
|
120
130
|
// Compute energies for all agents
|
|
121
|
-
const energies = agents.map(agent => computeEnergy(messageEmbedding, agent.observer, agent.load, agent.coherence, agent.attractor, this.config));
|
|
131
|
+
const energies = agents.map(agent => computeEnergy(messageEmbedding, agent.observer, agent.load, agent.coherence, agent.attractor, this.config, agent.modelEmbedding));
|
|
122
132
|
// Convert to probabilities via Boltzmann distribution
|
|
123
133
|
const probabilities = softmax(energies, this.temperature);
|
|
124
134
|
// Sample from distribution
|
|
@@ -132,7 +142,7 @@ export class ThermodynamicRouter {
|
|
|
132
142
|
*/
|
|
133
143
|
energyLandscape(message, agents) {
|
|
134
144
|
const messageEmbedding = message.embedding ?? new Array(768).fill(0);
|
|
135
|
-
const energies = agents.map(agent => computeEnergy(messageEmbedding, agent.observer, agent.load, agent.coherence, agent.attractor, this.config));
|
|
145
|
+
const energies = agents.map(agent => computeEnergy(messageEmbedding, agent.observer, agent.load, agent.coherence, agent.attractor, this.config, agent.modelEmbedding));
|
|
136
146
|
const probabilities = softmax(energies, this.temperature);
|
|
137
147
|
const landscape = new Map();
|
|
138
148
|
for (let i = 0; i < agents.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermodynamic.js","sourceRoot":"","sources":["../../src/routing/thermodynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"thermodynamic.js","sourceRoot":"","sources":["../../src/routing/thermodynamic.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,14 @@ import { EventEmitter } from 'eventemitter3';
|
|
|
13
13
|
import type { AgentZeroState, AgentState, Message, MessageKind, Token, Realizability } from '../primitives/types.js';
|
|
14
14
|
import { type RouterConfig } from '../routing/thermodynamic.js';
|
|
15
15
|
import { type KuramotoConfig } from '../resonance/kuramoto.js';
|
|
16
|
+
import { AgentIsolationManager } from '../security/isolation.js';
|
|
17
|
+
import type { SessionStore, SessionSnapshot } from './sessionStore.js';
|
|
18
|
+
import { type ContextWindowConfig } from './contextWindow.js';
|
|
16
19
|
export interface AgentZeroConfig {
|
|
17
20
|
/** Agent name */
|
|
18
21
|
name: string;
|
|
22
|
+
/** Parent agent ID (set when spawned as a child) */
|
|
23
|
+
parentId?: string;
|
|
19
24
|
/** Observation frequency (Hz) */
|
|
20
25
|
frequency?: number;
|
|
21
26
|
/** Thermodynamic router config */
|
|
@@ -28,8 +33,14 @@ export interface AgentZeroConfig {
|
|
|
28
33
|
darkSensitivity?: number;
|
|
29
34
|
/** Tick rate (ms) */
|
|
30
35
|
tickRate?: number;
|
|
36
|
+
/** Session persistence store */
|
|
37
|
+
sessionStore?: SessionStore;
|
|
38
|
+
/** Context window management config */
|
|
39
|
+
contextWindow?: Partial<ContextWindowConfig>;
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
/** Phase correction coupling strength for resonate messages */
|
|
42
|
+
export declare const RESONANCE_COUPLING = 0.3;
|
|
43
|
+
export declare const DEFAULT_AGENT_ZERO_CONFIG: Required<Omit<AgentZeroConfig, 'name' | 'parentId' | 'sessionStore' | 'contextWindow'>>;
|
|
33
44
|
export interface AgentZeroEvents {
|
|
34
45
|
'state:change': (oldState: AgentState, newState: AgentState) => void;
|
|
35
46
|
'message:received': (message: Message) => void;
|
|
@@ -50,6 +61,7 @@ export interface TickStats {
|
|
|
50
61
|
export declare class AgentZero extends EventEmitter<AgentZeroEvents> {
|
|
51
62
|
readonly id: string;
|
|
52
63
|
readonly name: string;
|
|
64
|
+
readonly parentId?: string;
|
|
53
65
|
private state;
|
|
54
66
|
private observer;
|
|
55
67
|
private tokens;
|
|
@@ -60,6 +72,9 @@ export declare class AgentZero extends EventEmitter<AgentZeroEvents> {
|
|
|
60
72
|
private kuramoto;
|
|
61
73
|
private sandbox;
|
|
62
74
|
private capability;
|
|
75
|
+
private isolationManager;
|
|
76
|
+
private sessionStore?;
|
|
77
|
+
private contextWindow?;
|
|
63
78
|
private inbox;
|
|
64
79
|
private outbox;
|
|
65
80
|
private children;
|
|
@@ -107,7 +122,12 @@ export declare class AgentZero extends EventEmitter<AgentZeroEvents> {
|
|
|
107
122
|
private handleSpawn;
|
|
108
123
|
private handleHalt;
|
|
109
124
|
/**
|
|
110
|
-
* Spawn a child agent
|
|
125
|
+
* Spawn a child agent.
|
|
126
|
+
*
|
|
127
|
+
* Enforces:
|
|
128
|
+
* - Sandbox capability check for 'spawn' scope
|
|
129
|
+
* - maxSpawnDepth limit via isolation boundaries
|
|
130
|
+
* - Creates isolation boundary with attenuated capabilities
|
|
111
131
|
*/
|
|
112
132
|
spawn(config: AgentZeroConfig): AgentZero | null;
|
|
113
133
|
/**
|
|
@@ -122,6 +142,22 @@ export declare class AgentZero extends EventEmitter<AgentZeroEvents> {
|
|
|
122
142
|
getTemperature(): number;
|
|
123
143
|
setTemperature(temp: number): void;
|
|
124
144
|
getChildren(): AgentZero[];
|
|
145
|
+
getIsolationManager(): AgentIsolationManager;
|
|
146
|
+
/**
|
|
147
|
+
* Save current agent state as a session snapshot.
|
|
148
|
+
* Requires a sessionStore to be configured.
|
|
149
|
+
*/
|
|
150
|
+
saveSession(): Promise<SessionSnapshot>;
|
|
151
|
+
/**
|
|
152
|
+
* Restore agent state from a session snapshot.
|
|
153
|
+
* Requires a sessionStore to be configured.
|
|
154
|
+
*/
|
|
155
|
+
restoreSession(snapshotId: string): Promise<void>;
|
|
156
|
+
/**
|
|
157
|
+
* Apply a snapshot to this agent's internal state.
|
|
158
|
+
* Called by SessionStore.restore().
|
|
159
|
+
*/
|
|
160
|
+
restoreFromSnapshot(snapshot: SessionSnapshot): void;
|
|
125
161
|
/**
|
|
126
162
|
* Start the agent
|
|
127
163
|
*/
|