seclaw-agent 0.1.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/LICENSE +21 -0
- package/README.md +668 -0
- package/SECURITY.md +253 -0
- package/assets/logo.png +0 -0
- package/dist/agent/context.d.ts +37 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +211 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/docker_sandbox.d.ts +41 -0
- package/dist/agent/docker_sandbox.d.ts.map +1 -0
- package/dist/agent/docker_sandbox.js +239 -0
- package/dist/agent/docker_sandbox.js.map +1 -0
- package/dist/agent/loop.d.ts +86 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +858 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/memory.d.ts +21 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +128 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/security/execution_audit.d.ts +17 -0
- package/dist/agent/security/execution_audit.d.ts.map +1 -0
- package/dist/agent/security/execution_audit.js +126 -0
- package/dist/agent/security/execution_audit.js.map +1 -0
- package/dist/agent/security/input_validation/entity.d.ts +57 -0
- package/dist/agent/security/input_validation/entity.d.ts.map +1 -0
- package/dist/agent/security/input_validation/entity.js +121 -0
- package/dist/agent/security/input_validation/entity.js.map +1 -0
- package/dist/agent/security/input_validation/index.d.ts +114 -0
- package/dist/agent/security/input_validation/index.d.ts.map +1 -0
- package/dist/agent/security/input_validation/index.js +971 -0
- package/dist/agent/security/input_validation/index.js.map +1 -0
- package/dist/agent/security/input_validation/lattice.d.ts +33 -0
- package/dist/agent/security/input_validation/lattice.d.ts.map +1 -0
- package/dist/agent/security/input_validation/lattice.js +61 -0
- package/dist/agent/security/input_validation/lattice.js.map +1 -0
- package/dist/agent/security/input_validation/program_graph.d.ts +51 -0
- package/dist/agent/security/input_validation/program_graph.d.ts.map +1 -0
- package/dist/agent/security/input_validation/program_graph.js +285 -0
- package/dist/agent/security/input_validation/program_graph.js.map +1 -0
- package/dist/agent/security/input_validation/security_policy.d.ts +29 -0
- package/dist/agent/security/input_validation/security_policy.d.ts.map +1 -0
- package/dist/agent/security/input_validation/security_policy.js +256 -0
- package/dist/agent/security/input_validation/security_policy.js.map +1 -0
- package/dist/agent/security/memory_audit.d.ts +14 -0
- package/dist/agent/security/memory_audit.d.ts.map +1 -0
- package/dist/agent/security/memory_audit.js +126 -0
- package/dist/agent/security/memory_audit.js.map +1 -0
- package/dist/agent/security/skill_audit.d.ts +15 -0
- package/dist/agent/security/skill_audit.d.ts.map +1 -0
- package/dist/agent/security/skill_audit.js +112 -0
- package/dist/agent/security/skill_audit.js.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/base.d.ts +10 -0
- package/dist/agent/security/snapshot_and_rollback/base.d.ts.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/base.js +10 -0
- package/dist/agent/security/snapshot_and_rollback/base.js.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/docker_snapshot.d.ts +52 -0
- package/dist/agent/security/snapshot_and_rollback/docker_snapshot.d.ts.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/docker_snapshot.js +358 -0
- package/dist/agent/security/snapshot_and_rollback/docker_snapshot.js.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/index.d.ts +7 -0
- package/dist/agent/security/snapshot_and_rollback/index.d.ts.map +1 -0
- package/dist/agent/security/snapshot_and_rollback/index.js +450 -0
- package/dist/agent/security/snapshot_and_rollback/index.js.map +1 -0
- package/dist/agent/skills.d.ts +35 -0
- package/dist/agent/skills.d.ts.map +1 -0
- package/dist/agent/skills.js +235 -0
- package/dist/agent/skills.js.map +1 -0
- package/dist/agent/subagent.d.ts +39 -0
- package/dist/agent/subagent.d.ts.map +1 -0
- package/dist/agent/subagent.js +151 -0
- package/dist/agent/subagent.js.map +1 -0
- package/dist/agent/tools/base.d.ts +32 -0
- package/dist/agent/tools/base.d.ts.map +1 -0
- package/dist/agent/tools/base.js +91 -0
- package/dist/agent/tools/base.js.map +1 -0
- package/dist/agent/tools/cron.d.ts +46 -0
- package/dist/agent/tools/cron.d.ts.map +1 -0
- package/dist/agent/tools/cron.js +95 -0
- package/dist/agent/tools/cron.js.map +1 -0
- package/dist/agent/tools/filesystem.d.ts +102 -0
- package/dist/agent/tools/filesystem.d.ts.map +1 -0
- package/dist/agent/tools/filesystem.js +257 -0
- package/dist/agent/tools/filesystem.js.map +1 -0
- package/dist/agent/tools/message.d.ts +40 -0
- package/dist/agent/tools/message.d.ts.map +1 -0
- package/dist/agent/tools/message.js +55 -0
- package/dist/agent/tools/message.js.map +1 -0
- package/dist/agent/tools/registry.d.ts +16 -0
- package/dist/agent/tools/registry.d.ts.map +1 -0
- package/dist/agent/tools/registry.js +47 -0
- package/dist/agent/tools/registry.js.map +1 -0
- package/dist/agent/tools/shell.d.ts +40 -0
- package/dist/agent/tools/shell.d.ts.map +1 -0
- package/dist/agent/tools/shell.js +166 -0
- package/dist/agent/tools/shell.js.map +1 -0
- package/dist/agent/tools/spawn.d.ts +30 -0
- package/dist/agent/tools/spawn.d.ts.map +1 -0
- package/dist/agent/tools/spawn.js +50 -0
- package/dist/agent/tools/spawn.js.map +1 -0
- package/dist/agent/tools/web.d.ts +59 -0
- package/dist/agent/tools/web.d.ts.map +1 -0
- package/dist/agent/tools/web.js +167 -0
- package/dist/agent/tools/web.js.map +1 -0
- package/dist/bus/events.d.ts +31 -0
- package/dist/bus/events.d.ts.map +1 -0
- package/dist/bus/events.js +28 -0
- package/dist/bus/events.js.map +1 -0
- package/dist/bus/queue.d.ts +32 -0
- package/dist/bus/queue.d.ts.map +1 -0
- package/dist/bus/queue.js +104 -0
- package/dist/bus/queue.js.map +1 -0
- package/dist/channels/base.d.ts +25 -0
- package/dist/channels/base.d.ts.map +1 -0
- package/dist/channels/base.js +54 -0
- package/dist/channels/base.js.map +1 -0
- package/dist/channels/dingtalk.d.ts +31 -0
- package/dist/channels/dingtalk.d.ts.map +1 -0
- package/dist/channels/dingtalk.js +177 -0
- package/dist/channels/dingtalk.js.map +1 -0
- package/dist/channels/discord.d.ts +30 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +197 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/email.d.ts +41 -0
- package/dist/channels/email.d.ts.map +1 -0
- package/dist/channels/email.js +210 -0
- package/dist/channels/email.js.map +1 -0
- package/dist/channels/feishu.d.ts +32 -0
- package/dist/channels/feishu.d.ts.map +1 -0
- package/dist/channels/feishu.js +109 -0
- package/dist/channels/feishu.js.map +1 -0
- package/dist/channels/manager.d.ts +24 -0
- package/dist/channels/manager.d.ts.map +1 -0
- package/dist/channels/manager.js +205 -0
- package/dist/channels/manager.js.map +1 -0
- package/dist/channels/mochat.d.ts +38 -0
- package/dist/channels/mochat.d.ts.map +1 -0
- package/dist/channels/mochat.js +201 -0
- package/dist/channels/mochat.js.map +1 -0
- package/dist/channels/qq.d.ts +40 -0
- package/dist/channels/qq.d.ts.map +1 -0
- package/dist/channels/qq.js +280 -0
- package/dist/channels/qq.js.map +1 -0
- package/dist/channels/slack.d.ts +27 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +118 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +31 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +218 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +29 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +117 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/cli/commands.d.ts +8 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +537 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/config/loader.d.ts +24 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +182 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +2921 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +257 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/cron/service.d.ts +38 -0
- package/dist/cron/service.d.ts.map +1 -0
- package/dist/cron/service.js +336 -0
- package/dist/cron/service.js.map +1 -0
- package/dist/cron/types.d.ts +46 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +6 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/heartbeat/service.d.ts +26 -0
- package/dist/heartbeat/service.d.ts.map +1 -0
- package/dist/heartbeat/service.js +142 -0
- package/dist/heartbeat/service.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base.d.ts +38 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +21 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/litellm_provider.d.ts +35 -0
- package/dist/providers/litellm_provider.d.ts.map +1 -0
- package/dist/providers/litellm_provider.js +205 -0
- package/dist/providers/litellm_provider.js.map +1 -0
- package/dist/providers/registry.d.ts +44 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +252 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/transcription.d.ts +10 -0
- package/dist/providers/transcription.d.ts.map +1 -0
- package/dist/providers/transcription.js +83 -0
- package/dist/providers/transcription.js.map +1 -0
- package/dist/session/manager.d.ts +35 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +193 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/utils/helpers.d.ts +15 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +100 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +58 -0
- package/templates/AGENTS.md +51 -0
- package/templates/HEARTBEAT.md +16 -0
- package/templates/SOUL.md +36 -0
- package/templates/TOOLS.md +150 -0
- package/templates/USER.md +17 -0
- package/templates/memory/MEMORY.md +23 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security validator
|
|
3
|
+
*
|
|
4
|
+
* Implements Control Flow Integrity (CFI) and Information Flow Integrity (IFI)
|
|
5
|
+
* validation for tool calls, plus a guard model for prompt injection detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMProvider } from "../../../providers/base";
|
|
8
|
+
import type { ToolRegistry } from "../../tools/registry";
|
|
9
|
+
import { SecurityLevel } from "./lattice";
|
|
10
|
+
import { ProgramGraph } from "./program_graph";
|
|
11
|
+
import { SecurityPolicy } from "./security_policy";
|
|
12
|
+
export interface ParameterConstraint {
|
|
13
|
+
type?: "email" | "url" | "file_path" | "directory" | "integer" | "string" | "boolean" | "json";
|
|
14
|
+
value?: unknown;
|
|
15
|
+
source?: string;
|
|
16
|
+
securityLevel?: SecurityLevel;
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ParameterPlaceholder {
|
|
20
|
+
name: string;
|
|
21
|
+
source: string | Record<string, string>;
|
|
22
|
+
constraint: ParameterConstraint;
|
|
23
|
+
description?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ToolCallStep {
|
|
26
|
+
toolCallId: string;
|
|
27
|
+
toolName: string;
|
|
28
|
+
source: string;
|
|
29
|
+
parameters: Record<string, unknown>;
|
|
30
|
+
constraints: Record<string, ParameterConstraint>;
|
|
31
|
+
placeholders: Record<string, ParameterPlaceholder>;
|
|
32
|
+
description: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ToolCallTrajectory {
|
|
35
|
+
steps: ToolCallStep[];
|
|
36
|
+
}
|
|
37
|
+
export interface SecurityValidation {
|
|
38
|
+
trajectory: ToolCallTrajectory;
|
|
39
|
+
}
|
|
40
|
+
export interface SecurityValidatorOptions {
|
|
41
|
+
provider: LLMProvider;
|
|
42
|
+
model: string;
|
|
43
|
+
toolRegistry: ToolRegistry;
|
|
44
|
+
workspace: string;
|
|
45
|
+
prohibitedCommands?: string[];
|
|
46
|
+
}
|
|
47
|
+
export declare class SecurityValidator {
|
|
48
|
+
private provider;
|
|
49
|
+
private model;
|
|
50
|
+
private toolRegistry;
|
|
51
|
+
private workspace;
|
|
52
|
+
private prohibitedCommands;
|
|
53
|
+
private _validation;
|
|
54
|
+
private _toolCallCount;
|
|
55
|
+
private _toolCallHistory;
|
|
56
|
+
private _observations;
|
|
57
|
+
private _observationHistory;
|
|
58
|
+
private _currentStepIndex;
|
|
59
|
+
private _userQuery;
|
|
60
|
+
programGraph: ProgramGraph;
|
|
61
|
+
expectedGraph: ProgramGraph;
|
|
62
|
+
securityPolicy: SecurityPolicy;
|
|
63
|
+
static readonly READ_ONLY_TOOLS: Set<string>;
|
|
64
|
+
static readonly PARAM_DISCRIMINATED_TOOLS: Record<string, string[]>;
|
|
65
|
+
static readonly NETWORK_EGRESS_COMMAND_PATTERN: RegExp;
|
|
66
|
+
static readonly SENSITIVE_CONTENT_PATTERN: RegExp;
|
|
67
|
+
constructor(opts: SecurityValidatorOptions);
|
|
68
|
+
/**
|
|
69
|
+
* Analyze the user task and extract expected tool call trajectory via LLM.
|
|
70
|
+
*
|
|
71
|
+
* SECURITY: This function ONLY uses:
|
|
72
|
+
* - User's original query (taskContent)
|
|
73
|
+
* - Static tool descriptions from registry
|
|
74
|
+
* Never uses tool outputs to prevent injection attacks.
|
|
75
|
+
*/
|
|
76
|
+
analyzeTask(taskContent: string): Promise<SecurityValidation>;
|
|
77
|
+
/**
|
|
78
|
+
* Validate a tool call against the expected ProgramGraph (CFI + IFI).
|
|
79
|
+
* Returns [isValid, reason].
|
|
80
|
+
*/
|
|
81
|
+
validateToolCall(toolName: string, args: Record<string, unknown>): Promise<[boolean, string]>;
|
|
82
|
+
/**
|
|
83
|
+
* Guard model: detect and sanitize potential prompt injection in tool output (LLM-backed).
|
|
84
|
+
* Returns [sanitizedOutput, injectionDetected, reason].
|
|
85
|
+
*/
|
|
86
|
+
detectAndSanitizeOutput(toolName: string, output: string): Promise<[string, boolean, string]>;
|
|
87
|
+
/**
|
|
88
|
+
* Record an observation from a tool execution.
|
|
89
|
+
*/
|
|
90
|
+
recordObservation(toolName: string, observation: unknown): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get a human-readable summary of the expected trajectory.
|
|
93
|
+
*/
|
|
94
|
+
getTrajectorySum(): string;
|
|
95
|
+
getTrajectorySummary: () => string;
|
|
96
|
+
/**
|
|
97
|
+
* Reset validator state (preserves security policy).
|
|
98
|
+
*/
|
|
99
|
+
reset(): void;
|
|
100
|
+
private _isPotentialExposureToolCall;
|
|
101
|
+
private _checkPrivacyExposureRisk;
|
|
102
|
+
private _isExplicitApprovalForExposure;
|
|
103
|
+
private _createPermissiveValidation;
|
|
104
|
+
private _entityMatchesKeyParams;
|
|
105
|
+
private _addToolToProgramGraph;
|
|
106
|
+
private _validateParametersWithGraph;
|
|
107
|
+
private _validateConstraint;
|
|
108
|
+
private _getCurrentCfgSecurityLevel;
|
|
109
|
+
private _downgradeSecurityLevel;
|
|
110
|
+
private _checkExecReadonly;
|
|
111
|
+
private _checkIntentAlignment;
|
|
112
|
+
private _formatArgs;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent/security/input_validation/index.ts"],"names":[],"mappings":"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"}
|