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.
Files changed (149) 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 +1 -0
  9. package/dist/commands/machine.d.ts.map +1 -1
  10. package/dist/commands/machine.js +52 -4
  11. package/dist/commands/machine.js.map +1 -1
  12. package/dist/commands/mine.d.ts +46 -0
  13. package/dist/commands/mine.d.ts.map +1 -0
  14. package/dist/commands/mine.js +317 -0
  15. package/dist/commands/mine.js.map +1 -0
  16. package/dist/commands/orchestrate.d.ts.map +1 -1
  17. package/dist/commands/orchestrate.js +37 -3
  18. package/dist/commands/orchestrate.js.map +1 -1
  19. package/dist/commands/project.d.ts.map +1 -1
  20. package/dist/commands/project.js +24 -0
  21. package/dist/commands/project.js.map +1 -1
  22. package/dist/commands/prompts.d.ts.map +1 -1
  23. package/dist/commands/prompts.js +5 -2
  24. package/dist/commands/prompts.js.map +1 -1
  25. package/dist/commands/remote.d.ts.map +1 -1
  26. package/dist/commands/remote.js +42 -13
  27. package/dist/commands/remote.js.map +1 -1
  28. package/dist/commands/skill.d.ts.map +1 -1
  29. package/dist/commands/skill.js +2 -0
  30. package/dist/commands/skill.js.map +1 -1
  31. package/dist/commands/tasks.d.ts +54 -0
  32. package/dist/commands/tasks.d.ts.map +1 -0
  33. package/dist/commands/tasks.js +513 -0
  34. package/dist/commands/tasks.js.map +1 -0
  35. package/dist/generated/capability-registry.d.ts +1096 -0
  36. package/dist/generated/capability-registry.d.ts.map +1 -0
  37. package/dist/generated/capability-registry.js +1204 -0
  38. package/dist/generated/capability-registry.js.map +1 -0
  39. package/dist/index.js +68 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/lib/api.d.ts +76 -0
  42. package/dist/lib/api.d.ts.map +1 -1
  43. package/dist/lib/api.js +18 -0
  44. package/dist/lib/api.js.map +1 -1
  45. package/dist/lib/brain/adapters.d.ts +34 -0
  46. package/dist/lib/brain/adapters.d.ts.map +1 -0
  47. package/dist/lib/brain/adapters.js +362 -0
  48. package/dist/lib/brain/adapters.js.map +1 -0
  49. package/dist/lib/brain/apply-control-plane.d.ts +17 -0
  50. package/dist/lib/brain/apply-control-plane.d.ts.map +1 -0
  51. package/dist/lib/brain/apply-control-plane.js +117 -0
  52. package/dist/lib/brain/apply-control-plane.js.map +1 -0
  53. package/dist/lib/brain/cache.d.ts +25 -0
  54. package/dist/lib/brain/cache.d.ts.map +1 -0
  55. package/dist/lib/brain/cache.js +99 -0
  56. package/dist/lib/brain/cache.js.map +1 -0
  57. package/dist/lib/brain/canonical.d.ts +5 -0
  58. package/dist/lib/brain/canonical.d.ts.map +1 -0
  59. package/dist/lib/brain/canonical.js +38 -0
  60. package/dist/lib/brain/canonical.js.map +1 -0
  61. package/dist/lib/brain/discovery.d.ts +9 -0
  62. package/dist/lib/brain/discovery.d.ts.map +1 -0
  63. package/dist/lib/brain/discovery.js +560 -0
  64. package/dist/lib/brain/discovery.js.map +1 -0
  65. package/dist/lib/brain/index.d.ts +55 -0
  66. package/dist/lib/brain/index.d.ts.map +1 -0
  67. package/dist/lib/brain/index.js +384 -0
  68. package/dist/lib/brain/index.js.map +1 -0
  69. package/dist/lib/brain/proposal.d.ts +179 -0
  70. package/dist/lib/brain/proposal.d.ts.map +1 -0
  71. package/dist/lib/brain/proposal.js +694 -0
  72. package/dist/lib/brain/proposal.js.map +1 -0
  73. package/dist/lib/brain/render.d.ts +33 -0
  74. package/dist/lib/brain/render.d.ts.map +1 -0
  75. package/dist/lib/brain/render.js +515 -0
  76. package/dist/lib/brain/render.js.map +1 -0
  77. package/dist/lib/brain/safe-file.d.ts +110 -0
  78. package/dist/lib/brain/safe-file.d.ts.map +1 -0
  79. package/dist/lib/brain/safe-file.js +564 -0
  80. package/dist/lib/brain/safe-file.js.map +1 -0
  81. package/dist/lib/brain/safety.d.ts +8 -0
  82. package/dist/lib/brain/safety.d.ts.map +1 -0
  83. package/dist/lib/brain/safety.js +42 -0
  84. package/dist/lib/brain/safety.js.map +1 -0
  85. package/dist/lib/brain/staged-apply.d.ts +57 -0
  86. package/dist/lib/brain/staged-apply.d.ts.map +1 -0
  87. package/dist/lib/brain/staged-apply.js +336 -0
  88. package/dist/lib/brain/staged-apply.js.map +1 -0
  89. package/dist/lib/brain/store.d.ts +26 -0
  90. package/dist/lib/brain/store.d.ts.map +1 -0
  91. package/dist/lib/brain/store.js +504 -0
  92. package/dist/lib/brain/store.js.map +1 -0
  93. package/dist/lib/brain/types.d.ts +160 -0
  94. package/dist/lib/brain/types.d.ts.map +1 -0
  95. package/dist/lib/brain/types.js +24 -0
  96. package/dist/lib/brain/types.js.map +1 -0
  97. package/dist/lib/config.d.ts +22 -1
  98. package/dist/lib/config.d.ts.map +1 -1
  99. package/dist/lib/config.js +70 -14
  100. package/dist/lib/config.js.map +1 -1
  101. package/dist/lib/daemon.d.ts +27 -0
  102. package/dist/lib/daemon.d.ts.map +1 -1
  103. package/dist/lib/daemon.js +57 -0
  104. package/dist/lib/daemon.js.map +1 -1
  105. package/dist/lib/machine-identity.d.ts +16 -0
  106. package/dist/lib/machine-identity.d.ts.map +1 -0
  107. package/dist/lib/machine-identity.js +101 -0
  108. package/dist/lib/machine-identity.js.map +1 -0
  109. package/dist/lib/orchestrator/approvals.d.ts +21 -0
  110. package/dist/lib/orchestrator/approvals.d.ts.map +1 -0
  111. package/dist/lib/orchestrator/approvals.js +65 -0
  112. package/dist/lib/orchestrator/approvals.js.map +1 -0
  113. package/dist/lib/orchestrator/loop.d.ts +1 -0
  114. package/dist/lib/orchestrator/loop.d.ts.map +1 -1
  115. package/dist/lib/orchestrator/loop.js +16 -0
  116. package/dist/lib/orchestrator/loop.js.map +1 -1
  117. package/dist/lib/orchestrator/supervisor.d.ts +41 -0
  118. package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
  119. package/dist/lib/orchestrator/supervisor.js +49 -0
  120. package/dist/lib/orchestrator/supervisor.js.map +1 -1
  121. package/dist/lib/orchestrator/tools.d.ts +11 -0
  122. package/dist/lib/orchestrator/tools.d.ts.map +1 -1
  123. package/dist/lib/orchestrator/tools.js +143 -0
  124. package/dist/lib/orchestrator/tools.js.map +1 -1
  125. package/dist/lib/project-strategy.d.ts +38 -0
  126. package/dist/lib/project-strategy.d.ts.map +1 -1
  127. package/dist/lib/project-strategy.js +91 -0
  128. package/dist/lib/project-strategy.js.map +1 -1
  129. package/dist/lib/projectContext.d.ts +6 -4
  130. package/dist/lib/projectContext.d.ts.map +1 -1
  131. package/dist/lib/projectContext.js +19 -17
  132. package/dist/lib/projectContext.js.map +1 -1
  133. package/dist/lib/redact.d.ts +15 -0
  134. package/dist/lib/redact.d.ts.map +1 -0
  135. package/dist/lib/redact.js +62 -0
  136. package/dist/lib/redact.js.map +1 -0
  137. package/dist/lib/tasksFile.d.ts +74 -0
  138. package/dist/lib/tasksFile.d.ts.map +1 -0
  139. package/dist/lib/tasksFile.js +502 -0
  140. package/dist/lib/tasksFile.js.map +1 -0
  141. package/dist/mcp/registry.d.ts +8 -2
  142. package/dist/mcp/registry.d.ts.map +1 -1
  143. package/dist/mcp/registry.js +189 -2
  144. package/dist/mcp/registry.js.map +1 -1
  145. package/dist/mcp/server.d.ts +1 -0
  146. package/dist/mcp/server.d.ts.map +1 -1
  147. package/dist/mcp/server.js +3 -2
  148. package/dist/mcp/server.js.map +1 -1
  149. 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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"}