@principles/core 1.76.0 → 1.77.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 (68) hide show
  1. package/dist/runtime-v2/__tests__/architecture-regression.test.js +12 -0
  2. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  3. package/dist/runtime-v2/__tests__/feedback/create-report.test.d.ts +2 -0
  4. package/dist/runtime-v2/__tests__/feedback/create-report.test.d.ts.map +1 -0
  5. package/dist/runtime-v2/__tests__/feedback/create-report.test.js +402 -0
  6. package/dist/runtime-v2/__tests__/feedback/create-report.test.js.map +1 -0
  7. package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.d.ts +2 -0
  8. package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.d.ts.map +1 -0
  9. package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js +128 -0
  10. package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js.map +1 -0
  11. package/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.d.ts +2 -0
  12. package/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.d.ts.map +1 -0
  13. package/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.js +231 -0
  14. package/dist/runtime-v2/__tests__/feedback/redact-sensitive.test.js.map +1 -0
  15. package/dist/runtime-v2/__tests__/feedback/render-github-url.test.d.ts +2 -0
  16. package/dist/runtime-v2/__tests__/feedback/render-github-url.test.d.ts.map +1 -0
  17. package/dist/runtime-v2/__tests__/feedback/render-github-url.test.js +102 -0
  18. package/dist/runtime-v2/__tests__/feedback/render-github-url.test.js.map +1 -0
  19. package/dist/runtime-v2/__tests__/feedback/render-markdown.test.d.ts +2 -0
  20. package/dist/runtime-v2/__tests__/feedback/render-markdown.test.d.ts.map +1 -0
  21. package/dist/runtime-v2/__tests__/feedback/render-markdown.test.js +130 -0
  22. package/dist/runtime-v2/__tests__/feedback/render-markdown.test.js.map +1 -0
  23. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +11 -0
  24. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  25. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  26. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +2 -1
  27. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  28. package/dist/runtime-v2/feedback/create-report.d.ts +14 -0
  29. package/dist/runtime-v2/feedback/create-report.d.ts.map +1 -0
  30. package/dist/runtime-v2/feedback/create-report.js +257 -0
  31. package/dist/runtime-v2/feedback/create-report.js.map +1 -0
  32. package/dist/runtime-v2/feedback/feedback-types.d.ts +120 -0
  33. package/dist/runtime-v2/feedback/feedback-types.d.ts.map +1 -0
  34. package/dist/runtime-v2/feedback/feedback-types.js +243 -0
  35. package/dist/runtime-v2/feedback/feedback-types.js.map +1 -0
  36. package/dist/runtime-v2/feedback/index.d.ts +9 -0
  37. package/dist/runtime-v2/feedback/index.d.ts.map +1 -0
  38. package/dist/runtime-v2/feedback/index.js +11 -0
  39. package/dist/runtime-v2/feedback/index.js.map +1 -0
  40. package/dist/runtime-v2/feedback/internal-guards.d.ts +2 -0
  41. package/dist/runtime-v2/feedback/internal-guards.d.ts.map +1 -0
  42. package/dist/runtime-v2/feedback/internal-guards.js +6 -0
  43. package/dist/runtime-v2/feedback/internal-guards.js.map +1 -0
  44. package/dist/runtime-v2/feedback/privacy-preview.d.ts +14 -0
  45. package/dist/runtime-v2/feedback/privacy-preview.d.ts.map +1 -0
  46. package/dist/runtime-v2/feedback/privacy-preview.js +128 -0
  47. package/dist/runtime-v2/feedback/privacy-preview.js.map +1 -0
  48. package/dist/runtime-v2/feedback/redact-sensitive.d.ts +37 -0
  49. package/dist/runtime-v2/feedback/redact-sensitive.d.ts.map +1 -0
  50. package/dist/runtime-v2/feedback/redact-sensitive.js +272 -0
  51. package/dist/runtime-v2/feedback/redact-sensitive.js.map +1 -0
  52. package/dist/runtime-v2/feedback/render-github-url.d.ts +21 -0
  53. package/dist/runtime-v2/feedback/render-github-url.d.ts.map +1 -0
  54. package/dist/runtime-v2/feedback/render-github-url.js +57 -0
  55. package/dist/runtime-v2/feedback/render-github-url.js.map +1 -0
  56. package/dist/runtime-v2/feedback/render-markdown.d.ts +12 -0
  57. package/dist/runtime-v2/feedback/render-markdown.d.ts.map +1 -0
  58. package/dist/runtime-v2/feedback/render-markdown.js +166 -0
  59. package/dist/runtime-v2/feedback/render-markdown.js.map +1 -0
  60. package/dist/runtime-v2/feedback/safe-stringify.d.ts +6 -0
  61. package/dist/runtime-v2/feedback/safe-stringify.d.ts.map +1 -0
  62. package/dist/runtime-v2/feedback/safe-stringify.js +115 -0
  63. package/dist/runtime-v2/feedback/safe-stringify.js.map +1 -0
  64. package/dist/runtime-v2/index.d.ts +2 -0
  65. package/dist/runtime-v2/index.d.ts.map +1 -1
  66. package/dist/runtime-v2/index.js +7 -0
  67. package/dist/runtime-v2/index.js.map +1 -1
  68. package/package.json +5 -1
@@ -51,8 +51,9 @@ export const DEFAULT_FEATURE_FLAGS = [
51
51
  { id: 'prompt', category: 'core', enabled: true, since: '2026-05-24', description: 'Prompt injection for principle application' },
52
52
  { id: 'code_tool_hook', category: 'core', enabled: true, since: '2026-05-24', description: 'Code tool hook for rule host enforcement' },
53
53
  { id: 'defer_archive', category: 'core', enabled: true, since: '2026-05-24', description: 'Defer/archive activation writer' },
54
- // MVP-Quiet — default disabled, opt-in via config
54
+ // MVP-Quiet — opt-in or opt-out via config; enabled value varies per flag
55
55
  // Only flags with real consumption paths are registered (PRI-239 constraint)
56
+ { id: 'feedback_channel', category: 'quiet', enabled: true, since: '2026-06-01', description: 'MVP seed feedback channel — privacy-preserving report drafts' },
56
57
  { id: 'gfi', category: 'quiet', enabled: false, since: '2026-05-24', description: 'Global Friction Index session scoring' },
57
58
  // MVP-Gone — permanently disabled, cannot be re-enabled
58
59
  { id: 'nocturnal', category: 'gone', enabled: false, since: '2026-05-24', description: 'Nocturnal trinity pipeline (retired)' },
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-contract.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-flag-contract.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { FeedbackReport, ValidationError } from './feedback-types.js';
2
+ export type CreateReportResult = {
3
+ ok: true;
4
+ report: FeedbackReport;
5
+ } | {
6
+ ok: false;
7
+ errors: ValidationError[];
8
+ };
9
+ /**
10
+ * Create a FeedbackReport from untrusted input + diagnostics.
11
+ * No `as` casts on untrusted values. Failure paths return structured errors.
12
+ */
13
+ export declare function createFeedbackReport(input: unknown, diagnostics: unknown): CreateReportResult;
14
+ //# sourceMappingURL=create-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-report.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/create-report.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,cAAc,EAId,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAiB7B,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAiI7C;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,OAAO,GACnB,kBAAkB,CAwHpB"}
@@ -0,0 +1,257 @@
1
+ // create-report.ts
2
+ // Orchestrator: validate input → collect diagnostics → redact → render.
3
+ // ERR-001/005/013: no `as` casts on untrusted input.
4
+ // ERR-002: failure paths return {ok: false, errors: ValidationError[]}; success returns {ok: true, report: FeedbackReport}.
5
+ // ERR-003: redaction uses segment-exact key matching (handled by redact-sensitive).
6
+ // ERR-014/016/017: bounded previews, BigInt-safe safeStringifyPreview.
7
+ import { isRecord, isString, isUserSeverity, normalizeFeedbackDraftInput, } from './feedback-types.js';
8
+ import { redactAbsolutePaths, redactTokenLikeValues, redactEnvLikeValues, redactSensitiveFields, } from './redact-sensitive.js';
9
+ import { renderReportMarkdown } from './render-markdown.js';
10
+ import { buildGitHubIssueDraftUrl } from './render-github-url.js';
11
+ import { buildPrivacyPreview, buildEmailText } from './privacy-preview.js';
12
+ const MAX_DESCRIPTION_FOR_REDACT = 8000;
13
+ const MAX_STEPS_FOR_REDACT = 8000;
14
+ const MAX_CONTEXT_REFS = 12;
15
+ const MAX_REDACTION_NOTES = 20;
16
+ function generateReportId() {
17
+ try {
18
+ if (typeof globalThis.crypto !== 'undefined' && typeof globalThis.crypto.randomUUID === 'function') {
19
+ return 'fb-' + globalThis.crypto.randomUUID();
20
+ }
21
+ }
22
+ catch {
23
+ // Fallback below
24
+ }
25
+ const ts = Date.now().toString(36);
26
+ const rand = Math.random().toString(36).slice(2, 8);
27
+ return 'fb-' + ts + '-' + rand;
28
+ }
29
+ function applyUserTextRedactions(text) {
30
+ if (typeof text !== 'string')
31
+ return '';
32
+ let out = text;
33
+ if (out.length > MAX_DESCRIPTION_FOR_REDACT) {
34
+ out = out.slice(0, MAX_DESCRIPTION_FOR_REDACT);
35
+ }
36
+ out = redactAbsolutePaths(out);
37
+ out = redactTokenLikeValues(out);
38
+ out = redactEnvLikeValues(out);
39
+ return out;
40
+ }
41
+ function applyStepsRedactions(text) {
42
+ if (typeof text !== 'string')
43
+ return undefined;
44
+ let out = text;
45
+ if (out.length > MAX_STEPS_FOR_REDACT) {
46
+ out = out.slice(0, MAX_STEPS_FOR_REDACT);
47
+ }
48
+ out = redactAbsolutePaths(out);
49
+ out = redactTokenLikeValues(out);
50
+ out = redactEnvLikeValues(out);
51
+ return out;
52
+ }
53
+ function pushContextRef(refs, kind, args) {
54
+ if (refs.length >= MAX_CONTEXT_REFS)
55
+ return;
56
+ if (typeof args.id !== 'string' || args.id.length === 0)
57
+ return;
58
+ const r = { kind, id: args.id };
59
+ if (typeof args.label === 'string' && args.label.length > 0)
60
+ r.label = args.label;
61
+ refs.push(r);
62
+ }
63
+ function pickString(value) {
64
+ return typeof value === 'string' ? value : undefined;
65
+ }
66
+ /**
67
+ * Build a DiagnosticSummary from an unknown diagnostics value.
68
+ * Always returns a valid DiagnosticSummary. Records `unavailableReason` for
69
+ * unparseable versions/feature flags/canary — never throws.
70
+ */
71
+ function collectDiagnostics(diagnostics) {
72
+ if (!isRecord(diagnostics)) {
73
+ return {
74
+ versions: { unavailableReason: 'diagnostics not provided' },
75
+ platform: { unavailableReason: 'diagnostics not provided' },
76
+ featureFlags: { unavailableReason: 'diagnostics not provided' },
77
+ canary: { status: 'unavailable', unavailableReason: 'diagnostics not provided' },
78
+ recentEvents: [],
79
+ };
80
+ }
81
+ // versions
82
+ let versions = { unavailableReason: 'versions not available' };
83
+ if (Object.hasOwn(diagnostics, 'versions') && isRecord(diagnostics.versions)) {
84
+ versions = { ...diagnostics.versions };
85
+ }
86
+ // platform
87
+ let platform = { unavailableReason: 'platform not available' };
88
+ if (Object.hasOwn(diagnostics, 'platform') && isRecord(diagnostics.platform)) {
89
+ platform = { ...diagnostics.platform };
90
+ }
91
+ // featureFlags
92
+ let featureFlags = { unavailableReason: 'feature flags not available' };
93
+ if (Object.hasOwn(diagnostics, 'featureFlags') && isRecord(diagnostics.featureFlags)) {
94
+ featureFlags = { ...diagnostics.featureFlags };
95
+ }
96
+ // canary
97
+ let canary = { status: 'unavailable', unavailableReason: 'canary not available' };
98
+ if (Object.hasOwn(diagnostics, 'canary') && isRecord(diagnostics.canary)) {
99
+ const c = diagnostics.canary;
100
+ if (Object.hasOwn(c, 'status') && (c.status === 'available' || c.status === 'unavailable')) {
101
+ const { status } = c;
102
+ const built = { status };
103
+ if (status === 'available') {
104
+ if (isString(c.summary))
105
+ built.summary = c.summary;
106
+ }
107
+ else {
108
+ if (isString(c.unavailableReason))
109
+ built.unavailableReason = c.unavailableReason;
110
+ else
111
+ built.unavailableReason = 'canary reported unavailable';
112
+ }
113
+ canary = built;
114
+ }
115
+ }
116
+ // recentEvents
117
+ let recentEvents = [];
118
+ if (Object.hasOwn(diagnostics, 'recentEvents') && Array.isArray(diagnostics.recentEvents)) {
119
+ const arr = diagnostics.recentEvents;
120
+ for (const e of arr) {
121
+ if (!isRecord(e))
122
+ continue;
123
+ const evType = pickString(e.type);
124
+ const evSummary = pickString(e.summary);
125
+ const evAt = pickString(e.at);
126
+ if (!evType || !evSummary || !evAt)
127
+ continue;
128
+ const ev = { type: evType, at: evAt, summary: evSummary };
129
+ const sev = pickString(e.severity);
130
+ if (sev)
131
+ ev.severity = sev;
132
+ recentEvents.push(ev);
133
+ }
134
+ }
135
+ return { versions, platform, featureFlags, canary, recentEvents };
136
+ }
137
+ /**
138
+ * Create a FeedbackReport from untrusted input + diagnostics.
139
+ * No `as` casts on untrusted values. Failure paths return structured errors.
140
+ */
141
+ export function createFeedbackReport(input, diagnostics) {
142
+ // Step 1: validate and normalize the input
143
+ const norm = normalizeFeedbackDraftInput(input);
144
+ if (!norm.ok) {
145
+ return { ok: false, errors: norm.errors };
146
+ }
147
+ const draft = norm.value;
148
+ // Step 2: collect diagnostics (never throws; missing diagnostics produce
149
+ // structured unavailable entries, not errors)
150
+ const diagnosticSummary = collectDiagnostics(diagnostics);
151
+ // Step 3: redact the user-provided text fields
152
+ const redactionNotes = [];
153
+ const description = applyUserTextRedactions(draft.userText.description);
154
+ if (description !== draft.userText.description)
155
+ redactionNotes.push('description was redacted (paths/tokens/env values)');
156
+ const stepsInput = draft.userText.stepsToReproduce;
157
+ const stepsToReproduce = typeof stepsInput === 'string' ? applyStepsRedactions(stepsInput) : undefined;
158
+ if (typeof stepsInput === 'string' && stepsToReproduce !== stepsInput) {
159
+ redactionNotes.push('stepsToReproduce was redacted (paths/tokens/env values)');
160
+ }
161
+ const expectedInput = draft.userText.expectedBehavior;
162
+ const expectedBehavior = typeof expectedInput === 'string'
163
+ ? redactAbsolutePaths(redactTokenLikeValues(redactEnvLikeValues(expectedInput)))
164
+ : undefined;
165
+ if (typeof expectedInput === 'string' && expectedBehavior !== expectedInput) {
166
+ redactionNotes.push('expectedBehavior was redacted');
167
+ }
168
+ const actualInput = draft.userText.actualBehavior;
169
+ const actualBehavior = typeof actualInput === 'string'
170
+ ? redactAbsolutePaths(redactTokenLikeValues(redactEnvLikeValues(actualInput)))
171
+ : undefined;
172
+ if (typeof actualInput === 'string' && actualBehavior !== actualInput) {
173
+ redactionNotes.push('actualBehavior was redacted');
174
+ }
175
+ // Step 4: scrub the diagnosticSummary via redactSensitiveFields (defense in
176
+ // depth — versions and platform should already be low-sensitivity, but
177
+ // user-injected values must not leak tokens through the field structure).
178
+ const scrubbed = redactSensitiveFields(diagnosticSummary);
179
+ const safeDiagnostic = scrubbed.ok
180
+ ? scrubbed.value
181
+ : diagnosticSummary;
182
+ if (scrubbed.ok) {
183
+ for (const n of scrubbed.notes) {
184
+ if (redactionNotes.length < MAX_REDACTION_NOTES)
185
+ redactionNotes.push(n);
186
+ }
187
+ }
188
+ // Step 5: redact the title for the URL (but keep the original title in the
189
+ // report itself so the user can read what they wrote)
190
+ const redactedTitle = redactAbsolutePaths(redactTokenLikeValues(draft.title));
191
+ // Step 6: build contextRefs from the context object
192
+ const contextRefs = [];
193
+ if (draft.context) {
194
+ pushContextRef(contextRefs, 'source', { id: draft.context.source, label: `source=${draft.context.source}` });
195
+ pushContextRef(contextRefs, 'page', { id: draft.context.page });
196
+ pushContextRef(contextRefs, 'painId', { id: draft.context.painId });
197
+ pushContextRef(contextRefs, 'principleId', { id: draft.context.principleId });
198
+ pushContextRef(contextRefs, 'approvalId', { id: draft.context.approvalId });
199
+ pushContextRef(contextRefs, 'activationId', { id: draft.context.activationId });
200
+ pushContextRef(contextRefs, 'updateAttemptId', { id: draft.context.updateAttemptId });
201
+ }
202
+ if (draft.agentDraft) {
203
+ pushContextRef(contextRefs, 'agentDraft', { id: 'present', label: 'agentDraft attached' });
204
+ }
205
+ // Step 7: build the privacy preview
206
+ const privacy = buildPrivacyPreview(redactionNotes);
207
+ // Step 8: assemble the report
208
+ const userText = { description };
209
+ if (stepsToReproduce !== undefined)
210
+ userText.stepsToReproduce = stepsToReproduce;
211
+ if (draft.userText.expectedBehavior !== undefined)
212
+ userText.expectedBehavior = expectedBehavior;
213
+ if (draft.userText.actualBehavior !== undefined)
214
+ userText.actualBehavior = actualBehavior;
215
+ if (isUserSeverity(draft.userText.userSeverity))
216
+ userText.userSeverity = draft.userText.userSeverity;
217
+ const id = generateReportId();
218
+ const createdAt = new Date().toISOString();
219
+ // Step 9: render markdown and email text. Renderers mutate privacy.redactionNotes
220
+ // if they truncate; that's intentional and observable.
221
+ const report = {
222
+ id,
223
+ createdAt,
224
+ type: draft.type,
225
+ title: draft.title,
226
+ userText,
227
+ diagnosticSummary: safeDiagnostic,
228
+ contextRefs,
229
+ privacy,
230
+ outputs: { markdown: '', emailText: '', githubIssueUrl: '' },
231
+ };
232
+ // Surface the agent-attached evidence in the report so it propagates to
233
+ // markdown, emailText, and any later consumer.
234
+ // Redact sensitive values (paths/tokens/env) from agentDraft string fields.
235
+ if (draft.agentDraft) {
236
+ const ad = draft.agentDraft;
237
+ report.agentDraft = {
238
+ summary: redactEnvLikeValues(redactAbsolutePaths(redactTokenLikeValues(ad.summary))),
239
+ };
240
+ if (ad.observedFailure) {
241
+ report.agentDraft.observedFailure = redactEnvLikeValues(redactAbsolutePaths(redactTokenLikeValues(ad.observedFailure)));
242
+ }
243
+ if (ad.commandSummary) {
244
+ report.agentDraft.commandSummary = redactEnvLikeValues(redactAbsolutePaths(redactTokenLikeValues(ad.commandSummary)));
245
+ }
246
+ redactionNotes.push('agentDraft fields were redacted (paths/tokens/env values)');
247
+ }
248
+ report.outputs.markdown = renderReportMarkdown(report);
249
+ report.outputs.emailText = buildEmailText(report);
250
+ // Step 10: build the bounded GitHub issue draft URL using only the redacted
251
+ // title and a short summary (description truncated to 200 chars).
252
+ const shortSummary = `type=${draft.type}; ${description.slice(0, 200)}`;
253
+ const urlResult = buildGitHubIssueDraftUrl(redactedTitle, draft.type, shortSummary);
254
+ report.outputs.githubIssueUrl = urlResult.ok ? urlResult.url : '';
255
+ return { ok: true, report };
256
+ }
257
+ //# sourceMappingURL=create-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-report.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/create-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ export type FeedbackType = 'bug' | 'confusing' | 'privacy_concern' | 'feature_request' | 'other';
2
+ export type UserSeverity = 'low' | 'medium' | 'high';
3
+ export type FeedbackSource = 'console' | 'cli' | 'agent';
4
+ export interface FeedbackContext {
5
+ source: FeedbackSource;
6
+ page?: string;
7
+ painId?: string;
8
+ principleId?: string;
9
+ approvalId?: string;
10
+ activationId?: string;
11
+ updateAttemptId?: string;
12
+ }
13
+ export interface AgentDraft {
14
+ summary: string;
15
+ observedFailure?: string;
16
+ commandSummary?: string;
17
+ }
18
+ export interface FeedbackUserText {
19
+ description: string;
20
+ stepsToReproduce?: string;
21
+ expectedBehavior?: string;
22
+ actualBehavior?: string;
23
+ userSeverity?: UserSeverity;
24
+ }
25
+ /**
26
+ * The contract input: every field is typed as `unknown` because the input
27
+ * comes from untrusted sources (Console form, CLI, agent, or HTTP body).
28
+ * Callers must pass the value through `normalizeFeedbackDraftInput` before
29
+ * any other code touches the fields.
30
+ */
31
+ export interface FeedbackDraftInput {
32
+ type: unknown;
33
+ title: unknown;
34
+ description: unknown;
35
+ stepsToReproduce?: unknown;
36
+ expectedBehavior?: unknown;
37
+ actualBehavior?: unknown;
38
+ userSeverity?: unknown;
39
+ context?: unknown;
40
+ agentDraft?: unknown;
41
+ }
42
+ /**
43
+ * The narrowed shape returned by `normalizeFeedbackDraftInput` on success.
44
+ * Safe to use throughout the rest of the pipeline.
45
+ */
46
+ export interface NormalizedDraft {
47
+ type: FeedbackType;
48
+ title: string;
49
+ userText: FeedbackUserText;
50
+ context?: FeedbackContext;
51
+ agentDraft?: AgentDraft;
52
+ }
53
+ export interface RecentEvent {
54
+ type: string;
55
+ at: string;
56
+ severity?: string;
57
+ summary: string;
58
+ }
59
+ export interface CanaryStatus {
60
+ status: 'available' | 'unavailable';
61
+ summary?: string;
62
+ unavailableReason?: string;
63
+ }
64
+ export interface DiagnosticSummary {
65
+ versions: Record<string, unknown>;
66
+ platform: Record<string, unknown>;
67
+ featureFlags: Record<string, unknown>;
68
+ canary: CanaryStatus;
69
+ recentEvents: RecentEvent[];
70
+ }
71
+ export interface ContextRef {
72
+ kind: string;
73
+ id: string;
74
+ label?: string;
75
+ }
76
+ export interface PrivacyPreview {
77
+ includedSections: string[];
78
+ excludedByDefault: string[];
79
+ redactionNotes: string[];
80
+ }
81
+ export interface FeedbackReport {
82
+ id: string;
83
+ createdAt: string;
84
+ type: FeedbackType;
85
+ title: string;
86
+ userText: FeedbackUserText;
87
+ agentDraft?: AgentDraft;
88
+ diagnosticSummary: DiagnosticSummary;
89
+ contextRefs: ContextRef[];
90
+ privacy: PrivacyPreview;
91
+ outputs: {
92
+ markdown: string;
93
+ emailText: string;
94
+ githubIssueUrl: string;
95
+ };
96
+ }
97
+ export type ValidationError = {
98
+ field: string;
99
+ reason: string;
100
+ nextAction: string;
101
+ };
102
+ export type NormalizeResult = {
103
+ ok: true;
104
+ value: NormalizedDraft;
105
+ } | {
106
+ ok: false;
107
+ errors: ValidationError[];
108
+ };
109
+ export declare function isFeedbackType(value: unknown): value is FeedbackType;
110
+ export declare function isUserSeverity(value: unknown): value is UserSeverity;
111
+ export declare function isFeedbackSource(value: unknown): value is FeedbackSource;
112
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
113
+ export declare function isBoolean(value: unknown): value is boolean;
114
+ export { isString } from './internal-guards.js';
115
+ /**
116
+ * Validate and normalize a `FeedbackDraftInput` value.
117
+ * Returns a discriminated union. Never throws.
118
+ */
119
+ export declare function normalizeFeedbackDraftInput(value: unknown): NormalizeResult;
120
+ //# sourceMappingURL=feedback-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"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"}