youmd 0.10.2 → 0.12.0
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.map +1 -1
- package/dist/commands/brain.js +91 -28
- package/dist/commands/brain.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +6 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/conversations.d.ts +5 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +116 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +16 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/founder.d.ts +13 -0
- package/dist/commands/founder.d.ts.map +1 -0
- package/dist/commands/founder.js +189 -0
- package/dist/commands/founder.js.map +1 -0
- package/dist/commands/handoff.d.ts +5 -0
- package/dist/commands/handoff.d.ts.map +1 -0
- package/dist/commands/handoff.js +432 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +15 -0
- package/dist/commands/orchestrate.d.ts.map +1 -1
- package/dist/commands/orchestrate.js +294 -0
- package/dist/commands/orchestrate.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +8 -1
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/reconcile.d.ts +15 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +260 -0
- package/dist/commands/reconcile.js.map +1 -0
- package/dist/commands/session.d.ts +28 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +895 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/stack.d.ts +2 -0
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +26 -0
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tasks.d.ts +57 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +236 -31
- package/dist/commands/tasks.js.map +1 -1
- package/dist/generated/capability-registry.d.ts +311 -71
- package/dist/generated/capability-registry.d.ts.map +1 -1
- package/dist/generated/capability-registry.js +346 -71
- package/dist/generated/capability-registry.js.map +1 -1
- package/dist/index.js +113 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +362 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +171 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/brain/adapters.d.ts +20 -1
- package/dist/lib/brain/adapters.d.ts.map +1 -1
- package/dist/lib/brain/adapters.js +113 -2
- package/dist/lib/brain/adapters.js.map +1 -1
- package/dist/lib/brain/approval-key-trust.d.ts +29 -0
- package/dist/lib/brain/approval-key-trust.d.ts.map +1 -0
- package/dist/lib/brain/approval-key-trust.js +139 -0
- package/dist/lib/brain/approval-key-trust.js.map +1 -0
- package/dist/lib/brain/cache.d.ts +2 -2
- package/dist/lib/brain/cache.d.ts.map +1 -1
- package/dist/lib/brain/cache.js +4 -4
- package/dist/lib/brain/cache.js.map +1 -1
- package/dist/lib/brain/content.d.ts +56 -0
- package/dist/lib/brain/content.d.ts.map +1 -0
- package/dist/lib/brain/content.js +362 -0
- package/dist/lib/brain/content.js.map +1 -0
- package/dist/lib/brain/descriptor-validator.d.ts +11 -0
- package/dist/lib/brain/descriptor-validator.d.ts.map +1 -0
- package/dist/lib/brain/descriptor-validator.js +185 -0
- package/dist/lib/brain/descriptor-validator.js.map +1 -0
- package/dist/lib/brain/discovery.d.ts.map +1 -1
- package/dist/lib/brain/discovery.js +103 -60
- package/dist/lib/brain/discovery.js.map +1 -1
- package/dist/lib/brain/index.d.ts +2 -0
- package/dist/lib/brain/index.d.ts.map +1 -1
- package/dist/lib/brain/index.js +8 -2
- package/dist/lib/brain/index.js.map +1 -1
- package/dist/lib/brain/proposal.d.ts +53 -5
- package/dist/lib/brain/proposal.d.ts.map +1 -1
- package/dist/lib/brain/proposal.js +341 -64
- package/dist/lib/brain/proposal.js.map +1 -1
- package/dist/lib/brain/safe-file.d.ts +25 -1
- package/dist/lib/brain/safe-file.d.ts.map +1 -1
- package/dist/lib/brain/safe-file.js +250 -30
- package/dist/lib/brain/safe-file.js.map +1 -1
- package/dist/lib/brain/safe-open.d.ts +2 -0
- package/dist/lib/brain/safe-open.d.ts.map +1 -0
- package/dist/lib/brain/safe-open.js +77 -0
- package/dist/lib/brain/safe-open.js.map +1 -0
- package/dist/lib/brain/safety.d.ts.map +1 -1
- package/dist/lib/brain/safety.js +5 -0
- package/dist/lib/brain/safety.js.map +1 -1
- package/dist/lib/brain/staged-apply.d.ts +2 -1
- package/dist/lib/brain/staged-apply.d.ts.map +1 -1
- package/dist/lib/brain/staged-apply.js +6 -3
- package/dist/lib/brain/staged-apply.js.map +1 -1
- package/dist/lib/brain/store.d.ts +3 -0
- package/dist/lib/brain/store.d.ts.map +1 -1
- package/dist/lib/brain/store.js +68 -0
- package/dist/lib/brain/store.js.map +1 -1
- package/dist/lib/brain/sync.d.ts +87 -0
- package/dist/lib/brain/sync.d.ts.map +1 -0
- package/dist/lib/brain/sync.js +238 -0
- package/dist/lib/brain/sync.js.map +1 -0
- package/dist/lib/brain/types.d.ts +23 -0
- package/dist/lib/brain/types.d.ts.map +1 -1
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +3 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/daemon.js +1 -1
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/goalRegistryFile.d.ts +169 -0
- package/dist/lib/goalRegistryFile.d.ts.map +1 -0
- package/dist/lib/goalRegistryFile.js +518 -0
- package/dist/lib/goalRegistryFile.js.map +1 -0
- package/dist/lib/goalsFile.d.ts +101 -0
- package/dist/lib/goalsFile.d.ts.map +1 -0
- package/dist/lib/goalsFile.js +413 -0
- package/dist/lib/goalsFile.js.map +1 -0
- package/dist/lib/handoff.d.ts +170 -0
- package/dist/lib/handoff.d.ts.map +1 -0
- package/dist/lib/handoff.js +316 -0
- package/dist/lib/handoff.js.map +1 -0
- package/dist/lib/machine-identity.d.ts +2 -0
- package/dist/lib/machine-identity.d.ts.map +1 -1
- package/dist/lib/machine-identity.js +13 -6
- package/dist/lib/machine-identity.js.map +1 -1
- package/dist/lib/onboarding.d.ts +4 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +11 -3
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/orchestrator/loop.d.ts +7 -0
- package/dist/lib/orchestrator/loop.d.ts.map +1 -1
- package/dist/lib/orchestrator/loop.js +53 -0
- package/dist/lib/orchestrator/loop.js.map +1 -1
- package/dist/lib/orchestrator/run-journal.d.ts +178 -0
- package/dist/lib/orchestrator/run-journal.d.ts.map +1 -0
- package/dist/lib/orchestrator/run-journal.js +912 -0
- package/dist/lib/orchestrator/run-journal.js.map +1 -0
- package/dist/lib/orchestrator/supervisor.d.ts +11 -0
- package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
- package/dist/lib/orchestrator/supervisor.js +304 -116
- package/dist/lib/orchestrator/supervisor.js.map +1 -1
- package/dist/lib/orchestrator/tools.d.ts +2 -0
- package/dist/lib/orchestrator/tools.d.ts.map +1 -1
- package/dist/lib/orchestrator/tools.js +214 -1
- package/dist/lib/orchestrator/tools.js.map +1 -1
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/redact.js +31 -6
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/remote-agent-event.d.ts +19 -0
- package/dist/lib/remote-agent-event.d.ts.map +1 -0
- package/dist/lib/remote-agent-event.js +85 -0
- package/dist/lib/remote-agent-event.js.map +1 -0
- package/dist/lib/remote-command.d.ts.map +1 -1
- package/dist/lib/remote-command.js +19 -0
- package/dist/lib/remote-command.js.map +1 -1
- package/dist/lib/remote-executor.d.ts +7 -1
- package/dist/lib/remote-executor.d.ts.map +1 -1
- package/dist/lib/remote-executor.js +391 -0
- package/dist/lib/remote-executor.js.map +1 -1
- package/dist/lib/sessionCheckpoint.d.ts +104 -0
- package/dist/lib/sessionCheckpoint.d.ts.map +1 -0
- package/dist/lib/sessionCheckpoint.js +191 -0
- package/dist/lib/sessionCheckpoint.js.map +1 -0
- package/dist/lib/sessionHandoff.d.ts +47 -0
- package/dist/lib/sessionHandoff.d.ts.map +1 -0
- package/dist/lib/sessionHandoff.js +305 -0
- package/dist/lib/sessionHandoff.js.map +1 -0
- package/dist/lib/stream.d.ts +3 -1
- package/dist/lib/stream.d.ts.map +1 -1
- package/dist/lib/stream.js +8 -3
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/taskLedgerProposal.d.ts +102 -0
- package/dist/lib/taskLedgerProposal.d.ts.map +1 -0
- package/dist/lib/taskLedgerProposal.js +408 -0
- package/dist/lib/taskLedgerProposal.js.map +1 -0
- package/dist/lib/tasksFile.d.ts +23 -2
- package/dist/lib/tasksFile.d.ts.map +1 -1
- package/dist/lib/tasksFile.js +122 -10
- package/dist/lib/tasksFile.js.map +1 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +110 -0
- package/dist/mcp/registry.js.map +1 -1
- package/native/prebuilds/darwin-universal/youmd_safe_open.node +0 -0
- package/native/safe-open/youmd_safe_open.c +224 -0
- package/package.json +11 -3
- package/scripts/build-safe-open.mjs +63 -0
- package/scripts/skillstack-sync/com.you.context-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.identity-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.orchestrator-watch.plist +1 -1
- package/scripts/skillstack-sync/com.you.realtime-sync.plist +7 -1
- package/scripts/skillstack-sync/com.you.skillstack-sync.plist +1 -1
- package/scripts/skillstack-sync/context-sync.sh +19 -7
- package/scripts/skillstack-sync/install-daemons-linux.sh +6 -0
- package/scripts/smoke-safe-open-node.cjs +50 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProjectBrainApprovalVerificationKey } from "./safe-file";
|
|
2
|
+
export declare const PROJECT_BRAIN_CANONICAL_APPROVAL_ORIGIN = "https://kindly-cassowary-600.convex.site";
|
|
3
|
+
export declare const PROJECT_BRAIN_APPROVAL_TRUST_VERSION: "you-md/project-brain-approval-trust/v1";
|
|
4
|
+
export interface ProjectBrainApprovalOriginTrust {
|
|
5
|
+
origin: string;
|
|
6
|
+
keyFingerprints: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface ProjectBrainApprovalTrustDocument {
|
|
9
|
+
schemaVersion: typeof PROJECT_BRAIN_APPROVAL_TRUST_VERSION;
|
|
10
|
+
origins: ProjectBrainApprovalOriginTrust[];
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedProjectBrainApprovalTrust {
|
|
13
|
+
origin: string;
|
|
14
|
+
mode: "canonical" | "owner_pinned" | "loopback_dev";
|
|
15
|
+
keyFingerprints: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function projectBrainApprovalKeyFingerprint(key: ProjectBrainApprovalVerificationKey): string;
|
|
18
|
+
export interface ProjectBrainApprovalAccountIdentity {
|
|
19
|
+
homedir: string;
|
|
20
|
+
uid: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function projectBrainApprovalAccountIdentity(): ProjectBrainApprovalAccountIdentity | null;
|
|
23
|
+
export declare function readInstalledProjectBrainApprovalTrust(testAccountIdentity?: ProjectBrainApprovalAccountIdentity): ProjectBrainApprovalTrustDocument | null;
|
|
24
|
+
export declare function resolveProjectBrainApprovalOriginTrust(baseUrl: string, options?: {
|
|
25
|
+
installedTrust?: ProjectBrainApprovalTrustDocument | null;
|
|
26
|
+
allowLoopbackDev?: boolean;
|
|
27
|
+
}): ResolvedProjectBrainApprovalTrust;
|
|
28
|
+
export declare function assertProjectBrainApprovalKeySetTrust(keys: ProjectBrainApprovalVerificationKey[], trust: ResolvedProjectBrainApprovalTrust): void;
|
|
29
|
+
//# sourceMappingURL=approval-key-trust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-key-trust.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/approval-key-trust.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAC;AAEvE,eAAO,MAAM,uCAAuC,6CAA6C,CAAC;AAClG,eAAO,MAAM,oCAAoC,EAAG,wCAAiD,CAAC;AAEtG,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,oCAAoC,CAAC;IAC3D,OAAO,EAAE,+BAA+B,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;IACpD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,mCAAmC,GAAG,MAAM,CAGnG;AAED,MAAM,WAAW,mCAAmC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,mCAAmC,IAAI,mCAAmC,GAAG,IAAI,CAMhG;AAED,wBAAgB,sCAAsC,CACpD,mBAAmB,CAAC,EAAE,mCAAmC,GACxD,iCAAiC,GAAG,IAAI,CAyB1C;AAED,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,iCAAiC,GAAG,IAAI,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACtG,iCAAiC,CAqBnC;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,mCAAmC,EAAE,EAC3C,KAAK,EAAE,iCAAiC,GACvC,IAAI,CAQN"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.PROJECT_BRAIN_APPROVAL_TRUST_VERSION = exports.PROJECT_BRAIN_CANONICAL_APPROVAL_ORIGIN = void 0;
|
|
37
|
+
exports.projectBrainApprovalKeyFingerprint = projectBrainApprovalKeyFingerprint;
|
|
38
|
+
exports.projectBrainApprovalAccountIdentity = projectBrainApprovalAccountIdentity;
|
|
39
|
+
exports.readInstalledProjectBrainApprovalTrust = readInstalledProjectBrainApprovalTrust;
|
|
40
|
+
exports.resolveProjectBrainApprovalOriginTrust = resolveProjectBrainApprovalOriginTrust;
|
|
41
|
+
exports.assertProjectBrainApprovalKeySetTrust = assertProjectBrainApprovalKeySetTrust;
|
|
42
|
+
const crypto = __importStar(require("crypto"));
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
exports.PROJECT_BRAIN_CANONICAL_APPROVAL_ORIGIN = "https://kindly-cassowary-600.convex.site";
|
|
47
|
+
exports.PROJECT_BRAIN_APPROVAL_TRUST_VERSION = "you-md/project-brain-approval-trust/v1";
|
|
48
|
+
function loopback(hostname) {
|
|
49
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]" || hostname === "::1";
|
|
50
|
+
}
|
|
51
|
+
function projectBrainApprovalKeyFingerprint(key) {
|
|
52
|
+
const canonical = JSON.stringify({ e: key.e, kty: key.kty, n: key.n });
|
|
53
|
+
return `sha256:${crypto.createHash("sha256").update(canonical).digest("hex")}`;
|
|
54
|
+
}
|
|
55
|
+
function projectBrainApprovalAccountIdentity() {
|
|
56
|
+
try {
|
|
57
|
+
const account = os.userInfo();
|
|
58
|
+
if (!path.isAbsolute(account.homedir) || !Number.isInteger(account.uid) || account.uid < 0)
|
|
59
|
+
return null;
|
|
60
|
+
return { homedir: account.homedir, uid: account.uid };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function readInstalledProjectBrainApprovalTrust(testAccountIdentity) {
|
|
67
|
+
// Intentionally ignores HOME, YOU_HOME, and project-local bundle selection.
|
|
68
|
+
// Approval trust is anchored to the OS account database, not caller state.
|
|
69
|
+
const account = testAccountIdentity || projectBrainApprovalAccountIdentity();
|
|
70
|
+
if (!account || !path.isAbsolute(account.homedir) || !Number.isInteger(account.uid) || account.uid < 0)
|
|
71
|
+
return null;
|
|
72
|
+
const file = path.join(account.homedir, ".you", "trust", "project-brain-approval.json");
|
|
73
|
+
const trustDirectory = path.dirname(file);
|
|
74
|
+
const youDirectory = path.dirname(trustDirectory);
|
|
75
|
+
let stat;
|
|
76
|
+
try {
|
|
77
|
+
for (const directory of [youDirectory, trustDirectory]) {
|
|
78
|
+
const directoryStat = fs.lstatSync(directory);
|
|
79
|
+
if (!directoryStat.isDirectory() || directoryStat.isSymbolicLink()
|
|
80
|
+
|| (process.platform !== "win32" && ((directoryStat.mode & 0o077) !== 0 || directoryStat.uid !== account.uid)))
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
stat = fs.lstatSync(file);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 32 * 1024
|
|
89
|
+
|| (process.platform !== "win32" && (stat.mode & 0o077) !== 0)
|
|
90
|
+
|| (process.platform !== "win32" && stat.uid !== account.uid))
|
|
91
|
+
return null;
|
|
92
|
+
try {
|
|
93
|
+
const value = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
94
|
+
if (value?.schemaVersion !== exports.PROJECT_BRAIN_APPROVAL_TRUST_VERSION || !Array.isArray(value.origins))
|
|
95
|
+
return null;
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function resolveProjectBrainApprovalOriginTrust(baseUrl, options = {}) {
|
|
103
|
+
let url;
|
|
104
|
+
try {
|
|
105
|
+
url = new URL(baseUrl);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_ORIGIN_UNTRUSTED");
|
|
109
|
+
}
|
|
110
|
+
if (url.username || url.password || url.pathname !== "/" || url.search || url.hash) {
|
|
111
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_ORIGIN_UNTRUSTED");
|
|
112
|
+
}
|
|
113
|
+
const origin = url.origin;
|
|
114
|
+
if (origin === exports.PROJECT_BRAIN_CANONICAL_APPROVAL_ORIGIN) {
|
|
115
|
+
return { origin, mode: "canonical", keyFingerprints: [] };
|
|
116
|
+
}
|
|
117
|
+
if (url.protocol === "http:" && loopback(url.hostname) && options.allowLoopbackDev === true) {
|
|
118
|
+
return { origin, mode: "loopback_dev", keyFingerprints: [] };
|
|
119
|
+
}
|
|
120
|
+
if (url.protocol !== "https:")
|
|
121
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_ORIGIN_UNTRUSTED");
|
|
122
|
+
const installed = options.installedTrust === undefined ? readInstalledProjectBrainApprovalTrust() : options.installedTrust;
|
|
123
|
+
const match = installed?.origins?.find((candidate) => candidate.origin === origin);
|
|
124
|
+
if (!match || !Array.isArray(match.keyFingerprints) || match.keyFingerprints.length < 1
|
|
125
|
+
|| match.keyFingerprints.some((fingerprint) => !/^sha256:[a-f0-9]{64}$/.test(fingerprint))) {
|
|
126
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_ORIGIN_UNTRUSTED");
|
|
127
|
+
}
|
|
128
|
+
return { origin, mode: "owner_pinned", keyFingerprints: [...new Set(match.keyFingerprints)].sort() };
|
|
129
|
+
}
|
|
130
|
+
function assertProjectBrainApprovalKeySetTrust(keys, trust) {
|
|
131
|
+
if (!Array.isArray(keys) || keys.length < 1 || keys.length > 8 || new Set(keys.map((key) => key.kid)).size !== keys.length) {
|
|
132
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_KEYSET_UNTRUSTED");
|
|
133
|
+
}
|
|
134
|
+
const fingerprints = keys.map(projectBrainApprovalKeyFingerprint);
|
|
135
|
+
if (trust.mode === "owner_pinned" && fingerprints.some((fingerprint) => !trust.keyFingerprints.includes(fingerprint))) {
|
|
136
|
+
throw new Error("PROJECT_BRAIN_APPROVAL_KEYSET_UNTRUSTED");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=approval-key-trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-key-trust.js","sourceRoot":"","sources":["../../../src/lib/brain/approval-key-trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ export declare class BrainContentCache {
|
|
|
14
14
|
hits: number;
|
|
15
15
|
misses: number;
|
|
16
16
|
static load(brainRoot: string): BrainContentCache;
|
|
17
|
-
lookup(file: string, stat: fs.Stats, mode: "content" | "metadata"): string | undefined;
|
|
18
|
-
remember(file: string, stat: fs.Stats, revision: string): void;
|
|
17
|
+
lookup(file: string, stat: fs.Stats, mode: "content" | "metadata", variant?: "default" | "exact"): string | undefined;
|
|
18
|
+
remember(file: string, stat: fs.Stats, revision: string, variant?: "default" | "exact"): void;
|
|
19
19
|
hasPendingWrites(): boolean;
|
|
20
20
|
serialize(): PersistedContentCache;
|
|
21
21
|
markCommitted(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAqB;IAC7B,aAAa,EAAE,uCAAuC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC/C;AAKD,kFAAkF;AAClF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,OAAO,CAAC,KAAK,CAAS;IACtB,IAAI,SAAK;IACT,MAAM,SAAK;IAEX,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAYjD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAqB;IAC7B,aAAa,EAAE,uCAAuC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC/C;AAKD,kFAAkF;AAClF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,OAAO,CAAC,KAAK,CAAS;IACtB,IAAI,SAAK;IACT,MAAM,SAAK;IAEX,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAYjD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,EAAE,OAAO,GAAE,SAAS,GAAG,OAAmB,GAAG,MAAM,GAAG,SAAS;IAYhI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,GAAG,OAAmB,GAAG,IAAI;IAUxG,gBAAgB,IAAI,OAAO;IAE3B,SAAS,IAAI,qBAAqB;IAOlC,aAAa,IAAI,IAAI;IAErB,OAAO,CAAC,WAAW;CAGpB"}
|
package/dist/lib/brain/cache.js
CHANGED
|
@@ -61,8 +61,8 @@ class BrainContentCache {
|
|
|
61
61
|
catch { /* absent or malformed caches are cold misses */ }
|
|
62
62
|
return cache;
|
|
63
63
|
}
|
|
64
|
-
lookup(file, stat, mode) {
|
|
65
|
-
const key = (0, canonical_1.sha256)(path.resolve(file));
|
|
64
|
+
lookup(file, stat, mode, variant = "default") {
|
|
65
|
+
const key = (0, canonical_1.sha256)(variant === "exact" ? `${path.resolve(file)}:exact` : path.resolve(file));
|
|
66
66
|
const fingerprint = this.fingerprint(stat);
|
|
67
67
|
const record = this.records.get(key);
|
|
68
68
|
if (record?.fingerprint === fingerprint && (mode === "metadata" || record.revision.startsWith("sha256:"))) {
|
|
@@ -72,10 +72,10 @@ class BrainContentCache {
|
|
|
72
72
|
this.misses += 1;
|
|
73
73
|
return undefined;
|
|
74
74
|
}
|
|
75
|
-
remember(file, stat, revision) {
|
|
75
|
+
remember(file, stat, revision, variant = "default") {
|
|
76
76
|
if (!REVISION.test(revision))
|
|
77
77
|
return;
|
|
78
|
-
const key = (0, canonical_1.sha256)(path.resolve(file));
|
|
78
|
+
const key = (0, canonical_1.sha256)(variant === "exact" ? `${path.resolve(file)}:exact` : path.resolve(file));
|
|
79
79
|
const next = { fingerprint: this.fingerprint(stat), revision };
|
|
80
80
|
const prior = this.records.get(key);
|
|
81
81
|
if (prior?.fingerprint === next.fingerprint && prior.revision === next.revision)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/brain/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAqC;AAYrC,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAC9B,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAEvD,kFAAkF;AAClF,MAAa,iBAAiB;IAA9B;QACmB,YAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;QAC3D,UAAK,GAAG,KAAK,CAAC;QACtB,SAAI,GAAG,CAAC,CAAC;QACT,WAAM,GAAG,CAAC,CAAC;IAkDb,CAAC;IAhDC,MAAM,CAAC,IAAI,CAAC,SAAiB;QAC3B,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAmC,CAAC;YACpI,IAAI,MAAM,CAAC,aAAa,KAAK,uCAAuC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC5I,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAc,EAAE,IAA4B;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/brain/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BrainArtifactClaim, ProjectBrainScan } from "./types";
|
|
2
|
+
export declare const PROJECT_BRAIN_CONTENT_SCHEMA: "https://you.md/schemas/project-brain-content/v1";
|
|
3
|
+
export declare const PROJECT_BRAIN_CONTENT_VERSION: "you-md/project-brain-content/v1";
|
|
4
|
+
export declare const PROJECT_BRAIN_CONTENT_MAX_FILE_BYTES: number;
|
|
5
|
+
export declare const PROJECT_BRAIN_CONTENT_MAX_ARTIFACTS = 32;
|
|
6
|
+
export declare const PROJECT_BRAIN_CONTENT_MAX_PROJECT_BYTES: number;
|
|
7
|
+
export interface ProjectBrainArtifactContent {
|
|
8
|
+
artifactRef: string;
|
|
9
|
+
path: string;
|
|
10
|
+
kind: BrainArtifactClaim["kind"];
|
|
11
|
+
content: string;
|
|
12
|
+
contentHash: string;
|
|
13
|
+
sourceRevision: string;
|
|
14
|
+
encoding: "utf-8";
|
|
15
|
+
}
|
|
16
|
+
export interface ProjectBrainContentPayload {
|
|
17
|
+
$schema: typeof PROJECT_BRAIN_CONTENT_SCHEMA;
|
|
18
|
+
schemaVersion: typeof PROJECT_BRAIN_CONTENT_VERSION;
|
|
19
|
+
kind: "project-brain-content";
|
|
20
|
+
projectRef: string;
|
|
21
|
+
workspaceRef: string;
|
|
22
|
+
revision: string;
|
|
23
|
+
artifacts: ProjectBrainArtifactContent[];
|
|
24
|
+
secretValuesExposed: false;
|
|
25
|
+
}
|
|
26
|
+
export type ProjectBrainContentDiagnosticCode = "ineligible" | "metadata_only" | "unsafe_path" | "symlink_rejected" | "binary_rejected" | "budget_exceeded" | "stale_claim" | "hash_mismatch" | "secret_rejected" | "canary_rejected" | "unreadable";
|
|
27
|
+
export interface ProjectBrainContentDiagnostic {
|
|
28
|
+
code: ProjectBrainContentDiagnosticCode;
|
|
29
|
+
projectRef: string;
|
|
30
|
+
artifactRef: string;
|
|
31
|
+
path: string;
|
|
32
|
+
message: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ProjectBrainContentCollection {
|
|
35
|
+
payloads: ProjectBrainContentPayload[];
|
|
36
|
+
diagnostics: ProjectBrainContentDiagnostic[];
|
|
37
|
+
}
|
|
38
|
+
export interface ProjectBrainContentOptions {
|
|
39
|
+
canaries?: string[];
|
|
40
|
+
maxFileBytes?: number;
|
|
41
|
+
maxArtifactsPerProject?: number;
|
|
42
|
+
maxProjectBytes?: number;
|
|
43
|
+
}
|
|
44
|
+
/** Shared with discovery so uploadable claims carry an exact byte SHA-256. */
|
|
45
|
+
export declare function isProjectBrainContentCandidatePath(value: string, contextRoot?: string): boolean;
|
|
46
|
+
/** Descriptor-relative, no-follow read shared by bounded project-context contracts. */
|
|
47
|
+
export declare function verifiedProjectBrainUtf8Read(rootValue: string, relativeValue: string, contextRoot: string, maxBytes: number): {
|
|
48
|
+
content: string;
|
|
49
|
+
bytes: Buffer;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Collect bounded source text only from claims in the supplied latest scan.
|
|
53
|
+
* This function never persists or uploads data and returns stable, sorted DTOs.
|
|
54
|
+
*/
|
|
55
|
+
export declare function collectProjectBrainArtifactContents(scan: ProjectBrainScan, rootValue: string, options?: ProjectBrainContentOptions): ProjectBrainContentCollection;
|
|
56
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/brain/content.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAuB,MAAM,SAAS,CAAC;AAEpF,eAAO,MAAM,4BAA4B,EAAG,iDAA0D,CAAC;AACvG,eAAO,MAAM,6BAA6B,EAAG,iCAA0C,CAAC;AAKxF,eAAO,MAAM,oCAAoC,QAAa,CAAC;AAC/D,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,uCAAuC,QAAa,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,4BAA4B,CAAC;IAC7C,aAAa,EAAE,OAAO,6BAA6B,CAAC;IACpD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,mBAAmB,EAAE,KAAK,CAAC;CAC5B;AAED,MAAM,MAAM,iCAAiC,GACzC,YAAY,GACZ,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,CAAC;AAEjB,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,iCAAiC,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,WAAW,EAAE,6BAA6B,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiCD,8EAA8E;AAC9E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAS/F;AA0DD,uFAAuF;AACvF,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgEhK;AA2BD;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,GACvC,6BAA6B,CAuG/B"}
|