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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAA+D,MAAM,SAAS,CAAC;AACxG,OAAO,EAIL,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAE5B,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AA2I/B,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA+B7G;AAED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuEtH;AAED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAkBpK;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAE3S;AAED,wBAAsB,uBAAuB,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAUlT;AAED,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,384 @@
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
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.defaultBrainRoot = exports.BrainSafetyError = void 0;
40
+ exports.scanProjectBrain = scanProjectBrain;
41
+ exports.scanAllProjectBrains = scanAllProjectBrains;
42
+ exports.validateProjectBrain = validateProjectBrain;
43
+ exports.showProjectBrain = showProjectBrain;
44
+ exports.getProjectBrainEnvelope = getProjectBrainEnvelope;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const canonical_1 = require("./canonical");
48
+ const cache_1 = require("./cache");
49
+ const discovery_1 = require("./discovery");
50
+ const safety_1 = require("./safety");
51
+ Object.defineProperty(exports, "BrainSafetyError", { enumerable: true, get: function () { return safety_1.BrainSafetyError; } });
52
+ const store_1 = require("./store");
53
+ Object.defineProperty(exports, "defaultBrainRoot", { enumerable: true, get: function () { return store_1.defaultBrainRoot; } });
54
+ const types_1 = require("./types");
55
+ __exportStar(require("./types"), exports);
56
+ __exportStar(require("./canonical"), exports);
57
+ __exportStar(require("./cache"), exports);
58
+ __exportStar(require("./discovery"), exports);
59
+ __exportStar(require("./safety"), exports);
60
+ __exportStar(require("./store"), exports);
61
+ __exportStar(require("./render"), exports);
62
+ __exportStar(require("./proposal"), exports);
63
+ __exportStar(require("./safe-file"), exports);
64
+ __exportStar(require("./staged-apply"), exports);
65
+ const PREIMAGE_FIELDS = ["$schema", "schemaVersion", "kind", "workspaceRef", "workspaceIdentity", "rootPath", "generatedExcludes", "projects"];
66
+ const VOLATILE_EXCLUSIONS = [
67
+ "scannedAt",
68
+ "projects[*].provenance.indexedAt",
69
+ "projects[*].provenance.freshness.checkedAt",
70
+ "projects[*].artifacts[*].provenance.indexedAt",
71
+ "projects[*].artifacts[*].provenance.freshness.checkedAt",
72
+ ];
73
+ function revisionPreimage(scan) {
74
+ const projects = scan.projects.map((project) => ({
75
+ ...project,
76
+ provenance: { ...project.provenance, indexedAt: undefined, freshness: { ...project.provenance.freshness, checkedAt: undefined } },
77
+ artifacts: project.artifacts.map((artifact) => ({
78
+ ...artifact,
79
+ provenance: { ...artifact.provenance, indexedAt: undefined, freshness: { ...artifact.provenance.freshness, checkedAt: undefined } },
80
+ })),
81
+ }));
82
+ return {
83
+ $schema: scan.$schema,
84
+ schemaVersion: scan.schemaVersion,
85
+ kind: scan.kind,
86
+ workspaceRef: scan.workspaceRef,
87
+ workspaceIdentity: scan.workspaceIdentity,
88
+ rootPath: scan.rootPath,
89
+ generatedExcludes: scan.generatedExcludes,
90
+ projects,
91
+ };
92
+ }
93
+ function validateSnapshot(scan) {
94
+ const errors = [];
95
+ if (!scan || typeof scan !== "object")
96
+ return ["snapshot must be an object"];
97
+ const value = scan;
98
+ if (value.$schema !== types_1.PROJECT_BRAIN_SCAN_SCHEMA)
99
+ errors.push("unsupported $schema");
100
+ if (value.schemaVersion !== types_1.PROJECT_BRAIN_SCAN_VERSION)
101
+ errors.push("unsupported schemaVersion");
102
+ if (!/^scan:[a-f0-9]{64}$/.test(value.scanRef || ""))
103
+ errors.push("invalid scanRef");
104
+ if (!/^workspace:[a-f0-9]{64}$/.test(value.workspaceRef || ""))
105
+ errors.push("invalid workspaceRef");
106
+ if (!Array.isArray(value.projects))
107
+ errors.push("projects must be an array");
108
+ if (!/^sha256:[a-f0-9]{64}$/.test(value.revision?.digest || ""))
109
+ errors.push("invalid revision digest");
110
+ const identity = value.workspaceIdentity;
111
+ if (!identity || !/^machine:sha256:[a-f0-9]{64}$/.test(identity.machineRef)
112
+ || !/^repository:sha256:[a-f0-9]{64}$/.test(identity.repositoryRef)
113
+ || !/^worktree:sha256:[a-f0-9]{64}$/.test(identity.worktreeRef)
114
+ || !/^branch:sha256:[a-f0-9]{64}$/.test(identity.branchRef))
115
+ errors.push("invalid workspaceIdentity");
116
+ else if (value.workspaceRef !== `workspace:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(identity))}`)
117
+ errors.push("workspaceRef does not match workspaceIdentity");
118
+ const projectRef = /^project:[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/;
119
+ const artifactRef = /^artifact:[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?\/[a-z0-9][a-z0-9._-]{0,95}$/;
120
+ const subjectRef = /^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])?)*$/;
121
+ const policies = new Set(["read_only", "propose", "managed_write", "task_write"]);
122
+ if (Array.isArray(value.projects))
123
+ for (const [projectIndex, project] of value.projects.entries()) {
124
+ const prefix = `projects[${projectIndex}]`;
125
+ if (!projectRef.test(project.projectRef))
126
+ errors.push(`${prefix}.projectRef is invalid`);
127
+ if (!(0, discovery_1.isSafeRelativePath)(project.contextRoot))
128
+ errors.push(`${prefix}.contextRoot is unsafe`);
129
+ if (!policies.has(project.writePolicy))
130
+ errors.push(`${prefix}.writePolicy is invalid`);
131
+ if (project.management !== "declared" && project.writePolicy !== "read_only")
132
+ errors.push(`${prefix} unmanaged projects must be read_only`);
133
+ if (project.taskWrite?.enabled && (!artifactRef.test(project.taskWrite.artifactRef || "") || project.management !== "declared"))
134
+ errors.push(`${prefix}.taskWrite authority is invalid`);
135
+ if (!subjectRef.test(project.provenance?.sourceRef || ""))
136
+ errors.push(`${prefix}.provenance.sourceRef is invalid`);
137
+ for (const [artifactIndex, artifact] of (project.artifacts || []).entries()) {
138
+ const artifactPrefix = `${prefix}.artifacts[${artifactIndex}]`;
139
+ if (!artifactRef.test(artifact.artifactRef))
140
+ errors.push(`${artifactPrefix}.artifactRef is invalid`);
141
+ if (!subjectRef.test(artifact.subjectRef))
142
+ errors.push(`${artifactPrefix}.subjectRef is invalid`);
143
+ if (!(0, discovery_1.isSafeRelativePath)(artifact.path))
144
+ errors.push(`${artifactPrefix}.path is unsafe`);
145
+ if (!policies.has(artifact.writePolicy))
146
+ errors.push(`${artifactPrefix}.writePolicy is invalid`);
147
+ if (project.management !== "declared" && artifact.writePolicy !== "read_only")
148
+ errors.push(`${artifactPrefix} unmanaged artifacts must be read_only`);
149
+ if (!subjectRef.test(artifact.provenance?.sourceRef || ""))
150
+ errors.push(`${artifactPrefix}.provenance.sourceRef is invalid`);
151
+ }
152
+ }
153
+ if (value.revision?.canonicalization !== "RFC8785" || value.revision?.hashAlgorithm !== "SHA-256")
154
+ errors.push("invalid revision algorithm contract");
155
+ if ((0, canonical_1.canonicalize)(value.revision?.preimageFields) !== (0, canonical_1.canonicalize)(PREIMAGE_FIELDS))
156
+ errors.push("invalid revision preimage fields");
157
+ if ((0, canonical_1.canonicalize)(value.revision?.volatileExclusions) !== (0, canonical_1.canonicalize)(VOLATILE_EXCLUSIONS))
158
+ errors.push("invalid volatile exclusions");
159
+ if (errors.length === 0) {
160
+ const complete = value;
161
+ const { scanRef: _scanRef, revision: _revision, ...base } = complete;
162
+ const digest = (0, canonical_1.sha256)((0, canonical_1.canonicalize)(revisionPreimage(base)));
163
+ if (complete.revision.digest !== `sha256:${digest}`)
164
+ errors.push("revision digest does not match canonical snapshot evidence");
165
+ if (complete.scanRef !== `scan:${digest}`)
166
+ errors.push("scanRef does not match revision digest");
167
+ }
168
+ return errors;
169
+ }
170
+ function buildWorkspaceScan(root, projects, indexedAt, machineId) {
171
+ const identity = (0, discovery_1.workspaceIdentity)(root, machineId);
172
+ const workspaceRef = `workspace:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(identity))}`;
173
+ const base = {
174
+ $schema: types_1.PROJECT_BRAIN_SCAN_SCHEMA,
175
+ schemaVersion: types_1.PROJECT_BRAIN_SCAN_VERSION,
176
+ kind: "project-brain-scan",
177
+ workspaceRef,
178
+ workspaceIdentity: identity,
179
+ scannedAt: indexedAt,
180
+ rootPath: ".",
181
+ generatedExcludes: (0, discovery_1.defaultGeneratedExcludes)(),
182
+ projects,
183
+ };
184
+ const digest = (0, canonical_1.sha256)((0, canonical_1.canonicalize)(revisionPreimage(base)));
185
+ return {
186
+ ...base,
187
+ scanRef: `scan:${digest}`,
188
+ revision: {
189
+ canonicalization: "RFC8785",
190
+ hashAlgorithm: "SHA-256",
191
+ preimageFields: PREIMAGE_FIELDS,
192
+ volatileExclusions: VOLATILE_EXCLUSIONS,
193
+ digest: `sha256:${digest}`,
194
+ },
195
+ };
196
+ }
197
+ function scanWorkspaceRoot(root, options) {
198
+ const indexedAt = (options.now || new Date()).toISOString();
199
+ const diagnostics = [];
200
+ const mode = (0, discovery_1.effectiveContentMode)(options.contentMode);
201
+ const cache = options.persist ? cache_1.BrainContentCache.load(options.brainRoot || (0, store_1.defaultBrainRoot)()) : undefined;
202
+ if (mode === "metadata")
203
+ diagnostics.push({ code: "metadata_only", message: "safe content scanning unavailable or disabled; revisions use metadata only" });
204
+ if (options.signal?.aborted) {
205
+ const error = new Error("project brain scan cancelled");
206
+ error.name = "AbortError";
207
+ throw error;
208
+ }
209
+ const project = (0, discovery_1.scanOneProject)(root, mode, indexedAt, diagnostics, cache);
210
+ const scan = buildWorkspaceScan(root, [project], indexedAt, options.machineId);
211
+ const persistence = options.persist ? (0, store_1.persistBrainScan)(scan, options.brainRoot, options.canaries, {
212
+ signal: options.signal,
213
+ cache,
214
+ faultInjection: options.faultInjection,
215
+ lockTimeoutMs: options.lockTimeoutMs,
216
+ lockStaleMs: options.lockStaleMs,
217
+ }) : undefined;
218
+ return { scan, diagnostics, persistence };
219
+ }
220
+ function emptyWorkspaceResult(root, options, diagnostic) {
221
+ const indexedAt = (options.now || new Date()).toISOString();
222
+ return { scan: buildWorkspaceScan(root, [], indexedAt, options.machineId), diagnostics: [diagnostic] };
223
+ }
224
+ async function scanProjectBrain(options = {}) {
225
+ const projectAsPath = options.project && (path.isAbsolute(options.project) || options.project.startsWith(".") || options.project.includes("/") || options.project.includes("\\"))
226
+ ? path.resolve(options.project)
227
+ : null;
228
+ const projectFilter = options.project && !projectAsPath ? options.project.replace(/^project:/, "").toLowerCase() : null;
229
+ const inputRoots = options.roots?.length ? options.roots : [projectAsPath || process.cwd()];
230
+ const roots = inputRoots.map((root) => path.resolve(root));
231
+ const mode = (0, discovery_1.effectiveContentMode)(options.contentMode);
232
+ const projectRoots = (0, discovery_1.discoverProjectRoots)(roots, options.maxDepth, options.signal);
233
+ let selectedRoot;
234
+ if (projectFilter) {
235
+ for (const candidateRoot of projectRoots) {
236
+ const candidate = (0, discovery_1.scanOneProject)(candidateRoot, mode, (options.now || new Date()).toISOString(), []);
237
+ if (candidate.projectRef === `project:${projectFilter}`) {
238
+ selectedRoot = candidateRoot;
239
+ break;
240
+ }
241
+ }
242
+ }
243
+ else if (projectAsPath && projectRoots.includes(projectAsPath))
244
+ selectedRoot = projectAsPath;
245
+ else
246
+ selectedRoot = projectRoots[0];
247
+ if (!selectedRoot)
248
+ return emptyWorkspaceResult(roots[0], options, {
249
+ code: "not_found",
250
+ project: projectFilter ? `project:${projectFilter}` : undefined,
251
+ message: "logical project was not found under the scan roots",
252
+ });
253
+ const result = scanWorkspaceRoot(selectedRoot, options);
254
+ if (projectRoots.length > 1)
255
+ result.diagnostics.push({
256
+ code: "multiple_workspaces",
257
+ project: result.scan.projects[0]?.projectRef,
258
+ workspaceRef: result.scan.workspaceRef,
259
+ message: "multiple workspaces were discovered; scanProjectBrain selected one workspace—use scanAllProjectBrains for the complete batch",
260
+ });
261
+ return result;
262
+ }
263
+ async function scanAllProjectBrains(options = {}) {
264
+ const roots = (options.roots?.length ? options.roots : [process.cwd()]).map((root) => path.resolve(root));
265
+ const cancelledResult = () => ({
266
+ schemaVersion: "you-md/project-brain-batch/v1",
267
+ kind: "project-brain-batch",
268
+ workspaces: [],
269
+ diagnostics: [{ code: "cancelled", message: "project brain batch scan was cancelled" }],
270
+ readiness: { status: "cancelled", total: 0, ready: 0, degraded: 0, unavailable: 0, cancelled: true },
271
+ });
272
+ if (options.signal?.aborted)
273
+ return cancelledResult();
274
+ let projectRoots;
275
+ try {
276
+ projectRoots = (0, discovery_1.discoverProjectRoots)(roots, options.maxDepth, options.signal);
277
+ }
278
+ catch (error) {
279
+ return options.signal?.aborted || error.name === "AbortError" ? cancelledResult() : {
280
+ schemaVersion: "you-md/project-brain-batch/v1",
281
+ kind: "project-brain-batch",
282
+ workspaces: [],
283
+ diagnostics: [{ code: "scan_failed", message: "project brain workspace discovery failed" }],
284
+ readiness: { status: "unavailable", total: 0, ready: 0, degraded: 0, unavailable: 1, cancelled: false },
285
+ };
286
+ }
287
+ const workspaces = [];
288
+ const diagnostics = [];
289
+ let unavailable = 0;
290
+ let cancelled = false;
291
+ for (const projectRoot of projectRoots) {
292
+ if (options.signal?.aborted) {
293
+ cancelled = true;
294
+ break;
295
+ }
296
+ try {
297
+ const result = scanWorkspaceRoot(projectRoot, options);
298
+ const projectRef = result.scan.projects[0].projectRef;
299
+ const workspaceDiagnostics = result.diagnostics.map((diagnostic) => ({ ...diagnostic, project: diagnostic.project || projectRef, workspaceRef: result.scan.workspaceRef }));
300
+ const degraded = workspaceDiagnostics.length > 0;
301
+ workspaces.push({
302
+ projectRef,
303
+ workspaceRef: result.scan.workspaceRef,
304
+ revision: result.scan.revision.digest,
305
+ readiness: { ready: true, status: degraded ? "degraded" : "ready" },
306
+ scan: result.scan,
307
+ diagnostics: workspaceDiagnostics,
308
+ persistence: result.persistence ? {
309
+ revision: result.persistence.revision,
310
+ written: result.persistence.written,
311
+ cacheHits: result.persistence.cacheHits,
312
+ cacheMisses: result.persistence.cacheMisses,
313
+ recovered: result.persistence.recovered,
314
+ } : undefined,
315
+ });
316
+ diagnostics.push(...workspaceDiagnostics);
317
+ }
318
+ catch (error) {
319
+ const isCancelled = options.signal?.aborted || error.name === "AbortError";
320
+ const identity = (0, discovery_1.workspaceIdentity)(projectRoot, options.machineId);
321
+ diagnostics.push({
322
+ code: isCancelled ? "cancelled" : "scan_failed",
323
+ workspaceRef: `workspace:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(identity))}`,
324
+ message: isCancelled ? "project brain workspace scan was cancelled" : "project brain workspace scan failed",
325
+ });
326
+ if (isCancelled) {
327
+ cancelled = true;
328
+ break;
329
+ }
330
+ unavailable += 1;
331
+ }
332
+ }
333
+ workspaces.sort((a, b) => a.projectRef.localeCompare(b.projectRef) || a.workspaceRef.localeCompare(b.workspaceRef));
334
+ const ready = workspaces.filter((workspace) => workspace.readiness.status === "ready").length;
335
+ const degraded = workspaces.length - ready;
336
+ if (cancelled)
337
+ unavailable += Math.max(0, projectRoots.length - workspaces.length - unavailable);
338
+ const status = cancelled ? "cancelled" : unavailable > 0 ? (workspaces.length ? "degraded" : "unavailable") : degraded > 0 ? "degraded" : "ready";
339
+ return {
340
+ schemaVersion: "you-md/project-brain-batch/v1",
341
+ kind: "project-brain-batch",
342
+ workspaces,
343
+ diagnostics,
344
+ readiness: { status, total: projectRoots.length, ready, degraded, unavailable, cancelled },
345
+ };
346
+ }
347
+ async function validateProjectBrain(options = {}) {
348
+ if (options.path) {
349
+ try {
350
+ const scan = JSON.parse(fs.readFileSync(path.resolve(options.path), "utf8"));
351
+ const errors = validateSnapshot(scan);
352
+ return { valid: errors.length === 0, errors, scan };
353
+ }
354
+ catch (error) {
355
+ return { valid: false, errors: [error instanceof SyntaxError ? "snapshot is not valid JSON" : "snapshot could not be read"] };
356
+ }
357
+ }
358
+ try {
359
+ const result = await scanProjectBrain({ project: options.project, persist: false });
360
+ if (options.project && result.scan.projects.length === 0)
361
+ return { valid: false, errors: ["project was not found under the scan roots"], scan: result.scan };
362
+ const errors = validateSnapshot(result.scan);
363
+ return { valid: errors.length === 0, errors, scan: result.scan };
364
+ }
365
+ catch (error) {
366
+ return { valid: false, errors: [error instanceof safety_1.BrainSafetyError ? error.code : "scan failed"] };
367
+ }
368
+ }
369
+ async function showProjectBrain(options = {}) {
370
+ return getProjectBrainEnvelope(options);
371
+ }
372
+ async function getProjectBrainEnvelope(options = {}) {
373
+ const snapshot = (0, store_1.readBrainSnapshot)(options);
374
+ if (!snapshot)
375
+ return { readiness: { ready: false, reason: "not_indexed" } };
376
+ return {
377
+ readiness: { ready: true },
378
+ revision: snapshot.revision.digest,
379
+ workspaceRef: snapshot.workspaceRef,
380
+ availableWorkspaceRefs: (0, store_1.listBrainWorkspaceRefs)(options.brainRoot || (0, store_1.defaultBrainRoot)(), options.project || snapshot.projects[0]?.projectRef),
381
+ snapshot,
382
+ };
383
+ }
384
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/brain/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import { BrainAuthority, BrainOwner, ProjectBrainScan } from "./types";
2
+ export declare const PROJECT_BRAIN_OVERRIDE_VERSION: "you-md/project-brain-override/v1";
3
+ export declare const PROJECT_BRAIN_PROPOSAL_SCHEMA: "https://you.md/schemas/project-brain-proposal/v1";
4
+ export declare const PROJECT_BRAIN_PROPOSAL_VERSION: "you-md/project-brain-proposal/v1";
5
+ export type ProjectBrainJson = null | boolean | number | string | ProjectBrainJson[] | {
6
+ [key: string]: ProjectBrainJson;
7
+ };
8
+ export type ProjectBrainPatchOperation = {
9
+ op: "add" | "replace" | "test";
10
+ path: string;
11
+ value: ProjectBrainJson;
12
+ } | {
13
+ op: "remove";
14
+ path: string;
15
+ };
16
+ export interface ProjectBrainPatchValueState {
17
+ present: boolean;
18
+ value?: ProjectBrainJson;
19
+ }
20
+ export interface ProjectBrainPatchDiffOperation {
21
+ index: number;
22
+ op: ProjectBrainPatchOperation["op"];
23
+ path: string;
24
+ before: ProjectBrainPatchValueState;
25
+ after: ProjectBrainPatchValueState;
26
+ }
27
+ export interface ProjectBrainExactDiff {
28
+ format: "rfc6902";
29
+ beforeDigest: string;
30
+ afterDigest: string;
31
+ operations: ProjectBrainPatchDiffOperation[];
32
+ }
33
+ export interface ProjectBrainUnifiedDiffHunk {
34
+ oldStart: number;
35
+ oldLines: number;
36
+ newStart: number;
37
+ newLines: number;
38
+ lines: string[];
39
+ }
40
+ export interface ProjectBrainUnifiedDiffPatch {
41
+ text: string;
42
+ oldPath: string;
43
+ newPath: string;
44
+ hunks: ProjectBrainUnifiedDiffHunk[];
45
+ }
46
+ export interface ProjectBrainUnifiedDiff {
47
+ format: "unified_diff";
48
+ beforeDigest: string;
49
+ afterDigest: string;
50
+ hunks: ProjectBrainUnifiedDiffHunk[];
51
+ }
52
+ type ProjectBrainApprovalBindings = [
53
+ "proposalRef",
54
+ "projectRef",
55
+ "machineRef",
56
+ "workspaceRef",
57
+ "baseRevision",
58
+ "target.baseContentHash",
59
+ "source.sourceRevision",
60
+ "patchFormat",
61
+ "patchDigest"
62
+ ];
63
+ interface ProjectBrainProposalCommon {
64
+ $schema: typeof PROJECT_BRAIN_PROPOSAL_SCHEMA;
65
+ schemaVersion: typeof PROJECT_BRAIN_PROPOSAL_VERSION;
66
+ kind: "project-brain-proposal";
67
+ proposalRef: string;
68
+ proposalType: "descriptor_adoption" | "personal_override" | "artifact_update";
69
+ projectRef: string;
70
+ machineRef: string;
71
+ workspaceRef: string;
72
+ baseRevision: string;
73
+ requestedCapability: "brain.descriptor.adopt" | "brain.override.propose" | "brain.artifact.update";
74
+ rationale: string;
75
+ status: "proposed";
76
+ target: {
77
+ kind: "repository_file" | "project_snapshot";
78
+ artifactRef: string;
79
+ path?: string;
80
+ owner: BrainOwner;
81
+ authority: BrainAuthority;
82
+ humanOwned: true;
83
+ exists: boolean;
84
+ baseContentHash: string;
85
+ };
86
+ approval: {
87
+ required: true;
88
+ policy: "fresh_exact_patch";
89
+ reusable: false;
90
+ maxAgeSeconds: 900;
91
+ bindingFields: ProjectBrainApprovalBindings;
92
+ };
93
+ source: {
94
+ kind: "override" | "legacy_marker" | "heuristic_scan" | "hosted_request";
95
+ sourceRef: string;
96
+ sourceRevision: string;
97
+ path?: string;
98
+ };
99
+ }
100
+ export interface ProjectBrainRfc6902Proposal extends ProjectBrainProposalCommon {
101
+ patchFormat: "rfc6902";
102
+ patchDigest: string;
103
+ patch: ProjectBrainPatchOperation[];
104
+ diff: ProjectBrainExactDiff;
105
+ }
106
+ export interface ProjectBrainUnifiedDiffProposal extends ProjectBrainProposalCommon {
107
+ patchFormat: "unified_diff";
108
+ patchDigest: string;
109
+ patch: ProjectBrainUnifiedDiffPatch;
110
+ diff: ProjectBrainUnifiedDiff;
111
+ }
112
+ export type ProjectBrainProposal = ProjectBrainRfc6902Proposal | ProjectBrainUnifiedDiffProposal;
113
+ export type ProjectBrainOverrideProposal = ProjectBrainRfc6902Proposal;
114
+ export interface ProjectBrainOverrideDocument {
115
+ $schema: "https://you.md/schemas/project-brain-override/v1";
116
+ schemaVersion: typeof PROJECT_BRAIN_OVERRIDE_VERSION;
117
+ kind: "project-brain-override";
118
+ projectRef: string;
119
+ baseRevision: string;
120
+ rationale: string;
121
+ patch: ProjectBrainPatchOperation[];
122
+ }
123
+ export interface ProjectBrainOverrideSource {
124
+ sourcePath: string;
125
+ content: string;
126
+ }
127
+ export type ProjectBrainProposalErrorCode = "unsafe_source_path" | "invalid_json" | "invalid_override" | "unknown_project" | "stale_base" | "unsafe_patch" | "secret_detected" | "invalid_patch" | "patch_test_failed" | "not_adoptable" | "invalid_proposal" | "proposal_ref_mismatch" | "patch_digest_mismatch" | "approval_binding_mismatch";
128
+ export interface ProjectBrainProposalError {
129
+ sourceRef: string;
130
+ code: ProjectBrainProposalErrorCode;
131
+ message: string;
132
+ operationIndex?: number;
133
+ }
134
+ export interface ProjectBrainOverrideError extends ProjectBrainProposalError {
135
+ sourcePath: string;
136
+ }
137
+ export interface ProjectBrainProposalGenerationResult {
138
+ proposals: ProjectBrainProposal[];
139
+ errors: ProjectBrainProposalError[];
140
+ }
141
+ export interface ProjectBrainOverrideImportResult {
142
+ proposals: ProjectBrainProposal[];
143
+ errors: ProjectBrainOverrideError[];
144
+ }
145
+ export interface ProjectBrainPatchValidationResult {
146
+ valid: boolean;
147
+ errors: ProjectBrainProposalError[];
148
+ patch?: ProjectBrainPatchOperation[];
149
+ patchDigest?: string;
150
+ result?: ProjectBrainJson;
151
+ diff?: ProjectBrainExactDiff;
152
+ }
153
+ /** Pure RFC6902-style validation and evaluation. This function has no filesystem capability. */
154
+ export declare function validateProjectBrainPatch(base: unknown, rawPatch: unknown, sourceRef?: string): ProjectBrainPatchValidationResult;
155
+ export interface ProjectBrainUnifiedDiffValidationResult {
156
+ valid: boolean;
157
+ errors: ProjectBrainProposalError[];
158
+ patch?: ProjectBrainUnifiedDiffPatch;
159
+ patchDigest?: string;
160
+ }
161
+ export interface ProjectBrainProposalValidationResult {
162
+ valid: boolean;
163
+ errors: ProjectBrainProposalError[];
164
+ proposal?: ProjectBrainProposal;
165
+ }
166
+ /** Strictly normalize the hosted text variant without converting it to RFC6902. */
167
+ export declare function validateProjectBrainUnifiedDiffPatch(raw: unknown, sourceRef?: string): ProjectBrainUnifiedDiffValidationResult;
168
+ /** Validate a transport proposal envelope without approving or applying it. */
169
+ export declare function validateProjectBrainProposal(value: unknown): ProjectBrainProposalValidationResult;
170
+ /** Generate review-only `.you-project` adoption proposals. No target file is created or changed. */
171
+ export declare function proposeProjectBrainAdoption(scan: ProjectBrainScan, options?: {
172
+ projectRef?: string;
173
+ name?: string;
174
+ rationale?: string;
175
+ }): ProjectBrainProposalGenerationResult;
176
+ /** Import explicit personal overrides as exact proposals only. No patch is applied here. */
177
+ export declare function importProjectBrainOverrides(scan: ProjectBrainScan, sources: ProjectBrainOverrideSource[]): ProjectBrainOverrideImportResult;
178
+ export {};
179
+ //# sourceMappingURL=proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/proposal.ts"],"names":[],"mappings":"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"}