@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
package/docs/ymir-rut.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# YMIR RUT — System Specification v2.6
|
|
2
|
+
|
|
3
|
+
> **Status:** ADOPTED AS THE **TARGET** ARCHITECTURE (ENTRY 2026-09-11-009/010).
|
|
4
|
+
> The v2.6 spec below is the long-term zenith (Rust, NATS, Envoy, PostgreSQL,
|
|
5
|
+
> libgit2, Cgroups v2). The **current** implementation deliberately uses the
|
|
6
|
+
> agent-proficient stack — **TypeScript + Python + React + Vue** — with a
|
|
7
|
+
> one-for-one crumb trail to Rut so the eventual port is a *re-floor*, not a
|
|
8
|
+
> redesign. See the **Reconciliation** appendix at the end of this document.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# PART 1 — System Structure & Repository Layout Specification
|
|
13
|
+
|
|
14
|
+
## Monorepo & Daemon Module Architecture v2.6
|
|
15
|
+
|
|
16
|
+
### 1. Monorepo Workspace Topology
|
|
17
|
+
|
|
18
|
+
`Ymir Rut` is structured as an enterprise-grade Cargo workspace combined with isolated worker runtimes, ensuring clean boundaries between control plane daemons, tenant sandboxes, and agent harnesses. *(Today: an npm/pnpm workspace + Python services holding the same boundaries.)*
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
ymir-rut/
|
|
22
|
+
├── Cargo.toml # Workspace manifest (Rust Edition 2024) → [today: package.json / pyproject.toml]
|
|
23
|
+
├── proto/ # Shared Protocol Buffers & gRPC definitions → [today: JSON-RPC/.agents/bus schemas]
|
|
24
|
+
├── crates/
|
|
25
|
+
│ ├── bifrost/ # [Ingress Gateway] Envoy/Reverse Proxy & TLS → [today: TS gateway service]
|
|
26
|
+
│ ├── hlidskjalf/ # [Control Plane] Telemetry, auth & dashboards → [today: React/Vue portal]
|
|
27
|
+
│ ├── svartalfaheim/ # [Tenant Realms] Namespace & credential stores → [today: TS tenant daemon]
|
|
28
|
+
│ ├── ratatoskr/ # [Event Bus] NATS JetStream broker integration → [today: TS A2A backbone + Redis]
|
|
29
|
+
│ └── yggdrasil/ # [Worktree Manager] libgit2 .treehouses engine → [today: TS worktree manager]
|
|
30
|
+
├── runtime/
|
|
31
|
+
│ ├── utgard/ # [Sandboxes] Rootless Docker & cgroups v2 configs → [today: Python/Docker sandbox]
|
|
32
|
+
│ └── brokk/ # [Worker Cluster] Autonomous agent harness → [today: Python/TS agent harness]
|
|
33
|
+
└── configs/ # Cluster deployment helm charts & compose files → [today: docker-compose.yml]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Core Workspace Crates & Daemons
|
|
37
|
+
|
|
38
|
+
**A. Bifrost (`crates/bifrost/`)**
|
|
39
|
+
|
|
40
|
+
Role: Edge ingress gateway handling TLS termination, rate-limiting, and tenant route redirection.
|
|
41
|
+
|
|
42
|
+
Key Modules:
|
|
43
|
+
- `ingress::proxy`: Reverse proxy request forwarder.
|
|
44
|
+
- `auth::verifier`: Zero-trust token validation against Svartalfaheim stores.
|
|
45
|
+
|
|
46
|
+
**B. Hlidskjalf (`crates/hlidskjalf/`)**
|
|
47
|
+
|
|
48
|
+
Role: Central observability and dashboard metrics collector.
|
|
49
|
+
|
|
50
|
+
Key Modules:
|
|
51
|
+
- `telemetry::emitter`: Broadcasts operational metrics (98.4% traceability index tracking).
|
|
52
|
+
- `dashboard::api`: REST and GraphQL endpoints for cluster monitoring.
|
|
53
|
+
|
|
54
|
+
**C. Svartalfaheim (`crates/svartalfaheim/`)**
|
|
55
|
+
|
|
56
|
+
Role: Multi-tenant realm isolation engine.
|
|
57
|
+
|
|
58
|
+
Key Modules:
|
|
59
|
+
- `realm::namespace`: Ephemeral memory and environment variable scoping per tenant ID.
|
|
60
|
+
- `vault::keys`: Secure credential store with zero memory bleed guarantees.
|
|
61
|
+
|
|
62
|
+
**D. Ratatoskr (`crates/ratatoskr/`)**
|
|
63
|
+
|
|
64
|
+
Role: Asynchronous event bus and message broker.
|
|
65
|
+
|
|
66
|
+
Key Modules:
|
|
67
|
+
- `bus::nats`: JetStream publisher/subscriber client wrapper.
|
|
68
|
+
- `dispatch::router`: Inter-daemon event dispatch and trace logging.
|
|
69
|
+
|
|
70
|
+
**E. Yggdrasil (`crates/yggdrasil/`)**
|
|
71
|
+
|
|
72
|
+
Role: Parallel Git worktree manager (.treehouses).
|
|
73
|
+
|
|
74
|
+
Key Modules:
|
|
75
|
+
- `worktree::libgit2`: Manages isolated concurrent branches for agent code mutations without collision.
|
|
76
|
+
- `snapshot::diff`: Rapid staging and commit verification.
|
|
77
|
+
|
|
78
|
+
### 3. Worker & Runtime Subsystems
|
|
79
|
+
|
|
80
|
+
**A. Utgard (`runtime/utgard/`)**
|
|
81
|
+
|
|
82
|
+
Role: Ephemeral sandbox container runtime.
|
|
83
|
+
|
|
84
|
+
Specification: Configures rootless Docker engines, enforces Cgroups v2 limits (128GB memory ceiling), and applies strict seccomp syscall filters.
|
|
85
|
+
|
|
86
|
+
**B. Brokk (`runtime/brokk/`)**
|
|
87
|
+
|
|
88
|
+
Role: Autonomous agent execution worker cluster.
|
|
89
|
+
|
|
90
|
+
Specification: Python 3.12+ and Node.js 22 runtimes providing tool execution loops, prompt pipelines, and structured code transformation harnesses. *(This crate is the one Rut spec that is already current-stack — Python 3.12+ and Node/TypeScript.)*
|
|
91
|
+
|
|
92
|
+
### 4. Inter-Module IPC & Protocol Definitions
|
|
93
|
+
|
|
94
|
+
All inter-daemon communication relies on strongly typed Protocol Buffers (`proto/v2/`) compiled via tonic (gRPC) and JSON-RPC over Unix domain sockets for zero-latency local worker communication. *(Today: JSON-RPC 2.0 / A2A 1.0 over HTTP(S) + Unix-domain sockets between local daemons.)*
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
# PART 2 — Technical Architecture & Stack Requirements
|
|
99
|
+
|
|
100
|
+
## System Specification v2.6
|
|
101
|
+
|
|
102
|
+
### 1. System Topology & Component Architecture
|
|
103
|
+
|
|
104
|
+
`Ymir Rut` is structured around a decoupled, micro-daemon architecture designed for high-concurrency agent orchestration, zero-trust tenant isolation, and immutable worktree management.
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
┌─────────────────────────────────────────┐
|
|
108
|
+
│ BIFROST (Ingress GW) │
|
|
109
|
+
│ Envoy / NGINX Reverse Proxy & TLS Term │
|
|
110
|
+
└────────────────────┬────────────────────┘
|
|
111
|
+
│
|
|
112
|
+
┌────────────────────┴────────────────────┐
|
|
113
|
+
│ HLIDSKJALF (Control Plane) │
|
|
114
|
+
│ Telemetry, Dashboards & Auth Daemons │
|
|
115
|
+
└────────────────────┬────────────────────┘
|
|
116
|
+
│
|
|
117
|
+
┌──────────────────────────┴──────────────────────────┐
|
|
118
|
+
▼ ▼
|
|
119
|
+
┌───────────────────────────────────┐ ┌───────────────────────────────────┐
|
|
120
|
+
│ SVARTALFAHEIM (Tenant A) │ │ SVARTALFAHEIM (Tenant B) │
|
|
121
|
+
│ Isolated Namespace & Cred Store │ │ Isolated Namespace & Cred Store │
|
|
122
|
+
└───────────┬───────────────────────┘ └───────────┬───────────────────────┘
|
|
123
|
+
│ │
|
|
124
|
+
├──► RATATOSKR (Async Event Bus / NATS Broker) │
|
|
125
|
+
├──► YGGDRASIL (Git Worktree Manager / libgit2) │
|
|
126
|
+
└──► UTGARD (Docker Ephemeral Sandboxes) │
|
|
127
|
+
└── BROKK (Autonomous Agent Worker Cluster) │
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 2. Comprehensive Technology Stack Requirements
|
|
131
|
+
|
|
132
|
+
**A. Core Control Plane & Daemons**
|
|
133
|
+
|
|
134
|
+
- Language: Rust (Edition 2024) — Chosen for zero-cost abstractions, memory safety without garbage collection, and lightning-fast async performance. *(Target. Today: TypeScript on Node.)*
|
|
135
|
+
- Async Runtime: Tokio — Handles concurrent I/O across thousands of active tenant connections and agent worker streams. *(Today: Node async I/O.)*
|
|
136
|
+
- API & IPC Layer: gRPC (Protobuf v3) and JSON-RPC for low-latency inter-daemon communication between Bifrost, Ratatoskr, and Brokk. *(Today: JSON-RPC 2.0 + A2A 1.0 + Redis.)*
|
|
137
|
+
|
|
138
|
+
**B. Agent Orchestration & Worker Runtime**
|
|
139
|
+
|
|
140
|
+
- Primary Agent Harness: Python 3.12+ / TypeScript (Node.js 22) — Supporting flexible LLM SDK bindings, tool execution loops, and structured planning pipelines. ✅ *already current stack*
|
|
141
|
+
- Worker Daemons (Brokk): Containerized worker nodes compiled as standalone static binaries interacting via IPC with the host kernel. *(Today: Python/TS services under PM2/Docker.)*
|
|
142
|
+
|
|
143
|
+
**C. Sandbox & Container Runtime (Utgard)**
|
|
144
|
+
|
|
145
|
+
- Isolation Engine: Docker Engine / containerd with rootless container configurations and seccomp syscall filtering.
|
|
146
|
+
- Resource Limits: Cgroups v2 enforcement per sandbox instance (default allocation: 128GB memory ceiling, ephemeral storage bounds).
|
|
147
|
+
- Network Policies: Strict zero-egress or scoped proxy-routed egress via Bifrost.
|
|
148
|
+
|
|
149
|
+
**D. Event Bus & Messaging (Ratatoskr)**
|
|
150
|
+
|
|
151
|
+
- Broker: NATS Server (JetStream enabled) — Ultra-low latency pub/sub messaging broker ensuring reliable event delivery across all seven system realms with 98.4% traceability index assurance. *(Today: Redis pub/sub under the A2A 1.0 task model.)*
|
|
152
|
+
|
|
153
|
+
**E. Version Control & Worktrees (Yggdrasil)**
|
|
154
|
+
|
|
155
|
+
- Engine: libgit2 / Git CLI — Manages isolated parallel branch worktrees (.treehouses) on shared storage volumes, preventing file collision during concurrent agent file mutations.
|
|
156
|
+
|
|
157
|
+
**F. Persistence & Storage Tier**
|
|
158
|
+
|
|
159
|
+
- Relational Database: PostgreSQL 16+ — Stores tenant metadata, user credentials, access control lists, and immutable audit logs. *(Today: Postgres available self-hosted; engram/SQLite stays the memory well.)*
|
|
160
|
+
- Object Storage: MinIO / AWS S3 Compatible — Caches build artifacts, large model contexts, and compressed snapshot archives for ephemeral sandboxes.
|
|
161
|
+
|
|
162
|
+
### 3. Security & Multi-Tenant Isolation Specifications
|
|
163
|
+
|
|
164
|
+
- **Realm Boundary Enforcement:** Svartalfaheim enforces strict namespace isolation. Memory pages, environment variables, and temporary credential tokens cannot cross tenant boundaries.
|
|
165
|
+
- **Traceability Auditing:** Every agent modification generates cryptographic checksums and execution telemetry logs recorded to the immutable audit ledger, maintaining a minimum traceability index of 98.4%.
|
|
166
|
+
- **Ephemeral Lifecycle:** Utgard sandboxes are destroyed immediately upon task completion or failure, wiping all local container states from disk.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
# PART 3 — Multi-Tenant Agent OS
|
|
171
|
+
|
|
172
|
+
## Comprehensive Design & Architecture Specification (v2.6)
|
|
173
|
+
|
|
174
|
+
### 1. Executive Summary & Brand Identity
|
|
175
|
+
|
|
176
|
+
`Ymir Rut` is an advanced **Multi-Tenant Agent Operating System** designed for orchestrating autonomous AI worker clusters, secure tenant sandboxes, and immutable version-controlled worktrees. The brand identity fuses Norse mythic durability (symbolizing primeval creation, forged iron, and runic permanence) with modern cloud-native systems architecture (zero-trust isolation, ephemeral container runtimes, and real-time telemetry).
|
|
177
|
+
|
|
178
|
+
### 2. Design System Rules & Visual Language
|
|
179
|
+
|
|
180
|
+
**A. Typography**
|
|
181
|
+
|
|
182
|
+
- **Headings & Runes:** Cinzel (Google Fonts) — Provides carved, lapidary, monumental elegance representing ancient galdrastafir and runic inscriptions.
|
|
183
|
+
- **Code, Telemetry & Status:** JetBrains Mono (Google Fonts) — Precision monospaced typeface for command-line interfaces, json configs, and operational metrics.
|
|
184
|
+
- **Body & UI Text:** Inter (Google Fonts) — Clean, highly legible sans-serif for dashboard readability and interface descriptions.
|
|
185
|
+
|
|
186
|
+
**B. Color Palette & Lighting**
|
|
187
|
+
|
|
188
|
+
- **Canvas Base:** Deep obsidian slate (`#080c14` to `#060911`), evoking subterranean forge chambers and deep space telemetry.
|
|
189
|
+
- **Luminescence & Primary Accent:** Electric Cyan (`#38bdf8`, `#0ea5e9`), representing crystalline energy and Bifrost transit beams.
|
|
190
|
+
- **Secondary Accent:** Deep Violet / Indigo (`#818cf8`, `#6366f1`), denoting ethereal multi-tenant realms and deep compute nodes.
|
|
191
|
+
- **Borders & Structural Lines:** Muted slate (`#1e293b`, `#334155`), providing crisp container framing without visual clutter.
|
|
192
|
+
|
|
193
|
+
**C. Iconography & Emblem Geometry**
|
|
194
|
+
|
|
195
|
+
- **The Ymir Root Mark:** Combines the **Algiz** rune (signifying divine protection and branching worker stems) with a heavy **blacksmith anvil base** (signifying industrial strength and compute execution).
|
|
196
|
+
- **Chiseled Bevels:** Modeled with dual-layer vector depth — a dark iron forged exterior (`#334155`) paired with a luminous cyan chiseled inner edge (`#7dd3fc`).
|
|
197
|
+
|
|
198
|
+
### 3. Core Architecture Topology (The 7 Realms / Modules)
|
|
199
|
+
|
|
200
|
+
The Ymir OS runtime is structured around seven interlinked daemons and architectural modules:
|
|
201
|
+
|
|
202
|
+
| Realm | Module | Function |
|
|
203
|
+
|---|---|---|
|
|
204
|
+
| **Bifrost** | Ingress Gateway | Reverse proxy router and TLS HTTP gateway handling secure ingress traffic across tenant realms. Route spec: `/ingress/proxy/router` |
|
|
205
|
+
| **Hlidskjalf** | Control Plane & Observability | Centralized user dashboard providing real-time telemetry, trace logs, and cluster health metrics |
|
|
206
|
+
| **Svartalfaheim** | Tenant Isolation Realms | Scoped customer workspaces ensuring zero credential, memory, or state bleed between execution nodes. Isolation level: `sandbox_isolated` |
|
|
207
|
+
| **Brokk** | Autonomous Agent Workers | Primary task execution workers responsible for orchestrating builds, audits, and code transformations |
|
|
208
|
+
| **Utgard** | Ephemeral Sandboxes | Hardened Docker task runtimes for executing untrusted shell code and automated compilation safely. Runtime spec: `docker_ephemeral` |
|
|
209
|
+
| **Yggdrasil** | Git Worktree Manager | Manages isolated branch worktrees (.treehouses) for concurrent agent modifications without repo collision |
|
|
210
|
+
| **Ratatoskr** | Event Bus | Lightweight asynchronous message broker facilitating inter-daemon communication and event dispatch |
|
|
211
|
+
|
|
212
|
+
### 4. System Metadata & Config Specification
|
|
213
|
+
|
|
214
|
+
Every Ymir cluster broadcasts standardized telemetry conformant with the core engine spec:
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"system_identifier": "ymir_rut_core",
|
|
219
|
+
"operational_status": "NOMINAL",
|
|
220
|
+
"core_light_wavelength": ["460nm (Cyan)", "390nm (Violet)"],
|
|
221
|
+
"surface_texture": "Hand_Hammered_Steel",
|
|
222
|
+
"crystalline_grid": "Icosahedral_Facets",
|
|
223
|
+
"glyph_set": "A-Z_Runes_Simplified",
|
|
224
|
+
"resource_allocation": {
|
|
225
|
+
"engine": "utgard_sandbox",
|
|
226
|
+
"instance": "78c70",
|
|
227
|
+
"memory": "128GB"
|
|
228
|
+
},
|
|
229
|
+
"traceability_index": 0.984
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 5. Interactive Harness & CLI Specifications
|
|
234
|
+
|
|
235
|
+
- **Command Set:** Supports interactive commands such as `ymir status`, `brokk agent spawn`, and `ymir init`.
|
|
236
|
+
- **Traceability Assurance:** Every agent execution returns a verified traceability index (e.g., 98.4%), ensuring complete auditability of automated code changes.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
# APPENDIX — Reconciliation: Rut (target) → Current Stack (today)
|
|
242
|
+
|
|
243
|
+
Both stacks speak the same Norse module language; only the floors differ.
|
|
244
|
+
|
|
245
|
+
| Rut module (target) | Current implementation (TypeScript · Python · React · Vue) |
|
|
246
|
+
|---|---|
|
|
247
|
+
| `crates/bifrost` (Envoy/gRPC) | TS gateway service — Traefik/Caddy + JSON-RPC routing; `auth::verifier` → Heimdall OAuth2-proxy |
|
|
248
|
+
| `crates/hlidskjalf` (Rust dashboard) | **React/Vue** portal — smidja visualizer paradigm, `#/memory`, `#/fleet`, `#/tasks`, Runes stream |
|
|
249
|
+
| `crates/svartalfaheim` (tenant/cred vault) | TS tenant daemon — realm namespaces, `.env.realm`, scoped registries, per-realm A2A discovery |
|
|
250
|
+
| `crates/ratatoskr` (NATS JetStream) | TS **A2A 1.0 backbone** + Redis queue under the task model (plan 25) |
|
|
251
|
+
| `crates/yggdrasil` (libgit2 .treehouses) | TS worktree manager over git CLI — `.yggdrasil/<agent-id>/` branches |
|
|
252
|
+
| `runtime/utgard` (rootless Docker, cgroups v2, seccomp) | Python/Docker sandbox — network-none, CPU/RAM/timeouts (unchanged intent) |
|
|
253
|
+
| `runtime/brokk` (agent harness, Py 3.12+/Node 22) | **already current stack** — Python + TS/Node agent harnesses, tool loops, mirroring |
|
|
254
|
+
| `proto/` (Protobuf/gRPC) | `.agents/bus` schemas (JSON-RPC 2.0, A2A task lifecycle, `InterAgentMessage`) |
|
|
255
|
+
| PostgreSQL 16 + MinIO | self-hosted Postgres 16 for tenant metadata/audit; MinIO/S3 for artifacts; **engram** = memory well |
|
|
256
|
+
| CLI (`ymir status`, `brokk agent spawn`, `ymir init`) | same command surface, implemented in TS/Python |
|
|
257
|
+
| Traceability index 98.4% | every significant action → Runes ledger + Mimirsbrunn episode (audit coverage) |
|
|
258
|
+
|
|
259
|
+
**Port policy (ENTRY-009/010):** ship end-to-end on TS/Python/React/Vue first; when stable,
|
|
260
|
+
re-floor each service into its Rut crate without redesigning the module contract.
|
package/package.json
CHANGED
|
@@ -1,27 +1,57 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerwiz/ymir",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Ymir
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Ymir \u2014 the single-tenant agent operating system. Omarchy-first, host-aware, self-healing.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"homepage": "https://github.com/zerwiz/ymir",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/zerwiz/ymir.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/zerwiz/ymir/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"agent",
|
|
16
|
+
"agents",
|
|
17
|
+
"ymir",
|
|
18
|
+
"brokk",
|
|
19
|
+
"omarchy",
|
|
20
|
+
"wsl",
|
|
21
|
+
"a2a",
|
|
22
|
+
"mcp"
|
|
23
|
+
],
|
|
6
24
|
"bin": {
|
|
7
|
-
"ymir": "bin/ymir.js"
|
|
25
|
+
"ymir": "bin/ymir.js",
|
|
26
|
+
"ymir-install": "bin/ymir-install.sh"
|
|
8
27
|
},
|
|
9
28
|
"files": [
|
|
10
|
-
"bin",
|
|
11
|
-
"
|
|
29
|
+
"bin/",
|
|
30
|
+
".agents/",
|
|
31
|
+
"scripts/",
|
|
32
|
+
"config/",
|
|
33
|
+
"RULES/",
|
|
34
|
+
"docs/",
|
|
35
|
+
"packaging/",
|
|
36
|
+
"AGENTS.md",
|
|
12
37
|
"README.md",
|
|
13
|
-
"
|
|
38
|
+
"CHANGELOG.md",
|
|
39
|
+
"LICENSE",
|
|
40
|
+
"NOTICE",
|
|
41
|
+
"!**/node_modules/**"
|
|
14
42
|
],
|
|
15
43
|
"engines": {
|
|
16
|
-
"node": ">=
|
|
17
|
-
},
|
|
18
|
-
"license": "Apache-2.0",
|
|
19
|
-
"homepage": "https://github.com/zerwiz/ymir",
|
|
20
|
-
"repository": {
|
|
21
|
-
"type": "git",
|
|
22
|
-
"url": "https://github.com/zerwiz/ymir-release.git"
|
|
44
|
+
"node": ">=20"
|
|
23
45
|
},
|
|
46
|
+
"os": [
|
|
47
|
+
"linux",
|
|
48
|
+
"darwin"
|
|
49
|
+
],
|
|
24
50
|
"publishConfig": {
|
|
25
51
|
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"test": "bash .agents/skills/galdr-ymirsystem/scripts/compliance-check.sh",
|
|
55
|
+
"compliance": "bash .agents/skills/galdr-ymirsystem/scripts/compliance-check.sh"
|
|
26
56
|
}
|
|
27
57
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# build.sh — build the installer each host can actually build.
|
|
3
|
+
#
|
|
4
|
+
# packaging/build.sh --exe # Windows installer → Ymir-Setup-<version>.exe (NSIS, needs makensis)
|
|
5
|
+
# packaging/build.sh --mac # macOS installer → Ymir-<version>.pkg (pkgbuild, macOS only)
|
|
6
|
+
# packaging/build.sh --check # what this host can build, and with what
|
|
7
|
+
#
|
|
8
|
+
# Honest boundaries, stated up front:
|
|
9
|
+
# • The .exe is an NSIS installer, so it can be built on Linux or Windows —
|
|
10
|
+
# NSIS is a compiler, not a Windows VM.
|
|
11
|
+
# • The .pkg needs Apple's own pkgbuild/productbuild: it is built ON a Mac, or
|
|
12
|
+
# in CI on a macos runner (.github/workflows/ymir-installers.yml). Signing and
|
|
13
|
+
# notarisation need the operator's Apple credentials and are deliberately not
|
|
14
|
+
# attempted here.
|
|
15
|
+
set -u
|
|
16
|
+
|
|
17
|
+
VERSION="$(git -C "$(dirname "${BASH_SOURCE[0]}")" describe --tags --always 2>/dev/null || printf '0.1.0')"
|
|
18
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
19
|
+
OUT="$ROOT/packaging/out"
|
|
20
|
+
REPO="${YMIR_REPO:-$(git -C "$ROOT" remote get-url origin 2>/dev/null || printf 'https://github.com/zerwiz/ymir.git')}"
|
|
21
|
+
|
|
22
|
+
have() { command -v "$1" >/dev/null 2>&1; }
|
|
23
|
+
|
|
24
|
+
can_exe() { have makensis; }
|
|
25
|
+
can_mac() { [ "$(uname -s)" = "Darwin" ] && have pkgbuild; }
|
|
26
|
+
|
|
27
|
+
check() {
|
|
28
|
+
printf 'installers[3]{target,buildable,why}:\n'
|
|
29
|
+
printf ' "windows .exe","%s","%s"\n' \
|
|
30
|
+
"$([ "$(can_exe && echo y)" = y ] && printf yes || printf no)" \
|
|
31
|
+
"$(can_exe && printf 'makensis present' || printf 'makensis absent — apt-get install nsis (or choco install nsis), or let CI build it')"
|
|
32
|
+
printf ' "macos .pkg","%s","%s"\n' \
|
|
33
|
+
"$([ "$(can_mac && echo y)" = y ] && printf yes || printf no)" \
|
|
34
|
+
"$(can_mac && printf 'pkgbuild present' || printf 'pkgbuild is Apple-only — build on a Mac, or in CI on a macos runner')"
|
|
35
|
+
printf ' "universal .command","yes","shipped as a file; double-clickable on any Mac (no build step)"\n'
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exe() {
|
|
39
|
+
if ! can_exe; then
|
|
40
|
+
printf 'error: makensis not found\nhelp: sudo apt-get install -y nsis\n' >&2
|
|
41
|
+
printf 'help: or build in CI — .github/workflows/ymir-installers.yml\n' >&2
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
mkdir -p "$OUT"
|
|
45
|
+
makensis -DREPO="$REPO" -DVERSION="$VERSION" "$ROOT/packaging/windows/ymir-setup.nsi" >/dev/null 2>&1 \
|
|
46
|
+
|| { printf 'error: makensis failed\nhelp: run it by hand to see why:\n makensis -DREPO=%s packaging/windows/ymir-setup.nsi\n' "$REPO" >&2; exit 1; }
|
|
47
|
+
mv -f "$ROOT/packaging/windows/Ymir-Setup-"*.exe "$OUT/" 2>/dev/null || true
|
|
48
|
+
printf 'installers[1]{target,artifact}:\n "windows .exe","%s"\n' "$OUT/$(ls "$OUT" | grep '\.exe$' | head -1)"
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
pkg() {
|
|
52
|
+
if ! can_mac; then
|
|
53
|
+
printf 'error: pkgbuild is Apple-only; this host cannot build a .pkg\nhelp: on a Mac run: packaging/build.sh --mac\nhelp: or CI on a macos runner — .github/workflows/ymir-installers.yml\n' >&2
|
|
54
|
+
exit 1
|
|
55
|
+
fi
|
|
56
|
+
mkdir -p "$OUT"
|
|
57
|
+
local stage="$OUT/stage"
|
|
58
|
+
rm -rf "$stage"; mkdir -p "$stage/Applications/Ymir"
|
|
59
|
+
cp "$ROOT/packaging/macos/Ymir Installer.command" "$stage/Applications/Ymir/"
|
|
60
|
+
chmod +x "$stage/Applications/Ymir/Ymir Installer.command"
|
|
61
|
+
cp "$ROOT/bin/bootstrap-macos.sh" "$stage/Applications/Ymir/" 2>/dev/null || true
|
|
62
|
+
pkgbuild --root "$stage" --identifier com.ymir.installer --version "$VERSION" --install-location / "$OUT/Ymir-$VERSION.pkg" >/dev/null \
|
|
63
|
+
|| { printf 'error: pkgbuild failed\nhelp: run it by hand to see why\n' >&2; exit 1; }
|
|
64
|
+
printf 'installers[1]{target,artifact}:\n "macos .pkg","%s"\n' "$OUT/Ymir-$VERSION.pkg"
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
case "${1:-}" in
|
|
68
|
+
--exe) exe ;;
|
|
69
|
+
--mac) pkg ;;
|
|
70
|
+
--check|"") check ;;
|
|
71
|
+
-v|-V|--version) printf '%s\n' "$VERSION" ;;
|
|
72
|
+
-h|--help) sed -n '2,16p' "$0" | sed 's/^# \{0,1\}//' ;;
|
|
73
|
+
*) printf 'error: unknown flag %s\nhelp: packaging/build.sh [--exe|--mac|--check]\n' "$1" >&2; exit 2 ;;
|
|
74
|
+
esac
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Ymir Installer.command — double-click this on a Mac.
|
|
3
|
+
#
|
|
4
|
+
# macOS gets its Linux host the same way Windows does: a VM. This launcher finds
|
|
5
|
+
# the Ymir checkout and hands over to bin/bootstrap-macos.sh, which raises Ubuntu
|
|
6
|
+
# in Lima and installs Ymir inside it. It is a .command file so Finder runs it on
|
|
7
|
+
# a double-click — no terminal knowledge required of the operator.
|
|
8
|
+
#
|
|
9
|
+
# If there is no checkout yet, it clones one first (the URL below, overridable
|
|
10
|
+
# with YMIR_REPO).
|
|
11
|
+
set -u
|
|
12
|
+
REPO="${YMIR_REPO:-https://github.com/zerwiz/ymir.git}"
|
|
13
|
+
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
14
|
+
|
|
15
|
+
echo "Ymir — macOS bootstrap"
|
|
16
|
+
echo
|
|
17
|
+
|
|
18
|
+
# 1. find a checkout: beside this file, ~/Ymir, or clone one.
|
|
19
|
+
ROOT=""
|
|
20
|
+
for cand in "$HERE/../.." "$HOME/Ymir" "$HOME/Documents/Ymir-src"; do
|
|
21
|
+
[ -x "$cand/bin/bootstrap-macos.sh" ] && { ROOT="$(cd "$cand" && pwd)"; break; }
|
|
22
|
+
done
|
|
23
|
+
if [ -z "$ROOT" ]; then
|
|
24
|
+
echo "cloning Ymir into $HOME/Ymir …"
|
|
25
|
+
git clone "$REPO" "$HOME/Ymir" || { echo "clone failed — set YMIR_REPO to your checkout URL"; read -r -p "press return to close" _; exit 1; }
|
|
26
|
+
ROOT="$HOME/Ymir"
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "checkout: $ROOT"
|
|
30
|
+
echo
|
|
31
|
+
|
|
32
|
+
# 2. readiness, then the bootstrap. The bootstrap itself is gated on macOS and
|
|
33
|
+
# refuses politely anywhere else, so this launcher stays dumb on purpose.
|
|
34
|
+
"$ROOT/bin/bootstrap-macos.sh" --check
|
|
35
|
+
echo
|
|
36
|
+
read -r -p "Proceed with the install? [y/N] " reply
|
|
37
|
+
case "$reply" in
|
|
38
|
+
y|Y|yes|YES) "$ROOT/bin/bootstrap-macos.sh" ;;
|
|
39
|
+
*) echo "nothing changed." ;;
|
|
40
|
+
esac
|
|
41
|
+
|
|
42
|
+
echo
|
|
43
|
+
read -r -p "press return to close" _
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
; ymir-setup.nsi — the Windows bootstrap installer (Ymir-Setup.exe).
|
|
2
|
+
;
|
|
3
|
+
; It does one honest thing: install the Windows bootstrap and run it. Ymir's host
|
|
4
|
+
; on Windows is Ubuntu inside WSL2, so the "installer" sets that up and then
|
|
5
|
+
; hands over to bin/ymir-install.sh inside the distro. It is not a native
|
|
6
|
+
; Windows build of Ymir, and it does not pretend to be.
|
|
7
|
+
;
|
|
8
|
+
; Build (from the repo root, on Linux or Windows):
|
|
9
|
+
; packaging/build.sh --exe
|
|
10
|
+
; makensis -DREPO=https://github.com/<you>/ymir.git packaging/windows/ymir-setup.nsi
|
|
11
|
+
;
|
|
12
|
+
; Requires NSIS 3.x (Ubuntu: apt-get install nsis; Windows: choco install nsis).
|
|
13
|
+
|
|
14
|
+
Unicode true
|
|
15
|
+
!include "MUI2.nsh"
|
|
16
|
+
!include "x64.nsh"
|
|
17
|
+
|
|
18
|
+
!ifndef REPO
|
|
19
|
+
!define REPO "https://github.com/zerwiz/ymir.git"
|
|
20
|
+
!endif
|
|
21
|
+
!ifndef VERSION
|
|
22
|
+
!define VERSION "0.1.0"
|
|
23
|
+
!endif
|
|
24
|
+
|
|
25
|
+
!define APPNAME "Ymir"
|
|
26
|
+
Name "${APPNAME} — set up the Linux host (Ubuntu on WSL2)"
|
|
27
|
+
OutFile "Ymir-Setup-${VERSION}.exe"
|
|
28
|
+
InstallDir "$LOCALAPPDATA\Ymir"
|
|
29
|
+
InstallDirRegKey HKCU "Software\Ymir" "InstallDir"
|
|
30
|
+
RequestExecutionLevel admin ; enabling WSL requires elevation
|
|
31
|
+
|
|
32
|
+
VIProductVersion "0.1.0.0"
|
|
33
|
+
VIAddVersionKey "ProductName" "Ymir"
|
|
34
|
+
VIAddVersionKey "CompanyName" "Ymir"
|
|
35
|
+
VIAddVersionKey "FileDescription" "Ymir bootstrap — installs Ubuntu on WSL2 and Ymir inside it"
|
|
36
|
+
VIAddVersionKey "FileVersion" "${VERSION}"
|
|
37
|
+
|
|
38
|
+
!define MUI_ABORTWARNING
|
|
39
|
+
|
|
40
|
+
; ── pages ────────────────────────────────────────────────────────────────────
|
|
41
|
+
!insertmacro MUI_PAGE_WELCOME
|
|
42
|
+
!insertmacro MUI_PAGE_INSTFILES
|
|
43
|
+
!insertmacro MUI_PAGE_FINISH
|
|
44
|
+
!insertmacro MUI_UNPAGE_CONFIRM
|
|
45
|
+
!insertmacro MUI_UNPAGE_INSTFILES
|
|
46
|
+
!insertmacro MUI_LANGUAGE "English"
|
|
47
|
+
|
|
48
|
+
; ── install ──────────────────────────────────────────────────────────────────
|
|
49
|
+
Section "Bootstrap" SecBootstrap
|
|
50
|
+
SetOutPath "$INSTDIR"
|
|
51
|
+
File "..\..\bin\bootstrap-windows.ps1"
|
|
52
|
+
WriteUninstaller "$INSTDIR\uninstall.exe"
|
|
53
|
+
|
|
54
|
+
WriteRegStr HKCU "Software\Ymir" "InstallDir" "$INSTDIR"
|
|
55
|
+
WriteRegStr HKCU "Software\Ymir" "Repo" "${REPO}"
|
|
56
|
+
|
|
57
|
+
; The powershell bootstrap prints its own TOON rows to the log window, so the
|
|
58
|
+
; operator sees exactly what happened (WSL enabled, distro installed, Ymir in).
|
|
59
|
+
DetailPrint "Setting up the Linux host (Ubuntu on WSL2)…"
|
|
60
|
+
nsExec::ExecToLog 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$INSTDIR\bootstrap-windows.ps1" -Repo "${REPO}"'
|
|
61
|
+
Pop $0
|
|
62
|
+
${If} $0 != 0
|
|
63
|
+
DetailPrint "bootstrap returned $0 — read the log above; a reboot may be required."
|
|
64
|
+
${EndIf}
|
|
65
|
+
SectionEnd
|
|
66
|
+
|
|
67
|
+
Section "Uninstall"
|
|
68
|
+
Delete "$INSTDIR\bootstrap-windows.ps1"
|
|
69
|
+
Delete "$INSTDIR\uninstall.exe"
|
|
70
|
+
RMDir "$INSTDIR"
|
|
71
|
+
DeleteRegKey HKCU "Software\Ymir"
|
|
72
|
+
; The Ubuntu distro and its data are the operator's — never removed here.
|
|
73
|
+
; To remove them: wsl --unregister Ubuntu
|
|
74
|
+
SectionEnd
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# YMIR — scripts
|
|
2
|
+
|
|
3
|
+
Local run helpers. Both scripts are safe to call repeatedly.
|
|
4
|
+
|
|
5
|
+
## Hlidskjalf (control plane SPA)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
scripts/start.sh # raise the SPA → http://127.0.0.1:3888/
|
|
9
|
+
scripts/start.sh --foreground # run in the foreground (Ctrl-C to stop)
|
|
10
|
+
scripts/stop.sh # lower it (process group, then port fallback)
|
|
11
|
+
scripts/stop.sh --force # SIGKILL if TERM did not land
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- Installs `apps/hlidskjalf` dependencies on first run if missing.
|
|
15
|
+
- Writes a PID file to `.run/hlidskjalf.pid` and logs to `.run/hlidskjalf.log`.
|
|
16
|
+
- `HLIDSKJALF_PORT` overrides the default port (`3888`).
|
|
17
|
+
|
|
18
|
+
## Notes
|
|
19
|
+
|
|
20
|
+
- Never `pkill -f` on a path that appears in your own command line — kill by the
|
|
21
|
+
PID file (process group) or by port, as `stop.sh` does.
|
|
22
|
+
- `.run/` is runtime-only and must not be committed.
|