From 1455e33a9773a292bd948a8e10ffe3a151751483 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:07:43 +0200 Subject: [PATCH 01/27] feat: add pnpm materialization profiles --- CHANGELOG.md | 5 + .../tasks/shared/pnpm-task-helpers.sh | 157 +++++++++++++++++- nix/devenv-modules/tasks/shared/pnpm.nix | 103 +++++------- .../shared/tests/pnpm-task-smoke.test.sh | 58 ++++++- .../tasks/shared/tests/pnpm.test.sh | 76 +++++++++ pnpm-install-contract.json | 14 +- pnpm-install-contract.json.genie.ts | 12 ++ 7 files changed, 356 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 539584e4b3..39b49cf85c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,11 @@ All notable changes to this project will be documented in this file. typed OTEL spans through the production bounded git runner, so CI fixture stalls can produce inspectable trace evidence. +- **devenv/pnpm**: Add an explicit `materializationProfile` API and profile + evidence contract for `ciJobLocal`, `darwinSplitCas`, + `linuxSharedHardlink`, and `isolated` without changing Linux `auto` to + hardlink materialization yet. + - **@overeng/genie**: Document the intended package export type-proof architecture: strict proofs should use an explicit compiler executable boundary (`tsgo` by default, custom only by explicit override) instead of diff --git a/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh b/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh index 8afe18d9b7..7a55ef2c1a 100644 --- a/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh +++ b/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh @@ -146,18 +146,140 @@ process.exit( EOF } +dependency_materialization_validate_same_device() { + local node_bin="$1" + local workspace_dir="$2" + local files_path="$3" + + "$node_bin" - "$workspace_dir" "$files_path" <<'EOF' +const fs = require('node:fs') + +const [workspaceDir, filesPath] = process.argv.slice(2) +const realWorkspace = fs.realpathSync(workspaceDir) +const realFiles = fs.realpathSync(filesPath) +const workspaceDev = fs.statSync(realWorkspace).dev +const filesDev = fs.statSync(realFiles).dev + +if (workspaceDev !== filesDev) { + console.error('[pnpm] linuxSharedHardlink requires workspace and files pool on the same device') + console.error(`[pnpm] workspace: ${realWorkspace} (dev ${workspaceDev})`) + console.error(`[pnpm] files pool: ${realFiles} (dev ${filesDev})`) + console.error('[pnpm] Use materializationProfile = "isolated" for cross-device reproduction.') + process.exit(1) +} +EOF +} + +prepare_dependency_materialization_store() { + local node_bin="$1" + local requested_profile="$2" + local host_is_darwin="$3" + local workspace_dir="$4" + local store_dir="$5" + + case "$requested_profile" in + auto | ciJobLocal | darwinSplitCas | linuxSharedHardlink | isolated) ;; + *) + echo "[pnpm] Unsupported materializationProfile: $requested_profile" >&2 + exit 1 + ;; + esac + + if [ -z "${store_dir:-}" ]; then + echo "[pnpm] npm_config_store_dir is empty; cannot prepare dependency materialization store" >&2 + exit 1 + fi + + local store_version_dir="$store_dir/v11" + local files_path="$store_version_dir/files" + local shared_files_path="${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" + local effective_profile="$requested_profile" + + if [ -n "${CI:-}" ]; then + effective_profile="ciJobLocal" + elif [ "$requested_profile" = auto ]; then + if [ "$host_is_darwin" = true ]; then + effective_profile="darwinSplitCas" + else + # Keep the first explicit-profile milestone behavior-compatible on Linux: + # shared files pool with clone-or-copy imports. linuxSharedHardlink is + # selectable, but auto needs separate workload proof before switching. + effective_profile="darwinSplitCas" + fi + fi + + mkdir -p "$store_version_dir" + + case "$effective_profile" in + ciJobLocal | isolated) + if [ -L "$files_path" ]; then + rm "$files_path" + fi + mkdir -p "$files_path" + ;; + darwinSplitCas | linuxSharedHardlink) + mkdir -p "$shared_files_path" + if [ -L "$files_path" ]; then + if [ "$(readlink "$files_path")" != "$shared_files_path" ]; then + echo "[pnpm] $files_path points at $(readlink "$files_path"), expected $shared_files_path" >&2 + exit 1 + fi + elif [ -e "$files_path" ]; then + if [ "$requested_profile" = auto ] && [ -d "$files_path" ] && [ -n "$(find "$files_path" -mindepth 1 -maxdepth 1 -print -quit)" ]; then + printf '%s\n' isolated + return 0 + fi + if [ -d "$files_path" ] && [ -z "$(find "$files_path" -mindepth 1 -maxdepth 1 -print -quit)" ]; then + rmdir "$files_path" + else + echo "[pnpm] $files_path is a non-empty local files store; choose materializationProfile = \"isolated\" or run the coordinated migration" >&2 + exit 1 + fi + fi + if [ ! -L "$files_path" ]; then + ln -s "$shared_files_path" "$files_path" + fi + if [ "$effective_profile" = linuxSharedHardlink ]; then + dependency_materialization_validate_same_device "$node_bin" "$workspace_dir" "$files_path" + fi + ;; + esac + + printf '%s\n' "$effective_profile" +} + +dependency_materialization_install_policy_flags() { + local profile="$1" + + case "$profile" in + linuxSharedHardlink) + printf '%s\n' "--config.package-import-method=hardlink" + ;; + ciJobLocal | darwinSplitCas | isolated) + printf '%s\n' "--config.package-import-method=clone-or-copy" + ;; + *) + echo "[pnpm] Unsupported dependency materialization profile for install policy: $profile" >&2 + exit 1 + ;; + esac +} + emit_dependency_materialization_profile() { local node_bin="$1" local contract_file="$2" local store_trait="$3" local output_file="${4:-}" + local workspace_dir="${5:-}" + local store_dir="${6:-}" + local package_import_method="${7:-}" - "$node_bin" - "$contract_file" "$store_trait" "$output_file" <<'EOF' + "$node_bin" - "$contract_file" "$store_trait" "$output_file" "$workspace_dir" "$store_dir" "$package_import_method" <<'EOF' const crypto = require('node:crypto') const fs = require('node:fs') const path = require('node:path') -const [contractFile, storeTrait, outputFile] = process.argv.slice(2) +const [contractFile, storeTrait, outputFile, workspaceDir, storeDir, packageImportMethodArg] = process.argv.slice(2) const contract = JSON.parse(fs.readFileSync(contractFile, 'utf8')) const evidenceContractPath = path.isAbsolute(contractFile) ? path.relative(fs.realpathSync(process.cwd()), fs.realpathSync(contractFile)) @@ -197,6 +319,28 @@ if (trait === undefined) { process.exit(1) } +const storeLayoutVersion = contract.storeContract?.layoutVersion ?? 'v11' +const filesPath = storeDir ? path.join(storeDir, storeLayoutVersion, 'files') : undefined +const realPathOf = (candidate) => { + if (!candidate) return undefined + try { + return fs.realpathSync(candidate) + } catch { + return candidate + } +} +const filesRealPath = realPathOf(filesPath) +const workspaceRealPath = realPathOf(workspaceDir) +const sameDevice = (() => { + if (!workspaceRealPath || !filesRealPath) return undefined + try { + return fs.statSync(workspaceRealPath).dev === fs.statSync(filesRealPath).dev + } catch { + return undefined + } +})() +const packageImportMethod = packageImportMethodArg || trait.importMethod + const inputSections = Object.fromEntries( profileContract.identityInputs.map((section) => { if (!Object.prototype.hasOwnProperty.call(contract, section)) { @@ -230,6 +374,11 @@ const profile = { store: { trait: storeTrait, contract: inputSections.storeContract, + filesPath, + filesRealPath, + sameDeviceRequired: trait.sameDeviceRequired === true, + sameDevice, + packageImportMethod, }, authorities: { gc: trait.gcAuthority, @@ -301,6 +450,7 @@ const singletonRegistry = { { id: rootId, profileId: profile.profileId, + trait: profile.store?.trait, project: projectDir, store: storeDir, filesPoolId: poolId, @@ -310,6 +460,9 @@ const singletonRegistry = { { id: poolId, filesPath, + filesRealPath: realFilesPath, + sameDeviceRequired: profile.store?.sameDeviceRequired === true, + sameDevice: profile.store?.sameDevice, }, ], } diff --git a/nix/devenv-modules/tasks/shared/pnpm.nix b/nix/devenv-modules/tasks/shared/pnpm.nix index f909030ab4..a17e42a699 100644 --- a/nix/devenv-modules/tasks/shared/pnpm.nix +++ b/nix/devenv-modules/tasks/shared/pnpm.nix @@ -16,6 +16,7 @@ taskNamePrefix ? "pnpm", taskSuffix ? null, globalCache ? true, + materializationProfile ? "auto", frozenInCi ? true, installFlags ? [ ], preInstall ? "", @@ -100,8 +101,11 @@ let pureInstallFlags = [ (if frozenInCi then "--frozen-lockfile" else "--no-frozen-lockfile") ] - ++ pnpmInstallPolicy.liveInstallPolicyFlags; + ++ lib.filter ( + flag: flag != "--config.package-import-method=clone-or-copy" + ) pnpmInstallPolicy.liveInstallPolicyFlags; pureInstallFlagsString = lib.concatStringsSep " " pureInstallFlags; + hostIsDarwinString = if pkgs.stdenv.hostPlatform.isDarwin then "true" else "false"; packageNameToPath = builtins.listToAttrs ( builtins.filter (x: x != null) ( @@ -187,44 +191,16 @@ let export npm_config_store_dir="$_pnpm_store_dir" unset _pnpm_store_dir ''; - ensureSharedPnpmFilesStoreFn = '' - ensure_shared_pnpm_files_store() { - if [ -n "''${CI:-}" ]; then - return 0 - fi - if [ -z "''${npm_config_store_dir:-}" ]; then - echo "[pnpm] npm_config_store_dir is empty; cannot prepare split store" >&2 - exit 1 - fi - - local store_version_dir - local files_path - local shared_files_path - store_version_dir="''${npm_config_store_dir}/v11" - files_path="$store_version_dir/files" - shared_files_path="''${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" - - mkdir -p "$store_version_dir" "$shared_files_path" - - if [ -L "$files_path" ]; then - if [ "$(readlink "$files_path")" != "$shared_files_path" ]; then - echo "[pnpm] $files_path points at $(readlink "$files_path"), expected $shared_files_path" >&2 - exit 1 - fi - return 0 - fi - - if [ -e "$files_path" ]; then - if [ -d "$files_path" ] && [ -z "$(find "$files_path" -mindepth 1 -maxdepth 1 -print -quit)" ]; then - rmdir "$files_path" - else - echo "[pnpm] $files_path is a non-empty local files store; leaving it for the coordinated migration runbook" >&2 - return 0 - fi - fi - - ln -s "$shared_files_path" "$files_path" - } + prepareDependencyMaterializationStoreFn = '' + _dependency_materialization_trait="$( + prepare_dependency_materialization_store \ + ${pkgs.nodejs}/bin/node \ + ${lib.escapeShellArg materializationProfile} \ + ${hostIsDarwinString} \ + "$PWD" \ + "$npm_config_store_dir" + )" + export DEPENDENCY_MATERIALIZATION_TRAIT="$_dependency_materialization_trait" ''; computeWorkspaceStateHash = '' @@ -264,6 +240,8 @@ let printf '%s\n' "''${gvs_links_dir:-}" printf '%s\n' ${lib.escapeShellArg (builtins.toJSON installFlags)} printf '%s\n' ${lib.escapeShellArg preInstall} + printf '%s\n' "''${DEPENDENCY_MATERIALIZATION_TRAIT:-}" + dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}" } | compute_hash } ''; @@ -310,8 +288,10 @@ let run_pnpm_install() { local install_args + local materialization_policy_flags reject_impure_pnpm_install_args "$@" ${installFlagsString} - install_args=(install "$@" ${installFlagsString} ${pureInstallFlagsString} "--config.store-dir=$npm_config_store_dir") + materialization_policy_flags="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" + install_args=(install "$@" ${installFlagsString} ${pureInstallFlagsString} "$materialization_policy_flags" "--config.store-dir=$npm_config_store_dir") ${lib.optionalString pkgs.stdenv.hostPlatform.isDarwin '' if [ -n "''${CI:-}" ]; then @@ -416,8 +396,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} - ${ensureSharedPnpmFilesStoreFn} - ensure_shared_pnpm_files_store + ${prepareDependencyMaterializationStoreFn} mkdir -p "${cacheRoot}" # This cache tracks the effective install state, not just workspace # manifests. The fingerprint also includes the active GVS projection @@ -541,14 +520,9 @@ let cp "$_pnpm_install_contract_file" "$contract_state_file" chmod u+w "$contract_state_file" 2>/dev/null || true if pnpm_contract_supports_dependency_materialization_profile ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file"; then - if [ -n "''${CI:-}" ]; then - _dependency_materialization_trait="ciJobLocal" - elif [ -L "$npm_config_store_dir/v11/files" ]; then - _dependency_materialization_trait="darwinSplitCas" - else - _dependency_materialization_trait="isolated" - fi - emit_dependency_materialization_profile ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file" "$_dependency_materialization_trait" "$dependency_profile_file" + _dependency_materialization_import_method="$(dependency_materialization_install_policy_flags "$_dependency_materialization_trait")" + _dependency_materialization_import_method="''${_dependency_materialization_import_method#--config.package-import-method=}" + emit_dependency_materialization_profile ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file" "$_dependency_materialization_trait" "$dependency_profile_file" "$PWD" "$npm_config_store_dir" "$_dependency_materialization_import_method" _dependency_shared_registry_file="$(dependency_materialization_shared_registry_file ${pkgs.nodejs}/bin/node "$npm_config_store_dir")" mkdir -p "$(dirname "$_dependency_shared_registry_file")" exec 203>"$_dependency_shared_registry_file.lock" @@ -572,8 +546,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} - ${ensureSharedPnpmFilesStoreFn} - ensure_shared_pnpm_files_store + ${prepareDependencyMaterializationStoreFn} hash_file="${cacheRoot}/install-state.hash" projection_hash_file="${cacheRoot}/projection-state.hash" contract_state_file="${cacheRoot}/pnpm-install-contract.json" @@ -649,8 +622,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} - ${ensureSharedPnpmFilesStoreFn} - ensure_shared_pnpm_files_store + ${prepareDependencyMaterializationStoreFn} pnpm install --fix-lockfile --config.confirmModulesPurge=false --pm-on-fail=ignore --config.store-dir="$npm_config_store_dir" echo "Repo-root lockfile updated. Refresh Nix FOD hashes with the repo workflow." ''; @@ -670,8 +642,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} - ${ensureSharedPnpmFilesStoreFn} - ensure_shared_pnpm_files_store + ${prepareDependencyMaterializationStoreFn} pnpm dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore --config.store-dir="$npm_config_store_dir" echo "Lockfile deduped. Re-run genie:check to verify the catalog duplicate gate; bless any upstream-locked residuals via catalogDuplicateExceptions." ''; @@ -687,8 +658,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} - ${ensureSharedPnpmFilesStoreFn} - ensure_shared_pnpm_files_store + ${prepareDependencyMaterializationStoreFn} purge_node_modules node_modules ${nodeModulesPaths} @@ -798,6 +768,7 @@ let export PNPM_STORE_DIR="$repair_store_dir" export PNPM_CONFIG_STORE_DIR="$repair_store_dir" export npm_config_store_dir="$repair_store_dir" + ${prepareDependencyMaterializationStoreFn} ${runPnpmInstallFn} run_pnpm_install --force ) @@ -837,12 +808,18 @@ in export npm_config_cache="$HOME/.cache/pnpm" export npm_config_pm_on_fail=ignore if [ -z "''${CI:-}" ]; then - _pnpm_shared_files="''${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" - mkdir -p "$PNPM_STORE_DIR/v11" "$_pnpm_shared_files" - if [ ! -e "$PNPM_STORE_DIR/v11/files" ] && [ ! -L "$PNPM_STORE_DIR/v11/files" ]; then - ln -s "$_pnpm_shared_files" "$PNPM_STORE_DIR/v11/files" + _materialization_profile=${lib.escapeShellArg materializationProfile} + if [ "$_materialization_profile" = darwinSplitCas ] || [ "$_materialization_profile" = linuxSharedHardlink ] || [ "$_materialization_profile" = auto ]; then + _pnpm_shared_files="''${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" + mkdir -p "$PNPM_STORE_DIR/v11" "$_pnpm_shared_files" + if [ ! -e "$PNPM_STORE_DIR/v11/files" ] && [ ! -L "$PNPM_STORE_DIR/v11/files" ]; then + ln -s "$_pnpm_shared_files" "$PNPM_STORE_DIR/v11/files" + fi + unset _pnpm_shared_files + else + mkdir -p "$PNPM_STORE_DIR/v11/files" fi - unset _pnpm_shared_files + unset _materialization_profile fi unset _pnpm_store_dir ''; diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh index c60d874b05..2a38acd611 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh @@ -178,11 +178,23 @@ cat > "$workspace/pnpm-install-contract.json" <<'EOF' "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, + "linuxSharedHardlink": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "hardlink", + "sameDeviceRequired": true, "gcAuthority": "shared-pool-coordinator", "repairAuthority": "devenv" }, "isolated": { "mutableState": "profile-local", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, "gcAuthority": "profile-local", "repairAuthority": "devenv" } @@ -310,6 +322,8 @@ extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-nested.exec.sh" 'p extract_task_script "$workspace" "status" "$tmpdir/pnpm-install-nested.status.sh" 'packages = [ "pkg" ]; workspaceRoot = "nested"; taskSuffix = "nested";' "pnpm:install:nested" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--config.public-hoist-pattern=*" ]; preInstall = "touch .preinstall-marker";' extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-darwin.exec.sh" 'packages = [ "." ];' "pnpm:install" "true" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-isolated.exec.sh" 'packages = [ "." ]; materializationProfile = "isolated";' "pnpm:install" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--no-frozen-lockfile" ];' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-equals.exec.sh" 'packages = [ "." ]; installFlags = [ "--frozen-lockfile=false" ];' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-separated.exec.sh" 'packages = [ "." ]; installFlags = [ "--config.package-import-method" "hardlink" ];' "pnpm:install" @@ -340,6 +354,8 @@ rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-nested.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-nested.status.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-flags.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-darwin.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-isolated.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-flags.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-equals.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-separated.exec.sh" @@ -384,7 +400,7 @@ echo "Test 2: exec runs fake pnpm and populates cache" grep -qxF "flock -w 600 200" "$tmpdir/flock.log" grep -qxF "flock -w 600 201" "$tmpdir/flock.log" grep -qxF "flock -w 600 202" "$tmpdir/flock.log" - grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --config.package-import-method=clone-or-copy --pm-on-fail=ignore --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=clone-or-copy --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" grep -qF ".effect-utils-pnpm-install.lock" "$tmpdir/pnpm-install.exec.sh" grep -qF ".effect-utils-pnpm-store.lock" "$tmpdir/pnpm-install.exec.sh" test -w "$workspace/.devenv/task-cache/pnpm-install/pnpm-install-contract.json" @@ -474,12 +490,15 @@ echo "Test 7: exec defaults PNPM_HOME to a workspace-local projection" assert_json_field "dependency-materialization-profile/v0" "$profile_file" "value => value.schema" "live profile schema" assert_json_field "true" "$profile_file" "value => value.profileId.startsWith('pnpm:')" "live profile id prefix" assert_json_field "darwinSplitCas" "$profile_file" "value => value.store.trait" "live profile split store trait" + assert_json_field "clone-or-copy" "$profile_file" "value => value.store.packageImportMethod" "live profile import method" + assert_json_field "false" "$profile_file" "value => value.store.sameDeviceRequired" "live profile same-device requirement" assert_json_field "shared-pool-coordinator" "$profile_file" "value => value.authorities.gc" "live profile gc authority" assert_json_field "pnpm-install-contract.json" "$profile_file" "value => value.evidence.contractPath" "live profile relative contract path" assert_json_field "dependency-materialization-registry/v0" "$registry_file" "value => value.schema" "live registry schema" assert_json_field "$profile_id" "$registry_file" "value => value.profiles[0].profileId" "live registry profile id" assert_json_field "$workspace" "$registry_file" "value => value.profiles[0].project" "live registry project" assert_json_field "$workspace/.devenv/pnpm-store-pure-v1" "$registry_file" "value => value.profiles[0].store" "live registry store" + assert_json_field "darwinSplitCas" "$registry_file" "value => value.profiles[0].trait" "live registry trait" assert_json_field "$workspace/.devenv/pnpm-store-pure-v1/v11/files" "$registry_file" "value => value.pools[0].filesPath" "live registry files path" doctor_decision="$(bash "$tmpdir/pnpm-doctor.exec.sh" | node -e 'const fs=require("node:fs"); process.stdout.write(JSON.parse(fs.readFileSync(0,"utf8")).decision)')" assert_eq "refuse-raw-prune" "$doctor_decision" "doctor refuses raw prune for shared files pool" @@ -488,18 +507,51 @@ echo "Test 7: exec defaults PNPM_HOME to a workspace-local projection" : > "$tmpdir/pnpm.log" : > "$tmpdir/flock.log" bash "$tmpdir/pnpm-repair.exec.sh" >/dev/null - grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --config.package-import-method=clone-or-copy --pm-on-fail=ignore --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=clone-or-copy --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" grep -qxF "PWD=$workspace" "$tmpdir/pnpm.log" grep -qxF "flock -w 600 204" "$tmpdir/flock.log" CI=1 bash "$tmpdir/pnpm-install.exec.sh" assert_json_field "ciJobLocal" "$profile_file" "value => value.store.trait" "CI install records CI-local profile trait" ) +echo "Test 7b: explicit isolated materialization leaves files profile-local" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset PNPM_HOME + unset PNPM_STORE_DIR + unset npm_config_store_dir + rm -rf "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-install-isolated.exec.sh" + test -d "$workspace/.devenv/pnpm-store-pure-v1/v11/files" + test ! -L "$workspace/.devenv/pnpm-store-pure-v1/v11/files" + assert_json_field "isolated" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "explicit isolated profile trait" + grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=clone-or-copy --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" +) + +echo "Test 7c: explicit linux hardlink materialization validates and uses hardlink imports" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset PNPM_HOME + unset PNPM_STORE_DIR + unset npm_config_store_dir + rm -rf "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-install-hardlink.exec.sh" + test -L "$workspace/.devenv/pnpm-store-pure-v1/v11/files" + assert_json_field "linuxSharedHardlink" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "explicit hardlink profile trait" + assert_json_field "true" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.sameDevice" "explicit hardlink profile same-device evidence" + grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" +) + echo "Test 8: status hits after install with the default GVS path" ( cd "$workspace" export HOME="$tmpdir/home" unset PNPM_HOME + bash "$tmpdir/pnpm-install.exec.sh" >/dev/null set +e bash "$tmpdir/pnpm-install.status.sh" exit_code=$? @@ -611,7 +663,7 @@ echo "Test 16: install flags and pre-install hooks are applied" : > "$tmpdir/pnpm.log" bash "$tmpdir/pnpm-install-flags.exec.sh" test -f .preinstall-marker - grep -qxF "install --config.public-hoist-pattern=* --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --config.package-import-method=clone-or-copy --pm-on-fail=ignore --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "install --config.public-hoist-pattern=* --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=clone-or-copy --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" ) echo "Test 17: impure no-frozen install flags are rejected before pnpm runs" diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh index 605dad636e..3841d39835 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh @@ -473,14 +473,31 @@ cat > "$contract_profile" <<'EOF' "schema": "dependency-materialization-profile/v0", "identityInputs": ["packageManager", "gvsLinkContract", "installPolicy", "storeContract", "workspaceManifestContract"], "supportedTraits": { + "ciJobLocal": { + "mutableState": "job-local", + "gcAuthority": "profile-local", + "repairAuthority": "ci-job" + }, "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, + "linuxSharedHardlink": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "hardlink", + "sameDeviceRequired": true, "gcAuthority": "shared-pool-coordinator", "repairAuthority": "devenv" }, "isolated": { "mutableState": "profile-local", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, "gcAuthority": "profile-local", "repairAuthority": "devenv" } @@ -499,6 +516,8 @@ const profile = JSON.parse(fs.readFileSync(process.argv[2], 'utf8')) if (profile.schema !== 'dependency-materialization-profile/v0') throw new Error('schema drift') if (!profile.profileId.startsWith('pnpm:')) throw new Error('missing pnpm profile id prefix') if (profile.store.trait !== 'darwinSplitCas') throw new Error('wrong store trait') +if (profile.store.sameDeviceRequired !== false) throw new Error('wrong same-device requirement') +if (profile.store.packageImportMethod !== 'clone-or-copy') throw new Error('wrong import method') if (profile.authorities.gc !== 'shared-pool-coordinator') throw new Error('wrong gc authority') if (profile.authorities.repair !== 'devenv') throw new Error('wrong repair authority') if (!profile.policy.nativeBuildPolicyInputs.compilerEnv.includes('CXX')) throw new Error('missing native compiler policy') @@ -517,6 +536,41 @@ exit_code=$? set -e assert_exit_code 1 "$exit_code" "unsupported profile trait should fail" +echo "Test 16a.1: dependency materialization store preparation selects explicit profiles" +profile_store="$test_dir/profile-store" +profile_shared="$test_dir/profile-shared" +mkdir -p "$profile_store" "$profile_shared" +( + unset CI + export HOME="$profile_shared/home" + export PNPM_SHARED_FILES_DIR="$profile_shared/shared-files" + trait="$(prepare_dependency_materialization_store node auto false "$test_dir" "$profile_store")" + assert_eq "darwinSplitCas" "$trait" "Linux auto keeps the existing shared split CAS profile" + test -L "$profile_store/v11/files" + assert_eq "$profile_shared/shared-files/v11" "$(readlink "$profile_store/v11/files")" "auto shared files symlink target" + assert_eq "--config.package-import-method=clone-or-copy" "$(dependency_materialization_install_policy_flags "$trait")" "auto uses clone-or-copy imports" +) +isolated_store="$test_dir/isolated-profile-store" +mkdir -p "$isolated_store/v11" "$profile_shared/isolated-shared/v11" +ln -s "$profile_shared/isolated-shared/v11" "$isolated_store/v11/files" +( + unset CI + export HOME="$profile_shared/home" + trait="$(prepare_dependency_materialization_store node isolated false "$test_dir" "$isolated_store")" + assert_eq "isolated" "$trait" "explicit isolated profile selected" + test -d "$isolated_store/v11/files" + test ! -L "$isolated_store/v11/files" +) +hardlink_store="$test_dir/hardlink-profile-store" +( + unset CI + export HOME="$profile_shared/home" + export PNPM_SHARED_FILES_DIR="$profile_shared/hardlink-shared-files" + trait="$(prepare_dependency_materialization_store node linuxSharedHardlink false "$test_dir" "$hardlink_store")" + assert_eq "linuxSharedHardlink" "$trait" "explicit hardlink profile selected" + assert_eq "--config.package-import-method=hardlink" "$(dependency_materialization_install_policy_flags "$trait")" "hardlink profile uses hardlink imports" +) + echo "Test 16b: dependency materialization doctor refuses shared pools and plans coordinated repair" doctor_root="$test_dir/profile-doctor" mkdir -p "$doctor_root/profile-a-store/v11" "$doctor_root/profile-b-store/v11" "$doctor_root/shared-files/v11" "$doctor_root/isolated-store/v11/files" @@ -776,14 +830,31 @@ cat > "$profile_contract" <<'EOF' "workspaceManifestContract" ], "supportedTraits": { + "ciJobLocal": { + "mutableState": "job-local", + "gcAuthority": "profile-local", + "repairAuthority": "ci-job" + }, "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, + "linuxSharedHardlink": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "hardlink", + "sameDeviceRequired": true, "gcAuthority": "shared-pool-coordinator", "repairAuthority": "devenv" }, "isolated": { "mutableState": "profile-local", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, "gcAuthority": "profile-local", "repairAuthority": "devenv" } @@ -808,6 +879,11 @@ assert_json_field \ "$profile_a" \ "(value) => value.authorities.gc" \ "dependency profile records gc authority" +assert_json_field \ + "clone-or-copy" \ + "$profile_a" \ + "(value) => value.store.packageImportMethod" \ + "dependency profile records import method" echo "Test 33: source-only files are not dependency profile identity inputs" mkdir -p "$test_dir/profile-source/packages/app/src" diff --git a/pnpm-install-contract.json b/pnpm-install-contract.json index b705aa34c5..253af69dba 100644 --- a/pnpm-install-contract.json +++ b/pnpm-install-contract.json @@ -25,14 +25,26 @@ }, "darwinSplitCas": { "gcAuthority": "shared-pool-coordinator", + "importMethod": "clone-or-copy", "mutableState": "profile-local", "repairAuthority": "devenv", + "sameDeviceRequired": false, + "sharedContent": "store/v11/files" + }, + "linuxSharedHardlink": { + "gcAuthority": "shared-pool-coordinator", + "importMethod": "hardlink", + "mutableState": "profile-local", + "repairAuthority": "devenv", + "sameDeviceRequired": true, "sharedContent": "store/v11/files" }, "isolated": { "gcAuthority": "profile-local", + "importMethod": "clone-or-copy", "mutableState": "profile-local", - "repairAuthority": "devenv" + "repairAuthority": "devenv", + "sameDeviceRequired": false }, "nixPreparedDeps": { "gcAuthority": "nix-store", diff --git a/pnpm-install-contract.json.genie.ts b/pnpm-install-contract.json.genie.ts index a91a58696f..c15476f808 100644 --- a/pnpm-install-contract.json.genie.ts +++ b/pnpm-install-contract.json.genie.ts @@ -90,11 +90,23 @@ export default projectionArtifact.json({ darwinSplitCas: { mutableState: 'profile-local', sharedContent: 'store/v11/files', + importMethod: 'clone-or-copy', + sameDeviceRequired: false, + gcAuthority: 'shared-pool-coordinator', + repairAuthority: 'devenv', + }, + linuxSharedHardlink: { + mutableState: 'profile-local', + sharedContent: 'store/v11/files', + importMethod: 'hardlink', + sameDeviceRequired: true, gcAuthority: 'shared-pool-coordinator', repairAuthority: 'devenv', }, isolated: { mutableState: 'profile-local', + importMethod: 'clone-or-copy', + sameDeviceRequired: false, gcAuthority: 'profile-local', repairAuthority: 'devenv', }, From 1a7461310fea579d1197c5569da3d5e5113b7734 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:44:26 +0200 Subject: [PATCH 02/27] fix: refine pnpm materialization profile contract --- .../tasks/shared/pnpm-task-helpers.sh | 15 +++--- nix/devenv-modules/tasks/shared/pnpm.nix | 25 +++++++--- .../shared/tests/pnpm-task-smoke.test.sh | 34 ++++++++++++- .../tasks/shared/tests/pnpm.test.sh | 48 ++++++++++++++++--- pnpm-install-contract.json | 48 ++++++++++++++----- pnpm-install-contract.json.genie.ts | 8 ++++ 6 files changed, 143 insertions(+), 35 deletions(-) diff --git a/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh b/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh index 7a55ef2c1a..3d31f0d3f2 100644 --- a/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh +++ b/nix/devenv-modules/tasks/shared/pnpm-task-helpers.sh @@ -178,7 +178,7 @@ prepare_dependency_materialization_store() { local store_dir="$5" case "$requested_profile" in - auto | ciJobLocal | darwinSplitCas | linuxSharedHardlink | isolated) ;; + auto | ciJobLocal | splitFilesCas | darwinSplitCas | linuxSharedHardlink | isolated) ;; *) echo "[pnpm] Unsupported materializationProfile: $requested_profile" >&2 exit 1 @@ -195,16 +195,13 @@ prepare_dependency_materialization_store() { local shared_files_path="${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" local effective_profile="$requested_profile" - if [ -n "${CI:-}" ]; then + if [ -n "${CI:-}" ] && [ "$requested_profile" = auto ]; then effective_profile="ciJobLocal" elif [ "$requested_profile" = auto ]; then if [ "$host_is_darwin" = true ]; then effective_profile="darwinSplitCas" else - # Keep the first explicit-profile milestone behavior-compatible on Linux: - # shared files pool with clone-or-copy imports. linuxSharedHardlink is - # selectable, but auto needs separate workload proof before switching. - effective_profile="darwinSplitCas" + effective_profile="splitFilesCas" fi fi @@ -217,7 +214,7 @@ prepare_dependency_materialization_store() { fi mkdir -p "$files_path" ;; - darwinSplitCas | linuxSharedHardlink) + splitFilesCas | darwinSplitCas | linuxSharedHardlink) mkdir -p "$shared_files_path" if [ -L "$files_path" ]; then if [ "$(readlink "$files_path")" != "$shared_files_path" ]; then @@ -255,7 +252,7 @@ dependency_materialization_install_policy_flags() { linuxSharedHardlink) printf '%s\n' "--config.package-import-method=hardlink" ;; - ciJobLocal | darwinSplitCas | isolated) + ciJobLocal | splitFilesCas | darwinSplitCas | isolated) printf '%s\n' "--config.package-import-method=clone-or-copy" ;; *) @@ -600,7 +597,7 @@ const profiles = Array.isArray(registry.profiles) ? registry.profiles : [] for (const profile of profiles .filter((row) => row.filesPoolId === filesPoolId) .sort((left, right) => left.id.localeCompare(right.id))) { - process.stdout.write(`${profile.project}\t${profile.store}\n`) + process.stdout.write(`${profile.project}\t${profile.store}\t${profile.trait ?? ''}\n`) } EOF } diff --git a/nix/devenv-modules/tasks/shared/pnpm.nix b/nix/devenv-modules/tasks/shared/pnpm.nix index a17e42a699..c69b0c14eb 100644 --- a/nix/devenv-modules/tasks/shared/pnpm.nix +++ b/nix/devenv-modules/tasks/shared/pnpm.nix @@ -195,7 +195,7 @@ let _dependency_materialization_trait="$( prepare_dependency_materialization_store \ ${pkgs.nodejs}/bin/node \ - ${lib.escapeShellArg materializationProfile} \ + "''${DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE:-${lib.escapeShellArg materializationProfile}}" \ ${hostIsDarwinString} \ "$PWD" \ "$npm_config_store_dir" @@ -241,7 +241,13 @@ let printf '%s\n' ${lib.escapeShellArg (builtins.toJSON installFlags)} printf '%s\n' ${lib.escapeShellArg preInstall} printf '%s\n' "''${DEPENDENCY_MATERIALIZATION_TRAIT:-}" - dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}" + _dependency_materialization_import_method="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" + printf '%s\n' "$_dependency_materialization_import_method" + if [ -n "''${_pnpm_install_contract_file:-}" ] && pnpm_contract_supports_dependency_materialization_profile ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file"; then + compute_pnpm_contract_section_hash ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file" dependencyMaterializationProfile + _dependency_materialization_import_method="''${_dependency_materialization_import_method#--config.package-import-method=}" + emit_dependency_materialization_profile ${pkgs.nodejs}/bin/node "$_pnpm_install_contract_file" "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}" "" "$PWD" "$npm_config_store_dir" "$_dependency_materialization_import_method" | compute_hash + fi } | compute_hash } ''; @@ -623,7 +629,8 @@ let ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} ${prepareDependencyMaterializationStoreFn} - pnpm install --fix-lockfile --config.confirmModulesPurge=false --pm-on-fail=ignore --config.store-dir="$npm_config_store_dir" + materialization_policy_flags="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" + pnpm install --fix-lockfile --config.confirmModulesPurge=false --pm-on-fail=ignore "$materialization_policy_flags" --config.store-dir="$npm_config_store_dir" echo "Repo-root lockfile updated. Refresh Nix FOD hashes with the repo workflow." ''; }; @@ -643,7 +650,8 @@ let ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} ${prepareDependencyMaterializationStoreFn} - pnpm dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore --config.store-dir="$npm_config_store_dir" + materialization_policy_flags="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" + pnpm dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore "$materialization_policy_flags" --config.store-dir="$npm_config_store_dir" echo "Lockfile deduped. Re-run genie:check to verify the catalog duplicate gate; bless any upstream-locked residuals via catalogDuplicateExceptions." ''; }; @@ -745,10 +753,14 @@ let dependency_materialization_repair_plan ${pkgs.nodejs}/bin/node "$repair_registry_file" "$files_pool_id" repaired_roots=0 - while IFS=$'\t' read -r repair_project_dir repair_store_dir; do + while IFS=$'\t' read -r repair_project_dir repair_store_dir repair_trait; do if [ -z "''${repair_project_dir:-}" ]; then continue fi + if [ -z "''${repair_trait:-}" ]; then + echo "[pnpm] Registry entry for $repair_project_dir has no materialization trait; refusing ambiguous repair" >&2 + exit 1 + fi if [ ! -d "$repair_project_dir" ] || [ ! -f "$repair_project_dir/pnpm-lock.yaml" ]; then echo "[pnpm] Skipping stale dependency materialization root: $repair_project_dir" >&2 continue @@ -768,6 +780,7 @@ let export PNPM_STORE_DIR="$repair_store_dir" export PNPM_CONFIG_STORE_DIR="$repair_store_dir" export npm_config_store_dir="$repair_store_dir" + export DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE="$repair_trait" ${prepareDependencyMaterializationStoreFn} ${runPnpmInstallFn} run_pnpm_install --force @@ -809,7 +822,7 @@ in export npm_config_pm_on_fail=ignore if [ -z "''${CI:-}" ]; then _materialization_profile=${lib.escapeShellArg materializationProfile} - if [ "$_materialization_profile" = darwinSplitCas ] || [ "$_materialization_profile" = linuxSharedHardlink ] || [ "$_materialization_profile" = auto ]; then + if [ "$_materialization_profile" = splitFilesCas ] || [ "$_materialization_profile" = darwinSplitCas ] || [ "$_materialization_profile" = linuxSharedHardlink ] || [ "$_materialization_profile" = auto ]; then _pnpm_shared_files="''${PNPM_SHARED_FILES_DIR:-$HOME/.local/share/pnpm/shared-files}/v11" mkdir -p "$PNPM_STORE_DIR/v11" "$_pnpm_shared_files" if [ ! -e "$PNPM_STORE_DIR/v11/files" ] && [ ! -L "$PNPM_STORE_DIR/v11/files" ]; then diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh index 2a38acd611..1ac3fc8140 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh @@ -175,6 +175,14 @@ cat > "$workspace/pnpm-install-contract.json" <<'EOF' "gcAuthority": "profile-local", "repairAuthority": "ci-job" }, + "splitFilesCas": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", @@ -268,6 +276,9 @@ YAML fi exit 0 fi +if [ "${1:-}" = "dedupe" ]; then + exit 0 +fi echo "unexpected fake pnpm invocation: $*" >&2 exit 1 EOF @@ -324,6 +335,8 @@ extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-flags.exec.sh" 'pa extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-darwin.exec.sh" 'packages = [ "." ];' "pnpm:install" "true" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-isolated.exec.sh" 'packages = [ "." ]; materializationProfile = "isolated";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:install" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-update-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:update" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-dedupe-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:dedupe" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--no-frozen-lockfile" ];' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-equals.exec.sh" 'packages = [ "." ]; installFlags = [ "--frozen-lockfile=false" ];' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-separated.exec.sh" 'packages = [ "." ]; installFlags = [ "--config.package-import-method" "hardlink" ];' "pnpm:install" @@ -356,6 +369,8 @@ rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-flags.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-darwin.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-isolated.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-update-hardlink.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-dedupe-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-flags.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-equals.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-separated.exec.sh" @@ -489,7 +504,7 @@ echo "Test 7: exec defaults PNPM_HOME to a workspace-local projection" profile_id="$(node -e 'const fs=require("node:fs"); process.stdout.write(JSON.parse(fs.readFileSync(process.argv[1],"utf8")).profileId)' "$profile_file")" assert_json_field "dependency-materialization-profile/v0" "$profile_file" "value => value.schema" "live profile schema" assert_json_field "true" "$profile_file" "value => value.profileId.startsWith('pnpm:')" "live profile id prefix" - assert_json_field "darwinSplitCas" "$profile_file" "value => value.store.trait" "live profile split store trait" + assert_json_field "splitFilesCas" "$profile_file" "value => value.store.trait" "live profile split store trait" assert_json_field "clone-or-copy" "$profile_file" "value => value.store.packageImportMethod" "live profile import method" assert_json_field "false" "$profile_file" "value => value.store.sameDeviceRequired" "live profile same-device requirement" assert_json_field "shared-pool-coordinator" "$profile_file" "value => value.authorities.gc" "live profile gc authority" @@ -498,7 +513,7 @@ echo "Test 7: exec defaults PNPM_HOME to a workspace-local projection" assert_json_field "$profile_id" "$registry_file" "value => value.profiles[0].profileId" "live registry profile id" assert_json_field "$workspace" "$registry_file" "value => value.profiles[0].project" "live registry project" assert_json_field "$workspace/.devenv/pnpm-store-pure-v1" "$registry_file" "value => value.profiles[0].store" "live registry store" - assert_json_field "darwinSplitCas" "$registry_file" "value => value.profiles[0].trait" "live registry trait" + assert_json_field "splitFilesCas" "$registry_file" "value => value.profiles[0].trait" "live registry trait" assert_json_field "$workspace/.devenv/pnpm-store-pure-v1/v11/files" "$registry_file" "value => value.pools[0].filesPath" "live registry files path" doctor_decision="$(bash "$tmpdir/pnpm-doctor.exec.sh" | node -e 'const fs=require("node:fs"); process.stdout.write(JSON.parse(fs.readFileSync(0,"utf8")).decision)')" assert_eq "refuse-raw-prune" "$doctor_decision" "doctor refuses raw prune for shared files pool" @@ -546,6 +561,21 @@ echo "Test 7c: explicit linux hardlink materialization validates and uses hardli grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" ) +echo "Test 7d: update and dedupe apply the selected materialization import policy" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset PNPM_HOME + unset PNPM_STORE_DIR + unset npm_config_store_dir + rm -rf "$workspace/.devenv/pnpm-store-pure-v1" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-update-hardlink.exec.sh" + bash "$tmpdir/pnpm-dedupe-hardlink.exec.sh" + grep -qxF "install --fix-lockfile --config.confirmModulesPurge=false --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" +) + echo "Test 8: status hits after install with the default GVS path" ( cd "$workspace" diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh index 3841d39835..396ee3816d 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm.test.sh @@ -478,6 +478,14 @@ cat > "$contract_profile" <<'EOF' "gcAuthority": "profile-local", "repairAuthority": "ci-job" }, + "splitFilesCas": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", @@ -545,11 +553,27 @@ mkdir -p "$profile_store" "$profile_shared" export HOME="$profile_shared/home" export PNPM_SHARED_FILES_DIR="$profile_shared/shared-files" trait="$(prepare_dependency_materialization_store node auto false "$test_dir" "$profile_store")" - assert_eq "darwinSplitCas" "$trait" "Linux auto keeps the existing shared split CAS profile" + assert_eq "splitFilesCas" "$trait" "Linux auto keeps the existing shared split CAS profile" test -L "$profile_store/v11/files" assert_eq "$profile_shared/shared-files/v11" "$(readlink "$profile_store/v11/files")" "auto shared files symlink target" assert_eq "--config.package-import-method=clone-or-copy" "$(dependency_materialization_install_policy_flags "$trait")" "auto uses clone-or-copy imports" ) +ci_auto_store="$test_dir/ci-auto-profile-store" +( + export CI=1 + export HOME="$profile_shared/home" + trait="$(prepare_dependency_materialization_store node auto false "$test_dir" "$ci_auto_store")" + assert_eq "ciJobLocal" "$trait" "CI auto selects a job-local materialization profile" + test -d "$ci_auto_store/v11/files" + test ! -L "$ci_auto_store/v11/files" +) +ci_explicit_store="$test_dir/ci-explicit-profile-store" +( + export CI=1 + export HOME="$profile_shared/home" + trait="$(prepare_dependency_materialization_store node isolated false "$test_dir" "$ci_explicit_store")" + assert_eq "isolated" "$trait" "CI preserves explicit materialization profiles" +) isolated_store="$test_dir/isolated-profile-store" mkdir -p "$isolated_store/v11" "$profile_shared/isolated-shared/v11" ln -s "$profile_shared/isolated-shared/v11" "$isolated_store/v11/files" @@ -632,6 +656,10 @@ assert_eq \ "2" \ "$(dependency_materialization_repair_roots node "$second_registry" "$(dependency_materialization_profile_files_pool_id node "$second_registry" "$registry_profile_id")" | wc -l | tr -d ' ')" \ "repair roots include every workspace sharing the files pool" +assert_eq \ + "darwinSplitCas" \ + "$(dependency_materialization_repair_roots node "$second_registry" "$(dependency_materialization_profile_files_pool_id node "$second_registry" "$registry_profile_id")" | awk -F '\t' 'NR == 1 { print $3 }')" \ + "repair roots carry the registered materialization trait" discovered_profile_store_dir="$(dependency_materialization_profile_store_dir node "$second_registry" "$registry_profile_id")" case "$discovered_profile_store_dir" in "$registry_root/store" | "$registry_root/second-store") ;; @@ -835,6 +863,14 @@ cat > "$profile_contract" <<'EOF' "gcAuthority": "profile-local", "repairAuthority": "ci-job" }, + "splitFilesCas": { + "mutableState": "profile-local", + "sharedContent": "store/v11/files", + "importMethod": "clone-or-copy", + "sameDeviceRequired": false, + "gcAuthority": "shared-pool-coordinator", + "repairAuthority": "devenv" + }, "darwinSplitCas": { "mutableState": "profile-local", "sharedContent": "store/v11/files", @@ -868,8 +904,8 @@ cat > "$profile_contract" <<'EOF' EOF profile_a="$test_dir/profile-a.json" profile_b="$test_dir/profile-b.json" -emit_dependency_materialization_profile node "$profile_contract" darwinSplitCas "$profile_a" -emit_dependency_materialization_profile node "$profile_contract" darwinSplitCas "$profile_b" +emit_dependency_materialization_profile node "$profile_contract" splitFilesCas "$profile_a" +emit_dependency_materialization_profile node "$profile_contract" splitFilesCas "$profile_b" assert_eq \ "$(compute_hash < "$profile_a")" \ "$(compute_hash < "$profile_b")" \ @@ -891,9 +927,9 @@ cp "$profile_contract" "$test_dir/profile-source/pnpm-install-contract.json" echo "export const value = 1" > "$test_dir/profile-source/packages/app/src/index.ts" ( cd "$test_dir/profile-source" - emit_dependency_materialization_profile node pnpm-install-contract.json darwinSplitCas profile-before.json + emit_dependency_materialization_profile node pnpm-install-contract.json splitFilesCas profile-before.json echo "export const value = 2" > packages/app/src/index.ts - emit_dependency_materialization_profile node pnpm-install-contract.json darwinSplitCas profile-after.json + emit_dependency_materialization_profile node pnpm-install-contract.json splitFilesCas profile-after.json assert_json_field \ "$(node -e "const fs = require('node:fs'); process.stdout.write(JSON.parse(fs.readFileSync('profile-before.json','utf8')).profileId)")" \ profile-after.json \ @@ -911,7 +947,7 @@ contract.workspaceManifestContract.packages.push('packages/new-member') fs.writeFileSync(to, `${JSON.stringify(contract, null, 2)}\n`) EOF profile_manifest="$test_dir/profile-manifest.json" -emit_dependency_materialization_profile node "$manifest_contract" darwinSplitCas "$profile_manifest" +emit_dependency_materialization_profile node "$manifest_contract" splitFilesCas "$profile_manifest" if [ "$(node -e "const fs = require('node:fs'); process.stdout.write(JSON.parse(fs.readFileSync(process.argv[1], 'utf8')).profileId)" "$profile_a")" = "$(node -e "const fs = require('node:fs'); process.stdout.write(JSON.parse(fs.readFileSync(process.argv[1], 'utf8')).profileId)" "$profile_manifest")" ]; then echo "FAIL: manifest contract changes dependency profile identity" exit 1 diff --git a/pnpm-install-contract.json b/pnpm-install-contract.json index 253af69dba..cabab6c9e1 100644 --- a/pnpm-install-contract.json +++ b/pnpm-install-contract.json @@ -14,7 +14,10 @@ ], "nativeBuildPolicyInputs": { "allowBuilds": "gvsLinkContract.allowBuilds", - "compilerEnv": ["CC", "CXX"] + "compilerEnv": [ + "CC", + "CXX" + ] }, "schema": "dependency-materialization-profile/v0", "supportedTraits": { @@ -31,6 +34,13 @@ "sameDeviceRequired": false, "sharedContent": "store/v11/files" }, + "isolated": { + "gcAuthority": "profile-local", + "importMethod": "clone-or-copy", + "mutableState": "profile-local", + "repairAuthority": "devenv", + "sameDeviceRequired": false + }, "linuxSharedHardlink": { "gcAuthority": "shared-pool-coordinator", "importMethod": "hardlink", @@ -39,17 +49,18 @@ "sameDeviceRequired": true, "sharedContent": "store/v11/files" }, - "isolated": { - "gcAuthority": "profile-local", - "importMethod": "clone-or-copy", - "mutableState": "profile-local", - "repairAuthority": "devenv", - "sameDeviceRequired": false - }, "nixPreparedDeps": { "gcAuthority": "nix-store", "mutableState": "none", "repairAuthority": "evergreen-fod" + }, + "splitFilesCas": { + "gcAuthority": "shared-pool-coordinator", + "importMethod": "clone-or-copy", + "mutableState": "profile-local", + "repairAuthority": "devenv", + "sameDeviceRequired": false, + "sharedContent": "store/v11/files" } } }, @@ -85,7 +96,11 @@ "installPolicy": { "dedupePeerDependents": true, "ignoreScripts": true, - "minimumReleaseAgeExclude": ["@effect/platform", "@types/node", "effect"], + "minimumReleaseAgeExclude": [ + "@effect/platform", + "@types/node", + "effect" + ], "optimisticRepeatInstall": false, "packageImportMethod": "clone-or-copy", "peerDependencyRules": { @@ -103,9 +118,18 @@ "strictPeerDependencies": true, "strictStorePkgContentCheck": true, "supportedArchitectures": { - "cpu": ["x64", "arm64"], - "libc": ["glibc", "musl"], - "os": ["linux", "darwin"] + "cpu": [ + "x64", + "arm64" + ], + "libc": [ + "glibc", + "musl" + ], + "os": [ + "linux", + "darwin" + ] }, "verifyDepsBeforeRun": false, "verifyStoreIntegrity": true diff --git a/pnpm-install-contract.json.genie.ts b/pnpm-install-contract.json.genie.ts index c15476f808..d4efcc84f0 100644 --- a/pnpm-install-contract.json.genie.ts +++ b/pnpm-install-contract.json.genie.ts @@ -87,6 +87,14 @@ export default projectionArtifact.json({ gcAuthority: 'profile-local', repairAuthority: 'ci-job', }, + splitFilesCas: { + mutableState: 'profile-local', + sharedContent: 'store/v11/files', + importMethod: 'clone-or-copy', + sameDeviceRequired: false, + gcAuthority: 'shared-pool-coordinator', + repairAuthority: 'devenv', + }, darwinSplitCas: { mutableState: 'profile-local', sharedContent: 'store/v11/files', From 97ca2aac936ccca616af5c21ff722d50db108f5d Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:49:17 +0200 Subject: [PATCH 03/27] docs: clarify pnpm split files profile --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39b49cf85c..9a3c27b50c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,9 +84,9 @@ All notable changes to this project will be documented in this file. stalls can produce inspectable trace evidence. - **devenv/pnpm**: Add an explicit `materializationProfile` API and profile - evidence contract for `ciJobLocal`, `darwinSplitCas`, - `linuxSharedHardlink`, and `isolated` without changing Linux `auto` to - hardlink materialization yet. + evidence contract for `ciJobLocal`, transitional Linux `splitFilesCas`, + macOS `darwinSplitCas`, opt-in `linuxSharedHardlink`, and `isolated` without + changing Linux `auto` to hardlink materialization yet. - **@overeng/genie**: Document the intended package export type-proof architecture: strict proofs should use an explicit compiler executable From f4b74f8de5b24fbdf27e0c11f79f315492cc26ff Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Mon, 29 Jun 2026 19:24:15 +0200 Subject: [PATCH 04/27] fix: repair notion-cli deps fod hash --- packages/@overeng/notion-cli/nix/build.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index 1c2649ef41..7ac10510aa 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -13,6 +13,12 @@ let mkPnpmCli = import ../../../../nix/workspace-tools/lib/mk-pnpm-cli.nix { inherit pkgs pnpm; }; opentuiCoreNative = import ../../../../nix/opentui-core-native.nix { inherit pkgs; }; nodejs = pkgs.nodejs_24 or pkgs.nodejs; + selectHashForSystem = + hashes: + let + system = pkgs.stdenv.hostPlatform.system; + in + hashes.${system} or (throw "missing notion-cli dependency hash for ${system}"); datasourceSyncBuildStamp = builtins.toJSON { type = "nix"; version = "0.1.0"; @@ -33,7 +39,11 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-xyZyCkEuEI3JXlQk3NN3fmVYHZQZo2uKoDCODLToHVo="; + hash = selectHashForSystem { + aarch64-darwin = "sha256-gw/dj8hRRNIw4h8+EBfEcZA26Gad2HMxyGUF+x4UEGA="; + aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; + x86_64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; + }; }; }; nativeNodePackages = opentuiCoreNative.packages; From ea51039e5da54f363389036c64161100403edd3e Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Tue, 30 Jun 2026 11:20:09 +0200 Subject: [PATCH 05/27] feat: configure pnpm materialization store paths --- nix/devenv-modules/tasks/shared/pnpm.nix | 19 +++++++++++--- .../shared/tests/pnpm-task-smoke.test.sh | 26 +++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/nix/devenv-modules/tasks/shared/pnpm.nix b/nix/devenv-modules/tasks/shared/pnpm.nix index c69b0c14eb..96a0d801a2 100644 --- a/nix/devenv-modules/tasks/shared/pnpm.nix +++ b/nix/devenv-modules/tasks/shared/pnpm.nix @@ -17,6 +17,8 @@ taskSuffix ? null, globalCache ? true, materializationProfile ? "auto", + storeDir ? null, + sharedFilesDir ? null, frozenInCi ? true, installFlags ? [ ], preInstall ? "", @@ -58,11 +60,10 @@ let "${config.devenv.root}/.devenv/pnpm-home" else "${config.devenv.root}/.devenv/pnpm-home/${workspaceCacheName}"; + basePnpmStoreDir = + if storeDir == null then "${config.devenv.root}/.devenv/pnpm-store-pure-v1" else storeDir; defaultPnpmStoreDir = - if workspaceRoot == "." then - "${config.devenv.root}/.devenv/pnpm-store-pure-v1" - else - "${config.devenv.root}/.devenv/pnpm-store-pure-v1/${workspaceCacheName}"; + if workspaceRoot == "." then basePnpmStoreDir else "${basePnpmStoreDir}/${workspaceCacheName}"; installTaskName = if taskSuffix == null then "${taskNamePrefix}:install" @@ -191,6 +192,9 @@ let export npm_config_store_dir="$_pnpm_store_dir" unset _pnpm_store_dir ''; + configurePnpmSharedFilesDirFn = lib.optionalString (sharedFilesDir != null) '' + export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg sharedFilesDir} + ''; prepareDependencyMaterializationStoreFn = '' _dependency_materialization_trait="$( prepare_dependency_materialization_store \ @@ -402,6 +406,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} + ${configurePnpmSharedFilesDirFn} ${prepareDependencyMaterializationStoreFn} mkdir -p "${cacheRoot}" # This cache tracks the effective install state, not just workspace @@ -552,6 +557,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} + ${configurePnpmSharedFilesDirFn} ${prepareDependencyMaterializationStoreFn} hash_file="${cacheRoot}/install-state.hash" projection_hash_file="${cacheRoot}/projection-state.hash" @@ -628,6 +634,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} + ${configurePnpmSharedFilesDirFn} ${prepareDependencyMaterializationStoreFn} materialization_policy_flags="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" pnpm install --fix-lockfile --config.confirmModulesPurge=false --pm-on-fail=ignore "$materialization_policy_flags" --config.store-dir="$npm_config_store_dir" @@ -649,6 +656,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} + ${configurePnpmSharedFilesDirFn} ${prepareDependencyMaterializationStoreFn} materialization_policy_flags="$(dependency_materialization_install_policy_flags "''${DEPENDENCY_MATERIALIZATION_TRAIT:-isolated}")" pnpm dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore "$materialization_policy_flags" --config.store-dir="$npm_config_store_dir" @@ -666,6 +674,7 @@ let ${loadPnpmTaskHelpersFn} ${ensureLocalPnpmHomeFn} ${ensureLocalPnpmStoreDirFn} + ${configurePnpmSharedFilesDirFn} ${prepareDependencyMaterializationStoreFn} purge_node_modules node_modules ${nodeModulesPaths} @@ -780,6 +789,7 @@ let export PNPM_STORE_DIR="$repair_store_dir" export PNPM_CONFIG_STORE_DIR="$repair_store_dir" export npm_config_store_dir="$repair_store_dir" + ${configurePnpmSharedFilesDirFn} export DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE="$repair_trait" ${prepareDependencyMaterializationStoreFn} ${runPnpmInstallFn} @@ -818,6 +828,7 @@ in export PNPM_STORE_DIR="$_pnpm_store_dir" export PNPM_CONFIG_STORE_DIR="$_pnpm_store_dir" export npm_config_store_dir="$_pnpm_store_dir" + ${configurePnpmSharedFilesDirFn} export npm_config_cache="$HOME/.cache/pnpm" export npm_config_pm_on_fail=ignore if [ -z "''${CI:-}" ]; then diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh index 1ac3fc8140..d577db114f 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh @@ -251,6 +251,7 @@ if [ "${1:-}" = "install" ]; then printf 'PNPM_STORE_DIR=%s\n' "${PNPM_STORE_DIR:-}" >> "${TEST_PNPM_LOG:?}" printf 'PNPM_CONFIG_STORE_DIR=%s\n' "${PNPM_CONFIG_STORE_DIR:-}" >> "${TEST_PNPM_LOG:?}" printf 'npm_config_store_dir=%s\n' "${npm_config_store_dir:-}" >> "${TEST_PNPM_LOG:?}" + printf 'PNPM_SHARED_FILES_DIR=%s\n' "${PNPM_SHARED_FILES_DIR:-}" >> "${TEST_PNPM_LOG:?}" if [ "${TEST_PNPM_FAIL_NETWORK:-0}" = "1" ]; then echo "ERR_PNPM_META_FETCH_FAIL GET https://registry.npmjs.org/demo: request to https://registry.npmjs.org/demo failed, reason: Socket timeout" >&2 exit 42 @@ -335,6 +336,7 @@ extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-flags.exec.sh" 'pa extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-darwin.exec.sh" 'packages = [ "." ];' "pnpm:install" "true" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-isolated.exec.sh" 'packages = [ "." ]; materializationProfile = "isolated";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:install" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink"; storeDir = "'$tmpdir'/cas/pnpm-store/root"; sharedFilesDir = "'$tmpdir'/cas/pnpm-store/files";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-update-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:update" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-dedupe-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:dedupe" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--no-frozen-lockfile" ];' "pnpm:install" @@ -369,6 +371,7 @@ rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-flags.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-darwin.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-isolated.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-update-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-dedupe-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-flags.exec.sh" @@ -576,6 +579,29 @@ echo "Test 7d: update and dedupe apply the selected materialization import polic grep -qxF "dedupe --config.confirmModulesPurge=false --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" ) +echo "Test 7e: explicit machine CAS boundary controls store and files pool" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset PNPM_HOME + unset PNPM_STORE_DIR + unset PNPM_CONFIG_STORE_DIR + unset npm_config_store_dir + rm -rf "$tmpdir/cas" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" + test -L "$tmpdir/cas/pnpm-store/root/v11/files" + test "$(readlink "$tmpdir/cas/pnpm-store/root/v11/files")" = "$tmpdir/cas/pnpm-store/files/v11" + grep -qxF "PNPM_STORE_DIR=$tmpdir/cas/pnpm-store/root" "$tmpdir/pnpm.log" + grep -qxF "PNPM_CONFIG_STORE_DIR=$tmpdir/cas/pnpm-store/root" "$tmpdir/pnpm.log" + grep -qxF "npm_config_store_dir=$tmpdir/cas/pnpm-store/root" "$tmpdir/pnpm.log" + grep -qxF "PNPM_SHARED_FILES_DIR=$tmpdir/cas/pnpm-store/files" "$tmpdir/pnpm.log" + grep -qxF "install --force --frozen-lockfile --config.confirmModulesPurge=false --ignore-scripts --config.side-effects-cache=false --config.verify-store-integrity=true --config.strict-store-pkg-content-check=true --child-concurrency=1 --network-concurrency=4 --pm-on-fail=ignore --config.package-import-method=hardlink --config.store-dir=$tmpdir/cas/pnpm-store/root" "$tmpdir/pnpm.log" + assert_json_field "linuxSharedHardlink" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "configured boundary profile trait" + assert_json_field "$tmpdir/cas/pnpm-store/root" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-registry.json" "value => value.profiles[0].store" "configured boundary registry store" + assert_json_field "$tmpdir/cas/pnpm-store/root/v11/files" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-registry.json" "value => value.pools[0].filesPath" "configured boundary registry files path" +) + echo "Test 8: status hits after install with the default GVS path" ( cd "$workspace" From e6e07cfd55ae79e19684a84c97ffabf4f77de80e Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Tue, 30 Jun 2026 11:26:53 +0200 Subject: [PATCH 06/27] fix: keep pnpm hardlink profile local-only --- nix/devenv-modules/tasks/shared/pnpm.nix | 51 ++++++++++++++++--- .../shared/tests/pnpm-task-smoke.test.sh | 25 +++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/nix/devenv-modules/tasks/shared/pnpm.nix b/nix/devenv-modules/tasks/shared/pnpm.nix index 96a0d801a2..163847d10a 100644 --- a/nix/devenv-modules/tasks/shared/pnpm.nix +++ b/nix/devenv-modules/tasks/shared/pnpm.nix @@ -17,8 +17,11 @@ taskSuffix ? null, globalCache ? true, materializationProfile ? "auto", + localMaterializationProfile ? null, storeDir ? null, + localStoreDir ? null, sharedFilesDir ? null, + localSharedFilesDir ? null, frozenInCi ? true, installFlags ? [ ], preInstall ? "", @@ -62,8 +65,15 @@ let "${config.devenv.root}/.devenv/pnpm-home/${workspaceCacheName}"; basePnpmStoreDir = if storeDir == null then "${config.devenv.root}/.devenv/pnpm-store-pure-v1" else storeDir; - defaultPnpmStoreDir = + localBasePnpmStoreDir = if localStoreDir == null then basePnpmStoreDir else localStoreDir; + ciDefaultPnpmStoreDir = if workspaceRoot == "." then basePnpmStoreDir else "${basePnpmStoreDir}/${workspaceCacheName}"; + localDefaultPnpmStoreDir = + if workspaceRoot == "." then + localBasePnpmStoreDir + else + "${localBasePnpmStoreDir}/${workspaceCacheName}"; + defaultPnpmStoreDir = ciDefaultPnpmStoreDir; installTaskName = if taskSuffix == null then "${taskNamePrefix}:install" @@ -177,6 +187,13 @@ let ''; ensureLocalPnpmStoreDirFn = '' _pnpm_store_dir="''${npm_config_store_dir:-''${PNPM_CONFIG_STORE_DIR:-''${PNPM_STORE_DIR:-}}}" + if [ -z "$_pnpm_store_dir" ]; then + if [ -z "''${CI:-}" ]; then + _pnpm_default_store_dir=${lib.escapeShellArg localDefaultPnpmStoreDir} + else + _pnpm_default_store_dir=${lib.escapeShellArg ciDefaultPnpmStoreDir} + fi + fi if [ ${lib.escapeShellArg workspaceRoot} != "." ] && [ -n "$_pnpm_store_dir" ]; then case "$_pnpm_store_dir" in */${workspaceCacheName}) ;; @@ -185,26 +202,48 @@ let elif [ -n "$_pnpm_store_dir" ]; then : else - _pnpm_store_dir=${lib.escapeShellArg defaultPnpmStoreDir} + _pnpm_store_dir="$_pnpm_default_store_dir" fi export PNPM_STORE_DIR="$_pnpm_store_dir" export PNPM_CONFIG_STORE_DIR="$_pnpm_store_dir" export npm_config_store_dir="$_pnpm_store_dir" unset _pnpm_store_dir + unset _pnpm_default_store_dir ''; - configurePnpmSharedFilesDirFn = lib.optionalString (sharedFilesDir != null) '' - export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg sharedFilesDir} + configurePnpmSharedFilesDirFn = '' + if [ -z "''${CI:-}" ]; then + : + ${lib.optionalString (localSharedFilesDir != null) '' + export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg localSharedFilesDir} + ''} + ${lib.optionalString (localSharedFilesDir == null && sharedFilesDir != null) '' + export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg sharedFilesDir} + ''} + else + : + ${lib.optionalString (sharedFilesDir != null) '' + export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg sharedFilesDir} + ''} + fi ''; prepareDependencyMaterializationStoreFn = '' + _dependency_materialization_requested_profile="''${DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE:-${lib.escapeShellArg materializationProfile}}" + if [ -z "''${CI:-}" ] && [ -z "''${DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE:-}" ]; then + : + ${lib.optionalString (localMaterializationProfile != null) '' + _dependency_materialization_requested_profile=${lib.escapeShellArg localMaterializationProfile} + ''} + fi _dependency_materialization_trait="$( prepare_dependency_materialization_store \ ${pkgs.nodejs}/bin/node \ - "''${DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE:-${lib.escapeShellArg materializationProfile}}" \ + "$_dependency_materialization_requested_profile" \ ${hostIsDarwinString} \ "$PWD" \ "$npm_config_store_dir" )" export DEPENDENCY_MATERIALIZATION_TRAIT="$_dependency_materialization_trait" + unset _dependency_materialization_requested_profile ''; computeWorkspaceStateHash = '' @@ -824,7 +863,7 @@ in enterShell = lib.mkIf (globalCache && workspaceRoot == ".") '' export PNPM_HOME="''${PNPM_HOME:-${config.devenv.root}/.devenv/pnpm-home}" - _pnpm_store_dir="''${npm_config_store_dir:-''${PNPM_CONFIG_STORE_DIR:-''${PNPM_STORE_DIR:-${defaultPnpmStoreDir}}}}" + _pnpm_store_dir="''${npm_config_store_dir:-''${PNPM_CONFIG_STORE_DIR:-''${PNPM_STORE_DIR:-${localDefaultPnpmStoreDir}}}}" export PNPM_STORE_DIR="$_pnpm_store_dir" export PNPM_CONFIG_STORE_DIR="$_pnpm_store_dir" export npm_config_store_dir="$_pnpm_store_dir" diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh index d577db114f..76f613efb8 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh @@ -337,6 +337,7 @@ extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-darwin.exec.sh" 'p extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-isolated.exec.sh" 'packages = [ "." ]; materializationProfile = "isolated";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink"; storeDir = "'$tmpdir'/cas/pnpm-store/root"; sharedFilesDir = "'$tmpdir'/cas/pnpm-store/files";' "pnpm:install" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" 'packages = [ "." ]; localMaterializationProfile = "linuxSharedHardlink"; localStoreDir = "'$tmpdir'/local-cas/pnpm-store/root"; localSharedFilesDir = "'$tmpdir'/local-cas/pnpm-store/files";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-update-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:update" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-dedupe-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:dedupe" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--no-frozen-lockfile" ];' "pnpm:install" @@ -372,6 +373,7 @@ rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-darwin.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-isolated.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-update-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-dedupe-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-flags.exec.sh" @@ -602,6 +604,29 @@ echo "Test 7e: explicit machine CAS boundary controls store and files pool" assert_json_field "$tmpdir/cas/pnpm-store/root/v11/files" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-registry.json" "value => value.pools[0].filesPath" "configured boundary registry files path" ) +echo "Test 7f: local machine CAS override does not leak into CI" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset PNPM_HOME + unset PNPM_STORE_DIR + unset PNPM_CONFIG_STORE_DIR + unset npm_config_store_dir + rm -rf "$tmpdir/local-cas" "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" + grep -qxF "PNPM_STORE_DIR=$tmpdir/local-cas/pnpm-store/root" "$tmpdir/pnpm.log" + grep -qxF "PNPM_SHARED_FILES_DIR=$tmpdir/local-cas/pnpm-store/files" "$tmpdir/pnpm.log" + assert_json_field "linuxSharedHardlink" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "local override profile trait" + + rm -rf "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + CI=1 bash "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" + grep -qxF "PNPM_STORE_DIR=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "PNPM_SHARED_FILES_DIR=" "$tmpdir/pnpm.log" + assert_json_field "ciJobLocal" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "local override CI profile trait" +) + echo "Test 8: status hits after install with the default GVS path" ( cd "$workspace" From bda697dd3325affcf71489686c72353434ab717d Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Tue, 30 Jun 2026 11:33:47 +0200 Subject: [PATCH 07/27] fix: gate local pnpm CAS overrides on Linux --- nix/devenv-modules/tasks/shared/pnpm.nix | 17 ++++++++-- .../shared/tests/pnpm-task-smoke.test.sh | 34 +++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/nix/devenv-modules/tasks/shared/pnpm.nix b/nix/devenv-modules/tasks/shared/pnpm.nix index 163847d10a..c8f13d30e9 100644 --- a/nix/devenv-modules/tasks/shared/pnpm.nix +++ b/nix/devenv-modules/tasks/shared/pnpm.nix @@ -18,6 +18,7 @@ globalCache ? true, materializationProfile ? "auto", localMaterializationProfile ? null, + localOverridesRequireLinux ? false, storeDir ? null, localStoreDir ? null, sharedFilesDir ? null, @@ -117,6 +118,8 @@ let ) pnpmInstallPolicy.liveInstallPolicyFlags; pureInstallFlagsString = lib.concatStringsSep " " pureInstallFlags; hostIsDarwinString = if pkgs.stdenv.hostPlatform.isDarwin then "true" else "false"; + localOverridesEnabledCondition = + if localOverridesRequireLinux then ''[ "$(uname -s)" = Linux ]'' else "true"; packageNameToPath = builtins.listToAttrs ( builtins.filter (x: x != null) ( @@ -189,7 +192,11 @@ let _pnpm_store_dir="''${npm_config_store_dir:-''${PNPM_CONFIG_STORE_DIR:-''${PNPM_STORE_DIR:-}}}" if [ -z "$_pnpm_store_dir" ]; then if [ -z "''${CI:-}" ]; then - _pnpm_default_store_dir=${lib.escapeShellArg localDefaultPnpmStoreDir} + if ${localOverridesEnabledCondition}; then + _pnpm_default_store_dir=${lib.escapeShellArg localDefaultPnpmStoreDir} + else + _pnpm_default_store_dir=${lib.escapeShellArg ciDefaultPnpmStoreDir} + fi else _pnpm_default_store_dir=${lib.escapeShellArg ciDefaultPnpmStoreDir} fi @@ -214,7 +221,9 @@ let if [ -z "''${CI:-}" ]; then : ${lib.optionalString (localSharedFilesDir != null) '' - export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg localSharedFilesDir} + if ${localOverridesEnabledCondition}; then + export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg localSharedFilesDir} + fi ''} ${lib.optionalString (localSharedFilesDir == null && sharedFilesDir != null) '' export PNPM_SHARED_FILES_DIR=${lib.escapeShellArg sharedFilesDir} @@ -231,7 +240,9 @@ let if [ -z "''${CI:-}" ] && [ -z "''${DEPENDENCY_MATERIALIZATION_REQUESTED_PROFILE:-}" ]; then : ${lib.optionalString (localMaterializationProfile != null) '' - _dependency_materialization_requested_profile=${lib.escapeShellArg localMaterializationProfile} + if ${localOverridesEnabledCondition}; then + _dependency_materialization_requested_profile=${lib.escapeShellArg localMaterializationProfile} + fi ''} fi _dependency_materialization_trait="$( diff --git a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh index 76f613efb8..101e4810a6 100644 --- a/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh +++ b/nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh @@ -338,6 +338,7 @@ extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-isolated.exec.sh" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink"; storeDir = "'$tmpdir'/cas/pnpm-store/root"; sharedFilesDir = "'$tmpdir'/cas/pnpm-store/files";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" 'packages = [ "." ]; localMaterializationProfile = "linuxSharedHardlink"; localStoreDir = "'$tmpdir'/local-cas/pnpm-store/root"; localSharedFilesDir = "'$tmpdir'/local-cas/pnpm-store/files";' "pnpm:install" +extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-local-hardlink-linux-only.exec.sh" 'packages = [ "." ]; localMaterializationProfile = "linuxSharedHardlink"; localOverridesRequireLinux = true; localStoreDir = "'$tmpdir'/linux-only-cas/pnpm-store/root"; localSharedFilesDir = "'$tmpdir'/linux-only-cas/pnpm-store/files";' "pnpm:install" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-update-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:update" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-dedupe-hardlink.exec.sh" 'packages = [ "." ]; materializationProfile = "linuxSharedHardlink";' "pnpm:dedupe" extract_task_script "$workspace" "exec" "$tmpdir/pnpm-install-impure-flags.exec.sh" 'packages = [ "." ]; installFlags = [ "--no-frozen-lockfile" ];' "pnpm:install" @@ -374,6 +375,7 @@ rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-isolated.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-hardlink-boundary.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-local-hardlink-boundary.exec.sh" +rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-local-hardlink-linux-only.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-update-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-dedupe-hardlink.exec.sh" rewrite_unrealized_tool_paths "$tmpdir/pnpm-install-impure-flags.exec.sh" @@ -627,6 +629,38 @@ echo "Test 7f: local machine CAS override does not leak into CI" assert_json_field "ciJobLocal" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "local override CI profile trait" ) +echo "Test 7g: Linux-required local CAS override is runtime-gated" +( + cd "$workspace" + export HOME="$tmpdir/home" + unset CI + unset PNPM_HOME + unset PNPM_STORE_DIR + unset PNPM_CONFIG_STORE_DIR + unset PNPM_SHARED_FILES_DIR + unset npm_config_store_dir + rm -rf "$tmpdir/linux-only-cas" "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + bash "$tmpdir/pnpm-install-local-hardlink-linux-only.exec.sh" + grep -qxF "PNPM_STORE_DIR=$tmpdir/linux-only-cas/pnpm-store/root" "$tmpdir/pnpm.log" + grep -qxF "PNPM_SHARED_FILES_DIR=$tmpdir/linux-only-cas/pnpm-store/files" "$tmpdir/pnpm.log" + assert_json_field "linuxSharedHardlink" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.trait" "Linux-only override Linux trait" + + fake_bin="$tmpdir/fake-darwin-bin" + mkdir -p "$fake_bin" + cat > "$fake_bin/uname" <<'EOF' +#!/usr/bin/env bash +printf 'Darwin\n' +EOF + chmod +x "$fake_bin/uname" + rm -rf "$workspace/.devenv/pnpm-store-pure-v1" "$workspace/.devenv/task-cache/pnpm-install" node_modules + : > "$tmpdir/pnpm.log" + PATH="$fake_bin:$PATH" bash "$tmpdir/pnpm-install-local-hardlink-linux-only.exec.sh" + grep -qxF "PNPM_STORE_DIR=$workspace/.devenv/pnpm-store-pure-v1" "$tmpdir/pnpm.log" + grep -qxF "PNPM_SHARED_FILES_DIR=" "$tmpdir/pnpm.log" + assert_json_field "clone-or-copy" "$workspace/.devenv/task-cache/pnpm-install/dependency-materialization-profile.json" "value => value.store.packageImportMethod" "Linux-only override non-Linux import method" +) + echo "Test 8: status hits after install with the default GVS path" ( cd "$workspace" From b845e9d044042e857f557eda11df9ab2521944fa Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:31:09 +0200 Subject: [PATCH 08/27] fix(nix): refresh genie and megarepo deps hashes --- CHANGELOG.md | 3 +++ packages/@overeng/genie/nix/build.nix | 2 +- packages/@overeng/megarepo/nix/build.nix | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3c27b50c..5307296c04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -228,6 +228,9 @@ All notable changes to this project will be documented in this file. by keeping the short-lived PTY session alive long enough for peek/attach assertions. +- **@overeng/genie, @overeng/megarepo**: Refresh stale pnpm dependency FOD + hashes for the CAS materialization profile branch. + - **@overeng/genie**: Emit Starlark `#` generated-file headers for Buck2 `BUCK`, `.bzl`, and `.bxl` outputs. diff --git a/packages/@overeng/genie/nix/build.nix b/packages/@overeng/genie/nix/build.nix index 5483c5b425..cf82d74950 100644 --- a/packages/@overeng/genie/nix/build.nix +++ b/packages/@overeng/genie/nix/build.nix @@ -26,7 +26,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-daf250Kx4FEV67SfU3oKW1ZZGrMG03b2EoEuntGpHWw="; + hash = "sha256-K776ETQCbNP2Ad0/20t9MsrWMYlq5rybs1CISt0AEgI="; }; }; nativeNodePackages = opentuiCoreNative.packages; diff --git a/packages/@overeng/megarepo/nix/build.nix b/packages/@overeng/megarepo/nix/build.nix index e1d1d44922..4247579e08 100644 --- a/packages/@overeng/megarepo/nix/build.nix +++ b/packages/@overeng/megarepo/nix/build.nix @@ -24,7 +24,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-PWQ8f+fFAcPRhd6LElqJubz//Y/8AVglZmR4FRI5F/w="; + hash = "sha256-yujFbDUdgWGI+cAlHsAgllTMztEcPuHIFNi87vwTfgE="; }; }; nativeNodePackages = opentuiCoreNative.packages; From e4df80148eabd95fa5cdcfd2d1609fc11a99bdea Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Tue, 30 Jun 2026 16:56:26 +0200 Subject: [PATCH 09/27] fix(nix): refresh notion-md deps hash --- packages/@overeng/notion-md/nix/build.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@overeng/notion-md/nix/build.nix b/packages/@overeng/notion-md/nix/build.nix index 8be8b4fafc..d70b57a680 100644 --- a/packages/@overeng/notion-md/nix/build.nix +++ b/packages/@overeng/notion-md/nix/build.nix @@ -20,7 +20,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-7mF1ThnZDPquxmliD4mc2LZdRZgDIElqyxt9Id5DgvI="; + hash = "sha256-eZBbASu2K2JK8nX545ZpnbqQTgOKKzjSGY/SMAqzBe8="; }; }; smokeTestArgs = [ "--help" ]; From 093363b7fb8d19ca27f32d1c1c936bfbff35a57d Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:03:42 +0200 Subject: [PATCH 10/27] fix: refresh materialization profile artifacts after rebase --- .github/labels.json | 5 +++++ packages/@overeng/notion-cli/nix/build.nix | 2 +- pnpm-install-contract.json | 26 +++++----------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/.github/labels.json b/.github/labels.json index 6ab7e28307..cba6552c96 100644 --- a/.github/labels.json +++ b/.github/labels.json @@ -365,6 +365,11 @@ "color": "a371f7", "description": "@overeng/utils-dev package · Set: manual" }, + { + "name": "system:workflow-report", + "color": "a371f7", + "description": "@overeng/workflow-report package · Set: manual" + }, { "name": "type:agent-tooling", "color": "1f8fb8", diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index 7ac10510aa..a512c9340b 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -42,7 +42,7 @@ let hash = selectHashForSystem { aarch64-darwin = "sha256-gw/dj8hRRNIw4h8+EBfEcZA26Gad2HMxyGUF+x4UEGA="; aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; - x86_64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; + x86_64-linux = "sha256-avKG+K9P879m77hZvtgwMGw5EC2wcTrwhfRPPd0TSU8="; }; }; }; diff --git a/pnpm-install-contract.json b/pnpm-install-contract.json index cabab6c9e1..0a635ed950 100644 --- a/pnpm-install-contract.json +++ b/pnpm-install-contract.json @@ -14,10 +14,7 @@ ], "nativeBuildPolicyInputs": { "allowBuilds": "gvsLinkContract.allowBuilds", - "compilerEnv": [ - "CC", - "CXX" - ] + "compilerEnv": ["CC", "CXX"] }, "schema": "dependency-materialization-profile/v0", "supportedTraits": { @@ -96,11 +93,7 @@ "installPolicy": { "dedupePeerDependents": true, "ignoreScripts": true, - "minimumReleaseAgeExclude": [ - "@effect/platform", - "@types/node", - "effect" - ], + "minimumReleaseAgeExclude": ["@effect/platform", "@types/node", "effect"], "optimisticRepeatInstall": false, "packageImportMethod": "clone-or-copy", "peerDependencyRules": { @@ -118,18 +111,9 @@ "strictPeerDependencies": true, "strictStorePkgContentCheck": true, "supportedArchitectures": { - "cpu": [ - "x64", - "arm64" - ], - "libc": [ - "glibc", - "musl" - ], - "os": [ - "linux", - "darwin" - ] + "cpu": ["x64", "arm64"], + "libc": ["glibc", "musl"], + "os": ["linux", "darwin"] }, "verifyDepsBeforeRun": false, "verifyStoreIntegrity": true From 91738883dd2a28b29d9bbd70ba06ded460f97de2 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:11:12 +0200 Subject: [PATCH 11/27] fix(nix): refresh materialization profile fod hashes --- packages/@overeng/genie/nix/build.nix | 2 +- packages/@overeng/megarepo/nix/build.nix | 2 +- packages/@overeng/notion-cli/nix/build.nix | 2 +- packages/@overeng/notion-md/nix/build.nix | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@overeng/genie/nix/build.nix b/packages/@overeng/genie/nix/build.nix index cf82d74950..7a6e943f4d 100644 --- a/packages/@overeng/genie/nix/build.nix +++ b/packages/@overeng/genie/nix/build.nix @@ -26,7 +26,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-K776ETQCbNP2Ad0/20t9MsrWMYlq5rybs1CISt0AEgI="; + hash = "sha256-u9RLpYbL6NDk9TSwhyPjq1WzK+PCbaTNeuaOj2MoWdc="; }; }; nativeNodePackages = opentuiCoreNative.packages; diff --git a/packages/@overeng/megarepo/nix/build.nix b/packages/@overeng/megarepo/nix/build.nix index 4247579e08..b2fccda376 100644 --- a/packages/@overeng/megarepo/nix/build.nix +++ b/packages/@overeng/megarepo/nix/build.nix @@ -24,7 +24,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-yujFbDUdgWGI+cAlHsAgllTMztEcPuHIFNi87vwTfgE="; + hash = "sha256-Ow5RLu/r4sZt9nb/Py/GVznwB5lYYbCUNjAWqRJIDyk="; }; }; nativeNodePackages = opentuiCoreNative.packages; diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index a512c9340b..fde18c44fa 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -42,7 +42,7 @@ let hash = selectHashForSystem { aarch64-darwin = "sha256-gw/dj8hRRNIw4h8+EBfEcZA26Gad2HMxyGUF+x4UEGA="; aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; - x86_64-linux = "sha256-avKG+K9P879m77hZvtgwMGw5EC2wcTrwhfRPPd0TSU8="; + x86_64-linux = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; }; }; }; diff --git a/packages/@overeng/notion-md/nix/build.nix b/packages/@overeng/notion-md/nix/build.nix index d70b57a680..ff535d4a54 100644 --- a/packages/@overeng/notion-md/nix/build.nix +++ b/packages/@overeng/notion-md/nix/build.nix @@ -20,7 +20,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-eZBbASu2K2JK8nX545ZpnbqQTgOKKzjSGY/SMAqzBe8="; + hash = "sha256-RH0ct/MNRfjlE7xYRrNutsCGTlJXAa9tDUOs7ubKa5A="; }; }; smokeTestArgs = [ "--help" ]; From ef06e57fde86db38d6215944023389af7259d4c3 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:11:49 +0200 Subject: [PATCH 12/27] fix(nix): refresh genie deps hash --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5307296c04..ae70f06723 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ All notable changes to this project will be documented in this file. ### Changed +- **nix packages / @overeng/genie**: Refresh the `genie-unwrapped` + pnpm-deps fixed-output hash after the materialization profile rebase. + - **devenv deploy tasks / @overeng/ci-tools**: Centralize deploy-preview workflow-report and GitHub output emission in `ci-tools`, including provider-owned skip records, URL outputs, and task metadata, so generated CI From ab7f3c42e6f04a8599c8c1867a58a04fe1957bcb Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:25:42 +0200 Subject: [PATCH 13/27] fix: refresh generated labels --- .github/labels.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/labels.json b/.github/labels.json index cba6552c96..6ab7e28307 100644 --- a/.github/labels.json +++ b/.github/labels.json @@ -365,11 +365,6 @@ "color": "a371f7", "description": "@overeng/utils-dev package · Set: manual" }, - { - "name": "system:workflow-report", - "color": "a371f7", - "description": "@overeng/workflow-report package · Set: manual" - }, { "name": "type:agent-tooling", "color": "1f8fb8", From 2f7128dd4047fa6d7b43d76c527b3bb4b4bca479 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:28:32 +0200 Subject: [PATCH 14/27] fix(nix): refresh rebased CLI dependency hashes --- packages/@overeng/notion-cli/nix/build.nix | 2 +- packages/@overeng/tui-stories/nix/build.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index fde18c44fa..11e15707ed 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -40,7 +40,7 @@ let depsBuilds = { "." = { hash = selectHashForSystem { - aarch64-darwin = "sha256-gw/dj8hRRNIw4h8+EBfEcZA26Gad2HMxyGUF+x4UEGA="; + aarch64-darwin = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; x86_64-linux = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; }; diff --git a/packages/@overeng/tui-stories/nix/build.nix b/packages/@overeng/tui-stories/nix/build.nix index 456ad45789..8b26239463 100644 --- a/packages/@overeng/tui-stories/nix/build.nix +++ b/packages/@overeng/tui-stories/nix/build.nix @@ -21,7 +21,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-nxZD1VlJ8++2lCyGSMDFMoXjoGU0IoQuun6UV5vV/S0="; + hash = "sha256-ddVqtxnu0HiVa3GZer7QHUy7O2u9RCIh2mULBrjyJVg="; }; }; nativeNodePackages = opentuiCoreNative.packages; From 513b29d18cf6d7018bb97f431fdf1f3fb752fe65 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:33:21 +0200 Subject: [PATCH 15/27] fix(nix): refresh ci-tools dependency hash --- packages/@overeng/ci-tools/nix/build.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@overeng/ci-tools/nix/build.nix b/packages/@overeng/ci-tools/nix/build.nix index 7e8548aac8..a1a8b11c31 100644 --- a/packages/@overeng/ci-tools/nix/build.nix +++ b/packages/@overeng/ci-tools/nix/build.nix @@ -19,7 +19,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-FFE0uReC940BVcmn7F+raGQdDCxK6MYA7qxadDmXSVs="; + hash = "sha256-p7xhogkrANUceRkh/djVVrQ+qcgIm9FK2nd2EFFd7Z4="; }; }; smokeTestArgs = [ "--help" ]; From 3ec89969b3eb8608bdc802f89a2bb9ac021dcffd Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:40:27 +0200 Subject: [PATCH 16/27] fix(genie): keep packaged workflow imports pure --- .github/labels.json | 155 --- CHANGELOG.md | 5 + genie/ci-workflow/reporting.ts | 2 +- genie/deploy-preview/shared.ts | 2 +- packages/@overeng/ci-tools/package.json | 27 +- .../@overeng/ci-tools/package.json.genie.ts | 29 +- packages/@overeng/ci-tools/src/deploy-io.ts | 5 +- .../ci-tools/src/workflow-report-contract.ts | 36 + packages/@overeng/genie/nix/build.nix | 5 +- packages/@overeng/genie/package.json | 2 + packages/@overeng/genie/package.json.genie.ts | 3 +- packages/@overeng/genie/tsconfig.json | 3 + .../@overeng/genie/tsconfig.json.genie.ts | 1 + pnpm-lock.yaml | 1203 +++-------------- tsconfig.all.json.genie.ts | 2 +- 15 files changed, 298 insertions(+), 1182 deletions(-) create mode 100644 packages/@overeng/ci-tools/src/workflow-report-contract.ts diff --git a/.github/labels.json b/.github/labels.json index 6ab7e28307..0b02e1c457 100644 --- a/.github/labels.json +++ b/.github/labels.json @@ -205,166 +205,11 @@ "color": "6e7781", "description": "Needs classification or owner decision · Set: manual" }, - { - "name": "system:agent-session-ingest", - "color": "a371f7", - "description": "@overeng/agent-session-ingest package · Set: manual" - }, - { - "name": "system:ci-tools", - "color": "a371f7", - "description": "@overeng/ci-tools package · Set: manual" - }, - { - "name": "system:content-address", - "color": "a371f7", - "description": "@overeng/content-address package · Set: manual" - }, - { - "name": "system:effect-ai-claude-cli", - "color": "a371f7", - "description": "@overeng/effect-ai-claude-cli package · Set: manual" - }, - { - "name": "system:effect-path", - "color": "a371f7", - "description": "@overeng/effect-path package · Set: manual" - }, - { - "name": "system:effect-react", - "color": "a371f7", - "description": "@overeng/effect-react package · Set: manual" - }, - { - "name": "system:effect-rpc-tanstack", - "color": "a371f7", - "description": "@overeng/effect-rpc-tanstack package · Set: manual" - }, - { - "name": "system:effect-schema-form", - "color": "a371f7", - "description": "@overeng/effect-schema-form package · Set: manual" - }, - { - "name": "system:effect-schema-form-aria", - "color": "a371f7", - "description": "@overeng/effect-schema-form-aria package · Set: manual" - }, { "name": "system:genie", "color": "a371f7", "description": "@overeng/genie package · Set: manual" }, - { - "name": "system:kdl", - "color": "a371f7", - "description": "@overeng/kdl package · Set: manual" - }, - { - "name": "system:kdl-effect", - "color": "a371f7", - "description": "@overeng/kdl-effect package · Set: manual" - }, - { - "name": "system:megarepo", - "color": "a371f7", - "description": "@overeng/megarepo package · Set: manual" - }, - { - "name": "system:notion-cli", - "color": "a371f7", - "description": "@overeng/notion-cli package · Set: manual" - }, - { - "name": "system:notion-core", - "color": "a371f7", - "description": "@overeng/notion-core package · Set: manual" - }, - { - "name": "system:notion-datasource-sync", - "color": "a371f7", - "description": "@overeng/notion-datasource-sync package · Set: manual" - }, - { - "name": "system:notion-effect-client", - "color": "a371f7", - "description": "@overeng/notion-effect-client package · Set: manual" - }, - { - "name": "system:notion-effect-schema", - "color": "a371f7", - "description": "@overeng/notion-effect-schema package · Set: manual" - }, - { - "name": "system:notion-md", - "color": "a371f7", - "description": "@overeng/notion-md package · Set: manual" - }, - { - "name": "system:notion-property-write", - "color": "a371f7", - "description": "@overeng/notion-property-write package · Set: manual" - }, - { - "name": "system:notion-react", - "color": "a371f7", - "description": "@overeng/notion-react package · Set: manual" - }, - { - "name": "system:otel-contract", - "color": "a371f7", - "description": "@overeng/otel-contract package · Set: manual" - }, - { - "name": "system:otelite", - "color": "a371f7", - "description": "@overeng/otelite package · Set: manual" - }, - { - "name": "system:oxc-config", - "color": "a371f7", - "description": "@overeng/oxc-config package · Set: manual" - }, - { - "name": "system:pty-effect", - "color": "a371f7", - "description": "@overeng/pty-effect package · Set: manual" - }, - { - "name": "system:react-inspector", - "color": "a371f7", - "description": "@overeng/react-inspector package · Set: manual" - }, - { - "name": "system:restate-effect", - "color": "a371f7", - "description": "@overeng/restate-effect package · Set: manual" - }, - { - "name": "system:tui-core", - "color": "a371f7", - "description": "@overeng/tui-core package · Set: manual" - }, - { - "name": "system:tui-react", - "color": "a371f7", - "description": "@overeng/tui-react package · Set: manual" - }, - { - "name": "system:tui-stories", - "color": "a371f7", - "description": "@overeng/tui-stories package · Set: manual" - }, - { - "name": "system:utils", - "color": "a371f7", - "description": "@overeng/utils package · Set: manual" - }, - { - "name": "system:utils-dev", - "color": "a371f7", - "description": "@overeng/utils-dev package · Set: manual" - }, { "name": "type:agent-tooling", "color": "1f8fb8", diff --git a/CHANGELOG.md b/CHANGELOG.md index ae70f06723..6e9581727d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ All notable changes to this project will be documented in this file. ### Changed +- **@overeng/genie / @overeng/ci-tools**: Keep packaged Genie generation pure by + staging generated workflow imports through a dependency-free ci-tools + workflow-report contract, declaring ci-tools' runtime Effect closure + explicitly, and refreshing the managed Genie pnpm-deps hash. + - **nix packages / @overeng/genie**: Refresh the `genie-unwrapped` pnpm-deps fixed-output hash after the materialization profile rebase. diff --git a/genie/ci-workflow/reporting.ts b/genie/ci-workflow/reporting.ts index 85019b748c..fca2bb6f51 100644 --- a/genie/ci-workflow/reporting.ts +++ b/genie/ci-workflow/reporting.ts @@ -4,7 +4,7 @@ import { workflowReportManagedMarker, workflowReportRecordLineMarker, type WorkflowReportRecord, -} from '../../packages/@overeng/ci-tools/src/mod.ts' +} from '../../packages/@overeng/ci-tools/src/workflow-report-contract.ts' import { runDevenvTasksBefore, shellSingleQuote } from './shared.ts' type GitHubWorkflowStep = GitHubWorkflowArgs['jobs'][string]['steps'][number] diff --git a/genie/deploy-preview/shared.ts b/genie/deploy-preview/shared.ts index df32044a3c..9e7e4d5609 100644 --- a/genie/deploy-preview/shared.ts +++ b/genie/deploy-preview/shared.ts @@ -1,4 +1,4 @@ -import { workflowReportRecordLineMarker } from '../../packages/@overeng/ci-tools/src/mod.ts' +import { workflowReportRecordLineMarker } from '../../packages/@overeng/ci-tools/src/workflow-report-contract.ts' export const deployTargetEnvSuffix = (name: string) => name diff --git a/packages/@overeng/ci-tools/package.json b/packages/@overeng/ci-tools/package.json index 309f71c8b4..dc6d3c1286 100644 --- a/packages/@overeng/ci-tools/package.json +++ b/packages/@overeng/ci-tools/package.json @@ -18,13 +18,20 @@ } }, "dependencies": { - "@overeng/otel-contract": "workspace:^", - "@overeng/utils": "workspace:^" - }, - "devDependencies": { "@effect/cli": "0.75.2", + "@effect/cluster": "0.59.0", + "@effect/experimental": "0.60.0", + "@effect/opentelemetry": "0.63.0", "@effect/platform": "0.96.2", "@effect/platform-node": "0.107.0", + "@effect/rpc": "0.75.1", + "@effect/workflow": "0.18.2", + "@overeng/otel-contract": "workspace:^", + "@overeng/utils": "workspace:^", + "@playwright/test": "1.61.0", + "effect": "3.21.4" + }, + "devDependencies": { "@effect/vitest": "0.29.0", "@overeng/utils": "workspace:^", "@overeng/utils-dev": "workspace:^", @@ -33,18 +40,6 @@ "typescript": "6.0.3", "vitest": "4.1.9" }, - "peerDependencies": { - "@effect/cli": "^0.75.2", - "@effect/cluster": "^0.59.0", - "@effect/experimental": "^0.60.0", - "@effect/opentelemetry": "^0.63.0", - "@effect/platform": "^0.96.2", - "@effect/platform-node": "^0.107.0", - "@effect/rpc": "^0.75.1", - "@effect/workflow": "^0.18.2", - "@playwright/test": "^1.61.0", - "effect": "^3.21.4" - }, "$genie": { "source": "package.json.genie.ts", "warning": "DO NOT EDIT - changes will be overwritten", diff --git a/packages/@overeng/ci-tools/package.json.genie.ts b/packages/@overeng/ci-tools/package.json.genie.ts index 91881caf3a..a6532c7339 100644 --- a/packages/@overeng/ci-tools/package.json.genie.ts +++ b/packages/@overeng/ci-tools/package.json.genie.ts @@ -10,27 +10,28 @@ import otelContractPkg from '../otel-contract/package.json.genie.ts' import utilsDevPkg from '../utils-dev/package.json.genie.ts' import utilsPkg from '../utils/package.json.genie.ts' +const runtimeDepNames = [ + '@effect/cli', + '@effect/cluster', + '@effect/experimental', + '@effect/opentelemetry', + '@effect/platform', + '@effect/platform-node', + '@effect/rpc', + '@effect/workflow', + '@playwright/test', + 'effect', +] as const + const workspaceDeps = catalog.compose({ workspace: workspaceMember({ memberPath: 'packages/@overeng/ci-tools' }), dependencies: { workspace: [otelContractPkg, utilsPkg], + external: catalog.pick(...runtimeDepNames), }, devDependencies: { workspace: [utilsDevPkg, utilsPkg], - external: catalog.pick( - '@effect/cli', - '@effect/platform', - '@effect/platform-node', - '@effect/vitest', - '@types/bun', - '@types/node', - 'typescript', - 'vitest', - ), - }, - peerDependencies: { - workspace: [utilsPkg], - external: catalog.pick('@effect/cli'), + external: catalog.pick('@effect/vitest', '@types/bun', '@types/node', 'typescript', 'vitest'), }, }) diff --git a/packages/@overeng/ci-tools/src/deploy-io.ts b/packages/@overeng/ci-tools/src/deploy-io.ts index 4d47f01fd2..ede1214ebc 100644 --- a/packages/@overeng/ci-tools/src/deploy-io.ts +++ b/packages/@overeng/ci-tools/src/deploy-io.ts @@ -6,7 +6,10 @@ import { appendFileSync } from 'node:fs' import { Effect, Schema } from 'effect' import { type DeployResultV1, deployTaskOutputLine } from './deploy-domain.ts' -import { workflowReportRecordLineMarker, type WorkflowReportRecord } from './mod.ts' +import { + workflowReportRecordLineMarker, + type WorkflowReportRecord, +} from './workflow-report-contract.ts' const appendLine = (opts: { readonly path: string; readonly line: string }) => appendFileSync(opts.path, `${opts.line}\n`) diff --git a/packages/@overeng/ci-tools/src/workflow-report-contract.ts b/packages/@overeng/ci-tools/src/workflow-report-contract.ts new file mode 100644 index 0000000000..0a74924df4 --- /dev/null +++ b/packages/@overeng/ci-tools/src/workflow-report-contract.ts @@ -0,0 +1,36 @@ +/* oxlint-disable overeng/jsdoc-require-exports -- Dependency-free wire contract used by generated workflow code. */ + +export const workflowReportRecordLineMarker = 'WORKFLOW_REPORT_V1: ' as const +export const workflowReportManagedMarker = '' as const + +export type WorkflowReportStatus = 'success' | 'failure' | 'skipped' | 'neutral' + +export type WorkflowReportSubject = { + readonly id: string + readonly label?: string +} + +export type WorkflowReportLink = { + readonly label: string + readonly url: string + readonly primary?: boolean +} + +export type WorkflowReportRecord = { + readonly _tag: 'WorkflowReportRecord' + readonly schemaVersion: 1 + readonly id: string + readonly kind: string + readonly subject: WorkflowReportSubject + readonly status: WorkflowReportStatus + readonly title: string + readonly summary?: string + readonly createdAtUtc: string + readonly links?: readonly WorkflowReportLink[] + readonly data?: Readonly> +} + +export const encodeWorkflowReportRecordLine = ( + record: WorkflowReportRecord, + marker = workflowReportRecordLineMarker, +) => `${marker}${JSON.stringify(record)}` diff --git a/packages/@overeng/genie/nix/build.nix b/packages/@overeng/genie/nix/build.nix index 7a6e943f4d..7f4b28b492 100644 --- a/packages/@overeng/genie/nix/build.nix +++ b/packages/@overeng/genie/nix/build.nix @@ -17,6 +17,7 @@ let pnpm = import ../../../../nix/pnpm.nix { inherit pkgs; }; mkPnpmCli = import ../../../../nix/workspace-tools/lib/mk-pnpm-cli.nix { inherit pkgs pnpm; }; opentuiCoreNative = import ../../../../nix/opentui-core-native.nix { inherit pkgs; }; + mkSharedHash = hash: { inherit hash; }; unwrapped = mkPnpmCli { name = "genie-unwrapped"; entry = "packages/@overeng/genie/bin/genie.tsx"; @@ -25,9 +26,7 @@ let workspaceRoot = src; # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { - "." = { - hash = "sha256-u9RLpYbL6NDk9TSwhyPjq1WzK+PCbaTNeuaOj2MoWdc="; - }; + "." = mkSharedHash "sha256-YbA+4TfmTXDqTds0JHuiWNXASUFQB/H6n8OvoaR8Yz8="; }; nativeNodePackages = opentuiCoreNative.packages; inherit gitRev commitTs dirty; diff --git a/packages/@overeng/genie/package.json b/packages/@overeng/genie/package.json index 6d488d56ef..a48ff57fb9 100644 --- a/packages/@overeng/genie/package.json +++ b/packages/@overeng/genie/package.json @@ -38,6 +38,7 @@ "@effect/workflow": "0.18.2", "@opentui/core": "0.4.1", "@opentui/react": "0.4.1", + "@overeng/ci-tools": "workspace:^", "@overeng/otel-contract": "workspace:^", "@playwright/test": "1.61.0", "@storybook/react": "10.4.6", @@ -102,6 +103,7 @@ "source": "package.json.genie.ts", "warning": "DO NOT EDIT - changes will be overwritten", "workspaceClosureDirs": [ + "packages/@overeng/ci-tools", "packages/@overeng/genie", "packages/@overeng/otel-contract", "packages/@overeng/tui-core", diff --git a/packages/@overeng/genie/package.json.genie.ts b/packages/@overeng/genie/package.json.genie.ts index a5421cb3ec..e3f00bcd65 100644 --- a/packages/@overeng/genie/package.json.genie.ts +++ b/packages/@overeng/genie/package.json.genie.ts @@ -5,6 +5,7 @@ import { packageJson, privatePackageDefaults, } from '../../../genie/internal.ts' +import ciToolsPkg from '../ci-tools/package.json.genie.ts' import otelContractPkg from '../otel-contract/package.json.genie.ts' import tuiCorePkg from '../tui-core/package.json.genie.ts' import tuiReactPkg from '../tui-react/package.json.genie.ts' @@ -14,7 +15,7 @@ import utilsPkg from '../utils/package.json.genie.ts' const supportDeps = catalog.compose({ workspace: workspaceMember({ memberPath: 'packages/@overeng/genie' }), dependencies: { - workspace: [otelContractPkg], + workspace: [ciToolsPkg, otelContractPkg], external: catalog.pick('typescript'), }, devDependencies: { diff --git a/packages/@overeng/genie/tsconfig.json b/packages/@overeng/genie/tsconfig.json index ae32b471d1..a2b1820ecf 100644 --- a/packages/@overeng/genie/tsconfig.json +++ b/packages/@overeng/genie/tsconfig.json @@ -49,6 +49,9 @@ }, "include": ["src/**/*.ts", "src/**/*.tsx", "bin/**/*.ts", "bin/**/*.tsx"], "references": [ + { + "path": "../ci-tools" + }, { "path": "../otel-contract" }, diff --git a/packages/@overeng/genie/tsconfig.json.genie.ts b/packages/@overeng/genie/tsconfig.json.genie.ts index 1f8f16f29b..9ae9c14644 100644 --- a/packages/@overeng/genie/tsconfig.json.genie.ts +++ b/packages/@overeng/genie/tsconfig.json.genie.ts @@ -15,6 +15,7 @@ export default tsconfigJson({ }, include: ['src/**/*.ts', 'src/**/*.tsx', 'bin/**/*.ts', 'bin/**/*.tsx'], references: [ + { path: '../ci-tools' }, { path: '../otel-contract' }, { path: '../tui-core' }, { path: '../tui-react' }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ef78a796f..1c7e9802e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,7 +73,7 @@ importers: version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -88,24 +88,33 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/ci-tools: dependencies: + '@effect/cli': + specifier: 0.75.2 + version: 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/cluster': - specifier: ^0.59.0 + specifier: 0.59.0 version: 0.59.0(861aab2b2f519122eff8723f7fac38c9) '@effect/experimental': - specifier: ^0.60.0 + specifier: 0.60.0 version: 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) '@effect/opentelemetry': - specifier: ^0.63.0 + specifier: 0.63.0 version: 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) + '@effect/platform': + specifier: 0.96.2 + version: 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) + '@effect/platform-node': + specifier: 0.107.0 + version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/rpc': - specifier: ^0.75.1 + specifier: 0.75.1 version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/workflow': - specifier: ^0.18.2 + specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@overeng/otel-contract': specifier: workspace:^ @@ -114,24 +123,15 @@ importers: specifier: workspace:^ version: link:../utils '@playwright/test': - specifier: ^1.61.0 + specifier: 1.61.0 version: 1.61.0 effect: - specifier: ^3.21.4 + specifier: 3.21.4 version: 3.21.4 devDependencies: - '@effect/cli': - specifier: 0.75.2 - version: 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/platform': - specifier: 0.96.2 - version: 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': - specifier: 0.107.0 - version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -146,7 +146,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/content-address: dependencies: @@ -159,7 +159,7 @@ importers: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -171,7 +171,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-ai-claude-cli: devDependencies: @@ -183,7 +183,7 @@ importers: version: 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -195,10 +195,10 @@ importers: version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-path: devDependencies: @@ -210,7 +210,7 @@ importers: version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -225,7 +225,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-react: dependencies: @@ -238,10 +238,10 @@ importers: version: link:../utils '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -250,7 +250,7 @@ importers: version: 19.2.3(@types/react@19.2.17) '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) effect: specifier: 3.21.4 version: 3.21.4 @@ -265,16 +265,16 @@ importers: version: 19.2.7(react@19.2.7) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-rpc-tanstack: devDependencies: @@ -301,7 +301,7 @@ importers: version: 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-start': specifier: 1.168.26 - version: 1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -319,10 +319,10 @@ importers: version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-rpc-tanstack/examples/basic: dependencies: @@ -337,7 +337,7 @@ importers: version: 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-start': specifier: 1.168.26 - version: 1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) effect: specifier: 3.21.4 version: 3.21.4 @@ -356,7 +356,7 @@ importers: version: 1.61.0 '@tanstack/router-plugin': specifier: 1.168.18 - version: 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 @@ -368,13 +368,13 @@ importers: version: 19.2.3(@types/react@19.2.17) '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/effect-schema-form: devDependencies: @@ -392,7 +392,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/effect-schema-form-aria: dependencies: @@ -405,19 +405,19 @@ importers: version: link:../utils '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@tailwindcss/vite': specifier: 4.3.1 - version: 4.3.1(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.3.1(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/react': specifier: 19.2.17 version: 19.2.17 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) effect: specifier: 3.21.4 version: 3.21.4 @@ -432,7 +432,7 @@ importers: version: 19.2.7(react@19.2.7) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) tailwindcss: specifier: 4.3.1 version: 4.3.1 @@ -441,10 +441,10 @@ importers: version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/genie: dependencies: @@ -477,7 +477,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -487,6 +487,9 @@ importers: '@opentui/react': specifier: 0.4.1 version: 0.4.1(react-devtools-core@7.0.1)(react@19.2.7)(typescript@6.0.3)(web-tree-sitter@0.25.10)(ws@8.21.0) + '@overeng/ci-tools': + specifier: workspace:^ + version: link:../ci-tools '@overeng/otel-contract': specifier: workspace:^ version: link:../otel-contract @@ -495,7 +498,7 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -519,7 +522,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) dependenciesMeta: '@overeng/tui-react': injected: true @@ -544,7 +547,7 @@ importers: version: link:../utils-dev '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/bun': specifier: 1.3.14 version: 1.3.14 @@ -556,13 +559,13 @@ importers: version: 3.8.4 storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/kdl: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -577,7 +580,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/kdl-effect: dependencies: @@ -587,7 +590,7 @@ importers: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -602,7 +605,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/megarepo: dependencies: @@ -635,7 +638,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -668,7 +671,7 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -689,7 +692,7 @@ importers: version: 0.33.0(react@19.2.7) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) dependenciesMeta: '@overeng/tui-react': injected: true @@ -708,7 +711,7 @@ importers: version: link:../utils-dev '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/bun': specifier: 1.3.14 version: 1.3.14 @@ -717,7 +720,7 @@ importers: version: 26.0.0 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@xterm/addon-fit': specifier: 0.11.0 version: 0.11.0 @@ -726,13 +729,13 @@ importers: version: 6.0.0 storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/notion-cli: dependencies: @@ -765,7 +768,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -780,7 +783,7 @@ importers: version: link:../effect-path '@overeng/notion-datasource-sync': specifier: workspace:^ - version: file:packages/@overeng/notion-datasource-sync(8961a53a2c1167db99940b01d437ceb7) + version: link:../notion-datasource-sync '@overeng/notion-effect-client': specifier: workspace:^ version: link:../notion-effect-client @@ -807,7 +810,7 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -828,7 +831,7 @@ importers: version: 0.33.0(react@19.2.7) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) dependenciesMeta: '@overeng/tui-react': injected: true @@ -844,22 +847,22 @@ importers: version: link:../utils-dev '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/notion-core: devDependencies: @@ -874,7 +877,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/notion-datasource-sync: dependencies: @@ -901,7 +904,7 @@ importers: version: link:../otel-contract '@overeng/tui-react': specifier: workspace:^ - version: file:packages/@overeng/tui-react(42e014f16d8ff36142805d1f94ce3058) + version: link:../tui-react '@overeng/utils': specifier: workspace:^ version: link:../utils @@ -941,7 +944,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -956,7 +959,7 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@types/node': specifier: 26.0.0 version: 26.0.0 @@ -980,7 +983,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/notion-effect-client: dependencies: @@ -1004,7 +1007,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -1061,7 +1064,7 @@ importers: version: 5.1.0 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) devDependencies: '@overeng/utils-dev': specifier: workspace:^ @@ -1081,7 +1084,7 @@ importers: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -1096,7 +1099,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/notion-md: dependencies: @@ -1148,7 +1151,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -1163,10 +1166,10 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 @@ -1178,7 +1181,7 @@ importers: version: 0.33.0(@types/react@19.2.17) '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) effect: specifier: 3.21.4 version: 3.21.4 @@ -1193,16 +1196,16 @@ importers: version: 0.33.0(react@19.2.7) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/notion-property-write: dependencies: @@ -1212,7 +1215,7 @@ importers: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -1227,7 +1230,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/notion-react: dependencies: @@ -1251,7 +1254,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -1272,7 +1275,7 @@ importers: version: 3.21.4 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) devDependencies: '@opentelemetry/api': specifier: 1.9.1 @@ -1285,10 +1288,10 @@ importers: version: link:../utils-dev '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/katex': specifier: 0.16.8 version: 0.16.8 @@ -1321,13 +1324,13 @@ importers: version: 4.2.0 storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/otel-contract: devDependencies: @@ -1345,7 +1348,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/oxc-config: devDependencies: @@ -1372,7 +1375,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/pty-effect: dependencies: @@ -1385,7 +1388,7 @@ importers: devDependencies: '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@overeng/utils-dev': specifier: workspace:^ version: link:../utils-dev @@ -1400,10 +1403,10 @@ importers: version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/react-inspector: dependencies: @@ -1440,10 +1443,10 @@ importers: version: link:../utils '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@testing-library/react': specifier: 16.3.2 version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -1458,7 +1461,7 @@ importers: version: 19.2.17 '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) effect: specifier: 3.21.4 version: 3.21.4 @@ -1473,16 +1476,16 @@ importers: version: 19.2.7(react@19.2.7) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/restate-effect: dependencies: @@ -1522,7 +1525,7 @@ importers: version: 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@opentelemetry/api': specifier: 1.9.1 version: 1.9.1 @@ -1567,7 +1570,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/tui-core: devDependencies: @@ -1579,7 +1582,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages/@overeng/tui-react: dependencies: @@ -1603,7 +1606,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -1639,7 +1642,7 @@ importers: version: 8.2.1 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) yoga-layout: specifier: 3.2.1 version: 3.2.1 @@ -1664,10 +1667,10 @@ importers: version: link:../utils-dev '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 @@ -1679,7 +1682,7 @@ importers: version: 0.33.0(@types/react@19.2.17) '@vitejs/plugin-react': specifier: 6.0.2 - version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) react: specifier: 19.2.7 version: 19.2.7 @@ -1691,13 +1694,13 @@ importers: version: 0.33.0(react@19.2.7) storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/tui-stories: dependencies: @@ -1736,7 +1739,7 @@ importers: version: 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@effect/workflow': specifier: 0.18.2 version: 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) @@ -1760,7 +1763,7 @@ importers: version: 1.61.0 '@storybook/react': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) '@types/react': specifier: 19.2.17 version: 19.2.17 @@ -1781,7 +1784,7 @@ importers: version: 0.33.0(react@19.2.7) vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) dependenciesMeta: '@overeng/tui-react': injected: true @@ -1794,13 +1797,13 @@ importers: version: link:../utils-dev '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 @@ -1818,7 +1821,7 @@ importers: version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@noble/hashes': specifier: 2.2.0 version: 2.2.0 @@ -1839,7 +1842,7 @@ importers: version: 5.11.1 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) devDependencies: '@effect/cluster': specifier: 0.59.0 @@ -1882,19 +1885,19 @@ importers: version: 1.61.0 '@storybook/react-vite': specifier: 10.4.6 - version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@types/node': specifier: 26.0.0 version: 26.0.0 storybook: specifier: 10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) typescript: specifier: 6.0.3 version: 6.0.3 vite: specifier: 8.0.16 - version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) packages/@overeng/utils-dev: devDependencies: @@ -1909,7 +1912,7 @@ importers: version: 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) '@effect/vitest': specifier: 0.29.0 - version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + version: 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) '@types/node': specifier: 26.0.0 version: 26.0.0 @@ -1921,7 +1924,7 @@ importers: version: 6.0.3 vitest: specifier: 4.1.9 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) packages: @@ -1985,6 +1988,7 @@ packages: '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} + hasBin: true '@babel/runtime@7.29.2': resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} @@ -2435,6 +2439,7 @@ packages: '@myobie/pty@0.10.0': resolution: {integrity: sha512-G6DajVZUooexpzR5tcKkGLuea9NbiZ3gWPzVyNNFC3OcrJ68OAAvPW0U2vqcyf8Bvdrb075Zw5ISEQvqbOQ2Xg==} + hasBin: true '@napi-rs/wasm-runtime@1.1.5': resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} @@ -2576,92 +2581,6 @@ packages: react-devtools-core: ^7.0.1 ws: ^8.18.0 - '@overeng/content-address@file:packages/@overeng/content-address': - resolution: {directory: packages/@overeng/content-address, type: directory} - - '@overeng/notion-core@file:packages/@overeng/notion-core': - resolution: {directory: packages/@overeng/notion-core, type: directory} - - '@overeng/notion-datasource-sync@file:packages/@overeng/notion-datasource-sync': - resolution: {directory: packages/@overeng/notion-datasource-sync, type: directory} - engines: {node: '>=24.0.0'} - peerDependencies: - '@effect/cli': ^0.75.2 - '@effect/cluster': ^0.59.0 - '@effect/experimental': ^0.60.0 - '@effect/opentelemetry': ^0.63.0 - '@effect/platform': ^0.96.2 - '@effect/platform-node': ^0.107.0 - '@effect/rpc': ^0.75.1 - '@effect/workflow': ^0.18.2 - '@playwright/test': ^1.61.0 - effect: ^3.21.4 - - '@overeng/notion-effect-client@file:packages/@overeng/notion-effect-client': - resolution: {directory: packages/@overeng/notion-effect-client, type: directory} - - '@overeng/notion-effect-schema@file:packages/@overeng/notion-effect-schema': - resolution: {directory: packages/@overeng/notion-effect-schema, type: directory} - peerDependencies: - effect: ^3.21.4 - - '@overeng/notion-md@file:packages/@overeng/notion-md': - resolution: {directory: packages/@overeng/notion-md, type: directory} - peerDependencies: - '@effect/cli': ^0.75.2 - '@effect/cluster': ^0.59.0 - '@effect/experimental': ^0.60.0 - '@effect/opentelemetry': ^0.63.0 - '@effect/platform': ^0.96.2 - '@effect/platform-node': ^0.107.0 - '@effect/rpc': ^0.75.1 - '@effect/workflow': ^0.18.2 - '@playwright/test': ^1.61.0 - effect: ^3.21.4 - - '@overeng/notion-property-write@file:packages/@overeng/notion-property-write': - resolution: {directory: packages/@overeng/notion-property-write, type: directory} - peerDependencies: - effect: ^3.21.4 - - '@overeng/otel-contract@file:packages/@overeng/otel-contract': - resolution: {directory: packages/@overeng/otel-contract, type: directory} - peerDependencies: - effect: ^3.21.4 - - '@overeng/tui-core@file:packages/@overeng/tui-core': - resolution: {directory: packages/@overeng/tui-core, type: directory} - - '@overeng/tui-react@file:packages/@overeng/tui-react': - resolution: {directory: packages/@overeng/tui-react, type: directory} - peerDependencies: - '@effect-atom/atom': ^0.5.3 - '@effect-atom/atom-react': ^0.5.0 - '@effect/cli': ^0.75.2 - '@effect/platform-node': ^0.107.0 - '@opentui/core': ^0.4.1 - '@opentui/react': ^0.4.1 - '@storybook/react': ^10.4.6 - '@types/react': ^19.2.17 - '@types/react-reconciler': ^0.33.0 - effect: ^3.21.4 - react: ^19.2.7 - react-dom: ^19.2.7 - react-reconciler: ^0.33.0 - - '@overeng/utils@file:packages/@overeng/utils': - resolution: {directory: packages/@overeng/utils, type: directory} - peerDependencies: - '@effect/cluster': ^0.59.0 - '@effect/experimental': ^0.60.0 - '@effect/opentelemetry': ^0.63.0 - '@effect/platform': ^0.96.2 - '@effect/platform-node': ^0.107.0 - '@effect/rpc': ^0.75.1 - '@effect/workflow': ^0.18.2 - '@playwright/test': ^1.61.0 - effect: ^3.21.4 - '@oxc-parser/binding-android-arm-eabi@0.127.0': resolution: {integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3019,6 +2938,7 @@ packages: '@playwright/test@1.61.0': resolution: {integrity: sha512-cKA5B6lpFEMyMGjxF54QihfYpB4FkEGH+qZhtArDEG+wezQAJY8Pq6C7T1SjWz+FFzt3TbyoXBQYk/0292TdJA==} engines: {node: '>=18'} + hasBin: true '@preact/signals-core@1.14.1': resolution: {integrity: sha512-vxPpfXqrwUe9lpjqfYNjAF/0RF/eFGeLgdJzdmIIZjpOnTmGmAB4BjWone562mJGMRP4frU6iZ6ei3PDsu52Ng==} @@ -3151,144 +3071,6 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.60.2': - resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.60.2': - resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.60.2': - resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.60.2': - resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.60.2': - resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.60.2': - resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.60.2': - resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.60.2': - resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.60.2': - resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.60.2': - resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.60.2': - resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.60.2': - resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.60.2': - resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.60.2': - resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.60.2': - resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openbsd-x64@4.60.2': - resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.60.2': - resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.60.2': - resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.60.2': - resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.60.2': - resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.60.2': - resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} - cpu: [x64] - os: [win32] - '@shikijs/core@4.2.0': resolution: {integrity: sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==} engines: {node: '>=20'} @@ -3877,6 +3659,7 @@ packages: acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} + hasBin: true ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} @@ -3936,6 +3719,7 @@ packages: baseline-browser-mapping@2.10.21: resolution: {integrity: sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==} engines: {node: '>=6.0.0'} + hasBin: true brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} @@ -3944,6 +3728,7 @@ packages: browserslist@4.28.2: resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true buffer-image-size@0.6.4: resolution: {integrity: sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ==} @@ -4135,6 +3920,7 @@ packages: esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} + hasBin: true escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} @@ -4159,6 +3945,7 @@ packages: eslint@10.5.0: resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true peerDependencies: jiti: '*' peerDependenciesMeta: @@ -4172,6 +3959,7 @@ packages: esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} + hasBin: true esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} @@ -4269,9 +4057,6 @@ packages: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -4337,6 +4122,7 @@ packages: is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true is-dom@1.1.0: resolution: {integrity: sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==} @@ -4356,6 +4142,7 @@ packages: is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} + hasBin: true is-object@1.0.2: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} @@ -4380,16 +4167,19 @@ packages: jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} + hasBin: true json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -4403,9 +4193,11 @@ packages: json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} + hasBin: true katex@0.17.0: resolution: {integrity: sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw==} + hasBin: true keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4524,6 +4316,7 @@ packages: marked@17.0.1: resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==} engines: {node: '>= 20'} + hasBin: true mdast-util-from-markdown@2.0.3: resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} @@ -4624,6 +4417,7 @@ packages: mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} + hasBin: true min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -4645,6 +4439,7 @@ packages: msgpackr-extract@3.0.3: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true msgpackr@1.11.10: resolution: {integrity: sha512-iCZNq+HszvF+fC3anCm4nBmWEnbeIAfpDs6IStAEKhQ2YSgkjzVG2FF9XJqwwQh5bH3N9OUTUt4QwVN6MLMLtA==} @@ -4655,6 +4450,7 @@ packages: nanoid@3.3.13: resolution: {integrity: sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4664,6 +4460,7 @@ packages: node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true node-pty@1.1.0: resolution: {integrity: sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==} @@ -4698,6 +4495,7 @@ packages: oxlint-tsgolint@0.23.0: resolution: {integrity: sha512-3mBv3CoPbh8dFbzfDGIWa2ytZjn2v+3EX4aKRXjIhsoGFzG8GCjfRirz3rwZf1wYbZzsNLTSgpw8VjQuWdp/jA==} + hasBin: true p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -4757,6 +4555,7 @@ packages: prettier@3.8.4: resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} engines: {node: '>=14'} + hasBin: true pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} @@ -4854,20 +4653,14 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} + hasBin: true rolldown@1.0.3: resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==} engines: {node: ^20.19.0 || >=22.12.0} - - rollup@4.60.2: - resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true rou3@0.8.1: @@ -4882,10 +4675,12 @@ packages: semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} + hasBin: true seroval-plugins@1.5.4: resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} @@ -4942,6 +4737,7 @@ packages: srvx@0.11.16: resolution: {integrity: sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw==} engines: {node: '>=20.16.0'} + hasBin: true stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -4954,6 +4750,7 @@ packages: storybook@10.4.6: resolution: {integrity: sha512-6wkA6LxfDSSilloITsrFOJfsnw0mDUP2h8Ls+lRt8oRsudtz2RWFhLv+Toiwg6NW7hUpdTDc2hzR7DztJid6+A==} + hasBin: true peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 prettier: ^2 || ^3 @@ -5060,11 +4857,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} - engines: {node: '>=18.0.0'} - hasBin: true - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -5112,6 +4904,7 @@ packages: update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5136,6 +4929,7 @@ packages: vite@8.0.16: resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==} engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.1.18 @@ -5242,10 +5036,12 @@ packages: which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} + hasBin: true why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} + hasBin: true word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} @@ -5546,10 +5342,10 @@ snapshots: dependencies: effect: 3.21.4 - '@effect/vitest@0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))': + '@effect/vitest@0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))': dependencies: effect: 3.21.4 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@effect/workflow@0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4)': dependencies: @@ -5739,11 +5535,11 @@ snapshots: '@ioredis/commands@1.10.0': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) optionalDependencies: typescript: 6.0.3 @@ -5944,348 +5740,6 @@ snapshots: - typescript - web-tree-sitter - '@overeng/content-address@file:packages/@overeng/content-address': - dependencies: - '@noble/hashes': 2.2.0 - effect: 3.21.4 - - '@overeng/notion-core@file:packages/@overeng/notion-core': {} - - '@overeng/notion-datasource-sync@file:packages/@overeng/notion-datasource-sync(8961a53a2c1167db99940b01d437ceb7)': - dependencies: - '@effect/cli': 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@overeng/content-address': file:packages/@overeng/content-address - '@overeng/notion-core': file:packages/@overeng/notion-core - '@overeng/notion-effect-client': file:packages/@overeng/notion-effect-client(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(@types/node@26.0.0)(happy-dom@20.10.6)(ioredis@5.11.1)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@overeng/notion-effect-schema': file:packages/@overeng/notion-effect-schema(effect@3.21.4) - '@overeng/notion-md': file:packages/@overeng/notion-md(156d7d85520f823baaad6771d85132e3) - '@overeng/notion-property-write': file:packages/@overeng/notion-property-write(effect@3.21.4) - '@overeng/otel-contract': file:packages/@overeng/otel-contract(effect@3.21.4) - '@overeng/tui-react': file:packages/@overeng/tui-react(963b4abc7688066e8a39338d8dd489ad) - '@overeng/utils': file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4) - '@playwright/test': 1.61.0 - effect: 3.21.4 - react: 19.2.7 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@effect-atom/atom' - - '@effect-atom/atom-react' - - '@effect/sql' - - '@opentelemetry/api' - - '@opentelemetry/resources' - - '@opentelemetry/sdk-logs' - - '@opentelemetry/sdk-metrics' - - '@opentelemetry/sdk-trace-base' - - '@opentelemetry/sdk-trace-node' - - '@opentelemetry/sdk-trace-web' - - '@opentelemetry/semantic-conventions' - - '@opentui/core' - - '@opentui/react' - - '@storybook/react' - - '@types/node' - - '@types/react' - - '@types/react-reconciler' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - bufferutil - - happy-dom - - ioredis - - jsdom - - lmdb - - msw - - react-dom - - react-reconciler - - supports-color - - typescript - - utf-8-validate - - vite - - '@overeng/notion-effect-client@file:packages/@overeng/notion-effect-client(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(@types/node@26.0.0)(happy-dom@20.10.6)(ioredis@5.11.1)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/vitest': 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@overeng/content-address': file:packages/@overeng/content-address - '@overeng/notion-core': file:packages/@overeng/notion-core - '@overeng/notion-effect-schema': file:packages/@overeng/notion-effect-schema(effect@3.21.4) - '@overeng/otel-contract': file:packages/@overeng/otel-contract(effect@3.21.4) - '@overeng/utils': file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4) - '@playwright/test': 1.61.0 - effect: 3.21.4 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-task-list-item: 2.1.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - unist-util-visit: 5.1.0 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@effect/sql' - - '@opentelemetry/api' - - '@opentelemetry/resources' - - '@opentelemetry/sdk-logs' - - '@opentelemetry/sdk-metrics' - - '@opentelemetry/sdk-trace-base' - - '@opentelemetry/sdk-trace-node' - - '@opentelemetry/sdk-trace-web' - - '@opentelemetry/semantic-conventions' - - '@types/node' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - bufferutil - - happy-dom - - ioredis - - jsdom - - lmdb - - msw - - supports-color - - typescript - - utf-8-validate - - vite - - '@overeng/notion-effect-schema@file:packages/@overeng/notion-effect-schema(effect@3.21.4)': - dependencies: - '@overeng/notion-core': file:packages/@overeng/notion-core - effect: 3.21.4 - - '@overeng/notion-md@file:packages/@overeng/notion-md(156d7d85520f823baaad6771d85132e3)': - dependencies: - '@effect/cli': 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@overeng/content-address': file:packages/@overeng/content-address - '@overeng/notion-core': file:packages/@overeng/notion-core - '@overeng/notion-effect-client': file:packages/@overeng/notion-effect-client(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(@types/node@26.0.0)(happy-dom@20.10.6)(ioredis@5.11.1)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@overeng/notion-effect-schema': file:packages/@overeng/notion-effect-schema(effect@3.21.4) - '@overeng/notion-property-write': file:packages/@overeng/notion-property-write(effect@3.21.4) - '@overeng/otel-contract': file:packages/@overeng/otel-contract(effect@3.21.4) - '@overeng/utils': file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4) - '@playwright/test': 1.61.0 - effect: 3.21.4 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@effect/sql' - - '@opentelemetry/api' - - '@opentelemetry/resources' - - '@opentelemetry/sdk-logs' - - '@opentelemetry/sdk-metrics' - - '@opentelemetry/sdk-trace-base' - - '@opentelemetry/sdk-trace-node' - - '@opentelemetry/sdk-trace-web' - - '@opentelemetry/semantic-conventions' - - '@types/node' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - bufferutil - - happy-dom - - ioredis - - jsdom - - lmdb - - msw - - supports-color - - typescript - - utf-8-validate - - vite - - '@overeng/notion-property-write@file:packages/@overeng/notion-property-write(effect@3.21.4)': - dependencies: - '@overeng/notion-effect-schema': file:packages/@overeng/notion-effect-schema(effect@3.21.4) - effect: 3.21.4 - - '@overeng/otel-contract@file:packages/@overeng/otel-contract(effect@3.21.4)': - dependencies: - effect: 3.21.4 - - '@overeng/tui-core@file:packages/@overeng/tui-core': {} - - '@overeng/tui-react@file:packages/@overeng/tui-react(42e014f16d8ff36142805d1f94ce3058)': - dependencies: - '@effect-atom/atom': 0.5.3(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect-atom/atom-react': 0.5.0(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4)(react@19.2.7)(scheduler@0.27.0) - '@effect/cli': 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/vitest': 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@opentui/core': 0.4.1(typescript@6.0.3)(web-tree-sitter@0.25.10) - '@opentui/react': 0.4.1(react-devtools-core@7.0.1)(react@19.2.7)(typescript@6.0.3)(web-tree-sitter@0.25.10)(ws@8.21.0) - '@overeng/tui-core': file:packages/@overeng/tui-core - '@overeng/utils': file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4) - '@playwright/test': 1.61.0 - '@storybook/react': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) - '@types/react': 19.2.17 - '@types/react-reconciler': 0.33.0(@types/react@19.2.17) - '@xterm/addon-fit': 0.11.0 - '@xterm/addon-webgl': 0.19.0 - '@xterm/headless': 6.0.0 - '@xterm/xterm': 6.0.0 - cli-truncate: 6.0.0 - effect: 3.21.4 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-reconciler: 0.33.0(react@19.2.7) - string-width: 8.2.1 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - yoga-layout: 3.2.1 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@effect/sql' - - '@opentelemetry/api' - - '@opentelemetry/resources' - - '@opentelemetry/sdk-logs' - - '@opentelemetry/sdk-metrics' - - '@opentelemetry/sdk-trace-base' - - '@opentelemetry/sdk-trace-node' - - '@opentelemetry/sdk-trace-web' - - '@opentelemetry/semantic-conventions' - - '@types/node' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - happy-dom - - ioredis - - jsdom - - lmdb - - msw - - supports-color - - typescript - - vite - - '@overeng/tui-react@file:packages/@overeng/tui-react(963b4abc7688066e8a39338d8dd489ad)': - dependencies: - '@effect-atom/atom': 0.5.3(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect-atom/atom-react': 0.5.0(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4)(react@19.2.7)(scheduler@0.27.0) - '@effect/cli': 0.75.2(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/printer-ansi@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(@effect/printer@0.49.0(@effect/typeclass@0.40.0(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/vitest': 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@opentui/core': 0.4.1(typescript@6.0.3)(web-tree-sitter@0.25.10) - '@opentui/react': 0.4.1(react-devtools-core@7.0.1)(react@19.2.7)(typescript@6.0.3)(web-tree-sitter@0.25.10)(ws@8.21.0) - '@overeng/tui-core': file:packages/@overeng/tui-core - '@overeng/utils': file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4) - '@playwright/test': 1.61.0 - '@storybook/react': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) - '@types/react': 19.2.17 - '@types/react-reconciler': 0.33.0(@types/react@19.2.17) - '@xterm/addon-fit': 0.11.0 - '@xterm/addon-webgl': 0.19.0 - '@xterm/headless': 6.0.0 - '@xterm/xterm': 6.0.0 - cli-truncate: 6.0.0 - effect: 3.21.4 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - react-reconciler: 0.33.0(react@19.2.7) - string-width: 8.2.1 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - yoga-layout: 3.2.1 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@effect/sql' - - '@opentelemetry/api' - - '@opentelemetry/resources' - - '@opentelemetry/sdk-logs' - - '@opentelemetry/sdk-metrics' - - '@opentelemetry/sdk-trace-base' - - '@opentelemetry/sdk-trace-node' - - '@opentelemetry/sdk-trace-web' - - '@opentelemetry/semantic-conventions' - - '@types/node' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - happy-dom - - ioredis - - jsdom - - lmdb - - msw - - supports-color - - typescript - - vite - - '@overeng/utils@file:packages/@overeng/utils(d3fbded9548a79913cb43ce3b598dbe4)': - dependencies: - '@effect/cluster': 0.59.0(861aab2b2f519122eff8723f7fac38c9) - '@effect/experimental': 0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1) - '@effect/opentelemetry': 0.63.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.219.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-web@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)(effect@3.21.4) - '@effect/platform': 0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4) - '@effect/platform-node': 0.107.0(@effect/cluster@0.59.0(861aab2b2f519122eff8723f7fac38c9))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@effect/rpc': 0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4) - '@effect/vitest': 0.29.0(effect@3.21.4)(vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) - '@effect/workflow': 0.18.2(@effect/experimental@0.60.0(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4)(ioredis@5.11.1))(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(@effect/rpc@0.75.1(@effect/platform@0.96.2(patch_hash=08d6466db56675b7a32a3a3c64815a5b784f583b310b6758471a97d3db6edd32)(effect@3.21.4))(effect@3.21.4))(effect@3.21.4) - '@noble/hashes': 2.2.0 - '@opentelemetry/api': 1.9.1 - '@overeng/otel-contract': file:packages/@overeng/otel-contract(effect@3.21.4) - '@playwright/test': 1.61.0 - effect: 3.21.4 - effect-distributed-lock: 0.0.11(patch_hash=a365d5c8857e3a421ea3b83b6be483433a5a75b344072aa68c4c984b14ec5a0b)(effect@3.21.4)(ioredis@5.11.1)(typescript@6.0.3) - ioredis: 5.11.1 - vitest: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@types/node' - - '@vitest/browser-playwright' - - '@vitest/browser-preview' - - '@vitest/browser-webdriverio' - - '@vitest/coverage-istanbul' - - '@vitest/coverage-v8' - - '@vitest/ui' - - happy-dom - - jsdom - - msw - - supports-color - - typescript - - vite - '@oxc-parser/binding-android-arm-eabi@0.127.0': optional: true @@ -6570,88 +6024,11 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@rollup/pluginutils@5.3.0(rollup@4.60.2)': + '@rollup/pluginutils@5.3.0': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.4 - optionalDependencies: - rollup: 4.60.2 - - '@rollup/rollup-android-arm-eabi@4.60.2': - optional: true - - '@rollup/rollup-android-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-x64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.60.2': - optional: true - - '@rollup/rollup-openbsd-x64@4.60.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.60.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.60.2': - optional: true '@shikijs/core@4.2.0': dependencies: @@ -6695,44 +6072,24 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/builder-vite@10.4.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - ts-dedent: 2.2.0 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - esbuild - - rollup - - webpack - - '@storybook/builder-vite@10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@storybook/builder-vite@10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: - '@storybook/csf-plugin': 10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@storybook/csf-plugin': 10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) ts-dedent: 2.2.0 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.4.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - unplugin: 2.3.11 - optionalDependencies: - esbuild: 0.27.7 - rollup: 4.60.2 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) - - '@storybook/csf-plugin@10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@storybook/csf-plugin@10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.7 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) '@storybook/global@5.0.0': {} @@ -6741,39 +6098,30 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - '@storybook/react-dom-shim@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))': - dependencies: - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) - - '@storybook/react-dom-shim@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))': + '@storybook/react-dom-shim@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))': dependencies: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@storybook/react-vite@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@storybook/react-vite@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.60.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@storybook/react': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) + '@rollup/pluginutils': 5.3.0 + '@storybook/builder-vite': 10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) + '@storybook/react': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3) empathic: 2.0.0 magic-string: 0.30.21 react: 19.2.7 react-docgen: 8.0.3 react-dom: 19.2.7(react@19.2.7) resolve: 1.22.12 - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) tsconfig-paths: 4.2.0 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -6783,55 +6131,15 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.60.2) - '@storybook/builder-vite': 10.4.6(esbuild@0.27.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@storybook/react': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3) - empathic: 2.0.0 - magic-string: 0.30.21 - react: 19.2.7 - react-docgen: 8.0.3 - react-dom: 19.2.7(react@19.2.7) - resolve: 1.22.12 - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - tsconfig-paths: 4.2.0 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - esbuild - - rollup - - supports-color - - typescript - - webpack - - '@storybook/react@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) - react: 19.2.7 - react-docgen: 8.0.3 - react-docgen-typescript: 2.4.0(typescript@6.0.3) - react-dom: 19.2.7(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@storybook/react@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)': + '@storybook/react@10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))) + '@storybook/react-dom-shim': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))) react: 19.2.7 react-docgen: 8.0.3 react-docgen-typescript: 2.4.0(typescript@6.0.3) react-dom: 19.2.7(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) @@ -6904,12 +6212,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.1 '@tailwindcss/oxide-win32-x64-msvc': 4.3.1 - '@tailwindcss/vite@4.3.1(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.3.1(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.3.1 '@tailwindcss/oxide': 4.3.1 tailwindcss: 4.3.1 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) '@tanstack/history@1.162.0': {} @@ -6930,14 +6238,14 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - '@tanstack/react-start-rsc@0.1.25(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@tanstack/react-start-rsc@0.1.25(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@tanstack/react-router': 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.13 '@tanstack/router-utils': 1.162.2 '@tanstack/start-client-core': 1.170.12 '@tanstack/start-fn-stubs': 1.162.0 - '@tanstack/start-plugin-core': 1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@tanstack/start-plugin-core': 1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@tanstack/start-server-core': 1.169.15 '@tanstack/start-storage-context': 1.167.15 pathe: 2.0.3 @@ -6961,21 +6269,21 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@tanstack/react-start@1.168.26(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@tanstack/react-router': 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-start-client': 1.168.14(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@tanstack/react-start-rsc': 0.1.25(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@tanstack/react-start-rsc': 0.1.25(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@tanstack/react-start-server': 1.167.20(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-utils': 1.162.2 '@tanstack/start-client-core': 1.170.12 - '@tanstack/start-plugin-core': 1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@tanstack/start-plugin-core': 1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@tanstack/start-server-core': 1.169.15 pathe: 2.0.3 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) optionalDependencies: - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) transitivePeerDependencies: - '@rspack/core' - crossws @@ -7011,7 +6319,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@tanstack/router-plugin@1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/template': 7.28.6 @@ -7024,7 +6332,7 @@ snapshots: zod: 4.4.3 optionalDependencies: '@tanstack/react-router': 1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -7050,14 +6358,14 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@tanstack/start-plugin-core@1.171.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 '@babel/types': 7.29.0 '@tanstack/router-core': 1.171.13 '@tanstack/router-generator': 1.167.17 - '@tanstack/router-plugin': 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@tanstack/router-plugin': 1.168.18(@tanstack/react-router@1.170.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@tanstack/router-utils': 1.162.2 '@tanstack/start-server-core': 1.169.15 exsolve: 1.0.8 @@ -7069,11 +6377,11 @@ snapshots: srvx: 0.11.16 tinyglobby: 0.2.17 ufo: 1.6.3 - vitefu: 1.1.3(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + vitefu: 1.1.3(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) xmlbuilder2: 4.0.3 zod: 4.4.3 optionalDependencies: - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) transitivePeerDependencies: - '@tanstack/react-router' - crossws @@ -7310,10 +6618,10 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.2(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) '@vitest/expect@3.2.4': dependencies: @@ -7332,13 +6640,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -7760,11 +7068,6 @@ snapshots: get-east-asian-width@1.5.0: {} - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - optional: true - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -8533,9 +7836,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - resolve-pkg-maps@1.0.0: - optional: true - resolve@1.22.12: dependencies: es-errors: 1.3.0 @@ -8564,38 +7864,6 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.3 '@rolldown/binding-win32-x64-msvc': 1.0.3 - rollup@4.60.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.2 - '@rollup/rollup-android-arm64': 4.60.2 - '@rollup/rollup-darwin-arm64': 4.60.2 - '@rollup/rollup-darwin-x64': 4.60.2 - '@rollup/rollup-freebsd-arm64': 4.60.2 - '@rollup/rollup-freebsd-x64': 4.60.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.2 - '@rollup/rollup-linux-arm-musleabihf': 4.60.2 - '@rollup/rollup-linux-arm64-gnu': 4.60.2 - '@rollup/rollup-linux-arm64-musl': 4.60.2 - '@rollup/rollup-linux-loong64-gnu': 4.60.2 - '@rollup/rollup-linux-loong64-musl': 4.60.2 - '@rollup/rollup-linux-ppc64-gnu': 4.60.2 - '@rollup/rollup-linux-ppc64-musl': 4.60.2 - '@rollup/rollup-linux-riscv64-gnu': 4.60.2 - '@rollup/rollup-linux-riscv64-musl': 4.60.2 - '@rollup/rollup-linux-s390x-gnu': 4.60.2 - '@rollup/rollup-linux-x64-gnu': 4.60.2 - '@rollup/rollup-linux-x64-musl': 4.60.2 - '@rollup/rollup-openbsd-x64': 4.60.2 - '@rollup/rollup-openharmony-arm64': 4.60.2 - '@rollup/rollup-win32-arm64-msvc': 4.60.2 - '@rollup/rollup-win32-ia32-msvc': 4.60.2 - '@rollup/rollup-win32-x64-gnu': 4.60.2 - '@rollup/rollup-win32-x64-msvc': 4.60.2 - fsevents: 2.3.3 - optional: true - rou3@0.8.1: {} run-applescript@7.1.0: {} @@ -8656,45 +7924,11 @@ snapshots: std-env@4.1.0: {} - storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - '@storybook/global': 5.0.0 - '@storybook/icons': 2.0.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@storybook/react-vite': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.60.2)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) - '@testing-library/jest-dom': 6.9.1 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/expect': 3.2.4 - '@vitest/spy': 3.2.4 - '@webcontainer/env': 1.1.1 - esbuild: 0.27.7 - open: 10.2.0 - oxc-parser: 0.127.0 - oxc-resolver: 11.21.3 - recast: 0.23.11 - semver: 7.7.4 - use-sync-external-store: 1.6.0(react@19.2.7) - ws: 8.21.0 - optionalDependencies: - '@types/react': 19.2.17 - prettier: 3.8.4 - transitivePeerDependencies: - - '@testing-library/dom' - - '@types/react-dom' - - bufferutil - - react - - react-dom - - rollup - - supports-color - - typescript - - utf-8-validate - - vite - - webpack - - storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)): + storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@storybook/react-vite': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@storybook/react-vite': 10.4.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.27.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(prettier@3.8.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)))(typescript@6.0.3)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 @@ -8799,14 +8033,6 @@ snapshots: tslib@2.8.1: {} - tsx@4.21.0: - dependencies: - esbuild: 0.27.7 - get-tsconfig: 4.14.0 - optionalDependencies: - fsevents: 2.3.3 - optional: true - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -8891,7 +8117,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -8903,17 +8129,16 @@ snapshots: esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.7.0 - tsx: 4.21.0 yaml: 2.8.3 - vitefu@1.1.3(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)): + vitefu@1.1.3(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)): optionalDependencies: - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) - vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.9(@opentelemetry/api@1.9.1)(@types/node@26.0.0)(happy-dom@20.10.6)(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.9(vite@8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.9 '@vitest/runner': 4.1.9 '@vitest/snapshot': 4.1.9 @@ -8930,7 +8155,7 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.16(@types/node@26.0.0)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 diff --git a/tsconfig.all.json.genie.ts b/tsconfig.all.json.genie.ts index a693c52781..0686311e03 100644 --- a/tsconfig.all.json.genie.ts +++ b/tsconfig.all.json.genie.ts @@ -1,6 +1,6 @@ import { rootWorkspacePackages } from './package.json.genie.ts' import type { TSConfigArgs } from './packages/@overeng/genie/src/runtime/mod.ts' -import { tsconfigJsonFromPackages } from './packages/@overeng/genie/src/runtime/node/mod.ts' +import { tsconfigJsonFromPackages } from './packages/@overeng/genie/src/runtime/node/tsconfig-from-packages.ts' // This file is meant for convenience to built all TS projects in the workspace at once export default tsconfigJsonFromPackages({ From 02c742e07201d66793959711f0925d2c75a43fa4 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:46:51 +0200 Subject: [PATCH 17/27] fix(ci-tools): refresh packaged deps hash --- CHANGELOG.md | 2 +- packages/@overeng/ci-tools/nix/build.nix | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e9581727d..943d3121bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ All notable changes to this project will be documented in this file. - **@overeng/genie / @overeng/ci-tools**: Keep packaged Genie generation pure by staging generated workflow imports through a dependency-free ci-tools workflow-report contract, declaring ci-tools' runtime Effect closure - explicitly, and refreshing the managed Genie pnpm-deps hash. + explicitly, and refreshing the managed Genie and ci-tools pnpm-deps hashes. - **nix packages / @overeng/genie**: Refresh the `genie-unwrapped` pnpm-deps fixed-output hash after the materialization profile rebase. diff --git a/packages/@overeng/ci-tools/nix/build.nix b/packages/@overeng/ci-tools/nix/build.nix index a1a8b11c31..e96b116dc6 100644 --- a/packages/@overeng/ci-tools/nix/build.nix +++ b/packages/@overeng/ci-tools/nix/build.nix @@ -10,6 +10,7 @@ let pnpm = import ../../../../nix/pnpm.nix { inherit pkgs; }; mkPnpmCli = import ../../../../nix/workspace-tools/lib/mk-pnpm-cli.nix { inherit pkgs pnpm; }; + mkSharedHash = hash: { inherit hash; }; unwrapped = mkPnpmCli { name = "ci-tools-unwrapped"; entry = "packages/@overeng/ci-tools/bin/ci-tools.ts"; @@ -18,9 +19,7 @@ let workspaceRoot = src; # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { - "." = { - hash = "sha256-p7xhogkrANUceRkh/djVVrQ+qcgIm9FK2nd2EFFd7Z4="; - }; + "." = mkSharedHash "sha256-ml8L2f2d9p112XAhn+87z9gKQHJSeItWLreP8sdHFSU="; }; smokeTestArgs = [ "--help" ]; inherit gitRev commitTs dirty; From 21992019e2df56c76b9103afd74a6a6cff9628d5 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:58:00 +0200 Subject: [PATCH 18/27] fix(pnpm-cli): retain workspace source inputs --- nix/workspace-tools/lib/mk-pnpm-cli.nix | 107 +++++++++++++----------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/nix/workspace-tools/lib/mk-pnpm-cli.nix b/nix/workspace-tools/lib/mk-pnpm-cli.nix index 45d63b21ca..95dc529a89 100644 --- a/nix/workspace-tools/lib/mk-pnpm-cli.nix +++ b/nix/workspace-tools/lib/mk-pnpm-cli.nix @@ -352,23 +352,33 @@ let normalizeSourceRoot = prefix: sourceRoot: + let + normalizedName = lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix); + in if isDerivationOutput sourceRoot then - coerceSourceRoot sourceRoot + pkgs.runCommand normalizedName { src = sourceRoot; } '' + mkdir -p "$out" + cp -R "$src"/. "$out"/ + '' else let rawPath = coerceSourceRoot sourceRoot; - normalizedName = lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix); - sanitizedPath = builtins.path { - path = rawPath; - filter = sourcePathFilter; - name = normalizedName; - }; + sanitizedPath = + if builtins.isAttrs sourceRoot && sourceRoot ? outPath then + sourceRoot + else + builtins.path { + path = rawPath; + filter = sourcePathFilter; + name = normalizedName; + }; in pkgs.runCommand normalizedName { inherit sanitizedPath; } '' mkdir -p "$out" cp -R "$sanitizedPath"/. "$out"/ ''; + normalizedWorkspaceRoot = normalizeSourceRoot "." workspaceRoot; workspaceSourceRawRoots = lib.mapAttrs (_: coerceSourceRoot) workspaceSources; workspaceSourceIsDerivationOutput = lib.mapAttrs (_: isDerivationOutput) workspaceSources; workspaceSourceRoots = lib.mapAttrs normalizeSourceRoot workspaceSources; @@ -376,6 +386,13 @@ let left: right: lib.stringLength left < lib.stringLength right ) (builtins.attrNames workspaceSourceRoots); workspaceSourcePrefixesByLengthDesc = lib.reverseList workspaceSourcePrefixesByLengthAsc; + workspaceSourceCaptureAttrs = { + workspace_source_root = workspaceRoot; + } + // lib.mapAttrs' ( + prefix: sourceRoot: + lib.nameValuePair "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" sourceRoot + ) workspaceSources; hasInstallRoot = sourceRoot: @@ -393,7 +410,7 @@ let relPath == candidate || lib.hasPrefix "${candidate}/" relPath; prefix = lib.findFirst matchesPrefix null workspaceSourcePrefixesByLengthDesc; sourceRoot = if prefix == null then workspaceRootPath else workspaceSourceRawRoots.${prefix}; - fullSourceRoot = if prefix == null then workspaceRootPath else workspaceSourceRoots.${prefix}; + fullSourceRoot = if prefix == null then normalizedWorkspaceRoot else workspaceSourceRoots.${prefix}; evalSourceRoot = if prefix == null then evalWorkspaceRootPath @@ -459,41 +476,29 @@ let in if sourceRelPath == "." then sourceRoot else sourceRoot + "/${sourceRelPath}"; - snapshotPath = - namePrefix: path: - let - snapshotName = lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] namePrefix); - sanitizedPath = builtins.path { - path = path; - filter = sourcePathFilter; - name = snapshotName; - }; - in - pkgs.runCommand snapshotName { inherit sanitizedPath; } '' - cp "$sanitizedPath" "$out" - ''; - absoluteFileSourcePathFor = relPath: let resolved = resolveSourceFor relPath; rawPath = if resolved.sourceRelPath == "." then - resolved.sourceRoot + resolved.fullSourceRoot else - resolved.sourceRoot + "/${resolved.sourceRelPath}"; + resolved.fullSourceRoot + "/${resolved.sourceRelPath}"; in - if resolved.sourceIsDerivationOutput then rawPath else snapshotPath relPath rawPath; + rawPath; absoluteDirectorySourcePathFor = relPath: let resolved = resolveSourceFor relPath; + rawPath = + if resolved.sourceRelPath == "." then + resolved.fullSourceRoot + else + resolved.fullSourceRoot + "/${resolved.sourceRelPath}"; in - if resolved.sourceRelPath == "." then - resolved.fullSourceRoot - else - resolved.fullSourceRoot + "/${resolved.sourceRelPath}"; + rawPath; # Read workspace closure dirs from the generated package.json ($genie.workspaceClosureDirs). # Pre-computed by genie at generation time, avoiding import-from-derivation (IFD). @@ -910,8 +915,8 @@ let srcPath = absoluteDirectorySourcePathFor relPath; in '' - ${mkdirOutParentCmd relPath} - cp -R ${lib.escapeShellArg (toString srcPath)} "$out/${builtins.dirOf relPath}/" + mkdir -p "$out/${relPath}" + cp -R ${lib.escapeShellArg (toString srcPath)}/. "$out/${relPath}/" chmod -R +w "$out/${relPath}" ''; @@ -1072,7 +1077,7 @@ let # not delegated to nested install roots. It still stages external install-root # manifests so the aggregate lockfile can resolve linked workspace packages # against the exact member set that will exist in the final composed build. - rootDepsSrc = pkgs.runCommand "${name}-pnpm-deps-src" { } ( + rootDepsSrc = pkgs.runCommand "${name}-pnpm-deps-src" workspaceSourceCaptureAttrs ( '' set -euo pipefail mkdir -p "$out" @@ -1099,23 +1104,25 @@ let externalInstallRootDeps = map ( root: let - depsSrc = pkgs.runCommand "${installRootDepsDerivationName root}-pnpm-deps-src" { } ( - '' - set -euo pipefail - mkdir -p "$out" - '' - + stageExternalInstallRootManifestOnlyCmd root - + copyResolvedPatchFilesCmd { - sourcePrefix = ""; - workspaceYamlContent = rootPnpmWorkspaceYaml; - targetPrefix = "${root.installDir}/.root-patches"; - } - + '' - mkdir -p "$out/.root-patch-authority" - cp ${lib.escapeShellArg (toString (absoluteFileSourcePathFor "pnpm-lock.yaml"))} "$out/.root-patch-authority/pnpm-lock.yaml" - cp ${lib.escapeShellArg (toString (absoluteFileSourcePathFor "pnpm-workspace.yaml"))} "$out/.root-patch-authority/pnpm-workspace.yaml" - '' - ); + depsSrc = + pkgs.runCommand "${installRootDepsDerivationName root}-pnpm-deps-src" workspaceSourceCaptureAttrs + ( + '' + set -euo pipefail + mkdir -p "$out" + '' + + stageExternalInstallRootManifestOnlyCmd root + + copyResolvedPatchFilesCmd { + sourcePrefix = ""; + workspaceYamlContent = rootPnpmWorkspaceYaml; + targetPrefix = "${root.installDir}/.root-patches"; + } + + '' + mkdir -p "$out/.root-patch-authority" + cp ${lib.escapeShellArg (toString (absoluteFileSourcePathFor "pnpm-lock.yaml"))} "$out/.root-patch-authority/pnpm-lock.yaml" + cp ${lib.escapeShellArg (toString (absoluteFileSourcePathFor "pnpm-workspace.yaml"))} "$out/.root-patch-authority/pnpm-workspace.yaml" + '' + ); lockfilePath = installRootScopedPath root.installDir "pnpm-lock.yaml"; depsBuild = pnpmDepsHelper.mkDeps { name = installRootDepsDerivationName root; @@ -1248,7 +1255,7 @@ let nameSuffix, manifestOnly, }: - pkgs.runCommand "${name}-${nameSuffix}" { } ( + pkgs.runCommand "${name}-${nameSuffix}" workspaceSourceCaptureAttrs ( '' set -euo pipefail mkdir -p "$out" From 58dc9b721fc6b560c09b5316be50af4fe8acd43e Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:59:22 +0200 Subject: [PATCH 19/27] fix(nix): refresh oxc config deps hash --- nix/oxc-config-plugin.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/oxc-config-plugin.nix b/nix/oxc-config-plugin.nix index 74e6f55e9c..5a55c1b24f 100644 --- a/nix/oxc-config-plugin.nix +++ b/nix/oxc-config-plugin.nix @@ -29,7 +29,7 @@ let pnpm = pinnedPnpm; }; packageDir = "packages/@overeng/oxc-config"; - pnpmDepsHash = "sha256-smjBMhHz8iUOJi4KxdaKZaeqvAO89BROOtju4lpSAoM="; + pnpmDepsHash = "sha256-UFm4HJvzuIHQftUehJ1zNHtoLvFewi992v8NTeP3x0o="; srcPath = if builtins.isAttrs src && builtins.hasAttr "outPath" src then From a1db00a98e93373906bf578b4ba1a9030a9a1373 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:59:28 +0200 Subject: [PATCH 20/27] fix(pnpm-cli): retain workspace source inputs --- nix/workspace-tools/lib/mk-pnpm-cli.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/nix/workspace-tools/lib/mk-pnpm-cli.nix b/nix/workspace-tools/lib/mk-pnpm-cli.nix index 95dc529a89..de62ab7f88 100644 --- a/nix/workspace-tools/lib/mk-pnpm-cli.nix +++ b/nix/workspace-tools/lib/mk-pnpm-cli.nix @@ -386,13 +386,16 @@ let left: right: lib.stringLength left < lib.stringLength right ) (builtins.attrNames workspaceSourceRoots); workspaceSourcePrefixesByLengthDesc = lib.reverseList workspaceSourcePrefixesByLengthAsc; - workspaceSourceCaptureAttrs = { - workspace_source_root = workspaceRoot; - } - // lib.mapAttrs' ( - prefix: sourceRoot: - lib.nameValuePair "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" sourceRoot - ) workspaceSources; + workspaceSourceCaptureAttrs = + { + workspace_source_root = workspaceRoot; + } + // lib.mapAttrs' ( + prefix: sourceRoot: + lib.nameValuePair + "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" + sourceRoot + ) workspaceSources; hasInstallRoot = sourceRoot: From 9ebb4e30ddbc1ccdede4d3902c9a8763ed382d73 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:00:56 +0200 Subject: [PATCH 21/27] fix(nix): refresh megarepo deps hash --- packages/@overeng/megarepo/nix/build.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/@overeng/megarepo/nix/build.nix b/packages/@overeng/megarepo/nix/build.nix index b2fccda376..d2ee9ead46 100644 --- a/packages/@overeng/megarepo/nix/build.nix +++ b/packages/@overeng/megarepo/nix/build.nix @@ -15,6 +15,7 @@ let pnpm = import ../../../../nix/pnpm.nix { inherit pkgs; }; mkPnpmCli = import ../../../../nix/workspace-tools/lib/mk-pnpm-cli.nix { inherit pkgs pnpm; }; opentuiCoreNative = import ../../../../nix/opentui-core-native.nix { inherit pkgs; }; + mkSharedHash = hash: { inherit hash; }; base = mkPnpmCli { name = "megarepo"; entry = "packages/@overeng/megarepo/bin/mr.ts"; @@ -23,9 +24,7 @@ let workspaceRoot = src; # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { - "." = { - hash = "sha256-Ow5RLu/r4sZt9nb/Py/GVznwB5lYYbCUNjAWqRJIDyk="; - }; + "." = mkSharedHash "sha256-vIkg1O2i3HBRZzlKfdk03+yFRTLpXxtQV6jXYFM9YOQ="; }; nativeNodePackages = opentuiCoreNative.packages; smokeTestArgs = [ "--help" ]; From d646d4a477372c69212b0ddeb672d1061bd95386 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:01:43 +0200 Subject: [PATCH 22/27] style(pnpm-cli): format source capture attrs --- nix/workspace-tools/lib/mk-pnpm-cli.nix | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/nix/workspace-tools/lib/mk-pnpm-cli.nix b/nix/workspace-tools/lib/mk-pnpm-cli.nix index de62ab7f88..95dc529a89 100644 --- a/nix/workspace-tools/lib/mk-pnpm-cli.nix +++ b/nix/workspace-tools/lib/mk-pnpm-cli.nix @@ -386,16 +386,13 @@ let left: right: lib.stringLength left < lib.stringLength right ) (builtins.attrNames workspaceSourceRoots); workspaceSourcePrefixesByLengthDesc = lib.reverseList workspaceSourcePrefixesByLengthAsc; - workspaceSourceCaptureAttrs = - { - workspace_source_root = workspaceRoot; - } - // lib.mapAttrs' ( - prefix: sourceRoot: - lib.nameValuePair - "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" - sourceRoot - ) workspaceSources; + workspaceSourceCaptureAttrs = { + workspace_source_root = workspaceRoot; + } + // lib.mapAttrs' ( + prefix: sourceRoot: + lib.nameValuePair "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" sourceRoot + ) workspaceSources; hasInstallRoot = sourceRoot: From 5e0f78092ac2d2989ca70a56253060d4da908c1f Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:02:28 +0200 Subject: [PATCH 23/27] style(pnpm-cli): format source capture attrs --- nix/workspace-tools/lib/mk-pnpm-cli.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/nix/workspace-tools/lib/mk-pnpm-cli.nix b/nix/workspace-tools/lib/mk-pnpm-cli.nix index 95dc529a89..de62ab7f88 100644 --- a/nix/workspace-tools/lib/mk-pnpm-cli.nix +++ b/nix/workspace-tools/lib/mk-pnpm-cli.nix @@ -386,13 +386,16 @@ let left: right: lib.stringLength left < lib.stringLength right ) (builtins.attrNames workspaceSourceRoots); workspaceSourcePrefixesByLengthDesc = lib.reverseList workspaceSourcePrefixesByLengthAsc; - workspaceSourceCaptureAttrs = { - workspace_source_root = workspaceRoot; - } - // lib.mapAttrs' ( - prefix: sourceRoot: - lib.nameValuePair "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" sourceRoot - ) workspaceSources; + workspaceSourceCaptureAttrs = + { + workspace_source_root = workspaceRoot; + } + // lib.mapAttrs' ( + prefix: sourceRoot: + lib.nameValuePair + "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" + sourceRoot + ) workspaceSources; hasInstallRoot = sourceRoot: From e8abdbc771885b299657c2582e4eba0ff0ac93e2 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:45:18 +0200 Subject: [PATCH 24/27] docs: record workspace source input fix --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 943d3121bb..997b14cdb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ All notable changes to this project will be documented in this file. workflow-report contract, declaring ci-tools' runtime Effect closure explicitly, and refreshing the managed Genie and ci-tools pnpm-deps hashes. +- **nix workspace tools / mk-pnpm-cli**: Preserve external workspace source + roots as sandbox inputs for full workspace materialization, so downstream + flake consumers can build CLIs whose install roots copy packages from an + effect-utils flake input. + - **nix packages / @overeng/genie**: Refresh the `genie-unwrapped` pnpm-deps fixed-output hash after the materialization profile rebase. From 07821119220b3a9339a76b02d32fb3c90f19451e Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:55:18 +0200 Subject: [PATCH 25/27] fix(nix): preserve downstream workspace source inputs --- .github/labels.json | 155 ++++++++++++++++++ CHANGELOG.md | 3 +- genie/ci-workflow/reporting.ts | 8 +- packages/@overeng/ci-tools/src/mod.ts | 9 +- .../ci-tools/src/workflow-report-contract.ts | 9 +- .../ci-tools/src/workflow-report.test.ts | 4 +- packages/@overeng/notion-cli/nix/build.nix | 2 +- packages/@overeng/tui-stories/nix/build.nix | 2 +- 8 files changed, 177 insertions(+), 15 deletions(-) diff --git a/.github/labels.json b/.github/labels.json index 0b02e1c457..6ab7e28307 100644 --- a/.github/labels.json +++ b/.github/labels.json @@ -205,11 +205,166 @@ "color": "6e7781", "description": "Needs classification or owner decision · Set: manual" }, + { + "name": "system:agent-session-ingest", + "color": "a371f7", + "description": "@overeng/agent-session-ingest package · Set: manual" + }, + { + "name": "system:ci-tools", + "color": "a371f7", + "description": "@overeng/ci-tools package · Set: manual" + }, + { + "name": "system:content-address", + "color": "a371f7", + "description": "@overeng/content-address package · Set: manual" + }, + { + "name": "system:effect-ai-claude-cli", + "color": "a371f7", + "description": "@overeng/effect-ai-claude-cli package · Set: manual" + }, + { + "name": "system:effect-path", + "color": "a371f7", + "description": "@overeng/effect-path package · Set: manual" + }, + { + "name": "system:effect-react", + "color": "a371f7", + "description": "@overeng/effect-react package · Set: manual" + }, + { + "name": "system:effect-rpc-tanstack", + "color": "a371f7", + "description": "@overeng/effect-rpc-tanstack package · Set: manual" + }, + { + "name": "system:effect-schema-form", + "color": "a371f7", + "description": "@overeng/effect-schema-form package · Set: manual" + }, + { + "name": "system:effect-schema-form-aria", + "color": "a371f7", + "description": "@overeng/effect-schema-form-aria package · Set: manual" + }, { "name": "system:genie", "color": "a371f7", "description": "@overeng/genie package · Set: manual" }, + { + "name": "system:kdl", + "color": "a371f7", + "description": "@overeng/kdl package · Set: manual" + }, + { + "name": "system:kdl-effect", + "color": "a371f7", + "description": "@overeng/kdl-effect package · Set: manual" + }, + { + "name": "system:megarepo", + "color": "a371f7", + "description": "@overeng/megarepo package · Set: manual" + }, + { + "name": "system:notion-cli", + "color": "a371f7", + "description": "@overeng/notion-cli package · Set: manual" + }, + { + "name": "system:notion-core", + "color": "a371f7", + "description": "@overeng/notion-core package · Set: manual" + }, + { + "name": "system:notion-datasource-sync", + "color": "a371f7", + "description": "@overeng/notion-datasource-sync package · Set: manual" + }, + { + "name": "system:notion-effect-client", + "color": "a371f7", + "description": "@overeng/notion-effect-client package · Set: manual" + }, + { + "name": "system:notion-effect-schema", + "color": "a371f7", + "description": "@overeng/notion-effect-schema package · Set: manual" + }, + { + "name": "system:notion-md", + "color": "a371f7", + "description": "@overeng/notion-md package · Set: manual" + }, + { + "name": "system:notion-property-write", + "color": "a371f7", + "description": "@overeng/notion-property-write package · Set: manual" + }, + { + "name": "system:notion-react", + "color": "a371f7", + "description": "@overeng/notion-react package · Set: manual" + }, + { + "name": "system:otel-contract", + "color": "a371f7", + "description": "@overeng/otel-contract package · Set: manual" + }, + { + "name": "system:otelite", + "color": "a371f7", + "description": "@overeng/otelite package · Set: manual" + }, + { + "name": "system:oxc-config", + "color": "a371f7", + "description": "@overeng/oxc-config package · Set: manual" + }, + { + "name": "system:pty-effect", + "color": "a371f7", + "description": "@overeng/pty-effect package · Set: manual" + }, + { + "name": "system:react-inspector", + "color": "a371f7", + "description": "@overeng/react-inspector package · Set: manual" + }, + { + "name": "system:restate-effect", + "color": "a371f7", + "description": "@overeng/restate-effect package · Set: manual" + }, + { + "name": "system:tui-core", + "color": "a371f7", + "description": "@overeng/tui-core package · Set: manual" + }, + { + "name": "system:tui-react", + "color": "a371f7", + "description": "@overeng/tui-react package · Set: manual" + }, + { + "name": "system:tui-stories", + "color": "a371f7", + "description": "@overeng/tui-stories package · Set: manual" + }, + { + "name": "system:utils", + "color": "a371f7", + "description": "@overeng/utils package · Set: manual" + }, + { + "name": "system:utils-dev", + "color": "a371f7", + "description": "@overeng/utils-dev package · Set: manual" + }, { "name": "type:agent-tooling", "color": "1f8fb8", diff --git a/CHANGELOG.md b/CHANGELOG.md index 997b14cdb7..dd3b38da32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ All notable changes to this project will be documented in this file. - **nix workspace tools / mk-pnpm-cli**: Preserve external workspace source roots as sandbox inputs for full workspace materialization, so downstream flake consumers can build CLIs whose install roots copy packages from an - effect-utils flake input. + effect-utils flake input; refresh the affected Notion CLI and oxlint + plugin dependency hashes after the source-input repair. - **nix packages / @overeng/genie**: Refresh the `genie-unwrapped` pnpm-deps fixed-output hash after the materialization profile rebase. diff --git a/genie/ci-workflow/reporting.ts b/genie/ci-workflow/reporting.ts index fca2bb6f51..588a4a3213 100644 --- a/genie/ci-workflow/reporting.ts +++ b/genie/ci-workflow/reporting.ts @@ -60,10 +60,10 @@ export type WorkflowReportCommentBodyStepOptions = { export const workflowReportProducerStep = ( opts: WorkflowReportProducerStepOptions, ): GitHubWorkflowStep => { - const line = encodeWorkflowReportRecordLine( - opts.record, - opts.marker ?? workflowReportRecordLineMarker, - ) + const line = encodeWorkflowReportRecordLine({ + record: opts.record, + marker: opts.marker ?? workflowReportRecordLineMarker, + }) const outputPath = opts.outputPath return { diff --git a/packages/@overeng/ci-tools/src/mod.ts b/packages/@overeng/ci-tools/src/mod.ts index 161640c158..c206abc571 100644 --- a/packages/@overeng/ci-tools/src/mod.ts +++ b/packages/@overeng/ci-tools/src/mod.ts @@ -444,10 +444,13 @@ export type ParsedWorkflowReportJsonl = { readonly ignoredLineCount: number } -export const encodeWorkflowReportRecordLine = ( - record: WorkflowReportRecord, +export const encodeWorkflowReportRecordLine = ({ + record, marker = workflowReportRecordLineMarker, -) => `${marker}${encodeWorkflowReportRecordJson(record)}` +}: { + readonly record: WorkflowReportRecord + readonly marker?: string +}) => `${marker}${encodeWorkflowReportRecordJson(record)}` export const parseMarkedWorkflowReportJsonl = ( source: string, diff --git a/packages/@overeng/ci-tools/src/workflow-report-contract.ts b/packages/@overeng/ci-tools/src/workflow-report-contract.ts index 0a74924df4..6a7dc45c85 100644 --- a/packages/@overeng/ci-tools/src/workflow-report-contract.ts +++ b/packages/@overeng/ci-tools/src/workflow-report-contract.ts @@ -30,7 +30,10 @@ export type WorkflowReportRecord = { readonly data?: Readonly> } -export const encodeWorkflowReportRecordLine = ( - record: WorkflowReportRecord, +export const encodeWorkflowReportRecordLine = ({ + record, marker = workflowReportRecordLineMarker, -) => `${marker}${JSON.stringify(record)}` +}: { + readonly record: WorkflowReportRecord + readonly marker?: string +}) => `${marker}${JSON.stringify(record)}` diff --git a/packages/@overeng/ci-tools/src/workflow-report.test.ts b/packages/@overeng/ci-tools/src/workflow-report.test.ts index a4bc27473d..317c5b61e6 100644 --- a/packages/@overeng/ci-tools/src/workflow-report.test.ts +++ b/packages/@overeng/ci-tools/src/workflow-report.test.ts @@ -73,7 +73,7 @@ describe('workflow reporting schemas', () => { collectWorkflowReportBundle({ bundleId: 'deploy-preview', generatedAtUtc: '2026-05-31T15:01:00Z', - sources: ['plain output', encodeWorkflowReportRecordLine(sampleRecord)], + sources: ['plain output', encodeWorkflowReportRecordLine({ record: sampleRecord })], }), ).toEqual({ _tag: 'WorkflowReportBundle', @@ -89,7 +89,7 @@ describe('marked workflow report JSONL parsing', () => { it('ignores unmarked output and decodes only marked JSON records', () => { const source = [ 'regular deploy output', - encodeWorkflowReportRecordLine(sampleRecord), + encodeWorkflowReportRecordLine({ record: sampleRecord }), 'Vercel deploy URL: https://unstructured.example', ].join('\n') diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index 11e15707ed..9b9cf78a3d 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -42,7 +42,7 @@ let hash = selectHashForSystem { aarch64-darwin = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; - x86_64-linux = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; + x86_64-linux = "sha256-ouJfbBUII19nKhH7WC7GPr8/rM0RRTkcliMhSIVs53U="; }; }; }; diff --git a/packages/@overeng/tui-stories/nix/build.nix b/packages/@overeng/tui-stories/nix/build.nix index 8b26239463..9ad8725266 100644 --- a/packages/@overeng/tui-stories/nix/build.nix +++ b/packages/@overeng/tui-stories/nix/build.nix @@ -21,7 +21,7 @@ let # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { "." = { - hash = "sha256-ddVqtxnu0HiVa3GZer7QHUy7O2u9RCIh2mULBrjyJVg="; + hash = "sha256-j1AwMc1Mo36WG83EOgqBp7LwNf+OuBNHnweH/qHBYsw="; }; }; nativeNodePackages = opentuiCoreNative.packages; From f25309b5c3c4527c2103fb710dad13f2be05c642 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:09:02 +0200 Subject: [PATCH 26/27] style(pnpm-cli): format source capture attrs --- nix/workspace-tools/lib/mk-pnpm-cli.nix | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/nix/workspace-tools/lib/mk-pnpm-cli.nix b/nix/workspace-tools/lib/mk-pnpm-cli.nix index de62ab7f88..95dc529a89 100644 --- a/nix/workspace-tools/lib/mk-pnpm-cli.nix +++ b/nix/workspace-tools/lib/mk-pnpm-cli.nix @@ -386,16 +386,13 @@ let left: right: lib.stringLength left < lib.stringLength right ) (builtins.attrNames workspaceSourceRoots); workspaceSourcePrefixesByLengthDesc = lib.reverseList workspaceSourcePrefixesByLengthAsc; - workspaceSourceCaptureAttrs = - { - workspace_source_root = workspaceRoot; - } - // lib.mapAttrs' ( - prefix: sourceRoot: - lib.nameValuePair - "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" - sourceRoot - ) workspaceSources; + workspaceSourceCaptureAttrs = { + workspace_source_root = workspaceRoot; + } + // lib.mapAttrs' ( + prefix: sourceRoot: + lib.nameValuePair "workspace_source_${lib.strings.sanitizeDerivationName (lib.replaceStrings [ "/" ] [ "-" ] prefix)}" sourceRoot + ) workspaceSources; hasInstallRoot = sourceRoot: From 0afb1c71dfd932221e43b01e3eaf1462a6366e79 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Wed, 1 Jul 2026 17:25:43 +0200 Subject: [PATCH 27/27] fix(nix): refresh notion pnpm dependency hashes --- packages/@overeng/notion-cli/nix/build.nix | 2 +- packages/@overeng/notion-md/nix/build.nix | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/@overeng/notion-cli/nix/build.nix b/packages/@overeng/notion-cli/nix/build.nix index 9b9cf78a3d..c9b3d2afd2 100644 --- a/packages/@overeng/notion-cli/nix/build.nix +++ b/packages/@overeng/notion-cli/nix/build.nix @@ -40,7 +40,7 @@ let depsBuilds = { "." = { hash = selectHashForSystem { - aarch64-darwin = "sha256-/Fho7Vj38qsmunkllmVEaIHp0oIlYg01aVo3PMn1+yo="; + aarch64-darwin = "sha256-ouJfbBUII19nKhH7WC7GPr8/rM0RRTkcliMhSIVs53U="; aarch64-linux = "sha256-Ox+FChLtOlgYkNVZX7oJDuruiRYpElH+bOzBmsbn1uk="; x86_64-linux = "sha256-ouJfbBUII19nKhH7WC7GPr8/rM0RRTkcliMhSIVs53U="; }; diff --git a/packages/@overeng/notion-md/nix/build.nix b/packages/@overeng/notion-md/nix/build.nix index ff535d4a54..2e06b9b1bd 100644 --- a/packages/@overeng/notion-md/nix/build.nix +++ b/packages/@overeng/notion-md/nix/build.nix @@ -11,6 +11,7 @@ let pnpm = import ../../../../nix/pnpm.nix { inherit pkgs; }; mkPnpmCli = import ../../../../nix/workspace-tools/lib/mk-pnpm-cli.nix { inherit pkgs pnpm; }; + mkSharedHash = hash: { inherit hash; }; unwrapped = mkPnpmCli { name = "notion-md-unwrapped"; entry = "packages/@overeng/notion-md/src/cli.ts"; @@ -19,9 +20,7 @@ let workspaceRoot = src; # Managed by the repo FOD refresh workflow — do not edit manually. depsBuilds = { - "." = { - hash = "sha256-RH0ct/MNRfjlE7xYRrNutsCGTlJXAa9tDUOs7ubKa5A="; - }; + "." = mkSharedHash "sha256-UHKg5zUU0rdqiHOu1DAbH1cwDmr/S96ANYB0MlxyJBg="; }; smokeTestArgs = [ "--help" ]; inherit gitRev commitTs dirty;