@catp-protocol/cli 0.2.1 → 0.2.2
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/dist/adapters/claude-code.d.ts +3 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +36 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +15 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/registry.d.ts +5 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +18 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/audit/logger.d.ts +5 -4
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/audit/logger.js +6 -6
- package/dist/audit/logger.js.map +1 -1
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/anchor.js +8 -8
- package/dist/commands/authorization.d.ts +5 -0
- package/dist/commands/authorization.d.ts.map +1 -1
- package/dist/commands/authorization.js +167 -10
- package/dist/commands/authorization.js.map +1 -1
- package/dist/commands/event.d.ts +18 -0
- package/dist/commands/event.d.ts.map +1 -0
- package/dist/commands/event.js +78 -0
- package/dist/commands/event.js.map +1 -0
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +12 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/witness.d.ts +8 -0
- package/dist/commands/witness.d.ts.map +1 -1
- package/dist/commands/witness.js +49 -0
- package/dist/commands/witness.js.map +1 -1
- package/dist/enforcement/core.d.ts +11 -0
- package/dist/enforcement/core.d.ts.map +1 -0
- package/dist/enforcement/core.js +21 -0
- package/dist/enforcement/core.js.map +1 -0
- package/dist/hook/post.d.ts +5 -1
- package/dist/hook/post.d.ts.map +1 -1
- package/dist/hook/post.js +10 -18
- package/dist/hook/post.js.map +1 -1
- package/dist/hook/pre.d.ts +5 -1
- package/dist/hook/pre.d.ts.map +1 -1
- package/dist/hook/pre.js +12 -25
- package/dist/hook/pre.js.map +1 -1
- package/dist/hook/runtime.d.ts +4 -0
- package/dist/hook/runtime.d.ts.map +1 -0
- package/dist/hook/runtime.js +22 -0
- package/dist/hook/runtime.js.map +1 -0
- package/dist/policy/engine.d.ts +3 -2
- package/dist/policy/engine.d.ts.map +1 -1
- package/dist/policy/engine.js +3 -3
- package/dist/policy/engine.js.map +1 -1
- package/dist/policy/types.d.ts +0 -5
- package/dist/policy/types.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +35 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/validate.d.ts +8 -0
- package/dist/runtime/validate.d.ts.map +1 -0
- package/dist/runtime/validate.js +43 -0
- package/dist/runtime/validate.js.map +1 -0
- package/package.json +1 -1
package/dist/hook/pre.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre.js","sourceRoot":"","sources":["../../src/hook/pre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pre.js","sourceRoot":"","sources":["../../src/hook/pre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM1D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAwB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CACpE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RuntimeAdapter, RuntimePhase, ToolAction } from "../runtime/types.js";
|
|
2
|
+
export declare function parseHookAction(raw: string, adapter: RuntimeAdapter, phase: RuntimePhase): ToolAction | null;
|
|
3
|
+
export declare function readStdin(): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/hook/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpF,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,UAAU,GAAG,IAAI,CAWnB;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAQjD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function parseHookAction(raw, adapter, phase) {
|
|
2
|
+
let parsed;
|
|
3
|
+
try {
|
|
4
|
+
parsed = JSON.parse(raw);
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return phase === "pre"
|
|
10
|
+
? adapter.fromPreToolUse(parsed)
|
|
11
|
+
: adapter.fromPostToolUse(parsed);
|
|
12
|
+
}
|
|
13
|
+
export async function readStdin() {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
let data = "";
|
|
16
|
+
process.stdin.setEncoding("utf8");
|
|
17
|
+
process.stdin.on("data", (chunk) => { data += chunk; });
|
|
18
|
+
process.stdin.on("end", () => resolve(data));
|
|
19
|
+
process.stdin.on("error", () => resolve(""));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/hook/runtime.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,OAAuB,EACvB,KAAmB;IAEnB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,KAAK,KAAK;QACpB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/policy/engine.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { CatpPolicy, Rule
|
|
1
|
+
import type { CatpPolicy, Rule } from "./types.js";
|
|
2
|
+
import type { ToolAction } from "../runtime/types.js";
|
|
2
3
|
export interface Decision {
|
|
3
4
|
allow: boolean;
|
|
4
5
|
rule: Rule | null;
|
|
5
6
|
reason: string;
|
|
6
7
|
}
|
|
7
|
-
export declare function evaluate(policy: CatpPolicy, input:
|
|
8
|
+
export declare function evaluate(policy: CatpPolicy, input: ToolAction): Decision;
|
|
8
9
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/policy/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/policy/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,CAiBxE"}
|
package/dist/policy/engine.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import micromatch from "micromatch";
|
|
2
2
|
export function evaluate(policy, input) {
|
|
3
|
-
const toolRules = policy.rules.filter((r) => r.tool === "*" || r.tool === input.
|
|
3
|
+
const toolRules = policy.rules.filter((r) => r.tool === "*" || r.tool === input.toolName);
|
|
4
4
|
for (const rule of toolRules) {
|
|
5
5
|
if (matchesRule(rule, input)) {
|
|
6
6
|
return {
|
|
@@ -38,12 +38,12 @@ function matchesRule(rule, input) {
|
|
|
38
38
|
return true;
|
|
39
39
|
}
|
|
40
40
|
function extractCommand(input) {
|
|
41
|
-
const cmd = input.
|
|
41
|
+
const cmd = input.toolInput["command"];
|
|
42
42
|
return typeof cmd === "string" ? cmd : null;
|
|
43
43
|
}
|
|
44
44
|
function extractPath(input) {
|
|
45
45
|
for (const key of ["file_path", "path", "filePath"]) {
|
|
46
|
-
const v = input.
|
|
46
|
+
const v = input.toolInput[key];
|
|
47
47
|
if (typeof v === "string")
|
|
48
48
|
return v;
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/policy/engine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/policy/engine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAUpC,MAAM,UAAU,QAAQ,CAAC,MAAkB,EAAE,KAAiB;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CACnD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC;aAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,WAAW,CAAC,IAAU,EAAE,KAAiB;IAChD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEpC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;QACD,oFAAoF;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/policy/types.d.ts
CHANGED
|
@@ -15,11 +15,6 @@ export interface CatpPolicy {
|
|
|
15
15
|
rules: Rule[];
|
|
16
16
|
authorization?: AuthorizationConfig;
|
|
17
17
|
}
|
|
18
|
-
export interface HookInput {
|
|
19
|
-
session_id?: string;
|
|
20
|
-
tool_name: string;
|
|
21
|
-
tool_input: Record<string, unknown>;
|
|
22
|
-
}
|
|
23
18
|
export interface AuditEntry {
|
|
24
19
|
ts: string;
|
|
25
20
|
tool: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type RuntimePhase = "pre" | "post";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime-neutral action shape consumed by CATP policy evaluation, audit
|
|
4
|
+
* logging, and optional authorization extraction.
|
|
5
|
+
*
|
|
6
|
+
* Runtime adapters should preserve the original payload in `raw`, but CATP core
|
|
7
|
+
* logic must only depend on the normalized fields below.
|
|
8
|
+
*/
|
|
9
|
+
export interface ToolAction {
|
|
10
|
+
/** Stable runtime id, for example "claude-code" or a future agent runtime. */
|
|
11
|
+
runtime: string;
|
|
12
|
+
/** Whether the event is before tool execution or after tool execution. */
|
|
13
|
+
phase: RuntimePhase;
|
|
14
|
+
/** Runtime session/conversation id when the upstream runtime provides one. */
|
|
15
|
+
sessionId?: string;
|
|
16
|
+
/** Runtime tool name normalized to CATP's policy rule surface. */
|
|
17
|
+
toolName: string;
|
|
18
|
+
/** Structured tool input used by policy rules and authorization extraction. */
|
|
19
|
+
toolInput: Record<string, unknown>;
|
|
20
|
+
/** Original runtime payload, kept for debugging and adapter evolution. */
|
|
21
|
+
raw?: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Minimal adapter contract for adding a new agent runtime.
|
|
25
|
+
*
|
|
26
|
+
* Adapters own runtime-specific parsing and validation. Returning null means the
|
|
27
|
+
* payload is not a valid event for that runtime and should be ignored by the
|
|
28
|
+
* hook boundary rather than passed into the core policy engine.
|
|
29
|
+
*/
|
|
30
|
+
export interface RuntimeAdapter {
|
|
31
|
+
runtime: string;
|
|
32
|
+
fromPreToolUse(input: unknown): ToolAction | null;
|
|
33
|
+
fromPostToolUse(input: unknown): ToolAction | null;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,YAAY,CAAC;IACpB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;IAClD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ToolAction } from "./types.js";
|
|
2
|
+
export interface ToolActionValidation {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
errors: string[];
|
|
5
|
+
action?: ToolAction;
|
|
6
|
+
}
|
|
7
|
+
export declare function validateToolAction(value: unknown): ToolActionValidation;
|
|
8
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/runtime/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAsCvE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function validateToolAction(value) {
|
|
2
|
+
const errors = [];
|
|
3
|
+
if (!isRecord(value)) {
|
|
4
|
+
return { ok: false, errors: ["event must be an object"] };
|
|
5
|
+
}
|
|
6
|
+
if (!isNonEmptyString(value.runtime)) {
|
|
7
|
+
errors.push("runtime must be a non-empty string");
|
|
8
|
+
}
|
|
9
|
+
if (value.phase !== "pre" && value.phase !== "post") {
|
|
10
|
+
errors.push('phase must be "pre" or "post"');
|
|
11
|
+
}
|
|
12
|
+
if (!isNonEmptyString(value.toolName)) {
|
|
13
|
+
errors.push("toolName must be a non-empty string");
|
|
14
|
+
}
|
|
15
|
+
if (!isRecord(value.toolInput)) {
|
|
16
|
+
errors.push("toolInput must be an object");
|
|
17
|
+
}
|
|
18
|
+
if (value.sessionId !== undefined && typeof value.sessionId !== "string") {
|
|
19
|
+
errors.push("sessionId must be a string when present");
|
|
20
|
+
}
|
|
21
|
+
if (errors.length > 0) {
|
|
22
|
+
return { ok: false, errors };
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
ok: true,
|
|
26
|
+
errors: [],
|
|
27
|
+
action: {
|
|
28
|
+
runtime: value.runtime,
|
|
29
|
+
phase: value.phase,
|
|
30
|
+
sessionId: value.sessionId,
|
|
31
|
+
toolName: value.toolName,
|
|
32
|
+
toolInput: value.toolInput,
|
|
33
|
+
raw: value.raw,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function isNonEmptyString(value) {
|
|
38
|
+
return typeof value === "string" && value.length > 0;
|
|
39
|
+
}
|
|
40
|
+
function isRecord(value) {
|
|
41
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/runtime/validate.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,EAAE;QACV,MAAM,EAAE;YACN,OAAO,EAAE,KAAK,CAAC,OAAiB;YAChC,KAAK,EAAE,KAAK,CAAC,KAAqB;YAClC,SAAS,EAAE,KAAK,CAAC,SAA+B;YAChD,QAAQ,EAAE,KAAK,CAAC,QAAkB;YAClC,SAAS,EAAE,KAAK,CAAC,SAAoC;YACrD,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC"}
|
package/package.json
CHANGED