diff --git a/.claude/settings.2026-04-04T18-04-45Z.bak.json b/.claude/settings.2026-04-04T18-04-45Z.bak.json new file mode 100644 index 0000000..cd037e9 --- /dev/null +++ b/.claude/settings.2026-04-04T18-04-45Z.bak.json @@ -0,0 +1,433 @@ +{ + "hooks": { + "SessionStart": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/sessionstart.notify-permissions", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet roles boot --repo .this --role any --if-present", + "timeout": 60, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet roles boot --repo ehmpathy --role mechanic", + "timeout": 60, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhx route.drive --mode hook", + "timeout": 5, + "author": "repo=bhrain/role=driver" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo bhuild --role behaver --init claude.hooks/sessionstart.boot-behavior", + "timeout": 10, + "author": "repo=bhuild/role=behaver" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet roles boot --repo ehmpathy --role architect", + "timeout": 60, + "author": "repo=ehmpathy/role=architect" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet roles boot --repo ehmpathy --role ergonomist", + "timeout": 60, + "author": "repo=ehmpathy/role=ergonomist" + } + ] + } + ], + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-stderr-redirect", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.check-permissions", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-suspicious-shell-syntax", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + } + ] + }, + { + "matcher": "Write|Edit", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhx route.bounce --mode hook", + "timeout": 5, + "author": "repo=bhrain/role=driver" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-terms.gerunds", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-terms.blocklist", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + } + ] + }, + { + "matcher": "Read|Write|Edit|Bash", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhx route.mutate.guard --mode hook", + "timeout": 5, + "author": "repo=bhrain/role=driver" + } + ] + }, + { + "matcher": "EnterPlanMode", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-planmode", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + } + ] + }, + { + "matcher": "WebFetch", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/posttooluse.guardBorder.onWebfetch", + "timeout": 60, + "author": "repo=ehmpathy/role=mechanic" + } + ] + } + ], + "Stop": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhx route.drive --mode hook", + "timeout": 5, + "author": "repo=bhrain/role=driver" + }, + { + "type": "command", + "command": "pnpm run --if-present fix", + "timeout": 30, + "author": "repo=ehmpathy/role=mechanic" + } + ] + } + ] + }, + "permissions": { + "allow": [ + "Write(.agent/.notes/**)", + "Edit(.agent/.notes/**)", + "Write(.route/**)", + "Edit(.route/**)", + "Write(**/.test/**)", + "Edit(**/.test/**)", + "mcp__ide__getDiagnostics", + "WebSearch", + "WebFetch", + "Bash(ls:*)", + "Bash(tree:*)", + "Bash(cat:*)", + "Bash(head:*)", + "Bash(tail:*)", + "Bash(grep:*)", + "Bash(wc:*)", + "Bash(diff:*)", + "Bash(which:*)", + "Bash(file:*)", + "Bash(mkdir:*)", + "Bash(pwd)", + "Bash(jq)", + "Bash(echo:*)", + "Bash(printf:*)", + "Bash(git mv:*)", + "Bash(git rm:*)", + "Bash(git log:*)", + "Bash(git status:*)", + "Bash(git diff:*)", + "Bash(git show:*)", + "Bash(git check-ignore:*)", + "Bash(git blame:*)", + "Bash(git describe:*)", + "Bash(git ls-files:*)", + "Bash(git ls-tree:*)", + "Bash(git cat-file:*)", + "Bash(npx rhachet run --skill git.release:*)", + "Bash(rhx git.release:*)", + "Bash(npx rhachet run --skill sedreplace:*)", + "Bash(npx rhachet run --skill sedreplace --old 'oldName' --new 'newName' --glob 'src/**/*.ts')", + "Bash(npx rhachet run --skill sedreplace --old 'oldName' --new 'newName' --glob 'src/**/*.ts' --mode apply)", + "Bash(npx rhachet run --skill cpsafe:*)", + "Bash(npx rhachet run --skill mvsafe:*)", + "Bash(npx rhachet run --skill rmsafe:*)", + "Bash(npx rhachet run --skill teesafe:*)", + "Bash(rhx teesafe:*)", + "Bash(cmd | npx rhachet run --skill teesafe file.txt)", + "Bash(cmd | rhx teesafe file.txt)", + "Bash(cmd | rhx teesafe --into file.txt --append)", + "Bash(npx rhachet run --skill symlink:*)", + "Bash(npx rhachet run --skill git.commit.uses:*)", + "Bash(npx rhachet run --skill git.commit.uses get)", + "Bash(npx rhachet run --skill git.commit.bind:*)", + "Bash(npx rhachet run --skill git.commit.bind get)", + "Bash(npx rhachet run --skill git.commit.set:*)", + "Bash(echo $MESSAGE | npx rhachet run --skill git.commit.set -m @stdin)", + "Bash(echo $MESSAGE | npx rhachet run --skill git.commit.set -m @stdin --mode apply)", + "Bash(echo $MESSAGE | npx rhachet run --skill git.commit.set -m @stdin --mode apply --push)", + "Bash(echo $MESSAGE | npx rhachet run --skill git.commit.set -m @stdin --unstaged ignore)", + "Bash(echo $MESSAGE | npx rhachet run --skill git.commit.set -m @stdin --unstaged include)", + "Bash(rhx git.commit.set:*)", + "Bash(echo $MESSAGE | rhx git.commit.set -m @stdin)", + "Bash(echo $MESSAGE | rhx git.commit.set -m @stdin --mode apply)", + "Bash(echo $MESSAGE | rhx git.commit.set -m @stdin --mode apply --push)", + "Bash(echo $MESSAGE | rhx git.commit.set -m @stdin --unstaged ignore)", + "Bash(echo $MESSAGE | rhx git.commit.set -m @stdin --unstaged include)", + "Bash(npx rhachet run --skill git.commit.push:*)", + "Bash(npx rhachet run --skill git.stage.add:*)", + "Bash(npx rhachet run --skill git.stage.add src/file1.ts src/file2.ts)", + "Bash(npx rhachet run --skill git.stage.add --glob 'src/**/*.ts')", + "Bash(rhx git.stage.add:*)", + "Bash(rhx git.stage.add src/file1.ts src/file2.ts)", + "Bash(rhx git.stage.add --glob 'src/**/*.ts')", + "Bash(npx rhachet run --skill git.branch.rebase:*)", + "Bash(rhx git.branch.rebase:*)", + "Bash(npx rhachet run --skill git.branch.rebase begin)", + "Bash(npx rhachet run --skill git.branch.rebase begin --mode apply)", + "Bash(rhx git.branch.rebase begin)", + "Bash(rhx git.branch.rebase begin --mode apply)", + "Bash(rhx git.branch.rebase continue)", + "Bash(rhx git.branch.rebase abort)", + "Bash(rhx git.branch.rebase take:*)", + "Bash(rhx git.branch.rebase take --whos theirs pnpm-lock.yaml)", + "Bash(rhx git.branch.rebase take --whos ours .eslintrc.json)", + "Bash(rhx git.branch.rebase take --whos theirs .)", + "Bash(npx rhachet run --skill git.repo.get:*)", + "Bash(rhx git.repo.get:*)", + "Bash(rhx git.repo.get repos --repos 'ehmpathy/*')", + "Bash(rhx git.repo.get files --in ehmpathy/domain-objects)", + "Bash(rhx git.repo.get lines --in ehmpathy/domain-objects --words 'DomainEntity')", + "Bash(rhx git.repo.get lines --in ehmpathy/domain-objects --paths 'src/index.ts')", + "Bash(rhx git.repo.get files --repos 'ehmpathy/*' --words 'DomainEntity')", + "Bash(rhx keyrack unlock --owner ehmpath --prikey ~/.ssh/ehmpath --env all)", + "Bash(npx rhx keyrack unlock --owner ehmpath --prikey ~/.ssh/ehmpath --env all)", + "Bash(npx rhachet run --skill show.gh.action.logs:*)", + "Bash(npx rhachet run --skill show.gh.test.errors:*)", + "Bash(npx rhachet run --skill show.gh.test.errors --scope test-integration)", + "Bash(npx rhachet run --skill get.package.docs:*)", + "Bash(npx rhachet run --skill get.package.docs readme --of iso-price)", + "Bash(npx rhachet run --skill get.package.docs filetree --of iso-price)", + "Bash(npx rhachet run --skill condense:*)", + "Bash(npx rhachet run --skill condense --from briefs/rule.md)", + "Bash(npx rhachet run --skill condense --from briefs/rule.md --mode plan)", + "Bash(npx rhachet run --skill condense --from briefs/rule.md --mode apply)", + "Bash(npx rhachet run --skill condense --from briefs/rule.md --onVerify restore)", + "Bash(npx rhachet run --skill condense --from 'briefs/**/*.md' --mode apply)", + "Bash(npx rhachet run --skill set.package.install:*)", + "Bash(rhx set.package.install:*)", + "Bash(echo $REASON | npx rhachet run --skill set.package.install --package zod --at 3.22.4 --for prod --reason @stdin)", + "Bash(npx rhachet run --skill set.package.install --package zod --at 3.22.4 --for prod --reason 'runtime validation')", + "Bash(npx rhachet run --skill set.package.upgrade:*)", + "Bash(rhx set.package.upgrade:*)", + "Bash(npx rhachet run --skill set.package.upgrade --package zod --to 3.23.0)", + "Bash(npx rhachet run --skill set.package.upgrade --package zod --to @latest)", + "Bash(npx rhachet run:*)", + "Bash(npx rhachet:*)", + "Bash(rhx:*)", + "Bash(npx rhx:*)", + "Bash(npm view:*)", + "Bash(npm list:*)", + "Bash(npm remove:*)", + "Bash(npm help:*)", + "Bash(npm why:*)", + "Bash(pnpm view:*)", + "Bash(pnpm list:*)", + "Bash(pnpm remove:*)", + "Bash(pnpm help:*)", + "Bash(pnpm why:*)", + "Bash(npm ci)", + "Bash(pnpm install --frozen-lockfile)", + "Bash(npx tsx ./bin/run:*)", + "Bash(npm run build:*)", + "Bash(npm run build:compile)", + "Bash(npm run start:testdb:*)", + "Bash(npm run test:*)", + "Bash(npm run test:types:*)", + "Bash(npm run test:format:*)", + "Bash(npm run test:lint:*)", + "Bash(npm run test:unit:*)", + "Bash(npm run test:integration:*)", + "Bash(npm run test:acceptance:*)", + "Bash(npm run test:acceptance:locally:*)", + "Bash(npm run test:unit -- path/to/file/example.ts)", + "Bash(npm run test:integration -- path/to/file/example.ts)", + "Bash(npm run test:acceptance -- path/to/file/example.ts)", + "Bash(npm run test:acceptance:locally -- path/to/file/example.ts)", + "Bash(THOROUGH=true npm run test:*)", + "Bash(THOROUGH=true npm run test:types:*)", + "Bash(THOROUGH=true npm run test:format:*)", + "Bash(THOROUGH=true npm run test:lint:*)", + "Bash(THOROUGH=true npm run test:unit:*)", + "Bash(THOROUGH=true npm run test:integration:*)", + "Bash(THOROUGH=true npm run test:acceptance:*)", + "Bash(THOROUGH=true npm run test:acceptance:locally:*)", + "Bash(RESNAP=true npm run test:unit:*)", + "Bash(RESNAP=true npm run test:integration:*)", + "Bash(RESNAP=true npm run test:acceptance:*)", + "Bash(RESNAP=true npm run test:acceptance:locally:*)", + "Bash(RESNAP=true THOROUGH=true npm run test:unit:*)", + "Bash(RESNAP=true THOROUGH=true npm run test:integration:*)", + "Bash(RESNAP=true THOROUGH=true npm run test:acceptance:*)", + "Bash(RESNAP=true THOROUGH=true npm run test:acceptance:locally:*)", + "Bash(npx jest --listTests:*)", + "Bash(npm run fix:*)", + "Bash(npm run fix:format:*)", + "Bash(npm run fix:lint:*)", + "Bash(gh pr list:*)", + "Bash(gh pr view:*)", + "Bash(gh pr status:*)", + "Bash(gh pr checks:*)", + "Bash(gh pr diff:*)", + "Bash(gh issue list:*)", + "Bash(gh issue view:*)", + "Bash(gh issue status:*)", + "Bash(gh repo list:*)", + "Bash(gh repo view:*)", + "Bash(gh run list:*)", + "Bash(gh run view:*)", + "Bash(gh run watch:*)", + "Bash(gh workflow list:*)", + "Bash(gh workflow view:*)", + "Bash(gh release list:*)", + "Bash(gh release view:*)", + "Bash(gh search code:*)", + "Bash(gh search repos:*)", + "Bash(gh search issues:*)", + "Bash(gh search prs:*)", + "Bash(gh search commits:*)", + "Bash(gh api -X GET:*)", + "Bash(gh api --method GET:*)", + "Bash(source .agent/repo=.this/role=any/skills/use.apikeys.sh)" + ], + "deny": [ + "Bash(bash:*)", + "Bash(cd:*)", + "Bash(find:*)", + "Bash(gh api --method DELETE:*)", + "Bash(gh api --method PATCH:*)", + "Bash(gh api --method POST:*)", + "Bash(gh api --method PUT:*)", + "Bash(gh api -X DELETE:*)", + "Bash(gh api -X PATCH:*)", + "Bash(gh api -X POST:*)", + "Bash(gh api -X PUT:*)", + "Bash(gh gist create:*)", + "Bash(gh gist delete:*)", + "Bash(gh gist edit:*)", + "Bash(gh issue close:*)", + "Bash(gh issue comment:*)", + "Bash(gh issue create:*)", + "Bash(gh issue edit:*)", + "Bash(gh issue reopen:*)", + "Bash(gh label create:*)", + "Bash(gh label delete:*)", + "Bash(gh label edit:*)", + "Bash(gh pr close:*)", + "Bash(gh pr comment:*)", + "Bash(gh pr create:*)", + "Bash(gh pr edit:*)", + "Bash(gh pr merge:*)", + "Bash(gh pr reopen:*)", + "Bash(gh pr review:*)", + "Bash(gh project create:*)", + "Bash(gh project delete:*)", + "Bash(gh project edit:*)", + "Bash(gh release create:*)", + "Bash(gh release delete:*)", + "Bash(gh release edit:*)", + "Bash(gh repo create:*)", + "Bash(gh repo delete:*)", + "Bash(gh repo edit:*)", + "Bash(gh repo fork:*)", + "Bash(gh run cancel:*)", + "Bash(gh run rerun:*)", + "Bash(gh workflow disable:*)", + "Bash(gh workflow enable:*)", + "Bash(gh workflow run:*)", + "Bash(git add --all:*)", + "Bash(git add -A:*)", + "Bash(git add .)", + "Bash(git branch -D:*)", + "Bash(git branch -d:*)", + "Bash(git checkout:*)", + "Bash(git commit:*)", + "Bash(git config:*)", + "Bash(git reflog delete:*)", + "Bash(git reflog expire:*)", + "Bash(git release:*)", + "Bash(git remote add:*)", + "Bash(git remote remove:*)", + "Bash(git remote set-url:*)", + "Bash(git stash:*)", + "Bash(git tag -d:*)", + "Bash(ln:*)", + "Bash(mv:*)", + "Bash(npx biome:*)", + "Bash(npx jest:*)", + "Bash(npx rhachet run --skill git.commit.bind del:*)", + "Bash(npx rhachet run --skill git.commit.bind set:*)", + "Bash(npx rhachet run --skill git.commit.uses set:*)", + "Bash(sed:*)", + "Bash(tee:*)", + "Edit(*/**/.route/**)", + "Edit(.branch/.bind/*)", + "Edit(.meter/*)", + "EnterPlanMode", + "Read(.quarantine/*)", + "Write(*/**/.route/**)", + "Write(.branch/.bind/*)", + "Write(.meter/*)" + ], + "ask": [ + "Bash(chmod:*)", + "Bash(npm install:*)", + "Bash(pnpm add:*)", + "Bash(pnpm install:*)" + ] + } +} diff --git a/.claude/settings.json b/.claude/settings.json index cd037e9..87c33c9 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -47,6 +47,17 @@ "author": "repo=ehmpathy/role=ergonomist" } ] + }, + { + "matcher": "PostCompact", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/postcompact.trust-but-verify", + "timeout": 30, + "author": "repo=ehmpathy/role=mechanic" + } + ] } ], "PreToolUse": [ @@ -70,6 +81,12 @@ "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-suspicious-shell-syntax", "timeout": 5, "author": "repo=ehmpathy/role=mechanic" + }, + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-sedreplace-special-chars", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" } ] }, @@ -128,6 +145,17 @@ "author": "repo=ehmpathy/role=mechanic" } ] + }, + { + "matcher": "Write|Edit|Read|Bash", + "hooks": [ + { + "type": "command", + "command": "./node_modules/.bin/rhachet run --repo ehmpathy --role mechanic --init claude.hooks/pretooluse.forbid-tmp-writes", + "timeout": 5, + "author": "repo=ehmpathy/role=mechanic" + } + ] } ], "Stop": [ @@ -161,17 +189,14 @@ "mcp__ide__getDiagnostics", "WebSearch", "WebFetch", - "Bash(ls:*)", "Bash(tree:*)", "Bash(cat:*)", "Bash(head:*)", "Bash(tail:*)", - "Bash(grep:*)", "Bash(wc:*)", "Bash(diff:*)", "Bash(which:*)", "Bash(file:*)", - "Bash(mkdir:*)", "Bash(pwd)", "Bash(jq)", "Bash(echo:*)", @@ -193,9 +218,26 @@ "Bash(npx rhachet run --skill sedreplace:*)", "Bash(npx rhachet run --skill sedreplace --old 'oldName' --new 'newName' --glob 'src/**/*.ts')", "Bash(npx rhachet run --skill sedreplace --old 'oldName' --new 'newName' --glob 'src/**/*.ts' --mode apply)", + "Bash(echo '{ pattern }' | npx rhachet run --skill sedreplace --old @stdin --new 'replacement' --glob 'src/**/*.ts')", + "Bash(printf '{ old }\\0{ new }' | npx rhachet run --skill sedreplace --old @stdin --new @stdin --glob 'src/**/*.ts')", "Bash(npx rhachet run --skill cpsafe:*)", "Bash(npx rhachet run --skill mvsafe:*)", "Bash(npx rhachet run --skill rmsafe:*)", + "Bash(npx rhachet run --skill globsafe:*)", + "Bash(rhx globsafe:*)", + "Bash(npx rhachet run --skill globsafe --pattern 'src/**/*.ts')", + "Bash(npx rhachet run --skill globsafe --pattern '*.md' --path docs/)", + "Bash(rhx globsafe --pattern 'src/**/*.ts' --long)", + "Bash(npx rhachet run --skill grepsafe:*)", + "Bash(rhx grepsafe:*)", + "Bash(npx rhachet run --skill grepsafe --pattern 'foo|bar')", + "Bash(npx rhachet run --skill grepsafe --pattern 'foo|bar' --glob '*.ts')", + "Bash(rhx grepsafe --pattern '(ERROR|WARN):' --context 3)", + "Bash(npx rhachet run --skill mkdirsafe:*)", + "Bash(rhx mkdirsafe:*)", + "Bash(npx rhachet run --skill mkdirsafe --path 'src/domain')", + "Bash(npx rhachet run --skill mkdirsafe --path 'src/deep/nested' --parents)", + "Bash(rhx mkdirsafe --path 'src' --path 'test' --path 'docs')", "Bash(npx rhachet run --skill teesafe:*)", "Bash(rhx teesafe:*)", "Bash(cmd | npx rhachet run --skill teesafe file.txt)", @@ -405,7 +447,10 @@ "Bash(git remote set-url:*)", "Bash(git stash:*)", "Bash(git tag -d:*)", + "Bash(grep:*)", "Bash(ln:*)", + "Bash(ls:*)", + "Bash(mkdir:*)", "Bash(mv:*)", "Bash(npx biome:*)", "Bash(npx jest:*)", diff --git a/package.json b/package.json index 4c20a0c..9fce147 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "postversion": "git push origin HEAD --tags --no-verify", "prepare:husky": "npx husky install && chmod ug+x .husky/*", "prepare": "[ -e .git ] && npm run prepare:husky || exit 0 && npm run prepare:rhachet", - "prepare:rhachet": "rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect reflector dreamer" + "prepare:rhachet": "rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect reflector dreamer dispatcher" }, "dependencies": { "@ehmpathy/uni-time": "1.7.4", @@ -87,12 +87,12 @@ "esbuild-register": "3.6.0", "husky": "8.0.3", "jest": "30.2.0", - "rhachet": "1.37.19", + "rhachet": "1.39.8", "rhachet-brains-anthropic": "0.4.0", - "rhachet-brains-xai": "0.3.2", - "rhachet-roles-bhrain": "0.23.7", - "rhachet-roles-bhuild": "0.14.4", - "rhachet-roles-ehmpathy": "1.34.7", + "rhachet-brains-xai": "0.3.3", + "rhachet-roles-bhrain": "0.23.10", + "rhachet-roles-bhuild": "0.15.1", + "rhachet-roles-ehmpathy": "1.34.20", "simple-log-methods": "0.6.2", "test-fns": "1.5.0", "tsc-alias": "1.8.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e3dbdd..45fd6c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -100,23 +100,23 @@ importers: specifier: 30.2.0 version: 30.2.0(@types/node@22.15.21)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@22.15.21)(typescript@5.4.5)) rhachet: - specifier: 1.37.19 - version: 1.37.19(zod@4.3.4) + specifier: 1.39.8 + version: 1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) rhachet-brains-anthropic: specifier: 0.4.0 - version: 0.4.0(rhachet@1.37.19(zod@4.3.4)) + version: 0.4.0(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) rhachet-brains-xai: - specifier: 0.3.2 - version: 0.3.2(rhachet@1.37.19(zod@4.3.4)) + specifier: 0.3.3 + version: 0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) rhachet-roles-bhrain: - specifier: 0.23.7 - version: 0.23.7(@types/node@22.15.21)(rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4))) + specifier: 0.23.10 + version: 0.23.10(@types/node@22.15.21)(rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4))) rhachet-roles-bhuild: - specifier: 0.14.4 - version: 0.14.4(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet-roles-bhrain@0.23.7(@types/node@22.15.21)(rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4)))) + specifier: 0.15.1 + version: 0.15.1(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet-roles-bhrain@0.23.10(@types/node@22.15.21)(rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)))) rhachet-roles-ehmpathy: - specifier: 1.34.7 - version: 1.34.7(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.37.19(zod@4.3.4)) + specifier: 1.34.20 + version: 1.34.20(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) simple-log-methods: specifier: 0.6.2 version: 0.6.2 @@ -3147,6 +3147,10 @@ packages: resolution: {integrity: sha512-d1mwEIfBVUfMJqORl6/lzGMPHL72wgk8FF71ULOY3SQ8yYeqPPStFmY85IOAowtkfm1pdpdAY4hsPRCz1cGcQw==} engines: {node: '>=8.0.0'} + helpful-errors@1.7.2: + resolution: {integrity: sha512-zdTjedWRSUEj7b0wFn2M+NnmYZ65XwKQ4PXdrlrGvioOh/QSw+9pdlEUL4yEPI3LX57ULkfDEGbd7xkn70TcCw==} + engines: {node: '>=8.0.0'} + homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -3317,6 +3321,10 @@ packages: resolution: {integrity: sha512-JAoCDOFPmRBjO3BE36RtnVgoMBlcaA62wIQsR9ZEPvu2/7vDM/OMrpMlaTnALxXouAGXtz2O9/EPI6lldh80jg==} engines: {node: '>=8.0.0'} + iso-time@1.11.4: + resolution: {integrity: sha512-syKeGLYBiiyuHZ9KStPo27uBaxiHRhMYtFxhfdUQGTyR1mGMscBi+ybrScClzb0yFpOCpJpg3XqrT9SVV57OBg==} + engines: {node: '>=8.0.0'} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -4157,20 +4165,20 @@ packages: peerDependencies: rhachet: '>=1.21.4' - rhachet-brains-xai@0.3.2: - resolution: {integrity: sha512-uC1Yn2nU75tzED7HokliTa8XJG2xDxxZ81VaXohsKUObmAsMRyZbFkweKx7tSen1/xnnT5Asf5XM0AeA5713jA==} + rhachet-brains-xai@0.3.3: + resolution: {integrity: sha512-ZCzPTCVACUbl/qe29j/YA+M5tmKihD7kMgOL1Gv/09pRUyZ7I+YXD/9Mp2rF3V5GIJlWgzCh/AYz/yVDC8HaAw==} engines: {node: '>=8.0.0'} peerDependencies: rhachet: '>=1.21.4' - rhachet-roles-bhrain@0.23.7: - resolution: {integrity: sha512-o3uLDkxA8HvQ+paPnG8QNI8LaemPRM9vBmdJku1LBvOVQdZ46PwJrXTOyhE4WxI+HuqkM2Hmjt6e3v+qLcJwJw==} + rhachet-roles-bhrain@0.23.10: + resolution: {integrity: sha512-dfg7A2RBZYLwgWnUhOc6ESh3OH2IUywdQ7EKWNugPMhuV6uY9veGGB16rtOh2XqQ7ziBht60mBftKi4Q8K0Lzw==} engines: {node: '>=8.0.0'} peerDependencies: rhachet-brains-xai: '>=0.3.0' - rhachet-roles-bhuild@0.14.4: - resolution: {integrity: sha512-8VpV/RhAoqy51K1Wa0VHqRMVPTjOdOLc3ZuJTG0+7aMaU9Mdcrdt8R2tpQbOfEhK/aGJIIXHWmHHhlRZA+24RQ==} + rhachet-roles-bhuild@0.15.1: + resolution: {integrity: sha512-WQl79ZAS0lENBuWThB5dVH0tR/Ib3ebqgzBVCfN7jXWExRhUV5KcDB4+4qi57WS5g3b+5z7tcyWu+nmwZzYPxw==} engines: {node: '>=18.0.0'} peerDependencies: rhachet-roles-bhrain: '>=0.12.1' @@ -4179,8 +4187,8 @@ packages: resolution: {integrity: sha512-J4RUtnX6e9YG9c1LVEBexjSXVYKx2IgVBQDEMRTbZFZcXZImzg/ssKHuWvqnsCQMd4hUz7cGtVZDl7hjNg0g1w==} engines: {node: '>=8.0.0'} - rhachet-roles-ehmpathy@1.34.7: - resolution: {integrity: sha512-7jOXt4dNrG3p9BoFGt4uDHsA9xdVR/2PuVhGsw3BzP3j5xirB9E+tBCfH1B7i8oV3hkq3tgMBlCkmTLmjsoe4g==} + rhachet-roles-ehmpathy@1.34.20: + resolution: {integrity: sha512-BxLSE9GcCDQ3IGKPgDwmCoQKi5JBvB39zBERsaFc3swKB8qPPv18Nw9UzBmFM9E3JxBZyil5KeC503fdy2qFvw==} engines: {node: '>=8.0.0'} rhachet@1.13.1: @@ -4188,8 +4196,8 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - rhachet@1.37.19: - resolution: {integrity: sha512-elnSaFFE1hByO18SC2nLDB6N9lfJ9s1SI6eSKAKU3qj36SIdLEfbZHhdPG3Uj7In54uiGJvf58K8jiFX8vE0GQ==} + rhachet@1.39.8: + resolution: {integrity: sha512-/7NCeoJdIubqDqR/iyFOOpHsF2nUt458aw0+9k9vKU0Rgax/Ly2Ffqekw3DSh9ftj1HUcN9DYFepAiOgX7WFvg==} engines: {node: '>=22.0.0'} hasBin: true peerDependencies: @@ -8018,8 +8026,8 @@ snapshots: domain-objects: 0.31.3 helpful-errors: 1.5.3 joi: 17.4.0 - rhachet: 1.37.19(zod@4.3.4) - rhachet-roles-ehmpathy: 1.34.7(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.37.19(zod@4.3.4)) + rhachet: 1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) + rhachet-roles-ehmpathy: 1.34.20(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) type-fns: 1.21.0 uuid-fns: 1.1.3 transitivePeerDependencies: @@ -8470,6 +8478,10 @@ snapshots: dependencies: type-fns: 1.20.2 + helpful-errors@1.7.2: + dependencies: + type-fns: 1.21.0 + homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 @@ -8628,6 +8640,14 @@ snapshots: simple-log-methods: 0.6.9 type-fns: 1.21.0 + iso-time@1.11.4: + dependencies: + date-fns: 3.6.0 + domain-glossaries: 1.0.0 + helpful-errors: 1.5.3 + simple-log-methods: 0.6.9 + type-fns: 1.21.0 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: @@ -9602,7 +9622,7 @@ snapshots: domain-objects: 0.31.9 helpful-errors: 1.5.3 - rhachet-brains-anthropic@0.4.0(rhachet@1.37.19(zod@4.3.4)): + rhachet-brains-anthropic@0.4.0(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)): dependencies: '@anthropic-ai/claude-agent-sdk': 0.1.76(zod@4.3.4) '@anthropic-ai/sdk': 0.71.2(zod@4.3.4) @@ -9610,19 +9630,19 @@ snapshots: helpful-errors: 1.5.3 iso-price: 1.1.1(domain-objects@0.31.9) iso-time: 1.11.1 - rhachet: 1.37.19(zod@4.3.4) + rhachet: 1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) rhachet-artifact: 1.0.1 rhachet-artifact-git: 1.1.5 type-fns: 1.21.0 zod: 4.3.4 - rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4)): + rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)): dependencies: domain-objects: 0.31.9 helpful-errors: 1.5.3 iso-price: 1.1.1(domain-objects@0.31.9) openai: 5.8.2(zod@4.3.4) - rhachet: 1.37.19(zod@4.3.4) + rhachet: 1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) rhachet-artifact: 1.0.1 rhachet-artifact-git: 1.1.5 type-fns: 1.21.0 @@ -9630,7 +9650,7 @@ snapshots: transitivePeerDependencies: - ws - rhachet-roles-bhrain@0.23.7(@types/node@22.15.21)(rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4))): + rhachet-roles-bhrain@0.23.10(@types/node@22.15.21)(rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4))): dependencies: '@ehmpathy/as-command': 1.0.3 '@ehmpathy/uni-time': 1.8.1 @@ -9646,7 +9666,7 @@ snapshots: openai: 5.8.2(zod@4.3.4) rhachet-artifact: 1.0.0 rhachet-artifact-git: 1.1.0 - rhachet-brains-xai: 0.3.2(rhachet@1.37.19(zod@4.3.4)) + rhachet-brains-xai: 0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) serde-fns: 1.2.0 simple-in-memory-cache: 0.4.0 type-fns: 1.21.0 @@ -9661,13 +9681,13 @@ snapshots: - react-native-b4a - ws - rhachet-roles-bhuild@0.14.4(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet-roles-bhrain@0.23.7(@types/node@22.15.21)(rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4)))): + rhachet-roles-bhuild@0.15.1(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet-roles-bhrain@0.23.10(@types/node@22.15.21)(rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)))): dependencies: domain-objects: 0.31.9 emoji-space-shim: 0.0.0 helpful-errors: 1.5.3 iso-time: 1.11.3 - rhachet-roles-bhrain: 0.23.7(@types/node@22.15.21)(rhachet-brains-xai@0.3.2(rhachet@1.37.19(zod@4.3.4))) + rhachet-roles-bhrain: 0.23.10(@types/node@22.15.21)(rhachet-brains-xai@0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4))) test-fns: 1.15.0(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) zod: 4.3.4 transitivePeerDependencies: @@ -9703,7 +9723,7 @@ snapshots: - ws - zod - rhachet-roles-ehmpathy@1.34.7(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.37.19(zod@4.3.4)): + rhachet-roles-ehmpathy@1.34.20(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)): dependencies: '@atjsh/llmlingua-2': 2.0.3(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(js-tiktoken@1.0.21) '@ehmpathy/as-command': 1.0.3 @@ -9717,7 +9737,7 @@ snapshots: openai: 5.8.2(zod@4.3.4) rhachet-artifact: 1.0.0 rhachet-artifact-git: 1.1.0 - rhachet-brains-xai: 0.3.2(rhachet@1.37.19(zod@4.3.4)) + rhachet-brains-xai: 0.3.3(rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4)) serde-fns: 1.2.0 simple-in-memory-cache: 0.4.0 simple-on-disk-cache: 1.7.3 @@ -9756,7 +9776,7 @@ snapshots: - ws - zod - rhachet@1.37.19(zod@4.3.4): + rhachet@1.39.8(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4): dependencies: '@noble/curves': 2.0.1 '@noble/hashes': 2.0.1 @@ -9773,18 +9793,26 @@ snapshots: fastest-levenshtein: 1.0.16 flattie: 1.1.1 hash-fns: 1.1.0 - helpful-errors: 1.5.3 + helpful-errors: 1.7.2 iso-price: 1.1.1(domain-objects@0.31.9) - iso-time: 1.11.1 + iso-time: 1.11.4 js-tiktoken: 1.0.18 rhachet-artifact: 1.0.3 rhachet-artifact-git: 1.1.5 serde-fns: 1.3.1 + simple-in-memory-cache: 0.4.0 simple-log-methods: 0.6.9 type-fns: 1.21.0 uuid-fns: 1.0.1 + with-simple-cache: 0.15.3(@huggingface/transformers@3.8.1)(@tensorflow/tfjs@4.22.0(seedrandom@3.0.5))(@types/node@22.15.21)(zod@4.3.4) yaml: 2.8.2 zod: 4.3.4 + transitivePeerDependencies: + - '@huggingface/transformers' + - '@tensorflow/tfjs' + - '@types/node' + - aws-crt + - ws roarr@2.15.4: dependencies: diff --git a/src/domain.objects/DeclaredGithubBranchProtection.ts b/src/domain.objects/DeclaredGithubBranchProtection.ts index 8b3faf7..ba7a0b6 100644 --- a/src/domain.objects/DeclaredGithubBranchProtection.ts +++ b/src/domain.objects/DeclaredGithubBranchProtection.ts @@ -123,5 +123,7 @@ export class DeclaredGithubBranchProtection public static nested = { branch: RefByUnique, requiredStatusChecks: DomainLiteral, + requiredPullRequestReviews: DomainLiteral, + restrictions: DomainLiteral, }; }