@clawnitor/shared 1.0.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/dist/api-types.d.ts +36 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +2 -0
- package/dist/api-types.js.map +1 -0
- package/dist/billing.d.ts +22 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +94 -0
- package/dist/billing.js.map +1 -0
- package/dist/constants.d.ts +17 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +17 -0
- package/dist/constants.js.map +1 -0
- package/dist/events.d.ts +100 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +35 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/kill-switch.d.ts +15 -0
- package/dist/kill-switch.d.ts.map +1 -0
- package/dist/kill-switch.js +2 -0
- package/dist/kill-switch.js.map +1 -0
- package/dist/rules.d.ts +141 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +29 -0
- package/dist/rules.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ClawnitorEvent } from "./events.js";
|
|
2
|
+
export interface KillState {
|
|
3
|
+
killed: boolean;
|
|
4
|
+
reason?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IngestEventsRequest {
|
|
7
|
+
events: ClawnitorEvent[];
|
|
8
|
+
}
|
|
9
|
+
export interface IngestEventsResponse {
|
|
10
|
+
accepted: number;
|
|
11
|
+
kill_state: KillState;
|
|
12
|
+
}
|
|
13
|
+
export interface ApiError {
|
|
14
|
+
error: string;
|
|
15
|
+
message: string;
|
|
16
|
+
statusCode: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentResponse {
|
|
19
|
+
id: string;
|
|
20
|
+
user_id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
agent_id: string;
|
|
23
|
+
status: "active" | "learning" | "paused";
|
|
24
|
+
created_at: string;
|
|
25
|
+
}
|
|
26
|
+
export interface CreateAgentRequest {
|
|
27
|
+
name: string;
|
|
28
|
+
agent_id: string;
|
|
29
|
+
}
|
|
30
|
+
export interface StatsResponse {
|
|
31
|
+
events_today: number;
|
|
32
|
+
alerts_today: number;
|
|
33
|
+
spend_today: number;
|
|
34
|
+
agents_active: number;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=api-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../src/api-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-types.js","sourceRoot":"","sources":["../src/api-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const TIERS: readonly ["free", "trial", "paid", "team", "enterprise"];
|
|
2
|
+
export type Tier = (typeof TIERS)[number];
|
|
3
|
+
export interface TierFeatures {
|
|
4
|
+
maxRules: number;
|
|
5
|
+
maxAgents: number;
|
|
6
|
+
maxTeamMembers: number;
|
|
7
|
+
maxTeams: number;
|
|
8
|
+
maxSharedRules: number;
|
|
9
|
+
nlRules: boolean;
|
|
10
|
+
killSwitch: boolean;
|
|
11
|
+
anomalyDetection: boolean;
|
|
12
|
+
alertChannels: string[];
|
|
13
|
+
customWebhooks: boolean;
|
|
14
|
+
retentionDays: number;
|
|
15
|
+
priorityProcessing: boolean;
|
|
16
|
+
roleManagement: boolean;
|
|
17
|
+
customRoles: boolean;
|
|
18
|
+
auditLogs: boolean;
|
|
19
|
+
sso: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const TIER_FEATURES: Record<Tier, TierFeatures>;
|
|
22
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,0DAA2D,CAAC;AAC9E,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CA2FpD,CAAC"}
|
package/dist/billing.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export const TIERS = ["free", "trial", "paid", "team", "enterprise"];
|
|
2
|
+
export const TIER_FEATURES = {
|
|
3
|
+
free: {
|
|
4
|
+
maxRules: 3,
|
|
5
|
+
maxAgents: 1,
|
|
6
|
+
maxTeamMembers: 2,
|
|
7
|
+
maxTeams: 1,
|
|
8
|
+
maxSharedRules: 0,
|
|
9
|
+
nlRules: false,
|
|
10
|
+
killSwitch: false,
|
|
11
|
+
anomalyDetection: false,
|
|
12
|
+
alertChannels: ["email"],
|
|
13
|
+
customWebhooks: false,
|
|
14
|
+
retentionDays: 7,
|
|
15
|
+
priorityProcessing: false,
|
|
16
|
+
roleManagement: false,
|
|
17
|
+
customRoles: false,
|
|
18
|
+
auditLogs: false,
|
|
19
|
+
sso: false,
|
|
20
|
+
},
|
|
21
|
+
trial: {
|
|
22
|
+
maxRules: Infinity,
|
|
23
|
+
maxAgents: 3,
|
|
24
|
+
maxTeamMembers: 3,
|
|
25
|
+
maxTeams: 1,
|
|
26
|
+
maxSharedRules: 10,
|
|
27
|
+
nlRules: true,
|
|
28
|
+
killSwitch: true,
|
|
29
|
+
anomalyDetection: true,
|
|
30
|
+
alertChannels: ["email", "telegram", "discord", "sms"],
|
|
31
|
+
customWebhooks: false,
|
|
32
|
+
retentionDays: 90,
|
|
33
|
+
priorityProcessing: true,
|
|
34
|
+
roleManagement: true,
|
|
35
|
+
customRoles: false,
|
|
36
|
+
auditLogs: false,
|
|
37
|
+
sso: false,
|
|
38
|
+
},
|
|
39
|
+
paid: {
|
|
40
|
+
maxRules: Infinity,
|
|
41
|
+
maxAgents: 3,
|
|
42
|
+
maxTeamMembers: 3,
|
|
43
|
+
maxTeams: 1,
|
|
44
|
+
maxSharedRules: 10,
|
|
45
|
+
nlRules: true,
|
|
46
|
+
killSwitch: true,
|
|
47
|
+
anomalyDetection: true,
|
|
48
|
+
alertChannels: ["email", "telegram", "discord", "sms"],
|
|
49
|
+
customWebhooks: false,
|
|
50
|
+
retentionDays: 90,
|
|
51
|
+
priorityProcessing: true,
|
|
52
|
+
roleManagement: true,
|
|
53
|
+
customRoles: false,
|
|
54
|
+
auditLogs: false,
|
|
55
|
+
sso: false,
|
|
56
|
+
},
|
|
57
|
+
team: {
|
|
58
|
+
maxRules: Infinity,
|
|
59
|
+
maxAgents: 10,
|
|
60
|
+
maxTeamMembers: 10,
|
|
61
|
+
maxTeams: 1,
|
|
62
|
+
maxSharedRules: Infinity,
|
|
63
|
+
nlRules: true,
|
|
64
|
+
killSwitch: true,
|
|
65
|
+
anomalyDetection: true,
|
|
66
|
+
alertChannels: ["email", "telegram", "discord", "sms"],
|
|
67
|
+
customWebhooks: false,
|
|
68
|
+
retentionDays: 365,
|
|
69
|
+
priorityProcessing: true,
|
|
70
|
+
roleManagement: true,
|
|
71
|
+
customRoles: false,
|
|
72
|
+
auditLogs: false,
|
|
73
|
+
sso: false,
|
|
74
|
+
},
|
|
75
|
+
enterprise: {
|
|
76
|
+
maxRules: Infinity,
|
|
77
|
+
maxAgents: Infinity,
|
|
78
|
+
maxTeamMembers: Infinity,
|
|
79
|
+
maxTeams: Infinity,
|
|
80
|
+
maxSharedRules: Infinity,
|
|
81
|
+
nlRules: true,
|
|
82
|
+
killSwitch: true,
|
|
83
|
+
anomalyDetection: true,
|
|
84
|
+
alertChannels: ["email", "telegram", "discord", "sms"],
|
|
85
|
+
customWebhooks: true,
|
|
86
|
+
retentionDays: Infinity,
|
|
87
|
+
priorityProcessing: true,
|
|
88
|
+
roleManagement: true,
|
|
89
|
+
customRoles: true,
|
|
90
|
+
auditLogs: true,
|
|
91
|
+
sso: true,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const API_KEY_PREFIX = "clw_live_";
|
|
2
|
+
export declare const MAX_FREE_RULES = 3;
|
|
3
|
+
export declare const DEFAULT_SPEND_LIMIT = 100;
|
|
4
|
+
export declare const DEFAULT_RATE_LIMIT = 120;
|
|
5
|
+
export declare const CACHE_SIZE_LIMIT: number;
|
|
6
|
+
export declare const CACHE_AGE_LIMIT: number;
|
|
7
|
+
export declare const EVENT_BATCH_SIZE = 50;
|
|
8
|
+
export declare const EVENT_BATCH_INTERVAL_MS = 5000;
|
|
9
|
+
export declare const WS_HEARTBEAT_INTERVAL_MS = 30000;
|
|
10
|
+
export declare const WS_RECONNECT_BASE_MS = 1000;
|
|
11
|
+
export declare const WS_RECONNECT_MAX_MS = 60000;
|
|
12
|
+
export declare const FREE_RETENTION_DAYS = 7;
|
|
13
|
+
export declare const PAID_RETENTION_DAYS = 90;
|
|
14
|
+
export declare const BASELINE_LEARNING_HOURS = 72;
|
|
15
|
+
export declare const ANOMALY_CHECK_INTERVAL_MINUTES = 15;
|
|
16
|
+
export declare const NL_EVAL_INTERVAL_MINUTES = 5;
|
|
17
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AACjD,eAAO,MAAM,eAAe,QAA0B,CAAC;AAEvD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,wBAAwB,IAAI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const API_KEY_PREFIX = "clw_live_";
|
|
2
|
+
export const MAX_FREE_RULES = 3;
|
|
3
|
+
export const DEFAULT_SPEND_LIMIT = 100;
|
|
4
|
+
export const DEFAULT_RATE_LIMIT = 120;
|
|
5
|
+
export const CACHE_SIZE_LIMIT = 50 * 1024 * 1024; // 50MB
|
|
6
|
+
export const CACHE_AGE_LIMIT = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
7
|
+
export const EVENT_BATCH_SIZE = 50;
|
|
8
|
+
export const EVENT_BATCH_INTERVAL_MS = 5000; // 5 seconds
|
|
9
|
+
export const WS_HEARTBEAT_INTERVAL_MS = 30_000;
|
|
10
|
+
export const WS_RECONNECT_BASE_MS = 1000;
|
|
11
|
+
export const WS_RECONNECT_MAX_MS = 60_000;
|
|
12
|
+
export const FREE_RETENTION_DAYS = 7;
|
|
13
|
+
export const PAID_RETENTION_DAYS = 90;
|
|
14
|
+
export const BASELINE_LEARNING_HOURS = 72;
|
|
15
|
+
export const ANOMALY_CHECK_INTERVAL_MINUTES = 15;
|
|
16
|
+
export const NL_EVAL_INTERVAL_MINUTES = 5;
|
|
17
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAC,YAAY;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const EVENT_TYPES: readonly ["tool_use", "llm_call", "message_sent", "message_received", "agent_lifecycle", "subagent"];
|
|
3
|
+
export type EventType = (typeof EVENT_TYPES)[number];
|
|
4
|
+
export declare const SEVERITY_HINTS: readonly ["normal", "elevated", "critical"];
|
|
5
|
+
export type SeverityHint = (typeof SEVERITY_HINTS)[number];
|
|
6
|
+
export declare const eventMetadataSchema: z.ZodObject<{
|
|
7
|
+
cost_usd: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
tokens_used: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
tool_name: z.ZodOptional<z.ZodString>;
|
|
10
|
+
duration_ms: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
error: z.ZodOptional<z.ZodString>;
|
|
12
|
+
raw_snippet: z.ZodOptional<z.ZodString>;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
cost_usd?: number | undefined;
|
|
15
|
+
tokens_used?: number | undefined;
|
|
16
|
+
tool_name?: string | undefined;
|
|
17
|
+
duration_ms?: number | undefined;
|
|
18
|
+
error?: string | undefined;
|
|
19
|
+
raw_snippet?: string | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
cost_usd?: number | undefined;
|
|
22
|
+
tokens_used?: number | undefined;
|
|
23
|
+
tool_name?: string | undefined;
|
|
24
|
+
duration_ms?: number | undefined;
|
|
25
|
+
error?: string | undefined;
|
|
26
|
+
raw_snippet?: string | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
export type EventMetadata = z.infer<typeof eventMetadataSchema>;
|
|
29
|
+
export declare const clawnitorEventSchema: z.ZodObject<{
|
|
30
|
+
agent_id: z.ZodString;
|
|
31
|
+
session_id: z.ZodString;
|
|
32
|
+
timestamp: z.ZodString;
|
|
33
|
+
event_type: z.ZodEnum<["tool_use", "llm_call", "message_sent", "message_received", "agent_lifecycle", "subagent"]>;
|
|
34
|
+
action: z.ZodString;
|
|
35
|
+
target: z.ZodString;
|
|
36
|
+
metadata: z.ZodObject<{
|
|
37
|
+
cost_usd: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
tokens_used: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
tool_name: z.ZodOptional<z.ZodString>;
|
|
40
|
+
duration_ms: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
error: z.ZodOptional<z.ZodString>;
|
|
42
|
+
raw_snippet: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
cost_usd?: number | undefined;
|
|
45
|
+
tokens_used?: number | undefined;
|
|
46
|
+
tool_name?: string | undefined;
|
|
47
|
+
duration_ms?: number | undefined;
|
|
48
|
+
error?: string | undefined;
|
|
49
|
+
raw_snippet?: string | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
cost_usd?: number | undefined;
|
|
52
|
+
tokens_used?: number | undefined;
|
|
53
|
+
tool_name?: string | undefined;
|
|
54
|
+
duration_ms?: number | undefined;
|
|
55
|
+
error?: string | undefined;
|
|
56
|
+
raw_snippet?: string | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
severity_hint: z.ZodEnum<["normal", "elevated", "critical"]>;
|
|
59
|
+
event_id: z.ZodString;
|
|
60
|
+
plugin_version: z.ZodString;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
agent_id: string;
|
|
63
|
+
session_id: string;
|
|
64
|
+
timestamp: string;
|
|
65
|
+
event_type: "tool_use" | "llm_call" | "message_sent" | "message_received" | "agent_lifecycle" | "subagent";
|
|
66
|
+
action: string;
|
|
67
|
+
target: string;
|
|
68
|
+
metadata: {
|
|
69
|
+
cost_usd?: number | undefined;
|
|
70
|
+
tokens_used?: number | undefined;
|
|
71
|
+
tool_name?: string | undefined;
|
|
72
|
+
duration_ms?: number | undefined;
|
|
73
|
+
error?: string | undefined;
|
|
74
|
+
raw_snippet?: string | undefined;
|
|
75
|
+
};
|
|
76
|
+
severity_hint: "normal" | "elevated" | "critical";
|
|
77
|
+
event_id: string;
|
|
78
|
+
plugin_version: string;
|
|
79
|
+
}, {
|
|
80
|
+
agent_id: string;
|
|
81
|
+
session_id: string;
|
|
82
|
+
timestamp: string;
|
|
83
|
+
event_type: "tool_use" | "llm_call" | "message_sent" | "message_received" | "agent_lifecycle" | "subagent";
|
|
84
|
+
action: string;
|
|
85
|
+
target: string;
|
|
86
|
+
metadata: {
|
|
87
|
+
cost_usd?: number | undefined;
|
|
88
|
+
tokens_used?: number | undefined;
|
|
89
|
+
tool_name?: string | undefined;
|
|
90
|
+
duration_ms?: number | undefined;
|
|
91
|
+
error?: string | undefined;
|
|
92
|
+
raw_snippet?: string | undefined;
|
|
93
|
+
};
|
|
94
|
+
severity_hint: "normal" | "elevated" | "critical";
|
|
95
|
+
event_id: string;
|
|
96
|
+
plugin_version: string;
|
|
97
|
+
}>;
|
|
98
|
+
export type ClawnitorEvent = z.infer<typeof clawnitorEventSchema>;
|
|
99
|
+
export declare function createEventId(): string;
|
|
100
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,sGAOd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,cAAc,6CAA8C,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { uuidv7 } from "uuidv7";
|
|
3
|
+
export const EVENT_TYPES = [
|
|
4
|
+
"tool_use",
|
|
5
|
+
"llm_call",
|
|
6
|
+
"message_sent",
|
|
7
|
+
"message_received",
|
|
8
|
+
"agent_lifecycle",
|
|
9
|
+
"subagent",
|
|
10
|
+
];
|
|
11
|
+
export const SEVERITY_HINTS = ["normal", "elevated", "critical"];
|
|
12
|
+
export const eventMetadataSchema = z.object({
|
|
13
|
+
cost_usd: z.number().optional(),
|
|
14
|
+
tokens_used: z.number().int().optional(),
|
|
15
|
+
tool_name: z.string().optional(),
|
|
16
|
+
duration_ms: z.number().optional(),
|
|
17
|
+
error: z.string().optional(),
|
|
18
|
+
raw_snippet: z.string().max(500).optional(),
|
|
19
|
+
});
|
|
20
|
+
export const clawnitorEventSchema = z.object({
|
|
21
|
+
agent_id: z.string().min(1),
|
|
22
|
+
session_id: z.string().min(1),
|
|
23
|
+
timestamp: z.string().datetime(),
|
|
24
|
+
event_type: z.enum(EVENT_TYPES),
|
|
25
|
+
action: z.string(),
|
|
26
|
+
target: z.string(),
|
|
27
|
+
metadata: eventMetadataSchema,
|
|
28
|
+
severity_hint: z.enum(SEVERITY_HINTS),
|
|
29
|
+
event_id: z.string().uuid(),
|
|
30
|
+
plugin_version: z.string(),
|
|
31
|
+
});
|
|
32
|
+
export function createEventId() {
|
|
33
|
+
return uuidv7();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU;IACV,UAAU;IACV,cAAc;IACd,kBAAkB;IAClB,iBAAiB;IACjB,UAAU;CACF,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAG1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC3B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAIH,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { EVENT_TYPES, SEVERITY_HINTS, clawnitorEventSchema, eventMetadataSchema, createEventId, type EventType, type SeverityHint, type EventMetadata, type ClawnitorEvent, } from "./events.js";
|
|
2
|
+
export { type KillState as ApiKillState, type IngestEventsRequest, type IngestEventsResponse, type ApiError, type AgentResponse, type CreateAgentRequest, type StatsResponse, } from "./api-types.js";
|
|
3
|
+
export { RULE_TYPES, thresholdConfigSchema, rateConfigSchema, keywordConfigSchema, ruleConfigSchema, type RuleType, type ThresholdConfig, type RateConfig, type KeywordConfig, type RuleConfig, type Rule, type CreateRuleRequest, type UpdateRuleRequest, } from "./rules.js";
|
|
4
|
+
export { API_KEY_PREFIX, MAX_FREE_RULES, DEFAULT_SPEND_LIMIT, DEFAULT_RATE_LIMIT, CACHE_SIZE_LIMIT, CACHE_AGE_LIMIT, EVENT_BATCH_SIZE, EVENT_BATCH_INTERVAL_MS, WS_HEARTBEAT_INTERVAL_MS, WS_RECONNECT_BASE_MS, WS_RECONNECT_MAX_MS, FREE_RETENTION_DAYS, PAID_RETENTION_DAYS, BASELINE_LEARNING_HOURS, ANOMALY_CHECK_INTERVAL_MINUTES, NL_EVAL_INTERVAL_MINUTES, } from "./constants.js";
|
|
5
|
+
export { type KillMessage, type UnkillMessage, type WsMessage, type KillState, } from "./kill-switch.js";
|
|
6
|
+
export { TIERS, TIER_FEATURES, type Tier, type TierFeatures, } from "./billing.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,SAAS,IAAI,YAAY,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,EACL,aAAa,EACb,KAAK,IAAI,EACT,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { EVENT_TYPES, SEVERITY_HINTS, clawnitorEventSchema, eventMetadataSchema, createEventId, } from "./events.js";
|
|
2
|
+
export { RULE_TYPES, thresholdConfigSchema, rateConfigSchema, keywordConfigSchema, ruleConfigSchema, } from "./rules.js";
|
|
3
|
+
export { API_KEY_PREFIX, MAX_FREE_RULES, DEFAULT_SPEND_LIMIT, DEFAULT_RATE_LIMIT, CACHE_SIZE_LIMIT, CACHE_AGE_LIMIT, EVENT_BATCH_SIZE, EVENT_BATCH_INTERVAL_MS, WS_HEARTBEAT_INTERVAL_MS, WS_RECONNECT_BASE_MS, WS_RECONNECT_MAX_MS, FREE_RETENTION_DAYS, PAID_RETENTION_DAYS, BASELINE_LEARNING_HOURS, ANOMALY_CHECK_INTERVAL_MINUTES, NL_EVAL_INTERVAL_MINUTES, } from "./constants.js";
|
|
4
|
+
export { TIERS, TIER_FEATURES, } from "./billing.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GAKd,MAAM,aAAa,CAAC;AAYrB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GASjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EACL,KAAK,EACL,aAAa,GAGd,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface KillMessage {
|
|
2
|
+
type: "kill";
|
|
3
|
+
reason: string;
|
|
4
|
+
rule_id?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface UnkillMessage {
|
|
7
|
+
type: "unkill";
|
|
8
|
+
}
|
|
9
|
+
export type WsMessage = KillMessage | UnkillMessage;
|
|
10
|
+
export interface KillState {
|
|
11
|
+
killed: boolean;
|
|
12
|
+
reason?: string;
|
|
13
|
+
killed_at?: string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=kill-switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-switch.d.ts","sourceRoot":"","sources":["../src/kill-switch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-switch.js","sourceRoot":"","sources":["../src/kill-switch.ts"],"names":[],"mappings":""}
|
package/dist/rules.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const RULE_TYPES: readonly ["threshold", "rate", "keyword", "nl"];
|
|
3
|
+
export type RuleType = (typeof RULE_TYPES)[number];
|
|
4
|
+
export declare const thresholdConfigSchema: z.ZodObject<{
|
|
5
|
+
field: z.ZodString;
|
|
6
|
+
operator: z.ZodEnum<["gt", "lt"]>;
|
|
7
|
+
value: z.ZodNumber;
|
|
8
|
+
windowMinutes: z.ZodNumber;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
value: number;
|
|
11
|
+
field: string;
|
|
12
|
+
operator: "gt" | "lt";
|
|
13
|
+
windowMinutes: number;
|
|
14
|
+
}, {
|
|
15
|
+
value: number;
|
|
16
|
+
field: string;
|
|
17
|
+
operator: "gt" | "lt";
|
|
18
|
+
windowMinutes: number;
|
|
19
|
+
}>;
|
|
20
|
+
export type ThresholdConfig = z.infer<typeof thresholdConfigSchema>;
|
|
21
|
+
export declare const rateConfigSchema: z.ZodObject<{
|
|
22
|
+
eventType: z.ZodOptional<z.ZodString>;
|
|
23
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
24
|
+
maxCount: z.ZodNumber;
|
|
25
|
+
windowMinutes: z.ZodNumber;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
windowMinutes: number;
|
|
28
|
+
maxCount: number;
|
|
29
|
+
eventType?: string | undefined;
|
|
30
|
+
toolName?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
windowMinutes: number;
|
|
33
|
+
maxCount: number;
|
|
34
|
+
eventType?: string | undefined;
|
|
35
|
+
toolName?: string | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export type RateConfig = z.infer<typeof rateConfigSchema>;
|
|
38
|
+
export declare const keywordConfigSchema: z.ZodObject<{
|
|
39
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
40
|
+
matchMode: z.ZodEnum<["any", "all"]>;
|
|
41
|
+
caseSensitive: z.ZodDefault<z.ZodBoolean>;
|
|
42
|
+
}, "strip", z.ZodTypeAny, {
|
|
43
|
+
keywords: string[];
|
|
44
|
+
matchMode: "any" | "all";
|
|
45
|
+
caseSensitive: boolean;
|
|
46
|
+
}, {
|
|
47
|
+
keywords: string[];
|
|
48
|
+
matchMode: "any" | "all";
|
|
49
|
+
caseSensitive?: boolean | undefined;
|
|
50
|
+
}>;
|
|
51
|
+
export type KeywordConfig = z.infer<typeof keywordConfigSchema>;
|
|
52
|
+
export declare const nlConfigSchema: z.ZodObject<{
|
|
53
|
+
promptText: z.ZodString;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
promptText: string;
|
|
56
|
+
}, {
|
|
57
|
+
promptText: string;
|
|
58
|
+
}>;
|
|
59
|
+
export type NLConfig = z.infer<typeof nlConfigSchema>;
|
|
60
|
+
export declare const ruleConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
61
|
+
field: z.ZodString;
|
|
62
|
+
operator: z.ZodEnum<["gt", "lt"]>;
|
|
63
|
+
value: z.ZodNumber;
|
|
64
|
+
windowMinutes: z.ZodNumber;
|
|
65
|
+
type: z.ZodLiteral<"threshold">;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
value: number;
|
|
68
|
+
type: "threshold";
|
|
69
|
+
field: string;
|
|
70
|
+
operator: "gt" | "lt";
|
|
71
|
+
windowMinutes: number;
|
|
72
|
+
}, {
|
|
73
|
+
value: number;
|
|
74
|
+
type: "threshold";
|
|
75
|
+
field: string;
|
|
76
|
+
operator: "gt" | "lt";
|
|
77
|
+
windowMinutes: number;
|
|
78
|
+
}>, z.ZodObject<{
|
|
79
|
+
eventType: z.ZodOptional<z.ZodString>;
|
|
80
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
81
|
+
maxCount: z.ZodNumber;
|
|
82
|
+
windowMinutes: z.ZodNumber;
|
|
83
|
+
type: z.ZodLiteral<"rate">;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
type: "rate";
|
|
86
|
+
windowMinutes: number;
|
|
87
|
+
maxCount: number;
|
|
88
|
+
eventType?: string | undefined;
|
|
89
|
+
toolName?: string | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
type: "rate";
|
|
92
|
+
windowMinutes: number;
|
|
93
|
+
maxCount: number;
|
|
94
|
+
eventType?: string | undefined;
|
|
95
|
+
toolName?: string | undefined;
|
|
96
|
+
}>, z.ZodObject<{
|
|
97
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
98
|
+
matchMode: z.ZodEnum<["any", "all"]>;
|
|
99
|
+
caseSensitive: z.ZodDefault<z.ZodBoolean>;
|
|
100
|
+
type: z.ZodLiteral<"keyword">;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
type: "keyword";
|
|
103
|
+
keywords: string[];
|
|
104
|
+
matchMode: "any" | "all";
|
|
105
|
+
caseSensitive: boolean;
|
|
106
|
+
}, {
|
|
107
|
+
type: "keyword";
|
|
108
|
+
keywords: string[];
|
|
109
|
+
matchMode: "any" | "all";
|
|
110
|
+
caseSensitive?: boolean | undefined;
|
|
111
|
+
}>, z.ZodObject<{
|
|
112
|
+
promptText: z.ZodString;
|
|
113
|
+
type: z.ZodLiteral<"nl">;
|
|
114
|
+
}, "strip", z.ZodTypeAny, {
|
|
115
|
+
type: "nl";
|
|
116
|
+
promptText: string;
|
|
117
|
+
}, {
|
|
118
|
+
type: "nl";
|
|
119
|
+
promptText: string;
|
|
120
|
+
}>]>;
|
|
121
|
+
export type RuleConfig = z.infer<typeof ruleConfigSchema>;
|
|
122
|
+
export interface Rule {
|
|
123
|
+
id: string;
|
|
124
|
+
user_id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
rule_type: RuleType;
|
|
127
|
+
config: RuleConfig;
|
|
128
|
+
enabled: boolean;
|
|
129
|
+
created_at: string;
|
|
130
|
+
updated_at: string;
|
|
131
|
+
}
|
|
132
|
+
export interface CreateRuleRequest {
|
|
133
|
+
name: string;
|
|
134
|
+
config: RuleConfig;
|
|
135
|
+
}
|
|
136
|
+
export interface UpdateRuleRequest {
|
|
137
|
+
name?: string;
|
|
138
|
+
config?: RuleConfig;
|
|
139
|
+
enabled?: boolean;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,iDAAkD,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,cAAc;;;;;;EAEzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
package/dist/rules.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const RULE_TYPES = ["threshold", "rate", "keyword", "nl"];
|
|
3
|
+
export const thresholdConfigSchema = z.object({
|
|
4
|
+
field: z.string(),
|
|
5
|
+
operator: z.enum(["gt", "lt"]),
|
|
6
|
+
value: z.number(),
|
|
7
|
+
windowMinutes: z.number().int().positive(),
|
|
8
|
+
});
|
|
9
|
+
export const rateConfigSchema = z.object({
|
|
10
|
+
eventType: z.string().optional(),
|
|
11
|
+
toolName: z.string().optional(),
|
|
12
|
+
maxCount: z.number().int().positive(),
|
|
13
|
+
windowMinutes: z.number().int().positive(),
|
|
14
|
+
});
|
|
15
|
+
export const keywordConfigSchema = z.object({
|
|
16
|
+
keywords: z.array(z.string()).min(1),
|
|
17
|
+
matchMode: z.enum(["any", "all"]),
|
|
18
|
+
caseSensitive: z.boolean().default(false),
|
|
19
|
+
});
|
|
20
|
+
export const nlConfigSchema = z.object({
|
|
21
|
+
promptText: z.string().min(1).max(1000),
|
|
22
|
+
});
|
|
23
|
+
export const ruleConfigSchema = z.discriminatedUnion("type", [
|
|
24
|
+
z.object({ type: z.literal("threshold"), ...thresholdConfigSchema.shape }),
|
|
25
|
+
z.object({ type: z.literal("rate"), ...rateConfigSchema.shape }),
|
|
26
|
+
z.object({ type: z.literal("keyword"), ...keywordConfigSchema.shape }),
|
|
27
|
+
z.object({ type: z.literal("nl"), ...nlConfigSchema.shape }),
|
|
28
|
+
]);
|
|
29
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAU,CAAC;AAG1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC1C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;CACxC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC3D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACtE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;CAC7D,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@clawnitor/shared",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Shared types, schemas, and constants for Clawnitor — agent monitoring for OpenClaw",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"prepublishOnly": "pnpm run build"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"clawnitor",
|
|
26
|
+
"openclaw",
|
|
27
|
+
"agent-monitoring",
|
|
28
|
+
"ai-safety",
|
|
29
|
+
"kill-switch"
|
|
30
|
+
],
|
|
31
|
+
"author": "David Kogan <davidkny22@gmail.com>",
|
|
32
|
+
"license": "AGPL-3.0",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/davidkny22/clawnitor-plugin.git",
|
|
36
|
+
"directory": "packages/shared"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://clawnitor.io",
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"zod": "^3.24",
|
|
44
|
+
"uuidv7": "^1"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"typescript": "^5.7",
|
|
48
|
+
"vitest": "^3"
|
|
49
|
+
}
|
|
50
|
+
}
|