flowcollab 0.2.2 → 0.2.3
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/bin/standup.mjs +10 -5
- package/package.json +1 -1
package/bin/standup.mjs
CHANGED
|
@@ -24,6 +24,11 @@ function sanitizeText(s, maxLen = 200) {
|
|
|
24
24
|
|
|
25
25
|
function pad(s, n) { return String(s).padEnd(n).slice(0, n); }
|
|
26
26
|
|
|
27
|
+
const TERM_COLS = process.stdout.columns || 120;
|
|
28
|
+
// Reserve: 2 indent + 7 ref + 2 gap + 14 actor + 2 gap = 27 fixed chars
|
|
29
|
+
const TITLE_W = Math.max(20, TERM_COLS - 29);
|
|
30
|
+
const SHORT_TITLE_W = Math.max(20, TERM_COLS - 37); // agents have longer prefix
|
|
31
|
+
|
|
27
32
|
async function main() {
|
|
28
33
|
const sinceHours = Math.max(1, parseInt(arg('since') || '24'));
|
|
29
34
|
const since = new Date(Date.now() - sinceHours * 3600000);
|
|
@@ -67,7 +72,7 @@ async function main() {
|
|
|
67
72
|
for (const ev of doneItems) {
|
|
68
73
|
const t = taskById.get(ev.task_id);
|
|
69
74
|
const ref = t ? `#${t.issue_num ?? t.id.slice(0, 6)}` : `#${ev.task_id.slice(0, 6)}`;
|
|
70
|
-
out.push(` ${ref} ${pad(ev.actor_id || '?', 14)} ${sanitizeText(t?.title ?? '(unknown)',
|
|
75
|
+
out.push(` ${ref} ${pad(ev.actor_id || '?', 14)} ${sanitizeText(t?.title ?? '(unknown)', TITLE_W)}`);
|
|
71
76
|
}
|
|
72
77
|
} else {
|
|
73
78
|
out.push(' (nothing closed)');
|
|
@@ -77,7 +82,7 @@ async function main() {
|
|
|
77
82
|
out.push(`[in progress — ${inProgress.length}]`);
|
|
78
83
|
if (inProgress.length) {
|
|
79
84
|
for (const t of inProgress) {
|
|
80
|
-
out.push(` #${t.issue_num ?? t.id.slice(0, 6)} ${pad(t.assignee_id || 'unassigned', 14)} ${sanitizeText(t.title,
|
|
85
|
+
out.push(` #${t.issue_num ?? t.id.slice(0, 6)} ${pad(t.assignee_id || 'unassigned', 14)} ${sanitizeText(t.title, TITLE_W)}`);
|
|
81
86
|
}
|
|
82
87
|
} else {
|
|
83
88
|
out.push(' (nothing in progress)');
|
|
@@ -87,7 +92,7 @@ async function main() {
|
|
|
87
92
|
if (inReview.length) {
|
|
88
93
|
out.push(`[in review — ${inReview.length}]`);
|
|
89
94
|
for (const t of inReview) {
|
|
90
|
-
out.push(` #${t.issue_num ?? t.id.slice(0, 6)} ${pad(t.assignee_id || 'unassigned', 14)} ${sanitizeText(t.title,
|
|
95
|
+
out.push(` #${t.issue_num ?? t.id.slice(0, 6)} ${pad(t.assignee_id || 'unassigned', 14)} ${sanitizeText(t.title, TITLE_W)}`);
|
|
91
96
|
}
|
|
92
97
|
out.push('');
|
|
93
98
|
}
|
|
@@ -96,7 +101,7 @@ async function main() {
|
|
|
96
101
|
out.push(`[active agents — ${agents.length} online]`);
|
|
97
102
|
for (const a of agents) {
|
|
98
103
|
const t = a.task_id ? taskById.get(a.task_id) : null;
|
|
99
|
-
const taskPart = t ? `on #${t.issue_num ?? t.id.slice(0, 6)} "${sanitizeText(t.title,
|
|
104
|
+
const taskPart = t ? `on #${t.issue_num ?? t.id.slice(0, 6)} "${sanitizeText(t.title, SHORT_TITLE_W)}"` : 'idle';
|
|
100
105
|
const flag = a.actor_id === myId ? ' ← you' : '';
|
|
101
106
|
out.push(` ${pad(a.actor_id, 16)} ${taskPart}${flag}`);
|
|
102
107
|
}
|
|
@@ -106,7 +111,7 @@ async function main() {
|
|
|
106
111
|
out.push(`[decisions pending — ${decisions.length}]`);
|
|
107
112
|
if (decisions.length) {
|
|
108
113
|
for (const d of decisions.slice(0, 5)) {
|
|
109
|
-
out.push(` #${d.id.slice(0, 6)} [${d.confidence}] ${sanitizeText(d.proposal_title,
|
|
114
|
+
out.push(` #${d.id.slice(0, 6)} [${d.confidence}] ${sanitizeText(d.proposal_title, TITLE_W)}`);
|
|
110
115
|
}
|
|
111
116
|
if (decisions.length > 5) out.push(` … and ${decisions.length - 5} more`);
|
|
112
117
|
} else {
|