odai-dsh-agent 0.2.22 → 0.2.25
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 -157
- package/build/bin/odai-dsh-agent.mjs +27 -38
- 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 +4 -6
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +149 -107
- 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 +36 -58
- 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/control-center-runtime.d.mts +1 -0
- package/preset/odai/runtime/control-center-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/control-center-runtime.mjs +20 -0
- package/preset/odai/runtime/control-center-runtime.mjs.map +1 -1
- 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/index.mjs +3 -4
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/{session-compat.d.mts → legacy-session-repair.d.mts} +7 -7
- package/preset/odai/runtime/legacy-session-repair.d.mts.map +1 -0
- package/preset/odai/runtime/{session-compat.mjs → legacy-session-repair.mjs} +1 -1
- package/preset/odai/runtime/legacy-session-repair.mjs.map +1 -0
- 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/routing-context.d.mts +1 -1
- package/preset/odai/runtime/routing-context.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +0 -1
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +1 -3
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-types.mjs +1 -5
- package/preset/odai/runtime/runtime-types.mjs.map +1 -1
- 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 +5 -107
- 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 +68 -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 +6 -6
- 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 +31 -31
- package/preset/odai/skills/odai/references/leverage.md +51 -50
- package/preset/odai/skills/odai/references/planning.md +83 -83
- package/preset/odai/skills/odai/references/support.md +30 -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
- package/preset/odai/runtime/session-compat.d.mts.map +0 -1
- package/preset/odai/runtime/session-compat.mjs.map +0 -1
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
|
}
|
|
@@ -39,15 +40,14 @@ const packageMetadata = {
|
|
|
39
40
|
version: parsedPackageMetadata.version,
|
|
40
41
|
peerDependencies,
|
|
41
42
|
};
|
|
42
|
-
const EXPECTED_DSH_RANGE = "0.1.
|
|
43
|
+
const EXPECTED_DSH_RANGE = "0.1.2-rc.1";
|
|
43
44
|
const SOURCE_DSH_VERSION = "0.1.2-rc.1";
|
|
44
|
-
const LEGACY_DSH_VERSION = "0.1.1-rc.2";
|
|
45
45
|
const peerRange = packageMetadata.peerDependencies["@deepseek-ai/dsh"];
|
|
46
46
|
if (!peerRange || peerRange !== EXPECTED_DSH_RANGE || validRange(peerRange) === null) {
|
|
47
47
|
throw new Error(`odai-dsh-agent peer dependency must equal ${EXPECTED_DSH_RANGE}`);
|
|
48
48
|
}
|
|
49
49
|
export const SUPPORTED_DSH_RANGE = peerRange;
|
|
50
|
-
export const SUPPORTED_DSH_VERSIONS = Object.freeze([
|
|
50
|
+
export const SUPPORTED_DSH_VERSIONS = Object.freeze([SOURCE_DSH_VERSION]);
|
|
51
51
|
if (SUPPORTED_DSH_VERSIONS.some((version) => !satisfies(version, SUPPORTED_DSH_RANGE))) {
|
|
52
52
|
throw new Error(`Odai Agent tested DSH versions must satisfy ${SUPPORTED_DSH_RANGE}`);
|
|
53
53
|
}
|
|
@@ -59,7 +59,6 @@ const requiredFiles = Object.freeze([
|
|
|
59
59
|
"agent.cordis.yml",
|
|
60
60
|
"preset.yml",
|
|
61
61
|
"runtime/index.mjs",
|
|
62
|
-
"runtime/session-compat.mjs",
|
|
63
62
|
"runtime/session-evidence.mjs",
|
|
64
63
|
"runtime/skill-bundle.mjs",
|
|
65
64
|
"runtime/skill-evolution.mjs",
|
|
@@ -69,11 +68,6 @@ const requiredFiles = Object.freeze([
|
|
|
69
68
|
"skills/odai/SKILL.md",
|
|
70
69
|
"skills/odai/manifest.json",
|
|
71
70
|
]);
|
|
72
|
-
function replaceRequired(value, oldString, newString, label) {
|
|
73
|
-
if (!value.includes(oldString))
|
|
74
|
-
throw new Error(`agent source composition is missing ${label}`);
|
|
75
|
-
return value.replace(oldString, newString);
|
|
76
|
-
}
|
|
77
71
|
export function renderAgentCompositionForDsh(composition, dshVersion = SUPPORTED_DSH_VERSION) {
|
|
78
72
|
if (typeof composition !== "string" || composition.trim() === "") {
|
|
79
73
|
throw new TypeError("agent composition must be a non-empty string");
|
|
@@ -81,41 +75,7 @@ export function renderAgentCompositionForDsh(composition, dshVersion = SUPPORTED
|
|
|
81
75
|
if (!supportsDshVersion(dshVersion)) {
|
|
82
76
|
throw new Error(`unsupported DSH version ${dshVersion || "<empty>"}; expected ${SUPPORTED_DSH_RANGE}`);
|
|
83
77
|
}
|
|
84
|
-
|
|
85
|
-
if (dshVersion !== LEGACY_DSH_VERSION)
|
|
86
|
-
return rendered;
|
|
87
|
-
rendered = replaceRequired(rendered, [
|
|
88
|
-
"# The goal service and session driver stay on the host plane, where the Gateway",
|
|
89
|
-
"# can resolve them. The human command and model-facing tool register into this",
|
|
90
|
-
"# preset's scoped layers.",
|
|
91
|
-
"- id: command-goal",
|
|
92
|
-
" name: '@deepseek-ai/dsh-command-goal'",
|
|
93
|
-
].join("\n") + "\n\n", [
|
|
94
|
-
"# Only the model-facing tool. The goal SERVICE, its session driver, and the",
|
|
95
|
-
"# `/goal` command stay on the host plane: the Gateway serves the goal domain as",
|
|
96
|
-
"# Remote endpoints whose receiver comes from a generated descriptor, so it",
|
|
97
|
-
"# resolves `goals` on the host and an entry-local realm here would hide it. The",
|
|
98
|
-
"# registry is keyed by session anyway, so one host instance serves every",
|
|
99
|
-
"# session. What a preset chooses is whether its agent can call the goal tool.",
|
|
100
|
-
].join("\n") + "\n", "rc.1 goal command block");
|
|
101
|
-
rendered = replaceRequired(rendered, "- id: delegation\n", [
|
|
102
|
-
"#",
|
|
103
|
-
"# `tool-subagent-report` is host-plane for the same reason as the registry,",
|
|
104
|
-
"# not because a preset may not want it: it registers a CONTINUABLE SETUP on",
|
|
105
|
-
"# that singleton rather than a tool this agent calls, and the setup list is",
|
|
106
|
-
"# not scope-aware — one copy per mounted preset means every child gets",
|
|
107
|
-
"# `report` registered once per live session, which throws on the second.",
|
|
108
|
-
"- id: delegation",
|
|
109
|
-
].join("\n") + "\n", "rc.1 send_message host guidance");
|
|
110
|
-
rendered = replaceRequired(rendered, " modelSelectionSettings: true\n", "", "rc.1 spawn model selection setting");
|
|
111
|
-
rendered = replaceRequired(rendered, [
|
|
112
|
-
" # Fork omits model selection so provider/model stay equal to the parent and",
|
|
113
|
-
" # the inherited history remains eligible for KV Cache reuse. This preset",
|
|
114
|
-
" # keeps fork continuable; parent and child inherit the same messaging tool,",
|
|
115
|
-
" # while the parent id and return guidance follow the inherited history.",
|
|
116
|
-
].join("\n") + "\n", "", "rc.1 fork messaging guidance");
|
|
117
|
-
rendered = replaceRequired(rendered, " fetch: true\n", " fetch: false\n", "rc.1 web fetch setting");
|
|
118
|
-
return rendered;
|
|
78
|
+
return composition.replace(/\r\n/gu, "\n");
|
|
119
79
|
}
|
|
120
80
|
export function resolveDshHome(configured, env = process.env) {
|
|
121
81
|
const value = configured ?? env.DSH_HOME ?? resolve(homedir(), ".dsh");
|
|
@@ -129,16 +89,76 @@ export function resolveDshHome(configured, env = process.env) {
|
|
|
129
89
|
return resolve(homedir(), trimmed.slice(2));
|
|
130
90
|
return resolve(trimmed);
|
|
131
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
|
+
}
|
|
132
138
|
export async function inspectAgentInstallation(options = {}) {
|
|
133
139
|
const presetId = assertPresetId(options.presetId ?? DEFAULT_PRESET_ID);
|
|
134
|
-
const dshHome =
|
|
140
|
+
const dshHome = await resolveManagedDshHome(options.dshHome, false);
|
|
141
|
+
await assertNoSymlinkDescendants(dshHome, ".agent-presets");
|
|
135
142
|
const target = resolve(dshHome, ".agent-presets", presetId);
|
|
136
143
|
const state = await inspectTarget(target, presetId);
|
|
137
144
|
return Object.freeze({ dshHome, presetId, target, ...state });
|
|
138
145
|
}
|
|
139
146
|
export async function installAgentPreset(options = {}) {
|
|
140
147
|
const presetId = assertPresetId(options.presetId ?? DEFAULT_PRESET_ID);
|
|
141
|
-
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) {
|
|
142
162
|
const sourceRoot = resolve(options.sourceRoot ?? defaultSourceRoot);
|
|
143
163
|
const dshVersion = options.dshVersion ?? SUPPORTED_DSH_VERSION;
|
|
144
164
|
if (!supportsDshVersion(dshVersion)) {
|
|
@@ -154,11 +174,10 @@ export async function installAgentPreset(options = {}) {
|
|
|
154
174
|
throw new Error(`refusing to replace modified preset at ${target}: ${current.issues.join("; ")}`);
|
|
155
175
|
}
|
|
156
176
|
await assertSource(sourceRoot);
|
|
157
|
-
const sessionCompatibility = await repairSessionCompatibility(dshHome, [sourceRoot], options.confirmDshStopped === true, options.processScanner);
|
|
158
177
|
await mkdir(targetRoot, { recursive: true, mode: 0o700 });
|
|
159
178
|
const staging = resolve(targetRoot, `.${presetId}.tmp-${process.pid}-${randomUUID()}`);
|
|
160
179
|
const backup = resolve(targetRoot, `.${presetId}.backup-${process.pid}-${randomUUID()}`);
|
|
161
|
-
let
|
|
180
|
+
let backupState = "none";
|
|
162
181
|
try {
|
|
163
182
|
await cp(sourceRoot, staging, { recursive: true, errorOnExist: true });
|
|
164
183
|
await tightenTree(staging);
|
|
@@ -184,12 +203,22 @@ export async function installAgentPreset(options = {}) {
|
|
|
184
203
|
await chmod(manifestPath, 0o600);
|
|
185
204
|
if (current.status === "installed") {
|
|
186
205
|
await rename(target, backup);
|
|
187
|
-
|
|
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}`);
|
|
188
217
|
}
|
|
189
218
|
await rename(staging, target);
|
|
190
|
-
if (
|
|
219
|
+
if (backupState === "confirmed") {
|
|
191
220
|
await rm(backup, { recursive: true, force: true });
|
|
192
|
-
|
|
221
|
+
backupState = "none";
|
|
193
222
|
}
|
|
194
223
|
return Object.freeze({
|
|
195
224
|
operation: current.status === "installed" ? "updated" : "installed",
|
|
@@ -200,20 +229,33 @@ export async function installAgentPreset(options = {}) {
|
|
|
200
229
|
dshVersion,
|
|
201
230
|
trust: "user",
|
|
202
231
|
security: "DSH user presets have the same privileges as shell access; install only reviewed preset code.",
|
|
203
|
-
sessionCompatibility,
|
|
204
232
|
});
|
|
205
233
|
}
|
|
206
234
|
catch (error) {
|
|
207
|
-
|
|
208
|
-
|
|
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") {
|
|
209
239
|
const targetState = await pathState(target);
|
|
210
|
-
if (targetState === "missing")
|
|
211
|
-
|
|
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
|
+
}
|
|
212
252
|
}
|
|
213
253
|
throw error;
|
|
214
254
|
}
|
|
215
255
|
finally {
|
|
216
|
-
await rm(
|
|
256
|
+
await rm(staging, { recursive: true, force: true });
|
|
257
|
+
if (backupState === "none")
|
|
258
|
+
await rm(backup, { recursive: true, force: true });
|
|
217
259
|
}
|
|
218
260
|
}
|
|
219
261
|
export async function uninstallAgentPreset(options = {}) {
|
|
@@ -221,21 +263,38 @@ export async function uninstallAgentPreset(options = {}) {
|
|
|
221
263
|
if (inspected.status === "absent") {
|
|
222
264
|
return Object.freeze({ operation: "absent", target: inspected.target, presetId: inspected.presetId });
|
|
223
265
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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();
|
|
297
|
+
}
|
|
239
298
|
}
|
|
240
299
|
async function assertPresetIsNotDefault(dshHome, presetId) {
|
|
241
300
|
const settingsPath = resolve(dshHome, "settings.yaml");
|
|
@@ -267,8 +326,10 @@ async function inspectTarget(target, presetId) {
|
|
|
267
326
|
if (state !== "directory")
|
|
268
327
|
return { status: "drifted", issues: ["target is not a regular directory"] };
|
|
269
328
|
let manifest;
|
|
329
|
+
let manifestSource;
|
|
270
330
|
try {
|
|
271
|
-
|
|
331
|
+
manifestSource = await readFile(resolve(target, MANIFEST_FILE));
|
|
332
|
+
manifest = JSON.parse(manifestSource.toString("utf8"));
|
|
272
333
|
}
|
|
273
334
|
catch (error) {
|
|
274
335
|
return { status: "drifted", issues: [`managed manifest is unavailable: ${errorMessage(error)}`] };
|
|
@@ -299,6 +360,7 @@ async function inspectTarget(target, presetId) {
|
|
|
299
360
|
issues,
|
|
300
361
|
version: isRecord(manifest) && typeof manifest.version === "string" ? manifest.version : undefined,
|
|
301
362
|
dshVersion: isRecord(manifest) && typeof manifest.dshVersion === "string" ? manifest.dshVersion : undefined,
|
|
363
|
+
revision: issues.length === 0 ? createHash("sha256").update(manifestSource).digest("hex") : undefined,
|
|
302
364
|
};
|
|
303
365
|
}
|
|
304
366
|
function isManagedManifest(manifest) {
|
|
@@ -314,46 +376,24 @@ function validateManifest(manifest, presetId) {
|
|
|
314
376
|
issues.push("unsupported managed manifest schema");
|
|
315
377
|
if (!isRecord(manifest) || manifest.package !== packageMetadata.name)
|
|
316
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
|
+
}
|
|
317
385
|
if (!isRecord(manifest) || manifest.presetId !== presetId)
|
|
318
386
|
issues.push("managed manifest preset id mismatch");
|
|
319
387
|
if (!isRecord(manifest) || !isRecord(manifest.files)
|
|
320
|
-
|| !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))) {
|
|
321
389
|
issues.push("managed manifest file map is invalid");
|
|
322
390
|
}
|
|
323
391
|
return issues;
|
|
324
392
|
}
|
|
325
|
-
async function repairSessionCompatibility(dshHome, sourceRoots, confirmDshStopped, processScanner) {
|
|
326
|
-
for (const sourceRoot of sourceRoots) {
|
|
327
|
-
const modulePath = resolve(sourceRoot, "runtime/session-compat.mjs");
|
|
328
|
-
if (await pathState(modulePath) !== "file")
|
|
329
|
-
continue;
|
|
330
|
-
const compatibility = await import(pathToFileURL(modulePath).href);
|
|
331
|
-
if (typeof compatibility.inspectLegacySessionLogs !== "function"
|
|
332
|
-
|| typeof compatibility.repairLegacySessionLogs !== "function") {
|
|
333
|
-
throw new Error(`agent package session compatibility module is invalid: ${modulePath}`);
|
|
334
|
-
}
|
|
335
|
-
const inspected = compatibility.inspectLegacySessionLogs({ dshHome });
|
|
336
|
-
if (inspected.failures.length > 0) {
|
|
337
|
-
throw new Error(`cannot inspect legacy Odai session evidence safely: ${inspected.failures.map((failure) => `${failure.path}: ${failure.error}`).join("; ")}`);
|
|
338
|
-
}
|
|
339
|
-
if (inspected.matchedEvents === 0)
|
|
340
|
-
return inspected;
|
|
341
|
-
if (!confirmDshStopped) {
|
|
342
|
-
throw new Error(`found ${inspected.matchedEvents} legacy Odai session event(s); stop every DSH process and rerun with --yes before changing the Agent preset`);
|
|
343
|
-
}
|
|
344
|
-
const repaired = compatibility.repairLegacySessionLogs({
|
|
345
|
-
dshHome,
|
|
346
|
-
confirmDshStopped: true,
|
|
347
|
-
processScanner,
|
|
348
|
-
});
|
|
349
|
-
if (repaired.failures.length > 0) {
|
|
350
|
-
throw new Error(`cannot repair legacy Odai session evidence safely: ${repaired.failures.map((failure) => `${failure.path}: ${failure.error}`).join("; ")}`);
|
|
351
|
-
}
|
|
352
|
-
return repaired;
|
|
353
|
-
}
|
|
354
|
-
throw new Error("agent package is incomplete: missing runtime/session-compat.mjs");
|
|
355
|
-
}
|
|
356
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
|
+
}
|
|
357
397
|
for (const path of requiredFiles) {
|
|
358
398
|
const state = await pathState(resolve(sourceRoot, path));
|
|
359
399
|
if (state !== "file")
|
|
@@ -361,6 +401,8 @@ async function assertSource(sourceRoot) {
|
|
|
361
401
|
}
|
|
362
402
|
}
|
|
363
403
|
async function tightenTree(root) {
|
|
404
|
+
if (await pathState(root) !== "directory")
|
|
405
|
+
throw new Error(`managed preset root is not a regular directory: ${root}`);
|
|
364
406
|
await chmod(root, 0o700);
|
|
365
407
|
const entries = await readdir(root, { withFileTypes: true });
|
|
366
408
|
for (const entry of entries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.mjs","sourceRoot":"","sources":["../../src/installer.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"installer.mjs","sourceRoot":"","sources":["../../src/installer.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,KAAK,EACL,EAAE,EACF,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,MAAM,EACN,EAAE,EACF,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAkCjE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEhD,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEhH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAY,EAAE,SAAS,GAAY,EAAE;IAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1G,MAAM,IAAI,GAAY,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,qBAAqB,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAChH,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,qBAAqB,CAAC,IAAI,KAAK,QAAQ;OACjF,OAAO,qBAAqB,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC5G,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAClI,CAAC;AACF,MAAM,eAAe,GAAoB;IACvC,IAAI,EAAE,qBAAqB,CAAC,IAAI;IAChC,OAAO,EAAE,qBAAqB,CAAC,OAAO;IACtC,gBAAgB;CACjB,CAAC;AACF,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,SAAS,GAAG,eAAe,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACvE,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,kBAAkB,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;IACrF,MAAM,IAAI,KAAK,CAAC,6CAA6C,kBAAkB,EAAE,CAAC,CAAC;AACrF,CAAC;AACD,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1E,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,IAAI,KAAK,CAAC,+CAA+C,mBAAmB,EAAE,CAAC,CAAC;AACxF,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACjD,CAAC;AACD,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;IACnB,8BAA8B;IAC9B,0BAA0B;IAC1B,6BAA6B;IAC7B,mCAAmC;IACnC,4BAA4B;IAC5B,iCAAiC;IACjC,sBAAsB;IACtB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAAC,WAAmB,EAAE,UAAU,GAAG,qBAAqB;IAClG,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,IAAI,SAAS,cAAc,mBAAmB,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAmB,EAAE,GAAG,GAAsB,OAAO,CAAC,GAAG;IACtF,MAAM,KAAK,GAAG,UAAU,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,OAAO,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAA8B,EAAE,MAAe;IACzF,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;IACrH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAY,EAAE,YAAoB;IACjF,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO;IACpC,IAAI,SAAS,KAAK,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;IACvG,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,EAAE,CAAC,CAAC;QACzG,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,QAAgB;IACrE,MAAM,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxD,OAAO,yBAAyB,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,QAAQ,OAAO,CAAC,EAAE,gBAAgB,QAAQ,YAAY,CAAC,CAAC;AAC7H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAO,GAA0B,EAAE;IAChF,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAO,GAA0B,EAAE;IAC1E,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,OAAO,MAAM,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;YAAS,CAAC;QACT,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,OAA8B,EAAE,QAAgB,EAAE,OAAe;IAC1G,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAC;IAC/D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,IAAI,SAAS,cAAc,mBAAmB,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,KAAK,WAAW;QAC5D,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,QAAQ,QAAQ,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,QAAQ,WAAW,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;IACzF,IAAI,WAAW,GAAwC,MAAM,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,4BAA4B,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACtG,IAAI,kBAAkB,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,iCAAiC,eAAe,CAAC,OAAO,IAAI,UAAU,EAAE,IAAI,CAAC;QAC9H,oHAAoH;QACpH,IAAI,uBAAuB,KAAK,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtE,kBAAkB,IAAI,yCAAyC,CAAC;QAClE,CAAC;QACD,MAAM,SAAS,CAAC,eAAe,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG;YACf,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,eAAe,CAAC,IAAI;YAC7B,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,UAAU;YACV,QAAQ;YACR,KAAK;SACN,CAAC;QACF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,MAAM,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEjC,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7B,WAAW,GAAG,YAAY,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,qEAAqE,MAAM,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,WAAW,GAAG,WAAW,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,MAAM,EAAE,CAAC,CAAC;QAC/H,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;YACnE,OAAO;YACP,QAAQ;YACR,MAAM;YACN,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,UAAU;YACV,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,+FAA+F;SAC1G,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yFAAyF,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/J,CAAC;QACD,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC7B,WAAW,GAAG,MAAM,CAAC;gBACvB,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,MAAM,IAAI,cAAc,CACtB,CAAC,KAAK,EAAE,YAAY,CAAC,EACrB,iGAAiG,MAAM,EAAE,CAC1G,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,8FAA8F,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAC9H,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,KAAK,MAAM;YAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAO,GAA0B,EAAE;IAC5E,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7F,IAAI,CAAC;QACH,MAAM,0BAA0B,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,wBAAwB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,QAAQ,cAAc,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;QACzH,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,sFAAsF,UAAU,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sFAAsF,UAAU,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChK,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAe,EAAE,QAAgB;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACvD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO;QAC1C,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,8CAA8C,CAAC,CAAC;IACtH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACjE,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,mCAAmC,CAAC,EAAE,CAAC;IAEvG,IAAI,QAAiB,CAAC;IACtB,IAAI,cAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAChE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,oCAAoC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACpG,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,WAAW,GAA2B,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;iBACnE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACrD,MAAM;QACN,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClG,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3G,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KACtG,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB;IAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;WAC1F,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;WAC/E,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAiB,EAAE,QAAgB;IAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC5G,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,eAAe,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACvH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACpG,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1G,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC9G,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;WAC/C,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjH,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,UAAkB;IAC5C,IAAI,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,6EAA6E,UAAU,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;IACtH,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7G,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;aAC5C,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;YAC7C,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAY,EACZ,OAAO,GAAsC,EAAE;IAE/C,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtG,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,MAAc;QAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACrE,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC;gBAAE,SAAS;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,YAAY,EAAE,CAAC,CAAC;YAC/G,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;iBAC3D,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;;gBACvE,MAAM,IAAI,KAAK,CAAC,mDAAmD,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,OAAO,WAAW,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,SAAS,CAAC,4EAA4E,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-lock.d.mts","sourceRoot":"","sources":["../../src/operation-lock.mts"],"names":[],"mappings":"AAUA,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI,CAkCjF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { closeSync, fsyncSync, mkdirSync, openSync, readFileSync, rmSync, writeSync } from "node:fs";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
function errorCode(error) {
|
|
5
|
+
return error !== null && typeof error === "object" && "code" in error && typeof error.code === "string"
|
|
6
|
+
? error.code
|
|
7
|
+
: undefined;
|
|
8
|
+
}
|
|
9
|
+
export function acquireAgentOperationLock(path, label) {
|
|
10
|
+
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
11
|
+
const owner = `${process.pid}:${randomUUID()}`;
|
|
12
|
+
let handle;
|
|
13
|
+
try {
|
|
14
|
+
handle = openSync(path, "wx", 0o600);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (errorCode(error) === "EEXIST") {
|
|
18
|
+
throw new Error(`${label} is already in progress; lock retained at ${path}`);
|
|
19
|
+
}
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const content = Buffer.from(`${owner}\n`, "utf8");
|
|
24
|
+
if (writeSync(handle, content, 0, content.length) !== content.length) {
|
|
25
|
+
throw new Error(`short write while acquiring ${label} lock: ${path}`);
|
|
26
|
+
}
|
|
27
|
+
fsyncSync(handle);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
closeSync(handle);
|
|
31
|
+
rmSync(path, { force: true });
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
return () => {
|
|
35
|
+
closeSync(handle);
|
|
36
|
+
let current;
|
|
37
|
+
try {
|
|
38
|
+
current = readFileSync(path, "utf8").trim();
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw new Error(`${label} lock disappeared before release: ${path}`, { cause: error });
|
|
42
|
+
}
|
|
43
|
+
if (current !== owner)
|
|
44
|
+
throw new Error(`${label} lock ownership changed before release: ${path}`);
|
|
45
|
+
rmSync(path);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=operation-lock.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-lock.mjs","sourceRoot":"","sources":["../../src/operation-lock.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QACrG,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,KAAa;IACnE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC;IAC/C,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6CAA6C,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,UAAU,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|