@principles/core 1.235.0 → 1.237.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.
- package/dist/principle-tree-ledger.d.ts.map +1 -1
- package/dist/principle-tree-ledger.js +55 -30
- package/dist/principle-tree-ledger.js.map +1 -1
- package/dist/runtime-v2/__tests__/feedback/create-report.test.js +51 -0
- package/dist/runtime-v2/__tests__/feedback/create-report.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js +1 -1
- package/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/feedback/render-markdown.test.js +1 -1
- package/dist/runtime-v2/__tests__/feedback/render-markdown.test.js.map +1 -1
- package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +109 -0
- package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
- package/dist/runtime-v2/activation/activation-dispatcher.d.ts +11 -0
- package/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
- package/dist/runtime-v2/activation/activation-dispatcher.js +60 -6
- package/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
- package/dist/runtime-v2/activation/activation-types.d.ts +4 -0
- package/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +34 -0
- 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 +5 -0
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/dist/runtime-v2/feedback/__tests__/create-report-agent-draft.test.d.ts +2 -0
- package/dist/runtime-v2/feedback/__tests__/create-report-agent-draft.test.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/create-report-agent-draft.test.js +221 -0
- package/dist/runtime-v2/feedback/__tests__/create-report-agent-draft.test.js.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/mailto-url.test.d.ts +11 -0
- package/dist/runtime-v2/feedback/__tests__/mailto-url.test.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/mailto-url.test.js +160 -0
- package/dist/runtime-v2/feedback/__tests__/mailto-url.test.js.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/pending-agent-draft-store.test.d.ts +2 -0
- package/dist/runtime-v2/feedback/__tests__/pending-agent-draft-store.test.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/__tests__/pending-agent-draft-store.test.js +342 -0
- package/dist/runtime-v2/feedback/__tests__/pending-agent-draft-store.test.js.map +1 -0
- package/dist/runtime-v2/feedback/create-report.d.ts +7 -1
- package/dist/runtime-v2/feedback/create-report.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/create-report.js +65 -7
- package/dist/runtime-v2/feedback/create-report.js.map +1 -1
- package/dist/runtime-v2/feedback/feedback-types.d.ts +18 -1
- package/dist/runtime-v2/feedback/feedback-types.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/feedback-types.js +19 -12
- package/dist/runtime-v2/feedback/feedback-types.js.map +1 -1
- package/dist/runtime-v2/feedback/index.d.ts +3 -1
- package/dist/runtime-v2/feedback/index.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/index.js +7 -1
- package/dist/runtime-v2/feedback/index.js.map +1 -1
- package/dist/runtime-v2/feedback/pending-agent-draft-store.d.ts +106 -0
- package/dist/runtime-v2/feedback/pending-agent-draft-store.d.ts.map +1 -0
- package/dist/runtime-v2/feedback/pending-agent-draft-store.js +220 -0
- package/dist/runtime-v2/feedback/pending-agent-draft-store.js.map +1 -0
- package/dist/runtime-v2/feedback/privacy-preview.d.ts +16 -0
- package/dist/runtime-v2/feedback/privacy-preview.d.ts.map +1 -1
- package/dist/runtime-v2/feedback/privacy-preview.js +54 -0
- package/dist/runtime-v2/feedback/privacy-preview.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +5 -0
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +9 -0
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-agent-draft.test.d.ts +2 -0
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-agent-draft.test.d.ts.map +1 -0
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-agent-draft.test.js +459 -0
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-agent-draft.test.js.map +1 -0
- package/dist/runtime-v2/runner/base-peer-runner.d.ts +27 -0
- package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.js +138 -0
- package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/dist/runtime-v2/runner/peer-runner-types.d.ts +9 -0
- package/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
- package/dist/runtime-v2/store/pain/__tests__/sqlite-dead-letter-store.test.d.ts +2 -0
- package/dist/runtime-v2/store/pain/__tests__/sqlite-dead-letter-store.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/pain/__tests__/sqlite-dead-letter-store.test.js +225 -0
- package/dist/runtime-v2/store/pain/__tests__/sqlite-dead-letter-store.test.js.map +1 -0
- package/dist/runtime-v2/store/pain/index.d.ts +3 -0
- package/dist/runtime-v2/store/pain/index.d.ts.map +1 -0
- package/dist/runtime-v2/store/pain/index.js +2 -0
- package/dist/runtime-v2/store/pain/index.js.map +1 -0
- package/dist/runtime-v2/store/pain/sqlite-dead-letter-store.d.ts +70 -0
- package/dist/runtime-v2/store/pain/sqlite-dead-letter-store.d.ts.map +1 -0
- package/dist/runtime-v2/store/pain/sqlite-dead-letter-store.js +154 -0
- package/dist/runtime-v2/store/pain/sqlite-dead-letter-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 +41 -0
- package/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.d.ts +2 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js +442 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js.map +1 -0
- package/dist/runtime-v2/store/task/index.d.ts +1 -0
- package/dist/runtime-v2/store/task/index.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/index.js.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.d.ts +45 -0
- package/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.js +205 -0
- package/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
- package/dist/runtime-v2/store/task/task-types.d.ts +60 -0
- package/dist/runtime-v2/store/task/task-types.d.ts.map +1 -0
- package/dist/runtime-v2/store/task/task-types.js +2 -0
- package/dist/runtime-v2/store/task/task-types.js.map +1 -0
- package/package.json +3 -2
|
@@ -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,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,26 +58,23 @@ function validateFeedbackContext(value) {
|
|
|
58
58
|
});
|
|
59
59
|
return errors;
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
// source is optional (Task 6: context fields are all optional — any subset is valid).
|
|
62
|
+
// When present, it must be a valid FeedbackSource.
|
|
63
|
+
if (value.source !== undefined && !isFeedbackSource(value.source)) {
|
|
62
64
|
errors.push({
|
|
63
65
|
field: 'context.source',
|
|
64
|
-
reason: 'context.source
|
|
65
|
-
nextAction: '
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
else if (!isFeedbackSource(value.source)) {
|
|
69
|
-
errors.push({
|
|
70
|
-
field: 'context.source',
|
|
71
|
-
reason: 'context.source must be one of: console, cli, agent (ERR-010)',
|
|
72
|
-
nextAction: 'set context.source to a valid FeedbackSource value',
|
|
66
|
+
reason: 'context.source must be one of: console, cli, agent when provided (ERR-010)',
|
|
67
|
+
nextAction: 'set context.source to a valid FeedbackSource value or omit it',
|
|
73
68
|
});
|
|
74
69
|
}
|
|
70
|
+
validateOptionalString(value.sourceDetail, 'context.sourceDetail', errors);
|
|
75
71
|
validateOptionalString(value.page, 'context.page', errors);
|
|
76
72
|
validateOptionalString(value.painId, 'context.painId', errors);
|
|
77
73
|
validateOptionalString(value.principleId, 'context.principleId', errors);
|
|
78
74
|
validateOptionalString(value.approvalId, 'context.approvalId', errors);
|
|
79
75
|
validateOptionalString(value.activationId, 'context.activationId', errors);
|
|
80
76
|
validateOptionalString(value.updateAttemptId, 'context.updateAttemptId', errors);
|
|
77
|
+
validateOptionalString(value.taskId, 'context.taskId', errors);
|
|
81
78
|
return errors;
|
|
82
79
|
}
|
|
83
80
|
function validateAgentDraft(value) {
|
|
@@ -185,9 +182,13 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
185
182
|
const ctxErrors = validateFeedbackContext(value.context);
|
|
186
183
|
for (const e of ctxErrors)
|
|
187
184
|
errors.push(e);
|
|
188
|
-
if (isRecord(value.context)
|
|
185
|
+
if (isRecord(value.context)) {
|
|
189
186
|
const c = value.context;
|
|
190
|
-
const built = {
|
|
187
|
+
const built = {};
|
|
188
|
+
if (isFeedbackSource(c.source))
|
|
189
|
+
built.source = c.source;
|
|
190
|
+
if (isString(c.sourceDetail))
|
|
191
|
+
built.sourceDetail = c.sourceDetail;
|
|
191
192
|
if (isString(c.page))
|
|
192
193
|
built.page = c.page;
|
|
193
194
|
if (isString(c.painId))
|
|
@@ -200,9 +201,13 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
200
201
|
built.activationId = c.activationId;
|
|
201
202
|
if (isString(c.updateAttemptId))
|
|
202
203
|
built.updateAttemptId = c.updateAttemptId;
|
|
204
|
+
if (isString(c.taskId))
|
|
205
|
+
built.taskId = c.taskId;
|
|
203
206
|
context = built;
|
|
204
207
|
}
|
|
205
208
|
}
|
|
209
|
+
// Optional: taskId (top-level shortcut, separate from context.taskId)
|
|
210
|
+
const taskId = validateOptionalString(value.taskId, 'taskId', errors);
|
|
206
211
|
// Optional: agentDraft
|
|
207
212
|
let agentDraft = undefined;
|
|
208
213
|
if (value.agentDraft !== undefined) {
|
|
@@ -238,6 +243,8 @@ export function normalizeFeedbackDraftInput(value) {
|
|
|
238
243
|
normalized.context = context;
|
|
239
244
|
if (agentDraft)
|
|
240
245
|
normalized.agentDraft = agentDraft;
|
|
246
|
+
if (taskId !== undefined)
|
|
247
|
+
normalized.taskId = taskId;
|
|
241
248
|
return { ok: true, value: normalized };
|
|
242
249
|
}
|
|
243
250
|
//# sourceMappingURL=feedback-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,iFAAiF;AACjF,4GAA4G;AAC5G,sDAAsD;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/feedback-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@ export { isFeedbackType, isUserSeverity, isFeedbackSource, isRecord, isBoolean,
|
|
|
3
3
|
export { redactAbsolutePaths, redactTokenLikeValues, redactEnvLikeValues, redactStackTrace, redactSensitiveFields, redactTelemetryString, REDACTED_PATH, REDACTED_VALUE, NO_STACK, type RedactResult, } from './redact-sensitive.js';
|
|
4
4
|
export { renderReportMarkdown, MAX_MARKDOWN_LENGTH } from './render-markdown.js';
|
|
5
5
|
export { buildGitHubIssueDraftUrl, MAX_URL_BODY_LENGTH, GITHUB_REPO, type GithubUrlResult, } from './render-github-url.js';
|
|
6
|
-
export { buildPrivacyPreview, buildEmailText, DEFAULT_INCLUDED_SECTIONS, DEFAULT_EXCLUDED_CATEGORIES, } from './privacy-preview.js';
|
|
6
|
+
export { buildPrivacyPreview, buildEmailText, buildMailtoUrl, DEFAULT_INCLUDED_SECTIONS, DEFAULT_EXCLUDED_CATEGORIES, } from './privacy-preview.js';
|
|
7
7
|
export { createFeedbackReport, type CreateReportResult } from './create-report.js';
|
|
8
8
|
export { safeStringifyPreview } from './safe-stringify.js';
|
|
9
|
+
export { PendingAgentDraftStore } from './pending-agent-draft-store.js';
|
|
10
|
+
export type { AgentDraftPayload, PendingAgentDraftRow, PendingDraftOpResult, } from './pending-agent-draft-store.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAO3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC"}
|
|
@@ -5,7 +5,13 @@ export { isFeedbackType, isUserSeverity, isFeedbackSource, isRecord, isBoolean,
|
|
|
5
5
|
export { redactAbsolutePaths, redactTokenLikeValues, redactEnvLikeValues, redactStackTrace, redactSensitiveFields, redactTelemetryString, REDACTED_PATH, REDACTED_VALUE, NO_STACK, } from './redact-sensitive.js';
|
|
6
6
|
export { renderReportMarkdown, MAX_MARKDOWN_LENGTH } from './render-markdown.js';
|
|
7
7
|
export { buildGitHubIssueDraftUrl, MAX_URL_BODY_LENGTH, GITHUB_REPO, } from './render-github-url.js';
|
|
8
|
-
export { buildPrivacyPreview, buildEmailText, DEFAULT_INCLUDED_SECTIONS, DEFAULT_EXCLUDED_CATEGORIES, } from './privacy-preview.js';
|
|
8
|
+
export { buildPrivacyPreview, buildEmailText, buildMailtoUrl, DEFAULT_INCLUDED_SECTIONS, DEFAULT_EXCLUDED_CATEGORIES, } from './privacy-preview.js';
|
|
9
9
|
export { createFeedbackReport } from './create-report.js';
|
|
10
10
|
export { safeStringifyPreview } from './safe-stringify.js';
|
|
11
|
+
// Task 11: PendingAgentDraftStore — durable store for agent-generated draft
|
|
12
|
+
// context attached to a failed peer-runner task. Unlike the pure-logic helpers
|
|
13
|
+
// above, this class holds a SqliteConnection reference (it is an I/O store,
|
|
14
|
+
// not a pure function). Re-exported here so callers can import from the
|
|
15
|
+
// feedback barrel; the runtime-v2 top-level barrel also re-exports it.
|
|
16
|
+
export { PendingAgentDraftStore } from './pending-agent-draft-store.js';
|
|
11
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,sDAAsD;AACtD,kEAAkE;AAqBlE,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,GAET,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,GAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,sDAAsD;AACtD,kEAAkE;AAqBlE,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,GAET,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,GAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PendingAgentDraftStore — durable store for agent-generated draft context
|
|
3
|
+
* attached to a failed peer-runner task.
|
|
4
|
+
*
|
|
5
|
+
* Task 11: When a peer runner reaches a permanent-failure terminal state
|
|
6
|
+
* (BasePeerRunner catch block — Task 12), it constructs an AgentDraftPayload
|
|
7
|
+
* and writes it here via insertPendingDraft. The feedback-report pipeline
|
|
8
|
+
* (Task 13) later reads the unconsumed draft for a given taskId and merges
|
|
9
|
+
* it into the user-facing FeedbackReport so the maintainer sees the agent's
|
|
10
|
+
* perspective alongside the user's description. After a successful merge,
|
|
11
|
+
* markConsumed sets consumed_at so the draft cannot be re-attached.
|
|
12
|
+
*
|
|
13
|
+
* Idempotency contract: the schema's partial unique index
|
|
14
|
+
* UNIQUE(task_id) WHERE consumed_at IS NULL
|
|
15
|
+
* guarantees at most one unconsumed draft per task_id at the DB level.
|
|
16
|
+
* insertPendingDraft honors this by first SELECTing for an existing
|
|
17
|
+
* unconsumed row, then UPDATE-ing it in place (rather than INSERT-ing a new
|
|
18
|
+
* row) when one exists. This matches the spec requirement: "如果 taskId 已有
|
|
19
|
+
* 未消费行,UPDATE 该行的 agent_draft / created_at / pain_id,不创建新行".
|
|
20
|
+
*
|
|
21
|
+
* ERR checklist:
|
|
22
|
+
* - EP-01 / ERR-001, ERR-005: agent_draft JSON is parsed into `unknown` and
|
|
23
|
+
* validated field-by-field via isAgentDraftPayload before being exposed as
|
|
24
|
+
* AgentDraftPayload. No `as` casts on row data (rc-1, rc-2).
|
|
25
|
+
* - EP-01 / ERR-013: Object.hasOwn (not `in`) is used to check payload keys
|
|
26
|
+
* on the parsed-unknown object (rc-5).
|
|
27
|
+
* - EP-03 / ERR-002: write failures return { ok: false, error } so callers
|
|
28
|
+
* can log an observable reason (rc-9).
|
|
29
|
+
* - EP-03 / ERR-009, ERR-010: corrupt agent_draft JSON fails loud —
|
|
30
|
+
* getUnconsumedByTaskId / listPending throw a structured Error rather than
|
|
31
|
+
* silently returning a raw string masquerading as the original object
|
|
32
|
+
* (rc-3-fail-loud-missing).
|
|
33
|
+
* - EP-05 / ERR-015: insertPendingDraft reads fresh state via
|
|
34
|
+
* SELECT ... WHERE consumed_at IS NULL immediately before the
|
|
35
|
+
* INSERT/UPDATE decision, so concurrent writers see the latest row.
|
|
36
|
+
*/
|
|
37
|
+
import type { SqliteConnection } from '../store/sqlite-connection.js';
|
|
38
|
+
/** Agent-authored draft context attached to a failed task. */
|
|
39
|
+
export interface AgentDraftPayload {
|
|
40
|
+
summary: string;
|
|
41
|
+
observedFailure?: string;
|
|
42
|
+
commandSummary?: string;
|
|
43
|
+
}
|
|
44
|
+
/** A row in the pending_agent_drafts table. agentDraft is typed (validated). */
|
|
45
|
+
export interface PendingAgentDraftRow {
|
|
46
|
+
id: string;
|
|
47
|
+
taskId: string;
|
|
48
|
+
painId: string | null;
|
|
49
|
+
agentDraft: AgentDraftPayload;
|
|
50
|
+
createdAt: string;
|
|
51
|
+
consumedAt: string | null;
|
|
52
|
+
}
|
|
53
|
+
/** Result of an insert or markConsumed operation. */
|
|
54
|
+
export type PendingDraftOpResult = {
|
|
55
|
+
ok: true;
|
|
56
|
+
id: string;
|
|
57
|
+
} | {
|
|
58
|
+
ok: false;
|
|
59
|
+
error: string;
|
|
60
|
+
};
|
|
61
|
+
export declare class PendingAgentDraftStore {
|
|
62
|
+
private readonly connection;
|
|
63
|
+
constructor(connection: SqliteConnection);
|
|
64
|
+
/**
|
|
65
|
+
* Insert a pending agent draft for a task, or UPDATE the existing
|
|
66
|
+
* unconsumed draft if one already exists for the same taskId (idempotent).
|
|
67
|
+
*
|
|
68
|
+
* On UPDATE, the row's `id` is preserved; agent_draft / created_at / pain_id
|
|
69
|
+
* are overwritten with the new values. This honors the spec: "如果 taskId 已有
|
|
70
|
+
* 未消费行(consumed_at IS NULL),UPDATE 该行的 agent_draft / created_at /
|
|
71
|
+
* pain_id,不创建新行".
|
|
72
|
+
*
|
|
73
|
+
* Returns `{ ok: true, id }` on success (id is the row's PRIMARY KEY,
|
|
74
|
+
* either the existing one for an UPDATE or a fresh `pad-` id for an INSERT).
|
|
75
|
+
*/
|
|
76
|
+
insertPendingDraft(input: {
|
|
77
|
+
taskId: string;
|
|
78
|
+
painId?: string;
|
|
79
|
+
agentDraft: AgentDraftPayload;
|
|
80
|
+
}): PendingDraftOpResult;
|
|
81
|
+
/**
|
|
82
|
+
* Get the unconsumed draft for a task, or null if none.
|
|
83
|
+
* Fails loud (rc-3) when agent_draft is corrupt JSON — throws a structured
|
|
84
|
+
* Error so callers can observe the corruption instead of silently receiving
|
|
85
|
+
* a raw string masquerading as the original object.
|
|
86
|
+
*/
|
|
87
|
+
getUnconsumedByTaskId(taskId: string): PendingAgentDraftRow | null;
|
|
88
|
+
/**
|
|
89
|
+
* Mark a draft as consumed (set consumed_at = now).
|
|
90
|
+
* Returns `{ ok: true }` whether or not the row exists — this is the
|
|
91
|
+
* explicit "ok: true 静默" behavior called out in the task spec for
|
|
92
|
+
* markConsumed on a non-existent id. The reasoning: markConsumed is called
|
|
93
|
+
* from the feedback-report success path as a cleanup step; a missing row
|
|
94
|
+
* (already consumed, never existed, or concurrently deleted) is not an
|
|
95
|
+
* error condition the caller can act on.
|
|
96
|
+
*/
|
|
97
|
+
markConsumed(id: string): PendingDraftOpResult;
|
|
98
|
+
/**
|
|
99
|
+
* List pending (unconsumed) drafts, most recent first.
|
|
100
|
+
* Fails loud (rc-3) on corrupt agent_draft JSON.
|
|
101
|
+
*/
|
|
102
|
+
listPending(filter?: {
|
|
103
|
+
limit?: number;
|
|
104
|
+
}): PendingAgentDraftRow[];
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=pending-agent-draft-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-agent-draft-store.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/pending-agent-draft-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,qDAAqD;AACrD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkFjC,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEzD;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,iBAAiB,CAAC;KAC/B,GAAG,oBAAoB;IA6CxB;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAWlE;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB;IAa9C;;;OAGG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,EAAE;CAejE"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PendingAgentDraftStore — durable store for agent-generated draft context
|
|
3
|
+
* attached to a failed peer-runner task.
|
|
4
|
+
*
|
|
5
|
+
* Task 11: When a peer runner reaches a permanent-failure terminal state
|
|
6
|
+
* (BasePeerRunner catch block — Task 12), it constructs an AgentDraftPayload
|
|
7
|
+
* and writes it here via insertPendingDraft. The feedback-report pipeline
|
|
8
|
+
* (Task 13) later reads the unconsumed draft for a given taskId and merges
|
|
9
|
+
* it into the user-facing FeedbackReport so the maintainer sees the agent's
|
|
10
|
+
* perspective alongside the user's description. After a successful merge,
|
|
11
|
+
* markConsumed sets consumed_at so the draft cannot be re-attached.
|
|
12
|
+
*
|
|
13
|
+
* Idempotency contract: the schema's partial unique index
|
|
14
|
+
* UNIQUE(task_id) WHERE consumed_at IS NULL
|
|
15
|
+
* guarantees at most one unconsumed draft per task_id at the DB level.
|
|
16
|
+
* insertPendingDraft honors this by first SELECTing for an existing
|
|
17
|
+
* unconsumed row, then UPDATE-ing it in place (rather than INSERT-ing a new
|
|
18
|
+
* row) when one exists. This matches the spec requirement: "如果 taskId 已有
|
|
19
|
+
* 未消费行,UPDATE 该行的 agent_draft / created_at / pain_id,不创建新行".
|
|
20
|
+
*
|
|
21
|
+
* ERR checklist:
|
|
22
|
+
* - EP-01 / ERR-001, ERR-005: agent_draft JSON is parsed into `unknown` and
|
|
23
|
+
* validated field-by-field via isAgentDraftPayload before being exposed as
|
|
24
|
+
* AgentDraftPayload. No `as` casts on row data (rc-1, rc-2).
|
|
25
|
+
* - EP-01 / ERR-013: Object.hasOwn (not `in`) is used to check payload keys
|
|
26
|
+
* on the parsed-unknown object (rc-5).
|
|
27
|
+
* - EP-03 / ERR-002: write failures return { ok: false, error } so callers
|
|
28
|
+
* can log an observable reason (rc-9).
|
|
29
|
+
* - EP-03 / ERR-009, ERR-010: corrupt agent_draft JSON fails loud —
|
|
30
|
+
* getUnconsumedByTaskId / listPending throw a structured Error rather than
|
|
31
|
+
* silently returning a raw string masquerading as the original object
|
|
32
|
+
* (rc-3-fail-loud-missing).
|
|
33
|
+
* - EP-05 / ERR-015: insertPendingDraft reads fresh state via
|
|
34
|
+
* SELECT ... WHERE consumed_at IS NULL immediately before the
|
|
35
|
+
* INSERT/UPDATE decision, so concurrent writers see the latest row.
|
|
36
|
+
*/
|
|
37
|
+
function isRecord(value) {
|
|
38
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validate that an unknown value (parsed JSON) matches AgentDraftPayload.
|
|
42
|
+
* Uses Object.hasOwn (rc-5) and explicit typeof guards (rc-1, rc-2: no `as`).
|
|
43
|
+
*/
|
|
44
|
+
function isAgentDraftPayload(value) {
|
|
45
|
+
if (!isRecord(value))
|
|
46
|
+
return false;
|
|
47
|
+
if (!Object.hasOwn(value, 'summary') || typeof value.summary !== 'string')
|
|
48
|
+
return false;
|
|
49
|
+
if (Object.hasOwn(value, 'observedFailure') && typeof value.observedFailure !== 'string') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (Object.hasOwn(value, 'commandSummary') && typeof value.commandSummary !== 'string') {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate a `pad-<uuid>` id, falling back to `pad-<ts>-<rand>` if the
|
|
59
|
+
* WebCrypto randomUUID is unavailable (mirrors the feedback module's `fb-`
|
|
60
|
+
* prefix pattern in create-report.ts).
|
|
61
|
+
*/
|
|
62
|
+
function generateDraftId() {
|
|
63
|
+
try {
|
|
64
|
+
if (typeof globalThis.crypto !== 'undefined' && typeof globalThis.crypto.randomUUID === 'function') {
|
|
65
|
+
return 'pad-' + globalThis.crypto.randomUUID();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Fallback below
|
|
70
|
+
}
|
|
71
|
+
const ts = Date.now().toString(36);
|
|
72
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
73
|
+
return 'pad-' + ts + '-' + rand;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Map a sqlite row (Record<string, unknown>) to a PendingAgentDraftRow.
|
|
77
|
+
*
|
|
78
|
+
* agent_draft is JSON.parse'd into `unknown` and then validated via
|
|
79
|
+
* isAgentDraftPayload (rc-1, rc-2, rc-5). Corrupt JSON fails loud (rc-3)
|
|
80
|
+
* by throwing a structured Error — the caller can catch and surface a
|
|
81
|
+
* reason instead of silently degrading.
|
|
82
|
+
*/
|
|
83
|
+
function rowToPendingDraft(row) {
|
|
84
|
+
if (typeof row.agent_draft !== 'string') {
|
|
85
|
+
// rc-3: fail loud — required field missing or wrong type.
|
|
86
|
+
throw new Error(`pending_agent_drafts row has non-string agent_draft (id=${String(row.id)})`);
|
|
87
|
+
}
|
|
88
|
+
let parsed;
|
|
89
|
+
try {
|
|
90
|
+
parsed = JSON.parse(row.agent_draft);
|
|
91
|
+
}
|
|
92
|
+
catch (parseErr) {
|
|
93
|
+
// rc-3: fail loud with observable reason (do NOT return a raw string
|
|
94
|
+
// masquerading as AgentDraftPayload).
|
|
95
|
+
throw new Error(`pending_agent_drafts row has corrupt agent_draft JSON (id=${String(row.id)}): ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`, { cause: parseErr });
|
|
96
|
+
}
|
|
97
|
+
if (!isAgentDraftPayload(parsed)) {
|
|
98
|
+
// rc-3: fail loud — parsed JSON does not match AgentDraftPayload shape.
|
|
99
|
+
throw new Error(`pending_agent_drafts row agent_draft failed shape validation (id=${String(row.id)})`);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
id: String(row.id),
|
|
103
|
+
taskId: String(row.task_id),
|
|
104
|
+
painId: row.pain_id === null || row.pain_id === undefined ? null : String(row.pain_id),
|
|
105
|
+
agentDraft: parsed,
|
|
106
|
+
createdAt: String(row.created_at),
|
|
107
|
+
consumedAt: row.consumed_at === null || row.consumed_at === undefined ? null : String(row.consumed_at),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export class PendingAgentDraftStore {
|
|
111
|
+
connection;
|
|
112
|
+
constructor(connection) {
|
|
113
|
+
this.connection = connection;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Insert a pending agent draft for a task, or UPDATE the existing
|
|
117
|
+
* unconsumed draft if one already exists for the same taskId (idempotent).
|
|
118
|
+
*
|
|
119
|
+
* On UPDATE, the row's `id` is preserved; agent_draft / created_at / pain_id
|
|
120
|
+
* are overwritten with the new values. This honors the spec: "如果 taskId 已有
|
|
121
|
+
* 未消费行(consumed_at IS NULL),UPDATE 该行的 agent_draft / created_at /
|
|
122
|
+
* pain_id,不创建新行".
|
|
123
|
+
*
|
|
124
|
+
* Returns `{ ok: true, id }` on success (id is the row's PRIMARY KEY,
|
|
125
|
+
* either the existing one for an UPDATE or a fresh `pad-` id for an INSERT).
|
|
126
|
+
*/
|
|
127
|
+
insertPendingDraft(input) {
|
|
128
|
+
try {
|
|
129
|
+
const db = this.connection.getDb();
|
|
130
|
+
const createdAt = new Date().toISOString();
|
|
131
|
+
let agentDraftJson;
|
|
132
|
+
try {
|
|
133
|
+
agentDraftJson = JSON.stringify(input.agentDraft);
|
|
134
|
+
}
|
|
135
|
+
catch (serializeErr) {
|
|
136
|
+
// rc-9: surface serialization failure with a reason instead of
|
|
137
|
+
// silently dropping the row or storing an empty string.
|
|
138
|
+
return {
|
|
139
|
+
ok: false,
|
|
140
|
+
error: `agentDraft serialization failed: ${serializeErr instanceof Error ? serializeErr.message : String(serializeErr)}`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const painId = input.painId ?? null;
|
|
144
|
+
// Read fresh state (rc-7 / ERR-015): SELECT the current unconsumed row
|
|
145
|
+
// immediately before deciding INSERT vs UPDATE. The partial unique index
|
|
146
|
+
// UNIQUE(task_id) WHERE consumed_at IS NULL is the DB-level backstop.
|
|
147
|
+
const existing = db
|
|
148
|
+
.prepare('SELECT id FROM pending_agent_drafts WHERE task_id = ? AND consumed_at IS NULL LIMIT 1')
|
|
149
|
+
.get(input.taskId);
|
|
150
|
+
if (isRecord(existing) && typeof existing.id === 'string') {
|
|
151
|
+
// Idempotent UPDATE: preserve the existing row's id, refresh the
|
|
152
|
+
// payload + timestamp + pain_id linkage.
|
|
153
|
+
db.prepare('UPDATE pending_agent_drafts SET pain_id = ?, agent_draft = ?, created_at = ? WHERE id = ?').run(painId, agentDraftJson, createdAt, existing.id);
|
|
154
|
+
return { ok: true, id: existing.id };
|
|
155
|
+
}
|
|
156
|
+
const id = generateDraftId();
|
|
157
|
+
db.prepare('INSERT INTO pending_agent_drafts (id, task_id, pain_id, agent_draft, created_at, consumed_at) VALUES (?, ?, ?, ?, ?, ?)').run(id, input.taskId, painId, agentDraftJson, createdAt, null);
|
|
158
|
+
return { ok: true, id };
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get the unconsumed draft for a task, or null if none.
|
|
166
|
+
* Fails loud (rc-3) when agent_draft is corrupt JSON — throws a structured
|
|
167
|
+
* Error so callers can observe the corruption instead of silently receiving
|
|
168
|
+
* a raw string masquerading as the original object.
|
|
169
|
+
*/
|
|
170
|
+
getUnconsumedByTaskId(taskId) {
|
|
171
|
+
const db = this.connection.getDb();
|
|
172
|
+
const row = db
|
|
173
|
+
.prepare('SELECT id, task_id, pain_id, agent_draft, created_at, consumed_at FROM pending_agent_drafts WHERE task_id = ? AND consumed_at IS NULL LIMIT 1')
|
|
174
|
+
.get(taskId);
|
|
175
|
+
if (!isRecord(row))
|
|
176
|
+
return null;
|
|
177
|
+
return rowToPendingDraft(row);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Mark a draft as consumed (set consumed_at = now).
|
|
181
|
+
* Returns `{ ok: true }` whether or not the row exists — this is the
|
|
182
|
+
* explicit "ok: true 静默" behavior called out in the task spec for
|
|
183
|
+
* markConsumed on a non-existent id. The reasoning: markConsumed is called
|
|
184
|
+
* from the feedback-report success path as a cleanup step; a missing row
|
|
185
|
+
* (already consumed, never existed, or concurrently deleted) is not an
|
|
186
|
+
* error condition the caller can act on.
|
|
187
|
+
*/
|
|
188
|
+
markConsumed(id) {
|
|
189
|
+
try {
|
|
190
|
+
const db = this.connection.getDb();
|
|
191
|
+
const consumedAt = new Date().toISOString();
|
|
192
|
+
// UPDATE is idempotent: re-marking an already-consumed row just
|
|
193
|
+
// refreshes consumed_at, which is harmless.
|
|
194
|
+
db.prepare('UPDATE pending_agent_drafts SET consumed_at = ? WHERE id = ?').run(consumedAt, id);
|
|
195
|
+
return { ok: true, id };
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* List pending (unconsumed) drafts, most recent first.
|
|
203
|
+
* Fails loud (rc-3) on corrupt agent_draft JSON.
|
|
204
|
+
*/
|
|
205
|
+
listPending(filter) {
|
|
206
|
+
const db = this.connection.getDb();
|
|
207
|
+
const limit = filter?.limit ?? 100;
|
|
208
|
+
const rows = db
|
|
209
|
+
.prepare('SELECT id, task_id, pain_id, agent_draft, created_at, consumed_at FROM pending_agent_drafts WHERE consumed_at IS NULL ORDER BY created_at DESC LIMIT ?')
|
|
210
|
+
.all(limit);
|
|
211
|
+
const out = [];
|
|
212
|
+
for (const row of rows) {
|
|
213
|
+
if (!isRecord(row))
|
|
214
|
+
continue;
|
|
215
|
+
out.push(rowToPendingDraft(row));
|
|
216
|
+
}
|
|
217
|
+
return out;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=pending-agent-draft-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-agent-draft-store.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/pending-agent-draft-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AA0BH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxF,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACnG,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,GAA4B;IACrD,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACxC,0DAA0D;QAC1D,MAAM,IAAI,KAAK,CACb,2DAA2D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAC7E,CAAC;IACJ,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,qEAAqE;QACrE,sCAAsC;QACtC,MAAM,IAAI,KAAK,CACb,6DAA6D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAClJ,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,wEAAwE;QACxE,MAAM,IAAI,KAAK,CACb,oEAAoE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACtF,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,UAAU,EAAE,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;KACvG,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAAG,CAAC;IAE7D;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,KAIlB;QACC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,cAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,+DAA+D;gBAC/D,wDAAwD;gBACxD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,oCAAoC,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;iBACzH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;YAEpC,uEAAuE;YACvE,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,QAAQ,GAAG,EAAE;iBAChB,OAAO,CACN,uFAAuF,CACxF;iBACA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC1D,iEAAiE;gBACjE,yCAAyC;gBACzC,EAAE,CAAC,OAAO,CACR,2FAA2F,CAC5F,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;YACvC,CAAC;YAED,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;YAC7B,EAAE,CAAC,OAAO,CACR,yHAAyH,CAC1H,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,MAAc;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CACN,+IAA+I,CAChJ;aACA,GAAG,CAAC,MAAM,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC5C,gEAAgE;YAChE,4CAA4C;YAC5C,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,MAA2B;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CACN,wJAAwJ,CACzJ;aACA,GAAG,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC7B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -11,4 +11,20 @@ export declare function buildPrivacyPreview(redactionNotes: string[]): PrivacyPr
|
|
|
11
11
|
* Uses real '\n' newlines. BigInt/cycle-safe via safeStringifyPreview.
|
|
12
12
|
*/
|
|
13
13
|
export declare function buildEmailText(report: FeedbackReport): string;
|
|
14
|
+
/**
|
|
15
|
+
* Build a `mailto:` URL string for the given report and maintainer email.
|
|
16
|
+
*
|
|
17
|
+
* - Returns '' when `maintainerEmail` is empty or not a string.
|
|
18
|
+
* - Subject: `[PD feedback] [${report.type}] ${report.title}` with absolute
|
|
19
|
+
* paths redacted (matches the Subject line produced by buildEmailText).
|
|
20
|
+
* - Body: buildEmailText(report), truncated so that the URL-encoded body
|
|
21
|
+
* stays within MAX_MAILTO_ENCODED_BODY_LENGTH chars. When truncation
|
|
22
|
+
* occurs, TRUNCATED_SUFFIX is appended so the recipient can see the body
|
|
23
|
+
* was shortened.
|
|
24
|
+
* - Subject and body are URL-encoded via encodeURIComponent.
|
|
25
|
+
*
|
|
26
|
+
* ERR-014/016: the encoded body is bounded so the final mailto: URL stays
|
|
27
|
+
* within common email client limits (Outlook desktop ~2000 chars).
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildMailtoUrl(report: FeedbackReport, maintainerEmail: string): string;
|
|
14
30
|
//# sourceMappingURL=privacy-preview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy-preview.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/privacy-preview.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1E,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAOtD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EASxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,cAAc,CAM5E;AAWD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA4E7D"}
|
|
1
|
+
{"version":3,"file":"privacy-preview.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/privacy-preview.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1E,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAOtD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EASxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,cAAc,CAM5E;AAWD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA4E7D;AAgBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CA8BtF"}
|
|
@@ -125,4 +125,58 @@ export function buildEmailText(report) {
|
|
|
125
125
|
email = redactEnvLikeValues(email);
|
|
126
126
|
return email;
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Maximum length of the ENCODED body parameter in the mailto: URL.
|
|
130
|
+
*
|
|
131
|
+
* Outlook desktop historically enforces a ~2000-char limit on the entire
|
|
132
|
+
* mailto: URL. We budget conservatively for the encoded body alone, leaving
|
|
133
|
+
* room for `mailto:<email>?subject=<encoded-subject>&body=`. The raw
|
|
134
|
+
* (pre-encoding) body can be up to 3x larger per character after
|
|
135
|
+
* encodeURIComponent (each char → %XX), so budgeting by raw length is
|
|
136
|
+
* unsafe — a 4000-char raw body with many special chars can exceed 12000
|
|
137
|
+
* chars encoded.
|
|
138
|
+
*/
|
|
139
|
+
const MAX_MAILTO_ENCODED_BODY_LENGTH = 1800;
|
|
140
|
+
const TRUNCATED_SUFFIX = '\n\n…(truncated — use "Copy Email" in PD Console for the full report)';
|
|
141
|
+
/**
|
|
142
|
+
* Build a `mailto:` URL string for the given report and maintainer email.
|
|
143
|
+
*
|
|
144
|
+
* - Returns '' when `maintainerEmail` is empty or not a string.
|
|
145
|
+
* - Subject: `[PD feedback] [${report.type}] ${report.title}` with absolute
|
|
146
|
+
* paths redacted (matches the Subject line produced by buildEmailText).
|
|
147
|
+
* - Body: buildEmailText(report), truncated so that the URL-encoded body
|
|
148
|
+
* stays within MAX_MAILTO_ENCODED_BODY_LENGTH chars. When truncation
|
|
149
|
+
* occurs, TRUNCATED_SUFFIX is appended so the recipient can see the body
|
|
150
|
+
* was shortened.
|
|
151
|
+
* - Subject and body are URL-encoded via encodeURIComponent.
|
|
152
|
+
*
|
|
153
|
+
* ERR-014/016: the encoded body is bounded so the final mailto: URL stays
|
|
154
|
+
* within common email client limits (Outlook desktop ~2000 chars).
|
|
155
|
+
*/
|
|
156
|
+
export function buildMailtoUrl(report, maintainerEmail) {
|
|
157
|
+
if (typeof maintainerEmail !== 'string' || maintainerEmail.length === 0) {
|
|
158
|
+
return '';
|
|
159
|
+
}
|
|
160
|
+
const subject = `[PD feedback] [${report.type}] ${redactAbsolutePaths(report.title)}`;
|
|
161
|
+
const fullBody = buildEmailText(report);
|
|
162
|
+
const encodedSubject = encodeURIComponent(subject);
|
|
163
|
+
const encodedSuffix = encodeURIComponent(TRUNCATED_SUFFIX);
|
|
164
|
+
// Try the full body first; if the encoded length fits, use it as-is.
|
|
165
|
+
let bodyToEncode = fullBody;
|
|
166
|
+
let encodedBody = encodeURIComponent(bodyToEncode);
|
|
167
|
+
if (encodedBody.length + encodedSuffix.length > MAX_MAILTO_ENCODED_BODY_LENGTH) {
|
|
168
|
+
// Truncate: find the longest raw prefix whose encoded form fits within
|
|
169
|
+
// (budget - suffix). Linear reduction from the end is bounded because
|
|
170
|
+
// each iteration removes at least one character; worst case ~fullBody.length
|
|
171
|
+
// iterations, and fullBody is itself bounded by buildEmailText's field caps.
|
|
172
|
+
const bodyBudget = MAX_MAILTO_ENCODED_BODY_LENGTH - encodedSuffix.length;
|
|
173
|
+
let cut = fullBody.length;
|
|
174
|
+
while (cut > 0 && encodeURIComponent(fullBody.slice(0, cut)).length > bodyBudget) {
|
|
175
|
+
cut -= Math.max(1, Math.floor(cut / 4)); // geometric step for efficiency
|
|
176
|
+
}
|
|
177
|
+
bodyToEncode = fullBody.slice(0, cut) + TRUNCATED_SUFFIX;
|
|
178
|
+
encodedBody = encodeURIComponent(bodyToEncode);
|
|
179
|
+
}
|
|
180
|
+
return `mailto:${maintainerEmail}?subject=${encodedSubject}&body=${encodedBody}`;
|
|
181
|
+
}
|
|
128
182
|
//# sourceMappingURL=privacy-preview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy-preview.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/privacy-preview.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"privacy-preview.js","sourceRoot":"","sources":["../../../src/runtime-v2/feedback/privacy-preview.ts"],"names":[],"mappings":"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"}
|