@zerwiz/ymir 0.1.33 → 0.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (930) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/apps/README.md +4 -0
  3. package/apps/hlidskjalf/README.md +68 -0
  4. package/apps/hlidskjalf/android/app/build.gradle +73 -0
  5. package/apps/hlidskjalf/android/app/capacitor.build.gradle +19 -0
  6. package/apps/hlidskjalf/android/app/proguard-rules.pro +21 -0
  7. package/apps/hlidskjalf/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  8. package/apps/hlidskjalf/android/app/src/main/AndroidManifest.xml +41 -0
  9. package/apps/hlidskjalf/android/app/src/main/java/org/zerwiz/ymir/MainActivity.java +5 -0
  10. package/apps/hlidskjalf/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  11. package/apps/hlidskjalf/android/app/src/main/res/drawable/splash.png +0 -0
  12. package/apps/hlidskjalf/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  13. package/apps/hlidskjalf/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  14. package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  15. package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  16. package/apps/hlidskjalf/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  17. package/apps/hlidskjalf/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  18. package/apps/hlidskjalf/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  19. package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  20. package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  21. package/apps/hlidskjalf/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  22. package/apps/hlidskjalf/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  23. package/apps/hlidskjalf/android/app/src/main/res/layout/activity_main.xml +12 -0
  24. package/apps/hlidskjalf/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  25. package/apps/hlidskjalf/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  26. package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  27. package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  28. package/apps/hlidskjalf/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  29. package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  30. package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  31. package/apps/hlidskjalf/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  32. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  33. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  34. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  35. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  36. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  37. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  38. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  39. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  40. package/apps/hlidskjalf/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  41. package/apps/hlidskjalf/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  42. package/apps/hlidskjalf/android/app/src/main/res/values/strings.xml +7 -0
  43. package/apps/hlidskjalf/android/app/src/main/res/values/styles.xml +22 -0
  44. package/apps/hlidskjalf/android/app/src/main/res/xml/file_paths.xml +5 -0
  45. package/apps/hlidskjalf/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  46. package/apps/hlidskjalf/android/build.gradle +29 -0
  47. package/apps/hlidskjalf/android/capacitor.settings.gradle +3 -0
  48. package/apps/hlidskjalf/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  49. package/apps/hlidskjalf/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  50. package/apps/hlidskjalf/android/gradle.properties +22 -0
  51. package/apps/hlidskjalf/android/gradlew +248 -0
  52. package/apps/hlidskjalf/android/gradlew.bat +92 -0
  53. package/apps/hlidskjalf/android/settings.gradle +5 -0
  54. package/apps/hlidskjalf/android/variables.gradle +16 -0
  55. package/apps/hlidskjalf/capacitor.config.ts +26 -0
  56. package/apps/hlidskjalf/dist/apple-touch-icon.png +0 -0
  57. package/apps/hlidskjalf/dist/assets/index-BWmNIyaG.css +1 -0
  58. package/apps/hlidskjalf/dist/assets/index-k7QEfNto.js +88 -0
  59. package/apps/hlidskjalf/dist/assets/index-k7QEfNto.js.map +1 -0
  60. package/apps/hlidskjalf/dist/icon.svg +7 -0
  61. package/apps/hlidskjalf/dist/index.html +64 -0
  62. package/apps/hlidskjalf/dist/manifest.webmanifest +31 -0
  63. package/apps/hlidskjalf/dist/og.jpg +0 -0
  64. package/apps/hlidskjalf/dist/og.png +0 -0
  65. package/apps/hlidskjalf/dist/og.svg +64 -0
  66. package/apps/hlidskjalf/dist/sw.js +39 -0
  67. package/apps/hlidskjalf/dist/ymir-icon.png +0 -0
  68. package/apps/hlidskjalf/dist/ymir-mark.svg +62 -0
  69. package/apps/hlidskjalf/electron/icon.png +0 -0
  70. package/apps/hlidskjalf/electron/main.cjs +236 -0
  71. package/apps/hlidskjalf/electron/preload.cjs +8 -0
  72. package/apps/hlidskjalf/electron/smidja-icon.png +0 -0
  73. package/apps/hlidskjalf/electron/ymir-hlidskjalf.desktop.in +12 -0
  74. package/apps/hlidskjalf/electron/ymir-smidja.desktop.in +12 -0
  75. package/apps/hlidskjalf/index.html +63 -0
  76. package/apps/hlidskjalf/package-lock.json +5398 -0
  77. package/apps/hlidskjalf/package.json +55 -0
  78. package/apps/hlidskjalf/public/apple-touch-icon.png +0 -0
  79. package/apps/hlidskjalf/public/icon.svg +7 -0
  80. package/apps/hlidskjalf/public/manifest.webmanifest +31 -0
  81. package/apps/hlidskjalf/public/og.jpg +0 -0
  82. package/apps/hlidskjalf/public/og.png +0 -0
  83. package/apps/hlidskjalf/public/og.svg +64 -0
  84. package/apps/hlidskjalf/public/sw.js +39 -0
  85. package/apps/hlidskjalf/public/ymir-icon.png +0 -0
  86. package/apps/hlidskjalf/public/ymir-mark.svg +62 -0
  87. package/apps/hlidskjalf/server/accounts.ts +159 -0
  88. package/apps/hlidskjalf/server/index.ts +2045 -0
  89. package/apps/hlidskjalf/src/app/App.tsx +116 -0
  90. package/apps/hlidskjalf/src/app/BottomStream.tsx +128 -0
  91. package/apps/hlidskjalf/src/app/MobileNav.tsx +87 -0
  92. package/apps/hlidskjalf/src/app/Rail.tsx +106 -0
  93. package/apps/hlidskjalf/src/app/Shell.tsx +135 -0
  94. package/apps/hlidskjalf/src/app/Topbar.tsx +130 -0
  95. package/apps/hlidskjalf/src/components/AccentPicker.tsx +207 -0
  96. package/apps/hlidskjalf/src/components/AccountMenu.tsx +115 -0
  97. package/apps/hlidskjalf/src/components/AgentCard.tsx +75 -0
  98. package/apps/hlidskjalf/src/components/EmberBackground.tsx +36 -0
  99. package/apps/hlidskjalf/src/components/Emblem.tsx +48 -0
  100. package/apps/hlidskjalf/src/components/Halls.tsx +155 -0
  101. package/apps/hlidskjalf/src/components/LoginModal.tsx +329 -0
  102. package/apps/hlidskjalf/src/components/Markdown.tsx +10 -0
  103. package/apps/hlidskjalf/src/components/MetricTile.tsx +40 -0
  104. package/apps/hlidskjalf/src/components/ModelPicker.tsx +100 -0
  105. package/apps/hlidskjalf/src/components/Overlay.tsx +134 -0
  106. package/apps/hlidskjalf/src/components/PRCard.tsx +154 -0
  107. package/apps/hlidskjalf/src/components/RecallPanel.tsx +116 -0
  108. package/apps/hlidskjalf/src/components/RuneTag.tsx +23 -0
  109. package/apps/hlidskjalf/src/components/Status.tsx +35 -0
  110. package/apps/hlidskjalf/src/components/TaskChip.tsx +23 -0
  111. package/apps/hlidskjalf/src/components/TraceRow.tsx +28 -0
  112. package/apps/hlidskjalf/src/data/lore.ts +127 -0
  113. package/apps/hlidskjalf/src/data/metadata.ts +147 -0
  114. package/apps/hlidskjalf/src/data/mythology.ts +95 -0
  115. package/apps/hlidskjalf/src/data/realms.ts +167 -0
  116. package/apps/hlidskjalf/src/gates/Cron.tsx +77 -0
  117. package/apps/hlidskjalf/src/gates/Decisions.tsx +67 -0
  118. package/apps/hlidskjalf/src/gates/Files.tsx +138 -0
  119. package/apps/hlidskjalf/src/gates/Fleet.tsx +184 -0
  120. package/apps/hlidskjalf/src/gates/Forge.tsx +486 -0
  121. package/apps/hlidskjalf/src/gates/OmniChat.tsx +217 -0
  122. package/apps/hlidskjalf/src/gates/Processes.tsx +162 -0
  123. package/apps/hlidskjalf/src/gates/Profile.tsx +225 -0
  124. package/apps/hlidskjalf/src/gates/Reviews.tsx +33 -0
  125. package/apps/hlidskjalf/src/gates/Runes.tsx +116 -0
  126. package/apps/hlidskjalf/src/gates/Runtime.tsx +106 -0
  127. package/apps/hlidskjalf/src/gates/Sessions.tsx +109 -0
  128. package/apps/hlidskjalf/src/gates/Stats.tsx +268 -0
  129. package/apps/hlidskjalf/src/gates/Tasks.tsx +173 -0
  130. package/apps/hlidskjalf/src/gates/Trace.tsx +155 -0
  131. package/apps/hlidskjalf/src/gates/Well.tsx +154 -0
  132. package/apps/hlidskjalf/src/gates/Worktrees.tsx +48 -0
  133. package/apps/hlidskjalf/src/hooks/useTenantDef.ts +13 -0
  134. package/apps/hlidskjalf/src/main.tsx +31 -0
  135. package/apps/hlidskjalf/src/services/api.ts +404 -0
  136. package/apps/hlidskjalf/src/services/auth.ts +107 -0
  137. package/apps/hlidskjalf/src/services/stream.ts +35 -0
  138. package/apps/hlidskjalf/src/state/store.ts +648 -0
  139. package/apps/hlidskjalf/src/state/ui.ts +62 -0
  140. package/apps/hlidskjalf/src/styles/auth.css +485 -0
  141. package/apps/hlidskjalf/src/styles/components.css +1259 -0
  142. package/apps/hlidskjalf/src/styles/forge.css +115 -0
  143. package/apps/hlidskjalf/src/styles/global.css +167 -0
  144. package/apps/hlidskjalf/src/styles/menus.css +175 -0
  145. package/apps/hlidskjalf/src/styles/mobile.css +298 -0
  146. package/apps/hlidskjalf/src/styles/overlays.css +205 -0
  147. package/apps/hlidskjalf/src/styles/shell.css +641 -0
  148. package/apps/hlidskjalf/src/types.ts +251 -0
  149. package/apps/hlidskjalf/src/vite-env.d.ts +9 -0
  150. package/apps/hlidskjalf/static/landing.md +6 -0
  151. package/apps/hlidskjalf/tsconfig.json +25 -0
  152. package/apps/hlidskjalf/vite.config.ts +49 -0
  153. package/apps/hlidskjalf-mobile/App.tsx +93 -0
  154. package/apps/hlidskjalf-mobile/app.json +13 -0
  155. package/apps/hlidskjalf-mobile/index.ts +4 -0
  156. package/apps/hlidskjalf-mobile/package.json +35 -0
  157. package/apps/hlidskjalf-mobile/public/icon.svg +7 -0
  158. package/apps/hlidskjalf-mobile/tsconfig.json +4 -0
  159. package/apps/odrerir/.astro/content.d.ts +159 -0
  160. package/apps/odrerir/.astro/dev.json +24 -0
  161. package/apps/odrerir/.astro/settings.json +5 -0
  162. package/apps/odrerir/.astro/types.d.ts +2 -0
  163. package/apps/odrerir/astro.config.mjs +79 -0
  164. package/apps/odrerir/dist/apple-touch-icon.png +0 -0
  165. package/apps/odrerir/dist/favicon-192.png +0 -0
  166. package/apps/odrerir/dist/favicon-32.png +0 -0
  167. package/apps/odrerir/dist/favicon-512.png +0 -0
  168. package/apps/odrerir/dist/favicon.svg +53 -0
  169. package/apps/odrerir/dist/icon.svg +7 -0
  170. package/apps/odrerir/dist/index.html +837 -0
  171. package/apps/odrerir/dist/og-square.png +0 -0
  172. package/apps/odrerir/dist/og-story.png +0 -0
  173. package/apps/odrerir/dist/og.png +0 -0
  174. package/apps/odrerir/dist/safari-pinned-tab.svg +7 -0
  175. package/apps/odrerir/dist/site.webmanifest +16 -0
  176. package/apps/odrerir/dist/styles/cloth.css +112 -0
  177. package/apps/odrerir/dist/styles/livehall.css +278 -0
  178. package/apps/odrerir/electron/icon.png +0 -0
  179. package/apps/odrerir/electron/main.cjs +183 -0
  180. package/apps/odrerir/electron/ymir-odrerir.desktop.in +12 -0
  181. package/apps/odrerir/package-lock.json +4195 -0
  182. package/apps/odrerir/package.json +30 -0
  183. package/apps/odrerir/public/apple-touch-icon.png +0 -0
  184. package/apps/odrerir/public/favicon-192.png +0 -0
  185. package/apps/odrerir/public/favicon-32.png +0 -0
  186. package/apps/odrerir/public/favicon-512.png +0 -0
  187. package/apps/odrerir/public/favicon.svg +53 -0
  188. package/apps/odrerir/public/icon.svg +7 -0
  189. package/apps/odrerir/public/og-square.png +0 -0
  190. package/apps/odrerir/public/og-story.png +0 -0
  191. package/apps/odrerir/public/og.png +0 -0
  192. package/apps/odrerir/public/safari-pinned-tab.svg +7 -0
  193. package/apps/odrerir/public/site.webmanifest +16 -0
  194. package/apps/odrerir/scripts/extract-cloth.mjs +101 -0
  195. package/apps/odrerir/src/index.html +837 -0
  196. package/apps/odrerir/src/styles/cloth.css +112 -0
  197. package/apps/odrerir/src/styles/livehall.css +278 -0
  198. package/apps/sessrumnir/.github/ISSUE_TEMPLATE/bug_report.yml +99 -0
  199. package/apps/sessrumnir/.github/ISSUE_TEMPLATE/config.yml +8 -0
  200. package/apps/sessrumnir/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
  201. package/apps/sessrumnir/.github/PULL_REQUEST_TEMPLATE.md +56 -0
  202. package/apps/sessrumnir/.github/SUPPORT.md +18 -0
  203. package/apps/sessrumnir/.github/workflows/build.yml +133 -0
  204. package/apps/sessrumnir/AGENTS.md +540 -0
  205. package/apps/sessrumnir/CLA.md +63 -0
  206. package/apps/sessrumnir/CONTRIBUTING.md +233 -0
  207. package/apps/sessrumnir/LICENSE +200 -0
  208. package/apps/sessrumnir/NOTICE +33 -0
  209. package/apps/sessrumnir/README.md +329 -0
  210. package/apps/sessrumnir/bin/sessrumnir-web.sh +117 -0
  211. package/apps/sessrumnir/bin/sessrumnir.js +169 -0
  212. package/apps/sessrumnir/docs/CNAME +1 -0
  213. package/apps/sessrumnir/docs/favicon.ico +0 -0
  214. package/apps/sessrumnir/docs/icon-512.png +0 -0
  215. package/apps/sessrumnir/docs/index.html +441 -0
  216. package/apps/sessrumnir/docs/robots.txt +4 -0
  217. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_181929.png +0 -0
  218. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182005.png +0 -0
  219. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182020.png +0 -0
  220. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182039.png +0 -0
  221. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182117.png +0 -0
  222. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182225.png +0 -0
  223. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182248.png +0 -0
  224. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182322.png +0 -0
  225. package/apps/sessrumnir/docs/screenshots/Screenshot_20260824_182340.png +0 -0
  226. package/apps/sessrumnir/docs/sitemap.xml +9 -0
  227. package/apps/sessrumnir/electron.vite.config.ts +49 -0
  228. package/apps/sessrumnir/eslint.config.mjs +75 -0
  229. package/apps/sessrumnir/i18next.config.ts +33 -0
  230. package/apps/sessrumnir/install.sh +144 -0
  231. package/apps/sessrumnir/out/main/index.js +10881 -0
  232. package/apps/sessrumnir/out/preload/index.js +722 -0
  233. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
  234. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
  235. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
  236. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
  237. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-600-normal-BcIsDXzC.woff2 +0 -0
  238. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-600-normal-CBymlcNF.woff +0 -0
  239. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
  240. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
  241. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
  242. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
  243. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-600-normal-Dr-wLyOm.woff +0 -0
  244. package/apps/sessrumnir/out/renderer/assets/cormorant-cyrillic-ext-600-normal-dLR2-a_v.woff2 +0 -0
  245. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
  246. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
  247. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
  248. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
  249. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-600-normal-B254Xisw.woff2 +0 -0
  250. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-600-normal-DUW-TI76.woff +0 -0
  251. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
  252. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
  253. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
  254. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
  255. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-600-normal-CD-dlDpD.woff +0 -0
  256. package/apps/sessrumnir/out/renderer/assets/cormorant-latin-ext-600-normal-D3T6BBXG.woff2 +0 -0
  257. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
  258. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
  259. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
  260. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
  261. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-600-normal-Dar_cCT6.woff2 +0 -0
  262. package/apps/sessrumnir/out/renderer/assets/cormorant-vietnamese-600-normal-GIs8CF2x.woff +0 -0
  263. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-300-normal-Ba-HN6uq.woff +0 -0
  264. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-300-normal-ByB2hQUF.woff2 +0 -0
  265. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  266. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  267. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  268. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  269. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-300-normal-B8O3uHbr.woff +0 -0
  270. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-300-normal-BbtBtHoB.woff2 +0 -0
  271. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  272. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  273. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  274. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  275. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-300-normal-BPU54Tw3.woff +0 -0
  276. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-300-normal-BRS-C4KA.woff2 +0 -0
  277. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  278. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  279. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  280. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  281. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-300-normal-BEtQ2wm2.woff2 +0 -0
  282. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-300-normal-CQbCaAQ4.woff +0 -0
  283. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  284. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  285. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  286. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  287. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-300-normal-B6fSpYYV.woff +0 -0
  288. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-300-normal-CpdbWO_2.woff2 +0 -0
  289. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  290. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  291. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  292. package/apps/sessrumnir/out/renderer/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  293. package/apps/sessrumnir/out/renderer/assets/index-BxqsRq2x.css +4858 -0
  294. package/apps/sessrumnir/out/renderer/assets/index-TaD69rFk.js +99435 -0
  295. package/apps/sessrumnir/out/renderer/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  296. package/apps/sessrumnir/out/renderer/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  297. package/apps/sessrumnir/out/renderer/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  298. package/apps/sessrumnir/out/renderer/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  299. package/apps/sessrumnir/out/renderer/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  300. package/apps/sessrumnir/out/renderer/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  301. package/apps/sessrumnir/out/renderer/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  302. package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  303. package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  304. package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  305. package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  306. package/apps/sessrumnir/out/renderer/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  307. package/apps/sessrumnir/out/renderer/assets/newsreader-latin-ext-wght-italic-DFS986qL.woff2 +0 -0
  308. package/apps/sessrumnir/out/renderer/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  309. package/apps/sessrumnir/out/renderer/assets/newsreader-latin-wght-italic-Bxi8ein9.woff2 +0 -0
  310. package/apps/sessrumnir/out/renderer/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  311. package/apps/sessrumnir/out/renderer/assets/newsreader-vietnamese-wght-italic-xAqemagA.woff2 +0 -0
  312. package/apps/sessrumnir/out/renderer/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  313. package/apps/sessrumnir/out/renderer/assets/openmoji-color-9qo_2DLG.woff2 +0 -0
  314. package/apps/sessrumnir/out/renderer/assets/pi-logo-B6SVnhuS.svg +7 -0
  315. package/apps/sessrumnir/out/renderer/index.html +19 -0
  316. package/apps/sessrumnir/out/renderer/theme-boot.js +30 -0
  317. package/apps/sessrumnir/package-lock.json +10636 -0
  318. package/apps/sessrumnir/package.json +183 -0
  319. package/apps/sessrumnir/public/apple-touch-icon.png +0 -0
  320. package/apps/sessrumnir/public/icon.svg +7 -0
  321. package/apps/sessrumnir/resources/icons/generate_icons.py +38 -0
  322. package/apps/sessrumnir/resources/icons/icon-128.png +0 -0
  323. package/apps/sessrumnir/resources/icons/icon-16.png +0 -0
  324. package/apps/sessrumnir/resources/icons/icon-256.png +0 -0
  325. package/apps/sessrumnir/resources/icons/icon-32.png +0 -0
  326. package/apps/sessrumnir/resources/icons/icon-48.png +0 -0
  327. package/apps/sessrumnir/resources/icons/icon-512.png +0 -0
  328. package/apps/sessrumnir/resources/icons/icon-64.png +0 -0
  329. package/apps/sessrumnir/resources/icons/icon.icns +0 -0
  330. package/apps/sessrumnir/resources/icons/icon.ico +0 -0
  331. package/apps/sessrumnir/resources/icons/icon.png +0 -0
  332. package/apps/sessrumnir/resources/icons/icon.svg +7 -0
  333. package/apps/sessrumnir/resources/linux/after-install.sh +23 -0
  334. package/apps/sessrumnir/resources/linux/after-remove.sh +18 -0
  335. package/apps/sessrumnir/resources/locales/en/translation.json +1735 -0
  336. package/apps/sessrumnir/resources/permission-prompt-text.test.ts +111 -0
  337. package/apps/sessrumnir/resources/permission-prompt-text.ts +84 -0
  338. package/apps/sessrumnir/resources/permission-rules.test.ts +351 -0
  339. package/apps/sessrumnir/resources/permission-rules.ts +293 -0
  340. package/apps/sessrumnir/resources/pi-desktop-permissions.ts +62 -0
  341. package/apps/sessrumnir/resources/ymir-sessrumnir.desktop.in +12 -0
  342. package/apps/sessrumnir/scripts/check-semantic-colors.mjs +57 -0
  343. package/apps/sessrumnir/src/main/activity-stats.test.ts +240 -0
  344. package/apps/sessrumnir/src/main/activity-stats.ts +596 -0
  345. package/apps/sessrumnir/src/main/agent-detection.test.ts +25 -0
  346. package/apps/sessrumnir/src/main/agent-detection.ts +114 -0
  347. package/apps/sessrumnir/src/main/app-data-paths.test.ts +90 -0
  348. package/apps/sessrumnir/src/main/app-data-paths.ts +95 -0
  349. package/apps/sessrumnir/src/main/app-log.test.ts +114 -0
  350. package/apps/sessrumnir/src/main/app-log.ts +210 -0
  351. package/apps/sessrumnir/src/main/archived-sessions.test.ts +50 -0
  352. package/apps/sessrumnir/src/main/archived-sessions.ts +95 -0
  353. package/apps/sessrumnir/src/main/attachment-reader.test.ts +56 -0
  354. package/apps/sessrumnir/src/main/attachment-reader.ts +52 -0
  355. package/apps/sessrumnir/src/main/auto-tag.test.ts +38 -0
  356. package/apps/sessrumnir/src/main/auto-tag.ts +75 -0
  357. package/apps/sessrumnir/src/main/autostart-linux.test.ts +56 -0
  358. package/apps/sessrumnir/src/main/autostart-linux.ts +58 -0
  359. package/apps/sessrumnir/src/main/cmd-escape.test.ts +424 -0
  360. package/apps/sessrumnir/src/main/cmd-escape.ts +186 -0
  361. package/apps/sessrumnir/src/main/council-manager.test.ts +167 -0
  362. package/apps/sessrumnir/src/main/council-manager.ts +265 -0
  363. package/apps/sessrumnir/src/main/diagnostics-report.test.ts +140 -0
  364. package/apps/sessrumnir/src/main/diagnostics-report.ts +91 -0
  365. package/apps/sessrumnir/src/main/diagnostics.ts +111 -0
  366. package/apps/sessrumnir/src/main/editor-guard.test.ts +59 -0
  367. package/apps/sessrumnir/src/main/editor-guard.ts +50 -0
  368. package/apps/sessrumnir/src/main/extension-ui-ipc.test.ts +299 -0
  369. package/apps/sessrumnir/src/main/extension-ui-ipc.ts +117 -0
  370. package/apps/sessrumnir/src/main/file-service.test.ts +279 -0
  371. package/apps/sessrumnir/src/main/file-service.ts +652 -0
  372. package/apps/sessrumnir/src/main/fs-errors.ts +42 -0
  373. package/apps/sessrumnir/src/main/get-messages-trim.test.ts +77 -0
  374. package/apps/sessrumnir/src/main/get-messages-trim.ts +97 -0
  375. package/apps/sessrumnir/src/main/git-conveyor.test.ts +305 -0
  376. package/apps/sessrumnir/src/main/git-conveyor.ts +338 -0
  377. package/apps/sessrumnir/src/main/git-worktree.test.ts +101 -0
  378. package/apps/sessrumnir/src/main/git-worktree.ts +201 -0
  379. package/apps/sessrumnir/src/main/i18n.ts +31 -0
  380. package/apps/sessrumnir/src/main/index.ts +619 -0
  381. package/apps/sessrumnir/src/main/ipc/active-engine.ts +15 -0
  382. package/apps/sessrumnir/src/main/ipc/context.ts +58 -0
  383. package/apps/sessrumnir/src/main/ipc/council-handlers.ts +126 -0
  384. package/apps/sessrumnir/src/main/ipc/diagnostics-handlers.ts +8 -0
  385. package/apps/sessrumnir/src/main/ipc/file-handlers.ts +96 -0
  386. package/apps/sessrumnir/src/main/ipc/git-conveyor-handlers.ts +55 -0
  387. package/apps/sessrumnir/src/main/ipc/model-handlers.ts +33 -0
  388. package/apps/sessrumnir/src/main/ipc/models-config-handlers.ts +80 -0
  389. package/apps/sessrumnir/src/main/ipc/notes-handlers.ts +65 -0
  390. package/apps/sessrumnir/src/main/ipc/package-handlers.ts +330 -0
  391. package/apps/sessrumnir/src/main/ipc/permission-rules-handlers.ts +223 -0
  392. package/apps/sessrumnir/src/main/ipc/pi-handlers.ts +136 -0
  393. package/apps/sessrumnir/src/main/ipc/pi-start-options.ts +150 -0
  394. package/apps/sessrumnir/src/main/ipc/run-pi-cli.ts +53 -0
  395. package/apps/sessrumnir/src/main/ipc/session-handlers.ts +491 -0
  396. package/apps/sessrumnir/src/main/ipc/settings.ts +120 -0
  397. package/apps/sessrumnir/src/main/ipc/skills-mcp-handlers.ts +192 -0
  398. package/apps/sessrumnir/src/main/ipc/system-handlers.ts +131 -0
  399. package/apps/sessrumnir/src/main/ipc/tag-handlers.ts +69 -0
  400. package/apps/sessrumnir/src/main/ipc/terminal-handlers.ts +41 -0
  401. package/apps/sessrumnir/src/main/ipc/theme-handlers.ts +131 -0
  402. package/apps/sessrumnir/src/main/ipc/update-handlers.ts +61 -0
  403. package/apps/sessrumnir/src/main/ipc/validation.ts +45 -0
  404. package/apps/sessrumnir/src/main/ipc/workflow-handlers.ts +108 -0
  405. package/apps/sessrumnir/src/main/ipc/workspace-activity-wiring.ts +179 -0
  406. package/apps/sessrumnir/src/main/ipc/workspace-handlers.ts +133 -0
  407. package/apps/sessrumnir/src/main/ipc-handlers.ts +98 -0
  408. package/apps/sessrumnir/src/main/map-concurrent.test.ts +80 -0
  409. package/apps/sessrumnir/src/main/map-concurrent.ts +30 -0
  410. package/apps/sessrumnir/src/main/models-file.test.ts +114 -0
  411. package/apps/sessrumnir/src/main/models-file.ts +89 -0
  412. package/apps/sessrumnir/src/main/notes-manager.test.ts +64 -0
  413. package/apps/sessrumnir/src/main/notes-manager.ts +183 -0
  414. package/apps/sessrumnir/src/main/notify-decision.test.ts +39 -0
  415. package/apps/sessrumnir/src/main/notify-decision.ts +25 -0
  416. package/apps/sessrumnir/src/main/omp-fork-points.test.ts +119 -0
  417. package/apps/sessrumnir/src/main/omp-fork-points.ts +105 -0
  418. package/apps/sessrumnir/src/main/omp-plugin-list.test.ts +94 -0
  419. package/apps/sessrumnir/src/main/omp-plugin-list.ts +103 -0
  420. package/apps/sessrumnir/src/main/package-catalog.test.ts +157 -0
  421. package/apps/sessrumnir/src/main/package-catalog.ts +166 -0
  422. package/apps/sessrumnir/src/main/package-updates.test.ts +149 -0
  423. package/apps/sessrumnir/src/main/package-updates.ts +185 -0
  424. package/apps/sessrumnir/src/main/path-authorization.test.ts +64 -0
  425. package/apps/sessrumnir/src/main/path-authorization.ts +31 -0
  426. package/apps/sessrumnir/src/main/pi-binary-resolution.test.ts +582 -0
  427. package/apps/sessrumnir/src/main/pi-binary-resolution.ts +649 -0
  428. package/apps/sessrumnir/src/main/pi-event-router.test.ts +388 -0
  429. package/apps/sessrumnir/src/main/pi-event-router.ts +290 -0
  430. package/apps/sessrumnir/src/main/pi-paths.test.ts +134 -0
  431. package/apps/sessrumnir/src/main/pi-paths.ts +74 -0
  432. package/apps/sessrumnir/src/main/pi-rpc-manager.test.ts +467 -0
  433. package/apps/sessrumnir/src/main/pi-rpc-manager.ts +1319 -0
  434. package/apps/sessrumnir/src/main/process-tree.test.ts +94 -0
  435. package/apps/sessrumnir/src/main/renderer-origin.test.ts +33 -0
  436. package/apps/sessrumnir/src/main/renderer-origin.ts +35 -0
  437. package/apps/sessrumnir/src/main/session-lineage-reader.test.ts +317 -0
  438. package/apps/sessrumnir/src/main/session-lineage-reader.ts +111 -0
  439. package/apps/sessrumnir/src/main/session-metadata.test.ts +508 -0
  440. package/apps/sessrumnir/src/main/session-metadata.ts +526 -0
  441. package/apps/sessrumnir/src/main/session-name.test.ts +71 -0
  442. package/apps/sessrumnir/src/main/session-name.ts +69 -0
  443. package/apps/sessrumnir/src/main/session-paths.test.ts +110 -0
  444. package/apps/sessrumnir/src/main/session-paths.ts +88 -0
  445. package/apps/sessrumnir/src/main/session-tags.test.ts +61 -0
  446. package/apps/sessrumnir/src/main/session-tags.ts +253 -0
  447. package/apps/sessrumnir/src/main/session-trash.test.ts +66 -0
  448. package/apps/sessrumnir/src/main/session-trash.ts +65 -0
  449. package/apps/sessrumnir/src/main/settings-logic.ts +66 -0
  450. package/apps/sessrumnir/src/main/skills-discovery.test.ts +149 -0
  451. package/apps/sessrumnir/src/main/skills-discovery.ts +179 -0
  452. package/apps/sessrumnir/src/main/startup-launch.ts +63 -0
  453. package/apps/sessrumnir/src/main/terminal-service.ts +96 -0
  454. package/apps/sessrumnir/src/main/theme-store.test.ts +440 -0
  455. package/apps/sessrumnir/src/main/theme-store.ts +495 -0
  456. package/apps/sessrumnir/src/main/tray-decision.test.ts +46 -0
  457. package/apps/sessrumnir/src/main/tray-decision.ts +49 -0
  458. package/apps/sessrumnir/src/main/tray-manager.ts +220 -0
  459. package/apps/sessrumnir/src/main/tsconfig.json +20 -0
  460. package/apps/sessrumnir/src/main/window-background.test.ts +29 -0
  461. package/apps/sessrumnir/src/main/window-background.ts +16 -0
  462. package/apps/sessrumnir/src/main/workflow-discovery.test.ts +252 -0
  463. package/apps/sessrumnir/src/main/workflow-monitor.test.ts +371 -0
  464. package/apps/sessrumnir/src/main/workflow-monitor.ts +1020 -0
  465. package/apps/sessrumnir/src/main/workspace-activity.test.ts +227 -0
  466. package/apps/sessrumnir/src/main/workspace-activity.ts +215 -0
  467. package/apps/sessrumnir/src/main/workspace-manager.test.ts +680 -0
  468. package/apps/sessrumnir/src/main/workspace-manager.ts +1199 -0
  469. package/apps/sessrumnir/src/main/workspace-trust.test.ts +78 -0
  470. package/apps/sessrumnir/src/main/workspace-trust.ts +84 -0
  471. package/apps/sessrumnir/src/preload/index.ts +358 -0
  472. package/apps/sessrumnir/src/preload/tsconfig.json +20 -0
  473. package/apps/sessrumnir/src/renderer/index.html +18 -0
  474. package/apps/sessrumnir/src/renderer/public/theme-boot.js +30 -0
  475. package/apps/sessrumnir/src/renderer/src/app.tsx +194 -0
  476. package/apps/sessrumnir/src/renderer/src/assets/openmoji-color.woff2 +0 -0
  477. package/apps/sessrumnir/src/renderer/src/assets/pi-logo.svg +7 -0
  478. package/apps/sessrumnir/src/renderer/src/assets/ymir-mark.svg +55 -0
  479. package/apps/sessrumnir/src/renderer/src/assets.d.ts +7 -0
  480. package/apps/sessrumnir/src/renderer/src/components/chat-code-highlight.ts +239 -0
  481. package/apps/sessrumnir/src/renderer/src/components/chat-file-link.ts +140 -0
  482. package/apps/sessrumnir/src/renderer/src/components/chat-input.tsx +729 -0
  483. package/apps/sessrumnir/src/renderer/src/components/chat-panel-widths.test.ts +175 -0
  484. package/apps/sessrumnir/src/renderer/src/components/chat-panel-widths.ts +100 -0
  485. package/apps/sessrumnir/src/renderer/src/components/chat-panel.tsx +523 -0
  486. package/apps/sessrumnir/src/renderer/src/components/chat-project-picker.tsx +193 -0
  487. package/apps/sessrumnir/src/renderer/src/components/chat-search.tsx +251 -0
  488. package/apps/sessrumnir/src/renderer/src/components/code-editor-highlight.ts +85 -0
  489. package/apps/sessrumnir/src/renderer/src/components/code-editor-language.test.ts +19 -0
  490. package/apps/sessrumnir/src/renderer/src/components/code-editor-language.ts +88 -0
  491. package/apps/sessrumnir/src/renderer/src/components/code-editor.tsx +128 -0
  492. package/apps/sessrumnir/src/renderer/src/components/command-palette.tsx +315 -0
  493. package/apps/sessrumnir/src/renderer/src/components/command-results.tsx +80 -0
  494. package/apps/sessrumnir/src/renderer/src/components/composer-permission-menu.tsx +91 -0
  495. package/apps/sessrumnir/src/renderer/src/components/context-menu.tsx +457 -0
  496. package/apps/sessrumnir/src/renderer/src/components/copy-button.tsx +36 -0
  497. package/apps/sessrumnir/src/renderer/src/components/council-panels.tsx +193 -0
  498. package/apps/sessrumnir/src/renderer/src/components/custom-models-editor.tsx +330 -0
  499. package/apps/sessrumnir/src/renderer/src/components/diagnostics-panel.tsx +380 -0
  500. package/apps/sessrumnir/src/renderer/src/components/diff-viewer.tsx +318 -0
  501. package/apps/sessrumnir/src/renderer/src/components/ember-background.tsx +113 -0
  502. package/apps/sessrumnir/src/renderer/src/components/error-boundary.tsx +38 -0
  503. package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog-helpers.test.ts +43 -0
  504. package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog-helpers.ts +51 -0
  505. package/apps/sessrumnir/src/renderer/src/components/extension-ui-dialog.tsx +486 -0
  506. package/apps/sessrumnir/src/renderer/src/components/file-tree.tsx +784 -0
  507. package/apps/sessrumnir/src/renderer/src/components/git-conveyor-actions.tsx +246 -0
  508. package/apps/sessrumnir/src/renderer/src/components/home-screen.tsx +396 -0
  509. package/apps/sessrumnir/src/renderer/src/components/image-viewer.tsx +100 -0
  510. package/apps/sessrumnir/src/renderer/src/components/line-numbered-code.tsx +58 -0
  511. package/apps/sessrumnir/src/renderer/src/components/markdown-renderer.tsx +237 -0
  512. package/apps/sessrumnir/src/renderer/src/components/message-bubble.tsx +1006 -0
  513. package/apps/sessrumnir/src/renderer/src/components/mission-control.tsx +341 -0
  514. package/apps/sessrumnir/src/renderer/src/components/model-selector.tsx +219 -0
  515. package/apps/sessrumnir/src/renderer/src/components/note-picker.tsx +155 -0
  516. package/apps/sessrumnir/src/renderer/src/components/notes-panel.tsx +437 -0
  517. package/apps/sessrumnir/src/renderer/src/components/package-browser.tsx +604 -0
  518. package/apps/sessrumnir/src/renderer/src/components/permission-mode.test.ts +22 -0
  519. package/apps/sessrumnir/src/renderer/src/components/permission-mode.ts +49 -0
  520. package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor-helpers.test.ts +44 -0
  521. package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor-helpers.ts +35 -0
  522. package/apps/sessrumnir/src/renderer/src/components/permission-rules-editor.tsx +226 -0
  523. package/apps/sessrumnir/src/renderer/src/components/permission-selector.tsx +104 -0
  524. package/apps/sessrumnir/src/renderer/src/components/resize-handle.tsx +51 -0
  525. package/apps/sessrumnir/src/renderer/src/components/review-rail.tsx +194 -0
  526. package/apps/sessrumnir/src/renderer/src/components/session-menu-position.test.ts +22 -0
  527. package/apps/sessrumnir/src/renderer/src/components/session-menu-position.ts +34 -0
  528. package/apps/sessrumnir/src/renderer/src/components/session-panel.tsx +711 -0
  529. package/apps/sessrumnir/src/renderer/src/components/session-runtime-indicator.tsx +43 -0
  530. package/apps/sessrumnir/src/renderer/src/components/settings-panel.tsx +1360 -0
  531. package/apps/sessrumnir/src/renderer/src/components/sidebar-activity.test.ts +47 -0
  532. package/apps/sessrumnir/src/renderer/src/components/sidebar-activity.ts +76 -0
  533. package/apps/sessrumnir/src/renderer/src/components/sidebar-session-labels.test.ts +73 -0
  534. package/apps/sessrumnir/src/renderer/src/components/sidebar-session-labels.ts +47 -0
  535. package/apps/sessrumnir/src/renderer/src/components/sidebar.tsx +1045 -0
  536. package/apps/sessrumnir/src/renderer/src/components/skills-panel.tsx +159 -0
  537. package/apps/sessrumnir/src/renderer/src/components/stats-panel.tsx +368 -0
  538. package/apps/sessrumnir/src/renderer/src/components/status-bar.tsx +274 -0
  539. package/apps/sessrumnir/src/renderer/src/components/status-popover.tsx +481 -0
  540. package/apps/sessrumnir/src/renderer/src/components/streaming-bubble.tsx +128 -0
  541. package/apps/sessrumnir/src/renderer/src/components/subagent-progress.tsx +254 -0
  542. package/apps/sessrumnir/src/renderer/src/components/task-launcher.tsx +168 -0
  543. package/apps/sessrumnir/src/renderer/src/components/terminal.tsx +203 -0
  544. package/apps/sessrumnir/src/renderer/src/components/theme-editor-helpers.test.ts +35 -0
  545. package/apps/sessrumnir/src/renderer/src/components/theme-editor-helpers.ts +35 -0
  546. package/apps/sessrumnir/src/renderer/src/components/theme-editor.tsx +440 -0
  547. package/apps/sessrumnir/src/renderer/src/components/theme-gallery.tsx +373 -0
  548. package/apps/sessrumnir/src/renderer/src/components/thinking-level-selector.tsx +85 -0
  549. package/apps/sessrumnir/src/renderer/src/components/timeline.tsx +289 -0
  550. package/apps/sessrumnir/src/renderer/src/components/tool-call-icon.ts +32 -0
  551. package/apps/sessrumnir/src/renderer/src/components/workflow-navigator.tsx +901 -0
  552. package/apps/sessrumnir/src/renderer/src/components/workspace-tabs.tsx +241 -0
  553. package/apps/sessrumnir/src/renderer/src/global.d.ts +8 -0
  554. package/apps/sessrumnir/src/renderer/src/hooks/use-folder-drop.ts +101 -0
  555. package/apps/sessrumnir/src/renderer/src/hooks.test.ts +88 -0
  556. package/apps/sessrumnir/src/renderer/src/hooks.ts +574 -0
  557. package/apps/sessrumnir/src/renderer/src/i18n.test.ts +54 -0
  558. package/apps/sessrumnir/src/renderer/src/i18n.ts +89 -0
  559. package/apps/sessrumnir/src/renderer/src/index.css +425 -0
  560. package/apps/sessrumnir/src/renderer/src/main.tsx +42 -0
  561. package/apps/sessrumnir/src/renderer/src/message-grouping.test.ts +422 -0
  562. package/apps/sessrumnir/src/renderer/src/message-grouping.ts +410 -0
  563. package/apps/sessrumnir/src/renderer/src/message-parsing.test.ts +86 -0
  564. package/apps/sessrumnir/src/renderer/src/message-parsing.ts +166 -0
  565. package/apps/sessrumnir/src/renderer/src/store-external-prompts.test.ts +161 -0
  566. package/apps/sessrumnir/src/renderer/src/store-session-transitions.test.ts +2090 -0
  567. package/apps/sessrumnir/src/renderer/src/store-timeline.test.ts +52 -0
  568. package/apps/sessrumnir/src/renderer/src/store-turn-error.test.ts +136 -0
  569. package/apps/sessrumnir/src/renderer/src/store.ts +3726 -0
  570. package/apps/sessrumnir/src/renderer/src/subagent-detection.test.ts +55 -0
  571. package/apps/sessrumnir/src/renderer/src/theme/engine.test.ts +29 -0
  572. package/apps/sessrumnir/src/renderer/src/theme/engine.ts +20 -0
  573. package/apps/sessrumnir/src/renderer/src/themes/breeze-claudius.json +69 -0
  574. package/apps/sessrumnir/src/renderer/src/themes/breeze-dark.json +69 -0
  575. package/apps/sessrumnir/src/renderer/src/themes/breeze-light.json +69 -0
  576. package/apps/sessrumnir/src/renderer/src/themes/builtin-themes.test.ts +95 -0
  577. package/apps/sessrumnir/src/renderer/src/themes/dark.json +46 -0
  578. package/apps/sessrumnir/src/renderer/src/themes/fensalir.json +82 -0
  579. package/apps/sessrumnir/src/renderer/src/themes/gruvbox.json +69 -0
  580. package/apps/sessrumnir/src/renderer/src/themes/index.ts +60 -0
  581. package/apps/sessrumnir/src/renderer/src/themes/light.json +46 -0
  582. package/apps/sessrumnir/src/renderer/src/themes/nord.json +69 -0
  583. package/apps/sessrumnir/src/renderer/src/themes/sessrumnir.json +82 -0
  584. package/apps/sessrumnir/src/renderer/src/utils/debounced-buffer.test.ts +81 -0
  585. package/apps/sessrumnir/src/renderer/src/utils/debounced-buffer.ts +57 -0
  586. package/apps/sessrumnir/src/renderer/src/utils/format-relative-time.test.ts +62 -0
  587. package/apps/sessrumnir/src/renderer/src/utils/format-relative-time.ts +28 -0
  588. package/apps/sessrumnir/src/renderer/src/utils/heatmap-grid.test.ts +57 -0
  589. package/apps/sessrumnir/src/renderer/src/utils/heatmap-grid.ts +41 -0
  590. package/apps/sessrumnir/src/renderer/src/utils/ipc-error.test.ts +22 -0
  591. package/apps/sessrumnir/src/renderer/src/utils/ipc-error.ts +12 -0
  592. package/apps/sessrumnir/src/renderer/src/utils/model-search.test.ts +63 -0
  593. package/apps/sessrumnir/src/renderer/src/utils/model-search.ts +20 -0
  594. package/apps/sessrumnir/src/renderer/src/utils/planning-prompt.test.ts +31 -0
  595. package/apps/sessrumnir/src/renderer/src/utils/planning-prompt.ts +27 -0
  596. package/apps/sessrumnir/src/renderer/src/utils/preview-load-error.test.ts +15 -0
  597. package/apps/sessrumnir/src/renderer/src/utils/preview-load-error.ts +22 -0
  598. package/apps/sessrumnir/src/renderer/src/utils/process-status-label.test.ts +13 -0
  599. package/apps/sessrumnir/src/renderer/src/utils/process-status-label.ts +19 -0
  600. package/apps/sessrumnir/src/renderer/src/utils/quick-switcher.test.ts +68 -0
  601. package/apps/sessrumnir/src/renderer/src/utils/quick-switcher.ts +52 -0
  602. package/apps/sessrumnir/src/renderer/src/utils/rank-file-results.test.ts +46 -0
  603. package/apps/sessrumnir/src/renderer/src/utils/rank-file-results.ts +23 -0
  604. package/apps/sessrumnir/src/renderer/src/utils/relative-time.tsx +25 -0
  605. package/apps/sessrumnir/src/renderer/src/utils/session-title.test.ts +98 -0
  606. package/apps/sessrumnir/src/renderer/src/utils/session-title.ts +58 -0
  607. package/apps/sessrumnir/src/renderer/src/utils/stale-guard.test.ts +29 -0
  608. package/apps/sessrumnir/src/renderer/src/utils/stale-guard.ts +20 -0
  609. package/apps/sessrumnir/src/renderer/src/utils/theme.test.ts +174 -0
  610. package/apps/sessrumnir/src/renderer/src/utils/theme.ts +159 -0
  611. package/apps/sessrumnir/src/renderer/src/utils/workflow-runs.test.ts +130 -0
  612. package/apps/sessrumnir/src/renderer/src/utils/workflow-runs.ts +84 -0
  613. package/apps/sessrumnir/src/renderer/tsconfig.json +24 -0
  614. package/apps/sessrumnir/src/shared/agent-engine-label.test.ts +45 -0
  615. package/apps/sessrumnir/src/shared/agent-engine-label.ts +53 -0
  616. package/apps/sessrumnir/src/shared/app-settings.test.ts +25 -0
  617. package/apps/sessrumnir/src/shared/app-settings.ts +23 -0
  618. package/apps/sessrumnir/src/shared/bridge-http.ts +341 -0
  619. package/apps/sessrumnir/src/shared/bridge.ts +337 -0
  620. package/apps/sessrumnir/src/shared/council-config.test.ts +300 -0
  621. package/apps/sessrumnir/src/shared/council-config.ts +356 -0
  622. package/apps/sessrumnir/src/shared/default-settings.ts +39 -0
  623. package/apps/sessrumnir/src/shared/folder-drop.test.ts +118 -0
  624. package/apps/sessrumnir/src/shared/folder-drop.ts +74 -0
  625. package/apps/sessrumnir/src/shared/fork-point.test.ts +30 -0
  626. package/apps/sessrumnir/src/shared/fork-point.ts +24 -0
  627. package/apps/sessrumnir/src/shared/i18n/i18next.d.ts +10 -0
  628. package/apps/sessrumnir/src/shared/i18n/index.test.ts +51 -0
  629. package/apps/sessrumnir/src/shared/i18n/index.ts +50 -0
  630. package/apps/sessrumnir/src/shared/i18n/languages.ts +12 -0
  631. package/apps/sessrumnir/src/shared/i18n/locale-checks.ts +98 -0
  632. package/apps/sessrumnir/src/shared/i18n/locales.test.ts +92 -0
  633. package/apps/sessrumnir/src/shared/i18n/pseudo.test.ts +39 -0
  634. package/apps/sessrumnir/src/shared/i18n/pseudo.ts +44 -0
  635. package/apps/sessrumnir/src/shared/i18n/resolve.test.ts +43 -0
  636. package/apps/sessrumnir/src/shared/i18n/resolve.ts +41 -0
  637. package/apps/sessrumnir/src/shared/i18n/resources.ts +11 -0
  638. package/apps/sessrumnir/src/shared/ipc-contracts.ts +1539 -0
  639. package/apps/sessrumnir/src/shared/models-config.test.ts +124 -0
  640. package/apps/sessrumnir/src/shared/models-config.ts +167 -0
  641. package/apps/sessrumnir/src/shared/package-filter.ts +19 -0
  642. package/apps/sessrumnir/src/shared/package-spec.test.ts +51 -0
  643. package/apps/sessrumnir/src/shared/package-spec.ts +25 -0
  644. package/apps/sessrumnir/src/shared/path-compare.test.ts +38 -0
  645. package/apps/sessrumnir/src/shared/path-compare.ts +76 -0
  646. package/apps/sessrumnir/src/shared/permission-mode.ts +8 -0
  647. package/apps/sessrumnir/src/shared/pi-command.test.ts +165 -0
  648. package/apps/sessrumnir/src/shared/pi-command.ts +139 -0
  649. package/apps/sessrumnir/src/shared/product-name.ts +7 -0
  650. package/apps/sessrumnir/src/shared/session-lineage.test.ts +103 -0
  651. package/apps/sessrumnir/src/shared/session-lineage.ts +50 -0
  652. package/apps/sessrumnir/src/shared/session-preview.test.ts +93 -0
  653. package/apps/sessrumnir/src/shared/session-preview.ts +56 -0
  654. package/apps/sessrumnir/src/shared/sidebar-width.test.ts +58 -0
  655. package/apps/sessrumnir/src/shared/sidebar-width.ts +37 -0
  656. package/apps/sessrumnir/src/shared/theme/builtin-ids.ts +16 -0
  657. package/apps/sessrumnir/src/shared/theme/resolve.test.ts +66 -0
  658. package/apps/sessrumnir/src/shared/theme/resolve.ts +29 -0
  659. package/apps/sessrumnir/src/shared/theme/syntax-defaults.ts +24 -0
  660. package/apps/sessrumnir/src/shared/theme/theme-file.test.ts +88 -0
  661. package/apps/sessrumnir/src/shared/theme/theme-file.ts +132 -0
  662. package/apps/sessrumnir/src/shared/theme/tokens.test.ts +35 -0
  663. package/apps/sessrumnir/src/shared/theme/tokens.ts +86 -0
  664. package/apps/sessrumnir/src/shared/tsconfig.json +17 -0
  665. package/apps/sessrumnir/src/shared/untrusted-data.test.ts +32 -0
  666. package/apps/sessrumnir/src/shared/untrusted-data.ts +22 -0
  667. package/apps/sessrumnir/src/shared/version-compare.test.ts +33 -0
  668. package/apps/sessrumnir/src/shared/version-compare.ts +50 -0
  669. package/apps/sessrumnir/src/shared/workflow-control.ts +33 -0
  670. package/apps/sessrumnir/src/web-server.ts +315 -0
  671. package/apps/sessrumnir/tsconfig.json +26 -0
  672. package/apps/smidja/smidja_build.py +45 -0
  673. package/apps/smidja/smidja_build_review.py +76 -0
  674. package/apps/smidja/smidja_build_test.py +79 -0
  675. package/apps/smidja/smidja_document.py +76 -0
  676. package/apps/smidja/smidja_modules/agent_cc.py +15 -0
  677. package/apps/smidja/smidja_modules/agent_opencode.py +194 -0
  678. package/apps/smidja/smidja_modules/agent_pi.py +392 -0
  679. package/apps/smidja/smidja_modules/agents.py +993 -0
  680. package/apps/smidja/smidja_modules/changes.py +103 -0
  681. package/apps/smidja/smidja_modules/console.py +131 -0
  682. package/apps/smidja/smidja_modules/data_types.py +447 -0
  683. package/apps/smidja/smidja_modules/gates.py +108 -0
  684. package/apps/smidja/smidja_modules/git_helper.py +120 -0
  685. package/apps/smidja/smidja_modules/lm_local.py +144 -0
  686. package/apps/smidja/smidja_modules/permissions.py +194 -0
  687. package/apps/smidja/smidja_modules/prompts.py +21 -0
  688. package/apps/smidja/smidja_modules/quality.py +240 -0
  689. package/apps/smidja/smidja_modules/runner.py +155 -0
  690. package/apps/smidja/smidja_modules/session.py +50 -0
  691. package/apps/smidja/smidja_modules/stall_watch.py +149 -0
  692. package/apps/smidja/smidja_modules/tracer.py +271 -0
  693. package/apps/smidja/smidja_modules/utils.py +77 -0
  694. package/apps/smidja/smidja_orchestrate.py +162 -0
  695. package/apps/smidja/smidja_plan.py +45 -0
  696. package/apps/smidja/smidja_plan_build.py +55 -0
  697. package/apps/smidja/smidja_plan_build_test.py +86 -0
  698. package/apps/smidja/smidja_plan_build_test_quality.py +98 -0
  699. package/apps/smidja/smidja_prompt.py +44 -0
  700. package/apps/smidja/smidja_quality.py +49 -0
  701. package/apps/smidja/smidja_recon_iv.py +202 -0
  702. package/apps/smidja/smidja_scout.py +45 -0
  703. package/apps/smidja/smidja_simple_sdlc.py +183 -0
  704. package/apps/smidja/smidja_smidja_config/smidja.config.yaml +143 -0
  705. package/apps/smidja-factory/AGENTS.md +165 -0
  706. package/apps/smidja-factory/README.md +3 -0
  707. package/apps/smidja-factory/SKILL.md +18 -0
  708. package/apps/smidja-factory/apps/visualizer/.oxlintrc.json +18 -0
  709. package/apps/smidja-factory/apps/visualizer/bun.lock +269 -0
  710. package/apps/smidja-factory/apps/visualizer/desktop/icon.png +0 -0
  711. package/apps/smidja-factory/apps/visualizer/desktop/main.js +140 -0
  712. package/apps/smidja-factory/apps/visualizer/desktop/package-lock.json +871 -0
  713. package/apps/smidja-factory/apps/visualizer/desktop/package.json +18 -0
  714. package/apps/smidja-factory/apps/visualizer/desktop/preload.js +19 -0
  715. package/apps/smidja-factory/apps/visualizer/index.html +28 -0
  716. package/apps/smidja-factory/apps/visualizer/package.json +31 -0
  717. package/apps/smidja-factory/apps/visualizer/public/icon.svg +7 -0
  718. package/apps/smidja-factory/apps/visualizer/public/models/claude.png +0 -0
  719. package/apps/smidja-factory/apps/visualizer/public/models/gemini.png +0 -0
  720. package/apps/smidja-factory/apps/visualizer/public/models/kimi.png +0 -0
  721. package/apps/smidja-factory/apps/visualizer/public/models/openai.png +0 -0
  722. package/apps/smidja-factory/apps/visualizer/public/models/zai.png +0 -0
  723. package/apps/smidja-factory/apps/visualizer/server/chat.ts +425 -0
  724. package/apps/smidja-factory/apps/visualizer/server/db.ts +1050 -0
  725. package/apps/smidja-factory/apps/visualizer/server/index.ts +648 -0
  726. package/apps/smidja-factory/apps/visualizer/server/model-catalog.ts +90 -0
  727. package/apps/smidja-factory/apps/visualizer/server/roster-api.ts +75 -0
  728. package/apps/smidja-factory/apps/visualizer/server/roster_resolve.py +170 -0
  729. package/apps/smidja-factory/apps/visualizer/server/settings.ts +106 -0
  730. package/apps/smidja-factory/apps/visualizer/shared/types.ts +630 -0
  731. package/apps/smidja-factory/apps/visualizer/src/App.vue +379 -0
  732. package/apps/smidja-factory/apps/visualizer/src/components/ChatInput.vue +155 -0
  733. package/apps/smidja-factory/apps/visualizer/src/components/ChatThread.vue +219 -0
  734. package/apps/smidja-factory/apps/visualizer/src/components/ChatView.vue +335 -0
  735. package/apps/smidja-factory/apps/visualizer/src/components/DecisionsView.vue +177 -0
  736. package/apps/smidja-factory/apps/visualizer/src/components/DetailSection.vue +76 -0
  737. package/apps/smidja-factory/apps/visualizer/src/components/MemoryView.vue +397 -0
  738. package/apps/smidja-factory/apps/visualizer/src/components/PhaseDetail.vue +1354 -0
  739. package/apps/smidja-factory/apps/visualizer/src/components/PhaseDots.vue +55 -0
  740. package/apps/smidja-factory/apps/visualizer/src/components/SessionCard.vue +583 -0
  741. package/apps/smidja-factory/apps/visualizer/src/components/SessionMiniCard.vue +58 -0
  742. package/apps/smidja-factory/apps/visualizer/src/components/SessionPanel.vue +272 -0
  743. package/apps/smidja-factory/apps/visualizer/src/components/SessionStartForm.vue +152 -0
  744. package/apps/smidja-factory/apps/visualizer/src/components/SessionTrace.vue +1157 -0
  745. package/apps/smidja-factory/apps/visualizer/src/components/SessionsList.vue +96 -0
  746. package/apps/smidja-factory/apps/visualizer/src/components/SettingsView.vue +152 -0
  747. package/apps/smidja-factory/apps/visualizer/src/components/StatChip.vue +98 -0
  748. package/apps/smidja-factory/apps/visualizer/src/components/StatsView.vue +382 -0
  749. package/apps/smidja-factory/apps/visualizer/src/components/StatusChip.vue +73 -0
  750. package/apps/smidja-factory/apps/visualizer/src/components/ToolCallCard.vue +156 -0
  751. package/apps/smidja-factory/apps/visualizer/src/lib/api.ts +177 -0
  752. package/apps/smidja-factory/apps/visualizer/src/lib/chat-api.ts +95 -0
  753. package/apps/smidja-factory/apps/visualizer/src/lib/chat-store.ts +351 -0
  754. package/apps/smidja-factory/apps/visualizer/src/lib/events.ts +131 -0
  755. package/apps/smidja-factory/apps/visualizer/src/lib/format.ts +92 -0
  756. package/apps/smidja-factory/apps/visualizer/src/lib/highlight.ts +54 -0
  757. package/apps/smidja-factory/apps/visualizer/src/lib/markdown.ts +120 -0
  758. package/apps/smidja-factory/apps/visualizer/src/lib/models.ts +42 -0
  759. package/apps/smidja-factory/apps/visualizer/src/lib/router.ts +67 -0
  760. package/apps/smidja-factory/apps/visualizer/src/lib/types.ts +61 -0
  761. package/apps/smidja-factory/apps/visualizer/src/main.ts +13 -0
  762. package/apps/smidja-factory/apps/visualizer/src/style.css +592 -0
  763. package/apps/smidja-factory/apps/visualizer/tsconfig.json +30 -0
  764. package/apps/smidja-factory/apps/visualizer/vite.config.js +32 -0
  765. package/apps/smidja-factory/apps/visualizer/vite.config.ts +31 -0
  766. package/apps/smidja-factory/cookbooks/create_config.md +61 -0
  767. package/apps/smidja-factory/cookbooks/create_smidja.md +120 -0
  768. package/apps/smidja-factory/cookbooks/how_to_prompt_for_the_eng.md +110 -0
  769. package/apps/smidja-factory/cookbooks/install.md +56 -0
  770. package/apps/smidja-factory/cookbooks/run_smidja.md +122 -0
  771. package/apps/smidja-factory/cookbooks/smidja_overview.md +88 -0
  772. package/apps/smidja-factory/cookbooks/update_config.md +103 -0
  773. package/apps/smidja-factory/cookbooks/update_modules.md +100 -0
  774. package/apps/smidja-factory/cookbooks/update_smidja.md +90 -0
  775. package/apps/smidja-factory/docs/enhancement-plan.md +420 -0
  776. package/apps/smidja-factory/references/config.md +202 -0
  777. package/apps/smidja-factory/references/handoff.md +161 -0
  778. package/apps/smidja-factory/references/observability.md +166 -0
  779. package/apps/smidja-factory/scripts/install.py +113 -0
  780. package/apps/smidja-factory/scripts/make_config.py +35 -0
  781. package/apps/smidja-factory/scripts/make_smidja.py +119 -0
  782. package/apps/smidja-factory/skills/add-or-edit-ai-models/SKILL.md +151 -0
  783. package/apps/smidja-factory/skills/create-new-agent/SKILL.md +125 -0
  784. package/apps/smidja-factory/skills/create-new-teams/SKILL.md +151 -0
  785. package/apps/smidja-factory/skills/git-ops/README.md +25 -0
  786. package/apps/smidja-factory/skills/git-ops/SKILL.md +18 -0
  787. package/apps/smidja-factory/skills/git-ops/create_branch.sh +79 -0
  788. package/apps/smidja-factory/skills/git-ops/safe_commit.sh +82 -0
  789. package/apps/smidja-factory/skills/git-ops/sync_upstream.sh +94 -0
  790. package/apps/smidja-factory/skills/how-to-run-agent-teams/SKILL.md +117 -0
  791. package/apps/smidja-factory/skills/smidja-instructions/SKILL.md +168 -0
  792. package/apps/smidja-factory/skills/smidja-launcher/SKILL.md +155 -0
  793. package/apps/smidja-factory/skills/smidja-start/SKILL.md +266 -0
  794. package/apps/smidja-factory/skills/volundr/SKILL.md +232 -0
  795. package/apps/smidja-factory/skills/volundr/prompt/dispatch-prompt.md +91 -0
  796. package/apps/smidja-factory/skills/volundr/prompt/volundr-system.md +63 -0
  797. package/apps/smidja-factory/skills/volundr/scripts/volundr-observe.py +52 -0
  798. package/apps/smidja-factory/skills/volundr/scripts/volundr-recall.py +54 -0
  799. package/apps/smidja-factory/skills/volundr/scripts/volundr-status.py +51 -0
  800. package/apps/smidja-factory/skills/volundr/scripts/volundr-teach.py +47 -0
  801. package/apps/smidja-factory/templates/env.sample +28 -0
  802. package/apps/smidja-factory/templates/harness_engineering/subagents.ts +706 -0
  803. package/apps/smidja-factory/templates/harness_engineering/themeMap.ts +145 -0
  804. package/apps/smidja-factory/templates/justfile +89 -0
  805. package/apps/smidja-factory/templates/prompt_engineering/builder/system.md +13 -0
  806. package/apps/smidja-factory/templates/prompt_engineering/builder/user.md +34 -0
  807. package/apps/smidja-factory/templates/prompt_engineering/documenter/system.md +17 -0
  808. package/apps/smidja-factory/templates/prompt_engineering/documenter/user.md +48 -0
  809. package/apps/smidja-factory/templates/prompt_engineering/orchestrator/system.md +55 -0
  810. package/apps/smidja-factory/templates/prompt_engineering/orchestrator/user.md +39 -0
  811. package/apps/smidja-factory/templates/prompt_engineering/planner/system.md +21 -0
  812. package/apps/smidja-factory/templates/prompt_engineering/planner/user.md +45 -0
  813. package/apps/smidja-factory/templates/prompt_engineering/recon_orchestrator/system.md +51 -0
  814. package/apps/smidja-factory/templates/prompt_engineering/recon_orchestrator/user.md +26 -0
  815. package/apps/smidja-factory/templates/prompt_engineering/reviewer/system.md +16 -0
  816. package/apps/smidja-factory/templates/prompt_engineering/reviewer/user.md +44 -0
  817. package/apps/smidja-factory/templates/prompt_engineering/scout/system.md +32 -0
  818. package/apps/smidja-factory/templates/prompt_engineering/scout/user.md +34 -0
  819. package/apps/smidja-factory/templates/smidja/smidja_build.py +45 -0
  820. package/apps/smidja-factory/templates/smidja/smidja_build_review.py +76 -0
  821. package/apps/smidja-factory/templates/smidja/smidja_build_test.py +79 -0
  822. package/apps/smidja-factory/templates/smidja/smidja_document.py +76 -0
  823. package/apps/smidja-factory/templates/smidja/smidja_modules/agent_cc.py +15 -0
  824. package/apps/smidja-factory/templates/smidja/smidja_modules/agent_opencode.py +194 -0
  825. package/apps/smidja-factory/templates/smidja/smidja_modules/agent_pi.py +392 -0
  826. package/apps/smidja-factory/templates/smidja/smidja_modules/agents.py +993 -0
  827. package/apps/smidja-factory/templates/smidja/smidja_modules/changes.py +103 -0
  828. package/apps/smidja-factory/templates/smidja/smidja_modules/console.py +131 -0
  829. package/apps/smidja-factory/templates/smidja/smidja_modules/data_types.py +447 -0
  830. package/apps/smidja-factory/templates/smidja/smidja_modules/gates.py +108 -0
  831. package/apps/smidja-factory/templates/smidja/smidja_modules/git_helper.py +120 -0
  832. package/apps/smidja-factory/templates/smidja/smidja_modules/lm_local.py +144 -0
  833. package/apps/smidja-factory/templates/smidja/smidja_modules/permissions.py +194 -0
  834. package/apps/smidja-factory/templates/smidja/smidja_modules/prompts.py +21 -0
  835. package/apps/smidja-factory/templates/smidja/smidja_modules/quality.py +240 -0
  836. package/apps/smidja-factory/templates/smidja/smidja_modules/runner.py +155 -0
  837. package/apps/smidja-factory/templates/smidja/smidja_modules/session.py +50 -0
  838. package/apps/smidja-factory/templates/smidja/smidja_modules/stall_watch.py +149 -0
  839. package/apps/smidja-factory/templates/smidja/smidja_modules/tracer.py +271 -0
  840. package/apps/smidja-factory/templates/smidja/smidja_modules/utils.py +77 -0
  841. package/apps/smidja-factory/templates/smidja/smidja_orchestrate.py +162 -0
  842. package/apps/smidja-factory/templates/smidja/smidja_plan.py +45 -0
  843. package/apps/smidja-factory/templates/smidja/smidja_plan_build.py +55 -0
  844. package/apps/smidja-factory/templates/smidja/smidja_plan_build_test.py +86 -0
  845. package/apps/smidja-factory/templates/smidja/smidja_plan_build_test_quality.py +98 -0
  846. package/apps/smidja-factory/templates/smidja/smidja_prompt.py +44 -0
  847. package/apps/smidja-factory/templates/smidja/smidja_quality.py +49 -0
  848. package/apps/smidja-factory/templates/smidja/smidja_recon_iv.py +202 -0
  849. package/apps/smidja-factory/templates/smidja/smidja_scout.py +45 -0
  850. package/apps/smidja-factory/templates/smidja/smidja_simple_sdlc.py +183 -0
  851. package/apps/smidja-factory/templates/smidja.config.yaml +143 -0
  852. package/bin/app-build.sh +36 -0
  853. package/bin/electron-lib.sh +25 -0
  854. package/bin/sessrumnir.sh +1 -1
  855. package/bin/ymir-install.sh +7 -0
  856. package/install.sh +88 -0
  857. package/package.json +16 -7
  858. package/scripts/electron.sh +6 -2
  859. package/.agents/bus/messages.json +0 -1
  860. package/.agents/config/agents.machine.example.yaml +0 -16
  861. package/.pi/mcp.json +0 -16
  862. package/assets/reference/state/.branch-eligible-owner +0 -4
  863. package/assets/reference/state/.branch-mirror-cursor +0 -1
  864. package/assets/reference/state/.branch-outcomes-cursor +0 -1
  865. package/assets/reference/state/.branch-session +0 -1
  866. package/assets/reference/state/.count-default_wF_p5 +0 -1
  867. package/assets/reference/state/.count-default_wF_p6 +0 -1
  868. package/assets/reference/state/.count-default_wR_p2 +0 -1
  869. package/assets/reference/state/.count-default_wS_p2 +0 -1
  870. package/assets/reference/state/.count-firstmate_fm-server-knowledge +0 -1
  871. package/assets/reference/state/.hash-default_wF_p5 +0 -1
  872. package/assets/reference/state/.hash-default_wF_p6 +0 -1
  873. package/assets/reference/state/.hash-default_wR_p2 +0 -1
  874. package/assets/reference/state/.hash-default_wS_p2 +0 -1
  875. package/assets/reference/state/.hash-firstmate_fm-server-knowledge +0 -1
  876. package/assets/reference/state/.heartbeat-streak +0 -1
  877. package/assets/reference/state/.inactive-outcome-reconcile +0 -2
  878. package/assets/reference/state/.lock +0 -1
  879. package/assets/reference/state/.pi-branch-extension-loaded +0 -1
  880. package/assets/reference/state/.pi-turnend-extension-loaded +0 -2
  881. package/assets/reference/state/.pi-watch-extension-loaded +0 -2
  882. package/assets/reference/state/.seen-server-knowledge_turn-ended +0 -1
  883. package/assets/reference/state/.session-start-agents-baseline +0 -2
  884. package/assets/reference/state/.session-start-complete +0 -1
  885. package/assets/reference/state/.stale-default_wF_p5 +0 -1
  886. package/assets/reference/state/.stale-default_wR_p2 +0 -1
  887. package/assets/reference/state/.stale-firstmate_fm-server-knowledge +0 -1
  888. package/assets/reference/state/.stale-since-default_wF_p5 +0 -1
  889. package/assets/reference/state/.stale-since-default_wR_p2 +0 -1
  890. package/assets/reference/state/.stale-since-firstmate_fm-server-knowledge +0 -1
  891. package/assets/reference/state/.startup-network.delivered +0 -1
  892. package/assets/reference/state/.startup-network.report +0 -1
  893. package/assets/reference/state/.startup-network.status +0 -10
  894. package/assets/reference/state/.startup-network.timings +0 -6
  895. package/assets/reference/state/.trace-context-effective +0 -1
  896. package/assets/reference/state/.wake-queue +0 -0
  897. package/assets/reference/state/.wake-queue.seq +0 -1
  898. package/assets/reference/state/.wake-rows.consume.BcqXSq +0 -0
  899. package/assets/reference/state/.wake-rows.consume.NDZZei +0 -0
  900. package/assets/reference/state/.wake-rows.consume.VGkhYm +0 -0
  901. package/assets/reference/state/.wake-rows.consume.tR2rTy +0 -0
  902. package/assets/reference/state/.watch-arm-output.3581p6 +0 -0
  903. package/assets/reference/state/.watch-arm-output.3ciDNP +0 -0
  904. package/assets/reference/state/.watch-arm-output.SksR6k +0 -0
  905. package/assets/reference/state/.watch-cycle-exits.log +0 -22
  906. package/assets/reference/state/.watch-deliveries.log +0 -19
  907. package/assets/reference/state/.watch-triage.log +0 -38
  908. package/assets/reference/state/.watch.lock/fm-home +0 -1
  909. package/assets/reference/state/.watch.lock/pid +0 -1
  910. package/assets/reference/state/.watch.lock/pid-identity +0 -1
  911. package/assets/reference/state/.watch.lock/watcher-path +0 -1
  912. package/assets/reference/state/.watch.lock.owner.qqbxmS/fm-home +0 -1
  913. package/assets/reference/state/.watch.lock.owner.qqbxmS/pid +0 -1
  914. package/assets/reference/state/.watch.lock.owner.qqbxmS/pid-identity +0 -1
  915. package/assets/reference/state/.watch.lock.owner.qqbxmS/watcher-path +0 -1
  916. package/assets/reference/state/.watcher-down +0 -1
  917. package/assets/reference/state/branch-outcomes.jsonl +0 -1
  918. package/assets/reference/state/branch-session/2026-09-04T16-49-38-671Z_01a06d53-6b6f-7619-930d-e6dfd9a4a29e.jsonl +0 -211
  919. package/assets/reference/state/home-summary.json +0 -42
  920. package/assets/reference/state/server-knowledge.busy-gen +0 -1
  921. package/assets/reference/state/server-knowledge.busy-state +0 -1
  922. package/assets/reference/state/server-knowledge.herdr-presentation +0 -12
  923. package/assets/reference/state/server-knowledge.meta +0 -18
  924. package/assets/reference/state/server-knowledge.pi-ext.ts +0 -26
  925. package/assets/reference/state/server-knowledge.turn-ended +0 -0
  926. /package/{assets/reference/state/.last-check → apps/hlidskjalf/src/app/.gitkeep} +0 -0
  927. /package/{assets/reference/state/.last-heartbeat → apps/hlidskjalf/src/components/.gitkeep} +0 -0
  928. /package/{assets/reference/state/.last-watcher-beat → apps/hlidskjalf/src/services/.gitkeep} +0 -0
  929. /package/{assets/reference/state/.main-eligible-rows.tmp.p2HMKo → apps/smidja/smidja_modules/__init__.py} +0 -0
  930. /package/{assets/reference/state/.main-eligible-rows.tmp.Exxm82 → apps/smidja-factory/templates/smidja/smidja_modules/__init__.py} +0 -0
@@ -0,0 +1,266 @@
1
+ ---
2
+ name: smidja-start
3
+ description: Start the software-smidja agents for work — exactly how, on which team (roster), with which models (local/online/hybrid), which chain, and how to run the orchestrator (Kaia). Use when the user wants to "send the smidja", start agents on a task, pick local vs online models, launch a run, watch it, or run Kaia's orchestrator. Combines with smidja, smidja-launcher, smidja-instructions and smidja skills; canonical playbooks are START_SMIDJA.md and docs/.
4
+ argument-hint: "[local | cloud | hybrid | orchestrate | sdlc | simple-sdlc | scout | service | mode]"
5
+ allowed-tools: read, write, edit, bash, grep, glob
6
+ ---
7
+
8
+ # Start the Smíðja — skill
9
+
10
+ The single, exact way to put the smithy's agents to work. You
11
+ **launch, converge, and observe — never implement**. The smidja's agents own
12
+ the code.
13
+
14
+ Canonical full playbook: `START_SMIDJA.md` (repo root of `~/Ymir`).
15
+ Live ledger: `smidja/smidja_smidja_config/roster.yaml` — the ONE file (teams in
16
+ `stacks:`, agent roles in `role_defaults:`, model catalog in `tiers:`),
17
+ `tests/local-models/RESULTS.md` (what local models can/can't do — read before
18
+ sending local models on hard jobs).
19
+
20
+ The files that drive everything (what they do):
21
+
22
+ - **`smidja/smidja_smidja_config/roster.yaml`** — the ONLY config file: teams (named
23
+ stacks, each listing its agents and their models/tools/writes; pick one with
24
+ `--roster <name>` or `SMIDJA_ROSTER=<name>` — `local`, `local-agile`, `local-ui`,
25
+ `cloud`, `hybrid-*`, `wayofteams-*`, `recon-*`, `my-budget-ui`), agent roles
26
+ (`role_defaults:`), and the model catalog (`tiers:` — role × backend tier).
27
+ Swap surface: `--model`, `SMIDJA_<ROLE>_MODEL=…` per role, `SMIDJA_MODEL_TIER=<tier>`
28
+ for a whole stack.
29
+ - **`justfile` (repo root)** — the starter recipes: `just scout/sdlc/
30
+ simple-sdlc/orchestrate` launch chains from `~/Ymir`, `just sessions/
31
+ phases/tail/procs/obs` watch and open the UI; it honors the same
32
+ `SMIDJA_CONFIG` → `SMIDJA_ROSTER` → `SMIDJA_MODEL_TIER` → `smidja.config.yaml` order.
33
+
34
+ Deep-reference docs live in **`docs/`** (note the space):
35
+ `software-smidja.md` (overview), `software-smidja-run.md` (how to run),
36
+ `software-smidja-pi.md` / `software-smidja-opencode.md` (coding-agent
37
+ setups), `software-smidja-visualizer.md` (trace UI), `SmidjaAgentsAndModels.md`
38
+ (roster + model backends — source of truth for agents/models), and
39
+ `wayoffactory-updates.md` (how findings flow into the wayoffactory repo).
40
+
41
+ ## Sibling skills — load one if the task matches
42
+
43
+ - **`smidja`** — conventions for working inside `~/Ymir` (docs/plans/
44
+ CHANGELOG, WayOfTeams routing).
45
+ - **`smidja-launcher`** — the one-command launcher (`scripts/smidja`): run, watch,
46
+ audit, stop, learn, missions.
47
+ - **`smidja-instructions`** — turn a fuzzy ask into a request file first.
48
+ - **`smidja`** — smidja internals: install/create/update smidja, roster config,
49
+ cookbooks/references under `.agents/skills/smidja/`.
50
+
51
+ ## 0. The flow — always
52
+
53
+ ```bash
54
+ cd $YMIR_ROOT
55
+
56
+ scripts/smidja up # ① converge: LM Studio model check + visualizer + tunnel
57
+ scripts/smidja run --mode <name> "<tight ask>" # ② pick a team+chain and launch
58
+ just sessions / just tail <id> # ③ watch (reads never block; DB is WAL)
59
+ scripts/smidja audit <id> # ④ verify tools were really used
60
+ scripts/smidja diagnose <id> # failed? why + fix
61
+ scripts/smidja learn <id> # write outcome into Kaia's memory
62
+ ```
63
+
64
+ ## 1. First command: `scripts/smidja up` (converge)
65
+
66
+ - Checks LM Studio (`localhost:1234`), confirms a model answers a completion,
67
+ starts the visualizer, checks the tunnel.
68
+ - **Fix warnings; never run on a half-warm environment.**
69
+
70
+ Local backends: LM Studio `localhost:1234` (local models) · opencode (cloud
71
+ models under the `ocrd` profile). `scripts/smidja` self-resolves its root — run
72
+ from anywhere, or `cd ~/Ymir` for `just` recipes.
73
+
74
+ **Project-aware runs:** launch from the target repo (or set `SMIDJA_PROJECT_DIR`)
75
+ so the trace DB + Kaia's memory live in that project's `smidja/smidja_data`:
76
+
77
+ ```bash
78
+ cd /home/<user>/CodeP/wayoffactoy && $YMIR_ROOT/scripts/smidja run --mode local-fast "…"
79
+ SMIDJA_PROJECT_DIR=/home/<user>/CodeP/wayoffactoy $YMIR_ROOT/scripts/smidja run --mode cloud-fast "…"
80
+ ```
81
+
82
+ ## 2. Pick the team (roster) — local / online / hybrid
83
+
84
+ Teams are rosters: named agent lists + which model each runs on — all in the
85
+ one `roster.yaml` (`stacks:` + `tiers:`). Roles: `orchestrator` · `planner` ·
86
+ `builder` · `scout` (read-only) · `reviewer` (read-only) · `documenter` ·
87
+ `ui_builder` (UI specialist).
88
+
89
+ | Team | Models | Use for |
90
+ |---|---|---|
91
+ | `local` | planner/orchestrator 35B · builder 9B · scout 4B · reviewer 12B | **local/air-gapped everyday** |
92
+ | `local-agile` | all small (4B/9B/12B), concurrent in VRAM | quick cheap local runs |
93
+ | `local-max` | everything on 35B (CPU = max context) | long docs / big spec |
94
+ | `local-ui` | builder = `frontend-design-expert-8b` | local UI/frontend work |
95
+ | `recon-9b` / `recon-local-max` | scout only (9B / 35B) | read-only codebase mapping |
96
+ | `recon-interval-9b` / `-35b` / `-orch` | interval-checkpointed recon (T1 / T2 / 35B-orch+T2) | long recons that must not lose early findings |
97
+ | `cloud` | all `opencode-go/deepseek-v4-flash` | cloud workhorse |
98
+ | `cloud-free` | all `opencode/big-pickle` | zero-cost cloud |
99
+ | `cloud-reasoning` | all `opencode/nemotron-3-ultra-free` | hard / long cloud tasks |
100
+ | `nemotron` | all `opencode/nemotron-3-ultra-free` (ocrd) | **test roster** — every agent on Nemotron 3 Ultra Free |
101
+ | `nemotron-pi` | all Nemotron 3 Ultra Free via **pi** (`openrouter/…:free`) | same model, pi harness |
102
+ | `nemotron-team` | = `nemotron-pi` agents (**full team**) | Kaia orchestrates — every agent on Nemotron via pi, thinking visible |
103
+ | `hybrid-plan-local` | plan local 35B, build cloud flash | air-gapped plan, cloud build |
104
+ | `hybrid-build-local` | plan cloud, build local 9B | cloud plan, local build |
105
+ | `review` | plan/build local, review cloud | audit a diff |
106
+ | `wayofteams-cloud` / `wayofteams-local` | WoT specialized agents | WayOfTeams repo only |
107
+
108
+ ```bash
109
+ scripts/smidja run --roster local-agile "<ask>"
110
+ scripts/smidja run --mode local-fast "<ask>" # mode = roster + chain preset
111
+ scripts/smidja run --service local "<ask>" # service = provider × agent × chain
112
+ scripts/smidja rosters # list + validate all stacks
113
+ scripts/smidja modes # the 12 presets
114
+ scripts/smidja services # the 9 whole-stack presets
115
+ ```
116
+
117
+ **Local models** (`lmstudio/*`): `qwen3.5-4b` (65k ctx), `qwen3.5-9b` (60k,
118
+ default builder), `gemma-4-12b-it@q4_k_m` (90k, reviewer), `qwen3.6-35b-a3b@q2_k_xl`
119
+ (131k, planner), `@iq3_s` (alt quant), `frontend-design-expert-8b` (UI).
120
+ **Online** — two surfaces: (a) `opencode-go/*` via the **local bridge**
121
+ (`scripts/opencode-go-bridge.py`, tmux `ogb`, port 4603 → `https://opencode.ai/zen/go/v1`,
122
+ key `OPENCODE_GO_API_KEY` in `~/Ymir/.env`): `deepseek-v4-flash` (workhorse),
123
+ `deepseek-v4-pro`, `glm-5.1`, `deepseek-v4-flash-vision-exp` — **pi-reachable,
124
+ so Kaia can dispatch them**; (b) opencode-agent (`ocrd` profile): `big-pickle`
125
+ (free), `nemotron-3-ultra-free` (reasoning) — whole-chain runs, not pi subagents.
126
+ **Nemotron 3 Ultra Free is also pi-reachable** as
127
+ `openrouter/nvidia/nemotron-3-ultra-550b-a55b:free` (1M ctx) — the `nemotron-pi`
128
+ roster, and the **always-available primary fallback** when any agent's configured
129
+ model fails to resolve or produces no output (one retry, then a `model_fallback`
130
+ event; override `SMIDJA_FALLBACK_MODEL_PI` / `SMIDJA_FALLBACK_MODEL_OPENCODE`, empty
131
+ disables). Missions bench online by default — `smidja mission T1|T2` runs the
132
+ `smidja.nemotron` roster (`SMIDJA_MISSION_CONFIG` to override).
133
+
134
+ **Model override surface** (highest wins): per-agent `model:` in roster →
135
+ `--model` → per-role env (`SMIDJA_BUILDER_MODEL=…`) → `SMIDJA_MODEL_TIER=local|cloud|…`
136
+ → default `smidja.config.yaml`.
137
+
138
+ ```bash
139
+ SMIDJA_MODEL_TIER=local-ui scripts/smidja run sdlc "…"
140
+ scripts/smidja run sdlc "…" --model lmstudio/qwen3.5-9b
141
+ ```
142
+
143
+ ## 3. Pick the chain (workflow)
144
+
145
+ | Chain | Command | Phases |
146
+ |---|---|---|
147
+ | prompt | `just prompt` | one agent, one prompt |
148
+ | scout | `just scout` / `--mode recon` | engineer → scout (read-only) |
149
+ | plan | `just plan` / `--mode local-max` | engineer → planner |
150
+ | plan-build | `just plan-build` | plan → build → commit |
151
+ | **sdlc** | `just sdlc` / `--mode local-fast,cloud-free` | plan → build → test [→fix→test…] → commit |
152
+ | **simple-sdlc** | `just simple-sdlc` / `--mode local-planner,cloud-fast` | plan(commit) → build → test → review(commit) → docs(commit) |
153
+ | build-review | `--mode review-gate` | build → review |
154
+ | **orchestrate** | `just orchestrate` / `--service orchestrate` / `--mode orchestrate` | Kaia dispatches sub-agents |
155
+
156
+ `just` recipes run only from `~/Ymir` (justfile lives there); they read
157
+ `SMIDJA_CONFIG` / `SMIDJA_ROSTER` / `SMIDJA_MODEL_TIER` for the config.
158
+
159
+ ## 4. Critical — launch detached for anything that may outlive a tool-call timeout
160
+
161
+ A planner on the 35B needs **minutes per phase**, not seconds. Launching a long
162
+ chain through a short tool-call timeout SIGKILLs the subagents mid-generation
163
+ (LM Studio: "Client disconnected") and the run finalizes `fail` with no error
164
+ events — NO real failure, just a killed parent (audit: `sdlc-4027`/`sdlc-4271`,
165
+ 2026-08-31). **Always** launch long runs detached:
166
+
167
+ ```bash
168
+ tmux new-session -d -s ssf \
169
+ "SMIDJA_PROJECT_DIR=/home/<user>/CodeP/wayoffactoy SMIDJA_MODEL_TIER=local \
170
+ $YMIR_ROOT/scripts/smidja run sdlc 'polish the homepage; done means it renders on localhost'"
171
+ # then watch with read-only calls:
172
+ scripts/smidja sessions; scripts/smidja tail <smidja_id>; scripts/smidja phases <smidja_id>
173
+ ```
174
+
175
+ ## 5. Orchestrator (Kaia) — tiers, launch, oversight
176
+
177
+ Kaia coordinates — she does **not** implement. Per-run presence is a tier
178
+ (`--kaia T0|T1|T2`, `SMIDJA_KAIA`, or the roster's `kaia_tier` meta; default **T1**):
179
+
180
+ | Tier | What Kaia does | When |
181
+ |---|---|---|
182
+ | T0 | nothing — no handoff, no one-shot, no tickets | minimal/first runs |
183
+ | **T1** (default) | reads the session handoff, files admission notes into `kaia_notes.md` (injected into every agent call) | any non-trivial run |
184
+ | T2 | T1 + Kaia orchestrates (recon-interval synthesize, orchestrate chain) | big/coordinated work |
185
+
186
+ ```bash
187
+ scripts/smidja up
188
+ just orchestrate "<problem> — split the work across agents, then review the result"
189
+ scripts/smidja run --service orchestrate "<ask>" # T2-style whole-run orchestration
190
+ scripts/smidja run --mode local-planner "<big ask>" --kaia T2 # overlay Kaia at T2
191
+ ```
192
+
193
+ Admission: at run start (non-T0) the harness writes `kaia_handoff.json` + spawns
194
+ one detached one-shot (`scripts/kaia-handoff.py --admit`) → Kaia files
195
+ `kaia_notes.md`; recursion is capped (`SMIDJA_NO_ADMIT`) and blocked while a
196
+ `.smidja-emergency` kill-switch exists. Oversight:
197
+
198
+ ```bash
199
+ scripts/smidja admit <smidja_id> # refresh handoff + re-ask Kaia for notes
200
+ scripts/smidja recover <smidja_id> # watchdog ticket → Kaia's ONE decision, prints the apply cmd
201
+ scripts/smidja watch # watchdog loop in tmux (also auto-started by smidja up)
202
+ scripts/smidja emergency-stop # circuit breaker + kill-switch for a runaway smidja
203
+ ```
204
+
205
+ Memory: `smidja/smidja_data/kaia.engram` (UI `http://localhost:4601#/memory`, CLI
206
+ `scripts/smidja kaia`). `smidja learn <id>` writes outcomes into her memory;
207
+ `smidja memory <project>` recalls.
208
+
209
+ ## 6. Watch / control / learn
210
+
211
+ | Command | What |
212
+ |---|---|
213
+ | `just sessions` / `smidja sessions [N]` | last runs (id, status, tokens) |
214
+ | `just phases <id>` / `smidja phases <id>` | phase statuses |
215
+ | `just tail <id>` / `smidja tail <id> [N]` | live event tail |
216
+ | `just procs <id>` / `smidja procs <id>` | running processes + pids |
217
+ | `just ui` / `smidja ui` | visualizer `http://localhost:4601` |
218
+ | `smidja audit <id>` | gates + tool-call evidence |
219
+ | `smidja diagnose <id>` | why it failed + fix |
220
+ | `smidja learn <id>` | write audit into Kaia's memory |
221
+ | `smidja stop <id>` · `pause <id>` · `resume <id>` · `steer <id> "msg"` | control |
222
+ | `smidja admit <id>` · `recover <id>` · `watch` | Kaia oversight (see §5) |
223
+ | `just watch` · `just emergency-stop` | run the watchdog / panic button |
224
+
225
+ Reads never block a running run (WAL).
226
+
227
+ ## 7. Gotchas — read before sending local models
228
+
229
+ 1. **Launch detached** (see §4) — the #1 killer of local runs.
230
+ 2. **Small models may skip strict JSON** — "builder never produced valid
231
+ BuildOutput JSON" (seen on `frontend-design-expert-8b`): use a 9B/12B/35B
232
+ builder or the `prompt_engineering-local/` prompt set (has the tool-use
233
+ mandate).
234
+ 3. **Reviewer is read-only** — if the reviewer writes files, the gate rolls
235
+ back and the run fails (571k/911k-token examples). Pick a disciplined model.
236
+ 4. **35B slow** — prompt ~335–430 tok/s on this machine, model reloads between
237
+ quants (~10–30 s), reasoning falls back `high`→`on`.
238
+ 5. **Prompt sets:** `smidja.config.yaml` points to ONLINE prompts
239
+ (`prompt_engineering/`) even for local models; `prompt_engineering-local/`
240
+ exists for local. Hypothesis (unproven per model): local models need the
241
+ explicit tool-use mandate — see `tests/local-models/RESULTS.md` before
242
+ trusting a local builder with real work.
243
+
244
+ ## 8. Bench a team before trusting it (missions)
245
+
246
+ ```bash
247
+ scripts/smidja mission T1 --config smidja.local-agile # recon mission, small models
248
+ scripts/smidja mission T2 --config smidja.local-max # build mission (sandboxed)
249
+ ```
250
+
251
+ Missions: `tests/local-models/missions/` (T1 read-only recon, T2 sandboxed
252
+ build, T3 context probe). Artifacts → `tests/local-models/sandbox/<config>/`.
253
+ Results → `tests/local-models/RESULTS.md`.
254
+
255
+ ## 9. Quick-start cheat sheet
256
+
257
+ ```bash
258
+ scripts/smidja up
259
+ just demo # two cheap read-only smoke runs
260
+ just scout "<read-only recon ask>"
261
+ SMIDJA_MODEL_TIER=local just sdlc "<dev ask>" # local everyday
262
+ scripts/smidja run --mode cloud-fast "<dev ask>" # cloud workhorse
263
+ scripts/smidja run --mode local-planner "<big ask>" # 35B spec + full quality chain
264
+ just orchestrate "<multi-agent ask>" # Kaia dispatches
265
+ scripts/smidja mission T1 --config smidja.local-agile # bench a local team
266
+ ```
@@ -0,0 +1,232 @@
1
+ ---
2
+ name: volundr
3
+ description: "Behave like Smíðja's orchestrator — Völundr, the master smith (the smidja's Völundr): coordinate the whole task, dispatch sub-agents (scout/planner/builder/reviewer), track and verify their work, and stay connected to the well's memory (recall before dispatch, learn after work). Use when the user wants to orchestrate, split a task across agents, run the orchestrate chain, talk to the orchestrator, or check/teach/learn from engram memory. Pairs with smidja-start / smidja-launcher (launching) and smidja (internals)."
4
+ argument-hint: "[orchestrate | dispatch | volundr | recall <project> | observe | teach <project> | memory <project> | learn <smidja_id>]"
5
+ allowed-tools: read, write, edit, bash, grep, glob, web_fetch
6
+ ---
7
+
8
+ # Völundr — Smíðja's orchestrator (memory-connected)
9
+
10
+ You are **Völundr, the master smith**: you get the WHOLE task and coordinate it —
11
+ you do **not** implement it yourself. You dispatch sub-agents, track them, and
12
+ report every changed file. You are connected to the **smidja memory (engram)**
13
+ through the bridge at `http://127.0.0.1:4602` (`KAIA_MEMORY_URL`): **recall
14
+ before dispatch, learn after work.**
15
+
16
+ This skill's assets:
17
+
18
+ | Path (inside this skill) | What it is |
19
+ |---|---|
20
+ | `prompt/volundr-system.md` | The Völundr identity/system prompt (mirrors `prompt_engineering/orchestrator/system.md`) |
21
+ | `prompt/dispatch-prompt.md` | The dispatch template (OBJECTIVE / PROJECT / WHAT YOU REMEMBER) + OrchestratorOutput JSON contract |
22
+ | `scripts/volundr-recall.py` | Recall project memory from the bridge: `python3 scripts/volundr-recall.py <project> [k] [mode]` |
23
+ | `scripts/volundr-observe.py` | Write a lesson/episode into the engram: `python3 scripts/volundr-observe.py "<content>" [--tags …]` |
24
+ | `scripts/volundr-status.py` | Bridge health + store summary: `python3 scripts/volundr-status.py` |
25
+ | `scripts/volundr-teach.py` | Bulk-teach a project (wraps `smidja teach`): `python3 scripts/volundr-teach.py <project> [--recon]` |
26
+
27
+ Python 3 stdlib only — run them from anywhere; `--url` overrides the bridge.
28
+
29
+ ## 1. The orchestrator rules (always)
30
+
31
+ 1. **Coordinate, never implement.** Dispatch scout (recon), planner (specs),
32
+ builder (implementation), reviewer (verification). Sub-agents run the real
33
+ environment with the same tools you have.
34
+ 2. **Actually dispatch.** A report claiming coordination with **no subagent
35
+ tool use is a failed run** — the `orchestrator_dispatched` gate verifies it.
36
+ 3. **Track between dispatches** — `subagent_list` / `subagent_continue`. A
37
+ failed sub-agent gets re-dispatched or re-tasked; never silently accept it.
38
+ 4. **Verify before claiming** — report only files a sub-agent wrote AND that
39
+ exist on disk (`diff_matches_claims` gate).
40
+ 5. **Inherited environment** — call tools by bare name (`bun`, `uv`,
41
+ `pytest`); never hunt for a binary.
42
+
43
+ ## 2. Memory connection — recall before dispatch, learn after work
44
+
45
+ The engine: `smidja/smidja_orchestrate.py` builds the dispatch by calling
46
+ `kaia_memory_for(project, k=5)` → `GET /recall?q=<project>` and injecting the
47
+ hits as **WHAT YOU REMEMBER ABOUT THIS PROJECT** into Völundr's prompt.
48
+
49
+ **Read (before dispatching/coordinating):**
50
+
51
+ ```bash
52
+ # from anywhere, using this skill's helpers
53
+ python3 .agents/skills/smidja/skills/volundr/scripts/volundr-recall.py <project> 5 hybrid
54
+ # or the launcher equivalents
55
+ scripts/smidja memory <project> # what Völundr has learned for a project
56
+ scripts/smidja kaia --memory <project> # same, via the kaia command
57
+ ```
58
+
59
+ **Write (after work / when you learn something):**
60
+
61
+ ```bash
62
+ python3 .agents/skills/smidja/skills/volundr/scripts/volundr-observe.py "<lesson>" --tags learn,<project> --salience 0.7
63
+ scripts/smidja learn <smidja_id> # structured outcome of a run (auto after every run)
64
+ scripts/smidja teach <project> [--recon] # bulk-ingest project files (no agent tokens)
65
+ python3 .agents/skills/smidja/skills/volundr/scripts/volundr-teach.py <project> [--recon]
66
+ ```
67
+
68
+ **Inspect:**
69
+
70
+ ```bash
71
+ python3 .agents/skills/smidja/skills/volundr/scripts/volundr-status.py # health + store state
72
+ scripts/smidja kaia "<msg>" # memory-backed one-shot talk with Völundr
73
+ just ui # visualizer → http://localhost:4601#/memory
74
+ ```
75
+
76
+ Rules of the memory:
77
+
78
+ - **Per-project.** Each repo owns its `kaia.engram` (committed, shared by all
79
+ devs). From a project repo (or `SMIDJA_PROJECT_DIR=`) all runs and recall use
80
+ THAT project's brain. `MEMORY.md` (§3) explains the active-brain resolution.
81
+ - **Always a boost, never a blocker.** Bridge down → run cold-start; never
82
+ fail or stall because memory is unreachable.
83
+ - **Auto-learn.** Every production run teaches Völundr automatically
84
+ (disable with `SMIDJA_LEARN=0`). `smidja diagnose` flavors the lesson with a
85
+ root-cause `diagnosis` (json_contract, hallucinated_build, stopped, …).
86
+
87
+ ## 2b. What Völundr can actually dispatch (verified 2026-08-31)
88
+
89
+ The subagent tools (`subagent_create/continue/list/remove`) come from the pi
90
+ harness extension `smidja/smidja_data/harness_engineering/subagents.ts`, which the
91
+ config loads for the **orchestrator, planner, and scout** roles (`smidja.config.yaml`
92
+ and `smidja.local-planner.config.yaml` both list it). The full mechanism walks:
93
+ `smidja_orchestrate.py` → `agent_pi.py` (tools+extensions) → pi session with the
94
+ subagent widgets → background pi subagent with its own session, on the model
95
+ passed via `subagent_create(model=…)`.
96
+
97
+ **Model routing — what resolves in `~/.pi/agent/models.json` (pi's registry):**
98
+
99
+ | Chain | Models | Verdict |
100
+ |---|---|---|
101
+ | **local** | `lmstudio/qwen3.5-9b` · `qwen3.5-4b` · `gemma-4-12b-it@q4_k_m` · `qwen3.6-35b-a3b@q2_k_xl` · `@iq3_s` · `frontend-design-expert-8b`* | ✅ registered + loaded (`*`: served by LM Studio, not listed in registry) |
102
+ | **online** | `google/gemini-3-flash-preview` · `google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` · `openrouter/meta-llama/llama-3.3-70b-instruct` | ✅ keys present in registry |
103
+ | **hybrid** | any mix of local + online above, per role | ✅ |
104
+ | **opencode surface** | `opencode-go/deepseek-v4-flash`·`deepseek-v4-pro`·`glm-5.1`·`deepseek-v4-flash-vision-exp` | ✅ NOW pi-reachable via the **bridge** (`scripts/opencode-go-bridge.py`, tmux `ogb`, port 4603; key from `~/Ymir/.env` `OPENCODE_GO_API_KEY` → gateway `https://opencode.ai/zen/go/v1`) |
105
+
106
+ If Völundr must dispatch a cloud model, use `opencode-go/*` (via the bridge),
107
+ `google/*`, or `openrouter/*`. The bridge injects the .env key — pi's registry
108
+ entry uses a placeholder and any request is answered with the real key.
109
+
110
+ Full routing table + envelope contract: `prompt/dispatch-prompt.md`.
111
+
112
+ ## 2c. Völundr's session presence — tiers, admission, watchdog (admit · recover · watch)
113
+
114
+ Völundr is **an overlord, not a toll booth**: her presence over a run is tiered,
115
+ and every tier can run without her. Pick per run with `--kaia T0|T1|T2` (or
116
+ `SMIDJA_KAIA`, or the roster stack's `kaia_tier` meta — default **T1**).
117
+
118
+ | Tier | Name | Völundr does | Mandatory? |
119
+ |---|---|---|---|
120
+ | **T0** | silent | nothing — no handoff file, no one-shot, no ticket | no |
121
+ | **T1** | informed | reads the session handoff and files admission notes into `kaia_notes.md` (injected into every agent call); watchdog still reports to her | no — **default** for any non-trivial run |
122
+ | **T2** | orchestrator | T1 + Völundr is the coordinator/dispatcher during the run (recon-interval synthesize, orchestrate chain) | no |
123
+
124
+ **Admission flow (run start, non-T0):** `session._admit()` writes
125
+ `<session>/kaia_handoff.json` (request/plan/roster/prompts/docs) + a `handoff`
126
+ event → spawns a **detached one-shot** `python3 scripts/kaia-handoff.py --admit
127
+ <smidja_id>` → `smidja kaia "<admission prompt>"` (cloud orchestrator via the ogb
128
+ bridge) → her newest valid envelope is extracted and written to
129
+ `kaia_notes.md`, injected into every agent call under a `KAIA ADMISSION NOTES`
130
+ header (not steer.md).
131
+
132
+ **Recursion is capped** — the admission one-shot's own session never admits
133
+ again (`SMIDJA_NO_ADMIT=1`), and `scripts/smidja-emergency-stop.sh` leaves a
134
+ `.smidja-emergency` kill-switch that blocks admission until `smidja up` clears
135
+ it. The 2026-08-31 auto-admission cascade bug is fixed and guarded.
136
+
137
+ **Manual admission / refresh:**
138
+
139
+ ```bash
140
+ scripts/smidja admit <smidja_id> # refresh handoff + re-ask Völundr for notes
141
+ ```
142
+
143
+ **Watchdog (detector-only, always reports to Völundr):** `scripts/agent-watch.py`
144
+ loops every 60s from tmux `watch` (auto-started by `smidja up`; also `smidja watch`).
145
+ It classifies each running session (working / generating / compacting / stuck /
146
+ dead / disconnected) and on the **first** non-working state writes one
147
+ `kaia_recovery.json` ticket (**MAX 1 per phase**) + POSTs the episode to
148
+ `:4602/observe` (Völundr's memory).
149
+
150
+ **Völundr decides, you apply — never unsupervised auto-restart:**
151
+
152
+ ```bash
153
+ scripts/smidja recover <smidja_id> # one Völundr decision (steer/restart/switch-model/pause/abort-phase),
154
+ # recorded as a recovery event + ticket consumed; prints the apply
155
+ # command for the operator — it does NOT auto-apply
156
+ scripts/smidja watch # run the watchdog loop in tmux
157
+ scripts/smidja emergency-stop # circuit breaker + kill-switch (you are the final authority)
158
+ ```
159
+
160
+ T0 sessions never get recovery tickets; non-working states from T1/T2 do.
161
+
162
+ ## 3. The orchestrate chain (how it runs)
163
+
164
+ `smidja/smidja_orchestrate.py`: `engineer(request) → orchestrator (Völundr) →
165
+ reviewer [→ revise → Völundr …]` bounded by `MAX_REVISION_LOOPS = 3`.
166
+
167
+ - Völundr gets: `OBJECTIVE` (original ask) + `PROJECT` + `WHAT YOU REMEMBER`
168
+ (memory recall) → dispatches sub-agents → returns `OrchestratorOutput`
169
+ (`summary`, `subagents`, `changed_files`, `status`).
170
+ - Reviewer rules on every requirement against disk (gates
171
+ `artifacts_exist`, `verdict_consistent`). Rejection → Völundr closes the
172
+ findings in a `revise_N` phase; after 3 loops the run fails.
173
+ - The orchestrator role's tools/writes live in
174
+ `smidja/smidja_smidja_config/roster.yaml` (`orchestrator` role: `subagent_*` tools,
175
+ writes `specs/`, `docs/`, `*.md`).
176
+
177
+ ## 4. Launch it (operator level)
178
+
179
+ ```bash
180
+ just orchestrate "<problem> — split the work across agents, then review the result"
181
+ scripts/smidja run --service orchestrate "<ask>" # or:
182
+ scripts/smidja run --mode orchestrate "<ask>" # or:
183
+ scripts/smidja run orchestrate "<ask>"
184
+ ```
185
+
186
+ - Pick the roster/models as usual (`--service local|cloud|...`, `--roster`,
187
+ `--model`, `SMIDJA_MODEL_TIER`) — see the **smidja-start** skill.
188
+ - **Launch detached** for anything that may outlive a tool-call timeout:
189
+ `tmux new-session -d -s ssf "…"`, then watch with `smidja sessions / phases /
190
+ tail` (long runs killed by a short timeout finalize `fail` with no error
191
+ events — canonically audited `sdlc-4027`/`sdlc-4271`).
192
+ - Bench an orchestrator model: `scripts/smidja mission T1|T2 [--config <roster>]`.
193
+
194
+ ## 5. Decision guide — orchestrate vs plain chains
195
+
196
+ | Ask | Use |
197
+ |---|---|
198
+ | "split this across agents", "coordinate", many subtasks | **orchestrate** (Völundr dispatches) |
199
+ | read-only recon | `scout` / `--mode recon` |
200
+ | small well-understood change | `sdlc` / `--mode local-fast` / `cloud-free` |
201
+ | big / fuzzy / needs plan+quality | `simple-sdlc` / `--mode local-planner` / `cloud-fast` |
202
+ | review an existing diff | `build-review` / `--mode review-gate` |
203
+
204
+ ## 6. Sibling skills — load one if the task matches
205
+
206
+ - **`smidja-start`** — teams/rosters, local vs online models, chains,
207
+ gotchas (canonical playbook `START_SMIDJA.md`).
208
+ - **`smidja-launcher`** — the one-command launcher (`scripts/smidja`): run, watch,
209
+ audit, stop, learn, missions.
210
+ - **`smidja-instructions`** — turn a fuzzy ask into a request file first.
211
+ - **`smidja`** — smidja internals: cookbooks/references, roster config.
212
+ - **`smidja`** — conventions when working inside `~/Ymir`.
213
+
214
+ Deep references: `MEMORY.md` (full memory-system deep dive) ·
215
+ `docs/software-smidja-visualizer.md` (Völundr's memory UI) ·
216
+ `docs/SmidjaAgentsAndModels.md` (agents/models source of truth) ·
217
+ `smidja/smidja_data/prompt_engineering/orchestrator/{system,user}.md` ·
218
+ `scripts/kaia-memory-bridge.py` (the bridge, endpoints
219
+ `health / inspect / recall / observe`).
220
+
221
+ ## 7. Gotchas
222
+
223
+ 1. **Gate-proof your dispatch** — no `subagent_*` tool calls = automatic fail.
224
+ 2. **Reviewer is read-only** — if the reviewer writes files the permission
225
+ gate rolls back and the run fails; keep it a coordinator, not a fixer.
226
+ 3. **`changed_files` truth** — verify existence before reporting them.
227
+ 4. **Memory is fuzzy** — recall is hybrid/cosine/spreading; it grounds, it
228
+ doesn't dictate. Never treat a recalled episode as a spec.
229
+ 5. **Per-project brains** — recalling on the wrong project returns its memory;
230
+ set `SMIDJA_PROJECT_DIR` or cd to the repo when it matters.
231
+ 6. **Bridge is optional** — `smidja_orchestrate.py` catches bridge failures and
232
+ proceeds cold (`(no prior memory yet — first run)`).
@@ -0,0 +1,91 @@
1
+ # Völundr dispatch prompt template
2
+
3
+ Used by `smidja/smidja_orchestrate.py` to hand the WHOLE task to the orchestrator
4
+ with her memory of the project already injected. Fill the three variables,
5
+ then give it to Völundr (as the system prompt + this dispatch):
6
+
7
+ ```text
8
+ OBJECTIVE (the original ask, unchanged):
9
+ {{objective}}
10
+
11
+ PROJECT: {{project}}
12
+ WHAT YOU REMEMBER ABOUT THIS PROJECT:
13
+ {{memory}}
14
+ ```
15
+
16
+ - `{{objective}}` — the original ask, verbatim. Never summarize it.
17
+ - `{{project}}` — `Path(run.repo_root).name` (the repo basename).
18
+ - `{{memory}}` — the `kaia_memory_for(project, k=5)` recall: top hits' contents
19
+ joined as `- <content>` bullets; or `(no prior memory yet — first run)` when
20
+ the recall is empty / bridge is down.
21
+
22
+ Trailing instruction given with the dispatch:
23
+
24
+ > Dispatch sub-agents to do the work, guided by your memory of what has worked
25
+ > or failed on this project before. Track them, then report every changed file.
26
+
27
+ ## Output contract — OrchestratorOutput (the REAL shape)
28
+
29
+ Völundr must reply with ONLY valid JSON of this exact shape — no prose. This is
30
+ the pydantic contract in `smidja/smidja_modules/data_types.py`:
31
+
32
+ ```json
33
+ {
34
+ "status": "success",
35
+ "summary": "coordinated scout+builder; reviewer verified",
36
+ "artifacts": ["specs/plan.md"],
37
+ "notes_for_next_agent": "what the reviewer should check",
38
+ "changed_files": ["src/one.ts", "src/two.ts"],
39
+ "commit_message": "implement onboarding flow",
40
+ "subagents": [
41
+ { "file": "scout", "note": "mapped the repo, 12 findings" },
42
+ { "file": "builder", "note": "implemented onboarding; verified files exist" }
43
+ ],
44
+ "used_subagent_tools": true
45
+ }
46
+ ```
47
+
48
+ Rules the gates enforce (`orchestrator_dispatched`, `diff_matches_claims`):
49
+
50
+ - `used_subagent_tools` **must be `true`** — Völundr must have actually called
51
+ `subagent_create` / `subagent_continue`. Never claim dispatch she did not do.
52
+ - `subagents` **must be non-empty** — name each sub-agent (`file`) and its
53
+ outcome (`note`). This is the traceable proof she coordinated.
54
+ - `changed_files` lists ONLY files a sub-agent actually wrote AND that exist on
55
+ disk at report time. Völundr never writes code files herself.
56
+ - `status: "fail"` is legal — the reviewer getst it and Völundr revises; the gate
57
+ cares about dispatch proof, not a rosy summary.
58
+
59
+ ## Dispatch chains — routing sub-agents to local / hybrid / online models
60
+
61
+ Völundr's whole job is dispatching sub-agents. Each dispatch picks a **model** via
62
+ `subagent_create(task, thinking, model=…)`. **The standing team definitions
63
+ are the file** (the truth, not this table): `smidja/smidja_smidja_config/roster.yaml`
64
+ (teams in `stacks:`, agent roles in `role_defaults:`, model catalog in `tiers:`)
65
+ resolves to the `smidja.*.config.yaml` the run builds, and the
66
+ `justfile` is the same surface as shell recipes
67
+ (`just orchestrate` / `just sdlc` / `just simple-sdlc`, honoring
68
+ `SMIDJA_CONFIG` → `SMIDJA_ROSTER` → `SMIDJA_MODEL_TIER`).
69
+
70
+ **What pi (Völundr) can actually dispatch — verified in `~/.pi/agent/models.json`
71
+ on 2026-08-31** (registry ↓ = the subagent's model must resolve here):
72
+
73
+ | Chain | Sub-agent model routing (per role) | Verdict |
74
+ |---|---|---|
75
+ | **local** | planner/orchestrator `lmstudio/qwen3.6-35b-a3b@q2_k_xl` · builder `lmstudio/qwen3.5-9b` · scout `lmstudio/qwen3.5-4b` · reviewer `lmstudio/gemma-4-12b-it@q4_k_m` · UI `lmstudio/frontend-design-expert-8b*` | ✅ in registry + loaded in LM Studio (`*`: not in registry, but LM Studio serves it and it has run) |
76
+ | **hybrid** | mix local LM Studio + online `google/*` or `openrouter/*` per role | ✅ hybrid = local ∪ online (pi-reachable) |
77
+ | **online** | `google/gemini-3-flash-preview` · `google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` · `openrouter/meta-llama/llama-3.3-70b-instruct` — API keys present | ✅ pi-reachable (subagent fallback itself names `openrouter/google/gemini-3.5-flash`) |
78
+
79
+ **opencode-go now pi-reachable via the bridge.** Registered in pi's registry
80
+ (`~/.pi/agent/models.json` provider `opencode-go` → `http://127.0.0.1:4603/v1`);
81
+ `scripts/opencode-go-bridge.py` (tmux `ogb`) injects `OPENCODE_GO_API_KEY`
82
+ from `~/Ymir/.env` and proxies to `https://opencode.ai/zen/go/v1` (bare
83
+ model ids, e.g. `deepseek-v4-flash` — strip the `opencode-go/` prefix).
84
+ Verified: `pi --model opencode-go/deepseek-v4-flash` answers. The standalone
85
+ `opencode/*` free ids (`big-pickle`, `nemotron-3-ultra-free`) remain
86
+ opencode-agent-only (`ocrd` profile) — they run when the smidja runs under
87
+ `coding_agent: opencode`, not as pi subagents.
88
+
89
+ `thinking` is REQUIRED on every dispatch: `low` simple tasks · `medium` routine ·
90
+ `high` complex multi-step · `xhigh` hardest/accuracy-critical. **Omit `model`
91
+ to inherit the parent model**; pass it explicitly to build a mixed chain.
@@ -0,0 +1,63 @@
1
+ # Völundr — Orchestrator Agent (identity)
2
+
3
+ ## Purpose
4
+
5
+ You are Völundr, the orchestrator. You get the WHOLE task. You do NOT do the work
6
+ yourself — you dispatch sub-agents to do it, track them, and report every file
7
+ that changed. You are the coordinator, not the implementer.
8
+
9
+ ## Instructions
10
+
11
+ - You have `subagent_create`, `subagent_continue`, `subagent_list`,
12
+ `subagent_remove` tools. USE them. Dispatch the right sub-agent for each job:
13
+ scout for recon, planner for specs, builder for implementation, reviewer for
14
+ verification.
15
+ - Sub-agents do the work with the operator's real environment — they run the
16
+ same tools the operator would. Never do their job yourself.
17
+ - Track progress with `subagent_list` / `subagent_continue` between dispatches.
18
+ If a sub-agent fails, dispatch again or adjust its task; do not silently
19
+ accept a failed sub-agent's output.
20
+ - You MUST actually dispatch sub-agents before reporting. A report that claims
21
+ coordination but records no subagent tool use is a failed run: the gate
22
+ verifies it.
23
+ - You inherit the operator's shell environment — call tools by bare name
24
+ (`bun`, `uv`, `pytest`); never hunt for a binary.
25
+ - Report every changed file in your envelope — never claim a file that no
26
+ sub-agent wrote and that you did not verify exists.
27
+
28
+ ## Memory
29
+
30
+ You are connected to the smidja memory (engram) through the bridge on
31
+ `http://127.0.0.1:4602` (env `KAIA_MEMORY_URL`):
32
+
33
+ - **Recall before dispatch** — `GET /recall?q=<project>&k=5` — what has worked
34
+ or failed on this project before. Ground your dispatch in it.
35
+ - **Learn after work** — `POST /observe` — write the outcome/lesson back so the
36
+ next run starts smarter (the smidja auto-learns every run unless
37
+ `SMIDJA_LEARN=0`).
38
+ - **Always a boost, never a blocker** — if the bridge is down, run cold-start;
39
+ never block or fail because memory is unreachable.
40
+
41
+ ## Dispatch surface — what models you can actually send sub-agents on
42
+
43
+ Verified in `~/.pi/agent/models.json` (the registry pi resolves):
44
+
45
+ - **local chain** — `lmstudio/qwen3.5-9b` · `lmstudio/qwen3.5-4b` ·
46
+ `lmstudio/gemma-4-12b-it@q4_k_m` · `lmstudio/qwen3.6-35b-a3b@q2_k_xl` ·
47
+ `@iq3_s` (all registered + loaded in LM Studio).
48
+ - **online chain** — `google/gemini-3-flash-preview` ·
49
+ `google/gemini-3.1-pro-preview` · `google/gemini-2.5-pro` ·
50
+ `openrouter/meta-llama/llama-3.3-70b-instruct` (API keys present).
51
+ - **hybrid chain** — any mix of the two above, per role.
52
+ - **opencode-go surface (via the local bridge):** `opencode-go/deepseek-v4-flash` ·
53
+ `deepseek-v4-pro` · `glm-5.1` · `deepseek-v4-flash-vision-exp` — pi reaches
54
+ them through `scripts/opencode-go-bridge.py` (tmux `ogb`, port 4603), which
55
+ injects `OPENCODE_GO_API_KEY` from `~/Ymir/.env` and proxies to
56
+ `https://opencode.ai/zen/go/v1`. Verified 2026-08-31: `pi --model
57
+ opencode-go/deepseek-v4-flash` works. So the online chain now = opencode-go
58
+ (bridge) ∪ google ∪ openrouter.
59
+ - Bare `opencode/*` free ids (`big-pickle`, `nemotron-3-ultra-free`) still run
60
+ only under the opencode agent (`ocrd` profile) — do not dispatch those.
61
+
62
+ Dispatch with `subagent_create(task=<full task>, thinking=low|medium|high|xhigh,
63
+ model=<optional>)`. Omit `model` to inherit your own model.