@principles/core 1.258.0 → 1.259.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime-v2/__tests__/architecture-regression.test.js +15 -2
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js +14 -6
- package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +1 -0
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +5 -0
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js +4 -1
- package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/internalization-state-machine.test.js +3 -2
- package/dist/runtime-v2/__tests__/internalization-state-machine.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +47 -0
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js +66 -1
- package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.d.ts +2 -0
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js +234 -0
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js.map +1 -0
- package/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +23 -1
- package/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
- package/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts +11 -0
- package/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts.map +1 -1
- package/dist/runtime-v2/activation/prompt-activation-reader-contract.js +11 -4
- package/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
- package/dist/runtime-v2/adapter/output-schema-registry.d.ts.map +1 -1
- package/dist/runtime-v2/adapter/output-schema-registry.js +2 -0
- package/dist/runtime-v2/adapter/output-schema-registry.js.map +1 -1
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +7 -2
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js +10 -6
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/dist/runtime-v2/feedback/__tests__/fingerprint.test.d.ts +2 -0
- package/dist/runtime-v2/feedback/__tests__/fingerprint.test.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/fingerprint.test.js +126 -0
- package/dist/runtime-v2/feedback/__tests__/fingerprint.test.js.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.d.ts +2 -0
- package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.js +278 -0
- package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.js.map +1 -0
- package/dist/runtime-v2/feedback/create-report.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/create-report.js +38 -1
- package/dist/runtime-v2/feedback/create-report.js.map +1 -1
- package/dist/runtime-v2/feedback/feedback-types.d.ts +60 -0
- package/dist/runtime-v2/feedback/feedback-types.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/feedback-types.js +58 -0
- package/dist/runtime-v2/feedback/feedback-types.js.map +1 -1
- package/dist/runtime-v2/feedback/fingerprint.d.ts +31 -0
- package/dist/runtime-v2/feedback/fingerprint.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/fingerprint.js +51 -0
- package/dist/runtime-v2/feedback/fingerprint.js.map +1 -0
- package/dist/runtime-v2/feedback/index.d.ts +3 -2
- package/dist/runtime-v2/feedback/index.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/index.js +2 -1
- package/dist/runtime-v2/feedback/index.js.map +1 -1
- package/dist/runtime-v2/feedback/privacy-preview.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/privacy-preview.js +43 -0
- package/dist/runtime-v2/feedback/privacy-preview.js.map +1 -1
- package/dist/runtime-v2/feedback/render-markdown.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/render-markdown.js +33 -0
- package/dist/runtime-v2/feedback/render-markdown.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +11 -7
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +5 -3
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.js +157 -0
- package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +29 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.js +311 -0
- package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js +171 -0
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js +11 -2
- package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js +335 -0
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js +515 -0
- package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.js +167 -0
- package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.js +601 -0
- package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.js.map +1 -0
- package/dist/runtime-v2/internalization/artificer-runner.d.ts +7 -0
- package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-runner.js +18 -2
- package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts +49 -0
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.js +390 -98
- package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +127 -0
- package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.js +345 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-task-guards.d.ts +9 -2
- package/dist/runtime-v2/internalization/internalization-task-guards.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/internalization-task-guards.js +14 -3
- package/dist/runtime-v2/internalization/internalization-task-guards.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts +61 -0
- package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/internalization-transition-decision.js +84 -0
- package/dist/runtime-v2/internalization/internalization-transition-decision.js.map +1 -0
- package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +17 -1
- package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
- package/dist/runtime-v2/internalization/pitask-metadata.d.ts +99 -2
- package/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/pitask-metadata.js +148 -0
- package/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts +147 -0
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.js +672 -1
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/scribe-runner.d.ts +2 -0
- package/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/scribe-runner.js +21 -1
- package/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.d.ts +9 -0
- package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.js +22 -0
- package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.d.ts +2 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.d.ts.map +1 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.js +130 -0
- package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.js.map +1 -0
- package/dist/runtime-v2/signal-collector/index.d.ts +1 -1
- package/dist/runtime-v2/signal-collector/index.d.ts.map +1 -1
- package/dist/runtime-v2/signal-collector/index.js +1 -1
- package/dist/runtime-v2/signal-collector/index.js.map +1 -1
- package/dist/runtime-v2/signal-collector/llm-stage.d.ts +15 -0
- package/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -1
- package/dist/runtime-v2/signal-collector/llm-stage.js +28 -0
- package/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -1
- package/dist/runtime-v2/signal-collector/types.d.ts +9 -1
- package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
- package/dist/runtime-v2/signal-collector/types.js +13 -1
- package/dist/runtime-v2/signal-collector/types.js.map +1 -1
- package/dist/runtime-v2/store/reconciliation-cursor-store.d.ts +23 -0
- package/dist/runtime-v2/store/reconciliation-cursor-store.d.ts.map +1 -0
- package/dist/runtime-v2/store/reconciliation-cursor-store.js +34 -0
- package/dist/runtime-v2/store/reconciliation-cursor-store.js.map +1 -0
- package/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/dist/runtime-v2/store/sqlite-connection.js +7 -0
- package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/dist/runtime-v2/store/task/memory-task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/memory-task-store.js +22 -0
- package/dist/runtime-v2/store/task/memory-task-store.js.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.js +20 -0
- package/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
- package/dist/runtime-v2/store/task/task-store.d.ts +14 -0
- package/dist/runtime-v2/store/task/task-store.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 1 typed-field tests (PRI-543): frequency / blockingLevel / per-type
|
|
3
|
+
* conditional text fields (goal, stuckAt, job, currentWorkaround, sawWhat,
|
|
4
|
+
* whereSeen) and area. Verifies end-to-end from normalize → create → render:
|
|
5
|
+
* - normalizeFeedbackDraftInput accepts valid typed fields and rejects invalid ones
|
|
6
|
+
* - new text fields pass through the same redaction pipeline in createFeedbackReport
|
|
7
|
+
* - area propagates to report.area
|
|
8
|
+
* - renderReportMarkdown / buildEmailText render typed fields conditionally by type
|
|
9
|
+
* - old drafts (no new fields) still parse (no regression)
|
|
10
|
+
*
|
|
11
|
+
* ERR checklist:
|
|
12
|
+
* - EP-01 / ERR-001: input is passed as unknown; no `as` casts in tests.
|
|
13
|
+
* - ERR-003: redaction is segment-exact on the typed text fields.
|
|
14
|
+
* - ERR-009/010: invalid enum / non-string typed fields fail loud with reason + nextAction.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, expect } from 'vitest';
|
|
17
|
+
import { normalizeFeedbackDraftInput, createFeedbackReport, renderReportMarkdown, computeFeedbackFingerprint, } from '../index.js';
|
|
18
|
+
const diagnostics = {};
|
|
19
|
+
function expectOk(input) {
|
|
20
|
+
const result = createFeedbackReport(input, diagnostics);
|
|
21
|
+
expect(result.ok).toBe(true);
|
|
22
|
+
if (!result.ok)
|
|
23
|
+
throw new Error('expected ok report');
|
|
24
|
+
return result.report;
|
|
25
|
+
}
|
|
26
|
+
const baseInput = {
|
|
27
|
+
type: 'confusing',
|
|
28
|
+
title: 'Can not save environment variable',
|
|
29
|
+
description: 'I tried to save an env var and nothing happened',
|
|
30
|
+
};
|
|
31
|
+
describe('normalizeFeedbackDraftInput — typed field validation', () => {
|
|
32
|
+
it('accepts typed text fields and area', () => {
|
|
33
|
+
const input = {
|
|
34
|
+
...baseInput,
|
|
35
|
+
area: 'principles',
|
|
36
|
+
goal: 'to set a default env var',
|
|
37
|
+
stuckAt: 'the save button',
|
|
38
|
+
};
|
|
39
|
+
const r = normalizeFeedbackDraftInput(input);
|
|
40
|
+
expect(r.ok).toBe(true);
|
|
41
|
+
if (r.ok) {
|
|
42
|
+
expect(r.value.area).toBe('principles');
|
|
43
|
+
expect(r.value.userText.goal).toBe('to set a default env var');
|
|
44
|
+
expect(r.value.userText.stuckAt).toBe('the save button');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
it('accepts frequency and blockingLevel enums', () => {
|
|
48
|
+
const input = {
|
|
49
|
+
type: 'bug',
|
|
50
|
+
title: 'Runner crashes',
|
|
51
|
+
description: 'crashes on load',
|
|
52
|
+
frequency: 'always',
|
|
53
|
+
blockingLevel: 'blocked',
|
|
54
|
+
};
|
|
55
|
+
const r = normalizeFeedbackDraftInput(input);
|
|
56
|
+
expect(r.ok).toBe(true);
|
|
57
|
+
if (r.ok) {
|
|
58
|
+
expect(r.value.userText.frequency).toBe('always');
|
|
59
|
+
expect(r.value.userText.blockingLevel).toBe('blocked');
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
it('rejects invalid frequency', () => {
|
|
63
|
+
const input = {
|
|
64
|
+
type: 'bug',
|
|
65
|
+
title: 't',
|
|
66
|
+
description: 'd',
|
|
67
|
+
frequency: 'every_time',
|
|
68
|
+
};
|
|
69
|
+
const r = normalizeFeedbackDraftInput(input);
|
|
70
|
+
expect(r.ok).toBe(false);
|
|
71
|
+
if (!r.ok) {
|
|
72
|
+
const f = r.errors.find((e) => e.field === 'frequency');
|
|
73
|
+
expect(f).toBeDefined();
|
|
74
|
+
expect(f?.reason).toContain('always, often, sometimes, once');
|
|
75
|
+
expect(f?.nextAction).toBeTruthy();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
it('rejects invalid blockingLevel', () => {
|
|
79
|
+
const input = {
|
|
80
|
+
type: 'bug',
|
|
81
|
+
title: 't',
|
|
82
|
+
description: 'd',
|
|
83
|
+
blockingLevel: 'severely',
|
|
84
|
+
};
|
|
85
|
+
const r = normalizeFeedbackDraftInput(input);
|
|
86
|
+
expect(r.ok).toBe(false);
|
|
87
|
+
if (!r.ok) {
|
|
88
|
+
const f = r.errors.find((e) => e.field === 'blockingLevel');
|
|
89
|
+
expect(f).toBeDefined();
|
|
90
|
+
expect(f?.reason).toContain('blocked, workaround, minor');
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
it('rejects non-string typed text field', () => {
|
|
94
|
+
const input = {
|
|
95
|
+
type: 'confusing',
|
|
96
|
+
title: 't',
|
|
97
|
+
description: 'd',
|
|
98
|
+
goal: 42,
|
|
99
|
+
};
|
|
100
|
+
const r = normalizeFeedbackDraftInput(input);
|
|
101
|
+
expect(r.ok).toBe(false);
|
|
102
|
+
if (!r.ok) {
|
|
103
|
+
const f = r.errors.find((e) => e.field === 'goal');
|
|
104
|
+
expect(f).toBeDefined();
|
|
105
|
+
expect(f?.reason).toContain('must be a string');
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
it('accepts a legacy draft with no new fields (no regression)', () => {
|
|
109
|
+
const r = normalizeFeedbackDraftInput(baseInput);
|
|
110
|
+
expect(r.ok).toBe(true);
|
|
111
|
+
if (r.ok) {
|
|
112
|
+
expect(r.value.area).toBeUndefined();
|
|
113
|
+
expect(r.value.userText.goal).toBeUndefined();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
describe('createFeedbackReport — typed field propagation + redaction', () => {
|
|
118
|
+
it('carries typed text fields into userText', () => {
|
|
119
|
+
const report = expectOk({
|
|
120
|
+
...baseInput,
|
|
121
|
+
area: 'failed_tasks',
|
|
122
|
+
goal: 'to retry a failed task',
|
|
123
|
+
stuckAt: 'the retry button',
|
|
124
|
+
});
|
|
125
|
+
expect(report.area).toBe('failed_tasks');
|
|
126
|
+
expect(report.userText.goal).toBe('to retry a failed task');
|
|
127
|
+
expect(report.userText.stuckAt).toBe('the retry button');
|
|
128
|
+
});
|
|
129
|
+
it('redacts absolute paths inside typed text fields and records a note', () => {
|
|
130
|
+
const report = expectOk({
|
|
131
|
+
...baseInput,
|
|
132
|
+
goal: 'open the file at C:\\Users\\alice\\config.json',
|
|
133
|
+
});
|
|
134
|
+
expect(report.userText.goal).not.toContain('C:\\Users\\alice');
|
|
135
|
+
expect(report.privacy.redactionNotes.some((n) => n.startsWith('goal'))).toBe(true);
|
|
136
|
+
});
|
|
137
|
+
it('carries frequency and blockingLevel through to the report', () => {
|
|
138
|
+
const report = expectOk({
|
|
139
|
+
type: 'bug',
|
|
140
|
+
title: 't',
|
|
141
|
+
description: 'd',
|
|
142
|
+
frequency: 'sometimes',
|
|
143
|
+
blockingLevel: 'workaround',
|
|
144
|
+
});
|
|
145
|
+
expect(report.userText.frequency).toBe('sometimes');
|
|
146
|
+
expect(report.userText.blockingLevel).toBe('workaround');
|
|
147
|
+
});
|
|
148
|
+
it('does not set area when input omits it', () => {
|
|
149
|
+
const report = expectOk(baseInput);
|
|
150
|
+
expect(report.area).toBeUndefined();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('renderReportMarkdown — conditional typed sections', () => {
|
|
154
|
+
it('renders confusing sections only for confusing reports', () => {
|
|
155
|
+
const report = expectOk({
|
|
156
|
+
...baseInput,
|
|
157
|
+
goal: 'to do X',
|
|
158
|
+
stuckAt: 'step 2',
|
|
159
|
+
});
|
|
160
|
+
const md = report.outputs.markdown;
|
|
161
|
+
expect(md).toContain('What I wanted to do');
|
|
162
|
+
expect(md).toContain('to do X');
|
|
163
|
+
expect(md).toContain('Where I got stuck');
|
|
164
|
+
expect(md).not.toContain('Goal');
|
|
165
|
+
expect(md).not.toContain('Current workaround');
|
|
166
|
+
});
|
|
167
|
+
it('renders feature_request sections for feature_request reports', () => {
|
|
168
|
+
const report = expectOk({
|
|
169
|
+
type: 'feature_request',
|
|
170
|
+
title: 'want export',
|
|
171
|
+
description: 'd',
|
|
172
|
+
job: 'export the report to a file',
|
|
173
|
+
currentWorkaround: 'I screenshot it',
|
|
174
|
+
});
|
|
175
|
+
const md = report.outputs.markdown;
|
|
176
|
+
expect(md).toContain('Goal');
|
|
177
|
+
expect(md).toContain('export the report to a file');
|
|
178
|
+
expect(md).toContain('Current workaround');
|
|
179
|
+
expect(md).not.toContain('What I wanted to do');
|
|
180
|
+
});
|
|
181
|
+
it('renders privacy_concern sections for privacy_concern reports', () => {
|
|
182
|
+
const report = expectOk({
|
|
183
|
+
type: 'privacy_concern',
|
|
184
|
+
title: 'token visible',
|
|
185
|
+
description: 'd',
|
|
186
|
+
sawWhat: 'a bearer token',
|
|
187
|
+
whereSeen: 'the status page',
|
|
188
|
+
});
|
|
189
|
+
const md = report.outputs.markdown;
|
|
190
|
+
expect(md).toContain('What I saw');
|
|
191
|
+
expect(md).toContain('Where I saw it');
|
|
192
|
+
});
|
|
193
|
+
it('emits frequency / blockingLevel / area lines when present', () => {
|
|
194
|
+
const md = expectOk({
|
|
195
|
+
type: 'bug',
|
|
196
|
+
title: 't',
|
|
197
|
+
description: 'd',
|
|
198
|
+
area: 'failed_tasks',
|
|
199
|
+
frequency: 'always',
|
|
200
|
+
blockingLevel: 'blocked',
|
|
201
|
+
}).outputs.markdown;
|
|
202
|
+
expect(md).toContain('Frequency: `always`');
|
|
203
|
+
expect(md).toContain('Blocking level: `blocked`');
|
|
204
|
+
expect(md).toContain('Area: `failed_tasks`');
|
|
205
|
+
});
|
|
206
|
+
it('omits typed sections for the "other" type', () => {
|
|
207
|
+
const md = expectOk({
|
|
208
|
+
type: 'other',
|
|
209
|
+
title: 't',
|
|
210
|
+
description: 'just saying hi',
|
|
211
|
+
}).outputs.markdown;
|
|
212
|
+
expect(md).not.toContain('Current workaround');
|
|
213
|
+
expect(md).not.toContain('What I wanted to do');
|
|
214
|
+
});
|
|
215
|
+
it('does not render empty typed sections when fields are absent', () => {
|
|
216
|
+
const md = renderReportMarkdown(expectOk({
|
|
217
|
+
type: 'confusing',
|
|
218
|
+
title: 't',
|
|
219
|
+
description: 'no typed details',
|
|
220
|
+
}));
|
|
221
|
+
expect(md).not.toContain('What I wanted to do');
|
|
222
|
+
expect(md).not.toContain('Where I got stuck');
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
describe('buildEmailText — conditional typed sections', () => {
|
|
226
|
+
it('renders confusing email sections', () => {
|
|
227
|
+
const report = expectOk({
|
|
228
|
+
...baseInput,
|
|
229
|
+
goal: 'to do X',
|
|
230
|
+
stuckAt: 'step 2',
|
|
231
|
+
});
|
|
232
|
+
const email = report.outputs.emailText;
|
|
233
|
+
expect(email).toContain('— What I wanted to do —');
|
|
234
|
+
expect(email).toContain('to do X');
|
|
235
|
+
expect(email).toContain('— Where I got stuck —');
|
|
236
|
+
});
|
|
237
|
+
it('renders feature_request email sections', () => {
|
|
238
|
+
const email = expectOk({
|
|
239
|
+
type: 'feature_request',
|
|
240
|
+
title: 'want export',
|
|
241
|
+
description: 'd',
|
|
242
|
+
job: 'export it',
|
|
243
|
+
currentWorkaround: 'screenshot',
|
|
244
|
+
}).outputs.emailText;
|
|
245
|
+
expect(email).toContain('— Goal —');
|
|
246
|
+
expect(email).toContain('— Current workaround —');
|
|
247
|
+
});
|
|
248
|
+
it('emits frequency / blockingLevel / area lines when present', () => {
|
|
249
|
+
const email = expectOk({
|
|
250
|
+
type: 'bug',
|
|
251
|
+
title: 't',
|
|
252
|
+
description: 'd',
|
|
253
|
+
area: 'failed_tasks',
|
|
254
|
+
frequency: 'often',
|
|
255
|
+
blockingLevel: 'minor',
|
|
256
|
+
}).outputs.emailText;
|
|
257
|
+
expect(email).toContain('Frequency: often');
|
|
258
|
+
expect(email).toContain('Blocking level: minor');
|
|
259
|
+
expect(email).toContain('Area: failed_tasks');
|
|
260
|
+
});
|
|
261
|
+
it('omits typed sections for "other" type', () => {
|
|
262
|
+
const email = expectOk({
|
|
263
|
+
type: 'other',
|
|
264
|
+
title: 't',
|
|
265
|
+
description: 'hi',
|
|
266
|
+
}).outputs.emailText;
|
|
267
|
+
expect(email).not.toContain('— Goal —');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
describe('fingerprint used together with area in reports', () => {
|
|
271
|
+
it('computes a deterministic fingerprint for a reported entity area', () => {
|
|
272
|
+
const fp1 = computeFeedbackFingerprint({ type: 'bug', title: 'Peers never finish', area: 'failed_tasks' });
|
|
273
|
+
const fp2 = computeFeedbackFingerprint({ type: 'bug', title: ' Peers, never finish! ', area: 'failed_tasks' });
|
|
274
|
+
expect(fp1).toBe(fp2);
|
|
275
|
+
expect(fp1).toMatch(/^[0-9a-f]{64}$/);
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
//# sourceMappingURL=slice1-typed-fields.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice1-typed-fields.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/feedback/__tests__/slice1-typed-fields.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"create-report.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/create-report.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,cAAc,EAKd,eAAe,EAIhB,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,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;;;;;;;;GAQG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,OAAO,EACpB,eAAe,CAAC,EAAE,MAAM,EACxB,sBAAsB,CAAC,EAAE,sBAAsB,GAC9C,kBAAkB,CA4MpB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// ERR-002: failure paths return {ok: false, errors: ValidationError[]}; success returns {ok: true, report: FeedbackReport}.
|
|
5
5
|
// ERR-003: redaction uses segment-exact key matching (handled by redact-sensitive).
|
|
6
6
|
// ERR-014/016/017: bounded previews, BigInt-safe safeStringifyPreview.
|
|
7
|
-
import { isRecord, isString, isUserSeverity, normalizeFeedbackDraftInput, } from './feedback-types.js';
|
|
7
|
+
import { isRecord, isString, isUserSeverity, isFeedbackFrequency, isFeedbackBlockingLevel, normalizeFeedbackDraftInput, } from './feedback-types.js';
|
|
8
8
|
import { redactAbsolutePaths, redactTokenLikeValues, redactEnvLikeValues, redactSensitiveFields, } from './redact-sensitive.js';
|
|
9
9
|
import { renderReportMarkdown } from './render-markdown.js';
|
|
10
10
|
import { buildGitHubIssueDraftUrl } from './render-github-url.js';
|
|
@@ -178,6 +178,24 @@ export function createFeedbackReport(input, diagnostics, maintainerEmail, pendin
|
|
|
178
178
|
if (typeof actualInput === 'string' && actualBehavior !== actualInput) {
|
|
179
179
|
redactionNotes.push('actualBehavior was redacted');
|
|
180
180
|
}
|
|
181
|
+
const typedTextFields = [
|
|
182
|
+
['goal', 'goal'],
|
|
183
|
+
['stuckAt', 'stuckAt'],
|
|
184
|
+
['job', 'job'],
|
|
185
|
+
['currentWorkaround', 'currentWorkaround'],
|
|
186
|
+
['sawWhat', 'sawWhat'],
|
|
187
|
+
['whereSeen', 'whereSeen'],
|
|
188
|
+
];
|
|
189
|
+
const redactedTyped = {};
|
|
190
|
+
for (const [key, label] of typedTextFields) {
|
|
191
|
+
const raw = draft.userText[key];
|
|
192
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
193
|
+
continue;
|
|
194
|
+
const scrubbed = redactAbsolutePaths(redactTokenLikeValues(redactEnvLikeValues(raw)));
|
|
195
|
+
redactedTyped[key] = scrubbed;
|
|
196
|
+
if (scrubbed !== raw)
|
|
197
|
+
redactionNotes.push(`${label} was redacted (paths/tokens/env values)`);
|
|
198
|
+
}
|
|
181
199
|
// Task 13: If taskId is provided and a pending agent draft exists, merge it.
|
|
182
200
|
// User-provided agentDraft (from input.agentDraft) takes priority — the
|
|
183
201
|
// agent draft from the store is a fallback for when the user didn't write one.
|
|
@@ -256,6 +274,23 @@ export function createFeedbackReport(input, diagnostics, maintainerEmail, pendin
|
|
|
256
274
|
userText.actualBehavior = actualBehavior;
|
|
257
275
|
if (isUserSeverity(draft.userText.userSeverity))
|
|
258
276
|
userText.userSeverity = draft.userText.userSeverity;
|
|
277
|
+
// ── 类型化新字段(Slice 1, PRI-543)──
|
|
278
|
+
if (draft.userText.goal !== undefined)
|
|
279
|
+
userText.goal = redactedTyped.goal;
|
|
280
|
+
if (draft.userText.stuckAt !== undefined)
|
|
281
|
+
userText.stuckAt = redactedTyped.stuckAt;
|
|
282
|
+
if (draft.userText.job !== undefined)
|
|
283
|
+
userText.job = redactedTyped.job;
|
|
284
|
+
if (draft.userText.currentWorkaround !== undefined)
|
|
285
|
+
userText.currentWorkaround = redactedTyped.currentWorkaround;
|
|
286
|
+
if (draft.userText.sawWhat !== undefined)
|
|
287
|
+
userText.sawWhat = redactedTyped.sawWhat;
|
|
288
|
+
if (draft.userText.whereSeen !== undefined)
|
|
289
|
+
userText.whereSeen = redactedTyped.whereSeen;
|
|
290
|
+
if (isFeedbackFrequency(draft.userText.frequency))
|
|
291
|
+
userText.frequency = draft.userText.frequency;
|
|
292
|
+
if (isFeedbackBlockingLevel(draft.userText.blockingLevel))
|
|
293
|
+
userText.blockingLevel = draft.userText.blockingLevel;
|
|
259
294
|
const id = generateReportId();
|
|
260
295
|
const createdAt = new Date().toISOString();
|
|
261
296
|
// Step 9: render markdown and email text. Renderers mutate privacy.redactionNotes
|
|
@@ -271,6 +306,8 @@ export function createFeedbackReport(input, diagnostics, maintainerEmail, pendin
|
|
|
271
306
|
privacy,
|
|
272
307
|
outputs: { markdown: '', emailText: '', githubIssueUrl: '', mailtoUrl: '' },
|
|
273
308
|
};
|
|
309
|
+
if (draft.area !== undefined)
|
|
310
|
+
report.area = draft.area;
|
|
274
311
|
// Surface the agent-attached evidence in the report so it propagates to
|
|
275
312
|
// markdown, emailText, and any later consumer.
|
|
276
313
|
// Redact sensitive values (paths/tokens/env) from agentDraft string fields.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-report.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/create-report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-report.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/create-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
export type FeedbackType = 'bug' | 'confusing' | 'privacy_concern' | 'feature_request' | 'other';
|
|
2
2
|
export type UserSeverity = 'low' | 'medium' | 'high';
|
|
3
|
+
/**
|
|
4
|
+
* 出现频率(类型化反馈):用户对 bug 最诚实、最可分诊的回答。
|
|
5
|
+
* always=每次 / often=经常 / sometimes=偶尔 / once=仅一次。
|
|
6
|
+
*/
|
|
7
|
+
export type FeedbackFrequency = 'always' | 'often' | 'sometimes' | 'once';
|
|
8
|
+
/**
|
|
9
|
+
* 阻塞度(类型化反馈):用户在 UI 层替代 severity 的诚实回答。
|
|
10
|
+
* blocked=卡住我了 / workaround=能绕过 / minor=不影响。
|
|
11
|
+
*/
|
|
12
|
+
export type FeedbackBlockingLevel = 'blocked' | 'workaround' | 'minor';
|
|
13
|
+
/**
|
|
14
|
+
* 草稿/报告的分发状态。
|
|
15
|
+
* draft=仅本地保存 / submitted=已通过某个通道提交。
|
|
16
|
+
* 从未写过提交时的文件(旧草稿)缺省按 draft 处理。
|
|
17
|
+
*/
|
|
18
|
+
export type FeedbackStatus = 'draft' | 'submitted';
|
|
19
|
+
/** 提交时使用的通道。 */
|
|
20
|
+
export type FeedbackSubmittedVia = 'ingest' | 'github' | 'email' | 'file';
|
|
3
21
|
export type FeedbackSource = 'console' | 'cli' | 'agent';
|
|
4
22
|
export interface FeedbackContext {
|
|
5
23
|
source?: FeedbackSource;
|
|
@@ -29,6 +47,22 @@ export interface FeedbackUserText {
|
|
|
29
47
|
expectedBehavior?: string;
|
|
30
48
|
actualBehavior?: string;
|
|
31
49
|
userSeverity?: UserSeverity;
|
|
50
|
+
/** confusing:你当时想做什么 */
|
|
51
|
+
goal?: string;
|
|
52
|
+
/** confusing:卡在哪一步 */
|
|
53
|
+
stuckAt?: string;
|
|
54
|
+
/** feature_request:你想达成什么目标(job,而非功能名) */
|
|
55
|
+
job?: string;
|
|
56
|
+
/** feature_request:现在是怎么凑合的 */
|
|
57
|
+
currentWorkaround?: string;
|
|
58
|
+
/** privacy_concern:你看到了什么让你担心 */
|
|
59
|
+
sawWhat?: string;
|
|
60
|
+
/** privacy_concern:在哪里看到的 */
|
|
61
|
+
whereSeen?: string;
|
|
62
|
+
/** bug:出现频率 */
|
|
63
|
+
frequency?: FeedbackFrequency;
|
|
64
|
+
/** bug/confusing:阻塞度(UI 层取代 severity 的诚实回答) */
|
|
65
|
+
blockingLevel?: FeedbackBlockingLevel;
|
|
32
66
|
}
|
|
33
67
|
/**
|
|
34
68
|
* The contract input: every field is typed as `unknown` because the input
|
|
@@ -44,6 +78,16 @@ export interface FeedbackDraftInput {
|
|
|
44
78
|
expectedBehavior?: unknown;
|
|
45
79
|
actualBehavior?: unknown;
|
|
46
80
|
userSeverity?: unknown;
|
|
81
|
+
goal?: unknown;
|
|
82
|
+
stuckAt?: unknown;
|
|
83
|
+
job?: unknown;
|
|
84
|
+
currentWorkaround?: unknown;
|
|
85
|
+
sawWhat?: unknown;
|
|
86
|
+
whereSeen?: unknown;
|
|
87
|
+
frequency?: unknown;
|
|
88
|
+
blockingLevel?: unknown;
|
|
89
|
+
/** 来源页面 id(如 failed_tasks / pain / principles / activation / focus / intent) */
|
|
90
|
+
area?: unknown;
|
|
47
91
|
context?: unknown;
|
|
48
92
|
agentDraft?: unknown;
|
|
49
93
|
/**
|
|
@@ -65,6 +109,8 @@ export interface NormalizedDraft {
|
|
|
65
109
|
agentDraft?: AgentDraft;
|
|
66
110
|
/** Task 13: top-level taskId (validated string), separate from context.taskId. */
|
|
67
111
|
taskId?: string;
|
|
112
|
+
/** 来源页面 id(Slice 1, PRI-543) */
|
|
113
|
+
area?: string;
|
|
68
114
|
}
|
|
69
115
|
export interface RecentEvent {
|
|
70
116
|
type: string;
|
|
@@ -110,6 +156,16 @@ export interface FeedbackReport {
|
|
|
110
156
|
githubIssueUrl: string;
|
|
111
157
|
mailtoUrl: string;
|
|
112
158
|
};
|
|
159
|
+
/** 来源页面 id(如 failed_tasks / pain / principles / activation / focus / intent) */
|
|
160
|
+
area?: string;
|
|
161
|
+
/** 分发状态;缺省按 draft 处理 */
|
|
162
|
+
status?: FeedbackStatus;
|
|
163
|
+
submittedAt?: string;
|
|
164
|
+
submittedVia?: FeedbackSubmittedVia;
|
|
165
|
+
/** relay 返回的回执编号(如 fb-xxxxxxxx) */
|
|
166
|
+
trackingId?: string;
|
|
167
|
+
/** 已建 issue 的 URL(Linear/GitHub) */
|
|
168
|
+
externalUrl?: string;
|
|
113
169
|
}
|
|
114
170
|
export type ValidationError = {
|
|
115
171
|
field: string;
|
|
@@ -125,6 +181,10 @@ export type NormalizeResult = {
|
|
|
125
181
|
};
|
|
126
182
|
export declare function isFeedbackType(value: unknown): value is FeedbackType;
|
|
127
183
|
export declare function isUserSeverity(value: unknown): value is UserSeverity;
|
|
184
|
+
export declare function isFeedbackFrequency(value: unknown): value is FeedbackFrequency;
|
|
185
|
+
export declare function isFeedbackBlockingLevel(value: unknown): value is FeedbackBlockingLevel;
|
|
186
|
+
export declare function isFeedbackStatus(value: unknown): value is FeedbackStatus;
|
|
187
|
+
export declare function isFeedbackSubmittedVia(value: unknown): value is FeedbackSubmittedVia;
|
|
128
188
|
export declare function isFeedbackSource(value: unknown): value is FeedbackSource;
|
|
129
189
|
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
130
190
|
export declare function isBoolean(value: unknown): value is boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,WAAW,GACX,iBAAiB,GACjB,iBAAiB,GACjB,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ const FEEDBACK_TYPES = [
|
|
|
12
12
|
'other',
|
|
13
13
|
];
|
|
14
14
|
const USER_SEVERITIES = ['low', 'medium', 'high'];
|
|
15
|
+
const FEEDBACK_FREQUENCIES = ['always', 'often', 'sometimes', 'once'];
|
|
16
|
+
const FEEDBACK_BLOCKING_LEVELS = ['blocked', 'workaround', 'minor'];
|
|
17
|
+
const FEEDBACK_STATUSES = ['draft', 'submitted'];
|
|
18
|
+
const FEEDBACK_SUBMITTED_VIA = ['ingest', 'github', 'email', 'file'];
|
|
15
19
|
const FEEDBACK_SOURCES = ['console', 'cli', 'agent'];
|
|
16
20
|
export function isFeedbackType(value) {
|
|
17
21
|
return typeof value === 'string' && FEEDBACK_TYPES.includes(value);
|
|
@@ -19,6 +23,18 @@ export function isFeedbackType(value) {
|
|
|
19
23
|
export function isUserSeverity(value) {
|
|
20
24
|
return typeof value === 'string' && USER_SEVERITIES.includes(value);
|
|
21
25
|
}
|
|
26
|
+
export function isFeedbackFrequency(value) {
|
|
27
|
+
return typeof value === 'string' && FEEDBACK_FREQUENCIES.includes(value);
|
|
28
|
+
}
|
|
29
|
+
export function isFeedbackBlockingLevel(value) {
|
|
30
|
+
return typeof value === 'string' && FEEDBACK_BLOCKING_LEVELS.includes(value);
|
|
31
|
+
}
|
|
32
|
+
export function isFeedbackStatus(value) {
|
|
33
|
+
return typeof value === 'string' && FEEDBACK_STATUSES.includes(value);
|
|
34
|
+
}
|
|
35
|
+
export function isFeedbackSubmittedVia(value) {
|
|
36
|
+
return typeof value === 'string' && FEEDBACK_SUBMITTED_VIA.includes(value);
|
|
37
|
+
}
|
|
22
38
|
export function isFeedbackSource(value) {
|
|
23
39
|
return typeof value === 'string' && FEEDBACK_SOURCES.includes(value);
|
|
24
40
|
}
|
|
@@ -168,6 +184,29 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
168
184
|
validateOptionalString(value.stepsToReproduce, 'stepsToReproduce', errors);
|
|
169
185
|
validateOptionalString(value.expectedBehavior, 'expectedBehavior', errors);
|
|
170
186
|
validateOptionalString(value.actualBehavior, 'actualBehavior', errors);
|
|
187
|
+
// ── 类型化新字段(Slice 1, PRI-543)──
|
|
188
|
+
validateOptionalString(value.goal, 'goal', errors);
|
|
189
|
+
validateOptionalString(value.stuckAt, 'stuckAt', errors);
|
|
190
|
+
validateOptionalString(value.job, 'job', errors);
|
|
191
|
+
validateOptionalString(value.currentWorkaround, 'currentWorkaround', errors);
|
|
192
|
+
validateOptionalString(value.sawWhat, 'sawWhat', errors);
|
|
193
|
+
validateOptionalString(value.whereSeen, 'whereSeen', errors);
|
|
194
|
+
validateOptionalString(value.area, 'area', errors);
|
|
195
|
+
// frequency / blockingLevel:枚举校验
|
|
196
|
+
if (value.frequency !== undefined && !isFeedbackFrequency(value.frequency)) {
|
|
197
|
+
errors.push({
|
|
198
|
+
field: 'frequency',
|
|
199
|
+
reason: 'frequency must be one of: always, often, sometimes, once (ERR-010)',
|
|
200
|
+
nextAction: 'provide a valid FeedbackFrequency value or omit it',
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (value.blockingLevel !== undefined && !isFeedbackBlockingLevel(value.blockingLevel)) {
|
|
204
|
+
errors.push({
|
|
205
|
+
field: 'blockingLevel',
|
|
206
|
+
reason: 'blockingLevel must be one of: blocked, workaround, minor (ERR-010)',
|
|
207
|
+
nextAction: 'provide a valid FeedbackBlockingLevel value or omit it',
|
|
208
|
+
});
|
|
209
|
+
}
|
|
171
210
|
// Optional: userSeverity
|
|
172
211
|
if (value.userSeverity !== undefined && !isUserSeverity(value.userSeverity)) {
|
|
173
212
|
errors.push({
|
|
@@ -238,6 +277,23 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
238
277
|
userText.actualBehavior = value.actualBehavior;
|
|
239
278
|
if (isUserSeverity(value.userSeverity))
|
|
240
279
|
userText.userSeverity = value.userSeverity;
|
|
280
|
+
// ── 类型化新字段(Slice 1, PRI-543)──
|
|
281
|
+
if (isString(value.goal))
|
|
282
|
+
userText.goal = value.goal;
|
|
283
|
+
if (isString(value.stuckAt))
|
|
284
|
+
userText.stuckAt = value.stuckAt;
|
|
285
|
+
if (isString(value.job))
|
|
286
|
+
userText.job = value.job;
|
|
287
|
+
if (isString(value.currentWorkaround))
|
|
288
|
+
userText.currentWorkaround = value.currentWorkaround;
|
|
289
|
+
if (isString(value.sawWhat))
|
|
290
|
+
userText.sawWhat = value.sawWhat;
|
|
291
|
+
if (isString(value.whereSeen))
|
|
292
|
+
userText.whereSeen = value.whereSeen;
|
|
293
|
+
if (isFeedbackFrequency(value.frequency))
|
|
294
|
+
userText.frequency = value.frequency;
|
|
295
|
+
if (isFeedbackBlockingLevel(value.blockingLevel))
|
|
296
|
+
userText.blockingLevel = value.blockingLevel;
|
|
241
297
|
const normalized = { type, title, userText };
|
|
242
298
|
if (context)
|
|
243
299
|
normalized.context = context;
|
|
@@ -245,6 +301,8 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
245
301
|
normalized.agentDraft = agentDraft;
|
|
246
302
|
if (taskId !== undefined)
|
|
247
303
|
normalized.taskId = taskId;
|
|
304
|
+
if (isString(value.area))
|
|
305
|
+
normalized.area = value.area;
|
|
248
306
|
return { ok: true, value: normalized };
|
|
249
307
|
}
|
|
250
308
|
//# sourceMappingURL=feedback-types.js.map
|