@aiassesstech/grillo 0.1.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.
Files changed (121) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSE +21 -0
  3. package/README.md +512 -0
  4. package/SKILL.md +87 -0
  5. package/dist/api/server.d.ts +68 -0
  6. package/dist/api/server.d.ts.map +1 -0
  7. package/dist/api/server.js +596 -0
  8. package/dist/api/server.js.map +1 -0
  9. package/dist/audit/audit-log.d.ts +88 -0
  10. package/dist/audit/audit-log.d.ts.map +1 -0
  11. package/dist/audit/audit-log.js +195 -0
  12. package/dist/audit/audit-log.js.map +1 -0
  13. package/dist/certification/certificate.d.ts +80 -0
  14. package/dist/certification/certificate.d.ts.map +1 -0
  15. package/dist/certification/certificate.js +176 -0
  16. package/dist/certification/certificate.js.map +1 -0
  17. package/dist/cli/bin.d.ts +8 -0
  18. package/dist/cli/bin.d.ts.map +1 -0
  19. package/dist/cli/bin.js +12 -0
  20. package/dist/cli/bin.js.map +1 -0
  21. package/dist/cli/config-loader.d.ts +66 -0
  22. package/dist/cli/config-loader.d.ts.map +1 -0
  23. package/dist/cli/config-loader.js +243 -0
  24. package/dist/cli/config-loader.js.map +1 -0
  25. package/dist/cli/runner.d.ts +27 -0
  26. package/dist/cli/runner.d.ts.map +1 -0
  27. package/dist/cli/runner.js +388 -0
  28. package/dist/cli/runner.js.map +1 -0
  29. package/dist/commands/grillo-commands.d.ts +50 -0
  30. package/dist/commands/grillo-commands.d.ts.map +1 -0
  31. package/dist/commands/grillo-commands.js +752 -0
  32. package/dist/commands/grillo-commands.js.map +1 -0
  33. package/dist/commands/inline-commands.d.ts +16 -0
  34. package/dist/commands/inline-commands.d.ts.map +1 -0
  35. package/dist/commands/inline-commands.js +277 -0
  36. package/dist/commands/inline-commands.js.map +1 -0
  37. package/dist/commands/router.d.ts +56 -0
  38. package/dist/commands/router.d.ts.map +1 -0
  39. package/dist/commands/router.js +154 -0
  40. package/dist/commands/router.js.map +1 -0
  41. package/dist/config/defaults.d.ts +9 -0
  42. package/dist/config/defaults.d.ts.map +1 -0
  43. package/dist/config/defaults.js +78 -0
  44. package/dist/config/defaults.js.map +1 -0
  45. package/dist/config/schema.d.ts +573 -0
  46. package/dist/config/schema.d.ts.map +1 -0
  47. package/dist/config/schema.js +142 -0
  48. package/dist/config/schema.js.map +1 -0
  49. package/dist/dashboard/metrics.d.ts +100 -0
  50. package/dist/dashboard/metrics.d.ts.map +1 -0
  51. package/dist/dashboard/metrics.js +282 -0
  52. package/dist/dashboard/metrics.js.map +1 -0
  53. package/dist/dashboard/ui.d.ts +19 -0
  54. package/dist/dashboard/ui.d.ts.map +1 -0
  55. package/dist/dashboard/ui.js +951 -0
  56. package/dist/dashboard/ui.js.map +1 -0
  57. package/dist/discovery/discovery-adapter.d.ts +94 -0
  58. package/dist/discovery/discovery-adapter.d.ts.map +1 -0
  59. package/dist/discovery/discovery-adapter.js +114 -0
  60. package/dist/discovery/discovery-adapter.js.map +1 -0
  61. package/dist/discovery/discovery-service.d.ts +77 -0
  62. package/dist/discovery/discovery-service.d.ts.map +1 -0
  63. package/dist/discovery/discovery-service.js +240 -0
  64. package/dist/discovery/discovery-service.js.map +1 -0
  65. package/dist/drift/detector.d.ts +51 -0
  66. package/dist/drift/detector.d.ts.map +1 -0
  67. package/dist/drift/detector.js +148 -0
  68. package/dist/drift/detector.js.map +1 -0
  69. package/dist/drift/fleet-anomaly.d.ts +28 -0
  70. package/dist/drift/fleet-anomaly.d.ts.map +1 -0
  71. package/dist/drift/fleet-anomaly.js +186 -0
  72. package/dist/drift/fleet-anomaly.js.map +1 -0
  73. package/dist/events/event-bus.d.ts +209 -0
  74. package/dist/events/event-bus.d.ts.map +1 -0
  75. package/dist/events/event-bus.js +184 -0
  76. package/dist/events/event-bus.js.map +1 -0
  77. package/dist/frameworks/framework-registry.d.ts +116 -0
  78. package/dist/frameworks/framework-registry.d.ts.map +1 -0
  79. package/dist/frameworks/framework-registry.js +241 -0
  80. package/dist/frameworks/framework-registry.js.map +1 -0
  81. package/dist/index.d.ts +94 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +254 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/monitoring/continuous-monitor.d.ts +61 -0
  86. package/dist/monitoring/continuous-monitor.d.ts.map +1 -0
  87. package/dist/monitoring/continuous-monitor.js +191 -0
  88. package/dist/monitoring/continuous-monitor.js.map +1 -0
  89. package/dist/notifications/notifier.d.ts +21 -0
  90. package/dist/notifications/notifier.d.ts.map +1 -0
  91. package/dist/notifications/notifier.js +119 -0
  92. package/dist/notifications/notifier.js.map +1 -0
  93. package/dist/notifications/templates.d.ts +14 -0
  94. package/dist/notifications/templates.d.ts.map +1 -0
  95. package/dist/notifications/templates.js +105 -0
  96. package/dist/notifications/templates.js.map +1 -0
  97. package/dist/orchestration/orchestrator.d.ts +99 -0
  98. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  99. package/dist/orchestration/orchestrator.js +426 -0
  100. package/dist/orchestration/orchestrator.js.map +1 -0
  101. package/dist/orchestration/queue.d.ts +17 -0
  102. package/dist/orchestration/queue.d.ts.map +1 -0
  103. package/dist/orchestration/queue.js +121 -0
  104. package/dist/orchestration/queue.js.map +1 -0
  105. package/dist/orchestration/scheduler.d.ts +26 -0
  106. package/dist/orchestration/scheduler.d.ts.map +1 -0
  107. package/dist/orchestration/scheduler.js +110 -0
  108. package/dist/orchestration/scheduler.js.map +1 -0
  109. package/dist/registry/agent-registry.d.ts +106 -0
  110. package/dist/registry/agent-registry.d.ts.map +1 -0
  111. package/dist/registry/agent-registry.js +349 -0
  112. package/dist/registry/agent-registry.js.map +1 -0
  113. package/dist/registry/types.d.ts +158 -0
  114. package/dist/registry/types.d.ts.map +1 -0
  115. package/dist/registry/types.js +44 -0
  116. package/dist/registry/types.js.map +1 -0
  117. package/dist/reports/compliance-report.d.ts +66 -0
  118. package/dist/reports/compliance-report.d.ts.map +1 -0
  119. package/dist/reports/compliance-report.js +208 -0
  120. package/dist/reports/compliance-report.js.map +1 -0
  121. package/package.json +67 -0
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Grillo Cricket — Default Configuration
3
+ *
4
+ * Sensible defaults for a new Grillo deployment.
5
+ * Users override via their grillo.config.json or environment variables.
6
+ */
7
+ import { AgentCategory } from "../registry/types.js";
8
+ export const DEFAULT_CONFIG = {
9
+ assessment: {
10
+ frequency: "daily",
11
+ window: {
12
+ start: "06:00",
13
+ end: "10:00",
14
+ timezone: "America/New_York",
15
+ },
16
+ defaultFramework: "morality",
17
+ hierarchicalMode: false,
18
+ parallelAssessments: 5,
19
+ retry: {
20
+ maxAttempts: 3,
21
+ cooldownMinutes: 30,
22
+ },
23
+ gracePeriodMinutes: 60,
24
+ },
25
+ categories: {
26
+ [AgentCategory.CUSTOMER_FACING]: {
27
+ frequency: "daily",
28
+ thresholdModifier: 0.5,
29
+ },
30
+ [AgentCategory.DECISION_MAKING]: {
31
+ frequency: "daily",
32
+ thresholdModifier: 0.5,
33
+ },
34
+ [AgentCategory.INTERNAL_UTILITY]: {
35
+ frequency: "weekly",
36
+ thresholdModifier: 0,
37
+ },
38
+ [AgentCategory.DEV_TEST]: {
39
+ frequency: "on_demand",
40
+ thresholdModifier: -1.0,
41
+ },
42
+ [AgentCategory.CRITICAL_INFRASTRUCTURE]: {
43
+ frequency: "continuous",
44
+ thresholdModifier: 0,
45
+ minimumThreshold: 8.0,
46
+ },
47
+ },
48
+ compsi: {
49
+ healthCheckKey: "",
50
+ baseUrl: "https://www.aiassesstech.com",
51
+ perQuestionTimeoutMs: 30000,
52
+ overallTimeoutMs: 360000,
53
+ },
54
+ notifications: {
55
+ events: [
56
+ "assessment_failed",
57
+ "certification_expired",
58
+ "drift_warning",
59
+ "fleet_anomaly",
60
+ ],
61
+ },
62
+ providers: {},
63
+ drift: {
64
+ tdiWarningThreshold: 0.15,
65
+ tdiCriticalThreshold: 0.3,
66
+ baselineAlpha: 0.3,
67
+ fleetAnomalyMinAgents: 3,
68
+ },
69
+ customFrameworks: [],
70
+ whiteLabel: {
71
+ productName: "Grillo Cricket",
72
+ organizationName: "",
73
+ primaryColor: "#4F46E5",
74
+ reportFooter: "Powered by Grillo Cricket — The Conscience for AI",
75
+ certificateIssuer: "Grillo Cricket Assessment Authority",
76
+ },
77
+ };
78
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,UAAU,EAAE;QACV,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,kBAAkB;SAC7B;QACD,gBAAgB,EAAE,UAAU;QAC5B,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,CAAC;QACtB,KAAK,EAAE;YACL,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,EAAE;SACpB;QACD,kBAAkB,EAAE,EAAE;KACvB;IAED,UAAU,EAAE;QACV,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;YAC/B,SAAS,EAAE,OAAO;YAClB,iBAAiB,EAAE,GAAG;SACvB;QACD,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;YAC/B,SAAS,EAAE,OAAO;YAClB,iBAAiB,EAAE,GAAG;SACvB;QACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE;YAChC,SAAS,EAAE,QAAQ;YACnB,iBAAiB,EAAE,CAAC;SACrB;QACD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;YACxB,SAAS,EAAE,WAAW;YACtB,iBAAiB,EAAE,CAAC,GAAG;SACxB;QACD,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE;YACvC,SAAS,EAAE,YAAY;YACvB,iBAAiB,EAAE,CAAC;YACpB,gBAAgB,EAAE,GAAG;SACtB;KACF;IAED,MAAM,EAAE;QACN,cAAc,EAAE,EAAE;QAClB,OAAO,EAAE,8BAA8B;QACvC,oBAAoB,EAAE,KAAK;QAC3B,gBAAgB,EAAE,MAAM;KACzB;IAED,aAAa,EAAE;QACb,MAAM,EAAE;YACN,mBAAmB;YACnB,uBAAuB;YACvB,eAAe;YACf,eAAe;SAChB;KACF;IAED,SAAS,EAAE,EAAE;IAEb,KAAK,EAAE;QACL,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,GAAG;QACzB,aAAa,EAAE,GAAG;QAClB,qBAAqB,EAAE,CAAC;KACzB;IAED,gBAAgB,EAAE,EAAE;IAEpB,UAAU,EAAE;QACV,WAAW,EAAE,gBAAgB;QAC7B,gBAAgB,EAAE,EAAE;QACpB,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,mDAAmD;QACjE,iBAAiB,EAAE,qCAAqC;KACzD;CACF,CAAC"}
@@ -0,0 +1,573 @@
1
+ /**
2
+ * Grillo Cricket — Configuration Schema
3
+ *
4
+ * Zod-validated configuration for the Grillo conscience agent.
5
+ * Validated at startup to fail fast on misconfiguration.
6
+ */
7
+ import { z } from "zod";
8
+ import { AgentCategory } from "../registry/types.js";
9
+ export declare const assessmentPolicySchema: z.ZodObject<{
10
+ frequency: z.ZodEnum<["startup_only", "daily", "weekly", "on_demand", "continuous"]>;
11
+ window: z.ZodObject<{
12
+ start: z.ZodString;
13
+ end: z.ZodString;
14
+ timezone: z.ZodString;
15
+ }, "strip", z.ZodTypeAny, {
16
+ start: string;
17
+ end: string;
18
+ timezone: string;
19
+ }, {
20
+ start: string;
21
+ end: string;
22
+ timezone: string;
23
+ }>;
24
+ defaultFramework: z.ZodDefault<z.ZodString>;
25
+ hierarchicalMode: z.ZodDefault<z.ZodBoolean>;
26
+ parallelAssessments: z.ZodDefault<z.ZodNumber>;
27
+ retry: z.ZodObject<{
28
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
29
+ cooldownMinutes: z.ZodDefault<z.ZodNumber>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ maxAttempts: number;
32
+ cooldownMinutes: number;
33
+ }, {
34
+ maxAttempts?: number | undefined;
35
+ cooldownMinutes?: number | undefined;
36
+ }>;
37
+ gracePeriodMinutes: z.ZodDefault<z.ZodNumber>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
40
+ window: {
41
+ start: string;
42
+ end: string;
43
+ timezone: string;
44
+ };
45
+ defaultFramework: string;
46
+ hierarchicalMode: boolean;
47
+ parallelAssessments: number;
48
+ retry: {
49
+ maxAttempts: number;
50
+ cooldownMinutes: number;
51
+ };
52
+ gracePeriodMinutes: number;
53
+ }, {
54
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
55
+ window: {
56
+ start: string;
57
+ end: string;
58
+ timezone: string;
59
+ };
60
+ retry: {
61
+ maxAttempts?: number | undefined;
62
+ cooldownMinutes?: number | undefined;
63
+ };
64
+ defaultFramework?: string | undefined;
65
+ hierarchicalMode?: boolean | undefined;
66
+ parallelAssessments?: number | undefined;
67
+ gracePeriodMinutes?: number | undefined;
68
+ }>;
69
+ export declare const categoryOverrideSchema: z.ZodObject<{
70
+ frequency: z.ZodOptional<z.ZodEnum<["startup_only", "daily", "weekly", "on_demand", "continuous"]>>;
71
+ thresholdModifier: z.ZodDefault<z.ZodNumber>;
72
+ minimumThreshold: z.ZodOptional<z.ZodNumber>;
73
+ }, "strip", z.ZodTypeAny, {
74
+ thresholdModifier: number;
75
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
76
+ minimumThreshold?: number | undefined;
77
+ }, {
78
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
79
+ thresholdModifier?: number | undefined;
80
+ minimumThreshold?: number | undefined;
81
+ }>;
82
+ export declare const compsiConnectionSchema: z.ZodObject<{
83
+ healthCheckKey: z.ZodString;
84
+ baseUrl: z.ZodDefault<z.ZodString>;
85
+ perQuestionTimeoutMs: z.ZodDefault<z.ZodNumber>;
86
+ overallTimeoutMs: z.ZodDefault<z.ZodNumber>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ healthCheckKey: string;
89
+ baseUrl: string;
90
+ perQuestionTimeoutMs: number;
91
+ overallTimeoutMs: number;
92
+ }, {
93
+ healthCheckKey: string;
94
+ baseUrl?: string | undefined;
95
+ perQuestionTimeoutMs?: number | undefined;
96
+ overallTimeoutMs?: number | undefined;
97
+ }>;
98
+ export declare const notificationSchema: z.ZodObject<{
99
+ webhookUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
100
+ slackChannel: z.ZodOptional<z.ZodString>;
101
+ emailRecipients: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
102
+ events: z.ZodArray<z.ZodEnum<["assessment_failed", "certification_expired", "drift_warning", "fleet_anomaly", "agent_discovered", "escalation_timeout", "assessment_passed", "fleet_assessment_complete"]>, "many">;
103
+ }, "strip", z.ZodTypeAny, {
104
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
105
+ webhookUrls?: string[] | undefined;
106
+ slackChannel?: string | undefined;
107
+ emailRecipients?: string[] | undefined;
108
+ }, {
109
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
110
+ webhookUrls?: string[] | undefined;
111
+ slackChannel?: string | undefined;
112
+ emailRecipients?: string[] | undefined;
113
+ }>;
114
+ export declare const modelProviderSchema: z.ZodObject<{
115
+ baseUrl: z.ZodString;
116
+ apiKey: z.ZodString;
117
+ api: z.ZodEnum<["anthropic-messages", "openai", "openai-chat"]>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ baseUrl: string;
120
+ apiKey: string;
121
+ api: "anthropic-messages" | "openai" | "openai-chat";
122
+ }, {
123
+ baseUrl: string;
124
+ apiKey: string;
125
+ api: "anthropic-messages" | "openai" | "openai-chat";
126
+ }>;
127
+ export declare const customFrameworkSchema: z.ZodObject<{
128
+ id: z.ZodString;
129
+ name: z.ZodString;
130
+ level: z.ZodNumber;
131
+ dimensions: z.ZodArray<z.ZodString, "many">;
132
+ description: z.ZodOptional<z.ZodString>;
133
+ subParameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
134
+ name: z.ZodString;
135
+ description: z.ZodString;
136
+ options: z.ZodArray<z.ZodString, "many">;
137
+ default: z.ZodString;
138
+ }, "strip", z.ZodTypeAny, {
139
+ options: string[];
140
+ name: string;
141
+ description: string;
142
+ default: string;
143
+ }, {
144
+ options: string[];
145
+ name: string;
146
+ description: string;
147
+ default: string;
148
+ }>, "many">>;
149
+ defaultThreshold: z.ZodDefault<z.ZodNumber>;
150
+ available: z.ZodDefault<z.ZodBoolean>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ available: boolean;
153
+ id: string;
154
+ name: string;
155
+ level: number;
156
+ dimensions: string[];
157
+ defaultThreshold: number;
158
+ description?: string | undefined;
159
+ subParameters?: {
160
+ options: string[];
161
+ name: string;
162
+ description: string;
163
+ default: string;
164
+ }[] | undefined;
165
+ }, {
166
+ id: string;
167
+ name: string;
168
+ level: number;
169
+ dimensions: string[];
170
+ available?: boolean | undefined;
171
+ description?: string | undefined;
172
+ subParameters?: {
173
+ options: string[];
174
+ name: string;
175
+ description: string;
176
+ default: string;
177
+ }[] | undefined;
178
+ defaultThreshold?: number | undefined;
179
+ }>;
180
+ export declare const whiteLabelSchema: z.ZodObject<{
181
+ /** Custom product name (replaces "Grillo Cricket") */
182
+ productName: z.ZodDefault<z.ZodString>;
183
+ /** Custom organization name */
184
+ organizationName: z.ZodDefault<z.ZodString>;
185
+ /** Custom logo URL for reports */
186
+ logoUrl: z.ZodOptional<z.ZodString>;
187
+ /** Custom colors for dashboard */
188
+ primaryColor: z.ZodDefault<z.ZodString>;
189
+ /** Custom report footer */
190
+ reportFooter: z.ZodDefault<z.ZodString>;
191
+ /** Custom certificate issuer name */
192
+ certificateIssuer: z.ZodDefault<z.ZodString>;
193
+ }, "strip", z.ZodTypeAny, {
194
+ productName: string;
195
+ organizationName: string;
196
+ primaryColor: string;
197
+ reportFooter: string;
198
+ certificateIssuer: string;
199
+ logoUrl?: string | undefined;
200
+ }, {
201
+ productName?: string | undefined;
202
+ organizationName?: string | undefined;
203
+ logoUrl?: string | undefined;
204
+ primaryColor?: string | undefined;
205
+ reportFooter?: string | undefined;
206
+ certificateIssuer?: string | undefined;
207
+ }>;
208
+ export declare const grilloConfigSchema: z.ZodObject<{
209
+ assessment: z.ZodObject<{
210
+ frequency: z.ZodEnum<["startup_only", "daily", "weekly", "on_demand", "continuous"]>;
211
+ window: z.ZodObject<{
212
+ start: z.ZodString;
213
+ end: z.ZodString;
214
+ timezone: z.ZodString;
215
+ }, "strip", z.ZodTypeAny, {
216
+ start: string;
217
+ end: string;
218
+ timezone: string;
219
+ }, {
220
+ start: string;
221
+ end: string;
222
+ timezone: string;
223
+ }>;
224
+ defaultFramework: z.ZodDefault<z.ZodString>;
225
+ hierarchicalMode: z.ZodDefault<z.ZodBoolean>;
226
+ parallelAssessments: z.ZodDefault<z.ZodNumber>;
227
+ retry: z.ZodObject<{
228
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
229
+ cooldownMinutes: z.ZodDefault<z.ZodNumber>;
230
+ }, "strip", z.ZodTypeAny, {
231
+ maxAttempts: number;
232
+ cooldownMinutes: number;
233
+ }, {
234
+ maxAttempts?: number | undefined;
235
+ cooldownMinutes?: number | undefined;
236
+ }>;
237
+ gracePeriodMinutes: z.ZodDefault<z.ZodNumber>;
238
+ }, "strip", z.ZodTypeAny, {
239
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
240
+ window: {
241
+ start: string;
242
+ end: string;
243
+ timezone: string;
244
+ };
245
+ defaultFramework: string;
246
+ hierarchicalMode: boolean;
247
+ parallelAssessments: number;
248
+ retry: {
249
+ maxAttempts: number;
250
+ cooldownMinutes: number;
251
+ };
252
+ gracePeriodMinutes: number;
253
+ }, {
254
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
255
+ window: {
256
+ start: string;
257
+ end: string;
258
+ timezone: string;
259
+ };
260
+ retry: {
261
+ maxAttempts?: number | undefined;
262
+ cooldownMinutes?: number | undefined;
263
+ };
264
+ defaultFramework?: string | undefined;
265
+ hierarchicalMode?: boolean | undefined;
266
+ parallelAssessments?: number | undefined;
267
+ gracePeriodMinutes?: number | undefined;
268
+ }>;
269
+ categories: z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof AgentCategory>, z.ZodObject<{
270
+ frequency: z.ZodOptional<z.ZodEnum<["startup_only", "daily", "weekly", "on_demand", "continuous"]>>;
271
+ thresholdModifier: z.ZodDefault<z.ZodNumber>;
272
+ minimumThreshold: z.ZodOptional<z.ZodNumber>;
273
+ }, "strip", z.ZodTypeAny, {
274
+ thresholdModifier: number;
275
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
276
+ minimumThreshold?: number | undefined;
277
+ }, {
278
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
279
+ thresholdModifier?: number | undefined;
280
+ minimumThreshold?: number | undefined;
281
+ }>>>;
282
+ compsi: z.ZodObject<{
283
+ healthCheckKey: z.ZodString;
284
+ baseUrl: z.ZodDefault<z.ZodString>;
285
+ perQuestionTimeoutMs: z.ZodDefault<z.ZodNumber>;
286
+ overallTimeoutMs: z.ZodDefault<z.ZodNumber>;
287
+ }, "strip", z.ZodTypeAny, {
288
+ healthCheckKey: string;
289
+ baseUrl: string;
290
+ perQuestionTimeoutMs: number;
291
+ overallTimeoutMs: number;
292
+ }, {
293
+ healthCheckKey: string;
294
+ baseUrl?: string | undefined;
295
+ perQuestionTimeoutMs?: number | undefined;
296
+ overallTimeoutMs?: number | undefined;
297
+ }>;
298
+ notifications: z.ZodDefault<z.ZodObject<{
299
+ webhookUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
300
+ slackChannel: z.ZodOptional<z.ZodString>;
301
+ emailRecipients: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
302
+ events: z.ZodArray<z.ZodEnum<["assessment_failed", "certification_expired", "drift_warning", "fleet_anomaly", "agent_discovered", "escalation_timeout", "assessment_passed", "fleet_assessment_complete"]>, "many">;
303
+ }, "strip", z.ZodTypeAny, {
304
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
305
+ webhookUrls?: string[] | undefined;
306
+ slackChannel?: string | undefined;
307
+ emailRecipients?: string[] | undefined;
308
+ }, {
309
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
310
+ webhookUrls?: string[] | undefined;
311
+ slackChannel?: string | undefined;
312
+ emailRecipients?: string[] | undefined;
313
+ }>>;
314
+ /** Model providers for direct API routing (same pattern as openclaw-plugin) */
315
+ providers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
316
+ baseUrl: z.ZodString;
317
+ apiKey: z.ZodString;
318
+ api: z.ZodEnum<["anthropic-messages", "openai", "openai-chat"]>;
319
+ }, "strip", z.ZodTypeAny, {
320
+ baseUrl: string;
321
+ apiKey: string;
322
+ api: "anthropic-messages" | "openai" | "openai-chat";
323
+ }, {
324
+ baseUrl: string;
325
+ apiKey: string;
326
+ api: "anthropic-messages" | "openai" | "openai-chat";
327
+ }>>>;
328
+ /** Drift detection thresholds */
329
+ drift: z.ZodDefault<z.ZodObject<{
330
+ tdiWarningThreshold: z.ZodDefault<z.ZodNumber>;
331
+ tdiCriticalThreshold: z.ZodDefault<z.ZodNumber>;
332
+ baselineAlpha: z.ZodDefault<z.ZodNumber>;
333
+ fleetAnomalyMinAgents: z.ZodDefault<z.ZodNumber>;
334
+ }, "strip", z.ZodTypeAny, {
335
+ tdiWarningThreshold: number;
336
+ tdiCriticalThreshold: number;
337
+ baselineAlpha: number;
338
+ fleetAnomalyMinAgents: number;
339
+ }, {
340
+ tdiWarningThreshold?: number | undefined;
341
+ tdiCriticalThreshold?: number | undefined;
342
+ baselineAlpha?: number | undefined;
343
+ fleetAnomalyMinAgents?: number | undefined;
344
+ }>>;
345
+ /** Phase 6: Custom assessment frameworks loaded from config */
346
+ customFrameworks: z.ZodDefault<z.ZodArray<z.ZodObject<{
347
+ id: z.ZodString;
348
+ name: z.ZodString;
349
+ level: z.ZodNumber;
350
+ dimensions: z.ZodArray<z.ZodString, "many">;
351
+ description: z.ZodOptional<z.ZodString>;
352
+ subParameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
353
+ name: z.ZodString;
354
+ description: z.ZodString;
355
+ options: z.ZodArray<z.ZodString, "many">;
356
+ default: z.ZodString;
357
+ }, "strip", z.ZodTypeAny, {
358
+ options: string[];
359
+ name: string;
360
+ description: string;
361
+ default: string;
362
+ }, {
363
+ options: string[];
364
+ name: string;
365
+ description: string;
366
+ default: string;
367
+ }>, "many">>;
368
+ defaultThreshold: z.ZodDefault<z.ZodNumber>;
369
+ available: z.ZodDefault<z.ZodBoolean>;
370
+ }, "strip", z.ZodTypeAny, {
371
+ available: boolean;
372
+ id: string;
373
+ name: string;
374
+ level: number;
375
+ dimensions: string[];
376
+ defaultThreshold: number;
377
+ description?: string | undefined;
378
+ subParameters?: {
379
+ options: string[];
380
+ name: string;
381
+ description: string;
382
+ default: string;
383
+ }[] | undefined;
384
+ }, {
385
+ id: string;
386
+ name: string;
387
+ level: number;
388
+ dimensions: string[];
389
+ available?: boolean | undefined;
390
+ description?: string | undefined;
391
+ subParameters?: {
392
+ options: string[];
393
+ name: string;
394
+ description: string;
395
+ default: string;
396
+ }[] | undefined;
397
+ defaultThreshold?: number | undefined;
398
+ }>, "many">>;
399
+ /** Phase 6: White-label configuration for enterprise deployments */
400
+ whiteLabel: z.ZodDefault<z.ZodObject<{
401
+ /** Custom product name (replaces "Grillo Cricket") */
402
+ productName: z.ZodDefault<z.ZodString>;
403
+ /** Custom organization name */
404
+ organizationName: z.ZodDefault<z.ZodString>;
405
+ /** Custom logo URL for reports */
406
+ logoUrl: z.ZodOptional<z.ZodString>;
407
+ /** Custom colors for dashboard */
408
+ primaryColor: z.ZodDefault<z.ZodString>;
409
+ /** Custom report footer */
410
+ reportFooter: z.ZodDefault<z.ZodString>;
411
+ /** Custom certificate issuer name */
412
+ certificateIssuer: z.ZodDefault<z.ZodString>;
413
+ }, "strip", z.ZodTypeAny, {
414
+ productName: string;
415
+ organizationName: string;
416
+ primaryColor: string;
417
+ reportFooter: string;
418
+ certificateIssuer: string;
419
+ logoUrl?: string | undefined;
420
+ }, {
421
+ productName?: string | undefined;
422
+ organizationName?: string | undefined;
423
+ logoUrl?: string | undefined;
424
+ primaryColor?: string | undefined;
425
+ reportFooter?: string | undefined;
426
+ certificateIssuer?: string | undefined;
427
+ }>>;
428
+ }, "strip", z.ZodTypeAny, {
429
+ assessment: {
430
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
431
+ window: {
432
+ start: string;
433
+ end: string;
434
+ timezone: string;
435
+ };
436
+ defaultFramework: string;
437
+ hierarchicalMode: boolean;
438
+ parallelAssessments: number;
439
+ retry: {
440
+ maxAttempts: number;
441
+ cooldownMinutes: number;
442
+ };
443
+ gracePeriodMinutes: number;
444
+ };
445
+ categories: Partial<Record<AgentCategory, {
446
+ thresholdModifier: number;
447
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
448
+ minimumThreshold?: number | undefined;
449
+ }>>;
450
+ compsi: {
451
+ healthCheckKey: string;
452
+ baseUrl: string;
453
+ perQuestionTimeoutMs: number;
454
+ overallTimeoutMs: number;
455
+ };
456
+ notifications: {
457
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
458
+ webhookUrls?: string[] | undefined;
459
+ slackChannel?: string | undefined;
460
+ emailRecipients?: string[] | undefined;
461
+ };
462
+ providers: Record<string, {
463
+ baseUrl: string;
464
+ apiKey: string;
465
+ api: "anthropic-messages" | "openai" | "openai-chat";
466
+ }>;
467
+ drift: {
468
+ tdiWarningThreshold: number;
469
+ tdiCriticalThreshold: number;
470
+ baselineAlpha: number;
471
+ fleetAnomalyMinAgents: number;
472
+ };
473
+ customFrameworks: {
474
+ available: boolean;
475
+ id: string;
476
+ name: string;
477
+ level: number;
478
+ dimensions: string[];
479
+ defaultThreshold: number;
480
+ description?: string | undefined;
481
+ subParameters?: {
482
+ options: string[];
483
+ name: string;
484
+ description: string;
485
+ default: string;
486
+ }[] | undefined;
487
+ }[];
488
+ whiteLabel: {
489
+ productName: string;
490
+ organizationName: string;
491
+ primaryColor: string;
492
+ reportFooter: string;
493
+ certificateIssuer: string;
494
+ logoUrl?: string | undefined;
495
+ };
496
+ }, {
497
+ assessment: {
498
+ frequency: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous";
499
+ window: {
500
+ start: string;
501
+ end: string;
502
+ timezone: string;
503
+ };
504
+ retry: {
505
+ maxAttempts?: number | undefined;
506
+ cooldownMinutes?: number | undefined;
507
+ };
508
+ defaultFramework?: string | undefined;
509
+ hierarchicalMode?: boolean | undefined;
510
+ parallelAssessments?: number | undefined;
511
+ gracePeriodMinutes?: number | undefined;
512
+ };
513
+ compsi: {
514
+ healthCheckKey: string;
515
+ baseUrl?: string | undefined;
516
+ perQuestionTimeoutMs?: number | undefined;
517
+ overallTimeoutMs?: number | undefined;
518
+ };
519
+ categories?: Partial<Record<AgentCategory, {
520
+ frequency?: "startup_only" | "daily" | "weekly" | "on_demand" | "continuous" | undefined;
521
+ thresholdModifier?: number | undefined;
522
+ minimumThreshold?: number | undefined;
523
+ }>> | undefined;
524
+ notifications?: {
525
+ events: ("drift_warning" | "assessment_failed" | "certification_expired" | "fleet_anomaly" | "agent_discovered" | "escalation_timeout" | "assessment_passed" | "fleet_assessment_complete")[];
526
+ webhookUrls?: string[] | undefined;
527
+ slackChannel?: string | undefined;
528
+ emailRecipients?: string[] | undefined;
529
+ } | undefined;
530
+ providers?: Record<string, {
531
+ baseUrl: string;
532
+ apiKey: string;
533
+ api: "anthropic-messages" | "openai" | "openai-chat";
534
+ }> | undefined;
535
+ drift?: {
536
+ tdiWarningThreshold?: number | undefined;
537
+ tdiCriticalThreshold?: number | undefined;
538
+ baselineAlpha?: number | undefined;
539
+ fleetAnomalyMinAgents?: number | undefined;
540
+ } | undefined;
541
+ customFrameworks?: {
542
+ id: string;
543
+ name: string;
544
+ level: number;
545
+ dimensions: string[];
546
+ available?: boolean | undefined;
547
+ description?: string | undefined;
548
+ subParameters?: {
549
+ options: string[];
550
+ name: string;
551
+ description: string;
552
+ default: string;
553
+ }[] | undefined;
554
+ defaultThreshold?: number | undefined;
555
+ }[] | undefined;
556
+ whiteLabel?: {
557
+ productName?: string | undefined;
558
+ organizationName?: string | undefined;
559
+ logoUrl?: string | undefined;
560
+ primaryColor?: string | undefined;
561
+ reportFooter?: string | undefined;
562
+ certificateIssuer?: string | undefined;
563
+ } | undefined;
564
+ }>;
565
+ export type GrilloConfig = z.infer<typeof grilloConfigSchema>;
566
+ export type AssessmentPolicy = z.infer<typeof assessmentPolicySchema>;
567
+ export type CompsiConnection = z.infer<typeof compsiConnectionSchema>;
568
+ export type NotificationConfig = z.infer<typeof notificationSchema>;
569
+ export type CategoryOverride = z.infer<typeof categoryOverrideSchema>;
570
+ export type ModelProvider = z.infer<typeof modelProviderSchema>;
571
+ export type CustomFrameworkConfigSchema = z.infer<typeof customFrameworkSchema>;
572
+ export type WhiteLabelConfig = z.infer<typeof whiteLabelSchema>;
573
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBjC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAMjC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AAMH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAgB7B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAMH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAchC,CAAC;AAMH,eAAO,MAAM,gBAAgB;IAC3B,sDAAsD;;IAEtD,+BAA+B;;IAE/B,kCAAkC;;IAElC,kCAAkC;;IAElC,2BAA2B;;IAE3B,qCAAqC;;;;;;;;;;;;;;;;EAErC,CAAC;AAMH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAa7B,+EAA+E;;;;;;;;;;;;;;IAG/E,iCAAiC;;;;;;;;;;;;;;;;;IAUjC,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG/D,oEAAoE;;QA/CpE,sDAAsD;;QAEtD,+BAA+B;;QAE/B,kCAAkC;;QAElC,kCAAkC;;QAElC,2BAA2B;;QAE3B,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCrC,CAAC;AAMH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAChF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}