@zerwiz/ymir 0.1.4 → 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 -59
- 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
package/docs/design.md
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# YMIR — Design Document
|
|
2
|
+
|
|
3
|
+
> **Status:** v1.1 · owner: Brokk · applies to Hlidskjalf (React), Smíðja's eye
|
|
4
|
+
> (Vue), Sessrúmnir (Electron/Tailwind), all Norse surfaces, and the houses.
|
|
5
|
+
> Sources: Ymir Rut v2.6 (`docs/ymir-rut.md` Part 3), the mythos (`docs/lore.md`),
|
|
6
|
+
> the UI/UX-is-a-differentiator doctrine (ENTRY-008), the stack ruling
|
|
7
|
+
> (ENTRY-009/010), and **the carved cloth of the halls** — the landing page's
|
|
8
|
+
> `:root` (`CodeP/ymir-homepage/src/lore.html`), which is the reference every
|
|
9
|
+
> value below is cut from.
|
|
10
|
+
> Implementation: design tokens live in `midgard/design-system/tokens.css`
|
|
11
|
+
> (consumed by React and Vue apps); Sessrúmnir carries the same values in its
|
|
12
|
+
> Tailwind `@theme` and in the `sessrumnir`/`fensalir` theme files.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 0. The cloth — one look, one source
|
|
17
|
+
|
|
18
|
+
Every hall wears the same cloth: **stone and bone, bronze and blood**, with the
|
|
19
|
+
three faces **Cormorant** (display), **Newsreader** (body) and **IBM Plex Mono**
|
|
20
|
+
(data). The reference is the landing page's `:root`; the apps carry it through
|
|
21
|
+
thin adapters, never by hand-copying a colour:
|
|
22
|
+
|
|
23
|
+
| Surface | Adapter | Where the values live |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Landing page | the source | `CodeP/ymir-homepage/src/lore.html` `:root` |
|
|
26
|
+
| Óðrerir (Live Hall) | locked copy | `apps/odrerir/src/styles/cloth.css` (extracted; stands alone) |
|
|
27
|
+
| Hlidskjalf | `--ymir-*` token names | `midgard/design-system/tokens.css` |
|
|
28
|
+
| Smíðja's eye | `--bg/--panel/--text/--accent…` | `apps/visualizer/src/style.css` (`:root`) |
|
|
29
|
+
| Sessrúmnir | semantic `--color-*` (pi-theme/v1) | `src/renderer/src/index.css` `@theme` + `themes/fensalir.json` |
|
|
30
|
+
|
|
31
|
+
Two rules hold the cloth honest:
|
|
32
|
+
|
|
33
|
+
1. **The cloth is the default, not a cage.** A user theme, an accent preset, or
|
|
34
|
+
Smíðja's `data-theme="classic"` / `"high-contrast"` (WCAG AAA) always wins
|
|
35
|
+
when chosen. Sessrúmnir's `fensalir` and `sessrumnir` built-ins are the cloth
|
|
36
|
+
under two names, held identical by test.
|
|
37
|
+
2. **Heraldry is not chrome.** House/domain seals (the eight accents) and the
|
|
38
|
+
Emblem keep their own colours — the landing page keeps its house seals too.
|
|
39
|
+
Chrome — canvas, text, borders, accent, state — is the cloth.
|
|
40
|
+
|
|
41
|
+
A colour is never written at a call site: components read tokens (or
|
|
42
|
+
`text-inverse` on a filled plate). Selection is part of the cloth too: the
|
|
43
|
+
landing's amber `#57411a` on pale bone `#f0e6cd`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 1. Philosophy — Carved, not skinned
|
|
48
|
+
|
|
49
|
+
Ymir's UI is not decoration bolted onto a system; it is **forged from the same
|
|
50
|
+
allegory the system runs on**. Every pixel should feel as if it were carved from
|
|
51
|
+
the giant's bones, hammered in a Svartalfaheim forge, lit by Bifrost transit
|
|
52
|
+
beams. The design behaves the way the system behaves:
|
|
53
|
+
|
|
54
|
+
- **Forged, not painted** — bevels, chiseled edges, material depth. Nothing
|
|
55
|
+
floats; everything sits.
|
|
56
|
+
- **The well is visible** — memory, telemetry, and audit are first-class surface,
|
|
57
|
+
never hidden behind "settings".
|
|
58
|
+
- **The forge stays hot** — status is instant, truthful, and always on screen.
|
|
59
|
+
- **Quiet strength** — high legibility, low noise. This is an instrument panel
|
|
60
|
+
for a single operator running everything.
|
|
61
|
+
|
|
62
|
+
Design decisions always answer: *"would a dwarf smith build it this way?"*
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 2. Brand Identity
|
|
67
|
+
|
|
68
|
+
### 2.1 Emblem — the Ymir Root Mark
|
|
69
|
+
|
|
70
|
+
The mark combines two glyphs:
|
|
71
|
+
|
|
72
|
+
- **Algiz (ᛉ)** — the rune of protection and the branching *worker stems* of the
|
|
73
|
+
agent tree (also evokes Yggdrasil spreading from the root).
|
|
74
|
+
- **Blacksmith anvil base** — industrial strength, heavy compute, the forge from
|
|
75
|
+
which every artifact is shaped.
|
|
76
|
+
|
|
77
|
+
Construction rules:
|
|
78
|
+
- Dual-layer chiseled bevel: dark iron exterior `#334155`, luminous cyan inner
|
|
79
|
+
edge `#7dd3fc`. The **Emblem is brand, not cloth** — it keeps its own colours on
|
|
80
|
+
every surface, exactly as the landing page keeps it (a blue mark on the stone).
|
|
81
|
+
- One emblem per context; never gradient-bloated, never filled with imagery.
|
|
82
|
+
- On dark obsidian surfaces: cyan-lit variant. On light surfaces: steel variant
|
|
83
|
+
with indigo edge.
|
|
84
|
+
- Favicon = the rune alone, 24–32px, stroke weight 2.
|
|
85
|
+
|
|
86
|
+
### 2.2 Houses — brands within the brand
|
|
87
|
+
|
|
88
|
+
Each house carries the myth that names it and a **house accent** for seals,
|
|
89
|
+
tags, and portal theming (proposed accents — ENTRY-004 mapping):
|
|
90
|
+
|
|
91
|
+
| House | Name-sake | House accent |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| Ymir Labs | the giant | cyan `#38bdf8` |
|
|
94
|
+
| Brokk Forge | the bellows-smith | forge amber `#f59e0b` |
|
|
95
|
+
| Runestone Labs (Runir) | the runes | rune crimson `#f43f5e` |
|
|
96
|
+
| Muninn Labs | the raven (memory) | raven violet `#8b5cf6` |
|
|
97
|
+
| Dvalin | the dwarf craftsman | cold steel `#94a3b8` |
|
|
98
|
+
| Utgard Studios | the giant-realm | jötun magenta `#d946ef` |
|
|
99
|
+
| Askr | the first man | ash green `#34d399` |
|
|
100
|
+
| Mannheim | *(reserved)* | slate `#64748b` |
|
|
101
|
+
|
|
102
|
+
House accents are **structural only** — tags, entity headers, chart series —
|
|
103
|
+
never the page chrome, and they are **heraldry, not cloth**: they keep their own
|
|
104
|
+
colours exactly as the landing page keeps its house seals, while the chrome
|
|
105
|
+
around them wears the cloth (§4.2). The same eight accents are the agent
|
|
106
|
+
**domains** in Hlidskjalf (`src/data/realms.ts` → `DOMAINS`).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 3. Design Principles
|
|
111
|
+
|
|
112
|
+
1. **The giant is the frame** — one body, many realms. One visual system across
|
|
113
|
+
every tenant; a realm is a *view*, not a redesign.
|
|
114
|
+
2. **Truth over ornament** — telemetry and logs render exactly as they are. No
|
|
115
|
+
fake glow, no invented metrics. Traceability index is a real number on screen.
|
|
116
|
+
3. **Status is ambient** — NOMINAL / DEGRADED / DOWN is readable at a glance
|
|
117
|
+
from across the room (color + glyph + text, never color alone).
|
|
118
|
+
4. **The well is a first-class citizen** — recall results, episodes, and timeline
|
|
119
|
+
render inline, not in a hidden drawer.
|
|
120
|
+
5. **Isolation by default** — realms are visually distinct (borders, subtle
|
|
121
|
+
tint), never commingled. A user must *feel* which realm they're in.
|
|
122
|
+
6. **Motion explains, never decorates** — transitions trace real data flow
|
|
123
|
+
(task state changes, message hops). ~150–240ms, linear-ish, no bounce.
|
|
124
|
+
7. **Dense but calm** — keyboard-first, mono for data, generous breathing room
|
|
125
|
+
for narrative text.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 4. Visual Language
|
|
130
|
+
|
|
131
|
+
### 4.1 Typography
|
|
132
|
+
|
|
133
|
+
| Role | Face | Use |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| Display & runes | **Cormorant** (runic glyphs fall through to **Noto Sans Runic**) | page titles, section headers, the emblem wordmark, runic seals |
|
|
136
|
+
| Code, telemetry, metrics | **IBM Plex Mono** | all data: logs, IDs, states, timestamps, task/agent names, CLI |
|
|
137
|
+
| Body & UI | **Newsreader** | description text, labels, buttons, body of narratives, docs |
|
|
138
|
+
|
|
139
|
+
Scale (reference — fluid via clamp()):
|
|
140
|
+
|
|
141
|
+
| Token | Size / Line-height | Used for |
|
|
142
|
+
|---|---|---|
|
|
143
|
+
| s-mono-s | 12 / 16 | timestamps, badges |
|
|
144
|
+
| s-mono-m | 14 / 20 | telemetry, task IDs |
|
|
145
|
+
| s-mono-l | 18 / 24 | hero metrics (traceability index) |
|
|
146
|
+
| s-display | 28–44 / 1.1 | realm/page titles |
|
|
147
|
+
| s-body | 15 / 22 | descriptions |
|
|
148
|
+
| s-caption | 13 / 18 | secondary notes |
|
|
149
|
+
|
|
150
|
+
Rules: metrics are **always** IBM Plex Mono (tabular numerals enabled);
|
|
151
|
+
runes/glyphs fall through to the rune family inside every stack; never mix faces
|
|
152
|
+
mid-line. Title case stays short — one lyric line, then the deck explains.
|
|
153
|
+
|
|
154
|
+
### 4.2 Color system
|
|
155
|
+
|
|
156
|
+
The cloth (dark = the forge theme, canonical; values cut from the landing page's
|
|
157
|
+
`:root`):
|
|
158
|
+
|
|
159
|
+
**Canvas (the stone)**
|
|
160
|
+
|
|
161
|
+
| Token | Value | Role |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| `--ymir-bg-0` | `#0e0c09` | stone — deepest canvas, app shell |
|
|
164
|
+
| `--ymir-bg-1` | `#151209` | panel surface |
|
|
165
|
+
| `--ymir-bg-2` | `#1a1610` | elevated surface, cards |
|
|
166
|
+
| `--ymir-bg-3` | `#221d14` | hover, wells |
|
|
167
|
+
|
|
168
|
+
**Accents (the bronze light of the forge)**
|
|
169
|
+
|
|
170
|
+
| Token | Value | Role |
|
|
171
|
+
|---|---|---|
|
|
172
|
+
| `--ymir-cyan-1` | `#c9973f` | bronze — primary accent, active states, focus ring, links |
|
|
173
|
+
| `--ymir-cyan-2` | `#7d5f2a` | bronze-deep — hover/darker accent |
|
|
174
|
+
| `--ymir-violet-1` | `#96a0a8` | steel — realm identity, secondary accent |
|
|
175
|
+
| `--ymir-violet-2` | `#5f686e` | steel-dim |
|
|
176
|
+
|
|
177
|
+
**Structure (bone and brass)**
|
|
178
|
+
|
|
179
|
+
| Token | Value | Role |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| `--ymir-steel-1` | `#2b241a` | line — borders, bevel exteriors |
|
|
182
|
+
| `--ymir-steel-2` | `#7d5f2a` | bronze-deep — stronger rules, dividers |
|
|
183
|
+
| `--ymir-steel-3` | `#9a8f75` | bone-dim — secondary text, muted glyphs |
|
|
184
|
+
| `--ymir-chisel` | `#c9973f` | bronze — the lit chisel edge (emblem, focus) |
|
|
185
|
+
|
|
186
|
+
**Semantics (state of the forge)**
|
|
187
|
+
|
|
188
|
+
| Token | Value | Meaning |
|
|
189
|
+
|---|---|---|
|
|
190
|
+
| `--ymir-ok` | `#96a0a8` | NOMINAL (steel — the metal proved true) |
|
|
191
|
+
| `--ymir-warn` | `#c9973f` | DEGRADED (bronze — hot, heed it) |
|
|
192
|
+
| `--ymir-danger` | `#c2584a` | DOWN / sealed (blood-lit) |
|
|
193
|
+
| `--ymir-info` | `#9a8f75` | transit / neutral-inform (bone-dim) |
|
|
194
|
+
| `--ymir-ok-dim` | `rgba(150,160,168,.15)` | background wash of the above, same pattern for warn/danger/info |
|
|
195
|
+
|
|
196
|
+
**Text on stone**
|
|
197
|
+
|
|
198
|
+
| Token | Value | Role |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| `--ymir-text-0` | `#cfc3a9` | bone — primary text |
|
|
201
|
+
| `--ymir-text-1` | `rgba(207,195,169,.82)` | bone, blunted — secondary text |
|
|
202
|
+
| `--ymir-text-2` | `#9a8f75` | bone-dim — tertiary, disabled |
|
|
203
|
+
| `--ymir-text-3` | `#6b6250` | bone-faint — placeholder |
|
|
204
|
+
|
|
205
|
+
**Selection** (all surfaces): amber `#57411a` on pale bone `#f0e6cd` — the
|
|
206
|
+
landing's own selection. In Sessrúmnir it is a theme token
|
|
207
|
+
(`--color-selection-bg`/`-fg`), so a user theme derives its own tint from its
|
|
208
|
+
accent; the cloth themes pin the landing's amber.
|
|
209
|
+
|
|
210
|
+
Contrast: `--ymir-text-0` on `--ymir-bg-1` ≈ 10:1; body 15px meets WCAG AA
|
|
211
|
+
everywhere; never put bronze text on bronze.
|
|
212
|
+
|
|
213
|
+
### 4.3 Space & grid
|
|
214
|
+
|
|
215
|
+
- Base unit **4px**; 8px rhythm for layout.
|
|
216
|
+
- Panel padding `--ymir-space-4: 16px`; page gutter 24–48.
|
|
217
|
+
- Max content width 1440; density slider for the data views (comfortable ↔ compact).
|
|
218
|
+
- Components: radius `--ymir-radius: 8px` (panels 12px), 1px line borders,
|
|
219
|
+
inset shadows to sell the carved edge: `inset 0 0 0 1px rgba(201,151,79,.12)`
|
|
220
|
+
(a brass hairline inside the stone).
|
|
221
|
+
- Geometry is unchanged by the cloth: the carved-slate **squaring** (radius 2–3px
|
|
222
|
+
across the apps and the seat) is an open question, not yet decided.
|
|
223
|
+
|
|
224
|
+
### 4.4 Iconography & glyphs
|
|
225
|
+
|
|
226
|
+
- **Runecoded, not emoji.** A minimal, hand-drawn-style rune set replaces emoji
|
|
227
|
+
in all UI: 16×16 and 24×24 grid, 2px stroke, chisel bevel on primary.
|
|
228
|
+
- System subsystems each carry one rune-glyph (reuse Algiz-family geometry:
|
|
229
|
+
Bifrost gate, Ratatoskr squirrel, the Well). Map is in `midgard/design-system/icons.md` (TBD) — created from this doc.
|
|
230
|
+
- Status dot: filled rune ring (ok) / half-ring (warn) / broken ring (danger), never color-only.
|
|
231
|
+
|
|
232
|
+
### 4.5 Surface & texture
|
|
233
|
+
|
|
234
|
+
- Background treatment: **hand-hammered steel** (very subtle noise/specular ~2%),
|
|
235
|
+
and the **crystalline icosahedral grid** for hero/brand areas only (3–5% opacity).
|
|
236
|
+
- Emblem renders with the chisel bevel; body surfaces stay flat — motif stops at
|
|
237
|
+
the chrome, never behind text.
|
|
238
|
+
|
|
239
|
+
### 4.6 Motion
|
|
240
|
+
|
|
241
|
+
| Context | Pattern | Duration |
|
|
242
|
+
|---|---|---|
|
|
243
|
+
| Task state change | fade + 2px upward drift on the state chip | 180ms |
|
|
244
|
+
| Message hop (Ratatoskr) | light dash along the fleet edge | 220ms |
|
|
245
|
+
| Panel reveal | mask + slight scale 0.99→1 | 160ms |
|
|
246
|
+
| Metric tick | IBM Plex Mono numeric roll (monospace, tabular) | 240ms |
|
|
247
|
+
| Loading | screen of the forge (glowing ember + rune), not a spinner wheel | — |
|
|
248
|
+
|
|
249
|
+
Honor `prefers-reduced-motion`: all transforms collapse to fades ≤120ms.
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 5. UI System — Hlidskjalf (React/Vue)
|
|
254
|
+
|
|
255
|
+
### 5.1 App shell
|
|
256
|
+
|
|
257
|
+
- Left rail: emblem + the **7 realm gates** (click = realm switch), collapsed to
|
|
258
|
+
rune-only at <900px.
|
|
259
|
+
- Top bar: current realm chip (house accent + tenant name), global search
|
|
260
|
+
(realm-scoped), traceability index chip (live), the three-hall switcher, the
|
|
261
|
+
**To the Hall** door to the Óðrerir Live Hall (new tab: local `:4322` when the
|
|
262
|
+
host starts with `localhost`/`127.0.0.1`, else the public hall), user menu.
|
|
263
|
+
- Main stage: modal-free; views are full panels with a persistent **bottom stream**:
|
|
264
|
+
Ratatoskr messages + Runes entries in one mono stream (pausable).
|
|
265
|
+
|
|
266
|
+
Views: **Fleet** (agents/cards) · **Tasks** (A2A lifecycle board) · **Well**
|
|
267
|
+
(memory recall/timeline/observe) · **Runes** (ledger) · **Reviews** (PR cards) ·
|
|
268
|
+
**Processes** (Valhalla) · **Files** (Skrymir) · **Chat** (OmniChat drawer).
|
|
269
|
+
|
|
270
|
+
### 5.2 Reusable components (token-driver)
|
|
271
|
+
|
|
272
|
+
| Component | Spec |
|
|
273
|
+
|---|---|
|
|
274
|
+
| `RealmGate` | rune + label + subtle realm tint; active = bronze chisel ring |
|
|
275
|
+
| `AgentCard` | Agent Card JSON rendered: name, capabilities, skills, interface, status dot, house seal |
|
|
276
|
+
| `TaskChip` | A2A state: SUBMITTED→WORKING→terminal; color + rune + label (never color alone) |
|
|
277
|
+
| `TraceRow` | mono line: ts · agent · module · event · checksum |
|
|
278
|
+
| `RecallPanel` | query + ranked episodes (score bar = cyan), timeline view |
|
|
279
|
+
| `MetricTile` | mono number + delta + sparkline; beveled panel |
|
|
280
|
+
| `RuneTag` | house/label pills using house accents |
|
|
281
|
+
| `PRCard` | title, checklist progress, CI runes, review actions (Glitnir) |
|
|
282
|
+
|
|
283
|
+
All components read tokens from `tokens.css`; color-only states are forbidden
|
|
284
|
+
(append a rune glyph + text).
|
|
285
|
+
|
|
286
|
+
### 5.3 Data visualization
|
|
287
|
+
|
|
288
|
+
- Charts: thin 2px bronze/steel lines, no 3D, no pie explosions; gridlines at
|
|
289
|
+
`--ymir-steel-2` 12% opacity.
|
|
290
|
+
- Series color order: bronze → steel → bone → blood-lit → bronze-deep.
|
|
291
|
+
- Fleet graph: nodes = Agent Cards, edges = A2A task hops; edge dashes animate on
|
|
292
|
+
activity; node ring = status.
|
|
293
|
+
- Trace/timeline: JetBrains Mono; branch/merge glyphs reused from Yggdrasil theme.
|
|
294
|
+
|
|
295
|
+
### 5.4 Identity & accounts (the gate)
|
|
296
|
+
|
|
297
|
+
- The gate is closed by default once a credential or account exists: every
|
|
298
|
+
`/api/*` route (and the Smíðja host) needs an httpOnly `ymir_session` cookie.
|
|
299
|
+
Only `/api/login`, `/api/register`, `/api/session`, `/api/logout` and
|
|
300
|
+
`/api/health` ride outside it.
|
|
301
|
+
- **Operator credential** (`HLIDSKJALF_AUTH="user:pass"` from `.env.local`,
|
|
302
|
+
never inline) opens the gate and seeds the allfather account row.
|
|
303
|
+
- **Invite-gated registration** (`bin/ymir-invite.sh`): a code with a use-limit
|
|
304
|
+
is minted when nothing is live (idempotent) and printed at the end of an
|
|
305
|
+
install. `register` re-checks the invite under a re-read of the store, so two
|
|
306
|
+
simultaneous registrations cannot both spend the last use. Account passwords
|
|
307
|
+
are argon2id-hashed and land in `state/accounts.json` (mode 0600, gitignored).
|
|
308
|
+
**Sessions are in-memory only** (a `token → login` map) and exist solely as the
|
|
309
|
+
httpOnly `ymir_session` cookie — no session file and no header credential, so
|
|
310
|
+
there is no bearer at rest to replay and no file that can claim a session; a
|
|
311
|
+
gate restart ends them. Other surfaces verify live against the gate.
|
|
312
|
+
- **GitHub sign-in** is the same gate by another door, once
|
|
313
|
+
`GITHUB_CLIENT_ID`/`GITHUB_CLIENT_SECRET` are set (`ymir_oauth_state` cookie,
|
|
314
|
+
10-minute window).
|
|
315
|
+
- Sessions are httpOnly `ymir_session` cookies, SameSite=Lax, 30-day Max-Age.
|
|
316
|
+
- Heimdall (oauth2-proxy) remains the production road: httpOnly session cookie
|
|
317
|
+
with the same shape, so the client swap is mechanical.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## 6. Content & voice
|
|
322
|
+
|
|
323
|
+
- **Short, operational, zero flair.** "Task failed. Diagnosis: json_contract.
|
|
324
|
+
Retried as 6f1a." — not "We encountered an unexpected issue."
|
|
325
|
+
- Headings read like commands; decks read like log lines.
|
|
326
|
+
- Rune labels double as keyboard hints (`ᛉ` = Algiz/protect, used for "seal/approve").
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## 7. Accessibility & implementation notes
|
|
331
|
+
|
|
332
|
+
- AA contrast enforced (tokens guarantee it), focus = bronze chisel ring, target
|
|
333
|
+
size ≥44px, keyboard-first with all views reachable.
|
|
334
|
+
- React and Vue consume the **same cloth** — no per-framework color drift.
|
|
335
|
+
`tokens.css` is the single source for both; component styling via CSS vars,
|
|
336
|
+
not hardcoded hex. Sessrúmnir's equivalent is its `@theme` block plus
|
|
337
|
+
`themes/fensalir.json`, held identical by test.
|
|
338
|
+
- Agents (Brokk/Eindri) generate UI from **Agent Cards and task JSON** — the
|
|
339
|
+
design system guarantees any agent-produced surface is on-brand without a
|
|
340
|
+
designer in the loop.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## 8. Files
|
|
345
|
+
|
|
346
|
+
- `docs/design.md` — this document (master).
|
|
347
|
+
- `midgard/design-system/tokens.css` — the consumable design tokens.
|
|
348
|
+
- `midgard/design-system/icons.md` — rune-glyph map (to create).
|
|
349
|
+
- `docs/ymir-rut.md` Part 3 — the original Rut design-system specification this
|
|
350
|
+
document implements.
|
|
351
|
+
- `docs/lore.md` §VI — house lineage behind the house accents.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Installations — the engines and tools Ymir adopts
|
|
2
|
+
|
|
3
|
+
Extra installations beyond the base runtime. **Open-source first:** every entry
|
|
4
|
+
is a validated OSS project (or SDK) under a Norse shell, or a first-party tool the
|
|
5
|
+
agents drive. Keys live at `$YMIR_HOME/secrets/platform.env` — **never inline**.
|
|
6
|
+
|
|
7
|
+
See [`ymir-home.md`](ymir-home.md) for the `$YMIR_HOME` data layout and env var contract.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
installations[15]{tool,role,oss,install,used_by}:
|
|
11
|
+
"treehouse","worktree pool (Yggdrasil)","kunchenguid/treehouse","curl -fsSL https://kunchenguid.github.io/treehouse/install.sh | sh","yggdrasil.sh · Eindri workers"
|
|
12
|
+
"sandcastle","sandbox engine (Utgard)","mattpocock/sandcastle","npm i @ai-hero/sandcastle","utgard.sh · einherjar-spawn"
|
|
13
|
+
"no-mistakes","clean-PR gate (Mjollnir/Glitnir)","kunchenguid/no-mistakes","curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh","mjollnir.sh (mode no-mistakes)"
|
|
14
|
+
"hermes","worker agent runtime","NousResearch/hermes-agent","curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash","bin/hermes-ensure.sh"
|
|
15
|
+
"opendesign","design engine (Hnoss)","nexu-io/open-design","od mcp install <agent>","skills/hnoss · design Eindri"
|
|
16
|
+
"firecrawl","web crawl/scrape","firecrawl.dev","pip install firecrawl-py","skills/bragi (research/SEO)"
|
|
17
|
+
"scrapy","optional scraper (large/custom crawls)","scrapy.org","pip install scrapy","skills/bragi (optional)"
|
|
18
|
+
"browser-use","agentic browser","browser-use/browser-use","pip install browser-use","skills/bragi (publish/post)"
|
|
19
|
+
"chrome-devtools","browser debugging","developer.chrome.com/docs/devtools","Chrome DevTools MCP / built-in","Sindri (developer craft)"
|
|
20
|
+
"engdbram","the well (Mimirsbrunn) — module name is engram","engdbram","bin/prereq-ensure.sh engram (pip install --user engdbram; NOT the PyPI 'engram', which is a renderer)","bin/mimir-bridge.py · well"
|
|
21
|
+
"mcp","MCP SDK (engram-mcp needs <2)","modelcontextprotocol","pip install --user --break-system-packages 'mcp<2'","engram MCP for all harnesses"
|
|
22
|
+
"electron","desktop shell","electron","npm i -D electron@^33","apps/hlidskjalf/electron · scripts/electron.sh"
|
|
23
|
+
"capacitor","mobile APK shell","capacitor","npm i @capacitor/core @capacitor/android @capacitor/cli","apps/hlidskjalf/android"
|
|
24
|
+
"cloudflared","tunnel (Gjallarhorn)","cloudflare/cloudflared","(system package)","bin/gjallarhorn-tunnel.sh"
|
|
25
|
+
"jdk17","Android build toolchain","Adoptium Temurin 17","user-space tarball → ~/.local/jdk-17","gradlew assembleDebug"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Engine installs (one command)
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
bin/ymir-install.sh # prereqs, tree, engines, hermes, sandbox, memory, loaders, services
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`bin/ymir-install.sh` self-heals the fixable gaps (`engram`, `mcp<2`, `treehouse`,
|
|
35
|
+
`no-mistakes`, **Hermes**) and reports the system-level ones (`git`, `python3`,
|
|
36
|
+
`bun`, `docker`, `gh`). See [`../.agents/skills/galdr-ymirsystem/assets/installation.md`].
|
|
37
|
+
|
|
38
|
+
## Per-skill engines
|
|
39
|
+
|
|
40
|
+
- **Hnoss** (design) → **OpenDesign**: `od mcp install opencode` / `pi` / `hermes`.
|
|
41
|
+
- **Bragi** (marketing) → **Firecrawl** + **browser-use**:
|
|
42
|
+
`pip install firecrawl-py browser-use`; `FIRECRAWL_API_KEY` in `.env.local`.
|
|
43
|
+
- **Sindri** (developer) → **Chrome DevTools** — for inspecting, profiling, and
|
|
44
|
+
debugging the running app: [developer.chrome.com/docs/devtools](https://developer.chrome.com/docs/devtools)
|
|
45
|
+
(Elements, Network, Performance, Sources, Console, Application, Lighthouse,
|
|
46
|
+
and the Chrome DevTools **MCP** for agent-driven inspection).
|
|
47
|
+
|
|
48
|
+
## Mobile / desktop / tunnel
|
|
49
|
+
|
|
50
|
+
- **Capacitor** wraps the Hlidskjalf SPA into an Android APK
|
|
51
|
+
(`apps/hlidskjalf/android`); rebuild with `./gradlew assembleDebug` (needs
|
|
52
|
+
JDK 17 + Android SDK — see `docs/installations/`).
|
|
53
|
+
- **Electron** is the desktop shell (`scripts/electron.sh`).
|
|
54
|
+
- **cloudflared** exposes Hlidskjalf at your own hostname (`YMIR_TUNNEL_HOST`)
|
|
55
|
+
(`bin/gjallarhorn-tunnel.sh`); cache purge needs `CLOUDFLARE_API_TOKEN`.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
1. **OSS first.** Adopt the validated engine; never rebuild what exists.
|
|
60
|
+
2. **Keys via env.** `FIRECRAWL_API_KEY`, `OD_API_TOKEN`, `CLOUDFLARE_API_TOKEN`,
|
|
61
|
+
provider keys — `$YMIR_HOME/secrets/platform.env` only.
|
|
62
|
+
3. **No mock.** A tool reported present must be real; `bin/ymir-install.sh --check`
|
|
63
|
+
tells the truth.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# YMIR_HOME — the private data root
|
|
2
|
+
|
|
3
|
+
All private user data lives at **`$YMIR_HOME`** (default `~/Documents/Ymir`).
|
|
4
|
+
The open-source repo contains **only** public artifacts (source code, docs,
|
|
5
|
+
examples). No secrets, no identity, no state.
|
|
6
|
+
|
|
7
|
+
## Environment Variables
|
|
8
|
+
|
|
9
|
+
| Variable | Purpose | Default |
|
|
10
|
+
|----------|---------|---------|
|
|
11
|
+
| `YMIR_HOME` | Root of all private user data | `~/Documents/Ymir` |
|
|
12
|
+
| `YMIR_HOARD` | Alias for `$YMIR_HOME` (legacy compat) | `$YMIR_HOME` |
|
|
13
|
+
| `YMIR_AGENTS_YAML` | Path to agent/harness config | `$YMIR_HOME/config/agents.yaml` |
|
|
14
|
+
| `YMIR_SECRETS_DIR` | Path to secrets | `$YMIR_HOME/secrets` |
|
|
15
|
+
| `YMIR_IDENTITY_DIR` | Path to identity registries | `$YMIR_HOME/identity` |
|
|
16
|
+
| `YMIR_WORKSPACES_DIR` | Path to workspaces | `$YMIR_HOME/workspaces` |
|
|
17
|
+
| `YMIR_MEMORY_DIR` | Path to memory/well | `$YMIR_HOME/memory` |
|
|
18
|
+
| `YMIR_SMIDJA_DIR` | Path to smidja DB | `$YMIR_HOME/smidja` |
|
|
19
|
+
| `YMIR_STATE_DIR` | Path to runtime state | `$YMIR_HOME/state` |
|
|
20
|
+
| `YMIR_DATA_DIR` | Path to operational data | `$YMIR_HOME/data` |
|
|
21
|
+
|
|
22
|
+
## Sourcing Convention
|
|
23
|
+
|
|
24
|
+
Every script that needs private paths declares YMIR_HOME at the top:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
YMIR_HOME="${YMIR_HOME:-$HOME/Documents/Ymir}"
|
|
28
|
+
[ -d "$YMIR_HOME" ] || { echo "error: YMIR_HOME not set or not a directory" >&2; exit 1; }
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Private paths then resolve as `${YMIR_HOME}/<subdir>` — no hardcoded paths.
|
|
32
|
+
|
|
33
|
+
## Per-Machine Env Profile
|
|
34
|
+
|
|
35
|
+
The installer writes `$YMIR_HOME/env.sh` which users source in their shell:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# $YMIR_HOME/env.sh — source this for Ymir CLI access
|
|
39
|
+
export YMIR_HOME="$HOME/Documents/Ymir"
|
|
40
|
+
export YMIR_HOARD="$YMIR_HOME"
|
|
41
|
+
export YMIR_AGENTS_YAML="$YMIR_HOME/config/agents.yaml"
|
|
42
|
+
export YMIR_SECRETS_DIR="$YMIR_HOME/secrets"
|
|
43
|
+
export YMIR_IDENTITY_DIR="$YMIR_HOME/identity"
|
|
44
|
+
export YMIR_WORKSPACES_DIR="$YMIR_HOME/workspaces"
|
|
45
|
+
export YMIR_MEMORY_DIR="$YMIR_HOME/memory"
|
|
46
|
+
export YMIR_SMIDJA_DIR="$YMIR_HOME/smidja"
|
|
47
|
+
export YMIR_STATE_DIR="$YMIR_HOME/state"
|
|
48
|
+
export YMIR_DATA_DIR="$YMIR_HOME/data"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Layout
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
$YMIR_HOME/
|
|
55
|
+
├── config/
|
|
56
|
+
│ ├── agents.yaml # Private agent/harness/model config
|
|
57
|
+
│ └── agents.<host>.yaml # Per-machine overlay
|
|
58
|
+
├── secrets/
|
|
59
|
+
│ └── platform.env # All .env.local values (referenced, never inlined)
|
|
60
|
+
├── identity/
|
|
61
|
+
│ ├── workspaces.yaml # Workspace registry
|
|
62
|
+
│ ├── projects.yaml # Project registry (git{} blocks, auth refs)
|
|
63
|
+
│ └── companies/ # Company entities (private)
|
|
64
|
+
├── workspaces/
|
|
65
|
+
│ ├── work/ # company, marketing, development, life
|
|
66
|
+
│ └── personal/ # me, life, development
|
|
67
|
+
├── memory/
|
|
68
|
+
│ ├── daily/ # Daily briefings
|
|
69
|
+
│ └── well/ # Mimirsbrunn append log
|
|
70
|
+
├── smidja/
|
|
71
|
+
│ └── smidja.db* # Smidja session database
|
|
72
|
+
├── state/ # Runtime state (locks, pids, cron)
|
|
73
|
+
├── data/ # Operational data (backlog, fleet, learnings)
|
|
74
|
+
├── .gitignore # Ignores smidja/, state/, *.wal, *.shm
|
|
75
|
+
└── .ymir-layout.yaml # Layout record (migration origin, github_repo)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Single Private Git Repo
|
|
79
|
+
|
|
80
|
+
The entire `$YMIR_HOME` is one git repo pushed to a **private GitHub repo**
|
|
81
|
+
for multi-machine sync. Secrets (`platform.env`) live in that private repo —
|
|
82
|
+
safe because only the user (and their authorized machines) can clone it.
|
|
83
|
+
No local encryption needed.
|
|
84
|
+
|
|
85
|
+
Smidja DB, runtime state, and local overlays are gitignored within the
|
|
86
|
+
private repo (rebuilt per machine).
|
|
87
|
+
|
|
88
|
+
## Backwards Compatibility
|
|
89
|
+
|
|
90
|
+
Scripts fall back to `$ROOT/hodd` (legacy Hoard in repo) when
|
|
91
|
+
`YMIR_HOARD` and `YMIR_HOME` are both unset. The migration script
|
|
92
|
+
(`bin/ymir-migrate.sh private-data`) copies data to `$YMIR_HOME` and
|
|
93
|
+
writes `.ymir-layout.yaml`.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Integrating Ymir into an existing harness workflow
|
|
2
|
+
|
|
3
|
+
> **Purpose:** add Ymir (Brokk, the memory well, the A2A mesh, the Hlidskjalf
|
|
4
|
+
> control plane) to a machine that already runs agent harnesses and other MCP
|
|
5
|
+
> servers — **without touching the global configuration** of those harnesses.
|
|
6
|
+
> Project-scoped, additive, one-command rollback. Obeys Rule 05 (portability) and
|
|
7
|
+
> Rule 07 (no hardcoded config).
|
|
8
|
+
|
|
9
|
+
## The stance
|
|
10
|
+
|
|
11
|
+
Ymir's harness wiring lives **inside the checkout**: `.opencode/plugins/*.js` (the
|
|
12
|
+
Brokk adapters) and the project `opencode.json` / `.pi/mcp.json`. A harness that
|
|
13
|
+
merges project config with global config therefore gains Ymir **only when opened
|
|
14
|
+
in the Ymir directory**; every other project is untouched.
|
|
15
|
+
|
|
16
|
+
## Three planes
|
|
17
|
+
|
|
18
|
+
| Plane | What | Where |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Substrate | the runtime, services, cron | the box (bare, or a Quadlet/compose container) |
|
|
21
|
+
| MCP surfaces | the memory well (`engram`) + the mesh (`a2abridge`) | project config |
|
|
22
|
+
| Control plane | Hlidskjalf | the substrate's published port |
|
|
23
|
+
|
|
24
|
+
## Wire it (project-scoped)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd <ymir-checkout>
|
|
28
|
+
bin/prereq-ensure.sh engram # the well engine (if absent)
|
|
29
|
+
bin/a2abridge-ensure.sh ensure --install # the A2A mesh engine + directory daemon
|
|
30
|
+
bin/a2a-mcp.sh install --project # writes THIS repo's config only: engram + a2abridge
|
|
31
|
+
bin/a2a-mcp.sh show --project # verify
|
|
32
|
+
bin/valknut-load.sh --opencode # bind Ymir's agents/skills into OpenCode
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`bin/a2a-mcp.sh install` (no `--project`) also writes Pi's **global**
|
|
36
|
+
`~/.pi/agent/mcp.json`. When Pi is used in other areas, prefer `--project`: it
|
|
37
|
+
writes the repo's `.pi/mcp.json` instead, and Pi picks it up only when launched
|
|
38
|
+
with `pi --mcp-config .pi/mcp.json`.
|
|
39
|
+
|
|
40
|
+
### Order matters
|
|
41
|
+
|
|
42
|
+
`bin/valknut-load.sh --opencode` renders the project `opencode.json` from its
|
|
43
|
+
`.example`; run it **before** `bin/a2a-mcp.sh install --project` so the MCP block
|
|
44
|
+
is not overwritten. `bin/agents-config.sh apply` merges in local providers and
|
|
45
|
+
should also run before the MCP install.
|
|
46
|
+
|
|
47
|
+
## Models
|
|
48
|
+
|
|
49
|
+
`config/agents.yaml` (private, gitignored) is the roster: local providers, the
|
|
50
|
+
default model, and per-agent `model:`/`harness:`. `bin/models-detect.sh` reports
|
|
51
|
+
what is running; `bin/agents-config.sh apply` writes the local providers into the
|
|
52
|
+
project `opencode.json` and the chosen `model:` into `.agents/agents/*.md`. Rule:
|
|
53
|
+
local models via `pi`, hosted via `opencode` — an agent may override `harness:`.
|
|
54
|
+
|
|
55
|
+
## Seating Brokk
|
|
56
|
+
|
|
57
|
+
The adapters are **path-loaded**: open the harness with the checkout as the working
|
|
58
|
+
directory. OpenCode's `.opencode/plugins/` then seat Brokk (Sága's digest arrives
|
|
59
|
+
before the first turn), arm Sýn, guard the turn end, and enforce the PreToolUse
|
|
60
|
+
seatbelts. There is **no Brokk adapter for Zed** — Zed gets the memory plane only
|
|
61
|
+
(add the well as a context server, mirroring any other MCP entry).
|
|
62
|
+
|
|
63
|
+
## Working across repositories
|
|
64
|
+
|
|
65
|
+
Ymir binds to **one home**, and the machine has **one Brokk primary**:
|
|
66
|
+
|
|
67
|
+
- The primary's helm is a **machine-global** lock
|
|
68
|
+
(`${XDG_STATE_HOME:-$HOME/.local/state}/ymir/brokk.lock`). A second Brokk session
|
|
69
|
+
anywhere is read-only; an *Eindri-home* (a worker home) keeps its own per-home
|
|
70
|
+
lock and runs beside the primary.
|
|
71
|
+
- A pane in another repository does **not** auto-seat Brokk — the adapter lives in
|
|
72
|
+
the Ymir checkout. Panes elsewhere are for observation and terminal work.
|
|
73
|
+
- To have Ymir **work** another project, dispatch it:
|
|
74
|
+
`bin/einherjar-spawn.sh <task-id> <project-dir>` creates an Yggdrasil worktree of
|
|
75
|
+
that project and seats the worker pane there. Herdr panes carry their own cwd
|
|
76
|
+
(`bin/herdr-run.sh seat_tab <name> <cwd>`), so the pane layout is unchanged.
|
|
77
|
+
|
|
78
|
+
Hlidskjalf is the Ymir home's control plane; other projects surface there through
|
|
79
|
+
the project registry and their worktrees.
|
|
80
|
+
|
|
81
|
+
## Verification
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
systemctl --user status ymir.service # substrate (Quadlet) — if containerised
|
|
85
|
+
bin/a2abridge-ensure.sh status # engine / directory / service
|
|
86
|
+
bin/a2a-mcp.sh show --project # MCP wiring in this repo
|
|
87
|
+
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:4602/health # the well
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Rollback (nothing global was changed)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
rm -f .pi/mcp.json opencode.json # project wiring (private/generated)
|
|
94
|
+
git checkout -- .agents/agents/ # roster model lines, if applied
|
|
95
|
+
systemctl --user stop ymir.service # the substrate
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Cautions
|
|
99
|
+
|
|
100
|
+
- **Do not run `scripts/start.sh` on the host while a container runs the
|
|
101
|
+
substrate** — the ports collide.
|
|
102
|
+
- The **seatbelts** (`bin/syn-pretool-check.sh`, `syn-cd-check.sh`) refuse some
|
|
103
|
+
dangerous shell operations *inside the checkout*; that is the feature.
|
|
104
|
+
- One**helm per home**: a second session in the same checkout should use an
|
|
105
|
+
Yggdrasil worktree.
|