@zerwiz/ymir 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +291 -0
- package/.agents/agents/bragi-marketer.md +111 -0
- package/.agents/agents/brokk.md +352 -0
- package/.agents/agents/forseti-reviewer.md +93 -0
- package/.agents/agents/frigg-consent.md +77 -0
- package/.agents/agents/groa-update.md +77 -0
- package/.agents/agents/hnoss-designer.md +69 -0
- package/.agents/agents/huginn-researcher.md +99 -0
- package/.agents/agents/jord-projects.md +78 -0
- package/.agents/agents/kvasir-scout.md +91 -0
- package/.agents/agents/mimir-planner.md +92 -0
- package/.agents/agents/muninn-stow.md +77 -0
- package/.agents/agents/saga-bearings.md +78 -0
- package/.agents/agents/sindri-developer.md +114 -0
- package/.agents/agents/snotra-documenter.md +105 -0
- package/.agents/agents/syn-recovery.md +78 -0
- package/.agents/agents/tyr-check.md +78 -0
- package/.agents/agents/urdh-hold.md +77 -0
- package/.agents/agents/volundr-smith.md +80 -0
- package/.agents/agents/vor-diagnostics.md +77 -0
- package/.agents/assets/agents/naming.md +50 -0
- package/.agents/assets/agents/registry.md +93 -0
- package/.agents/assets/agents/runtime.md +36 -0
- package/.agents/assets/agents/toon-tasks-cli.md +42 -0
- package/.agents/assets/templates/company_entity.template.md +37 -0
- package/.agents/backend/backends/cmux.sh +649 -0
- package/.agents/backend/backends/herdr-eventwait.py +157 -0
- package/.agents/backend/backends/herdr-workspace-move.py +114 -0
- package/.agents/backend/backends/herdr.sh +3386 -0
- package/.agents/backend/backends/orca.sh +290 -0
- package/.agents/backend/backends/tmux.sh +357 -0
- package/.agents/backend/backends/zellij.sh +700 -0
- package/.agents/backend/fm-afk-launch.sh +654 -0
- package/.agents/backend/fm-afk-return.sh +241 -0
- package/.agents/backend/fm-afk-start.sh +172 -0
- package/.agents/backend/fm-arm-command-policy.mjs +960 -0
- package/.agents/backend/fm-arm-pretool-check.sh +200 -0
- package/.agents/backend/fm-backend-hometag-lib.sh +52 -0
- package/.agents/backend/fm-backend.sh +981 -0
- package/.agents/backend/fm-backlog-handoff.sh +909 -0
- package/.agents/backend/fm-backlog-receive.sh +187 -0
- package/.agents/backend/fm-backlog-transition-lib.sh +779 -0
- package/.agents/backend/fm-bearings-board.sh +204 -0
- package/.agents/backend/fm-bearings-snapshot.sh +546 -0
- package/.agents/backend/fm-bootstrap.sh +1568 -0
- package/.agents/backend/fm-branch-outcome.sh +203 -0
- package/.agents/backend/fm-branch-prompt.sh +101 -0
- package/.agents/backend/fm-brief.sh +452 -0
- package/.agents/backend/fm-busy-event.sh +234 -0
- package/.agents/backend/fm-busy-lib.sh +986 -0
- package/.agents/backend/fm-captain-hold.sh +1001 -0
- package/.agents/backend/fm-cd-command-policy.mjs +153 -0
- package/.agents/backend/fm-cd-pretool-check.sh +190 -0
- package/.agents/backend/fm-check-lib.sh +74 -0
- package/.agents/backend/fm-check-register.sh +42 -0
- package/.agents/backend/fm-check-unregister.sh +52 -0
- package/.agents/backend/fm-classify-lib.sh +1770 -0
- package/.agents/backend/fm-claude-stop-autoarm.sh +334 -0
- package/.agents/backend/fm-composer-lib.sh +1416 -0
- package/.agents/backend/fm-config-inherit-lib.sh +1202 -0
- package/.agents/backend/fm-config-push.sh +254 -0
- package/.agents/backend/fm-control-lib.sh +251 -0
- package/.agents/backend/fm-control.sh +878 -0
- package/.agents/backend/fm-crew-state.sh +625 -0
- package/.agents/backend/fm-cursor-lib.sh +243 -0
- package/.agents/backend/fm-decision-hold.sh +232 -0
- package/.agents/backend/fm-doc-audience-check.sh +269 -0
- package/.agents/backend/fm-dod-lib.sh +67 -0
- package/.agents/backend/fm-ensure-agents-md.sh +253 -0
- package/.agents/backend/fm-extension-launch-barrier.mjs +129 -0
- package/.agents/backend/fm-extension.mjs +2577 -0
- package/.agents/backend/fm-extension.sh +16 -0
- package/.agents/backend/fm-ff-lib.sh +420 -0
- package/.agents/backend/fm-fleet-snapshot.sh +1463 -0
- package/.agents/backend/fm-fleet-sync.sh +458 -0
- package/.agents/backend/fm-fleet-view.sh +96 -0
- package/.agents/backend/fm-gate-refuse-lib.sh +102 -0
- package/.agents/backend/fm-guard.sh +242 -0
- package/.agents/backend/fm-harness.sh +195 -0
- package/.agents/backend/fm-herdr-ci-cleanup.sh +115 -0
- package/.agents/backend/fm-herdr-lab.sh +346 -0
- package/.agents/backend/fm-herdr-session-cleanup.sh +337 -0
- package/.agents/backend/fm-home-seed.sh +984 -0
- package/.agents/backend/fm-home-summary-refresh.sh +255 -0
- package/.agents/backend/fm-hook-host-lib.sh +36 -0
- package/.agents/backend/fm-inactive-reconcile.sh +531 -0
- package/.agents/backend/fm-inbox.sh +399 -0
- package/.agents/backend/fm-install-actionlint.sh +84 -0
- package/.agents/backend/fm-install-herdr.sh +96 -0
- package/.agents/backend/fm-install-shellcheck.sh +84 -0
- package/.agents/backend/fm-install-treehouse.sh +95 -0
- package/.agents/backend/fm-kimi-turnend-hook.sh +276 -0
- package/.agents/backend/fm-lease-lib.sh +218 -0
- package/.agents/backend/fm-lease.sh +189 -0
- package/.agents/backend/fm-line-cap-lib.sh +51 -0
- package/.agents/backend/fm-lint-workflows.sh +137 -0
- package/.agents/backend/fm-lint.sh +591 -0
- package/.agents/backend/fm-lock-lib.sh +104 -0
- package/.agents/backend/fm-lock.sh +107 -0
- package/.agents/backend/fm-marker-lib.sh +12 -0
- package/.agents/backend/fm-merge-local.sh +74 -0
- package/.agents/backend/fm-merge-outcome-lib.sh +138 -0
- package/.agents/backend/fm-nm-run-lib.sh +124 -0
- package/.agents/backend/fm-on.sh +125 -0
- package/.agents/backend/fm-operational-input.sh +253 -0
- package/.agents/backend/fm-peek.sh +46 -0
- package/.agents/backend/fm-pending-reply-lib.sh +1409 -0
- package/.agents/backend/fm-pr-check.sh +135 -0
- package/.agents/backend/fm-pr-lib.sh +1016 -0
- package/.agents/backend/fm-pr-merge.sh +707 -0
- package/.agents/backend/fm-pr-poll.sh +110 -0
- package/.agents/backend/fm-primary-scope-lib.sh +33 -0
- package/.agents/backend/fm-procevent-extension-capture.pl +259 -0
- package/.agents/backend/fm-procevent-lavish.sh +628 -0
- package/.agents/backend/fm-procevent-lib.sh +892 -0
- package/.agents/backend/fm-procevent-quota.sh +290 -0
- package/.agents/backend/fm-procevent-remote-reply.sh +577 -0
- package/.agents/backend/fm-procevent-when.sh +504 -0
- package/.agents/backend/fm-procevent.sh +1466 -0
- package/.agents/backend/fm-project-mode.sh +92 -0
- package/.agents/backend/fm-project-origin-lib.sh +180 -0
- package/.agents/backend/fm-promote.sh +282 -0
- package/.agents/backend/fm-public-followup-emit.sh +260 -0
- package/.agents/backend/fm-public-followup-lib.sh +398 -0
- package/.agents/backend/fm-public-followup.sh +1330 -0
- package/.agents/backend/fm-push-transition-lib.sh +168 -0
- package/.agents/backend/fm-quota-axi-lib.sh +93 -0
- package/.agents/backend/fm-quota-choose.sh +384 -0
- package/.agents/backend/fm-remote-delta-read.sh +189 -0
- package/.agents/backend/fm-remote-doctor.sh +800 -0
- package/.agents/backend/fm-remote-entrypoint.sh +193 -0
- package/.agents/backend/fm-remote-file.sh +234 -0
- package/.agents/backend/fm-remote-home-provision.sh +259 -0
- package/.agents/backend/fm-remote-home-seed.sh +259 -0
- package/.agents/backend/fm-remote-inherit-push.sh +90 -0
- package/.agents/backend/fm-remote-inherit.sh +179 -0
- package/.agents/backend/fm-remote-job-lib.sh +1241 -0
- package/.agents/backend/fm-remote-job-reap-orphans.sh +137 -0
- package/.agents/backend/fm-remote-job-worker.sh +1124 -0
- package/.agents/backend/fm-remote-readiness-lib.sh +44 -0
- package/.agents/backend/fm-remote-secondmate-control.sh +340 -0
- package/.agents/backend/fm-review-diff.sh +158 -0
- package/.agents/backend/fm-secondmate-charter-lib.sh +44 -0
- package/.agents/backend/fm-secondmate-nudge-lib.sh +68 -0
- package/.agents/backend/fm-secondmate-parent-lib.sh +70 -0
- package/.agents/backend/fm-secondmate-reconcile.sh +371 -0
- package/.agents/backend/fm-secondmate-registry-lib.sh +311 -0
- package/.agents/backend/fm-secondmate-report.sh +88 -0
- package/.agents/backend/fm-send.sh +1059 -0
- package/.agents/backend/fm-session-lock-lib.sh +176 -0
- package/.agents/backend/fm-session-start.sh +970 -0
- package/.agents/backend/fm-sessionstart-cursor.sh +40 -0
- package/.agents/backend/fm-sessionstart-nudge.sh +45 -0
- package/.agents/backend/fm-sessionstart-run.sh +145 -0
- package/.agents/backend/fm-spawn.sh +3153 -0
- package/.agents/backend/fm-startup-memory-budget-lib.sh +224 -0
- package/.agents/backend/fm-startup-memory-budget.sh +94 -0
- package/.agents/backend/fm-startup-network.sh +642 -0
- package/.agents/backend/fm-stow-cascade.sh +251 -0
- package/.agents/backend/fm-subagent-pretool-check.sh +207 -0
- package/.agents/backend/fm-supervise-daemon.sh +1732 -0
- package/.agents/backend/fm-supervision-instructions.sh +215 -0
- package/.agents/backend/fm-supervision-lib.sh +90 -0
- package/.agents/backend/fm-supervisor-target-lib.sh +78 -0
- package/.agents/backend/fm-tangle-lib.sh +53 -0
- package/.agents/backend/fm-task-inbox-lib.sh +402 -0
- package/.agents/backend/fm-tasks-axi-lib.sh +123 -0
- package/.agents/backend/fm-teardown.sh +2922 -0
- package/.agents/backend/fm-test-isolation-proof.sh +588 -0
- package/.agents/backend/fm-test-run.sh +2191 -0
- package/.agents/backend/fm-timeout-lib.sh +141 -0
- package/.agents/backend/fm-timing-lib.sh +179 -0
- package/.agents/backend/fm-tmux-lib.sh +291 -0
- package/.agents/backend/fm-tool-update-check.sh +898 -0
- package/.agents/backend/fm-trace-context-lib.sh +227 -0
- package/.agents/backend/fm-transition-lib.sh +103 -0
- package/.agents/backend/fm-turnend-guard-cursor.sh +391 -0
- package/.agents/backend/fm-turnend-guard-grok.sh +90 -0
- package/.agents/backend/fm-turnend-guard.sh +432 -0
- package/.agents/backend/fm-update.sh +110 -0
- package/.agents/backend/fm-vendor-auth-probe.sh +190 -0
- package/.agents/backend/fm-voice-client.py +1373 -0
- package/.agents/backend/fm-voice-relay.py +1256 -0
- package/.agents/backend/fm-wake-drain.sh +592 -0
- package/.agents/backend/fm-wake-grant.sh +127 -0
- package/.agents/backend/fm-wake-lib.sh +1849 -0
- package/.agents/backend/fm-watch-arm.sh +602 -0
- package/.agents/backend/fm-watch-checkpoint.sh +109 -0
- package/.agents/backend/fm-watch.sh +1962 -0
- package/.agents/backend/fm-x-dismiss.sh +116 -0
- package/.agents/backend/fm-x-followup.sh +286 -0
- package/.agents/backend/fm-x-lib.sh +1000 -0
- package/.agents/backend/fm-x-link.sh +234 -0
- package/.agents/backend/fm-x-poll.sh +185 -0
- package/.agents/backend/fm-x-reply.sh +385 -0
- package/.agents/backend/fm_voice_frame.py +166 -0
- package/.agents/backend/fm_voice_records.py +574 -0
- package/.agents/backend/model-bridge.py +290 -0
- package/.agents/backend/opencode-go-bridge.py +30 -0
- package/.agents/bus/README.md +12 -0
- package/.agents/bus/messages.json +1 -0
- package/.agents/config/agents.machine.example.yaml +16 -0
- package/.agents/config/agents.yaml +50 -0
- package/.agents/config/agents.yaml.example +72 -0
- package/.agents/config/crew-dispatch.json +22 -0
- package/.agents/config/cron.yaml +9 -0
- package/.agents/config/eindri-dispatch.json +67 -0
- package/.agents/config/eindri-harness +1 -0
- package/.agents/config/startup-memory-budget +1 -0
- package/.agents/config/tailscale-sync.yaml +27 -0
- package/.agents/filebrowser/.filebrowser.json +6 -0
- package/.agents/filebrowser/README.md +11 -0
- package/.agents/gateway/README.md +12 -0
- package/.agents/github/README.md +15 -0
- package/.agents/github/webhooks/.gitkeep +0 -0
- package/.agents/github/workflows/.gitkeep +0 -0
- package/.agents/harness/opencode/plugins/lib/rodd-operational-input.js +37 -0
- package/.agents/harness/opencode/plugins/package.json +4 -0
- package/.agents/harness/opencode/plugins/saga-sessionstart.js +77 -0
- package/.agents/harness/opencode/plugins/syn-cd-check.js +61 -0
- package/.agents/harness/opencode/plugins/syn-pretool-check.js +68 -0
- package/.agents/harness/opencode/plugins/syn-turnend-guard.js +105 -0
- package/.agents/harness/opencode/plugins/syn-watch-arm.js +521 -0
- package/.agents/memory/README.md +46 -0
- package/.agents/memory/kaia.engram +0 -0
- package/.agents/memory/kaia.engram-shm +0 -0
- package/.agents/memory/kaia.engram-wal +0 -0
- package/.agents/memory/runes_audit.md +5 -0
- package/.agents/memory/well/episodes.jsonl +367 -0
- package/.agents/memory/well/workspace.jsonl +27 -0
- package/.agents/migrations/0001-hodd-layout.sh +38 -0
- package/.agents/migrations/0002-a2a-mcp.sh +27 -0
- package/.agents/migrations/0003-private-data-separation.sh +111 -0
- package/.agents/migrations/0004-hoard-and-realms.sh +104 -0
- package/.agents/sandbox/Dockerfile.utgard +19 -0
- package/.agents/sandbox/README.md +14 -0
- package/.agents/sandbox/utgard.config.json +14 -0
- package/.agents/skills/README.md +59 -0
- package/.agents/skills/bragi-marketing/README.md +3 -0
- package/.agents/skills/bragi-marketing/SKILL.md +82 -0
- package/.agents/skills/eindri-homes/README.md +3 -0
- package/.agents/skills/eindri-homes/SKILL.md +291 -0
- package/.agents/skills/eindri-homes/assets/control-plane.md +122 -0
- package/.agents/skills/eindri-homes/assets/dispatch.md +80 -0
- package/.agents/skills/frigg-consent/README.md +3 -0
- package/.agents/skills/frigg-consent/SKILL.md +56 -0
- package/.agents/skills/galdr-ymirsystem/README.md +3 -0
- package/.agents/skills/galdr-ymirsystem/SKILL.md +158 -0
- package/.agents/skills/galdr-ymirsystem/assets/README.md +74 -0
- package/.agents/skills/galdr-ymirsystem/assets/brokk-distro-runtime.md +390 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-method.md +113 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-tool-categories.md +178 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-orchestration.md +518 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-profiles.md +136 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/README.md +673 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/claude-code.md +197 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/codex.md +191 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/cursor.md +193 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/opencode.md +262 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/pi.md +295 -0
- package/.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md +496 -0
- package/.agents/skills/galdr-ymirsystem/assets/installation.md +571 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models/HOST-DATA.example.md +72 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models.md +274 -0
- package/.agents/skills/galdr-ymirsystem/assets/memory-well.md +161 -0
- package/.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md +377 -0
- package/.agents/skills/galdr-ymirsystem/assets/norse-naming.md +325 -0
- package/.agents/skills/galdr-ymirsystem/assets/odrerir-hall.md +129 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/einherjar-spawn.schema.json +81 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/herdr-profile.toml +75 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/pi-profile.yml +96 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/supervision-tree.yml +163 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot-guide.md +58 -0
- package/.agents/skills/galdr-ymirsystem/assets/porting-upstream-to-norse.md +301 -0
- package/.agents/skills/galdr-ymirsystem/assets/principles.md +385 -0
- package/.agents/skills/galdr-ymirsystem/assets/reference-adoption.md +99 -0
- package/.agents/skills/galdr-ymirsystem/assets/registry.md +379 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-compliance.md +463 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-components.md +553 -0
- package/.agents/skills/galdr-ymirsystem/assets/smidja.md +175 -0
- package/.agents/skills/galdr-ymirsystem/schemas/toon-schemas.md +190 -0
- package/.agents/skills/galdr-ymirsystem/scripts/README.md +45 -0
- package/.agents/skills/galdr-ymirsystem/scripts/bench-one.sh +248 -0
- package/.agents/skills/galdr-ymirsystem/scripts/compliance-check.sh +360 -0
- package/.agents/skills/galdr-ymirsystem/scripts/gpu-sample.sh +43 -0
- package/.agents/skills/galdr-ymirsystem/scripts/stop-all.sh +34 -0
- package/.agents/skills/galdr-ymirsystem/scripts/toon-check.py +188 -0
- package/.agents/skills/gjallarhorn-relay/README.md +3 -0
- package/.agents/skills/gjallarhorn-relay/SKILL.md +283 -0
- package/.agents/skills/groa-update/SKILL.md +70 -0
- package/.agents/skills/hamr-adapters/README.md +3 -0
- package/.agents/skills/hamr-adapters/SKILL.md +123 -0
- package/.agents/skills/hamr-adapters/references/common/control-and-recovery.md +37 -0
- package/.agents/skills/hamr-adapters/references/common/dispatch.md +32 -0
- package/.agents/skills/hamr-adapters/references/common/model-and-effort.md +42 -0
- package/.agents/skills/hamr-adapters/references/common/primary-hooks.md +40 -0
- package/.agents/skills/hamr-adapters/references/harness/claude.md +55 -0
- package/.agents/skills/hamr-adapters/references/harness/codex.md +43 -0
- package/.agents/skills/hamr-adapters/references/harness/cursor.md +75 -0
- package/.agents/skills/hamr-adapters/references/harness/grok.md +69 -0
- package/.agents/skills/hamr-adapters/references/harness/kimi.md +51 -0
- package/.agents/skills/hamr-adapters/references/harness/muse.md +70 -0
- package/.agents/skills/hamr-adapters/references/harness/opencode.md +42 -0
- package/.agents/skills/hamr-adapters/references/harness/pi.md +56 -0
- package/.agents/skills/herdr-panes/README.md +3 -0
- package/.agents/skills/herdr-panes/SKILL.md +92 -0
- package/.agents/skills/herdr-panes/assets/herdr-backend.md +346 -0
- package/.agents/skills/herdr-panes/assets/tmux-backend.md +115 -0
- package/.agents/skills/hnoss-design/DESIGN.md +19 -0
- package/.agents/skills/hnoss-design/README.md +3 -0
- package/.agents/skills/hnoss-design/SKILL.md +83 -0
- package/.agents/skills/hvild-afk/README.md +3 -0
- package/.agents/skills/hvild-afk/SKILL.md +241 -0
- package/.agents/skills/jord-projects/README.md +3 -0
- package/.agents/skills/jord-projects/SKILL.md +92 -0
- package/.agents/skills/lifecycle/SKILL.md +56 -0
- package/.agents/skills/lifecycle/smoke_test.sh +52 -0
- package/.agents/skills/lifecycle/start.sh +21 -0
- package/.agents/skills/lifecycle/status.sh +35 -0
- package/.agents/skills/lifecycle/stop.sh +16 -0
- package/.agents/skills/muninn-stow/README.md +3 -0
- package/.agents/skills/muninn-stow/SKILL.md +309 -0
- package/.agents/skills/no-mistakes/SKILL.md +379 -0
- package/.agents/skills/nornir-schedule/README.md +3 -0
- package/.agents/skills/nornir-schedule/SKILL.md +25 -0
- package/.agents/skills/nornir-schedule/assets/events.md +137 -0
- package/.agents/skills/nornir-schedule/assets/quota.md +131 -0
- package/.agents/skills/nsr-compliance/README.md +3 -0
- package/.agents/skills/nsr-compliance/SKILL.md +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/README.md +40 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/git-workflow.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/security.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/tech-stack.md +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/README.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/README.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/SKILL-template.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/SKILL.md +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/create_branch.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/safe_commit.sh +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/sync_upstream.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/README.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/SKILL.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/smoke_test.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/start.sh +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/status.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/stop.sh +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/core_four.yaml +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/README.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/api.md +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/compliance-wiring.md +155 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/frontend.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/README.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/template-README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/deploy.sh +49 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/development.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/production.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/staging.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/template.env.example +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/README.md +26 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/agent.md +7 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/developers/dev-1.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/linux.md +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/macos.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/shared.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/windows.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/_template.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/hosting-1.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/README.md +21 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/deployment.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/disaster-recovery.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/ops-tasks.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/features/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/project-skills.md +146 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/software-compliance-research.md +269 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/working-with-agents.md +260 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/AGENTS.md +38 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/ARCHITECTURE.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/BEST_PRACTICES.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/CI_CD.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/FEATURES.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/README.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/RULES.md +37 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/STRUCTURE.md +45 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/TECH_STACK.md +28 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scaffold-spec.md +63 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/scaffold.sh +103 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/validate.sh +52 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/pr-ops/README.md +3 -0
- package/.agents/skills/pr-ops/SKILL.md +109 -0
- package/.agents/skills/ratatoskr-a2a/README.md +3 -0
- package/.agents/skills/ratatoskr-a2a/SKILL.md +148 -0
- package/.agents/skills/rules-check-drift/SKILL.md +81 -0
- package/.agents/skills/saga-bearings/README.md +3 -0
- package/.agents/skills/saga-bearings/SKILL.md +26 -0
- package/.agents/skills/saga-bearings/assets/bearings.md +161 -0
- package/.agents/skills/saga-bearings/assets/board-template.html +731 -0
- package/.agents/skills/saga-bearings/assets/recap.md +56 -0
- package/.agents/skills/syn-recovery/README.md +3 -0
- package/.agents/skills/syn-recovery/SKILL.md +54 -0
- package/.agents/skills/tyr-check/README.md +3 -0
- package/.agents/skills/tyr-check/SKILL.md +218 -0
- package/.agents/skills/urdh-hold/README.md +3 -0
- package/.agents/skills/urdh-hold/SKILL.md +25 -0
- package/.agents/skills/urdh-hold/assets/decisions.md +15 -0
- package/.agents/skills/urdh-hold/assets/hold.md +54 -0
- package/.agents/skills/vor-diagnostics/README.md +3 -0
- package/.agents/skills/vor-diagnostics/SKILL.md +68 -0
- package/.agents/skills/ymir-host/README.md +3 -0
- package/.agents/skills/ymir-host/SKILL.md +34 -0
- package/.agents/skills/ymir-host/assets/desktop.md +36 -0
- package/.agents/skills/ymir-host/assets/omarchy.md +297 -0
- package/.agents/skills/ymir-host/assets/runbooks.md +15 -0
- package/.agents/skills/ymir-host/assets/thjazi.md +220 -0
- package/.agents/skills/ymir-host/assets/update.md +64 -0
- package/.agents/tests/assets/board-render-harness.mjs +117 -0
- package/.agents/tests/cmux-test-safety.sh +51 -0
- package/.agents/tests/fixtures.sh +291 -0
- package/.agents/tests/fm-afk-inject-e2e.test.sh +428 -0
- package/.agents/tests/fm-afk-inject-herdr-e2e.test.sh +536 -0
- package/.agents/tests/fm-afk-launch.test.sh +961 -0
- package/.agents/tests/fm-afk-pi-herdr-return-e2e.test.sh +297 -0
- package/.agents/tests/fm-afk-return.test.sh +283 -0
- package/.agents/tests/fm-arm-pretool-check.test.sh +482 -0
- package/.agents/tests/fm-ask-user-authority.test.sh +42 -0
- package/.agents/tests/fm-backend-autodetect-smoke.test.sh +176 -0
- package/.agents/tests/fm-backend-cmux-smoke.test.sh +188 -0
- package/.agents/tests/fm-backend-cmux.test.sh +1166 -0
- package/.agents/tests/fm-backend-herdr-eventwait-smoke.test.sh +136 -0
- package/.agents/tests/fm-backend-herdr-eventwait.test.py +106 -0
- package/.agents/tests/fm-backend-herdr-focus-flash-e2e.test.sh +409 -0
- package/.agents/tests/fm-backend-herdr-launcher-workspace-e2e.test.sh +437 -0
- package/.agents/tests/fm-backend-herdr-presentation-e2e.test.sh +1424 -0
- package/.agents/tests/fm-backend-herdr-prune-safety-e2e.test.sh +180 -0
- package/.agents/tests/fm-backend-herdr-respawn-idem-e2e.test.sh +182 -0
- package/.agents/tests/fm-backend-herdr-smoke.test.sh +355 -0
- package/.agents/tests/fm-backend-herdr-workspace-per-home-e2e.test.sh +251 -0
- package/.agents/tests/fm-backend-herdr.test.sh +4606 -0
- package/.agents/tests/fm-backend-orca.test.sh +1357 -0
- package/.agents/tests/fm-backend-tmux-smoke.test.sh +173 -0
- package/.agents/tests/fm-backend-zellij-smoke.test.sh +205 -0
- package/.agents/tests/fm-backend-zellij.test.sh +1360 -0
- package/.agents/tests/fm-backend.test.sh +1142 -0
- package/.agents/tests/fm-backlog-atomicity.test.sh +2302 -0
- package/.agents/tests/fm-backlog-handoff.test.sh +1360 -0
- package/.agents/tests/fm-bearings-board-render.test.sh +135 -0
- package/.agents/tests/fm-bearings-board.test.sh +414 -0
- package/.agents/tests/fm-bearings-snapshot.test.sh +1990 -0
- package/.agents/tests/fm-bootstrap-network-parallel.test.sh +316 -0
- package/.agents/tests/fm-bootstrap.test.sh +1178 -0
- package/.agents/tests/fm-branch-supervision.test.sh +552 -0
- package/.agents/tests/fm-brief.test.sh +785 -0
- package/.agents/tests/fm-busy-adapter-wiring.test.sh +324 -0
- package/.agents/tests/fm-busy-state.test.sh +465 -0
- package/.agents/tests/fm-calm-pi-extension.test.sh +3979 -0
- package/.agents/tests/fm-captain-hold-lifecycle.test.sh +1187 -0
- package/.agents/tests/fm-cd-pretool-check.test.sh +400 -0
- package/.agents/tests/fm-check-unregister.test.sh +198 -0
- package/.agents/tests/fm-classify-corr-token.test.sh +543 -0
- package/.agents/tests/fm-classify-decision-key.test.sh +340 -0
- package/.agents/tests/fm-claude-stop-autoarm-live-e2e.test.sh +164 -0
- package/.agents/tests/fm-claude-stop-autoarm.test.sh +1190 -0
- package/.agents/tests/fm-cmux-claude-composer-live-e2e.test.sh +110 -0
- package/.agents/tests/fm-codex-continuity-live-e2e.test.sh +55 -0
- package/.agents/tests/fm-composer-ghost.test.sh +716 -0
- package/.agents/tests/fm-composer-lib.test.sh +666 -0
- package/.agents/tests/fm-composer-matrix-live-e2e.test.sh +220 -0
- package/.agents/tests/fm-control-herdr-smoke.test.sh +149 -0
- package/.agents/tests/fm-control-relaunch.test.sh +1530 -0
- package/.agents/tests/fm-control.test.sh +910 -0
- package/.agents/tests/fm-crew-state.test.sh +1610 -0
- package/.agents/tests/fm-cursor-harness.test.sh +404 -0
- package/.agents/tests/fm-cursor-primary-live-e2e.test.sh +217 -0
- package/.agents/tests/fm-cursor-primary.test.sh +708 -0
- package/.agents/tests/fm-daemon.test.sh +2740 -0
- package/.agents/tests/fm-documentation-audiences.test.sh +141 -0
- package/.agents/tests/fm-ensure-agents-md.test.sh +371 -0
- package/.agents/tests/fm-extension-binding.test.sh +2187 -0
- package/.agents/tests/fm-fleet-snapshot-view.test.sh +816 -0
- package/.agents/tests/fm-fleet-sync.test.sh +721 -0
- package/.agents/tests/fm-gate-refuse.test.sh +356 -0
- package/.agents/tests/fm-gitignore-config.test.sh +89 -0
- package/.agents/tests/fm-gotmp.test.sh +230 -0
- package/.agents/tests/fm-grok-continuity-live-e2e.test.sh +112 -0
- package/.agents/tests/fm-grok-harness.test.sh +117 -0
- package/.agents/tests/fm-grok-stop-live-e2e.test.sh +219 -0
- package/.agents/tests/fm-guard-stale-banner.test.sh +709 -0
- package/.agents/tests/fm-harness-adapter-instructions-live-e2e.test.sh +134 -0
- package/.agents/tests/fm-harness-adapter-references.test.sh +30 -0
- package/.agents/tests/fm-harness-liveness-drift-live-e2e.test.sh +151 -0
- package/.agents/tests/fm-herdr-lab.test.sh +243 -0
- package/.agents/tests/fm-herdr-session-cleanup-e2e.test.sh +146 -0
- package/.agents/tests/fm-herdr-session-cleanup.test.sh +329 -0
- package/.agents/tests/fm-herdr-submit-confirm-live-e2e.test.sh +125 -0
- package/.agents/tests/fm-herdr-version-floor-live-e2e.test.sh +144 -0
- package/.agents/tests/fm-home-summary-refresh.test.sh +971 -0
- package/.agents/tests/fm-inactive-reconcile.test.sh +485 -0
- package/.agents/tests/fm-kimi-harness.test.sh +687 -0
- package/.agents/tests/fm-lint-workflows.test.sh +532 -0
- package/.agents/tests/fm-lint.test.sh +1023 -0
- package/.agents/tests/fm-muse-harness.test.sh +932 -0
- package/.agents/tests/fm-muse-signals-live-e2e.test.sh +205 -0
- package/.agents/tests/fm-no-mistakes-required.test.sh +72 -0
- package/.agents/tests/fm-on.test.sh +507 -0
- package/.agents/tests/fm-opencode-primary-live-e2e.test.sh +357 -0
- package/.agents/tests/fm-operational-input.test.sh +160 -0
- package/.agents/tests/fm-peek-remote.test.sh +110 -0
- package/.agents/tests/fm-pending-reply.test.sh +1288 -0
- package/.agents/tests/fm-pi-branch-extension.test.sh +3182 -0
- package/.agents/tests/fm-pi-branch-live-e2e.test.sh +527 -0
- package/.agents/tests/fm-pi-primary-live-e2e.test.sh +345 -0
- package/.agents/tests/fm-pi-primary-types.test.sh +68 -0
- package/.agents/tests/fm-pi-watch-extension.test.sh +2843 -0
- package/.agents/tests/fm-pr-check-security.test.sh +2140 -0
- package/.agents/tests/fm-pr-merge.test.sh +2135 -0
- package/.agents/tests/fm-procevent-quota.test.sh +225 -0
- package/.agents/tests/fm-procevent-when.test.sh +406 -0
- package/.agents/tests/fm-procevent.test.sh +1745 -0
- package/.agents/tests/fm-project-origin.test.sh +110 -0
- package/.agents/tests/fm-public-followup.test.sh +2272 -0
- package/.agents/tests/fm-quota-array-dispatch-live-e2e.test.sh +526 -0
- package/.agents/tests/fm-quota-choose.test.sh +626 -0
- package/.agents/tests/fm-remote-backlog-handoff.test.sh +453 -0
- package/.agents/tests/fm-remote-doctor.test.sh +625 -0
- package/.agents/tests/fm-remote-entrypoint.test.sh +59 -0
- package/.agents/tests/fm-remote-job-orphan-reap.test.sh +205 -0
- package/.agents/tests/fm-remote-job.test.sh +768 -0
- package/.agents/tests/fm-remote-reply.test.sh +520 -0
- package/.agents/tests/fm-remote-secondmate-lifecycle-e2e.test.sh +1256 -0
- package/.agents/tests/fm-remote-secondmate-parent-binding.test.sh +326 -0
- package/.agents/tests/fm-remote-secondmate-trace-context.test.sh +310 -0
- package/.agents/tests/fm-remote-transport-lanes.test.sh +431 -0
- package/.agents/tests/fm-review-diff.test.sh +176 -0
- package/.agents/tests/fm-secondmate-harness.test.sh +2600 -0
- package/.agents/tests/fm-secondmate-lifecycle-e2e.test.sh +259 -0
- package/.agents/tests/fm-secondmate-liveness.test.sh +559 -0
- package/.agents/tests/fm-secondmate-reconcile.test.sh +732 -0
- package/.agents/tests/fm-secondmate-safety.test.sh +2972 -0
- package/.agents/tests/fm-secondmate-sync.test.sh +913 -0
- package/.agents/tests/fm-send-inbox-doorbell-live-e2e.test.sh +206 -0
- package/.agents/tests/fm-send-inbox.test.sh +352 -0
- package/.agents/tests/fm-send-popup-settle.test.sh +167 -0
- package/.agents/tests/fm-send-remote-delivery.test.sh +796 -0
- package/.agents/tests/fm-send-resolve-key.test.sh +551 -0
- package/.agents/tests/fm-send-secondmate-marker-herdr-e2e.test.sh +187 -0
- package/.agents/tests/fm-send-secondmate-marker.test.sh +278 -0
- package/.agents/tests/fm-send-settle.test.sh +147 -0
- package/.agents/tests/fm-send-strict.test.sh +241 -0
- package/.agents/tests/fm-session-lock-ancestry.test.sh +365 -0
- package/.agents/tests/fm-session-start.test.sh +2515 -0
- package/.agents/tests/fm-sessionstart-hook-live-e2e.test.sh +631 -0
- package/.agents/tests/fm-sessionstart-instruction-refresh-live-e2e.test.sh +230 -0
- package/.agents/tests/fm-sessionstart-nudge.test.sh +1039 -0
- package/.agents/tests/fm-shared-captain-inheritance.test.sh +404 -0
- package/.agents/tests/fm-spawn-batch.test.sh +148 -0
- package/.agents/tests/fm-spawn-dispatch-profile.test.sh +827 -0
- package/.agents/tests/fm-spawn-pool-base-freshen.test.sh +440 -0
- package/.agents/tests/fm-spawn-worktree-settle.test.sh +147 -0
- package/.agents/tests/fm-startup-memory-budget.test.sh +333 -0
- package/.agents/tests/fm-startup-network.test.sh +712 -0
- package/.agents/tests/fm-stow-cascade.test.sh +370 -0
- package/.agents/tests/fm-subagent-pretool-check.test.sh +291 -0
- package/.agents/tests/fm-supervision-events.test.sh +156 -0
- package/.agents/tests/fm-supervision-instructions.test.sh +189 -0
- package/.agents/tests/fm-tangle-guard.test.sh +277 -0
- package/.agents/tests/fm-task-delivery.test.sh +420 -0
- package/.agents/tests/fm-task-inbox.test.sh +513 -0
- package/.agents/tests/fm-teardown-endpoint-safety.test.sh +374 -0
- package/.agents/tests/fm-teardown.test.sh +2665 -0
- package/.agents/tests/fm-test-fixture-cleanup.test.sh +172 -0
- package/.agents/tests/fm-test-fixtures.test.sh +132 -0
- package/.agents/tests/fm-test-isolation-proof.test.sh +278 -0
- package/.agents/tests/fm-test-run.test.sh +1196 -0
- package/.agents/tests/fm-tmux-agent-liveness.test.sh +354 -0
- package/.agents/tests/fm-tmux-submit-busy.test.sh +340 -0
- package/.agents/tests/fm-tool-update-check.test.sh +1044 -0
- package/.agents/tests/fm-trace-context-lib.test.sh +253 -0
- package/.agents/tests/fm-trace-context-spawn.test.sh +581 -0
- package/.agents/tests/fm-transition-lib.test.sh +54 -0
- package/.agents/tests/fm-turnend-guard.test.sh +1822 -0
- package/.agents/tests/fm-update.test.sh +304 -0
- package/.agents/tests/fm-vendor-auth-probe.test.sh +395 -0
- package/.agents/tests/fm-voice-relay.test.sh +4741 -0
- package/.agents/tests/fm-wake-daemon-lifecycle-e2e.test.sh +171 -0
- package/.agents/tests/fm-wake-drain-open-decisions-cursor.test.sh +356 -0
- package/.agents/tests/fm-wake-drain-open-decisions.test.sh +226 -0
- package/.agents/tests/fm-wake-drain-unread-status.test.sh +379 -0
- package/.agents/tests/fm-wake-queue.test.sh +1224 -0
- package/.agents/tests/fm-watch-arm.test.sh +821 -0
- package/.agents/tests/fm-watch-checkpoint.test.sh +87 -0
- package/.agents/tests/fm-watch-recovery-loop.test.sh +223 -0
- package/.agents/tests/fm-watch-triage.test.sh +3889 -0
- package/.agents/tests/fm-watcher-lock.test.sh +1133 -0
- package/.agents/tests/fm-x-mode.test.sh +3042 -0
- package/.agents/tests/gleipnir-guard-pretool-check.test.sh +51 -0
- package/.agents/tests/gleipnir-machine-lock.test.sh +130 -0
- package/.agents/tests/herdr-test-safety.sh +42 -0
- package/.agents/tests/lib.sh +315 -0
- package/.agents/tests/remote-herdr-fixture.sh +125 -0
- package/.agents/tests/secondmate-helpers.sh +193 -0
- package/.agents/tests/smoke.test.sh +93 -0
- package/.agents/tests/wake-helpers.sh +338 -0
- package/.agents/tests/zellij-test-safety.sh +60 -0
- package/.agents/tools/README.md +10 -0
- package/.agents/tools/bin/tasks-cli +267 -0
- package/.agents/tools/tasks-cli.ts +216 -0
- package/AGENTS.md +454 -0
- package/CHANGELOG.md +881 -0
- package/LICENSE +1 -1
- package/NOTICE +63 -0
- package/README.md +113 -39
- package/RULES/01-domains.md +51 -0
- package/RULES/02-agents.md +78 -0
- package/RULES/03-houses.md +61 -0
- package/RULES/04-hoard.md +65 -0
- package/RULES/05-platforms.md +67 -0
- package/RULES/06-append-only.md +58 -0
- package/RULES/07-config.md +45 -0
- package/RULES/08-delivery-gate.md +75 -0
- package/RULES/README.md +20 -0
- package/bin/README.md +107 -0
- package/bin/a2a-mcp.sh +98 -0
- package/bin/a2a-serve.py +103 -0
- package/bin/a2a-serve.sh +8 -0
- package/bin/a2a-talk.sh +50 -0
- package/bin/a2abridge-ensure.sh +108 -0
- package/bin/agent-run.sh +43 -0
- package/bin/agents-config.sh +233 -0
- package/bin/apodex-smoke-test.sh +92 -0
- package/bin/bifrost-bridge.sh +112 -0
- package/bin/bifrost-ingress.sh +77 -0
- package/bin/bootstrap-macos.sh +107 -0
- package/bin/bootstrap-windows.ps1 +112 -0
- package/bin/branch-guard.sh +64 -0
- package/bin/brokk +73 -0
- package/bin/brokk-classify-lib.sh +1770 -0
- package/bin/brokk-lease-lib.sh +222 -0
- package/bin/brokk-lease.sh +193 -0
- package/bin/brokk-lint.sh +65 -0
- package/bin/brokk-send.sh +38 -0
- package/bin/brokk-update.sh +9 -0
- package/bin/brokk-wake-grant.sh +127 -0
- package/bin/brokk-wake-lib.sh +1849 -0
- package/bin/changelog-guard.sh +165 -0
- package/bin/crash-sense.sh +160 -0
- package/bin/desktop-place.sh +224 -0
- package/bin/docs-guard.sh +39 -0
- package/bin/editor-place.sh +207 -0
- package/bin/eindri-acclaim.sh +34 -0
- package/bin/eindri-control.sh +28 -0
- package/bin/eindri-role.sh +83 -0
- package/bin/eindri-seen.sh +41 -0
- package/bin/eindri-send.sh +15 -0
- package/bin/eindri-start.sh +85 -0
- package/bin/eindri-watch.sh +57 -0
- package/bin/einherjar-spawn.sh +576 -0
- package/bin/eir-doctor.sh +112 -0
- package/bin/erindi-brief.sh +271 -0
- package/bin/fleet-apply.sh +68 -0
- package/bin/github-deploy.sh +81 -0
- package/bin/gjallarhorn-expose.sh +102 -0
- package/bin/gjallarhorn-notify.sh +58 -0
- package/bin/gjallarhorn-purge.sh +54 -0
- package/bin/gjallarhorn-tunnel.sh +72 -0
- package/bin/gleipnir-lock-lib.sh +284 -0
- package/bin/groa-update.sh +122 -0
- package/bin/hall-snapshot.sh +92 -0
- package/bin/hamr-harness.sh +246 -0
- package/bin/heimdall-ssh-keys.sh +374 -0
- package/bin/herdr-agents.py +44 -0
- package/bin/herdr-ensure.sh +104 -0
- package/bin/herdr-run.sh +431 -0
- package/bin/hermes-ensure.sh +88 -0
- package/bin/hoard-lib.sh +25 -0
- package/bin/hodd.sh +78 -0
- package/bin/host-sense.sh +199 -0
- package/bin/huginn-research-worker.sh +108 -0
- package/bin/local-model-lock.sh +51 -0
- package/bin/mimir-bridge.py +226 -0
- package/bin/mimir-bridge.sh +87 -0
- package/bin/mimir-ingest.sh +131 -0
- package/bin/mimir.sh +113 -0
- package/bin/mjollnir-webhook.sh +59 -0
- package/bin/mjollnir.sh +85 -0
- package/bin/model-hardware.sh +82 -0
- package/bin/model-resolve.sh +147 -0
- package/bin/models-detect.sh +178 -0
- package/bin/nornir-cron-start.sh +162 -0
- package/bin/nornir-job-daily-briefing.sh +191 -0
- package/bin/nornir-job-git-sync.sh +152 -0
- package/bin/nornir-job-memory-housekeeping.sh +114 -0
- package/bin/nornir-job-observer.sh +166 -0
- package/bin/nornir-job-skillopt-sleep.sh +76 -0
- package/bin/omarchy-hook-install.sh +60 -0
- package/bin/omarchy-install.sh +148 -0
- package/bin/omarchy-plugins.sh +174 -0
- package/bin/omarchy-sense.sh +149 -0
- package/bin/perm-guard.sh +30 -0
- package/bin/pi-agent.sh +68 -0
- package/bin/pi-ensure.sh +77 -0
- package/bin/pi-local.sh +37 -0
- package/bin/pi-seat.sh +63 -0
- package/bin/prereq-ensure.sh +166 -0
- package/bin/private-guard.sh +38 -0
- package/bin/project-git.sh +55 -0
- package/bin/public-guard.sh +70 -0
- package/bin/ratatoskr.sh +49 -0
- package/bin/realm-lib.sh +32 -0
- package/bin/repo-scrub.sh +62 -0
- package/bin/rodd-operational-input.sh +250 -0
- package/bin/runes-append.sh +198 -0
- package/bin/saga-session-start.sh +172 -0
- package/bin/saga-sessionstart-run.sh +79 -0
- package/bin/saga-wake-drain.sh +41 -0
- package/bin/secret-guard.sh +63 -0
- package/bin/sessrumnir-ensure.sh +100 -0
- package/bin/sessrumnir-sync.sh +237 -0
- package/bin/sessrumnir.sh +91 -0
- package/bin/skillopt-setup.sh +76 -0
- package/bin/skuld-branch-outcome.sh +203 -0
- package/bin/skuld-branch-prompt.sh +101 -0
- package/bin/smidja-bootstrap.sh +90 -0
- package/bin/smidja-observe.sh +86 -0
- package/bin/syn-arm-pretool-check.sh +57 -0
- package/bin/syn-asset-pretool-check.sh +76 -0
- package/bin/syn-cd-pretool-check.sh +28 -0
- package/bin/syn-guard-pretool-check.sh +83 -0
- package/bin/syn-turnend-guard.sh +36 -0
- package/bin/syn-watch-arm.sh +99 -0
- package/bin/tailscale-sync.sh +190 -0
- package/bin/telegram-bot.sh +69 -0
- package/bin/toolchain.sh +74 -0
- package/bin/utgard.sh +111 -0
- package/bin/valhalla.sh +115 -0
- package/bin/valknut-load.sh +260 -0
- package/bin/vor-crew-state.sh +124 -0
- package/bin/wedge-notify.sh +47 -0
- package/bin/workspace-provision.sh +80 -0
- package/bin/workspace-rag.sh +150 -0
- package/bin/wyrd-db.sh +47 -0
- package/bin/yggdrasil.sh +152 -0
- package/bin/ymir-edit.sh +145 -0
- package/bin/ymir-install.sh +641 -0
- package/bin/ymir-invite.sh +93 -0
- package/bin/ymir-isolation.sh +88 -0
- package/bin/ymir-migrate.sh +61 -0
- package/bin/ymir-platform.sh +348 -0
- package/bin/ymir-say.sh +97 -0
- package/bin/ymir-setup-auth.sh +108 -0
- package/bin/ymir-validate.sh +173 -0
- package/bin/ymir.js +74 -16
- package/docs/Architecture.md +339 -0
- package/docs/design.md +351 -0
- package/docs/installations/README.md +63 -0
- package/docs/installations/ymir-home.md +93 -0
- package/docs/integration.md +105 -0
- package/docs/lore.md +1056 -0
- package/docs/research/agent-harnesses.md +290 -0
- package/docs/runbooks/README.md +19 -0
- package/docs/runbooks/a2a.md +91 -0
- package/docs/runbooks/agent-permissions.md +99 -0
- package/docs/runbooks/agents.md +57 -0
- package/docs/runbooks/models.md +69 -0
- package/docs/runbooks/realm-onboarding.md +60 -0
- package/docs/runbooks/secrets-and-hoard.md +60 -0
- package/docs/runbooks/updates-and-migrations.md +110 -0
- package/docs/runbooks/worktrees-isolation.md +72 -0
- package/docs/session-start.md +105 -0
- package/docs/skillopt-integration.md +321 -0
- package/docs/sync-system.md +66 -0
- package/docs/workspaces.md +104 -0
- package/docs/ymir-rut.md +260 -0
- package/package.json +44 -14
- package/packaging/build.sh +74 -0
- package/packaging/macos/Ymir Installer.command +43 -0
- package/packaging/windows/ymir-setup.nsi +74 -0
- package/scripts/README.md +22 -0
- package/scripts/electron.sh +210 -0
- package/scripts/start.sh +167 -0
- package/scripts/stop.sh +113 -0
- package/install.sh +0 -35
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ymir-omarchy
|
|
3
|
+
description: >-
|
|
4
|
+
Omarchy-native operation for Ymir. REQUIRED whenever the task touches the host
|
|
5
|
+
desktop: Hyprland, the Omarchy shell/bar, themes, monitors, window rules,
|
|
6
|
+
keybindings, idle/lock, night light, screenshots, reminders, or any file under
|
|
7
|
+
~/.config/hypr/ or ~/.config/omarchy/. Also use when placing the Ymir desktop
|
|
8
|
+
apps (Hlidskjalf / Smíðja) on a screen, when a native crash involves the GPU or
|
|
9
|
+
Wayland, and to help the Allfather set up or tune the Omarchy machine Ymir runs
|
|
10
|
+
on. Load this before editing any ~/.config/ file on an Omarchy host.
|
|
11
|
+
allowed-tools: read,write,bash,glob,grep
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Ymir on Omarchy
|
|
15
|
+
|
|
16
|
+
Ymir runs *on* Omarchy — an opinionated Arch Linux + Hyprland distribution. On an
|
|
17
|
+
Omarchy host, the desktop is not a detail: it decides where our windows land, how
|
|
18
|
+
they render, and whether the GPU process survives. This skill is how Ymir is a
|
|
19
|
+
good citizen of that machine.
|
|
20
|
+
|
|
21
|
+
**Router:** `.agents/skills/galdr-ymirsystem/SKILL.md`. **Upstream skill (authoritative for
|
|
22
|
+
Omarchy itself):** `/usr/share/omarchy/default/agents/skills/omarchy/SKILL.md` and
|
|
23
|
+
`~/.pi/agent/skills/omarchy/`. Read that one for pure Omarchy work; this one adds
|
|
24
|
+
the Ymir integration and the hard-won facts below.
|
|
25
|
+
|
|
26
|
+
## The two laws
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
omarchy_laws[2]{id,law}:
|
|
30
|
+
"1","Never edit anything under /usr/share/omarchy/ — it is package-owned and overwritten on update. Reading it is safe and encouraged. Edit ~/.config/ instead."
|
|
31
|
+
"2","Hyprland owns window placement, not the app. Let the compositor place windows; the app must not fight it."
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Detecting the host
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Are we on Omarchy at all? (never assume)
|
|
38
|
+
[ -d /usr/share/omarchy ] && echo "Omarchy host"
|
|
39
|
+
omarchy version 2>/dev/null || true
|
|
40
|
+
hyprctl monitors -j 2>/dev/null | head -c 200
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Ymir must work on a non-Omarchy host too. Every Omarchy-specific behaviour is
|
|
44
|
+
gated on `[ -d /usr/share/omarchy ]`; nothing here may break a plain Arch box.
|
|
45
|
+
|
|
46
|
+
## Monitors, scale, and the coordinate trap
|
|
47
|
+
|
|
48
|
+
**The fact that costs the most time:** on Omarchy the panel may run at a
|
|
49
|
+
fractional scale (e.g. a 1920×1200 panel at `scale 1.5` is a **1280×800 logical**
|
|
50
|
+
desktop). An app that computes window geometry from *physical* pixels will be
|
|
51
|
+
wrong by the scale factor and will fill the whole screen.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
hyprctl monitors -j # name, id, width, height, scale, focused, x, y
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- `hyprctl` reports **physical** width/height **and** `scale`.
|
|
58
|
+
- Electron's `screen` API reports **logical** (already-scaled) bounds.
|
|
59
|
+
- Logical = physical / scale. Never mix the two.
|
|
60
|
+
|
|
61
|
+
### Placing the Ymir desktop apps
|
|
62
|
+
|
|
63
|
+
Hlidskjalf and Smíðja are dashboards the Allfather keeps *beside* his work, so
|
|
64
|
+
they belong on a **non-primary** display when one is attached, and on the primary
|
|
65
|
+
when it is not (the laptop case). Two rules:
|
|
66
|
+
|
|
67
|
+
1. **Prefer a secondary display**, never the focused/primary one, when
|
|
68
|
+
`screen.getAllDisplays().length > 1`.
|
|
69
|
+
2. **Clamp to the display's work area** in *logical* units, and center there. A
|
|
70
|
+
window wider than the logical desktop must be shrunk, not pushed off-screen.
|
|
71
|
+
|
|
72
|
+
Identity of a display is its `id`; `screen.getPrimaryDisplay()` is the one to
|
|
73
|
+
avoid. If only one display exists, do nothing clever — center it and move on.
|
|
74
|
+
|
|
75
|
+
## The GPU / Wayland crash (amdgpu)
|
|
76
|
+
|
|
77
|
+
Observed on this class of machine (AMD Cezanne iGPU with a **512 MB** VRAM
|
|
78
|
+
carve-out, plus a discrete NVIDIA card):
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
kernel: amdgpu 0000:08:00.0: [drm] *ERROR* Not enough memory for command submission!
|
|
82
|
+
electron[PID]: segfault at 0 error 4 in electron
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Electron's `--type=gpu-process` dies with `SIGSEGV` when the iGPU cannot satisfy a
|
|
86
|
+
command submission. It is **not** an Electron bug in our code and **not** an OOM
|
|
87
|
+
(it happens with plenty of system RAM). Diagnose it properly:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
coredumpctl list | grep electron # a pattern, or a one-off?
|
|
91
|
+
journalctl --since "<t-1min>" --until "<t+1min>" | grep -i 'amdgpu\|drm\|segfault'
|
|
92
|
+
cat /sys/class/drm/card*/device/mem_info_vram_used # VRAM actually in use
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Mitigation for dashboards** (they are not 3D apps):
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
YMIR_DESKTOP_DISABLE_GPU=1 scripts/electron.sh start --both # software rendering
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`scripts/electron.sh` reads that variable and adds `--disable-gpu
|
|
102
|
+
--disable-gpu-compositing`. Use it on a small-VRAM iGPU; leave GPU on where the
|
|
103
|
+
discrete card drives the display.
|
|
104
|
+
|
|
105
|
+
## Starting the Ymir apps
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
scripts/electron.sh start --both # Hlidskjalf + Smíðja, separate apps
|
|
109
|
+
scripts/electron.sh status # is each one REALLY running?
|
|
110
|
+
scripts/electron.sh stop
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Do not track an Electron app by the pid returned from `.bin/electron`** — that
|
|
114
|
+
is a node shim which *spawns* the real binary, so the pid is wrong and a second
|
|
115
|
+
launch will stack on the first. Track it by its own command line (the per-view
|
|
116
|
+
`--user-data-dir` is the stable identity), which is what `electron.sh` does.
|
|
117
|
+
|
|
118
|
+
## Safe customisation (the short version)
|
|
119
|
+
|
|
120
|
+
| Want | Do |
|
|
121
|
+
|---|---|
|
|
122
|
+
| Bar / widgets / idle | edit `~/.config/omarchy/shell.json`, then `omarchy restart shell` |
|
|
123
|
+
| Keybindings, gaps, monitors | edit `~/.config/hypr/*.lua`, then `hyprctl reload` + `hyprctl configerrors` |
|
|
124
|
+
| Theme | `omarchy theme set <name>`; customise in `~/.config/omarchy/themes/<name>/` |
|
|
125
|
+
| Reminder | `omarchy reminder <minutes> "text"` |
|
|
126
|
+
| Screenshot / record | `omarchy capture screenshot` · `omarchy screenrecord --fullscreen` |
|
|
127
|
+
| Night light | `omarchy toggle nightlight` |
|
|
128
|
+
| Lock after idle | `idle.lock` in `~/.config/omarchy/shell.json` |
|
|
129
|
+
| Install a package | `omarchy pkg add <pkg>` (AUR: `omarchy pkg aur add <pkg>`) |
|
|
130
|
+
| Debug | `omarchy debug --no-sudo --print` (always these flags) |
|
|
131
|
+
|
|
132
|
+
Always back up a config before editing it: `cp f f.bak.$(date +%s)`.
|
|
133
|
+
|
|
134
|
+
## Discovery
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
omarchy commands # every documented command
|
|
138
|
+
omarchy <group> --help # omarchy theme|refresh|restart|toggle|bar|...
|
|
139
|
+
omarchy commands --json # machine-readable
|
|
140
|
+
cat $(which omarchy-theme-set) # read a command's source (safe)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Being useful to an Omarchy user
|
|
144
|
+
|
|
145
|
+
When the Allfather wants his machine set up or tuned, Ymir should *help* rather
|
|
146
|
+
than merely not-break: report the monitor layout and scale, propose a sane window
|
|
147
|
+
placement for the dashboards, offer the GPU mitigation when the iGPU is small,
|
|
148
|
+
and use `omarchy` commands rather than raw edits wherever one exists. Offer a
|
|
149
|
+
backup before every config change, and never run `omarchy refresh <x>` (which
|
|
150
|
+
resets config) without explicit confirmation.
|
|
151
|
+
|
|
152
|
+
## The editor (Pi's `/edit`)
|
|
153
|
+
|
|
154
|
+
Pi ships a user-facing **Open Editor** extension (`.pi/extensions/open-editor.ts`) that
|
|
155
|
+
opens files from the working directory in the Allfather's own editor. It is
|
|
156
|
+
**strictly his** — no LLM tool is registered, because agents already have `read`
|
|
157
|
+
and `edit`. Know it, name it when he would reach for it, and never try to drive it
|
|
158
|
+
yourself.
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
editor_surface[2]{key,what}:
|
|
162
|
+
"/edit [path]","slash command with tab-completion over cwd files; no path opens the directory itself"
|
|
163
|
+
"ctrl+shift+e","file picker over cwd"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**How the editor resolves:** `$VISUAL` → `$EDITOR` → **the first editor that
|
|
167
|
+
actually exists** on the host, tried in this order: `code cursor zed subl nvim vim
|
|
168
|
+
hx helix nano micro emacs vi`. A **terminal** editor (nvim, vim, helix, nano,
|
|
169
|
+
emacs) blocks Pi while open — the TUI suspends and resumes on exit. A **GUI**
|
|
170
|
+
editor (code, cursor, zed, subl) launches detached, so Pi stays interactive.
|
|
171
|
+
|
|
172
|
+
**Why the existence check matters off Omarchy:** the old fallback was a bare `vi`,
|
|
173
|
+
and `vi` is **absent on this very machine** — as it is on many minimal hosts. A
|
|
174
|
+
configured editor that is not installed no longer poisons the chain: the extension
|
|
175
|
+
probes `$PATH` and falls through to one that is real. So `/edit` works on a plain
|
|
176
|
+
Arch box, a Debian box, or anything else where Omarchy's launcher does not exist.
|
|
177
|
+
|
|
178
|
+
### Choosing the editor (Omarchy forces its own)
|
|
179
|
+
|
|
180
|
+
Omarchy **hard-sets** `EDITOR` twice — `${EDITOR:-omarchy-launch-editor --inline}`
|
|
181
|
+
in `default/bash/envs`, and a forced value in `default/uwsm/default`. A user
|
|
182
|
+
override therefore goes in the uwsm user dir, which is sourced **after** the
|
|
183
|
+
defaults:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
~/.config/uwsm/env.d/10-ymir-editor:
|
|
187
|
+
export EDITOR="code" # a GUI editor, so no --wait: it launches detached
|
|
188
|
+
export VISUAL="code"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
(`--wait` is wrong for a GUI editor — VS Code hands the file to the running
|
|
192
|
+
instance and exits, so waiting holds nothing.) Changes need a session restart.
|
|
193
|
+
|
|
194
|
+
### The editor gets its own desktop
|
|
195
|
+
|
|
196
|
+
The editor must not open on the desktop the Allfather is reading. Hyprland applies
|
|
197
|
+
window rules **at map time**, so the window never appears there at all:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
bin/editor-place.sh plan # which desktop it would take
|
|
201
|
+
bin/editor-place.sh apply # write the rule + hyprctl reload
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
It writes into the SAME `~/.config/hypr/ymir-desktops.lua` the apps use (so one
|
|
205
|
+
file owns every Ymir window placement) and re-derives the app rules rather than
|
|
206
|
+
clobbering them:
|
|
207
|
+
|
|
208
|
+
```lua
|
|
209
|
+
o.window({ class = "^code$" }, { workspace = "7", no_focus = true })
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**`no_focus = true` is the load-bearing half.** Without it the window is placed on
|
|
213
|
+
the right desktop but **the focus follows it** — the Allfather is dragged off his
|
|
214
|
+
own desk. Omarchy's own `default/hypr/windows.lua` uses the same idiom. Always
|
|
215
|
+
verify with `hyprctl configerrors` (must be empty) after a reload.
|
|
216
|
+
|
|
217
|
+
**The dispatch road does NOT work here.** This Hyprland (0.56) replaced the classic
|
|
218
|
+
dispatch interface with a Lua API: `hyprctl dispatch movetoworkspacesilent
|
|
219
|
+
5,class:...` fails outright, and `keyword` reports "can't work with non-legacy
|
|
220
|
+
parsers — use eval". The map-time rule file is the road that holds.
|
|
221
|
+
|
|
222
|
+
When the Allfather wants to *look at* a file rather than have it read aloud, the
|
|
223
|
+
answer is `/edit <path>` — say so plainly instead of pasting its contents.
|
|
224
|
+
|
|
225
|
+
## Ymir speaks on the desktop
|
|
226
|
+
|
|
227
|
+
Ymir works for hours unwatched, so when something is worth knowing it says so
|
|
228
|
+
where the Allfather already is. `bin/ymir-say.sh` is the **single owner** of that
|
|
229
|
+
manner — anything with news calls it, so the voice cannot drift.
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
bin/ymir-say.sh "<headline>" ["<body>"] # a plain note
|
|
233
|
+
bin/ymir-say.sh --mark-done "<what>" ["<detail>"] # a job finished (low urgency)
|
|
234
|
+
bin/ymir-say.sh --mark-alarm "<what>" ["<detail>"] # needs his word (critical)
|
|
235
|
+
bin/ymir-say.sh --mark-fail "<what>" ["<detail>"] # something broke (critical)
|
|
236
|
+
bin/ymir-say.sh status # what has been said
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
It speaks through Omarchy's own notifier (`omarchy-notification-send`) when
|
|
240
|
+
present, else `notify-send`, and always records the line in
|
|
241
|
+
`state/ymir-said.log` — so a popup missed is a line still found. On a host with
|
|
242
|
+
neither, the line is recorded and it says "record only"; a silent host is never a
|
|
243
|
+
lost message.
|
|
244
|
+
|
|
245
|
+
**Who speaks through it:** the wedge alarm (`bin/wedge-notify.sh`, when an
|
|
246
|
+
escalation cannot reach a wedged pane) and the crash watcher (`bin/crash-sense.sh`, a
|
|
247
|
+
new `coredumpctl` entry). Both route to `ymir-say.sh` so urgency, glyph, and app
|
|
248
|
+
identity stay one voice.
|
|
249
|
+
|
|
250
|
+
## Maintaining this
|
|
251
|
+
|
|
252
|
+
- **Owner:** Brokk. **Router:** `.agents/skills/galdr-ymirsystem/SKILL.md`.
|
|
253
|
+
- Upstream Omarchy skill is authoritative for Omarchy itself; keep only Ymir's
|
|
254
|
+
integration facts and this machine's hard-won lessons here.
|
|
255
|
+
- When the desktop behaviour changes, update this asset and
|
|
256
|
+
`assets/hlidskjalf-ui.md` together.
|
|
257
|
+
|
|
258
|
+
## Platform layers (Rule 05)
|
|
259
|
+
|
|
260
|
+
Ymir is **Omarchy-first**, not Omarchy-only. The core is portable; Omarchy is the
|
|
261
|
+
first-class installation layer on top of it. Anything below that assumes Hyprland
|
|
262
|
+
or `/usr/share/omarchy` is this layer's business and is gated on the host — on a
|
|
263
|
+
Mac or on WSL those steps report a clean skip and the core still runs.
|
|
264
|
+
|
|
265
|
+
When a core feature changes, this layer is updated in the same change
|
|
266
|
+
(`RULES/05-platforms.md`). Details: `galdr-ymirsystem/assets/installation.md`.
|
|
267
|
+
|
|
268
|
+
### Electron GPU-process crashes on the shared-memory iGPU
|
|
269
|
+
|
|
270
|
+
Both dashboards can look healthy while `coredumpctl` fills with SIGSEGV cores
|
|
271
|
+
from `electron --type=gpu-process` and the kernel logs `amdgpu … Not enough
|
|
272
|
+
memory for command submission`. Only the GPU process dies, so the failure is
|
|
273
|
+
easy to miss.
|
|
274
|
+
|
|
275
|
+
The iGPU backs its graphics memory with system RAM (GTT), and a local model
|
|
276
|
+
served on that same iGPU holds several GiB of it — after which the driver fails
|
|
277
|
+
the desktop's command submissions. `scripts/electron.sh` now detects a small VRAM
|
|
278
|
+
carve-out (`igpu_vram_small()`, threshold `YMIR_IGPU_VRAM_SMALL_MIB`, default
|
|
279
|
+
2048) and runs the dashboards on software rendering; `YMIR_DESKTOP_DISABLE_GPU`
|
|
280
|
+
forces either path. Detail and the evidence: `galdr-ymirsystem/assets/hlidskjalf-ui.md`.
|
|
281
|
+
|
|
282
|
+
### Speed-starts for the Ymir apps
|
|
283
|
+
|
|
284
|
+
The launcher entries alone are not a speed start: reaching Hlidskjalf meant
|
|
285
|
+
opening the app menu. Two keys now raise them, generated by
|
|
286
|
+
`bin/desktop-place.sh apply` into `~/.config/hypr/ymir-launchers.lua` and
|
|
287
|
+
required from `hyprland.lua` like the placement rules:
|
|
288
|
+
|
|
289
|
+
| Key | App |
|
|
290
|
+
|---|---|
|
|
291
|
+
| **SUPER + Y** | Ymir Hlidskjalf |
|
|
292
|
+
| **SUPER + M** | Ymir Smiðja |
|
|
293
|
+
|
|
294
|
+
They live in their own file on purpose: `editor-place.sh` regenerates
|
|
295
|
+
`ymir-desktops.lua` and preserves only window rules, so binds placed there would
|
|
296
|
+
be dropped. Both keys were verified free before use (`omarchy menu keybindings
|
|
297
|
+
--print`), and the behaviour is a plain Omarchy `o.bind(label, command)`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Operator runbooks
|
|
2
|
+
|
|
3
|
+
Task-oriented guides under `docs/runbooks/`, written for the operator:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
runbooks[5]{path,load_when}:
|
|
7
|
+
"docs/runbooks/models.md","choose models per agent; local vs hosted; per-machine overlays"
|
|
8
|
+
"docs/runbooks/agents.md","Eindri profiles: home, add, run, dispatch"
|
|
9
|
+
"docs/runbooks/tailscale-sync.md","sync pi data across your own machines over Tailscale"
|
|
10
|
+
"docs/runbooks/updates-and-migrations.md","update the runtime; heal old homes (ymir-migrate)"
|
|
11
|
+
"docs/runbooks/secrets-and-hoard.md","Hodd: secrets by path, secret-guard, rotation + scrub"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Index: `docs/runbooks/README.md`. When a host task has an operator-facing
|
|
15
|
+
procedure, add a runbook there and a row here.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ymir-thjazi
|
|
3
|
+
description: >-
|
|
4
|
+
Þjazi — the terminal backend that hosts Ymir's agent panes. Use when spawning,
|
|
5
|
+
supervising, or debugging Eindri workers and presentation spaces, when choosing
|
|
6
|
+
or verifying the herdr/tmux backend, when herdr is missing or too old to install
|
|
7
|
+
or upgrade it, or when presentation spaces (herdr 0.8.0+) are involved. Load
|
|
8
|
+
before changing backend selection, pane layout, or spawn behaviour.
|
|
9
|
+
allowed-tools: read,write,bash,glob,grep
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Þjazi — the terminal backend
|
|
13
|
+
|
|
14
|
+
Þjazi is the giant who carries the gods' errands across the mountains; the backend
|
|
15
|
+
that carries Ymir's agents across terminal panes. In the code it is **herdr** (and
|
|
16
|
+
its verified reference sibling **tmux**). This skill is how Ymir is a
|
|
17
|
+
herdr-first system without breaking on a tmux-only host.
|
|
18
|
+
|
|
19
|
+
**Router:** `.agents/skills/galdr-ymirsystem/SKILL.md`.
|
|
20
|
+
|
|
21
|
+
## Raising an Eindri (the two roads)
|
|
22
|
+
|
|
23
|
+
An **Eindri** is a delegated hand (AGENTS.md; `docs/lore.md` §II — Brokk works the
|
|
24
|
+
bellows, Eitri/Eindri works the craft). Two roads seat one, and each fits its own
|
|
25
|
+
country. `bin/herdr-run.sh` is the runner; `bin/eindri-role.sh` names the smith.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
herdr_roads[2]{road,shape,use_when}:
|
|
29
|
+
"tab","one tab in this home's workspace (durable, the default)","the work outlasts the moment — a task with an artifact"
|
|
30
|
+
"space","a disposable workspace holding exactly this one errand, gone when it ends","the errand should leave no trace in the workspace you are living in"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**A tab is a tab, not a pane split.** Brokk's grain — and now ours — is that a
|
|
34
|
+
worker takes its **own tab in the home's workspace**, never a slice of yours. Your
|
|
35
|
+
pane keeps its width; the smith sits beside your tabs, reachable with a tab switch.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
bin/herdr-run.sh available # reach herdr? which session/workspace?
|
|
39
|
+
bin/herdr-run.sh worth-a-smith "<errand>" # THE FIRST LAW (see below)
|
|
40
|
+
bin/herdr-run.sh eindri -- "<task>" # the RIGHT smith, seated in a TAB
|
|
41
|
+
bin/herdr-run.sh eindri --space -- "<task>" # ...or in a disposable WORKSPACE
|
|
42
|
+
bin/herdr-run.sh eindri sindri -- "<task>" # name the smith explicitly
|
|
43
|
+
bin/herdr-run.sh eindri --role huginn -- "<task>"
|
|
44
|
+
bin/herdr-run.sh run <name> -- <command...> # a command in a tab (not an agent)
|
|
45
|
+
bin/herdr-run.sh agent-status # who stands, and in what state
|
|
46
|
+
bin/herdr-run.sh status # what seats we recorded
|
|
47
|
+
bin/herdr-run.sh close-all # clear the tabs/workspaces we made
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Quoting into a pane.** A pane runs its command through a *shell*, so `run`
|
|
51
|
+
quotes every argument on the way in (`printf '%q'`). Without that, an argument
|
|
52
|
+
containing spaces reached the pane as separate words and the command died on its
|
|
53
|
+
own second word — `--brief "the whole task"` arrived as `--brief the whole task`
|
|
54
|
+
and the worker answered `error: unknown arg: the`. Quote normally at the call
|
|
55
|
+
site; the bridge preserves it.
|
|
56
|
+
|
|
57
|
+
### The first law — a short errand is done in hand
|
|
58
|
+
|
|
59
|
+
A smith costs a context, a seat, and the Allfather's attention. So an errand is
|
|
60
|
+
weighed before it is seated:
|
|
61
|
+
|
|
62
|
+
- **A question is answered in hand.** "What is the pid?" "Why did it fail?" —
|
|
63
|
+
answered directly, never seated.
|
|
64
|
+
- **A one-line check is done in hand.** Brevity is not a task.
|
|
65
|
+
- **A task earns a smith** — work with an artifact: build, fix, implement, port,
|
|
66
|
+
research, audit, plan, document, review.
|
|
67
|
+
|
|
68
|
+
`worth-a-smith` decides, and `eindri` refuses to seat a smith for a question or a
|
|
69
|
+
trifle. Ask it first when you are unsure.
|
|
70
|
+
|
|
71
|
+
### The projection floor
|
|
72
|
+
|
|
73
|
+
A disposable workspace needs **herdr 0.8.0+** (protocol 19). Below that floor a
|
|
74
|
+
workspace-emptying close can steal the active workspace, so `--space` falls back
|
|
75
|
+
to a tab and says so, rather than risking your focus. `available` reports
|
|
76
|
+
`space_ok` for the running release.
|
|
77
|
+
|
|
78
|
+
### The law of the runner
|
|
79
|
+
|
|
80
|
+
Inside herdr the work is shown in its own tab or workspace; outside herdr it runs
|
|
81
|
+
**inline — the same result, no seats** — and if a seat cannot be raised the
|
|
82
|
+
command runs in place, so no work is ever lost to the theatre.
|
|
83
|
+
`YMIR_HERDR_PANES=0` forces inline anywhere.
|
|
84
|
+
|
|
85
|
+
### Session routing (a trap worth naming)
|
|
86
|
+
|
|
87
|
+
`HERDR_SESSION` alone is **not** a reliable router: with another herdr server
|
|
88
|
+
bound on the machine, a command silently reaches the wrong one. The runner always
|
|
89
|
+
passes the trailing `--session <name>` flag, which routes correctly. (Brokk's
|
|
90
|
+
`docs/herdr-backend.md` owns the evidence.)
|
|
91
|
+
|
|
92
|
+
## The right smith for the right task
|
|
93
|
+
|
|
94
|
+
An Eindri is a delegated hand (AGENTS.md; `docs/lore.md` §II: Brokk works the
|
|
95
|
+
bellows, Eitri/Eindri works the craft). The wrong smith for the metal produces
|
|
96
|
+
bad work, so the role is chosen deliberately:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
eindri_roles[8]{role,craft}:
|
|
100
|
+
"sindri","code — build, refactor, fix, test"
|
|
101
|
+
"bragi","content — marketing, SEO, social"
|
|
102
|
+
"huginn","research — search, analyse, discover"
|
|
103
|
+
"kvasir","scout — recon a codebase before work"
|
|
104
|
+
"mimir","plan — design the approach"
|
|
105
|
+
"snotra","document — prose, guides, references"
|
|
106
|
+
"forseti","review — judge the work"
|
|
107
|
+
"galdr","runtime — the Ymir distro itself"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
bin/eindri-role.sh list # the roster
|
|
112
|
+
bin/eindri-role.sh choose "<task text>" # the craft that fits
|
|
113
|
+
bin/eindri-role.sh for <role> # exact lookup
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
A named role wins; otherwise the craft is read from the errand itself ("write a
|
|
117
|
+
blog post" → `bragi`; "fix the login bug" → `sindri`). Several may stand at once.
|
|
118
|
+
|
|
119
|
+
## Ymir is herdr-first
|
|
120
|
+
|
|
121
|
+
At install, Ymir guarantees a terminal backend exists. The order is:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
backend_priority[3]{rank,backend,note}:
|
|
125
|
+
"1","herdr","Þjazi — preferred; carries protocol + presentation spaces"
|
|
126
|
+
"2","tmux","the verified reference backend; always acceptable"
|
|
127
|
+
"3","none","spawn is refused with a plain reason — never a silent fallback"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Selection is by config/env, in this order:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
config/backend # repo-level choice, if present
|
|
134
|
+
BROKK_BACKEND # env override
|
|
135
|
+
HERDR_ENV=1 # set inside a herdr pane
|
|
136
|
+
# else: tmux when available
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Verify before you trust
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
command -v herdr && herdr --version # e.g. herdr 0.8.2
|
|
143
|
+
echo "$BROKK_BACKEND" # explicit choice, if any
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Protocol floors** — check the version, not just the presence:
|
|
147
|
+
|
|
148
|
+
| Capability | Minimum |
|
|
149
|
+
|---|---|
|
|
150
|
+
| Agent panes (spawn/supervise) | Þjazi protocol **14+** |
|
|
151
|
+
| Presentation spaces | herdr **0.8.0+** |
|
|
152
|
+
|
|
153
|
+
A present-but-too-old herdr is a **failure**, not a fallback: refuse the capability
|
|
154
|
+
with a plain reason rather than degrading silently.
|
|
155
|
+
|
|
156
|
+
## Installing and upgrading
|
|
157
|
+
|
|
158
|
+
`bin/herdr-ensure.sh` (when present) is the single owner of provisioning; it
|
|
159
|
+
detects, installs when absent, and verifies the reported version. The pinned,
|
|
160
|
+
SHA-verified installer for the CI lane is `.agents/backend/fm-install-herdr.sh`
|
|
161
|
+
— it installs an **exact** version from official release assets, verifies SHA-256,
|
|
162
|
+
and refuses to finish unless the binary reports the pinned version and the
|
|
163
|
+
required protocol. Never install a floating "latest" for the pinned lane.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# CI/pinned lane (exact version + protocol check) — signature: <destination-dir>
|
|
167
|
+
.agents/backend/fm-install-herdr.sh "$HOME/.local/bin"
|
|
168
|
+
|
|
169
|
+
# User-space, if the helper is present
|
|
170
|
+
bin/herdr-ensure.sh status
|
|
171
|
+
bin/herdr-ensure.sh ensure --install
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Opting out of presentation spaces (they are presentation-only, never correctness)
|
|
175
|
+
is done with `config/herdr-presentation-spaces` — see AGENTS.md.
|
|
176
|
+
|
|
177
|
+
## What the backend actually does
|
|
178
|
+
|
|
179
|
+
- **Spawn** carries an Eindri into an isolated pane, on top of an isolated
|
|
180
|
+
Yggdrasil worktree, optionally inside Utgard. It prints one line:
|
|
181
|
+
`spawned <id> harness=<h> kind=<ship|scout> [mode=<m> yolo=<y>] backend=<b> target=<t> worktree=<wt> isolation=<on|off>`
|
|
182
|
+
- **Supervision** keeps one pane per worker and observes it; the Pi/OpenCode
|
|
183
|
+
extensions own continuity — never background the watcher arm by hand.
|
|
184
|
+
- **Presentation spaces** (herdr 0.8.0+) give a worker a shareable view; they are
|
|
185
|
+
presentation, not a control channel.
|
|
186
|
+
|
|
187
|
+
## Debugging
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
scripts/electron.sh status # if the app surface is the question
|
|
191
|
+
bin/backend/* or bin/einherjar-spawn.sh --help # spawn contract
|
|
192
|
+
# one pane, one worker: a second spawn for the same id must be refused
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
If workers vanish, compare the spawn line's `backend=` against the intended
|
|
196
|
+
backend selection above — a tmux fallback on a herdr-first host is a
|
|
197
|
+
misconfiguration, not a mystery.
|
|
198
|
+
|
|
199
|
+
## Maintaining this
|
|
200
|
+
|
|
201
|
+
- **Owner:** Brokk. **Router:** `.agents/skills/galdr-ymirsystem/SKILL.md`.
|
|
202
|
+
- Source of truth for the backend spec: `assets/brokk-distro-runtime.md` (backends)
|
|
203
|
+
and `assets/pi-boot-guide.md` (pane supervision). Keep this skill's floors in
|
|
204
|
+
sync with those when the protocol advances.
|
|
205
|
+
|
|
206
|
+
## The seat hierarchy (panes · tabs · spaces)
|
|
207
|
+
|
|
208
|
+
herdr is `Session > Workspace > Tab > Pane`. An Eindri can be seated at each rung,
|
|
209
|
+
chosen by `bin/eindri-start.sh` / `bin/herdr-run.sh eindri`:
|
|
210
|
+
|
|
211
|
+
| flag | rung | road | when |
|
|
212
|
+
|------|------|------|------|
|
|
213
|
+
| *(default)* | **pane** | `herdr pane split <pane> --direction right` | the companion — an Eindri beside the work; splits the current pane inside herdr, else this home's active pane |
|
|
214
|
+
| `--tab` | **tab** | `herdr tab create` | a separate view in this workspace |
|
|
215
|
+
| `--space` | **workspace** | `herdr workspace create` | a disposable space for one errand (needs the 0.8.0 floor) |
|
|
216
|
+
|
|
217
|
+
All three roads then `herdr agent start <name> --kind <kind> --pane <pane>` and
|
|
218
|
+
`herdr agent prompt`. Use panes by default so agents are visible side by side,
|
|
219
|
+
tabs to group parallel work, spaces to isolate an errand. `herdr-run.sh close-all`
|
|
220
|
+
tears the recorded seats down.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ymir-update
|
|
3
|
+
description: >-
|
|
4
|
+
Self-update a running Brokk and its eindri-homes to the latest from origin.
|
|
5
|
+
Use when the Allfather invokes /updateBrokk (e.g. "/updateBrokk", "update Brokk", "pull the latest Brokk").
|
|
6
|
+
Fast-forwards this Brokk repo's default branch and every local or remote Eindri-home through its guarded update path (never forced, never disruptive), then re-reads AGENTS.md and nudges each updated Eindri-home to do the same, so the whole tree runs the latest bin/ and instructions.
|
|
7
|
+
user-invocable: true
|
|
8
|
+
metadata:
|
|
9
|
+
internal: true
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# updateBrokk
|
|
13
|
+
|
|
14
|
+
Self-update Brokk in place.
|
|
15
|
+
Brokk is its own repo, behind the same no-mistakes gate as any project, so new tracked material (`AGENTS.md`, `bin/`, `.agents/skills/`, and public `skills/`) reaches `main` and then sits there until each running Brokk pulls it.
|
|
16
|
+
Only `AGENTS.md`, `bin/`, and `.agents/skills/` are a running Brokk instruction surface; public `skills/` is installer-facing and is not loaded by Brokk.
|
|
17
|
+
This skill performs that pull for the running main Brokk and every Eindri-home, without disturbing any in-flight work.
|
|
18
|
+
|
|
19
|
+
The update is **fast-forward only** - the same sanctioned self-write as the fleet sync Brokk already runs.
|
|
20
|
+
For a remote route, it updates the configured Brokk code root on that host from its own origin, then guardedly fast-forwards the persistent home to that code-root commit.
|
|
21
|
+
It never forces, never creates a merge commit, never stashes, and advances a target only on a clean fast-forward; anything dirty, diverged, offline, or on the wrong branch is skipped and reported.
|
|
22
|
+
A tracked-files fast-forward leaves the gitignored operational dirs (data/, state/, config/, projects/, .no-mistakes/) untouched, so a Eindri-home's in-flight work is never disrupted.
|
|
23
|
+
This touches only the Brokk repo and its own worktrees, never anything under `projects/`.
|
|
24
|
+
|
|
25
|
+
## What it does
|
|
26
|
+
|
|
27
|
+
1. **Run the updater:**
|
|
28
|
+
```sh
|
|
29
|
+
bin/brokk-update.sh
|
|
30
|
+
```
|
|
31
|
+
It fast-forwards this Brokk repo's default branch from origin, then updates every registered local or remote Eindri-home home through its placement-specific guarded path.
|
|
32
|
+
It prints one status line per target (`updated <old>..<new>` / `already current` / `skipped: <reason>`), followed by two action lines that tell you exactly what to do next:
|
|
33
|
+
- `reread-Brokk: yes|no`
|
|
34
|
+
- `nudge-eindri-homes: <id> ...|none`
|
|
35
|
+
|
|
36
|
+
2. **Re-read AGENTS.md if your own instructions changed.**
|
|
37
|
+
When the updater printed `reread-Brokk: yes`, the tracked instruction surface (`AGENTS.md`, `bin/`, or `.agents/skills/`) just advanced under you.
|
|
38
|
+
**Read `AGENTS.md` now** (CLAUDE.md is a real `@AGENTS.md` pointer to it) to refresh your operating instructions before doing anything else, so you are acting on the new instructions rather than the stale ones you were started with.
|
|
39
|
+
When it printed `reread-Brokk: no`, nothing changed for you - skip the re-read.
|
|
40
|
+
|
|
41
|
+
3. **Nudge each updated live Eindri-home.**
|
|
42
|
+
For every target listed on the `nudge-eindri-homes:` line (do nothing when it says `none`), send a one-line re-read nudge so that Eindri-home picks up its new instructions too:
|
|
43
|
+
```sh
|
|
44
|
+
BROKK_HOME=<this-Brokk-home> bin/brokk-send.sh <id> 'Brokk was updated to the latest - please re-read your AGENTS.md to pick up the new instructions.'
|
|
45
|
+
```
|
|
46
|
+
Include `BROKK_HOME=<this-Brokk-home>` unless `BROKK_HOME` is already set to the active Brokk home.
|
|
47
|
+
This is a gentle steer, not an interruption: the Eindri-home already got a safe tracked-files fast-forward, and the nudge never forces, tears down, or discards its work.
|
|
48
|
+
A Eindri-home that was skipped, already current, or has no live metadata is not on the list and needs no nudge.
|
|
49
|
+
|
|
50
|
+
4. **Report to the Allfather in plain outcomes.**
|
|
51
|
+
Summarize what landed under `AGENTS.md` section 9 without Brokk's internal vocabulary: which parts of the fleet are now on the latest, and which were left as-is and why.
|
|
52
|
+
For example: "Allfather, Brokk and both Eindri-homes are now on the latest."
|
|
53
|
+
Surface any skipped target whose reason needs the Allfather's attention - for instance a home with its own un-landed changes (diverged) or local edits (dirty), which were left untouched on purpose.
|
|
54
|
+
|
|
55
|
+
## Safety
|
|
56
|
+
|
|
57
|
+
- **Fast-forward only.**
|
|
58
|
+
A target that has diverged, is dirty, is offline, or is on a non-default branch is skipped and reported, never forced or stashed.
|
|
59
|
+
Nothing with unlanded work is ever discarded - this is prime directive #3.
|
|
60
|
+
- **Only the Brokk repo and its worktrees** are touched, never `projects/`.
|
|
61
|
+
It is the same sanctioned self-write as the fleet sync.
|
|
62
|
+
- **Eindri-homes are never disrupted.**
|
|
63
|
+
A local or remote Eindri-home gets a tracked-files fast-forward only when its own checkout is safe to advance, plus a gentle re-read nudge when it changed.
|
|
64
|
+
It is never torn down, interrupted, or forced.
|