@terminals-tech/agent-zero 1.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/README.md +209 -0
- package/bin/agent-zero.js +332 -0
- package/dist/agency/commandRouter.d.ts +48 -0
- package/dist/agency/commandRouter.d.ts.map +1 -0
- package/dist/agency/commandRouter.js +343 -0
- package/dist/agency/commandRouter.js.map +1 -0
- package/dist/agency/runtime.d.ts +66 -0
- package/dist/agency/runtime.d.ts.map +1 -0
- package/dist/agency/runtime.js +247 -0
- package/dist/agency/runtime.js.map +1 -0
- package/dist/agency/summaryGenerator.d.ts +39 -0
- package/dist/agency/summaryGenerator.d.ts.map +1 -0
- package/dist/agency/summaryGenerator.js +110 -0
- package/dist/agency/summaryGenerator.js.map +1 -0
- package/dist/agency/summaryScheduler.d.ts +33 -0
- package/dist/agency/summaryScheduler.d.ts.map +1 -0
- package/dist/agency/summaryScheduler.js +68 -0
- package/dist/agency/summaryScheduler.js.map +1 -0
- package/dist/browser/agent-runtime/RuntimePanel.d.ts +20 -0
- package/dist/browser/agent-runtime/RuntimePanel.d.ts.map +1 -0
- package/dist/browser/agent-runtime/RuntimePanel.js +203 -0
- package/dist/browser/agent-runtime/RuntimePanel.js.map +1 -0
- package/dist/browser/agent-runtime/config.d.ts +28 -0
- package/dist/browser/agent-runtime/config.d.ts.map +1 -0
- package/dist/browser/agent-runtime/config.js +50 -0
- package/dist/browser/agent-runtime/config.js.map +1 -0
- package/dist/browser/agent-runtime/launcher.d.ts +71 -0
- package/dist/browser/agent-runtime/launcher.d.ts.map +1 -0
- package/dist/browser/agent-runtime/launcher.js +167 -0
- package/dist/browser/agent-runtime/launcher.js.map +1 -0
- package/dist/browser/rail-auth-bridge.d.ts +85 -0
- package/dist/browser/rail-auth-bridge.d.ts.map +1 -0
- package/dist/browser/rail-auth-bridge.js +209 -0
- package/dist/browser/rail-auth-bridge.js.map +1 -0
- package/dist/channels/index.d.ts +13 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +12 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/moltbook.d.ts +114 -0
- package/dist/channels/moltbook.d.ts.map +1 -0
- package/dist/channels/moltbook.js +348 -0
- package/dist/channels/moltbook.js.map +1 -0
- package/dist/channels/sms.d.ts +33 -0
- package/dist/channels/sms.d.ts.map +1 -0
- package/dist/channels/sms.js +160 -0
- package/dist/channels/sms.js.map +1 -0
- package/dist/channels/telegram.d.ts +47 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +276 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/twitter.d.ts +93 -0
- package/dist/channels/twitter.d.ts.map +1 -0
- package/dist/channels/twitter.js +411 -0
- package/dist/channels/twitter.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +77 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +514 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/checkout/index.d.ts +92 -0
- package/dist/checkout/index.d.ts.map +1 -0
- package/dist/checkout/index.js +125 -0
- package/dist/checkout/index.js.map +1 -0
- package/dist/cli/moltbook.d.ts +11 -0
- package/dist/cli/moltbook.d.ts.map +1 -0
- package/dist/cli/moltbook.js +259 -0
- package/dist/cli/moltbook.js.map +1 -0
- package/dist/cli/setup.d.ts +10 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +232 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/coherence/absorption.d.ts +141 -0
- package/dist/coherence/absorption.d.ts.map +1 -0
- package/dist/coherence/absorption.js +343 -0
- package/dist/coherence/absorption.js.map +1 -0
- package/dist/coherence/crossPlatform.d.ts +55 -0
- package/dist/coherence/crossPlatform.d.ts.map +1 -0
- package/dist/coherence/crossPlatform.js +219 -0
- package/dist/coherence/crossPlatform.js.map +1 -0
- package/dist/coherence/identityResolver.d.ts +27 -0
- package/dist/coherence/identityResolver.d.ts.map +1 -0
- package/dist/coherence/identityResolver.js +102 -0
- package/dist/coherence/identityResolver.js.map +1 -0
- package/dist/identity/burner.d.ts +100 -0
- package/dist/identity/burner.d.ts.map +1 -0
- package/dist/identity/burner.js +256 -0
- package/dist/identity/burner.js.map +1 -0
- package/dist/identity/burnerScheduler.d.ts +18 -0
- package/dist/identity/burnerScheduler.d.ts.map +1 -0
- package/dist/identity/burnerScheduler.js +82 -0
- package/dist/identity/burnerScheduler.js.map +1 -0
- package/dist/identity/moltbookBurnerAdapter.d.ts +14 -0
- package/dist/identity/moltbookBurnerAdapter.d.ts.map +1 -0
- package/dist/identity/moltbookBurnerAdapter.js +82 -0
- package/dist/identity/moltbookBurnerAdapter.js.map +1 -0
- package/dist/identity/operationalVault.d.ts +108 -0
- package/dist/identity/operationalVault.d.ts.map +1 -0
- package/dist/identity/operationalVault.js +259 -0
- package/dist/identity/operationalVault.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/moltbook/apiErrorHandler.d.ts +48 -0
- package/dist/moltbook/apiErrorHandler.d.ts.map +1 -0
- package/dist/moltbook/apiErrorHandler.js +125 -0
- package/dist/moltbook/apiErrorHandler.js.map +1 -0
- package/dist/moltbook/approvalGate.d.ts +81 -0
- package/dist/moltbook/approvalGate.d.ts.map +1 -0
- package/dist/moltbook/approvalGate.js +211 -0
- package/dist/moltbook/approvalGate.js.map +1 -0
- package/dist/moltbook/attentionField.d.ts +55 -0
- package/dist/moltbook/attentionField.d.ts.map +1 -0
- package/dist/moltbook/attentionField.js +163 -0
- package/dist/moltbook/attentionField.js.map +1 -0
- package/dist/moltbook/contentEnhancer.d.ts +28 -0
- package/dist/moltbook/contentEnhancer.d.ts.map +1 -0
- package/dist/moltbook/contentEnhancer.js +129 -0
- package/dist/moltbook/contentEnhancer.js.map +1 -0
- package/dist/moltbook/daemon.d.ts +111 -0
- package/dist/moltbook/daemon.d.ts.map +1 -0
- package/dist/moltbook/daemon.js +497 -0
- package/dist/moltbook/daemon.js.map +1 -0
- package/dist/moltbook/observer.d.ts +44 -0
- package/dist/moltbook/observer.d.ts.map +1 -0
- package/dist/moltbook/observer.js +71 -0
- package/dist/moltbook/observer.js.map +1 -0
- package/dist/moltbook/responseComposer.d.ts +54 -0
- package/dist/moltbook/responseComposer.d.ts.map +1 -0
- package/dist/moltbook/responseComposer.js +233 -0
- package/dist/moltbook/responseComposer.js.map +1 -0
- package/dist/openclaw/gateway.d.ts +45 -0
- package/dist/openclaw/gateway.d.ts.map +1 -0
- package/dist/openclaw/gateway.js +139 -0
- package/dist/openclaw/gateway.js.map +1 -0
- package/dist/openclaw/skill.d.ts +185 -0
- package/dist/openclaw/skill.d.ts.map +1 -0
- package/dist/openclaw/skill.js +297 -0
- package/dist/openclaw/skill.js.map +1 -0
- package/dist/primitives/index.d.ts +23 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +27 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/types.d.ts +673 -0
- package/dist/primitives/types.d.ts.map +1 -0
- package/dist/primitives/types.js +205 -0
- package/dist/primitives/types.js.map +1 -0
- package/dist/rail/absorptionBridge.d.ts +47 -0
- package/dist/rail/absorptionBridge.d.ts.map +1 -0
- package/dist/rail/absorptionBridge.js +78 -0
- package/dist/rail/absorptionBridge.js.map +1 -0
- package/dist/rail/authProtocol.d.ts +32 -0
- package/dist/rail/authProtocol.d.ts.map +1 -0
- package/dist/rail/authProtocol.js +83 -0
- package/dist/rail/authProtocol.js.map +1 -0
- package/dist/rail/clientRateLimiter.d.ts +17 -0
- package/dist/rail/clientRateLimiter.d.ts.map +1 -0
- package/dist/rail/clientRateLimiter.js +64 -0
- package/dist/rail/clientRateLimiter.js.map +1 -0
- package/dist/rail/index.d.ts +8 -0
- package/dist/rail/index.d.ts.map +1 -0
- package/dist/rail/index.js +38 -0
- package/dist/rail/index.js.map +1 -0
- package/dist/rail/jwtVerifier.d.ts +11 -0
- package/dist/rail/jwtVerifier.d.ts.map +1 -0
- package/dist/rail/jwtVerifier.js +55 -0
- package/dist/rail/jwtVerifier.js.map +1 -0
- package/dist/rail/logger.d.ts +13 -0
- package/dist/rail/logger.d.ts.map +1 -0
- package/dist/rail/logger.js +29 -0
- package/dist/rail/logger.js.map +1 -0
- package/dist/rail/metadataBroadcaster.d.ts +53 -0
- package/dist/rail/metadataBroadcaster.d.ts.map +1 -0
- package/dist/rail/metadataBroadcaster.js +126 -0
- package/dist/rail/metadataBroadcaster.js.map +1 -0
- package/dist/rail/persistence.d.ts +57 -0
- package/dist/rail/persistence.d.ts.map +1 -0
- package/dist/rail/persistence.js +103 -0
- package/dist/rail/persistence.js.map +1 -0
- package/dist/rail/securityMonitor.d.ts +23 -0
- package/dist/rail/securityMonitor.d.ts.map +1 -0
- package/dist/rail/securityMonitor.js +52 -0
- package/dist/rail/securityMonitor.js.map +1 -0
- package/dist/rail/server.d.ts +186 -0
- package/dist/rail/server.d.ts.map +1 -0
- package/dist/rail/server.js +568 -0
- package/dist/rail/server.js.map +1 -0
- package/dist/rail/userSessionManager.d.ts +29 -0
- package/dist/rail/userSessionManager.d.ts.map +1 -0
- package/dist/rail/userSessionManager.js +87 -0
- package/dist/rail/userSessionManager.js.map +1 -0
- package/dist/rail/wsServer.d.ts +39 -0
- package/dist/rail/wsServer.d.ts.map +1 -0
- package/dist/rail/wsServer.js +544 -0
- package/dist/rail/wsServer.js.map +1 -0
- package/dist/resonance/globalKuramoto.d.ts +67 -0
- package/dist/resonance/globalKuramoto.d.ts.map +1 -0
- package/dist/resonance/globalKuramoto.js +161 -0
- package/dist/resonance/globalKuramoto.js.map +1 -0
- package/dist/resonance/index.d.ts +12 -0
- package/dist/resonance/index.d.ts.map +1 -0
- package/dist/resonance/index.js +9 -0
- package/dist/resonance/index.js.map +1 -0
- package/dist/resonance/kuramoto.d.ts +118 -0
- package/dist/resonance/kuramoto.d.ts.map +1 -0
- package/dist/resonance/kuramoto.js +212 -0
- package/dist/resonance/kuramoto.js.map +1 -0
- package/dist/routing/distributedRouter.d.ts +84 -0
- package/dist/routing/distributedRouter.d.ts.map +1 -0
- package/dist/routing/distributedRouter.js +209 -0
- package/dist/routing/distributedRouter.js.map +1 -0
- package/dist/routing/index.d.ts +8 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +7 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/thermodynamic.d.ts +91 -0
- package/dist/routing/thermodynamic.d.ts.map +1 -0
- package/dist/routing/thermodynamic.js +184 -0
- package/dist/routing/thermodynamic.js.map +1 -0
- package/dist/runtime/agent-zero.d.ts +138 -0
- package/dist/runtime/agent-zero.d.ts.map +1 -0
- package/dist/runtime/agent-zero.js +435 -0
- package/dist/runtime/agent-zero.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +15 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/security/capabilities.d.ts +178 -0
- package/dist/security/capabilities.d.ts.map +1 -0
- package/dist/security/capabilities.js +270 -0
- package/dist/security/capabilities.js.map +1 -0
- package/dist/security/channelFirewallMiddleware.d.ts +22 -0
- package/dist/security/channelFirewallMiddleware.d.ts.map +1 -0
- package/dist/security/channelFirewallMiddleware.js +52 -0
- package/dist/security/channelFirewallMiddleware.js.map +1 -0
- package/dist/security/index.d.ts +11 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +11 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/injectionFirewall.d.ts +47 -0
- package/dist/security/injectionFirewall.d.ts.map +1 -0
- package/dist/security/injectionFirewall.js +262 -0
- package/dist/security/injectionFirewall.js.map +1 -0
- package/dist/security/outputSanitizer.d.ts +28 -0
- package/dist/security/outputSanitizer.d.ts.map +1 -0
- package/dist/security/outputSanitizer.js +66 -0
- package/dist/security/outputSanitizer.js.map +1 -0
- package/dist/security/sandbox.d.ts +192 -0
- package/dist/security/sandbox.d.ts.map +1 -0
- package/dist/security/sandbox.js +359 -0
- package/dist/security/sandbox.js.map +1 -0
- package/dist/security/skillVerify.d.ts +128 -0
- package/dist/security/skillVerify.d.ts.map +1 -0
- package/dist/security/skillVerify.js +220 -0
- package/dist/security/skillVerify.js.map +1 -0
- package/dist/security/vault.d.ts +60 -0
- package/dist/security/vault.d.ts.map +1 -0
- package/dist/security/vault.js +522 -0
- package/dist/security/vault.js.map +1 -0
- package/dist/utils/persistentRateLimiter.d.ts +69 -0
- package/dist/utils/persistentRateLimiter.d.ts.map +1 -0
- package/dist/utils/persistentRateLimiter.js +128 -0
- package/dist/utils/persistentRateLimiter.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export function createMoltbookBurnerAdapter(vault, baseUrl = 'https://moltbook.com/api/v1') {
|
|
2
|
+
const VAULT_PREFIX = 'burner:moltbook:';
|
|
3
|
+
async function provision(desiredUsername) {
|
|
4
|
+
const res = await fetchWithRetry(`${baseUrl}/agents/register`, {
|
|
5
|
+
method: 'POST',
|
|
6
|
+
headers: { 'Content-Type': 'application/json' },
|
|
7
|
+
body: JSON.stringify({ username: desiredUsername, type: 'agent' }),
|
|
8
|
+
});
|
|
9
|
+
if (!res.ok) {
|
|
10
|
+
const body = await res.json().catch(() => ({}));
|
|
11
|
+
throw new Error(`Moltbook registration failed: ${res.status} ${body.error || res.statusText}`);
|
|
12
|
+
}
|
|
13
|
+
const data = await res.json();
|
|
14
|
+
const creds = {
|
|
15
|
+
apiToken: data.data.token,
|
|
16
|
+
agentId: data.data.agentId,
|
|
17
|
+
username: desiredUsername,
|
|
18
|
+
registeredAt: Date.now(),
|
|
19
|
+
};
|
|
20
|
+
await vault.store(`${VAULT_PREFIX}${creds.agentId}`, JSON.stringify(creds));
|
|
21
|
+
return creds;
|
|
22
|
+
}
|
|
23
|
+
async function deprovision(agentId) {
|
|
24
|
+
const stored = await vault.retrieve(`${VAULT_PREFIX}${agentId}`);
|
|
25
|
+
if (!stored)
|
|
26
|
+
throw new Error(`No credentials found for agent ${agentId}`);
|
|
27
|
+
const creds = JSON.parse(stored);
|
|
28
|
+
await fetchWithRetry(`${baseUrl}/agents/${agentId}`, {
|
|
29
|
+
method: 'DELETE',
|
|
30
|
+
headers: { Authorization: `Bearer ${creds.apiToken}` },
|
|
31
|
+
});
|
|
32
|
+
await vault.delete(`${VAULT_PREFIX}${agentId}`);
|
|
33
|
+
}
|
|
34
|
+
async function refresh(agentId) {
|
|
35
|
+
const stored = await vault.retrieve(`${VAULT_PREFIX}${agentId}`);
|
|
36
|
+
if (!stored)
|
|
37
|
+
throw new Error(`No credentials found for agent ${agentId}`);
|
|
38
|
+
const old = JSON.parse(stored);
|
|
39
|
+
const res = await fetchWithRetry(`${baseUrl}/agents/${agentId}/refresh`, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: { Authorization: `Bearer ${old.apiToken}` },
|
|
42
|
+
});
|
|
43
|
+
if (!res.ok)
|
|
44
|
+
throw new Error(`Token refresh failed: ${res.status}`);
|
|
45
|
+
const data = await res.json();
|
|
46
|
+
const updated = {
|
|
47
|
+
...old,
|
|
48
|
+
apiToken: data.data.token,
|
|
49
|
+
};
|
|
50
|
+
await vault.rotate(`${VAULT_PREFIX}${agentId}`, JSON.stringify(updated));
|
|
51
|
+
return updated;
|
|
52
|
+
}
|
|
53
|
+
return { provision, deprovision, refresh };
|
|
54
|
+
}
|
|
55
|
+
async function fetchWithRetry(url, opts, maxRetries = 3) {
|
|
56
|
+
let lastError = null;
|
|
57
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
58
|
+
try {
|
|
59
|
+
const res = await fetch(url, opts);
|
|
60
|
+
if (res.status === 429) {
|
|
61
|
+
const retryAfter = parseInt(res.headers.get('retry-after') || '5', 10);
|
|
62
|
+
await sleep(retryAfter * 1000);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (res.status >= 500 && i < maxRetries - 1) {
|
|
66
|
+
await sleep(Math.pow(2, i) * 1000);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
lastError = err;
|
|
73
|
+
if (i < maxRetries - 1)
|
|
74
|
+
await sleep(Math.pow(2, i) * 1000);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw lastError || new Error('fetchWithRetry exhausted');
|
|
78
|
+
}
|
|
79
|
+
function sleep(ms) {
|
|
80
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=moltbookBurnerAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moltbookBurnerAdapter.js","sourceRoot":"","sources":["../../src/identity/moltbookBurnerAdapter.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,2BAA2B,CACzC,KAAY,EACZ,UAAkB,6BAA6B;IAE/C,MAAM,YAAY,GAAG,kBAAkB,CAAC;IAExC,KAAK,UAAU,SAAS,CAAC,eAAuB;QAC9C,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,OAAO,kBAAkB,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA2B,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAkD,CAAC;QAC9E,MAAM,KAAK,GAAwB;YACjC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACzB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC;QAEF,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,OAAe;QACxC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,cAAc,CAAC,GAAG,OAAO,WAAW,OAAO,EAAE,EAAE;YACnD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,QAAQ,EAAE,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,OAAe;QACpC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,OAAO,WAAW,OAAO,UAAU,EAAE;YACvE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,QAAQ,EAAE,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAiC,CAAC;QAE7D,MAAM,OAAO,GAAwB;YACnC,GAAG,GAAG;YACN,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;SAC1B,CAAC;QACF,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,IAAiB,EACjB,UAAU,GAAG,CAAC;IAEd,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvE,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAY,CAAC;YACzB,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational Vault
|
|
3
|
+
*
|
|
4
|
+
* Secure storage for rail secrets, agent enrollments, and interaction metrics.
|
|
5
|
+
* Built on top of the AES-256-GCM Vault. Links enrollments to moltyverse-observable
|
|
6
|
+
* metrics over time, enabling coherence tracking across the Agent Zero ecosystem.
|
|
7
|
+
*
|
|
8
|
+
* Key structure:
|
|
9
|
+
* rail:admin → admin secret
|
|
10
|
+
* rail:endpoint → wss://space.terminals.tech
|
|
11
|
+
* enrollment:{id} → { agentId, secret, enrolledAt, platform, metrics }
|
|
12
|
+
* metrics:{agentId} → { interactions[], coherenceLog[], lastSeen }
|
|
13
|
+
* identity:self → Agent Zero self-identity record
|
|
14
|
+
*/
|
|
15
|
+
import { Vault } from '../security/vault.js';
|
|
16
|
+
export interface Enrollment {
|
|
17
|
+
agentId: string;
|
|
18
|
+
secret: string;
|
|
19
|
+
enrolledAt: number;
|
|
20
|
+
platform: string;
|
|
21
|
+
railEndpoint: string;
|
|
22
|
+
tags: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface InteractionMetric {
|
|
25
|
+
timestamp: number;
|
|
26
|
+
kind: 'join' | 'leave' | 'message' | 'resonate' | 'absorb' | 'spawn' | 'coherence_shift';
|
|
27
|
+
agentId: string;
|
|
28
|
+
details?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
export interface CoherenceSnapshot {
|
|
31
|
+
timestamp: number;
|
|
32
|
+
coherence: number;
|
|
33
|
+
agentCount: number;
|
|
34
|
+
meanPhase: number;
|
|
35
|
+
selfPhase?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface AgentMetrics {
|
|
38
|
+
agentId: string;
|
|
39
|
+
firstSeen: number;
|
|
40
|
+
lastSeen: number;
|
|
41
|
+
interactions: InteractionMetric[];
|
|
42
|
+
coherenceLog: CoherenceSnapshot[];
|
|
43
|
+
totalMessages: number;
|
|
44
|
+
totalResonances: number;
|
|
45
|
+
peakCoherence: number;
|
|
46
|
+
}
|
|
47
|
+
export interface SelfIdentity {
|
|
48
|
+
coreId: string;
|
|
49
|
+
label: string;
|
|
50
|
+
railEndpoint: string;
|
|
51
|
+
enrolledAgents: string[];
|
|
52
|
+
createdAt: number;
|
|
53
|
+
lastActive: number;
|
|
54
|
+
}
|
|
55
|
+
export declare class OperationalVault {
|
|
56
|
+
private vault;
|
|
57
|
+
private metricsBuffer;
|
|
58
|
+
private flushInterval;
|
|
59
|
+
private static readonly MAX_INTERACTIONS;
|
|
60
|
+
private static readonly MAX_COHERENCE_LOG;
|
|
61
|
+
private static readonly FLUSH_INTERVAL_MS;
|
|
62
|
+
private constructor();
|
|
63
|
+
/**
|
|
64
|
+
* Create OperationalVault from an existing Vault instance.
|
|
65
|
+
* This is the preferred method to ensure passphrase consistency.
|
|
66
|
+
*/
|
|
67
|
+
static fromVault(vault: Vault): Promise<OperationalVault>;
|
|
68
|
+
/**
|
|
69
|
+
* Create OperationalVault with a specific passphrase.
|
|
70
|
+
* Requires explicit passphrase — no auto-generation fallback.
|
|
71
|
+
*/
|
|
72
|
+
static open(passphrase: string): Promise<OperationalVault>;
|
|
73
|
+
setRailAdmin(secret: string): Promise<void>;
|
|
74
|
+
getRailAdmin(): Promise<string | null>;
|
|
75
|
+
setRailEndpoint(endpoint: string): Promise<void>;
|
|
76
|
+
getRailEndpoint(): Promise<string | null>;
|
|
77
|
+
enroll(enrollment: Enrollment): Promise<void>;
|
|
78
|
+
getEnrollment(agentId: string): Promise<Enrollment | null>;
|
|
79
|
+
listEnrollments(): Promise<Enrollment[]>;
|
|
80
|
+
revokeEnrollment(agentId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Record an interaction. Buffered in memory, flushed to vault periodically.
|
|
83
|
+
*/
|
|
84
|
+
recordInteraction(metric: InteractionMetric): void;
|
|
85
|
+
/**
|
|
86
|
+
* Record a coherence snapshot — lightweight, goes directly to vault.
|
|
87
|
+
*/
|
|
88
|
+
recordCoherence(snapshot: CoherenceSnapshot): Promise<void>;
|
|
89
|
+
getMetrics(agentId: string): Promise<AgentMetrics | null>;
|
|
90
|
+
/**
|
|
91
|
+
* Get a moltyverse-compatible summary for visualization.
|
|
92
|
+
* Maps metrics to the format expected by the metadata broadcaster.
|
|
93
|
+
*/
|
|
94
|
+
getMoltverseSummary(): Promise<{
|
|
95
|
+
enrolledAgents: number;
|
|
96
|
+
totalInteractions: number;
|
|
97
|
+
peakCoherence: number;
|
|
98
|
+
activeAgents: string[];
|
|
99
|
+
lastActivity: number;
|
|
100
|
+
}>;
|
|
101
|
+
initSelfIdentity(railEndpoint: string): Promise<SelfIdentity>;
|
|
102
|
+
getSelfIdentity(): Promise<SelfIdentity | null>;
|
|
103
|
+
private startFlushLoop;
|
|
104
|
+
flush(): Promise<void>;
|
|
105
|
+
close(): Promise<void>;
|
|
106
|
+
listKeys(): Promise<string[]>;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=operationalVault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationalVault.d.ts","sourceRoot":"","sources":["../../src/identity/operationalVault.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational Vault
|
|
3
|
+
*
|
|
4
|
+
* Secure storage for rail secrets, agent enrollments, and interaction metrics.
|
|
5
|
+
* Built on top of the AES-256-GCM Vault. Links enrollments to moltyverse-observable
|
|
6
|
+
* metrics over time, enabling coherence tracking across the Agent Zero ecosystem.
|
|
7
|
+
*
|
|
8
|
+
* Key structure:
|
|
9
|
+
* rail:admin → admin secret
|
|
10
|
+
* rail:endpoint → wss://space.terminals.tech
|
|
11
|
+
* enrollment:{id} → { agentId, secret, enrolledAt, platform, metrics }
|
|
12
|
+
* metrics:{agentId} → { interactions[], coherenceLog[], lastSeen }
|
|
13
|
+
* identity:self → Agent Zero self-identity record
|
|
14
|
+
*/
|
|
15
|
+
import { createVault } from '../security/vault.js';
|
|
16
|
+
import { randomBytes } from 'crypto';
|
|
17
|
+
// --- Operational Vault ---
|
|
18
|
+
export class OperationalVault {
|
|
19
|
+
vault;
|
|
20
|
+
metricsBuffer = new Map();
|
|
21
|
+
flushInterval = null;
|
|
22
|
+
static MAX_INTERACTIONS = 1000;
|
|
23
|
+
static MAX_COHERENCE_LOG = 500;
|
|
24
|
+
static FLUSH_INTERVAL_MS = 30_000;
|
|
25
|
+
constructor(vault) {
|
|
26
|
+
this.vault = vault;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create OperationalVault from an existing Vault instance.
|
|
30
|
+
* This is the preferred method to ensure passphrase consistency.
|
|
31
|
+
*/
|
|
32
|
+
static async fromVault(vault) {
|
|
33
|
+
const ov = new OperationalVault(vault);
|
|
34
|
+
ov.startFlushLoop();
|
|
35
|
+
return ov;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create OperationalVault with a specific passphrase.
|
|
39
|
+
* Requires explicit passphrase — no auto-generation fallback.
|
|
40
|
+
*/
|
|
41
|
+
static async open(passphrase) {
|
|
42
|
+
const vault = await createVault(passphrase);
|
|
43
|
+
const ov = new OperationalVault(vault);
|
|
44
|
+
ov.startFlushLoop();
|
|
45
|
+
return ov;
|
|
46
|
+
}
|
|
47
|
+
// --- Rail Secrets ---
|
|
48
|
+
async setRailAdmin(secret) {
|
|
49
|
+
await this.vault.store('rail:admin', secret);
|
|
50
|
+
}
|
|
51
|
+
async getRailAdmin() {
|
|
52
|
+
return this.vault.retrieve('rail:admin');
|
|
53
|
+
}
|
|
54
|
+
async setRailEndpoint(endpoint) {
|
|
55
|
+
await this.vault.store('rail:endpoint', endpoint);
|
|
56
|
+
}
|
|
57
|
+
async getRailEndpoint() {
|
|
58
|
+
return this.vault.retrieve('rail:endpoint');
|
|
59
|
+
}
|
|
60
|
+
// --- Enrollments ---
|
|
61
|
+
async enroll(enrollment) {
|
|
62
|
+
const key = `enrollment:${enrollment.agentId}`;
|
|
63
|
+
await this.vault.store(key, JSON.stringify(enrollment));
|
|
64
|
+
// Update self-identity enrollment list
|
|
65
|
+
const self = await this.getSelfIdentity();
|
|
66
|
+
if (self && !self.enrolledAgents.includes(enrollment.agentId)) {
|
|
67
|
+
self.enrolledAgents.push(enrollment.agentId);
|
|
68
|
+
self.lastActive = Date.now();
|
|
69
|
+
await this.vault.store('identity:self', JSON.stringify(self));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async getEnrollment(agentId) {
|
|
73
|
+
const raw = await this.vault.retrieve(`enrollment:${agentId}`);
|
|
74
|
+
if (!raw)
|
|
75
|
+
return null;
|
|
76
|
+
try {
|
|
77
|
+
return JSON.parse(raw);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async listEnrollments() {
|
|
84
|
+
const keys = await this.vault.list();
|
|
85
|
+
const enrollments = [];
|
|
86
|
+
for (const key of keys) {
|
|
87
|
+
if (key.startsWith('enrollment:')) {
|
|
88
|
+
const e = await this.getEnrollment(key.slice('enrollment:'.length));
|
|
89
|
+
if (e)
|
|
90
|
+
enrollments.push(e);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return enrollments;
|
|
94
|
+
}
|
|
95
|
+
async revokeEnrollment(agentId) {
|
|
96
|
+
await this.vault.delete(`enrollment:${agentId}`);
|
|
97
|
+
await this.vault.delete(`metrics:${agentId}`);
|
|
98
|
+
const self = await this.getSelfIdentity();
|
|
99
|
+
if (self) {
|
|
100
|
+
self.enrolledAgents = self.enrolledAgents.filter(id => id !== agentId);
|
|
101
|
+
self.lastActive = Date.now();
|
|
102
|
+
await this.vault.store('identity:self', JSON.stringify(self));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// --- Metrics ---
|
|
106
|
+
/**
|
|
107
|
+
* Record an interaction. Buffered in memory, flushed to vault periodically.
|
|
108
|
+
*/
|
|
109
|
+
recordInteraction(metric) {
|
|
110
|
+
const buf = this.metricsBuffer.get(metric.agentId) ?? [];
|
|
111
|
+
buf.push(metric);
|
|
112
|
+
this.metricsBuffer.set(metric.agentId, buf);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Record a coherence snapshot — lightweight, goes directly to vault.
|
|
116
|
+
*/
|
|
117
|
+
async recordCoherence(snapshot) {
|
|
118
|
+
// Apply to all enrolled agents (coherence is rail-wide)
|
|
119
|
+
const enrollments = await this.listEnrollments();
|
|
120
|
+
for (const e of enrollments) {
|
|
121
|
+
const metrics = await this.getMetrics(e.agentId);
|
|
122
|
+
if (metrics) {
|
|
123
|
+
metrics.coherenceLog.push(snapshot);
|
|
124
|
+
if (metrics.coherenceLog.length > OperationalVault.MAX_COHERENCE_LOG) {
|
|
125
|
+
metrics.coherenceLog = metrics.coherenceLog.slice(-OperationalVault.MAX_COHERENCE_LOG);
|
|
126
|
+
}
|
|
127
|
+
if (snapshot.coherence > metrics.peakCoherence) {
|
|
128
|
+
metrics.peakCoherence = snapshot.coherence;
|
|
129
|
+
}
|
|
130
|
+
await this.vault.store(`metrics:${e.agentId}`, JSON.stringify(metrics));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async getMetrics(agentId) {
|
|
135
|
+
const raw = await this.vault.retrieve(`metrics:${agentId}`);
|
|
136
|
+
if (!raw) {
|
|
137
|
+
// Initialize metrics on first access if enrolled
|
|
138
|
+
const enrollment = await this.getEnrollment(agentId);
|
|
139
|
+
if (!enrollment)
|
|
140
|
+
return null;
|
|
141
|
+
const fresh = {
|
|
142
|
+
agentId,
|
|
143
|
+
firstSeen: enrollment.enrolledAt,
|
|
144
|
+
lastSeen: enrollment.enrolledAt,
|
|
145
|
+
interactions: [],
|
|
146
|
+
coherenceLog: [],
|
|
147
|
+
totalMessages: 0,
|
|
148
|
+
totalResonances: 0,
|
|
149
|
+
peakCoherence: 0,
|
|
150
|
+
};
|
|
151
|
+
await this.vault.store(`metrics:${agentId}`, JSON.stringify(fresh));
|
|
152
|
+
return fresh;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
return JSON.parse(raw);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get a moltyverse-compatible summary for visualization.
|
|
163
|
+
* Maps metrics to the format expected by the metadata broadcaster.
|
|
164
|
+
*/
|
|
165
|
+
async getMoltverseSummary() {
|
|
166
|
+
const enrollments = await this.listEnrollments();
|
|
167
|
+
let totalInteractions = 0;
|
|
168
|
+
let peakCoherence = 0;
|
|
169
|
+
let lastActivity = 0;
|
|
170
|
+
const activeAgents = [];
|
|
171
|
+
for (const e of enrollments) {
|
|
172
|
+
const m = await this.getMetrics(e.agentId);
|
|
173
|
+
if (m) {
|
|
174
|
+
totalInteractions += m.totalMessages + m.totalResonances;
|
|
175
|
+
if (m.peakCoherence > peakCoherence)
|
|
176
|
+
peakCoherence = m.peakCoherence;
|
|
177
|
+
if (m.lastSeen > lastActivity)
|
|
178
|
+
lastActivity = m.lastSeen;
|
|
179
|
+
// Active = seen in last 5 minutes
|
|
180
|
+
if (Date.now() - m.lastSeen < 300_000)
|
|
181
|
+
activeAgents.push(m.agentId);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return { enrolledAgents: enrollments.length, totalInteractions, peakCoherence, activeAgents, lastActivity };
|
|
185
|
+
}
|
|
186
|
+
// --- Self Identity ---
|
|
187
|
+
async initSelfIdentity(railEndpoint) {
|
|
188
|
+
const existing = await this.getSelfIdentity();
|
|
189
|
+
if (existing) {
|
|
190
|
+
existing.lastActive = Date.now();
|
|
191
|
+
existing.railEndpoint = railEndpoint;
|
|
192
|
+
await this.vault.store('identity:self', JSON.stringify(existing));
|
|
193
|
+
return existing;
|
|
194
|
+
}
|
|
195
|
+
const self = {
|
|
196
|
+
coreId: `agent-zero:${randomBytes(8).toString('hex')}`,
|
|
197
|
+
label: 'Agent Zero',
|
|
198
|
+
railEndpoint,
|
|
199
|
+
enrolledAgents: [],
|
|
200
|
+
createdAt: Date.now(),
|
|
201
|
+
lastActive: Date.now(),
|
|
202
|
+
};
|
|
203
|
+
await this.vault.store('identity:self', JSON.stringify(self));
|
|
204
|
+
return self;
|
|
205
|
+
}
|
|
206
|
+
async getSelfIdentity() {
|
|
207
|
+
const raw = await this.vault.retrieve('identity:self');
|
|
208
|
+
if (!raw)
|
|
209
|
+
return null;
|
|
210
|
+
try {
|
|
211
|
+
return JSON.parse(raw);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// --- Flush Loop ---
|
|
218
|
+
startFlushLoop() {
|
|
219
|
+
this.flushInterval = setInterval(() => {
|
|
220
|
+
this.flush().catch(() => { });
|
|
221
|
+
}, OperationalVault.FLUSH_INTERVAL_MS);
|
|
222
|
+
// Don't keep process alive for metrics
|
|
223
|
+
if (this.flushInterval.unref)
|
|
224
|
+
this.flushInterval.unref();
|
|
225
|
+
}
|
|
226
|
+
async flush() {
|
|
227
|
+
for (const [agentId, interactions] of this.metricsBuffer) {
|
|
228
|
+
if (interactions.length === 0)
|
|
229
|
+
continue;
|
|
230
|
+
const metrics = await this.getMetrics(agentId);
|
|
231
|
+
if (!metrics)
|
|
232
|
+
continue;
|
|
233
|
+
metrics.interactions.push(...interactions);
|
|
234
|
+
if (metrics.interactions.length > OperationalVault.MAX_INTERACTIONS) {
|
|
235
|
+
metrics.interactions = metrics.interactions.slice(-OperationalVault.MAX_INTERACTIONS);
|
|
236
|
+
}
|
|
237
|
+
for (const i of interactions) {
|
|
238
|
+
if (i.kind === 'message')
|
|
239
|
+
metrics.totalMessages++;
|
|
240
|
+
if (i.kind === 'resonate')
|
|
241
|
+
metrics.totalResonances++;
|
|
242
|
+
if (i.timestamp > metrics.lastSeen)
|
|
243
|
+
metrics.lastSeen = i.timestamp;
|
|
244
|
+
}
|
|
245
|
+
await this.vault.store(`metrics:${agentId}`, JSON.stringify(metrics));
|
|
246
|
+
}
|
|
247
|
+
this.metricsBuffer.clear();
|
|
248
|
+
}
|
|
249
|
+
async close() {
|
|
250
|
+
if (this.flushInterval)
|
|
251
|
+
clearInterval(this.flushInterval);
|
|
252
|
+
await this.flush();
|
|
253
|
+
}
|
|
254
|
+
// --- Vault Passthrough ---
|
|
255
|
+
async listKeys() {
|
|
256
|
+
return this.vault.list();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=operationalVault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationalVault.js","sourceRoot":"","sources":["../../src/identity/operationalVault.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Zero
|
|
3
|
+
*
|
|
4
|
+
* Secure primitives for autonomous systems.
|
|
5
|
+
* Kuramoto coherence, thermodynamic routing, capability-based security.
|
|
6
|
+
*
|
|
7
|
+
* @package @terminals-tech/agent-zero
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
export * from './primitives/types.js';
|
|
12
|
+
export * from './routing/thermodynamic.js';
|
|
13
|
+
export * from './resonance/kuramoto.js';
|
|
14
|
+
export * from './resonance/globalKuramoto.js';
|
|
15
|
+
export * from './security/sandbox.js';
|
|
16
|
+
export * from './security/vault.js';
|
|
17
|
+
export * from './security/skillVerify.js';
|
|
18
|
+
export * from './security/injectionFirewall.js';
|
|
19
|
+
export * from './security/capabilities.js';
|
|
20
|
+
export * from './identity/burner.js';
|
|
21
|
+
export * from './runtime/agent-zero.js';
|
|
22
|
+
export * from './openclaw/skill.js';
|
|
23
|
+
export * from './openclaw/gateway.js';
|
|
24
|
+
export * from './checkout/index.js';
|
|
25
|
+
export * from './channels/whatsapp.js';
|
|
26
|
+
export * from './channels/telegram.js';
|
|
27
|
+
export * from './rail/server.js';
|
|
28
|
+
export * from './coherence/absorption.js';
|
|
29
|
+
export * from './coherence/crossPlatform.js';
|
|
30
|
+
export * from './moltbook/attentionField.js';
|
|
31
|
+
export * from './moltbook/responseComposer.js';
|
|
32
|
+
export * from './moltbook/approvalGate.js';
|
|
33
|
+
export * from './moltbook/daemon.js';
|
|
34
|
+
export * from './moltbook/observer.js';
|
|
35
|
+
export * from './agency/runtime.js';
|
|
36
|
+
export * from './agency/commandRouter.js';
|
|
37
|
+
export * from './agency/summaryScheduler.js';
|
|
38
|
+
export * from './agency/summaryGenerator.js';
|
|
39
|
+
export declare const VERSION = "1.0.0";
|
|
40
|
+
export declare const RAIL_ENDPOINT = "wss://space.terminals.tech/rail";
|
|
41
|
+
export declare const TERMINALS_TECH_URL = "https://terminals.tech";
|
|
42
|
+
export declare const MOLTYVERSE_URL = "https://moltyverse.live";
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,uBAAuB,CAAC;AAGtC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAG7C,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,aAAa,oCAAoC,CAAC;AAC/D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Zero
|
|
3
|
+
*
|
|
4
|
+
* Secure primitives for autonomous systems.
|
|
5
|
+
* Kuramoto coherence, thermodynamic routing, capability-based security.
|
|
6
|
+
*
|
|
7
|
+
* @package @terminals-tech/agent-zero
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
// Core primitives
|
|
12
|
+
export * from './primitives/types.js';
|
|
13
|
+
// Thermodynamic routing
|
|
14
|
+
export * from './routing/thermodynamic.js';
|
|
15
|
+
// Kuramoto coherence
|
|
16
|
+
export * from './resonance/kuramoto.js';
|
|
17
|
+
export * from './resonance/globalKuramoto.js';
|
|
18
|
+
// Security
|
|
19
|
+
export * from './security/sandbox.js';
|
|
20
|
+
export * from './security/vault.js';
|
|
21
|
+
export * from './security/skillVerify.js';
|
|
22
|
+
export * from './security/injectionFirewall.js';
|
|
23
|
+
export * from './security/capabilities.js';
|
|
24
|
+
// Identity
|
|
25
|
+
export * from './identity/burner.js';
|
|
26
|
+
// Agent Zero runtime
|
|
27
|
+
export * from './runtime/agent-zero.js';
|
|
28
|
+
// OpenClaw skill integration
|
|
29
|
+
export * from './openclaw/skill.js';
|
|
30
|
+
export * from './openclaw/gateway.js';
|
|
31
|
+
// Checkout (self-contained runtime instances)
|
|
32
|
+
export * from './checkout/index.js';
|
|
33
|
+
// Channel connectors
|
|
34
|
+
export * from './channels/whatsapp.js';
|
|
35
|
+
export * from './channels/telegram.js';
|
|
36
|
+
// Resonance rail server
|
|
37
|
+
export * from './rail/server.js';
|
|
38
|
+
// Coherence
|
|
39
|
+
export * from './coherence/absorption.js';
|
|
40
|
+
export * from './coherence/crossPlatform.js';
|
|
41
|
+
// Moltbook
|
|
42
|
+
export * from './moltbook/attentionField.js';
|
|
43
|
+
export * from './moltbook/responseComposer.js';
|
|
44
|
+
export * from './moltbook/approvalGate.js';
|
|
45
|
+
export * from './moltbook/daemon.js';
|
|
46
|
+
export * from './moltbook/observer.js';
|
|
47
|
+
// Agency runtime
|
|
48
|
+
export * from './agency/runtime.js';
|
|
49
|
+
export * from './agency/commandRouter.js';
|
|
50
|
+
export * from './agency/summaryScheduler.js';
|
|
51
|
+
export * from './agency/summaryGenerator.js';
|
|
52
|
+
// Version info
|
|
53
|
+
export const VERSION = '1.0.0';
|
|
54
|
+
export const RAIL_ENDPOINT = 'wss://space.terminals.tech/rail';
|
|
55
|
+
export const TERMINALS_TECH_URL = 'https://terminals.tech';
|
|
56
|
+
export const MOLTYVERSE_URL = 'https://moltyverse.live';
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kBAAkB;AAClB,cAAc,uBAAuB,CAAC;AAEtC,wBAAwB;AACxB,cAAc,4BAA4B,CAAC;AAE3C,qBAAqB;AACrB,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAE9C,WAAW;AACX,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAE3C,WAAW;AACX,cAAc,sBAAsB,CAAC;AAErC,qBAAqB;AACrB,cAAc,yBAAyB,CAAC;AAExC,6BAA6B;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAEtC,8CAA8C;AAC9C,cAAc,qBAAqB,CAAC;AAEpC,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAEvC,wBAAwB;AACxB,cAAc,kBAAkB,CAAC;AAEjC,YAAY;AACZ,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAE7C,WAAW;AACX,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,iBAAiB;AACjB,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAE7C,eAAe;AACf,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Error Handler
|
|
3
|
+
*
|
|
4
|
+
* Resilient error handling for Moltbook API with circuit breaker,
|
|
5
|
+
* exponential backoff retry, and categorized error reporting.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'eventemitter3';
|
|
8
|
+
export type ErrorCategory = 'auth' | 'rate_limit' | 'server' | 'client' | 'network';
|
|
9
|
+
export interface RetryOptions {
|
|
10
|
+
maxRetries?: number;
|
|
11
|
+
baseDelayMs?: number;
|
|
12
|
+
maxDelayMs?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* API error handler with circuit breaker pattern and intelligent retry.
|
|
16
|
+
*
|
|
17
|
+
* Events:
|
|
18
|
+
* - 'error' - {category, error, attempt}
|
|
19
|
+
* - 'auth:expired' - Emitted on 401/403 errors
|
|
20
|
+
* - 'circuit:open' - Circuit breaker opened due to repeated failures
|
|
21
|
+
* - 'circuit:halfopen' - Circuit breaker entering half-open state
|
|
22
|
+
* - 'circuit:closed' - Circuit breaker closed after successful request
|
|
23
|
+
*/
|
|
24
|
+
export declare class ApiErrorHandler extends EventEmitter {
|
|
25
|
+
private circuit;
|
|
26
|
+
/**
|
|
27
|
+
* Categorize an error for handling strategy.
|
|
28
|
+
*/
|
|
29
|
+
categorize(error: unknown): ErrorCategory;
|
|
30
|
+
/**
|
|
31
|
+
* Execute a function with automatic retry and circuit breaker protection.
|
|
32
|
+
*
|
|
33
|
+
* @param fn - Async function to execute
|
|
34
|
+
* @param opts - Retry options (maxRetries, baseDelayMs, maxDelayMs)
|
|
35
|
+
* @returns Result of the function
|
|
36
|
+
* @throws Last encountered error if all retries exhausted
|
|
37
|
+
*/
|
|
38
|
+
executeWithRetry<T>(fn: () => Promise<T>, opts?: RetryOptions): Promise<T>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if circuit breaker is currently open.
|
|
41
|
+
*/
|
|
42
|
+
isCircuitOpen(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Manually reset circuit breaker state.
|
|
45
|
+
*/
|
|
46
|
+
resetCircuit(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=apiErrorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiErrorHandler.d.ts","sourceRoot":"","sources":["../../src/moltbook/apiErrorHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAKb;IAEF;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;IAkBzC;;;;;;;OAOG;IACG,gBAAgB,CAAC,CAAC,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,CAAC,CAAC;IAiEb;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,YAAY,IAAI,IAAI;CAQrB"}
|