odai-dsh-agent 0.2.23 → 0.2.26
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/LICENSE +21 -21
- package/README.md +155 -155
- package/build/bin/odai-dsh-agent.mjs +26 -19
- package/build/bin/odai-dsh-agent.mjs.map +1 -1
- package/build/src/control-center-installer.d.mts.map +1 -1
- package/build/src/control-center-installer.mjs +90 -50
- package/build/src/control-center-installer.mjs.map +1 -1
- package/build/src/installer.d.mts +3 -0
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +145 -24
- package/build/src/installer.mjs.map +1 -1
- package/build/src/operation-lock.d.mts +2 -0
- package/build/src/operation-lock.d.mts.map +1 -0
- package/build/src/operation-lock.mjs +48 -0
- package/build/src/operation-lock.mjs.map +1 -0
- package/client/client.js +12 -12
- package/control-center.cordis.patch.yml +3 -3
- package/package.json +90 -90
- package/preset/odai/agent.cordis.yml +260 -260
- package/preset/odai/preset.yml +3 -3
- package/preset/odai/runtime/governance.d.mts +2 -0
- package/preset/odai/runtime/governance.d.mts.map +1 -1
- package/preset/odai/runtime/governance.mjs +15 -4
- package/preset/odai/runtime/governance.mjs.map +1 -1
- package/preset/odai/runtime/model-route.d.mts.map +1 -1
- package/preset/odai/runtime/model-route.mjs +21 -14
- package/preset/odai/runtime/model-route.mjs.map +1 -1
- package/preset/odai/runtime/role-overlays.mjs +8 -8
- package/preset/odai/runtime/semantic-memory.d.mts.map +1 -1
- package/preset/odai/runtime/semantic-memory.mjs +63 -25
- package/preset/odai/runtime/semantic-memory.mjs.map +1 -1
- package/preset/odai/runtime/session-evidence.d.mts.map +1 -1
- package/preset/odai/runtime/session-evidence.mjs +4 -104
- package/preset/odai/runtime/session-evidence.mjs.map +1 -1
- package/preset/odai/runtime/store-lock.d.mts.map +1 -1
- package/preset/odai/runtime/store-lock.mjs +42 -11
- package/preset/odai/runtime/store-lock.mjs.map +1 -1
- package/preset/odai/skills/odai/SKILL.md +70 -68
- package/preset/odai/skills/odai/agents/openai.yaml +4 -4
- package/preset/odai/skills/odai/assets/claude-agents/agent.md +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/config.toml +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/role.toml +5 -5
- package/preset/odai/skills/odai/assets/copilot-agents/agent.md +13 -13
- package/preset/odai/skills/odai/assets/hooks-policy.example.json +24 -24
- package/preset/odai/skills/odai/assets/routing-roles/controller.md +15 -15
- package/preset/odai/skills/odai/assets/routing-roles/frontend.md +7 -7
- package/preset/odai/skills/odai/assets/routing-roles/planner.md +28 -28
- package/preset/odai/skills/odai/assets/routing-roles/researcher.md +7 -7
- package/preset/odai/skills/odai/assets/routing-roles/reviewer.md +11 -11
- package/preset/odai/skills/odai/assets/task-state.md +14 -14
- package/preset/odai/skills/odai/manifest.json +52 -52
- package/preset/odai/skills/odai/references/craft.md +54 -54
- package/preset/odai/skills/odai/references/dao.md +32 -31
- package/preset/odai/skills/odai/references/leverage.md +53 -50
- package/preset/odai/skills/odai/references/planning.md +83 -83
- package/preset/odai/skills/odai/references/support.md +31 -30
- package/preset/odai/skills/odai/references/verification.md +24 -24
- package/preset/odai/skills/odai/scripts/build-hooks.mjs +273 -273
- package/preset/odai/skills/odai/scripts/build-routing.mjs +315 -315
- package/preset/odai/skills/odai/scripts/install-routing.mjs +448 -393
- package/preset/odai/skills/odai/scripts/odai-hook.mjs +457 -457
- package/preset/odai/skills/odai/scripts/run-role.mjs +285 -285
- package/preset/odai/skills/odai/scripts/verify-routing.mjs +103 -103
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { mkdir, readFile, realpath,
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { mkdir, readFile, realpath, writeFile } from "node:fs/promises";
|
|
4
4
|
import { dirname, resolve, sep } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { parse as parseYaml } from "yaml";
|
|
7
|
-
import { resolveDshHome } from "./installer.mjs";
|
|
7
|
+
import { assertNoSymlinkDescendants, resolveDshHome, resolveManagedDshHome } from "./installer.mjs";
|
|
8
|
+
import { acquireAgentOperationLock } from "./operation-lock.mjs";
|
|
8
9
|
const moduleDirectory = dirname(fileURLToPath(import.meta.url));
|
|
9
10
|
const packageRoot = resolve(moduleDirectory, moduleDirectory.endsWith(`${sep}build${sep}src`) ? "../.." : "..");
|
|
10
11
|
const parsedMetadata = JSON.parse(await readFile(resolve(packageRoot, "package.json"), "utf8"));
|
|
@@ -80,7 +81,7 @@ async function lockDependencyIssues(target, dependency) {
|
|
|
80
81
|
const issues = [];
|
|
81
82
|
if (specifier !== dependency)
|
|
82
83
|
issues.push(`lockfile specifier ${specifier ?? "<missing>"} does not match dependency ${dependency}`);
|
|
83
|
-
if (!version || !version.startsWith(dependency)) {
|
|
84
|
+
if (!version || (version !== dependency && !version.startsWith(`${dependency}(`))) {
|
|
84
85
|
issues.push(`lockfile version ${version ?? "<missing>"} does not resolve dependency ${dependency}`);
|
|
85
86
|
}
|
|
86
87
|
return issues;
|
|
@@ -157,8 +158,9 @@ async function resolvedPackage(target) {
|
|
|
157
158
|
};
|
|
158
159
|
}
|
|
159
160
|
export async function inspectAgentControlCenter(options = {}) {
|
|
160
|
-
const dshHome =
|
|
161
|
+
const dshHome = await resolveManagedDshHome(options.dshHome, false);
|
|
161
162
|
const profile = assertProfile(options.profile ?? "web");
|
|
163
|
+
await assertNoSymlinkDescendants(dshHome, `profiles/${profile}`);
|
|
162
164
|
const target = resolve(dshHome, "profiles", profile);
|
|
163
165
|
const metadata = await profileMetadata(resolve(target, "package.json"));
|
|
164
166
|
const dependency = metadata?.dependencies?.[packageMetadata.name];
|
|
@@ -229,46 +231,67 @@ function runPluginCommand(action, operand, options) {
|
|
|
229
231
|
execute(command, args, processOptions);
|
|
230
232
|
}
|
|
231
233
|
async function captureProfile(target) {
|
|
232
|
-
|
|
234
|
+
const files = await Promise.all(PROFILE_STATE_FILES.map(async (relativePath) => ({
|
|
233
235
|
path: resolve(target, relativePath),
|
|
234
236
|
content: await optionalFile(resolve(target, relativePath)),
|
|
235
237
|
})));
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if (file.content
|
|
240
|
-
|
|
241
|
-
else {
|
|
242
|
-
await mkdir(dirname(file.path), { recursive: true });
|
|
243
|
-
await writeFile(file.path, file.content);
|
|
244
|
-
}
|
|
238
|
+
const digest = createHash("sha256");
|
|
239
|
+
for (const file of files) {
|
|
240
|
+
digest.update(`${file.path.split(/[\\/]/u).at(-1) ?? "state"}\0${file.content?.length ?? -1}\0`);
|
|
241
|
+
if (file.content !== undefined)
|
|
242
|
+
digest.update(file.content);
|
|
245
243
|
}
|
|
244
|
+
return { files, revision: digest.digest("hex") };
|
|
246
245
|
}
|
|
247
|
-
function
|
|
248
|
-
|
|
249
|
-
if (!dependency)
|
|
250
|
-
return undefined;
|
|
251
|
-
return localDependency(dependency) ? dependency : `${packageMetadata.name}@${dependency}`;
|
|
252
|
-
}
|
|
253
|
-
async function retainRollbackEvidence(dshHome, snapshot, failure) {
|
|
246
|
+
async function retainRollbackEvidence(dshHome, before, after, failure) {
|
|
247
|
+
await assertNoSymlinkDescendants(dshHome, "odai/control-center-backups");
|
|
254
248
|
const root = resolve(dshHome, "odai", "control-center-backups", `${Date.now()}-${randomUUID()}`);
|
|
255
249
|
await mkdir(root, { recursive: true });
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
250
|
+
await assertNoSymlinkDescendants(dshHome, "odai/control-center-backups");
|
|
251
|
+
for (const [name, snapshot] of [["before", before], ["after", after]]) {
|
|
252
|
+
const snapshotRoot = resolve(root, name);
|
|
253
|
+
await mkdir(snapshotRoot, { recursive: true });
|
|
254
|
+
const states = {};
|
|
255
|
+
for (const file of snapshot.files) {
|
|
256
|
+
const filename = file.path.split(/[\\/]/u).at(-1) ?? "state";
|
|
257
|
+
states[filename] = file.content === undefined ? "missing" : "present";
|
|
258
|
+
if (file.content !== undefined)
|
|
259
|
+
await writeFile(resolve(snapshotRoot, filename), file.content);
|
|
260
|
+
}
|
|
261
|
+
await writeFile(resolve(snapshotRoot, "snapshot.json"), `${JSON.stringify({ revision: snapshot.revision, files: states }, null, 2)}\n`, "utf8");
|
|
259
262
|
}
|
|
260
263
|
await writeFile(resolve(root, "failure.txt"), `${failure}\n`, "utf8");
|
|
261
264
|
return root;
|
|
262
265
|
}
|
|
263
|
-
async function
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
async function changedProfileFailure(dshHome, before, after, detail, cause) {
|
|
267
|
+
try {
|
|
268
|
+
const backupPath = await retainRollbackEvidence(dshHome, before, after, detail);
|
|
269
|
+
return new Error(`${detail}\ncurrent profile state was preserved; recovery evidence retained at ${backupPath}`, { cause });
|
|
270
|
+
}
|
|
271
|
+
catch (evidenceError) {
|
|
272
|
+
return new AggregateError([cause, evidenceError], `${detail}\ncurrent profile state was preserved, but recovery evidence could not be retained`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async function acquireControlCenterOperation(dshHome, profile) {
|
|
276
|
+
await assertNoSymlinkDescendants(dshHome, "odai/locks");
|
|
277
|
+
const lockRoot = resolve(dshHome, "odai", "locks");
|
|
278
|
+
await mkdir(lockRoot, { recursive: true, mode: 0o700 });
|
|
279
|
+
await assertNoSymlinkDescendants(dshHome, "odai/locks");
|
|
280
|
+
return acquireAgentOperationLock(resolve(lockRoot, `control-center-${profile}.lock`), `Agent Control Center ${profile} operation`);
|
|
270
281
|
}
|
|
271
282
|
export async function installAgentControlCenter(options = {}) {
|
|
283
|
+
const dshHome = await resolveManagedDshHome(options.dshHome, true);
|
|
284
|
+
const profile = assertProfile(options.profile ?? "web");
|
|
285
|
+
const operationOptions = { ...options, dshHome, profile };
|
|
286
|
+
const releaseOperation = await acquireControlCenterOperation(dshHome, profile);
|
|
287
|
+
try {
|
|
288
|
+
return await installAgentControlCenterUnderLock(operationOptions);
|
|
289
|
+
}
|
|
290
|
+
finally {
|
|
291
|
+
releaseOperation();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
async function installAgentControlCenterUnderLock(options) {
|
|
272
295
|
const current = await inspectAgentControlCenter(options);
|
|
273
296
|
if (current.status === "current") {
|
|
274
297
|
return Object.freeze({
|
|
@@ -304,29 +327,46 @@ export async function installAgentControlCenter(options = {}) {
|
|
|
304
327
|
});
|
|
305
328
|
}
|
|
306
329
|
catch (error) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
catch (rollbackError) {
|
|
311
|
-
const detail = `install failed: ${errorMessage(error)}\nrollback failed: ${errorMessage(rollbackError)}`;
|
|
312
|
-
const backupPath = await retainRollbackEvidence(current.dshHome, snapshot, detail);
|
|
313
|
-
throw new Error(`${detail}\nprofile recovery evidence retained at ${backupPath}`);
|
|
330
|
+
const after = await captureProfile(current.target);
|
|
331
|
+
if (after.revision === snapshot.revision) {
|
|
332
|
+
throw new Error(`${errorMessage(error)}; Control Center profile state remained unchanged`, { cause: error });
|
|
314
333
|
}
|
|
315
|
-
|
|
334
|
+
const detail = `install failed: ${errorMessage(error)}\nautomatic rollback was not attempted because profile ownership changed`;
|
|
335
|
+
throw await changedProfileFailure(current.dshHome, snapshot, after, detail, error);
|
|
316
336
|
}
|
|
317
337
|
}
|
|
318
338
|
export async function uninstallAgentControlCenter(options = {}) {
|
|
319
|
-
const
|
|
320
|
-
if (
|
|
321
|
-
return Object.freeze({ operation: "absent", target:
|
|
322
|
-
|
|
323
|
-
|
|
339
|
+
const initial = await inspectAgentControlCenter(options);
|
|
340
|
+
if (initial.status === "absent")
|
|
341
|
+
return Object.freeze({ operation: "absent", target: initial.target, profile: initial.profile });
|
|
342
|
+
const operationOptions = { ...options, dshHome: initial.dshHome, profile: initial.profile };
|
|
343
|
+
const releaseOperation = await acquireControlCenterOperation(initial.dshHome, initial.profile);
|
|
344
|
+
try {
|
|
345
|
+
const current = await inspectAgentControlCenter(operationOptions);
|
|
346
|
+
if (current.status === "absent")
|
|
347
|
+
return Object.freeze({ operation: "absent", target: current.target, profile: current.profile });
|
|
348
|
+
if (current.status === "partial-drift") {
|
|
349
|
+
throw new Error(`refusing to remove partially owned Control Center profile state at ${current.target}: ${current.issues.join("; ")}`);
|
|
350
|
+
}
|
|
351
|
+
const before = await captureProfile(current.target);
|
|
352
|
+
try {
|
|
353
|
+
runPluginCommand("remove", packageMetadata.name, operationOptions);
|
|
354
|
+
const removed = await inspectAgentControlCenter(operationOptions);
|
|
355
|
+
if (removed.status !== "absent") {
|
|
356
|
+
throw new Error(`DSH plugin manager did not remove the Agent Control Center completely: ${removed.issues.join("; ") || removed.status}`);
|
|
357
|
+
}
|
|
358
|
+
return Object.freeze({ operation: "uninstalled", target: removed.target, profile: removed.profile });
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
const after = await captureProfile(current.target);
|
|
362
|
+
if (after.revision === before.revision)
|
|
363
|
+
throw error;
|
|
364
|
+
const detail = `uninstall failed: ${errorMessage(error)}\nautomatic rollback was not attempted because profile ownership changed`;
|
|
365
|
+
throw await changedProfileFailure(current.dshHome, before, after, detail, error);
|
|
366
|
+
}
|
|
324
367
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
if (removed.status !== "absent") {
|
|
328
|
-
throw new Error(`DSH plugin manager did not remove the Agent Control Center completely: ${removed.issues.join("; ") || removed.status}`);
|
|
368
|
+
finally {
|
|
369
|
+
releaseOperation();
|
|
329
370
|
}
|
|
330
|
-
return Object.freeze({ operation: "uninstalled", target: removed.target, profile: removed.profile });
|
|
331
371
|
}
|
|
332
372
|
//# sourceMappingURL=control-center-installer.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-center-installer.mjs","sourceRoot":"","sources":["../../src/control-center-installer.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"control-center-installer.mjs","sourceRoot":"","sources":["../../src/control-center-installer.mts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,14 @@ export declare function supportsDshVersion(version: string): boolean;
|
|
|
14
14
|
export declare const SUPPORTED_DSH_VERSION = "0.1.2-rc.1";
|
|
15
15
|
export declare function renderAgentCompositionForDsh(composition: string, dshVersion?: string): string;
|
|
16
16
|
export declare function resolveDshHome(configured?: string, env?: NodeJS.ProcessEnv): string;
|
|
17
|
+
export declare function resolveManagedDshHome(configured: string | undefined, create: boolean): Promise<string>;
|
|
18
|
+
export declare function assertNoSymlinkDescendants(root: string, relativePath: string): Promise<void>;
|
|
17
19
|
export declare function inspectAgentInstallation(options?: AgentInstallerOptions): Promise<Readonly<{
|
|
18
20
|
status: "absent" | "installed" | "drifted";
|
|
19
21
|
issues: string[];
|
|
20
22
|
version?: string;
|
|
21
23
|
dshVersion?: string;
|
|
24
|
+
revision?: string;
|
|
22
25
|
dshHome: string;
|
|
23
26
|
presetId: string;
|
|
24
27
|
target: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.mts","sourceRoot":"","sources":["../../src/installer.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.mts","sourceRoot":"","sources":["../../src/installer.mts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiCD,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAKhD,eAAO,MAAM,MAAM,UAAwB,CAAC;AAE5C,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,GAAE,OAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhF;AAsBD,eAAO,MAAM,mBAAmB,eAAY,CAAC;AAC7C,eAAO,MAAM,sBAAsB,mBAAsC,CAAC;AAI1E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AACD,eAAO,MAAM,qBAAqB,eAAqB,CAAC;AAexD,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAwB,GAAG,MAAM,CAQ5G;AAED,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAShG;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5G;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlG;AAUD,wBAAsB,wBAAwB,CAAC,OAAO,GAAE,qBAA0B;YAhJxE,QAAQ,GAAG,WAAW,GAAG,SAAS;YAClC,MAAM,EAAE;cACN,MAAM;iBACH,MAAM;eACR,MAAM;;;;IAmJlB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;;IAa3E;AA2GD,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;IAmC7E"}
|
package/build/src/installer.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
-
import { chmod, cp, lstat, mkdir, readFile, readdir, rename, rm, writeFile, } from "node:fs/promises";
|
|
2
|
+
import { chmod, cp, lstat, mkdir, readFile, readdir, realpath, rename, rm, writeFile, } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, resolve, sep } from "node:path";
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
-
import { satisfies, validRange } from "semver";
|
|
6
|
+
import { satisfies, valid, validRange } from "semver";
|
|
7
7
|
import { parse as parseYaml } from "yaml";
|
|
8
|
+
import { acquireAgentOperationLock } from "./operation-lock.mjs";
|
|
8
9
|
function isRecord(value) {
|
|
9
10
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10
11
|
}
|
|
@@ -88,16 +89,76 @@ export function resolveDshHome(configured, env = process.env) {
|
|
|
88
89
|
return resolve(homedir(), trimmed.slice(2));
|
|
89
90
|
return resolve(trimmed);
|
|
90
91
|
}
|
|
92
|
+
export async function resolveManagedDshHome(configured, create) {
|
|
93
|
+
const requested = resolveDshHome(configured);
|
|
94
|
+
const state = await pathState(requested);
|
|
95
|
+
if (state === "missing") {
|
|
96
|
+
if (!create)
|
|
97
|
+
return requested;
|
|
98
|
+
await mkdir(requested, { recursive: true, mode: 0o700 });
|
|
99
|
+
}
|
|
100
|
+
else if (state !== "directory" && state !== "symlink") {
|
|
101
|
+
throw new Error(`DSH home is not a directory: ${requested}`);
|
|
102
|
+
}
|
|
103
|
+
const canonical = await realpath(requested);
|
|
104
|
+
if (await pathState(canonical) !== "directory")
|
|
105
|
+
throw new Error(`DSH home is not a regular directory: ${canonical}`);
|
|
106
|
+
return canonical;
|
|
107
|
+
}
|
|
108
|
+
export async function assertNoSymlinkDescendants(root, relativePath) {
|
|
109
|
+
if (relativePath.split(/[\\/]/u).some((segment) => segment === "..")) {
|
|
110
|
+
throw new Error(`managed DSH path escapes its root: ${relativePath}`);
|
|
111
|
+
}
|
|
112
|
+
const rootState = await pathState(root);
|
|
113
|
+
if (rootState === "missing")
|
|
114
|
+
return;
|
|
115
|
+
if (rootState !== "directory")
|
|
116
|
+
throw new Error(`managed DSH root is not a regular directory: ${root}`);
|
|
117
|
+
let current = root;
|
|
118
|
+
const segments = relativePath.split(/[\\/]/u).filter(Boolean);
|
|
119
|
+
for (let index = 0; index < segments.length; index += 1) {
|
|
120
|
+
current = resolve(current, segments[index]);
|
|
121
|
+
const state = await pathState(current);
|
|
122
|
+
if (state === "missing")
|
|
123
|
+
return;
|
|
124
|
+
if (state === "symlink")
|
|
125
|
+
throw new Error(`symbolic link is not allowed in managed DSH path: ${current}`);
|
|
126
|
+
if (index < segments.length - 1 && state !== "directory") {
|
|
127
|
+
throw new Error(`managed DSH parent is not a directory: ${current}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function acquirePresetOperation(dshHome, presetId) {
|
|
132
|
+
await assertNoSymlinkDescendants(dshHome, "odai/locks");
|
|
133
|
+
const lockRoot = resolve(dshHome, "odai", "locks");
|
|
134
|
+
await mkdir(lockRoot, { recursive: true, mode: 0o700 });
|
|
135
|
+
await assertNoSymlinkDescendants(dshHome, "odai/locks");
|
|
136
|
+
return acquireAgentOperationLock(resolve(lockRoot, `agent-preset-${presetId}.lock`), `Agent preset ${presetId} operation`);
|
|
137
|
+
}
|
|
91
138
|
export async function inspectAgentInstallation(options = {}) {
|
|
92
139
|
const presetId = assertPresetId(options.presetId ?? DEFAULT_PRESET_ID);
|
|
93
|
-
const dshHome =
|
|
140
|
+
const dshHome = await resolveManagedDshHome(options.dshHome, false);
|
|
141
|
+
await assertNoSymlinkDescendants(dshHome, ".agent-presets");
|
|
94
142
|
const target = resolve(dshHome, ".agent-presets", presetId);
|
|
95
143
|
const state = await inspectTarget(target, presetId);
|
|
96
144
|
return Object.freeze({ dshHome, presetId, target, ...state });
|
|
97
145
|
}
|
|
98
146
|
export async function installAgentPreset(options = {}) {
|
|
99
147
|
const presetId = assertPresetId(options.presetId ?? DEFAULT_PRESET_ID);
|
|
100
|
-
const dshHome =
|
|
148
|
+
const dshHome = await resolveManagedDshHome(options.dshHome, true);
|
|
149
|
+
await assertNoSymlinkDescendants(dshHome, ".agent-presets");
|
|
150
|
+
const targetRoot = resolve(dshHome, ".agent-presets");
|
|
151
|
+
await mkdir(targetRoot, { recursive: true, mode: 0o700 });
|
|
152
|
+
await assertNoSymlinkDescendants(dshHome, ".agent-presets");
|
|
153
|
+
const releaseOperation = await acquirePresetOperation(dshHome, presetId);
|
|
154
|
+
try {
|
|
155
|
+
return await installAgentPresetUnderLock(options, presetId, dshHome);
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
releaseOperation();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async function installAgentPresetUnderLock(options, presetId, dshHome) {
|
|
101
162
|
const sourceRoot = resolve(options.sourceRoot ?? defaultSourceRoot);
|
|
102
163
|
const dshVersion = options.dshVersion ?? SUPPORTED_DSH_VERSION;
|
|
103
164
|
if (!supportsDshVersion(dshVersion)) {
|
|
@@ -116,7 +177,7 @@ export async function installAgentPreset(options = {}) {
|
|
|
116
177
|
await mkdir(targetRoot, { recursive: true, mode: 0o700 });
|
|
117
178
|
const staging = resolve(targetRoot, `.${presetId}.tmp-${process.pid}-${randomUUID()}`);
|
|
118
179
|
const backup = resolve(targetRoot, `.${presetId}.backup-${process.pid}-${randomUUID()}`);
|
|
119
|
-
let
|
|
180
|
+
let backupState = "none";
|
|
120
181
|
try {
|
|
121
182
|
await cp(sourceRoot, staging, { recursive: true, errorOnExist: true });
|
|
122
183
|
await tightenTree(staging);
|
|
@@ -142,12 +203,22 @@ export async function installAgentPreset(options = {}) {
|
|
|
142
203
|
await chmod(manifestPath, 0o600);
|
|
143
204
|
if (current.status === "installed") {
|
|
144
205
|
await rename(target, backup);
|
|
145
|
-
|
|
206
|
+
backupState = "unverified";
|
|
207
|
+
const claimed = await inspectTarget(backup, presetId);
|
|
208
|
+
if (claimed.status !== "installed" || claimed.revision !== current.revision) {
|
|
209
|
+
throw new Error(`preset changed before replacement; unverified target preserved at ${backup}`);
|
|
210
|
+
}
|
|
211
|
+
backupState = "confirmed";
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const latest = await inspectTarget(target, presetId);
|
|
215
|
+
if (latest.status !== "absent")
|
|
216
|
+
throw new Error(`preset target appeared during installation; refusing to replace ${target}`);
|
|
146
217
|
}
|
|
147
218
|
await rename(staging, target);
|
|
148
|
-
if (
|
|
219
|
+
if (backupState === "confirmed") {
|
|
149
220
|
await rm(backup, { recursive: true, force: true });
|
|
150
|
-
|
|
221
|
+
backupState = "none";
|
|
151
222
|
}
|
|
152
223
|
return Object.freeze({
|
|
153
224
|
operation: current.status === "installed" ? "updated" : "installed",
|
|
@@ -161,16 +232,30 @@ export async function installAgentPreset(options = {}) {
|
|
|
161
232
|
});
|
|
162
233
|
}
|
|
163
234
|
catch (error) {
|
|
164
|
-
|
|
165
|
-
|
|
235
|
+
if (backupState === "unverified") {
|
|
236
|
+
throw new Error(`agent preset update stopped before ownership was confirmed; moved target preserved at ${backup}: ${errorMessage(error)}`, { cause: error });
|
|
237
|
+
}
|
|
238
|
+
if (backupState === "confirmed") {
|
|
166
239
|
const targetState = await pathState(target);
|
|
167
|
-
if (targetState === "missing")
|
|
168
|
-
|
|
240
|
+
if (targetState === "missing") {
|
|
241
|
+
try {
|
|
242
|
+
await rename(backup, target);
|
|
243
|
+
backupState = "none";
|
|
244
|
+
}
|
|
245
|
+
catch (restoreError) {
|
|
246
|
+
throw new AggregateError([error, restoreError], `agent preset update failed and the previous preset could not be restored; backup preserved at ${backup}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
throw new Error(`agent preset update failed after replacing the target; previous preset backup preserved at ${backup}: ${errorMessage(error)}`, { cause: error });
|
|
251
|
+
}
|
|
169
252
|
}
|
|
170
253
|
throw error;
|
|
171
254
|
}
|
|
172
255
|
finally {
|
|
173
|
-
await rm(
|
|
256
|
+
await rm(staging, { recursive: true, force: true });
|
|
257
|
+
if (backupState === "none")
|
|
258
|
+
await rm(backup, { recursive: true, force: true });
|
|
174
259
|
}
|
|
175
260
|
}
|
|
176
261
|
export async function uninstallAgentPreset(options = {}) {
|
|
@@ -178,16 +263,38 @@ export async function uninstallAgentPreset(options = {}) {
|
|
|
178
263
|
if (inspected.status === "absent") {
|
|
179
264
|
return Object.freeze({ operation: "absent", target: inspected.target, presetId: inspected.presetId });
|
|
180
265
|
}
|
|
181
|
-
|
|
182
|
-
|
|
266
|
+
const releaseOperation = await acquirePresetOperation(inspected.dshHome, inspected.presetId);
|
|
267
|
+
try {
|
|
268
|
+
await assertNoSymlinkDescendants(inspected.dshHome, ".agent-presets");
|
|
269
|
+
const current = await inspectTarget(inspected.target, inspected.presetId);
|
|
270
|
+
if (current.status === "drifted") {
|
|
271
|
+
throw new Error(`refusing to remove modified preset at ${inspected.target}: ${current.issues.join("; ")}`);
|
|
272
|
+
}
|
|
273
|
+
if (current.status === "absent") {
|
|
274
|
+
return Object.freeze({ operation: "absent", target: inspected.target, presetId: inspected.presetId });
|
|
275
|
+
}
|
|
276
|
+
await assertPresetIsNotDefault(inspected.dshHome, inspected.presetId);
|
|
277
|
+
const quarantine = resolve(dirname(inspected.target), `.${inspected.presetId}.uninstall-${process.pid}-${randomUUID()}`);
|
|
278
|
+
await rename(inspected.target, quarantine);
|
|
279
|
+
const claimed = await inspectTarget(quarantine, inspected.presetId);
|
|
280
|
+
if (claimed.status !== "installed" || claimed.revision !== current.revision) {
|
|
281
|
+
throw new Error(`preset changed before uninstall ownership was confirmed; moved target preserved at ${quarantine}`);
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
await rm(quarantine, { recursive: true });
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
throw new Error(`confirmed preset could not be removed completely; remaining quarantine retained at ${quarantine}: ${errorMessage(error)}`, { cause: error });
|
|
288
|
+
}
|
|
289
|
+
return Object.freeze({
|
|
290
|
+
operation: "uninstalled",
|
|
291
|
+
target: inspected.target,
|
|
292
|
+
presetId: inspected.presetId,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
releaseOperation();
|
|
183
297
|
}
|
|
184
|
-
await assertPresetIsNotDefault(inspected.dshHome, inspected.presetId);
|
|
185
|
-
await rm(inspected.target, { recursive: true, force: true });
|
|
186
|
-
return Object.freeze({
|
|
187
|
-
operation: "uninstalled",
|
|
188
|
-
target: inspected.target,
|
|
189
|
-
presetId: inspected.presetId,
|
|
190
|
-
});
|
|
191
298
|
}
|
|
192
299
|
async function assertPresetIsNotDefault(dshHome, presetId) {
|
|
193
300
|
const settingsPath = resolve(dshHome, "settings.yaml");
|
|
@@ -219,8 +326,10 @@ async function inspectTarget(target, presetId) {
|
|
|
219
326
|
if (state !== "directory")
|
|
220
327
|
return { status: "drifted", issues: ["target is not a regular directory"] };
|
|
221
328
|
let manifest;
|
|
329
|
+
let manifestSource;
|
|
222
330
|
try {
|
|
223
|
-
|
|
331
|
+
manifestSource = await readFile(resolve(target, MANIFEST_FILE));
|
|
332
|
+
manifest = JSON.parse(manifestSource.toString("utf8"));
|
|
224
333
|
}
|
|
225
334
|
catch (error) {
|
|
226
335
|
return { status: "drifted", issues: [`managed manifest is unavailable: ${errorMessage(error)}`] };
|
|
@@ -251,6 +360,7 @@ async function inspectTarget(target, presetId) {
|
|
|
251
360
|
issues,
|
|
252
361
|
version: isRecord(manifest) && typeof manifest.version === "string" ? manifest.version : undefined,
|
|
253
362
|
dshVersion: isRecord(manifest) && typeof manifest.dshVersion === "string" ? manifest.dshVersion : undefined,
|
|
363
|
+
revision: issues.length === 0 ? createHash("sha256").update(manifestSource).digest("hex") : undefined,
|
|
254
364
|
};
|
|
255
365
|
}
|
|
256
366
|
function isManagedManifest(manifest) {
|
|
@@ -266,15 +376,24 @@ function validateManifest(manifest, presetId) {
|
|
|
266
376
|
issues.push("unsupported managed manifest schema");
|
|
267
377
|
if (!isRecord(manifest) || manifest.package !== packageMetadata.name)
|
|
268
378
|
issues.push("managed manifest package mismatch");
|
|
379
|
+
if (!isRecord(manifest) || typeof manifest.version !== "string" || valid(manifest.version) === null) {
|
|
380
|
+
issues.push("managed manifest version is invalid");
|
|
381
|
+
}
|
|
382
|
+
if (!isRecord(manifest) || typeof manifest.dshVersion !== "string" || valid(manifest.dshVersion) === null) {
|
|
383
|
+
issues.push("managed manifest DSH version is invalid");
|
|
384
|
+
}
|
|
269
385
|
if (!isRecord(manifest) || manifest.presetId !== presetId)
|
|
270
386
|
issues.push("managed manifest preset id mismatch");
|
|
271
387
|
if (!isRecord(manifest) || !isRecord(manifest.files)
|
|
272
|
-
|| !Object.values(manifest.files).every((value) => typeof value === "string")) {
|
|
388
|
+
|| !Object.values(manifest.files).every((value) => typeof value === "string" && /^[a-f0-9]{64}$/u.test(value))) {
|
|
273
389
|
issues.push("managed manifest file map is invalid");
|
|
274
390
|
}
|
|
275
391
|
return issues;
|
|
276
392
|
}
|
|
277
393
|
async function assertSource(sourceRoot) {
|
|
394
|
+
if (await pathState(sourceRoot) !== "directory") {
|
|
395
|
+
throw new Error(`agent package source must be a regular directory and not a symbolic link: ${sourceRoot}`);
|
|
396
|
+
}
|
|
278
397
|
for (const path of requiredFiles) {
|
|
279
398
|
const state = await pathState(resolve(sourceRoot, path));
|
|
280
399
|
if (state !== "file")
|
|
@@ -282,6 +401,8 @@ async function assertSource(sourceRoot) {
|
|
|
282
401
|
}
|
|
283
402
|
}
|
|
284
403
|
async function tightenTree(root) {
|
|
404
|
+
if (await pathState(root) !== "directory")
|
|
405
|
+
throw new Error(`managed preset root is not a regular directory: ${root}`);
|
|
285
406
|
await chmod(root, 0o700);
|
|
286
407
|
const entries = await readdir(root, { withFileTypes: true });
|
|
287
408
|
for (const entry of entries) {
|