youmd 0.10.0 → 0.10.2

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.
Files changed (130) hide show
  1. package/dist/commands/brain.d.ts +25 -0
  2. package/dist/commands/brain.d.ts.map +1 -0
  3. package/dist/commands/brain.js +683 -0
  4. package/dist/commands/brain.js.map +1 -0
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +4 -0
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/machine.d.ts +3 -0
  9. package/dist/commands/machine.d.ts.map +1 -1
  10. package/dist/commands/machine.js +73 -4
  11. package/dist/commands/machine.js.map +1 -1
  12. package/dist/commands/orchestrate.d.ts.map +1 -1
  13. package/dist/commands/orchestrate.js +4 -3
  14. package/dist/commands/orchestrate.js.map +1 -1
  15. package/dist/commands/project.d.ts.map +1 -1
  16. package/dist/commands/project.js +24 -0
  17. package/dist/commands/project.js.map +1 -1
  18. package/dist/commands/remote.d.ts.map +1 -1
  19. package/dist/commands/remote.js +42 -13
  20. package/dist/commands/remote.js.map +1 -1
  21. package/dist/commands/skill.d.ts.map +1 -1
  22. package/dist/commands/skill.js +2 -0
  23. package/dist/commands/skill.js.map +1 -1
  24. package/dist/commands/tasks.d.ts +23 -3
  25. package/dist/commands/tasks.d.ts.map +1 -1
  26. package/dist/commands/tasks.js +179 -49
  27. package/dist/commands/tasks.js.map +1 -1
  28. package/dist/generated/capability-registry.d.ts +1096 -0
  29. package/dist/generated/capability-registry.d.ts.map +1 -0
  30. package/dist/generated/capability-registry.js +1204 -0
  31. package/dist/generated/capability-registry.js.map +1 -0
  32. package/dist/index.js +42 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/lib/api.d.ts +84 -0
  35. package/dist/lib/api.d.ts.map +1 -1
  36. package/dist/lib/api.js +26 -0
  37. package/dist/lib/api.js.map +1 -1
  38. package/dist/lib/brain/adapters.d.ts +34 -0
  39. package/dist/lib/brain/adapters.d.ts.map +1 -0
  40. package/dist/lib/brain/adapters.js +362 -0
  41. package/dist/lib/brain/adapters.js.map +1 -0
  42. package/dist/lib/brain/apply-control-plane.d.ts +17 -0
  43. package/dist/lib/brain/apply-control-plane.d.ts.map +1 -0
  44. package/dist/lib/brain/apply-control-plane.js +117 -0
  45. package/dist/lib/brain/apply-control-plane.js.map +1 -0
  46. package/dist/lib/brain/cache.d.ts +25 -0
  47. package/dist/lib/brain/cache.d.ts.map +1 -0
  48. package/dist/lib/brain/cache.js +99 -0
  49. package/dist/lib/brain/cache.js.map +1 -0
  50. package/dist/lib/brain/canonical.d.ts +5 -0
  51. package/dist/lib/brain/canonical.d.ts.map +1 -0
  52. package/dist/lib/brain/canonical.js +38 -0
  53. package/dist/lib/brain/canonical.js.map +1 -0
  54. package/dist/lib/brain/discovery.d.ts +9 -0
  55. package/dist/lib/brain/discovery.d.ts.map +1 -0
  56. package/dist/lib/brain/discovery.js +560 -0
  57. package/dist/lib/brain/discovery.js.map +1 -0
  58. package/dist/lib/brain/index.d.ts +55 -0
  59. package/dist/lib/brain/index.d.ts.map +1 -0
  60. package/dist/lib/brain/index.js +384 -0
  61. package/dist/lib/brain/index.js.map +1 -0
  62. package/dist/lib/brain/proposal.d.ts +179 -0
  63. package/dist/lib/brain/proposal.d.ts.map +1 -0
  64. package/dist/lib/brain/proposal.js +694 -0
  65. package/dist/lib/brain/proposal.js.map +1 -0
  66. package/dist/lib/brain/render.d.ts +33 -0
  67. package/dist/lib/brain/render.d.ts.map +1 -0
  68. package/dist/lib/brain/render.js +515 -0
  69. package/dist/lib/brain/render.js.map +1 -0
  70. package/dist/lib/brain/safe-file.d.ts +110 -0
  71. package/dist/lib/brain/safe-file.d.ts.map +1 -0
  72. package/dist/lib/brain/safe-file.js +564 -0
  73. package/dist/lib/brain/safe-file.js.map +1 -0
  74. package/dist/lib/brain/safety.d.ts +8 -0
  75. package/dist/lib/brain/safety.d.ts.map +1 -0
  76. package/dist/lib/brain/safety.js +42 -0
  77. package/dist/lib/brain/safety.js.map +1 -0
  78. package/dist/lib/brain/staged-apply.d.ts +57 -0
  79. package/dist/lib/brain/staged-apply.d.ts.map +1 -0
  80. package/dist/lib/brain/staged-apply.js +336 -0
  81. package/dist/lib/brain/staged-apply.js.map +1 -0
  82. package/dist/lib/brain/store.d.ts +26 -0
  83. package/dist/lib/brain/store.d.ts.map +1 -0
  84. package/dist/lib/brain/store.js +504 -0
  85. package/dist/lib/brain/store.js.map +1 -0
  86. package/dist/lib/brain/types.d.ts +160 -0
  87. package/dist/lib/brain/types.d.ts.map +1 -0
  88. package/dist/lib/brain/types.js +24 -0
  89. package/dist/lib/brain/types.js.map +1 -0
  90. package/dist/lib/config.d.ts +22 -1
  91. package/dist/lib/config.d.ts.map +1 -1
  92. package/dist/lib/config.js +70 -14
  93. package/dist/lib/config.js.map +1 -1
  94. package/dist/lib/daemon.d.ts +27 -0
  95. package/dist/lib/daemon.d.ts.map +1 -1
  96. package/dist/lib/daemon.js +57 -0
  97. package/dist/lib/daemon.js.map +1 -1
  98. package/dist/lib/machine-identity.d.ts +16 -0
  99. package/dist/lib/machine-identity.d.ts.map +1 -0
  100. package/dist/lib/machine-identity.js +101 -0
  101. package/dist/lib/machine-identity.js.map +1 -0
  102. package/dist/lib/orchestrator/loop.d.ts +1 -0
  103. package/dist/lib/orchestrator/loop.d.ts.map +1 -1
  104. package/dist/lib/orchestrator/loop.js +16 -0
  105. package/dist/lib/orchestrator/loop.js.map +1 -1
  106. package/dist/lib/orchestrator/tools.d.ts +11 -0
  107. package/dist/lib/orchestrator/tools.d.ts.map +1 -1
  108. package/dist/lib/orchestrator/tools.js +143 -0
  109. package/dist/lib/orchestrator/tools.js.map +1 -1
  110. package/dist/lib/project-strategy.d.ts +38 -0
  111. package/dist/lib/project-strategy.d.ts.map +1 -1
  112. package/dist/lib/project-strategy.js +91 -0
  113. package/dist/lib/project-strategy.js.map +1 -1
  114. package/dist/lib/projectContext.d.ts +6 -4
  115. package/dist/lib/projectContext.d.ts.map +1 -1
  116. package/dist/lib/projectContext.js +19 -17
  117. package/dist/lib/projectContext.js.map +1 -1
  118. package/dist/lib/tasksFile.d.ts +27 -32
  119. package/dist/lib/tasksFile.d.ts.map +1 -1
  120. package/dist/lib/tasksFile.js +359 -163
  121. package/dist/lib/tasksFile.js.map +1 -1
  122. package/dist/mcp/registry.d.ts +8 -2
  123. package/dist/mcp/registry.d.ts.map +1 -1
  124. package/dist/mcp/registry.js +189 -2
  125. package/dist/mcp/registry.js.map +1 -1
  126. package/dist/mcp/server.d.ts +1 -0
  127. package/dist/mcp/server.d.ts.map +1 -1
  128. package/dist/mcp/server.js +3 -2
  129. package/dist/mcp/server.js.map +1 -1
  130. package/package.json +1 -1
@@ -0,0 +1,560 @@
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.isSafeRelativePath = isSafeRelativePath;
37
+ exports.discoverProjectRoots = discoverProjectRoots;
38
+ exports.workspaceIdentity = workspaceIdentity;
39
+ exports.scanOneProject = scanOneProject;
40
+ exports.effectiveContentMode = effectiveContentMode;
41
+ exports.defaultGeneratedExcludes = defaultGeneratedExcludes;
42
+ const fs = __importStar(require("fs"));
43
+ const os = __importStar(require("os"));
44
+ const path = __importStar(require("path"));
45
+ const crypto_1 = require("crypto");
46
+ const canonical_1 = require("./canonical");
47
+ const adapters_1 = require("./adapters");
48
+ const types_1 = require("./types");
49
+ const DISCOVERY_EXCLUDES = new Set([".git", ".reference-repos", "node_modules", ".you", ".eve", ".workflow-data", ".cache", ".tmp", "dist", "build", ".next"]);
50
+ const INSTRUCTION_FILES = ["AGENTS.md", "CLAUDE.md"];
51
+ const RELATIVE_PATH = /^(?!\/)(?![A-Za-z]:)(?!.*\\)(?!.*\/\/)(?!.*(?:^|\/)(?:\.{1,2})(?:\/|$))(?!.*[\u0000-\u001f\u007f])(?!.*\/$)[^/]+(?:\/[^/]+)*$/;
52
+ function slugify(input) {
53
+ const slug = input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64);
54
+ return slug || `project-${(0, canonical_1.sha256)(input).slice(0, 12)}`;
55
+ }
56
+ function isSafeRelativePath(value) {
57
+ return typeof value === "string" && value.length <= 500 && RELATIVE_PATH.test(value);
58
+ }
59
+ function normalizeRelative(value) {
60
+ return value.split(path.sep).join("/");
61
+ }
62
+ function isExcludedRelative(relative) {
63
+ const parts = normalizeRelative(relative).split("/");
64
+ if (parts.some((part) => DISCOVERY_EXCLUDES.has(part)))
65
+ return true;
66
+ const normalized = normalizeRelative(relative);
67
+ return normalized === "master-project-brain.html"
68
+ || normalized.startsWith("projects/_portfolio/")
69
+ || (parts.includes("sandbox") && parts[parts.length - 1] !== "sandbox");
70
+ }
71
+ function readJson(file) {
72
+ try {
73
+ const value = JSON.parse(fs.readFileSync(file, "utf8"));
74
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ function validDescriptor(value) {
81
+ if (!value
82
+ || value.$schema !== "https://you.md/schemas/project-brain/v1"
83
+ || value.schemaVersion !== "you-md/project-brain/v1"
84
+ || value.kind !== "project"
85
+ || typeof value.slug !== "string"
86
+ || !/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/.test(value.slug)
87
+ || value.projectRef !== `project:${value.slug}`
88
+ || typeof value.name !== "string" || !value.name.trim()
89
+ || !isSafeRelativePath(value.contextRoot)
90
+ || !Array.isArray(value.agentRoots) || value.agentRoots.some((root) => !isSafeRelativePath(root))
91
+ || !Array.isArray(value.artifacts) || value.artifacts.length === 0
92
+ || !value.writePolicy || typeof value.writePolicy !== "object"
93
+ || !["read_only", "propose"].includes(String(value.writePolicy.default)))
94
+ return false;
95
+ const managedPaths = value.writePolicy.managedPaths || [];
96
+ if (!Array.isArray(managedPaths) || managedPaths.some((managedPath) => !isSafeRelativePath(managedPath)))
97
+ return false;
98
+ const artifactsByRef = new Map();
99
+ for (const artifact of value.artifacts) {
100
+ if (!/^artifact:[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?\/[a-z0-9][a-z0-9._-]{0,95}$/.test(String(artifact.artifactRef))
101
+ || !String(artifact.artifactRef).startsWith(`artifact:${value.slug}/`)
102
+ || !/^subject:(repository|youmd|foldermd|eve|custom)\/[a-z0-9](?:[a-z0-9._-]{0,94}[a-z0-9])?(?:\/[a-z0-9](?:[a-z0-9._-]{0,94}[a-z0-9])?)*$/.test(String(artifact.subjectRef))
103
+ || !isSafeRelativePath(artifact.path)
104
+ || !["context", "tasks", "instructions", "agent", "stack", "api", "deployment", "storage", "other"].includes(String(artifact.kind))
105
+ || !["repository", "youmd", "foldermd", "eve", "custom"].includes(String(artifact.owner))
106
+ || !["canonical", "mirror", "derived", "reference"].includes(String(artifact.authority))
107
+ || !["read_only", "propose", "managed_write", "task_write"].includes(String(artifact.writePolicy)))
108
+ return false;
109
+ if (artifact.writePolicy === "managed_write" && !managedPaths.includes(artifact.path))
110
+ return false;
111
+ artifactsByRef.set(String(artifact.artifactRef), artifact);
112
+ }
113
+ const taskWrite = value.writePolicy.taskWrite;
114
+ const taskTarget = taskWrite?.artifactRef ? artifactsByRef.get(taskWrite.artifactRef) : undefined;
115
+ if (taskWrite?.enabled && (!taskTarget || taskTarget.kind !== "tasks" || taskTarget.writePolicy !== "task_write"))
116
+ return false;
117
+ for (const artifact of value.artifacts) {
118
+ if (artifact.writePolicy === "task_write" && (!taskWrite?.enabled || artifact.artifactRef !== taskWrite.artifactRef))
119
+ return false;
120
+ }
121
+ return true;
122
+ }
123
+ function projectName(root, descriptor, legacy) {
124
+ if (descriptor?.name)
125
+ return descriptor.name;
126
+ if (legacy?.name)
127
+ return legacy.name;
128
+ try {
129
+ const pkg = readJson(path.join(root, "package.json"));
130
+ if (typeof pkg?.name === "string" && !new Set(["project", "app", "site", "web", "frontend", "backend"]).has(pkg.name.toLowerCase()))
131
+ return pkg.name;
132
+ }
133
+ catch { /* basename fallback */ }
134
+ return path.basename(root);
135
+ }
136
+ function discoverProjectRoots(roots, maxDepth = 5, signal) {
137
+ const found = new Set();
138
+ const queue = roots.map((root) => ({ root: path.resolve(root), depth: 0, insideProject: false }));
139
+ while (queue.length) {
140
+ if (signal?.aborted)
141
+ throw new Error("project brain scan cancelled");
142
+ const current = queue.shift();
143
+ let entries;
144
+ try {
145
+ entries = fs.readdirSync(current.root, { withFileTypes: true });
146
+ }
147
+ catch {
148
+ continue;
149
+ }
150
+ const names = new Set(entries.map((entry) => entry.name));
151
+ const strongMarker = names.has(".you-project") || names.has(".youmd-project") || names.has(".git");
152
+ const projectHere = strongMarker || (names.has("project-context") && !current.insideProject);
153
+ if (projectHere) {
154
+ found.add(current.root);
155
+ }
156
+ if (current.depth >= maxDepth)
157
+ continue;
158
+ for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
159
+ if (!entry.isDirectory() || entry.isSymbolicLink() || DISCOVERY_EXCLUDES.has(entry.name))
160
+ continue;
161
+ const child = path.join(current.root, entry.name);
162
+ if (!isExcludedRelative(path.relative(current.root, child)))
163
+ queue.push({ root: child, depth: current.depth + 1, insideProject: current.insideProject || projectHere });
164
+ }
165
+ }
166
+ // A directly requested root remains readable even without an adoption marker.
167
+ if (found.size === 0)
168
+ for (const root of roots)
169
+ if (fs.existsSync(root))
170
+ found.add(path.resolve(root));
171
+ return [...found].sort((a, b) => a.localeCompare(b));
172
+ }
173
+ const MAX_CONTENT_BYTES = 64 * 1024 * 1024;
174
+ const MAX_DIRECTORY_ENTRIES = 2000;
175
+ const MAX_DIRECTORY_CONTENT_BYTES = 64 * 1024 * 1024;
176
+ function safeFileRevision(file, displayPath, mode, diagnostics, project, cache, shallowDirectory = false) {
177
+ let stat;
178
+ try {
179
+ stat = fs.lstatSync(file);
180
+ }
181
+ catch {
182
+ diagnostics.push({ code: "unreadable_artifact", project, path: displayPath, message: "artifact is unavailable" });
183
+ return null;
184
+ }
185
+ if (stat.isSymbolicLink()) {
186
+ diagnostics.push({ code: "symlink_rejected", project, path: displayPath, message: "symbolic-link artifacts are never followed" });
187
+ return null;
188
+ }
189
+ if (stat.isDirectory()) {
190
+ if (shallowDirectory)
191
+ return `heuristic:${(0, canonical_1.sha256)(`${stat.mode}:${stat.size}:${stat.mtimeMs}`)}`;
192
+ const entries = [];
193
+ let visitedEntries = 0;
194
+ let contentBytes = 0;
195
+ let budgetExceeded = false;
196
+ const walk = (dir, prefix) => {
197
+ if (budgetExceeded)
198
+ return;
199
+ let children;
200
+ try {
201
+ children = fs.readdirSync(dir, { withFileTypes: true });
202
+ }
203
+ catch {
204
+ return;
205
+ }
206
+ for (const child of children.sort((a, b) => a.name.localeCompare(b.name))) {
207
+ const relative = prefix ? `${prefix}/${child.name}` : child.name;
208
+ const repoRelative = `${displayPath}/${relative}`;
209
+ if (isExcludedRelative(repoRelative))
210
+ continue;
211
+ visitedEntries += 1;
212
+ if (visitedEntries > MAX_DIRECTORY_ENTRIES) {
213
+ budgetExceeded = true;
214
+ return;
215
+ }
216
+ const absolute = path.join(dir, child.name);
217
+ if (child.isDirectory() && !child.isSymbolicLink())
218
+ walk(absolute, relative);
219
+ else {
220
+ try {
221
+ contentBytes += fs.lstatSync(absolute).size;
222
+ }
223
+ catch { /* safeFileRevision reports it */ }
224
+ if (contentBytes > MAX_DIRECTORY_CONTENT_BYTES) {
225
+ budgetExceeded = true;
226
+ return;
227
+ }
228
+ const revision = safeFileRevision(absolute, `${displayPath}/${relative}`, mode, diagnostics, project, cache);
229
+ if (revision)
230
+ entries.push([relative, revision]);
231
+ }
232
+ }
233
+ };
234
+ walk(file, "");
235
+ if (budgetExceeded) {
236
+ diagnostics.push({ code: "metadata_only", project, path: displayPath, message: "directory exceeds the bounded content scan budget; shallow metadata revision used" });
237
+ return `heuristic:${(0, canonical_1.sha256)(`${stat.mode}:${stat.size}:${stat.mtimeMs}`)}`;
238
+ }
239
+ return `${mode === "content" ? "sha256" : "heuristic"}:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(entries))}`;
240
+ }
241
+ if (!stat.isFile())
242
+ return `heuristic:${(0, canonical_1.sha256)(`${stat.mode}:${stat.size}:${stat.mtimeMs}`)}`;
243
+ const cached = cache?.lookup(file, stat, mode);
244
+ if (cached)
245
+ return cached;
246
+ if (mode === "metadata") {
247
+ const revision = `heuristic:${(0, canonical_1.sha256)(`${stat.mode}:${stat.size}:${stat.mtimeMs}`)}`;
248
+ cache?.remember(file, stat, revision);
249
+ return revision;
250
+ }
251
+ if (stat.size > MAX_CONTENT_BYTES) {
252
+ diagnostics.push({ code: "metadata_only", project, path: displayPath, message: `artifact exceeds the ${MAX_CONTENT_BYTES}-byte content budget; metadata revision used` });
253
+ const revision = `heuristic:${(0, canonical_1.sha256)(`${stat.mode}:${stat.size}:${stat.mtimeMs}`)}`;
254
+ cache?.remember(file, stat, revision);
255
+ return revision;
256
+ }
257
+ let fd;
258
+ try {
259
+ const noFollow = fs.constants.O_NOFOLLOW || 0;
260
+ fd = fs.openSync(file, fs.constants.O_RDONLY | noFollow);
261
+ const opened = fs.fstatSync(fd);
262
+ if (opened.dev !== stat.dev || opened.ino !== stat.ino || !opened.isFile())
263
+ throw new Error("artifact changed during safe open");
264
+ const digest = (0, crypto_1.createHash)("sha256");
265
+ const buffer = Buffer.alloc(Math.min(64 * 1024, Math.max(1, opened.size)));
266
+ let offset = 0;
267
+ while (offset < opened.size) {
268
+ const count = fs.readSync(fd, buffer, 0, Math.min(buffer.length, opened.size - offset), offset);
269
+ if (!count)
270
+ break;
271
+ digest.update(buffer.subarray(0, count));
272
+ offset += count;
273
+ }
274
+ if (offset !== opened.size)
275
+ throw new Error("short read");
276
+ digest.update(`:${opened.size}`);
277
+ const revision = `sha256:${digest.digest("hex")}`;
278
+ cache?.remember(file, stat, revision);
279
+ return revision;
280
+ }
281
+ catch {
282
+ diagnostics.push({ code: "unreadable_artifact", project, path: displayPath, message: "verified safe-open failed; claim omitted" });
283
+ return null;
284
+ }
285
+ finally {
286
+ if (fd !== undefined)
287
+ fs.closeSync(fd);
288
+ }
289
+ }
290
+ function provenance(input) {
291
+ return {
292
+ ...input,
293
+ freshness: { status: "fresh", checkedAt: input.indexedAt },
294
+ };
295
+ }
296
+ function inferKind(relative) {
297
+ const lower = relative.toLowerCase();
298
+ if (lower.endsWith("tasks.json") || lower.endsWith("tasks.md"))
299
+ return "tasks";
300
+ if (/(^|\/)(agents?|you-agent)(\/|$)/.test(lower))
301
+ return "agent";
302
+ if (/(agents|claude)\.md$/.test(lower))
303
+ return "instructions";
304
+ if (/(folder\.md)$/.test(lower))
305
+ return "instructions";
306
+ if (/(stack|skill)/.test(lower))
307
+ return "stack";
308
+ return "context";
309
+ }
310
+ function normalizeOwner(value, fallback) {
311
+ return ["repository", "youmd", "foldermd", "eve", "custom"].includes(String(value)) ? value : fallback;
312
+ }
313
+ function normalizeAuthority(value, fallback) {
314
+ return ["canonical", "mirror", "derived", "reference"].includes(String(value)) ? value : fallback;
315
+ }
316
+ function normalizePolicy(value, fallback) {
317
+ return ["read_only", "propose", "managed_write", "task_write"].includes(String(value)) ? value : fallback;
318
+ }
319
+ function artifactClaim(input) {
320
+ if (!isSafeRelativePath(input.relative) || isExcludedRelative(input.relative)) {
321
+ input.diagnostics.push({ code: "unsafe_path", project: input.slug, path: input.relative, message: "artifact path is unsafe or generated output" });
322
+ return null;
323
+ }
324
+ const absolute = path.resolve(input.root, input.relative);
325
+ if (absolute !== input.root && !absolute.startsWith(input.root + path.sep)) {
326
+ input.diagnostics.push({ code: "unsafe_path", project: input.slug, path: input.relative, message: "artifact escaped project root" });
327
+ return null;
328
+ }
329
+ const revision = safeFileRevision(absolute, input.relative, input.mode, input.diagnostics, input.slug, input.cache, input.shallowDirectory);
330
+ if (!revision)
331
+ return null;
332
+ const kind = (input.descriptor?.kind || inferKind(input.relative));
333
+ const owner = normalizeOwner(input.descriptor?.owner, kind === "instructions" && /folder\.md$/i.test(input.relative) ? "foldermd" : "repository");
334
+ const authority = normalizeAuthority(input.descriptor?.authority, "canonical");
335
+ const writePolicy = input.forceReadOnly ? "read_only" : input.declared ? normalizePolicy(input.descriptor?.writePolicy, "propose") : "read_only";
336
+ const source = input.source || (input.declared ? "descriptor" : owner === "foldermd" ? "foldermd" : "project-context");
337
+ const normalized = normalizeRelative(input.relative);
338
+ const sourceRef = `subject:${owner === "repository" ? "repository" : owner}/${input.slug}`;
339
+ return {
340
+ artifactRef: typeof input.descriptor?.artifactRef === "string" ? input.descriptor.artifactRef : `artifact:${input.slug}/${slugify(input.stableKey || `${kind}-${input.index}`)}`,
341
+ subjectRef: typeof input.descriptor?.subjectRef === "string" ? input.descriptor.subjectRef : sourceRef,
342
+ kind,
343
+ path: normalized,
344
+ owner,
345
+ authority,
346
+ writePolicy,
347
+ provenance: provenance({ source, sourceRef, owner, authority, sourceRevision: revision, indexedAt: input.indexedAt, writePolicy }),
348
+ };
349
+ }
350
+ function readBoundedRegular(file, maxBytes) {
351
+ let fd;
352
+ try {
353
+ const stat = fs.lstatSync(file);
354
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > maxBytes)
355
+ return null;
356
+ const noFollow = fs.constants.O_NOFOLLOW || 0;
357
+ fd = fs.openSync(file, fs.constants.O_RDONLY | noFollow);
358
+ const opened = fs.fstatSync(fd);
359
+ if (!opened.isFile() || opened.dev !== stat.dev || opened.ino !== stat.ino || opened.size !== stat.size || opened.size > maxBytes)
360
+ return null;
361
+ const buffer = Buffer.alloc(opened.size);
362
+ let offset = 0;
363
+ while (offset < opened.size) {
364
+ const count = fs.readSync(fd, buffer, offset, opened.size - offset, offset);
365
+ if (!count)
366
+ break;
367
+ offset += count;
368
+ }
369
+ return offset === opened.size ? buffer.toString("utf8") : null;
370
+ }
371
+ catch {
372
+ return null;
373
+ }
374
+ finally {
375
+ if (fd !== undefined)
376
+ try {
377
+ fs.closeSync(fd);
378
+ }
379
+ catch { /* already closed */ }
380
+ }
381
+ }
382
+ function isRealDirectory(dir) {
383
+ try {
384
+ const stat = fs.lstatSync(dir);
385
+ return stat.isDirectory() && !stat.isSymbolicLink();
386
+ }
387
+ catch {
388
+ return false;
389
+ }
390
+ }
391
+ function gitDirectories(root) {
392
+ const dotGit = path.join(root, ".git");
393
+ try {
394
+ const stat = fs.lstatSync(dotGit);
395
+ let gitDir = dotGit;
396
+ if (stat.isFile()) {
397
+ const pointer = readBoundedRegular(dotGit, 4096)?.trim().match(/^gitdir:\s*(.+)$/i)?.[1];
398
+ if (!pointer)
399
+ return null;
400
+ gitDir = path.resolve(root, pointer);
401
+ }
402
+ else if (!stat.isDirectory())
403
+ return null;
404
+ if (!isRealDirectory(gitDir))
405
+ return null;
406
+ let commonDir = gitDir;
407
+ try {
408
+ const pointer = readBoundedRegular(path.join(gitDir, "commondir"), 4096)?.trim();
409
+ if (pointer)
410
+ commonDir = path.resolve(gitDir, pointer);
411
+ }
412
+ catch { /* primary worktree */ }
413
+ if (!isRealDirectory(commonDir))
414
+ return null;
415
+ return { gitDir, commonDir };
416
+ }
417
+ catch {
418
+ return null;
419
+ }
420
+ }
421
+ function gitBranch(root, gitDir) {
422
+ try {
423
+ const head = readBoundedRegular(path.join(gitDir || gitDirectories(root)?.gitDir || path.join(root, ".git"), "HEAD"), 4096)?.trim();
424
+ if (!head)
425
+ return "unknown";
426
+ return head.startsWith("ref: ") ? head.slice(5) : head;
427
+ }
428
+ catch {
429
+ return "unknown";
430
+ }
431
+ }
432
+ function workspaceIdentity(root, machineId) {
433
+ const resolved = path.resolve(root);
434
+ const git = gitDirectories(resolved);
435
+ let remote = "local";
436
+ try {
437
+ const config = readBoundedRegular(path.join(git?.commonDir || path.join(resolved, ".git"), "config"), 1024 * 1024) || "";
438
+ remote = config.match(/url\s*=\s*(.+)/)?.[1]?.trim() || remote;
439
+ }
440
+ catch { /* local identity */ }
441
+ return {
442
+ machineRef: (0, canonical_1.hashedRef)("machine", machineId || `${os.hostname()}:${os.platform()}:${os.arch()}`),
443
+ repositoryRef: (0, canonical_1.hashedRef)("repository", remote === "local" ? resolved : remote),
444
+ worktreeRef: (0, canonical_1.hashedRef)("worktree", resolved),
445
+ branchRef: (0, canonical_1.hashedRef)("branch", gitBranch(resolved, git?.gitDir)),
446
+ };
447
+ }
448
+ function scanOneProject(root, mode, indexedAt, diagnostics, cache) {
449
+ const descriptorPath = path.join(root, ".you-project");
450
+ const legacyPath = path.join(root, ".youmd-project");
451
+ const hasDescriptor = fs.existsSync(descriptorPath);
452
+ const hasLegacy = fs.existsSync(legacyPath);
453
+ const parsedDescriptor = hasDescriptor ? readJson(descriptorPath) : null;
454
+ const descriptor = validDescriptor(parsedDescriptor) ? parsedDescriptor : null;
455
+ const legacy = hasLegacy ? readJson(legacyPath) : null;
456
+ if (hasDescriptor && !descriptor)
457
+ diagnostics.push({ code: "invalid_descriptor", path: ".you-project", message: ".you-project failed the v1 authority contract; project remains unmanaged and read-only" });
458
+ const declared = Boolean(descriptor);
459
+ const legacyAdopted = !hasDescriptor && hasLegacy;
460
+ const name = projectName(root, descriptor, legacy);
461
+ const slug = slugify(descriptor?.slug || descriptor?.projectRef?.replace(/^project:/, "") || legacy?.slug || name);
462
+ const contextRoot = isSafeRelativePath(descriptor?.contextRoot) ? descriptor.contextRoot : "project-context";
463
+ if (descriptor?.contextRoot && !isSafeRelativePath(descriptor.contextRoot))
464
+ diagnostics.push({ code: "unsafe_path", project: slug, path: String(descriptor.contextRoot), message: "invalid contextRoot; using project-context" });
465
+ const descriptorPolicy = typeof descriptor?.writePolicy === "string" ? descriptor.writePolicy : descriptor?.writePolicy?.default;
466
+ const writePolicy = declared ? normalizePolicy(descriptorPolicy, "propose") : "read_only";
467
+ const artifactInputs = [];
468
+ if (declared && Array.isArray(descriptor.artifacts)) {
469
+ for (const artifact of descriptor.artifacts) {
470
+ if (typeof artifact.path !== "string")
471
+ continue;
472
+ // tasks.md is always the generated companion of tasks.json. A descriptor
473
+ // cannot elevate it to managed/task authority or canonical ownership.
474
+ if (artifact.path === `${contextRoot}/tasks.md` && fs.existsSync(path.join(root, contextRoot, "tasks.json")))
475
+ continue;
476
+ artifactInputs.push({
477
+ path: artifact.path,
478
+ descriptor: artifact,
479
+ source: "descriptor",
480
+ stableKey: `descriptor-${artifact.artifactRef || artifact.path}`,
481
+ });
482
+ }
483
+ }
484
+ const adapterCandidates = (0, adapters_1.discoverBrainAdapterCandidates)(root, {
485
+ contextRoot,
486
+ agentRoots: descriptor?.agentRoots,
487
+ });
488
+ for (const candidate of adapterCandidates) {
489
+ artifactInputs.push({
490
+ path: candidate.relativePath,
491
+ descriptor: {
492
+ kind: candidate.kind,
493
+ owner: candidate.owner,
494
+ authority: candidate.authority,
495
+ writePolicy: "read_only",
496
+ },
497
+ source: candidate.source,
498
+ forceReadOnly: true,
499
+ stableKey: `${candidate.adapter}-${candidate.candidateRef.slice(-16)}`,
500
+ shallowDirectory: candidate.role === "pointer",
501
+ });
502
+ }
503
+ for (const file of INSTRUCTION_FILES)
504
+ if (fs.existsSync(path.join(root, file)))
505
+ artifactInputs.push({
506
+ path: file,
507
+ descriptor: { kind: "instructions", owner: "repository", authority: "canonical", writePolicy: "read_only" },
508
+ source: "repository",
509
+ forceReadOnly: true,
510
+ stableKey: `instructions-${file}`,
511
+ });
512
+ const seen = new Set();
513
+ const artifacts = artifactInputs
514
+ .filter((entry) => !seen.has(entry.path) && seen.add(entry.path))
515
+ .map((entry, index) => artifactClaim({
516
+ root, relative: entry.path, slug, index, descriptor: entry.descriptor, mode, indexedAt, diagnostics, declared, cache,
517
+ source: entry.source, forceReadOnly: entry.forceReadOnly, stableKey: entry.stableKey, shallowDirectory: entry.shallowDirectory,
518
+ }))
519
+ .filter((claim) => Boolean(claim))
520
+ .sort((a, b) => a.artifactRef.localeCompare(b.artifactRef) || a.path.localeCompare(b.path));
521
+ const source = declared ? "descriptor" : legacyAdopted ? "legacy" : "heuristic";
522
+ const sourceRef = `subject:repository/${slug}`;
523
+ const markerRevision = hasDescriptor
524
+ ? safeFileRevision(descriptorPath, ".you-project", mode, diagnostics, slug, cache)
525
+ : hasLegacy ? safeFileRevision(legacyPath, ".youmd-project", mode, diagnostics, slug, cache) : null;
526
+ const taskWriteConfig = typeof descriptor?.writePolicy === "object" ? descriptor.writePolicy.taskWrite : undefined;
527
+ const taskArtifact = artifacts.find((artifact) => artifact.kind === "tasks" && artifact.path.endsWith("tasks.json"));
528
+ const taskWriteEnabled = declared && Boolean(taskWriteConfig?.enabled) && Boolean(taskArtifact);
529
+ return {
530
+ projectRef: `project:${slug}`,
531
+ discovery: declared ? "declared" : legacyAdopted ? "legacy-adoption" : "heuristic",
532
+ management: declared ? "declared" : legacyAdopted ? "legacy-adopted" : "heuristic-unmanaged",
533
+ descriptorPath: declared ? ".you-project" : null,
534
+ legacyMarkerPath: hasLegacy ? ".youmd-project" : null,
535
+ contextRoot,
536
+ writePolicy,
537
+ taskWrite: taskWriteEnabled ? { enabled: true, artifactRef: taskWriteConfig?.artifactRef || taskArtifact.artifactRef } : { enabled: false },
538
+ provenance: provenance({
539
+ source,
540
+ sourceRef,
541
+ owner: "repository",
542
+ authority: declared ? "canonical" : "derived",
543
+ sourceRevision: markerRevision || `heuristic:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(artifacts.map((artifact) => artifact.provenance.sourceRevision)))}`,
544
+ indexedAt,
545
+ writePolicy,
546
+ }),
547
+ artifacts,
548
+ };
549
+ }
550
+ function effectiveContentMode(requested) {
551
+ if (requested === "metadata")
552
+ return "metadata";
553
+ if (requested === "content")
554
+ return "content";
555
+ return process.platform === "darwin" || process.platform === "linux" ? "content" : "metadata";
556
+ }
557
+ function defaultGeneratedExcludes(extra = []) {
558
+ return [...new Set([...types_1.GENERATED_EXCLUDES, ...extra.filter(isSafeRelativePath)])].sort();
559
+ }
560
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/lib/brain/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { BrainSafetyError } from "./safety";
2
+ import { defaultBrainRoot } from "./store";
3
+ import { ProjectBrainBatchResult, ProjectBrainScan, ProjectBrainScanOptions, ProjectBrainScanResult, ScanAllProjectBrainsOptions } from "./types";
4
+ export * from "./types";
5
+ export * from "./canonical";
6
+ export * from "./cache";
7
+ export * from "./discovery";
8
+ export * from "./safety";
9
+ export * from "./store";
10
+ export * from "./render";
11
+ export * from "./proposal";
12
+ export * from "./safe-file";
13
+ export * from "./staged-apply";
14
+ export declare function scanProjectBrain(options?: ProjectBrainScanOptions): Promise<ProjectBrainScanResult>;
15
+ export declare function scanAllProjectBrains(options?: ScanAllProjectBrainsOptions): Promise<ProjectBrainBatchResult>;
16
+ export declare function validateProjectBrain(options?: {
17
+ path?: string;
18
+ project?: string;
19
+ }): Promise<{
20
+ valid: boolean;
21
+ errors: string[];
22
+ scan?: ProjectBrainScan;
23
+ }>;
24
+ export declare function showProjectBrain(options?: {
25
+ project?: string;
26
+ workspace?: string;
27
+ revision?: string;
28
+ brainRoot?: string;
29
+ }): Promise<{
30
+ readiness: {
31
+ ready: boolean;
32
+ reason?: string;
33
+ };
34
+ revision?: string;
35
+ workspaceRef?: string;
36
+ availableWorkspaceRefs?: string[];
37
+ snapshot?: ProjectBrainScan;
38
+ }>;
39
+ export declare function getProjectBrainEnvelope(options?: {
40
+ project?: string;
41
+ workspace?: string;
42
+ revision?: string;
43
+ brainRoot?: string;
44
+ }): Promise<{
45
+ readiness: {
46
+ ready: boolean;
47
+ reason?: string;
48
+ };
49
+ revision?: string;
50
+ workspaceRef?: string;
51
+ availableWorkspaceRefs?: string[];
52
+ snapshot?: ProjectBrainScan;
53
+ }>;
54
+ export { BrainSafetyError, defaultBrainRoot };
55
+ //# sourceMappingURL=index.d.ts.map