@neurcode-ai/cli 0.20.12 → 0.20.14

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 (48) hide show
  1. package/dist/commands/activate.d.ts.map +1 -1
  2. package/dist/commands/activate.js +27 -0
  3. package/dist/commands/activate.js.map +1 -1
  4. package/dist/commands/agent.d.ts.map +1 -1
  5. package/dist/commands/agent.js +50 -0
  6. package/dist/commands/agent.js.map +1 -1
  7. package/dist/commands/brain.d.ts.map +1 -1
  8. package/dist/commands/brain.js +32 -0
  9. package/dist/commands/brain.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +22 -0
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/login.d.ts.map +1 -1
  14. package/dist/commands/login.js +46 -0
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/onboard.d.ts.map +1 -1
  17. package/dist/commands/onboard.js +191 -1
  18. package/dist/commands/onboard.js.map +1 -1
  19. package/dist/commands/repo.d.ts.map +1 -1
  20. package/dist/commands/repo.js +47 -0
  21. package/dist/commands/repo.js.map +1 -1
  22. package/dist/commands/runtime-sync.d.ts.map +1 -1
  23. package/dist/commands/runtime-sync.js +9 -0
  24. package/dist/commands/runtime-sync.js.map +1 -1
  25. package/dist/commands/session-hook.d.ts.map +1 -1
  26. package/dist/commands/session-hook.js +27 -0
  27. package/dist/commands/session-hook.js.map +1 -1
  28. package/dist/commands/telemetry.d.ts +3 -0
  29. package/dist/commands/telemetry.d.ts.map +1 -0
  30. package/dist/commands/telemetry.js +63 -0
  31. package/dist/commands/telemetry.js.map +1 -0
  32. package/dist/index.js +38 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/runtime-build.json +5 -5
  35. package/dist/utils/activation-telemetry.d.ts +38 -0
  36. package/dist/utils/activation-telemetry.d.ts.map +1 -0
  37. package/dist/utils/activation-telemetry.js +271 -0
  38. package/dist/utils/activation-telemetry.js.map +1 -0
  39. package/dist/utils/enterprise-dogfood-report.d.ts +203 -0
  40. package/dist/utils/enterprise-dogfood-report.d.ts.map +1 -0
  41. package/dist/utils/enterprise-dogfood-report.js +321 -0
  42. package/dist/utils/enterprise-dogfood-report.js.map +1 -0
  43. package/dist/utils/runtime-privacy.d.ts +15 -0
  44. package/dist/utils/runtime-privacy.d.ts.map +1 -1
  45. package/dist/utils/runtime-privacy.js +181 -0
  46. package/dist/utils/runtime-privacy.js.map +1 -1
  47. package/package.json +9 -8
  48. package/LICENSE +0 -201
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.activationTelemetryPath = activationTelemetryPath;
4
+ exports.activationTelemetryEnabled = activationTelemetryEnabled;
5
+ exports.setActivationTelemetryEnabled = setActivationTelemetryEnabled;
6
+ exports.buildActivationTelemetryEvent = buildActivationTelemetryEvent;
7
+ exports.maybeShowActivationTelemetryNotice = maybeShowActivationTelemetryNotice;
8
+ exports.trackActivationEvent = trackActivationEvent;
9
+ exports.flushActivationTelemetry = flushActivationTelemetry;
10
+ exports.getActivationTelemetryStatus = getActivationTelemetryStatus;
11
+ const fs_1 = require("fs");
12
+ const path_1 = require("path");
13
+ const crypto_1 = require("crypto");
14
+ const contracts_1 = require("@neurcode-ai/contracts");
15
+ const config_1 = require("../config");
16
+ const state_1 = require("./state");
17
+ const TELEMETRY_DIR = '.neurcode';
18
+ const TELEMETRY_FILE = 'activation-telemetry.json';
19
+ const MAX_QUEUE_SIZE = 100;
20
+ const FLUSH_TIMEOUT_MS = 1200;
21
+ function homeDir() {
22
+ return process.env.HOME || process.env.USERPROFILE || process.cwd();
23
+ }
24
+ function activationTelemetryPath() {
25
+ return (0, path_1.join)(homeDir(), TELEMETRY_DIR, TELEMETRY_FILE);
26
+ }
27
+ function ensureTelemetryDir() {
28
+ const dir = (0, path_1.join)(homeDir(), TELEMETRY_DIR);
29
+ if (!(0, fs_1.existsSync)(dir))
30
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
31
+ }
32
+ function readStore() {
33
+ const path = activationTelemetryPath();
34
+ if (!(0, fs_1.existsSync)(path)) {
35
+ return {
36
+ version: 1,
37
+ anonymousInstallId: (0, crypto_1.randomUUID)(),
38
+ enabled: true,
39
+ firstRunNoticeShown: false,
40
+ queue: [],
41
+ updatedAt: new Date().toISOString(),
42
+ };
43
+ }
44
+ try {
45
+ const parsed = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
46
+ return {
47
+ version: 1,
48
+ anonymousInstallId: typeof parsed.anonymousInstallId === 'string' ? parsed.anonymousInstallId : (0, crypto_1.randomUUID)(),
49
+ enabled: parsed.enabled !== false,
50
+ firstRunNoticeShown: parsed.firstRunNoticeShown === true,
51
+ queue: Array.isArray(parsed.queue) ? parsed.queue.slice(-MAX_QUEUE_SIZE) : [],
52
+ updatedAt: typeof parsed.updatedAt === 'string' ? parsed.updatedAt : new Date().toISOString(),
53
+ };
54
+ }
55
+ catch {
56
+ return {
57
+ version: 1,
58
+ anonymousInstallId: (0, crypto_1.randomUUID)(),
59
+ enabled: true,
60
+ firstRunNoticeShown: false,
61
+ queue: [],
62
+ updatedAt: new Date().toISOString(),
63
+ };
64
+ }
65
+ }
66
+ function writeStore(store) {
67
+ ensureTelemetryDir();
68
+ const next = {
69
+ ...store,
70
+ queue: store.queue.slice(-MAX_QUEUE_SIZE),
71
+ updatedAt: new Date().toISOString(),
72
+ };
73
+ (0, fs_1.writeFileSync)(activationTelemetryPath(), JSON.stringify(next, null, 2) + '\n', 'utf8');
74
+ try {
75
+ (0, fs_1.chmodSync)(activationTelemetryPath(), 0o600);
76
+ }
77
+ catch {
78
+ // Permission hardening is best-effort on non-POSIX systems.
79
+ }
80
+ }
81
+ function envTelemetryDisabled() {
82
+ const raw = process.env.NEURCODE_TELEMETRY;
83
+ if (!raw)
84
+ return false;
85
+ return ['0', 'false', 'off', 'no'].includes(raw.trim().toLowerCase());
86
+ }
87
+ function activationTelemetryEnabled() {
88
+ if (envTelemetryDisabled())
89
+ return false;
90
+ return readStore().enabled !== false;
91
+ }
92
+ function setActivationTelemetryEnabled(enabled) {
93
+ const store = readStore();
94
+ writeStore({ ...store, enabled });
95
+ }
96
+ function normalizeCommandFamily(commandFamily) {
97
+ if (!commandFamily)
98
+ return null;
99
+ const normalized = commandFamily.trim().toLowerCase().replace(/[^a-z0-9:_-]+/g, '_').slice(0, 80);
100
+ return normalized || null;
101
+ }
102
+ function normalizeReasonCode(reasonCode) {
103
+ if (!reasonCode)
104
+ return null;
105
+ const normalized = reasonCode.trim().toLowerCase().replace(/[^a-z0-9_.:-]+/g, '_').slice(0, 80);
106
+ return normalized || null;
107
+ }
108
+ function detectPackageManager() {
109
+ const ua = (process.env.npm_config_user_agent || '').toLowerCase();
110
+ const execPath = (process.env.npm_execpath || '').toLowerCase();
111
+ if (ua.includes('pnpm') || execPath.includes('pnpm'))
112
+ return 'pnpm';
113
+ if (ua.includes('yarn') || execPath.includes('yarn'))
114
+ return 'yarn';
115
+ if (ua.includes('bun') || execPath.includes('bun'))
116
+ return 'bun';
117
+ if (ua.includes('npm') || execPath.includes('npm'))
118
+ return 'npm';
119
+ return 'unknown';
120
+ }
121
+ function detectInstallMode(packageManager) {
122
+ const ua = (process.env.npm_config_user_agent || '').toLowerCase();
123
+ const execArgv = process.argv.join(' ').toLowerCase();
124
+ if (process.env.NPX_CLI_JS || ua.includes('npx') || execArgv.includes('_npx'))
125
+ return 'npx';
126
+ if (process.env.NEURCODE_LOCAL_BUILD === '1' || __dirname.includes('/src/'))
127
+ return 'local_build';
128
+ if (packageManager === 'pnpm')
129
+ return 'pnpm';
130
+ if (packageManager === 'yarn')
131
+ return 'yarn';
132
+ if (packageManager === 'bun')
133
+ return 'bun';
134
+ if (packageManager === 'npm')
135
+ return 'npm_global';
136
+ return 'unknown';
137
+ }
138
+ function readCliVersion() {
139
+ try {
140
+ const packageJson = require('../../package.json');
141
+ return typeof packageJson.version === 'string' ? packageJson.version : null;
142
+ }
143
+ catch {
144
+ return null;
145
+ }
146
+ }
147
+ function buildActivationTelemetryEvent(store, options) {
148
+ const packageManager = detectPackageManager();
149
+ const success = options.success ?? true;
150
+ const event = (0, contracts_1.assertActivationTelemetryEvent)({
151
+ schemaVersion: contracts_1.ACTIVATION_TELEMETRY_SCHEMA_VERSION,
152
+ eventId: (0, crypto_1.randomUUID)(),
153
+ eventType: options.eventType,
154
+ anonymousInstallId: store.anonymousInstallId,
155
+ cliVersion: readCliVersion(),
156
+ commandFamily: normalizeCommandFamily(options.commandFamily),
157
+ os: process.platform,
158
+ arch: process.arch,
159
+ nodeVersion: process.version,
160
+ packageManager,
161
+ installMode: detectInstallMode(packageManager),
162
+ agentTarget: options.agentTarget ?? null,
163
+ timestamp: new Date().toISOString(),
164
+ stage: options.stage ?? (0, contracts_1.activationStageForEventType)(options.eventType, success),
165
+ reasonCode: normalizeReasonCode(options.reasonCode),
166
+ success,
167
+ });
168
+ return event;
169
+ }
170
+ function appendToQueue(event) {
171
+ const store = readStore();
172
+ writeStore({ ...store, queue: [...store.queue, event].slice(-MAX_QUEUE_SIZE) });
173
+ }
174
+ function replaceQueue(queue) {
175
+ const store = readStore();
176
+ writeStore({ ...store, queue: queue.slice(-MAX_QUEUE_SIZE) });
177
+ }
178
+ function maybeShowActivationTelemetryNotice() {
179
+ if (process.env.CI || !process.stdout.isTTY || envTelemetryDisabled())
180
+ return;
181
+ const store = readStore();
182
+ if (store.firstRunNoticeShown || store.enabled === false)
183
+ return;
184
+ process.stderr.write('Neurcode collects minimal source-free activation telemetry to improve first-run setup. '
185
+ + 'No source, prompts, diffs, secrets, paths, or raw args are sent. '
186
+ + 'Opt out with NEURCODE_TELEMETRY=0 or `neurcode telemetry off`.\n');
187
+ writeStore({ ...store, firstRunNoticeShown: true });
188
+ }
189
+ function trackActivationEvent(options) {
190
+ try {
191
+ if (envTelemetryDisabled())
192
+ return;
193
+ const store = readStore();
194
+ if (store.enabled === false)
195
+ return;
196
+ const event = buildActivationTelemetryEvent(store, options);
197
+ appendToQueue(event);
198
+ if (options.flush !== false) {
199
+ void flushActivationTelemetry().catch(() => undefined);
200
+ }
201
+ }
202
+ catch {
203
+ // Telemetry must never fail the user command.
204
+ }
205
+ }
206
+ async function flushActivationTelemetry() {
207
+ if (envTelemetryDisabled())
208
+ return { attempted: 0, sent: 0, remaining: readStore().queue.length };
209
+ const store = readStore();
210
+ if (store.enabled === false || store.queue.length === 0) {
211
+ return { attempted: 0, sent: 0, remaining: store.queue.length };
212
+ }
213
+ const config = (0, config_1.loadConfig)();
214
+ const apiUrl = (config.apiUrl || config_1.DEFAULT_API_URL).replace(/\/$/, '');
215
+ const apiKey = (0, config_1.getApiKey)((0, state_1.getOrgId)() || undefined) || (0, config_1.getApiKey)();
216
+ const controller = new AbortController();
217
+ const timeout = setTimeout(() => controller.abort(), FLUSH_TIMEOUT_MS);
218
+ try {
219
+ let sent = 0;
220
+ const remaining = [...store.queue];
221
+ for (const event of store.queue) {
222
+ const headers = {
223
+ 'Content-Type': 'application/json',
224
+ };
225
+ if (apiKey)
226
+ headers.authorization = `Bearer ${apiKey}`;
227
+ const orgId = (0, state_1.getOrgId)();
228
+ if (orgId)
229
+ headers['x-org-id'] = orgId;
230
+ const response = await fetch(`${apiUrl}/api/v1/activation/events`, {
231
+ method: 'POST',
232
+ headers,
233
+ body: JSON.stringify(event),
234
+ signal: controller.signal,
235
+ });
236
+ if (response.status === 409 || response.status === 202 || response.ok) {
237
+ sent += 1;
238
+ remaining.shift();
239
+ continue;
240
+ }
241
+ if (response.status >= 400 && response.status < 500) {
242
+ sent += 1;
243
+ remaining.shift();
244
+ continue;
245
+ }
246
+ break;
247
+ }
248
+ replaceQueue(remaining);
249
+ return { attempted: store.queue.length, sent, remaining: remaining.length };
250
+ }
251
+ catch {
252
+ return { attempted: store.queue.length, sent: 0, remaining: store.queue.length };
253
+ }
254
+ finally {
255
+ clearTimeout(timeout);
256
+ }
257
+ }
258
+ function getActivationTelemetryStatus() {
259
+ const store = readStore();
260
+ if (!(0, fs_1.existsSync)(activationTelemetryPath())) {
261
+ writeStore(store);
262
+ }
263
+ return {
264
+ enabled: store.enabled !== false && !envTelemetryDisabled(),
265
+ envDisabled: envTelemetryDisabled(),
266
+ anonymousInstallId: store.anonymousInstallId,
267
+ queueLength: store.queue.length,
268
+ path: activationTelemetryPath(),
269
+ };
270
+ }
271
+ //# sourceMappingURL=activation-telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation-telemetry.js","sourceRoot":"","sources":["../../src/utils/activation-telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Enterprise Repo Dogfood report — pure, source-free builder (Iteration 14).
3
+ *
4
+ * Iterations 6-13 proved the runtime against fixtures, sandbox payloads, and
5
+ * `neurcode verify --ci` timing on real checkouts. Iteration 14 closes the loop
6
+ * the roadmap actually asks for: drive a *governed cross-file session* on a real,
7
+ * pinned third-party repository and record — honestly and source-free — whether
8
+ * the product was useful.
9
+ *
10
+ * This module is the deterministic, I/O-free core. It takes a single
11
+ * already-source-free facts object ({@link DogfoodReportInput}) gathered by the
12
+ * operator harness (`scripts/enterprise-repo-dogfood-v1.mjs`) and turns it into:
13
+ *
14
+ * 1. {@link buildEnterpriseDogfoodReport} — a machine-readable manifest
15
+ * (`neurcode.enterprise-dogfood-report.v1`) carrying repo facts, brain index
16
+ * metrics, the honest per-tool enforcement posture, structured session
17
+ * observations, source-free evidence pointers, and a seven-dimension score.
18
+ * 2. {@link renderEnterpriseDogfoodReportMarkdown} — the human-readable report.
19
+ *
20
+ * Hard rules (shared with utils/enterprise-eval-report.ts + utils/pilot-evidence-pack.ts):
21
+ * - Source-free. Only slugs, public OSS identities, paths, owners, counts,
22
+ * hashes, verdicts, and durations are read or emitted. We NEVER carry source,
23
+ * diffs, patch bodies, raw prompts, secrets, or natural-language intent /
24
+ * task / session prose. {@link assertEnterpriseDogfoodSourceFree} is the
25
+ * backstop and mirrors the CI leak gate (scripts/source-free-leak-scan.mjs).
26
+ * - Honest enforcement. The Enforcement dimension reports the real
27
+ * `integrations doctor` posture — a cooperative adapter (e.g. Cursor) is
28
+ * advisory, never claimed to be the Claude hook's hard pre-write deny.
29
+ * - Honest scope. Scores are operator judgments, each REQUIRING a source-free
30
+ * evidence pointer (artifact path + count / hash / duration). A score without
31
+ * evidence is rejected at build time.
32
+ */
33
+ export declare const ENTERPRISE_DOGFOOD_REPORT_SCHEMA_VERSION: "neurcode.enterprise-dogfood-report.v1";
34
+ /** The seven roadmap score dimensions, in canonical report order. */
35
+ export declare const DOGFOOD_SCORE_DIMENSIONS: readonly ["intelligence", "enforcement", "usability", "scalability", "evidence", "privacy", "enterpriseReadiness"];
36
+ export type DogfoodScoreDimension = (typeof DOGFOOD_SCORE_DIMENSIONS)[number];
37
+ export type DogfoodScoreVerdict = 'pass' | 'partial' | 'fail';
38
+ export declare const DOGFOOD_DIMENSION_LABELS: Record<DogfoodScoreDimension, string>;
39
+ export interface DogfoodScore {
40
+ dimension: DogfoodScoreDimension;
41
+ verdict: DogfoodScoreVerdict;
42
+ /**
43
+ * Source-free evidence pointer. MUST be artifact paths, counts, hashes, or
44
+ * durations — never file contents, diffs, prompts, or session prose.
45
+ */
46
+ evidence: string;
47
+ }
48
+ export type DogfoodCiTier = 'hermetic' | 'operator';
49
+ export interface DogfoodRepoFacts {
50
+ /** Manifest slug, e.g. `fastapi-template`. */
51
+ slug: string;
52
+ /** Public OSS identity `owner/name`, e.g. `django/django` — never source. */
53
+ name: string;
54
+ language: string;
55
+ /** 40-char hex commit the dogfood ran against. */
56
+ pinnedCommit: string;
57
+ ref: string | null;
58
+ ciTier: DogfoodCiTier;
59
+ filesTracked: number | null;
60
+ diskBytes: number | null;
61
+ }
62
+ export interface DogfoodLanguageMatrixEntry {
63
+ language: string;
64
+ files: number;
65
+ coverageTier: string;
66
+ }
67
+ /** Source-free projection of `brain repo-index` + `brain readiness --json`. */
68
+ export interface DogfoodBrainMetrics {
69
+ indexed: boolean;
70
+ filesIndexed: number | null;
71
+ filesScanned: number | null;
72
+ indexDurationMs: number | null;
73
+ readinessDurationMs: number | null;
74
+ /** `scaleStatus` level/label from neurcode.brain-scale-status.v1 (string only). */
75
+ scaleStatus: string | null;
76
+ storageBackend: string | null;
77
+ storageFallback: boolean | null;
78
+ languageMatrix: DogfoodLanguageMatrixEntry[];
79
+ }
80
+ /** Honest per-tool enforcement posture, sourced from `integrations doctor`. */
81
+ export interface DogfoodEnforcementPosture {
82
+ agent: string;
83
+ adapter: string | null;
84
+ /** Verbatim guarantee label from integrations doctor. */
85
+ guaranteeLabel: string;
86
+ /** True only for a hard pre-write deny (e.g. the Claude Code hook). */
87
+ enforceable: boolean;
88
+ /** True for a cooperative adapter that can be bypassed (e.g. Cursor MCP). */
89
+ advisoryOnly: boolean;
90
+ /** Honest description of how enforcement was driven. */
91
+ method: string;
92
+ integrationsDoctorStatus: string | null;
93
+ }
94
+ export interface DogfoodSessionTask {
95
+ id: string;
96
+ /** Short, pre-authored task title from the manifest. Source-free (no prompts/diffs). */
97
+ title: string;
98
+ crossFile: boolean;
99
+ expectedFiles: number | null;
100
+ }
101
+ export interface DogfoodLabeledCount {
102
+ label: string;
103
+ count: number;
104
+ }
105
+ export interface DogfoodFalseBlock {
106
+ label: string;
107
+ count: number;
108
+ /** Path globs that were incorrectly blocked (paths only — never content). */
109
+ pathGlobs: string[];
110
+ }
111
+ export interface DogfoodFrictionItem {
112
+ label: string;
113
+ severity: 'low' | 'medium' | 'high';
114
+ count: number;
115
+ }
116
+ export interface DogfoodSessionObservations {
117
+ governed: boolean;
118
+ task: DogfoodSessionTask;
119
+ /** Where the runtime helped — enumerated labels + counts, never prose dumps. */
120
+ helps: DogfoodLabeledCount[];
121
+ /** Incorrect blocks (false positives) — labels, counts, affected path globs. */
122
+ falseBlocks: DogfoodFalseBlock[];
123
+ /** Developer friction — enumerated labels, severity, counts. */
124
+ friction: DogfoodFrictionItem[];
125
+ blocksObserved: number;
126
+ exactApprovals: number;
127
+ neighborContained: boolean | null;
128
+ /** Final guard verdict, e.g. `governed` | `unverified` (verdict string only). */
129
+ finishVerdict: string | null;
130
+ }
131
+ export interface DogfoodArtifactPointer {
132
+ /** Relative path to a committed source-free artifact (no content inlined). */
133
+ relativePath: string | null;
134
+ contentHash: string | null;
135
+ }
136
+ export interface DogfoodEvidenceArtifacts {
137
+ pilotEvidencePack: DogfoodArtifactPointer & {
138
+ sessionCount: number | null;
139
+ };
140
+ brainReadiness: DogfoodArtifactPointer;
141
+ runtimeRiskDoctor: DogfoodArtifactPointer & {
142
+ classifiedPaths: number | null;
143
+ verdict: string | null;
144
+ };
145
+ aiChangeRecords: number | null;
146
+ }
147
+ export interface DogfoodDurations {
148
+ totalMs: number | null;
149
+ cloneMs: number | null;
150
+ indexMs: number | null;
151
+ sessionMs: number | null;
152
+ }
153
+ export interface EnterpriseDogfoodReport {
154
+ schemaVersion: typeof ENTERPRISE_DOGFOOD_REPORT_SCHEMA_VERSION;
155
+ generatedAt: string;
156
+ cliVersion: string | null;
157
+ /** Optional operator handle/label — metadata only, never PII-bearing prose. */
158
+ operator: string | null;
159
+ repo: DogfoodRepoFacts;
160
+ brain: DogfoodBrainMetrics;
161
+ enforcement: DogfoodEnforcementPosture;
162
+ session: DogfoodSessionObservations;
163
+ artifacts: DogfoodEvidenceArtifacts;
164
+ /** CLI invocations with free-text args redacted (e.g. `--goal <goal>`). */
165
+ commandsRun: string[];
166
+ durations: DogfoodDurations;
167
+ scores: DogfoodScore[];
168
+ scoreSummary: {
169
+ pass: number;
170
+ partial: number;
171
+ fail: number;
172
+ overall: DogfoodScoreVerdict;
173
+ };
174
+ whatThisProves: string[];
175
+ whatThisDoesNotProve: string[];
176
+ limitations: string[];
177
+ privacy: {
178
+ sourceFree: true;
179
+ excludes: string[];
180
+ };
181
+ }
182
+ export interface DogfoodReportInput {
183
+ generatedAt: string;
184
+ cliVersion?: string | null;
185
+ operator?: string | null;
186
+ repo: DogfoodRepoFacts;
187
+ brain: DogfoodBrainMetrics;
188
+ enforcement: DogfoodEnforcementPosture;
189
+ session: DogfoodSessionObservations;
190
+ artifacts: DogfoodEvidenceArtifacts;
191
+ commandsRun: string[];
192
+ durations: DogfoodDurations;
193
+ scores: DogfoodScore[];
194
+ whatThisProves?: string[];
195
+ whatThisDoesNotProve?: string[];
196
+ limitations?: string[];
197
+ }
198
+ /** Throw if a would-be dogfood artifact carries source/diff/secret/prose shapes. */
199
+ export declare function assertEnterpriseDogfoodSourceFree(value: unknown, label?: string): void;
200
+ export declare function rollupDogfoodVerdict(scores: DogfoodScore[]): DogfoodScoreVerdict;
201
+ export declare function buildEnterpriseDogfoodReport(input: DogfoodReportInput): EnterpriseDogfoodReport;
202
+ export declare function renderEnterpriseDogfoodReportMarkdown(report: EnterpriseDogfoodReport): string;
203
+ //# sourceMappingURL=enterprise-dogfood-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enterprise-dogfood-report.d.ts","sourceRoot":"","sources":["../../src/utils/enterprise-dogfood-report.ts"],"names":[],"mappings":"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"}