@contractspec/example.learning-journey-studio-onboarding 1.57.0 → 1.58.0

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 (67) hide show
  1. package/.turbo/turbo-build.log +46 -50
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +14 -0
  4. package/dist/browser/docs/index.js +35 -0
  5. package/dist/browser/docs/studio-onboarding.docblock.js +35 -0
  6. package/dist/browser/example.js +32 -0
  7. package/dist/browser/handlers/demo.handlers.js +107 -0
  8. package/dist/browser/index.js +393 -0
  9. package/dist/browser/learning-journey-studio-onboarding.feature.js +50 -0
  10. package/dist/browser/operations/index.js +201 -0
  11. package/dist/browser/presentations/index.js +250 -0
  12. package/dist/browser/tests/operations.test-spec.js +34 -0
  13. package/dist/browser/track.js +87 -0
  14. package/dist/docs/index.d.ts +2 -1
  15. package/dist/docs/index.d.ts.map +1 -0
  16. package/dist/docs/index.js +36 -1
  17. package/dist/docs/studio-onboarding.docblock.d.ts +2 -1
  18. package/dist/docs/studio-onboarding.docblock.d.ts.map +1 -0
  19. package/dist/docs/studio-onboarding.docblock.js +21 -25
  20. package/dist/example.d.ts +2 -6
  21. package/dist/example.d.ts.map +1 -1
  22. package/dist/example.js +31 -39
  23. package/dist/handlers/demo.handlers.d.ts +12 -17
  24. package/dist/handlers/demo.handlers.d.ts.map +1 -1
  25. package/dist/handlers/demo.handlers.js +105 -21
  26. package/dist/index.d.ts +8 -7
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +394 -9
  29. package/dist/learning-journey-studio-onboarding.feature.d.ts +1 -6
  30. package/dist/learning-journey-studio-onboarding.feature.d.ts.map +1 -1
  31. package/dist/learning-journey-studio-onboarding.feature.js +49 -73
  32. package/dist/node/docs/index.js +35 -0
  33. package/dist/node/docs/studio-onboarding.docblock.js +35 -0
  34. package/dist/node/example.js +32 -0
  35. package/dist/node/handlers/demo.handlers.js +107 -0
  36. package/dist/node/index.js +393 -0
  37. package/dist/node/learning-journey-studio-onboarding.feature.js +50 -0
  38. package/dist/node/operations/index.js +201 -0
  39. package/dist/node/presentations/index.js +250 -0
  40. package/dist/node/tests/operations.test-spec.js +34 -0
  41. package/dist/node/track.js +87 -0
  42. package/dist/operations/index.d.ts +229 -236
  43. package/dist/operations/index.d.ts.map +1 -1
  44. package/dist/operations/index.js +193 -167
  45. package/dist/operations/index.test.d.ts +2 -0
  46. package/dist/operations/index.test.d.ts.map +1 -0
  47. package/dist/presentations/index.d.ts +3 -8
  48. package/dist/presentations/index.d.ts.map +1 -1
  49. package/dist/presentations/index.js +248 -54
  50. package/dist/tests/operations.test-spec.d.ts +1 -6
  51. package/dist/tests/operations.test-spec.d.ts.map +1 -1
  52. package/dist/tests/operations.test-spec.js +33 -34
  53. package/dist/track.d.ts +3 -7
  54. package/dist/track.d.ts.map +1 -1
  55. package/dist/track.js +87 -90
  56. package/package.json +118 -34
  57. package/tsdown.config.js +1 -2
  58. package/.turbo/turbo-build$colon$bundle.log +0 -50
  59. package/dist/docs/studio-onboarding.docblock.js.map +0 -1
  60. package/dist/example.js.map +0 -1
  61. package/dist/handlers/demo.handlers.js.map +0 -1
  62. package/dist/learning-journey-studio-onboarding.feature.js.map +0 -1
  63. package/dist/operations/index.js.map +0 -1
  64. package/dist/presentations/index.js.map +0 -1
  65. package/dist/tests/operations.test-spec.js.map +0 -1
  66. package/dist/track.js.map +0 -1
  67. package/tsconfig.tsbuildinfo +0 -1
@@ -1,75 +1,51 @@
1
+ // @bun
2
+ // src/learning-journey-studio-onboarding.feature.ts
1
3
  import { defineFeature } from "@contractspec/lib.contracts";
2
-
3
- //#region src/learning-journey-studio-onboarding.feature.ts
4
- /**
5
- * Learning Journey Studio Onboarding Feature Module Specification
6
- *
7
- * Defines the feature module for Studio onboarding journey.
8
- */
9
- /**
10
- * Learning Journey Studio Onboarding feature module that bundles
11
- * Studio-specific onboarding track operations and presentations.
12
- */
13
- const LearningJourneyStudioOnboardingFeature = defineFeature({
14
- meta: {
15
- key: "learning-journey-studio-onboarding",
16
- title: "Learning Journey: Studio Onboarding",
17
- description: "Studio onboarding journey for getting started with ContractSpec Studio",
18
- domain: "learning-journey",
19
- owners: ["@examples.learning-journey.studio-onboarding"],
20
- tags: [
21
- "learning",
22
- "onboarding",
23
- "studio",
24
- "journey"
25
- ],
26
- stability: "experimental",
27
- version: "1.0.0"
28
- },
29
- operations: [{
30
- key: "learningJourney.studioOnboarding.recordEvent",
31
- version: "1.0.0"
32
- }, {
33
- key: "learningJourney.studioOnboarding.getTrack",
34
- version: "1.0.0"
35
- }],
36
- events: [],
37
- presentations: [{
38
- key: "learning.journey.studio.track",
39
- version: "1.0.0"
40
- }, {
41
- key: "learning.journey.studio.widget",
42
- version: "1.0.0"
43
- }],
44
- opToPresentation: [{
45
- op: {
46
- key: "learningJourney.studioOnboarding.getTrack",
47
- version: "1.0.0"
48
- },
49
- pres: {
50
- key: "learning.journey.studio.track",
51
- version: "1.0.0"
52
- }
53
- }],
54
- presentationsTargets: [{
55
- key: "learning.journey.studio.track",
56
- version: "1.0.0",
57
- targets: [
58
- "react",
59
- "markdown",
60
- "application/json"
61
- ]
62
- }, {
63
- key: "learning.journey.studio.widget",
64
- version: "1.0.0",
65
- targets: ["react"]
66
- }],
67
- capabilities: { requires: [{
68
- key: "identity",
69
- version: "1.0.0"
70
- }] }
4
+ var LearningJourneyStudioOnboardingFeature = defineFeature({
5
+ meta: {
6
+ key: "learning-journey-studio-onboarding",
7
+ title: "Learning Journey: Studio Onboarding",
8
+ description: "Studio onboarding journey for getting started with ContractSpec Studio",
9
+ domain: "learning-journey",
10
+ owners: ["@examples.learning-journey.studio-onboarding"],
11
+ tags: ["learning", "onboarding", "studio", "journey"],
12
+ stability: "experimental",
13
+ version: "1.0.0"
14
+ },
15
+ operations: [
16
+ { key: "learningJourney.studioOnboarding.recordEvent", version: "1.0.0" },
17
+ { key: "learningJourney.studioOnboarding.getTrack", version: "1.0.0" }
18
+ ],
19
+ events: [],
20
+ presentations: [
21
+ { key: "learning.journey.studio.track", version: "1.0.0" },
22
+ { key: "learning.journey.studio.widget", version: "1.0.0" }
23
+ ],
24
+ opToPresentation: [
25
+ {
26
+ op: {
27
+ key: "learningJourney.studioOnboarding.getTrack",
28
+ version: "1.0.0"
29
+ },
30
+ pres: { key: "learning.journey.studio.track", version: "1.0.0" }
31
+ }
32
+ ],
33
+ presentationsTargets: [
34
+ {
35
+ key: "learning.journey.studio.track",
36
+ version: "1.0.0",
37
+ targets: ["react", "markdown", "application/json"]
38
+ },
39
+ {
40
+ key: "learning.journey.studio.widget",
41
+ version: "1.0.0",
42
+ targets: ["react"]
43
+ }
44
+ ],
45
+ capabilities: {
46
+ requires: [{ key: "identity", version: "1.0.0" }]
47
+ }
71
48
  });
72
-
73
- //#endregion
74
- export { LearningJourneyStudioOnboardingFeature };
75
- //# sourceMappingURL=learning-journey-studio-onboarding.feature.js.map
49
+ export {
50
+ LearningJourneyStudioOnboardingFeature
51
+ };
@@ -0,0 +1,35 @@
1
+ // src/docs/studio-onboarding.docblock.ts
2
+ import { registerDocBlocks } from "@contractspec/lib.contracts";
3
+ var studioOnboardingDocBlocks = [
4
+ {
5
+ id: "docs.learning-journey.studio-onboarding",
6
+ title: "Learning Journey — Studio Getting Started",
7
+ summary: "Track that guides a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
8
+ kind: "reference",
9
+ visibility: "public",
10
+ route: "/docs/learning-journey/studio-onboarding",
11
+ tags: ["learning", "onboarding", "studio"],
12
+ body: `## Track
13
+ - **Key**: \`studio_getting_started\`
14
+ - **Persona**: new Studio developer, first 30 minutes
15
+ - **Goal**: instantiate template → edit spec → regenerate → play → run evolution
16
+
17
+ ## Steps & Events
18
+ 1) \`choose_template\` → event \`studio.template.instantiated\`
19
+ 2) \`edit_spec\` → event \`spec.changed\` (scope: sandbox)
20
+ 3) \`regenerate_app\` → event \`regeneration.completed\`
21
+ 4) \`play_in_playground\` → event \`playground.session.started\`
22
+ 5) \`try_evolution_mode\` → event \`studio.evolution.applied\`
23
+
24
+ XP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge: \`studio_first_30m\`.
25
+
26
+ ## Wiring
27
+ - Tracks export from \`@contractspec/example.learning-journey-studio-onboarding/track\`.
28
+ - Use onboarding API:
29
+ - \`learning.onboarding.listTracks\` to surface catalog
30
+ - \`learning.onboarding.getProgress\` to render progress
31
+ - \`learning.onboarding.recordEvent\` to advance from bus events
32
+ - Events should be emitted by Studio surfaces (template creation, spec save, regeneration, playground session start, evolution apply).`
33
+ }
34
+ ];
35
+ registerDocBlocks(studioOnboardingDocBlocks);
@@ -0,0 +1,35 @@
1
+ // src/docs/studio-onboarding.docblock.ts
2
+ import { registerDocBlocks } from "@contractspec/lib.contracts";
3
+ var studioOnboardingDocBlocks = [
4
+ {
5
+ id: "docs.learning-journey.studio-onboarding",
6
+ title: "Learning Journey — Studio Getting Started",
7
+ summary: "Track that guides a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
8
+ kind: "reference",
9
+ visibility: "public",
10
+ route: "/docs/learning-journey/studio-onboarding",
11
+ tags: ["learning", "onboarding", "studio"],
12
+ body: `## Track
13
+ - **Key**: \`studio_getting_started\`
14
+ - **Persona**: new Studio developer, first 30 minutes
15
+ - **Goal**: instantiate template → edit spec → regenerate → play → run evolution
16
+
17
+ ## Steps & Events
18
+ 1) \`choose_template\` → event \`studio.template.instantiated\`
19
+ 2) \`edit_spec\` → event \`spec.changed\` (scope: sandbox)
20
+ 3) \`regenerate_app\` → event \`regeneration.completed\`
21
+ 4) \`play_in_playground\` → event \`playground.session.started\`
22
+ 5) \`try_evolution_mode\` → event \`studio.evolution.applied\`
23
+
24
+ XP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge: \`studio_first_30m\`.
25
+
26
+ ## Wiring
27
+ - Tracks export from \`@contractspec/example.learning-journey-studio-onboarding/track\`.
28
+ - Use onboarding API:
29
+ - \`learning.onboarding.listTracks\` to surface catalog
30
+ - \`learning.onboarding.getProgress\` to render progress
31
+ - \`learning.onboarding.recordEvent\` to advance from bus events
32
+ - Events should be emitted by Studio surfaces (template creation, spec save, regeneration, playground session start, evolution apply).`
33
+ }
34
+ ];
35
+ registerDocBlocks(studioOnboardingDocBlocks);
@@ -0,0 +1,32 @@
1
+ // src/example.ts
2
+ import { defineExample } from "@contractspec/lib.contracts";
3
+ var example = defineExample({
4
+ meta: {
5
+ key: "learning-journey-studio-onboarding",
6
+ version: "1.0.0",
7
+ title: "Learning Journey — Studio Getting Started",
8
+ description: "Onboarding track guiding a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
9
+ kind: "template",
10
+ visibility: "public",
11
+ stability: "experimental",
12
+ owners: ["@platform.core"],
13
+ tags: ["learning", "onboarding", "studio"]
14
+ },
15
+ docs: {
16
+ rootDocId: "docs.learning-journey.studio-onboarding"
17
+ },
18
+ entrypoints: {
19
+ packageName: "@contractspec/example.learning-journey-studio-onboarding",
20
+ docs: "./docs"
21
+ },
22
+ surfaces: {
23
+ templates: true,
24
+ sandbox: { enabled: true, modes: ["playground", "markdown"] },
25
+ studio: { enabled: true, installable: true },
26
+ mcp: { enabled: true }
27
+ }
28
+ });
29
+ var example_default = example;
30
+ export {
31
+ example_default as default
32
+ };
@@ -0,0 +1,107 @@
1
+ // src/track.ts
2
+ var studioGettingStartedTrack = {
3
+ id: "studio_getting_started",
4
+ productId: "contractspec-studio",
5
+ name: "Studio Getting Started",
6
+ description: "First 30 minutes in Studio: create a project, edit the spec, deploy/regenerate, and try key modules.",
7
+ targetUserSegment: "new_studio_user",
8
+ targetRole: "developer",
9
+ totalXp: 110,
10
+ streakRule: { hoursWindow: 48, bonusXp: 25 },
11
+ completionRewards: { xpBonus: 25, badgeKey: "studio_first_30m" },
12
+ steps: [
13
+ {
14
+ id: "choose_template",
15
+ title: "Choose a template",
16
+ description: "Create your first Studio project (starter template).",
17
+ order: 1,
18
+ completion: {
19
+ eventName: "studio.template.instantiated",
20
+ sourceModule: "@contractspec/bundle.studio"
21
+ },
22
+ xpReward: 20,
23
+ metadata: { surface: "projects" }
24
+ },
25
+ {
26
+ id: "edit_spec",
27
+ title: "Edit the spec",
28
+ description: "Change the spec (not generated code) and save.",
29
+ instructions: "Open spec editor, tweak a contract or presentation, save.",
30
+ order: 2,
31
+ completion: {
32
+ eventName: "spec.changed",
33
+ sourceModule: "@contractspec/bundle.studio"
34
+ },
35
+ xpReward: 20,
36
+ metadata: { surface: "spec-editor" }
37
+ },
38
+ {
39
+ id: "regenerate_app",
40
+ title: "Regenerate the app",
41
+ description: "Regenerate artifacts from the updated spec.",
42
+ order: 3,
43
+ completion: {
44
+ eventName: "regeneration.completed",
45
+ sourceModule: "@contractspec/lib.contracts/regenerator"
46
+ },
47
+ xpReward: 20,
48
+ metadata: { surface: "regenerator" }
49
+ },
50
+ {
51
+ id: "open_canvas",
52
+ title: "Open the canvas",
53
+ description: "Visit the canvas module for your project.",
54
+ order: 4,
55
+ completion: {
56
+ eventName: "module.navigated",
57
+ sourceModule: "@contractspec/bundle.studio",
58
+ payloadFilter: { moduleId: "canvas" }
59
+ },
60
+ xpReward: 20,
61
+ metadata: { surface: "canvas" }
62
+ },
63
+ {
64
+ id: "try_evolution_mode",
65
+ title: "Try evolution mode",
66
+ description: "Request a change via Evolution, then regenerate.",
67
+ order: 5,
68
+ completion: {
69
+ eventName: "studio.evolution.applied",
70
+ sourceModule: "@contractspec/lib.evolution"
71
+ },
72
+ xpReward: 30,
73
+ metadata: { surface: "evolution" }
74
+ }
75
+ ],
76
+ metadata: {
77
+ persona: "first_run",
78
+ surfacedIn: ["studio/home", "studio/sidebar/learning"]
79
+ }
80
+ };
81
+ var studioLearningTracks = [
82
+ studioGettingStartedTrack
83
+ ];
84
+
85
+ // src/handlers/demo.handlers.ts
86
+ var studioOnboardingEvents = [
87
+ "studio.template.instantiated",
88
+ "spec.changed",
89
+ "regeneration.completed",
90
+ "playground.session.started",
91
+ "studio.evolution.applied"
92
+ ];
93
+ var emitStudioOnboardingEvent = (eventName, { learnerId, occurredAt = new Date }, record) => {
94
+ const event = {
95
+ learnerId,
96
+ name: eventName,
97
+ occurredAt,
98
+ trackId: studioGettingStartedTrack.id
99
+ };
100
+ return record ? record(event) : event;
101
+ };
102
+ var emitAllStudioOnboardingEvents = (params, record) => studioOnboardingEvents.map((name) => emitStudioOnboardingEvent(name, params, record));
103
+ export {
104
+ studioOnboardingEvents,
105
+ emitStudioOnboardingEvent,
106
+ emitAllStudioOnboardingEvents
107
+ };