vibe64 0.1.36 → 0.1.37

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 (80) hide show
  1. package/bin/run.js +1806 -1766
  2. package/bin/upgrade-state.js +4822 -4768
  3. package/dist/assets/{GithubBrowserTabs-BzJF4k9Y.js → GithubBrowserTabs-BykoCFfz.js} +1 -1
  4. package/dist/assets/{StudioErrorNotice-BdllGqRy.js → StudioErrorNotice-CSrUw1QV.js} +1 -1
  5. package/dist/assets/{Vibe64AsyncModuleState-Bi0TqlIu.js → Vibe64AsyncModuleState-Do9EqX3S.js} +1 -1
  6. package/dist/assets/{Vibe64AuthSettingsButton-BuvmwGiT.js → Vibe64AuthSettingsButton-CIwtchKm.js} +1 -1
  7. package/dist/assets/{Vibe64DashboardBackButton-Ccd4hpD6.js → Vibe64DashboardBackButton-BH_8j_VR.js} +1 -1
  8. package/dist/assets/{Vibe64DashboardShell-D67m4aWz.js → Vibe64DashboardShell-DXVDJUAY.js} +1 -1
  9. package/dist/assets/{Vibe64DatabaseWorkspace-D3uK1gDm.js → Vibe64DatabaseWorkspace-Ca8IHSRq.js} +1 -1
  10. package/dist/assets/{Vibe64OutputControls-D2CCECo5.css → Vibe64OutputControls-Co5YzwcK.css} +1 -1
  11. package/dist/assets/Vibe64OutputControls-DngQNTTt.js +8 -0
  12. package/dist/assets/{Vibe64RepositoryWorkspace-0jAxvdA8.js → Vibe64RepositoryWorkspace-BfsZozSJ.js} +1 -1
  13. package/dist/assets/{Vibe64SessionFiles-B3ONZrBL.css → Vibe64SessionFiles-Bl8wJ5Sk.css} +1 -1
  14. package/dist/assets/{Vibe64SessionFiles-BCOJ4QmR.js → Vibe64SessionFiles-n87RqqY6.js} +3 -3
  15. package/dist/assets/{Vibe64TemporaryAiFixAction-DM2jpPbQ.js → Vibe64TemporaryAiFixAction-BiuIE9mC.js} +1 -1
  16. package/dist/assets/{Vibe64UiStoryboardView-DP5af46a.js → Vibe64UiStoryboardView-BhKRpL0N.js} +1 -1
  17. package/dist/assets/{Vibe64UnavailableSessions-C7XwH1SS.js → Vibe64UnavailableSessions-Ca5nC7KH.js} +1 -1
  18. package/dist/assets/{_sessionId_-B1Ymr7c_.js → _sessionId_-B_TTRB4c.js} +1 -1
  19. package/dist/assets/{_sessionTool_-DVYdREoI.js → _sessionTool_-1V-z6Pbp.js} +1 -1
  20. package/dist/assets/{_slug_-CQseA9pt.css → _slug_-Buxpw0T4.css} +1 -1
  21. package/dist/assets/_slug_-DsqilUs_.js +24 -0
  22. package/dist/assets/{access-Cb7dkN53.js → access-tl4ht_d8.js} +1 -1
  23. package/dist/assets/{app-BvgY7oVf.js → app-DT4_MliP.js} +1 -1
  24. package/dist/assets/{assistantRouting-B38ujQ7x.js → assistantRouting-D4XpXcEf.js} +1 -1
  25. package/dist/assets/{changes-lsBcuikn.js → changes-DZWHZguL.js} +1 -1
  26. package/dist/assets/{client-CRI5CNKl.js → client-BWV84wi2.js} +2 -2
  27. package/dist/assets/{client-TGaWwOhc.css → client-DGrP-2AJ.css} +1 -1
  28. package/dist/assets/{conversation-CDEt9jBx.js → conversation-B90ERX9h.js} +1 -1
  29. package/dist/assets/{dashboard-D8HOAw46.js → dashboard-iREwhGqv.js} +1 -1
  30. package/dist/assets/{definitions-DLTX17nI.js → definitions-CNu5E87y.js} +1 -1
  31. package/dist/assets/{env-DJezQixO.js → env-D5KpTEw7.js} +1 -1
  32. package/dist/assets/{health-CtKdN_Nf.js → health-BhoO1d4h.js} +1 -1
  33. package/dist/assets/{history-BdZFOtz4.js → history-DVURy45X.js} +1 -1
  34. package/dist/assets/{incoming-VsQNnL9m.js → incoming-DzADFGqp.js} +1 -1
  35. package/dist/assets/{index-C4K3ntms.js → index-GBRpNZLy.js} +5 -5
  36. package/dist/assets/{index-C-osVUKw.css → index-irlMYzLh.css} +1 -1
  37. package/dist/assets/{integrations-CMQ9EDmt.js → integrations-Dy5jIiJ5.js} +1 -1
  38. package/dist/assets/{issues-DHpY5hSr.js → issues-lh7R775d.js} +1 -1
  39. package/dist/assets/{learning-DXlMuwzh.js → learning-_O1PEaam.js} +1 -1
  40. package/dist/assets/{mdi-yXT-CQ6u.js → mdi-CG9pWOSj.js} +1 -1
  41. package/dist/assets/{placement-NpX2s7u8.js → placement-BF-zIEhA.js} +1 -1
  42. package/dist/assets/{pull-requests-BcKNEUYH.js → pull-requests-ByE-Dvk7.js} +1 -1
  43. package/dist/assets/{repository-ClEgntHW.js → repository-BUfUAyS9.js} +1 -1
  44. package/dist/assets/{session-BlD46q-d.js → session-BdhKrcX4.js} +1 -1
  45. package/dist/assets/{settings-BwukeIKe.js → settings-CzhIcn9K.js} +1 -1
  46. package/dist/assets/shared-DpMvYJO3.js +2 -0
  47. package/dist/assets/{useArchivedVibe64Sessions-D5zUA-BC.js → useArchivedVibe64Sessions-CLHJOyeW.js} +1 -1
  48. package/dist/assets/{useVibe64ConversationLog-Dy6YTPQn.js → useVibe64ConversationLog-B4JgmxUf.js} +1 -1
  49. package/dist/assets/{useVibe64DatabaseTools-d6L09ugW.js → useVibe64DatabaseTools-4o6S8eXq.js} +1 -1
  50. package/dist/assets/{useVibe64Learning-cNKTv64W.js → useVibe64Learning-DyqXkpLw.js} +1 -1
  51. package/dist/assets/{useVibe64SessionData-C_jqncih.js → useVibe64SessionData-YhhE_5pC.js} +1 -1
  52. package/dist/assets/{useVibe64SessionSelection-uCEIWd3b.js → useVibe64SessionSelection-CuZCzAcY.js} +1 -1
  53. package/dist/assets/{useVibe64Terminal-BbghGR4x.js → useVibe64Terminal-Cg3idMcy.js} +1 -1
  54. package/dist/assets/{vibe64AssistantHost-BL1bnKm8.js → vibe64AssistantHost-CP6oxv5b.js} +1 -1
  55. package/dist/assets/{vibe64SessionFocus-DSJKVuRN.js → vibe64SessionFocus-Cz5Vq1re.js} +1 -1
  56. package/dist/assets/{vibe64SessionInfo-B_r1OMN0.js → vibe64SessionInfo-BuBUdL-e.js} +1 -1
  57. package/dist/assets/{vibe64SessionToolDefinitions-BualCK_5.js → vibe64SessionToolDefinitions-BJaJH5LR.js} +1 -1
  58. package/dist/index.html +13 -13
  59. package/docs/colleague-usage/ai-accounts-and-routing.md +4 -1
  60. package/docs/colleague-usage/ai-onboarding.md +11 -12
  61. package/docs/colleague-usage/coding-agents.md +4 -0
  62. package/docs/colleague-usage/connected-projects.md +8 -0
  63. package/docs/colleague-usage/learning-environment.md +3 -11
  64. package/docs/colleague-usage/learning-mode-ui.md +7 -0
  65. package/docs/colleague-usage/learning-practice-projects.md +13 -3
  66. package/docs/colleague-usage/learning-with-colleague.md +25 -1
  67. package/docs/colleague-usage/lesson-authoring.md +14 -5
  68. package/docs/colleague-usage/lesson-step-bar.md +99 -0
  69. package/docs/colleague-usage/preview.md +6 -3
  70. package/docs/colleague-usage/teaching-content.md +5 -2
  71. package/docs/templates/learn-topic/README.md +2 -2
  72. package/docs/training-content.md +146 -7
  73. package/node_modules/@local/vibe64-execution/src/server/hostProfile.js +12 -0
  74. package/node_modules/@local/vibe64-terminals/package.json +1 -0
  75. package/node_modules/@local/vibe64-training/package.json +3 -0
  76. package/package.json +3 -3
  77. package/server.bundle.mjs +36675 -36461
  78. package/dist/assets/Vibe64OutputControls-BfESn5kJ.js +0 -8
  79. package/dist/assets/_slug_-CYO2vjCd.js +0 -24
  80. package/dist/assets/shared-BM2SV6fi.js +0 -2
@@ -120,17 +120,133 @@ topic with every step kind; the copyable template is `docs/templates/learn-topic
120
120
  - `choice` — `question` (at most 2000 characters), 2–8 `options` and
121
121
  `answer`, a non-empty list of unique option indexes (0-based, in range).
122
122
  The learner passes by selecting exactly the answer indexes.
123
+ - `review` — the learner's own AI reviews their practice work against the
124
+ author's `rubric` (at most 600 characters, shown to the learner as the
125
+ step's check line) when the learner presses **Check my work**. It needs
126
+ the lesson's `exercise`. `evidence` (optional, default `["changes"]`) is
127
+ `["changes"]` or `["changes", "conversation"]`; see
128
+ [Review checks](#review-checks).
123
129
  - `self` — the learner ticks **Done** after doing the step.
124
130
  - `none` — reading only; cannot be `required`. The learner may press
125
131
  **Mark as done**, which records a learner-origin `read` pass (a bonus that
126
132
  never counts toward completion).
127
133
  A kind declares only its own fields; anything else is rejected.
128
134
 
129
- **Check verdicts are final.** v2 has no rubric and no AI grader: an automatic
130
- check or the choice comparator decides, otherwise the learner ticks a `self`
131
- step (or marks a `none` step read). Colleague teaches and explains but never passes a step. Write step bodies
135
+ ### Beats: the step bar walks the learner through a step
136
+
137
+ A step may end its body Markdown with a fenced `beats` block. The lesson step
138
+ bar (yellow, above the page in Learn mode) plays the beats one line at a time
139
+ while the learner stays where they are; the reader never shows the block.
140
+
141
+ ````md
142
+ ```beats
143
+ show preview: This is your app, running.
144
+ show chat: This is the coding chat. You ask for changes here.
145
+ do send-message: Ask it: "Make the heading green"
146
+ do agent-finished: Wait while the agent works.
147
+ do reload-preview: Press Reload preview to see the change.
148
+ check done: Press Done when the heading is green.
149
+ ```
150
+ ````
151
+
152
+ One beat per line: `<show|do|check> <target>[ <path>]: <text>`.
153
+
154
+ - `show <place>` points at a place and moves on by itself after 5–12 seconds
155
+ (longer text stays longer; never with reduced motion, where the learner
156
+ presses Next). Text is at most 160 characters.
157
+ - `do <place|action>` waits for the learner: to be at a place, or to do an
158
+ action (`send-message`, `agent-finished`, `file-opened <path>`,
159
+ `app-pressed`, `colleague-minimised`). `do send-message` text holds exactly one quoted prompt (at
160
+ most 500 characters). Only `file-opened` takes an argument, a relative
161
+ practice project path without `..`. A do beat completes when the page shows
162
+ its place, or when its activity happens in the lesson's practice project
163
+ after the beat began (`send-message`: a message accepted in the chat;
164
+ `agent-finished`: the agent's turn ends; `file-opened`: that file opens in
165
+ Files; `app-pressed`: the practice App's button; `colleague`, `save`,
166
+ `reload-preview`: Colleague opens, a Save succeeds, the Preview reloads;
167
+ `learning`: the learner presses **L**, which counts when they are back in
168
+ Learn; `colleague-minimised`: Colleague closes or minimises).
169
+ **Do it for me** does it for the learner (sending a `send-message` prompt as
170
+ the learner's Main chat message, stored as sent by the lesson), except Save,
171
+ `agent-finished`, `app-pressed`, `colleague-minimised` and `learning` (which
172
+ it only points at). A `check done` step whose do beats were
173
+ all detected is recorded done without a press.
174
+ - `check <auto|done>: <text>` is the step's own check (`auto` for
175
+ `check.kind:"auto"`, `done` for `self`): at most one, and the last line.
176
+ `check review` (for `check.kind:"review"`) takes no text: the bar shows the
177
+ step's `check.rubric` from `lesson.json`, its single source.
178
+ - Places: `preview`, `dashboard`, `database-erd`, `database-data`, `files`,
179
+ `changes`, `git-log`, `session-info`, `architecture`, `learning` (the **L**
180
+ button), `lesson` (the Lesson tab), `chat` (the coding chat), `colleague`,
181
+ `courses`, `lesson-bar` (the bar itself), `save` and `reload-preview`.
182
+ `dashboard` and `lesson-bar` can only be shown.
183
+ - 1–8 beats. Only `lesson`, `lesson-bar`, `courses`, `learning`,
184
+ `colleague`, `colleague-minimised` and `check done` work in a lesson without an `exercise`; every
185
+ other beat needs the practice project.
186
+ - A step with beats has no `guide`; **Show me** plays its beats from the first.
187
+
188
+ `vibe64 training validate` rejects an unknown kind, place or action, an
189
+ argument other than a `file-opened` path, a check that does not match the
190
+ step's check kind, a second or non-final check, a block that is not closed or
191
+ does not end the body, and beats together with a `guide`. Back and Next in the
192
+ bar move by beat into the neighbouring steps; after the last beat the bar shows
193
+ the step's own verdict control (Done, Mark as done, Check my work, or Answer in
194
+ Step for a choice) and Next step. **Step** (≡) on the bar opens the whole step
195
+ text under it in one click, so a beat never needs to repeat the body. Steps never advance by themselves.
196
+
197
+ **Check verdicts are final.** Verdicts come from the step's declared check: an
198
+ automatic check, the choice comparator, a review check (the learner's own AI
199
+ judging their work against the author's rubric), or the learner's tick on a
200
+ `self` step (or mark on a `none` step). A pass is never replaced. Colleague
201
+ teaches and explains but never passes a step and never runs a review. Prefer
202
+ an automatic check where a deterministic check can decide; write step bodies
132
203
  so a learner can follow them without AI.
133
204
 
205
+ ### Review checks
206
+
207
+ A review step judges work that a deterministic check cannot, for example "the
208
+ heading is green and nothing else broke":
209
+
210
+ ```json
211
+ { "id": "green-heading", "title": "Make the heading green",
212
+ "body": "steps/green-heading.md",
213
+ "check": { "kind": "review", "rubric": "The heading is green and nothing else broke.",
214
+ "evidence": ["changes", "conversation"] },
215
+ "required": true }
216
+ ```
217
+
218
+ - The rubric is the only requirement. Write it as what the finished work
219
+ shows, in words the learner understands; it is shown to the learner and to
220
+ Colleague.
221
+ - Evidence `changes` is the practice session's work against the commit the
222
+ lesson started from, uncommitted work included: the changed files with
223
+ added/removed line counts and their diff, at most 60,000 characters (20,000
224
+ per file). Binary files, larger files and files beyond that budget are
225
+ listed without their text; agent guidance folders (`.agents`, `.claude`,
226
+ `.codex`, `.opencode`) are left out. `conversation` adds the last 20 turns
227
+ of the session's Main chat (the learner's and the agent's text, at most
228
+ 40,000 characters). Work the coding agent did at the learner's request
229
+ counts unless the rubric says the learner must do it themselves.
230
+ - **Check my work** runs only from the learner's own browser, on the
231
+ learner's own AI account: the Helper route of their workflow in **AI
232
+ Accounts → Model routing** (workload `lesson_review`, input at most 160,000
233
+ characters, 180 seconds). Vibe64 never pays for or resells it.
234
+ - The reviewer returns Passed or Not yet, a comment (at most 600
235
+ characters), a hint for Not yet (at most 300) and up to six rubric points.
236
+ The result is saved as a `review` step result; Passed is final.
237
+ - Nothing is recorded, and nothing runs, while the coding agent is working
238
+ ("Wait until the agent finishes") or when there are no changes yet ("No
239
+ changes yet"). Pressing again with unchanged evidence returns the saved
240
+ review without another AI call. A missing Helper route, a provider error or
241
+ timeout, a reply outside the fixed output schema or unreadable evidence
242
+ records nothing; the learner tries again.
243
+ - The evidence is data, never instructions: the reviewer is told to follow
244
+ only the rubric, so a prompt injected into the learner's project can at most
245
+ pass the learner's own practice step.
246
+ - Only lessons started after a review-capable release record the commit their
247
+ practice session started from; an older attempt is asked to restart before
248
+ its work can be reviewed.
249
+
134
250
  Choice answers stay on the server. The lesson descriptor is never served to a
135
251
  browser: a step body, `notes`, visual SVG/controller/asset or exercise file
136
252
  cannot be any v2 lesson descriptor of the topic (for example, an exercise
@@ -584,11 +700,20 @@ is the one in progress, `lessonTitle` is filled only with `includeTitle`, and
584
700
 
585
701
  Step results (`step-progress.json`, schema version 3) belong to the attempt in
586
702
  progress: `{learnerId,revision,attemptId,lesson,results,receipts}`, at most 64
587
- results. A result's `kind` is `auto`, `choice`, `self` or `read` (a `none`
588
- step the learner marked done), matching the pinned step's check. A new attempt
589
- starts with none. `readStepProgress({actor,attemptId?})`
703
+ results. A result's `kind` is `auto`, `choice`, `review`, `self` or `read` (a
704
+ `none` step the learner marked done), matching the pinned step's check. A
705
+ `review` result has origin `check`, evidence `{reviewId,evidenceHash}` and
706
+ `review:{comment,hint?,points?}` (single-line text; only a review result has
707
+ it). A new attempt starts with none. `readStepProgress({actor,attemptId?})`
590
708
  and `readAttemptRecord({actor,attemptId})` read them.
591
709
 
710
+ `runReviewExclusive({actor},operation)` serializes one learner's reviews with
711
+ `review.lock` (a second review while one runs is refused with
712
+ `VIBE64_TRAINING_REVIEW_BUSY`). It gives the review owner its private Helper
713
+ root `review-helpers/` and the retained Helper receipt `review-helper.json`
714
+ `{schemaVersion:1,learnerId,helper}` (`helper` is `null` once cleaned up), so a
715
+ review that stopped part-way is cleaned before the next one starts.
716
+
592
717
  The published `20261008-learning-practice-history` upgrade reads vibe64 0.1.35
593
718
  version 1 progress through the frozen `practiceHistoryReader.js`
594
719
  (`readState`, `readExerciseProjectScope`), moved unchanged from the earlier
@@ -596,10 +721,19 @@ learner state; the live store no longer reads that format.
596
721
 
597
722
  The same internal store adds `beginPreparation({actor,attemptId,expectedRevision})`,
598
723
  `recordPreparationReady({actor,attemptId,initialSessionId,expectedRevision})` and
599
- `recordPreparationFailure({actor,attemptId,initialSessionId,expectedRevision,stage,code,message})`.
724
+ `recordPreparationFailure({actor,attemptId,initialSessionId,expectedRevision,stage,code,message})`
725
+ and `recordPreparationStart({actor,attemptId,initialSessionId,expectedRevision,startCommit})`.
600
726
  These are observation writers, not a provisioner, learner action or authority to
601
727
  create an arbitrary project. Only an admitted server caller may compose them.
602
728
 
729
+ When the session owner refuses the practice session because the learner has no
730
+ usable AI yet (`vibe64_assistant_workflow_unavailable` or
731
+ `vibe64_assistant_role_unconfigured`), preparation records and throws
732
+ `VIBE64_TRAINING_PRACTICE_AI_REQUIRED` (409) with learner wording that asks them
733
+ to set up their AI and continue the same lesson. `lesson.read` and
734
+ `learning.read` return the saved failure's `code` and `message`, so the step bar
735
+ and Courses offer the AI setup instead of beats or a generic error.
736
+
603
737
  An untouched `{phase:"reserved"}` remains valid and contains no session identity.
604
738
  Explicit begin atomically saves `{phase:"preparing",initialSessionId}` before any
605
739
  external effects. The immutable ID is `training-<attempt-UUID>`, validated by the
@@ -617,6 +751,11 @@ A failure records `preparing` with `failure:{stage,code,message}`; stages are
617
751
  `project`, `session` or `setup`, code is at most 64 characters and the single-line
618
752
  recovery message at most 512. It retains the ID and removes any old ready time.
619
753
  Begin replays do not clear failures. A fresh successful observation can clear one.
754
+ Preparation records the verified exercise commit as `startCommit` (a 40- or
755
+ 64-character Git object ID) just before it creates the practice session from
756
+ it; a retry before the session exists records it again, a ready attempt keeps
757
+ it, and every later phase carries it. A review check reads the learner's
758
+ changes against it. Attempts prepared before this field existed have none.
620
759
  Matching observation replays precede revision checking and return `replayed:true`
621
760
  without writing; a different stale observation conflicts rather than overriding
622
761
  newer state. No project/session effect executes inside the user-state lock.
@@ -0,0 +1,12 @@
1
+ import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
2
+ import h from"node:path";import l from"node:process";import{isMainThread as u}from"node:worker_threads";var n=Symbol.for(
3
+ "vibe64.hostProfile"),t=Symbol.for("vibe64.hostProfile.previousUmask"),b=["runtimePackRoot","sharedCacheRoot","execHelpe\
4
+ rPath"],s=Object.freeze({runtimePackRoot:"",sharedCacheRoot:"",execHelperPath:"",sharedGroupAccess:!1});function a(e){u&&
5
+ (e&&!(t in globalThis)?globalThis[t]=l.umask(7):!e&&t in globalThis&&(l.umask(globalThis[t]),delete globalThis[t]))}function T(e=null){
6
+ if(e===null)return delete globalThis[n],a(!1),s;let c=Object.keys(e).filter(o=>!(o in s));if(c.length)throw new TypeError(
7
+ `Unknown host profile setting: ${c.join(", ")}.`);let r={...s,...e};for(let o of b)if(typeof r[o]!="string"||r[o]&&!h.isAbsolute(
8
+ r[o]))throw new TypeError(`Host profile ${o} must be an absolute path or empty.`);if(typeof r.sharedGroupAccess!="boolea\
9
+ n")throw new TypeError("Host profile sharedGroupAccess must be true or false.");let i=Object.freeze(r);return globalThis[n]=
10
+ i,a(i.sharedGroupAccess),i}function f(){return globalThis[n]||s}function g(){return f().sharedGroupAccess?{inheritingDirectory:1528,
11
+ directory:504,file:432}:{inheritingDirectory:448,directory:448,file:384}}function y(){return f().sharedGroupAccess?"0007":
12
+ ""}export{T as configureVibe64Host,f as vibe64Host,y as vibe64ProcessUmask,g as vibe64SharedModes};
@@ -18,6 +18,7 @@
18
18
  "./shared/launchPreviewProtocol": "./src/shared/launchPreviewProtocol.js",
19
19
  "./shared/assistantWorkPlan": "./src/shared/assistantWorkPlan.js",
20
20
  "./server/retainedConversationHelper": "./src/server/retainedConversationHelper.js",
21
+ "./server/practiceAgentGuidance": "./src/server/practiceAgentGuidance.js",
21
22
  "./server/assistantClaudeCommandUpgrade": "./src/server/assistantClaudeCommandUpgrade.js",
22
23
  "./server/assistantClaudeDeliveryUpgrade": "./src/server/assistantClaudeDeliveryUpgrade.js",
23
24
  "./server/assistantPlanProgressUpgrade": "./src/server/assistantPlanProgressUpgrade.js"
@@ -21,6 +21,8 @@
21
21
  "./server/installed-catalogue": "./src/server/installedCatalogue.js",
22
22
  "./server/routes": "./src/server/registerRoutes.js",
23
23
  "./server/step-checks": "./src/server/stepChecks.js",
24
+ "./server/step-evidence": "./src/server/stepEvidence.js",
25
+ "./server/step-review": "./src/server/stepReview.js",
24
26
  "./server/code-authorship": "./src/server/codeAuthorship.js",
25
27
  "./server/code-save-owner": "./src/server/codeEditorActions.js",
26
28
  "./server/step-actions": "./src/server/stepActions.js",
@@ -33,6 +35,7 @@
33
35
  "./shared/presentation-schemas": "./src/shared/presentationSchemas.js",
34
36
  "./shared/learning-guidance": "./src/shared/learningGuidance.js",
35
37
  "./shared/guide-targets": "./src/shared/guideTargets.js",
38
+ "./shared/beats": "./src/shared/beats.js",
36
39
  "./client/guide-overlay": "./src/client/TrainingGuideOverlay.vue",
37
40
  "./client/guide": "./src/client/trainingGuide.js",
38
41
  "./client/course-progress": "./src/client/courseProgress.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe64",
3
- "version": "0.1.36",
3
+ "version": "0.1.37",
4
4
  "private": false,
5
5
  "description": "Run Vibe64 against the current project.",
6
6
  "type": "module",
@@ -126,8 +126,8 @@
126
126
  "figures": "6.1.0",
127
127
  "find-my-way": "9.9.0",
128
128
  "flatted": "3.4.4",
129
- "genesis-compiler": "1.9.3",
130
- "genesis-stack": "1.2.1",
129
+ "genesis-compiler": "1.10.0",
130
+ "genesis-stack": "1.3.0",
131
131
  "get-port": "7.2.0",
132
132
  "get-stream": "9.0.1",
133
133
  "glob": "13.0.6",