youmd 0.9.7 → 0.10.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/dist/commands/brain.d.ts +25 -0
- package/dist/commands/brain.d.ts.map +1 -0
- package/dist/commands/brain.js +683 -0
- package/dist/commands/brain.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +4 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/machine.d.ts +1 -0
- package/dist/commands/machine.d.ts.map +1 -1
- package/dist/commands/machine.js +52 -4
- package/dist/commands/machine.js.map +1 -1
- package/dist/commands/mine.d.ts +46 -0
- package/dist/commands/mine.d.ts.map +1 -0
- package/dist/commands/mine.js +317 -0
- package/dist/commands/mine.js.map +1 -0
- package/dist/commands/orchestrate.d.ts.map +1 -1
- package/dist/commands/orchestrate.js +37 -3
- package/dist/commands/orchestrate.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +24 -0
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/prompts.d.ts.map +1 -1
- package/dist/commands/prompts.js +5 -2
- package/dist/commands/prompts.js.map +1 -1
- package/dist/commands/remote.d.ts.map +1 -1
- package/dist/commands/remote.js +42 -13
- package/dist/commands/remote.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +2 -0
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/tasks.d.ts +54 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +513 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/generated/capability-registry.d.ts +1096 -0
- package/dist/generated/capability-registry.d.ts.map +1 -0
- package/dist/generated/capability-registry.js +1204 -0
- package/dist/generated/capability-registry.js.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +76 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +18 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/brain/adapters.d.ts +34 -0
- package/dist/lib/brain/adapters.d.ts.map +1 -0
- package/dist/lib/brain/adapters.js +362 -0
- package/dist/lib/brain/adapters.js.map +1 -0
- package/dist/lib/brain/apply-control-plane.d.ts +17 -0
- package/dist/lib/brain/apply-control-plane.d.ts.map +1 -0
- package/dist/lib/brain/apply-control-plane.js +117 -0
- package/dist/lib/brain/apply-control-plane.js.map +1 -0
- package/dist/lib/brain/cache.d.ts +25 -0
- package/dist/lib/brain/cache.d.ts.map +1 -0
- package/dist/lib/brain/cache.js +99 -0
- package/dist/lib/brain/cache.js.map +1 -0
- package/dist/lib/brain/canonical.d.ts +5 -0
- package/dist/lib/brain/canonical.d.ts.map +1 -0
- package/dist/lib/brain/canonical.js +38 -0
- package/dist/lib/brain/canonical.js.map +1 -0
- package/dist/lib/brain/discovery.d.ts +9 -0
- package/dist/lib/brain/discovery.d.ts.map +1 -0
- package/dist/lib/brain/discovery.js +560 -0
- package/dist/lib/brain/discovery.js.map +1 -0
- package/dist/lib/brain/index.d.ts +55 -0
- package/dist/lib/brain/index.d.ts.map +1 -0
- package/dist/lib/brain/index.js +384 -0
- package/dist/lib/brain/index.js.map +1 -0
- package/dist/lib/brain/proposal.d.ts +179 -0
- package/dist/lib/brain/proposal.d.ts.map +1 -0
- package/dist/lib/brain/proposal.js +694 -0
- package/dist/lib/brain/proposal.js.map +1 -0
- package/dist/lib/brain/render.d.ts +33 -0
- package/dist/lib/brain/render.d.ts.map +1 -0
- package/dist/lib/brain/render.js +515 -0
- package/dist/lib/brain/render.js.map +1 -0
- package/dist/lib/brain/safe-file.d.ts +110 -0
- package/dist/lib/brain/safe-file.d.ts.map +1 -0
- package/dist/lib/brain/safe-file.js +564 -0
- package/dist/lib/brain/safe-file.js.map +1 -0
- package/dist/lib/brain/safety.d.ts +8 -0
- package/dist/lib/brain/safety.d.ts.map +1 -0
- package/dist/lib/brain/safety.js +42 -0
- package/dist/lib/brain/safety.js.map +1 -0
- package/dist/lib/brain/staged-apply.d.ts +57 -0
- package/dist/lib/brain/staged-apply.d.ts.map +1 -0
- package/dist/lib/brain/staged-apply.js +336 -0
- package/dist/lib/brain/staged-apply.js.map +1 -0
- package/dist/lib/brain/store.d.ts +26 -0
- package/dist/lib/brain/store.d.ts.map +1 -0
- package/dist/lib/brain/store.js +504 -0
- package/dist/lib/brain/store.js.map +1 -0
- package/dist/lib/brain/types.d.ts +160 -0
- package/dist/lib/brain/types.d.ts.map +1 -0
- package/dist/lib/brain/types.js +24 -0
- package/dist/lib/brain/types.js.map +1 -0
- package/dist/lib/config.d.ts +22 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +70 -14
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/daemon.d.ts +27 -0
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/daemon.js +57 -0
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/machine-identity.d.ts +16 -0
- package/dist/lib/machine-identity.d.ts.map +1 -0
- package/dist/lib/machine-identity.js +101 -0
- package/dist/lib/machine-identity.js.map +1 -0
- package/dist/lib/orchestrator/approvals.d.ts +21 -0
- package/dist/lib/orchestrator/approvals.d.ts.map +1 -0
- package/dist/lib/orchestrator/approvals.js +65 -0
- package/dist/lib/orchestrator/approvals.js.map +1 -0
- package/dist/lib/orchestrator/loop.d.ts +1 -0
- package/dist/lib/orchestrator/loop.d.ts.map +1 -1
- package/dist/lib/orchestrator/loop.js +16 -0
- package/dist/lib/orchestrator/loop.js.map +1 -1
- package/dist/lib/orchestrator/supervisor.d.ts +41 -0
- package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
- package/dist/lib/orchestrator/supervisor.js +49 -0
- package/dist/lib/orchestrator/supervisor.js.map +1 -1
- package/dist/lib/orchestrator/tools.d.ts +11 -0
- package/dist/lib/orchestrator/tools.d.ts.map +1 -1
- package/dist/lib/orchestrator/tools.js +143 -0
- package/dist/lib/orchestrator/tools.js.map +1 -1
- package/dist/lib/project-strategy.d.ts +38 -0
- package/dist/lib/project-strategy.d.ts.map +1 -1
- package/dist/lib/project-strategy.js +91 -0
- package/dist/lib/project-strategy.js.map +1 -1
- package/dist/lib/projectContext.d.ts +6 -4
- package/dist/lib/projectContext.d.ts.map +1 -1
- package/dist/lib/projectContext.js +19 -17
- package/dist/lib/projectContext.js.map +1 -1
- package/dist/lib/redact.d.ts +15 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +62 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/tasksFile.d.ts +74 -0
- package/dist/lib/tasksFile.d.ts.map +1 -0
- package/dist/lib/tasksFile.js +502 -0
- package/dist/lib/tasksFile.js.map +1 -0
- package/dist/mcp/registry.d.ts +8 -2
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +189 -2
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -2
- package/dist/mcp/server.js.map +1 -1
- 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
|