youmd 0.13.12 → 0.13.14
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/commands/chat.d.ts +5 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +137 -21
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/doctor.d.ts +33 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +69 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/founder.js +2 -2
- package/dist/commands/founder.js.map +1 -1
- package/dist/commands/push.d.ts +4 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +30 -6
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +7 -2
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/sync.d.ts +5 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +120 -19
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +24 -1
- package/dist/commands/tasks.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api-failure.d.ts +19 -0
- package/dist/lib/api-failure.d.ts.map +1 -0
- package/dist/lib/api-failure.js +67 -0
- package/dist/lib/api-failure.js.map +1 -0
- package/dist/lib/api.d.ts +22 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +4 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/chat-errors.d.ts +47 -0
- package/dist/lib/chat-errors.d.ts.map +1 -0
- package/dist/lib/chat-errors.js +151 -0
- package/dist/lib/chat-errors.js.map +1 -0
- package/dist/lib/daemon.d.ts +13 -1
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/daemon.js +41 -2
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +53 -7
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/stream.d.ts.map +1 -1
- package/dist/lib/stream.js +2 -1
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/workspace-brief.d.ts +91 -0
- package/dist/lib/workspace-brief.d.ts.map +1 -0
- package/dist/lib/workspace-brief.js +402 -0
- package/dist/lib/workspace-brief.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +125 -22
- package/dist/mcp/server.js.map +1 -1
- package/native/prebuilds/darwin-universal/youmd_safe_open.node +0 -0
- package/package.json +1 -1
- package/scripts/skillstack-sync/com.you.context-sync.plist +6 -6
- package/scripts/skillstack-sync/com.you.identity-sync.plist +6 -6
- package/scripts/skillstack-sync/com.you.orchestrator-watch.plist +7 -6
- package/scripts/skillstack-sync/com.you.realtime-sync.plist +7 -6
- package/scripts/skillstack-sync/com.you.skillstack-sync.plist +6 -6
- package/scripts/skillstack-sync/context-sync.sh +46 -6
- package/scripts/skillstack-sync/install-daemons.sh +42 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GIT_FIELD_SEP = exports.defaultExec = void 0;
|
|
37
|
+
exports.collectRepoActivity = collectRepoActivity;
|
|
38
|
+
exports.readCurrentStateHeadline = readCurrentStateHeadline;
|
|
39
|
+
exports.readOpenItems = readOpenItems;
|
|
40
|
+
exports.describeAge = describeAge;
|
|
41
|
+
exports.buildProjectBrief = buildProjectBrief;
|
|
42
|
+
exports.readHomeAgentDocs = readHomeAgentDocs;
|
|
43
|
+
exports.buildWorkspaceBrief = buildWorkspaceBrief;
|
|
44
|
+
exports.buildStrongestMove = buildStrongestMove;
|
|
45
|
+
exports.formatProjectActivityForTool = formatProjectActivityForTool;
|
|
46
|
+
/**
|
|
47
|
+
* Fresh workspace brief — what is actually being worked on, right now.
|
|
48
|
+
*
|
|
49
|
+
* The You Agent used to open with a stored, weeks-old picture of each project
|
|
50
|
+
* ("bamf.ai heading to public beta") plus the first TODO line as the "next
|
|
51
|
+
* strongest move". This module reads the ground truth instead: git activity
|
|
52
|
+
* (branch, recent commits, dirty files), the current-state / TODO headlines,
|
|
53
|
+
* and the agent docs that steer every coding agent in that repo (AGENTS.md,
|
|
54
|
+
* CLAUDE.md, project-context/). It also surfaces the machine-level agent docs
|
|
55
|
+
* (~/.claude/CLAUDE.md, ~/AGENTS.md, ~/.codex/AGENTS.md) so the agent knows
|
|
56
|
+
* the operator's global directives, not just the ~/.you bundle.
|
|
57
|
+
*
|
|
58
|
+
* Everything here is read-only and best-effort: a missing git binary, a
|
|
59
|
+
* non-repo directory, or an unreadable file degrades to "unknown", never to a
|
|
60
|
+
* thrown error. `exec` is injectable so tests never shell out.
|
|
61
|
+
*/
|
|
62
|
+
const fs = __importStar(require("fs"));
|
|
63
|
+
const os = __importStar(require("os"));
|
|
64
|
+
const path = __importStar(require("path"));
|
|
65
|
+
const child_process = __importStar(require("child_process"));
|
|
66
|
+
const DEFAULT_TIMEOUT_MS = 4000;
|
|
67
|
+
const defaultExec = (cmd, args, cwd) => {
|
|
68
|
+
try {
|
|
69
|
+
const result = child_process.spawnSync(cmd, args, {
|
|
70
|
+
cwd,
|
|
71
|
+
encoding: "utf-8",
|
|
72
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
73
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
74
|
+
env: { ...process.env, GIT_TERMINAL_PROMPT: "0", LC_ALL: "C" },
|
|
75
|
+
});
|
|
76
|
+
if (result.error || result.status !== 0)
|
|
77
|
+
return { ok: false, stdout: "" };
|
|
78
|
+
return { ok: true, stdout: result.stdout ?? "" };
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return { ok: false, stdout: "" };
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.defaultExec = defaultExec;
|
|
85
|
+
/** Unit separator: never appears in commit subjects, so it is a safe field delimiter. */
|
|
86
|
+
exports.GIT_FIELD_SEP = "";
|
|
87
|
+
function collectRepoActivity(projectDir, opts = {}) {
|
|
88
|
+
const exec = opts.exec ?? exports.defaultExec;
|
|
89
|
+
const now = opts.now ?? Date.now();
|
|
90
|
+
const maxCommits = opts.maxCommits ?? 8;
|
|
91
|
+
const empty = { isRepo: false, commits: [], commitsLast7d: 0, dirtyFiles: 0, lastCommitFiles: [] };
|
|
92
|
+
if (!fs.existsSync(path.join(projectDir, ".git")))
|
|
93
|
+
return empty;
|
|
94
|
+
const branchRes = exec("git", ["rev-parse", "--abbrev-ref", "HEAD"], projectDir);
|
|
95
|
+
const branch = branchRes.ok ? branchRes.stdout.trim() || undefined : undefined;
|
|
96
|
+
const S = exports.GIT_FIELD_SEP;
|
|
97
|
+
const logRes = exec("git", ["log", `-n${Math.max(maxCommits, 20)}`, `--format=%h${S}%s${S}%cr${S}%an${S}%ct`, "--no-merges"], projectDir);
|
|
98
|
+
const commits = [];
|
|
99
|
+
if (logRes.ok) {
|
|
100
|
+
for (const line of logRes.stdout.split("\n")) {
|
|
101
|
+
const [hash, subject, age, author, ct] = line.split(S);
|
|
102
|
+
if (!hash || !subject)
|
|
103
|
+
continue;
|
|
104
|
+
const at = Number(ct) * 1000;
|
|
105
|
+
commits.push({
|
|
106
|
+
hash,
|
|
107
|
+
subject: subject.trim(),
|
|
108
|
+
age: (age || "").trim(),
|
|
109
|
+
author: (author || "").trim(),
|
|
110
|
+
at: Number.isFinite(at) ? at : 0,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const weekAgo = now - 7 * 24 * 60 * 60 * 1000;
|
|
115
|
+
const commitsLast7d = commits.filter((c) => c.at >= weekAgo).length;
|
|
116
|
+
const statusRes = exec("git", ["status", "--porcelain", "--untracked-files=normal"], projectDir);
|
|
117
|
+
const dirtyFiles = statusRes.ok ? statusRes.stdout.split("\n").filter((l) => l.trim()).length : 0;
|
|
118
|
+
let lastCommitFiles = [];
|
|
119
|
+
if (commits.length > 0) {
|
|
120
|
+
const showRes = exec("git", ["show", "--name-only", "--format=", commits[0].hash], projectDir);
|
|
121
|
+
if (showRes.ok) {
|
|
122
|
+
lastCommitFiles = showRes.stdout.split("\n").map((l) => l.trim()).filter(Boolean).slice(0, 8);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
isRepo: true,
|
|
127
|
+
branch,
|
|
128
|
+
commits: commits.slice(0, maxCommits),
|
|
129
|
+
commitsLast7d,
|
|
130
|
+
dirtyFiles,
|
|
131
|
+
lastCommitAt: commits[0]?.at,
|
|
132
|
+
lastCommitFiles,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function readHead(filePath, maxChars) {
|
|
136
|
+
try {
|
|
137
|
+
if (!fs.existsSync(filePath))
|
|
138
|
+
return null;
|
|
139
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
140
|
+
// Drop YAML frontmatter and leading blank lines so the excerpt starts on content.
|
|
141
|
+
const body = raw.replace(/^---[\s\S]*?---\s*/m, "").trim();
|
|
142
|
+
if (!body)
|
|
143
|
+
return null;
|
|
144
|
+
return body.length > maxChars ? `${body.slice(0, maxChars).trimEnd()}...` : body;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** First meaningful lines of CURRENT_STATE.md, collapsed to one paragraph. */
|
|
151
|
+
function readCurrentStateHeadline(projectDir, maxChars = 420) {
|
|
152
|
+
const candidates = [
|
|
153
|
+
path.join(projectDir, "project-context", "CURRENT_STATE.md"),
|
|
154
|
+
path.join(projectDir, "project-context", "current-state.md"),
|
|
155
|
+
path.join(projectDir, ".you", "project-context", "CURRENT_STATE.md"),
|
|
156
|
+
];
|
|
157
|
+
for (const file of candidates) {
|
|
158
|
+
const head = readHead(file, 4000);
|
|
159
|
+
if (!head)
|
|
160
|
+
continue;
|
|
161
|
+
const lines = head
|
|
162
|
+
.split("\n")
|
|
163
|
+
.map((l) => l.replace(/^#+\s*/, "").replace(/^[-*]\s+/, "").trim())
|
|
164
|
+
.filter((l) => l && !/^(current state|status)$/i.test(l));
|
|
165
|
+
const joined = lines.slice(0, 6).join(" ");
|
|
166
|
+
if (!joined)
|
|
167
|
+
continue;
|
|
168
|
+
return joined.length > maxChars ? `${joined.slice(0, maxChars).trimEnd()}...` : joined;
|
|
169
|
+
}
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
/** Open checkbox / TODO-style items from TODO.md and feature-requests-active.md. */
|
|
173
|
+
function readOpenItems(projectDir, maxItems = 4) {
|
|
174
|
+
const files = [
|
|
175
|
+
path.join(projectDir, "project-context", "TODO.md"),
|
|
176
|
+
path.join(projectDir, "project-context", "feature-requests-active.md"),
|
|
177
|
+
path.join(projectDir, "TODO.md"),
|
|
178
|
+
];
|
|
179
|
+
const items = [];
|
|
180
|
+
const seen = new Set();
|
|
181
|
+
for (const file of files) {
|
|
182
|
+
const head = readHead(file, 12000);
|
|
183
|
+
if (!head)
|
|
184
|
+
continue;
|
|
185
|
+
for (const raw of head.split("\n")) {
|
|
186
|
+
const line = raw.trim();
|
|
187
|
+
const open = line.match(/^[-*]\s+\[[\s?~-]\]\s+(.+)$/);
|
|
188
|
+
const tagged = line.match(/^[-*]\s+(?:TODO|P0|P1|BLOCKED|OPEN|NEXT|IN PROGRESS|ACTIVE)[:\s-]+(.+)$/i);
|
|
189
|
+
const candidate = (open?.[1] || tagged?.[1] || "").replace(/\s+/g, " ").trim();
|
|
190
|
+
if (!candidate || candidate.length < 8)
|
|
191
|
+
continue;
|
|
192
|
+
const key = candidate.toLowerCase();
|
|
193
|
+
if (seen.has(key))
|
|
194
|
+
continue;
|
|
195
|
+
seen.add(key);
|
|
196
|
+
items.push(candidate.length > 160 ? `${candidate.slice(0, 157)}...` : candidate);
|
|
197
|
+
if (items.length >= maxItems)
|
|
198
|
+
return items;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return items;
|
|
202
|
+
}
|
|
203
|
+
function countMarkdown(dir) {
|
|
204
|
+
try {
|
|
205
|
+
if (!fs.existsSync(dir))
|
|
206
|
+
return 0;
|
|
207
|
+
return fs.readdirSync(dir).filter((f) => f.toLowerCase().endsWith(".md")).length;
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function describeAge(fromMs, now) {
|
|
214
|
+
if (!fromMs)
|
|
215
|
+
return "unknown";
|
|
216
|
+
const diff = Math.max(0, now - fromMs);
|
|
217
|
+
const m = Math.floor(diff / 60000);
|
|
218
|
+
if (m < 1)
|
|
219
|
+
return "just now";
|
|
220
|
+
if (m < 60)
|
|
221
|
+
return `${m}m ago`;
|
|
222
|
+
const h = Math.round(m / 60);
|
|
223
|
+
if (h < 48)
|
|
224
|
+
return `${h}h ago`;
|
|
225
|
+
const d = Math.round(h / 24);
|
|
226
|
+
if (d < 14)
|
|
227
|
+
return `${d}d ago`;
|
|
228
|
+
const w = Math.round(d / 7);
|
|
229
|
+
if (w < 9)
|
|
230
|
+
return `${w}w ago`;
|
|
231
|
+
return `${Math.round(d / 30)}mo ago`;
|
|
232
|
+
}
|
|
233
|
+
function buildProjectBrief(project, opts = {}) {
|
|
234
|
+
const now = opts.now ?? Date.now();
|
|
235
|
+
const activity = collectRepoActivity(project.projectDir, { exec: opts.exec, now });
|
|
236
|
+
const currentState = readCurrentStateHeadline(project.projectDir);
|
|
237
|
+
const openItems = readOpenItems(project.projectDir);
|
|
238
|
+
const agentDocs = ["AGENTS.md", "CLAUDE.md", ".cursorrules", "GEMINI.md"].filter((f) => fs.existsSync(path.join(project.projectDir, f)));
|
|
239
|
+
const projectContextFiles = countMarkdown(path.join(project.projectDir, "project-context"));
|
|
240
|
+
let headline;
|
|
241
|
+
if (activity.commits.length > 0) {
|
|
242
|
+
const c = activity.commits[0];
|
|
243
|
+
const dirty = activity.dirtyFiles > 0
|
|
244
|
+
? `, ${activity.dirtyFiles} uncommitted file${activity.dirtyFiles === 1 ? "" : "s"}`
|
|
245
|
+
: "";
|
|
246
|
+
headline = `last commit ${describeAge(c.at, now)} on ${activity.branch ?? "?"}: "${c.subject}"${dirty}`;
|
|
247
|
+
}
|
|
248
|
+
else if (currentState) {
|
|
249
|
+
headline = currentState;
|
|
250
|
+
}
|
|
251
|
+
else if (activity.isRepo) {
|
|
252
|
+
headline = `git repo on ${activity.branch ?? "?"} with no commits yet`;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
headline = "not a git repo; no recent activity signal";
|
|
256
|
+
}
|
|
257
|
+
const freshness = Math.max(activity.lastCommitAt ?? 0, activity.dirtyFiles > 0 ? now - 60000 : 0);
|
|
258
|
+
return {
|
|
259
|
+
name: project.name,
|
|
260
|
+
projectDir: project.projectDir,
|
|
261
|
+
activity,
|
|
262
|
+
currentState,
|
|
263
|
+
openItems,
|
|
264
|
+
agentDocs,
|
|
265
|
+
projectContextFiles,
|
|
266
|
+
headline,
|
|
267
|
+
freshness,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
const HOME_AGENT_DOC_CANDIDATES = [
|
|
271
|
+
{ label: "~/.claude/CLAUDE.md (global Claude Code instructions)", rel: ".claude/CLAUDE.md" },
|
|
272
|
+
{ label: "~/AGENTS.md (home agent instructions)", rel: "AGENTS.md" },
|
|
273
|
+
{ label: "~/CLAUDE.md (home Claude instructions)", rel: "CLAUDE.md" },
|
|
274
|
+
{ label: "~/.codex/AGENTS.md (global Codex instructions)", rel: ".codex/AGENTS.md" },
|
|
275
|
+
{ label: "~/.codex/instructions.md (global Codex instructions)", rel: ".codex/instructions.md" },
|
|
276
|
+
];
|
|
277
|
+
function readHomeAgentDocs(homeDir = os.homedir(), maxChars = 1200) {
|
|
278
|
+
const docs = [];
|
|
279
|
+
for (const cand of HOME_AGENT_DOC_CANDIDATES) {
|
|
280
|
+
const full = path.join(homeDir, cand.rel);
|
|
281
|
+
const excerpt = readHead(full, maxChars);
|
|
282
|
+
if (excerpt)
|
|
283
|
+
docs.push({ label: cand.label, path: full, excerpt });
|
|
284
|
+
}
|
|
285
|
+
return docs;
|
|
286
|
+
}
|
|
287
|
+
function formatCommitList(commits, max) {
|
|
288
|
+
return commits
|
|
289
|
+
.slice(0, max)
|
|
290
|
+
.map((c) => `${c.subject} (${c.age})`)
|
|
291
|
+
.join("; ");
|
|
292
|
+
}
|
|
293
|
+
function buildWorkspaceBrief(projects, opts = {}) {
|
|
294
|
+
const now = opts.now ?? Date.now();
|
|
295
|
+
const maxProjects = opts.maxProjects ?? 6;
|
|
296
|
+
const seen = new Set();
|
|
297
|
+
const briefs = [];
|
|
298
|
+
for (const p of projects) {
|
|
299
|
+
const key = path.resolve(p.projectDir);
|
|
300
|
+
if (seen.has(key) || !fs.existsSync(p.projectDir))
|
|
301
|
+
continue;
|
|
302
|
+
seen.add(key);
|
|
303
|
+
briefs.push(buildProjectBrief(p, { exec: opts.exec, now }));
|
|
304
|
+
}
|
|
305
|
+
briefs.sort((a, b) => b.freshness - a.freshness);
|
|
306
|
+
const ranked = briefs.slice(0, maxProjects);
|
|
307
|
+
const homeDocs = opts.includeHomeDocs === false ? [] : readHomeAgentDocs(opts.homeDir);
|
|
308
|
+
const lines = [];
|
|
309
|
+
if (ranked.length > 0) {
|
|
310
|
+
lines.push("--- fresh local workspace (read from disk and git just now; this is ground truth and beats anything stored in the profile) ---");
|
|
311
|
+
ranked.forEach((b, i) => {
|
|
312
|
+
const a = b.activity;
|
|
313
|
+
const meta = [];
|
|
314
|
+
if (a.isRepo) {
|
|
315
|
+
meta.push(`branch ${a.branch ?? "?"}`);
|
|
316
|
+
meta.push(`${a.commitsLast7d} commit${a.commitsLast7d === 1 ? "" : "s"} in the last 7d`);
|
|
317
|
+
meta.push(`last commit ${describeAge(a.lastCommitAt, now)}`);
|
|
318
|
+
if (a.dirtyFiles > 0)
|
|
319
|
+
meta.push(`${a.dirtyFiles} uncommitted file${a.dirtyFiles === 1 ? "" : "s"}`);
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
meta.push("no git repo");
|
|
323
|
+
}
|
|
324
|
+
lines.push(`${i + 1}. ${b.name} — ${b.projectDir} — ${meta.join(", ")}`);
|
|
325
|
+
if (a.commits.length > 0)
|
|
326
|
+
lines.push(` recent commits: ${formatCommitList(a.commits, 6)}`);
|
|
327
|
+
if (a.lastCommitFiles.length > 0)
|
|
328
|
+
lines.push(` last commit touched: ${a.lastCommitFiles.join(", ")}`);
|
|
329
|
+
if (b.currentState)
|
|
330
|
+
lines.push(` current state: ${b.currentState}`);
|
|
331
|
+
if (b.openItems.length > 0)
|
|
332
|
+
lines.push(` open items: ${b.openItems.slice(0, 3).join(" | ")}`);
|
|
333
|
+
const docs = [
|
|
334
|
+
...b.agentDocs,
|
|
335
|
+
b.projectContextFiles > 0 ? `project-context (${b.projectContextFiles} files)` : null,
|
|
336
|
+
].filter(Boolean);
|
|
337
|
+
if (docs.length > 0)
|
|
338
|
+
lines.push(` agent docs: ${docs.join(", ")}`);
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
if (homeDocs.length > 0) {
|
|
342
|
+
lines.push("");
|
|
343
|
+
lines.push("--- machine-level agent directives (apply to every project on this computer) ---");
|
|
344
|
+
for (const doc of homeDocs) {
|
|
345
|
+
lines.push(`# ${doc.label}`);
|
|
346
|
+
lines.push(doc.excerpt);
|
|
347
|
+
lines.push("");
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const strongestProject = ranked[0] ?? null;
|
|
351
|
+
const strongestMove = strongestProject ? buildStrongestMove(strongestProject, now) : null;
|
|
352
|
+
return {
|
|
353
|
+
generatedAt: now,
|
|
354
|
+
projects: ranked,
|
|
355
|
+
homeDocs,
|
|
356
|
+
text: lines.join("\n").trim(),
|
|
357
|
+
strongestMove,
|
|
358
|
+
strongestProject,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* A "next strongest move" grounded in what the repo is doing, not the first
|
|
363
|
+
* unchecked TODO line.
|
|
364
|
+
*/
|
|
365
|
+
function buildStrongestMove(b, now = Date.now()) {
|
|
366
|
+
const a = b.activity;
|
|
367
|
+
if (a.dirtyFiles > 0 && a.commits.length > 0) {
|
|
368
|
+
return `${b.name} has ${a.dirtyFiles} uncommitted file${a.dirtyFiles === 1 ? "" : "s"} on ${a.branch ?? "?"} after "${a.commits[0].subject}" (${describeAge(a.commits[0].at, now)}) — pick up that thread.`;
|
|
369
|
+
}
|
|
370
|
+
if (a.commits.length > 0) {
|
|
371
|
+
const c = a.commits[0];
|
|
372
|
+
const item = b.openItems[0] ? ` open next: ${b.openItems[0]}.` : "";
|
|
373
|
+
return `${b.name} last moved ${describeAge(c.at, now)} with "${c.subject}" on ${a.branch ?? "?"}.${item}`;
|
|
374
|
+
}
|
|
375
|
+
if (b.currentState)
|
|
376
|
+
return `${b.name}: ${b.currentState}`;
|
|
377
|
+
if (b.openItems[0])
|
|
378
|
+
return `${b.name}: ${b.openItems[0]}`;
|
|
379
|
+
return `${b.name} has no git activity or project-context yet — worth scaffolding before anything else.`;
|
|
380
|
+
}
|
|
381
|
+
/** Compact tool-result block for read_project_context. */
|
|
382
|
+
function formatProjectActivityForTool(b, now = Date.now()) {
|
|
383
|
+
const a = b.activity;
|
|
384
|
+
const lines = [];
|
|
385
|
+
if (!a.isRepo) {
|
|
386
|
+
lines.push("git: not a repository");
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
lines.push(`git: branch ${a.branch ?? "?"}, ${a.commitsLast7d} commits in the last 7d, last commit ${describeAge(a.lastCommitAt, now)}, ${a.dirtyFiles} uncommitted files`);
|
|
390
|
+
for (const c of a.commits.slice(0, 8)) {
|
|
391
|
+
lines.push(` ${c.hash} ${c.subject} — ${c.age}${c.author ? ` — ${c.author}` : ""}`);
|
|
392
|
+
}
|
|
393
|
+
if (a.lastCommitFiles.length > 0)
|
|
394
|
+
lines.push(` last commit touched: ${a.lastCommitFiles.join(", ")}`);
|
|
395
|
+
}
|
|
396
|
+
if (b.currentState)
|
|
397
|
+
lines.push(`current_state: ${b.currentState}`);
|
|
398
|
+
if (b.openItems.length > 0)
|
|
399
|
+
lines.push(`open_items: ${b.openItems.join(" | ")}`);
|
|
400
|
+
return lines.join("\n");
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=workspace-brief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-brief.js","sourceRoot":"","sources":["../../src/lib/workspace-brief.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* youmd mcp --json # output config JSON for claude_desktop_config
|
|
21
21
|
*/
|
|
22
22
|
import { type PortfolioGraphBrief } from "../lib/portfolio-graph";
|
|
23
|
+
import { type TaskEntry } from "../lib/tasksFile";
|
|
23
24
|
export declare function activeBundleExists(): boolean;
|
|
24
25
|
export declare function getInstalledSkills(): Array<{
|
|
25
26
|
name: string;
|
|
@@ -107,6 +108,15 @@ export interface AgentBrief {
|
|
|
107
108
|
mcpVersion: string;
|
|
108
109
|
};
|
|
109
110
|
project: AgentBriefProject | null;
|
|
111
|
+
attention: {
|
|
112
|
+
currentTask: Pick<TaskEntry, "id" | "title" | "status" | "priority" | "goal"> | null;
|
|
113
|
+
infrastructure: {
|
|
114
|
+
residentJobs: number;
|
|
115
|
+
executionProven: number;
|
|
116
|
+
brainUpdatedAt: string | null;
|
|
117
|
+
};
|
|
118
|
+
exceptions: string[];
|
|
119
|
+
};
|
|
110
120
|
skills: {
|
|
111
121
|
installed: string[];
|
|
112
122
|
recommended: string[];
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG;AA+CH,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|