@swarmdo/cli 1.50.0 → 1.54.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.
- package/README.md +3 -1
- package/dist/src/agent-bridge/bridge.d.ts +104 -0
- package/dist/src/agent-bridge/bridge.d.ts.map +1 -0
- package/dist/src/agent-bridge/bridge.js +133 -0
- package/dist/src/agent-bridge/bridge.js.map +1 -0
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +133 -1
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +7 -3
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/standup.d.ts +18 -0
- package/dist/src/commands/standup.d.ts.map +1 -0
- package/dist/src/commands/standup.js +116 -0
- package/dist/src/commands/standup.js.map +1 -0
- package/dist/src/commands/swarm.d.ts.map +1 -1
- package/dist/src/commands/swarm.js +29 -0
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +41 -1
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +166 -0
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +33 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +73 -38
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/standup/standup.d.ts +83 -0
- package/dist/src/standup/standup.d.ts.map +1 -0
- package/dist/src/standup/standup.js +157 -0
- package/dist/src/standup/standup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/vendor/cli-core/dist/src/index.js +1 -1
- package/vendor/cli-core/dist/src/index.js.map +1 -1
- package/vendor/neural/dist/flash-attention.d.ts +1 -1
- package/vendor/neural/dist/flash-attention.js +1 -1
- package/vendor/shared/dist/hooks/safety/git-commit.js +1 -1
- package/vendor/shared/dist/hooks/safety/git-commit.js.map +1 -1
- package/vendor/shared/dist/mcp/transport/http.d.ts.map +1 -1
- package/vendor/shared/dist/mcp/transport/http.js +1 -8
- package/vendor/shared/dist/mcp/transport/http.js.map +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* standup.ts — "what did I do?" recall from git history, weekend-aware.
|
|
3
|
+
*
|
|
4
|
+
* Ports the signature behavior of git-standup: list the commits since your last
|
|
5
|
+
* WORKING day, so on Monday you reach back to Friday (not merely yesterday).
|
|
6
|
+
* Power users juggling many repos + AI-agent sessions use it to re-orient at the
|
|
7
|
+
* start of a session and to answer the standup question in one command.
|
|
8
|
+
*
|
|
9
|
+
* Pure + deterministic: the grouping core takes the raw `git log --numstat`
|
|
10
|
+
* dump (control-char delimited, subject included) and a reference Date, and
|
|
11
|
+
* folds it into per-day buckets. No LLM, no network — the git subprocess lives
|
|
12
|
+
* in ../commands/standup.ts, so this module is fully fixture-testable.
|
|
13
|
+
* `resolveRenamePath` is reused from hotspots so renamed files fold correctly.
|
|
14
|
+
*
|
|
15
|
+
* Expected log format (control-char delimited):
|
|
16
|
+
* <SOH>%H<US>%aN<US>%aI<US>%s ← one header line per commit (subject last)
|
|
17
|
+
* <added>\t<deleted>\t<path> ← one numstat line per file ('-' = binary)
|
|
18
|
+
*/
|
|
19
|
+
export interface StandupCommit {
|
|
20
|
+
hash: string;
|
|
21
|
+
author: string;
|
|
22
|
+
/** epoch milliseconds, parsed from the ISO author date */
|
|
23
|
+
date: number;
|
|
24
|
+
subject: string;
|
|
25
|
+
/** insertions summed across the commit's files (binary counts as 0) */
|
|
26
|
+
added: number;
|
|
27
|
+
/** deletions summed across the commit's files */
|
|
28
|
+
deleted: number;
|
|
29
|
+
/** count of files touched by the commit */
|
|
30
|
+
files: number;
|
|
31
|
+
}
|
|
32
|
+
export interface DayBucket {
|
|
33
|
+
/** local calendar day, `YYYY-MM-DD` */
|
|
34
|
+
day: string;
|
|
35
|
+
/** commits on this day, newest first */
|
|
36
|
+
commits: StandupCommit[];
|
|
37
|
+
/** day totals */
|
|
38
|
+
added: number;
|
|
39
|
+
deleted: number;
|
|
40
|
+
files: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* How many days back to the last WORKING day (Mon–Fri), given a day-of-week
|
|
44
|
+
* (0=Sun..6=Sat). Weekend-aware, matching git-standup's signature behavior:
|
|
45
|
+
* Monday (1) → 3 (reach back to Friday)
|
|
46
|
+
* Sunday (0) → 2 (reach back to Friday)
|
|
47
|
+
* any other → 1 (yesterday)
|
|
48
|
+
* Pure integer core — no Date, no timezone. Out-of-range inputs are normalized
|
|
49
|
+
* into 0..6 so callers can pass raw arithmetic safely.
|
|
50
|
+
*/
|
|
51
|
+
export declare function daysToLastWorkingDay(dayOfWeek: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* The default weekend-aware window for a reference date. Reads the LOCAL
|
|
54
|
+
* day-of-week — a user's "last working day" is local to them. Pure w.r.t. the
|
|
55
|
+
* injected Date.
|
|
56
|
+
*/
|
|
57
|
+
export declare function sinceLastWorkingDay(refDate: Date): {
|
|
58
|
+
sinceDays: number;
|
|
59
|
+
};
|
|
60
|
+
/** Parse the control-char-delimited standup log dump into commits. Pure. */
|
|
61
|
+
export declare function parseStandupLog(raw: string): StandupCommit[];
|
|
62
|
+
/**
|
|
63
|
+
* Local `YYYY-MM-DD` for an epoch-ms instant. Uses LOCAL calendar components so
|
|
64
|
+
* the day matches the user's wall clock; round-trips with local-constructed
|
|
65
|
+
* dates regardless of the runner timezone. Pure.
|
|
66
|
+
*/
|
|
67
|
+
export declare function dayKey(ms: number): string;
|
|
68
|
+
/**
|
|
69
|
+
* Fold commits into per-day buckets — newest day first, and newest commit first
|
|
70
|
+
* within a day. Day boundaries are LOCAL. Pure (Array.sort is stable, so
|
|
71
|
+
* same-timestamp commits keep git-log order).
|
|
72
|
+
*/
|
|
73
|
+
export declare function groupByDay(commits: StandupCommit[]): DayBucket[];
|
|
74
|
+
/** Weekday name for a `YYYY-MM-DD` day key (local). '' if unparseable. Pure. */
|
|
75
|
+
export declare function weekdayOf(day: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Human-readable standup: a heading per day (weekday + date + counts) followed
|
|
78
|
+
* by each commit's abbreviated hash and subject, then a totals footer. Pure.
|
|
79
|
+
*/
|
|
80
|
+
export declare function formatStandup(buckets: DayBucket[], opts?: {
|
|
81
|
+
abbrev?: number;
|
|
82
|
+
}): string;
|
|
83
|
+
//# sourceMappingURL=standup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standup.d.ts","sourceRoot":"","sources":["../../../src/standup/standup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAExE;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAmC5D;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMzC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAkBhE;AAID,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAkB1F"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* standup.ts — "what did I do?" recall from git history, weekend-aware.
|
|
3
|
+
*
|
|
4
|
+
* Ports the signature behavior of git-standup: list the commits since your last
|
|
5
|
+
* WORKING day, so on Monday you reach back to Friday (not merely yesterday).
|
|
6
|
+
* Power users juggling many repos + AI-agent sessions use it to re-orient at the
|
|
7
|
+
* start of a session and to answer the standup question in one command.
|
|
8
|
+
*
|
|
9
|
+
* Pure + deterministic: the grouping core takes the raw `git log --numstat`
|
|
10
|
+
* dump (control-char delimited, subject included) and a reference Date, and
|
|
11
|
+
* folds it into per-day buckets. No LLM, no network — the git subprocess lives
|
|
12
|
+
* in ../commands/standup.ts, so this module is fully fixture-testable.
|
|
13
|
+
* `resolveRenamePath` is reused from hotspots so renamed files fold correctly.
|
|
14
|
+
*
|
|
15
|
+
* Expected log format (control-char delimited):
|
|
16
|
+
* <SOH>%H<US>%aN<US>%aI<US>%s ← one header line per commit (subject last)
|
|
17
|
+
* <added>\t<deleted>\t<path> ← one numstat line per file ('-' = binary)
|
|
18
|
+
*/
|
|
19
|
+
import { resolveRenamePath } from '../hotspots/hotspots.js';
|
|
20
|
+
const SOH = '\x01'; // start-of-commit marker (git --format=format:%x01...)
|
|
21
|
+
const US = '\x1f'; // field separator (%x1f)
|
|
22
|
+
/**
|
|
23
|
+
* How many days back to the last WORKING day (Mon–Fri), given a day-of-week
|
|
24
|
+
* (0=Sun..6=Sat). Weekend-aware, matching git-standup's signature behavior:
|
|
25
|
+
* Monday (1) → 3 (reach back to Friday)
|
|
26
|
+
* Sunday (0) → 2 (reach back to Friday)
|
|
27
|
+
* any other → 1 (yesterday)
|
|
28
|
+
* Pure integer core — no Date, no timezone. Out-of-range inputs are normalized
|
|
29
|
+
* into 0..6 so callers can pass raw arithmetic safely.
|
|
30
|
+
*/
|
|
31
|
+
export function daysToLastWorkingDay(dayOfWeek) {
|
|
32
|
+
const d = ((Math.trunc(dayOfWeek) % 7) + 7) % 7;
|
|
33
|
+
if (d === 1)
|
|
34
|
+
return 3; // Monday → Friday
|
|
35
|
+
if (d === 0)
|
|
36
|
+
return 2; // Sunday → Friday
|
|
37
|
+
return 1; // yesterday
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The default weekend-aware window for a reference date. Reads the LOCAL
|
|
41
|
+
* day-of-week — a user's "last working day" is local to them. Pure w.r.t. the
|
|
42
|
+
* injected Date.
|
|
43
|
+
*/
|
|
44
|
+
export function sinceLastWorkingDay(refDate) {
|
|
45
|
+
return { sinceDays: daysToLastWorkingDay(refDate.getDay()) };
|
|
46
|
+
}
|
|
47
|
+
/** Parse the control-char-delimited standup log dump into commits. Pure. */
|
|
48
|
+
export function parseStandupLog(raw) {
|
|
49
|
+
const commits = [];
|
|
50
|
+
let cur = null;
|
|
51
|
+
for (const line of raw.split('\n')) {
|
|
52
|
+
if (line === '')
|
|
53
|
+
continue;
|
|
54
|
+
if (line.startsWith(SOH)) {
|
|
55
|
+
const parts = line.slice(1).split(US);
|
|
56
|
+
const t = Date.parse(parts[2] ?? '');
|
|
57
|
+
cur = {
|
|
58
|
+
hash: parts[0] ?? '',
|
|
59
|
+
author: parts[1] ?? '',
|
|
60
|
+
date: Number.isNaN(t) ? 0 : t,
|
|
61
|
+
// subject is the last field; rejoin defensively in case it ever held a US.
|
|
62
|
+
subject: parts.slice(3).join(US),
|
|
63
|
+
added: 0,
|
|
64
|
+
deleted: 0,
|
|
65
|
+
files: 0,
|
|
66
|
+
};
|
|
67
|
+
commits.push(cur);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (!cur)
|
|
71
|
+
continue;
|
|
72
|
+
// numstat: added<TAB>deleted<TAB>path ('-' means binary → count as 0)
|
|
73
|
+
const tab1 = line.indexOf('\t');
|
|
74
|
+
const tab2 = line.indexOf('\t', tab1 + 1);
|
|
75
|
+
if (tab1 < 0 || tab2 < 0)
|
|
76
|
+
continue;
|
|
77
|
+
const a = line.slice(0, tab1);
|
|
78
|
+
const d = line.slice(tab1 + 1, tab2);
|
|
79
|
+
const path = resolveRenamePath(line.slice(tab2 + 1));
|
|
80
|
+
if (!path)
|
|
81
|
+
continue;
|
|
82
|
+
cur.added += a === '-' ? 0 : parseInt(a, 10) || 0;
|
|
83
|
+
cur.deleted += d === '-' ? 0 : parseInt(d, 10) || 0;
|
|
84
|
+
cur.files += 1;
|
|
85
|
+
}
|
|
86
|
+
return commits;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Local `YYYY-MM-DD` for an epoch-ms instant. Uses LOCAL calendar components so
|
|
90
|
+
* the day matches the user's wall clock; round-trips with local-constructed
|
|
91
|
+
* dates regardless of the runner timezone. Pure.
|
|
92
|
+
*/
|
|
93
|
+
export function dayKey(ms) {
|
|
94
|
+
const d = new Date(ms);
|
|
95
|
+
const y = d.getFullYear();
|
|
96
|
+
const m = String(d.getMonth() + 1).padStart(2, '0');
|
|
97
|
+
const day = String(d.getDate()).padStart(2, '0');
|
|
98
|
+
return `${y}-${m}-${day}`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Fold commits into per-day buckets — newest day first, and newest commit first
|
|
102
|
+
* within a day. Day boundaries are LOCAL. Pure (Array.sort is stable, so
|
|
103
|
+
* same-timestamp commits keep git-log order).
|
|
104
|
+
*/
|
|
105
|
+
export function groupByDay(commits) {
|
|
106
|
+
const map = new Map();
|
|
107
|
+
for (const c of commits) {
|
|
108
|
+
const key = dayKey(c.date);
|
|
109
|
+
let b = map.get(key);
|
|
110
|
+
if (!b) {
|
|
111
|
+
b = { day: key, commits: [], added: 0, deleted: 0, files: 0 };
|
|
112
|
+
map.set(key, b);
|
|
113
|
+
}
|
|
114
|
+
b.commits.push(c);
|
|
115
|
+
b.added += c.added;
|
|
116
|
+
b.deleted += c.deleted;
|
|
117
|
+
b.files += c.files;
|
|
118
|
+
}
|
|
119
|
+
const buckets = [...map.values()];
|
|
120
|
+
for (const b of buckets)
|
|
121
|
+
b.commits.sort((x, y) => y.date - x.date); // newest first
|
|
122
|
+
buckets.sort((x, y) => (x.day < y.day ? 1 : x.day > y.day ? -1 : 0)); // newest day first
|
|
123
|
+
return buckets;
|
|
124
|
+
}
|
|
125
|
+
const WEEKDAY = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
126
|
+
/** Weekday name for a `YYYY-MM-DD` day key (local). '' if unparseable. Pure. */
|
|
127
|
+
export function weekdayOf(day) {
|
|
128
|
+
const [y, m, d] = day.split('-').map(Number);
|
|
129
|
+
if (!y || !m || !d)
|
|
130
|
+
return '';
|
|
131
|
+
return WEEKDAY[new Date(y, m - 1, d).getDay()] ?? '';
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Human-readable standup: a heading per day (weekday + date + counts) followed
|
|
135
|
+
* by each commit's abbreviated hash and subject, then a totals footer. Pure.
|
|
136
|
+
*/
|
|
137
|
+
export function formatStandup(buckets, opts = {}) {
|
|
138
|
+
if (buckets.length === 0)
|
|
139
|
+
return 'no commits in the window — nothing to report';
|
|
140
|
+
const abbrev = opts.abbrev ?? 9;
|
|
141
|
+
const totalCommits = buckets.reduce((n, b) => n + b.commits.length, 0);
|
|
142
|
+
const lines = [];
|
|
143
|
+
for (const b of buckets) {
|
|
144
|
+
const wd = weekdayOf(b.day);
|
|
145
|
+
const plural = b.commits.length === 1 ? '' : 's';
|
|
146
|
+
lines.push(`${wd ? wd + ', ' : ''}${b.day} — ${b.commits.length} commit${plural}, +${b.added}/-${b.deleted}`);
|
|
147
|
+
for (const c of b.commits) {
|
|
148
|
+
lines.push(` ${c.hash.slice(0, abbrev)} ${c.subject}`);
|
|
149
|
+
}
|
|
150
|
+
lines.push('');
|
|
151
|
+
}
|
|
152
|
+
const dp = buckets.length === 1 ? '' : 's';
|
|
153
|
+
const cp = totalCommits === 1 ? '' : 's';
|
|
154
|
+
lines.push(`${totalCommits} commit${cp} across ${buckets.length} day${dp}`);
|
|
155
|
+
return lines.join('\n');
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=standup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standup.js","sourceRoot":"","sources":["../../../src/standup/standup.ts"],"names":[],"mappings":"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"}
|