@bendyline/gezel 1.0.0 → 1.0.2

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.
@@ -23,10 +23,12 @@ export { D as DEVICE_HARD_TEMPERATURE_C } from '../device-safety-DezzpNyR.js';
23
23
  * const bin = resolveNativeBinaryPath('llama-server', import.meta.url, probe.backend);
24
24
  *
25
25
  * Caching: the result is memoized at
26
- * `<home>/engines/llama-cpp/backend.json` so subsequent launches
27
- * skip the probe. Cache invalidates whenever `engineVersion`
28
- * changes bumping the llama.cpp pin may prefer a different
29
- * backend.
26
+ * `<home>/engines/llama-cpp/backend.json`. Subsequent launches reuse
27
+ * it only while the cheap driver-library check still resolves to the
28
+ * same backend. That matters when a user installs or removes a GPU
29
+ * driver between launches. The cache also invalidates whenever
30
+ * `engineVersion` changes — bumping the llama.cpp pin may prefer a
31
+ * different backend.
30
32
  */
31
33
  type LlamaBackend = 'cuda' | 'vulkan' | 'metal' | 'cpu';
32
34
  /**
@@ -376,44 +378,36 @@ declare function resolveNativeBinaryUnder(root: string, name: NativeBinaryName,
376
378
  declare function discoverNativeBinaries(input: DiscoverInput): DiscoverResult;
377
379
 
378
380
  /**
379
- * Windows console-allocation policy for spawned native children.
380
- *
381
- * Console-subsystem executables (llama-server, ds4-server, bundled Node) get
382
- * a console allocated by the loader unless the creator says otherwise. Under
383
- * the machine-wide service there is nothing to allocate one from: the daemon
384
- * runs in non-interactive Session 0, where as
385
- * `native/helpers/service-host/src/main.cpp` records `AllocConsole` fails
386
- * with error 317. `DETACHED_PROCESS`, which Node exposes as `detached: true`,
387
- * asks for no console at all.
388
- *
389
- * `windowsHide` is NOT that flag. It maps to `CREATE_NO_WINDOW`, which still
390
- * allocates a console and only withholds the window.
391
- *
392
- * `detached` is deliberately scoped to win32. On POSIX the same option means
393
- * `setsid()`, which changes process-group and signal semantics that callers
394
- * may depend on; there is no console problem to solve there.
395
- *
396
- * ## What this does not fix
397
- *
398
- * This helper was introduced in v1.26215.31 believing it fixed the
399
- * `spawn EPERM` that killed every native-engine launch under the machine
400
- * service. It did not. That release shipped the flag and the failure
401
- * continued, on two machines, with the daemon's own log showing the engine,
402
- * the bundled device-health helper, `nvidia-smi`, `amd-smi` and `rocm-smi`
403
- * all denied at once. The cause was the service token: `sc sidtype ...
404
- * restricted` write-restricts it, and libuv creates a named pipe per piped
405
- * stdio handle before every `CreateProcess`, which that token cannot do. The
406
- * installer now assigns `unrestricted` (see
407
- * `packages/app/installer/nsis-hooks.nsh`), and `probeChildProcessSpawn` in
408
- * the service catches a recurrence at boot.
409
- *
410
- * The flag is still correct and still used — a console the service cannot
411
- * allocate is one Windows should not be asked for — but it is a tidiness
412
- * measure, not a fix for a permission error. If `spawn EPERM` appears again,
413
- * do not reach for spawn flags: look at the token.
381
+ * Windows console-window policy for owned child processes.
382
+ *
383
+ * Node documents `detached: true` on Windows as giving the child its own
384
+ * console window. That is the opposite of what short-lived helpers and
385
+ * supervised engines want: it is what caused Windows Terminal to flash a
386
+ * fresh command prompt for every native signature check. `windowsHide` is
387
+ * the dedicated Node/libuv option for suppressing a subprocess console
388
+ * window, and it leaves the child's lifetime and process-group ownership
389
+ * unchanged.
390
+ *
391
+ * Keep this win32-only. The option is ignored on POSIX, but omitting it there
392
+ * makes the platform contract explicit and keeps captured spawn options
393
+ * deterministic in tests.
394
+ */
395
+ declare function windowsHeadlessSpawnOptions(platform?: NodeJS.Platform): {
396
+ windowsHide: true;
397
+ } | Record<string, never>;
398
+ /**
399
+ * Windows options for a genuine fire-and-forget child that must outlive its
400
+ * parent. Detachment is a lifetime decision, not a headless-launch strategy;
401
+ * pair it with `windowsHide` so Windows does not surface the child's new
402
+ * console while it starts.
403
+ *
404
+ * Most callers should use {@link windowsHeadlessSpawnOptions}. In particular,
405
+ * awaited probes, package installers, and supervised engines are owned
406
+ * children and must not be detached.
414
407
  */
415
408
  declare function windowsDetachedSpawnOptions(platform?: NodeJS.Platform): {
416
409
  detached: true;
410
+ windowsHide: true;
417
411
  } | Record<string, never>;
418
412
 
419
413
  /**
@@ -647,4 +641,4 @@ interface FindGpuPanicOptions {
647
641
  */
648
642
  declare function findRecentGpuPanics(opts?: FindGpuPanicOptions): GpuPanicRecord[];
649
643
 
650
- export { type CommandResult, DEFAULT_DEVICE_SAFETY_POLICY, type DetectInput, type DetectResult, type DeviceHealthCommandRunner, type DeviceHealthDecision, DeviceHealthGate, type DeviceHealthGateOptions, type DeviceHealthProbe, type DeviceHealthReading, type DeviceHealthSample, type DeviceHealthState, type DeviceHealthStatusSnapshot, type DeviceSafetyMode, type DeviceSafetyPolicyInput, type DeviceTelemetryFailurePolicy, type DeviceVendor, type DiscoverInput, type DiscoverResult, type FindGpuPanicOptions, GPU_PANIC_RE, type GpuPanicRecord, type GpuVendorHint, LLAMA_ENGINE_VERSION, type LlamaBackend, type LlamaQuarantineEntry, type NativeBinaryName, type QuarantineIo, type ResolvedDeviceSafetyPolicy, type ResolvedLlamaBinary, type SystemDeviceHealthProbeOptions, binaryFingerprint, createSystemDeviceHealthProbe, detectLlamaBackend, discoverNativeBinaries, evaluateDeviceHealth, findRecentGpuPanics, isBinaryQuarantined, llamaQuarantinePath, parseAmdSmiJson, parseNvidiaSmiCsv, readLlamaQuarantine, recordLlamaQuarantine, resolveAvailableLlamaBinary, resolveDeviceSafetyPolicy, resolveNativeBinaryUnder, resolvePlatformKey, windowsDetachedSpawnOptions };
644
+ export { type CommandResult, DEFAULT_DEVICE_SAFETY_POLICY, type DetectInput, type DetectResult, type DeviceHealthCommandRunner, type DeviceHealthDecision, DeviceHealthGate, type DeviceHealthGateOptions, type DeviceHealthProbe, type DeviceHealthReading, type DeviceHealthSample, type DeviceHealthState, type DeviceHealthStatusSnapshot, type DeviceSafetyMode, type DeviceSafetyPolicyInput, type DeviceTelemetryFailurePolicy, type DeviceVendor, type DiscoverInput, type DiscoverResult, type FindGpuPanicOptions, GPU_PANIC_RE, type GpuPanicRecord, type GpuVendorHint, LLAMA_ENGINE_VERSION, type LlamaBackend, type LlamaQuarantineEntry, type NativeBinaryName, type QuarantineIo, type ResolvedDeviceSafetyPolicy, type ResolvedLlamaBinary, type SystemDeviceHealthProbeOptions, binaryFingerprint, createSystemDeviceHealthProbe, detectLlamaBackend, discoverNativeBinaries, evaluateDeviceHealth, findRecentGpuPanics, isBinaryQuarantined, llamaQuarantinePath, parseAmdSmiJson, parseNvidiaSmiCsv, readLlamaQuarantine, recordLlamaQuarantine, resolveAvailableLlamaBinary, resolveDeviceSafetyPolicy, resolveNativeBinaryUnder, resolvePlatformKey, windowsDetachedSpawnOptions, windowsHeadlessSpawnOptions };
@@ -10,6 +10,16 @@ import {
10
10
  } from "fs";
11
11
  import { dirname, join } from "path";
12
12
  import { arch as nodeArch, platform as nodePlatform } from "process";
13
+
14
+ // src/native/console-detach.ts
15
+ function windowsHeadlessSpawnOptions(platform = process.platform) {
16
+ return platform === "win32" ? { windowsHide: true } : {};
17
+ }
18
+ function windowsDetachedSpawnOptions(platform = process.platform) {
19
+ return platform === "win32" ? { detached: true, windowsHide: true } : {};
20
+ }
21
+
22
+ // src/native/llama-backend.ts
13
23
  function resolveAvailableLlamaBinary(preferredBackend, resolveBinary, allowFallbacks, isUsable) {
14
24
  const fallbackOrder = {
15
25
  cuda: ["cuda", "vulkan", "cpu"],
@@ -50,9 +60,41 @@ function anyExists(paths, probe) {
50
60
  }
51
61
  return null;
52
62
  }
63
+ var LINUX_CUDA_DRIVER_PATHS = [
64
+ "/usr/lib/x86_64-linux-gnu/libcuda.so.1",
65
+ "/usr/lib/aarch64-linux-gnu/libcuda.so.1",
66
+ "/usr/lib64/libcuda.so.1",
67
+ "/usr/lib/libcuda.so.1",
68
+ "/lib/x86_64-linux-gnu/libcuda.so.1",
69
+ "/lib/aarch64-linux-gnu/libcuda.so.1"
70
+ ];
71
+ var LINUX_VULKAN_LOADER_PATHS = [
72
+ "/usr/lib/x86_64-linux-gnu/libvulkan.so.1",
73
+ "/usr/lib/aarch64-linux-gnu/libvulkan.so.1",
74
+ "/usr/lib64/libvulkan.so.1",
75
+ "/usr/lib/libvulkan.so.1"
76
+ ];
77
+ function windowsSystem32() {
78
+ return process.env.SYSTEMROOT ? join(process.env.SYSTEMROOT, "System32") : "C:\\Windows\\System32";
79
+ }
80
+ function detectDriverBackend(os, probeFile) {
81
+ if (os === "linux") {
82
+ const libcuda = anyExists(LINUX_CUDA_DRIVER_PATHS, probeFile);
83
+ if (libcuda) return { backend: "cuda", path: libcuda };
84
+ const libvulkan = anyExists(LINUX_VULKAN_LOADER_PATHS, probeFile);
85
+ if (libvulkan) return { backend: "vulkan", path: libvulkan };
86
+ return { backend: "cpu" };
87
+ }
88
+ const sys32 = windowsSystem32();
89
+ const nvcuda = anyExists([join(sys32, "nvcuda.dll"), join(sys32, "nvml.dll")], probeFile);
90
+ if (nvcuda) return { backend: "cuda", path: nvcuda };
91
+ const vulkan = anyExists([join(sys32, "vulkan-1.dll")], probeFile);
92
+ if (vulkan) return { backend: "vulkan", path: vulkan };
93
+ return { backend: "cpu" };
94
+ }
53
95
  function commandOkDefault(cmd) {
54
96
  try {
55
- execSync(cmd, { stdio: "ignore" });
97
+ execSync(cmd, { stdio: "ignore", ...windowsHeadlessSpawnOptions() });
56
98
  return true;
57
99
  } catch {
58
100
  return false;
@@ -87,7 +129,7 @@ function detectVendor(os, probeFile, readFileText, readDir) {
87
129
  if (found.has("intel")) return "intel";
88
130
  return void 0;
89
131
  }
90
- const sys32 = process.env.SYSTEMROOT ? join(process.env.SYSTEMROOT, "System32") : "C:\\Windows\\System32";
132
+ const sys32 = windowsSystem32();
91
133
  if (probeFile(join(sys32, "nvcuda.dll")) || probeFile(join(sys32, "nvapi64.dll"))) {
92
134
  return "nvidia";
93
135
  }
@@ -101,52 +143,20 @@ function detectVendor(os, probeFile, readFileText, readDir) {
101
143
  }
102
144
  function detectLinuxOrWin(os, probeFile, probeCmd, readFileText, readDir) {
103
145
  const vendorHint = detectVendor(os, probeFile, readFileText, readDir);
104
- if (os === "linux") {
105
- const libcuda = anyExists(
106
- [
107
- "/usr/lib/x86_64-linux-gnu/libcuda.so.1",
108
- "/usr/lib/aarch64-linux-gnu/libcuda.so.1",
109
- "/usr/lib64/libcuda.so.1",
110
- "/usr/lib/libcuda.so.1",
111
- "/lib/x86_64-linux-gnu/libcuda.so.1",
112
- "/lib/aarch64-linux-gnu/libcuda.so.1"
113
- ],
114
- probeFile
115
- );
116
- if (libcuda) {
146
+ const driver = detectDriverBackend(os, probeFile);
147
+ if (driver.backend === "cuda" && driver.path) {
148
+ if (os === "linux") {
117
149
  const smiOk = probeCmd("nvidia-smi -L");
118
150
  return {
119
151
  backend: "cuda",
120
- reason: `found ${libcuda}${smiOk ? ", nvidia-smi ok" : ", nvidia-smi absent or failing (proceeding anyway)"}`,
152
+ reason: `found ${driver.path}${smiOk ? ", nvidia-smi ok" : ", nvidia-smi absent or failing (proceeding anyway)"}`,
121
153
  vendorHint
122
154
  };
123
155
  }
124
- } else {
125
- const sys32 = process.env.SYSTEMROOT ? join(process.env.SYSTEMROOT, "System32") : "C:\\Windows\\System32";
126
- const nvcuda = anyExists([join(sys32, "nvcuda.dll"), join(sys32, "nvml.dll")], probeFile);
127
- if (nvcuda) {
128
- return { backend: "cuda", reason: `found ${nvcuda}`, vendorHint };
129
- }
156
+ return { backend: "cuda", reason: `found ${driver.path}`, vendorHint };
130
157
  }
131
- if (os === "linux") {
132
- const libvulkan = anyExists(
133
- [
134
- "/usr/lib/x86_64-linux-gnu/libvulkan.so.1",
135
- "/usr/lib/aarch64-linux-gnu/libvulkan.so.1",
136
- "/usr/lib64/libvulkan.so.1",
137
- "/usr/lib/libvulkan.so.1"
138
- ],
139
- probeFile
140
- );
141
- if (libvulkan) {
142
- return { backend: "vulkan", reason: `found ${libvulkan}`, vendorHint };
143
- }
144
- } else {
145
- const sys32 = process.env.SYSTEMROOT ? join(process.env.SYSTEMROOT, "System32") : "C:\\Windows\\System32";
146
- const vk = anyExists([join(sys32, "vulkan-1.dll")], probeFile);
147
- if (vk) {
148
- return { backend: "vulkan", reason: `found ${vk}`, vendorHint };
149
- }
158
+ if (driver.backend === "vulkan" && driver.path) {
159
+ return { backend: "vulkan", reason: `found ${driver.path}`, vendorHint };
150
160
  }
151
161
  return { backend: "cpu", reason: "no CUDA driver and no Vulkan loader found", vendorHint };
152
162
  }
@@ -177,11 +187,15 @@ function probeOrCached(input) {
177
187
  const probeReadFile = input.probe?.readFileText ?? readFileTextDefault;
178
188
  const probeReadDir = input.probe?.readDir ?? readDirDefault;
179
189
  const cachePath = join(input.home, "engines", "llama-cpp", "backend.json");
190
+ const plat = input.probe?.platform ?? nodePlatform;
191
+ const ar = input.probe?.arch ?? nodeArch;
180
192
  if (fileExistsDefault(cachePath)) {
181
193
  try {
182
194
  const cached = JSON.parse(readFileSync(cachePath, "utf8"));
183
195
  const schemaOk = (cached.probeSchemaVersion ?? 0) >= PROBE_SCHEMA_VERSION;
184
- if (cached.engineVersion === input.engineVersion && schemaOk) {
196
+ const currentDriverBackend = plat === "linux" && (ar === "x64" || ar === "arm64") || plat === "win32" && ar === "x64" ? detectDriverBackend(plat, probeFile).backend : void 0;
197
+ const driverStateUnchanged = currentDriverBackend === void 0 || currentDriverBackend === cached.backend;
198
+ if (cached.engineVersion === input.engineVersion && schemaOk && driverStateUnchanged) {
185
199
  return {
186
200
  backend: cached.backend,
187
201
  cached: true,
@@ -193,8 +207,6 @@ function probeOrCached(input) {
193
207
  } catch {
194
208
  }
195
209
  }
196
- const plat = input.probe?.platform ?? nodePlatform;
197
- const ar = input.probe?.arch ?? nodeArch;
198
210
  let result;
199
211
  if (plat === "darwin") {
200
212
  if (ar === "arm64") {
@@ -455,11 +467,6 @@ function discoverNativeBinaries(input) {
455
467
  return result;
456
468
  }
457
469
 
458
- // src/native/console-detach.ts
459
- function windowsDetachedSpawnOptions(platform = process.platform) {
460
- return platform === "win32" ? { detached: true } : {};
461
- }
462
-
463
470
  // src/native/device-health.ts
464
471
  import { execFile as nodeExecFile } from "child_process";
465
472
 
@@ -730,13 +737,10 @@ function defaultCommandRunner(command, args, timeoutMs) {
730
737
  nodeExecFile(
731
738
  command,
732
739
  args,
733
- // nvidia-smi / amd-smi are console-subsystem, and the Session 0 service
734
- // has no console for the loader to allocate from, so they start with
735
- // DETACHED_PROCESS; `windowsHide` (CREATE_NO_WINDOW) still allocates
736
- // one. When these probes fail the daemon sees no GPU at all and plans
737
- // capacity against system RAM — the symptom that made a token-level
738
- // spawn denial look like a GPU-detection bug.
739
- { timeout: timeoutMs, ...windowsDetachedSpawnOptions() },
740
+ // Hardware CLIs are short-lived, owned children. Hide their Windows
741
+ // console instead of detaching them; detachment gives each probe its
742
+ // own console window and produces a visible terminal flash.
743
+ { timeout: timeoutMs, ...windowsHeadlessSpawnOptions() },
740
744
  (error, stdout, stderr) => {
741
745
  if (error) {
742
746
  reject(error);
@@ -1117,5 +1121,6 @@ export {
1117
1121
  resolveDeviceSafetyPolicy,
1118
1122
  resolveNativeBinaryUnder,
1119
1123
  resolvePlatformKey,
1120
- windowsDetachedSpawnOptions
1124
+ windowsDetachedSpawnOptions,
1125
+ windowsHeadlessSpawnOptions
1121
1126
  };
package/dist/paths.d.ts CHANGED
@@ -207,6 +207,8 @@ declare function projectLocalDir(root: string, projectId: string): string;
207
207
  declare function projectMetaFile(root: string, projectId: string): string;
208
208
  /** Durable user/worker lifecycle for indexed code findings. Account-private. */
209
209
  declare function projectFindingLifecycleFile(root: string, projectId: string): string;
210
+ /** Durable Boekwachter issue identity + lifecycle. Account-private. */
211
+ declare function projectBoekwachterIssuesFile(root: string, projectId: string): string;
210
212
  /** Durable per-project code-review records for this account. */
211
213
  declare function projectCodeReviewsFile(root: string, projectId: string): string;
212
214
  /** Durable per-account report-action lifecycle records. */
@@ -431,6 +433,14 @@ declare function fallbackProjectIndexDir(root: string, projectId: string): strin
431
433
  * always use the account-private fallback to prevent cross-daemon SQLite use.
432
434
  */
433
435
  declare function projectContentIndexDbFile(root: string, projectId: string, workspaceDir: string): string;
436
+ /**
437
+ * Derived FTS index over a project's artifact corpora (connector records under
438
+ * `artifacts/data/**`). Always in the account-private sidecar, never inside
439
+ * the artifacts tree itself — the database must not surface in the corpus
440
+ * browser, and mutable SQLite must not ride an externalized artifacts folder.
441
+ * Rebuildable cache, safe to delete.
442
+ */
443
+ declare function projectArtifactsIndexDbFile(root: string, projectId: string): string;
434
444
  /**
435
445
  * The committable code-map "city file": placement anchors, user overrides, and
436
446
  * the layout journal. Deliberately OUTSIDE the self-gitignored `.gezel/index/`
@@ -588,4 +598,4 @@ declare function keurmeesterDigestStatePath(root: string): string;
588
598
  */
589
599
  declare function readConfigRaw(root: string): Promise<Record<string, unknown>>;
590
600
 
591
- export { type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, PROJECT_SHADOW_DIR_NAME, activeMachineSharedHome, backupsDir, channelsDir, craftbookShardPrefix, craftbookTemplateDir, craftbookTemplateManifestFile, craftbookTemplateScriptFile, craftbookTemplateScriptsDir, craftbookTemplateVersionDir, craftbookTemplateVersionManifestFile, craftbookTemplatesRoot, daemonTransactionsRoot, deviceIdentityFile, fallbackProjectIndexDir, fallbackProjectVillageFile, foldersStateDir, gezelDir, gezelGrowthPath, gezelHome, gezelLocalDir, gezelMemoriesDir, gezelPaths, gezelPoppetjePath, gezelSessionFile, gezelSessionsDir, gezelStorageScope, gezelToolsPath, gezelToolsetsFile, gezelToolsetsInstallDir, gildeLiveRoot, gildeLiveStateFile, gildeLiveVersionDir, gildeLiveVersionsDir, globalHistoryFile, globalIndexDbFile, globalIndexDir, keurmeesterCasesDir, keurmeesterDigestStatePath, keurmeesterDigestsDir, keurmeesterDir, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDir, projectDocsDir, projectFindingLifecycleFile, projectHistoryFile, projectIndexDir, projectInternalGithubDir, projectLocalConfigFile, projectLocalCraftbookDir, projectLocalCraftbooksRoot, projectLocalDir, projectLocalFilesDir, projectLocalGezelDir, projectLocalGezelsRoot, projectLocalImportsFile, projectLocalIndexDbFile, projectLocalIndexDir, projectLocalPendingImportsFile, projectLocalQuarantineDir, projectLocalRoot, projectLocalVillageFile, projectMemoriesDir, projectMemoryIndexDir, projectMetaFile, projectPrivateDir, projectQuestionsFile, projectReportActionsFile, projectScriptFile, projectScriptRunFile, projectScriptRunsDir, projectScriptsDir, projectShadowDir, projectStorageDir, projectStorageScope, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };
601
+ export { type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, PROJECT_SHADOW_DIR_NAME, activeMachineSharedHome, backupsDir, channelsDir, craftbookShardPrefix, craftbookTemplateDir, craftbookTemplateManifestFile, craftbookTemplateScriptFile, craftbookTemplateScriptsDir, craftbookTemplateVersionDir, craftbookTemplateVersionManifestFile, craftbookTemplatesRoot, daemonTransactionsRoot, deviceIdentityFile, fallbackProjectIndexDir, fallbackProjectVillageFile, foldersStateDir, gezelDir, gezelGrowthPath, gezelHome, gezelLocalDir, gezelMemoriesDir, gezelPaths, gezelPoppetjePath, gezelSessionFile, gezelSessionsDir, gezelStorageScope, gezelToolsPath, gezelToolsetsFile, gezelToolsetsInstallDir, gildeLiveRoot, gildeLiveStateFile, gildeLiveVersionDir, gildeLiveVersionsDir, globalHistoryFile, globalIndexDbFile, globalIndexDir, keurmeesterCasesDir, keurmeesterDigestStatePath, keurmeesterDigestsDir, keurmeesterDir, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectArtifactsIndexDbFile, projectBoekwachterIssuesFile, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDir, projectDocsDir, projectFindingLifecycleFile, projectHistoryFile, projectIndexDir, projectInternalGithubDir, projectLocalConfigFile, projectLocalCraftbookDir, projectLocalCraftbooksRoot, projectLocalDir, projectLocalFilesDir, projectLocalGezelDir, projectLocalGezelsRoot, projectLocalImportsFile, projectLocalIndexDbFile, projectLocalIndexDir, projectLocalPendingImportsFile, projectLocalQuarantineDir, projectLocalRoot, projectLocalVillageFile, projectMemoriesDir, projectMemoryIndexDir, projectMetaFile, projectPrivateDir, projectQuestionsFile, projectReportActionsFile, projectScriptFile, projectScriptRunFile, projectScriptRunsDir, projectScriptsDir, projectShadowDir, projectStorageDir, projectStorageScope, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };
package/dist/paths.js CHANGED
@@ -216,6 +216,9 @@ function projectMetaFile(root, projectId) {
216
216
  function projectFindingLifecycleFile(root, projectId) {
217
217
  return join(projectPrivateDir(root, projectId), "finding-lifecycle.json");
218
218
  }
219
+ function projectBoekwachterIssuesFile(root, projectId) {
220
+ return join(projectPrivateDir(root, projectId), "boekwachter-issues.json");
221
+ }
219
222
  function projectCodeReviewsFile(root, projectId) {
220
223
  return join(projectPrivateDir(root, projectId), "code-reviews.json");
221
224
  }
@@ -382,6 +385,9 @@ function fallbackProjectIndexDir(root, projectId) {
382
385
  function projectContentIndexDbFile(root, projectId, workspaceDir) {
383
386
  return projectStorageScope(root, projectId) === "machine-shared" ? join(fallbackProjectIndexDir(root, projectId), "index.db") : projectLocalIndexDbFile(workspaceDir);
384
387
  }
388
+ function projectArtifactsIndexDbFile(root, projectId) {
389
+ return join(fallbackProjectIndexDir(root, projectId), "artifacts.db");
390
+ }
385
391
  function projectLocalVillageFile(workspaceDir) {
386
392
  return join(projectLocalRoot(workspaceDir), "village.json");
387
393
  }
@@ -554,6 +560,8 @@ export {
554
560
  playwrightBrowsersDir,
555
561
  projectActivityFile,
556
562
  projectArtifactsDir,
563
+ projectArtifactsIndexDbFile,
564
+ projectBoekwachterIssuesFile,
557
565
  projectCodeReviewsFile,
558
566
  projectContentIndexDbFile,
559
567
  projectCreateTransactionsRoot,
@@ -4051,8 +4051,8 @@ declare const ReportActionStateSchema: z.ZodEnum<{
4051
4051
  failed: "failed";
4052
4052
  suggested: "suggested";
4053
4053
  applied: "applied";
4054
- fired: "fired";
4055
4054
  dismissed: "dismissed";
4055
+ fired: "fired";
4056
4056
  }>;
4057
4057
  type ReportActionState = z.infer<typeof ReportActionStateSchema>;
4058
4058
  /**
@@ -4075,8 +4075,8 @@ declare const ReportActionRecordSchema: z.ZodObject<{
4075
4075
  failed: "failed";
4076
4076
  suggested: "suggested";
4077
4077
  applied: "applied";
4078
- fired: "fired";
4079
4078
  dismissed: "dismissed";
4079
+ fired: "fired";
4080
4080
  }>;
4081
4081
  taskRef: z.ZodOptional<z.ZodString>;
4082
4082
  firedAt: z.ZodOptional<z.ZodString>;
@@ -4132,8 +4132,8 @@ declare const ReportActionViewSchema: z.ZodObject<{
4132
4132
  failed: "failed";
4133
4133
  suggested: "suggested";
4134
4134
  applied: "applied";
4135
- fired: "fired";
4136
4135
  dismissed: "dismissed";
4136
+ fired: "fired";
4137
4137
  }>;
4138
4138
  taskRef: z.ZodOptional<z.ZodString>;
4139
4139
  firedAt: z.ZodOptional<z.ZodString>;
@@ -4185,8 +4185,8 @@ declare const ReportActionsResponseSchema: z.ZodObject<{
4185
4185
  failed: "failed";
4186
4186
  suggested: "suggested";
4187
4187
  applied: "applied";
4188
- fired: "fired";
4189
4188
  dismissed: "dismissed";
4189
+ fired: "fired";
4190
4190
  }>;
4191
4191
  taskRef: z.ZodOptional<z.ZodString>;
4192
4192
  firedAt: z.ZodOptional<z.ZodString>;
@@ -4221,8 +4221,8 @@ declare const ReportActionsResponseSchema: z.ZodObject<{
4221
4221
  failed: "failed";
4222
4222
  suggested: "suggested";
4223
4223
  applied: "applied";
4224
- fired: "fired";
4225
4224
  dismissed: "dismissed";
4225
+ fired: "fired";
4226
4226
  }>;
4227
4227
  taskRef: z.ZodOptional<z.ZodString>;
4228
4228
  firedAt: z.ZodOptional<z.ZodString>;
@@ -4260,8 +4260,8 @@ declare const FireReportActionResponseSchema: z.ZodObject<{
4260
4260
  failed: "failed";
4261
4261
  suggested: "suggested";
4262
4262
  applied: "applied";
4263
- fired: "fired";
4264
4263
  dismissed: "dismissed";
4264
+ fired: "fired";
4265
4265
  }>;
4266
4266
  taskRef: z.ZodOptional<z.ZodString>;
4267
4267
  firedAt: z.ZodOptional<z.ZodString>;
@@ -4285,4 +4285,4 @@ declare const DismissReportActionRequestSchema: z.ZodObject<{
4285
4285
  }, z.core.$strip>;
4286
4286
  type DismissReportActionRequest = z.infer<typeof DismissReportActionRequestSchema>;
4287
4287
 
4288
- export { ReportActionSchema as $, type ApplyEditsAction as A, type GezelFrontmatter as B, type CraftbookDocError as C, type DismissReportActionRequest as D, GezelFrontmatterSchema as E, type FireCraftbookAction as F, type GezelGender as G, GezelGenderSchema as H, type GezelSection as I, GezelSectionSchema as J, type GezelSummary as K, GezelSummarySchema as L, type GezelTrait as M, GezelTraitSchema as N, LOCAL_PROVIDER_NAMES as O, type ParsedGezel as P, ParsedGezelSchema as Q, type ParsedReportAction as R, type ProviderName as S, ProviderNameSchema as T, type ReportAction as U, type ReportActionKind as V, ReportActionKindSchema as W, type ReportActionParseIssue as X, ReportActionParseIssueSchema as Y, type ReportActionRecord as Z, ReportActionRecordSchema as _, type CraftbookDoc as a, type ReportActionState as a0, ReportActionStateSchema as a1, type ReportActionView as a2, ReportActionViewSchema as a3, type ReportActionsResponse as a4, ReportActionsResponseSchema as a5, type ToolCallAudio as a6, ToolCallAudioSchema as a7, type ToolCallImage as a8, ToolCallImageSchema as a9, type ToolCallVideo as aa, ToolCallVideoSchema as ab, craftbookDocFormatFromEnv as ac, editDistance as ad, formatCraftbookDocErrors as ae, isLocalProvider as af, nearestMatch as ag, sniffCraftbookDocFormat as ah, zodIssuesToDocErrors as ai, type CraftbookDocFormat as b, type ChatMessage as c, ApplyEditsActionSchema as d, type ChatEvent as e, type ChatEventEnvelope as f, ChatEventEnvelopeSchema as g, ChatEventSchema as h, ChatMessageSchema as i, type ChatMessageToolCall as j, ChatMessageToolCallSchema as k, type ChatTurnErrorDetail as l, ChatTurnErrorDetailSchema as m, CraftbookDocSchema as n, type CreateTaskAction as o, CreateTaskActionSchema as p, DismissReportActionRequestSchema as q, FireCraftbookActionSchema as r, type FireReportActionRequest as s, FireReportActionRequestSchema as t, type FireReportActionResponse as u, FireReportActionResponseSchema as v, type FixedFunctionConfig as w, FixedFunctionConfigSchema as x, type GezelDetail as y, GezelDetailSchema as z };
4288
+ export { ReportActionSchema as $, type ApplyEditsAction as A, GezelDetailSchema as B, type ChatTurnErrorDetail as C, type DismissReportActionRequest as D, type GezelFrontmatter as E, type FireCraftbookAction as F, type GezelSummary as G, GezelFrontmatterSchema as H, GezelGenderSchema as I, type GezelSection as J, GezelSectionSchema as K, GezelSummarySchema as L, type GezelTrait as M, GezelTraitSchema as N, LOCAL_PROVIDER_NAMES as O, type ProviderName as P, type ParsedGezel as Q, ParsedGezelSchema as R, type ParsedReportAction as S, ProviderNameSchema as T, type ReportAction as U, type ReportActionKind as V, ReportActionKindSchema as W, type ReportActionParseIssue as X, ReportActionParseIssueSchema as Y, type ReportActionRecord as Z, ReportActionRecordSchema as _, type GezelGender as a, type ReportActionState as a0, ReportActionStateSchema as a1, type ReportActionView as a2, ReportActionViewSchema as a3, type ReportActionsResponse as a4, ReportActionsResponseSchema as a5, type ToolCallAudio as a6, ToolCallAudioSchema as a7, type ToolCallImage as a8, ToolCallImageSchema as a9, type ToolCallVideo as aa, ToolCallVideoSchema as ab, craftbookDocFormatFromEnv as ac, editDistance as ad, formatCraftbookDocErrors as ae, isLocalProvider as af, nearestMatch as ag, sniffCraftbookDocFormat as ah, zodIssuesToDocErrors as ai, type CraftbookDocError as b, type CraftbookDoc as c, type CraftbookDocFormat as d, type ChatMessage as e, ApplyEditsActionSchema as f, type ChatEvent as g, type ChatEventEnvelope as h, ChatEventEnvelopeSchema as i, ChatEventSchema as j, ChatMessageSchema as k, type ChatMessageToolCall as l, ChatMessageToolCallSchema as m, ChatTurnErrorDetailSchema as n, CraftbookDocSchema as o, type CreateTaskAction as p, CreateTaskActionSchema as q, DismissReportActionRequestSchema as r, FireCraftbookActionSchema as s, type FireReportActionRequest as t, FireReportActionRequestSchema as u, type FireReportActionResponse as v, FireReportActionResponseSchema as w, type FixedFunctionConfig as x, FixedFunctionConfigSchema as y, type GezelDetail as z };