@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.
Files changed (170) hide show
  1. package/dist/runtime-v2/__tests__/architecture-regression.test.js +15 -2
  2. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  3. package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js +14 -6
  4. package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js.map +1 -1
  5. package/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +1 -0
  6. package/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -1
  7. package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +5 -0
  8. package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
  9. package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js +4 -1
  10. package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js.map +1 -1
  11. package/dist/runtime-v2/__tests__/internalization-state-machine.test.js +3 -2
  12. package/dist/runtime-v2/__tests__/internalization-state-machine.test.js.map +1 -1
  13. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +47 -0
  14. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  15. package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js +66 -1
  16. package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js.map +1 -1
  17. package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.d.ts +2 -0
  18. package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.d.ts.map +1 -0
  19. package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js +234 -0
  20. package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js.map +1 -0
  21. package/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +23 -1
  22. package/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
  23. package/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts +11 -0
  24. package/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts.map +1 -1
  25. package/dist/runtime-v2/activation/prompt-activation-reader-contract.js +11 -4
  26. package/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
  27. package/dist/runtime-v2/adapter/output-schema-registry.d.ts.map +1 -1
  28. package/dist/runtime-v2/adapter/output-schema-registry.js +2 -0
  29. package/dist/runtime-v2/adapter/output-schema-registry.js.map +1 -1
  30. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +7 -2
  31. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  32. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  33. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +10 -6
  34. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  35. package/dist/runtime-v2/feedback/__tests__/fingerprint.test.d.ts +2 -0
  36. package/dist/runtime-v2/feedback/__tests__/fingerprint.test.d.ts.map +1 -0
  37. package/dist/runtime-v2/feedback/__tests__/fingerprint.test.js +126 -0
  38. package/dist/runtime-v2/feedback/__tests__/fingerprint.test.js.map +1 -0
  39. package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.d.ts +2 -0
  40. package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.d.ts.map +1 -0
  41. package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.js +278 -0
  42. package/dist/runtime-v2/feedback/__tests__/slice1-typed-fields.test.js.map +1 -0
  43. package/dist/runtime-v2/feedback/create-report.d.ts.map +1 -1
  44. package/dist/runtime-v2/feedback/create-report.js +38 -1
  45. package/dist/runtime-v2/feedback/create-report.js.map +1 -1
  46. package/dist/runtime-v2/feedback/feedback-types.d.ts +60 -0
  47. package/dist/runtime-v2/feedback/feedback-types.d.ts.map +1 -1
  48. package/dist/runtime-v2/feedback/feedback-types.js +58 -0
  49. package/dist/runtime-v2/feedback/feedback-types.js.map +1 -1
  50. package/dist/runtime-v2/feedback/fingerprint.d.ts +31 -0
  51. package/dist/runtime-v2/feedback/fingerprint.d.ts.map +1 -0
  52. package/dist/runtime-v2/feedback/fingerprint.js +51 -0
  53. package/dist/runtime-v2/feedback/fingerprint.js.map +1 -0
  54. package/dist/runtime-v2/feedback/index.d.ts +3 -2
  55. package/dist/runtime-v2/feedback/index.d.ts.map +1 -1
  56. package/dist/runtime-v2/feedback/index.js +2 -1
  57. package/dist/runtime-v2/feedback/index.js.map +1 -1
  58. package/dist/runtime-v2/feedback/privacy-preview.d.ts.map +1 -1
  59. package/dist/runtime-v2/feedback/privacy-preview.js +43 -0
  60. package/dist/runtime-v2/feedback/privacy-preview.js.map +1 -1
  61. package/dist/runtime-v2/feedback/render-markdown.d.ts.map +1 -1
  62. package/dist/runtime-v2/feedback/render-markdown.js +33 -0
  63. package/dist/runtime-v2/feedback/render-markdown.js.map +1 -1
  64. package/dist/runtime-v2/index.d.ts +11 -7
  65. package/dist/runtime-v2/index.d.ts.map +1 -1
  66. package/dist/runtime-v2/index.js +5 -3
  67. package/dist/runtime-v2/index.js.map +1 -1
  68. package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.d.ts +2 -0
  69. package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.d.ts.map +1 -0
  70. package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.js +157 -0
  71. package/dist/runtime-v2/internalization/__tests__/a-liveness-reconciliation.test.js.map +1 -0
  72. package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +29 -0
  73. package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -1
  74. package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.d.ts +2 -0
  75. package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.d.ts.map +1 -0
  76. package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.js +311 -0
  77. package/dist/runtime-v2/internalization/__tests__/crash-liveness-regressions.test.js.map +1 -0
  78. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.d.ts +2 -0
  79. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.d.ts.map +1 -0
  80. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js +171 -0
  81. package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js.map +1 -0
  82. package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js +11 -2
  83. package/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js.map +1 -1
  84. package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.d.ts +2 -0
  85. package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.d.ts.map +1 -0
  86. package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js +335 -0
  87. package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js.map +1 -0
  88. package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.d.ts +2 -0
  89. package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.d.ts.map +1 -0
  90. package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js +515 -0
  91. package/dist/runtime-v2/internalization/__tests__/mvp-core-loop-journeys.test.js.map +1 -0
  92. package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.d.ts +2 -0
  93. package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.d.ts.map +1 -0
  94. package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.js +167 -0
  95. package/dist/runtime-v2/internalization/__tests__/restart-safety.e2e.test.js.map +1 -0
  96. package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.d.ts +2 -0
  97. package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.d.ts.map +1 -0
  98. package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.js +601 -0
  99. package/dist/runtime-v2/internalization/__tests__/verdict-drift-regressions.test.js.map +1 -0
  100. package/dist/runtime-v2/internalization/artificer-runner.d.ts +7 -0
  101. package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  102. package/dist/runtime-v2/internalization/artificer-runner.js +18 -2
  103. package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  104. package/dist/runtime-v2/internalization/evaluator-runner.d.ts +49 -0
  105. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  106. package/dist/runtime-v2/internalization/evaluator-runner.js +390 -98
  107. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  108. package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +127 -0
  109. package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
  110. package/dist/runtime-v2/internalization/internalization-orchestrator.js +345 -1
  111. package/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
  112. package/dist/runtime-v2/internalization/internalization-task-guards.d.ts +9 -2
  113. package/dist/runtime-v2/internalization/internalization-task-guards.d.ts.map +1 -1
  114. package/dist/runtime-v2/internalization/internalization-task-guards.js +14 -3
  115. package/dist/runtime-v2/internalization/internalization-task-guards.js.map +1 -1
  116. package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts +61 -0
  117. package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts.map +1 -0
  118. package/dist/runtime-v2/internalization/internalization-transition-decision.js +84 -0
  119. package/dist/runtime-v2/internalization/internalization-transition-decision.js.map +1 -0
  120. package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +17 -1
  121. package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
  122. package/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
  123. package/dist/runtime-v2/internalization/pitask-metadata.d.ts +99 -2
  124. package/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
  125. package/dist/runtime-v2/internalization/pitask-metadata.js +148 -0
  126. package/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
  127. package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts +147 -0
  128. package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts.map +1 -1
  129. package/dist/runtime-v2/internalization/rollout-reviewer-runner.js +672 -1
  130. package/dist/runtime-v2/internalization/rollout-reviewer-runner.js.map +1 -1
  131. package/dist/runtime-v2/internalization/scribe-runner.d.ts +2 -0
  132. package/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  133. package/dist/runtime-v2/internalization/scribe-runner.js +21 -1
  134. package/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  135. package/dist/runtime-v2/runner/base-peer-runner.d.ts +9 -0
  136. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  137. package/dist/runtime-v2/runner/base-peer-runner.js +22 -0
  138. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  139. package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.d.ts +2 -0
  140. package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.d.ts.map +1 -0
  141. package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.js +130 -0
  142. package/dist/runtime-v2/signal-collector/__tests__/llm-payload-contract.test.js.map +1 -0
  143. package/dist/runtime-v2/signal-collector/index.d.ts +1 -1
  144. package/dist/runtime-v2/signal-collector/index.d.ts.map +1 -1
  145. package/dist/runtime-v2/signal-collector/index.js +1 -1
  146. package/dist/runtime-v2/signal-collector/index.js.map +1 -1
  147. package/dist/runtime-v2/signal-collector/llm-stage.d.ts +15 -0
  148. package/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -1
  149. package/dist/runtime-v2/signal-collector/llm-stage.js +28 -0
  150. package/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -1
  151. package/dist/runtime-v2/signal-collector/types.d.ts +9 -1
  152. package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
  153. package/dist/runtime-v2/signal-collector/types.js +13 -1
  154. package/dist/runtime-v2/signal-collector/types.js.map +1 -1
  155. package/dist/runtime-v2/store/reconciliation-cursor-store.d.ts +23 -0
  156. package/dist/runtime-v2/store/reconciliation-cursor-store.d.ts.map +1 -0
  157. package/dist/runtime-v2/store/reconciliation-cursor-store.js +34 -0
  158. package/dist/runtime-v2/store/reconciliation-cursor-store.js.map +1 -0
  159. package/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  160. package/dist/runtime-v2/store/sqlite-connection.js +7 -0
  161. package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  162. package/dist/runtime-v2/store/task/memory-task-store.d.ts.map +1 -1
  163. package/dist/runtime-v2/store/task/memory-task-store.js +22 -0
  164. package/dist/runtime-v2/store/task/memory-task-store.js.map +1 -1
  165. package/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
  166. package/dist/runtime-v2/store/task/sqlite-task-store.js +20 -0
  167. package/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  168. package/dist/runtime-v2/store/task/task-store.d.ts +14 -0
  169. package/dist/runtime-v2/store/task/task-store.d.ts.map +1 -1
  170. 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,EAId,eAAe,EAIhB,MAAM,qBAAqB,CAAC;AAgB7B,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,CA6KpB"}
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":"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"}
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