@plasius/learning 0.2.15 → 0.2.16
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/README.md +14 -1
- package/dist/index.cjs +288 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +287 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ import {
|
|
|
78
78
|
STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1,
|
|
79
79
|
VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1,
|
|
80
80
|
VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1,
|
|
81
|
+
VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1,
|
|
81
82
|
assertValidMissionAuthoringBundle,
|
|
82
83
|
} from "@plasius/learning";
|
|
83
84
|
|
|
@@ -126,6 +127,9 @@ const vibeGameRemixLab = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
|
126
127
|
const vibeBugDetective = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
127
128
|
(module) => module.slug === "vibe-bug-detective",
|
|
128
129
|
);
|
|
130
|
+
const vibeIdeaStudio = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
131
|
+
(module) => module.slug === "vibe-idea-studio",
|
|
132
|
+
);
|
|
129
133
|
|
|
130
134
|
if (
|
|
131
135
|
!roadHopper ||
|
|
@@ -142,7 +146,8 @@ if (
|
|
|
142
146
|
!obstacleExplorer ||
|
|
143
147
|
!rainbowRescueRover ||
|
|
144
148
|
!vibeGameRemixLab ||
|
|
145
|
-
!vibeBugDetective
|
|
149
|
+
!vibeBugDetective ||
|
|
150
|
+
!vibeIdeaStudio
|
|
146
151
|
) {
|
|
147
152
|
throw new Error("Junior Coder module is missing");
|
|
148
153
|
}
|
|
@@ -207,6 +212,10 @@ assertValidMissionAuthoringBundle(
|
|
|
207
212
|
VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1,
|
|
208
213
|
vibeBugDetective,
|
|
209
214
|
);
|
|
215
|
+
assertValidMissionAuthoringBundle(
|
|
216
|
+
VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1,
|
|
217
|
+
vibeIdeaStudio,
|
|
218
|
+
);
|
|
210
219
|
```
|
|
211
220
|
|
|
212
221
|
## Contract rules
|
|
@@ -256,6 +265,9 @@ assertValidMissionAuthoringBundle(
|
|
|
256
265
|
- Vibe Bug Detective starts from visible failing evidence, binds one authored
|
|
257
266
|
repair to the current goal and permitted artifact, and requires learner
|
|
258
267
|
prediction, explicit accept/reject and deterministic regression reruns.
|
|
268
|
+
- Vibe Idea Studio binds supplied child-safe idea, audience and acceptance-test
|
|
269
|
+
cards to one permitted template. The learner predicts, reviews and controls
|
|
270
|
+
the exact prototype diff before deterministic tests decide completion.
|
|
259
271
|
|
|
260
272
|
See [the foundation design](docs/design/junior-coder-catalog-foundation.md),
|
|
261
273
|
[the uniform pricing design](docs/design/junior-coder-uniform-pricing.md),
|
|
@@ -269,6 +281,7 @@ See [the foundation design](docs/design/junior-coder-catalog-foundation.md),
|
|
|
269
281
|
and [TDR 0008](docs/tdrs/tdr-0008-obstacle-explorer-sensing-watchdog-and-fail-safe-authoring.md).
|
|
270
282
|
See also [TDR 0010](docs/tdrs/tdr-0010-vibe-game-remix-bounded-suggestion-authoring.md).
|
|
271
283
|
See also [TDR 0011](docs/tdrs/tdr-0011-vibe-bug-detective-evidence-led-repair.md).
|
|
284
|
+
See also [TDR 0012](docs/tdrs/tdr-0012-vibe-idea-studio-bounded-goal-prototyping.md).
|
|
272
285
|
|
|
273
286
|
## Development
|
|
274
287
|
|
package/dist/index.cjs
CHANGED
|
@@ -41,6 +41,7 @@ __export(index_exports, {
|
|
|
41
41
|
STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1: () => STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1,
|
|
42
42
|
VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1: () => VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1,
|
|
43
43
|
VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1: () => VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1,
|
|
44
|
+
VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1: () => VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1,
|
|
44
45
|
assertValidLearningPath: () => assertValidLearningPath,
|
|
45
46
|
assertValidMissionAuthoringBundle: () => assertValidMissionAuthoringBundle,
|
|
46
47
|
calculateAssessment: () => calculateAssessment,
|
|
@@ -5200,6 +5201,292 @@ var VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1 = {
|
|
|
5200
5201
|
]
|
|
5201
5202
|
}
|
|
5202
5203
|
};
|
|
5204
|
+
var VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1 = {
|
|
5205
|
+
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
5206
|
+
moduleId: "junior-coder.vibe-idea-studio",
|
|
5207
|
+
moduleVersion: "1.1.0",
|
|
5208
|
+
missionId: "vibe-idea-studio-mission-1",
|
|
5209
|
+
learner: {
|
|
5210
|
+
estimatedMinutes: 20,
|
|
5211
|
+
stages: [
|
|
5212
|
+
{
|
|
5213
|
+
kind: "learn",
|
|
5214
|
+
instruction: "Read how choosePrototype(), setStarCount() and setSuccessMessage() shape the bounded rescue-card template.",
|
|
5215
|
+
artifactIds: ["vibe-idea-studio-m1-guide"]
|
|
5216
|
+
},
|
|
5217
|
+
{
|
|
5218
|
+
kind: "predict",
|
|
5219
|
+
instruction: "Choose one idea, audience and acceptance test card, then predict what the one-line prototype change will show.",
|
|
5220
|
+
artifactIds: ["vibe-idea-studio-m1-idea-cards"]
|
|
5221
|
+
},
|
|
5222
|
+
{
|
|
5223
|
+
kind: "build",
|
|
5224
|
+
instruction: "Open the supplied template and keep every change inside its documented prototype settings artifact.",
|
|
5225
|
+
artifactIds: ["vibe-idea-studio-m1-code"]
|
|
5226
|
+
},
|
|
5227
|
+
{
|
|
5228
|
+
kind: "run",
|
|
5229
|
+
instruction: "Use the Run action button to preview the current rescue card in the private JavaScript simulator.",
|
|
5230
|
+
artifactIds: ["vibe-idea-studio-m1-code"]
|
|
5231
|
+
},
|
|
5232
|
+
{
|
|
5233
|
+
kind: "assess",
|
|
5234
|
+
instruction: "Run deterministic checks against the selected goal and acceptance test before viewing a suggestion.",
|
|
5235
|
+
artifactIds: []
|
|
5236
|
+
},
|
|
5237
|
+
{
|
|
5238
|
+
kind: "inspect",
|
|
5239
|
+
instruction: "Compare the exact one-line diff with your prediction, chosen goal and failed acceptance-test evidence.",
|
|
5240
|
+
artifactIds: ["vibe-idea-studio-m1-code"]
|
|
5241
|
+
},
|
|
5242
|
+
{
|
|
5243
|
+
kind: "fix",
|
|
5244
|
+
instruction: "Accept or reject the immutable prototype change yourself, then rerun the preview and tests.",
|
|
5245
|
+
artifactIds: ["vibe-idea-studio-m1-code"]
|
|
5246
|
+
},
|
|
5247
|
+
{
|
|
5248
|
+
kind: "explain",
|
|
5249
|
+
instruction: "Explain how the final evidence proves the prototype meets the selected idea, audience and success test.",
|
|
5250
|
+
artifactIds: []
|
|
5251
|
+
},
|
|
5252
|
+
{
|
|
5253
|
+
kind: "reward",
|
|
5254
|
+
instruction: "Collect the evidence-bound badge after the deterministic score reaches 80 and every safety check passes.",
|
|
5255
|
+
artifactIds: []
|
|
5256
|
+
}
|
|
5257
|
+
],
|
|
5258
|
+
readinessChecks: [
|
|
5259
|
+
{
|
|
5260
|
+
id: "vibe-idea-studio-m1-match-test",
|
|
5261
|
+
prompt: "Match the three-star acceptance test to the documented setting that controls star count.",
|
|
5262
|
+
scored: false
|
|
5263
|
+
}
|
|
5264
|
+
],
|
|
5265
|
+
artifacts: [
|
|
5266
|
+
{
|
|
5267
|
+
id: "vibe-idea-studio-m1-code",
|
|
5268
|
+
kind: "starter-code",
|
|
5269
|
+
audience: "learner",
|
|
5270
|
+
solutionBearing: false
|
|
5271
|
+
},
|
|
5272
|
+
{
|
|
5273
|
+
id: "vibe-idea-studio-m1-guide",
|
|
5274
|
+
kind: "starter-assets",
|
|
5275
|
+
audience: "learner",
|
|
5276
|
+
solutionBearing: false
|
|
5277
|
+
},
|
|
5278
|
+
{
|
|
5279
|
+
id: "vibe-idea-studio-m1-idea-cards",
|
|
5280
|
+
kind: "printable",
|
|
5281
|
+
audience: "learner",
|
|
5282
|
+
solutionBearing: false
|
|
5283
|
+
}
|
|
5284
|
+
],
|
|
5285
|
+
goals: [
|
|
5286
|
+
{
|
|
5287
|
+
id: "vibe-idea-studio-m1-starts",
|
|
5288
|
+
statement: "The supplied JavaScript rescue-card template remains structurally valid and starts.",
|
|
5289
|
+
visibility: "visible",
|
|
5290
|
+
criterionIds: ["vibe-idea-studio-build"],
|
|
5291
|
+
completionRequired: true,
|
|
5292
|
+
aiRequired: false
|
|
5293
|
+
},
|
|
5294
|
+
{
|
|
5295
|
+
id: "vibe-idea-studio-m1-prototype-goal",
|
|
5296
|
+
statement: "The prototype is a space rescue card for a friendly robot crew with three stars and a visible success message.",
|
|
5297
|
+
visibility: "visible",
|
|
5298
|
+
criterionIds: [
|
|
5299
|
+
"vibe-idea-studio-goal-one",
|
|
5300
|
+
"vibe-idea-studio-goal-two",
|
|
5301
|
+
"vibe-idea-studio-goal-three"
|
|
5302
|
+
],
|
|
5303
|
+
completionRequired: true,
|
|
5304
|
+
aiRequired: false
|
|
5305
|
+
},
|
|
5306
|
+
{
|
|
5307
|
+
id: "vibe-idea-studio-m1-private-boundary",
|
|
5308
|
+
statement: "The prototype stays inside the selected template, permitted artifact and private sandbox.",
|
|
5309
|
+
visibility: "visible",
|
|
5310
|
+
criterionIds: ["vibe-idea-studio-safety"],
|
|
5311
|
+
completionRequired: true,
|
|
5312
|
+
aiRequired: false
|
|
5313
|
+
}
|
|
5314
|
+
],
|
|
5315
|
+
interactions: [
|
|
5316
|
+
{
|
|
5317
|
+
id: "vibe-idea-studio-m1-idea-cards",
|
|
5318
|
+
description: "Choose one bounded idea, audience and acceptance-test card.",
|
|
5319
|
+
primaryMode: "pointer",
|
|
5320
|
+
alternativeIds: ["vibe-idea-studio-m1-keyboard-cards"]
|
|
5321
|
+
},
|
|
5322
|
+
{
|
|
5323
|
+
id: "vibe-idea-studio-m1-run-control",
|
|
5324
|
+
description: "Start the private rescue-card preview.",
|
|
5325
|
+
primaryMode: "pointer",
|
|
5326
|
+
alternativeIds: ["vibe-idea-studio-m1-keyboard-run"]
|
|
5327
|
+
},
|
|
5328
|
+
{
|
|
5329
|
+
id: "vibe-idea-studio-m1-diff-review",
|
|
5330
|
+
description: "Read the labelled removed and added star-count lines before deciding.",
|
|
5331
|
+
primaryMode: "text",
|
|
5332
|
+
alternativeIds: []
|
|
5333
|
+
},
|
|
5334
|
+
{
|
|
5335
|
+
id: "vibe-idea-studio-m1-accept-control",
|
|
5336
|
+
description: "Approve the exact immutable prototype change.",
|
|
5337
|
+
primaryMode: "pointer",
|
|
5338
|
+
alternativeIds: ["vibe-idea-studio-m1-keyboard-review"]
|
|
5339
|
+
},
|
|
5340
|
+
{
|
|
5341
|
+
id: "vibe-idea-studio-m1-reject-control",
|
|
5342
|
+
description: "Reject the suggestion and preserve the current source.",
|
|
5343
|
+
primaryMode: "pointer",
|
|
5344
|
+
alternativeIds: ["vibe-idea-studio-m1-keyboard-review"]
|
|
5345
|
+
}
|
|
5346
|
+
],
|
|
5347
|
+
accessibilityAlternatives: [
|
|
5348
|
+
{
|
|
5349
|
+
id: "vibe-idea-studio-m1-keyboard-cards",
|
|
5350
|
+
modes: ["keyboard", "text"],
|
|
5351
|
+
equivalentOutcome: true,
|
|
5352
|
+
description: "Use labelled radio-card controls with arrow keys and Space to choose the same bounded goal."
|
|
5353
|
+
},
|
|
5354
|
+
{
|
|
5355
|
+
id: "vibe-idea-studio-m1-keyboard-run",
|
|
5356
|
+
modes: ["keyboard"],
|
|
5357
|
+
equivalentOutcome: true,
|
|
5358
|
+
description: "Press Enter or Space on the play-icon Run button to start the same preview."
|
|
5359
|
+
},
|
|
5360
|
+
{
|
|
5361
|
+
id: "vibe-idea-studio-m1-keyboard-review",
|
|
5362
|
+
modes: ["keyboard", "text", "reduced-motion"],
|
|
5363
|
+
equivalentOutcome: true,
|
|
5364
|
+
description: "Read the labelled diff and acceptance evidence, then focus Accept or Reject and press Enter or Space."
|
|
5365
|
+
}
|
|
5366
|
+
],
|
|
5367
|
+
evidenceRequirements: [
|
|
5368
|
+
{
|
|
5369
|
+
id: "vibe-idea-studio-m1-assessment",
|
|
5370
|
+
goalIds: [
|
|
5371
|
+
"vibe-idea-studio-m1-starts",
|
|
5372
|
+
"vibe-idea-studio-m1-prototype-goal",
|
|
5373
|
+
"vibe-idea-studio-m1-private-boundary"
|
|
5374
|
+
],
|
|
5375
|
+
kind: "assessment-result",
|
|
5376
|
+
retention: "entitlement",
|
|
5377
|
+
containsPersonalData: false
|
|
5378
|
+
},
|
|
5379
|
+
{
|
|
5380
|
+
id: "vibe-idea-studio-m1-explanation",
|
|
5381
|
+
goalIds: ["vibe-idea-studio-m1-prototype-goal"],
|
|
5382
|
+
kind: "learner-explanation",
|
|
5383
|
+
retention: "attempt",
|
|
5384
|
+
containsPersonalData: false
|
|
5385
|
+
}
|
|
5386
|
+
],
|
|
5387
|
+
sideAdventures: [
|
|
5388
|
+
{
|
|
5389
|
+
id: "vibe-idea-studio-m1-test-inventor",
|
|
5390
|
+
prompt: "Write one new bounded audience card and one matching acceptance test without changing the template boundary.",
|
|
5391
|
+
completionRequired: false
|
|
5392
|
+
}
|
|
5393
|
+
],
|
|
5394
|
+
rewardBindings: [
|
|
5395
|
+
{
|
|
5396
|
+
id: "vibe-idea-studio-m1-badge",
|
|
5397
|
+
badgeId: "vibe-idea-studio-mission-complete",
|
|
5398
|
+
goalIds: [
|
|
5399
|
+
"vibe-idea-studio-m1-starts",
|
|
5400
|
+
"vibe-idea-studio-m1-prototype-goal",
|
|
5401
|
+
"vibe-idea-studio-m1-private-boundary"
|
|
5402
|
+
],
|
|
5403
|
+
deterministic: true,
|
|
5404
|
+
random: false,
|
|
5405
|
+
tokenConvertible: false
|
|
5406
|
+
}
|
|
5407
|
+
],
|
|
5408
|
+
functionReference: [
|
|
5409
|
+
{
|
|
5410
|
+
id: "vibe-idea-studio-function-prototype",
|
|
5411
|
+
signature: "choosePrototype(kind)",
|
|
5412
|
+
summary: "Chooses one supplied, age-appropriate interactive prototype template.",
|
|
5413
|
+
parameters: [{ name: "kind", type: "text", description: "Use rescue-card, creature-card or mission-sign." }],
|
|
5414
|
+
effect: "Changes only the labelled template in the private preview.",
|
|
5415
|
+
example: 'choosePrototype("rescue-card");'
|
|
5416
|
+
},
|
|
5417
|
+
{
|
|
5418
|
+
id: "vibe-idea-studio-function-stars",
|
|
5419
|
+
signature: "setStarCount(count)",
|
|
5420
|
+
summary: "Chooses how many decorative success stars appear on the card.",
|
|
5421
|
+
parameters: [{ name: "count", type: "whole number", description: "A bounded count from 1 to 4." }],
|
|
5422
|
+
effect: "Changes only the visible star count in the private preview.",
|
|
5423
|
+
example: "setStarCount(3);"
|
|
5424
|
+
},
|
|
5425
|
+
{
|
|
5426
|
+
id: "vibe-idea-studio-function-message",
|
|
5427
|
+
signature: "setSuccessMessage(message)",
|
|
5428
|
+
summary: "Chooses one supplied child-safe success message.",
|
|
5429
|
+
parameters: [{ name: "message", type: "text", description: "Use Mission ready!, Great teamwork! or Rescue complete!" }],
|
|
5430
|
+
effect: "Changes only the fictional card message and never sends or stores text.",
|
|
5431
|
+
example: 'setSuccessMessage("Mission ready!");'
|
|
5432
|
+
}
|
|
5433
|
+
],
|
|
5434
|
+
boundedSuggestion: {
|
|
5435
|
+
id: "vibe-idea-studio-m1-authored-star-diff",
|
|
5436
|
+
source: "authored-fallback",
|
|
5437
|
+
intent: "Meet the selected acceptance test by showing three stars.",
|
|
5438
|
+
constraints: [
|
|
5439
|
+
"Change exactly one documented star-count setting.",
|
|
5440
|
+
"Preserve the selected prototype and supplied success message.",
|
|
5441
|
+
"Do not add free-form content, network, storage, DOM, account or hardware access."
|
|
5442
|
+
],
|
|
5443
|
+
permittedArtifactId: "vibe-idea-studio-m1-code",
|
|
5444
|
+
originalSnippet: "setStarCount(2);",
|
|
5445
|
+
replacementSnippet: "setStarCount(3);",
|
|
5446
|
+
explanationPrompt: "Did the accepted change satisfy the three-star acceptance test, and which evidence proves it?",
|
|
5447
|
+
aiOptional: false,
|
|
5448
|
+
learnerApprovalRequired: true,
|
|
5449
|
+
alternatives: ["accept", "reject"]
|
|
5450
|
+
}
|
|
5451
|
+
},
|
|
5452
|
+
facilitator: {
|
|
5453
|
+
artifacts: [
|
|
5454
|
+
{
|
|
5455
|
+
id: "vibe-idea-studio-m1-answer-key",
|
|
5456
|
+
kind: "answer-key",
|
|
5457
|
+
audience: "facilitator",
|
|
5458
|
+
solutionBearing: true
|
|
5459
|
+
},
|
|
5460
|
+
{
|
|
5461
|
+
id: "vibe-idea-studio-m1-protected-tests",
|
|
5462
|
+
kind: "protected-test",
|
|
5463
|
+
audience: "facilitator",
|
|
5464
|
+
solutionBearing: true
|
|
5465
|
+
},
|
|
5466
|
+
{
|
|
5467
|
+
id: "vibe-idea-studio-m1-safety-notes",
|
|
5468
|
+
kind: "facilitator-note",
|
|
5469
|
+
audience: "facilitator",
|
|
5470
|
+
solutionBearing: true
|
|
5471
|
+
}
|
|
5472
|
+
],
|
|
5473
|
+
protectedGoals: [
|
|
5474
|
+
{
|
|
5475
|
+
id: "vibe-idea-studio-m1-protected-boundaries",
|
|
5476
|
+
statement: "The sandbox rejects free-form prompts, personal data, disallowed messages, extra statements, network access and changes outside the approved diff.",
|
|
5477
|
+
visibility: "protected",
|
|
5478
|
+
criterionIds: ["vibe-idea-studio-edge-one", "vibe-idea-studio-edge-two"],
|
|
5479
|
+
completionRequired: false,
|
|
5480
|
+
aiRequired: false
|
|
5481
|
+
}
|
|
5482
|
+
],
|
|
5483
|
+
prompts: [
|
|
5484
|
+
"Ask the learner to name the idea, audience and acceptance test before revealing the authored diff.",
|
|
5485
|
+
"Keep choices bound to supplied child-safe cards, the current rubric and permitted artifact; never invite free-form chat.",
|
|
5486
|
+
"A rejection must preserve source, and AI/provider failure must never block deterministic prototype completion."
|
|
5487
|
+
]
|
|
5488
|
+
}
|
|
5489
|
+
};
|
|
5203
5490
|
var ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1 = {
|
|
5204
5491
|
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
5205
5492
|
moduleId: "junior-coder.road-hopper-rally",
|
|
@@ -5570,6 +5857,7 @@ ${summary}`);
|
|
|
5570
5857
|
STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1,
|
|
5571
5858
|
VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1,
|
|
5572
5859
|
VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1,
|
|
5860
|
+
VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1,
|
|
5573
5861
|
assertValidLearningPath,
|
|
5574
5862
|
assertValidMissionAuthoringBundle,
|
|
5575
5863
|
calculateAssessment,
|