@contractspec/example.learning-journey-studio-onboarding 1.56.1 → 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 +47 -46
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +32 -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 +30 -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 -7
  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 -45
  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
@@ -0,0 +1,250 @@
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/operations/index.ts
86
+ import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
87
+ import { defineCommand, defineQuery } from "@contractspec/lib.contracts";
88
+ var OWNERS = ["examples.learning-journey.studio-onboarding"];
89
+ var StepModel = defineSchemaModel({
90
+ name: "StudioOnboardingStep",
91
+ description: "Step metadata for Studio onboarding journey",
92
+ fields: {
93
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
94
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
95
+ description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
96
+ completionEvent: {
97
+ type: ScalarTypeEnum.String_unsecure(),
98
+ isOptional: false
99
+ },
100
+ sourceModule: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
101
+ xpReward: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
102
+ order: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true }
103
+ }
104
+ });
105
+ var StudioOnboardingTrackModel = defineSchemaModel({
106
+ name: "StudioOnboardingTrack",
107
+ description: "Studio onboarding track definition",
108
+ fields: {
109
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
110
+ name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
111
+ description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
112
+ totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
113
+ completionXpBonus: {
114
+ type: ScalarTypeEnum.Int_unsecure(),
115
+ isOptional: true
116
+ },
117
+ completionBadgeKey: {
118
+ type: ScalarTypeEnum.String_unsecure(),
119
+ isOptional: true
120
+ },
121
+ streakHoursWindow: {
122
+ type: ScalarTypeEnum.Int_unsecure(),
123
+ isOptional: true
124
+ },
125
+ streakBonusXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
126
+ steps: { type: StepModel, isArray: true, isOptional: false }
127
+ }
128
+ });
129
+ var TrackResponseModel = defineSchemaModel({
130
+ name: "StudioOnboardingTrackResponse",
131
+ description: "Response wrapper for studio onboarding track",
132
+ fields: {
133
+ track: { type: StudioOnboardingTrackModel, isOptional: false }
134
+ }
135
+ });
136
+ var RecordDemoEventInput = defineSchemaModel({
137
+ name: "StudioOnboardingRecordEventInput",
138
+ description: "Emit a demo event to advance Studio onboarding steps",
139
+ fields: {
140
+ learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
141
+ eventName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
142
+ payload: { type: ScalarTypeEnum.JSON(), isOptional: true },
143
+ occurredAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
144
+ }
145
+ });
146
+ var SuccessModel = defineSchemaModel({
147
+ name: "StudioOnboardingSuccess",
148
+ description: "Generic success response",
149
+ fields: {
150
+ success: { type: ScalarTypeEnum.Boolean(), isOptional: false }
151
+ }
152
+ });
153
+ var GetStudioOnboardingTrack = defineQuery({
154
+ meta: {
155
+ key: "learningJourney.studioOnboarding.getTrack",
156
+ version: "1.0.0",
157
+ stability: "experimental",
158
+ owners: [...OWNERS],
159
+ tags: ["learning", "onboarding", "studio"],
160
+ description: "Fetch the Studio onboarding track definition.",
161
+ goal: "Expose track metadata to UIs and templates.",
162
+ context: "Called by Studio/Playground to render journey steps."
163
+ },
164
+ io: {
165
+ input: defineSchemaModel({
166
+ name: "StudioOnboardingTrackInput",
167
+ description: "Track input",
168
+ fields: {}
169
+ }),
170
+ output: TrackResponseModel
171
+ },
172
+ policy: { auth: "user" }
173
+ });
174
+ var RecordStudioOnboardingEvent = defineCommand({
175
+ meta: {
176
+ key: "learningJourney.studioOnboarding.recordEvent",
177
+ version: "1.0.0",
178
+ stability: "experimental",
179
+ owners: [...OWNERS],
180
+ tags: ["learning", "onboarding", "studio"],
181
+ description: "Record an event to advance Studio onboarding progress.",
182
+ goal: "Advance steps via domain events in demo/sandbox contexts.",
183
+ context: "Called by handlers or demo scripts to emit step completion events."
184
+ },
185
+ io: {
186
+ input: RecordDemoEventInput,
187
+ output: SuccessModel
188
+ },
189
+ policy: { auth: "user" }
190
+ });
191
+ var studioOnboardingContracts = {
192
+ GetStudioOnboardingTrack,
193
+ RecordStudioOnboardingEvent,
194
+ track: studioGettingStartedTrack
195
+ };
196
+
197
+ // src/presentations/index.ts
198
+ import {
199
+ definePresentation,
200
+ StabilityEnum
201
+ } from "@contractspec/lib.contracts";
202
+ var baseMeta = {
203
+ domain: "learning-journey",
204
+ title: "Studio Onboarding",
205
+ owners: ["@examples.learning-journey.studio-onboarding"],
206
+ tags: ["learning", "onboarding", "studio"],
207
+ stability: StabilityEnum.Experimental
208
+ };
209
+ var StudioOnboardingTrackPresentation = definePresentation({
210
+ meta: {
211
+ key: "learning.journey.studio.track",
212
+ version: "1.0.0",
213
+ description: "Studio onboarding track detail",
214
+ goal: "Visualize the onboarding track for the user.",
215
+ context: "Displayed in the Studio dashboard.",
216
+ ...baseMeta
217
+ },
218
+ source: {
219
+ type: "component",
220
+ framework: "react",
221
+ componentKey: "LearningTrackDetail",
222
+ props: StudioOnboardingTrackModel
223
+ },
224
+ targets: ["react", "markdown", "application/json"]
225
+ });
226
+ var StudioOnboardingWidgetPresentation = definePresentation({
227
+ meta: {
228
+ key: "learning.journey.studio.widget",
229
+ version: "1.0.0",
230
+ description: "Compact widget for Studio onboarding progress",
231
+ goal: "Show quick progress summary.",
232
+ context: "Displayed in the Studio sidebar or header.",
233
+ ...baseMeta
234
+ },
235
+ source: {
236
+ type: "component",
237
+ framework: "react",
238
+ componentKey: "LearningTrackProgressWidget"
239
+ },
240
+ targets: ["react"]
241
+ });
242
+ var studioOnboardingPresentations = [
243
+ StudioOnboardingTrackPresentation,
244
+ StudioOnboardingWidgetPresentation
245
+ ];
246
+ export {
247
+ studioOnboardingPresentations,
248
+ StudioOnboardingWidgetPresentation,
249
+ StudioOnboardingTrackPresentation
250
+ };
@@ -0,0 +1,34 @@
1
+ // src/tests/operations.test-spec.ts
2
+ import { defineTestSpec } from "@contractspec/lib.contracts";
3
+ var GetTrackTest = defineTestSpec({
4
+ meta: {
5
+ key: "learningJourney.studioOnboarding.getTrack.test",
6
+ version: "1.0.0",
7
+ stability: "experimental",
8
+ owners: ["@example.learning-journey-studio-onboarding"],
9
+ description: "Test for getting studio onboarding track",
10
+ tags: ["test"]
11
+ },
12
+ target: {
13
+ type: "operation",
14
+ operation: {
15
+ key: "learningJourney.studioOnboarding.getTrack",
16
+ version: "1.0.0"
17
+ }
18
+ },
19
+ scenarios: [
20
+ {
21
+ key: "success",
22
+ when: { operation: { key: "learningJourney.studioOnboarding.getTrack" } },
23
+ then: [{ type: "expectOutput", match: {} }]
24
+ },
25
+ {
26
+ key: "error",
27
+ when: { operation: { key: "learningJourney.studioOnboarding.getTrack" } },
28
+ then: [{ type: "expectError" }]
29
+ }
30
+ ]
31
+ });
32
+ export {
33
+ GetTrackTest
34
+ };
@@ -0,0 +1,87 @@
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
+ export {
85
+ studioLearningTracks,
86
+ studioGettingStartedTrack
87
+ };
@@ -1 +1,2 @@
1
- export { };
1
+ import './studio-onboarding.docblock';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,CAAC"}
@@ -1 +1,36 @@
1
- import "./studio-onboarding.docblock.js";
1
+ // @bun
2
+ // src/docs/studio-onboarding.docblock.ts
3
+ import { registerDocBlocks } from "@contractspec/lib.contracts";
4
+ var studioOnboardingDocBlocks = [
5
+ {
6
+ id: "docs.learning-journey.studio-onboarding",
7
+ title: "Learning Journey \u2014 Studio Getting Started",
8
+ summary: "Track that guides a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
9
+ kind: "reference",
10
+ visibility: "public",
11
+ route: "/docs/learning-journey/studio-onboarding",
12
+ tags: ["learning", "onboarding", "studio"],
13
+ body: `## Track
14
+ - **Key**: \`studio_getting_started\`
15
+ - **Persona**: new Studio developer, first 30 minutes
16
+ - **Goal**: instantiate template \u2192 edit spec \u2192 regenerate \u2192 play \u2192 run evolution
17
+
18
+ ## Steps & Events
19
+ 1) \`choose_template\` \u2192 event \`studio.template.instantiated\`
20
+ 2) \`edit_spec\` \u2192 event \`spec.changed\` (scope: sandbox)
21
+ 3) \`regenerate_app\` \u2192 event \`regeneration.completed\`
22
+ 4) \`play_in_playground\` \u2192 event \`playground.session.started\`
23
+ 5) \`try_evolution_mode\` \u2192 event \`studio.evolution.applied\`
24
+
25
+ XP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge: \`studio_first_30m\`.
26
+
27
+ ## Wiring
28
+ - Tracks export from \`@contractspec/example.learning-journey-studio-onboarding/track\`.
29
+ - Use onboarding API:
30
+ - \`learning.onboarding.listTracks\` to surface catalog
31
+ - \`learning.onboarding.getProgress\` to render progress
32
+ - \`learning.onboarding.recordEvent\` to advance from bus events
33
+ - Events should be emitted by Studio surfaces (template creation, spec save, regeneration, playground session start, evolution apply).`
34
+ }
35
+ ];
36
+ registerDocBlocks(studioOnboardingDocBlocks);
@@ -1 +1,2 @@
1
- export { };
1
+ export {};
2
+ //# sourceMappingURL=studio-onboarding.docblock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-onboarding.docblock.d.ts","sourceRoot":"","sources":["../../src/docs/studio-onboarding.docblock.ts"],"names":[],"mappings":""}
@@ -1,29 +1,26 @@
1
+ // @bun
2
+ // src/docs/studio-onboarding.docblock.ts
1
3
  import { registerDocBlocks } from "@contractspec/lib.contracts";
2
-
3
- //#region src/docs/studio-onboarding.docblock.ts
4
- registerDocBlocks([{
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: [
12
- "learning",
13
- "onboarding",
14
- "studio"
15
- ],
16
- body: `## Track
4
+ var studioOnboardingDocBlocks = [
5
+ {
6
+ id: "docs.learning-journey.studio-onboarding",
7
+ title: "Learning Journey \u2014 Studio Getting Started",
8
+ summary: "Track that guides a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
9
+ kind: "reference",
10
+ visibility: "public",
11
+ route: "/docs/learning-journey/studio-onboarding",
12
+ tags: ["learning", "onboarding", "studio"],
13
+ body: `## Track
17
14
  - **Key**: \`studio_getting_started\`
18
15
  - **Persona**: new Studio developer, first 30 minutes
19
- - **Goal**: instantiate template edit spec regenerate play run evolution
16
+ - **Goal**: instantiate template \u2192 edit spec \u2192 regenerate \u2192 play \u2192 run evolution
20
17
 
21
18
  ## Steps & Events
22
- 1) \`choose_template\` event \`studio.template.instantiated\`
23
- 2) \`edit_spec\` event \`spec.changed\` (scope: sandbox)
24
- 3) \`regenerate_app\` event \`regeneration.completed\`
25
- 4) \`play_in_playground\` event \`playground.session.started\`
26
- 5) \`try_evolution_mode\` event \`studio.evolution.applied\`
19
+ 1) \`choose_template\` \u2192 event \`studio.template.instantiated\`
20
+ 2) \`edit_spec\` \u2192 event \`spec.changed\` (scope: sandbox)
21
+ 3) \`regenerate_app\` \u2192 event \`regeneration.completed\`
22
+ 4) \`play_in_playground\` \u2192 event \`playground.session.started\`
23
+ 5) \`try_evolution_mode\` \u2192 event \`studio.evolution.applied\`
27
24
 
28
25
  XP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge: \`studio_first_30m\`.
29
26
 
@@ -34,7 +31,6 @@ XP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge
34
31
  - \`learning.onboarding.getProgress\` to render progress
35
32
  - \`learning.onboarding.recordEvent\` to advance from bus events
36
33
  - Events should be emitted by Studio surfaces (template creation, spec save, regeneration, playground session start, evolution apply).`
37
- }]);
38
-
39
- //#endregion
40
- //# sourceMappingURL=studio-onboarding.docblock.js.map
34
+ }
35
+ ];
36
+ registerDocBlocks(studioOnboardingDocBlocks);
package/dist/example.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- import * as _contractspec_lib_contracts0 from "@contractspec/lib.contracts";
2
-
3
- //#region src/example.d.ts
4
- declare const example: _contractspec_lib_contracts0.ExampleSpec;
5
- //#endregion
6
- export { example as default };
1
+ declare const example: import("@contractspec/lib.contracts").ExampleSpec;
2
+ export default example;
7
3
  //# sourceMappingURL=example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SA0BJ,4BAAA,CA1BW"}
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO,mDA0BX,CAAC;AAEH,eAAe,OAAO,CAAC"}
package/dist/example.js CHANGED
@@ -1,42 +1,33 @@
1
+ // @bun
2
+ // src/example.ts
1
3
  import { defineExample } from "@contractspec/lib.contracts";
2
-
3
- //#region src/example.ts
4
- const example = defineExample({
5
- meta: {
6
- key: "learning-journey-studio-onboarding",
7
- version: "1.0.0",
8
- title: "Learning Journey — Studio Getting Started",
9
- description: "Onboarding track guiding a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
10
- kind: "template",
11
- visibility: "public",
12
- stability: "experimental",
13
- owners: ["@platform.core"],
14
- tags: [
15
- "learning",
16
- "onboarding",
17
- "studio"
18
- ]
19
- },
20
- docs: { rootDocId: "docs.learning-journey.studio-onboarding" },
21
- entrypoints: {
22
- packageName: "@contractspec/example.learning-journey-studio-onboarding",
23
- docs: "./docs"
24
- },
25
- surfaces: {
26
- templates: true,
27
- sandbox: {
28
- enabled: true,
29
- modes: ["playground", "markdown"]
30
- },
31
- studio: {
32
- enabled: true,
33
- installable: true
34
- },
35
- mcp: { enabled: true }
36
- }
4
+ var example = defineExample({
5
+ meta: {
6
+ key: "learning-journey-studio-onboarding",
7
+ version: "1.0.0",
8
+ title: "Learning Journey \u2014 Studio Getting Started",
9
+ description: "Onboarding track guiding a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.",
10
+ kind: "template",
11
+ visibility: "public",
12
+ stability: "experimental",
13
+ owners: ["@platform.core"],
14
+ tags: ["learning", "onboarding", "studio"]
15
+ },
16
+ docs: {
17
+ rootDocId: "docs.learning-journey.studio-onboarding"
18
+ },
19
+ entrypoints: {
20
+ packageName: "@contractspec/example.learning-journey-studio-onboarding",
21
+ docs: "./docs"
22
+ },
23
+ surfaces: {
24
+ templates: true,
25
+ sandbox: { enabled: true, modes: ["playground", "markdown"] },
26
+ studio: { enabled: true, installable: true },
27
+ mcp: { enabled: true }
28
+ }
37
29
  });
38
30
  var example_default = example;
39
-
40
- //#endregion
41
- export { example_default as default };
42
- //# sourceMappingURL=example.js.map
31
+ export {
32
+ example_default as default
33
+ };
@@ -1,23 +1,18 @@
1
- //#region src/handlers/demo.handlers.d.ts
2
1
  interface EmitParams {
3
- learnerId: string;
4
- occurredAt?: Date;
2
+ learnerId: string;
3
+ occurredAt?: Date;
5
4
  }
6
5
  interface LearningJourneyEvent {
7
- learnerId: string;
8
- name: string;
9
- occurredAt: Date;
10
- trackId: string;
11
- payload?: Record<string, unknown>;
6
+ learnerId: string;
7
+ name: string;
8
+ occurredAt: Date;
9
+ trackId: string;
10
+ payload?: Record<string, unknown>;
12
11
  }
13
12
  type RecordEvent = (event: LearningJourneyEvent) => unknown;
14
- declare const studioOnboardingEvents: readonly ["studio.template.instantiated", "spec.changed", "regeneration.completed", "playground.session.started", "studio.evolution.applied"];
15
- type StudioEvent = (typeof studioOnboardingEvents)[number];
16
- declare const emitStudioOnboardingEvent: (eventName: StudioEvent, {
17
- learnerId,
18
- occurredAt
19
- }: EmitParams, record?: RecordEvent) => unknown;
20
- declare const emitAllStudioOnboardingEvents: (params: EmitParams, record?: RecordEvent) => unknown[];
21
- //#endregion
22
- export { StudioEvent, emitAllStudioOnboardingEvents, emitStudioOnboardingEvent, studioOnboardingEvents };
13
+ export declare const studioOnboardingEvents: readonly ["studio.template.instantiated", "spec.changed", "regeneration.completed", "playground.session.started", "studio.evolution.applied"];
14
+ export type StudioEvent = (typeof studioOnboardingEvents)[number];
15
+ export declare const emitStudioOnboardingEvent: (eventName: StudioEvent, { learnerId, occurredAt }: EmitParams, record?: RecordEvent) => unknown;
16
+ export declare const emitAllStudioOnboardingEvents: (params: EmitParams, record?: RecordEvent) => unknown[];
17
+ export {};
23
18
  //# sourceMappingURL=demo.handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"demo.handlers.d.ts","names":[],"sources":["../../src/handlers/demo.handlers.ts"],"sourcesContent":[],"mappings":";UAEU,UAAA;EAAA,SAAA,EAAA,MAAU;EAKV,UAAA,CAAA,EAHK,IAGL;AAKQ;AAKlB,UAVU,oBAAA,CAgBA;EAEE,SAAA,EAAA,MAAW;EAEV,IAAA,EAAA,MAAA;EACA,UAAA,EAlBC,IAkBD;EACX,OAAA,EAAA,MAAA;EAAA,OAAA,CAAA,EAjBU,MAiBV,CAAA,MAAA,EAAA,OAAA,CAAA;;KAdG,WAAA,GAeM,CAAA,KAAA,EAfgB,oBAehB,EAAA,GAAA,OAAA;AAAW,cAbT,sBAaS,EAAA,SAAA,CAAA,8BAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,0BAAA,CAAA;AAWT,KAhBD,WAAA,GAgBC,CAAA,OAhBqB,sBAiBxB,CAAA,CAAA,MACC,CAAA;cAhBE,uCACA;;;GAC6B,qBAC/B;cAWE,wCACH,qBACC"}
1
+ {"version":3,"file":"demo.handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/demo.handlers.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAE5D,eAAO,MAAM,sBAAsB,+IAMzB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,GACpC,WAAW,WAAW,EACtB,2BAAwC,UAAU,EAClD,SAAS,WAAW,YASrB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,UAAU,EAClB,SAAS,WAAW,cAInB,CAAC"}