vibe64 0.1.39 → 0.1.41

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 (262) hide show
  1. package/bin/run.js +1955 -1855
  2. package/bin/server.js +136 -112
  3. package/bin/upgrade-state.js +5514 -5343
  4. package/dist/assets/GithubBrowserTabs-YvIe2BdE.js +1 -0
  5. package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
  6. package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
  7. package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
  8. package/dist/assets/VAlert-gwuhYlYb.js +1 -0
  9. package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
  10. package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
  11. package/dist/assets/VBtn-BhVEwXLX.js +1 -0
  12. package/dist/assets/VCard-C3Hx769y.js +1 -0
  13. package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
  14. package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
  15. package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
  16. package/dist/assets/VChip-VVdtjfq-.js +1 -0
  17. package/dist/assets/VDialog-CQDhjRiV.js +1 -0
  18. package/dist/assets/VDivider-Dq25WsKu.js +1 -0
  19. package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
  20. package/dist/assets/VMenu-CDcBLYWR.js +1 -0
  21. package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
  22. package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
  23. package/dist/assets/VRow-BskP28jR.js +1 -0
  24. package/dist/assets/VSelect-D3oLvCcB.js +2 -0
  25. package/dist/assets/VSheet-DxYEFfnM.js +1 -0
  26. package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
  27. package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
  28. package/dist/assets/VSwitch-BxGuGypi.js +1 -0
  29. package/dist/assets/VTextField-C0b_0cSa.js +1 -0
  30. package/dist/assets/VTextField-F6unyhrS.css +1 -0
  31. package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
  32. package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
  33. package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
  34. package/dist/assets/Vibe64AuthSettingsButton-DLdfT68V.js +5 -0
  35. package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
  36. package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
  37. package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
  38. package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
  39. package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
  40. package/dist/assets/Vibe64DashboardShell-DMPz6fIx.js +1 -0
  41. package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-BCEIOlSg.js} +3 -3
  42. package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
  43. package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
  44. package/dist/assets/Vibe64OutputControls-DMoqL0VD.js +8 -0
  45. package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-BdwRwbxp.js} +2 -2
  46. package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
  47. package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-ChJWUOqm.js} +4 -4
  48. package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
  49. package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
  50. package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
  51. package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
  52. package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-Bw0KfJeR.js} +1 -1
  53. package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
  54. package/dist/assets/_slug_-CAmuBm-M.css +1 -0
  55. package/dist/assets/_slug_-q9prK_gX.js +25 -0
  56. package/dist/assets/{access-WlhPvPgy.js → access-C05Nkq6r.js} +1 -1
  57. package/dist/assets/app-D1CGY9Xm.js +1 -0
  58. package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
  59. package/dist/assets/{changes-CHJjrZAc.js → changes-D17XpgGz.js} +1 -1
  60. package/dist/assets/client-BxGiylrJ.js +2 -0
  61. package/dist/assets/client-C8jwAMY9.css +1 -0
  62. package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
  63. package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
  64. package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
  65. package/dist/assets/{dashboard-CuutW8iv.js → dashboard-BXXgeQ0Q.js} +1 -1
  66. package/dist/assets/definitions-SNvFDEFS.js +1 -0
  67. package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
  68. package/dist/assets/env-B5V1EC4M.css +1 -0
  69. package/dist/assets/env-sXAQqKWk.js +1 -0
  70. package/dist/assets/health-92hh8xXh.css +1 -0
  71. package/dist/assets/health-Cr34pf2p.js +1 -0
  72. package/dist/assets/{history-1_NU8azF.js → history-N1iRZaab.js} +1 -1
  73. package/dist/assets/incoming-Bdqo8z25.css +1 -0
  74. package/dist/assets/incoming-CNwZa_yD.js +2 -0
  75. package/dist/assets/{index-irlMYzLh.css → index-B17d4wpZ.css} +1 -1
  76. package/dist/assets/index-Mxalhei8.js +138 -0
  77. package/dist/assets/{integrations-BMzWQQpa.js → integrations-BmwFvHgZ.js} +10 -10
  78. package/dist/assets/integrations-Co8WvCiD.css +1 -0
  79. package/dist/assets/issues-BbiG7dCV.js +1 -0
  80. package/dist/assets/layout-B2Ap07aa.js +1 -0
  81. package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
  82. package/dist/assets/{learning-Bdi3XRS7.js → learning-CUCuuoHM.js} +1 -1
  83. package/dist/assets/mdi-Bt90Ns76.js +1 -0
  84. package/dist/assets/placement-CQy46H3H.js +1 -0
  85. package/dist/assets/publish-4r_4K5IY.js +3 -0
  86. package/dist/assets/publish-BFTsAMCF.css +1 -0
  87. package/dist/assets/pull-requests-BjwokcU0.css +1 -0
  88. package/dist/assets/pull-requests-DY9jg3cE.js +1 -0
  89. package/dist/assets/{repository-BL_2bgzC.js → repository-DhXdoMP6.js} +1 -1
  90. package/dist/assets/ripple-EFNA8EBu.js +11 -0
  91. package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
  92. package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
  93. package/dist/assets/{settings-1rpuL7eR.js → settings-Cj4u-76p.js} +1 -1
  94. package/dist/assets/settings-D8x4KUqV.css +1 -0
  95. package/dist/assets/shared-DZETtWRH.js +2 -0
  96. package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
  97. package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
  98. package/dist/assets/useArchivedVibe64Sessions-BXNg8oES.js +1 -0
  99. package/dist/assets/useCommand-nWFczmJy.js +1 -0
  100. package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
  101. package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
  102. package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
  103. package/dist/assets/useVibe64ConversationLog-C1xjhFtS.js +1 -0
  104. package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-H6H-YJQX.js} +1 -1
  105. package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
  106. package/dist/assets/useVibe64SessionData-CnDOFFHb.js +1 -0
  107. package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-J87nJ9p5.js} +1 -1
  108. package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
  109. package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
  110. package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
  111. package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
  112. package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
  113. package/dist/assets/vibe64SessionFocus-DlN8NwcE.js +1 -0
  114. package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
  115. package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
  116. package/dist/index.html +56 -46
  117. package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
  118. package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
  119. package/docs/colleague-usage/ai-model-setups.md +159 -0
  120. package/docs/colleague-usage/ai-onboarding.md +97 -22
  121. package/docs/colleague-usage/ai-personal-use.md +41 -0
  122. package/docs/colleague-usage/auto-workflow.md +8 -3
  123. package/docs/colleague-usage/codex-context-recovery.md +2 -1
  124. package/docs/colleague-usage/coding-agent-goals.md +7 -4
  125. package/docs/colleague-usage/coding-agents.md +8 -5
  126. package/docs/colleague-usage/colleague-watches.md +15 -4
  127. package/docs/colleague-usage/colleague.md +21 -5
  128. package/docs/colleague-usage/connected-contributions.md +13 -13
  129. package/docs/colleague-usage/connected-projects.md +2 -2
  130. package/docs/colleague-usage/conversation-context.md +1 -1
  131. package/docs/colleague-usage/dashboard-navigation.md +5 -3
  132. package/docs/colleague-usage/development-env.md +21 -4
  133. package/docs/colleague-usage/file-interfaces.md +1 -1
  134. package/docs/colleague-usage/github-work.md +8 -8
  135. package/docs/colleague-usage/health-checks.md +52 -18
  136. package/docs/colleague-usage/incoming-changes.md +3 -3
  137. package/docs/colleague-usage/integrations.md +5 -3
  138. package/docs/colleague-usage/learning-course-catalogue.md +3 -3
  139. package/docs/colleague-usage/learning-environment.md +78 -56
  140. package/docs/colleague-usage/learning-mode-ui.md +31 -19
  141. package/docs/colleague-usage/learning-practice-projects.md +15 -4
  142. package/docs/colleague-usage/learning-teacher-guide.md +10 -4
  143. package/docs/colleague-usage/learning-with-colleague.md +12 -8
  144. package/docs/colleague-usage/lesson-authoring.md +13 -13
  145. package/docs/colleague-usage/lesson-step-bar.md +47 -33
  146. package/docs/colleague-usage/main-chat-approvals.md +150 -0
  147. package/docs/colleague-usage/preview-browser-checks.md +5 -1
  148. package/docs/colleague-usage/preview-starting-application.md +10 -1
  149. package/docs/colleague-usage/project-language-tools.md +16 -2
  150. package/docs/colleague-usage/project-settings.md +1 -1
  151. package/docs/colleague-usage/project-setup.md +17 -7
  152. package/docs/colleague-usage/publishing.md +187 -0
  153. package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
  154. package/docs/colleague-usage/sessions.md +18 -10
  155. package/docs/colleague-usage/set-up-linux.md +254 -0
  156. package/docs/colleague-usage/set-up-macos.md +199 -0
  157. package/docs/colleague-usage/set-up-windows.md +76 -0
  158. package/docs/colleague-usage/starter-apps.md +23 -6
  159. package/docs/colleague-usage/teaching-content.md +2 -2
  160. package/docs/colleague-usage/team-ai-access.md +108 -0
  161. package/docs/colleague-usage/temporary-chats.md +9 -7
  162. package/docs/colleague-usage/workspace-preparation.md +50 -1
  163. package/docs/templates/learn-topic/README.md +3 -3
  164. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
  165. package/docs/training-content.md +37 -15
  166. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  167. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  168. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  169. package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
  170. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  171. package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
  172. package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
  173. package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
  174. package/node_modules/@jskit-ai/kernel/package.json +1 -1
  175. package/node_modules/@jskit-ai/realtime/package.json +1 -1
  176. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  177. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  178. package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
  179. package/node_modules/@local/vibe64-accounts/package.json +2 -1
  180. package/node_modules/@local/vibe64-core/package.json +4 -1
  181. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
  182. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +83 -82
  183. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  184. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
  185. package/node_modules/@local/vibe64-genesis/src/server/index.js +536 -449
  186. package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
  187. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +144 -145
  188. package/node_modules/@local/vibe64-packaging/package.json +26 -0
  189. package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
  190. package/node_modules/@local/vibe64-project/package.json +3 -1
  191. package/node_modules/@local/vibe64-publishing/package.json +12 -0
  192. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
  193. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
  194. package/node_modules/@local/vibe64-terminals/package.json +2 -1
  195. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1341 -1300
  196. package/node_modules/@local/vibe64-training/package.json +2 -1
  197. package/package.json +19 -15
  198. package/server.bundle.mjs +43109 -41089
  199. package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
  200. package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
  201. package/dist/assets/VAlert-P256xaE0.js +0 -1
  202. package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
  203. package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
  204. package/dist/assets/VBtn-B2MBK2DL.js +0 -1
  205. package/dist/assets/VCard-mXy0k4aS.js +0 -1
  206. package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
  207. package/dist/assets/VChip-CcI-Oo2J.js +0 -1
  208. package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
  209. package/dist/assets/VDivider-BMEqUoAB.js +0 -1
  210. package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
  211. package/dist/assets/VMenu-C_x18lwb.js +0 -1
  212. package/dist/assets/VOverlay-CeMZurIN.js +0 -1
  213. package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
  214. package/dist/assets/VRow-Cpw7OHQV.js +0 -1
  215. package/dist/assets/VSelect-DL3HaA5m.js +0 -2
  216. package/dist/assets/VSheet-DZWsu0kL.js +0 -1
  217. package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
  218. package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
  219. package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
  220. package/dist/assets/VTextField-BR2eZeFT.js +0 -1
  221. package/dist/assets/VTextField-BiatYyd3.css +0 -1
  222. package/dist/assets/VTextarea-DbqamXJd.js +0 -1
  223. package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
  224. package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
  225. package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
  226. package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
  227. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
  228. package/dist/assets/_slug_-BclonbST.js +0 -24
  229. package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
  230. package/dist/assets/app-BNP_n_Tt.js +0 -1
  231. package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
  232. package/dist/assets/client-BWV84wi2.js +0 -2
  233. package/dist/assets/client-DGrP-2AJ.css +0 -1
  234. package/dist/assets/definitions-BrMvu6yV.js +0 -1
  235. package/dist/assets/env-BzRtyO0w.css +0 -1
  236. package/dist/assets/env-D3KQGvRe.js +0 -1
  237. package/dist/assets/health-BJvooRnJ.css +0 -1
  238. package/dist/assets/health-BhoO1d4h.js +0 -1
  239. package/dist/assets/incoming-DWDrmxyH.css +0 -1
  240. package/dist/assets/incoming-DzADFGqp.js +0 -2
  241. package/dist/assets/index-dNxr4Lg9.js +0 -138
  242. package/dist/assets/integrations-Cq1x-Di9.css +0 -1
  243. package/dist/assets/issues-Bywux4s7.js +0 -1
  244. package/dist/assets/mdi-CG9pWOSj.js +0 -1
  245. package/dist/assets/placement-BF-zIEhA.js +0 -1
  246. package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
  247. package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
  248. package/dist/assets/ripple-BVltMmyV.js +0 -11
  249. package/dist/assets/settings-BopLnpB0.css +0 -1
  250. package/dist/assets/shared-DpMvYJO3.js +0 -2
  251. package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
  252. package/dist/assets/studioUrls-DmMMIScP.js +0 -1
  253. package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
  254. package/dist/assets/useCommand-Bqxb-naz.js +0 -1
  255. package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
  256. package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
  257. package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
  258. package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
  259. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
  260. package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
  261. package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
  262. package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
@@ -36,11 +36,13 @@ entry declares `code`, `descriptor`, `status` (`draft` or `published`) and
36
36
  `required`. A released topic cannot contain required draft lessons. Draft content
37
37
  is validated but remains unavailable for teaching until published and installed.
38
38
 
39
- Lessons use lesson format v2 (see **Lesson format v2: steps** below). Format 1
40
- is retired: `vibe64-training validate` and `publish-manifest` refuse a v1 lesson
41
- ("Lesson X uses retired lesson format 1. Author it in format 2 with steps."), so
42
- no new course release can contain one. Installed v1 lessons, and `bundle`, which
43
- the installer uses, still read and verify them so earlier results stay valid.
39
+ Lessons use lesson format v3: format v2 (see **Lesson format v2: steps**
40
+ below) plus a required `stage` (see **Lesson format v3: stage and facts**).
41
+ Formats 1 and 2 are retired: `vibe64-training validate` and `publish-manifest`
42
+ refuse them ("Lesson X uses retired lesson format N. Author it in format 3 with
43
+ steps and its stage."), so no new course release can contain one, and a lesson
44
+ in a retired format cannot be started. Installed older lessons, and `bundle`,
45
+ which the installer uses, still read and verify them.
44
46
  The topic manifest itself stays schema version 1.
45
47
 
46
48
  For reading existing content, a v1 lesson descriptor declares schema version 1, `code`, `title`, `document`,
@@ -76,13 +78,33 @@ lesson but no current reader consumes them (they labelled the retired Learning
76
78
  watch's hints); they never grade, and a lesson without an exercise cannot
77
79
  declare them.
78
80
 
81
+ ### Lesson format v3: stage and facts
82
+
83
+ A v3 `lesson.json` declares `schemaVersion: 3` and everything v2 has, plus
84
+ `stage`: `"project"` for a lesson taught in its practice project (it needs its
85
+ `exercise`), or `"studio"` for one taught on the screens outside any project
86
+ (its Lesson sheet lies over the page while the Lesson toggle is on). Learn mode opens a lesson where its
87
+ stage says.
88
+
89
+ A step may check a fact: `"check": { "kind": "fact", "fact": "ai-ready" }`,
90
+ with a final `check fact` beat when the step has beats. The installation reads
91
+ the fact for the learner when they press **Check now**; built in, `ai-ready`
92
+ holds once their AI is set up for Colleague. A topic may declare names its
93
+ lessons use that only some installations provide, in optional `places`,
94
+ `activities` and `facts` lists in `topic.json`. A step whose places, activities
95
+ and facts are all available here, and whose places this person may open, is
96
+ shown; the others are left out of the lesson, and completion counts only the
97
+ required steps shown. A lesson with a required step left out is left out of
98
+ Courses here (and cannot start), as is a topic left without lessons. A course
99
+ may name its `orientation`, one of its published lessons.
100
+
79
101
  ### Lesson format v2: steps
80
102
 
81
103
  A v2 `lesson.json` declares `schemaVersion: 2` and keeps `code`, `title`,
82
104
  `prerequisites`, `estimatedMinutes`, `visuals`, `exercise`, `checks` and
83
105
  `appRoutes` exactly as above. It has no `document` and no `assessments`:
84
106
  an optional `notes` file (background reading) and 1–32 ordered `steps` replace
85
- them. The fixture `tests/fixtures/training/steps-v2/` is a complete, validating
107
+ them. The fixture `tests/fixtures/training/steps-v3/` is a complete, validating
86
108
  topic with every step kind; the copyable template is `docs/templates/learn-topic/`.
87
109
 
88
110
  ```json
@@ -178,7 +200,7 @@ One beat per line: `<show|do|check> <target>[ <path>]: <text>`.
178
200
  step's `check.rubric` from `lesson.json`, its single source.
179
201
  - Places: `preview`, `dashboard`, `database-erd`, `database-data`, `files`,
180
202
  `changes`, `git-log`, `session-info`, `architecture`, `learning` (the **L**
181
- button), `lesson` (the Lesson tab), `chat` (the coding chat), `colleague`,
203
+ button), `lesson` (the **Lesson** toggle), `chat` (the coding chat), `colleague`,
182
204
  `courses`, `lesson-bar` (the bar itself), `save` and `reload-preview`.
183
205
  `dashboard` and `lesson-bar` can only be shown.
184
206
  - 1–8 beats. Only `lesson`, `lesson-bar`, `courses`, `learning`,
@@ -192,8 +214,8 @@ step's check kind, a second or non-final check, a block that is not closed or
192
214
  does not end the body, and beats together with a `guide`. Back and Next in the
193
215
  bar move by beat into the neighbouring steps; after the last beat the bar shows
194
216
  the step's own verdict control (Done, Mark as done, Check my work, or Answer in
195
- Step for a choice) and Next step. **Step** (≡) on the bar opens the whole step
196
- text under it in one click, so a beat never needs to repeat the body. Steps never advance by themselves.
217
+ Lesson for a choice) and Next step. **Lesson** on the bar shows the whole step
218
+ text in the Lesson pane in one click, so a beat never needs to repeat the body. Steps never advance by themselves.
197
219
 
198
220
  **Check verdicts are final.** Verdicts come from the step's declared check: an
199
221
  automatic check, the choice comparator, a review check (the learner's own AI
@@ -229,8 +251,8 @@ heading is green and nothing else broke":
229
251
  40,000 characters). Work the coding agent did at the learner's request
230
252
  counts unless the rubric says the learner must do it themselves.
231
253
  - **Check my work** runs only from the learner's own browser, on the
232
- learner's own AI account: the Helper route of their workflow in **AI
233
- Accounts → Model routing** (workload `lesson_review`, input at most 160,000
254
+ learner's own AI account: their **Explain & check** model in **AI
255
+ Accounts → Models** (workload `lesson_review`, input at most 160,000
234
256
  characters, 180 seconds). Vibe64 never pays for or resells it.
235
257
  - The reviewer returns Passed or Not yet, a comment (at most 600
236
258
  characters), a hint for Not yet (at most 300) and up to six rubric points.
@@ -258,7 +280,7 @@ cannot be any v2 lesson descriptor of the topic (for example, an exercise
258
280
 
259
281
  A code question is an `auto` step whose `check` names a code check and whose
260
282
  `files` name the exercise files the learner edits (the fixture
261
- `tests/fixtures/training/steps-v2/` contains one):
283
+ `tests/fixtures/training/steps-v3/` contains one):
262
284
 
263
285
  ```json
264
286
  "exercise": { "kind": "bundled", "source": "app", "reuse": "attempt" },
@@ -367,9 +389,9 @@ is rejected. A released course requires released topics with no required drafts.
367
389
  A preview course is for the workspace owner to review: `lesson.start` admits its
368
390
  published lessons only when the actor is the workspace owner (on local Vibe64,
369
391
  the OS user), and refuses everyone else with `VIBE64_TRAINING_COURSE_PREVIEW`.
370
- `courses.list` reports `canTryPreviews`, and Courses shows the owner **Try
371
- preview**. The started attempt is an ordinary saved lesson. Releasing the course
372
- offers **Start** to everyone; draft lessons and disabled courses stay refused.
392
+ `courses.list` reports `canTryPreviews`, and Courses shows the owner the usual
393
+ start buttons beside the **Preview course** chip. The started attempt is an
394
+ ordinary saved lesson. Releasing the course offers **Start lesson** to everyone; draft lessons and disabled courses stay refused.
373
395
 
374
396
  Run `vibe64 training publish-manifest <course.json> <committed-topic-directory...>`
375
397
  with one canonical repository root for each selected topic. Each topic's package
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/assistant-core",
3
- "version": "0.1.238",
3
+ "version": "0.1.240",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/assistant-runtime",
3
- "version": "0.1.232",
3
+ "version": "0.1.234",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/assistant-voice",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/connector-google-calendar",
3
- "version": "0.1.61",
3
+ "version": "0.1.62",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared": "./src/shared/definition.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/connectors-catalog",
3
- "version": "0.1.62",
3
+ "version": "0.1.64",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/ai": "./src/shared/ai.js",
@@ -181,6 +181,31 @@ comma-separated permissions. Oura handles reduced callback scopes and rotated
181
181
  refresh tokens. Some providers do not return a refresh token; expired access
182
182
  then needs consent again. Provider PKCE enforcement needs provider evidence.
183
183
 
184
+ ## Shared connection from an Env refresh token
185
+
186
+ When the application's host already holds a long-lived grant for the shared
187
+ account (the owner connected it once with the same OAuth client), skip consent
188
+ in the app: add `refreshTokenRef` to a `shared` oauth2 integration whose
189
+ registration uses the authorization-code flow.
190
+
191
+ ```json
192
+ "authentication": {
193
+ "method": "oauth2",
194
+ "registrationRef": "google",
195
+ "refreshTokenRef": "env:GOOGLE_REFRESH_TOKEN"
196
+ }
197
+ ```
198
+
199
+ The Env value is a seed. On first use, and whenever the value or the OAuth
200
+ client changes, the runtime replaces the shared connection with one built from
201
+ that refresh token. From then on it refreshes and stores rotated tokens in the
202
+ application's own store as usual. `status()` reports `source: "env"` (show it as
203
+ "Connected from Env"). `beginAuthorization()` and `disconnect()` refuse with
204
+ `connector_env_managed`: "This connection comes from an Env value; unlink or
205
+ replace that value instead." A revoked token fails with "The refresh token in
206
+ Env no longer works; replace that Env value." The refresh token must come from
207
+ the same client as `registrationRef`; non-JSKIT apps read the variable directly.
208
+
184
209
  ## Twitch composition
185
210
 
186
211
  Use `twitchProvider` from `@jskit-ai/connectors-catalog/server/twitch` in the
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/connectors-core",
3
- "version": "0.1.61",
3
+ "version": "0.1.62",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/configuration": "./src/shared/configuration.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/http-runtime",
3
- "version": "0.1.242",
3
+ "version": "0.1.243",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/kernel",
3
- "version": "0.1.244",
3
+ "version": "0.1.245",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./_testable": "./_testable/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/realtime",
3
- "version": "0.1.242",
3
+ "version": "0.1.244",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./server/RealtimeProvider": "./src/server/RealtimeProvider.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/resource-core",
3
- "version": "0.1.186",
3
+ "version": "0.1.187",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/resource": "./src/shared/resource.js"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/resource-crud-core",
3
- "version": "0.1.186",
3
+ "version": "0.1.187",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./shared/crudFieldContract": "./src/shared/crudFieldContract.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/uploads-runtime",
3
- "version": "0.1.219",
3
+ "version": "0.1.220",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": "./src/client/index.js",
@@ -19,6 +19,7 @@
19
19
  "./server/completedDiscussionPlanUpgrade": "./src/server/completedDiscussionPlanUpgrade.js",
20
20
  "./server/providerCredentialsUpgrade": "./src/server/providerCredentialsUpgrade.js",
21
21
  "./server/freeModelRetirementUpgrade": "./src/server/freeModelRetirementUpgrade.js",
22
- "./server/assistantPlanUpgrade": "./src/server/assistantPlanUpgrade.js"
22
+ "./server/assistantPlanUpgrade": "./src/server/assistantPlanUpgrade.js",
23
+ "./server/teamSetupRoutingUpgrade": "./src/server/teamSetupRoutingUpgrade.js"
23
24
  }
24
25
  }
@@ -46,9 +46,12 @@
46
46
  "./server/envUserValues": "./src/server/envUserValues.js",
47
47
  "./shared": "./src/shared/index.js",
48
48
  "./server/assistantRoutingStore": "./src/server/assistantRoutingStore.js",
49
+ "./server/workspaceTeam": "./src/server/workspaceTeam.js",
50
+ "./server/teamAiGate": "./src/server/teamAiGate.js",
49
51
  "./shared/curatedCodexProviders": "./src/shared/curatedCodexProviders.js",
50
52
  "./server/codexProviderConnections": "./src/server/codexProviderConnections.js",
51
53
  "./server/stateUpgrades/routingV2Format": "./src/server/stateUpgrades/routingV2Format.js",
52
- "./server/stateUpgrades/routingV3Format": "./src/server/stateUpgrades/routingV3Format.js"
54
+ "./server/stateUpgrades/routingV3Format": "./src/server/stateUpgrades/routingV3Format.js",
55
+ "./server/stateUpgrades/routingV4Format": "./src/server/stateUpgrades/routingV4Format.js"
53
56
  }
54
57
  }