@productbrain/cli 0.1.0-beta.8814 → 0.1.0-beta.8824
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/__tests__/capture-receipt-coaching.test.js +20 -0
- package/dist/__tests__/capture-receipt-coaching.test.js.map +1 -1
- package/dist/formatters/coaching.d.ts.map +1 -1
- package/dist/formatters/coaching.js +5 -0
- package/dist/formatters/coaching.js.map +1 -1
- package/dist/lib/checklist.d.ts +30 -0
- package/dist/lib/checklist.d.ts.map +1 -0
- package/dist/lib/checklist.js +52 -0
- package/dist/lib/checklist.js.map +1 -0
- package/dist/lib/errors.d.ts +2 -2
- package/dist/lib/errors.js +2 -2
- package/dist/lib/sessionNotices.d.ts.map +1 -1
- package/dist/lib/sessionNotices.js +9 -1
- package/dist/lib/sessionNotices.js.map +1 -1
- package/dist/lib/sessionNotices.test.js +7 -0
- package/dist/lib/sessionNotices.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -56,6 +56,26 @@ describe('formatCaptureReceipt — coaching section (WP-475 E1)', () => {
|
|
|
56
56
|
expect(out).toContain('Semantic quality: all 2 rubric criteria pass for decision (assertive tier).');
|
|
57
57
|
expect(out).not.toContain('Coaching hint:');
|
|
58
58
|
});
|
|
59
|
+
it('TASK-590 (DEC-1910): a strategy receipt prints the kernel checklist, still judging until the AI verdict lands', () => {
|
|
60
|
+
const out = formatCaptureReceipt({
|
|
61
|
+
...base,
|
|
62
|
+
coaching: {
|
|
63
|
+
source: 'heuristic',
|
|
64
|
+
verdict: {
|
|
65
|
+
...failingCoaching.verdict, canonicalKey: 'strategy',
|
|
66
|
+
criteria: [
|
|
67
|
+
{ id: 'coherent_narrative', passed: true, weight: 3, hint: 'h', questionTemplate: 'q' },
|
|
68
|
+
{ id: 'decisiveness', passed: false, weight: 3, hint: 'h', questionTemplate: 'q', failedBy: 'check' },
|
|
69
|
+
{ id: 'time_bounded', passed: true, weight: 2, hint: 'h', questionTemplate: 'q' },
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
expect(out).toContain('Quality checklist for strategy:');
|
|
75
|
+
expect(out).toContain('[~] Connect the diagnosis, the policy and the first actions (40+ words) (still judging)');
|
|
76
|
+
expect(out).toContain('[ ] Say what you will not do');
|
|
77
|
+
expect(out).not.toContain('Coaching hint');
|
|
78
|
+
});
|
|
59
79
|
it('renders nothing for a passive-tier verdict (zero-noise floor, mirrors MCP)', () => {
|
|
60
80
|
const out = formatCaptureReceipt({
|
|
61
81
|
...base,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-receipt-coaching.test.js","sourceRoot":"","sources":["../../src/__tests__/capture-receipt-coaching.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capture-receipt-coaching.test.js","sourceRoot":"","sources":["../../src/__tests__/capture-receipt-coaching.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coaching.d.ts","sourceRoot":"","sources":["../../src/formatters/coaching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"coaching.d.ts","sourceRoot":"","sources":["../../src/formatters/coaching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,iFAAiF;QACjF,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,UAAU,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wFAAwF;AACxF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CA2B3F"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* convex/intelligence/qualityCoaching.ts); the Roger Martin probe exists only
|
|
15
15
|
* on LLM-evaluated results, which never reach this formatter.
|
|
16
16
|
*/
|
|
17
|
+
import { renderChecklist } from '../lib/checklist.js';
|
|
17
18
|
/**
|
|
18
19
|
* Render the coaching verdict as receipt lines (two-space indented, no trailing
|
|
19
20
|
* newline). Mirrors the CONTENT of mcp-server's formatRubricCoaching: passive
|
|
@@ -24,6 +25,10 @@ export function formatCoachingSection(coaching) {
|
|
|
24
25
|
if (!verdict || verdict.tier === 'passive' || verdict.criteria.length === 0)
|
|
25
26
|
return [];
|
|
26
27
|
const lines = [''];
|
|
28
|
+
// TASK-590 / DEC-1910: a gated type prints the kernel checklist (kernel/quality/checklist.ts).
|
|
29
|
+
const checklist = renderChecklist(verdict.canonicalKey, verdict.criteria, coaching.source !== 'llm');
|
|
30
|
+
if (checklist)
|
|
31
|
+
return [...lines, ` Quality checklist for ${verdict.canonicalKey}:`, ...checklist.map((l) => ` ${l}`)];
|
|
27
32
|
const total = verdict.criteria.length;
|
|
28
33
|
const passedCount = verdict.criteria.filter((c) => c.passed).length;
|
|
29
34
|
if (verdict.passed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coaching.js","sourceRoot":"","sources":["../../src/formatters/coaching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"coaching.js","sourceRoot":"","sources":["../../src/formatters/coaching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAgDtD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA2C;IAC/E,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvF,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;IAC7B,+FAA+F;IAC/F,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAS,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACtG,IAAI,SAAS;QAAE,OAAO,CAAC,GAAG,KAAK,EAAE,2BAA2B,OAAO,CAAC,YAAY,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1H,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAEpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,2BAA2B,KAAK,6BAA6B,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1H,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,IAAI,KAAK,sBAAsB,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC3H,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACtC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The quality checklist — one renderer for every surface (TASK-590, DEC-1910, DEC-1913).
|
|
3
|
+
*
|
|
4
|
+
* A blocked or pending accept shows every criterion of the entry's rubric as one short
|
|
5
|
+
* instruction with one of three states: met, not yet, or still judging (the AI verdict has
|
|
6
|
+
* not landed, so a criterion the structural check passed may still fail). The line is the
|
|
7
|
+
* repair; an unmet line adds what the AI judge named as missing. The judge's free-text
|
|
8
|
+
* explanation is never shown, so it can never contradict a tick.
|
|
9
|
+
*
|
|
10
|
+
* Lines exist only for the gated rubrics, strategy and vision (DEC-1913); for any other
|
|
11
|
+
* type `renderChecklist` returns null. No Chain ids in any line: these strings reach users.
|
|
12
|
+
*
|
|
13
|
+
* Dependency-free on purpose: scripts/generate-mcp-embedded-copies.mjs ships this exact
|
|
14
|
+
* source to the CLI and the MCP server, and the accept gate (convex/lib/gates/evaluate.ts)
|
|
15
|
+
* calls it for the Rail, so every surface prints the same lines.
|
|
16
|
+
*/
|
|
17
|
+
/** One instruction per criterion id, per gated rubric. A kernel test pins it to the rubrics. */
|
|
18
|
+
export declare const CHECKLIST_LINES: Readonly<Record<string, Readonly<Record<string, string>>>>;
|
|
19
|
+
export interface ChecklistCriterion {
|
|
20
|
+
id: string;
|
|
21
|
+
passed: boolean;
|
|
22
|
+
/** What the AI judge named as concretely absent, on a fail. */
|
|
23
|
+
missing?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The checklist lines for an entry's verdict, or null when its type has no checklist.
|
|
27
|
+
* `judging` is true while the AI verdict has not settled.
|
|
28
|
+
*/
|
|
29
|
+
export declare function renderChecklist(canonicalKey: string, criteria: readonly ChecklistCriterion[], judging: boolean): string[] | null;
|
|
30
|
+
//# sourceMappingURL=checklist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../src/lib/checklist.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,gGAAgG;AAChG,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAYtF,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,EACvC,OAAO,EAAE,OAAO,GACd,MAAM,EAAE,GAAG,IAAI,CAWjB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// GENERATED by scripts/generate-mcp-embedded-copies.mjs from kernel/quality/checklist.ts.
|
|
2
|
+
// DO NOT EDIT. Run `npm run mcp:embedded-copies` to regenerate.
|
|
3
|
+
// Local runtime copy for the isolated connector build.
|
|
4
|
+
/**
|
|
5
|
+
* The quality checklist — one renderer for every surface (TASK-590, DEC-1910, DEC-1913).
|
|
6
|
+
*
|
|
7
|
+
* A blocked or pending accept shows every criterion of the entry's rubric as one short
|
|
8
|
+
* instruction with one of three states: met, not yet, or still judging (the AI verdict has
|
|
9
|
+
* not landed, so a criterion the structural check passed may still fail). The line is the
|
|
10
|
+
* repair; an unmet line adds what the AI judge named as missing. The judge's free-text
|
|
11
|
+
* explanation is never shown, so it can never contradict a tick.
|
|
12
|
+
*
|
|
13
|
+
* Lines exist only for the gated rubrics, strategy and vision (DEC-1913); for any other
|
|
14
|
+
* type `renderChecklist` returns null. No Chain ids in any line: these strings reach users.
|
|
15
|
+
*
|
|
16
|
+
* Dependency-free on purpose: scripts/generate-mcp-embedded-copies.mjs ships this exact
|
|
17
|
+
* source to the CLI and the MCP server, and the accept gate (convex/lib/gates/evaluate.ts)
|
|
18
|
+
* calls it for the Rail, so every surface prints the same lines.
|
|
19
|
+
*/
|
|
20
|
+
/** One instruction per criterion id, per gated rubric. A kernel test pins it to the rubrics. */
|
|
21
|
+
export const CHECKLIST_LINES = {
|
|
22
|
+
strategy: {
|
|
23
|
+
coherent_narrative: 'Connect the diagnosis, the policy and the first actions (40+ words)',
|
|
24
|
+
decisiveness: 'Say what you will not do',
|
|
25
|
+
time_bounded: 'Name a horizon: a date, a duration or a milestone',
|
|
26
|
+
},
|
|
27
|
+
vision: {
|
|
28
|
+
specificity: 'Say what will be different, in words only this product could use (15+ words)',
|
|
29
|
+
beneficiary: 'Name who benefits: a role, a persona or a segment',
|
|
30
|
+
falsifiability: 'Choose a direction a reasonable rival would reject',
|
|
31
|
+
stranger_test: 'Explain it so a stranger knows what you build (20+ words)',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const MARK = { met: '[x]', not_yet: '[ ]', judging: '[~]' };
|
|
35
|
+
/**
|
|
36
|
+
* The checklist lines for an entry's verdict, or null when its type has no checklist.
|
|
37
|
+
* `judging` is true while the AI verdict has not settled.
|
|
38
|
+
*/
|
|
39
|
+
export function renderChecklist(canonicalKey, criteria, judging) {
|
|
40
|
+
const lines = CHECKLIST_LINES[canonicalKey];
|
|
41
|
+
if (!lines)
|
|
42
|
+
return null;
|
|
43
|
+
return criteria
|
|
44
|
+
.filter((c) => lines[c.id] !== undefined)
|
|
45
|
+
.map((c) => {
|
|
46
|
+
const state = !c.passed ? 'not_yet' : judging ? 'judging' : 'met';
|
|
47
|
+
const still = state === 'judging' ? ' (still judging)' : '';
|
|
48
|
+
const missing = state === 'not_yet' && c.missing ? ` — missing: ${c.missing}` : '';
|
|
49
|
+
return `${MARK[state]} ${lines[c.id]}${still}${missing}`;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=checklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../src/lib/checklist.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,gEAAgE;AAChE,uDAAuD;AAEvD;;;;;;;;;;;;;;;GAeG;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAA+D;IAC1F,QAAQ,EAAE;QACT,kBAAkB,EAAE,qEAAqE;QACzF,YAAY,EAAE,0BAA0B;QACxC,YAAY,EAAE,mDAAmD;KACjE;IACD,MAAM,EAAE;QACP,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,mDAAmD;QAChE,cAAc,EAAE,oDAAoD;QACpE,aAAa,EAAE,2DAA2D;KAC1E;CACD,CAAC;AASF,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAW,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC9B,YAAoB,EACpB,QAAuC,EACvC,OAAgB;IAEhB,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,QAAQ;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -33,8 +33,8 @@ export declare const ErrorCode: {
|
|
|
33
33
|
readonly GROUNDING_GATE_BLOCKED: "GROUNDING_GATE_BLOCKED";
|
|
34
34
|
/**
|
|
35
35
|
* Semantic quality gate refused a draft→active promotion on a gated
|
|
36
|
-
* collection (WP-475 E4 / DEC-1345): fix
|
|
37
|
-
* (
|
|
36
|
+
* collection (WP-475 E4 / DEC-1345): fix each unchecked line of the returned checklist
|
|
37
|
+
* (TASK-590) — or, when the verdict was missing/stale,
|
|
38
38
|
* retry once the scheduled fresh judgment lands. No override route.
|
|
39
39
|
*/
|
|
40
40
|
readonly SEMANTIC_QUALITY_GATE_BLOCKED: "SEMANTIC_QUALITY_GATE_BLOCKED";
|
package/dist/lib/errors.js
CHANGED
|
@@ -36,8 +36,8 @@ export const ErrorCode = {
|
|
|
36
36
|
GROUNDING_GATE_BLOCKED: 'GROUNDING_GATE_BLOCKED',
|
|
37
37
|
/**
|
|
38
38
|
* Semantic quality gate refused a draft→active promotion on a gated
|
|
39
|
-
* collection (WP-475 E4 / DEC-1345): fix
|
|
40
|
-
* (
|
|
39
|
+
* collection (WP-475 E4 / DEC-1345): fix each unchecked line of the returned checklist
|
|
40
|
+
* (TASK-590) — or, when the verdict was missing/stale,
|
|
41
41
|
* retry once the scheduled fresh judgment lands. No override route.
|
|
42
42
|
*/
|
|
43
43
|
SEMANTIC_QUALITY_GATE_BLOCKED: 'SEMANTIC_QUALITY_GATE_BLOCKED',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionNotices.d.ts","sourceRoot":"","sources":["../../src/lib/sessionNotices.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACvD;0EACsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;sGAEsG;AACtG,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gFAAgF;IAChF,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"sessionNotices.d.ts","sourceRoot":"","sources":["../../src/lib/sessionNotices.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACvD;0EACsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;sGAEsG;AACtG,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gFAAgF;IAChF,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AA+BD,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAMjE;AAED,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAyE/D;;;+BAG+B;AAC/B,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAWhG"}
|
|
@@ -32,6 +32,9 @@ const VERB_COMMANDS = {
|
|
|
32
32
|
'question.answer': 'pb question answer <id> "<your answer>"',
|
|
33
33
|
'question.forceClose': 'pb question force-close <id> --reason "<why>"',
|
|
34
34
|
'question.list': 'pb question list',
|
|
35
|
+
// WP-798 TASK-589: the drafts-waiting notice's door is the web Bridge, not a pb command; its `change` already says
|
|
36
|
+
// "open /w/<slug>/bridge", so the verb maps to no command and the line carries no suffix.
|
|
37
|
+
'bridge.open': '',
|
|
35
38
|
};
|
|
36
39
|
export function noticeCommand(action) {
|
|
37
40
|
const template = VERB_COMMANDS[action.verb] ?? action.verb;
|
|
@@ -104,6 +107,11 @@ function formatQuestionAckGateBlock(notice) {
|
|
|
104
107
|
}
|
|
105
108
|
// D2a+D2b (TASK-413/414, WP-781): §10.3's adopt-discovery advisory (`formatAdoptDiscoveryLine`)
|
|
106
109
|
// is deleted along with `adopt` itself (DEC-1707/§10: only assign/answer/forceClose remain).
|
|
110
|
+
/** The generic one-liner; a verb mapped to no command (a web door) adds no " — <command>" suffix. */
|
|
111
|
+
function noticeLine(n) {
|
|
112
|
+
const command = noticeCommand(n.action);
|
|
113
|
+
return ` • ${safe(n.subject)} (${safe(n.change)})${command ? ` — ${command}` : ''}`;
|
|
114
|
+
}
|
|
107
115
|
/** One line per notice, oldest first (server already sorts producers' output this way) — except
|
|
108
116
|
* the question-ack-gate notice, which renders §7.5's full multi-line block instead of the
|
|
109
117
|
* generic one-liner (R23: the Notice-contract extension is additive, so every OTHER producer's
|
|
@@ -117,6 +125,6 @@ export function formatSessionNoticeLines(notices) {
|
|
|
117
125
|
// outcomes producer (questionOutcomesProducer.ts) builds these from workspace-controlled
|
|
118
126
|
// text (decline/force-close reasons, person and dependent-entry names) with no upstream
|
|
119
127
|
// sanitization, so this was the one remaining un-sanitized terminal-write path.
|
|
120
|
-
: [
|
|
128
|
+
: [noticeLine(n)]);
|
|
121
129
|
}
|
|
122
130
|
//# sourceMappingURL=sessionNotices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionNotices.js","sourceRoot":"","sources":["../../src/lib/sessionNotices.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAyC/C;;;;;;;;;;;;GAYG;AACH,MAAM,aAAa,GAA2B;IAC5C,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,6BAA6B;IAChD,gBAAgB,EAAE,wBAAwB;IAC1C,iBAAiB,EAAE,yBAAyB;IAC5C,iBAAiB,EAAE,yBAAyB;IAC5C,kBAAkB,EAAE,2CAA2C;IAC/D,iBAAiB,EAAE,yCAAyC;IAC5D,qBAAqB,EAAE,+CAA+C;IACtE,eAAe,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"sessionNotices.js","sourceRoot":"","sources":["../../src/lib/sessionNotices.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,13 @@ describe('noticeCommand — verb -> pb command mapping', () => {
|
|
|
24
24
|
});
|
|
25
25
|
});
|
|
26
26
|
describe('formatSessionNoticeLines', () => {
|
|
27
|
+
it('renders the drafts-waiting notice (TASK-589) with the Bridge door and nothing after it', () => {
|
|
28
|
+
const lines = formatSessionNoticeLines([notice({
|
|
29
|
+
source: 'drafts-waiting', type: 'drafts.waiting', subject: '3 drafts wait for your accept as Team Lead',
|
|
30
|
+
change: 'open /w/acme/bridge', action: { verb: 'bridge.open', args: { path: '/w/acme/bridge', count: 3, atLeast: false } },
|
|
31
|
+
})]);
|
|
32
|
+
expect(lines).toEqual([' • 3 drafts wait for your accept as Team Lead (open /w/acme/bridge)']);
|
|
33
|
+
});
|
|
27
34
|
it('returns [] for undefined/empty notices', () => {
|
|
28
35
|
expect(formatSessionNoticeLines(undefined)).toEqual([]);
|
|
29
36
|
expect(formatSessionNoticeLines([])).toEqual([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionNotices.test.js","sourceRoot":"","sources":["../../src/lib/sessionNotices.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessionNotices.test.js","sourceRoot":"","sources":["../../src/lib/sessionNotices.test.ts"],"names":[],"mappings":"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"}
|