vibe64 0.1.39 → 0.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/run.js +1942 -1846
- package/bin/server.js +136 -112
- package/bin/upgrade-state.js +5023 -4860
- package/dist/assets/GithubBrowserTabs-BoDkGFtY.js +1 -0
- package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
- package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
- package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
- package/dist/assets/VAlert-gwuhYlYb.js +1 -0
- package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
- package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
- package/dist/assets/VBtn-BhVEwXLX.js +1 -0
- package/dist/assets/VCard-C3Hx769y.js +1 -0
- package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
- package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
- package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
- package/dist/assets/VChip-VVdtjfq-.js +1 -0
- package/dist/assets/VDialog-CQDhjRiV.js +1 -0
- package/dist/assets/VDivider-Dq25WsKu.js +1 -0
- package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
- package/dist/assets/VMenu-CDcBLYWR.js +1 -0
- package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
- package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
- package/dist/assets/VRow-BskP28jR.js +1 -0
- package/dist/assets/VSelect-D3oLvCcB.js +2 -0
- package/dist/assets/VSheet-DxYEFfnM.js +1 -0
- package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
- package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
- package/dist/assets/VSwitch-BxGuGypi.js +1 -0
- package/dist/assets/VTextField-C0b_0cSa.js +1 -0
- package/dist/assets/VTextField-F6unyhrS.css +1 -0
- package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
- package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
- package/dist/assets/Vibe64AuthSettingsButton-CmiidAs5.js +5 -0
- package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
- package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
- package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
- package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
- package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
- package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
- package/dist/assets/Vibe64DashboardShell-MCzEQCWu.js +1 -0
- package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-DM9V017v.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
- package/dist/assets/Vibe64OutputControls-CU9H0Dur.js +8 -0
- package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-DaAChLA8.js} +2 -2
- package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-CM2EzXBf.js} +4 -4
- package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
- package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
- package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-DVHd6D5V.js} +1 -1
- package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
- package/dist/assets/_slug_-DsfaE8Vh.js +25 -0
- package/dist/assets/_slug_-_qfQqdHb.css +1 -0
- package/dist/assets/{access-WlhPvPgy.js → access-BbzSuMt5.js} +1 -1
- package/dist/assets/app-BNh2oZg-.js +1 -0
- package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
- package/dist/assets/{changes-CHJjrZAc.js → changes-D8Koqrqg.js} +1 -1
- package/dist/assets/client-CybfBKCn.js +2 -0
- package/dist/assets/client-D6UGamrv.css +1 -0
- package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
- package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
- package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
- package/dist/assets/{dashboard-CuutW8iv.js → dashboard-DLrmf5ed.js} +1 -1
- package/dist/assets/definitions-DgyQJgn-.js +1 -0
- package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
- package/dist/assets/env-B5V1EC4M.css +1 -0
- package/dist/assets/env-rVQwLtYr.js +1 -0
- package/dist/assets/health-92hh8xXh.css +1 -0
- package/dist/assets/health-B6r9LLrd.js +1 -0
- package/dist/assets/{history-1_NU8azF.js → history-C6xLWUxL.js} +1 -1
- package/dist/assets/incoming-Bdqo8z25.css +1 -0
- package/dist/assets/incoming-CNwZa_yD.js +2 -0
- package/dist/assets/index-B9P6KjvH.js +138 -0
- package/dist/assets/{index-irlMYzLh.css → index-BC29JK2e.css} +1 -1
- package/dist/assets/{integrations-BMzWQQpa.js → integrations-CcrqPXxj.js} +10 -10
- package/dist/assets/integrations-Co8WvCiD.css +1 -0
- package/dist/assets/issues-DEjIlMdl.js +1 -0
- package/dist/assets/layout-B2Ap07aa.js +1 -0
- package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
- package/dist/assets/{learning-Bdi3XRS7.js → learning-BP1xvd8w.js} +1 -1
- package/dist/assets/mdi-Bt90Ns76.js +1 -0
- package/dist/assets/placement-CQy46H3H.js +1 -0
- package/dist/assets/publish-CPWnztCc.css +1 -0
- package/dist/assets/publish-CVXolnAG.js +3 -0
- package/dist/assets/pull-requests-BjwokcU0.css +1 -0
- package/dist/assets/pull-requests-DdgzLzY_.js +1 -0
- package/dist/assets/{repository-BL_2bgzC.js → repository-5S0LzRq3.js} +1 -1
- package/dist/assets/ripple-EFNA8EBu.js +11 -0
- package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
- package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
- package/dist/assets/{settings-1rpuL7eR.js → settings-BKP_eQ3F.js} +1 -1
- package/dist/assets/settings-D8x4KUqV.css +1 -0
- package/dist/assets/shared-DZETtWRH.js +2 -0
- package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
- package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-D8DWpcSy.js +1 -0
- package/dist/assets/useCommand-nWFczmJy.js +1 -0
- package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
- package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
- package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-D-Vkq0sK.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-Dpm53ruL.js} +1 -1
- package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
- package/dist/assets/useVibe64SessionData-CGJXj3r7.js +1 -0
- package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-BEqKR412.js} +1 -1
- package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
- package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
- package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
- package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
- package/dist/assets/vibe64SessionFocus-tv2wz7_H.js +1 -0
- package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
- package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
- package/dist/index.html +56 -46
- package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
- package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
- package/docs/colleague-usage/ai-model-setups.md +159 -0
- package/docs/colleague-usage/ai-onboarding.md +94 -21
- package/docs/colleague-usage/ai-personal-use.md +41 -0
- package/docs/colleague-usage/auto-workflow.md +8 -3
- package/docs/colleague-usage/codex-context-recovery.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +7 -4
- package/docs/colleague-usage/coding-agents.md +8 -5
- package/docs/colleague-usage/colleague-watches.md +15 -4
- package/docs/colleague-usage/colleague.md +21 -5
- package/docs/colleague-usage/connected-contributions.md +13 -13
- package/docs/colleague-usage/connected-projects.md +2 -2
- package/docs/colleague-usage/conversation-context.md +1 -1
- package/docs/colleague-usage/dashboard-navigation.md +5 -3
- package/docs/colleague-usage/development-env.md +21 -4
- package/docs/colleague-usage/file-interfaces.md +1 -1
- package/docs/colleague-usage/github-work.md +8 -8
- package/docs/colleague-usage/health-checks.md +52 -18
- package/docs/colleague-usage/incoming-changes.md +3 -3
- package/docs/colleague-usage/integrations.md +5 -3
- package/docs/colleague-usage/learning-course-catalogue.md +3 -3
- package/docs/colleague-usage/learning-environment.md +55 -47
- package/docs/colleague-usage/learning-mode-ui.md +13 -10
- package/docs/colleague-usage/learning-practice-projects.md +13 -2
- package/docs/colleague-usage/learning-teacher-guide.md +9 -4
- package/docs/colleague-usage/learning-with-colleague.md +9 -5
- package/docs/colleague-usage/lesson-authoring.md +12 -12
- package/docs/colleague-usage/lesson-step-bar.md +22 -22
- package/docs/colleague-usage/main-chat-approvals.md +150 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -1
- package/docs/colleague-usage/project-language-tools.md +16 -2
- package/docs/colleague-usage/project-settings.md +1 -1
- package/docs/colleague-usage/project-setup.md +17 -7
- package/docs/colleague-usage/publishing.md +185 -0
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
- package/docs/colleague-usage/sessions.md +18 -10
- package/docs/colleague-usage/set-up-linux.md +254 -0
- package/docs/colleague-usage/set-up-macos.md +199 -0
- package/docs/colleague-usage/set-up-windows.md +76 -0
- package/docs/colleague-usage/starter-apps.md +21 -4
- package/docs/colleague-usage/teaching-content.md +2 -2
- package/docs/colleague-usage/team-ai-access.md +108 -0
- package/docs/colleague-usage/temporary-chats.md +9 -7
- package/docs/colleague-usage/workspace-preparation.md +50 -1
- package/docs/templates/learn-topic/README.md +3 -3
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
- package/docs/training-content.md +37 -15
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
- package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/kernel/package.json +1 -1
- package/node_modules/@jskit-ai/realtime/package.json +1 -1
- package/node_modules/@jskit-ai/resource-core/package.json +1 -1
- package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
- package/node_modules/@jskit-ai/uploads-runtime/package.json +1 -1
- package/node_modules/@local/vibe64-accounts/package.json +2 -1
- package/node_modules/@local/vibe64-core/package.json +4 -1
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +73 -69
- package/node_modules/@local/vibe64-genesis/package.json +1 -0
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
- package/node_modules/@local/vibe64-genesis/src/server/index.js +501 -415
- package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +143 -139
- package/node_modules/@local/vibe64-packaging/package.json +26 -0
- package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
- package/node_modules/@local/vibe64-project/package.json +3 -1
- package/node_modules/@local/vibe64-publishing/package.json +12 -0
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
- package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
- package/node_modules/@local/vibe64-terminals/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1340 -1300
- package/node_modules/@local/vibe64-training/package.json +2 -1
- package/package.json +19 -15
- package/server.bundle.mjs +42890 -40887
- package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
- package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
- package/dist/assets/VAlert-P256xaE0.js +0 -1
- package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
- package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
- package/dist/assets/VBtn-B2MBK2DL.js +0 -1
- package/dist/assets/VCard-mXy0k4aS.js +0 -1
- package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
- package/dist/assets/VChip-CcI-Oo2J.js +0 -1
- package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
- package/dist/assets/VDivider-BMEqUoAB.js +0 -1
- package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
- package/dist/assets/VMenu-C_x18lwb.js +0 -1
- package/dist/assets/VOverlay-CeMZurIN.js +0 -1
- package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
- package/dist/assets/VRow-Cpw7OHQV.js +0 -1
- package/dist/assets/VSelect-DL3HaA5m.js +0 -2
- package/dist/assets/VSheet-DZWsu0kL.js +0 -1
- package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
- package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
- package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
- package/dist/assets/VTextField-BR2eZeFT.js +0 -1
- package/dist/assets/VTextField-BiatYyd3.css +0 -1
- package/dist/assets/VTextarea-DbqamXJd.js +0 -1
- package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
- package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
- package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
- package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
- package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
- package/dist/assets/_slug_-BclonbST.js +0 -24
- package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
- package/dist/assets/app-BNP_n_Tt.js +0 -1
- package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
- package/dist/assets/client-BWV84wi2.js +0 -2
- package/dist/assets/client-DGrP-2AJ.css +0 -1
- package/dist/assets/definitions-BrMvu6yV.js +0 -1
- package/dist/assets/env-BzRtyO0w.css +0 -1
- package/dist/assets/env-D3KQGvRe.js +0 -1
- package/dist/assets/health-BJvooRnJ.css +0 -1
- package/dist/assets/health-BhoO1d4h.js +0 -1
- package/dist/assets/incoming-DWDrmxyH.css +0 -1
- package/dist/assets/incoming-DzADFGqp.js +0 -2
- package/dist/assets/index-dNxr4Lg9.js +0 -138
- package/dist/assets/integrations-Cq1x-Di9.css +0 -1
- package/dist/assets/issues-Bywux4s7.js +0 -1
- package/dist/assets/mdi-CG9pWOSj.js +0 -1
- package/dist/assets/placement-BF-zIEhA.js +0 -1
- package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
- package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
- package/dist/assets/ripple-BVltMmyV.js +0 -11
- package/dist/assets/settings-BopLnpB0.css +0 -1
- package/dist/assets/shared-DpMvYJO3.js +0 -2
- package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
- package/dist/assets/studioUrls-DmMMIScP.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
- package/dist/assets/useCommand-Bqxb-naz.js +0 -1
- package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
- package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
- package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
- package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
- package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
- package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
- package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
- package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Choose a starter with ready tests
|
|
2
2
|
|
|
3
|
-
In an empty project's onboarding,
|
|
3
|
+
In an empty project's onboarding, starters are grouped by technology. Choose
|
|
4
|
+
the JSKIT starter that matches the app:
|
|
4
5
|
|
|
5
6
|
- **Basic app**: responsive shell, server/client/browser tests, no database or login.
|
|
6
7
|
- **Database app**: the same shell plus MySQL migrations and isolated database
|
|
@@ -8,9 +9,25 @@ In an empty project's onboarding, choose the JSKIT starter that matches the app:
|
|
|
8
9
|
- **Accounts app**: sign-up, login, private pages and persisted profiles, plus
|
|
9
10
|
account-persistence and browser tests.
|
|
10
11
|
|
|
12
|
+
For another framework, each of Django, Rails, Spring Boot, Express and Next.js
|
|
13
|
+
offers one **Basic app**: a home page whose notes form saves to SQLite
|
|
14
|
+
(MySQL/MariaDB for Spring Boot), with unit and HTTP tests and the starter's own
|
|
15
|
+
`docs/colleague-usage/starting-app.md`. Only Rails has sign-in, with the seeded
|
|
16
|
+
development account `developer@example.com` / `developer`; for the others, ask
|
|
17
|
+
the coding agent to add accounts. These starters do not declare **Browser test
|
|
18
|
+
app**.
|
|
19
|
+
|
|
20
|
+
When the installation does not supply their database itself, Preview stops at
|
|
21
|
+
**Set up your project's environment** and names the missing value: `DB_NAME`
|
|
22
|
+
for Django and Next.js, `DB_DATABASE` for Rails and Express, the `DB_*` server
|
|
23
|
+
values for Spring Boot. Choose **Open Env**, enter an absolute SQLite file path
|
|
24
|
+
outside the project (or the MySQL/MariaDB details) and **Save**; preparation
|
|
25
|
+
then continues and the app starts.
|
|
26
|
+
|
|
11
27
|
The same choices appear on desktop and mobile. Applying a starter imports its
|
|
12
|
-
source
|
|
13
|
-
declared resources
|
|
28
|
+
source and starts **Prepare workspace** at once: it installs dependencies,
|
|
29
|
+
provisions the declared resources (an installation that supplies the database
|
|
30
|
+
does so here) and runs migrations; a failed preparation offers **Retry**.
|
|
14
31
|
The coding agent can then follow the first feature request using the existing
|
|
15
32
|
test commands documented in the starter's `docs/colleague-usage/testing.md`.
|
|
16
33
|
|
|
@@ -25,6 +42,6 @@ managed projects use the provided browser rather than installing another one.
|
|
|
25
42
|
Colleague can explain the choices and offer coding-agent help. A how-to question
|
|
26
43
|
alone does not authorize starter import, resource preparation or fixture reset.
|
|
27
44
|
Applying to an existing application is unavailable; it does not replace authored
|
|
28
|
-
source. These are
|
|
45
|
+
source. These are complete starters; optional packs are not part of this flow.
|
|
29
46
|
OpenCode's generated, ignored plugin-install files alone do not make a blank
|
|
30
47
|
project an existing application. Custom OpenCode files still prevent import.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This topic explains verified lesson content, private progress and owner recovery.
|
|
4
4
|
For host-registered learner controls and assessment, read **Learn with Colleague**
|
|
5
5
|
(`learning-with-colleague`). For authoring and Git publication, read **Author a
|
|
6
|
-
lesson and
|
|
6
|
+
lesson and save its source** (`lesson-authoring`). The underlying facilities
|
|
7
7
|
below do not by themselves add learner controls or grant Colleague source access;
|
|
8
8
|
available operations depend on the host registrations described in those topics.
|
|
9
9
|
|
|
@@ -49,7 +49,7 @@ The application also has a server-side verified-snapshot installation facility.
|
|
|
49
49
|
For official catalogue courses it is reached through **Install** and **Update**
|
|
50
50
|
in Learning's **Courses** pane, or Colleague's `course.install` on a direct
|
|
51
51
|
request (see [Installing and updating Learning courses](learning-course-catalogue.md)).
|
|
52
|
-
For other content, the local operator commands in **Author a lesson and
|
|
52
|
+
For other content, the local operator commands in **Author a lesson and save its source**
|
|
53
53
|
invoke the original installation owner.
|
|
54
54
|
An admitted owner operation must select the canonical local source and exact
|
|
55
55
|
course pin. Colleague can explain this boundary and offer to help contact the
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Team AI access: when team members can open projects
|
|
2
|
+
|
|
3
|
+
A workspace can have one owner and other people (team members). Team members
|
|
4
|
+
never use the owner's AI directly: main chat runs on the owner's setup (a team
|
|
5
|
+
member's messages wait for approval), and everything else a team member does
|
|
6
|
+
with AI (their Colleague, Fix it with AI, Explain & check and the quick
|
|
7
|
+
helpers) runs on the **team setup**, the second setup in AI setup. A team
|
|
8
|
+
member's own lesson is the one place where main chat runs on the team setup
|
|
9
|
+
too; see **Lessons** below. The team setup may use only **Workspace-use** models,
|
|
10
|
+
never a personal plan such as the owner's Claude or ChatGPT subscription (see
|
|
11
|
+
[Personal-use AI subscriptions](ai-personal-use.md)).
|
|
12
|
+
|
|
13
|
+
So that a team member is never dropped into a project whose AI cannot work for
|
|
14
|
+
them, Vibe64 checks one thing when they open a project: **does the team setup
|
|
15
|
+
have at least one Workspace-use model?** Until it does, team members cannot
|
|
16
|
+
open any project in the workspace.
|
|
17
|
+
|
|
18
|
+
## Who is checked
|
|
19
|
+
|
|
20
|
+
- **Team members** are checked every time they open a project, including
|
|
21
|
+
practice (Learning) projects.
|
|
22
|
+
- **The workspace owner is never checked.** The owner can always open every
|
|
23
|
+
project, whatever the team setup holds.
|
|
24
|
+
- On Vibe64 running on your own computer there is only you, the owner, so the
|
|
25
|
+
check never applies.
|
|
26
|
+
- Work that runs without a person (an AI turn already running, scheduled
|
|
27
|
+
checks) is not checked.
|
|
28
|
+
|
|
29
|
+
## What counts as ready
|
|
30
|
+
|
|
31
|
+
The team setup is ready when at least one of its roles (Colleague, Fix it with
|
|
32
|
+
AI, Explain & check, Quick helper) uses a model whose connection is Workspace
|
|
33
|
+
use and currently connected, for example DeepSeek through an API key. A role set
|
|
34
|
+
to **Same as** another role counts as the model of the role it follows. A role
|
|
35
|
+
that is off, a role that follows an empty role, a personal plan, or a
|
|
36
|
+
disconnected connection does not count.
|
|
37
|
+
|
|
38
|
+
The fastest way to get there is the team card in AI setup: **Let your team use
|
|
39
|
+
this workspace: add a DeepSeek key (runs inside Claude Code)**. One key fills
|
|
40
|
+
the team setup with the recommended DeepSeek models.
|
|
41
|
+
|
|
42
|
+
## What a team member sees
|
|
43
|
+
|
|
44
|
+
Opening a project before the team setup is ready shows **Team AI isn't set up
|
|
45
|
+
yet** instead of the project:
|
|
46
|
+
|
|
47
|
+
- "*Owner* needs to set up AI for team members before you can open projects
|
|
48
|
+
here." (*Owner* is the owner's name, or "The workspace owner" when the
|
|
49
|
+
workspace has no name for them.)
|
|
50
|
+
- A highlighted line to pass on: **Ask *owner* to set up AI for team members.**
|
|
51
|
+
- **Check again** re-reads the project once the owner says it is done. It opens
|
|
52
|
+
the project as soon as the team setup is ready.
|
|
53
|
+
- **Back to projects** returns to the project list, where the workspace has one.
|
|
54
|
+
|
|
55
|
+
The screen is the same on a phone, with the buttons full width and stacked.
|
|
56
|
+
Nothing about the project changes while a team member waits, and their Account
|
|
57
|
+
and AI Accounts pages stay open to them.
|
|
58
|
+
|
|
59
|
+
## What the owner sees
|
|
60
|
+
|
|
61
|
+
While the workspace has team members and the team setup is not ready, the
|
|
62
|
+
owner's project list (where the workspace has one) shows **Team members can't
|
|
63
|
+
open projects yet — Set up AI for team members so they can work here.** with
|
|
64
|
+
**Set up team AI**, which opens AI setup at the team setup. The prompt disappears once the team setup has a
|
|
65
|
+
Workspace-use model, or when the workspace has no team members.
|
|
66
|
+
|
|
67
|
+
Project rows in the list can also show **N waiting**: messages team members
|
|
68
|
+
sent to main chat that wait for the owner's approval.
|
|
69
|
+
|
|
70
|
+
## Inside a project
|
|
71
|
+
|
|
72
|
+
Once a team member is in, their AI work uses the team setup, and their messages
|
|
73
|
+
to main chat wait for the owner's approval before they are sent (see
|
|
74
|
+
[Main chat messages that wait for the owner's approval](main-chat-approvals.md)). If the owner
|
|
75
|
+
later removes the last Workspace-use model, the team member's next project
|
|
76
|
+
open shows the waiting screen again.
|
|
77
|
+
|
|
78
|
+
## Lessons
|
|
79
|
+
|
|
80
|
+
A lesson's practice project is private to its learner, so a team member's
|
|
81
|
+
lesson does not wait for the owner. In their own practice project, a team
|
|
82
|
+
member's main chat runs on the team setup and their messages go straight to it:
|
|
83
|
+
|
|
84
|
+
- **Senior** and **Junior** use the team **Colleague** model, and Auto's Router
|
|
85
|
+
uses the team **Quick helper** model. **Custom** in **Chat mode** lists only
|
|
86
|
+
Workspace-use models, so the member may choose any of them for the lesson.
|
|
87
|
+
- The composer says which AI it is: the placeholder "Message your lesson's AI —
|
|
88
|
+
*model* (team AI)" and, in **Chat mode**, "This lesson runs on the team AI:
|
|
89
|
+
*model*. Only you see this chat."
|
|
90
|
+
- **Do it for me** (which sends a line's prompt to the lesson's main chat),
|
|
91
|
+
Check my work reviews and the lesson's Colleague use the same team setup.
|
|
92
|
+
- A personal plan, such as the owner's Claude or ChatGPT subscription, is never
|
|
93
|
+
used, even when the team setup has no Colleague model. Then main chat says
|
|
94
|
+
"The workspace owner hasn't chosen a Colleague model for team members yet."
|
|
95
|
+
and the owner adds one in AI setup.
|
|
96
|
+
- The owner's own lessons run on the owner's setup as before. Main chat in
|
|
97
|
+
every ordinary project still waits for the owner's approval.
|
|
98
|
+
|
|
99
|
+
## What Colleague can do
|
|
100
|
+
|
|
101
|
+
Colleague can explain this screen and the team setup. It cannot change the team
|
|
102
|
+
setup for a team member: only the owner edits AI setup. A team member's Colleague
|
|
103
|
+
itself needs the team setup, so Colleague can answer only once the team setup is
|
|
104
|
+
ready; until then, ask the owner directly.
|
|
105
|
+
|
|
106
|
+
Related topics: [AI model setups](ai-model-setups.md),
|
|
107
|
+
[Personal-use AI subscriptions](ai-personal-use.md),
|
|
108
|
+
[AI onboarding](ai-onboarding.md) and [Colleague](colleague.md).
|
|
@@ -9,9 +9,11 @@ first chat. If another temporary or host conversation was selected, it stays
|
|
|
9
9
|
selected with its draft intact. Dismissing the dialog has the same effect; no
|
|
10
10
|
chat is created and no message is sent. This applies on desktop and narrow screens.
|
|
11
11
|
|
|
12
|
-
Ordinary temporary chats offer **Custom**, **Senior** and
|
|
13
|
-
**
|
|
14
|
-
|
|
12
|
+
Ordinary temporary chats offer **Fix it with AI**, **Custom**, **Senior** and
|
|
13
|
+
**Junior**; a team member's offer **Fix it with AI** and **Custom**. **Fix it with
|
|
14
|
+
AI** uses the model AI setup chose for fixes, which may run in a different tool
|
|
15
|
+
from Main chat. Choose **Custom** to open the **Orchestrator**, **Model** and
|
|
16
|
+
**Thinking** fields. Select an available connection and model, then **Apply**. The next message uses that
|
|
15
17
|
choice and the existing conversation history. Main chat's selection is unchanged.
|
|
16
18
|
|
|
17
19
|
## Rename a temporary chat
|
|
@@ -70,10 +72,10 @@ message; uncertain delivery is checked before any resend.
|
|
|
70
72
|
|
|
71
73
|
## Hand a merge repair to another model
|
|
72
74
|
|
|
73
|
-
**Fix it with AI** for an Update conflict opens a temporary repair
|
|
74
|
-
and sends the repair instructions once. Its reply appears in that
|
|
75
|
-
chat; Main chat's history is unchanged.
|
|
76
|
-
Merge repair
|
|
75
|
+
**Fix it with AI** for an Update conflict opens a temporary repair on the Fix it
|
|
76
|
+
with AI model and sends the repair instructions once. Its reply appears in that
|
|
77
|
+
temporary chat; Main chat's history is unchanged.
|
|
78
|
+
Merge repair stays in Fix it with AI mode or on a model you choose. To hand it to Codex:
|
|
77
79
|
|
|
78
80
|
1. If it is still working, press **Stop** and wait for it to stop.
|
|
79
81
|
2. Open its **Chat mode** icon and choose **Choose model**.
|
|
@@ -7,7 +7,7 @@ steps come from the project's setup contract.
|
|
|
7
7
|
|
|
8
8
|
Select **Prepare workspace**. The notice shows progress while those steps run.
|
|
9
9
|
Use **Expand** to inspect output, or **Dismiss** to hide an inactive notice.
|
|
10
|
-
Preparation does not
|
|
10
|
+
Preparation does not save or push the project.
|
|
11
11
|
|
|
12
12
|
To rerun preparation after success, select **Prepare workspace** (the wrench)
|
|
13
13
|
in the session header. On narrow screens, open **Session actions** (three dots)
|
|
@@ -99,6 +99,55 @@ Colleague can explain this recovery; installing a local tool and restarting the
|
|
|
99
99
|
local editor require the person to use their terminal.
|
|
100
100
|
|
|
101
101
|
|
|
102
|
+
## A tool the step needs
|
|
103
|
+
|
|
104
|
+
When a step fails because a program it runs isn't installed, the failed step
|
|
105
|
+
says so in one sentence ("Vibe64 couldn't find bundle on this computer, so this
|
|
106
|
+
step couldn't run.") and **This step needs a tool that isn't working** lists the
|
|
107
|
+
missing runtime with its install command, **Check again** and **Other ways**.
|
|
108
|
+
A long failure (a stack trace) shows as three lines; **Expand** shows all of it.
|
|
109
|
+
The database server panel below waits until no tool is missing, so there is one
|
|
110
|
+
thing to fix at a time.
|
|
111
|
+
|
|
112
|
+
## A database server you run
|
|
113
|
+
|
|
114
|
+
When the project's Stack declares a MySQL/MariaDB or PostgreSQL database and
|
|
115
|
+
this computer supplies none itself, the person runs that server: one they
|
|
116
|
+
already have, or one they install. After a preparation step fails, a
|
|
117
|
+
**database server** panel appears under the failed step. It says whether
|
|
118
|
+
Vibe64 could sign in, in one sentence: nothing answering at the host and port,
|
|
119
|
+
a wrong user or password, a user that can only sign in from the computer's
|
|
120
|
+
administrator account (such as `root` on a fresh MariaDB, or `postgres`), a
|
|
121
|
+
missing database, or no access to it.
|
|
122
|
+
|
|
123
|
+
The panel's fields are the project's Env values under the exact names the
|
|
124
|
+
Stack declares (for example `DB_HOST`, `DB_PORT`, `DB_NAME` or `DB_DATABASE`,
|
|
125
|
+
`DB_USER` or `DB_USERNAME`, `DB_PASSWORD`). **Save and check** saves them in
|
|
126
|
+
Env and signs in for real with the drivers Vibe64 bundles; **Check again**
|
|
127
|
+
repeats the sign-in. A saved password is never shown or sent back; an empty
|
|
128
|
+
password field keeps it. Env values always win over the Stack's defaults, and a
|
|
129
|
+
variable exported in the shell that started Vibe64 does not count.
|
|
130
|
+
|
|
131
|
+
**Install or start** shows the command for this computer (Debian, Ubuntu and
|
|
132
|
+
WSL, or macOS with Homebrew); its link opens the Databases step of the setup
|
|
133
|
+
guide, which also has the Fedora and Arch lines ([Linux](set-up-linux.md#databases),
|
|
134
|
+
[macOS](set-up-macos.md#databases)). **Create a login and
|
|
135
|
+
database** shows one command that creates a project user, its database and,
|
|
136
|
+
for PostgreSQL, the right to create test databases. **Suggest a user and
|
|
137
|
+
password** fills in a project user and a strong password first; the command
|
|
138
|
+
shows the password as dots but copies the real one. The person runs these
|
|
139
|
+
commands in their own terminal; Vibe64 never starts a database server or runs
|
|
140
|
+
them. While nothing answers, the panel leads with **Install or start** and
|
|
141
|
+
folds the settings into one line, "Looking for it at host:port · database ·
|
|
142
|
+
user", with **Change** to edit them. When the panel says connected, choose
|
|
143
|
+
**Finish preparing** on it (or **Retry** on the failed step).
|
|
144
|
+
|
|
145
|
+
Colleague can explain the panel and each message. When asked, it can check the
|
|
146
|
+
server again with the current values and save the non-secret ones the person
|
|
147
|
+
gives (host, port, database name, user name) in Env. It must not ask for,
|
|
148
|
+
repeat or save a password, and it never runs `sudo` or creates databases
|
|
149
|
+
itself; the password goes in the panel's password field.
|
|
150
|
+
|
|
102
151
|
## Resource recovery after a daemon restart
|
|
103
152
|
|
|
104
153
|
When the host supports database preservation checks, reopening a previously
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Copyable teaching topic template
|
|
2
2
|
|
|
3
|
-
This is a complete directory template for an **incomplete draft topic**. It has one draft lesson in lesson format
|
|
3
|
+
This is a complete directory template for an **incomplete draft topic**. It has one draft lesson in lesson format v3 (schemaVersion `3`, stage `studio`: taught outside any project, since it has no exercise): optional notes and three steps — a reading step (`none`), a multiple-choice step (`choice`) and a learner-ticked step (`self`) — with no exercise, automatic check or visual. Do not teach it or mark it published before human review. Check verdicts are final and come from each step's declared check (a lesson with an exercise may also use a `review` check, the learner's own AI judging their work against a rubric); Colleague never passes a step.
|
|
4
4
|
|
|
5
5
|
## Copy and adapt
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ This is a complete directory template for an **incomplete draft topic**. It has
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
Work in the copy. No dependency install or new application framework is needed for these content files.
|
|
14
|
-
2. In the copied `package.json`, replace `name` with your `learn-` repository name, `vibe64Training.topicId` with a permanent topic ID, `domainId` with the intended domain ID, and `title` with the topic title. Keep version `0.1.0`, the topic manifest's schemaVersion `1` and status `preview` while drafting (lessons declare their own schemaVersion `
|
|
14
|
+
2. In the copied `package.json`, replace `name` with your `learn-` repository name, `vibe64Training.topicId` with a permanent topic ID, `domainId` with the intended domain ID, and `title` with the topic title. Keep version `0.1.0`, the topic manifest's schemaVersion `1` and status `preview` while drafting (lessons declare their own schemaVersion `3` and `stage`). IDs start with a letter, contain only letters, digits or hyphens, and have at most 64 characters.
|
|
15
15
|
3. Replace `TOPIC-01` with your permanent first lesson code: rename its directory and update the root manifest's `lessons[0].code` and `descriptor`, the lesson descriptor's `code`, the notes title and outline row. Keep the root entry `draft` and `required:true`.
|
|
16
16
|
4. Write the outline's learner, prerequisites, final ability and lesson outcomes. Replace `notes.md` and each `steps/*.md` body with real text a learner can follow without AI. Edit `steps` in `lesson.json`: each step has a unique `id`, `title`, `body`, `check` and `required`. Use `choice` (`question`, 2–8 `options`, `answer` as 0-based option indexes), `self` (learner ticks **Done**), `none` (reading only, never required) or `auto` (a declared check; needs an exercise). At least one step must be required. Optional `guide` points at a real Vibe64 place and optional `visual` plays declared commands. Instead of a guide, a step body may end with a fenced `beats` block that the lesson step bar plays one line at a time (for example `show lesson-bar: This bar walks you through each step.`); see "Beats" in `docs/training-content.md`.
|
|
17
17
|
5. To add lessons, copy the lesson directory to a new permanent code, update its code, title and steps, and append a `draft` entry with the correct descriptor path to the root manifest and outline. Declare earlier lesson prerequisites as `{ "code": "YOUR-01" }` and topic prerequisites as `{ "topicId": "another-topic" }`. Referenced lessons must exist, precede their dependants and have no cycles. A published lesson cannot require a draft lesson.
|
|
@@ -28,7 +28,7 @@ This is a complete directory template for an **incomplete draft topic**. It has
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Validation and bundling do not execute content, publish Git, install a topic or make drafts teachable. In a public Vibe64 development checkout, `node bin/run.js training ...` accepts the same arguments; run it from that checkout with the copied topic's absolute path.
|
|
31
|
-
7. Add an exercise, an `auto` step or a visual only when you have a real source and a working check. Follow the installed `docs/training-content.md` reference (
|
|
31
|
+
7. Add an exercise (then set the lesson's `stage` to `project`), an `auto` step or a visual only when you have a real source and a working check. Follow the installed `docs/training-content.md` reference (sections **Lesson format v3: stage and facts** and **Lesson format v2: steps**) for exercise/check/visual descriptors, exact relative paths and declared auxiliary `assets`. Never point a step body, notes, visual or exercise at `lesson.json`: it holds the choice answers and is refused. Do not add fake readiness or capabilities to make a draft appear runnable.
|
|
32
32
|
8. Trial and review the lesson with a human learner, including mistakes, assistance, recovery and relevant desktop/mobile controls. Only then change its root entry to `published`. Keep the topic `preview` until every required lesson is reviewed and published. A `released` topic cannot contain required draft lessons.
|
|
33
33
|
|
|
34
34
|
Before generating a course lock, add the real source repository as root `repository.url` in the format `https://github.com/<owner>/learn-<topic>.git`, commit the intended topic and leave it clean. Use the installed publishing guide for `vibe64 training publish-manifest`; local lock generation does not create or publish a remote repository. A course chooses this whole topic, not a subset of its lessons.
|
package/docs/training-content.md
CHANGED
|
@@ -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**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 pane docks beside the page). 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-
|
|
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
|
|
203
|
+
button), `lesson` (the step bar's **Lesson** button), `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
|
-
|
|
196
|
-
text
|
|
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:
|
|
233
|
-
Accounts →
|
|
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-
|
|
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
|
|
371
|
-
|
|
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
|
|
@@ -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
|
|
@@ -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
|
}
|