@amaster.ai/pi-security 0.1.1-beta.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.
@@ -0,0 +1,190 @@
1
+ import type { JsonObject, RuntimeRequestContext, ToolCallRequest, ToolSource } from '@amaster.ai/pi-types';
2
+ export type SecurityDecision = {
3
+ kind: 'allow';
4
+ reason?: string;
5
+ } | {
6
+ kind: 'deny';
7
+ reason: string;
8
+ } | {
9
+ kind: 'ask';
10
+ reason: string;
11
+ prompt?: string;
12
+ } | {
13
+ kind: 'sandbox_only';
14
+ reason: string;
15
+ sandboxProfile: string;
16
+ } | {
17
+ kind: 'allow_with_constraints';
18
+ reason?: string;
19
+ constraints: RuntimeConstraints;
20
+ };
21
+ export type RuntimeConstraints = {
22
+ filesystem?: {
23
+ read?: 'workspace' | 'all' | 'deny';
24
+ write?: 'workspace' | 'all' | 'deny';
25
+ allowPaths?: string[];
26
+ denyPaths?: string[];
27
+ };
28
+ network?: {
29
+ mode: 'deny' | 'allowlist' | 'unrestricted';
30
+ allowedDomains?: string[];
31
+ };
32
+ shell?: {
33
+ timeoutMs?: number;
34
+ requireSandbox?: boolean;
35
+ denyPatterns?: string[];
36
+ };
37
+ output?: {
38
+ redactFields?: string[];
39
+ maxBytes?: number;
40
+ };
41
+ };
42
+ export type CapabilityPolicy = {
43
+ allow?: string[];
44
+ deny?: string[];
45
+ };
46
+ export type ConfiguredCapabilityPolicy = CapabilityPolicy & {
47
+ mode?: 'merge' | 'replace';
48
+ };
49
+ export type SecurityResourceKind = 'file' | 'shell' | 'network' | 'memory' | 'mcp' | 'subagent';
50
+ export type SecurityOperation = 'read' | 'write' | 'execute' | 'delete' | 'connect' | 'spawn' | 'search';
51
+ export type SecurityScope = 'workspace' | 'home' | 'system' | 'external' | 'unknown';
52
+ export type SecuritySensitivity = 'normal' | 'source' | 'config' | 'secret' | 'credential';
53
+ export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
54
+ export type SecurityResource = {
55
+ kind: SecurityResourceKind;
56
+ operation: SecurityOperation;
57
+ target?: string;
58
+ scope: SecurityScope;
59
+ sensitivity: SecuritySensitivity;
60
+ };
61
+ export type RiskAssessment = {
62
+ level: RiskLevel;
63
+ reasons: string[];
64
+ };
65
+ export type SecurityRule = {
66
+ id: string;
67
+ enabled?: boolean;
68
+ priority?: number;
69
+ tools?: string[];
70
+ tool?: string;
71
+ sources?: ToolSource[];
72
+ source?: ToolSource;
73
+ triggers?: Array<RuntimeRequestContext['trigger']>;
74
+ trigger?: RuntimeRequestContext['trigger'];
75
+ senderTrusts?: Array<RuntimeRequestContext['senderTrust']>;
76
+ senderTrust?: RuntimeRequestContext['senderTrust'];
77
+ args?: Record<string, string>;
78
+ argsRegex?: Record<string, string>;
79
+ resources?: SecurityResourceKind[];
80
+ operations?: SecurityOperation[];
81
+ scopes?: SecurityScope[];
82
+ sensitivity?: SecuritySensitivity[];
83
+ risk?: RiskLevel[];
84
+ decision: SecurityDecision;
85
+ };
86
+ export type SecurityPolicyEngineOptions = {
87
+ rules?: SecurityRule[];
88
+ defaultDecision?: SecurityDecision;
89
+ };
90
+ export type SecurityProfileConfig = {
91
+ extends?: string;
92
+ capabilities?: ConfiguredCapabilityPolicy;
93
+ rules?: SecurityRule[];
94
+ defaultDecision?: SecurityDecision;
95
+ };
96
+ export type SecurityConfig = {
97
+ defaultProfile?: string;
98
+ profiles?: Record<string, SecurityProfileConfig>;
99
+ };
100
+ export type SecurityEvaluationContext = {
101
+ request: RuntimeRequestContext;
102
+ toolCall: ToolCallRequest;
103
+ workspaceDir?: string;
104
+ resources: SecurityResource[];
105
+ risk: RiskAssessment;
106
+ };
107
+ export type SecurityEvaluationResult = {
108
+ evaluationId: string;
109
+ decision: SecurityDecision;
110
+ resources: SecurityResource[];
111
+ risk: RiskAssessment;
112
+ matchedRuleIds: string[];
113
+ };
114
+ export type SecurityAuditEvent = SecurityEvaluationResult & {
115
+ sessionId: string;
116
+ conversationId: string;
117
+ traceId?: string;
118
+ toolCallId: string;
119
+ toolName: string;
120
+ createdAt: string;
121
+ approvalId?: string;
122
+ };
123
+ export type SecurityApprovalRequest = {
124
+ request: RuntimeRequestContext;
125
+ toolCall: ToolCallRequest;
126
+ decision: Extract<SecurityDecision, {
127
+ kind: 'ask';
128
+ }>;
129
+ evaluation: SecurityEvaluationResult;
130
+ };
131
+ export type SecurityApprovalHandler = (input: SecurityApprovalRequest) => Promise<SecurityDecision>;
132
+ export type SecurityAuditSink = (event: SecurityAuditEvent) => void | Promise<void>;
133
+ export type SecurityGateAuthorizeInput = {
134
+ request: RuntimeRequestContext;
135
+ toolCall: ToolCallRequest;
136
+ workspaceDir?: string;
137
+ };
138
+ export type SecurityGateOptions = {
139
+ profile: string;
140
+ config?: SecurityConfig;
141
+ engine?: SecurityPolicyEngine;
142
+ approvalHandler?: SecurityApprovalHandler;
143
+ auditSink?: SecurityAuditSink;
144
+ };
145
+ export declare class SecurityPolicyEngine {
146
+ private readonly entries;
147
+ private readonly defaultDecision;
148
+ constructor(options?: SecurityPolicyEngineOptions);
149
+ decide(input: {
150
+ request: RuntimeRequestContext;
151
+ toolCall: ToolCallRequest;
152
+ workspaceDir?: string;
153
+ }): SecurityDecision;
154
+ evaluate(input: {
155
+ request: RuntimeRequestContext;
156
+ toolCall: ToolCallRequest;
157
+ workspaceDir?: string;
158
+ }): SecurityEvaluationResult;
159
+ }
160
+ export declare class SecurityGate {
161
+ private readonly engine;
162
+ private readonly approvalHandler;
163
+ private readonly auditSink;
164
+ constructor(options: SecurityGateOptions);
165
+ authorize(input: SecurityGateAuthorizeInput): Promise<SecurityEvaluationResult>;
166
+ private resolveDecision;
167
+ private audit;
168
+ }
169
+ export declare function createSecurityGate(options: SecurityGateOptions): SecurityGate;
170
+ export declare function assertSecurityAllowed(input: {
171
+ request: RuntimeRequestContext;
172
+ securityGate: SecurityGate;
173
+ toolCall: ToolCallRequest;
174
+ workspaceDir?: string;
175
+ }): Promise<SecurityEvaluationResult>;
176
+ export declare function assertSecurityDecisionAllowed(decision: SecurityDecision): void;
177
+ export declare function resolveCapabilityPolicy(profile: string, config?: SecurityConfig): CapabilityPolicy;
178
+ export declare function isCapabilityExposed(toolName: string, policy: CapabilityPolicy): boolean;
179
+ export declare function createSecurityPolicyEngineForProfile(profile: string, config?: SecurityConfig): SecurityPolicyEngine;
180
+ export declare function classifySecurityResources(input: {
181
+ request: RuntimeRequestContext;
182
+ toolCall: ToolCallRequest;
183
+ workspaceDir?: string;
184
+ }): SecurityResource[];
185
+ export declare function assessRisk(input: {
186
+ toolCall: ToolCallRequest;
187
+ resources: SecurityResource[];
188
+ }): RiskAssessment;
189
+ export declare function securityEvaluationDetails(evaluation: SecurityEvaluationResult): JsonObject;
190
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}