@intutic/gate 1.10.1
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 +261 -0
- package/dist/actions.d.ts +86 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +239 -0
- package/dist/actions.js.map +1 -0
- package/dist/client.d.ts +94 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +207 -0
- package/dist/client.js.map +1 -0
- package/dist/dsh.d.ts +162 -0
- package/dist/dsh.d.ts.map +1 -0
- package/dist/dsh.js +189 -0
- package/dist/dsh.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +53 -0
- package/dist/errors.js.map +1 -0
- package/dist/eve.d.ts +425 -0
- package/dist/eve.d.ts.map +1 -0
- package/dist/eve.js +378 -0
- package/dist/eve.js.map +1 -0
- package/dist/gate.d.ts +113 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +274 -0
- package/dist/gate.js.map +1 -0
- package/dist/harness.d.ts +482 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +504 -0
- package/dist/harness.js.map +1 -0
- package/dist/headers.d.ts +26 -0
- package/dist/headers.d.ts.map +1 -0
- package/dist/headers.js +30 -0
- package/dist/headers.js.map +1 -0
- package/dist/imagecheck.d.ts +93 -0
- package/dist/imagecheck.d.ts.map +1 -0
- package/dist/imagecheck.js +286 -0
- package/dist/imagecheck.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/managedAgents.d.ts +375 -0
- package/dist/managedAgents.d.ts.map +1 -0
- package/dist/managedAgents.js +446 -0
- package/dist/managedAgents.js.map +1 -0
- package/dist/mastra.d.ts +175 -0
- package/dist/mastra.d.ts.map +1 -0
- package/dist/mastra.js +161 -0
- package/dist/mastra.js.map +1 -0
- package/dist/openai.d.ts +392 -0
- package/dist/openai.d.ts.map +1 -0
- package/dist/openai.js +658 -0
- package/dist/openai.js.map +1 -0
- package/dist/shlex.d.ts +16 -0
- package/dist/shlex.d.ts.map +1 -0
- package/dist/shlex.js +78 -0
- package/dist/shlex.js.map +1 -0
- package/dist/snapshot.d.ts +111 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +243 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/soprules.d.ts +88 -0
- package/dist/soprules.d.ts.map +1 -0
- package/dist/soprules.js +176 -0
- package/dist/soprules.js.map +1 -0
- package/dist/trueforge.d.ts +191 -0
- package/dist/trueforge.d.ts.map +1 -0
- package/dist/trueforge.js +184 -0
- package/dist/trueforge.js.map +1 -0
- package/dist/vercel.d.ts +174 -0
- package/dist/vercel.d.ts.map +1 -0
- package/dist/vercel.js +157 -0
- package/dist/vercel.js.map +1 -0
- package/dist/workflow.d.ts +209 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +254 -0
- package/dist/workflow.js.map +1 -0
- package/dist/wrapTools.d.ts +68 -0
- package/dist/wrapTools.d.ts.map +1 -0
- package/dist/wrapTools.js +95 -0
- package/dist/wrapTools.js.map +1 -0
- package/package.json +123 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imagecheck.d.ts","sourceRoot":"","sources":["../src/imagecheck.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAC9C,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AACtD,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAChD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAE9D,0CAA0C;AAC1C,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAE/C;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,EAAE,CAAA;CACnB;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAGhD;AAUD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,QAAQ,CAmBhE;AA+BD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAoChG;AAqBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAqBnE;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAuDrF;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAqC5F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAchG;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAE7E"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container image integrity checking.
|
|
3
|
+
*
|
|
4
|
+
* Port of `packages/intutic-clawde/intutic_clawde/gate/imagecheck.py`.
|
|
5
|
+
*
|
|
6
|
+
* Given a deploy command, find the manifests it would apply, extract every
|
|
7
|
+
* container image reference, and check each against an allowlist of approved
|
|
8
|
+
* sha256 digests. Nothing else in Intutic does this — no cosign, no sigstore,
|
|
9
|
+
* no admission webhook — so this check is the argument-level enforcement
|
|
10
|
+
* point for "deploy only pinned, reviewed images".
|
|
11
|
+
*
|
|
12
|
+
* Fail-closed on anything it cannot read. That is a deliberate departure from
|
|
13
|
+
* Intutic's fail-open default (WASM rules, hook-gate, the MCP proxy all fail
|
|
14
|
+
* open). The reasoning: a gate that cannot parse what it is being asked to
|
|
15
|
+
* approve does not know what it is approving, and "I could not read it" is
|
|
16
|
+
* not evidence of safety.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
19
|
+
import { isAbsolute, join } from 'node:path';
|
|
20
|
+
import { parseAllDocuments } from 'yaml';
|
|
21
|
+
import { isDeploy } from './actions.js';
|
|
22
|
+
import { shlexSplit } from './shlex.js';
|
|
23
|
+
// Failure codes. Each becomes the operator-visible reason, so they are
|
|
24
|
+
// specific rather than a single "policy violation".
|
|
25
|
+
export const E_UNPINNED_LATEST = 'E_UNPINNED_LATEST';
|
|
26
|
+
export const E_UNPINNED_TAG = 'E_UNPINNED_TAG';
|
|
27
|
+
export const E_UNKNOWN_REGISTRY = 'E_UNKNOWN_REGISTRY';
|
|
28
|
+
export const E_UNKNOWN_IMAGE = 'E_UNKNOWN_IMAGE';
|
|
29
|
+
export const E_DIGEST_MISMATCH = 'E_DIGEST_MISMATCH';
|
|
30
|
+
export const E_MANIFEST_UNPARSEABLE = 'E_MANIFEST_UNPARSEABLE';
|
|
31
|
+
export function isPinned(img) {
|
|
32
|
+
return img.digest !== null;
|
|
33
|
+
}
|
|
34
|
+
/** The single line an operator sees on the dashboard. */
|
|
35
|
+
export function verdictReason(v) {
|
|
36
|
+
if (v.ok)
|
|
37
|
+
return '';
|
|
38
|
+
return `[image-integrity] ${v.code}: ${v.detail}`;
|
|
39
|
+
}
|
|
40
|
+
function ok(images = []) {
|
|
41
|
+
return { ok: true, code: '', detail: '', images };
|
|
42
|
+
}
|
|
43
|
+
function fail(code, detail, images = []) {
|
|
44
|
+
return { ok: false, code, detail, images };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse `registry/repo:tag@sha256:...` into its parts.
|
|
48
|
+
*
|
|
49
|
+
* Docker's own rule for splitting registry from repository: the first path
|
|
50
|
+
* component is a registry host only if it contains a dot or a colon, or is
|
|
51
|
+
* exactly `localhost`. This function does not need to make that
|
|
52
|
+
* classification itself — it only needs to find the tag/digest boundary,
|
|
53
|
+
* which is a colon (or `@`) in the LAST path component; a colon earlier
|
|
54
|
+
* (a registry port, `localhost:5000/foo`) is left alone.
|
|
55
|
+
*/
|
|
56
|
+
export function parseImageRef(raw, source = '') {
|
|
57
|
+
let ref = raw.trim();
|
|
58
|
+
let digest = null;
|
|
59
|
+
let tag = null;
|
|
60
|
+
const at = ref.indexOf('@');
|
|
61
|
+
if (at !== -1) {
|
|
62
|
+
digest = ref.slice(at + 1);
|
|
63
|
+
ref = ref.slice(0, at);
|
|
64
|
+
}
|
|
65
|
+
const slash = ref.lastIndexOf('/');
|
|
66
|
+
const colon = ref.lastIndexOf(':');
|
|
67
|
+
if (colon > slash) {
|
|
68
|
+
tag = ref.slice(colon + 1);
|
|
69
|
+
ref = ref.slice(0, colon);
|
|
70
|
+
}
|
|
71
|
+
return { raw: raw.trim(), repository: ref, tag, digest, source };
|
|
72
|
+
}
|
|
73
|
+
/** Walk a parsed YAML document for container image references. */
|
|
74
|
+
function extractImagesFromDoc(doc, source) {
|
|
75
|
+
const found = [];
|
|
76
|
+
const containerKeys = new Set(['containers', 'initContainers', 'ephemeralContainers']);
|
|
77
|
+
function walk(node) {
|
|
78
|
+
if (Array.isArray(node)) {
|
|
79
|
+
for (const item of node)
|
|
80
|
+
walk(item);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (node !== null && typeof node === 'object') {
|
|
84
|
+
for (const [key, value] of Object.entries(node)) {
|
|
85
|
+
if (containerKeys.has(key) && Array.isArray(value)) {
|
|
86
|
+
for (const c of value) {
|
|
87
|
+
if (c !== null && typeof c === 'object' && typeof c.image === 'string') {
|
|
88
|
+
found.push(parseImageRef(c.image, source));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
walk(value);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
walk(doc);
|
|
99
|
+
return found;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Extract the -f/-k targets from a kubectl/helm command.
|
|
103
|
+
*
|
|
104
|
+
* Returns `{paths, readable}`. `readable` is false when the command applies
|
|
105
|
+
* something we cannot inspect — stdin (`-f -`), a URL, or a command we could
|
|
106
|
+
* not tokenise. That drives the fail-closed path.
|
|
107
|
+
*/
|
|
108
|
+
export function manifestPathsFromCommand(command) {
|
|
109
|
+
let tokens;
|
|
110
|
+
try {
|
|
111
|
+
tokens = shlexSplit(command);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return { paths: [], readable: false };
|
|
115
|
+
}
|
|
116
|
+
const paths = [];
|
|
117
|
+
let readable = true;
|
|
118
|
+
const flagsWithPath = new Set(['-f', '--filename', '-k', '--kustomize']);
|
|
119
|
+
let i = 0;
|
|
120
|
+
while (i < tokens.length) {
|
|
121
|
+
const tok = tokens[i];
|
|
122
|
+
let value = null;
|
|
123
|
+
if (flagsWithPath.has(tok) && i + 1 < tokens.length) {
|
|
124
|
+
value = tokens[i + 1];
|
|
125
|
+
i += 1;
|
|
126
|
+
}
|
|
127
|
+
else if (tok.startsWith('--filename=') || tok.startsWith('--kustomize=')) {
|
|
128
|
+
value = tok.split('=', 2)[1] ?? '';
|
|
129
|
+
}
|
|
130
|
+
else if (tok.startsWith('-f') && tok.length > 2 && !tok.startsWith('--')) {
|
|
131
|
+
value = tok.slice(2);
|
|
132
|
+
}
|
|
133
|
+
if (value !== null) {
|
|
134
|
+
if (value === '-' || value.startsWith('http://') || value.startsWith('https://')) {
|
|
135
|
+
readable = false;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
paths.push(value);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
i += 1;
|
|
142
|
+
}
|
|
143
|
+
return { paths, readable };
|
|
144
|
+
}
|
|
145
|
+
/** Load every YAML document under a file or directory. */
|
|
146
|
+
function loadYamlDocs(path) {
|
|
147
|
+
const docs = [];
|
|
148
|
+
if (statSync(path).isDirectory()) {
|
|
149
|
+
for (const fn of readdirSync(path).sort()) {
|
|
150
|
+
if (fn.endsWith('.yaml') || fn.endsWith('.yml')) {
|
|
151
|
+
docs.push(...loadYamlDocs(join(path, fn)));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return docs;
|
|
155
|
+
}
|
|
156
|
+
const text = readFileSync(path, 'utf-8');
|
|
157
|
+
for (const d of parseAllDocuments(text)) {
|
|
158
|
+
const value = d.toJS();
|
|
159
|
+
if (value !== null && value !== undefined)
|
|
160
|
+
docs.push(value);
|
|
161
|
+
}
|
|
162
|
+
return docs;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Catch images named directly on the command line.
|
|
166
|
+
*
|
|
167
|
+
* `kubectl set image deploy/catalogue catalogue=repo:latest` never touches a
|
|
168
|
+
* manifest, so the YAML path would miss it entirely.
|
|
169
|
+
*/
|
|
170
|
+
export function inlineImagesFromCommand(command) {
|
|
171
|
+
const out = [];
|
|
172
|
+
let tokens;
|
|
173
|
+
try {
|
|
174
|
+
tokens = shlexSplit(command);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return out;
|
|
178
|
+
}
|
|
179
|
+
for (const tok of tokens) {
|
|
180
|
+
const eq = tok.indexOf('=');
|
|
181
|
+
const afterEq = eq !== -1 ? tok.slice(eq + 1) : '';
|
|
182
|
+
const candidate = eq !== -1 && afterEq.includes('/') ? afterEq : tok;
|
|
183
|
+
// A bare word is only an image reference if it looks like one.
|
|
184
|
+
if (candidate.includes('/') && (candidate.includes(':') || candidate.includes('@'))) {
|
|
185
|
+
if (candidate.startsWith('http://') || candidate.startsWith('https://') || candidate.startsWith('-')) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
out.push(parseImageRef(candidate, '<command line>'));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return out;
|
|
192
|
+
}
|
|
193
|
+
/** Evaluate parsed references against the allowlist. First failure wins. */
|
|
194
|
+
export function checkImages(images, policy) {
|
|
195
|
+
const requireDigest = policy.require_digest ?? true;
|
|
196
|
+
const allowedRegistries = policy.registries_allowed ?? [];
|
|
197
|
+
const known = policy.images ?? {};
|
|
198
|
+
const all = [...images];
|
|
199
|
+
for (const img of images) {
|
|
200
|
+
const where = img.source ? ` (in ${img.source})` : '';
|
|
201
|
+
// 1. Unpinned by tag — `:latest` or no tag at all.
|
|
202
|
+
if (img.digest === null && (img.tag === null || img.tag === 'latest')) {
|
|
203
|
+
const shown = img.tag ? img.raw : `${img.raw} (no tag -> :latest)`;
|
|
204
|
+
return fail(E_UNPINNED_LATEST, `${shown} resolves to a mutable tag and is not pinned to an approved sha256 digest${where}`, all);
|
|
205
|
+
}
|
|
206
|
+
// 2. A real tag, but still no digest.
|
|
207
|
+
if (img.digest === null && requireDigest) {
|
|
208
|
+
return fail(E_UNPINNED_TAG, `${img.raw} is pinned only by tag; policy requires an @sha256 digest${where}`, all);
|
|
209
|
+
}
|
|
210
|
+
// 3. Registry not on the allowlist.
|
|
211
|
+
if (allowedRegistries.length > 0 && !allowedRegistries.some((r) => img.repository.startsWith(r))) {
|
|
212
|
+
return fail(E_UNKNOWN_REGISTRY, `${img.repository} is not in an approved registry (${allowedRegistries.join(', ')})${where}`, all);
|
|
213
|
+
}
|
|
214
|
+
// 4. Approved registry, but this image was never reviewed.
|
|
215
|
+
const entry = known[img.repository];
|
|
216
|
+
if (entry === undefined) {
|
|
217
|
+
return fail(E_UNKNOWN_IMAGE, `${img.repository} has no entry in the image allowlist${where}`, all);
|
|
218
|
+
}
|
|
219
|
+
// 5. Pinned to a digest nobody approved.
|
|
220
|
+
const approved = entry.approved_digests ?? [];
|
|
221
|
+
if (img.digest === null || !approved.includes(img.digest)) {
|
|
222
|
+
return fail(E_DIGEST_MISMATCH, `${img.repository} is pinned to ${img.digest}, which is not an approved digest for this image${where}`, all);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return ok(all);
|
|
226
|
+
}
|
|
227
|
+
/** Full check for a deploy command. The entry point the gate calls. */
|
|
228
|
+
export function checkCommand(command, repoRoot, policy) {
|
|
229
|
+
const { paths, readable } = manifestPathsFromCommand(command);
|
|
230
|
+
const images = inlineImagesFromCommand(command);
|
|
231
|
+
if (!readable) {
|
|
232
|
+
return fail(E_MANIFEST_UNPARSEABLE, 'the deploy reads from stdin or a remote URL, so its images cannot be verified before it runs');
|
|
233
|
+
}
|
|
234
|
+
for (const p of paths) {
|
|
235
|
+
const full = isAbsolute(p) ? p : join(repoRoot, p);
|
|
236
|
+
if (!existsSync(full)) {
|
|
237
|
+
return fail(E_MANIFEST_UNPARSEABLE, `${p} does not exist, so its images cannot be verified`);
|
|
238
|
+
}
|
|
239
|
+
let docs;
|
|
240
|
+
try {
|
|
241
|
+
docs = loadYamlDocs(full);
|
|
242
|
+
}
|
|
243
|
+
catch (exc) {
|
|
244
|
+
const name = exc instanceof Error ? exc.constructor.name : 'Error';
|
|
245
|
+
return fail(E_MANIFEST_UNPARSEABLE, `${p} could not be parsed as YAML (${name}), so its images cannot be verified`);
|
|
246
|
+
}
|
|
247
|
+
for (const doc of docs) {
|
|
248
|
+
images.push(...extractImagesFromDoc(doc, p));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// A deploy naming no image at all is not a provenance decision to make here
|
|
252
|
+
// (`kubectl rollout restart`, `kubectl apply` of a ConfigMap). Let it pass;
|
|
253
|
+
// the ordering floor and the snapshot rules still apply.
|
|
254
|
+
if (images.length === 0)
|
|
255
|
+
return ok([]);
|
|
256
|
+
return checkImages(images, policy);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Check a manifest at authoring time, before it is ever applied.
|
|
260
|
+
*
|
|
261
|
+
* Lets the dashboard show the bad image being *written* a full turn before it
|
|
262
|
+
* is *applied* — the write is flagged, the apply is blocked.
|
|
263
|
+
*/
|
|
264
|
+
export function checkWrittenManifest(path, content, policy) {
|
|
265
|
+
let docs;
|
|
266
|
+
try {
|
|
267
|
+
docs = parseAllDocuments(content)
|
|
268
|
+
.map((d) => d.toJS())
|
|
269
|
+
.filter((v) => v !== null && v !== undefined);
|
|
270
|
+
}
|
|
271
|
+
catch (exc) {
|
|
272
|
+
const name = exc instanceof Error ? exc.constructor.name : 'Error';
|
|
273
|
+
return fail(E_MANIFEST_UNPARSEABLE, `${path} is not valid YAML (${name})`);
|
|
274
|
+
}
|
|
275
|
+
const images = [];
|
|
276
|
+
for (const doc of docs)
|
|
277
|
+
images.push(...extractImagesFromDoc(doc, path));
|
|
278
|
+
if (images.length === 0)
|
|
279
|
+
return ok([]);
|
|
280
|
+
return checkImages(images, policy);
|
|
281
|
+
}
|
|
282
|
+
/** True when this call should be image-checked. */
|
|
283
|
+
export function isDeployCommand(toolName, toolInput) {
|
|
284
|
+
return isDeploy(toolName, toolInput);
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=imagecheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imagecheck.js","sourceRoot":"","sources":["../src/imagecheck.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@intutic/gate` — pre-execution tool gate for JS/TS agent frameworks
|
|
3
|
+
* without a shipped Intutic harness.
|
|
4
|
+
*
|
|
5
|
+
* Port of `packages/intutic-clawde/intutic_clawde/gate/` (Python). Framework
|
|
6
|
+
* adapters (`@intutic/gate/mastra`, `@intutic/gate/vercel`,
|
|
7
|
+
* `@intutic/gate/dsh`) are sibling phases built on top of this core; see
|
|
8
|
+
* README.md for the subpath convention they follow.
|
|
9
|
+
*/
|
|
10
|
+
export { classify, isDeploy, isTest, touchesInfra } from './actions.js';
|
|
11
|
+
export { GateClient } from './client.js';
|
|
12
|
+
export type { GateClientOptions, GateResponse } from './client.js';
|
|
13
|
+
export { GateError, GateConnectionError, IntuticGateRefusal } from './errors.js';
|
|
14
|
+
export { Gate, READ_ONLY_TOOLS, install, active } from './gate.js';
|
|
15
|
+
export type { GateConfig, ToolInput } from './gate.js';
|
|
16
|
+
export { intuticHeaders } from './headers.js';
|
|
17
|
+
export type { IntuticHeadersOptions } from './headers.js';
|
|
18
|
+
export { checkCommand, checkImages, checkWrittenManifest, isDeployCommand, isPinned, manifestPathsFromCommand, parseImageRef, verdictReason, } from './imagecheck.js';
|
|
19
|
+
export type { ImagePolicy, ImageRef, Verdict as ImageVerdict } from './imagecheck.js';
|
|
20
|
+
export { Snapshot, evaluate, guardDisabledFromEnv, loadSnapshot, snapshotPath, SEV_BLOCK, SEV_SHADOW, SEV_WARN, } from './snapshot.js';
|
|
21
|
+
export type { Decision, Rule, RuleSubject, Severity, SnapshotState } from './snapshot.js';
|
|
22
|
+
export { firstMatch, parseRules, ruleMatches, serialiseToolInput, supportsArgPatterns, fetchRules, ACTION_BLOCK, ACTION_WARN, ACTION_APPROVAL, } from './soprules.js';
|
|
23
|
+
export type { SopRule } from './soprules.js';
|
|
24
|
+
export { wrapTool, wrapTools } from './wrapTools.js';
|
|
25
|
+
export type { AnyFn, ExecutableTool, WrapToolOptions } from './wrapTools.js';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAErF,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,GACT,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEzF,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACpD,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@intutic/gate` — pre-execution tool gate for JS/TS agent frameworks
|
|
3
|
+
* without a shipped Intutic harness.
|
|
4
|
+
*
|
|
5
|
+
* Port of `packages/intutic-clawde/intutic_clawde/gate/` (Python). Framework
|
|
6
|
+
* adapters (`@intutic/gate/mastra`, `@intutic/gate/vercel`,
|
|
7
|
+
* `@intutic/gate/dsh`) are sibling phases built on top of this core; see
|
|
8
|
+
* README.md for the subpath convention they follow.
|
|
9
|
+
*/
|
|
10
|
+
export { classify, isDeploy, isTest, touchesInfra } from './actions.js';
|
|
11
|
+
export { GateClient } from './client.js';
|
|
12
|
+
export { GateError, GateConnectionError, IntuticGateRefusal } from './errors.js';
|
|
13
|
+
export { Gate, READ_ONLY_TOOLS, install, active } from './gate.js';
|
|
14
|
+
export { intuticHeaders } from './headers.js';
|
|
15
|
+
export { checkCommand, checkImages, checkWrittenManifest, isDeployCommand, isPinned, manifestPathsFromCommand, parseImageRef, verdictReason, } from './imagecheck.js';
|
|
16
|
+
export { Snapshot, evaluate, guardDisabledFromEnv, loadSnapshot, snapshotPath, SEV_BLOCK, SEV_SHADOW, SEV_WARN, } from './snapshot.js';
|
|
17
|
+
export { firstMatch, parseRules, ruleMatches, serialiseToolInput, supportsArgPatterns, fetchRules, ACTION_BLOCK, ACTION_WARN, ACTION_APPROVAL, } from './soprules.js';
|
|
18
|
+
export { wrapTool, wrapTools } from './wrapTools.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,GACT,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA"}
|