@kernel.chat/kbot 3.21.0 → 3.23.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,47 @@
1
+ export interface AgentPolicy {
2
+ /** Agent ID this policy applies to */
3
+ agentId: string;
4
+ /** Tools this agent is allowed to use (empty = all allowed) */
5
+ allowedTools: string[];
6
+ /** Tools explicitly blocked */
7
+ blockedTools: string[];
8
+ /** File paths the agent can access (glob patterns) */
9
+ allowedPaths: string[];
10
+ /** File paths the agent cannot access */
11
+ blockedPaths: string[];
12
+ /** Max execution time in seconds per tool call */
13
+ maxExecutionTime: number;
14
+ /** Whether the agent can make network requests */
15
+ networkAccess: boolean;
16
+ /** Whether the agent can execute shell commands */
17
+ shellAccess: boolean;
18
+ /** Max file size the agent can write (bytes) */
19
+ maxFileSize: number;
20
+ /** Whether the agent can install packages */
21
+ canInstallPackages: boolean;
22
+ }
23
+ declare const DEFAULT_POLICY: Omit<AgentPolicy, 'agentId'>;
24
+ /** Strict policy for untrusted/new agents */
25
+ declare const STRICT_POLICY: Omit<AgentPolicy, 'agentId'>;
26
+ /** Built-in policies for known agents */
27
+ declare const BUILTIN_POLICIES: Record<string, Partial<AgentPolicy>>;
28
+ /** Load a specific agent's policy from file, falling back to builtins then defaults */
29
+ export declare function loadAgentPolicy(agentId: string): AgentPolicy;
30
+ export interface PolicyCheckResult {
31
+ allowed: boolean;
32
+ reason?: string;
33
+ }
34
+ /** Check if an agent is allowed to use a specific tool */
35
+ export declare function checkToolAccess(agentId: string, toolName: string, policy?: AgentPolicy): PolicyCheckResult;
36
+ /** Check if an agent can access a file path */
37
+ export declare function checkPathAccess(agentId: string, filePath: string, policy?: AgentPolicy): PolicyCheckResult;
38
+ /** List all agent policies (builtin + user-defined) */
39
+ export declare function listPolicies(): Array<{
40
+ agentId: string;
41
+ source: 'builtin' | 'user';
42
+ policy: AgentPolicy;
43
+ }>;
44
+ /** Write a policy file for an agent */
45
+ export declare function writeAgentPolicy(agentId: string, policy: AgentPolicy): void;
46
+ export { DEFAULT_POLICY, STRICT_POLICY, BUILTIN_POLICIES };
47
+ //# sourceMappingURL=sandbox-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-policy.d.ts","sourceRoot":"","sources":["../src/sandbox-policy.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,aAAa,EAAE,OAAO,CAAA;IACtB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAA;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAYD,QAAA,MAAM,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAUhD,CAAA;AAED,6CAA6C;AAC7C,QAAA,MAAM,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAU/C,CAAA;AAED,yCAAyC;AACzC,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CA6C1D,CAAA;AAID,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAmB5D;AAuCD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAwB1G;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAuB1G;AAID,uDAAuD;AACvD,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAsB1G;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAyB3E;AAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,257 @@
1
+ // kbot Sandbox Policies — YAML-defined agent restrictions
2
+ //
3
+ // Inspired by NemoClaw's OpenShell sandbox.
4
+ // Each agent gets a policy defining what it can and cannot do.
5
+ //
6
+ // Default-deny: agents have NO permissions until explicitly granted.
7
+ // Policy files live in ~/.kbot/policies/agents/
8
+ //
9
+ // Example policy (coder.yaml):
10
+ // allowedTools:
11
+ // - read_file
12
+ // - write_file
13
+ // - edit_file
14
+ // - bash
15
+ // - grep
16
+ // - glob
17
+ // blockedTools:
18
+ // - social_post
19
+ // - forge_publish
20
+ // allowedPaths:
21
+ // - ./src/**
22
+ // - ./tests/**
23
+ // blockedPaths:
24
+ // - .env
25
+ // - ~/.ssh/**
26
+ // maxExecutionTime: 300
27
+ // networkAccess: false
28
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';
29
+ import { join } from 'node:path';
30
+ import { homedir } from 'node:os';
31
+ // ── Paths ──
32
+ const POLICY_DIR = join(homedir(), '.kbot', 'policies', 'agents');
33
+ function ensureDir() {
34
+ if (!existsSync(POLICY_DIR))
35
+ mkdirSync(POLICY_DIR, { recursive: true });
36
+ }
37
+ // ── Default Policies ──
38
+ const DEFAULT_POLICY = {
39
+ allowedTools: [], // empty = all allowed
40
+ blockedTools: ['social_post', 'forge_publish'], // conservative defaults
41
+ allowedPaths: ['./**'],
42
+ blockedPaths: ['.env', '.env.*', '*.pem', '*.key', '~/.ssh/**', '~/.aws/**'],
43
+ maxExecutionTime: 300,
44
+ networkAccess: true,
45
+ shellAccess: true,
46
+ maxFileSize: 10 * 1024 * 1024, // 10MB
47
+ canInstallPackages: false,
48
+ };
49
+ /** Strict policy for untrusted/new agents */
50
+ const STRICT_POLICY = {
51
+ allowedTools: ['read_file', 'grep', 'glob', 'web_search'],
52
+ blockedTools: ['bash', 'write_file', 'edit_file', 'forge_tool', 'social_post'],
53
+ allowedPaths: ['./**'],
54
+ blockedPaths: ['.env', '.env.*', '*.pem', '*.key', '~/.ssh/**', '~/.aws/**', 'node_modules/**'],
55
+ maxExecutionTime: 60,
56
+ networkAccess: false,
57
+ shellAccess: false,
58
+ maxFileSize: 0,
59
+ canInstallPackages: false,
60
+ };
61
+ /** Built-in policies for known agents */
62
+ const BUILTIN_POLICIES = {
63
+ coder: {
64
+ allowedTools: [],
65
+ blockedTools: ['social_post'],
66
+ shellAccess: true,
67
+ networkAccess: true,
68
+ canInstallPackages: true,
69
+ maxExecutionTime: 600,
70
+ },
71
+ researcher: {
72
+ allowedTools: ['read_file', 'grep', 'glob', 'web_search', 'url_fetch', 'research_arxiv', 'research_papers'],
73
+ blockedTools: ['bash', 'write_file', 'edit_file'],
74
+ shellAccess: false,
75
+ networkAccess: true,
76
+ canInstallPackages: false,
77
+ },
78
+ guardian: {
79
+ allowedTools: [],
80
+ blockedTools: ['social_post', 'forge_publish'],
81
+ shellAccess: true,
82
+ networkAccess: true,
83
+ maxExecutionTime: 600,
84
+ },
85
+ hacker: {
86
+ allowedTools: [],
87
+ blockedTools: ['social_post', 'forge_publish'],
88
+ shellAccess: true,
89
+ networkAccess: true,
90
+ maxExecutionTime: 300,
91
+ },
92
+ writer: {
93
+ allowedTools: ['read_file', 'write_file', 'edit_file', 'grep', 'glob', 'web_search'],
94
+ blockedTools: ['bash', 'forge_tool'],
95
+ shellAccess: false,
96
+ networkAccess: true,
97
+ canInstallPackages: false,
98
+ },
99
+ gamedev: {
100
+ allowedTools: [],
101
+ blockedTools: ['social_post'],
102
+ shellAccess: true,
103
+ networkAccess: true,
104
+ canInstallPackages: true,
105
+ maxExecutionTime: 600,
106
+ },
107
+ };
108
+ // ── Policy Loading ──
109
+ /** Load a specific agent's policy from file, falling back to builtins then defaults */
110
+ export function loadAgentPolicy(agentId) {
111
+ const filePath = join(POLICY_DIR, `${agentId}.yaml`);
112
+ // Try user-defined policy file first
113
+ if (existsSync(filePath)) {
114
+ try {
115
+ const content = readFileSync(filePath, 'utf8');
116
+ return parsePolicy(agentId, content);
117
+ }
118
+ catch { /* fall through to builtins */ }
119
+ }
120
+ // Try builtin policy
121
+ const builtin = BUILTIN_POLICIES[agentId];
122
+ if (builtin) {
123
+ return { agentId, ...DEFAULT_POLICY, ...builtin };
124
+ }
125
+ // Default policy
126
+ return { agentId, ...DEFAULT_POLICY };
127
+ }
128
+ /** Parse a YAML-like policy file */
129
+ function parsePolicy(agentId, content) {
130
+ const policy = { agentId, ...DEFAULT_POLICY };
131
+ // Parse list fields
132
+ const listFields = ['allowedTools', 'blockedTools', 'allowedPaths', 'blockedPaths'];
133
+ for (const field of listFields) {
134
+ const section = content.match(new RegExp(`${field}:\\n((?:\\s+-\\s+.+\\n?)+)`));
135
+ if (section) {
136
+ policy[field] = section[1]
137
+ .split('\n')
138
+ .map(l => l.replace(/^\s+-\s+/, '').trim().replace(/^["']|["']$/g, ''))
139
+ .filter(Boolean);
140
+ }
141
+ }
142
+ // Parse scalar fields
143
+ const maxTime = content.match(/maxExecutionTime:\s*(\d+)/);
144
+ if (maxTime)
145
+ policy.maxExecutionTime = Number(maxTime[1]);
146
+ const network = content.match(/networkAccess:\s*(true|false)/);
147
+ if (network)
148
+ policy.networkAccess = network[1] === 'true';
149
+ const shell = content.match(/shellAccess:\s*(true|false)/);
150
+ if (shell)
151
+ policy.shellAccess = shell[1] === 'true';
152
+ const maxFile = content.match(/maxFileSize:\s*(\d+)/);
153
+ if (maxFile)
154
+ policy.maxFileSize = Number(maxFile[1]);
155
+ const install = content.match(/canInstallPackages:\s*(true|false)/);
156
+ if (install)
157
+ policy.canInstallPackages = install[1] === 'true';
158
+ return policy;
159
+ }
160
+ /** Check if an agent is allowed to use a specific tool */
161
+ export function checkToolAccess(agentId, toolName, policy) {
162
+ const p = policy || loadAgentPolicy(agentId);
163
+ // Blocked tools take priority
164
+ if (p.blockedTools.includes(toolName)) {
165
+ return { allowed: false, reason: `Tool "${toolName}" is blocked for agent "${agentId}"` };
166
+ }
167
+ // If allowedTools is non-empty, tool must be in the list
168
+ if (p.allowedTools.length > 0 && !p.allowedTools.includes(toolName)) {
169
+ return { allowed: false, reason: `Tool "${toolName}" is not in allowed list for agent "${agentId}"` };
170
+ }
171
+ // Shell access check
172
+ if (toolName === 'bash' && !p.shellAccess) {
173
+ return { allowed: false, reason: `Shell access denied for agent "${agentId}"` };
174
+ }
175
+ // Network access check
176
+ if (['web_search', 'url_fetch', 'research_arxiv'].includes(toolName) && !p.networkAccess) {
177
+ return { allowed: false, reason: `Network access denied for agent "${agentId}"` };
178
+ }
179
+ return { allowed: true };
180
+ }
181
+ /** Check if an agent can access a file path */
182
+ export function checkPathAccess(agentId, filePath, policy) {
183
+ const p = policy || loadAgentPolicy(agentId);
184
+ const normalized = filePath.toLowerCase();
185
+ // Check blocked paths first
186
+ for (const blocked of p.blockedPaths) {
187
+ const b = blocked.toLowerCase();
188
+ if (b.startsWith('**/')) {
189
+ if (normalized.includes(b.slice(3))) {
190
+ return { allowed: false, reason: `Path "${filePath}" is blocked for agent "${agentId}"` };
191
+ }
192
+ }
193
+ else if (b.startsWith('*.')) {
194
+ if (normalized.endsWith(b.slice(1))) {
195
+ return { allowed: false, reason: `File type "${b}" is blocked for agent "${agentId}"` };
196
+ }
197
+ }
198
+ else {
199
+ if (normalized.endsWith(b) || normalized.includes(`/${b}`)) {
200
+ return { allowed: false, reason: `Path "${filePath}" is blocked for agent "${agentId}"` };
201
+ }
202
+ }
203
+ }
204
+ return { allowed: true };
205
+ }
206
+ // ── Policy Management ──
207
+ /** List all agent policies (builtin + user-defined) */
208
+ export function listPolicies() {
209
+ const result = [];
210
+ // User-defined policies
211
+ ensureDir();
212
+ try {
213
+ const files = readdirSync(POLICY_DIR).filter(f => f.endsWith('.yaml'));
214
+ for (const f of files) {
215
+ const agentId = f.replace('.yaml', '');
216
+ result.push({ agentId, source: 'user', policy: loadAgentPolicy(agentId) });
217
+ }
218
+ }
219
+ catch { /* ignore */ }
220
+ // Builtin policies (not already loaded from user files)
221
+ const userIds = new Set(result.map(r => r.agentId));
222
+ for (const [agentId] of Object.entries(BUILTIN_POLICIES)) {
223
+ if (!userIds.has(agentId)) {
224
+ result.push({ agentId, source: 'builtin', policy: loadAgentPolicy(agentId) });
225
+ }
226
+ }
227
+ return result;
228
+ }
229
+ /** Write a policy file for an agent */
230
+ export function writeAgentPolicy(agentId, policy) {
231
+ ensureDir();
232
+ const filePath = join(POLICY_DIR, `${agentId}.yaml`);
233
+ const yaml = `# kbot Sandbox Policy for agent: ${agentId}
234
+ # Edit this file to customize what this agent can do.
235
+
236
+ allowedTools:
237
+ ${policy.allowedTools.map(t => ` - ${t}`).join('\n') || ' # empty = all allowed'}
238
+
239
+ blockedTools:
240
+ ${policy.blockedTools.map(t => ` - ${t}`).join('\n')}
241
+
242
+ allowedPaths:
243
+ ${policy.allowedPaths.map(p => ` - "${p}"`).join('\n')}
244
+
245
+ blockedPaths:
246
+ ${policy.blockedPaths.map(p => ` - "${p}"`).join('\n')}
247
+
248
+ maxExecutionTime: ${policy.maxExecutionTime}
249
+ networkAccess: ${policy.networkAccess}
250
+ shellAccess: ${policy.shellAccess}
251
+ maxFileSize: ${policy.maxFileSize}
252
+ canInstallPackages: ${policy.canInstallPackages}
253
+ `;
254
+ writeFileSync(filePath, yaml);
255
+ }
256
+ export { DEFAULT_POLICY, STRICT_POLICY, BUILTIN_POLICIES };
257
+ //# sourceMappingURL=sandbox-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-policy.js","sourceRoot":"","sources":["../src/sandbox-policy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernel.chat/kbot",
3
- "version": "3.21.0",
3
+ "version": "3.23.0",
4
4
  "description": "The only AI agent that builds its own tools. Multi-channel cognitive engine: email agent, iMessage agent, consultation pipeline, 25 specialist agents, 290+ tools, 20 providers. Runtime tool forging, Forge Registry, autopoietic health, immune self-audit. Cost-aware model routing, fallback chains, Bayesian skill routing. Embedded llama.cpp, MCP server, SDK. MIT.",
5
5
  "type": "module",
6
6
  "repository": {