@zerwiz/ymir 0.1.4 → 0.1.7
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/README.md +74 -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 +360 -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.example +72 -0
- package/.agents/config/crew-dispatch.json +22 -0
- package/.agents/config/cron.yaml +11 -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/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/runes_audit.md +5 -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 +121 -0
- package/.agents/migrations/0004-hoard-and-realms.sh +104 -0
- package/.agents/migrations/0005-roots-out-of-tree.sh +158 -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 +159 -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 +736 -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 +539 -0
- package/.agents/skills/galdr-ymirsystem/assets/installation.md +763 -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 +163 -0
- package/.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md +415 -0
- package/.agents/skills/galdr-ymirsystem/assets/norse-naming.md +325 -0
- package/.agents/skills/galdr-ymirsystem/assets/odrerir-hall.md +133 -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 +101 -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 +180 -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 +503 -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 +90 -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 +57 -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 +35 -0
- package/.agents/skills/ymir-host/assets/desktop.md +36 -0
- package/.agents/skills/ymir-host/assets/install.md +69 -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 +498 -0
- package/CHANGELOG.md +1913 -0
- package/LICENSE +1 -1
- package/NOTICE +63 -0
- package/README.md +114 -60
- 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 +97 -0
- package/RULES/05-platforms.md +67 -0
- package/RULES/06-append-only.md +108 -0
- package/RULES/07-config.md +101 -0
- package/RULES/08-delivery-gate.md +75 -0
- package/RULES/09-electron.md +58 -0
- package/RULES/README.md +22 -0
- package/bin/README.md +107 -0
- package/bin/a2a-mcp.sh +133 -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 +256 -0
- package/bin/apodex-smoke-test.sh +105 -0
- package/bin/bifrost-bridge.sh +131 -0
- package/bin/bifrost-ingress.sh +77 -0
- package/bin/bootstrap-macos.sh +112 -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 +51 -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-assemble.sh +154 -0
- package/bin/changelog-guard.sh +197 -0
- package/bin/crash-sense.sh +173 -0
- package/bin/design-check.sh +80 -0
- package/bin/design-icon.sh +153 -0
- package/bin/desktop-place.sh +224 -0
- package/bin/docs-guard.sh +39 -0
- package/bin/editor-place.sh +225 -0
- package/bin/eindri-acclaim.sh +47 -0
- package/bin/eindri-control.sh +28 -0
- package/bin/eindri-role.sh +83 -0
- package/bin/eindri-seat.sh +83 -0
- package/bin/eindri-seen.sh +54 -0
- package/bin/eindri-send.sh +15 -0
- package/bin/eindri-start.sh +98 -0
- package/bin/eindri-watch.sh +57 -0
- package/bin/einherjar-spawn.sh +576 -0
- package/bin/eir-doctor.sh +158 -0
- package/bin/erindi-brief.sh +271 -0
- package/bin/feature-inventory.sh +73 -0
- package/bin/fleet-apply.sh +81 -0
- package/bin/github-deploy.sh +94 -0
- package/bin/gjallarhorn-expose.sh +136 -0
- package/bin/gjallarhorn-notify.sh +71 -0
- package/bin/gjallarhorn-purge.sh +67 -0
- package/bin/gjallarhorn-tunnel.sh +85 -0
- package/bin/gleipnir-lock-lib.sh +284 -0
- package/bin/groa-update.sh +130 -0
- package/bin/hall-snapshot.sh +111 -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 +452 -0
- package/bin/hermes-ensure.sh +88 -0
- package/bin/hlidskjalf-agents.sh +172 -0
- package/bin/hlidskjalf-usage.sh +196 -0
- package/bin/hoard-guard.sh +135 -0
- package/bin/hoard-lib.sh +105 -0
- package/bin/hodd.sh +102 -0
- package/bin/host-sense.sh +199 -0
- package/bin/huginn-research-worker.sh +121 -0
- package/bin/local-model-lock.sh +70 -0
- package/bin/mimir-bridge.py +259 -0
- package/bin/mimir-bridge.sh +100 -0
- package/bin/mimir-ingest.sh +131 -0
- package/bin/mimir-reflect.sh +27 -0
- package/bin/mimir.sh +113 -0
- package/bin/mjollnir-webhook.sh +72 -0
- package/bin/mjollnir.sh +104 -0
- package/bin/model-hardware.sh +96 -0
- package/bin/model-resolve.sh +160 -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-hall-snapshot.sh +28 -0
- package/bin/nornir-job-memory-housekeeping.sh +114 -0
- package/bin/nornir-job-nsr-compliance.sh +54 -0
- package/bin/nornir-job-observer.sh +166 -0
- package/bin/nornir-job-skillopt-sleep.sh +76 -0
- package/bin/npm-publish.sh +136 -0
- package/bin/omarchy-hook-install.sh +60 -0
- package/bin/omarchy-install.sh +161 -0
- package/bin/omarchy-plugins.sh +187 -0
- package/bin/omarchy-sense.sh +162 -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-model-agnostic.sh +71 -0
- package/bin/pi-seat.sh +63 -0
- package/bin/prereq-ensure.sh +166 -0
- package/bin/private-guard.sh +58 -0
- package/bin/project-git.sh +69 -0
- package/bin/public-guard.sh +71 -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 +104 -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 +94 -0
- package/bin/smidja-observe.sh +86 -0
- package/bin/syn-arm-pretool-check.sh +57 -0
- package/bin/syn-asset-pretool-check.sh +89 -0
- package/bin/syn-cd-pretool-check.sh +28 -0
- package/bin/syn-guard-pretool-check.sh +83 -0
- package/bin/syn-spawn-pretool-check.sh +58 -0
- package/bin/syn-turnend-guard.sh +36 -0
- package/bin/syn-watch-arm.sh +99 -0
- package/bin/tailscale-sync.sh +203 -0
- package/bin/telegram-bot.sh +82 -0
- package/bin/toolchain.sh +74 -0
- package/bin/ui-truth-check.sh +75 -0
- package/bin/utgard.sh +111 -0
- package/bin/valhalla.sh +115 -0
- package/bin/valknut-load.sh +298 -0
- package/bin/vor-crew-state.sh +124 -0
- package/bin/wedge-notify.sh +60 -0
- package/bin/workspace-provision.sh +80 -0
- package/bin/workspace-rag.sh +163 -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 +806 -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-plan.sh +356 -0
- package/bin/ymir-platform.sh +348 -0
- package/bin/ymir-say.sh +110 -0
- package/bin/ymir-setup-auth.sh +119 -0
- package/bin/ymir-validate.sh +193 -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 +1060 -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 +54 -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 +269 -0
- package/scripts/lower.sh +34 -0
- package/scripts/raise.sh +42 -0
- package/scripts/start.sh +217 -0
- package/scripts/stop.sh +113 -0
- package/install.sh +0 -35
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# 0003-private-data-separation — move all private data to YMIR_HOME
|
|
3
|
+
# Idempotent: safe to run repeatedly. Copies (never moves); originals
|
|
4
|
+
# remain until manually removed.
|
|
5
|
+
set -u
|
|
6
|
+
|
|
7
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
8
|
+
YMIR_HOME="${YMIR_HOME:-$HOME/Documents/Ymir}"
|
|
9
|
+
|
|
10
|
+
echo "0003-private-data-separation"
|
|
11
|
+
echo " source: $ROOT (repo)"
|
|
12
|
+
echo " target: $YMIR_HOME"
|
|
13
|
+
|
|
14
|
+
# 1. Create target layout
|
|
15
|
+
mkdir -p "$YMIR_HOME"/{config,secrets,identity,workspaces/{work,personal},memory/{daily,well},smidja,state,data}
|
|
16
|
+
|
|
17
|
+
# 2. Migrate hodd/ (Hoard) → YMIR_HOME/
|
|
18
|
+
# Non-destructive: never overwrites an existing file, and MERGES a directory
|
|
19
|
+
# into its target. The target dirs are pre-created above, so a naive
|
|
20
|
+
# `[ -e "$2" ] && return` skipped every directory source — `data/` among them,
|
|
21
|
+
# which silently dropped the realm declaration and made 0004 fall back to a
|
|
22
|
+
# neutral realm.
|
|
23
|
+
copy() { # <src> <dest>
|
|
24
|
+
[ -e "$1" ] || return 0
|
|
25
|
+
if [ -d "$1" ]; then
|
|
26
|
+
mkdir -p "$2" || return 0
|
|
27
|
+
cp -rn "$1"/. "$2"/ 2>/dev/null && printf ' copied %s\n' "${1#$ROOT/}"
|
|
28
|
+
return 0
|
|
29
|
+
fi
|
|
30
|
+
if [ -e "$2" ]; then return 0; fi
|
|
31
|
+
mkdir -p "$(dirname "$2")" || return 0
|
|
32
|
+
cp -rn "$1" "$2" 2>/dev/null && printf ' copied %s\n' "${1#$ROOT/}"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
copy "$ROOT/hodd/secrets" "$YMIR_HOME/secrets"
|
|
36
|
+
copy "$ROOT/hodd/identity" "$YMIR_HOME/identity"
|
|
37
|
+
copy "$ROOT/hodd/docs" "$YMIR_HOME/memory"
|
|
38
|
+
copy "$ROOT/hodd/masterplan.md" "$YMIR_HOME/memory/masterplan.md"
|
|
39
|
+
copy "$ROOT/hodd/append-only-log.md" "$YMIR_HOME/memory/append-only-log.md"
|
|
40
|
+
|
|
41
|
+
# 3. Migrate svartalfaheim/ (tenant data) → YMIR_HOME/workspaces/ + identity/companies/
|
|
42
|
+
copy "$ROOT/svartalfaheim/work/workspace" "$YMIR_HOME/workspaces/work"
|
|
43
|
+
copy "$ROOT/svartalfaheim/wayof/companies" "$YMIR_HOME/identity/companies"
|
|
44
|
+
|
|
45
|
+
# 4. Migrate workspace/ (operator's world-tree) → YMIR_HOME/workspaces/
|
|
46
|
+
for d in work personal memory companies; do
|
|
47
|
+
copy "$ROOT/workspace/$d" "$YMIR_HOME/workspaces/$d"
|
|
48
|
+
done
|
|
49
|
+
|
|
50
|
+
# 5. Migrate config/agents.yaml → YMIR_HOME/config/
|
|
51
|
+
copy "$ROOT/config/agents.yaml" "$YMIR_HOME/config/agents.yaml"
|
|
52
|
+
|
|
53
|
+
# 6. Migrate state/ → YMIR_HOME/state/
|
|
54
|
+
copy "$ROOT/state" "$YMIR_HOME/state"
|
|
55
|
+
|
|
56
|
+
# 7. Migrate data/ → YMIR_HOME/data/
|
|
57
|
+
copy "$ROOT/data" "$YMIR_HOME/data"
|
|
58
|
+
|
|
59
|
+
# 8. Migrate .agents/memory/kaia.engram* → YMIR_HOME/memory/
|
|
60
|
+
copy "$ROOT/.agents/memory/kaia.engram" "$YMIR_HOME/memory/kaia.engram"
|
|
61
|
+
copy "$ROOT/.agents/memory/kaia.engram-wal" "$YMIR_HOME/memory/kaia.engram-wal"
|
|
62
|
+
copy "$ROOT/.agents/memory/kaia.engram-shm" "$YMIR_HOME/memory/kaia.engram-shm"
|
|
63
|
+
|
|
64
|
+
# 9. Migrate smidja/smidja_data/smidja.db* → YMIR_HOME/smidja/
|
|
65
|
+
copy "$ROOT/smidja/smidja_data/smidja.db" "$YMIR_HOME/smidja/smidja.db"
|
|
66
|
+
copy "$ROOT/smidja/smidja_data/smidja.db-wal" "$YMIR_HOME/smidja/smidja.db-wal"
|
|
67
|
+
copy "$ROOT/smidja/smidja_data/smidja.db-shm" "$YMIR_HOME/smidja/smidja.db-shm"
|
|
68
|
+
|
|
69
|
+
# 10. Create .gitignore for private repo
|
|
70
|
+
cat >"$YMIR_HOME/.gitignore" <<'GITIGNORE'
|
|
71
|
+
# Runtime — rebuilt per machine
|
|
72
|
+
smidja/
|
|
73
|
+
state/
|
|
74
|
+
*.wal
|
|
75
|
+
*.shm
|
|
76
|
+
*.pid
|
|
77
|
+
*.lock
|
|
78
|
+
|
|
79
|
+
# Local overlays
|
|
80
|
+
config/agents.*.yaml
|
|
81
|
+
GITIGNORE
|
|
82
|
+
|
|
83
|
+
# 11. Initialize git repo if not already
|
|
84
|
+
if [ ! -d "$YMIR_HOME/.git" ]; then
|
|
85
|
+
git -C "$YMIR_HOME" init >/dev/null 2>&1 && echo " initialized private git repo at $YMIR_HOME"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# 12. Offer to add GitHub remote for multi-machine sync
|
|
89
|
+
if [ -d "$YMIR_HOME/.git" ] && [ -t 0 ]; then
|
|
90
|
+
read -p " Add private GitHub remote for multi-machine sync? (git@github.com:user/repo.git) [y/N]: " yn
|
|
91
|
+
case "$yn" in [Yy]*)
|
|
92
|
+
read -p " GitHub repo URL: " gh_url
|
|
93
|
+
[ -n "$gh_url" ] && git -C "$YMIR_HOME" remote add origin "$gh_url" && \
|
|
94
|
+
git -C "$YMIR_HOME" add -A && \
|
|
95
|
+
git -C "$YMIR_HOME" commit -m "chore: initial Ymir private data" >/dev/null 2>&1 && \
|
|
96
|
+
git -C "$YMIR_HOME" push -u origin main && \
|
|
97
|
+
echo " pushed to $gh_url" || true
|
|
98
|
+
;;
|
|
99
|
+
esac
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# 13. Write layout record
|
|
103
|
+
cat >"$YMIR_HOME/.ymir-layout.yaml" <<YAML
|
|
104
|
+
version: 1
|
|
105
|
+
migrated_from: "$ROOT"
|
|
106
|
+
migrated_at: "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
107
|
+
layout:
|
|
108
|
+
config: "$YMIR_HOME/config"
|
|
109
|
+
secrets: "$YMIR_HOME/secrets"
|
|
110
|
+
identity: "$YMIR_HOME/identity"
|
|
111
|
+
workspaces: "$YMIR_HOME/workspaces"
|
|
112
|
+
memory: "$YMIR_HOME/memory"
|
|
113
|
+
smidja: "$YMIR_HOME/smidja"
|
|
114
|
+
state: "$YMIR_HOME/state"
|
|
115
|
+
data: "$YMIR_HOME/data"
|
|
116
|
+
git_repo: "$YMIR_HOME"
|
|
117
|
+
github_repo: "${gh_url:-}"
|
|
118
|
+
secrets_encrypted: false
|
|
119
|
+
YAML
|
|
120
|
+
|
|
121
|
+
echo "0003-private-data-separation: done — private data now at $YMIR_HOME"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# 0004-hoard-and-realms — one private root with two trees.
|
|
3
|
+
#
|
|
4
|
+
# Before: the hoard's parts sat at the ROOT of $YMIR_HOME (secrets · identity ·
|
|
5
|
+
# docs · data · memory · tenants · AGENTS.md), the workspaces lived in a second
|
|
6
|
+
# root ($YMIR_HOME/workspaces/) *and* inside the checkout (repo `workspace/`,
|
|
7
|
+
# repo `svartalfaheim/<realm>/`), and the Runes ledger had been copied twice.
|
|
8
|
+
#
|
|
9
|
+
# After — the layout `docs/workspaces.md` proposes:
|
|
10
|
+
#
|
|
11
|
+
# $YMIR_HOME/
|
|
12
|
+
# ├── hodd/ the operator's own: secrets · identity · docs · data · memory · tenants · AGENTS.md
|
|
13
|
+
# └── svartalfaheim/ the realms: <realm>/{workspace/{personal,company},memory,runs}
|
|
14
|
+
#
|
|
15
|
+
# Idempotent: every step checks before it moves, and a move that would overwrite
|
|
16
|
+
# is refused rather than merged blindly.
|
|
17
|
+
set -u
|
|
18
|
+
|
|
19
|
+
H="${YMIR_HOME:-$HOME/Documents/Ymir}"
|
|
20
|
+
R="${YMIR_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
|
|
21
|
+
HOARD="$H/hodd"
|
|
22
|
+
moved=0; placed=0; skipped=0
|
|
23
|
+
|
|
24
|
+
row() { printf ' "%s","%s","%s"\n' "$1" "$2" "$3"; }
|
|
25
|
+
|
|
26
|
+
# ── 1. the hoard's parts move under hodd/ ────────────────────────────────────
|
|
27
|
+
mkdir -p "$HOARD" 2>/dev/null || true
|
|
28
|
+
for d in secrets identity docs data memory tenants; do
|
|
29
|
+
if [ -e "$H/$d" ] && [ ! -e "$HOARD/$d" ]; then
|
|
30
|
+
mv "$H/$d" "$HOARD/$d" && moved=$((moved+1))
|
|
31
|
+
elif [ -e "$H/$d" ]; then
|
|
32
|
+
skipped=$((skipped+1))
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
# the operator's private contract follows the hoard
|
|
36
|
+
if [ -f "$H/AGENTS.md" ] && [ ! -e "$HOARD/AGENTS.md" ]; then
|
|
37
|
+
mv "$H/AGENTS.md" "$HOARD/AGENTS.md" && moved=$((moved+1))
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# ── 2. the realm tree ────────────────────────────────────────────────────────
|
|
41
|
+
REALM=""
|
|
42
|
+
[ -r "$HOARD/data/realm.md" ] && REALM="$(head -n1 "$HOARD/data/realm.md" 2>/dev/null | tr -d '[:space:]')"
|
|
43
|
+
if [ -z "$REALM" ] && [ -d "$H/svartalfaheim" ]; then
|
|
44
|
+
REALM="$(find "$H/svartalfaheim" -mindepth 1 -maxdepth 1 -type d ! -name examples ! -name '.*' -printf '%f\n' 2>/dev/null | sort | head -n1)"
|
|
45
|
+
fi
|
|
46
|
+
REALM="${REALM:-work}"
|
|
47
|
+
REALM_DIR="$H/svartalfaheim/$REALM"
|
|
48
|
+
|
|
49
|
+
mkdir -p "$REALM_DIR/workspace/personal"/{me,life,development,inbox} \
|
|
50
|
+
"$REALM_DIR/workspace/company"/{company,marketing,development,life,projects,companies} \
|
|
51
|
+
"$REALM_DIR/memory/daily" "$REALM_DIR/runs" 2>/dev/null || true
|
|
52
|
+
|
|
53
|
+
# fold the old workspaces root in, by name, never overwriting
|
|
54
|
+
fold() { # <src-dir> <dst-dir>
|
|
55
|
+
local src=$1 dst=$2 n=0 e b
|
|
56
|
+
[ -d "$src" ] || return 0
|
|
57
|
+
mkdir -p "$dst" 2>/dev/null || true
|
|
58
|
+
for e in "$src"/* "$src"/.[!.]*; do
|
|
59
|
+
[ -e "$e" ] || continue
|
|
60
|
+
b="$(basename "$e")"
|
|
61
|
+
[ -e "$dst/$b" ] && continue
|
|
62
|
+
mv "$e" "$dst/$b" 2>/dev/null && n=$((n+1))
|
|
63
|
+
done
|
|
64
|
+
placed=$((placed+n))
|
|
65
|
+
}
|
|
66
|
+
fold "$H/workspaces/personal" "$REALM_DIR/workspace/personal"
|
|
67
|
+
fold "$H/workspaces/work" "$REALM_DIR/workspace/company"
|
|
68
|
+
fold "$H/workspaces/companies" "$REALM_DIR/workspace/company/companies"
|
|
69
|
+
fold "$H/workspaces/memory" "$REALM_DIR/memory"
|
|
70
|
+
# …and the copy that sat inside the checkout
|
|
71
|
+
fold "$R/workspace/personal" "$REALM_DIR/workspace/personal"
|
|
72
|
+
fold "$R/workspace/work" "$REALM_DIR/workspace/company"
|
|
73
|
+
fold "$R/workspace/companies" "$REALM_DIR/workspace/company/companies"
|
|
74
|
+
fold "$R/workspace/memory" "$REALM_DIR/memory"
|
|
75
|
+
fold "$R/svartalfaheim/$REALM/workspace/memory/daily" "$REALM_DIR/memory/daily"
|
|
76
|
+
fold "$R/svartalfaheim/$REALM/workspace/development" "$REALM_DIR/workspace/company/development"
|
|
77
|
+
|
|
78
|
+
# ── 3. the Runes ledger lands in the hoard's memory, and no entry is lost ────
|
|
79
|
+
LEDGER="$HOARD/memory/runes_audit.md"
|
|
80
|
+
mkdir -p "$HOARD/memory" 2>/dev/null || true
|
|
81
|
+
for stray in "$H/workspaces/memory/runes_audit.md" "$REALM_DIR/memory/runes_audit.md"; do
|
|
82
|
+
[ -f "$stray" ] || continue
|
|
83
|
+
[ "$stray" = "$LEDGER" ] && continue
|
|
84
|
+
if [ ! -f "$LEDGER" ]; then
|
|
85
|
+
mv "$stray" "$LEDGER" && moved=$((moved+1))
|
|
86
|
+
elif cmp -s "$stray" "$LEDGER"; then
|
|
87
|
+
rm -f "$stray" && moved=$((moved+1)) # identical: drop the copy
|
|
88
|
+
else
|
|
89
|
+
# Different: append only what the target lacks, then keep the target.
|
|
90
|
+
while IFS= read -r line; do
|
|
91
|
+
[ -n "$line" ] || continue
|
|
92
|
+
grep -qxF -- "$line" "$LEDGER" || printf '%s\n' "$line" >>"$LEDGER"
|
|
93
|
+
done <"$stray"
|
|
94
|
+
rm -f "$stray" && moved=$((moved+1))
|
|
95
|
+
fi
|
|
96
|
+
done
|
|
97
|
+
|
|
98
|
+
# ── 4. report ────────────────────────────────────────────────────────────────
|
|
99
|
+
printf 'migration[1]{id,state}:\n "0004-hoard-and-realms","applied"\n'
|
|
100
|
+
printf 'migration_result[4]{what,detail,count}:\n'
|
|
101
|
+
row "hoard" "$HOARD" "$moved"
|
|
102
|
+
row "realm" "$REALM_DIR" "$placed"
|
|
103
|
+
row "ledger" "$LEDGER" "$([ -f "$LEDGER" ] && printf 'present' || printf 'absent')"
|
|
104
|
+
row "left-alone" "$H" "$skipped"
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# 0005-roots-out-of-tree — the operator's things leave the code tree.
|
|
3
|
+
#
|
|
4
|
+
# The law this migration serves: the package is the CODE THAT RUNS THE PROGRAMS;
|
|
5
|
+
# everything the operator owns lives in the home they chose. A packaged install
|
|
6
|
+
# (npm) treats its tree as read-only, and the next upgrade replaces it — so
|
|
7
|
+
# anything of theirs kept in the tree is kept at its peril. Every *writer* was
|
|
8
|
+
# converted to resolve the home through bin/hoard-lib.sh; this carries what is
|
|
9
|
+
# already sitting in the tree to where those writers now look.
|
|
10
|
+
#
|
|
11
|
+
# what moves from the tree to the home
|
|
12
|
+
# ------------------ --------------------- ----------------------------
|
|
13
|
+
# this machine's data/ <hoard>/data
|
|
14
|
+
# records
|
|
15
|
+
# runtime state state/ <home>/state
|
|
16
|
+
# (pids · logs · locks · the applied-marker)
|
|
17
|
+
# the operator's the local env file <home>/.env.local
|
|
18
|
+
# credentials (if one is in the tree)
|
|
19
|
+
# the operator's .agents/config/* <home>/config
|
|
20
|
+
# settings that git does not track
|
|
21
|
+
#
|
|
22
|
+
# Idempotent: every entry is checked before it moves, a second run finds nothing
|
|
23
|
+
# to do, and a move that would land on an existing file is REFUSED and reported
|
|
24
|
+
# rather than merged blindly — the home always wins, nothing is ever overwritten.
|
|
25
|
+
#
|
|
26
|
+
# What is deliberately NOT moved: `*.example` templates and `.gitkeep` (they are
|
|
27
|
+
# code), and any settings file git tracks (that is the distro's shipped default,
|
|
28
|
+
# not the operator's own). Moving a tracked file out of the tree would be a code
|
|
29
|
+
# change wearing a migration's clothes.
|
|
30
|
+
#
|
|
31
|
+
# NOTE: run this while the runtime is STOPPED if you want no stale pids; running
|
|
32
|
+
# services keep their open file handles across the move (an `mv` preserves the
|
|
33
|
+
# inode), so nothing is lost either way, but the pid files they wrote will be
|
|
34
|
+
# found in their new place after the next restart.
|
|
35
|
+
set -u
|
|
36
|
+
|
|
37
|
+
R="${YMIR_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
|
|
38
|
+
# The resolver lives in the tree that ships this migration. When YMIR_ROOT points
|
|
39
|
+
# somewhere else (a sandbox, a test fixture), fall back to the lib beside this
|
|
40
|
+
# script rather than failing to resolve the home at all.
|
|
41
|
+
LIB="$R/bin/hoard-lib.sh"
|
|
42
|
+
[ -r "$LIB" ] || LIB="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/bin/hoard-lib.sh"
|
|
43
|
+
# shellcheck source=bin/hoard-lib.sh
|
|
44
|
+
. "$LIB"
|
|
45
|
+
ymir_home_root H
|
|
46
|
+
hoard_root HOARD
|
|
47
|
+
hoard_data_dir RECORDS
|
|
48
|
+
hoard_state_dir RUNTIME
|
|
49
|
+
hoard_settings_dir SETTINGS
|
|
50
|
+
hoard_local_env ENVFILE
|
|
51
|
+
|
|
52
|
+
moved=0; kept=0; refused=0; merged=0; rows=0
|
|
53
|
+
# The row buffers are written as they happen and printed at the end, so the TOON
|
|
54
|
+
# header can carry the true count. `rows` is kept beside them: under `set -u`,
|
|
55
|
+
# bash older than 4.4 reads an empty `declare -a` array as unbound.
|
|
56
|
+
declare -a ROW_ACT=() ROW_FROM=() ROW_TO=()
|
|
57
|
+
row() { ROW_ACT+=("$1"); ROW_FROM+=("$2"); ROW_TO+=("$3"); rows=$((rows+1)); }
|
|
58
|
+
|
|
59
|
+
# tracked_by_git <path> — 1 when git knows the file (the distro ships it)
|
|
60
|
+
tracked_by_git() {
|
|
61
|
+
command -v git >/dev/null 2>&1 || return 1
|
|
62
|
+
git -C "$R" ls-files --error-unmatch "${1#"$R"/}" >/dev/null 2>&1
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# carry <src> <dst-dir> — move one entry home, unless the home already holds it
|
|
66
|
+
carry() {
|
|
67
|
+
local src="$1" dst="$2" base stale
|
|
68
|
+
base="$(basename "$src")"
|
|
69
|
+
mkdir -p "$dst" 2>/dev/null || { refused=$((refused+1)); row refuse "$src" "cannot write $dst"; return 0; }
|
|
70
|
+
if [ ! -e "$dst/$base" ]; then
|
|
71
|
+
if mv "$src" "$dst/$base" 2>/dev/null; then
|
|
72
|
+
moved=$((moved+1)); row moved "$src" "$dst/$base"
|
|
73
|
+
else
|
|
74
|
+
refused=$((refused+1)); row refuse "$src" "could not move to $dst/$base"
|
|
75
|
+
fi
|
|
76
|
+
return 0
|
|
77
|
+
fi
|
|
78
|
+
# The home already holds this name. Two files, one name — decide by evidence,
|
|
79
|
+
# never by assumption: identical content means the tree's copy can go (nothing
|
|
80
|
+
# is lost, and the content is at home); different content means BOTH are real,
|
|
81
|
+
# so the home's wins the name and the tree's is carried beside it as `.stale-*`
|
|
82
|
+
# rather than merged or discarded.
|
|
83
|
+
if [ -f "$src" ] && [ -f "$dst/$base" ] && cmp -s "$src" "$dst/$base"; then
|
|
84
|
+
rm -f "$src" && { merged=$((merged+1)); row merged "$src" "identical to $dst/$base — the tree's copy removed, nothing lost"; }
|
|
85
|
+
elif [ -f "$src" ]; then
|
|
86
|
+
stale="$dst/$base.stale-$(date -u +%Y%m%dT%H%M%SZ)"
|
|
87
|
+
if mv "$src" "$stale" 2>/dev/null; then
|
|
88
|
+
moved=$((moved+1)); row kept-as "$src" "$stale — differs from the home's copy, so both are kept"
|
|
89
|
+
else
|
|
90
|
+
refused=$((refused+1)); row refuse "$src" "differs from the home's copy and could not be carried"
|
|
91
|
+
fi
|
|
92
|
+
else
|
|
93
|
+
kept=$((kept+1)); row kept "$src" "home already holds $base — left in place, nothing overwritten"
|
|
94
|
+
fi
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
# ── the machine's records ────────────────────────────────────────────────────
|
|
98
|
+
if [ -d "$R/data" ]; then
|
|
99
|
+
for f in "$R"/data/* "$R"/data/.[!.]*; do
|
|
100
|
+
[ -e "$f" ] || continue
|
|
101
|
+
case "$(basename "$f")" in .gitkeep|*.example|*.example.*) kept=$((kept+1)); continue ;; esac
|
|
102
|
+
carry "$f" "$RECORDS"
|
|
103
|
+
done
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# ── the runtime state ────────────────────────────────────────────────────────
|
|
107
|
+
if [ -d "$R/state" ]; then
|
|
108
|
+
for f in "$R"/state/* "$R"/state/.[!.]*; do
|
|
109
|
+
[ -e "$f" ] || continue
|
|
110
|
+
case "$(basename "$f")" in .gitkeep) kept=$((kept+1)); continue ;; esac
|
|
111
|
+
carry "$f" "$RUNTIME"
|
|
112
|
+
done
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
# ── the operator's credentials ───────────────────────────────────────────────
|
|
116
|
+
# Never printed, never parsed — only carried.
|
|
117
|
+
for cand in "$R"/.env.loc[a]l; do
|
|
118
|
+
[ -f "$cand" ] || continue
|
|
119
|
+
if [ -f "$ENVFILE" ]; then
|
|
120
|
+
kept=$((kept+1)); row kept "${cand#"$R"/}" "the home already holds its own — left in place, never merged"
|
|
121
|
+
else
|
|
122
|
+
mkdir -p "$(dirname "$ENVFILE")" 2>/dev/null
|
|
123
|
+
if mv "$cand" "$ENVFILE" 2>/dev/null; then
|
|
124
|
+
chmod 600 "$ENVFILE" 2>/dev/null || true
|
|
125
|
+
moved=$((moved+1)); row moved "${cand#"$R"/}" "${ENVFILE#"$H"/} (0600)"
|
|
126
|
+
else
|
|
127
|
+
refused=$((refused+1)); row refuse "${cand#"$R"/}" "could not move to the home"
|
|
128
|
+
fi
|
|
129
|
+
fi
|
|
130
|
+
done
|
|
131
|
+
|
|
132
|
+
# ── the operator's own settings ──────────────────────────────────────────────
|
|
133
|
+
# Only what git does not track: a tracked settings file is the distro's shipped
|
|
134
|
+
# default and stays where the code ships it. `config` may be a symlink into
|
|
135
|
+
# .agents/config, so resolve the real directory before walking it.
|
|
136
|
+
cfgdir="$R/.agents/config"
|
|
137
|
+
[ -d "$R/config" ] && [ ! -L "$R/config" ] && cfgdir="$R/config"
|
|
138
|
+
if [ -d "$cfgdir" ]; then
|
|
139
|
+
for f in "$cfgdir"/* "$cfgdir"/.[!.]*; do
|
|
140
|
+
[ -e "$f" ] || continue
|
|
141
|
+
base="$(basename "$f")"
|
|
142
|
+
case "$base" in .gitkeep|*.example|*.example.*) kept=$((kept+1)); continue ;; esac
|
|
143
|
+
if tracked_by_git "$f"; then
|
|
144
|
+
kept=$((kept+1)); row kept "config/$base" "the distro ships this one — it is a default, not the operator's own"
|
|
145
|
+
continue
|
|
146
|
+
fi
|
|
147
|
+
carry "$f" "$SETTINGS"
|
|
148
|
+
done
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
if [ "$rows" -gt 0 ]; then
|
|
152
|
+
printf 'ymir-migrate-0005[%d]{action,from,to}:\n' "$rows"
|
|
153
|
+
for i in "${!ROW_ACT[@]}"; do
|
|
154
|
+
printf ' "%s","%s","%s"\n' "${ROW_ACT[$i]}" "${ROW_FROM[$i]}" "${ROW_TO[$i]}"
|
|
155
|
+
done
|
|
156
|
+
fi
|
|
157
|
+
printf 'ymir-migrate-0005[1]{moved,merged,kept,refused}:\n "%s",%s,%s,%s\n' "$moved" "$merged" "$kept" "$refused"
|
|
158
|
+
exit 0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# UTGARD — Hardened Minimal Execution Container
|
|
2
|
+
|
|
3
|
+
FROM node:20-alpine
|
|
4
|
+
|
|
5
|
+
RUN apk add --no-cache \
|
|
6
|
+
python3 \
|
|
7
|
+
make \
|
|
8
|
+
g++ \
|
|
9
|
+
git \
|
|
10
|
+
bash \
|
|
11
|
+
curl
|
|
12
|
+
|
|
13
|
+
RUN addgroup -S agentgroup && adduser -S agentuser -G agentgroup
|
|
14
|
+
|
|
15
|
+
WORKDIR /sandbox
|
|
16
|
+
|
|
17
|
+
USER agentuser
|
|
18
|
+
|
|
19
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# UTGARD Sandbox (Docker Execution Barrier)
|
|
2
|
+
|
|
3
|
+
Isolated container execution for untrusted code, dynamic skills, and sub-agent tasks.
|
|
4
|
+
|
|
5
|
+
## Contents (to be implemented)
|
|
6
|
+
- `Dockerfile.utgard` — hardened minimal execution container (exists)
|
|
7
|
+
- `utgard.config.json` — CPU / RAM / timeout limits (exists)
|
|
8
|
+
- `execute_utgard.ts` — Docker launcher skill for safe script execution
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
- `--network none` by default
|
|
12
|
+
- Strict `--memory` and `--cpus` limits
|
|
13
|
+
- No host root access
|
|
14
|
+
- Failed executions never touch main branches
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# GUNGNIR — Core Operational Skills
|
|
2
|
+
|
|
3
|
+
Every reusable task becomes a scripted skill here. Skills are validated in Utgard
|
|
4
|
+
before registration, and every skill is named for the myth figure whose role
|
|
5
|
+
matches its work (Gungnir naming law).
|
|
6
|
+
|
|
7
|
+
## Registry (`.agents/skills/`)
|
|
8
|
+
|
|
9
|
+
Every skill has an **owner agent** (`.agents/agents/<name>.md`): the seat Brokk
|
|
10
|
+
dispatches for that work. A skill owned by `brokk` means the primary keeps it in
|
|
11
|
+
hand — a dedicated seat is added when the work earns one.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
skills[26]{skill,does,owner}:
|
|
15
|
+
"galdr-ymirsystem","agent-CLI ergonomics — the master builder/maintainer of the runtime","galdr"
|
|
16
|
+
"tyr-check","the judge — galdr principles + runtime gates","tyr"
|
|
17
|
+
"rules-check-drift","rules-file drift — keeps AGENTS.md true after code changes","tyr"
|
|
18
|
+
"no-mistakes","the clean-PR gate — vendored engine skill: validate, push, PR, CI","brokk"
|
|
19
|
+
"smidja-factory","the smithy — agent factory: roster, phases, envelopes, visualizer (app-provided: cloned by step_apps from its own repo, absent until then)","volundr"
|
|
20
|
+
"hvild-afk","away-mode — supervision of routine wakes and batched escalations","brokk"
|
|
21
|
+
"saga-bearings","bearings — fleet status digest (/bearings) + recap (/ahoy)","saga"
|
|
22
|
+
"muninn-stow","memory — session-knowledge curation, routing, persistence","muninn"
|
|
23
|
+
"jord-projects","projects — registry + delivery posture","jord"
|
|
24
|
+
"urdh-hold","hold lifecycle — decisions held for the Allfather, reconciled","urdh"
|
|
25
|
+
"frigg-consent","consent — ask-user authority gate","frigg"
|
|
26
|
+
"vor-diagnostics","diagnostics — bootstrap + diagnostic reasoning","vor"
|
|
27
|
+
"nornir-schedule","schedule — event sources + quota-aware dispatch","brokk"
|
|
28
|
+
"nsr-compliance","compliance — NorthStar scaffold/audit + the .compliance/ harness","brokk"
|
|
29
|
+
"lifecycle","lifecycle — start/stop/status/smoke-test wiring contract","brokk"
|
|
30
|
+
"gjallarhorn-relay","relay — public replies (X/Discord)","brokk"
|
|
31
|
+
"eindri-homes","worker homes — provisioning and upkeep of Eindri homes","brokk"
|
|
32
|
+
"syn-recovery","recovery — stuck-worker playbook","syn"
|
|
33
|
+
"ymir-host","host ops — self-update, Omarchy desktop, Þjazi backend","brokk"
|
|
34
|
+
"groa-update","the updater shaman — self-update Brokk + every Eindri-home (/updateBrokk)","groa"
|
|
35
|
+
"herdr-panes","terminal panes — seat/control panes, tabs, workspaces, agents (HERDR_ENV=1)","brokk"
|
|
36
|
+
"ratatoskr-a2a","A2A/MCP mesh — a2abridge + wayofteams; registration","brokk"
|
|
37
|
+
"hamr-adapters","harness adapters — per-harness reference","brokk"
|
|
38
|
+
"pr-ops","pull requests — create, update, check status, request merge","brokk"
|
|
39
|
+
"hnoss-design","design — artifacts via OpenDesign (prototypes, decks, dashboards, image, video)","hnoss"
|
|
40
|
+
"bragi-marketing","marketing — research/crawl (Firecrawl), agentic browser (browser-use)","bragi"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The control-plane UI guide is not a standalone skill: **hlidskjalf-ui** and its
|
|
44
|
+
hall **Óðrerir** (odrerir-hall) are assets under **galdr-ymirsystem** (the master
|
|
45
|
+
builder), loaded from `.agents/skills/galdr-ymirsystem/assets/` — see the galdr router.
|
|
46
|
+
|
|
47
|
+
Not adopted as standalone skills: `firstmate-coding-guidelines` (folded into Galdr),
|
|
48
|
+
`firstmate-orca` / `firstmate-codexapp` (backend reference docs only).
|
|
49
|
+
|
|
50
|
+
## Skill synthesis rules (Gungnir)
|
|
51
|
+
|
|
52
|
+
1. Gap identified → write the skill doc + script to `.agents/skills/<name>/`.
|
|
53
|
+
2. Validate inside an Utgard container.
|
|
54
|
+
3. Register it in this index.
|
|
55
|
+
4. **Norse-name every new skill** at synthesis: choose the figure whose role
|
|
56
|
+
matches the work and let the skill inherit that name (`<figure>-<what>`).
|
|
57
|
+
|
|
58
|
+
Governance: `.agents/skills/galdr-ymirsystem/SKILL.md`; adopted-skill provenance is recorded in
|
|
59
|
+
`.agents/skills/galdr-ymirsystem/assets/reference-adoption.md`.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bragi
|
|
3
|
+
description: >-
|
|
4
|
+
Bragi — the skald. The marketing craft: web research and crawling with
|
|
5
|
+
Firecrawl (firecrawl.dev) and agentic browser actions with browser-use
|
|
6
|
+
(github.com/browser-use/browser-use) — for SEO, content, competitive intel,
|
|
7
|
+
campaigns, and posting. Use when the task is marketing, growth, content,
|
|
8
|
+
social, or outreach. Keywords — marketing, seo, content, campaign, social,
|
|
9
|
+
competitor, crawl, scrape, firecrawl, browser-use.
|
|
10
|
+
argument-hint: "[research | seo | content | campaign | competitor | post]"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# bragi-marketing — marketing — research/crawl (Firecrawl), agentic browser (browser-use)
|
|
14
|
+
|
|
15
|
+
> **Norse name:** **Bragi** (the skald, poetry's god). The marketing craft.
|
|
16
|
+
|
|
17
|
+
Bragi is how Ymir does **marketing**. Two validated open-source engines do the
|
|
18
|
+
work; this skill is the Norse shell the **marketing Eindri** (Bragi) works
|
|
19
|
+
through. Marketing output — a post, a landing page, a campaign — is a **real
|
|
20
|
+
artifact** grounded in **real sources**, never invented.
|
|
21
|
+
|
|
22
|
+
## 1. The engines (open-source first)
|
|
23
|
+
|
|
24
|
+
- **Firecrawl** — [firecrawl.dev](https://www.firecrawl.dev/): scrape, crawl,
|
|
25
|
+
search, and map the web into clean **markdown / structured data**. The research
|
|
26
|
+
and SEO engine.
|
|
27
|
+
```sh
|
|
28
|
+
pip install firecrawl-py
|
|
29
|
+
# FIRECRAWL_API_KEY from .env.local (never inline)
|
|
30
|
+
```
|
|
31
|
+
REST: `POST /scrape`, `/crawl`, `/search`, `/map` — or the SDK:
|
|
32
|
+
```python
|
|
33
|
+
from firecrawl import FirecrawlApp
|
|
34
|
+
app = FirecrawlApp(api_key=os.environ["FIRECRAWL_API_KEY"])
|
|
35
|
+
doc = app.scrape_url("https://example.com", params={"formats": ["markdown"]})
|
|
36
|
+
```
|
|
37
|
+
- **browser-use** — [github.com/browser-use/browser-use](https://github.com/browser-use/browser-use):
|
|
38
|
+
an LLM-driven **browser agent** that clicks, types, and reads pages. For
|
|
39
|
+
logged-in actions: publishing, posting, filling forms, reading dashboards.
|
|
40
|
+
```sh
|
|
41
|
+
pip install browser-use
|
|
42
|
+
```
|
|
43
|
+
```python
|
|
44
|
+
from browser_use import Agent
|
|
45
|
+
agent = Agent(task="Post the launch thread to X", llm=<model from Bifrost / Pi catalog>)
|
|
46
|
+
await agent.run()
|
|
47
|
+
```
|
|
48
|
+
- **Scrapy** *(optional)* — [scrapy.org](https://www.scrapy.org/): a Python
|
|
49
|
+
scraping framework for **large or custom crawls** where Firecrawl is not the
|
|
50
|
+
right tool (many pages, structured pipelines, scheduling). `pip install scrapy`.
|
|
51
|
+
```sh
|
|
52
|
+
scrapy startproject research && cd research && scrapy crawl sources -o out.jsonl
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 2. The craft (the loop)
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
marketing_loop[5]{step,what}:
|
|
59
|
+
"research","Firecrawl crawl/search the sources — cite every URL"
|
|
60
|
+
"position","the angle: audience, promise, channel, keywords"
|
|
61
|
+
"draft","copy, landing page, or asset — real text, on brand (Hnoss for visuals)"
|
|
62
|
+
"publish","browser-use drives the channel (X / Discord / site); Gjallarhorn relay"
|
|
63
|
+
"measure","crawl results, track metrics, feed learnings to the well"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 3. Rules
|
|
67
|
+
|
|
68
|
+
1. **Real sources, cited.** Every claim carries its URL (Firecrawl output).
|
|
69
|
+
Never invent a statistic, competitor, or quote.
|
|
70
|
+
2. **OSS engines, BYOK.** `FIRECRAWL_API_KEY` and any model key come from
|
|
71
|
+
`.env.local` — never inline in Markdown or commits.
|
|
72
|
+
3. **Real artifact.** A brief becomes a file (post, page, calendar), not a plan.
|
|
73
|
+
4. **On brand.** Visual assets come from **Hnoss** (OpenDesign) + the `DESIGN.md`.
|
|
74
|
+
5. **Domain.** The marketing Eindri is **Bragi**, domain `utgard` (creative) per
|
|
75
|
+
Rule 01; it does not implement product code (that is Sindri).
|
|
76
|
+
|
|
77
|
+
## 4. Install into Ymir
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
pip install firecrawl-py browser-use
|
|
81
|
+
bin/valknut-load.sh --all # rebind agents/skills after adding this skill
|
|
82
|
+
```
|