@det-acp/core 0.2.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 +492 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +308 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +32 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +234 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/templates.d.ts +27 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +266 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/engine/action-registry.d.ts +49 -0
- package/dist/engine/action-registry.d.ts.map +1 -0
- package/dist/engine/action-registry.js +95 -0
- package/dist/engine/action-registry.js.map +1 -0
- package/dist/engine/gate.d.ts +57 -0
- package/dist/engine/gate.d.ts.map +1 -0
- package/dist/engine/gate.js +145 -0
- package/dist/engine/gate.js.map +1 -0
- package/dist/engine/runtime.d.ts +98 -0
- package/dist/engine/runtime.d.ts.map +1 -0
- package/dist/engine/runtime.js +138 -0
- package/dist/engine/runtime.js.map +1 -0
- package/dist/engine/session.d.ts +74 -0
- package/dist/engine/session.d.ts.map +1 -0
- package/dist/engine/session.js +343 -0
- package/dist/engine/session.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/ledger/ledger.d.ts +58 -0
- package/dist/ledger/ledger.d.ts.map +1 -0
- package/dist/ledger/ledger.js +188 -0
- package/dist/ledger/ledger.js.map +1 -0
- package/dist/ledger/query.d.ts +29 -0
- package/dist/ledger/query.d.ts.map +1 -0
- package/dist/ledger/query.js +61 -0
- package/dist/ledger/query.js.map +1 -0
- package/dist/ledger/types.d.ts +27 -0
- package/dist/ledger/types.d.ts.map +1 -0
- package/dist/ledger/types.js +5 -0
- package/dist/ledger/types.js.map +1 -0
- package/dist/policy/evaluator.d.ts +21 -0
- package/dist/policy/evaluator.d.ts.map +1 -0
- package/dist/policy/evaluator.js +383 -0
- package/dist/policy/evaluator.js.map +1 -0
- package/dist/policy/loader.d.ts +27 -0
- package/dist/policy/loader.d.ts.map +1 -0
- package/dist/policy/loader.js +69 -0
- package/dist/policy/loader.js.map +1 -0
- package/dist/policy/schema.d.ts +168 -0
- package/dist/policy/schema.d.ts.map +1 -0
- package/dist/policy/schema.js +107 -0
- package/dist/policy/schema.js.map +1 -0
- package/dist/proxy/mcp-proxy.d.ts +43 -0
- package/dist/proxy/mcp-proxy.d.ts.map +1 -0
- package/dist/proxy/mcp-proxy.js +240 -0
- package/dist/proxy/mcp-proxy.js.map +1 -0
- package/dist/proxy/mcp-types.d.ts +79 -0
- package/dist/proxy/mcp-types.d.ts.map +1 -0
- package/dist/proxy/mcp-types.js +28 -0
- package/dist/proxy/mcp-types.js.map +1 -0
- package/dist/proxy/shell-proxy.d.ts +52 -0
- package/dist/proxy/shell-proxy.d.ts.map +1 -0
- package/dist/proxy/shell-proxy.js +92 -0
- package/dist/proxy/shell-proxy.js.map +1 -0
- package/dist/rollback/manager.d.ts +62 -0
- package/dist/rollback/manager.d.ts.map +1 -0
- package/dist/rollback/manager.js +151 -0
- package/dist/rollback/manager.js.map +1 -0
- package/dist/server/server.d.ts +24 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +200 -0
- package/dist/server/server.js.map +1 -0
- package/dist/tools/base.d.ts +58 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +48 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/command-run.d.ts +30 -0
- package/dist/tools/command-run.d.ts.map +1 -0
- package/dist/tools/command-run.js +87 -0
- package/dist/tools/command-run.js.map +1 -0
- package/dist/tools/file-read.d.ts +34 -0
- package/dist/tools/file-read.d.ts.map +1 -0
- package/dist/tools/file-read.js +67 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/file-write.d.ts +39 -0
- package/dist/tools/file-write.d.ts.map +1 -0
- package/dist/tools/file-write.js +158 -0
- package/dist/tools/file-write.js.map +1 -0
- package/dist/tools/git.d.ts +48 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +193 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/http-request.d.ts +48 -0
- package/dist/tools/http-request.d.ts.map +1 -0
- package/dist/tools/http-request.js +91 -0
- package/dist/tools/http-request.js.map +1 -0
- package/dist/types.d.ts +257 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/examples/coding-agent.policy.yaml +80 -0
- package/examples/devops-deploy.policy.yaml +107 -0
- package/examples/mcp-proxy.config.yaml +34 -0
- package/examples/simple-session.ts +161 -0
- package/examples/video-upscaler.policy.yaml +86 -0
- package/package.json +92 -0
- package/schemas/generate.ts +18 -0
- package/schemas/policy.schema.json +7 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* git:diff and git:apply — Scoped git tool adapters.
|
|
3
|
+
*
|
|
4
|
+
* git:diff — produces a diff of changes in a repo (read-only).
|
|
5
|
+
* git:apply — applies a patch to a repo (with rollback via git stash).
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
|
+
import crypto from 'node:crypto';
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { ToolAdapter } from './base.js';
|
|
11
|
+
import { evaluateAction } from '../policy/evaluator.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// git:diff
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export const GitDiffInputSchema = z.object({
|
|
16
|
+
repo: z.string().min(1, 'Repository path is required'),
|
|
17
|
+
ref: z.string().default('HEAD'),
|
|
18
|
+
paths: z.array(z.string()).optional(),
|
|
19
|
+
});
|
|
20
|
+
export class GitDiffAdapter extends ToolAdapter {
|
|
21
|
+
name = 'git:diff';
|
|
22
|
+
description = 'Get git diff output for a repository';
|
|
23
|
+
inputSchema = GitDiffInputSchema;
|
|
24
|
+
validate(input, policy) {
|
|
25
|
+
const parsed = GitDiffInputSchema.safeParse(input);
|
|
26
|
+
if (!parsed.success) {
|
|
27
|
+
return {
|
|
28
|
+
verdict: 'deny',
|
|
29
|
+
tool: this.name,
|
|
30
|
+
reasons: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return evaluateAction({ tool: this.name, input: parsed.data }, policy);
|
|
34
|
+
}
|
|
35
|
+
async dryRun(input, _ctx) {
|
|
36
|
+
const { repo, ref, paths } = input;
|
|
37
|
+
return {
|
|
38
|
+
tool: this.name,
|
|
39
|
+
wouldDo: `git diff ${ref} in ${repo}${paths ? ` -- ${paths.join(' ')}` : ''}`,
|
|
40
|
+
estimatedChanges: [],
|
|
41
|
+
warnings: [],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async execute(input, _ctx) {
|
|
45
|
+
const start = Date.now();
|
|
46
|
+
const { repo, ref, paths } = input;
|
|
47
|
+
try {
|
|
48
|
+
let cmd = `git diff ${ref}`;
|
|
49
|
+
if (paths && paths.length > 0) {
|
|
50
|
+
cmd += ` -- ${paths.join(' ')}`;
|
|
51
|
+
}
|
|
52
|
+
const diff = execSync(cmd, {
|
|
53
|
+
cwd: repo,
|
|
54
|
+
encoding: 'utf-8',
|
|
55
|
+
timeout: 30000,
|
|
56
|
+
});
|
|
57
|
+
const diffHash = crypto.createHash('sha256').update(diff).digest('hex');
|
|
58
|
+
return this.success({ diff, linesChanged: diff.split('\n').length }, Date.now() - start, [
|
|
59
|
+
{ type: 'diff', value: diff.slice(0, 8192), description: `git diff ${ref} (truncated)` },
|
|
60
|
+
{ type: 'checksum', value: `sha256:${diffHash}`, description: 'Diff content hash' },
|
|
61
|
+
]);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
return this.failure(err.message, Date.now() - start);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async rollback(_input, _ctx) {
|
|
68
|
+
return {
|
|
69
|
+
tool: this.name,
|
|
70
|
+
success: true,
|
|
71
|
+
description: 'No rollback needed for read-only git diff',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// git:apply
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
export const GitApplyInputSchema = z.object({
|
|
79
|
+
repo: z.string().min(1, 'Repository path is required'),
|
|
80
|
+
patch: z.string().min(1, 'Patch content is required'),
|
|
81
|
+
check: z.boolean().default(false),
|
|
82
|
+
});
|
|
83
|
+
export class GitApplyAdapter extends ToolAdapter {
|
|
84
|
+
name = 'git:apply';
|
|
85
|
+
description = 'Apply a git patch to a repository';
|
|
86
|
+
inputSchema = GitApplyInputSchema;
|
|
87
|
+
validate(input, policy) {
|
|
88
|
+
const parsed = GitApplyInputSchema.safeParse(input);
|
|
89
|
+
if (!parsed.success) {
|
|
90
|
+
return {
|
|
91
|
+
verdict: 'deny',
|
|
92
|
+
tool: this.name,
|
|
93
|
+
reasons: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return evaluateAction({ tool: this.name, input: parsed.data }, policy);
|
|
97
|
+
}
|
|
98
|
+
async dryRun(input, _ctx) {
|
|
99
|
+
const { repo, patch } = input;
|
|
100
|
+
const patchLines = patch.split('\n').length;
|
|
101
|
+
// Actually test the patch with --check
|
|
102
|
+
let warnings = [];
|
|
103
|
+
try {
|
|
104
|
+
execSync('git apply --check --stat', {
|
|
105
|
+
cwd: repo,
|
|
106
|
+
input: patch,
|
|
107
|
+
encoding: 'utf-8',
|
|
108
|
+
timeout: 10000,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
warnings = [`Patch may not apply cleanly: ${err.message}`];
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
tool: this.name,
|
|
116
|
+
wouldDo: `Apply ${patchLines}-line patch to ${repo}`,
|
|
117
|
+
estimatedChanges: [`Patch applied to ${repo}`],
|
|
118
|
+
warnings,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async execute(input, ctx) {
|
|
122
|
+
const start = Date.now();
|
|
123
|
+
const { repo, patch } = input;
|
|
124
|
+
try {
|
|
125
|
+
// Stash any existing changes as a safety net
|
|
126
|
+
const stashOutput = execSync('git stash push -m "det-acp-pre-apply-backup"', {
|
|
127
|
+
cwd: repo,
|
|
128
|
+
encoding: 'utf-8',
|
|
129
|
+
timeout: 10000,
|
|
130
|
+
});
|
|
131
|
+
const didStash = !stashOutput.includes('No local changes');
|
|
132
|
+
ctx.rollbackData[`git:apply:${repo}`] = { repo, didStash };
|
|
133
|
+
// Apply the patch
|
|
134
|
+
execSync('git apply', {
|
|
135
|
+
cwd: repo,
|
|
136
|
+
input: patch,
|
|
137
|
+
encoding: 'utf-8',
|
|
138
|
+
timeout: 30000,
|
|
139
|
+
});
|
|
140
|
+
const patchHash = crypto.createHash('sha256').update(patch).digest('hex');
|
|
141
|
+
ctx.budget.filesChanged++;
|
|
142
|
+
return this.success({ applied: true, repo }, Date.now() - start, [
|
|
143
|
+
{ type: 'diff', value: patch.slice(0, 8192), description: 'Applied patch (truncated)' },
|
|
144
|
+
{ type: 'checksum', value: `sha256:${patchHash}`, description: 'Patch content hash' },
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
return this.failure(err.message, Date.now() - start);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async rollback(input, ctx) {
|
|
152
|
+
const { repo } = input;
|
|
153
|
+
const rollbackData = ctx.rollbackData[`git:apply:${repo}`];
|
|
154
|
+
if (!rollbackData) {
|
|
155
|
+
return {
|
|
156
|
+
tool: this.name,
|
|
157
|
+
success: false,
|
|
158
|
+
description: 'No rollback data available',
|
|
159
|
+
error: 'Rollback data not found',
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
// Revert to pre-apply state
|
|
164
|
+
execSync('git checkout .', {
|
|
165
|
+
cwd: rollbackData.repo,
|
|
166
|
+
encoding: 'utf-8',
|
|
167
|
+
timeout: 10000,
|
|
168
|
+
});
|
|
169
|
+
// Restore stashed changes if we stashed them
|
|
170
|
+
if (rollbackData.didStash) {
|
|
171
|
+
execSync('git stash pop', {
|
|
172
|
+
cwd: rollbackData.repo,
|
|
173
|
+
encoding: 'utf-8',
|
|
174
|
+
timeout: 10000,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
tool: this.name,
|
|
179
|
+
success: true,
|
|
180
|
+
description: `Reverted patch in ${rollbackData.repo}${rollbackData.didStash ? ' and restored stashed changes' : ''}`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
return {
|
|
185
|
+
tool: this.name,
|
|
186
|
+
success: false,
|
|
187
|
+
description: `Failed to rollback git apply in ${rollbackData.repo}`,
|
|
188
|
+
error: err.message,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* http:request — Allow-listed HTTP request tool adapter.
|
|
3
|
+
*
|
|
4
|
+
* Makes HTTP requests with strict domain and method allow-listing.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { ToolAdapter } from './base.js';
|
|
8
|
+
import type { DryRunResult, ExecutionContext, ExecutionResult, Policy, RollbackResult, ValidationResult } from '../types.js';
|
|
9
|
+
export declare const HttpRequestInputSchema: z.ZodObject<{
|
|
10
|
+
url: z.ZodString;
|
|
11
|
+
method: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
12
|
+
GET: "GET";
|
|
13
|
+
POST: "POST";
|
|
14
|
+
PUT: "PUT";
|
|
15
|
+
PATCH: "PATCH";
|
|
16
|
+
DELETE: "DELETE";
|
|
17
|
+
HEAD: "HEAD";
|
|
18
|
+
OPTIONS: "OPTIONS";
|
|
19
|
+
}>>>;
|
|
20
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
21
|
+
body: z.ZodOptional<z.ZodString>;
|
|
22
|
+
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type HttpRequestInput = z.infer<typeof HttpRequestInputSchema>;
|
|
25
|
+
export declare class HttpRequestAdapter extends ToolAdapter {
|
|
26
|
+
readonly name = "http:request";
|
|
27
|
+
readonly description = "Make HTTP requests to allow-listed domains";
|
|
28
|
+
readonly inputSchema: z.ZodObject<{
|
|
29
|
+
url: z.ZodString;
|
|
30
|
+
method: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
31
|
+
GET: "GET";
|
|
32
|
+
POST: "POST";
|
|
33
|
+
PUT: "PUT";
|
|
34
|
+
PATCH: "PATCH";
|
|
35
|
+
DELETE: "DELETE";
|
|
36
|
+
HEAD: "HEAD";
|
|
37
|
+
OPTIONS: "OPTIONS";
|
|
38
|
+
}>>>;
|
|
39
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
40
|
+
body: z.ZodOptional<z.ZodString>;
|
|
41
|
+
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
validate(input: unknown, policy: Policy): ValidationResult;
|
|
44
|
+
dryRun(input: Record<string, unknown>, _ctx: ExecutionContext): Promise<DryRunResult>;
|
|
45
|
+
execute(input: Record<string, unknown>, ctx: ExecutionContext): Promise<ExecutionResult>;
|
|
46
|
+
rollback(_input: Record<string, unknown>, _ctx: ExecutionContext): Promise<RollbackResult>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=http-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-request.d.ts","sourceRoot":"","sources":["../../src/tools/http-request.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;iBAMjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,gDAAgD;IACpE,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;sBAA0B;IAE9C,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAgBpD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYrF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAmDxF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;CAOjG"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* http:request — Allow-listed HTTP request tool adapter.
|
|
3
|
+
*
|
|
4
|
+
* Makes HTTP requests with strict domain and method allow-listing.
|
|
5
|
+
*/
|
|
6
|
+
import crypto from 'node:crypto';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { ToolAdapter } from './base.js';
|
|
9
|
+
import { evaluateAction } from '../policy/evaluator.js';
|
|
10
|
+
export const HttpRequestInputSchema = z.object({
|
|
11
|
+
url: z.string().url('Must be a valid URL'),
|
|
12
|
+
method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']).optional().default('GET'),
|
|
13
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
14
|
+
body: z.string().optional(),
|
|
15
|
+
timeout: z.number().positive().optional().default(30000),
|
|
16
|
+
});
|
|
17
|
+
export class HttpRequestAdapter extends ToolAdapter {
|
|
18
|
+
name = 'http:request';
|
|
19
|
+
description = 'Make HTTP requests to allow-listed domains';
|
|
20
|
+
inputSchema = HttpRequestInputSchema;
|
|
21
|
+
validate(input, policy) {
|
|
22
|
+
const parsed = HttpRequestInputSchema.safeParse(input);
|
|
23
|
+
if (!parsed.success) {
|
|
24
|
+
return {
|
|
25
|
+
verdict: 'deny',
|
|
26
|
+
tool: this.name,
|
|
27
|
+
reasons: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return evaluateAction({ tool: this.name, input: parsed.data }, policy);
|
|
31
|
+
}
|
|
32
|
+
async dryRun(input, _ctx) {
|
|
33
|
+
const { url, method, body } = input;
|
|
34
|
+
const parsed = new URL(url);
|
|
35
|
+
return {
|
|
36
|
+
tool: this.name,
|
|
37
|
+
wouldDo: `${method} ${parsed.hostname}${parsed.pathname}`,
|
|
38
|
+
estimatedChanges: method !== 'GET' && method !== 'HEAD' ? [`HTTP ${method} to ${parsed.hostname}`] : [],
|
|
39
|
+
warnings: body ? [`Request has a body (${Buffer.byteLength(body)} bytes)`] : [],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async execute(input, ctx) {
|
|
43
|
+
const start = Date.now();
|
|
44
|
+
const { url, method, headers, body, timeout } = input;
|
|
45
|
+
try {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
48
|
+
const response = await fetch(url, {
|
|
49
|
+
method,
|
|
50
|
+
headers: headers ? new Headers(headers) : undefined,
|
|
51
|
+
body: body ?? undefined,
|
|
52
|
+
signal: controller.signal,
|
|
53
|
+
});
|
|
54
|
+
clearTimeout(timeoutId);
|
|
55
|
+
const responseBody = await response.text();
|
|
56
|
+
const bodyHash = crypto.createHash('sha256').update(responseBody).digest('hex');
|
|
57
|
+
const payloadHash = body
|
|
58
|
+
? crypto.createHash('sha256').update(body).digest('hex')
|
|
59
|
+
: 'none';
|
|
60
|
+
ctx.budget.totalOutputBytes += Buffer.byteLength(responseBody);
|
|
61
|
+
return this.success({
|
|
62
|
+
status: response.status,
|
|
63
|
+
statusText: response.statusText,
|
|
64
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
65
|
+
body: responseBody,
|
|
66
|
+
}, Date.now() - start, [
|
|
67
|
+
{
|
|
68
|
+
type: 'log',
|
|
69
|
+
value: `${method} ${url} → ${response.status} ${response.statusText}`,
|
|
70
|
+
description: 'HTTP request/response',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'checksum',
|
|
74
|
+
value: `request:sha256:${payloadHash} response:sha256:${bodyHash}`,
|
|
75
|
+
description: 'Payload hashes',
|
|
76
|
+
},
|
|
77
|
+
]);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return this.failure(err.message, Date.now() - start);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async rollback(_input, _ctx) {
|
|
84
|
+
return {
|
|
85
|
+
tool: this.name,
|
|
86
|
+
success: false,
|
|
87
|
+
description: 'HTTP requests cannot be automatically rolled back. Define compensation actions at the job level.',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=http-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-request.js","sourceRoot":"","sources":["../../src/tools/http-request.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the Deterministic Agent Control Protocol.
|
|
3
|
+
*
|
|
4
|
+
* These types are the shared vocabulary used across the entire framework:
|
|
5
|
+
* policy engine, tool adapters, session manager, ledger, and gateway runtime.
|
|
6
|
+
*/
|
|
7
|
+
export type ToolName = 'file:read' | 'file:write' | 'file:delete' | 'command:run' | 'http:request' | 'git:diff' | 'git:apply' | (string & {});
|
|
8
|
+
export type ApprovalMode = 'auto' | 'human' | 'webhook';
|
|
9
|
+
export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
|
|
10
|
+
export interface CapabilityScope {
|
|
11
|
+
/** Glob patterns for allowed file paths */
|
|
12
|
+
paths?: string[];
|
|
13
|
+
/** Allowed binary names for command execution */
|
|
14
|
+
binaries?: string[];
|
|
15
|
+
/** Allowed domain names for HTTP requests */
|
|
16
|
+
domains?: string[];
|
|
17
|
+
/** Allowed HTTP methods */
|
|
18
|
+
methods?: string[];
|
|
19
|
+
/** Allowed git repository paths */
|
|
20
|
+
repos?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface Capability {
|
|
23
|
+
tool: ToolName;
|
|
24
|
+
scope: CapabilityScope;
|
|
25
|
+
}
|
|
26
|
+
export interface Gate {
|
|
27
|
+
action: ToolName;
|
|
28
|
+
approval: ApprovalMode;
|
|
29
|
+
risk_level?: RiskLevel;
|
|
30
|
+
condition?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface Limits {
|
|
33
|
+
max_runtime_ms?: number;
|
|
34
|
+
max_output_bytes?: number;
|
|
35
|
+
max_files_changed?: number;
|
|
36
|
+
max_retries?: number;
|
|
37
|
+
max_cost_usd?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface EvidenceConfig {
|
|
40
|
+
require: string[];
|
|
41
|
+
format: 'jsonl';
|
|
42
|
+
}
|
|
43
|
+
export interface ForbiddenPattern {
|
|
44
|
+
pattern: string;
|
|
45
|
+
}
|
|
46
|
+
export interface RemediationRule {
|
|
47
|
+
match: string;
|
|
48
|
+
action: string;
|
|
49
|
+
}
|
|
50
|
+
export interface Remediation {
|
|
51
|
+
rules: RemediationRule[];
|
|
52
|
+
fallback_chain?: string[];
|
|
53
|
+
}
|
|
54
|
+
export interface RateLimitConfig {
|
|
55
|
+
max_per_minute: number;
|
|
56
|
+
}
|
|
57
|
+
export interface EscalationRule {
|
|
58
|
+
/** Trigger after N actions evaluated */
|
|
59
|
+
after_actions?: number;
|
|
60
|
+
/** Trigger after N minutes elapsed */
|
|
61
|
+
after_minutes?: number;
|
|
62
|
+
/** What to require when triggered */
|
|
63
|
+
require: 'human_checkin';
|
|
64
|
+
}
|
|
65
|
+
export interface SessionConstraints {
|
|
66
|
+
/** Maximum actions per session */
|
|
67
|
+
max_actions?: number;
|
|
68
|
+
/** Terminate session after N denials */
|
|
69
|
+
max_denials?: number;
|
|
70
|
+
/** Rate limiting for actions */
|
|
71
|
+
rate_limit?: RateLimitConfig;
|
|
72
|
+
/** Escalation rules based on thresholds */
|
|
73
|
+
escalation?: EscalationRule[];
|
|
74
|
+
}
|
|
75
|
+
export interface Policy {
|
|
76
|
+
version: string;
|
|
77
|
+
name: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
capabilities: Capability[];
|
|
80
|
+
limits: Limits;
|
|
81
|
+
gates: Gate[];
|
|
82
|
+
evidence: EvidenceConfig;
|
|
83
|
+
forbidden: ForbiddenPattern[];
|
|
84
|
+
remediation?: Remediation;
|
|
85
|
+
/** Session-level constraints for the gateway model */
|
|
86
|
+
session?: SessionConstraints;
|
|
87
|
+
}
|
|
88
|
+
export interface ActionRequest {
|
|
89
|
+
/** The tool to invoke, e.g. "file:read" */
|
|
90
|
+
tool: ToolName;
|
|
91
|
+
/** Tool-specific input parameters */
|
|
92
|
+
input: Record<string, unknown>;
|
|
93
|
+
/** Optional idempotency key provided by caller */
|
|
94
|
+
idempotencyKey?: string;
|
|
95
|
+
}
|
|
96
|
+
export type ValidationVerdict = 'allow' | 'deny' | 'gate';
|
|
97
|
+
export interface ValidationResult {
|
|
98
|
+
verdict: ValidationVerdict;
|
|
99
|
+
tool: ToolName;
|
|
100
|
+
reasons: string[];
|
|
101
|
+
/** If verdict is 'gate', which gate triggered */
|
|
102
|
+
gate?: Gate;
|
|
103
|
+
}
|
|
104
|
+
export interface DryRunResult {
|
|
105
|
+
tool: ToolName;
|
|
106
|
+
wouldDo: string;
|
|
107
|
+
estimatedChanges?: string[];
|
|
108
|
+
warnings?: string[];
|
|
109
|
+
}
|
|
110
|
+
export interface ExecutionResult {
|
|
111
|
+
tool: ToolName;
|
|
112
|
+
success: boolean;
|
|
113
|
+
output?: unknown;
|
|
114
|
+
artifacts?: ExecutionArtifact[];
|
|
115
|
+
error?: string;
|
|
116
|
+
durationMs: number;
|
|
117
|
+
}
|
|
118
|
+
export interface ExecutionArtifact {
|
|
119
|
+
type: 'diff' | 'checksum' | 'log' | 'snapshot' | 'exit_code';
|
|
120
|
+
value: string;
|
|
121
|
+
description?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface RollbackResult {
|
|
124
|
+
tool: ToolName;
|
|
125
|
+
success: boolean;
|
|
126
|
+
description: string;
|
|
127
|
+
error?: string;
|
|
128
|
+
}
|
|
129
|
+
export interface ExecutionContext {
|
|
130
|
+
sessionId: string;
|
|
131
|
+
actionIndex: number;
|
|
132
|
+
dryRun: boolean;
|
|
133
|
+
policy: Policy;
|
|
134
|
+
/** Scratch data that tools can use to stash rollback info (e.g. backup paths) */
|
|
135
|
+
rollbackData: Record<string, unknown>;
|
|
136
|
+
/** Runtime budget tracking */
|
|
137
|
+
budget: BudgetTracker;
|
|
138
|
+
}
|
|
139
|
+
export interface BudgetTracker {
|
|
140
|
+
startedAt: number;
|
|
141
|
+
filesChanged: number;
|
|
142
|
+
totalOutputBytes: number;
|
|
143
|
+
retries: number;
|
|
144
|
+
costUsd: number;
|
|
145
|
+
/** Number of actions evaluated in this session */
|
|
146
|
+
actionsEvaluated: number;
|
|
147
|
+
/** Number of actions denied in this session */
|
|
148
|
+
actionsDenied: number;
|
|
149
|
+
}
|
|
150
|
+
export type SessionState = 'active' | 'paused' | 'terminated';
|
|
151
|
+
export interface Session {
|
|
152
|
+
id: string;
|
|
153
|
+
policy: Policy;
|
|
154
|
+
state: SessionState;
|
|
155
|
+
budget: BudgetTracker;
|
|
156
|
+
actions: SessionAction[];
|
|
157
|
+
/** Optional metadata about the agent/source */
|
|
158
|
+
metadata?: Record<string, unknown>;
|
|
159
|
+
createdAt: string;
|
|
160
|
+
updatedAt: string;
|
|
161
|
+
terminatedAt?: string;
|
|
162
|
+
terminationReason?: string;
|
|
163
|
+
}
|
|
164
|
+
export interface SessionAction {
|
|
165
|
+
id: string;
|
|
166
|
+
index: number;
|
|
167
|
+
request: ActionRequest;
|
|
168
|
+
validation: ValidationResult;
|
|
169
|
+
/** Recorded after external execution */
|
|
170
|
+
result?: ActionResult;
|
|
171
|
+
timestamp: string;
|
|
172
|
+
}
|
|
173
|
+
export interface ActionResult {
|
|
174
|
+
success: boolean;
|
|
175
|
+
output?: unknown;
|
|
176
|
+
artifacts?: ExecutionArtifact[];
|
|
177
|
+
error?: string;
|
|
178
|
+
durationMs?: number;
|
|
179
|
+
}
|
|
180
|
+
export interface EvaluateRequest {
|
|
181
|
+
sessionId: string;
|
|
182
|
+
action: ActionRequest;
|
|
183
|
+
}
|
|
184
|
+
export interface BudgetSnapshot {
|
|
185
|
+
runtimeMs: number;
|
|
186
|
+
filesChanged: number;
|
|
187
|
+
totalOutputBytes: number;
|
|
188
|
+
actionsEvaluated: number;
|
|
189
|
+
actionsDenied: number;
|
|
190
|
+
costUsd: number;
|
|
191
|
+
}
|
|
192
|
+
export interface EvaluateResponse {
|
|
193
|
+
actionId: string;
|
|
194
|
+
decision: ValidationVerdict;
|
|
195
|
+
reasons: string[];
|
|
196
|
+
gate?: Gate;
|
|
197
|
+
budgetRemaining?: BudgetSnapshot;
|
|
198
|
+
warnings?: string[];
|
|
199
|
+
}
|
|
200
|
+
export interface RecordResultRequest {
|
|
201
|
+
sessionId: string;
|
|
202
|
+
actionId: string;
|
|
203
|
+
result: ActionResult;
|
|
204
|
+
}
|
|
205
|
+
export interface SessionReport {
|
|
206
|
+
sessionId: string;
|
|
207
|
+
state: SessionState;
|
|
208
|
+
totalActions: number;
|
|
209
|
+
allowed: number;
|
|
210
|
+
denied: number;
|
|
211
|
+
gated: number;
|
|
212
|
+
durationMs: number;
|
|
213
|
+
budgetUsed: BudgetTracker;
|
|
214
|
+
actions: SessionAction[];
|
|
215
|
+
}
|
|
216
|
+
export type LedgerEventType = 'session:start' | 'session:state_change' | 'session:terminate' | 'action:evaluate' | 'action:result' | 'action:rollback' | 'gate:requested' | 'gate:approved' | 'gate:rejected' | 'budget:warning' | 'budget:exceeded' | 'escalation:triggered';
|
|
217
|
+
export interface LedgerEntry {
|
|
218
|
+
seq: number;
|
|
219
|
+
ts: string;
|
|
220
|
+
hash: string;
|
|
221
|
+
prev: string;
|
|
222
|
+
sessionId: string;
|
|
223
|
+
type: LedgerEventType;
|
|
224
|
+
data: Record<string, unknown>;
|
|
225
|
+
}
|
|
226
|
+
export type GateDecision = 'approved' | 'rejected' | 'pending';
|
|
227
|
+
export interface GateRequest {
|
|
228
|
+
sessionId: string;
|
|
229
|
+
actionId: string;
|
|
230
|
+
action: ActionRequest;
|
|
231
|
+
gate: Gate;
|
|
232
|
+
requestedAt: string;
|
|
233
|
+
}
|
|
234
|
+
export interface GateResponse {
|
|
235
|
+
decision: GateDecision;
|
|
236
|
+
respondedBy?: string;
|
|
237
|
+
respondedAt?: string;
|
|
238
|
+
reason?: string;
|
|
239
|
+
}
|
|
240
|
+
export interface CreateSessionRequest {
|
|
241
|
+
policy: string;
|
|
242
|
+
metadata?: Record<string, unknown>;
|
|
243
|
+
}
|
|
244
|
+
export interface SessionStatusResponse {
|
|
245
|
+
session: Session;
|
|
246
|
+
}
|
|
247
|
+
export interface ApproveRequest {
|
|
248
|
+
actionId: string;
|
|
249
|
+
respondedBy?: string;
|
|
250
|
+
reason?: string;
|
|
251
|
+
}
|
|
252
|
+
export interface RejectRequest {
|
|
253
|
+
actionId: string;
|
|
254
|
+
respondedBy?: string;
|
|
255
|
+
reason: string;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the Deterministic Agent Control Protocol.
|
|
3
|
+
*
|
|
4
|
+
* These types are the shared vocabulary used across the entire framework:
|
|
5
|
+
* policy engine, tool adapters, session manager, ledger, and gateway runtime.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|