@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,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill-Specific Capability Enforcement
|
|
3
|
+
*
|
|
4
|
+
* Extends IsomorphicSandbox with OpenClaw skill integration.
|
|
5
|
+
* Parses SKILL.md frontmatter capability declarations and enforces
|
|
6
|
+
* scoped access during skill execution.
|
|
7
|
+
*
|
|
8
|
+
* Security Model:
|
|
9
|
+
* - Skills declare required capabilities in frontmatter (filesystem, network, spawn, etc.)
|
|
10
|
+
* - SkillCapabilityManager creates attenuated capability from root
|
|
11
|
+
* - All skill operations checked against declared capabilities
|
|
12
|
+
* - Escalation attempts denied and logged as violations
|
|
13
|
+
* - Capability revocation kills tracked processes
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { IsomorphicSandbox, CapabilityScope, BoundaryViolation } from './sandbox.js';
|
|
17
|
+
export declare const SkillCapabilityDeclaration: z.ZodObject<{
|
|
18
|
+
/** Filesystem access (glob patterns) */
|
|
19
|
+
filesystem: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
20
|
+
/** Network access (domain patterns) */
|
|
21
|
+
network: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
22
|
+
/** Max child agents to spawn */
|
|
23
|
+
spawn: z.ZodDefault<z.ZodNumber>;
|
|
24
|
+
/** Memory limit in bytes */
|
|
25
|
+
memory: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
/** Execute permission */
|
|
27
|
+
execute: z.ZodDefault<z.ZodBoolean>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
memory: number;
|
|
30
|
+
spawn: number;
|
|
31
|
+
execute: boolean;
|
|
32
|
+
network: string[];
|
|
33
|
+
filesystem: string[];
|
|
34
|
+
}, {
|
|
35
|
+
memory?: number | undefined;
|
|
36
|
+
spawn?: number | undefined;
|
|
37
|
+
execute?: boolean | undefined;
|
|
38
|
+
network?: string[] | undefined;
|
|
39
|
+
filesystem?: string[] | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
export type SkillCapabilityDeclaration = z.infer<typeof SkillCapabilityDeclaration>;
|
|
42
|
+
export declare const SkillExecutionContext: z.ZodObject<{
|
|
43
|
+
/** Skill name */
|
|
44
|
+
skillName: z.ZodString;
|
|
45
|
+
/** Declared capabilities */
|
|
46
|
+
declaration: z.ZodObject<{
|
|
47
|
+
/** Filesystem access (glob patterns) */
|
|
48
|
+
filesystem: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
49
|
+
/** Network access (domain patterns) */
|
|
50
|
+
network: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
51
|
+
/** Max child agents to spawn */
|
|
52
|
+
spawn: z.ZodDefault<z.ZodNumber>;
|
|
53
|
+
/** Memory limit in bytes */
|
|
54
|
+
memory: z.ZodDefault<z.ZodNumber>;
|
|
55
|
+
/** Execute permission */
|
|
56
|
+
execute: z.ZodDefault<z.ZodBoolean>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
memory: number;
|
|
59
|
+
spawn: number;
|
|
60
|
+
execute: boolean;
|
|
61
|
+
network: string[];
|
|
62
|
+
filesystem: string[];
|
|
63
|
+
}, {
|
|
64
|
+
memory?: number | undefined;
|
|
65
|
+
spawn?: number | undefined;
|
|
66
|
+
execute?: boolean | undefined;
|
|
67
|
+
network?: string[] | undefined;
|
|
68
|
+
filesystem?: string[] | undefined;
|
|
69
|
+
}>;
|
|
70
|
+
/** Capability token from sandbox */
|
|
71
|
+
capabilityToken: z.ZodString;
|
|
72
|
+
/** Tracked process ID (if spawned) */
|
|
73
|
+
pid: z.ZodNullable<z.ZodNumber>;
|
|
74
|
+
/** Execution start timestamp */
|
|
75
|
+
startedAt: z.ZodNumber;
|
|
76
|
+
/** Accumulated violations */
|
|
77
|
+
violations: z.ZodArray<z.ZodObject<{
|
|
78
|
+
type: z.ZodEnum<["scope_denied", "resource_denied", "capability_expired", "capability_revoked", "injection_detected", "boundary_crossed"]>;
|
|
79
|
+
message: z.ZodString;
|
|
80
|
+
capability: z.ZodOptional<z.ZodString>;
|
|
81
|
+
resource: z.ZodOptional<z.ZodString>;
|
|
82
|
+
timestamp: z.ZodNumber;
|
|
83
|
+
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
message: string;
|
|
85
|
+
type: "scope_denied" | "resource_denied" | "capability_expired" | "capability_revoked" | "injection_detected" | "boundary_crossed";
|
|
86
|
+
timestamp: number;
|
|
87
|
+
capability?: string | undefined;
|
|
88
|
+
resource?: string | undefined;
|
|
89
|
+
}, {
|
|
90
|
+
message: string;
|
|
91
|
+
type: "scope_denied" | "resource_denied" | "capability_expired" | "capability_revoked" | "injection_detected" | "boundary_crossed";
|
|
92
|
+
timestamp: number;
|
|
93
|
+
capability?: string | undefined;
|
|
94
|
+
resource?: string | undefined;
|
|
95
|
+
}>, "many">;
|
|
96
|
+
}, "strip", z.ZodTypeAny, {
|
|
97
|
+
skillName: string;
|
|
98
|
+
declaration: {
|
|
99
|
+
memory: number;
|
|
100
|
+
spawn: number;
|
|
101
|
+
execute: boolean;
|
|
102
|
+
network: string[];
|
|
103
|
+
filesystem: string[];
|
|
104
|
+
};
|
|
105
|
+
capabilityToken: string;
|
|
106
|
+
pid: number | null;
|
|
107
|
+
startedAt: number;
|
|
108
|
+
violations: {
|
|
109
|
+
message: string;
|
|
110
|
+
type: "scope_denied" | "resource_denied" | "capability_expired" | "capability_revoked" | "injection_detected" | "boundary_crossed";
|
|
111
|
+
timestamp: number;
|
|
112
|
+
capability?: string | undefined;
|
|
113
|
+
resource?: string | undefined;
|
|
114
|
+
}[];
|
|
115
|
+
}, {
|
|
116
|
+
skillName: string;
|
|
117
|
+
declaration: {
|
|
118
|
+
memory?: number | undefined;
|
|
119
|
+
spawn?: number | undefined;
|
|
120
|
+
execute?: boolean | undefined;
|
|
121
|
+
network?: string[] | undefined;
|
|
122
|
+
filesystem?: string[] | undefined;
|
|
123
|
+
};
|
|
124
|
+
capabilityToken: string;
|
|
125
|
+
pid: number | null;
|
|
126
|
+
startedAt: number;
|
|
127
|
+
violations: {
|
|
128
|
+
message: string;
|
|
129
|
+
type: "scope_denied" | "resource_denied" | "capability_expired" | "capability_revoked" | "injection_detected" | "boundary_crossed";
|
|
130
|
+
timestamp: number;
|
|
131
|
+
capability?: string | undefined;
|
|
132
|
+
resource?: string | undefined;
|
|
133
|
+
}[];
|
|
134
|
+
}>;
|
|
135
|
+
export type SkillExecutionContext = z.infer<typeof SkillExecutionContext>;
|
|
136
|
+
export declare class SkillCapabilityManager {
|
|
137
|
+
private sandbox;
|
|
138
|
+
private contexts;
|
|
139
|
+
constructor(sandbox: IsomorphicSandbox);
|
|
140
|
+
/**
|
|
141
|
+
* Register a skill and create attenuated capability from root
|
|
142
|
+
*/
|
|
143
|
+
registerSkill(name: string, declaration: SkillCapabilityDeclaration): SkillExecutionContext;
|
|
144
|
+
/**
|
|
145
|
+
* Check if skill has access to scope+resource
|
|
146
|
+
*/
|
|
147
|
+
checkSkillAccess(name: string, scope: CapabilityScope, resource: string): {
|
|
148
|
+
allowed: boolean;
|
|
149
|
+
violation?: BoundaryViolation;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Handle capability escalation attempt
|
|
153
|
+
*/
|
|
154
|
+
onCapabilityEscalation(name: string, requestedScope: CapabilityScope): BoundaryViolation;
|
|
155
|
+
/**
|
|
156
|
+
* Revoke skill capability and kill tracked process
|
|
157
|
+
*/
|
|
158
|
+
revokeSkill(name: string): void;
|
|
159
|
+
/**
|
|
160
|
+
* List active skills with stats
|
|
161
|
+
*/
|
|
162
|
+
listActiveSkills(): Array<{
|
|
163
|
+
name: string;
|
|
164
|
+
scopes: CapabilityScope[];
|
|
165
|
+
uptime: number;
|
|
166
|
+
violationCount: number;
|
|
167
|
+
}>;
|
|
168
|
+
/**
|
|
169
|
+
* Parse capability declaration from SKILL.md frontmatter
|
|
170
|
+
*/
|
|
171
|
+
parseDeclarationFromFrontmatter(frontmatter: string): SkillCapabilityDeclaration;
|
|
172
|
+
/**
|
|
173
|
+
* Infer scopes from declaration
|
|
174
|
+
*/
|
|
175
|
+
private inferScopesFromDeclaration;
|
|
176
|
+
}
|
|
177
|
+
export declare function createSkillCapabilityManager(sandbox: IsomorphicSandbox): SkillCapabilityManager;
|
|
178
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/security/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAElB,MAAM,cAAc,CAAC;AAMtB,eAAO,MAAM,0BAA0B;IACrC,wCAAwC;;IAExC,uCAAuC;;IAEvC,gCAAgC;;IAEhC,4BAA4B;;IAE5B,yBAAyB;;;;;;;;;;;;;;EAEzB,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,qBAAqB;IAChC,iBAAiB;;IAEjB,4BAA4B;;QAhB5B,wCAAwC;;QAExC,uCAAuC;;QAEvC,gCAAgC;;QAEhC,4BAA4B;;QAE5B,yBAAyB;;;;;;;;;;;;;;;IAUzB,oCAAoC;;IAEpC,sCAAsC;;IAEtC,gCAAgC;;IAEhC,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAM1E,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAiD;gBAErD,OAAO,EAAE,iBAAiB;IAItC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,GAAG,qBAAqB;IAoE3F;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,GACf;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAE;IAuBtD;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,iBAAiB;IAexF;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB/B;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAmBF;;OAEG;IACH,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B;IAkEhF;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAmBnC;AAMD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,CAE/F"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill-Specific Capability Enforcement
|
|
3
|
+
*
|
|
4
|
+
* Extends IsomorphicSandbox with OpenClaw skill integration.
|
|
5
|
+
* Parses SKILL.md frontmatter capability declarations and enforces
|
|
6
|
+
* scoped access during skill execution.
|
|
7
|
+
*
|
|
8
|
+
* Security Model:
|
|
9
|
+
* - Skills declare required capabilities in frontmatter (filesystem, network, spawn, etc.)
|
|
10
|
+
* - SkillCapabilityManager creates attenuated capability from root
|
|
11
|
+
* - All skill operations checked against declared capabilities
|
|
12
|
+
* - Escalation attempts denied and logged as violations
|
|
13
|
+
* - Capability revocation kills tracked processes
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { BoundaryViolation, } from './sandbox.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// SKILL CAPABILITY SCHEMAS
|
|
19
|
+
// ============================================================================
|
|
20
|
+
export const SkillCapabilityDeclaration = z.object({
|
|
21
|
+
/** Filesystem access (glob patterns) */
|
|
22
|
+
filesystem: z.array(z.string()).default([]),
|
|
23
|
+
/** Network access (domain patterns) */
|
|
24
|
+
network: z.array(z.string()).default([]),
|
|
25
|
+
/** Max child agents to spawn */
|
|
26
|
+
spawn: z.number().int().nonnegative().default(0),
|
|
27
|
+
/** Memory limit in bytes */
|
|
28
|
+
memory: z.number().int().positive().default(100 * 1024 * 1024), // 100MB default
|
|
29
|
+
/** Execute permission */
|
|
30
|
+
execute: z.boolean().default(false),
|
|
31
|
+
});
|
|
32
|
+
export const SkillExecutionContext = z.object({
|
|
33
|
+
/** Skill name */
|
|
34
|
+
skillName: z.string(),
|
|
35
|
+
/** Declared capabilities */
|
|
36
|
+
declaration: SkillCapabilityDeclaration,
|
|
37
|
+
/** Capability token from sandbox */
|
|
38
|
+
capabilityToken: z.string(),
|
|
39
|
+
/** Tracked process ID (if spawned) */
|
|
40
|
+
pid: z.number().nullable(),
|
|
41
|
+
/** Execution start timestamp */
|
|
42
|
+
startedAt: z.number(),
|
|
43
|
+
/** Accumulated violations */
|
|
44
|
+
violations: z.array(BoundaryViolation),
|
|
45
|
+
});
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// SKILL CAPABILITY MANAGER
|
|
48
|
+
// ============================================================================
|
|
49
|
+
export class SkillCapabilityManager {
|
|
50
|
+
sandbox;
|
|
51
|
+
contexts = new Map();
|
|
52
|
+
constructor(sandbox) {
|
|
53
|
+
this.sandbox = sandbox;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Register a skill and create attenuated capability from root
|
|
57
|
+
*/
|
|
58
|
+
registerSkill(name, declaration) {
|
|
59
|
+
// Map declaration to scopes and resources
|
|
60
|
+
const scopes = [];
|
|
61
|
+
const resources = [];
|
|
62
|
+
// Filesystem access
|
|
63
|
+
if (declaration.filesystem.length > 0) {
|
|
64
|
+
scopes.push('read', 'write');
|
|
65
|
+
for (const pattern of declaration.filesystem) {
|
|
66
|
+
resources.push({ pattern, type: 'allow' });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Network access
|
|
70
|
+
if (declaration.network.length > 0) {
|
|
71
|
+
scopes.push('network');
|
|
72
|
+
for (const pattern of declaration.network) {
|
|
73
|
+
resources.push({ pattern: `https://${pattern}/**`, type: 'allow' });
|
|
74
|
+
resources.push({ pattern: `http://${pattern}/**`, type: 'allow' });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Spawn permission
|
|
78
|
+
if (declaration.spawn > 0) {
|
|
79
|
+
scopes.push('spawn');
|
|
80
|
+
resources.push({ pattern: `spawn:*:${declaration.spawn}`, type: 'allow' });
|
|
81
|
+
}
|
|
82
|
+
// Memory access
|
|
83
|
+
scopes.push('memory');
|
|
84
|
+
resources.push({ pattern: `memory:bytes:${declaration.memory}`, type: 'allow' });
|
|
85
|
+
// Execute permission
|
|
86
|
+
if (declaration.execute) {
|
|
87
|
+
scopes.push('execute');
|
|
88
|
+
resources.push({ pattern: 'exec:**', type: 'allow' });
|
|
89
|
+
}
|
|
90
|
+
// Always allow broadcast for communication
|
|
91
|
+
scopes.push('broadcast');
|
|
92
|
+
resources.push({ pattern: 'channel:**', type: 'allow' });
|
|
93
|
+
// Create attenuated capability
|
|
94
|
+
const rootToken = this.sandbox.getRootToken();
|
|
95
|
+
const capability = this.sandbox.attenuate(rootToken, {
|
|
96
|
+
scopes,
|
|
97
|
+
resources,
|
|
98
|
+
reason: `Skill: ${name}`,
|
|
99
|
+
});
|
|
100
|
+
if (!capability) {
|
|
101
|
+
throw new Error(`Failed to create capability for skill: ${name}`);
|
|
102
|
+
}
|
|
103
|
+
// Create execution context
|
|
104
|
+
const context = {
|
|
105
|
+
skillName: name,
|
|
106
|
+
declaration,
|
|
107
|
+
capabilityToken: capability.token,
|
|
108
|
+
pid: null,
|
|
109
|
+
startedAt: Date.now(),
|
|
110
|
+
violations: [],
|
|
111
|
+
};
|
|
112
|
+
this.contexts.set(name, context);
|
|
113
|
+
return context;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if skill has access to scope+resource
|
|
117
|
+
*/
|
|
118
|
+
checkSkillAccess(name, scope, resource) {
|
|
119
|
+
const context = this.contexts.get(name);
|
|
120
|
+
if (!context) {
|
|
121
|
+
const violation = {
|
|
122
|
+
type: 'capability_revoked',
|
|
123
|
+
message: `Skill '${name}' not registered`,
|
|
124
|
+
resource,
|
|
125
|
+
timestamp: Date.now(),
|
|
126
|
+
};
|
|
127
|
+
return { allowed: false, violation };
|
|
128
|
+
}
|
|
129
|
+
// Delegate to sandbox with skill's token
|
|
130
|
+
const result = this.sandbox.check(context.capabilityToken, scope, resource);
|
|
131
|
+
// Record violation
|
|
132
|
+
if (result.violation) {
|
|
133
|
+
context.violations.push(result.violation);
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handle capability escalation attempt
|
|
139
|
+
*/
|
|
140
|
+
onCapabilityEscalation(name, requestedScope) {
|
|
141
|
+
const violation = {
|
|
142
|
+
type: 'scope_denied',
|
|
143
|
+
message: `Skill '${name}' attempted escalation to scope '${requestedScope}'`,
|
|
144
|
+
timestamp: Date.now(),
|
|
145
|
+
};
|
|
146
|
+
const context = this.contexts.get(name);
|
|
147
|
+
if (context) {
|
|
148
|
+
context.violations.push(violation);
|
|
149
|
+
}
|
|
150
|
+
return violation;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Revoke skill capability and kill tracked process
|
|
154
|
+
*/
|
|
155
|
+
revokeSkill(name) {
|
|
156
|
+
const context = this.contexts.get(name);
|
|
157
|
+
if (!context)
|
|
158
|
+
return;
|
|
159
|
+
// Revoke capability in sandbox
|
|
160
|
+
this.sandbox.revoke(context.capabilityToken);
|
|
161
|
+
// Kill tracked process if exists
|
|
162
|
+
if (context.pid !== null) {
|
|
163
|
+
try {
|
|
164
|
+
process.kill(context.pid, 'SIGTERM');
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
// Process may already be dead, ignore
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
this.contexts.delete(name);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* List active skills with stats
|
|
174
|
+
*/
|
|
175
|
+
listActiveSkills() {
|
|
176
|
+
const result = [];
|
|
177
|
+
for (const [name, context] of this.contexts) {
|
|
178
|
+
const scopes = this.inferScopesFromDeclaration(context.declaration);
|
|
179
|
+
const uptime = Date.now() - context.startedAt;
|
|
180
|
+
const violationCount = context.violations.length;
|
|
181
|
+
result.push({ name, scopes, uptime, violationCount });
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Parse capability declaration from SKILL.md frontmatter
|
|
187
|
+
*/
|
|
188
|
+
parseDeclarationFromFrontmatter(frontmatter) {
|
|
189
|
+
// Remove frontmatter delimiters
|
|
190
|
+
const content = frontmatter.replace(/^---\n?/, '').replace(/\n?---$/, '');
|
|
191
|
+
// Parse YAML-like frontmatter
|
|
192
|
+
const lines = content.split('\n');
|
|
193
|
+
const parsed = {};
|
|
194
|
+
let currentKey = null;
|
|
195
|
+
let currentArray = [];
|
|
196
|
+
for (const line of lines) {
|
|
197
|
+
const trimmed = line.trim();
|
|
198
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
199
|
+
continue;
|
|
200
|
+
// Array item
|
|
201
|
+
if (trimmed.startsWith('- ')) {
|
|
202
|
+
if (currentKey) {
|
|
203
|
+
currentArray.push(trimmed.slice(2).trim());
|
|
204
|
+
}
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
// Flush previous array
|
|
208
|
+
if (currentKey && currentArray.length > 0) {
|
|
209
|
+
parsed[currentKey] = currentArray;
|
|
210
|
+
currentArray = [];
|
|
211
|
+
}
|
|
212
|
+
// Key-value pair
|
|
213
|
+
const match = trimmed.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)$/);
|
|
214
|
+
if (match) {
|
|
215
|
+
const [, key, value] = match;
|
|
216
|
+
currentKey = key;
|
|
217
|
+
// Boolean
|
|
218
|
+
if (value === 'true' || value === 'false') {
|
|
219
|
+
parsed[key] = value === 'true';
|
|
220
|
+
currentKey = null;
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Number
|
|
224
|
+
if (/^\d+$/.test(value)) {
|
|
225
|
+
parsed[key] = parseInt(value, 10);
|
|
226
|
+
currentKey = null;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
// String (empty value means array follows)
|
|
230
|
+
if (value) {
|
|
231
|
+
parsed[key] = value;
|
|
232
|
+
currentKey = null;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Flush final array
|
|
237
|
+
if (currentKey && currentArray.length > 0) {
|
|
238
|
+
parsed[currentKey] = currentArray;
|
|
239
|
+
}
|
|
240
|
+
// Validate and return
|
|
241
|
+
return SkillCapabilityDeclaration.parse(parsed);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Infer scopes from declaration
|
|
245
|
+
*/
|
|
246
|
+
inferScopesFromDeclaration(declaration) {
|
|
247
|
+
const scopes = [];
|
|
248
|
+
if (declaration.filesystem.length > 0) {
|
|
249
|
+
scopes.push('read', 'write');
|
|
250
|
+
}
|
|
251
|
+
if (declaration.network.length > 0) {
|
|
252
|
+
scopes.push('network');
|
|
253
|
+
}
|
|
254
|
+
if (declaration.spawn > 0) {
|
|
255
|
+
scopes.push('spawn');
|
|
256
|
+
}
|
|
257
|
+
if (declaration.execute) {
|
|
258
|
+
scopes.push('execute');
|
|
259
|
+
}
|
|
260
|
+
scopes.push('memory', 'broadcast'); // Always granted
|
|
261
|
+
return scopes;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// ============================================================================
|
|
265
|
+
// FACTORY
|
|
266
|
+
// ============================================================================
|
|
267
|
+
export function createSkillCapabilityManager(sandbox) {
|
|
268
|
+
return new SkillCapabilityManager(sandbox);
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/security/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel Firewall Middleware
|
|
3
|
+
*
|
|
4
|
+
* Wraps InjectionFirewall for channel adapters with event emission.
|
|
5
|
+
* Scans incoming content for injection patterns and sanitizes/blocks threats.
|
|
6
|
+
*/
|
|
7
|
+
import { type ParanoiaLevel, type MessageOrigin } from './injectionFirewall.js';
|
|
8
|
+
export interface FirewallResult {
|
|
9
|
+
safe: boolean;
|
|
10
|
+
sanitized: string;
|
|
11
|
+
threats: Array<{
|
|
12
|
+
pattern: string;
|
|
13
|
+
score: number;
|
|
14
|
+
category: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface ChannelFirewallMiddleware {
|
|
18
|
+
process(content: string, origin: MessageOrigin): FirewallResult;
|
|
19
|
+
on(event: 'firewall:blocked' | 'firewall:quarantined', handler: (data: any) => void): void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createFirewallMiddleware(paranoiaLevel?: ParanoiaLevel): ChannelFirewallMiddleware;
|
|
22
|
+
//# sourceMappingURL=channelFirewallMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelFirewallMiddleware.d.ts","sourceRoot":"","sources":["../../src/security/channelFirewallMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,cAAc,CAAC;IAChE,EAAE,CAAC,KAAK,EAAE,kBAAkB,GAAG,sBAAsB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CAC5F;AAED,wBAAgB,wBAAwB,CACtC,aAAa,GAAE,aAA0B,GACxC,yBAAyB,CA6C3B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel Firewall Middleware
|
|
3
|
+
*
|
|
4
|
+
* Wraps InjectionFirewall for channel adapters with event emission.
|
|
5
|
+
* Scans incoming content for injection patterns and sanitizes/blocks threats.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'eventemitter3';
|
|
8
|
+
import { InjectionFirewall } from './injectionFirewall.js';
|
|
9
|
+
export function createFirewallMiddleware(paranoiaLevel = 'standard') {
|
|
10
|
+
const firewall = new InjectionFirewall(paranoiaLevel);
|
|
11
|
+
const emitter = new EventEmitter();
|
|
12
|
+
return {
|
|
13
|
+
process(content, origin) {
|
|
14
|
+
const verdict = firewall.scan(content, origin);
|
|
15
|
+
const threats = verdict.threats.map(threat => {
|
|
16
|
+
const [category, pattern] = threat.split(': ');
|
|
17
|
+
return {
|
|
18
|
+
category: category ?? 'unknown',
|
|
19
|
+
pattern: pattern ?? threat,
|
|
20
|
+
score: verdict.score,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
let sanitized = content;
|
|
24
|
+
if (!verdict.safe) {
|
|
25
|
+
sanitized = firewall.quarantine(content);
|
|
26
|
+
emitter.emit('firewall:blocked', {
|
|
27
|
+
origin,
|
|
28
|
+
threats,
|
|
29
|
+
timestamp: Date.now(),
|
|
30
|
+
originalLength: content.length,
|
|
31
|
+
sanitizedLength: sanitized.length,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else if (threats.length > 0) {
|
|
35
|
+
emitter.emit('firewall:quarantined', {
|
|
36
|
+
origin,
|
|
37
|
+
threats,
|
|
38
|
+
timestamp: Date.now(),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
safe: verdict.safe,
|
|
43
|
+
sanitized,
|
|
44
|
+
threats,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
on(event, handler) {
|
|
48
|
+
emitter.on(event, handler);
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=channelFirewallMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelFirewallMiddleware.js","sourceRoot":"","sources":["../../src/security/channelFirewallMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAA0C,MAAM,wBAAwB,CAAC;AAanG,MAAM,UAAU,wBAAwB,CACtC,gBAA+B,UAAU;IAEzC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO,CAAC,OAAe,EAAE,MAAqB;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAC3C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO;oBACL,QAAQ,EAAE,QAAQ,IAAI,SAAS;oBAC/B,OAAO,EAAE,OAAO,IAAI,MAAM;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,SAAS,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAC/B,MAAM;oBACN,OAAO;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,cAAc,EAAE,OAAO,CAAC,MAAM;oBAC9B,eAAe,EAAE,SAAS,CAAC,MAAM;iBAClC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBACnC,MAAM;oBACN,OAAO;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS;gBACT,OAAO;aACR,CAAC;QACJ,CAAC;QACD,EAAE,CAAC,KAAa,EAAE,OAAiC;YACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @terminals-tech/agent-zero/security
|
|
3
|
+
*
|
|
4
|
+
* AES-256-GCM vault, capability sandbox, injection firewall, Ed25519 skill verification.
|
|
5
|
+
*/
|
|
6
|
+
export { Vault, createVault } from './vault.js';
|
|
7
|
+
export { IsomorphicSandbox, CapabilityScope, detectInjection, generateCapabilityToken } from './sandbox.js';
|
|
8
|
+
export { SkillCapabilityManager, createSkillCapabilityManager } from './capabilities.js';
|
|
9
|
+
export { InjectionFirewall, ParanoiaLevel, createFirewall } from './injectionFirewall.js';
|
|
10
|
+
export { generateSigningKeyPair, signManifest, verifyManifest, verifySkillIntegrity, createManifest, hashFile, loadSignedManifest, } from './skillVerify.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @terminals-tech/agent-zero/security
|
|
3
|
+
*
|
|
4
|
+
* AES-256-GCM vault, capability sandbox, injection firewall, Ed25519 skill verification.
|
|
5
|
+
*/
|
|
6
|
+
export { Vault, createVault } from './vault.js';
|
|
7
|
+
export { IsomorphicSandbox, CapabilityScope, detectInjection, generateCapabilityToken } from './sandbox.js';
|
|
8
|
+
export { SkillCapabilityManager, createSkillCapabilityManager } from './capabilities.js';
|
|
9
|
+
export { InjectionFirewall, ParanoiaLevel, createFirewall } from './injectionFirewall.js';
|
|
10
|
+
export { generateSigningKeyPair, signManifest, verifyManifest, verifySkillIntegrity, createManifest, hashFile, loadSignedManifest, } from './skillVerify.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ParanoiaLevel: z.ZodEnum<["relaxed", "standard", "paranoid"]>;
|
|
3
|
+
export type ParanoiaLevel = z.infer<typeof ParanoiaLevel>;
|
|
4
|
+
export declare const MessageOrigin: z.ZodEnum<["human-direct", "forwarded", "channel-bridged", "agent-to-agent", "unknown"]>;
|
|
5
|
+
export type MessageOrigin = z.infer<typeof MessageOrigin>;
|
|
6
|
+
export declare const FirewallVerdict: z.ZodObject<{
|
|
7
|
+
safe: z.ZodBoolean;
|
|
8
|
+
score: z.ZodNumber;
|
|
9
|
+
threats: z.ZodArray<z.ZodString, "many">;
|
|
10
|
+
origin: z.ZodEnum<["human-direct", "forwarded", "channel-bridged", "agent-to-agent", "unknown"]>;
|
|
11
|
+
quarantined: z.ZodBoolean;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
safe: boolean;
|
|
14
|
+
score: number;
|
|
15
|
+
threats: string[];
|
|
16
|
+
origin: "unknown" | "human-direct" | "forwarded" | "channel-bridged" | "agent-to-agent";
|
|
17
|
+
quarantined: boolean;
|
|
18
|
+
}, {
|
|
19
|
+
safe: boolean;
|
|
20
|
+
score: number;
|
|
21
|
+
threats: string[];
|
|
22
|
+
origin: "unknown" | "human-direct" | "forwarded" | "channel-bridged" | "agent-to-agent";
|
|
23
|
+
quarantined: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
export type FirewallVerdict = z.infer<typeof FirewallVerdict>;
|
|
26
|
+
export declare class InjectionFirewall {
|
|
27
|
+
private level;
|
|
28
|
+
private stats;
|
|
29
|
+
constructor(level?: ParanoiaLevel);
|
|
30
|
+
scan(content: string, origin: MessageOrigin): FirewallVerdict;
|
|
31
|
+
scanBatch(messages: Array<{
|
|
32
|
+
content: string;
|
|
33
|
+
origin: MessageOrigin;
|
|
34
|
+
}>): FirewallVerdict[];
|
|
35
|
+
quarantine(content: string): string;
|
|
36
|
+
setLevel(level: ParanoiaLevel): void;
|
|
37
|
+
getStats(): {
|
|
38
|
+
scanned: number;
|
|
39
|
+
blocked: number;
|
|
40
|
+
quarantined: number;
|
|
41
|
+
};
|
|
42
|
+
private isLikelyEncoded;
|
|
43
|
+
private containsSuspiciousKeywords;
|
|
44
|
+
private calculateEntropy;
|
|
45
|
+
}
|
|
46
|
+
export declare function createFirewall(level?: ParanoiaLevel): InjectionFirewall;
|
|
47
|
+
//# sourceMappingURL=injectionFirewall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectionFirewall.d.ts","sourceRoot":"","sources":["../../src/security/injectionFirewall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa,gDAA8C,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,aAAa,0FAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAmG9D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,KAAK,CAA8C;gBAE/C,KAAK,GAAE,aAA0B;IAI7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,eAAe;IAyF7D,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,eAAe,EAAE;IAIzF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IA4BnC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIpC,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAIrE,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,gBAAgB;CAezB;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,aAA0B,GAAG,iBAAiB,CAEnF"}
|