@zerwiz/ymir 0.1.33 → 0.1.35
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/CHANGELOG.md +56 -0
- package/apps/README.md +4 -0
- package/apps/hlidskjalf/README.md +68 -0
- package/apps/hlidskjalf/android/app/build.gradle +73 -0
- package/apps/hlidskjalf/android/app/capacitor.build.gradle +19 -0
- package/apps/hlidskjalf/android/app/proguard-rules.pro +21 -0
- package/apps/hlidskjalf/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
- package/apps/hlidskjalf/android/app/src/main/AndroidManifest.xml +41 -0
- package/apps/hlidskjalf/android/app/src/main/java/org/zerwiz/ymir/MainActivity.java +5 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
- package/apps/hlidskjalf/android/app/src/main/res/layout/activity_main.xml +12 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/apps/hlidskjalf/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
- package/apps/hlidskjalf/android/app/src/main/res/values/strings.xml +7 -0
- package/apps/hlidskjalf/android/app/src/main/res/values/styles.xml +22 -0
- package/apps/hlidskjalf/android/app/src/main/res/xml/file_paths.xml +5 -0
- package/apps/hlidskjalf/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
- package/apps/hlidskjalf/android/build.gradle +29 -0
- package/apps/hlidskjalf/android/capacitor.settings.gradle +3 -0
- package/apps/hlidskjalf/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/apps/hlidskjalf/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/apps/hlidskjalf/android/gradle.properties +22 -0
- package/apps/hlidskjalf/android/gradlew +248 -0
- package/apps/hlidskjalf/android/gradlew.bat +92 -0
- package/apps/hlidskjalf/android/settings.gradle +5 -0
- package/apps/hlidskjalf/android/variables.gradle +16 -0
- package/apps/hlidskjalf/capacitor.config.ts +26 -0
- package/apps/hlidskjalf/dist/apple-touch-icon.png +0 -0
- package/apps/hlidskjalf/dist/assets/index-BWmNIyaG.css +1 -0
- package/apps/hlidskjalf/dist/assets/index-k7QEfNto.js +88 -0
- package/apps/hlidskjalf/dist/assets/index-k7QEfNto.js.map +1 -0
- package/apps/hlidskjalf/dist/icon.svg +7 -0
- package/apps/hlidskjalf/dist/index.html +64 -0
- package/apps/hlidskjalf/dist/manifest.webmanifest +31 -0
- package/apps/hlidskjalf/dist/og.jpg +0 -0
- package/apps/hlidskjalf/dist/og.png +0 -0
- package/apps/hlidskjalf/dist/og.svg +64 -0
- package/apps/hlidskjalf/dist/sw.js +39 -0
- package/apps/hlidskjalf/dist/ymir-icon.png +0 -0
- package/apps/hlidskjalf/dist/ymir-mark.svg +62 -0
- package/apps/hlidskjalf/electron/icon.png +0 -0
- package/apps/hlidskjalf/electron/main.cjs +236 -0
- package/apps/hlidskjalf/electron/preload.cjs +8 -0
- package/apps/hlidskjalf/electron/smidja-icon.png +0 -0
- package/apps/hlidskjalf/electron/ymir-hlidskjalf.desktop.in +12 -0
- package/apps/hlidskjalf/electron/ymir-smidja.desktop.in +12 -0
- package/apps/hlidskjalf/index.html +63 -0
- package/apps/hlidskjalf/package-lock.json +5398 -0
- package/apps/hlidskjalf/package.json +55 -0
- package/apps/hlidskjalf/public/apple-touch-icon.png +0 -0
- package/apps/hlidskjalf/public/icon.svg +7 -0
- package/apps/hlidskjalf/public/manifest.webmanifest +31 -0
- package/apps/hlidskjalf/public/og.jpg +0 -0
- package/apps/hlidskjalf/public/og.png +0 -0
- package/apps/hlidskjalf/public/og.svg +64 -0
- package/apps/hlidskjalf/public/sw.js +39 -0
- package/apps/hlidskjalf/public/ymir-icon.png +0 -0
- package/apps/hlidskjalf/public/ymir-mark.svg +62 -0
- package/apps/hlidskjalf/server/accounts.ts +159 -0
- package/apps/hlidskjalf/server/index.ts +2045 -0
- package/apps/hlidskjalf/src/app/App.tsx +116 -0
- package/apps/hlidskjalf/src/app/BottomStream.tsx +128 -0
- package/apps/hlidskjalf/src/app/MobileNav.tsx +87 -0
- package/apps/hlidskjalf/src/app/Rail.tsx +106 -0
- package/apps/hlidskjalf/src/app/Shell.tsx +135 -0
- package/apps/hlidskjalf/src/app/Topbar.tsx +130 -0
- package/apps/hlidskjalf/src/components/AccentPicker.tsx +207 -0
- package/apps/hlidskjalf/src/components/AccountMenu.tsx +115 -0
- package/apps/hlidskjalf/src/components/AgentCard.tsx +75 -0
- package/apps/hlidskjalf/src/components/EmberBackground.tsx +36 -0
- package/apps/hlidskjalf/src/components/Emblem.tsx +48 -0
- package/apps/hlidskjalf/src/components/Halls.tsx +155 -0
- package/apps/hlidskjalf/src/components/LoginModal.tsx +329 -0
- package/apps/hlidskjalf/src/components/Markdown.tsx +10 -0
- package/apps/hlidskjalf/src/components/MetricTile.tsx +40 -0
- package/apps/hlidskjalf/src/components/ModelPicker.tsx +100 -0
- package/apps/hlidskjalf/src/components/Overlay.tsx +134 -0
- package/apps/hlidskjalf/src/components/PRCard.tsx +154 -0
- package/apps/hlidskjalf/src/components/RecallPanel.tsx +116 -0
- package/apps/hlidskjalf/src/components/RuneTag.tsx +23 -0
- package/apps/hlidskjalf/src/components/Status.tsx +35 -0
- package/apps/hlidskjalf/src/components/TaskChip.tsx +23 -0
- package/apps/hlidskjalf/src/components/TraceRow.tsx +28 -0
- package/apps/hlidskjalf/src/data/lore.ts +127 -0
- package/apps/hlidskjalf/src/data/metadata.ts +147 -0
- package/apps/hlidskjalf/src/data/mythology.ts +95 -0
- package/apps/hlidskjalf/src/data/realms.ts +167 -0
- package/apps/hlidskjalf/src/gates/Cron.tsx +77 -0
- package/apps/hlidskjalf/src/gates/Decisions.tsx +67 -0
- package/apps/hlidskjalf/src/gates/Files.tsx +138 -0
- package/apps/hlidskjalf/src/gates/Fleet.tsx +184 -0
- package/apps/hlidskjalf/src/gates/Forge.tsx +486 -0
- package/apps/hlidskjalf/src/gates/OmniChat.tsx +217 -0
- package/apps/hlidskjalf/src/gates/Processes.tsx +162 -0
- package/apps/hlidskjalf/src/gates/Profile.tsx +225 -0
- package/apps/hlidskjalf/src/gates/Reviews.tsx +33 -0
- package/apps/hlidskjalf/src/gates/Runes.tsx +116 -0
- package/apps/hlidskjalf/src/gates/Runtime.tsx +106 -0
- package/apps/hlidskjalf/src/gates/Sessions.tsx +109 -0
- package/apps/hlidskjalf/src/gates/Stats.tsx +268 -0
- package/apps/hlidskjalf/src/gates/Tasks.tsx +173 -0
- package/apps/hlidskjalf/src/gates/Trace.tsx +155 -0
- package/apps/hlidskjalf/src/gates/Well.tsx +154 -0
- package/apps/hlidskjalf/src/gates/Worktrees.tsx +48 -0
- package/apps/hlidskjalf/src/hooks/useTenantDef.ts +13 -0
- package/apps/hlidskjalf/src/main.tsx +31 -0
- package/apps/hlidskjalf/src/services/api.ts +404 -0
- package/apps/hlidskjalf/src/services/auth.ts +107 -0
- package/apps/hlidskjalf/src/services/stream.ts +35 -0
- package/apps/hlidskjalf/src/state/store.ts +648 -0
- package/apps/hlidskjalf/src/state/ui.ts +62 -0
- package/apps/hlidskjalf/src/styles/auth.css +485 -0
- package/apps/hlidskjalf/src/styles/components.css +1259 -0
- package/apps/hlidskjalf/src/styles/forge.css +115 -0
- package/apps/hlidskjalf/src/styles/global.css +167 -0
- package/apps/hlidskjalf/src/styles/menus.css +175 -0
- package/apps/hlidskjalf/src/styles/mobile.css +298 -0
- package/apps/hlidskjalf/src/styles/overlays.css +205 -0
- package/apps/hlidskjalf/src/styles/shell.css +641 -0
- package/apps/hlidskjalf/src/types.ts +251 -0
- package/apps/hlidskjalf/src/vite-env.d.ts +9 -0
- package/apps/hlidskjalf/static/landing.md +6 -0
- package/apps/hlidskjalf/tsconfig.json +25 -0
- package/apps/hlidskjalf/vite.config.ts +49 -0
- package/apps/hlidskjalf-mobile/App.tsx +93 -0
- package/apps/hlidskjalf-mobile/app.json +13 -0
- package/apps/hlidskjalf-mobile/index.ts +4 -0
- package/apps/hlidskjalf-mobile/package.json +35 -0
- package/apps/hlidskjalf-mobile/public/icon.svg +7 -0
- package/apps/hlidskjalf-mobile/tsconfig.json +4 -0
- package/apps/odrerir/.astro/content.d.ts +159 -0
- package/apps/odrerir/.astro/dev.json +24 -0
- package/apps/odrerir/.astro/settings.json +5 -0
- package/apps/odrerir/.astro/types.d.ts +2 -0
- package/apps/odrerir/astro.config.mjs +79 -0
- package/apps/odrerir/dist/apple-touch-icon.png +0 -0
- package/apps/odrerir/dist/favicon-192.png +0 -0
- package/apps/odrerir/dist/favicon-32.png +0 -0
- package/apps/odrerir/dist/favicon-512.png +0 -0
- package/apps/odrerir/dist/favicon.svg +53 -0
- package/apps/odrerir/dist/icon.svg +7 -0
- package/apps/odrerir/dist/index.html +837 -0
- package/apps/odrerir/dist/og-square.png +0 -0
- package/apps/odrerir/dist/og-story.png +0 -0
- package/apps/odrerir/dist/og.png +0 -0
- package/apps/odrerir/dist/safari-pinned-tab.svg +7 -0
- package/apps/odrerir/dist/site.webmanifest +16 -0
- package/apps/odrerir/dist/styles/cloth.css +112 -0
- package/apps/odrerir/dist/styles/livehall.css +278 -0
- package/apps/odrerir/electron/icon.png +0 -0
- package/apps/odrerir/electron/main.cjs +183 -0
- package/apps/odrerir/electron/ymir-odrerir.desktop.in +12 -0
- package/apps/odrerir/package-lock.json +4195 -0
- package/apps/odrerir/package.json +30 -0
- package/apps/odrerir/public/apple-touch-icon.png +0 -0
- package/apps/odrerir/public/favicon-192.png +0 -0
- package/apps/odrerir/public/favicon-32.png +0 -0
- package/apps/odrerir/public/favicon-512.png +0 -0
- package/apps/odrerir/public/favicon.svg +53 -0
- package/apps/odrerir/public/icon.svg +7 -0
- package/apps/odrerir/public/og-square.png +0 -0
- package/apps/odrerir/public/og-story.png +0 -0
- package/apps/odrerir/public/og.png +0 -0
- package/apps/odrerir/public/safari-pinned-tab.svg +7 -0
- package/apps/odrerir/public/site.webmanifest +16 -0
- package/apps/odrerir/scripts/extract-cloth.mjs +101 -0
- package/apps/odrerir/src/index.html +837 -0
- package/apps/odrerir/src/styles/cloth.css +112 -0
- package/apps/odrerir/src/styles/livehall.css +278 -0
- package/apps/sessrumnir/.github/ISSUE_TEMPLATE/bug_report.yml +99 -0
- package/apps/sessrumnir/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/apps/sessrumnir/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
- package/apps/sessrumnir/.github/PULL_REQUEST_TEMPLATE.md +56 -0
- package/apps/sessrumnir/.github/SUPPORT.md +18 -0
- package/apps/sessrumnir/.github/workflows/build.yml +133 -0
- package/apps/sessrumnir/AGENTS.md +540 -0
- package/apps/sessrumnir/CLA.md +63 -0
- package/apps/sessrumnir/CONTRIBUTING.md +233 -0
- package/apps/sessrumnir/LICENSE +200 -0
- package/apps/sessrumnir/NOTICE +33 -0
- package/apps/sessrumnir/README.md +329 -0
- package/apps/sessrumnir/bin/sessrumnir-web.sh +117 -0
- package/apps/sessrumnir/bin/sessrumnir.js +169 -0
- package/apps/sessrumnir/docs/CNAME +1 -0
- package/apps/sessrumnir/docs/favicon.ico +0 -0
- package/apps/sessrumnir/docs/icon-512.png +0 -0
- package/apps/sessrumnir/docs/index.html +441 -0
- package/apps/sessrumnir/docs/robots.txt +4 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_181929.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182005.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182020.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182039.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182117.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182225.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182248.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182322.png +0 -0
- package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182340.png +0 -0
- package/apps/sessrumnir/docs/sitemap.xml +9 -0
- package/apps/sessrumnir/electron.vite.config.ts +49 -0
- package/apps/sessrumnir/eslint.config.mjs +75 -0
- package/apps/sessrumnir/i18next.config.ts +33 -0
- package/apps/sessrumnir/install.sh +144 -0
- package/apps/sessrumnir/out/main/index.js +10881 -0
- package/apps/sessrumnir/out/preload/index.js +722 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-600-normal-BcIsDXzC.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-600-normal-CBymlcNF.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-600-normal-Dr-wLyOm.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-600-normal-dLR2-a_v.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-600-normal-B254Xisw.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-600-normal-DUW-TI76.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-600-normal-CD-dlDpD.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-600-normal-D3T6BBXG.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-600-normal-Dar_cCT6.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-600-normal-GIs8CF2x.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-300-normal-Ba-HN6uq.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-300-normal-ByB2hQUF.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-300-normal-B8O3uHbr.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-300-normal-BbtBtHoB.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-300-normal-BPU54Tw3.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-300-normal-BRS-C4KA.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-300-normal-BEtQ2wm2.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-300-normal-CQbCaAQ4.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-300-normal-B6fSpYYV.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-300-normal-CpdbWO_2.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
- package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/index-BxqsRq2x.css +4858 -0
- package/apps/sessrumnir/out/renderer/assets/index-TaD69rFk.js +99435 -0
- package/apps/sessrumnir/out/renderer/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-latin-ext-wght-italic-DFS986qL.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-latin-wght-italic-Bxi8ein9.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-vietnamese-wght-italic-xAqemagA.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/openmoji-color-9qo_2DLG.woff2 +0 -0
- package/apps/sessrumnir/out/renderer/assets/pi-logo-B6SVnhuS.svg +7 -0
- package/apps/sessrumnir/out/renderer/index.html +19 -0
- package/apps/sessrumnir/out/renderer/theme-boot.js +30 -0
- package/apps/sessrumnir/package-lock.json +10636 -0
- package/apps/sessrumnir/package.json +183 -0
- package/apps/sessrumnir/public/apple-touch-icon.png +0 -0
- package/apps/sessrumnir/public/icon.svg +7 -0
- package/apps/sessrumnir/resources/icons/generate_icons.py +38 -0
- package/apps/sessrumnir/resources/icons/icon-128.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-16.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-256.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-32.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-48.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-512.png +0 -0
- package/apps/sessrumnir/resources/icons/icon-64.png +0 -0
- package/apps/sessrumnir/resources/icons/icon.icns +0 -0
- package/apps/sessrumnir/resources/icons/icon.ico +0 -0
- package/apps/sessrumnir/resources/icons/icon.png +0 -0
- package/apps/sessrumnir/resources/icons/icon.svg +7 -0
- package/apps/sessrumnir/resources/linux/after-install.sh +23 -0
- package/apps/sessrumnir/resources/linux/after-remove.sh +18 -0
- package/apps/sessrumnir/resources/locales/en/translation.json +1735 -0
- package/apps/sessrumnir/resources/permission-prompt-text.test.ts +111 -0
- package/apps/sessrumnir/resources/permission-prompt-text.ts +84 -0
- package/apps/sessrumnir/resources/permission-rules.test.ts +351 -0
- package/apps/sessrumnir/resources/permission-rules.ts +293 -0
- package/apps/sessrumnir/resources/pi-desktop-permissions.ts +62 -0
- package/apps/sessrumnir/resources/ymir-sessrumnir.desktop.in +12 -0
- package/apps/sessrumnir/scripts/check-semantic-colors.mjs +57 -0
- package/apps/sessrumnir/src/main/activity-stats.test.ts +240 -0
- package/apps/sessrumnir/src/main/activity-stats.ts +596 -0
- package/apps/sessrumnir/src/main/agent-detection.test.ts +25 -0
- package/apps/sessrumnir/src/main/agent-detection.ts +114 -0
- package/apps/sessrumnir/src/main/app-data-paths.test.ts +90 -0
- package/apps/sessrumnir/src/main/app-data-paths.ts +95 -0
- package/apps/sessrumnir/src/main/app-log.test.ts +114 -0
- package/apps/sessrumnir/src/main/app-log.ts +210 -0
- package/apps/sessrumnir/src/main/archived-sessions.test.ts +50 -0
- package/apps/sessrumnir/src/main/archived-sessions.ts +95 -0
- package/apps/sessrumnir/src/main/attachment-reader.test.ts +56 -0
- package/apps/sessrumnir/src/main/attachment-reader.ts +52 -0
- package/apps/sessrumnir/src/main/auto-tag.test.ts +38 -0
- package/apps/sessrumnir/src/main/auto-tag.ts +75 -0
- package/apps/sessrumnir/src/main/autostart-linux.test.ts +56 -0
- package/apps/sessrumnir/src/main/autostart-linux.ts +58 -0
- package/apps/sessrumnir/src/main/cmd-escape.test.ts +424 -0
- package/apps/sessrumnir/src/main/cmd-escape.ts +186 -0
- package/apps/sessrumnir/src/main/council-manager.test.ts +167 -0
- package/apps/sessrumnir/src/main/council-manager.ts +265 -0
- package/apps/sessrumnir/src/main/diagnostics-report.test.ts +140 -0
- package/apps/sessrumnir/src/main/diagnostics-report.ts +91 -0
- package/apps/sessrumnir/src/main/diagnostics.ts +111 -0
- package/apps/sessrumnir/src/main/editor-guard.test.ts +59 -0
- package/apps/sessrumnir/src/main/editor-guard.ts +50 -0
- package/apps/sessrumnir/src/main/extension-ui-ipc.test.ts +299 -0
- package/apps/sessrumnir/src/main/extension-ui-ipc.ts +117 -0
- package/apps/sessrumnir/src/main/file-service.test.ts +279 -0
- package/apps/sessrumnir/src/main/file-service.ts +652 -0
- package/apps/sessrumnir/src/main/fs-errors.ts +42 -0
- package/apps/sessrumnir/src/main/get-messages-trim.test.ts +77 -0
- package/apps/sessrumnir/src/main/get-messages-trim.ts +97 -0
- package/apps/sessrumnir/src/main/git-conveyor.test.ts +305 -0
- package/apps/sessrumnir/src/main/git-conveyor.ts +338 -0
- package/apps/sessrumnir/src/main/git-worktree.test.ts +101 -0
- package/apps/sessrumnir/src/main/git-worktree.ts +201 -0
- package/apps/sessrumnir/src/main/i18n.ts +31 -0
- package/apps/sessrumnir/src/main/index.ts +619 -0
- package/apps/sessrumnir/src/main/ipc/active-engine.ts +15 -0
- package/apps/sessrumnir/src/main/ipc/context.ts +58 -0
- package/apps/sessrumnir/src/main/ipc/council-handlers.ts +126 -0
- package/apps/sessrumnir/src/main/ipc/diagnostics-handlers.ts +8 -0
- package/apps/sessrumnir/src/main/ipc/file-handlers.ts +96 -0
- package/apps/sessrumnir/src/main/ipc/git-conveyor-handlers.ts +55 -0
- package/apps/sessrumnir/src/main/ipc/model-handlers.ts +33 -0
- package/apps/sessrumnir/src/main/ipc/models-config-handlers.ts +80 -0
- package/apps/sessrumnir/src/main/ipc/notes-handlers.ts +65 -0
- package/apps/sessrumnir/src/main/ipc/package-handlers.ts +330 -0
- package/apps/sessrumnir/src/main/ipc/permission-rules-handlers.ts +223 -0
- package/apps/sessrumnir/src/main/ipc/pi-handlers.ts +136 -0
- package/apps/sessrumnir/src/main/ipc/pi-start-options.ts +150 -0
- package/apps/sessrumnir/src/main/ipc/run-pi-cli.ts +53 -0
- package/apps/sessrumnir/src/main/ipc/session-handlers.ts +491 -0
- package/apps/sessrumnir/src/main/ipc/settings.ts +120 -0
- package/apps/sessrumnir/src/main/ipc/skills-mcp-handlers.ts +192 -0
- package/apps/sessrumnir/src/main/ipc/system-handlers.ts +131 -0
- package/apps/sessrumnir/src/main/ipc/tag-handlers.ts +69 -0
- package/apps/sessrumnir/src/main/ipc/terminal-handlers.ts +41 -0
- package/apps/sessrumnir/src/main/ipc/theme-handlers.ts +131 -0
- package/apps/sessrumnir/src/main/ipc/update-handlers.ts +61 -0
- package/apps/sessrumnir/src/main/ipc/validation.ts +45 -0
- package/apps/sessrumnir/src/main/ipc/workflow-handlers.ts +108 -0
- package/apps/sessrumnir/src/main/ipc/workspace-activity-wiring.ts +179 -0
- package/apps/sessrumnir/src/main/ipc/workspace-handlers.ts +133 -0
- package/apps/sessrumnir/src/main/ipc-handlers.ts +98 -0
- package/apps/sessrumnir/src/main/map-concurrent.test.ts +80 -0
- package/apps/sessrumnir/src/main/map-concurrent.ts +30 -0
- package/apps/sessrumnir/src/main/models-file.test.ts +114 -0
- package/apps/sessrumnir/src/main/models-file.ts +89 -0
- package/apps/sessrumnir/src/main/notes-manager.test.ts +64 -0
- package/apps/sessrumnir/src/main/notes-manager.ts +183 -0
- package/apps/sessrumnir/src/main/notify-decision.test.ts +39 -0
- package/apps/sessrumnir/src/main/notify-decision.ts +25 -0
- package/apps/sessrumnir/src/main/omp-fork-points.test.ts +119 -0
- package/apps/sessrumnir/src/main/omp-fork-points.ts +105 -0
- package/apps/sessrumnir/src/main/omp-plugin-list.test.ts +94 -0
- package/apps/sessrumnir/src/main/omp-plugin-list.ts +103 -0
- package/apps/sessrumnir/src/main/package-catalog.test.ts +157 -0
- package/apps/sessrumnir/src/main/package-catalog.ts +166 -0
- package/apps/sessrumnir/src/main/package-updates.test.ts +149 -0
- package/apps/sessrumnir/src/main/package-updates.ts +185 -0
- package/apps/sessrumnir/src/main/path-authorization.test.ts +64 -0
- package/apps/sessrumnir/src/main/path-authorization.ts +31 -0
- package/apps/sessrumnir/src/main/pi-binary-resolution.test.ts +582 -0
- package/apps/sessrumnir/src/main/pi-binary-resolution.ts +649 -0
- package/apps/sessrumnir/src/main/pi-event-router.test.ts +388 -0
- package/apps/sessrumnir/src/main/pi-event-router.ts +290 -0
- package/apps/sessrumnir/src/main/pi-paths.test.ts +134 -0
- package/apps/sessrumnir/src/main/pi-paths.ts +74 -0
- package/apps/sessrumnir/src/main/pi-rpc-manager.test.ts +467 -0
- package/apps/sessrumnir/src/main/pi-rpc-manager.ts +1319 -0
- package/apps/sessrumnir/src/main/process-tree.test.ts +94 -0
- package/apps/sessrumnir/src/main/renderer-origin.test.ts +33 -0
- package/apps/sessrumnir/src/main/renderer-origin.ts +35 -0
- package/apps/sessrumnir/src/main/session-lineage-reader.test.ts +317 -0
- package/apps/sessrumnir/src/main/session-lineage-reader.ts +111 -0
- package/apps/sessrumnir/src/main/session-metadata.test.ts +508 -0
- package/apps/sessrumnir/src/main/session-metadata.ts +526 -0
- package/apps/sessrumnir/src/main/session-name.test.ts +71 -0
- package/apps/sessrumnir/src/main/session-name.ts +69 -0
- package/apps/sessrumnir/src/main/session-paths.test.ts +110 -0
- package/apps/sessrumnir/src/main/session-paths.ts +88 -0
- package/apps/sessrumnir/src/main/session-tags.test.ts +61 -0
- package/apps/sessrumnir/src/main/session-tags.ts +253 -0
- package/apps/sessrumnir/src/main/session-trash.test.ts +66 -0
- package/apps/sessrumnir/src/main/session-trash.ts +65 -0
- package/apps/sessrumnir/src/main/settings-logic.ts +66 -0
- package/apps/sessrumnir/src/main/skills-discovery.test.ts +149 -0
- package/apps/sessrumnir/src/main/skills-discovery.ts +179 -0
- package/apps/sessrumnir/src/main/startup-launch.ts +63 -0
- package/apps/sessrumnir/src/main/terminal-service.ts +96 -0
- package/apps/sessrumnir/src/main/theme-store.test.ts +440 -0
- package/apps/sessrumnir/src/main/theme-store.ts +495 -0
- package/apps/sessrumnir/src/main/tray-decision.test.ts +46 -0
- package/apps/sessrumnir/src/main/tray-decision.ts +49 -0
- package/apps/sessrumnir/src/main/tray-manager.ts +220 -0
- package/apps/sessrumnir/src/main/tsconfig.json +20 -0
- package/apps/sessrumnir/src/main/window-background.test.ts +29 -0
- package/apps/sessrumnir/src/main/window-background.ts +16 -0
- package/apps/sessrumnir/src/main/workflow-discovery.test.ts +252 -0
- package/apps/sessrumnir/src/main/workflow-monitor.test.ts +371 -0
- package/apps/sessrumnir/src/main/workflow-monitor.ts +1020 -0
- package/apps/sessrumnir/src/main/workspace-activity.test.ts +227 -0
- package/apps/sessrumnir/src/main/workspace-activity.ts +215 -0
- package/apps/sessrumnir/src/main/workspace-manager.test.ts +680 -0
- package/apps/sessrumnir/src/main/workspace-manager.ts +1199 -0
- package/apps/sessrumnir/src/main/workspace-trust.test.ts +78 -0
- package/apps/sessrumnir/src/main/workspace-trust.ts +84 -0
- package/apps/sessrumnir/src/preload/index.ts +358 -0
- package/apps/sessrumnir/src/preload/tsconfig.json +20 -0
- package/apps/sessrumnir/src/renderer/index.html +18 -0
- package/apps/sessrumnir/src/renderer/public/theme-boot.js +30 -0
- package/apps/sessrumnir/src/renderer/src/app.tsx +194 -0
- package/apps/sessrumnir/src/renderer/src/assets/openmoji-color.woff2 +0 -0
- package/apps/sessrumnir/src/renderer/src/assets/pi-logo.svg +7 -0
- package/apps/sessrumnir/src/renderer/src/assets/ymir-mark.svg +55 -0
- package/apps/sessrumnir/src/renderer/src/assets.d.ts +7 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-code-highlight.ts +239 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-file-link.ts +140 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-input.tsx +729 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-panel-widths.test.ts +175 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-panel-widths.ts +100 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-panel.tsx +523 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-project-picker.tsx +193 -0
- package/apps/sessrumnir/src/renderer/src/components/chat-search.tsx +251 -0
- package/apps/sessrumnir/src/renderer/src/components/code-editor-highlight.ts +85 -0
- package/apps/sessrumnir/src/renderer/src/components/code-editor-language.test.ts +19 -0
- package/apps/sessrumnir/src/renderer/src/components/code-editor-language.ts +88 -0
- package/apps/sessrumnir/src/renderer/src/components/code-editor.tsx +128 -0
- package/apps/sessrumnir/src/renderer/src/components/command-palette.tsx +315 -0
- package/apps/sessrumnir/src/renderer/src/components/command-results.tsx +80 -0
- package/apps/sessrumnir/src/renderer/src/components/composer-permission-menu.tsx +91 -0
- package/apps/sessrumnir/src/renderer/src/components/context-menu.tsx +457 -0
- package/apps/sessrumnir/src/renderer/src/components/copy-button.tsx +36 -0
- package/apps/sessrumnir/src/renderer/src/components/council-panels.tsx +193 -0
- package/apps/sessrumnir/src/renderer/src/components/custom-models-editor.tsx +330 -0
- package/apps/sessrumnir/src/renderer/src/components/diagnostics-panel.tsx +380 -0
- package/apps/sessrumnir/src/renderer/src/components/diff-viewer.tsx +318 -0
- package/apps/sessrumnir/src/renderer/src/components/ember-background.tsx +113 -0
- package/apps/sessrumnir/src/renderer/src/components/error-boundary.tsx +38 -0
- package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog-helpers.test.ts +43 -0
- package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog-helpers.ts +51 -0
- package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog.tsx +486 -0
- package/apps/sessrumnir/src/renderer/src/components/file-tree.tsx +784 -0
- package/apps/sessrumnir/src/renderer/src/components/git-conveyor-actions.tsx +246 -0
- package/apps/sessrumnir/src/renderer/src/components/home-screen.tsx +396 -0
- package/apps/sessrumnir/src/renderer/src/components/image-viewer.tsx +100 -0
- package/apps/sessrumnir/src/renderer/src/components/line-numbered-code.tsx +58 -0
- package/apps/sessrumnir/src/renderer/src/components/markdown-renderer.tsx +237 -0
- package/apps/sessrumnir/src/renderer/src/components/message-bubble.tsx +1006 -0
- package/apps/sessrumnir/src/renderer/src/components/mission-control.tsx +341 -0
- package/apps/sessrumnir/src/renderer/src/components/model-selector.tsx +219 -0
- package/apps/sessrumnir/src/renderer/src/components/note-picker.tsx +155 -0
- package/apps/sessrumnir/src/renderer/src/components/notes-panel.tsx +437 -0
- package/apps/sessrumnir/src/renderer/src/components/package-browser.tsx +604 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-mode.test.ts +22 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-mode.ts +49 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor-helpers.test.ts +44 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor-helpers.ts +35 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor.tsx +226 -0
- package/apps/sessrumnir/src/renderer/src/components/permission-selector.tsx +104 -0
- package/apps/sessrumnir/src/renderer/src/components/resize-handle.tsx +51 -0
- package/apps/sessrumnir/src/renderer/src/components/review-rail.tsx +194 -0
- package/apps/sessrumnir/src/renderer/src/components/session-menu-position.test.ts +22 -0
- package/apps/sessrumnir/src/renderer/src/components/session-menu-position.ts +34 -0
- package/apps/sessrumnir/src/renderer/src/components/session-panel.tsx +711 -0
- package/apps/sessrumnir/src/renderer/src/components/session-runtime-indicator.tsx +43 -0
- package/apps/sessrumnir/src/renderer/src/components/settings-panel.tsx +1360 -0
- package/apps/sessrumnir/src/renderer/src/components/sidebar-activity.test.ts +47 -0
- package/apps/sessrumnir/src/renderer/src/components/sidebar-activity.ts +76 -0
- package/apps/sessrumnir/src/renderer/src/components/sidebar-session-labels.test.ts +73 -0
- package/apps/sessrumnir/src/renderer/src/components/sidebar-session-labels.ts +47 -0
- package/apps/sessrumnir/src/renderer/src/components/sidebar.tsx +1045 -0
- package/apps/sessrumnir/src/renderer/src/components/skills-panel.tsx +159 -0
- package/apps/sessrumnir/src/renderer/src/components/stats-panel.tsx +368 -0
- package/apps/sessrumnir/src/renderer/src/components/status-bar.tsx +274 -0
- package/apps/sessrumnir/src/renderer/src/components/status-popover.tsx +481 -0
- package/apps/sessrumnir/src/renderer/src/components/streaming-bubble.tsx +128 -0
- package/apps/sessrumnir/src/renderer/src/components/subagent-progress.tsx +254 -0
- package/apps/sessrumnir/src/renderer/src/components/task-launcher.tsx +168 -0
- package/apps/sessrumnir/src/renderer/src/components/terminal.tsx +203 -0
- package/apps/sessrumnir/src/renderer/src/components/theme-editor-helpers.test.ts +35 -0
- package/apps/sessrumnir/src/renderer/src/components/theme-editor-helpers.ts +35 -0
- package/apps/sessrumnir/src/renderer/src/components/theme-editor.tsx +440 -0
- package/apps/sessrumnir/src/renderer/src/components/theme-gallery.tsx +373 -0
- package/apps/sessrumnir/src/renderer/src/components/thinking-level-selector.tsx +85 -0
- package/apps/sessrumnir/src/renderer/src/components/timeline.tsx +289 -0
- package/apps/sessrumnir/src/renderer/src/components/tool-call-icon.ts +32 -0
- package/apps/sessrumnir/src/renderer/src/components/workflow-navigator.tsx +901 -0
- package/apps/sessrumnir/src/renderer/src/components/workspace-tabs.tsx +241 -0
- package/apps/sessrumnir/src/renderer/src/global.d.ts +8 -0
- package/apps/sessrumnir/src/renderer/src/hooks/use-folder-drop.ts +101 -0
- package/apps/sessrumnir/src/renderer/src/hooks.test.ts +88 -0
- package/apps/sessrumnir/src/renderer/src/hooks.ts +574 -0
- package/apps/sessrumnir/src/renderer/src/i18n.test.ts +54 -0
- package/apps/sessrumnir/src/renderer/src/i18n.ts +89 -0
- package/apps/sessrumnir/src/renderer/src/index.css +425 -0
- package/apps/sessrumnir/src/renderer/src/main.tsx +42 -0
- package/apps/sessrumnir/src/renderer/src/message-grouping.test.ts +422 -0
- package/apps/sessrumnir/src/renderer/src/message-grouping.ts +410 -0
- package/apps/sessrumnir/src/renderer/src/message-parsing.test.ts +86 -0
- package/apps/sessrumnir/src/renderer/src/message-parsing.ts +166 -0
- package/apps/sessrumnir/src/renderer/src/store-external-prompts.test.ts +161 -0
- package/apps/sessrumnir/src/renderer/src/store-session-transitions.test.ts +2090 -0
- package/apps/sessrumnir/src/renderer/src/store-timeline.test.ts +52 -0
- package/apps/sessrumnir/src/renderer/src/store-turn-error.test.ts +136 -0
- package/apps/sessrumnir/src/renderer/src/store.ts +3726 -0
- package/apps/sessrumnir/src/renderer/src/subagent-detection.test.ts +55 -0
- package/apps/sessrumnir/src/renderer/src/theme/engine.test.ts +29 -0
- package/apps/sessrumnir/src/renderer/src/theme/engine.ts +20 -0
- package/apps/sessrumnir/src/renderer/src/themes/breeze-claudius.json +69 -0
- package/apps/sessrumnir/src/renderer/src/themes/breeze-dark.json +69 -0
- package/apps/sessrumnir/src/renderer/src/themes/breeze-light.json +69 -0
- package/apps/sessrumnir/src/renderer/src/themes/builtin-themes.test.ts +95 -0
- package/apps/sessrumnir/src/renderer/src/themes/dark.json +46 -0
- package/apps/sessrumnir/src/renderer/src/themes/fensalir.json +82 -0
- package/apps/sessrumnir/src/renderer/src/themes/gruvbox.json +69 -0
- package/apps/sessrumnir/src/renderer/src/themes/index.ts +60 -0
- package/apps/sessrumnir/src/renderer/src/themes/light.json +46 -0
- package/apps/sessrumnir/src/renderer/src/themes/nord.json +69 -0
- package/apps/sessrumnir/src/renderer/src/themes/sessrumnir.json +82 -0
- package/apps/sessrumnir/src/renderer/src/utils/debounced-buffer.test.ts +81 -0
- package/apps/sessrumnir/src/renderer/src/utils/debounced-buffer.ts +57 -0
- package/apps/sessrumnir/src/renderer/src/utils/format-relative-time.test.ts +62 -0
- package/apps/sessrumnir/src/renderer/src/utils/format-relative-time.ts +28 -0
- package/apps/sessrumnir/src/renderer/src/utils/heatmap-grid.test.ts +57 -0
- package/apps/sessrumnir/src/renderer/src/utils/heatmap-grid.ts +41 -0
- package/apps/sessrumnir/src/renderer/src/utils/ipc-error.test.ts +22 -0
- package/apps/sessrumnir/src/renderer/src/utils/ipc-error.ts +12 -0
- package/apps/sessrumnir/src/renderer/src/utils/model-search.test.ts +63 -0
- package/apps/sessrumnir/src/renderer/src/utils/model-search.ts +20 -0
- package/apps/sessrumnir/src/renderer/src/utils/planning-prompt.test.ts +31 -0
- package/apps/sessrumnir/src/renderer/src/utils/planning-prompt.ts +27 -0
- package/apps/sessrumnir/src/renderer/src/utils/preview-load-error.test.ts +15 -0
- package/apps/sessrumnir/src/renderer/src/utils/preview-load-error.ts +22 -0
- package/apps/sessrumnir/src/renderer/src/utils/process-status-label.test.ts +13 -0
- package/apps/sessrumnir/src/renderer/src/utils/process-status-label.ts +19 -0
- package/apps/sessrumnir/src/renderer/src/utils/quick-switcher.test.ts +68 -0
- package/apps/sessrumnir/src/renderer/src/utils/quick-switcher.ts +52 -0
- package/apps/sessrumnir/src/renderer/src/utils/rank-file-results.test.ts +46 -0
- package/apps/sessrumnir/src/renderer/src/utils/rank-file-results.ts +23 -0
- package/apps/sessrumnir/src/renderer/src/utils/relative-time.tsx +25 -0
- package/apps/sessrumnir/src/renderer/src/utils/session-title.test.ts +98 -0
- package/apps/sessrumnir/src/renderer/src/utils/session-title.ts +58 -0
- package/apps/sessrumnir/src/renderer/src/utils/stale-guard.test.ts +29 -0
- package/apps/sessrumnir/src/renderer/src/utils/stale-guard.ts +20 -0
- package/apps/sessrumnir/src/renderer/src/utils/theme.test.ts +174 -0
- package/apps/sessrumnir/src/renderer/src/utils/theme.ts +159 -0
- package/apps/sessrumnir/src/renderer/src/utils/workflow-runs.test.ts +130 -0
- package/apps/sessrumnir/src/renderer/src/utils/workflow-runs.ts +84 -0
- package/apps/sessrumnir/src/renderer/tsconfig.json +24 -0
- package/apps/sessrumnir/src/shared/agent-engine-label.test.ts +45 -0
- package/apps/sessrumnir/src/shared/agent-engine-label.ts +53 -0
- package/apps/sessrumnir/src/shared/app-settings.test.ts +25 -0
- package/apps/sessrumnir/src/shared/app-settings.ts +23 -0
- package/apps/sessrumnir/src/shared/bridge-http.ts +341 -0
- package/apps/sessrumnir/src/shared/bridge.ts +337 -0
- package/apps/sessrumnir/src/shared/council-config.test.ts +300 -0
- package/apps/sessrumnir/src/shared/council-config.ts +356 -0
- package/apps/sessrumnir/src/shared/default-settings.ts +39 -0
- package/apps/sessrumnir/src/shared/folder-drop.test.ts +118 -0
- package/apps/sessrumnir/src/shared/folder-drop.ts +74 -0
- package/apps/sessrumnir/src/shared/fork-point.test.ts +30 -0
- package/apps/sessrumnir/src/shared/fork-point.ts +24 -0
- package/apps/sessrumnir/src/shared/i18n/i18next.d.ts +10 -0
- package/apps/sessrumnir/src/shared/i18n/index.test.ts +51 -0
- package/apps/sessrumnir/src/shared/i18n/index.ts +50 -0
- package/apps/sessrumnir/src/shared/i18n/languages.ts +12 -0
- package/apps/sessrumnir/src/shared/i18n/locale-checks.ts +98 -0
- package/apps/sessrumnir/src/shared/i18n/locales.test.ts +92 -0
- package/apps/sessrumnir/src/shared/i18n/pseudo.test.ts +39 -0
- package/apps/sessrumnir/src/shared/i18n/pseudo.ts +44 -0
- package/apps/sessrumnir/src/shared/i18n/resolve.test.ts +43 -0
- package/apps/sessrumnir/src/shared/i18n/resolve.ts +41 -0
- package/apps/sessrumnir/src/shared/i18n/resources.ts +11 -0
- package/apps/sessrumnir/src/shared/ipc-contracts.ts +1539 -0
- package/apps/sessrumnir/src/shared/models-config.test.ts +124 -0
- package/apps/sessrumnir/src/shared/models-config.ts +167 -0
- package/apps/sessrumnir/src/shared/package-filter.ts +19 -0
- package/apps/sessrumnir/src/shared/package-spec.test.ts +51 -0
- package/apps/sessrumnir/src/shared/package-spec.ts +25 -0
- package/apps/sessrumnir/src/shared/path-compare.test.ts +38 -0
- package/apps/sessrumnir/src/shared/path-compare.ts +76 -0
- package/apps/sessrumnir/src/shared/permission-mode.ts +8 -0
- package/apps/sessrumnir/src/shared/pi-command.test.ts +165 -0
- package/apps/sessrumnir/src/shared/pi-command.ts +139 -0
- package/apps/sessrumnir/src/shared/product-name.ts +7 -0
- package/apps/sessrumnir/src/shared/session-lineage.test.ts +103 -0
- package/apps/sessrumnir/src/shared/session-lineage.ts +50 -0
- package/apps/sessrumnir/src/shared/session-preview.test.ts +93 -0
- package/apps/sessrumnir/src/shared/session-preview.ts +56 -0
- package/apps/sessrumnir/src/shared/sidebar-width.test.ts +58 -0
- package/apps/sessrumnir/src/shared/sidebar-width.ts +37 -0
- package/apps/sessrumnir/src/shared/theme/builtin-ids.ts +16 -0
- package/apps/sessrumnir/src/shared/theme/resolve.test.ts +66 -0
- package/apps/sessrumnir/src/shared/theme/resolve.ts +29 -0
- package/apps/sessrumnir/src/shared/theme/syntax-defaults.ts +24 -0
- package/apps/sessrumnir/src/shared/theme/theme-file.test.ts +88 -0
- package/apps/sessrumnir/src/shared/theme/theme-file.ts +132 -0
- package/apps/sessrumnir/src/shared/theme/tokens.test.ts +35 -0
- package/apps/sessrumnir/src/shared/theme/tokens.ts +86 -0
- package/apps/sessrumnir/src/shared/tsconfig.json +17 -0
- package/apps/sessrumnir/src/shared/untrusted-data.test.ts +32 -0
- package/apps/sessrumnir/src/shared/untrusted-data.ts +22 -0
- package/apps/sessrumnir/src/shared/version-compare.test.ts +33 -0
- package/apps/sessrumnir/src/shared/version-compare.ts +50 -0
- package/apps/sessrumnir/src/shared/workflow-control.ts +33 -0
- package/apps/sessrumnir/src/web-server.ts +315 -0
- package/apps/sessrumnir/tsconfig.json +26 -0
- package/apps/smidja/smidja_build.py +45 -0
- package/apps/smidja/smidja_build_review.py +76 -0
- package/apps/smidja/smidja_build_test.py +79 -0
- package/apps/smidja/smidja_document.py +76 -0
- package/apps/smidja/smidja_modules/agent_cc.py +15 -0
- package/apps/smidja/smidja_modules/agent_opencode.py +194 -0
- package/apps/smidja/smidja_modules/agent_pi.py +392 -0
- package/apps/smidja/smidja_modules/agents.py +993 -0
- package/apps/smidja/smidja_modules/changes.py +103 -0
- package/apps/smidja/smidja_modules/console.py +131 -0
- package/apps/smidja/smidja_modules/data_types.py +447 -0
- package/apps/smidja/smidja_modules/gates.py +108 -0
- package/apps/smidja/smidja_modules/git_helper.py +120 -0
- package/apps/smidja/smidja_modules/lm_local.py +144 -0
- package/apps/smidja/smidja_modules/permissions.py +194 -0
- package/apps/smidja/smidja_modules/prompts.py +21 -0
- package/apps/smidja/smidja_modules/quality.py +240 -0
- package/apps/smidja/smidja_modules/runner.py +155 -0
- package/apps/smidja/smidja_modules/session.py +50 -0
- package/apps/smidja/smidja_modules/stall_watch.py +149 -0
- package/apps/smidja/smidja_modules/tracer.py +271 -0
- package/apps/smidja/smidja_modules/utils.py +77 -0
- package/apps/smidja/smidja_orchestrate.py +162 -0
- package/apps/smidja/smidja_plan.py +45 -0
- package/apps/smidja/smidja_plan_build.py +55 -0
- package/apps/smidja/smidja_plan_build_test.py +86 -0
- package/apps/smidja/smidja_plan_build_test_quality.py +98 -0
- package/apps/smidja/smidja_prompt.py +44 -0
- package/apps/smidja/smidja_quality.py +49 -0
- package/apps/smidja/smidja_recon_iv.py +202 -0
- package/apps/smidja/smidja_scout.py +45 -0
- package/apps/smidja/smidja_simple_sdlc.py +183 -0
- package/apps/smidja/smidja_smidja_config/smidja.config.yaml +143 -0
- package/apps/smidja-factory/AGENTS.md +165 -0
- package/apps/smidja-factory/README.md +3 -0
- package/apps/smidja-factory/SKILL.md +18 -0
- package/apps/smidja-factory/apps/visualizer/.oxlintrc.json +18 -0
- package/apps/smidja-factory/apps/visualizer/bun.lock +269 -0
- package/apps/smidja-factory/apps/visualizer/desktop/icon.png +0 -0
- package/apps/smidja-factory/apps/visualizer/desktop/main.js +140 -0
- package/apps/smidja-factory/apps/visualizer/desktop/package-lock.json +871 -0
- package/apps/smidja-factory/apps/visualizer/desktop/package.json +18 -0
- package/apps/smidja-factory/apps/visualizer/desktop/preload.js +19 -0
- package/apps/smidja-factory/apps/visualizer/index.html +28 -0
- package/apps/smidja-factory/apps/visualizer/package.json +31 -0
- package/apps/smidja-factory/apps/visualizer/public/icon.svg +7 -0
- package/apps/smidja-factory/apps/visualizer/public/models/claude.png +0 -0
- package/apps/smidja-factory/apps/visualizer/public/models/gemini.png +0 -0
- package/apps/smidja-factory/apps/visualizer/public/models/kimi.png +0 -0
- package/apps/smidja-factory/apps/visualizer/public/models/openai.png +0 -0
- package/apps/smidja-factory/apps/visualizer/public/models/zai.png +0 -0
- package/apps/smidja-factory/apps/visualizer/server/chat.ts +425 -0
- package/apps/smidja-factory/apps/visualizer/server/db.ts +1050 -0
- package/apps/smidja-factory/apps/visualizer/server/index.ts +648 -0
- package/apps/smidja-factory/apps/visualizer/server/model-catalog.ts +90 -0
- package/apps/smidja-factory/apps/visualizer/server/roster-api.ts +75 -0
- package/apps/smidja-factory/apps/visualizer/server/roster_resolve.py +170 -0
- package/apps/smidja-factory/apps/visualizer/server/settings.ts +106 -0
- package/apps/smidja-factory/apps/visualizer/shared/types.ts +630 -0
- package/apps/smidja-factory/apps/visualizer/src/App.vue +379 -0
- package/apps/smidja-factory/apps/visualizer/src/components/ChatInput.vue +155 -0
- package/apps/smidja-factory/apps/visualizer/src/components/ChatThread.vue +219 -0
- package/apps/smidja-factory/apps/visualizer/src/components/ChatView.vue +335 -0
- package/apps/smidja-factory/apps/visualizer/src/components/DecisionsView.vue +177 -0
- package/apps/smidja-factory/apps/visualizer/src/components/DetailSection.vue +76 -0
- package/apps/smidja-factory/apps/visualizer/src/components/MemoryView.vue +397 -0
- package/apps/smidja-factory/apps/visualizer/src/components/PhaseDetail.vue +1354 -0
- package/apps/smidja-factory/apps/visualizer/src/components/PhaseDots.vue +55 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionCard.vue +583 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionMiniCard.vue +58 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionPanel.vue +272 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionStartForm.vue +152 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionTrace.vue +1157 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SessionsList.vue +96 -0
- package/apps/smidja-factory/apps/visualizer/src/components/SettingsView.vue +152 -0
- package/apps/smidja-factory/apps/visualizer/src/components/StatChip.vue +98 -0
- package/apps/smidja-factory/apps/visualizer/src/components/StatsView.vue +382 -0
- package/apps/smidja-factory/apps/visualizer/src/components/StatusChip.vue +73 -0
- package/apps/smidja-factory/apps/visualizer/src/components/ToolCallCard.vue +156 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/api.ts +177 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/chat-api.ts +95 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/chat-store.ts +351 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/events.ts +131 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/format.ts +92 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/highlight.ts +54 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/markdown.ts +120 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/models.ts +42 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/router.ts +67 -0
- package/apps/smidja-factory/apps/visualizer/src/lib/types.ts +61 -0
- package/apps/smidja-factory/apps/visualizer/src/main.ts +13 -0
- package/apps/smidja-factory/apps/visualizer/src/style.css +592 -0
- package/apps/smidja-factory/apps/visualizer/tsconfig.json +30 -0
- package/apps/smidja-factory/apps/visualizer/vite.config.js +32 -0
- package/apps/smidja-factory/apps/visualizer/vite.config.ts +31 -0
- package/apps/smidja-factory/cookbooks/create_config.md +61 -0
- package/apps/smidja-factory/cookbooks/create_smidja.md +120 -0
- package/apps/smidja-factory/cookbooks/how_to_prompt_for_the_eng.md +110 -0
- package/apps/smidja-factory/cookbooks/install.md +56 -0
- package/apps/smidja-factory/cookbooks/run_smidja.md +122 -0
- package/apps/smidja-factory/cookbooks/smidja_overview.md +88 -0
- package/apps/smidja-factory/cookbooks/update_config.md +103 -0
- package/apps/smidja-factory/cookbooks/update_modules.md +100 -0
- package/apps/smidja-factory/cookbooks/update_smidja.md +90 -0
- package/apps/smidja-factory/docs/enhancement-plan.md +420 -0
- package/apps/smidja-factory/references/config.md +202 -0
- package/apps/smidja-factory/references/handoff.md +161 -0
- package/apps/smidja-factory/references/observability.md +166 -0
- package/apps/smidja-factory/scripts/install.py +113 -0
- package/apps/smidja-factory/scripts/make_config.py +35 -0
- package/apps/smidja-factory/scripts/make_smidja.py +119 -0
- package/apps/smidja-factory/skills/add-or-edit-ai-models/SKILL.md +151 -0
- package/apps/smidja-factory/skills/create-new-agent/SKILL.md +125 -0
- package/apps/smidja-factory/skills/create-new-teams/SKILL.md +151 -0
- package/apps/smidja-factory/skills/git-ops/README.md +25 -0
- package/apps/smidja-factory/skills/git-ops/SKILL.md +18 -0
- package/apps/smidja-factory/skills/git-ops/create_branch.sh +79 -0
- package/apps/smidja-factory/skills/git-ops/safe_commit.sh +82 -0
- package/apps/smidja-factory/skills/git-ops/sync_upstream.sh +94 -0
- package/apps/smidja-factory/skills/how-to-run-agent-teams/SKILL.md +117 -0
- package/apps/smidja-factory/skills/smidja-instructions/SKILL.md +168 -0
- package/apps/smidja-factory/skills/smidja-launcher/SKILL.md +155 -0
- package/apps/smidja-factory/skills/smidja-start/SKILL.md +266 -0
- package/apps/smidja-factory/skills/volundr/SKILL.md +232 -0
- package/apps/smidja-factory/skills/volundr/prompt/dispatch-prompt.md +91 -0
- package/apps/smidja-factory/skills/volundr/prompt/volundr-system.md +63 -0
- package/apps/smidja-factory/skills/volundr/scripts/volundr-observe.py +52 -0
- package/apps/smidja-factory/skills/volundr/scripts/volundr-recall.py +54 -0
- package/apps/smidja-factory/skills/volundr/scripts/volundr-status.py +51 -0
- package/apps/smidja-factory/skills/volundr/scripts/volundr-teach.py +47 -0
- package/apps/smidja-factory/templates/env.sample +28 -0
- package/apps/smidja-factory/templates/harness_engineering/subagents.ts +706 -0
- package/apps/smidja-factory/templates/harness_engineering/themeMap.ts +145 -0
- package/apps/smidja-factory/templates/justfile +89 -0
- package/apps/smidja-factory/templates/prompt_engineering/builder/system.md +13 -0
- package/apps/smidja-factory/templates/prompt_engineering/builder/user.md +34 -0
- package/apps/smidja-factory/templates/prompt_engineering/documenter/system.md +17 -0
- package/apps/smidja-factory/templates/prompt_engineering/documenter/user.md +48 -0
- package/apps/smidja-factory/templates/prompt_engineering/orchestrator/system.md +55 -0
- package/apps/smidja-factory/templates/prompt_engineering/orchestrator/user.md +39 -0
- package/apps/smidja-factory/templates/prompt_engineering/planner/system.md +21 -0
- package/apps/smidja-factory/templates/prompt_engineering/planner/user.md +45 -0
- package/apps/smidja-factory/templates/prompt_engineering/recon_orchestrator/system.md +51 -0
- package/apps/smidja-factory/templates/prompt_engineering/recon_orchestrator/user.md +26 -0
- package/apps/smidja-factory/templates/prompt_engineering/reviewer/system.md +16 -0
- package/apps/smidja-factory/templates/prompt_engineering/reviewer/user.md +44 -0
- package/apps/smidja-factory/templates/prompt_engineering/scout/system.md +32 -0
- package/apps/smidja-factory/templates/prompt_engineering/scout/user.md +34 -0
- package/apps/smidja-factory/templates/smidja/smidja_build.py +45 -0
- package/apps/smidja-factory/templates/smidja/smidja_build_review.py +76 -0
- package/apps/smidja-factory/templates/smidja/smidja_build_test.py +79 -0
- package/apps/smidja-factory/templates/smidja/smidja_document.py +76 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/agent_cc.py +15 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/agent_opencode.py +194 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/agent_pi.py +392 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/agents.py +993 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/changes.py +103 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/console.py +131 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/data_types.py +447 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/gates.py +108 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/git_helper.py +120 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/lm_local.py +144 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/permissions.py +194 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/prompts.py +21 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/quality.py +240 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/runner.py +155 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/session.py +50 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/stall_watch.py +149 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/tracer.py +271 -0
- package/apps/smidja-factory/templates/smidja/smidja_modules/utils.py +77 -0
- package/apps/smidja-factory/templates/smidja/smidja_orchestrate.py +162 -0
- package/apps/smidja-factory/templates/smidja/smidja_plan.py +45 -0
- package/apps/smidja-factory/templates/smidja/smidja_plan_build.py +55 -0
- package/apps/smidja-factory/templates/smidja/smidja_plan_build_test.py +86 -0
- package/apps/smidja-factory/templates/smidja/smidja_plan_build_test_quality.py +98 -0
- package/apps/smidja-factory/templates/smidja/smidja_prompt.py +44 -0
- package/apps/smidja-factory/templates/smidja/smidja_quality.py +49 -0
- package/apps/smidja-factory/templates/smidja/smidja_recon_iv.py +202 -0
- package/apps/smidja-factory/templates/smidja/smidja_scout.py +45 -0
- package/apps/smidja-factory/templates/smidja/smidja_simple_sdlc.py +183 -0
- package/apps/smidja-factory/templates/smidja.config.yaml +143 -0
- package/bin/app-build.sh +36 -0
- package/bin/electron-lib.sh +25 -0
- package/bin/sessrumnir.sh +1 -1
- package/bin/ymir-install.sh +7 -0
- package/install.sh +88 -0
- package/package.json +16 -7
- package/scripts/electron.sh +6 -2
- package/.agents/bus/messages.json +0 -1
- package/.agents/config/agents.machine.example.yaml +0 -16
- package/.pi/mcp.json +0 -16
- package/assets/reference/state/.branch-eligible-owner +0 -4
- package/assets/reference/state/.branch-mirror-cursor +0 -1
- package/assets/reference/state/.branch-outcomes-cursor +0 -1
- package/assets/reference/state/.branch-session +0 -1
- package/assets/reference/state/.count-default_wF_p5 +0 -1
- package/assets/reference/state/.count-default_wF_p6 +0 -1
- package/assets/reference/state/.count-default_wR_p2 +0 -1
- package/assets/reference/state/.count-default_wS_p2 +0 -1
- package/assets/reference/state/.count-firstmate_fm-server-knowledge +0 -1
- package/assets/reference/state/.hash-default_wF_p5 +0 -1
- package/assets/reference/state/.hash-default_wF_p6 +0 -1
- package/assets/reference/state/.hash-default_wR_p2 +0 -1
- package/assets/reference/state/.hash-default_wS_p2 +0 -1
- package/assets/reference/state/.hash-firstmate_fm-server-knowledge +0 -1
- package/assets/reference/state/.heartbeat-streak +0 -1
- package/assets/reference/state/.inactive-outcome-reconcile +0 -2
- package/assets/reference/state/.lock +0 -1
- package/assets/reference/state/.pi-branch-extension-loaded +0 -1
- package/assets/reference/state/.pi-turnend-extension-loaded +0 -2
- package/assets/reference/state/.pi-watch-extension-loaded +0 -2
- package/assets/reference/state/.seen-server-knowledge_turn-ended +0 -1
- package/assets/reference/state/.session-start-agents-baseline +0 -2
- package/assets/reference/state/.session-start-complete +0 -1
- package/assets/reference/state/.stale-default_wF_p5 +0 -1
- package/assets/reference/state/.stale-default_wR_p2 +0 -1
- package/assets/reference/state/.stale-firstmate_fm-server-knowledge +0 -1
- package/assets/reference/state/.stale-since-default_wF_p5 +0 -1
- package/assets/reference/state/.stale-since-default_wR_p2 +0 -1
- package/assets/reference/state/.stale-since-firstmate_fm-server-knowledge +0 -1
- package/assets/reference/state/.startup-network.delivered +0 -1
- package/assets/reference/state/.startup-network.report +0 -1
- package/assets/reference/state/.startup-network.status +0 -10
- package/assets/reference/state/.startup-network.timings +0 -6
- package/assets/reference/state/.trace-context-effective +0 -1
- package/assets/reference/state/.wake-queue +0 -0
- package/assets/reference/state/.wake-queue.seq +0 -1
- package/assets/reference/state/.wake-rows.consume.BcqXSq +0 -0
- package/assets/reference/state/.wake-rows.consume.NDZZei +0 -0
- package/assets/reference/state/.wake-rows.consume.VGkhYm +0 -0
- package/assets/reference/state/.wake-rows.consume.tR2rTy +0 -0
- package/assets/reference/state/.watch-arm-output.3581p6 +0 -0
- package/assets/reference/state/.watch-arm-output.3ciDNP +0 -0
- package/assets/reference/state/.watch-arm-output.SksR6k +0 -0
- package/assets/reference/state/.watch-cycle-exits.log +0 -22
- package/assets/reference/state/.watch-deliveries.log +0 -19
- package/assets/reference/state/.watch-triage.log +0 -38
- package/assets/reference/state/.watch.lock/fm-home +0 -1
- package/assets/reference/state/.watch.lock/pid +0 -1
- package/assets/reference/state/.watch.lock/pid-identity +0 -1
- package/assets/reference/state/.watch.lock/watcher-path +0 -1
- package/assets/reference/state/.watch.lock.owner.qqbxmS/fm-home +0 -1
- package/assets/reference/state/.watch.lock.owner.qqbxmS/pid +0 -1
- package/assets/reference/state/.watch.lock.owner.qqbxmS/pid-identity +0 -1
- package/assets/reference/state/.watch.lock.owner.qqbxmS/watcher-path +0 -1
- package/assets/reference/state/.watcher-down +0 -1
- package/assets/reference/state/branch-outcomes.jsonl +0 -1
- package/assets/reference/state/branch-session/2026-09-04T16-49-38-671Z_01a06d53-6b6f-7619-930d-e6dfd9a4a29e.jsonl +0 -211
- package/assets/reference/state/home-summary.json +0 -42
- package/assets/reference/state/server-knowledge.busy-gen +0 -1
- package/assets/reference/state/server-knowledge.busy-state +0 -1
- package/assets/reference/state/server-knowledge.herdr-presentation +0 -12
- package/assets/reference/state/server-knowledge.meta +0 -18
- package/assets/reference/state/server-knowledge.pi-ext.ts +0 -26
- package/assets/reference/state/server-knowledge.turn-ended +0 -0
- /package/{assets/reference/state/.last-check → apps/hlidskjalf/src/app/.gitkeep} +0 -0
- /package/{assets/reference/state/.last-heartbeat → apps/hlidskjalf/src/components/.gitkeep} +0 -0
- /package/{assets/reference/state/.last-watcher-beat → apps/hlidskjalf/src/services/.gitkeep} +0 -0
- /package/{assets/reference/state/.main-eligible-rows.tmp.p2HMKo → apps/smidja/smidja_modules/__init__.py} +0 -0
- /package/{assets/reference/state/.main-eligible-rows.tmp.Exxm82 → apps/smidja-factory/templates/smidja/smidja_modules/__init__.py} +0 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: smidja-start
|
|
3
|
+
description: Start the software-smidja agents for work — exactly how, on which team (roster), with which models (local/online/hybrid), which chain, and how to run the orchestrator (Kaia). Use when the user wants to "send the smidja", start agents on a task, pick local vs online models, launch a run, watch it, or run Kaia's orchestrator. Combines with smidja, smidja-launcher, smidja-instructions and smidja skills; canonical playbooks are START_SMIDJA.md and docs/.
|
|
4
|
+
argument-hint: "[local | cloud | hybrid | orchestrate | sdlc | simple-sdlc | scout | service | mode]"
|
|
5
|
+
allowed-tools: read, write, edit, bash, grep, glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Start the Smíðja — skill
|
|
9
|
+
|
|
10
|
+
The single, exact way to put the smithy's agents to work. You
|
|
11
|
+
**launch, converge, and observe — never implement**. The smidja's agents own
|
|
12
|
+
the code.
|
|
13
|
+
|
|
14
|
+
Canonical full playbook: `START_SMIDJA.md` (repo root of `~/Ymir`).
|
|
15
|
+
Live ledger: `smidja/smidja_smidja_config/roster.yaml` — the ONE file (teams in
|
|
16
|
+
`stacks:`, agent roles in `role_defaults:`, model catalog in `tiers:`),
|
|
17
|
+
`tests/local-models/RESULTS.md` (what local models can/can't do — read before
|
|
18
|
+
sending local models on hard jobs).
|
|
19
|
+
|
|
20
|
+
The files that drive everything (what they do):
|
|
21
|
+
|
|
22
|
+
- **`smidja/smidja_smidja_config/roster.yaml`** — the ONLY config file: teams (named
|
|
23
|
+
stacks, each listing its agents and their models/tools/writes; pick one with
|
|
24
|
+
`--roster <name>` or `SMIDJA_ROSTER=<name>` — `local`, `local-agile`, `local-ui`,
|
|
25
|
+
`cloud`, `hybrid-*`, `wayofteams-*`, `recon-*`, `my-budget-ui`), agent roles
|
|
26
|
+
(`role_defaults:`), and the model catalog (`tiers:` — role × backend tier).
|
|
27
|
+
Swap surface: `--model`, `SMIDJA_<ROLE>_MODEL=…` per role, `SMIDJA_MODEL_TIER=<tier>`
|
|
28
|
+
for a whole stack.
|
|
29
|
+
- **`justfile` (repo root)** — the starter recipes: `just scout/sdlc/
|
|
30
|
+
simple-sdlc/orchestrate` launch chains from `~/Ymir`, `just sessions/
|
|
31
|
+
phases/tail/procs/obs` watch and open the UI; it honors the same
|
|
32
|
+
`SMIDJA_CONFIG` → `SMIDJA_ROSTER` → `SMIDJA_MODEL_TIER` → `smidja.config.yaml` order.
|
|
33
|
+
|
|
34
|
+
Deep-reference docs live in **`docs/`** (note the space):
|
|
35
|
+
`software-smidja.md` (overview), `software-smidja-run.md` (how to run),
|
|
36
|
+
`software-smidja-pi.md` / `software-smidja-opencode.md` (coding-agent
|
|
37
|
+
setups), `software-smidja-visualizer.md` (trace UI), `SmidjaAgentsAndModels.md`
|
|
38
|
+
(roster + model backends — source of truth for agents/models), and
|
|
39
|
+
`wayoffactory-updates.md` (how findings flow into the wayoffactory repo).
|
|
40
|
+
|
|
41
|
+
## Sibling skills — load one if the task matches
|
|
42
|
+
|
|
43
|
+
- **`smidja`** — conventions for working inside `~/Ymir` (docs/plans/
|
|
44
|
+
CHANGELOG, WayOfTeams routing).
|
|
45
|
+
- **`smidja-launcher`** — the one-command launcher (`scripts/smidja`): run, watch,
|
|
46
|
+
audit, stop, learn, missions.
|
|
47
|
+
- **`smidja-instructions`** — turn a fuzzy ask into a request file first.
|
|
48
|
+
- **`smidja`** — smidja internals: install/create/update smidja, roster config,
|
|
49
|
+
cookbooks/references under `.agents/skills/smidja/`.
|
|
50
|
+
|
|
51
|
+
## 0. The flow — always
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cd $YMIR_ROOT
|
|
55
|
+
|
|
56
|
+
scripts/smidja up # ① converge: LM Studio model check + visualizer + tunnel
|
|
57
|
+
scripts/smidja run --mode <name> "<tight ask>" # ② pick a team+chain and launch
|
|
58
|
+
just sessions / just tail <id> # ③ watch (reads never block; DB is WAL)
|
|
59
|
+
scripts/smidja audit <id> # ④ verify tools were really used
|
|
60
|
+
scripts/smidja diagnose <id> # failed? why + fix
|
|
61
|
+
scripts/smidja learn <id> # write outcome into Kaia's memory
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 1. First command: `scripts/smidja up` (converge)
|
|
65
|
+
|
|
66
|
+
- Checks LM Studio (`localhost:1234`), confirms a model answers a completion,
|
|
67
|
+
starts the visualizer, checks the tunnel.
|
|
68
|
+
- **Fix warnings; never run on a half-warm environment.**
|
|
69
|
+
|
|
70
|
+
Local backends: LM Studio `localhost:1234` (local models) · opencode (cloud
|
|
71
|
+
models under the `ocrd` profile). `scripts/smidja` self-resolves its root — run
|
|
72
|
+
from anywhere, or `cd ~/Ymir` for `just` recipes.
|
|
73
|
+
|
|
74
|
+
**Project-aware runs:** launch from the target repo (or set `SMIDJA_PROJECT_DIR`)
|
|
75
|
+
so the trace DB + Kaia's memory live in that project's `smidja/smidja_data`:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
cd /home/<user>/CodeP/wayoffactoy && $YMIR_ROOT/scripts/smidja run --mode local-fast "…"
|
|
79
|
+
SMIDJA_PROJECT_DIR=/home/<user>/CodeP/wayoffactoy $YMIR_ROOT/scripts/smidja run --mode cloud-fast "…"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 2. Pick the team (roster) — local / online / hybrid
|
|
83
|
+
|
|
84
|
+
Teams are rosters: named agent lists + which model each runs on — all in the
|
|
85
|
+
one `roster.yaml` (`stacks:` + `tiers:`). Roles: `orchestrator` · `planner` ·
|
|
86
|
+
`builder` · `scout` (read-only) · `reviewer` (read-only) · `documenter` ·
|
|
87
|
+
`ui_builder` (UI specialist).
|
|
88
|
+
|
|
89
|
+
| Team | Models | Use for |
|
|
90
|
+
|---|---|---|
|
|
91
|
+
| `local` | planner/orchestrator 35B · builder 9B · scout 4B · reviewer 12B | **local/air-gapped everyday** |
|
|
92
|
+
| `local-agile` | all small (4B/9B/12B), concurrent in VRAM | quick cheap local runs |
|
|
93
|
+
| `local-max` | everything on 35B (CPU = max context) | long docs / big spec |
|
|
94
|
+
| `local-ui` | builder = `frontend-design-expert-8b` | local UI/frontend work |
|
|
95
|
+
| `recon-9b` / `recon-local-max` | scout only (9B / 35B) | read-only codebase mapping |
|
|
96
|
+
| `recon-interval-9b` / `-35b` / `-orch` | interval-checkpointed recon (T1 / T2 / 35B-orch+T2) | long recons that must not lose early findings |
|
|
97
|
+
| `cloud` | all `opencode-go/deepseek-v4-flash` | cloud workhorse |
|
|
98
|
+
| `cloud-free` | all `opencode/big-pickle` | zero-cost cloud |
|
|
99
|
+
| `cloud-reasoning` | all `opencode/nemotron-3-ultra-free` | hard / long cloud tasks |
|
|
100
|
+
| `nemotron` | all `opencode/nemotron-3-ultra-free` (ocrd) | **test roster** — every agent on Nemotron 3 Ultra Free |
|
|
101
|
+
| `nemotron-pi` | all Nemotron 3 Ultra Free via **pi** (`openrouter/…:free`) | same model, pi harness |
|
|
102
|
+
| `nemotron-team` | = `nemotron-pi` agents (**full team**) | Kaia orchestrates — every agent on Nemotron via pi, thinking visible |
|
|
103
|
+
| `hybrid-plan-local` | plan local 35B, build cloud flash | air-gapped plan, cloud build |
|
|
104
|
+
| `hybrid-build-local` | plan cloud, build local 9B | cloud plan, local build |
|
|
105
|
+
| `review` | plan/build local, review cloud | audit a diff |
|
|
106
|
+
| `wayofteams-cloud` / `wayofteams-local` | WoT specialized agents | WayOfTeams repo only |
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
scripts/smidja run --roster local-agile "<ask>"
|
|
110
|
+
scripts/smidja run --mode local-fast "<ask>" # mode = roster + chain preset
|
|
111
|
+
scripts/smidja run --service local "<ask>" # service = provider × agent × chain
|
|
112
|
+
scripts/smidja rosters # list + validate all stacks
|
|
113
|
+
scripts/smidja modes # the 12 presets
|
|
114
|
+
scripts/smidja services # the 9 whole-stack presets
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Local models** (`lmstudio/*`): `qwen3.5-4b` (65k ctx), `qwen3.5-9b` (60k,
|
|
118
|
+
default builder), `gemma-4-12b-it@q4_k_m` (90k, reviewer), `qwen3.6-35b-a3b@q2_k_xl`
|
|
119
|
+
(131k, planner), `@iq3_s` (alt quant), `frontend-design-expert-8b` (UI).
|
|
120
|
+
**Online** — two surfaces: (a) `opencode-go/*` via the **local bridge**
|
|
121
|
+
(`scripts/opencode-go-bridge.py`, tmux `ogb`, port 4603 → `https://opencode.ai/zen/go/v1`,
|
|
122
|
+
key `OPENCODE_GO_API_KEY` in `~/Ymir/.env`): `deepseek-v4-flash` (workhorse),
|
|
123
|
+
`deepseek-v4-pro`, `glm-5.1`, `deepseek-v4-flash-vision-exp` — **pi-reachable,
|
|
124
|
+
so Kaia can dispatch them**; (b) opencode-agent (`ocrd` profile): `big-pickle`
|
|
125
|
+
(free), `nemotron-3-ultra-free` (reasoning) — whole-chain runs, not pi subagents.
|
|
126
|
+
**Nemotron 3 Ultra Free is also pi-reachable** as
|
|
127
|
+
`openrouter/nvidia/nemotron-3-ultra-550b-a55b:free` (1M ctx) — the `nemotron-pi`
|
|
128
|
+
roster, and the **always-available primary fallback** when any agent's configured
|
|
129
|
+
model fails to resolve or produces no output (one retry, then a `model_fallback`
|
|
130
|
+
event; override `SMIDJA_FALLBACK_MODEL_PI` / `SMIDJA_FALLBACK_MODEL_OPENCODE`, empty
|
|
131
|
+
disables). Missions bench online by default — `smidja mission T1|T2` runs the
|
|
132
|
+
`smidja.nemotron` roster (`SMIDJA_MISSION_CONFIG` to override).
|
|
133
|
+
|
|
134
|
+
**Model override surface** (highest wins): per-agent `model:` in roster →
|
|
135
|
+
`--model` → per-role env (`SMIDJA_BUILDER_MODEL=…`) → `SMIDJA_MODEL_TIER=local|cloud|…`
|
|
136
|
+
→ default `smidja.config.yaml`.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
SMIDJA_MODEL_TIER=local-ui scripts/smidja run sdlc "…"
|
|
140
|
+
scripts/smidja run sdlc "…" --model lmstudio/qwen3.5-9b
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 3. Pick the chain (workflow)
|
|
144
|
+
|
|
145
|
+
| Chain | Command | Phases |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| prompt | `just prompt` | one agent, one prompt |
|
|
148
|
+
| scout | `just scout` / `--mode recon` | engineer → scout (read-only) |
|
|
149
|
+
| plan | `just plan` / `--mode local-max` | engineer → planner |
|
|
150
|
+
| plan-build | `just plan-build` | plan → build → commit |
|
|
151
|
+
| **sdlc** | `just sdlc` / `--mode local-fast,cloud-free` | plan → build → test [→fix→test…] → commit |
|
|
152
|
+
| **simple-sdlc** | `just simple-sdlc` / `--mode local-planner,cloud-fast` | plan(commit) → build → test → review(commit) → docs(commit) |
|
|
153
|
+
| build-review | `--mode review-gate` | build → review |
|
|
154
|
+
| **orchestrate** | `just orchestrate` / `--service orchestrate` / `--mode orchestrate` | Kaia dispatches sub-agents |
|
|
155
|
+
|
|
156
|
+
`just` recipes run only from `~/Ymir` (justfile lives there); they read
|
|
157
|
+
`SMIDJA_CONFIG` / `SMIDJA_ROSTER` / `SMIDJA_MODEL_TIER` for the config.
|
|
158
|
+
|
|
159
|
+
## 4. Critical — launch detached for anything that may outlive a tool-call timeout
|
|
160
|
+
|
|
161
|
+
A planner on the 35B needs **minutes per phase**, not seconds. Launching a long
|
|
162
|
+
chain through a short tool-call timeout SIGKILLs the subagents mid-generation
|
|
163
|
+
(LM Studio: "Client disconnected") and the run finalizes `fail` with no error
|
|
164
|
+
events — NO real failure, just a killed parent (audit: `sdlc-4027`/`sdlc-4271`,
|
|
165
|
+
2026-08-31). **Always** launch long runs detached:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
tmux new-session -d -s ssf \
|
|
169
|
+
"SMIDJA_PROJECT_DIR=/home/<user>/CodeP/wayoffactoy SMIDJA_MODEL_TIER=local \
|
|
170
|
+
$YMIR_ROOT/scripts/smidja run sdlc 'polish the homepage; done means it renders on localhost'"
|
|
171
|
+
# then watch with read-only calls:
|
|
172
|
+
scripts/smidja sessions; scripts/smidja tail <smidja_id>; scripts/smidja phases <smidja_id>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## 5. Orchestrator (Kaia) — tiers, launch, oversight
|
|
176
|
+
|
|
177
|
+
Kaia coordinates — she does **not** implement. Per-run presence is a tier
|
|
178
|
+
(`--kaia T0|T1|T2`, `SMIDJA_KAIA`, or the roster's `kaia_tier` meta; default **T1**):
|
|
179
|
+
|
|
180
|
+
| Tier | What Kaia does | When |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| T0 | nothing — no handoff, no one-shot, no tickets | minimal/first runs |
|
|
183
|
+
| **T1** (default) | reads the session handoff, files admission notes into `kaia_notes.md` (injected into every agent call) | any non-trivial run |
|
|
184
|
+
| T2 | T1 + Kaia orchestrates (recon-interval synthesize, orchestrate chain) | big/coordinated work |
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
scripts/smidja up
|
|
188
|
+
just orchestrate "<problem> — split the work across agents, then review the result"
|
|
189
|
+
scripts/smidja run --service orchestrate "<ask>" # T2-style whole-run orchestration
|
|
190
|
+
scripts/smidja run --mode local-planner "<big ask>" --kaia T2 # overlay Kaia at T2
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Admission: at run start (non-T0) the harness writes `kaia_handoff.json` + spawns
|
|
194
|
+
one detached one-shot (`scripts/kaia-handoff.py --admit`) → Kaia files
|
|
195
|
+
`kaia_notes.md`; recursion is capped (`SMIDJA_NO_ADMIT`) and blocked while a
|
|
196
|
+
`.smidja-emergency` kill-switch exists. Oversight:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
scripts/smidja admit <smidja_id> # refresh handoff + re-ask Kaia for notes
|
|
200
|
+
scripts/smidja recover <smidja_id> # watchdog ticket → Kaia's ONE decision, prints the apply cmd
|
|
201
|
+
scripts/smidja watch # watchdog loop in tmux (also auto-started by smidja up)
|
|
202
|
+
scripts/smidja emergency-stop # circuit breaker + kill-switch for a runaway smidja
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Memory: `smidja/smidja_data/kaia.engram` (UI `http://localhost:4601#/memory`, CLI
|
|
206
|
+
`scripts/smidja kaia`). `smidja learn <id>` writes outcomes into her memory;
|
|
207
|
+
`smidja memory <project>` recalls.
|
|
208
|
+
|
|
209
|
+
## 6. Watch / control / learn
|
|
210
|
+
|
|
211
|
+
| Command | What |
|
|
212
|
+
|---|---|
|
|
213
|
+
| `just sessions` / `smidja sessions [N]` | last runs (id, status, tokens) |
|
|
214
|
+
| `just phases <id>` / `smidja phases <id>` | phase statuses |
|
|
215
|
+
| `just tail <id>` / `smidja tail <id> [N]` | live event tail |
|
|
216
|
+
| `just procs <id>` / `smidja procs <id>` | running processes + pids |
|
|
217
|
+
| `just ui` / `smidja ui` | visualizer `http://localhost:4601` |
|
|
218
|
+
| `smidja audit <id>` | gates + tool-call evidence |
|
|
219
|
+
| `smidja diagnose <id>` | why it failed + fix |
|
|
220
|
+
| `smidja learn <id>` | write audit into Kaia's memory |
|
|
221
|
+
| `smidja stop <id>` · `pause <id>` · `resume <id>` · `steer <id> "msg"` | control |
|
|
222
|
+
| `smidja admit <id>` · `recover <id>` · `watch` | Kaia oversight (see §5) |
|
|
223
|
+
| `just watch` · `just emergency-stop` | run the watchdog / panic button |
|
|
224
|
+
|
|
225
|
+
Reads never block a running run (WAL).
|
|
226
|
+
|
|
227
|
+
## 7. Gotchas — read before sending local models
|
|
228
|
+
|
|
229
|
+
1. **Launch detached** (see §4) — the #1 killer of local runs.
|
|
230
|
+
2. **Small models may skip strict JSON** — "builder never produced valid
|
|
231
|
+
BuildOutput JSON" (seen on `frontend-design-expert-8b`): use a 9B/12B/35B
|
|
232
|
+
builder or the `prompt_engineering-local/` prompt set (has the tool-use
|
|
233
|
+
mandate).
|
|
234
|
+
3. **Reviewer is read-only** — if the reviewer writes files, the gate rolls
|
|
235
|
+
back and the run fails (571k/911k-token examples). Pick a disciplined model.
|
|
236
|
+
4. **35B slow** — prompt ~335–430 tok/s on this machine, model reloads between
|
|
237
|
+
quants (~10–30 s), reasoning falls back `high`→`on`.
|
|
238
|
+
5. **Prompt sets:** `smidja.config.yaml` points to ONLINE prompts
|
|
239
|
+
(`prompt_engineering/`) even for local models; `prompt_engineering-local/`
|
|
240
|
+
exists for local. Hypothesis (unproven per model): local models need the
|
|
241
|
+
explicit tool-use mandate — see `tests/local-models/RESULTS.md` before
|
|
242
|
+
trusting a local builder with real work.
|
|
243
|
+
|
|
244
|
+
## 8. Bench a team before trusting it (missions)
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
scripts/smidja mission T1 --config smidja.local-agile # recon mission, small models
|
|
248
|
+
scripts/smidja mission T2 --config smidja.local-max # build mission (sandboxed)
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Missions: `tests/local-models/missions/` (T1 read-only recon, T2 sandboxed
|
|
252
|
+
build, T3 context probe). Artifacts → `tests/local-models/sandbox/<config>/`.
|
|
253
|
+
Results → `tests/local-models/RESULTS.md`.
|
|
254
|
+
|
|
255
|
+
## 9. Quick-start cheat sheet
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
scripts/smidja up
|
|
259
|
+
just demo # two cheap read-only smoke runs
|
|
260
|
+
just scout "<read-only recon ask>"
|
|
261
|
+
SMIDJA_MODEL_TIER=local just sdlc "<dev ask>" # local everyday
|
|
262
|
+
scripts/smidja run --mode cloud-fast "<dev ask>" # cloud workhorse
|
|
263
|
+
scripts/smidja run --mode local-planner "<big ask>" # 35B spec + full quality chain
|
|
264
|
+
just orchestrate "<multi-agent ask>" # Kaia dispatches
|
|
265
|
+
scripts/smidja mission T1 --config smidja.local-agile # bench a local team
|
|
266
|
+
```
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: volundr
|
|
3
|
+
description: "Behave like Smíðja's orchestrator — Völundr, the master smith (the smidja's Völundr): coordinate the whole task, dispatch sub-agents (scout/planner/builder/reviewer), track and verify their work, and stay connected to the well's memory (recall before dispatch, learn after work). Use when the user wants to orchestrate, split a task across agents, run the orchestrate chain, talk to the orchestrator, or check/teach/learn from engram memory. Pairs with smidja-start / smidja-launcher (launching) and smidja (internals)."
|
|
4
|
+
argument-hint: "[orchestrate | dispatch | volundr | recall <project> | observe | teach <project> | memory <project> | learn <smidja_id>]"
|
|
5
|
+
allowed-tools: read, write, edit, bash, grep, glob, web_fetch
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Völundr — Smíðja's orchestrator (memory-connected)
|
|
9
|
+
|
|
10
|
+
You are **Völundr, the master smith**: you get the WHOLE task and coordinate it —
|
|
11
|
+
you do **not** implement it yourself. You dispatch sub-agents, track them, and
|
|
12
|
+
report every changed file. You are connected to the **smidja memory (engram)**
|
|
13
|
+
through the bridge at `http://127.0.0.1:4602` (`KAIA_MEMORY_URL`): **recall
|
|
14
|
+
before dispatch, learn after work.**
|
|
15
|
+
|
|
16
|
+
This skill's assets:
|
|
17
|
+
|
|
18
|
+
| Path (inside this skill) | What it is |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `prompt/volundr-system.md` | The Völundr identity/system prompt (mirrors `prompt_engineering/orchestrator/system.md`) |
|
|
21
|
+
| `prompt/dispatch-prompt.md` | The dispatch template (OBJECTIVE / PROJECT / WHAT YOU REMEMBER) + OrchestratorOutput JSON contract |
|
|
22
|
+
| `scripts/volundr-recall.py` | Recall project memory from the bridge: `python3 scripts/volundr-recall.py <project> [k] [mode]` |
|
|
23
|
+
| `scripts/volundr-observe.py` | Write a lesson/episode into the engram: `python3 scripts/volundr-observe.py "<content>" [--tags …]` |
|
|
24
|
+
| `scripts/volundr-status.py` | Bridge health + store summary: `python3 scripts/volundr-status.py` |
|
|
25
|
+
| `scripts/volundr-teach.py` | Bulk-teach a project (wraps `smidja teach`): `python3 scripts/volundr-teach.py <project> [--recon]` |
|
|
26
|
+
|
|
27
|
+
Python 3 stdlib only — run them from anywhere; `--url` overrides the bridge.
|
|
28
|
+
|
|
29
|
+
## 1. The orchestrator rules (always)
|
|
30
|
+
|
|
31
|
+
1. **Coordinate, never implement.** Dispatch scout (recon), planner (specs),
|
|
32
|
+
builder (implementation), reviewer (verification). Sub-agents run the real
|
|
33
|
+
environment with the same tools you have.
|
|
34
|
+
2. **Actually dispatch.** A report claiming coordination with **no subagent
|
|
35
|
+
tool use is a failed run** — the `orchestrator_dispatched` gate verifies it.
|
|
36
|
+
3. **Track between dispatches** — `subagent_list` / `subagent_continue`. A
|
|
37
|
+
failed sub-agent gets re-dispatched or re-tasked; never silently accept it.
|
|
38
|
+
4. **Verify before claiming** — report only files a sub-agent wrote AND that
|
|
39
|
+
exist on disk (`diff_matches_claims` gate).
|
|
40
|
+
5. **Inherited environment** — call tools by bare name (`bun`, `uv`,
|
|
41
|
+
`pytest`); never hunt for a binary.
|
|
42
|
+
|
|
43
|
+
## 2. Memory connection — recall before dispatch, learn after work
|
|
44
|
+
|
|
45
|
+
The engine: `smidja/smidja_orchestrate.py` builds the dispatch by calling
|
|
46
|
+
`kaia_memory_for(project, k=5)` → `GET /recall?q=<project>` and injecting the
|
|
47
|
+
hits as **WHAT YOU REMEMBER ABOUT THIS PROJECT** into Völundr's prompt.
|
|
48
|
+
|
|
49
|
+
**Read (before dispatching/coordinating):**
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# from anywhere, using this skill's helpers
|
|
53
|
+
python3 .agents/skills/smidja/skills/volundr/scripts/volundr-recall.py <project> 5 hybrid
|
|
54
|
+
# or the launcher equivalents
|
|
55
|
+
scripts/smidja memory <project> # what Völundr has learned for a project
|
|
56
|
+
scripts/smidja kaia --memory <project> # same, via the kaia command
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Write (after work / when you learn something):**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
python3 .agents/skills/smidja/skills/volundr/scripts/volundr-observe.py "<lesson>" --tags learn,<project> --salience 0.7
|
|
63
|
+
scripts/smidja learn <smidja_id> # structured outcome of a run (auto after every run)
|
|
64
|
+
scripts/smidja teach <project> [--recon] # bulk-ingest project files (no agent tokens)
|
|
65
|
+
python3 .agents/skills/smidja/skills/volundr/scripts/volundr-teach.py <project> [--recon]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Inspect:**
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
python3 .agents/skills/smidja/skills/volundr/scripts/volundr-status.py # health + store state
|
|
72
|
+
scripts/smidja kaia "<msg>" # memory-backed one-shot talk with Völundr
|
|
73
|
+
just ui # visualizer → http://localhost:4601#/memory
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Rules of the memory:
|
|
77
|
+
|
|
78
|
+
- **Per-project.** Each repo owns its `kaia.engram` (committed, shared by all
|
|
79
|
+
devs). From a project repo (or `SMIDJA_PROJECT_DIR=`) all runs and recall use
|
|
80
|
+
THAT project's brain. `MEMORY.md` (§3) explains the active-brain resolution.
|
|
81
|
+
- **Always a boost, never a blocker.** Bridge down → run cold-start; never
|
|
82
|
+
fail or stall because memory is unreachable.
|
|
83
|
+
- **Auto-learn.** Every production run teaches Völundr automatically
|
|
84
|
+
(disable with `SMIDJA_LEARN=0`). `smidja diagnose` flavors the lesson with a
|
|
85
|
+
root-cause `diagnosis` (json_contract, hallucinated_build, stopped, …).
|
|
86
|
+
|
|
87
|
+
## 2b. What Völundr can actually dispatch (verified 2026-08-31)
|
|
88
|
+
|
|
89
|
+
The subagent tools (`subagent_create/continue/list/remove`) come from the pi
|
|
90
|
+
harness extension `smidja/smidja_data/harness_engineering/subagents.ts`, which the
|
|
91
|
+
config loads for the **orchestrator, planner, and scout** roles (`smidja.config.yaml`
|
|
92
|
+
and `smidja.local-planner.config.yaml` both list it). The full mechanism walks:
|
|
93
|
+
`smidja_orchestrate.py` → `agent_pi.py` (tools+extensions) → pi session with the
|
|
94
|
+
subagent widgets → background pi subagent with its own session, on the model
|
|
95
|
+
passed via `subagent_create(model=…)`.
|
|
96
|
+
|
|
97
|
+
**Model routing — what resolves in `~/.pi/agent/models.json` (pi's registry):**
|
|
98
|
+
|
|
99
|
+
| Chain | Models | Verdict |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| **local** | `lmstudio/qwen3.5-9b` · `qwen3.5-4b` · `gemma-4-12b-it@q4_k_m` · `qwen3.6-35b-a3b@q2_k_xl` · `@iq3_s` · `frontend-design-expert-8b`* | ✅ registered + loaded (`*`: served by LM Studio, not listed in registry) |
|
|
102
|
+
| **online** | `google/gemini-3-flash-preview` · `google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` · `openrouter/meta-llama/llama-3.3-70b-instruct` | ✅ keys present in registry |
|
|
103
|
+
| **hybrid** | any mix of local + online above, per role | ✅ |
|
|
104
|
+
| **opencode surface** | `opencode-go/deepseek-v4-flash`·`deepseek-v4-pro`·`glm-5.1`·`deepseek-v4-flash-vision-exp` | ✅ NOW pi-reachable via the **bridge** (`scripts/opencode-go-bridge.py`, tmux `ogb`, port 4603; key from `~/Ymir/.env` `OPENCODE_GO_API_KEY` → gateway `https://opencode.ai/zen/go/v1`) |
|
|
105
|
+
|
|
106
|
+
If Völundr must dispatch a cloud model, use `opencode-go/*` (via the bridge),
|
|
107
|
+
`google/*`, or `openrouter/*`. The bridge injects the .env key — pi's registry
|
|
108
|
+
entry uses a placeholder and any request is answered with the real key.
|
|
109
|
+
|
|
110
|
+
Full routing table + envelope contract: `prompt/dispatch-prompt.md`.
|
|
111
|
+
|
|
112
|
+
## 2c. Völundr's session presence — tiers, admission, watchdog (admit · recover · watch)
|
|
113
|
+
|
|
114
|
+
Völundr is **an overlord, not a toll booth**: her presence over a run is tiered,
|
|
115
|
+
and every tier can run without her. Pick per run with `--kaia T0|T1|T2` (or
|
|
116
|
+
`SMIDJA_KAIA`, or the roster stack's `kaia_tier` meta — default **T1**).
|
|
117
|
+
|
|
118
|
+
| Tier | Name | Völundr does | Mandatory? |
|
|
119
|
+
|---|---|---|---|
|
|
120
|
+
| **T0** | silent | nothing — no handoff file, no one-shot, no ticket | no |
|
|
121
|
+
| **T1** | informed | reads the session handoff and files admission notes into `kaia_notes.md` (injected into every agent call); watchdog still reports to her | no — **default** for any non-trivial run |
|
|
122
|
+
| **T2** | orchestrator | T1 + Völundr is the coordinator/dispatcher during the run (recon-interval synthesize, orchestrate chain) | no |
|
|
123
|
+
|
|
124
|
+
**Admission flow (run start, non-T0):** `session._admit()` writes
|
|
125
|
+
`<session>/kaia_handoff.json` (request/plan/roster/prompts/docs) + a `handoff`
|
|
126
|
+
event → spawns a **detached one-shot** `python3 scripts/kaia-handoff.py --admit
|
|
127
|
+
<smidja_id>` → `smidja kaia "<admission prompt>"` (cloud orchestrator via the ogb
|
|
128
|
+
bridge) → her newest valid envelope is extracted and written to
|
|
129
|
+
`kaia_notes.md`, injected into every agent call under a `KAIA ADMISSION NOTES`
|
|
130
|
+
header (not steer.md).
|
|
131
|
+
|
|
132
|
+
**Recursion is capped** — the admission one-shot's own session never admits
|
|
133
|
+
again (`SMIDJA_NO_ADMIT=1`), and `scripts/smidja-emergency-stop.sh` leaves a
|
|
134
|
+
`.smidja-emergency` kill-switch that blocks admission until `smidja up` clears
|
|
135
|
+
it. The 2026-08-31 auto-admission cascade bug is fixed and guarded.
|
|
136
|
+
|
|
137
|
+
**Manual admission / refresh:**
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
scripts/smidja admit <smidja_id> # refresh handoff + re-ask Völundr for notes
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Watchdog (detector-only, always reports to Völundr):** `scripts/agent-watch.py`
|
|
144
|
+
loops every 60s from tmux `watch` (auto-started by `smidja up`; also `smidja watch`).
|
|
145
|
+
It classifies each running session (working / generating / compacting / stuck /
|
|
146
|
+
dead / disconnected) and on the **first** non-working state writes one
|
|
147
|
+
`kaia_recovery.json` ticket (**MAX 1 per phase**) + POSTs the episode to
|
|
148
|
+
`:4602/observe` (Völundr's memory).
|
|
149
|
+
|
|
150
|
+
**Völundr decides, you apply — never unsupervised auto-restart:**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
scripts/smidja recover <smidja_id> # one Völundr decision (steer/restart/switch-model/pause/abort-phase),
|
|
154
|
+
# recorded as a recovery event + ticket consumed; prints the apply
|
|
155
|
+
# command for the operator — it does NOT auto-apply
|
|
156
|
+
scripts/smidja watch # run the watchdog loop in tmux
|
|
157
|
+
scripts/smidja emergency-stop # circuit breaker + kill-switch (you are the final authority)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
T0 sessions never get recovery tickets; non-working states from T1/T2 do.
|
|
161
|
+
|
|
162
|
+
## 3. The orchestrate chain (how it runs)
|
|
163
|
+
|
|
164
|
+
`smidja/smidja_orchestrate.py`: `engineer(request) → orchestrator (Völundr) →
|
|
165
|
+
reviewer [→ revise → Völundr …]` bounded by `MAX_REVISION_LOOPS = 3`.
|
|
166
|
+
|
|
167
|
+
- Völundr gets: `OBJECTIVE` (original ask) + `PROJECT` + `WHAT YOU REMEMBER`
|
|
168
|
+
(memory recall) → dispatches sub-agents → returns `OrchestratorOutput`
|
|
169
|
+
(`summary`, `subagents`, `changed_files`, `status`).
|
|
170
|
+
- Reviewer rules on every requirement against disk (gates
|
|
171
|
+
`artifacts_exist`, `verdict_consistent`). Rejection → Völundr closes the
|
|
172
|
+
findings in a `revise_N` phase; after 3 loops the run fails.
|
|
173
|
+
- The orchestrator role's tools/writes live in
|
|
174
|
+
`smidja/smidja_smidja_config/roster.yaml` (`orchestrator` role: `subagent_*` tools,
|
|
175
|
+
writes `specs/`, `docs/`, `*.md`).
|
|
176
|
+
|
|
177
|
+
## 4. Launch it (operator level)
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
just orchestrate "<problem> — split the work across agents, then review the result"
|
|
181
|
+
scripts/smidja run --service orchestrate "<ask>" # or:
|
|
182
|
+
scripts/smidja run --mode orchestrate "<ask>" # or:
|
|
183
|
+
scripts/smidja run orchestrate "<ask>"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- Pick the roster/models as usual (`--service local|cloud|...`, `--roster`,
|
|
187
|
+
`--model`, `SMIDJA_MODEL_TIER`) — see the **smidja-start** skill.
|
|
188
|
+
- **Launch detached** for anything that may outlive a tool-call timeout:
|
|
189
|
+
`tmux new-session -d -s ssf "…"`, then watch with `smidja sessions / phases /
|
|
190
|
+
tail` (long runs killed by a short timeout finalize `fail` with no error
|
|
191
|
+
events — canonically audited `sdlc-4027`/`sdlc-4271`).
|
|
192
|
+
- Bench an orchestrator model: `scripts/smidja mission T1|T2 [--config <roster>]`.
|
|
193
|
+
|
|
194
|
+
## 5. Decision guide — orchestrate vs plain chains
|
|
195
|
+
|
|
196
|
+
| Ask | Use |
|
|
197
|
+
|---|---|
|
|
198
|
+
| "split this across agents", "coordinate", many subtasks | **orchestrate** (Völundr dispatches) |
|
|
199
|
+
| read-only recon | `scout` / `--mode recon` |
|
|
200
|
+
| small well-understood change | `sdlc` / `--mode local-fast` / `cloud-free` |
|
|
201
|
+
| big / fuzzy / needs plan+quality | `simple-sdlc` / `--mode local-planner` / `cloud-fast` |
|
|
202
|
+
| review an existing diff | `build-review` / `--mode review-gate` |
|
|
203
|
+
|
|
204
|
+
## 6. Sibling skills — load one if the task matches
|
|
205
|
+
|
|
206
|
+
- **`smidja-start`** — teams/rosters, local vs online models, chains,
|
|
207
|
+
gotchas (canonical playbook `START_SMIDJA.md`).
|
|
208
|
+
- **`smidja-launcher`** — the one-command launcher (`scripts/smidja`): run, watch,
|
|
209
|
+
audit, stop, learn, missions.
|
|
210
|
+
- **`smidja-instructions`** — turn a fuzzy ask into a request file first.
|
|
211
|
+
- **`smidja`** — smidja internals: cookbooks/references, roster config.
|
|
212
|
+
- **`smidja`** — conventions when working inside `~/Ymir`.
|
|
213
|
+
|
|
214
|
+
Deep references: `MEMORY.md` (full memory-system deep dive) ·
|
|
215
|
+
`docs/software-smidja-visualizer.md` (Völundr's memory UI) ·
|
|
216
|
+
`docs/SmidjaAgentsAndModels.md` (agents/models source of truth) ·
|
|
217
|
+
`smidja/smidja_data/prompt_engineering/orchestrator/{system,user}.md` ·
|
|
218
|
+
`scripts/kaia-memory-bridge.py` (the bridge, endpoints
|
|
219
|
+
`health / inspect / recall / observe`).
|
|
220
|
+
|
|
221
|
+
## 7. Gotchas
|
|
222
|
+
|
|
223
|
+
1. **Gate-proof your dispatch** — no `subagent_*` tool calls = automatic fail.
|
|
224
|
+
2. **Reviewer is read-only** — if the reviewer writes files the permission
|
|
225
|
+
gate rolls back and the run fails; keep it a coordinator, not a fixer.
|
|
226
|
+
3. **`changed_files` truth** — verify existence before reporting them.
|
|
227
|
+
4. **Memory is fuzzy** — recall is hybrid/cosine/spreading; it grounds, it
|
|
228
|
+
doesn't dictate. Never treat a recalled episode as a spec.
|
|
229
|
+
5. **Per-project brains** — recalling on the wrong project returns its memory;
|
|
230
|
+
set `SMIDJA_PROJECT_DIR` or cd to the repo when it matters.
|
|
231
|
+
6. **Bridge is optional** — `smidja_orchestrate.py` catches bridge failures and
|
|
232
|
+
proceeds cold (`(no prior memory yet — first run)`).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Völundr dispatch prompt template
|
|
2
|
+
|
|
3
|
+
Used by `smidja/smidja_orchestrate.py` to hand the WHOLE task to the orchestrator
|
|
4
|
+
with her memory of the project already injected. Fill the three variables,
|
|
5
|
+
then give it to Völundr (as the system prompt + this dispatch):
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
OBJECTIVE (the original ask, unchanged):
|
|
9
|
+
{{objective}}
|
|
10
|
+
|
|
11
|
+
PROJECT: {{project}}
|
|
12
|
+
WHAT YOU REMEMBER ABOUT THIS PROJECT:
|
|
13
|
+
{{memory}}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- `{{objective}}` — the original ask, verbatim. Never summarize it.
|
|
17
|
+
- `{{project}}` — `Path(run.repo_root).name` (the repo basename).
|
|
18
|
+
- `{{memory}}` — the `kaia_memory_for(project, k=5)` recall: top hits' contents
|
|
19
|
+
joined as `- <content>` bullets; or `(no prior memory yet — first run)` when
|
|
20
|
+
the recall is empty / bridge is down.
|
|
21
|
+
|
|
22
|
+
Trailing instruction given with the dispatch:
|
|
23
|
+
|
|
24
|
+
> Dispatch sub-agents to do the work, guided by your memory of what has worked
|
|
25
|
+
> or failed on this project before. Track them, then report every changed file.
|
|
26
|
+
|
|
27
|
+
## Output contract — OrchestratorOutput (the REAL shape)
|
|
28
|
+
|
|
29
|
+
Völundr must reply with ONLY valid JSON of this exact shape — no prose. This is
|
|
30
|
+
the pydantic contract in `smidja/smidja_modules/data_types.py`:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"status": "success",
|
|
35
|
+
"summary": "coordinated scout+builder; reviewer verified",
|
|
36
|
+
"artifacts": ["specs/plan.md"],
|
|
37
|
+
"notes_for_next_agent": "what the reviewer should check",
|
|
38
|
+
"changed_files": ["src/one.ts", "src/two.ts"],
|
|
39
|
+
"commit_message": "implement onboarding flow",
|
|
40
|
+
"subagents": [
|
|
41
|
+
{ "file": "scout", "note": "mapped the repo, 12 findings" },
|
|
42
|
+
{ "file": "builder", "note": "implemented onboarding; verified files exist" }
|
|
43
|
+
],
|
|
44
|
+
"used_subagent_tools": true
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Rules the gates enforce (`orchestrator_dispatched`, `diff_matches_claims`):
|
|
49
|
+
|
|
50
|
+
- `used_subagent_tools` **must be `true`** — Völundr must have actually called
|
|
51
|
+
`subagent_create` / `subagent_continue`. Never claim dispatch she did not do.
|
|
52
|
+
- `subagents` **must be non-empty** — name each sub-agent (`file`) and its
|
|
53
|
+
outcome (`note`). This is the traceable proof she coordinated.
|
|
54
|
+
- `changed_files` lists ONLY files a sub-agent actually wrote AND that exist on
|
|
55
|
+
disk at report time. Völundr never writes code files herself.
|
|
56
|
+
- `status: "fail"` is legal — the reviewer getst it and Völundr revises; the gate
|
|
57
|
+
cares about dispatch proof, not a rosy summary.
|
|
58
|
+
|
|
59
|
+
## Dispatch chains — routing sub-agents to local / hybrid / online models
|
|
60
|
+
|
|
61
|
+
Völundr's whole job is dispatching sub-agents. Each dispatch picks a **model** via
|
|
62
|
+
`subagent_create(task, thinking, model=…)`. **The standing team definitions
|
|
63
|
+
are the file** (the truth, not this table): `smidja/smidja_smidja_config/roster.yaml`
|
|
64
|
+
(teams in `stacks:`, agent roles in `role_defaults:`, model catalog in `tiers:`)
|
|
65
|
+
resolves to the `smidja.*.config.yaml` the run builds, and the
|
|
66
|
+
`justfile` is the same surface as shell recipes
|
|
67
|
+
(`just orchestrate` / `just sdlc` / `just simple-sdlc`, honoring
|
|
68
|
+
`SMIDJA_CONFIG` → `SMIDJA_ROSTER` → `SMIDJA_MODEL_TIER`).
|
|
69
|
+
|
|
70
|
+
**What pi (Völundr) can actually dispatch — verified in `~/.pi/agent/models.json`
|
|
71
|
+
on 2026-08-31** (registry ↓ = the subagent's model must resolve here):
|
|
72
|
+
|
|
73
|
+
| Chain | Sub-agent model routing (per role) | Verdict |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| **local** | planner/orchestrator `lmstudio/qwen3.6-35b-a3b@q2_k_xl` · builder `lmstudio/qwen3.5-9b` · scout `lmstudio/qwen3.5-4b` · reviewer `lmstudio/gemma-4-12b-it@q4_k_m` · UI `lmstudio/frontend-design-expert-8b*` | ✅ in registry + loaded in LM Studio (`*`: not in registry, but LM Studio serves it and it has run) |
|
|
76
|
+
| **hybrid** | mix local LM Studio + online `google/*` or `openrouter/*` per role | ✅ hybrid = local ∪ online (pi-reachable) |
|
|
77
|
+
| **online** | `google/gemini-3-flash-preview` · `google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` · `openrouter/meta-llama/llama-3.3-70b-instruct` — API keys present | ✅ pi-reachable (subagent fallback itself names `openrouter/google/gemini-3.5-flash`) |
|
|
78
|
+
|
|
79
|
+
**opencode-go now pi-reachable via the bridge.** Registered in pi's registry
|
|
80
|
+
(`~/.pi/agent/models.json` provider `opencode-go` → `http://127.0.0.1:4603/v1`);
|
|
81
|
+
`scripts/opencode-go-bridge.py` (tmux `ogb`) injects `OPENCODE_GO_API_KEY`
|
|
82
|
+
from `~/Ymir/.env` and proxies to `https://opencode.ai/zen/go/v1` (bare
|
|
83
|
+
model ids, e.g. `deepseek-v4-flash` — strip the `opencode-go/` prefix).
|
|
84
|
+
Verified: `pi --model opencode-go/deepseek-v4-flash` answers. The standalone
|
|
85
|
+
`opencode/*` free ids (`big-pickle`, `nemotron-3-ultra-free`) remain
|
|
86
|
+
opencode-agent-only (`ocrd` profile) — they run when the smidja runs under
|
|
87
|
+
`coding_agent: opencode`, not as pi subagents.
|
|
88
|
+
|
|
89
|
+
`thinking` is REQUIRED on every dispatch: `low` simple tasks · `medium` routine ·
|
|
90
|
+
`high` complex multi-step · `xhigh` hardest/accuracy-critical. **Omit `model`
|
|
91
|
+
to inherit the parent model**; pass it explicitly to build a mixed chain.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Völundr — Orchestrator Agent (identity)
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
You are Völundr, the orchestrator. You get the WHOLE task. You do NOT do the work
|
|
6
|
+
yourself — you dispatch sub-agents to do it, track them, and report every file
|
|
7
|
+
that changed. You are the coordinator, not the implementer.
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
- You have `subagent_create`, `subagent_continue`, `subagent_list`,
|
|
12
|
+
`subagent_remove` tools. USE them. Dispatch the right sub-agent for each job:
|
|
13
|
+
scout for recon, planner for specs, builder for implementation, reviewer for
|
|
14
|
+
verification.
|
|
15
|
+
- Sub-agents do the work with the operator's real environment — they run the
|
|
16
|
+
same tools the operator would. Never do their job yourself.
|
|
17
|
+
- Track progress with `subagent_list` / `subagent_continue` between dispatches.
|
|
18
|
+
If a sub-agent fails, dispatch again or adjust its task; do not silently
|
|
19
|
+
accept a failed sub-agent's output.
|
|
20
|
+
- You MUST actually dispatch sub-agents before reporting. A report that claims
|
|
21
|
+
coordination but records no subagent tool use is a failed run: the gate
|
|
22
|
+
verifies it.
|
|
23
|
+
- You inherit the operator's shell environment — call tools by bare name
|
|
24
|
+
(`bun`, `uv`, `pytest`); never hunt for a binary.
|
|
25
|
+
- Report every changed file in your envelope — never claim a file that no
|
|
26
|
+
sub-agent wrote and that you did not verify exists.
|
|
27
|
+
|
|
28
|
+
## Memory
|
|
29
|
+
|
|
30
|
+
You are connected to the smidja memory (engram) through the bridge on
|
|
31
|
+
`http://127.0.0.1:4602` (env `KAIA_MEMORY_URL`):
|
|
32
|
+
|
|
33
|
+
- **Recall before dispatch** — `GET /recall?q=<project>&k=5` — what has worked
|
|
34
|
+
or failed on this project before. Ground your dispatch in it.
|
|
35
|
+
- **Learn after work** — `POST /observe` — write the outcome/lesson back so the
|
|
36
|
+
next run starts smarter (the smidja auto-learns every run unless
|
|
37
|
+
`SMIDJA_LEARN=0`).
|
|
38
|
+
- **Always a boost, never a blocker** — if the bridge is down, run cold-start;
|
|
39
|
+
never block or fail because memory is unreachable.
|
|
40
|
+
|
|
41
|
+
## Dispatch surface — what models you can actually send sub-agents on
|
|
42
|
+
|
|
43
|
+
Verified in `~/.pi/agent/models.json` (the registry pi resolves):
|
|
44
|
+
|
|
45
|
+
- **local chain** — `lmstudio/qwen3.5-9b` · `lmstudio/qwen3.5-4b` ·
|
|
46
|
+
`lmstudio/gemma-4-12b-it@q4_k_m` · `lmstudio/qwen3.6-35b-a3b@q2_k_xl` ·
|
|
47
|
+
`@iq3_s` (all registered + loaded in LM Studio).
|
|
48
|
+
- **online chain** — `google/gemini-3-flash-preview` ·
|
|
49
|
+
`google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` ·
|
|
50
|
+
`openrouter/meta-llama/llama-3.3-70b-instruct` (API keys present).
|
|
51
|
+
- **hybrid chain** — any mix of the two above, per role.
|
|
52
|
+
- **opencode-go surface (via the local bridge):** `opencode-go/deepseek-v4-flash` ·
|
|
53
|
+
`deepseek-v4-pro` · `glm-5.1` · `deepseek-v4-flash-vision-exp` — pi reaches
|
|
54
|
+
them through `scripts/opencode-go-bridge.py` (tmux `ogb`, port 4603), which
|
|
55
|
+
injects `OPENCODE_GO_API_KEY` from `~/Ymir/.env` and proxies to
|
|
56
|
+
`https://opencode.ai/zen/go/v1`. Verified 2026-08-31: `pi --model
|
|
57
|
+
opencode-go/deepseek-v4-flash` works. So the online chain now = opencode-go
|
|
58
|
+
(bridge) ∪ google ∪ openrouter.
|
|
59
|
+
- Bare `opencode/*` free ids (`big-pickle`, `nemotron-3-ultra-free`) still run
|
|
60
|
+
only under the opencode agent (`ocrd` profile) — do not dispatch those.
|
|
61
|
+
|
|
62
|
+
Dispatch with `subagent_create(task=<full task>, thinking=low|medium|high|xhigh,
|
|
63
|
+
model=<optional>)`. Omit `model` to inherit your own model.
|