vibe64 0.1.40 → 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.
- package/bin/run.js +1841 -1837
- package/bin/upgrade-state.js +2693 -2685
- package/dist/assets/{GithubBrowserTabs-BoDkGFtY.js → GithubBrowserTabs-YvIe2BdE.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-CmiidAs5.js → Vibe64AuthSettingsButton-DLdfT68V.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-MCzEQCWu.js → Vibe64DashboardShell-DMPz6fIx.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-DM9V017v.js → Vibe64DatabaseWorkspace-BCEIOlSg.js} +1 -1
- package/dist/assets/{Vibe64OutputControls-CU9H0Dur.js → Vibe64OutputControls-DMoqL0VD.js} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-DaAChLA8.js → Vibe64RepositoryWorkspace-BdwRwbxp.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-CM2EzXBf.js → Vibe64SessionFiles-ChJWUOqm.js} +1 -1
- package/dist/assets/{_sessionId_-DVHd6D5V.js → _sessionId_-Bw0KfJeR.js} +1 -1
- package/dist/assets/_slug_-CAmuBm-M.css +1 -0
- package/dist/assets/_slug_-q9prK_gX.js +25 -0
- package/dist/assets/{access-BbzSuMt5.js → access-C05Nkq6r.js} +1 -1
- package/dist/assets/{app-BNh2oZg-.js → app-D1CGY9Xm.js} +1 -1
- package/dist/assets/{changes-D8Koqrqg.js → changes-D17XpgGz.js} +1 -1
- package/dist/assets/{client-CybfBKCn.js → client-BxGiylrJ.js} +1 -1
- package/dist/assets/{client-D6UGamrv.css → client-C8jwAMY9.css} +1 -1
- package/dist/assets/{dashboard-DLrmf5ed.js → dashboard-BXXgeQ0Q.js} +1 -1
- package/dist/assets/{definitions-DgyQJgn-.js → definitions-SNvFDEFS.js} +1 -1
- package/dist/assets/{env-rVQwLtYr.js → env-sXAQqKWk.js} +1 -1
- package/dist/assets/{health-B6r9LLrd.js → health-Cr34pf2p.js} +1 -1
- package/dist/assets/{history-C6xLWUxL.js → history-N1iRZaab.js} +1 -1
- package/dist/assets/{index-BC29JK2e.css → index-B17d4wpZ.css} +1 -1
- package/dist/assets/index-Mxalhei8.js +138 -0
- package/dist/assets/{integrations-CcrqPXxj.js → integrations-BmwFvHgZ.js} +1 -1
- package/dist/assets/{issues-DEjIlMdl.js → issues-BbiG7dCV.js} +1 -1
- package/dist/assets/{learning-BP1xvd8w.js → learning-CUCuuoHM.js} +1 -1
- package/dist/assets/{publish-CVXolnAG.js → publish-4r_4K5IY.js} +1 -1
- package/dist/assets/{publish-CPWnztCc.css → publish-BFTsAMCF.css} +1 -1
- package/dist/assets/{pull-requests-DdgzLzY_.js → pull-requests-DY9jg3cE.js} +1 -1
- package/dist/assets/{repository-5S0LzRq3.js → repository-DhXdoMP6.js} +1 -1
- package/dist/assets/{settings-BKP_eQ3F.js → settings-Cj4u-76p.js} +1 -1
- package/dist/assets/{useArchivedVibe64Sessions-D8DWpcSy.js → useArchivedVibe64Sessions-BXNg8oES.js} +1 -1
- package/dist/assets/{useVibe64ConversationLog-D-Vkq0sK.js → useVibe64ConversationLog-C1xjhFtS.js} +1 -1
- package/dist/assets/{useVibe64DatabaseTools-Dpm53ruL.js → useVibe64DatabaseTools-H6H-YJQX.js} +1 -1
- package/dist/assets/{useVibe64SessionData-CGJXj3r7.js → useVibe64SessionData-CnDOFFHb.js} +1 -1
- package/dist/assets/{useVibe64SessionSelection-BEqKR412.js → useVibe64SessionSelection-J87nJ9p5.js} +1 -1
- package/dist/assets/{vibe64SessionFocus-tv2wz7_H.js → vibe64SessionFocus-DlN8NwcE.js} +1 -1
- package/dist/index.html +5 -5
- package/docs/colleague-usage/ai-onboarding.md +3 -1
- package/docs/colleague-usage/learning-environment.md +39 -25
- package/docs/colleague-usage/learning-mode-ui.md +18 -9
- package/docs/colleague-usage/learning-practice-projects.md +2 -2
- package/docs/colleague-usage/learning-teacher-guide.md +2 -1
- package/docs/colleague-usage/learning-with-colleague.md +3 -3
- package/docs/colleague-usage/lesson-authoring.md +1 -1
- package/docs/colleague-usage/lesson-step-bar.md +38 -24
- package/docs/colleague-usage/preview-starting-application.md +10 -1
- package/docs/colleague-usage/project-setup.md +2 -2
- package/docs/colleague-usage/publishing.md +3 -1
- package/docs/colleague-usage/starter-apps.md +2 -2
- package/docs/training-content.md +2 -2
- 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/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/realtime/package.json +1 -1
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +77 -80
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +6 -6
- package/node_modules/@local/vibe64-genesis/src/server/index.js +195 -194
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +144 -149
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +8 -7
- package/package.json +8 -8
- package/server.bundle.mjs +14269 -14252
- package/dist/assets/_slug_-DsfaE8Vh.js +0 -25
- package/dist/assets/_slug_-_qfQqdHb.css +0 -1
- package/dist/assets/index-B9P6KjvH.js +0 -138
|
@@ -4,7 +4,7 @@ The **L** button switches between **Develop** (your own projects) and
|
|
|
4
4
|
**Learn** (lessons); see [The Learning environment (L)](learning-environment.md).
|
|
5
5
|
In Learn mode the app bar turns yellow, and **Courses** (at the right of the
|
|
6
6
|
lesson step bar, or in the project menu beside **L**) opens the Courses overlay, the catalogue where
|
|
7
|
-
lessons are chosen; a lesson itself is read in the page's **Lesson**
|
|
7
|
+
lessons are chosen; a lesson itself is read in the page's **Lesson** sheet (the **Lesson** toggle). This
|
|
8
8
|
guide describes the overlay's **Courses** tab. Its **In progress** and
|
|
9
9
|
**Archived** tabs are described in
|
|
10
10
|
[Practice projects](learning-practice-projects.md).
|
|
@@ -17,7 +17,15 @@ its dots mirror the course's lessons, ticked when complete), a chip saying
|
|
|
17
17
|
whether it is **Enabled**, a **Preview course** or **Disabled for new lessons**
|
|
18
18
|
(plus **Lesson in progress** or **Course complete** when true), the title, its ID and
|
|
19
19
|
release, topic and lesson counts, "N of M lessons complete" with a progress ring,
|
|
20
|
-
and the next lesson.
|
|
20
|
+
and the next lesson. The banner counts the courses and lessons on the cards
|
|
21
|
+
shown (an older release an update replaced is not counted).
|
|
22
|
+
|
|
23
|
+
An installed lesson this version of Vibe64 cannot teach (for example it names a
|
|
24
|
+
screen this Vibe64 no longer has) is left out of its course, and the card and
|
|
25
|
+
course page say "One lesson is not shown because this version of Vibe64 can't
|
|
26
|
+
teach it: <title>". The rest of the course works as usual. **Update** the
|
|
27
|
+
course when Courses offers an update; starting that lesson is refused with the
|
|
28
|
+
same reason.
|
|
21
29
|
|
|
22
30
|
A lesson is complete when every required step has passed in your saved progress
|
|
23
31
|
(required assessments, for a lesson in the earlier format). Only required
|
|
@@ -39,9 +47,10 @@ project. **Back to courses** returns to the list. On a phone the cards stack in
|
|
|
39
47
|
one column and the course page scrolls in the same pane.
|
|
40
48
|
|
|
41
49
|
The lesson card above the course cards is headed "Lesson in progress · code"
|
|
42
|
-
with the lesson title and, once reported, a ring of required
|
|
43
|
-
"N of M required steps
|
|
44
|
-
remaining steps."
|
|
50
|
+
with the lesson title and, once reported, a ring reading **N of M required done**, and
|
|
51
|
+
"N of M required steps done. This lesson is complete." or "Continue the
|
|
52
|
+
remaining steps." It counts only the required steps, so it can differ from
|
|
53
|
+
the step bar's **Step N of M**, which counts every step. **Continue lesson** opens that exact attempt. Disabled,
|
|
45
54
|
unavailable, loading and error states are shown on the same page. **Refresh
|
|
46
55
|
courses** rereads installed courses, progress and the course catalogue; after a
|
|
47
56
|
step result is saved, Courses refreshes that lesson's progress by itself. If
|
|
@@ -67,8 +76,8 @@ lesson: Creating your practice project. This can take a while; the lesson opens
|
|
|
67
76
|
by itself when it is ready.** Other start buttons stay disabled until the
|
|
68
77
|
request settles. If the start fails, the card says **The lesson did not start**
|
|
69
78
|
with the reason. As soon as the start is
|
|
70
|
-
confirmed, Courses closes by itself and the lesson opens
|
|
71
|
-
|
|
79
|
+
confirmed, Courses closes by itself and the lesson opens (its **Lesson** toggle on)
|
|
80
|
+
over its practice project; you do not need **Continue lesson**. A practice project's Workspace setup can
|
|
72
81
|
continue afterwards and the lesson becomes ready when setup succeeds (see
|
|
73
82
|
[Practice projects](learning-practice-projects.md)). **Starting lessons is
|
|
74
83
|
unavailable in this installation** appears only when the installation cannot
|
|
@@ -96,8 +105,8 @@ in progress, and **L** returns to it. When every required step has passed, the
|
|
|
96
105
|
(see [The Learning environment (L)](learning-environment.md)).
|
|
97
106
|
|
|
98
107
|
Starting or continuing a lesson, or **Open** under **In progress**, closes
|
|
99
|
-
Courses and opens the lesson
|
|
100
|
-
**Preview**
|
|
108
|
+
Courses and opens the lesson over its practice project, with the **Lesson**
|
|
109
|
+
toggle on beside the **Preview** | **Dash** switch; press it again to hide the lesson. Setup repair there is ordinary project work
|
|
101
110
|
(ask that session's agent or use Workspace setup recovery); it is not a learner
|
|
102
111
|
answer or a passed step.
|
|
103
112
|
|
|
@@ -87,7 +87,7 @@ lesson…** or **Loading archived lessons…** instead of staying blank.
|
|
|
87
87
|
practice project's name (or **No practice project**). Without one it says
|
|
88
88
|
**No lesson in progress. Start one from Courses.** The row has three buttons:
|
|
89
89
|
|
|
90
|
-
- **Open** closes Courses and opens the lesson
|
|
90
|
+
- **Open** closes Courses and opens the lesson (its **Lesson** toggle on) over its
|
|
91
91
|
practice project (or, for a lesson without one, of the page with no project
|
|
92
92
|
selected).
|
|
93
93
|
- **Restart** turns into **Archive and restart**; press that to archive this
|
|
@@ -121,7 +121,7 @@ projects.
|
|
|
121
121
|
## Finishing a lesson
|
|
122
122
|
|
|
123
123
|
When every required step has passed, the lesson's **Lesson finished** screen,
|
|
124
|
-
in the page's **Lesson**
|
|
124
|
+
in the page's **Lesson** sheet, finishes it: the lesson counts as completed for good, and the attempt is
|
|
125
125
|
archived as one bundle (its record, practice project and conversation). The
|
|
126
126
|
screen then offers **Next lesson** and **Back to courses**. **Start lesson** on
|
|
127
127
|
the course page starts a new attempt with a fresh project, teacher and results; the
|
|
@@ -72,7 +72,8 @@ passes a lesson step. When a lesson asks you to find a place, click it yourself.
|
|
|
72
72
|
|
|
73
73
|
## Opening your lesson
|
|
74
74
|
|
|
75
|
-
Colleague can show your current lesson step in the Learn page's **Lesson** pane
|
|
75
|
+
Colleague can show your current lesson step in the Learn page's **Lesson** pane
|
|
76
|
+
(turning the **Lesson** toggle on),
|
|
76
77
|
and open the **Courses** catalogue or close it so you can see the app, without
|
|
77
78
|
ending the lesson. While the lesson is going, the **Step N/M** button in
|
|
78
79
|
Colleague's header shows the current step in the Lesson pane (on a phone,
|
|
@@ -35,7 +35,7 @@ each, and the one you see always follows the mode:
|
|
|
35
35
|
|
|
36
36
|
In Learn mode, **Courses** (on the lesson step bar, or in the project menu beside **L**) is the catalogue
|
|
37
37
|
where you choose and start lessons; your current lesson is read on the Learn
|
|
38
|
-
page itself, in its **Lesson**
|
|
38
|
+
page itself, in its **Lesson** sheet beside Colleague (the **Lesson** toggle) (see `learning-environment`).
|
|
39
39
|
You can read lessons yourself without AI. Choose **Teach me** on a lesson step,
|
|
40
40
|
or ask Colleague about your lesson, and Colleague teaches the current step.
|
|
41
41
|
**Teach me** opens Colleague beside the step and sends "Teach me this step.";
|
|
@@ -51,12 +51,12 @@ passes the step for you:
|
|
|
51
51
|
arrive in pages; Colleague reads every page before claiming a step's text is
|
|
52
52
|
missing.
|
|
53
53
|
- It points at, or with "show me" opens, the real Vibe64 places the step uses,
|
|
54
|
-
replays the step's diagram, can show your current step in the **Lesson**
|
|
54
|
+
replays the step's diagram, can show your current step in the **Lesson** sheet (turning the toggle on),
|
|
55
55
|
and can open **Courses** or close it so you see the app. Courses keeps its
|
|
56
56
|
place while closed.
|
|
57
57
|
- In Learn mode with a lesson in progress, Colleague's header shows a small
|
|
58
58
|
yellow **Step N/M** button (a check once the step passed). Pressing it shows
|
|
59
|
-
that step in the page's **Lesson**
|
|
59
|
+
that step in the page's **Lesson** sheet (see `learning-environment`); on a
|
|
60
60
|
phone Colleague's full-screen chat also minimises so the step is visible, and
|
|
61
61
|
its avatar button brings Colleague back. It appears on the desktop panel, the
|
|
62
62
|
phone's full-screen chat and during voice chat. Develop shows no step button.
|
|
@@ -189,7 +189,7 @@ own snapshots, and for disabling a release.
|
|
|
189
189
|
In supported hosted installations, ask Colleague to admit your exact clean
|
|
190
190
|
committed snapshot from the authorized authoring session. Then open Learning with
|
|
191
191
|
**L**; on its **Courses** tab the **Author trial** card shows the snapshot's lesson
|
|
192
|
-
and release, and **Resume author trial** opens it in the ordinary lesson reader, the page's **Lesson**
|
|
192
|
+
and release, and **Resume author trial** opens it in the ordinary lesson reader, the page's **Lesson** sheet. This saved trial has isolated progress; it is not an
|
|
193
193
|
enabled learner course. Ordinary **Start lesson** still requires a published lesson in
|
|
194
194
|
an enabled release. Local validation/bundling alone admits no trial. Do not change
|
|
195
195
|
a draft's status to bypass that guard or report a trial as published progress.
|
|
@@ -1,31 +1,44 @@
|
|
|
1
1
|
# The lesson step bar
|
|
2
2
|
|
|
3
3
|
The yellow lesson step bar above the project page plays the current lesson
|
|
4
|
-
step: its position, beats, **
|
|
4
|
+
step: its position, beats, **Back** and **Next**, and **Courses**. The rest of
|
|
5
5
|
Learn mode is in [The Learning environment](learning-environment.md).
|
|
6
6
|
|
|
7
7
|
In Learn mode, while your lesson is loaded, a yellow bar above the project page
|
|
8
|
-
names the lesson and shows **Step N of M**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
names the lesson and shows **Step N of M** (this step's number among all the
|
|
9
|
+
lesson's steps) with the step's title and status.
|
|
10
|
+
|
|
11
|
+
**Moving through the lesson.** One labelled pair of buttons, with the same
|
|
12
|
+
names for screen readers and the keyboard:
|
|
13
|
+
|
|
14
|
+
- **Back** goes back one part of this step, or into the previous step from its
|
|
15
|
+
first part. It is greyed out at the very start of the lesson.
|
|
16
|
+
- The forward button says exactly what it does: **Next** while this step has
|
|
17
|
+
more parts, **Next step** on its last part (and on a step without parts),
|
|
18
|
+
and **Finish** on the last step once every required step is done (it shows
|
|
19
|
+
the **Lesson finished** screen). On the last step before that there is no
|
|
20
|
+
forward button. There is no second **Next step** button.
|
|
21
|
+
|
|
22
|
+
On a practice project the **Lesson** toggle is in the header beside **Preview**
|
|
23
|
+
| **Dash** (see [The Lesson pane](learning-environment.md#the-lesson-pane)); on
|
|
24
|
+
Management and other screens outside any project it is on the bar, between
|
|
25
|
+
the forward button and **Courses**. Press it to show the lesson (it turns
|
|
26
|
+
yellow with its switch on); press it again to hide it. On a lesson without a
|
|
27
|
+
practice project the lesson is already the whole page, so there is no toggle.
|
|
28
|
+
|
|
29
|
+
Away from the lesson's practice project (for example on Management), the bar
|
|
30
|
+
also offers **Open practice project**, which goes back to that project's
|
|
31
|
+
editor. **Courses**, at its right end (a book icon on a phone), opens the
|
|
32
|
+
Courses overlay to choose another lesson. The bar is always shown in full; it
|
|
33
|
+
cannot be collapsed or hidden. On a phone the lesson name is hidden.
|
|
22
34
|
|
|
23
35
|
### Steps with beats
|
|
24
36
|
|
|
25
37
|
Some steps walk you through the real page from the bar itself, one short line
|
|
26
38
|
(a *beat*) at a time, while the lesson stays where it is. The bar then shows
|
|
27
|
-
the lesson name, **N
|
|
28
|
-
current one
|
|
39
|
+
the lesson name, **Step N of M** and a dot per beat, the parts of this step
|
|
40
|
+
(the filled dot is the current one; hovering the dots says, for example,
|
|
41
|
+
**This step: part 2 of 4**), then the beat's line:
|
|
29
42
|
|
|
30
43
|
- A *show* line rings the place it names (for example the **Preview** tab or the
|
|
31
44
|
coding chat) and moves on by itself after a few seconds; a thin line under
|
|
@@ -62,12 +75,12 @@ current one), then the beat's line:
|
|
|
62
75
|
**Set up your AI**; see `learning-mode-ui`.
|
|
63
76
|
- On a step you would finish with **Done**, doing every *do* line of it marks
|
|
64
77
|
the step done by itself.
|
|
65
|
-
- **Back** and **Next**
|
|
66
|
-
step
|
|
78
|
+
- **Back** and **Next** move one beat; on the step's last beat the forward
|
|
79
|
+
button reads **Next step** and goes into the next step.
|
|
67
80
|
- After the last beat the bar shows the step's own control: **Done**, **Mark as
|
|
68
81
|
done**, **Check my work** (an automatic check, or a review; a check that does
|
|
69
82
|
not pass says why under the line) or **Answer in Lesson** for a question, which shows the
|
|
70
|
-
step in the Lesson pane
|
|
83
|
+
step in the Lesson pane, beside a quieter **Next step**. **I'm stuck**
|
|
71
84
|
(on a *do* line, and after the last beat of a step that **Check my work**
|
|
72
85
|
decides, until the step passes; also in the Lesson pane beside **Teach me**) opens
|
|
73
86
|
Colleague and asks it for help with this step (see `learning-with-colleague`).
|
|
@@ -92,7 +105,8 @@ why, nothing is recorded, and you can press **Check again**. Colleague never
|
|
|
92
105
|
runs a review or passes a step for you.
|
|
93
106
|
|
|
94
107
|
This tab remembers the beat and the pause; another tab or device starts the
|
|
95
|
-
step at its first beat. On a phone the bar has
|
|
96
|
-
the
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
step at its first beat. On a phone the bar has three tidy rows: the position
|
|
109
|
+
with the icon buttons (**Courses**, **Open practice project** and, off a
|
|
110
|
+
project, **Lesson**), then the beat's line and its one button, then **Back**
|
|
111
|
+
at the left and the forward button at the right. A step without beats shows
|
|
112
|
+
its title and status as before, and **Show me** when it can point at a place.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This continues [Previewing a web application](preview.md).
|
|
4
4
|
|
|
5
5
|
In an empty project's **Preview**, choose **Use this starter** on the desired
|
|
6
|
-
Basic,
|
|
6
|
+
starter, such as Basic app, App with no users, but a database, or App with users. On mobile, open **Show project** first. Import
|
|
7
7
|
adds source to this session; review it and use **Save** to keep it in the project.
|
|
8
8
|
Setup and running the app are separate operations.
|
|
9
9
|
|
|
@@ -19,6 +19,15 @@ apply one. After you choose a starter and accept its offer or directly request
|
|
|
19
19
|
it, Colleague can use the existing onboarding action and recheck the result.
|
|
20
20
|
A successful import does not mean dependencies are prepared or Preview is running.
|
|
21
21
|
|
|
22
|
+
When a starter needs a resource such as its database, Preview waits for it and
|
|
23
|
+
says so instead of starting. Where the host supplies that resource (hosted
|
|
24
|
+
Vibe64's managed databases), Preview says "Vibe64 is still setting up this
|
|
25
|
+
app's database" until workspace setup finishes; press **Check again** then.
|
|
26
|
+
Where you supply it, Preview names the variables to set, for example "set
|
|
27
|
+
DB_DATABASE in Env (in Dash, under Development)": open **Dash → Env**, choose
|
|
28
|
+
**Development**, add the value (see [Development Env](development-env.md)) and
|
|
29
|
+
press **Check again**.
|
|
30
|
+
|
|
22
31
|
For recurring **Preview could not load an application resource** errors, enable
|
|
23
32
|
Preview diagnostics in the affected Studio browser before reproducing: add
|
|
24
33
|
`vibe64_preview_debug=1` to the page URL, or set
|
|
@@ -58,8 +58,8 @@ work. Public applications and non-web projects do not need preview accounts.
|
|
|
58
58
|
1. Open the project and create or select its coding session. At **What would you
|
|
59
59
|
like to build with?**, review the available starter cards, grouped by
|
|
60
60
|
technology. The official catalogue lists JSKIT first: **JSKIT · Basic app**
|
|
61
|
-
(no accounts or database), **JSKIT ·
|
|
62
|
-
**JSKIT ·
|
|
61
|
+
(no accounts or database), **JSKIT · App with no users, but a database** (MySQL) and
|
|
62
|
+
**JSKIT · App with users** (sign-up, login and MySQL). Then one **Basic app**
|
|
63
63
|
each for Django, Rails, Spring Boot, Express and Next.js: a small notes form
|
|
64
64
|
saved to SQLite (MySQL/MariaDB for Spring Boot), with ready tests. Only the
|
|
65
65
|
Rails starter has sign-in, with a seeded development account
|
|
@@ -42,7 +42,9 @@ afterwards **Unlock** it for 15 minutes when you add accounts or publish, and
|
|
|
42
42
|
address, so targets using it keep working with the new token.
|
|
43
43
|
- **Recovery kit**: **Save kit** (or **Manage**) downloads every key as one file under a second
|
|
44
44
|
passphrase; keep both off this computer. **Restore** brings them back on a
|
|
45
|
-
new computer
|
|
45
|
+
new computer and says how many came back ("Restored 1 key."). When a key is
|
|
46
|
+
newer than your last kit, the panel reads "Your recovery kit is out of date",
|
|
47
|
+
says when it was last saved, and offers **Save kit**.
|
|
46
48
|
|
|
47
49
|
### Add a target
|
|
48
50
|
|
|
@@ -4,9 +4,9 @@ In an empty project's onboarding, starters are grouped by technology. Choose
|
|
|
4
4
|
the JSKIT starter that matches the app:
|
|
5
5
|
|
|
6
6
|
- **Basic app**: responsive shell, server/client/browser tests, no database or login.
|
|
7
|
-
- **
|
|
7
|
+
- **App with no users, but a database**: the same shell plus MySQL migrations and isolated database
|
|
8
8
|
tests, without accounts.
|
|
9
|
-
- **
|
|
9
|
+
- **App with users**: sign-up, login, private pages and persisted profiles, plus
|
|
10
10
|
account-persistence and browser tests.
|
|
11
11
|
|
|
12
12
|
For another framework, each of Django, Rails, Spring Boot, Express and Next.js
|
package/docs/training-content.md
CHANGED
|
@@ -83,7 +83,7 @@ declare them.
|
|
|
83
83
|
A v3 `lesson.json` declares `schemaVersion: 3` and everything v2 has, plus
|
|
84
84
|
`stage`: `"project"` for a lesson taught in its practice project (it needs its
|
|
85
85
|
`exercise`), or `"studio"` for one taught on the screens outside any project
|
|
86
|
-
(its Lesson
|
|
86
|
+
(its Lesson sheet lies over the page while the Lesson toggle is on). Learn mode opens a lesson where its
|
|
87
87
|
stage says.
|
|
88
88
|
|
|
89
89
|
A step may check a fact: `"check": { "kind": "fact", "fact": "ai-ready" }`,
|
|
@@ -200,7 +200,7 @@ One beat per line: `<show|do|check> <target>[ <path>]: <text>`.
|
|
|
200
200
|
step's `check.rubric` from `lesson.json`, its single source.
|
|
201
201
|
- Places: `preview`, `dashboard`, `database-erd`, `database-data`, `files`,
|
|
202
202
|
`changes`, `git-log`, `session-info`, `architecture`, `learning` (the **L**
|
|
203
|
-
button), `lesson` (the
|
|
203
|
+
button), `lesson` (the **Lesson** toggle), `chat` (the coding chat), `colleague`,
|
|
204
204
|
`courses`, `lesson-bar` (the bar itself), `save` and `reload-preview`.
|
|
205
205
|
`dashboard` and `lesson-bar` can only be shown.
|
|
206
206
|
- 1–8 beats. Only `lesson`, `lesson-bar`, `courses`, `learning`,
|
|
@@ -988,86 +988,83 @@ Possible answers:
|
|
|
988
988
|
start a duplicate or replacement server. If it is unavailable, report that blocker. Describe only rendered browser evide\
|
|
989
989
|
nce.","When adopting an authenticated app, or when its login blocks Preview inspection, inspect identity support/names w\
|
|
990
990
|
ith `vibe64-helper preview status`; prefer `vibe64-helper preview browser identity <configured-name>` to requesting pass\
|
|
991
|
-
words. If unconfigured, ask which existing accounts (email/login/user ID) represent admin
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
)
|
|
998
|
-
|
|
999
|
-
enable flag and secret. Do not create users, change roles, reset passwords or weaken production auth for
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
,
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
"
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
return
|
|
1067
|
-
{},
|
|
1068
|
-
trim();if(!e||e.length>Uu)throw new TypeError("Vibe64 ephemeral context requires bounded stableContext.");return{scope:"\
|
|
1069
|
-
ephemeral",stableContext:e}}function Hu(t){if(t.scope==="session")return qu(t);if(t.scope==="ephemeral")return Bu(t);throw new TypeError(
|
|
1070
|
-
"The Vibe64 driver supports session and ephemeral scopes only.")}async function Ws(t={},{readRegistry:e=Fu,workdir:r=""}={}){let n=en(t,"Vibe64 host resolver request");if(rt(n,["data","\
|
|
991
|
+
words. If unconfigured, ask which existing accounts (email/login/user ID) represent admin, other required roles and the \
|
|
992
|
+
default; reuse prior answers and wait for their choices before configuring access. Never infer admin rights from names o\
|
|
993
|
+
r the Vibe64 viewer.","A web app with login accounts has an application-owned adapter in the Outputs `#### Preview ident\
|
|
994
|
+
ity` block (`vibe64-helper spec outputs`, `vibe64-helper spec preview-identity-command`); when it is missing, set it up \
|
|
995
|
+
from the app framework's own pattern as part of the work instead of merely offering it. Save selectors the person gives \
|
|
996
|
+
or confirms (you may propose existing app accounts) with `vibe64-helper preview identities save` (`vibe64-helper spec pr\
|
|
997
|
+
eview-identities`), then verify each with `vibe64-helper preview browser identity <name>`; a saved selector alone proves\
|
|
998
|
+
no access. Use existing sessions/permissions, reject missing/disabled accounts, and disable the adapter without Vibe64\u2019\
|
|
999
|
+
s per-run enable flag and secret. Do not create users, change roles, reset passwords or weaken production auth for impor\
|
|
1000
|
+
t. If choices are deferred/declined, say access stays unconfigured and continue independent setup work without repeated \
|
|
1001
|
+
credential requests. Public/non-web apps need no adapter.","Use `vibe64-helper preview status`, `screenshot`, `logs`, an\
|
|
1002
|
+
d `browser eval` (Playwright code on stdin) for rendered inspection.","The top Preview toolbar Stop and `vibe64-helper p\
|
|
1003
|
+
review stop` stop this session's application and managed browser, not chat or source. Status reports the saved stopped c\
|
|
1004
|
+
hoice. A status read, screenshot, browser inspection, source edit or session reopening is not permission to restart it; \
|
|
1005
|
+
use `vibe64-helper preview ensure --wait` only for a deliberate Start. Scoped browser tests restore the prior stopped ch\
|
|
1006
|
+
oice.","For interactive navigation, use the proxy URL from `vibe64-helper preview inspect-url` or status `currentPage.ur\
|
|
1007
|
+
l` / `endpoints.browser.url`. Inside browser eval, use `await page.goto(new URL('/your-path', preview.url).href)`. The d\
|
|
1008
|
+
irect application endpoint under diagnostics bypasses Preview identity and is not a browser-navigation URL.","Use the ma\
|
|
1009
|
+
naged preview browser for interactive browsing and `vibe64-helper playwright` only for an existing configured project su\
|
|
1010
|
+
ite; report a platform or project-test blocker rather than installing another browser or changing its dependencies.","Fo\
|
|
1011
|
+
r browser evidence, batch related actions and assertions, return only needed values and inspect relevant locators or reg\
|
|
1012
|
+
ions; screenshot at meaningful checkpoints or failures, not after every click. Reuse the managed browser when isolation \
|
|
1013
|
+
permits, keep required viewport, identity and security checks, and use existing automated cases for repeat verification.",
|
|
1014
|
+
"For browser tests that write or reset data, inspect `vibe64-helper preview targets --json` and the project's `genesis/s\
|
|
1015
|
+
tack.md` Outputs. Run `vibe64-helper playwright --target <declared-test-target> test <suite arguments>` (or `npm-run <sc\
|
|
1016
|
+
ript>` in place of `test`). Vibe64 starts that web target, waits for readiness, uses its declared application identity, \
|
|
1017
|
+
and restores the previous Preview when the command finishes or is cancelled; report restoration failures.","A target nam\
|
|
1018
|
+
e is not proof of test isolation. Before running a destructive suite, the application must verify the server's actual te\
|
|
1019
|
+
st database and suppress real email, invoices, payments, and other external effects. Keep managed Env unchanged. The tes\
|
|
1020
|
+
t launcher and its preview-identity command must use the same database. Follow the application's declared test resources\
|
|
1021
|
+
and never invent a database name. Never spoof safety checks by changing only the test runner's environment.","If no sui\
|
|
1022
|
+
table test target exists, add one through the project's existing Outputs contract and application-owned test scripts wit\
|
|
1023
|
+
hin authorized scope; normal Preview stays the default. Validate the exact disposable database before resetting it, prep\
|
|
1024
|
+
are fixtures before reporting readiness, and make Playwright use PLAYWRIGHT_BASE_URL (the started target's URL) without \
|
|
1025
|
+
starting another server. If test resources or external-effect controls are missing, report that blocker. `vibe64-helper \
|
|
1026
|
+
preview ensure --target <id> --wait --json` deliberately selects an interactive target until changed. If browser startup\
|
|
1027
|
+
is slow, measure migrations, fixtures and server startup before retrying or extending deadlines.","Keep test output sma\
|
|
1028
|
+
ll: run relevant files/cases, save stdout/stderr to local artifacts and keep exit status. Report counts, duration, faile\
|
|
1029
|
+
d cases, actionable errors and artifact paths, reading only needed failure excerpts. Retain startup, resource and Previe\
|
|
1030
|
+
w-restoration errors even if tests pass, and trailing wrapper diagnostics separately from JSON. Do not rerun for output \
|
|
1031
|
+
or reread unchanged logs.","Batch related browser tests in one managed suite (one Preview switch and restore). Suites an\
|
|
1032
|
+
d live Preview actions are sequential: no browser actions, ensure/restart or target changes during a suite or restoratio\
|
|
1033
|
+
n. Wait on the original execution, including background runs, through cleanup/restoration (empty polls: yield_time_ms: 3\
|
|
1034
|
+
0000 where supported; shorter only for interactive input); read-only status/logs stay available. Before live inspection,\
|
|
1035
|
+
confirm `vibe64-helper playwright status` shows no active run and `vibe64-helper preview status` is ready on the restor\
|
|
1036
|
+
ed target. To stop, run `vibe64-helper playwright cancel <run-id>`, which waits for cleanup/restoration; retry if cleanu\
|
|
1037
|
+
p needs attention. Never kill test/Preview PIDs or change locks; launcher exit alone does not prove tests stopped. Reche\
|
|
1038
|
+
ck status before reporting a busy blocker.","If a managed command reports kernel task denials or a resource incident, re\
|
|
1039
|
+
port the blocker with its diagnostic and incident ID and ask the platform operator to inspect that evidence before retry\
|
|
1040
|
+
ing; never raise test timeouts or weaken assertions to work around a process/thread limit. A generic browser timeout wit\
|
|
1041
|
+
hout resource evidence does not establish a platform cause."]),C_=Object.freeze(["Each managed shell command receives cu\
|
|
1042
|
+
rrent development Env from Vibe64, including declared resource bindings; use them in ordinary commands. Do not build env\
|
|
1043
|
+
ironment injection or copy managed credentials into source. Resource provisioning and application migrations remain sepa\
|
|
1044
|
+
rate preparation steps.","Use `vibe64-helper env status [development|production|all]` to inspect configured key names wi\
|
|
1045
|
+
thout revealing values.","Pipe an available value to `vibe64-helper env set <development|production> <KEY> [--secret]`; \
|
|
1046
|
+
never put values in arguments, logs, or repository files. Use empty stdin only when the user requested an empty value.",
|
|
1047
|
+
"When the person refers to a saved key, account or accounts hub, run `vibe64-helper env saved` (names, descriptions and \
|
|
1048
|
+
fields, never values) and link the matching field to the variable the application reads with `vibe64-helper env link <de\
|
|
1049
|
+
velopment|production> <KEY> <saved-id> <field-id>` instead of asking for the value.","Keep development and production va\
|
|
1050
|
+
lues separate. Never invent credentials, copy a value between scopes without explicit direction, or edit Vibe64 runtime/\
|
|
1051
|
+
session storage.","After an Env mutation, report only the affected scope and key names, never their values, and claim su\
|
|
1052
|
+
ccess only when the command succeeded.","Store a secret the application needs generated (such as an application key) by \
|
|
1053
|
+
generating it with the framework's own generator and piping it to `vibe64-helper env set <scope> <KEY> --secret`. Never \
|
|
1054
|
+
write it into a generated `.env` file: Vibe64 regenerates that file from Env."]);function Zr(t=""){return String(t??"").
|
|
1055
|
+
trim()}function en(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError(`${e} must be an object.`);return t}
|
|
1056
|
+
function rt(t,e,r){let n=new Set(e),o=Object.keys(t).filter(s=>!n.has(s));if(o.length>0)throw new TypeError(`${r} contai\
|
|
1057
|
+
ns unsupported fields: ${o.join(", ")}.`)}function qu(t){if(rt(t,["conversationKind","scope","session","hostGuidance"],"\
|
|
1058
|
+
Vibe64 session context"),t.hostGuidance!==void 0&&(typeof t.hostGuidance!="string"||Buffer.byteLength(t.hostGuidance,"ut\
|
|
1059
|
+
f8")>1024))throw new TypeError("Vibe64 host guidance must be bounded text supplied by the host.");if(!$u.includes(t.conversationKind))
|
|
1060
|
+
throw new TypeError("Vibe64 session context has an unknown conversationKind.");let e=en(t.session,"Vibe64 session capabi\
|
|
1061
|
+
lities");rt(e,Gs,"Vibe64 session capabilities");let r=Object.fromEntries(Gs.map(n=>{if(typeof e[n]!="boolean")throw new TypeError(
|
|
1062
|
+
`Vibe64 session capability ${n} must be boolean.`);return[n,e[n]]}));return{conversationKind:t.conversationKind,scope:"s\
|
|
1063
|
+
ession",...t.hostGuidance?{hostGuidance:t.hostGuidance}:{},session:r}}function Bu(t){rt(t,["scope","stableContext"],"Vib\
|
|
1064
|
+
e64 ephemeral context");let e=String(t.stableContext||"").trim();if(!e||e.length>Uu)throw new TypeError("Vibe64 ephemera\
|
|
1065
|
+
l context requires bounded stableContext.");return{scope:"ephemeral",stableContext:e}}function Hu(t){if(t.scope==="sessi\
|
|
1066
|
+
on")return qu(t);if(t.scope==="ephemeral")return Bu(t);throw new TypeError("The Vibe64 driver supports session and ephem\
|
|
1067
|
+
eral scopes only.")}async function Ws(t={},{readRegistry:e=Fu,workdir:r=""}={}){let n=en(t,"Vibe64 host resolver request");if(rt(n,["data","\
|
|
1071
1068
|
providerSessionId","parentSessionIds","scope"],"Vibe64 host resolver request"),!["session","turn"].includes(n.scope))throw new TypeError(
|
|
1072
1069
|
"The Vibe64 host resolver scope must be session or turn.");if(n.scope==="turn")return null;let o=en(n.data,"Vibe64 host \
|
|
1073
1070
|
resolver data");rt(o,["registryPath"],"Vibe64 host resolver data");let s=Zr(o.registryPath);if(!Qr.isAbsolute(s))throw new TypeError(
|