@zerwiz/ymir 0.1.34 → 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/package.json +15 -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,94 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# sync_upstream.sh — fetch, rebase, then land through the no-mistakes gate (git-ops).
|
|
3
|
+
#
|
|
4
|
+
# Pushing straight to origin skips the gate that reviews, tests, lints, documents
|
|
5
|
+
# and opens the PR. This script pushes to the `no-mistakes` remote instead, so the
|
|
6
|
+
# gate validates first and advances origin itself. When the gate is not installed
|
|
7
|
+
# it falls back to a direct push and SAYS SO — a silent fallback here would mean
|
|
8
|
+
# silently shipping unreviewed code.
|
|
9
|
+
#
|
|
10
|
+
# Usage:
|
|
11
|
+
# sync_upstream.sh [--check] [--direct] [--branch <name>]
|
|
12
|
+
# --check fetch + report what landing would do; change nothing
|
|
13
|
+
# --direct push straight to origin (bypasses the gate; reported)
|
|
14
|
+
#
|
|
15
|
+
# Exit: 0 landed, 1 blocked, 2 usage.
|
|
16
|
+
set -u
|
|
17
|
+
|
|
18
|
+
VERSION="1.0.0"
|
|
19
|
+
ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" || { printf 'error: not a git repository\n' >&2; exit 1; }
|
|
20
|
+
cd "$ROOT" || exit 1
|
|
21
|
+
|
|
22
|
+
# no args means "land this branch"; only an explicit flag asks for help
|
|
23
|
+
case "${1-}" in
|
|
24
|
+
-v|-V|--version) printf '%s\n' "$VERSION"; exit 0 ;;
|
|
25
|
+
-h|--help) sed -n '2,16p' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
|
|
26
|
+
esac
|
|
27
|
+
|
|
28
|
+
CHECK=0; DIRECT=0; BRANCH=""
|
|
29
|
+
while [ $# -gt 0 ]; do
|
|
30
|
+
case "$1" in
|
|
31
|
+
--check) CHECK=1; shift ;;
|
|
32
|
+
--direct) DIRECT=1; shift ;;
|
|
33
|
+
--branch) BRANCH=${2-}; shift 2 ;;
|
|
34
|
+
*) printf 'error: unknown flag %s\nhelp: sync_upstream.sh [--check|--direct|--branch <name>]\n' "$1" >&2; exit 2 ;;
|
|
35
|
+
esac
|
|
36
|
+
done
|
|
37
|
+
[ -n "$BRANCH" ] || BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
|
38
|
+
|
|
39
|
+
# a dirty tree cannot rebase safely, and rebasing over uncommitted work is how
|
|
40
|
+
# changes get lost
|
|
41
|
+
DIRTY=$(git status --porcelain | wc -l | tr -d ' ')
|
|
42
|
+
if [ "$DIRTY" != 0 ]; then
|
|
43
|
+
printf 'sync[1]{branch,state,detail}:\n "%s","blocked","%s uncommitted path(s) — commit them first (git-ops/safe_commit.sh)"\n' "$BRANCH" "$DIRTY"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
git fetch -q origin 2>/dev/null || { printf 'sync[1]{state,detail}:\n "blocked","could not fetch origin — check the network and gh auth"\n' >&2; exit 1; }
|
|
48
|
+
DEFAULT="$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null | sed 's|^origin/||')"
|
|
49
|
+
[ -n "$DEFAULT" ] || DEFAULT=main
|
|
50
|
+
BEHIND=$(git rev-list --count "HEAD..origin/$DEFAULT" 2>/dev/null || echo 0)
|
|
51
|
+
AHEAD=$(git rev-list --count "origin/$DEFAULT..HEAD" 2>/dev/null || echo 0)
|
|
52
|
+
|
|
53
|
+
printf 'sync[1]{branch,base,behind,ahead}:\n "%s","%s",%s,%s\n' "$BRANCH" "$DEFAULT" "$BEHIND" "$AHEAD"
|
|
54
|
+
|
|
55
|
+
if [ "$CHECK" = 1 ]; then
|
|
56
|
+
printf 'plan[1]{step,detail}:\n'
|
|
57
|
+
[ "$BEHIND" -gt 0 ] && printf ' "rebase","onto origin/%s (%s behind)"\n' "$DEFAULT" "$BEHIND" || printf ' "rebase","already current"\n'
|
|
58
|
+
if git remote | grep -qx "no-mistakes" && [ "$DIRECT" = 0 ]; then
|
|
59
|
+
printf ' "land","push to the no-mistakes gate, then axi sync"
|
|
60
|
+
'
|
|
61
|
+
else
|
|
62
|
+
printf ' "land","push directly to origin (gate not installed)"
|
|
63
|
+
'
|
|
64
|
+
fi
|
|
65
|
+
exit 0
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# ── rebase onto the base ─────────────────────────────────────────────────────
|
|
69
|
+
if [ "$BEHIND" -gt 0 ]; then
|
|
70
|
+
if ! git rebase -q "origin/$DEFAULT" 2>/dev/null; then
|
|
71
|
+
printf 'sync[1]{branch,state,detail}:\n "%s","blocked","rebase conflict — resolve it, then re-run (git rebase --continue)"\n' "$BRANCH"
|
|
72
|
+
exit 1
|
|
73
|
+
fi
|
|
74
|
+
printf 'rebase[1]{onto,new_head}:\n "origin/%s","%s"\n' "$DEFAULT" "$(git rev-parse --short HEAD)"
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ── land ─────────────────────────────────────────────────────────────────────
|
|
78
|
+
if git remote | grep -qx "no-mistakes" && [ "$DIRECT" = 0 ]; then
|
|
79
|
+
printf 'gate[1]{remote,detail}:\n "no-mistakes","validating before origin — this is the clean-PR gate"\n'
|
|
80
|
+
if ! git push -q no-mistakes "$BRANCH" 2>/dev/null; then
|
|
81
|
+
printf 'sync[1]{branch,state,detail}:\n "%s","blocked","the gate refused the push — run: no-mistakes axi status"\n' "$BRANCH"
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
if command -v no-mistakes >/dev/null 2>&1; then
|
|
85
|
+
printf 'axi[1]{action,detail}:\n "sync","moving %s to the verified head"\n' "$BRANCH"
|
|
86
|
+
no-mistakes axi sync 2>&1 | tail -8
|
|
87
|
+
fi
|
|
88
|
+
else
|
|
89
|
+
printf 'gate[1]{remote,detail}:\n "origin","NO GATE — pushing unreviewed (no-mistakes remote absent or --direct)"\n'
|
|
90
|
+
git push -q origin "$BRANCH" 2>/dev/null || {
|
|
91
|
+
printf 'sync[1]{branch,state,detail}:\n "%s","blocked","push to origin failed"\n' "$BRANCH"; exit 1; }
|
|
92
|
+
fi
|
|
93
|
+
printf 'landed[1]{branch,head}:\n "%s","%s"\n' "$BRANCH" "$(git rev-parse --short HEAD)"
|
|
94
|
+
exit 0
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: how-to-run-agent-teams
|
|
3
|
+
description: Run a FULL agent team with the smithy — Kaia (orchestrator) plus every role on the same model roster, chained through orchestrate. Use when the user wants to "send the team", "run everyone on <model>", "kaia should be that and everyone", or "make a workflow/chain to test a full team". Covers the nemotron-team mode (all agents + Kaia on Nemotron 3 Ultra Free via pi), the no-flash rule for Kaia, and project-anchoring with SMIDJA_PROJECT_DIR. Pairs with smidja-start / smidja-launcher (launch&watch) and smidja (internals).
|
|
4
|
+
argument-hint: "[launch a team | nemotron-team | run everyone on a model | ...]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# How to run agent teams (the smithy)
|
|
8
|
+
|
|
9
|
+
A **team run** = a roster (which agents) × a chain (what they execute). The
|
|
10
|
+
full-team play is **`orchestrate`**: Kaia is the `orchestrator` — she receives
|
|
11
|
+
the WHOLE task first, dispatches sub-agents (scout → planner → builder →
|
|
12
|
+
reviewer) via her `subagent_*` tools, tracks them, and reports every changed
|
|
13
|
+
file. Do not pass the engineer's prompt straight to one builder; going through
|
|
14
|
+
Kaia first is the point (she recalls project memory and plans the dispatch).
|
|
15
|
+
|
|
16
|
+
This skill is the playbook for "send the team". For single-line launches and
|
|
17
|
+
watching, load `smidja-launcher`; for picking teams/models `smidja-start`;
|
|
18
|
+
for writing a crisp ask `smidja-instructions`; for the pipeline internals
|
|
19
|
+
`smidja`. All smidja work is launched detached and observed — never implement
|
|
20
|
+
in the team's place.
|
|
21
|
+
|
|
22
|
+
## The one command
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cd /home/<user>/CodeP/<project> && \
|
|
26
|
+
SMIDJA_PROJECT_DIR=/home/<user>/CodeP/<project> \
|
|
27
|
+
$YMIR_ROOT/scripts/smidja run --mode nemotron-team <ask-path-or-string>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
That runs the full 6-agent team (orchestrator/Kaia, planner, builder, scout,
|
|
31
|
+
reviewer, documenter) — every one on **Nemotron 3 Ultra Free via pi**
|
|
32
|
+
(`openrouter/nvidia/nemotron-3-ultra-550b-a55b:free`, 1M ctx), chained through
|
|
33
|
+
`orchestrate`. Watch it with `smidja tail <smidja_id>` / `just ui`, audit with
|
|
34
|
+
`smidja audit <smidja_id>`.
|
|
35
|
+
|
|
36
|
+
## Rosters / modes relevant to a full team
|
|
37
|
+
|
|
38
|
+
| Roster / mode | Agents | Surface | Chain | Use |
|
|
39
|
+
|---|---|---|---|---|
|
|
40
|
+
| `nemotron` | all 6 on Nemotron | opencode/ocrd | simple-sdlc | test roster, ocrd CLI |
|
|
41
|
+
| `nemotron-pi` | all 6 on Nemotron | **pi** (`openrouter/…:free`) | simple-sdlc | same model via pi — thinking visible |
|
|
42
|
+
| `nemotron-team` | all 6 on Nemotron | **pi** | **orchestrate** | THE full-team mode — Kaia dispatches everyone |
|
|
43
|
+
| `cloud-reasoning` | cloud reasoning team | opencode | simple-sdlc | hard/long tasks |
|
|
44
|
+
| `orchestrate` | orchestrator+reviewer | cloud-fast | orchestrate | Kaia dispatches (default roster) |
|
|
45
|
+
|
|
46
|
+
`smidja modes` lists all 13 modes; `smidja rosters` resolves each stack and shows
|
|
47
|
+
the surface per agent (a `✓ pi` column means it runs through the pi harness).
|
|
48
|
+
|
|
49
|
+
## Golden rules (hard-won — breaking these caused real failures)
|
|
50
|
+
|
|
51
|
+
1. **Kaia runs on the SAME model as the team — never flash.** Admission,
|
|
52
|
+
`smidja kaia`, and recovery default to `KAIA_CONFIG=smidja.cloud-fast`
|
|
53
|
+
(**deepseek-v4-flash**). A nemotron run MUST override it, or the admission
|
|
54
|
+
one-shot silently talks to flash while everyone else is on nemotron:
|
|
55
|
+
`nemotron*` modes now set `KAIA_CONFIG=smidja.nemotron-pi` automatically, so
|
|
56
|
+
only a stray `smidja kaia`/`smidja admit` elsewhere can drift — check with
|
|
57
|
+
`smidja kaia --memory` and the run's `kaia_notes.md`. The admission session id
|
|
58
|
+
is recorded in `session/kaia_admit.log` / `kaia_handoff.json`; verify its
|
|
59
|
+
`agent_map.json` model is nemotron, not `-flash`.
|
|
60
|
+
|
|
61
|
+
2. **Anchor the run to the PROJECT repo with `SMIDJA_PROJECT_DIR`.** `smidja`
|
|
62
|
+
`cd`s to its own ROOT before launching, so cwd-based project detection
|
|
63
|
+
(git toplevel) fails — a wayoffactoy ask launched from anywhere lands in
|
|
64
|
+
`~/Ymir`'s data dir and agents work on the wrong repo. Always set
|
|
65
|
+
`SMIDJA_PROJECT_DIR=/home/<user>/CodeP/<project>` so sessions, the trace db,
|
|
66
|
+
and gates all live in the project (e.g. `…/wayoffactoy/smidja/smidja_data/`).
|
|
67
|
+
Confirm with the header of `session/*/raw_output.jsonl` — `"cwd"` must be
|
|
68
|
+
the project, and `kaia_handoff.json`'s `repo_root` must be the project.
|
|
69
|
+
|
|
70
|
+
3. **The project repo must have the smidja's support dirs.** Modules import
|
|
71
|
+
from the smidja ROOT, but prompts/extensions resolve from the project cwd:
|
|
72
|
+
`smidja/smidja_data/prompt_engineering/` and `smidja/smidja_data/harness_engineering/`
|
|
73
|
+
must exist in the project. If missing, symlink them from `~/Ymir`:
|
|
74
|
+
`ln -s $YMIR_ROOT/smidja/smidja_data/{prompt_engineering,harness_engineering} smidja/smidja_data/`.
|
|
75
|
+
|
|
76
|
+
4. **Thinking is only visible on the pi surface.** The opencode CLI
|
|
77
|
+
(`--format json`) does NOT stream reasoning/text parts into the NDJSON —
|
|
78
|
+
template streams show only step/tool events, so a phase reads "no thinking
|
|
79
|
+
text in the recorded stream". Nemotron via **pi** records
|
|
80
|
+
`content[].thinking` blocks (scan: `session/<agent>/pi_sessions/*.jsonl`).
|
|
81
|
+
For "see the team think", use `nemotron-pi` / `nemotron-team`, not `nemotron`.
|
|
82
|
+
|
|
83
|
+
5. **Free-tier caveats.** Nemotron 3 Ultra Free via ocrd can 404 mid-run
|
|
84
|
+
(a fallback-on-fallback has no retry → phase fails). OpenRouter's
|
|
85
|
+
`…:550b-a55b:free` through pi is steadier and shows thinking. If a free run
|
|
86
|
+
dies, audit, don't relaunch blindly — it's usually the provider, not the ask.
|
|
87
|
+
|
|
88
|
+
## How the team works (so you can report to the user)
|
|
89
|
+
|
|
90
|
+
- `smidja/smidja_orchestrate.py` — chain: `request` (engineer) → `orchestrate`
|
|
91
|
+
(Kaia owns the whole task, MUST use `subagent_*` — gate
|
|
92
|
+
`orchestrator_dispatched`) → `review_N` (reviewer) → maybe `revise_N`
|
|
93
|
+
(Kaia closes findings), bounded by `MAX_REVISION_LOOPS`.
|
|
94
|
+
- Every agent call streams events (tool_call, compact, thinking, model_error)
|
|
95
|
+
into the project's `smidja/smidja_data/smidja.db` (WAL — reads never block).
|
|
96
|
+
- `smidja stop <smidja_id>` kills a misbehaving team (children first);
|
|
97
|
+
`scripts/smidja-emergency-stop.sh` is the persistent kill-switch.
|
|
98
|
+
|
|
99
|
+
## Verify a team run landed correctly
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
smidja sessions | grep <smidja_id> # status
|
|
103
|
+
smidja phases <smidja_id> # per-phase status
|
|
104
|
+
smidja tail <smidja_id> # live event tail
|
|
105
|
+
python3 -c "import json;print([l for l in open('<proj>/smidja/smidja_data/sessions/<id>/agent_map.json')])" # models pinned
|
|
106
|
+
grep '"cwd"' <proj>/smidja/smidja_data/sessions/<id>/*/raw_output.jsonl # right repo?
|
|
107
|
+
cat <proj>/smidja/smidja_data/sessions/<id>/kaia_notes.md # Kaia admission notes
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Cross-references
|
|
111
|
+
|
|
112
|
+
- Launch/watch/audit: `smidja-launcher` (`scripts/smidja`, `justfile`)
|
|
113
|
+
- Picking teams/models + chain pick: `smidja-start` (`START_SMIDJA.md`)
|
|
114
|
+
- Writing the ask file: `smidja-instructions`
|
|
115
|
+
- Pipeline internals / smidja / configs: `smidja`
|
|
116
|
+
- Roster/model definitions: `smidja/smidja_smidja_config/{roster,models}.yaml`
|
|
117
|
+
- Nemotron fallback + surfaces: `START_SMIDJA.md` → "online models fallback"
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: smidja-instructions
|
|
3
|
+
description: "Turn a vague request into a great smidja instruction. Interview the user (ask questions), then write a request file the smithy can execute cleanly — with Where / Done means / Out of scope, and the right service/mode/chain. Use when the user asks to build/change/fix something and the ask is fuzzy, or when they want to 'send the smidja' / 'give it to the agents'. Write the ask, then hand it to smidja-start / smidja-launcher to launch."
|
|
4
|
+
version: "1.0"
|
|
5
|
+
allowed-tools: read, write, edit, bash, grep, glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Smíðja Instructions — ask first, then give the smidja something it can win
|
|
9
|
+
|
|
10
|
+
## Sibling skills — load one if the task matches
|
|
11
|
+
|
|
12
|
+
- **`smidja-start`** — how to actually launch the team you just picked
|
|
13
|
+
(rosters, local/online models, chains, orchestrator, detached-launch gotcha).
|
|
14
|
+
- **`smidja-launcher`** — the one-command launcher (`scripts/smidja`): run, watch,
|
|
15
|
+
audit, stop, learn, missions.
|
|
16
|
+
- **`smidja`** — smidja internals: cookbooks for install/create/update smidja and
|
|
17
|
+
roster config.
|
|
18
|
+
- **`smidja`** — conventions when the work lands in `~/Ymir`.
|
|
19
|
+
|
|
20
|
+
The smidja executes a request file (`requests/*.md`) through an smidja chain
|
|
21
|
+
(builder, reviewer, orchestrator). A fuzzy ask produces a fuzzy run: agents
|
|
22
|
+
guess, review rejects, and Kaia has to triage. This skill fixes the input end —
|
|
23
|
+
**you interview the user, then write the instruction the smidja can execute
|
|
24
|
+
without asking questions.**
|
|
25
|
+
|
|
26
|
+
> The instruction file is what a builder with zero memory of this conversation
|
|
27
|
+
> will follow. If you would not give it to a contractor you had never met, it is
|
|
28
|
+
> not ready.
|
|
29
|
+
|
|
30
|
+
## When to use
|
|
31
|
+
|
|
32
|
+
- The user says: "build X", "add Y", "fix Z", "make the smidja do…",
|
|
33
|
+
"give this to the agents", "send the smidja".
|
|
34
|
+
- The ask is a sentence or two — too thin for a builder.
|
|
35
|
+
- The user is unsure themselves and benefits from being walked through it.
|
|
36
|
+
|
|
37
|
+
## The workflow
|
|
38
|
+
|
|
39
|
+
### 1. Interview — ask the user questions
|
|
40
|
+
|
|
41
|
+
Do NOT start writing. Ask enough to fill these (most matter; skip only what the
|
|
42
|
+
user genuinely has no answer for):
|
|
43
|
+
|
|
44
|
+
| Question | Why it matters |
|
|
45
|
+
|---|---|
|
|
46
|
+
| **What exactly, in one sentence?** | The objective every agent and gate checks against. |
|
|
47
|
+
| **Where does it live?** | Repo + paths. The request must say *which repo* and the exact files/dirs. |
|
|
48
|
+
| **What does "done" look like?** | Verifiable: a build passes, a file exists with content X, a URL returns 200. Not vibes. |
|
|
49
|
+
| **What must NOT change?** | Out of scope: other files, other services, other repos, existing tunnels/configs. |
|
|
50
|
+
| **Any constraints?** | Stack, dependencies, no-new-deps, privacy, security, "don't touch prod". |
|
|
51
|
+
| **How much autonomy?** | Recon only (scout), small build (sdlc), full plan→build→review→docs (simple-sdlc), orchestrator with sub-agents, review-only. Also: how deep should Kaia's presence be — **T0** (none, tiny/throwaway runs), **T1** (admission notes, default for real work), **T2** (Kaia orchestrates the whole run). |
|
|
52
|
+
| **Which stack?** | Local (LM Studio/pi), cloud (opencode/ocrd), hybrid, free, or "you pick". This picks the service/roster. |
|
|
53
|
+
|
|
54
|
+
Ask them as a short back-and-forth, not a wall. Stop when the request would be
|
|
55
|
+
unambiguous to a stranger. One or two clarifying rounds is usually enough.
|
|
56
|
+
|
|
57
|
+
### 2. Pick the chain + service
|
|
58
|
+
|
|
59
|
+
Match the answer to the smidja surface (`smidja modes` / `smidja services`).
|
|
60
|
+
Standing reference for the stack: `docs/software-smidja-run.md`
|
|
61
|
+
(how to run) and `docs/SmidjaAgentsAndModels.md` (roster + model
|
|
62
|
+
backends — the source of truth for which agents/models exist).
|
|
63
|
+
|
|
64
|
+
**Key files (what they do):**
|
|
65
|
+
- `smidja/smidja_smidja_config/roster.yaml` — **the ONE smidja config file**: teams
|
|
66
|
+
(named stacks: which agents + which model each runs + tools/writes;
|
|
67
|
+
`--roster <name>` / `SMIDJA_ROSTER=<name>` pick one), agent roles
|
|
68
|
+
(`role_defaults:`), and the model catalog (`tiers:` — role × backend tier;
|
|
69
|
+
swap surface for `--model`, `SMIDJA_*_MODEL`, `SMIDJA_MODEL_TIER`).
|
|
70
|
+
- `justfile` — starter recipes from `~/Ymir`: `just scout/sdlc/simple-sdlc/orchestrate`
|
|
71
|
+
run chains; `just sessions/phases/tail` watch them. It resolves the same
|
|
72
|
+
`SMIDJA_CONFIG` / `SMIDJA_ROSTER` / `SMIDJA_MODEL_TIER` env vars.
|
|
73
|
+
|
|
74
|
+
| Work | Chain | Service hint |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| Read-only recon, "where is X" | `scout` | `local` or `cloud` |
|
|
77
|
+
| Small, well-understood change | `sdlc` | `local` (cheap) or `cloud` (reliable) |
|
|
78
|
+
| Big / fuzzy / needs plan first | `simple-sdlc` | `cloud` or `local-planner` |
|
|
79
|
+
| Review/audit an existing diff | `build-review` | `review` |
|
|
80
|
+
| Multi-agent coordination | `orchestrate` | `orchestrate` |
|
|
81
|
+
| Bench a model | `mission T1\|T2` | the roster under test |
|
|
82
|
+
|
|
83
|
+
When the user has no preference, default to **`local`** (LM Studio, no keys;
|
|
84
|
+
planner 35B / builder 9B / reviewer 12B) for cheap/air-gapped work and
|
|
85
|
+
**`cloud`** (deepseek-v4-flash via `ocrd`) when reliability beats cost. Check
|
|
86
|
+
`smidja modes` / `smidja services` for the exact presets — they are the current
|
|
87
|
+
source of truth. Note the choice in the request so the run is reproducible.
|
|
88
|
+
|
|
89
|
+
> **Before you launch: read the gotchas** in `smidja-start` (§7) and the
|
|
90
|
+
> evidence in `tests/local-models/RESULTS.md` — mostly: launch long runs
|
|
91
|
+
> detached (never through a short tool-call timeout), small local models may
|
|
92
|
+
> skip strict JSON reports, and reviewers must stay read-only.
|
|
93
|
+
|
|
94
|
+
### 3. Write the request file
|
|
95
|
+
|
|
96
|
+
Save to `requests/<slug>.md`. Structure:
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
# <Title> — what, in one line
|
|
100
|
+
|
|
101
|
+
<1–3 sentence objective. The builder's contract.>
|
|
102
|
+
|
|
103
|
+
## What to build
|
|
104
|
+
1. <concrete, ordered steps; each verifiable>
|
|
105
|
+
2. …
|
|
106
|
+
|
|
107
|
+
## Where
|
|
108
|
+
- Repo: <path>
|
|
109
|
+
- Files/dirs it may touch: <exact paths>
|
|
110
|
+
|
|
111
|
+
## Done means
|
|
112
|
+
- <a check that can pass or fail, e.g. `npm run build` exits 0>
|
|
113
|
+
- <a file exists with expected content>
|
|
114
|
+
|
|
115
|
+
## Out of scope
|
|
116
|
+
- <what must NOT change — other repos, services, tunnels, prod, secrets>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Rules that make smidja requests work (learned from real runs):
|
|
120
|
+
|
|
121
|
+
1. **Every step is verifiable** — "write `repo-map.py`", not "make a tool".
|
|
122
|
+
2. **Done means is mechanical** — exit codes, file existence, HTTP status.
|
|
123
|
+
3. **Out of scope is explicit** — the builder's `writes` are wide; only the
|
|
124
|
+
request constrains it.
|
|
125
|
+
4. **Name the repo absolutely** — the smidja runs from `~/Ymir`; a request
|
|
126
|
+
for `~/CodeP/courses` must say so.
|
|
127
|
+
5. **Never put secrets in the request** — keys live in `.env`.
|
|
128
|
+
6. **One objective** — a request that tries to do three things makes three
|
|
129
|
+
half-jobs. Split into separate requests if needed.
|
|
130
|
+
|
|
131
|
+
### 4. Launch it (or hand it over)
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
smidja run --service cloud "requests/<slug>.md" # or the chain/service chosen
|
|
135
|
+
smidja run --mode local-planner "requests/<slug>.md" --kaia T2 # + Kaia orchestrates
|
|
136
|
+
# or, for a whole-stack pick:
|
|
137
|
+
smidja run --service <name> "requests/<slug>.md"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Default Kaia tier is **T1** (admission notes injected into every agent call —
|
|
141
|
+
no run is blocked). Use `--kaia T0` for throwaway/recon runs, `--kaia T2` when
|
|
142
|
+
the request is big enough that Kaia should orchestrate.
|
|
143
|
+
|
|
144
|
+
If the user wanted *you* to drive, load the **`smidja-start`** skill for
|
|
145
|
+
how to launch (detached tmux for long runs), watch (`smidja sessions` /
|
|
146
|
+
`just sessions`), and report the `smidja_id` + first phase. If they want to launch
|
|
147
|
+
themselves, tell them the exact command.
|
|
148
|
+
|
|
149
|
+
## What good looks like
|
|
150
|
+
|
|
151
|
+
The `requests/` files that produced clean smidja runs:
|
|
152
|
+
|
|
153
|
+
- `courses-astro-site.md` — full site, absolute repo, done-means + out-of-scope.
|
|
154
|
+
- `linuxcommand-tunnel.md` — infra task, ordered steps with the exact commands,
|
|
155
|
+
"Done means: curl returns 200", "Out of scope: do NOT touch other tunnels".
|
|
156
|
+
|
|
157
|
+
Both were run start-to-finish by the smidja with no back-and-forth — that is
|
|
158
|
+
the bar. **If you would not hand the file to a contractor you never met, keep
|
|
159
|
+
asking.**
|
|
160
|
+
|
|
161
|
+
## Golden rules
|
|
162
|
+
|
|
163
|
+
1. **Ask before you write.** The interview is the product.
|
|
164
|
+
2. **The objective is one sentence.** Everything else hangs off it.
|
|
165
|
+
3. **Verifiable beats descriptive.** "exits 0" > "works correctly".
|
|
166
|
+
4. **Never assume the repo or paths** — ask or state them.
|
|
167
|
+
5. **Never commit secrets in a request** — they live in `~/Ymir/.env`.
|
|
168
|
+
6. **Note the service/chain** so the run is reproducible by anyone.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: smidja-launcher
|
|
3
|
+
description: Start and use the smithy from one command — converge the environment, run any chain or mode, watch, audit, stop, talk to Kaia, run bench missions. Use when the user wants to run the smidja, scout/sdlc/simple-sdlc/orchestrate work, audit a run, stop a misbehaving agent, check Kaia's memory, or bench local/cloud models. Pair with smidja-start (how to pick teams/models) and smidja-instructions (how to write the ask).
|
|
4
|
+
allowed-tools: read, write, edit, bash, grep, glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# smidja-launcher — the one command for the smidja
|
|
8
|
+
|
|
9
|
+
`scripts/smidja` is the single entry point for any agent (opencode, claude, pi,
|
|
10
|
+
herdr, human) to start, watch, audit, and mission the smithy (Smíðja). You never
|
|
11
|
+
do smidja work yourself — you launch and observe.
|
|
12
|
+
|
|
13
|
+
## Sibling skills — load one if the task matches
|
|
14
|
+
|
|
15
|
+
- **`smidja-start`** — exactly how to start agents for work: which team
|
|
16
|
+
(roster), local/online/hybrid models, chains, orchestrator, **gotchas**
|
|
17
|
+
(incl. detached-launch rule below).
|
|
18
|
+
- **`smidja-instructions`** — turn a fuzzy ask into a request file first.
|
|
19
|
+
- **`smidja`** — internals: cookbooks for install/create/update smidja + configs.
|
|
20
|
+
- **`smidja`** — conventions when working inside `~/Ymir`.
|
|
21
|
+
|
|
22
|
+
Deep-reference docs for the smidja live in **`docs/`**:
|
|
23
|
+
`software-smidja.md` (overview), `software-smidja-run.md` (how to run),
|
|
24
|
+
`software-smidja-pi.md` / `software-smidja-opencode.md` (coding-agent
|
|
25
|
+
setups), `software-smidja-visualizer.md` (the trace UI this launcher starts),
|
|
26
|
+
`SmidjaAgentsAndModels.md` (roster + model backends source of truth).
|
|
27
|
+
|
|
28
|
+
## The command
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
scripts/smidja up # converge env (LM Studio + visualizer + tunnel)
|
|
32
|
+
scripts/smidja run <chain> "<ask>" # prompt|scout|plan|plan-build|build-review|orchestrate|sdlc|simple-sdlc
|
|
33
|
+
scripts/smidja run --mode <name> "<ask>" # mode = roster + chain preset
|
|
34
|
+
scripts/smidja run --service <name> "<ask>" # one pick = provider × agent × chain
|
|
35
|
+
scripts/smidja services # list the 9 whole-stack presets
|
|
36
|
+
scripts/smidja sessions [N] # last N runs
|
|
37
|
+
scripts/smidja phases <smidja_id>
|
|
38
|
+
scripts/smidja tail <smidja_id>
|
|
39
|
+
scripts/smidja procs <smidja_id>
|
|
40
|
+
scripts/smidja stop <smidja_id> # kill children-first (misbehaving agents)
|
|
41
|
+
scripts/smidja pause <smidja_id> # hold a run (SIGSTOP agents) so you can steer
|
|
42
|
+
scripts/smidja resume <smidja_id> # continue a paused run
|
|
43
|
+
scripts/smidja steer <smidja_id> "msg" # inject engineer guidance into a running session
|
|
44
|
+
scripts/smidja admit <smidja_id> # refresh handoff + re-ask Kaia for admission notes
|
|
45
|
+
scripts/smidja recover <smidja_id> # watchdog ticket → Kaia's ONE recovery decision (prints apply cmd)
|
|
46
|
+
scripts/smidja watch # watchdog loop in tmux (auto-started by smidja up)
|
|
47
|
+
scripts/smidja emergency-stop # circuit breaker: kill-switch + kill-9 a runaway smidja
|
|
48
|
+
scripts/smidja audit <smidja_id> # gates + tool-call evidence per agent
|
|
49
|
+
scripts/smidja diagnose <smidja_id> # WHY it failed + the fix to apply (self-improving)
|
|
50
|
+
scripts/smidja learn <smidja_id> # write the audit+diagnosis into Kaia's memory
|
|
51
|
+
scripts/smidja kaia "<msg>" # talk to Kaia (traced, memory-backed)
|
|
52
|
+
scripts/smidja memory <project> # what Kaia has learned for a project
|
|
53
|
+
scripts/smidja mission <T1|T2> [--config <roster>] # bench a model, then audit+learn
|
|
54
|
+
scripts/smidja modes # list the 12 execution modes
|
|
55
|
+
scripts/smidja rosters # list + validate rosters/models
|
|
56
|
+
scripts/smidja team list|new|show|smoke # make a team (stacks: block in roster.yaml)
|
|
57
|
+
scripts/smidja model set|pin # change a model (stack override or shared tier)
|
|
58
|
+
scripts/smidja doctor [--stack <name>] # spawn-readiness check — must be green
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Run from the repo root (`~/Ymir/`). Everything is idempotent; reads never
|
|
62
|
+
block a running run (WAL db).
|
|
63
|
+
|
|
64
|
+
The files that define what this launcher runs:
|
|
65
|
+
|
|
66
|
+
- `smidja/smidja_smidja_config/roster.yaml` — the ONE file: teams (named stacks of
|
|
67
|
+
agents with their models/tools/writes; `--roster <name>` / `SMIDJA_ROSTER=<name>`
|
|
68
|
+
pick one), agent roles (`role_defaults:`), and the model catalog (`tiers:` —
|
|
69
|
+
every role × backend tier: local · local-agile · local-max · local-ui · cloud ·
|
|
70
|
+
cloud-free · cloud-reasoning · hybrid-plan-local · hybrid-build-local · review).
|
|
71
|
+
Swap surface: `--model`, `SMIDJA_<ROLE>_MODEL`, `SMIDJA_MODEL_TIER`.
|
|
72
|
+
- **Nemotron 3 Ultra Free is the always-available primary fallback** — `nemotron`
|
|
73
|
+
and `nemotron-pi` rosters/modes (plus `nemotron-team`: the full team on
|
|
74
|
+
Nemotron via **pi** with Kaia orchestrating), and an automatic one-retry
|
|
75
|
+
fallback whenever an agent's model fails to resolve or produces no output
|
|
76
|
+
(surface-aware: `SMIDJA_FALLBACK_MODEL_PI` / `SMIDJA_FALLBACK_MODEL_OPENCODE`).
|
|
77
|
+
Missions default to the `nemotron` roster (`SMIDJA_MISSION_CONFIG` to bench a
|
|
78
|
+
different team).
|
|
79
|
+
- `justfile` — the `just` recipes (same engine): `just scout/sdlc/simple-sdlc/`
|
|
80
|
+
`orchestrate` to launch chains, `just sessions/phases/tail` to watch; it
|
|
81
|
+
honors the same `SMIDJA_CONFIG` / `SMIDJA_ROSTER` / `SMIDJA_MODEL_TIER` order.
|
|
82
|
+
|
|
83
|
+
## Rules
|
|
84
|
+
|
|
85
|
+
1. **Converge first.** `smidja run` runs `smidja up` first — it reloads a
|
|
86
|
+
not-loaded LM Studio model with a tiny completion, so a run never starts on
|
|
87
|
+
a half-warm environment. If `up` refuses, fix the warnings, don't run anyway.
|
|
88
|
+
2. **Never do the work yourself.** Launch the chain and watch it. The smidja's
|
|
89
|
+
agents own the implementation; you own launching, observing, and reporting.
|
|
90
|
+
3. **Stop, don't wait.** An agent that misbehaves or a run that hangs is a
|
|
91
|
+
`smidja stop <smidja_id>` (or the UI Stop button). Children die first, the trace
|
|
92
|
+
finalizes as `fail`.
|
|
93
|
+
4. **Audit before believing.** `smidja audit` shows tool-call evidence per agent.
|
|
94
|
+
Zero tool calls on a claimed build = hallucinated completion. When a run
|
|
95
|
+
fails, `smidja diagnose <smidja_id>` tells you WHY and the exact fix to apply
|
|
96
|
+
(stronger model, prompt hardening, redundant commit, stopped run). Then
|
|
97
|
+
`smidja learn` writes that outcome + diagnosis into Kaia's engram memory so
|
|
98
|
+
she recalls it and picks better next time — the self-improving loop.
|
|
99
|
+
5. **Launch detached for anything that may outlive a tool-call timeout.** A
|
|
100
|
+
35B planner needs minutes per phase. Launching `smidja run` through a short
|
|
101
|
+
tool-call timeout SIGKILLs the subagents mid-generation (LM Studio:
|
|
102
|
+
"Client disconnected") and the run finalizes `fail` with **no** error events
|
|
103
|
+
— audit of `sdlc-4027` / `sdlc-4271` (2026-08-31). For long runs:
|
|
104
|
+
```bash
|
|
105
|
+
tmux new-session -d -s ssf \
|
|
106
|
+
"SMIDJA_PROJECT_DIR=<target-repo> $YMIR_ROOT/scripts/smidja run sdlc '<ask>'"
|
|
107
|
+
# then watch with read-only calls: smidja sessions / smidja tail <id>
|
|
108
|
+
```
|
|
109
|
+
6. **Cloud models are three.** deepseek-v4-flash (workhorse), big-pickle,
|
|
110
|
+
nemotron-3-ultra-free — under the `ocrd` opencode profile. Local models
|
|
111
|
+
(LM Studio, `lmstudio/*`) need no keys; local-model reliability evidence
|
|
112
|
+
lives in `tests/local-models/RESULTS.md` (JSON-discipline and read-only
|
|
113
|
+
reviewer gotchas).
|
|
114
|
+
7. **Runaway? Emergency-stop, not stop.** A recursive/admission loop or
|
|
115
|
+
dozens of procs is a `scripts/smidja emergency-stop` (writes a
|
|
116
|
+
`.smidja-emergency` kill-switch — blocks auto-admission — kills every
|
|
117
|
+
smidja pattern, marks in-flight runs `aborted`). Resume after fixing:
|
|
118
|
+
`scripts/smidja up` clears the kill-switch. Infra (LM Studio / ogb / viz) is
|
|
119
|
+
never touched.
|
|
120
|
+
|
|
121
|
+
## Modes (roster + chain presets)
|
|
122
|
+
|
|
123
|
+
`recon` · `local-fast` · `local-planner` · `local-max` · `cloud-free` ·
|
|
124
|
+
`cloud-fast` · `cloud-reasoning` · `hybrid-plan-local` · `hybrid-build-local` ·
|
|
125
|
+
`review-gate` · `orchestrate` (Kaia dispatches sub-agents).
|
|
126
|
+
|
|
127
|
+
Pick the mode that fits the work kind; `smidja run --mode <name> "<ask>"` sets
|
|
128
|
+
roster + chain for you. `--model <provider/model>` overrides the model for one
|
|
129
|
+
run; the `tiers:` catalog in `smidja/smidja_smidja_config/roster.yaml` is the standing
|
|
130
|
+
swap surface.
|
|
131
|
+
|
|
132
|
+
## Services (whole-stack presets)
|
|
133
|
+
|
|
134
|
+
`smidja run --service <name> "<ask>"` picks **everything at once** — the provider
|
|
135
|
+
every model runs on, the coding agent (pi | opencode), and the smidja chain:
|
|
136
|
+
|
|
137
|
+
`local` · `local-planner` · `cloud` · `cloud-free` · `cloud-reasoning` ·
|
|
138
|
+
`hybrid-plan-local` · `hybrid-build-local` · `review` · `orchestrate`.
|
|
139
|
+
|
|
140
|
+
Any part can be overridden with `--config` / `--chain` / `--model` /
|
|
141
|
+
`--profile`. `smidja services` lists all nine with their roster/chain/model.
|
|
142
|
+
|
|
143
|
+
## Observing
|
|
144
|
+
|
|
145
|
+
- `smidja sessions` → recent runs. `smidja phases <id>` → phase statuses.
|
|
146
|
+
- Visualizer: `smidja ui` (tmux) → `http://localhost:4601` (sessions + `#/memory`
|
|
147
|
+
for Kaia's engram UI), API on `:4600`.
|
|
148
|
+
|
|
149
|
+
## Learn / memory
|
|
150
|
+
|
|
151
|
+
- `smidja learn <smidja_id>` — the launcher writes objective audit fields
|
|
152
|
+
(outcome, gates, tool calls) into `smidja/smidja_data/kaia.engram`.
|
|
153
|
+
- `smidja memory <project>` — hybrid-recall what worked for that project.
|
|
154
|
+
- Kaia reads this before dispatching, so she biases toward what passed there
|
|
155
|
+
before instead of starting cold.
|