@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,66 @@
1
+ /**
2
+ * Grillo Cricket — Configuration Loader
3
+ *
4
+ * Three-layer config resolution:
5
+ * 1. Defaults (built-in)
6
+ * 2. Config file (grillo.config.json)
7
+ * 3. Environment variables (GRILLO_*)
8
+ * 4. CLI flags (highest priority)
9
+ *
10
+ * Environment variable mapping follows a convention:
11
+ * GRILLO_COMPSI_HEALTH_CHECK_KEY -> config.compsi.healthCheckKey
12
+ * GRILLO_COMPSI_BASE_URL -> config.compsi.baseUrl
13
+ * GRILLO_API_PORT -> config.api.port
14
+ * etc.
15
+ */
16
+ import type { GrilloConfig } from "../config/schema.js";
17
+ /**
18
+ * Search for a config file starting from the given directory,
19
+ * walking up to the filesystem root.
20
+ */
21
+ export declare function findConfigFile(startDir?: string): string | null;
22
+ /**
23
+ * Load and parse a JSON config file.
24
+ */
25
+ export declare function loadConfigFile(filePath: string): Partial<GrilloConfig>;
26
+ /**
27
+ * Save config to a JSON file (for `grillo -config --set` mutation).
28
+ * Creates a timestamped backup of the existing file before overwriting.
29
+ */
30
+ export declare function saveConfigFile(filePath: string, config: Partial<GrilloConfig>): void;
31
+ /**
32
+ * Set a dot-notated key in a config object.
33
+ * e.g. setConfigValue(config, "drift.tdiWarningThreshold", 0.2)
34
+ */
35
+ export declare function setConfigValue(config: Record<string, unknown>, dotPath: string, value: string): {
36
+ parsedValue: unknown;
37
+ success: boolean;
38
+ };
39
+ /**
40
+ * Build a partial config from environment variables.
41
+ */
42
+ export declare function loadEnvConfig(): Partial<GrilloConfig>;
43
+ export interface CLIFlags {
44
+ config?: string;
45
+ port?: number;
46
+ host?: string;
47
+ persistPath?: string;
48
+ logLevel?: "debug" | "info" | "warn" | "error";
49
+ dryRun?: boolean;
50
+ }
51
+ /**
52
+ * Parse CLI arguments into flags.
53
+ * Supports: --flag value, --flag=value, --boolean-flag
54
+ */
55
+ export declare function parseCLIFlags(args: string[]): CLIFlags;
56
+ /**
57
+ * Resolve final config from all layers.
58
+ * Priority: CLI flags > env vars > config file > defaults
59
+ */
60
+ export declare function resolveConfig(params: {
61
+ defaults: GrilloConfig;
62
+ fileConfig?: Partial<GrilloConfig>;
63
+ envConfig?: Partial<GrilloConfig>;
64
+ cliOverrides?: Partial<GrilloConfig>;
65
+ }): GrilloConfig;
66
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/cli/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAiB9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAStE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAC5B,IAAI,CASN;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAsB5C;AAsCD;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,CAyBrD;AAMD,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAgCtD;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACtC,GAAG,YAAY,CAcf"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Grillo Cricket — Configuration Loader
3
+ *
4
+ * Three-layer config resolution:
5
+ * 1. Defaults (built-in)
6
+ * 2. Config file (grillo.config.json)
7
+ * 3. Environment variables (GRILLO_*)
8
+ * 4. CLI flags (highest priority)
9
+ *
10
+ * Environment variable mapping follows a convention:
11
+ * GRILLO_COMPSI_HEALTH_CHECK_KEY -> config.compsi.healthCheckKey
12
+ * GRILLO_COMPSI_BASE_URL -> config.compsi.baseUrl
13
+ * GRILLO_API_PORT -> config.api.port
14
+ * etc.
15
+ */
16
+ import * as fs from "node:fs";
17
+ import * as path from "node:path";
18
+ // ================================================================
19
+ // Config File Discovery
20
+ // ================================================================
21
+ const CONFIG_FILE_NAMES = [
22
+ "grillo.config.json",
23
+ ".grillo.json",
24
+ ".grillorc.json",
25
+ ];
26
+ /**
27
+ * Search for a config file starting from the given directory,
28
+ * walking up to the filesystem root.
29
+ */
30
+ export function findConfigFile(startDir = process.cwd()) {
31
+ let dir = path.resolve(startDir);
32
+ while (true) {
33
+ for (const name of CONFIG_FILE_NAMES) {
34
+ const candidate = path.join(dir, name);
35
+ if (fs.existsSync(candidate)) {
36
+ return candidate;
37
+ }
38
+ }
39
+ const parent = path.dirname(dir);
40
+ if (parent === dir)
41
+ break; // Hit filesystem root
42
+ dir = parent;
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Load and parse a JSON config file.
48
+ */
49
+ export function loadConfigFile(filePath) {
50
+ try {
51
+ const raw = fs.readFileSync(filePath, "utf-8");
52
+ return JSON.parse(raw);
53
+ }
54
+ catch (error) {
55
+ throw new Error(`Failed to load config file ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
56
+ }
57
+ }
58
+ /**
59
+ * Save config to a JSON file (for `grillo -config --set` mutation).
60
+ * Creates a timestamped backup of the existing file before overwriting.
61
+ */
62
+ export function saveConfigFile(filePath, config) {
63
+ // Backup existing file if it exists
64
+ if (fs.existsSync(filePath)) {
65
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
66
+ const backupPath = `${filePath}.backup.${timestamp}`;
67
+ fs.copyFileSync(filePath, backupPath);
68
+ }
69
+ fs.writeFileSync(filePath, JSON.stringify(config, null, 2), "utf-8");
70
+ }
71
+ /**
72
+ * Set a dot-notated key in a config object.
73
+ * e.g. setConfigValue(config, "drift.tdiWarningThreshold", 0.2)
74
+ */
75
+ export function setConfigValue(config, dotPath, value) {
76
+ const parts = dotPath.split(".");
77
+ // Auto-parse value: number, boolean, or string
78
+ let parsedValue = value;
79
+ if (value === "true")
80
+ parsedValue = true;
81
+ else if (value === "false")
82
+ parsedValue = false;
83
+ else if (!isNaN(Number(value)) && value !== "")
84
+ parsedValue = Number(value);
85
+ // Navigate to parent
86
+ let current = config;
87
+ for (let i = 0; i < parts.length - 1; i++) {
88
+ if (!current[parts[i]] || typeof current[parts[i]] !== "object") {
89
+ current[parts[i]] = {};
90
+ }
91
+ current = current[parts[i]];
92
+ }
93
+ const finalKey = parts[parts.length - 1];
94
+ current[finalKey] = parsedValue;
95
+ return { parsedValue, success: true };
96
+ }
97
+ const ENV_MAPPINGS = [
98
+ // CompSi connection
99
+ { env: "GRILLO_COMPSI_HEALTH_CHECK_KEY", path: ["compsi", "healthCheckKey"], type: "string" },
100
+ { env: "GRILLO_COMPSI_BASE_URL", path: ["compsi", "baseUrl"], type: "string" },
101
+ { env: "GRILLO_COMPSI_PER_QUESTION_TIMEOUT_MS", path: ["compsi", "perQuestionTimeoutMs"], type: "number" },
102
+ { env: "GRILLO_COMPSI_OVERALL_TIMEOUT_MS", path: ["compsi", "overallTimeoutMs"], type: "number" },
103
+ // Assessment policy
104
+ { env: "GRILLO_ASSESSMENT_FREQUENCY", path: ["assessment", "frequency"], type: "string" },
105
+ { env: "GRILLO_ASSESSMENT_DEFAULT_FRAMEWORK", path: ["assessment", "defaultFramework"], type: "string" },
106
+ { env: "GRILLO_ASSESSMENT_HIERARCHICAL_MODE", path: ["assessment", "hierarchicalMode"], type: "boolean" },
107
+ { env: "GRILLO_ASSESSMENT_PARALLEL", path: ["assessment", "parallelAssessments"], type: "number" },
108
+ { env: "GRILLO_ASSESSMENT_WINDOW_START", path: ["assessment", "window", "start"], type: "string" },
109
+ { env: "GRILLO_ASSESSMENT_WINDOW_END", path: ["assessment", "window", "end"], type: "string" },
110
+ { env: "GRILLO_ASSESSMENT_WINDOW_TZ", path: ["assessment", "window", "timezone"], type: "string" },
111
+ // Notifications
112
+ { env: "GRILLO_NOTIFICATIONS_CONSOLE", path: ["notifications", "console"], type: "boolean" },
113
+ { env: "GRILLO_NOTIFICATIONS_WEBHOOK_URL", path: ["notifications", "webhookUrl"], type: "string" },
114
+ // Drift
115
+ { env: "GRILLO_DRIFT_WARNING_THRESHOLD", path: ["drift", "warningThreshold"], type: "number" },
116
+ { env: "GRILLO_DRIFT_CRITICAL_THRESHOLD", path: ["drift", "criticalThreshold"], type: "number" },
117
+ { env: "GRILLO_DRIFT_EMA_ALPHA", path: ["drift", "emaAlpha"], type: "number" },
118
+ ];
119
+ /**
120
+ * Build a partial config from environment variables.
121
+ */
122
+ export function loadEnvConfig() {
123
+ const config = {};
124
+ for (const mapping of ENV_MAPPINGS) {
125
+ const value = process.env[mapping.env];
126
+ if (value === undefined)
127
+ continue;
128
+ let parsed;
129
+ switch (mapping.type) {
130
+ case "number":
131
+ parsed = Number(value);
132
+ if (isNaN(parsed))
133
+ continue;
134
+ break;
135
+ case "boolean":
136
+ parsed = value === "true" || value === "1";
137
+ break;
138
+ default:
139
+ parsed = value;
140
+ }
141
+ // Set nested path
142
+ setNestedValue(config, mapping.path, parsed);
143
+ }
144
+ return config;
145
+ }
146
+ /**
147
+ * Parse CLI arguments into flags.
148
+ * Supports: --flag value, --flag=value, --boolean-flag
149
+ */
150
+ export function parseCLIFlags(args) {
151
+ const flags = {};
152
+ for (let i = 0; i < args.length; i++) {
153
+ const arg = args[i];
154
+ if (arg === "--config" || arg === "-c") {
155
+ flags.config = args[++i];
156
+ }
157
+ else if (arg.startsWith("--config=")) {
158
+ flags.config = arg.split("=")[1];
159
+ }
160
+ else if (arg === "--port" || arg === "-p") {
161
+ flags.port = Number(args[++i]);
162
+ }
163
+ else if (arg.startsWith("--port=")) {
164
+ flags.port = Number(arg.split("=")[1]);
165
+ }
166
+ else if (arg === "--host") {
167
+ flags.host = args[++i];
168
+ }
169
+ else if (arg.startsWith("--host=")) {
170
+ flags.host = arg.split("=")[1];
171
+ }
172
+ else if (arg === "--persist-path") {
173
+ flags.persistPath = args[++i];
174
+ }
175
+ else if (arg.startsWith("--persist-path=")) {
176
+ flags.persistPath = arg.split("=")[1];
177
+ }
178
+ else if (arg === "--log-level") {
179
+ flags.logLevel = args[++i];
180
+ }
181
+ else if (arg.startsWith("--log-level=")) {
182
+ flags.logLevel = arg.split("=")[1];
183
+ }
184
+ else if (arg === "--dry-run") {
185
+ flags.dryRun = true;
186
+ }
187
+ }
188
+ return flags;
189
+ }
190
+ // ================================================================
191
+ // Merge Strategy
192
+ // ================================================================
193
+ /**
194
+ * Resolve final config from all layers.
195
+ * Priority: CLI flags > env vars > config file > defaults
196
+ */
197
+ export function resolveConfig(params) {
198
+ let merged = deepClone(params.defaults);
199
+ if (params.fileConfig) {
200
+ merged = deepMerge(merged, params.fileConfig);
201
+ }
202
+ if (params.envConfig) {
203
+ merged = deepMerge(merged, params.envConfig);
204
+ }
205
+ if (params.cliOverrides) {
206
+ merged = deepMerge(merged, params.cliOverrides);
207
+ }
208
+ return merged;
209
+ }
210
+ // ================================================================
211
+ // Helpers
212
+ // ================================================================
213
+ function setNestedValue(obj, path, value) {
214
+ let current = obj;
215
+ for (let i = 0; i < path.length - 1; i++) {
216
+ if (!current[path[i]] || typeof current[path[i]] !== "object") {
217
+ current[path[i]] = {};
218
+ }
219
+ current = current[path[i]];
220
+ }
221
+ current[path[path.length - 1]] = value;
222
+ }
223
+ function deepClone(obj) {
224
+ return JSON.parse(JSON.stringify(obj));
225
+ }
226
+ function deepMerge(target, source) {
227
+ const output = { ...target };
228
+ for (const key of Object.keys(source)) {
229
+ if (source[key] &&
230
+ typeof source[key] === "object" &&
231
+ !Array.isArray(source[key]) &&
232
+ target[key] &&
233
+ typeof target[key] === "object" &&
234
+ !Array.isArray(target[key])) {
235
+ output[key] = deepMerge(target[key], source[key]);
236
+ }
237
+ else if (source[key] !== undefined) {
238
+ output[key] = source[key];
239
+ }
240
+ }
241
+ return output;
242
+ }
243
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/cli/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Grillo Cricket — CLI Runner
3
+ *
4
+ * The main entry point for running Grillo as a standalone process.
5
+ * Handles startup, configuration, signal trapping, and clean shutdown.
6
+ *
7
+ * Usage:
8
+ * npx grillo start [--port 18800] [--config grillo.config.json]
9
+ * npx grillo assess <agentId> [--level next] [--dry-run]
10
+ * npx grillo status [<agentId>]
11
+ * npx grillo discover
12
+ * npx grillo report [--format md|json|csv] [--period 30d]
13
+ * npx grillo dashboard
14
+ * npx grillo help
15
+ */
16
+ export type ModelInvokerFactory = () => (model: string, question: string) => Promise<string>;
17
+ export interface RunnerOptions {
18
+ /** Factory that creates a model invoker. Required for `start` and `assess`. */
19
+ createModelInvoker?: ModelInvokerFactory;
20
+ /** Raw CLI arguments (defaults to process.argv.slice(2)) */
21
+ argv?: string[];
22
+ }
23
+ /**
24
+ * Main CLI entry point. Parse args, resolve config, dispatch subcommand.
25
+ */
26
+ export declare function run(options?: RunnerOptions): Promise<void>;
27
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2FH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DpE"}