@mengruo/dsh-vision-toolkit 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +4 -0
  3. package/README.zh.md +4 -0
  4. package/docs/requirements-traceability/README.i18n.yaml +2 -2
  5. package/docs/requirements-traceability/README.md +1 -1
  6. package/docs/requirements-traceability/README.zh.md +1 -1
  7. package/lib/artifact-access.js +20 -2
  8. package/lib/artifact-access.js.map +1 -1
  9. package/lib/client.js +59 -19
  10. package/lib/client.js.map +1 -1
  11. package/lib/config.js +64 -12
  12. package/lib/config.js.map +1 -1
  13. package/lib/errors.js +25 -1
  14. package/lib/errors.js.map +1 -1
  15. package/lib/evidence-cache.js +5 -2
  16. package/lib/evidence-cache.js.map +1 -1
  17. package/lib/exposure.js +14 -1
  18. package/lib/exposure.js.map +1 -1
  19. package/lib/image-input-variants.js +22 -12
  20. package/lib/image-input-variants.js.map +1 -1
  21. package/lib/index.js +53 -6
  22. package/lib/index.js.map +1 -1
  23. package/lib/paste-images.js +67 -19
  24. package/lib/paste-images.js.map +1 -1
  25. package/lib/paths.js +214 -28
  26. package/lib/paths.js.map +1 -1
  27. package/lib/runtime-manager.js +76 -10
  28. package/lib/runtime-manager.js.map +1 -1
  29. package/lib/runtime.js +389 -104
  30. package/lib/runtime.js.map +1 -1
  31. package/lib/storage-history.js +154 -0
  32. package/lib/storage-history.js.map +1 -0
  33. package/lib/tools.js +68 -35
  34. package/lib/tools.js.map +1 -1
  35. package/lib/types/artifact-access.d.ts.map +1 -1
  36. package/lib/types/client/index.d.ts +23 -5
  37. package/lib/types/client/index.d.ts.map +1 -1
  38. package/lib/types/client/paste-images.d.ts +2 -0
  39. package/lib/types/client/paste-images.d.ts.map +1 -1
  40. package/lib/types/config.d.ts +38 -7
  41. package/lib/types/config.d.ts.map +1 -1
  42. package/lib/types/errors.d.ts +18 -2
  43. package/lib/types/errors.d.ts.map +1 -1
  44. package/lib/types/evidence-cache.d.ts +1 -1
  45. package/lib/types/evidence-cache.d.ts.map +1 -1
  46. package/lib/types/exposure.d.ts.map +1 -1
  47. package/lib/types/image-input-variants.d.ts +5 -3
  48. package/lib/types/image-input-variants.d.ts.map +1 -1
  49. package/lib/types/index.d.ts.map +1 -1
  50. package/lib/types/paste-images.d.ts +12 -4
  51. package/lib/types/paste-images.d.ts.map +1 -1
  52. package/lib/types/paths.d.ts +31 -5
  53. package/lib/types/paths.d.ts.map +1 -1
  54. package/lib/types/runtime-manager.d.ts +28 -4
  55. package/lib/types/runtime-manager.d.ts.map +1 -1
  56. package/lib/types/runtime.d.ts +75 -12
  57. package/lib/types/runtime.d.ts.map +1 -1
  58. package/lib/types/storage-history.d.ts +63 -0
  59. package/lib/types/storage-history.d.ts.map +1 -0
  60. package/lib/types/tools.d.ts +1 -0
  61. package/lib/types/tools.d.ts.map +1 -1
  62. package/lib/types/upstream.d.ts.map +1 -1
  63. package/lib/types/web.d.ts.map +1 -1
  64. package/lib/upstream.js +31 -8
  65. package/lib/upstream.js.map +1 -1
  66. package/lib/web.js +9 -3
  67. package/lib/web.js.map +1 -1
  68. package/package.json +1 -1
  69. package/src/artifact-access.ts +22 -2
  70. package/src/client/index.tsx +72 -20
  71. package/src/client/paste-images.tsx +14 -4
  72. package/src/config.ts +107 -20
  73. package/src/errors.ts +25 -1
  74. package/src/evidence-cache.ts +5 -2
  75. package/src/exposure.ts +16 -2
  76. package/src/image-input-variants.ts +21 -6
  77. package/src/index.ts +65 -6
  78. package/src/paste-images.ts +81 -19
  79. package/src/paths.ts +249 -28
  80. package/src/runtime-manager.ts +93 -10
  81. package/src/runtime.ts +431 -115
  82. package/src/storage-history.ts +172 -0
  83. package/src/tools.ts +78 -46
  84. package/src/upstream.ts +33 -8
  85. package/src/web.ts +9 -2
package/lib/paths.js CHANGED
@@ -5,9 +5,9 @@
5
5
  * link is allowed only when its real target stays inside the fence.
6
6
  * @module dsh-vision-toolkit/paths
7
7
  */
8
- import { randomUUID } from 'node:crypto';
9
- import { cp, link, lstat, mkdir, readdir, realpath, rename, rm, stat } from 'node:fs/promises';
10
- import { extname, isAbsolute, join, relative, resolve, sep, win32 } from 'node:path';
8
+ import { createHash, randomUUID } from 'node:crypto';
9
+ import { cp, link, lstat, mkdir, mkdtemp, readdir, realpath, rename, rm, stat } from 'node:fs/promises';
10
+ import { dirname, extname, isAbsolute, join, relative, resolve, sep, win32 } from 'node:path';
11
11
  import { homedir, tmpdir } from 'node:os';
12
12
  import { VisionToolkitError } from "./errors.js";
13
13
  /** Supported input image extensions (the upstream client's allowlist). */
@@ -45,23 +45,205 @@ export function normalizePlatformTempPath(raw, platform = process.platform, temp
45
45
  return raw;
46
46
  return win32.join(tempDirectory, raw.slice('/tmp/'.length));
47
47
  }
48
+ /** Stable opaque per-user workspace id used below a shared storage root. */
49
+ export function workspaceStorageId(workspace, userIdentity = typeof process.geteuid === 'function'
50
+ ? `uid:${process.geteuid()}`
51
+ : `home:${homedir()}`) {
52
+ return createHash('sha256')
53
+ .update(userIdentity)
54
+ .update('\0')
55
+ .update(workspace)
56
+ .digest('hex')
57
+ .slice(0, 20);
58
+ }
59
+ function currentPosixUid() {
60
+ if (typeof process.geteuid !== 'function') {
61
+ throw new VisionToolkitError('path', 'configured storage directory is not supported on this platform because ownership and permissions cannot be verified');
62
+ }
63
+ return process.geteuid();
64
+ }
65
+ export function assertSecureWorkspaceStorage(info, requested) {
66
+ const currentUid = currentPosixUid();
67
+ if (info.uid !== currentUid || (info.mode & 0o777) !== 0o700) {
68
+ throw new VisionToolkitError('path', `workspace storage directory must be owned by the current user with mode 0700: ${requested}`);
69
+ }
70
+ }
71
+ /** Resolve a shared base and prove every POSIX ancestor is protected from replacement. */
72
+ export async function assertSecureSharedStorageBase(requested) {
73
+ const currentUid = currentPosixUid();
74
+ const requestedPath = resolve(requested);
75
+ const requestedChain = [];
76
+ let requestedCurrent = requestedPath;
77
+ while (true) {
78
+ requestedChain.push(requestedCurrent);
79
+ const parent = dirname(requestedCurrent);
80
+ if (parent === requestedCurrent)
81
+ break;
82
+ requestedCurrent = parent;
83
+ }
84
+ for (const component of requestedChain.reverse()) {
85
+ const info = await lstat(component);
86
+ if (info.isSymbolicLink()) {
87
+ if (info.uid !== 0) {
88
+ throw new VisionToolkitError('path', `configured storage directory contains an untrusted symbolic link: ${component}`);
89
+ }
90
+ continue;
91
+ }
92
+ if (!info.isDirectory()) {
93
+ throw new VisionToolkitError('path', `configured storage path component is not a directory: ${component}`);
94
+ }
95
+ const writableByOthers = (info.mode & 0o022) !== 0;
96
+ const sticky = (info.mode & 0o1000) !== 0;
97
+ if ((info.uid !== currentUid && info.uid !== 0)
98
+ || (writableByOthers && !sticky))
99
+ throw new VisionToolkitError('path', `configured storage directory has an untrusted path component: ${component}`);
100
+ }
101
+ const canonical = await realpath(requestedPath);
102
+ let current = canonical;
103
+ while (true) {
104
+ const info = await lstat(current);
105
+ const writableByOthers = (info.mode & 0o022) !== 0;
106
+ const sticky = (info.mode & 0o1000) !== 0;
107
+ if (info.isSymbolicLink()
108
+ || !info.isDirectory()
109
+ || (info.uid !== currentUid && info.uid !== 0)
110
+ || (writableByOthers && !sticky))
111
+ throw new VisionToolkitError('path', `configured storage directory has an untrusted path component: ${current}`);
112
+ const parent = dirname(current);
113
+ if (parent === current)
114
+ return canonical;
115
+ current = parent;
116
+ }
117
+ }
118
+ function requestedSharedStorageBase(storageDirRaw) {
119
+ currentPosixUid();
120
+ const configured = normalizePlatformTempPath(expandUserHome(storageDirRaw.trim()));
121
+ if (!isAbsolute(configured)) {
122
+ throw new VisionToolkitError('path', `configured storage directory must be an absolute path: ${storageDirRaw}`);
123
+ }
124
+ return resolve(configured);
125
+ }
126
+ async function ensureSharedStorageBase(storageDirRaw) {
127
+ const requestedBase = requestedSharedStorageBase(storageDirRaw);
128
+ try {
129
+ await mkdir(requestedBase, { recursive: true, mode: 0o700 });
130
+ }
131
+ catch (error) {
132
+ throw new VisionToolkitError('path', `configured storage directory is not writable: ${requestedBase}`, { cause: error });
133
+ }
134
+ try {
135
+ return { requestedBase, base: await assertSecureSharedStorageBase(requestedBase) };
136
+ }
137
+ catch (error) {
138
+ throw new VisionToolkitError('path', `configured storage directory is not accessible: ${requestedBase}`, { cause: error });
139
+ }
140
+ }
141
+ /** Validate and write-probe a configured shared root before Settings activation. */
142
+ export async function preflightSharedStorageBase(storageDirRaw) {
143
+ const { base } = await ensureSharedStorageBase(storageDirRaw);
144
+ let probe;
145
+ let failure;
146
+ try {
147
+ probe = await mkdtemp(join(base, '.dsh-vision-toolkit-preflight-'));
148
+ assertSecureWorkspaceStorage(await lstat(probe), probe);
149
+ }
150
+ catch (error) {
151
+ failure = error;
152
+ }
153
+ if (probe !== undefined) {
154
+ try {
155
+ await rm(probe, { recursive: true, force: true });
156
+ }
157
+ catch (error) {
158
+ failure ??= error;
159
+ }
160
+ }
161
+ if (failure !== undefined) {
162
+ throw new VisionToolkitError('path', `configured storage directory failed its write preflight: ${base}`, { cause: failure });
163
+ }
164
+ return base;
165
+ }
166
+ async function managedDirectory(parent, requested, label, secureWorkspaceStorage = false) {
167
+ try {
168
+ await mkdir(requested, { mode: 0o700 });
169
+ }
170
+ catch (error) {
171
+ if (!(error instanceof Error && 'code' in error && error.code === 'EEXIST')) {
172
+ throw new VisionToolkitError('path', `${label} is not writable: ${requested}`, { cause: error });
173
+ }
174
+ }
175
+ let info;
176
+ try {
177
+ info = await lstat(requested);
178
+ }
179
+ catch (error) {
180
+ throw new VisionToolkitError('path', `${label} is not accessible: ${requested}`, { cause: error });
181
+ }
182
+ if (info.isSymbolicLink() || !info.isDirectory()) {
183
+ throw new VisionToolkitError('path', `${label} must be a real directory: ${requested}`);
184
+ }
185
+ if (secureWorkspaceStorage)
186
+ assertSecureWorkspaceStorage(info, requested);
187
+ const canonical = await realpath(requested);
188
+ if (!isWithin(parent, canonical)) {
189
+ throw new VisionToolkitError('path', `${label} escaped its configured root: ${requested}`);
190
+ }
191
+ return canonical;
192
+ }
48
193
  /**
49
- * Build the per-invocation path policy: realpath the workspace, resolve and
50
- * realpath the platform temp directory and allowed directories, and create
51
- * the output directory inside the fence.
52
- * @param workspaceRaw - session workspace (or process cwd fallback).
53
- * @param allowedDirs - configured extra allowed roots.
54
- * @param outputDirRaw - configured output directory (default `.dsh-vision-toolkit/artifacts`).
55
- * @returns the resolved policy.
194
+ * Resolve the plugin-managed root for one workspace. Blank configuration keeps
195
+ * the legacy workspace-local `.dsh-vision-toolkit` directory. A configured
196
+ * shared root receives one stable, automatically generated workspace child.
56
197
  */
57
- export async function createPathPolicy(workspaceRaw, allowedDirs, outputDirRaw) {
198
+ export async function resolveWorkspaceStorage(workspaceRaw, storageDirRaw) {
199
+ const expandedWorkspace = expandUserHome(workspaceRaw);
200
+ const visibleWorkspace = resolve(expandedWorkspace);
58
201
  let workspace;
59
202
  try {
60
- workspace = await realpath(expandUserHome(workspaceRaw));
203
+ workspace = await realpath(visibleWorkspace);
61
204
  }
62
205
  catch (error) {
63
206
  throw new VisionToolkitError('path', `workspace is not accessible: ${workspaceRaw}`, { cause: error });
64
207
  }
208
+ if (storageDirRaw === undefined || storageDirRaw.trim().length === 0) {
209
+ const visibleRoot = join(visibleWorkspace, '.dsh-vision-toolkit');
210
+ const root = await managedDirectory(workspace, visibleRoot, 'plugin storage directory');
211
+ return { workspace, root, visibleRoot };
212
+ }
213
+ const { requestedBase, base } = await ensureSharedStorageBase(storageDirRaw);
214
+ const id = workspaceStorageId(workspace);
215
+ const visibleRoot = join(requestedBase, id);
216
+ const root = await managedDirectory(base, join(base, id), 'workspace storage directory', true);
217
+ return { workspace, root, visibleRoot };
218
+ }
219
+ async function resolveReadableWorkspaceStorageRoot(workspace, storageDirRaw) {
220
+ const requestedBase = requestedSharedStorageBase(storageDirRaw);
221
+ const base = await assertSecureSharedStorageBase(requestedBase);
222
+ const requestedRoot = join(base, workspaceStorageId(workspace));
223
+ const info = await lstat(requestedRoot);
224
+ if (info.isSymbolicLink() || !info.isDirectory()) {
225
+ throw new VisionToolkitError('path', `historical workspace storage must be a real directory: ${requestedRoot}`);
226
+ }
227
+ assertSecureWorkspaceStorage(info, requestedRoot);
228
+ const root = await realpath(requestedRoot);
229
+ if (!isWithin(base, root)) {
230
+ throw new VisionToolkitError('path', `historical workspace storage escaped its configured root: ${requestedRoot}`);
231
+ }
232
+ return root;
233
+ }
234
+ /**
235
+ * Build the per-invocation path policy: resolve workspace storage, realpath the
236
+ * platform temp directory and allowed directories, and create the artifact
237
+ * directory inside the managed root.
238
+ * @param workspaceRaw - session workspace (or process cwd fallback).
239
+ * @param allowedDirs - configured extra allowed roots.
240
+ * @param storageDirRaw - optional shared storage root.
241
+ * @param readableStorageDirs - previously validated shared roots retained for persisted input paths.
242
+ * @returns the resolved policy.
243
+ */
244
+ export async function createPathPolicy(workspaceRaw, allowedDirs, storageDirRaw, readableStorageDirs = []) {
245
+ const storage = await resolveWorkspaceStorage(workspaceRaw, storageDirRaw);
246
+ const { workspace } = storage;
65
247
  let tempDir;
66
248
  const tempDirectoryRaw = platformTempDirectory();
67
249
  try {
@@ -70,7 +252,18 @@ export async function createPathPolicy(workspaceRaw, allowedDirs, outputDirRaw)
70
252
  catch (error) {
71
253
  throw new VisionToolkitError('path', `platform temporary directory is not accessible: ${tempDirectoryRaw}`, { cause: error });
72
254
  }
73
- const roots = [workspace, tempDir];
255
+ const roots = [workspace, tempDir, storage.root];
256
+ for (const raw of readableStorageDirs) {
257
+ if (raw === storageDirRaw)
258
+ continue;
259
+ try {
260
+ roots.push(await resolveReadableWorkspaceStorageRoot(workspace, raw));
261
+ }
262
+ catch {
263
+ // Historical roots are read-only compatibility fences. Missing or newly
264
+ // unsafe roots stay unauthorized without breaking the active runtime.
265
+ }
266
+ }
74
267
  for (const raw of allowedDirs) {
75
268
  const candidate = expandUserHome(raw);
76
269
  const target = isAbsolute(candidate) ? candidate : resolve(workspace, candidate);
@@ -81,21 +274,14 @@ export async function createPathPolicy(workspaceRaw, allowedDirs, outputDirRaw)
81
274
  throw new VisionToolkitError('path', `allowedDirs entry is not accessible: ${raw}`, { cause: error });
82
275
  }
83
276
  }
84
- const outputRaw = outputDirRaw === undefined || outputDirRaw.trim().length === 0
85
- ? join(workspace, '.dsh-vision-toolkit', 'artifacts')
86
- : resolve(workspace, expandUserHome(outputDirRaw));
87
- if (!roots.some(root => isWithin(root, outputRaw))) {
88
- throw new VisionToolkitError('path', 'output directory must stay inside the workspace or an allowedDirs entry');
89
- }
90
- let outputDir;
91
- try {
92
- await mkdir(outputRaw, { recursive: true });
93
- outputDir = await realpath(outputRaw);
94
- }
95
- catch (error) {
96
- throw new VisionToolkitError('path', `output directory is not writable: ${outputRaw}`, { cause: error });
97
- }
98
- return { workspace, tempDir, allowedDirs: [...new Set(roots)], outputDir };
277
+ const outputDir = await managedDirectory(storage.root, join(storage.root, 'artifacts'), 'artifact directory');
278
+ return {
279
+ workspace,
280
+ tempDir,
281
+ allowedDirs: [...new Set(roots)],
282
+ storageRoot: storage.root,
283
+ outputDir,
284
+ };
99
285
  }
100
286
  /**
101
287
  * Validate one input image path and return its fence-checked absolute path
package/lib/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,13 @@
5
5
  * @module dsh-vision-toolkit/runtime-manager
6
6
  */
7
7
  import { resolveConfig } from "./config.js";
8
+ import { preflightSharedStorageBase } from "./paths.js";
8
9
  import { VisionToolkitRuntime } from "./runtime.js";
9
10
  import { UpstreamAdapter } from "./upstream.js";
10
- async function defaultFactory(ctx, config) {
11
+ async function defaultFactory(ctx, config, readableStorageDirs) {
11
12
  const adapter = new UpstreamAdapter(ctx, config);
12
13
  await adapter.prepare();
13
- return new VisionToolkitRuntime(ctx, config, adapter);
14
+ return new VisionToolkitRuntime(ctx, config, adapter, readableStorageDirs);
14
15
  }
15
16
  function fingerprint(config) {
16
17
  // Transparent routing is a display/policy flag: toggling it must not rebuild
@@ -31,6 +32,8 @@ export class VisionToolkitRuntimeManager {
31
32
  generation = 0;
32
33
  reconfigureTicket = 0;
33
34
  lastError;
35
+ validatedStartupStorageDir;
36
+ readableStorageDirs = new Set();
34
37
  constructor(ctx, factory = defaultFactory) {
35
38
  this.ctx = ctx;
36
39
  this.factory = factory;
@@ -41,20 +44,62 @@ export class VisionToolkitRuntimeManager {
41
44
  throw new Error('dsh-vision-toolkit runtime is not ready');
42
45
  return this.active.runtime;
43
46
  }
47
+ /** Configuration belonging to the currently serving runtime generation. */
48
+ currentConfig() {
49
+ if (this.active === undefined)
50
+ throw new Error('dsh-vision-toolkit runtime is not ready');
51
+ return this.active.config;
52
+ }
44
53
  /** Whether at least one generation is available. */
45
54
  get ready() {
46
55
  return this.active !== undefined;
47
56
  }
48
- /** Resolve and fully prepare a candidate without changing the active runtime. */
49
- async prepareCandidate(raw) {
50
- const config = resolveConfig(raw);
57
+ /** Storage config safe for paste writes even when initial runtime preparation failed. */
58
+ storageGeneration() {
59
+ if (this.active !== undefined) {
60
+ return {
61
+ generation: this.generation,
62
+ ...(this.active.config.storageDir === undefined ? {} : { storageDir: this.active.config.storageDir }),
63
+ };
64
+ }
65
+ if (this.validatedStartupStorageDir === undefined) {
66
+ throw new Error('dsh-vision-toolkit storage configuration is not ready');
67
+ }
68
+ return {
69
+ generation: this.generation,
70
+ ...(this.validatedStartupStorageDir === null ? {} : { storageDir: this.validatedStartupStorageDir }),
71
+ };
72
+ }
73
+ /** Validated storage for best-effort consumers; undefined when startup preflight failed. */
74
+ validatedStorageDirectory() {
75
+ if (this.active !== undefined)
76
+ return this.active.config.storageDir;
77
+ return this.validatedStartupStorageDir ?? undefined;
78
+ }
79
+ async prepareResolvedCandidate(config) {
51
80
  const resolvedFingerprint = fingerprint(config);
52
81
  if (this.active?.fingerprint === resolvedFingerprint) {
53
82
  return { ...this.active, config };
54
83
  }
55
- const runtime = await this.factory(this.ctx, config);
84
+ const runtime = await this.factory(this.ctx, config, [...new Set([...this.readableStorageDirs, ...config.storageHistory])]
85
+ .filter(storageDir => storageDir !== config.storageDir));
56
86
  return { config, fingerprint: resolvedFingerprint, runtime };
57
87
  }
88
+ rememberStorageDirectory(storageDir) {
89
+ if (storageDir !== undefined)
90
+ this.readableStorageDirs.add(storageDir);
91
+ }
92
+ rememberStorageDirectories(storageDirs) {
93
+ for (const storageDir of storageDirs)
94
+ this.rememberStorageDirectory(storageDir);
95
+ }
96
+ /** Resolve and fully prepare a candidate without changing the active runtime. */
97
+ async prepareCandidate(raw) {
98
+ const config = resolveConfig(raw);
99
+ if (config.storageDir !== undefined)
100
+ await preflightSharedStorageBase(config.storageDir);
101
+ return this.prepareResolvedCandidate(config);
102
+ }
58
103
  /**
59
104
  * Publish one already-prepared generation atomically.
60
105
  * @param candidate - generation returned by {@link prepareCandidate}.
@@ -67,14 +112,28 @@ export class VisionToolkitRuntimeManager {
67
112
  }
68
113
  this.reconfigureTicket += 1;
69
114
  this.active = candidate;
115
+ this.rememberStorageDirectories(candidate.config.storageHistory);
116
+ this.rememberStorageDirectory(candidate.config.storageDir);
70
117
  this.generation += 1;
71
118
  this.lastError = undefined;
72
119
  this.ctx.logger.info('dsh-vision-toolkit runtime generation=%d active (upstream %s @ %s, checkout %s)', this.generation, candidate.runtime.upstreamVersion.version, candidate.runtime.upstreamVersion.commit, candidate.runtime.upstreamVersion.path);
73
120
  }
74
- /** Prepare and publish the initial or explicitly validated generation. */
75
- async initialize(raw) {
121
+ /**
122
+ * Prepare and publish the initial or explicitly validated generation.
123
+ * @param raw - untrusted Settings generation to resolve and prepare.
124
+ * @param beforePublish - optional durable prerequisite run after preparation.
125
+ */
126
+ async initialize(raw, beforePublish) {
76
127
  try {
77
- this.activateCandidate(await this.prepareCandidate(raw));
128
+ const config = resolveConfig(raw);
129
+ if (config.storageDir !== undefined)
130
+ await preflightSharedStorageBase(config.storageDir);
131
+ this.validatedStartupStorageDir = config.storageDir ?? null;
132
+ this.rememberStorageDirectories(config.storageHistory);
133
+ this.rememberStorageDirectory(config.storageDir);
134
+ const candidate = await this.prepareResolvedCandidate(config);
135
+ await beforePublish?.(candidate);
136
+ this.activateCandidate(candidate);
78
137
  }
79
138
  catch (error) {
80
139
  this.lastError = messageOf(error);
@@ -84,13 +143,18 @@ export class VisionToolkitRuntimeManager {
84
143
  /**
85
144
  * Apply an externally committed Settings generation. Concurrent edits are
86
145
  * last-write-wins; a slower obsolete prepare can never overwrite a newer one.
146
+ * @param raw - externally committed Settings generation.
147
+ * @param beforePublish - optional durable prerequisite run after preparation.
87
148
  * @returns whether this call published a new active generation.
88
149
  */
89
- async reconfigure(raw) {
150
+ async reconfigure(raw, beforePublish) {
90
151
  const ticket = ++this.reconfigureTicket;
91
152
  let candidate;
92
153
  try {
93
154
  candidate = await this.prepareCandidate(raw);
155
+ if (ticket !== this.reconfigureTicket)
156
+ return false;
157
+ await beforePublish?.(candidate);
94
158
  }
95
159
  catch (error) {
96
160
  if (ticket === this.reconfigureTicket)
@@ -101,6 +165,8 @@ export class VisionToolkitRuntimeManager {
101
165
  return false;
102
166
  const changed = this.active?.fingerprint !== candidate.fingerprint;
103
167
  this.active = candidate;
168
+ this.rememberStorageDirectories(candidate.config.storageHistory);
169
+ this.rememberStorageDirectory(candidate.config.storageDir);
104
170
  if (changed) {
105
171
  this.generation += 1;
106
172
  this.ctx.logger.info('dsh-vision-toolkit Settings activated runtime generation=%d (upstream %s @ %s, checkout %s)', this.generation, candidate.runtime.upstreamVersion.version, candidate.runtime.upstreamVersion.commit, candidate.runtime.upstreamVersion.path);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-manager.js","sourceRoot":"","sources":["../src/runtime-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-manager.js","sourceRoot":"","sources":["../src/runtime-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAA8D,MAAM,aAAa,CAAA;AACvG,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,eAAe,EAA4B,MAAM,eAAe,CAAA;AAkCzE,KAAK,UAAU,cAAc,CAC3B,GAAY,EACZ,MAAmC,EACnC,mBAAsC;IAEtC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IACvB,OAAO,IAAI,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,MAAmC;IACtD,6EAA6E;IAC7E,6EAA6E;IAC7E,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,GAAG,MAAM;QACT,kBAAkB,EAAE,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;KACpE,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC;AAED,kEAAkE;AAClE,MAAM,OAAO,2BAA2B;IASnB;IACA;IATX,MAAM,CAAuC;IAC7C,UAAU,GAAG,CAAC,CAAA;IACd,iBAAiB,GAAG,CAAC,CAAA;IACrB,SAAS,CAAoB;IAC7B,0BAA0B,CAA2B;IAC5C,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;IAExD,YACmB,GAAY,EACZ,UAAoC,cAAc;QADlD,QAAG,GAAH,GAAG,CAAS;QACZ,YAAO,GAAP,OAAO,CAA2C;IAClE,CAAC;IAEJ,gFAAgF;IAChF,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,2EAA2E;IAC3E,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,oDAAoD;IACpD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;IAClC,CAAC;IAED,yFAAyF;IACzF,iBAAiB;QACf,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;aACtG,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,0BAA0B,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACrG,CAAA;IACH,CAAC;IAED,4FAA4F;IAC5F,yBAAyB;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAA;QACnE,OAAO,IAAI,CAAC,0BAA0B,IAAI,SAAS,CAAA;IACrD,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,MAAmC;QACxE,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,mBAAmB,EAAE,CAAC;YACrD,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;QACnC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAChC,IAAI,CAAC,GAAG,EACR,MAAM,EACN,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;aAClE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,CAC1D,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAA;IAC9D,CAAC;IAEO,wBAAwB,CAAC,UAA8B;QAC7D,IAAI,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACxE,CAAC;IAEO,0BAA0B,CAAC,WAA8B;QAC/D,KAAK,MAAM,UAAU,IAAI,WAAW;YAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;IACjF,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,gBAAgB,CAAC,GAAwB;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACxF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,SAAoC;QACpD,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC1B,OAAM;QACR,CAAC;QACD,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAChE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC1D,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAClB,iFAAiF,EACjF,IAAI,CAAC,UAAU,EACf,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EACzC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EACxC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CACvC,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,GAAwB,EAAE,aAA8C;QACvF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACxF,IAAI,CAAC,0BAA0B,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;YAC3D,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YACtD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;YAC7D,MAAM,aAAa,EAAE,CAAC,SAAS,CAAC,CAAA;YAChC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YACjC,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,GAAwB,EAAE,aAA8C;QACxF,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAA;QACvC,IAAI,SAAoC,CAAA;QACxC,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,iBAAiB;gBAAE,OAAO,KAAK,CAAA;YACnD,MAAM,aAAa,EAAE,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,KAAK,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YACxE,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,CAAC,iBAAiB;YAAE,OAAO,KAAK,CAAA;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,WAAW,CAAA;QAClE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAChE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;YACpB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAClB,6FAA6F,EAC7F,IAAI,CAAC,UAAU,EACf,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EACzC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EACxC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CACvC,CAAA;QACH,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,yEAAyE;IACzE,aAAa,CAAC,KAAc;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,qEAAqE;IACrE,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aACvE,CAAA;QACH,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe;YAC7C,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACvE,CAAA;IACH,CAAC;CACF"}