@productbrain/cli 0.1.0-beta.8626 → 0.1.0-beta.8637
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/formatters/__tests__/orient-ruleLists.test.js +2 -2
- package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -1
- package/dist/formatters/session-feedback.test.js +9 -7
- package/dist/formatters/session-feedback.test.js.map +1 -1
- package/dist/lib/ruleListRender.d.ts +6 -6
- package/dist/lib/ruleListRender.d.ts.map +1 -1
- package/dist/lib/ruleListRender.js +14 -13
- package/dist/lib/ruleListRender.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@ describe('formatOrient — rule lists (TASK-436, DEC-1774)', () => {
|
|
|
22
22
|
it('renders Everyone/Team/Role sections with owner/team and an over-cap trailer', () => {
|
|
23
23
|
const view = makeView({
|
|
24
24
|
ruleLists: {
|
|
25
|
-
everyone: { rows: [
|
|
25
|
+
everyone: { rows: ['RULE-1', 'RULE-8', 'RULE-9'].map((entryId) => ({ entryId, bucket: 'everyone', ownerRoleId: 'ROLE-1' })), overCap: 2 },
|
|
26
26
|
team: { rows: [{ entryId: 'RULE-2', bucket: 'team', ownerRoleId: 'ROLE-2', teamId: 'TEAM-1' }], overCap: 0 },
|
|
27
27
|
role: { rows: [], overCap: 0 },
|
|
28
28
|
unassigned: 0,
|
|
@@ -32,7 +32,7 @@ describe('formatOrient — rule lists (TASK-436, DEC-1774)', () => {
|
|
|
32
32
|
const out = formatOrient(view);
|
|
33
33
|
expect(out).toContain('## Rules');
|
|
34
34
|
expect(out).toContain('RULE-1 — owner ROLE-1');
|
|
35
|
-
expect(out).toContain('(
|
|
35
|
+
expect(out).toContain('(3 rules on a list capped at 1: retire 2 to fit; until then accept refuses new rules here.)');
|
|
36
36
|
expect(out).toContain('RULE-2 — owner ROLE-2 (team TEAM-1)');
|
|
37
37
|
// role bucket is empty — no "Role:" header for it.
|
|
38
38
|
expect(out).not.toContain(' Role:');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orient-ruleLists.test.js","sourceRoot":"","sources":["../../../src/formatters/__tests__/orient-ruleLists.test.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,yEAAyE;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAEhF,SAAS,QAAQ,CAAC,YAAiC,EAAE;IACnD,OAAO;QACL,gBAAgB,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC;YACzE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC;SACvF;QACD,kBAAkB,EAAE,EAAE;QACtB,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC/E,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,IAAI;QACnB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,IAAI,GAAG,QAAQ,CAAC;YACpB,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"orient-ruleLists.test.js","sourceRoot":"","sources":["../../../src/formatters/__tests__/orient-ruleLists.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ describe('session feedback discovery', () => {
|
|
|
54
54
|
const withRules = formatSessionStart(base, null, {
|
|
55
55
|
ruleLists: {
|
|
56
56
|
everyone: { rows: [{ entryId: 'RULE-1', bucket: 'everyone', ownerRoleId: 'ROLE-1' }], overCap: 0 },
|
|
57
|
-
team: { rows: [{ entryId: 'RULE-2', bucket: 'team', ownerRoleId: 'ROLE-2', teamId: 'TEAM-1' }], overCap:
|
|
57
|
+
team: { rows: [{ entryId: 'RULE-2', bucket: 'team', ownerRoleId: 'ROLE-2', teamId: 'TEAM-1' }], overCap: 0 },
|
|
58
58
|
role: { rows: [], overCap: 0 },
|
|
59
59
|
unassigned: 0,
|
|
60
60
|
truncated: false,
|
|
@@ -63,28 +63,30 @@ describe('session feedback discovery', () => {
|
|
|
63
63
|
expect(withRules).toContain('Rules:');
|
|
64
64
|
expect(withRules).toContain('RULE-1 — owner ROLE-1');
|
|
65
65
|
expect(withRules).toContain('RULE-2 — owner ROLE-2 (team TEAM-1)');
|
|
66
|
-
expect(withRules).toContain('(+1 more, capped)');
|
|
67
66
|
expect(formatSessionStart(base)).not.toContain('Rules:');
|
|
68
67
|
});
|
|
69
68
|
// TASK-551 (DEC-1888): the live serve prints each rule as one sentence with its why and names
|
|
70
69
|
// the rules the cap left out.
|
|
71
|
-
it('renders each served rule as one sentence with its why, and
|
|
70
|
+
it('renders each served rule as one sentence with its why, and an over-cap list whole with one overflow line', () => {
|
|
72
71
|
const out = formatSessionStart({
|
|
73
72
|
sessionId: 'session-1', workspaceId: 'workspace-1', workspaceName: 'Product Brain',
|
|
74
73
|
startedAt: '2026-07-16T12:00:00Z', entriesCaptured: [],
|
|
75
74
|
}, null, {
|
|
76
75
|
ruleLists: {
|
|
77
76
|
everyone: {
|
|
78
|
-
rows: [
|
|
79
|
-
|
|
77
|
+
rows: [
|
|
78
|
+
{ entryId: 'RULE-3', bucket: 'everyone', ownerRoleId: 'ROL-23', ownerRoleName: 'Team Lead', name: 'Every write names its owner', why: 'An unowned write has nobody to ask.', date: '2026-10-01', confirmedBy: 'Randy' },
|
|
79
|
+
{ entryId: 'RULE-657', bucket: 'everyone', ownerRoleId: 'ROL-23', ownerRoleName: 'Team Lead', name: 'Ship small', date: '2026-10-02' },
|
|
80
|
+
],
|
|
81
|
+
overCap: 1,
|
|
80
82
|
},
|
|
81
83
|
team: null,
|
|
82
|
-
role: { rows: [], overCap: 0
|
|
84
|
+
role: { rows: [], overCap: 0 },
|
|
83
85
|
unassigned: 0,
|
|
84
86
|
truncated: false,
|
|
85
87
|
},
|
|
86
88
|
});
|
|
87
|
-
expect(out).toContain('Rules:\nEveryone:\n - RULE-3 — Every write names its owner. Why: An unowned write has nobody to ask. — Team Lead, 2026-10-01\n
|
|
89
|
+
expect(out).toContain('Rules:\nEveryone:\n - RULE-3 — Every write names its owner. Why: An unowned write has nobody to ask. — Team Lead, 2026-10-01\n - RULE-657 — Ship small. — Team Lead, 2026-10-02\n (2 rules on a list capped at 1: retire 1 to fit; until then accept refuses new rules here.)');
|
|
88
90
|
});
|
|
89
91
|
it('keeps the invite on the already-active status report (live gap: it had no hint at all)', () => {
|
|
90
92
|
// The already-active branch is deliberately kernel-call-free (offline-safe), so the vendor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-feedback.test.js","sourceRoot":"","sources":["../../src/formatters/session-feedback.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-feedback.test.js","sourceRoot":"","sources":["../../src/formatters/session-feedback.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,8 @@ export interface RuleListRenderRow {
|
|
|
41
41
|
}
|
|
42
42
|
export interface RuleListRenderBucket {
|
|
43
43
|
rows: RuleListRenderRow[];
|
|
44
|
+
/** How many rules the list holds beyond its cap; every one of them is in `rows` (DEC-1890). */
|
|
44
45
|
overCap: number;
|
|
45
|
-
/** TASK-551: the rules the cap left out, by entryId; absent from an older server. */
|
|
46
|
-
overCapEntryIds?: string[];
|
|
47
46
|
}
|
|
48
47
|
export interface RuleListsRenderView {
|
|
49
48
|
everyone: RuleListRenderBucket;
|
|
@@ -51,15 +50,16 @@ export interface RuleListsRenderView {
|
|
|
51
50
|
role: RuleListRenderBucket;
|
|
52
51
|
unassigned: number;
|
|
53
52
|
truncated: boolean;
|
|
53
|
+
/** True when some rows carry no owner or verifier name (the server's per-serve lookup bound). */
|
|
54
|
+
namesTruncated?: boolean;
|
|
54
55
|
}
|
|
55
56
|
/** One line per served rule, the ONE place it is formatted (TASK-551, DEC-1888): a live serve
|
|
56
57
|
* prints "RULE-n — <name>. Why: <why> — <Role>, <date>"; a row with no name (a served-log read)
|
|
57
58
|
* prints its ids. `—` stands for an owner the source does not carry, never a guessed one. */
|
|
58
59
|
export declare function formatRuleListRow(row: RuleListRenderRow): string;
|
|
59
|
-
/** One
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* cap ever applied. Empty/null bucket renders nothing (never an empty header). */
|
|
60
|
+
/** One list ("Everyone"/"Team"/"Role") as a label line + one bullet per served row (every rule on
|
|
61
|
+
* the list, DEC-1890) + one overflow line when the list is above its cap. `truncated` (finding 1)
|
|
62
|
+
* makes the counts a floor, since the read may have missed rows. Empty/null bucket renders nothing. */
|
|
63
63
|
export declare function formatRuleListBucketLines(label: string, bucket: RuleListRenderBucket | null | undefined, truncated: boolean): string[];
|
|
64
64
|
/** The Everyone bucket + the two trailers — the workspace-wide subset of the served rule lists,
|
|
65
65
|
* safe to render into a file shared by every session in a worktree (context.md). Team and Role
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleListRender.d.ts","sourceRoot":"","sources":["../../src/lib/ruleListRender.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ruleListRender.d.ts","sourceRoot":"","sources":["../../src/lib/ruleListRender.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,+FAA+F;IAC/F,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iGAAiG;IACjG,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAeD;;8FAE8F;AAC9F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAWhE;AAED;;wGAEwG;AACxG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAUtI;AAuBD;;8FAE8F;AAC9F,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,mBAAmB,GAAG,SAAS,GAAG,MAAM,EAAE,CAKjG;AAED;gEACgE;AAChE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,GAAG,SAAS,GAAG,MAAM,EAAE,CASzF"}
|
|
@@ -29,33 +29,34 @@ export function formatRuleListRow(row) {
|
|
|
29
29
|
const date = row.date ? `, ${sanitizeRuleListField(row.date)}` : '';
|
|
30
30
|
return `${entryId} — ${sentence}${why} — ${role}${team}${date}${servedAt}`;
|
|
31
31
|
}
|
|
32
|
-
/** One
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* cap ever applied. Empty/null bucket renders nothing (never an empty header). */
|
|
32
|
+
/** One list ("Everyone"/"Team"/"Role") as a label line + one bullet per served row (every rule on
|
|
33
|
+
* the list, DEC-1890) + one overflow line when the list is above its cap. `truncated` (finding 1)
|
|
34
|
+
* makes the counts a floor, since the read may have missed rows. Empty/null bucket renders nothing. */
|
|
36
35
|
export function formatRuleListBucketLines(label, bucket, truncated) {
|
|
37
36
|
if (!bucket || bucket.rows.length === 0)
|
|
38
37
|
return [];
|
|
39
38
|
const lines = [`${label}:`, ...bucket.rows.map((r) => ` - ${formatRuleListRow(r)}`)];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
lines.push(` (
|
|
45
|
-
|
|
46
|
-
lines.push(` (${truncated ? 'at least ' : ''}+${bucket.overCap} more, capped)`);
|
|
39
|
+
// TASK-557 (DEC-1890): every rule is served; a list past its cap gets one overflow line.
|
|
40
|
+
if (bucket.overCap > 0) {
|
|
41
|
+
const cap = bucket.rows.length - bucket.overCap;
|
|
42
|
+
const atLeast = truncated ? 'at least ' : '';
|
|
43
|
+
lines.push(` (${atLeast}${bucket.rows.length} rules on a list capped at ${cap}: retire ${atLeast}${bucket.overCap} to fit; until then accept refuses new rules here.)`);
|
|
44
|
+
}
|
|
47
45
|
return lines;
|
|
48
46
|
}
|
|
49
47
|
/** The two finding-1 trailers, shared by every rule-list line-set regardless of which buckets
|
|
50
48
|
* render alongside them. `unassigned` counts every Current rule on no list (TASK-550); it is
|
|
51
49
|
* counted (Round 2 fix, PRRT_kwDORS4ils6mKtav) from the SAME possibly-incomplete read
|
|
52
|
-
* `truncated` already qualifies —
|
|
53
|
-
*
|
|
50
|
+
* * `truncated` already qualifies — a rule this read never saw could also be unassigned, so the
|
|
51
|
+
* true count could be larger; the overflow line's "at least" mirrors it. */
|
|
54
52
|
function formatRuleListTrailers(ruleLists) {
|
|
55
53
|
const lines = [];
|
|
56
54
|
if (ruleLists.truncated) {
|
|
57
55
|
lines.push('(Some Current rules may be missing from these lists — the underlying read was truncated.)');
|
|
58
56
|
}
|
|
57
|
+
if (ruleLists.namesTruncated) {
|
|
58
|
+
lines.push('(Some rules show no owner or verifier: this serve looked up at most 100 distinct names.)');
|
|
59
|
+
}
|
|
59
60
|
if (ruleLists.unassigned > 0) {
|
|
60
61
|
const atLeast = ruleLists.truncated ? 'at least ' : '';
|
|
61
62
|
lines.push(`(${atLeast}${ruleLists.unassigned} current rule(s) on no list reach no agent: a rule needs applies and one owner role; ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleListRender.js","sourceRoot":"","sources":["../../src/lib/ruleListRender.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,gEAAgE;AAChE,uDAAuD;
|
|
1
|
+
{"version":3,"file":"ruleListRender.js","sourceRoot":"","sources":["../../src/lib/ruleListRender.ts"],"names":[],"mappings":"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"}
|