@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
package/package.json CHANGED
@@ -1,57 +1,141 @@
1
1
  {
2
2
  "name": "@contractspec/example.learning-journey-studio-onboarding",
3
- "version": "1.57.0",
3
+ "version": "1.58.0",
4
4
  "description": "Learning journey track for first 30 minutes in ContractSpec Studio.",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
- ".": "./dist/index.js",
9
- "./docs": "./dist/docs/index.js",
10
- "./docs/studio-onboarding.docblock": "./dist/docs/studio-onboarding.docblock.js",
11
- "./example": "./dist/example.js",
12
- "./handlers/demo.handlers": "./dist/handlers/demo.handlers.js",
13
- "./learning-journey-studio-onboarding.feature": "./dist/learning-journey-studio-onboarding.feature.js",
14
- "./operations": "./dist/operations/index.js",
15
- "./presentations": "./dist/presentations/index.js",
16
- "./tests/operations.test-spec": "./dist/tests/operations.test-spec.js",
17
- "./track": "./dist/track.js",
18
- "./*": "./*"
8
+ ".": "./src/index.ts",
9
+ "./docs": "./src/docs/index.ts",
10
+ "./docs/index": "./src/docs/index.ts",
11
+ "./docs/studio-onboarding.docblock": "./src/docs/studio-onboarding.docblock.ts",
12
+ "./example": "./src/example.ts",
13
+ "./handlers/demo.handlers": "./src/handlers/demo.handlers.ts",
14
+ "./learning-journey-studio-onboarding.feature": "./src/learning-journey-studio-onboarding.feature.ts",
15
+ "./operations": "./src/operations/index.ts",
16
+ "./operations/index": "./src/operations/index.ts",
17
+ "./presentations": "./src/presentations/index.ts",
18
+ "./presentations/index": "./src/presentations/index.ts",
19
+ "./tests/operations.test-spec": "./src/tests/operations.test-spec.ts",
20
+ "./track": "./src/track.ts"
19
21
  },
20
22
  "scripts": {
21
23
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
22
24
  "publish:pkg:canary": "bun publish:pkg --tag canary",
23
- "build": "bun build:types && bun build:bundle",
24
- "build:bundle": "tsdown",
25
- "build:types": "tsc --noEmit",
26
- "dev": "bun build:bundle --watch",
25
+ "build": "bun run prebuild && bun run build:bundle && bun run build:types",
26
+ "build:bundle": "contractspec-bun-build transpile",
27
+ "build:types": "contractspec-bun-build types",
28
+ "dev": "contractspec-bun-build dev",
27
29
  "clean": "rimraf dist .turbo",
28
30
  "lint": "bun lint:fix",
29
31
  "lint:fix": "eslint src --fix",
30
- "lint:check": "eslint src"
32
+ "lint:check": "eslint src",
33
+ "prebuild": "contractspec-bun-build prebuild",
34
+ "typecheck": "tsc --noEmit"
31
35
  },
32
36
  "dependencies": {
33
- "@contractspec/lib.contracts": "1.57.0",
34
- "@contractspec/lib.schema": "1.57.0",
35
- "@contractspec/module.learning-journey": "1.57.0"
37
+ "@contractspec/lib.contracts": "1.58.0",
38
+ "@contractspec/lib.schema": "1.58.0",
39
+ "@contractspec/module.learning-journey": "1.58.0"
36
40
  },
37
41
  "devDependencies": {
38
- "@contractspec/tool.tsdown": "1.57.0",
39
- "@contractspec/tool.typescript": "1.57.0",
40
- "tsdown": "^0.20.3",
41
- "typescript": "^5.9.3"
42
+ "@contractspec/tool.typescript": "1.58.0",
43
+ "typescript": "^5.9.3",
44
+ "@contractspec/tool.bun": "1.57.0"
42
45
  },
43
46
  "publishConfig": {
44
47
  "exports": {
45
- ".": "./dist/index.js",
46
- "./contracts": "./dist/contracts/index.js",
47
- "./docs": "./dist/docs/index.js",
48
- "./docs/studio-onboarding.docblock": "./dist/docs/studio-onboarding.docblock.js",
49
- "./example": "./dist/example.js",
50
- "./handlers/demo.handlers": "./dist/handlers/demo.handlers.js",
51
- "./learning-journey-studio-onboarding.feature": "./dist/learning-journey-studio-onboarding.feature.js",
52
- "./presentations": "./dist/presentations/index.js",
53
- "./track": "./dist/track.js",
54
- "./*": "./*"
48
+ ".": {
49
+ "types": "./dist/index.d.ts",
50
+ "bun": "./dist/index.js",
51
+ "node": "./dist/node/index.mjs",
52
+ "browser": "./dist/browser/index.js",
53
+ "default": "./dist/index.js"
54
+ },
55
+ "./docs": {
56
+ "types": "./dist/docs/index.d.ts",
57
+ "bun": "./dist/docs/index.js",
58
+ "node": "./dist/node/docs/index.mjs",
59
+ "browser": "./dist/browser/docs/index.js",
60
+ "default": "./dist/docs/index.js"
61
+ },
62
+ "./docs/index": {
63
+ "types": "./dist/docs/index.d.ts",
64
+ "bun": "./dist/docs/index.js",
65
+ "node": "./dist/node/docs/index.mjs",
66
+ "browser": "./dist/browser/docs/index.js",
67
+ "default": "./dist/docs/index.js"
68
+ },
69
+ "./docs/studio-onboarding.docblock": {
70
+ "types": "./dist/docs/studio-onboarding.docblock.d.ts",
71
+ "bun": "./dist/docs/studio-onboarding.docblock.js",
72
+ "node": "./dist/node/docs/studio-onboarding.docblock.mjs",
73
+ "browser": "./dist/browser/docs/studio-onboarding.docblock.js",
74
+ "default": "./dist/docs/studio-onboarding.docblock.js"
75
+ },
76
+ "./example": {
77
+ "types": "./dist/example.d.ts",
78
+ "bun": "./dist/example.js",
79
+ "node": "./dist/node/example.mjs",
80
+ "browser": "./dist/browser/example.js",
81
+ "default": "./dist/example.js"
82
+ },
83
+ "./handlers/demo.handlers": {
84
+ "types": "./dist/handlers/demo.handlers.d.ts",
85
+ "bun": "./dist/handlers/demo.handlers.js",
86
+ "node": "./dist/node/handlers/demo.handlers.mjs",
87
+ "browser": "./dist/browser/handlers/demo.handlers.js",
88
+ "default": "./dist/handlers/demo.handlers.js"
89
+ },
90
+ "./learning-journey-studio-onboarding.feature": {
91
+ "types": "./dist/learning-journey-studio-onboarding.feature.d.ts",
92
+ "bun": "./dist/learning-journey-studio-onboarding.feature.js",
93
+ "node": "./dist/node/learning-journey-studio-onboarding.feature.mjs",
94
+ "browser": "./dist/browser/learning-journey-studio-onboarding.feature.js",
95
+ "default": "./dist/learning-journey-studio-onboarding.feature.js"
96
+ },
97
+ "./operations": {
98
+ "types": "./dist/operations/index.d.ts",
99
+ "bun": "./dist/operations/index.js",
100
+ "node": "./dist/node/operations/index.mjs",
101
+ "browser": "./dist/browser/operations/index.js",
102
+ "default": "./dist/operations/index.js"
103
+ },
104
+ "./operations/index": {
105
+ "types": "./dist/operations/index.d.ts",
106
+ "bun": "./dist/operations/index.js",
107
+ "node": "./dist/node/operations/index.mjs",
108
+ "browser": "./dist/browser/operations/index.js",
109
+ "default": "./dist/operations/index.js"
110
+ },
111
+ "./presentations": {
112
+ "types": "./dist/presentations/index.d.ts",
113
+ "bun": "./dist/presentations/index.js",
114
+ "node": "./dist/node/presentations/index.mjs",
115
+ "browser": "./dist/browser/presentations/index.js",
116
+ "default": "./dist/presentations/index.js"
117
+ },
118
+ "./presentations/index": {
119
+ "types": "./dist/presentations/index.d.ts",
120
+ "bun": "./dist/presentations/index.js",
121
+ "node": "./dist/node/presentations/index.mjs",
122
+ "browser": "./dist/browser/presentations/index.js",
123
+ "default": "./dist/presentations/index.js"
124
+ },
125
+ "./tests/operations.test-spec": {
126
+ "types": "./dist/tests/operations.test-spec.d.ts",
127
+ "bun": "./dist/tests/operations.test-spec.js",
128
+ "node": "./dist/node/tests/operations.test-spec.mjs",
129
+ "browser": "./dist/browser/tests/operations.test-spec.js",
130
+ "default": "./dist/tests/operations.test-spec.js"
131
+ },
132
+ "./track": {
133
+ "types": "./dist/track.d.ts",
134
+ "bun": "./dist/track.js",
135
+ "node": "./dist/node/track.mjs",
136
+ "browser": "./dist/browser/track.js",
137
+ "default": "./dist/track.js"
138
+ }
55
139
  },
56
140
  "registry": "https://registry.npmjs.org/",
57
141
  "access": "public"
package/tsdown.config.js CHANGED
@@ -1,5 +1,4 @@
1
- import { defineConfig } from 'tsdown';
2
- import { moduleLibrary, withDevExports } from '@contractspec/tool.tsdown';
1
+ import { defineConfig, moduleLibrary, withDevExports } from '@contractspec/tool.bun';
3
2
 
4
3
  export default defineConfig(() => ({
5
4
  ...moduleLibrary,
@@ -1,50 +0,0 @@
1
- $ tsdown
2
- ℹ tsdown v0.20.3 powered by rolldown v1.0.0-rc.3
3
- ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/learning-journey-studio-onboarding/tsdown.config.js
4
- ℹ entry: src/example.ts, src/index.ts, src/learning-journey-studio-onboarding.feature.ts, src/track.ts, src/docs/index.ts, src/docs/studio-onboarding.docblock.ts, src/handlers/demo.handlers.ts, src/operations/index.ts, src/presentations/index.ts, src/tests/operations.test-spec.ts
5
- ℹ target: esnext
6
- ℹ tsconfig: tsconfig.json
7
- ℹ Build start
8
- ℹ Cleaning 40 files
9
- ℹ dist/operations/index.js 4.34 kB │ gzip: 1.08 kB
10
- ℹ dist/track.js 2.43 kB │ gzip: 0.91 kB
11
- ℹ dist/learning-journey-studio-onboarding.feature.js 1.84 kB │ gzip: 0.62 kB
12
- ℹ dist/docs/studio-onboarding.docblock.js 1.67 kB │ gzip: 0.83 kB
13
- ℹ dist/presentations/index.js 1.63 kB │ gzip: 0.61 kB
14
- ℹ dist/index.js 1.07 kB │ gzip: 0.30 kB
15
- ℹ dist/example.js 1.00 kB │ gzip: 0.54 kB
16
- ℹ dist/tests/operations.test-spec.js 0.92 kB │ gzip: 0.42 kB
17
- ℹ dist/handlers/demo.handlers.js 0.83 kB │ gzip: 0.41 kB
18
- ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
19
- ℹ dist/operations/index.js.map 6.42 kB │ gzip: 1.59 kB
20
- ℹ dist/track.js.map 3.79 kB │ gzip: 1.24 kB
21
- ℹ dist/learning-journey-studio-onboarding.feature.js.map 2.92 kB │ gzip: 1.04 kB
22
- ℹ dist/presentations/index.js.map 2.35 kB │ gzip: 0.90 kB
23
- ℹ dist/docs/studio-onboarding.docblock.js.map 2.10 kB │ gzip: 1.00 kB
24
- ℹ dist/handlers/demo.handlers.js.map 1.58 kB │ gzip: 0.71 kB
25
- ℹ dist/tests/operations.test-spec.js.map 1.46 kB │ gzip: 0.62 kB
26
- ℹ dist/example.js.map 1.46 kB │ gzip: 0.74 kB
27
- ℹ dist/operations/index.d.ts.map 0.52 kB │ gzip: 0.24 kB
28
- ℹ dist/handlers/demo.handlers.d.ts.map 0.48 kB │ gzip: 0.26 kB
29
- ℹ dist/presentations/index.d.ts.map 0.23 kB │ gzip: 0.17 kB
30
- ℹ dist/learning-journey-studio-onboarding.feature.d.ts.map 0.21 kB │ gzip: 0.16 kB
31
- ℹ dist/tests/operations.test-spec.d.ts.map 0.16 kB │ gzip: 0.14 kB
32
- ℹ dist/track.d.ts.map 0.14 kB │ gzip: 0.13 kB
33
- ℹ dist/example.d.ts.map 0.13 kB │ gzip: 0.13 kB
34
- ℹ dist/operations/index.d.ts 8.83 kB │ gzip: 0.93 kB
35
- ℹ dist/index.d.ts 1.07 kB │ gzip: 0.29 kB
36
- ℹ dist/handlers/demo.handlers.d.ts 0.97 kB │ gzip: 0.42 kB
37
- ℹ dist/presentations/index.d.ts 0.56 kB │ gzip: 0.22 kB
38
- ℹ dist/learning-journey-studio-onboarding.feature.d.ts 0.52 kB │ gzip: 0.27 kB
39
- ℹ dist/track.d.ts 0.36 kB │ gzip: 0.20 kB
40
- ℹ dist/tests/operations.test-spec.d.ts 0.28 kB │ gzip: 0.18 kB
41
- ℹ dist/example.d.ts 0.25 kB │ gzip: 0.17 kB
42
- ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
43
- ℹ dist/docs/studio-onboarding.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
44
- ℹ 35 files, total: 52.58 kB
45
- ✔ Build complete in 22391ms
46
- [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
47
- - tsdown:external (57%)
48
- - rolldown-plugin-dts:generate (35%)
49
- See https://rolldown.rs/options/checks#plugintimings for more details.
50
-
@@ -1 +0,0 @@
1
- {"version":3,"file":"studio-onboarding.docblock.js","names":[],"sources":["../../src/docs/studio-onboarding.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts';\nimport { registerDocBlocks } from '@contractspec/lib.contracts';\n\nconst studioOnboardingDocBlocks: DocBlock[] = [\n {\n id: 'docs.learning-journey.studio-onboarding',\n title: 'Learning Journey — Studio Getting Started',\n summary:\n 'Track that guides a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/learning-journey/studio-onboarding',\n tags: ['learning', 'onboarding', 'studio'],\n body: `## Track\n- **Key**: \\`studio_getting_started\\`\n- **Persona**: new Studio developer, first 30 minutes\n- **Goal**: instantiate template → edit spec → regenerate → play → run evolution\n\n## Steps & Events\n1) \\`choose_template\\` → event \\`studio.template.instantiated\\`\n2) \\`edit_spec\\` → event \\`spec.changed\\` (scope: sandbox)\n3) \\`regenerate_app\\` → event \\`regeneration.completed\\`\n4) \\`play_in_playground\\` → event \\`playground.session.started\\`\n5) \\`try_evolution_mode\\` → event \\`studio.evolution.applied\\`\n\nXP: 20/20/20/20/30 with bonus 25 XP if completed within 48h (streak rule). Badge: \\`studio_first_30m\\`.\n\n## Wiring\n- Tracks export from \\`@contractspec/example.learning-journey-studio-onboarding/track\\`.\n- Use onboarding API:\n - \\`learning.onboarding.listTracks\\` to surface catalog\n - \\`learning.onboarding.getProgress\\` to render progress\n - \\`learning.onboarding.recordEvent\\` to advance from bus events\n- Events should be emitted by Studio surfaces (template creation, spec save, regeneration, playground session start, evolution apply).`,\n },\n];\n\nregisterDocBlocks(studioOnboardingDocBlocks);\n"],"mappings":";;;AAqCA,kBAlC8C,CAC5C;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAY;EAAc;EAAS;CAC1C,MAAM;;;;;;;;;;;;;;;;;;;;;CAqBP,CACF,CAE2C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["import { defineExample } from '@contractspec/lib.contracts';\n\nconst example = defineExample({\n meta: {\n key: 'learning-journey-studio-onboarding',\n version: '1.0.0',\n title: 'Learning Journey — Studio Getting Started',\n description:\n 'Onboarding track guiding a new Studio user through template spawn, spec edit, regeneration, playground, and evolution.',\n kind: 'template',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['learning', 'onboarding', 'studio'],\n },\n docs: {\n rootDocId: 'docs.learning-journey.studio-onboarding',\n },\n entrypoints: {\n packageName: '@contractspec/example.learning-journey-studio-onboarding',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['playground', 'markdown'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n});\n\nexport default example;\n"],"mappings":";;;AAEA,MAAM,UAAU,cAAc;CAC5B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAc;GAAS;EAC3C;CACD,MAAM,EACJ,WAAW,2CACZ;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,cAAc,WAAW;GAAE;EAC7D,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.handlers.js","names":[],"sources":["../../src/handlers/demo.handlers.ts"],"sourcesContent":["import { studioGettingStartedTrack } from '../track';\n\ninterface EmitParams {\n learnerId: string;\n occurredAt?: Date;\n}\n\ninterface LearningJourneyEvent {\n learnerId: string;\n name: string;\n occurredAt: Date;\n trackId: string;\n payload?: Record<string, unknown>;\n}\n\ntype RecordEvent = (event: LearningJourneyEvent) => unknown;\n\nexport const studioOnboardingEvents = [\n 'studio.template.instantiated',\n 'spec.changed',\n 'regeneration.completed',\n 'playground.session.started',\n 'studio.evolution.applied',\n] as const;\n\nexport type StudioEvent = (typeof studioOnboardingEvents)[number];\n\nexport const emitStudioOnboardingEvent = (\n eventName: StudioEvent,\n { learnerId, occurredAt = new Date() }: EmitParams,\n record?: RecordEvent\n) => {\n const event: LearningJourneyEvent = {\n learnerId,\n name: eventName,\n occurredAt,\n trackId: studioGettingStartedTrack.id,\n };\n return record ? record(event) : event;\n};\n\nexport const emitAllStudioOnboardingEvents = (\n params: EmitParams,\n record?: RecordEvent\n) =>\n studioOnboardingEvents.map((name) =>\n emitStudioOnboardingEvent(name, params, record)\n );\n"],"mappings":";;;AAiBA,MAAa,yBAAyB;CACpC;CACA;CACA;CACA;CACA;CACD;AAID,MAAa,6BACX,WACA,EAAE,WAAW,6BAAa,IAAI,MAAM,IACpC,WACG;CACH,MAAM,QAA8B;EAClC;EACA,MAAM;EACN;EACA,SAAS,0BAA0B;EACpC;AACD,QAAO,SAAS,OAAO,MAAM,GAAG;;AAGlC,MAAa,iCACX,QACA,WAEA,uBAAuB,KAAK,SAC1B,0BAA0B,MAAM,QAAQ,OAAO,CAChD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"learning-journey-studio-onboarding.feature.js","names":[],"sources":["../src/learning-journey-studio-onboarding.feature.ts"],"sourcesContent":["/**\n * Learning Journey Studio Onboarding Feature Module Specification\n *\n * Defines the feature module for Studio onboarding journey.\n */\nimport { defineFeature } from '@contractspec/lib.contracts';\n\n/**\n * Learning Journey Studio Onboarding feature module that bundles\n * Studio-specific onboarding track operations and presentations.\n */\nexport const LearningJourneyStudioOnboardingFeature = defineFeature({\n meta: {\n key: 'learning-journey-studio-onboarding',\n title: 'Learning Journey: Studio Onboarding',\n description:\n 'Studio onboarding journey for getting started with ContractSpec Studio',\n domain: 'learning-journey',\n owners: ['@examples.learning-journey.studio-onboarding'],\n tags: ['learning', 'onboarding', 'studio', 'journey'],\n stability: 'experimental',\n version: '1.0.0',\n },\n\n // All contract operations included in this feature\n operations: [\n { key: 'learningJourney.studioOnboarding.recordEvent', version: '1.0.0' },\n { key: 'learningJourney.studioOnboarding.getTrack', version: '1.0.0' },\n ],\n\n // Events emitted by this feature\n events: [],\n\n // Presentations associated with this feature\n presentations: [\n { key: 'learning.journey.studio.track', version: '1.0.0' },\n { key: 'learning.journey.studio.widget', version: '1.0.0' },\n ],\n\n // Link operations to their primary presentations\n opToPresentation: [\n {\n op: {\n key: 'learningJourney.studioOnboarding.getTrack',\n version: '1.0.0',\n },\n pres: { key: 'learning.journey.studio.track', version: '1.0.0' },\n },\n ],\n\n // Target requirements for multi-surface rendering\n presentationsTargets: [\n {\n key: 'learning.journey.studio.track',\n version: '1.0.0',\n targets: ['react', 'markdown', 'application/json'],\n },\n {\n key: 'learning.journey.studio.widget',\n version: '1.0.0',\n targets: ['react'],\n },\n ],\n\n // Capability requirements\n capabilities: {\n requires: [{ key: 'identity', version: '1.0.0' }],\n },\n});\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,yCAAyC,cAAc;CAClE,MAAM;EACJ,KAAK;EACL,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,+CAA+C;EACxD,MAAM;GAAC;GAAY;GAAc;GAAU;GAAU;EACrD,WAAW;EACX,SAAS;EACV;CAGD,YAAY,CACV;EAAE,KAAK;EAAgD,SAAS;EAAS,EACzE;EAAE,KAAK;EAA6C,SAAS;EAAS,CACvE;CAGD,QAAQ,EAAE;CAGV,eAAe,CACb;EAAE,KAAK;EAAiC,SAAS;EAAS,EAC1D;EAAE,KAAK;EAAkC,SAAS;EAAS,CAC5D;CAGD,kBAAkB,CAChB;EACE,IAAI;GACF,KAAK;GACL,SAAS;GACV;EACD,MAAM;GAAE,KAAK;GAAiC,SAAS;GAAS;EACjE,CACF;CAGD,sBAAsB,CACpB;EACE,KAAK;EACL,SAAS;EACT,SAAS;GAAC;GAAS;GAAY;GAAmB;EACnD,EACD;EACE,KAAK;EACL,SAAS;EACT,SAAS,CAAC,QAAQ;EACnB,CACF;CAGD,cAAc,EACZ,UAAU,CAAC;EAAE,KAAK;EAAY,SAAS;EAAS,CAAC,EAClD;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/operations/index.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineCommand, defineQuery } from '@contractspec/lib.contracts';\n\nimport { studioGettingStartedTrack } from '../track';\n\nconst OWNERS = ['examples.learning-journey.studio-onboarding'] as const;\n\nconst StepModel = defineSchemaModel({\n name: 'StudioOnboardingStep',\n description: 'Step metadata for Studio onboarding journey',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n completionEvent: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n sourceModule: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n xpReward: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n order: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nexport const StudioOnboardingTrackModel = defineSchemaModel({\n name: 'StudioOnboardingTrack',\n description: 'Studio onboarding track definition',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n completionXpBonus: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n completionBadgeKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n streakHoursWindow: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n streakBonusXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n steps: { type: StepModel, isArray: true, isOptional: false },\n },\n});\n\nconst TrackResponseModel = defineSchemaModel({\n name: 'StudioOnboardingTrackResponse',\n description: 'Response wrapper for studio onboarding track',\n fields: {\n track: { type: StudioOnboardingTrackModel, isOptional: false },\n },\n});\n\nconst RecordDemoEventInput = defineSchemaModel({\n name: 'StudioOnboardingRecordEventInput',\n description: 'Emit a demo event to advance Studio onboarding steps',\n fields: {\n learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n eventName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n payload: { type: ScalarTypeEnum.JSON(), isOptional: true },\n occurredAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst SuccessModel = defineSchemaModel({\n name: 'StudioOnboardingSuccess',\n description: 'Generic success response',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const GetStudioOnboardingTrack = defineQuery({\n meta: {\n key: 'learningJourney.studioOnboarding.getTrack',\n version: '1.0.0',\n stability: 'experimental',\n owners: [...OWNERS],\n tags: ['learning', 'onboarding', 'studio'],\n description: 'Fetch the Studio onboarding track definition.',\n goal: 'Expose track metadata to UIs and templates.',\n context: 'Called by Studio/Playground to render journey steps.',\n },\n io: {\n input: defineSchemaModel({\n name: 'StudioOnboardingTrackInput',\n description: 'Track input',\n fields: {},\n }),\n output: TrackResponseModel,\n },\n policy: { auth: 'user' },\n});\n\nexport const RecordStudioOnboardingEvent = defineCommand({\n meta: {\n key: 'learningJourney.studioOnboarding.recordEvent',\n version: '1.0.0',\n stability: 'experimental',\n owners: [...OWNERS],\n tags: ['learning', 'onboarding', 'studio'],\n description: 'Record an event to advance Studio onboarding progress.',\n goal: 'Advance steps via domain events in demo/sandbox contexts.',\n context:\n 'Called by handlers or demo scripts to emit step completion events.',\n },\n io: {\n input: RecordDemoEventInput,\n output: SuccessModel,\n },\n policy: { auth: 'user' },\n});\n\nexport const studioOnboardingContracts = {\n GetStudioOnboardingTrack,\n RecordStudioOnboardingEvent,\n track: studioGettingStartedTrack,\n};\n"],"mappings":";;;;;AAKA,MAAM,SAAS,CAAC,8CAA8C;AAE9D,MAAM,YAAY,kBAAkB;CAClC,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACpE,aAAa;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACzE,iBAAiB;GACf,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,UAAU;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EACnE,OAAO;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EACjE;CACF,CAAC;AAEF,MAAa,6BAA6B,kBAAkB;CAC1D,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,aAAa;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACzE,SAAS;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EAClE,mBAAmB;GACjB,MAAM,eAAe,cAAc;GACnC,YAAY;GACb;EACD,oBAAoB;GAClB,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,mBAAmB;GACjB,MAAM,eAAe,cAAc;GACnC,YAAY;GACb;EACD,eAAe;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EACxE,OAAO;GAAE,MAAM;GAAW,SAAS;GAAM,YAAY;GAAO;EAC7D;CACF,CAAC;AAEF,MAAM,qBAAqB,kBAAkB;CAC3C,MAAM;CACN,aAAa;CACb,QAAQ,EACN,OAAO;EAAE,MAAM;EAA4B,YAAY;EAAO,EAC/D;CACF,CAAC;AAEF,MAAM,uBAAuB,kBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,SAAS;GAAE,MAAM,eAAe,MAAM;GAAE,YAAY;GAAM;EAC1D,YAAY;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAM;EAClE;CACF,CAAC;AAEF,MAAM,eAAe,kBAAkB;CACrC,MAAM;CACN,aAAa;CACb,QAAQ,EACN,SAAS;EAAE,MAAM,eAAe,SAAS;EAAE,YAAY;EAAO,EAC/D;CACF,CAAC;AAEF,MAAa,2BAA2B,YAAY;CAClD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAY;GAAc;GAAS;EAC1C,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO,kBAAkB;GACvB,MAAM;GACN,aAAa;GACb,QAAQ,EAAE;GACX,CAAC;EACF,QAAQ;EACT;CACD,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC;AAEF,MAAa,8BAA8B,cAAc;CACvD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAY;GAAc;GAAS;EAC1C,aAAa;EACb,MAAM;EACN,SACE;EACH;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EAAE,MAAM,QAAQ;CACzB,CAAC;AAEF,MAAa,4BAA4B;CACvC;CACA;CACA,OAAO;CACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/presentations/index.ts"],"sourcesContent":["import {\n definePresentation,\n StabilityEnum,\n type PresentationSpecMeta,\n} from '@contractspec/lib.contracts';\nimport { StudioOnboardingTrackModel } from '../operations';\n\nconst baseMeta: Pick<\n PresentationSpecMeta,\n 'domain' | 'owners' | 'tags' | 'title' | 'stability'\n> = {\n domain: 'learning-journey',\n title: 'Studio Onboarding',\n owners: ['@examples.learning-journey.studio-onboarding'] as string[],\n tags: ['learning', 'onboarding', 'studio'] as string[],\n stability: StabilityEnum.Experimental,\n};\n\nexport const StudioOnboardingTrackPresentation = definePresentation({\n meta: {\n key: 'learning.journey.studio.track',\n version: '1.0.0',\n description: 'Studio onboarding track detail',\n goal: 'Visualize the onboarding track for the user.',\n context: 'Displayed in the Studio dashboard.',\n ...baseMeta,\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'LearningTrackDetail',\n props: StudioOnboardingTrackModel,\n },\n targets: ['react', 'markdown', 'application/json'],\n});\n\nexport const StudioOnboardingWidgetPresentation = definePresentation({\n meta: {\n key: 'learning.journey.studio.widget',\n version: '1.0.0',\n description: 'Compact widget for Studio onboarding progress',\n goal: 'Show quick progress summary.',\n context: 'Displayed in the Studio sidebar or header.',\n ...baseMeta,\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'LearningTrackProgressWidget',\n },\n targets: ['react'],\n});\n\nexport const studioOnboardingPresentations = [\n StudioOnboardingTrackPresentation,\n StudioOnboardingWidgetPresentation,\n];\n"],"mappings":";;;;AAOA,MAAM,WAGF;CACF,QAAQ;CACR,OAAO;CACP,QAAQ,CAAC,+CAA+C;CACxD,MAAM;EAAC;EAAY;EAAc;EAAS;CAC1C,WAAW,cAAc;CAC1B;AAED,MAAa,oCAAoC,mBAAmB;CAClE,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,MAAM;EACN,SAAS;EACT,GAAG;EACJ;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS;EAAC;EAAS;EAAY;EAAmB;CACnD,CAAC;AAEF,MAAa,qCAAqC,mBAAmB;CACnE,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,MAAM;EACN,SAAS;EACT,GAAG;EACJ;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,QAAQ;CACnB,CAAC;AAEF,MAAa,gCAAgC,CAC3C,mCACA,mCACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.test-spec.js","names":[],"sources":["../../src/tests/operations.test-spec.ts"],"sourcesContent":["import { defineTestSpec } from '@contractspec/lib.contracts';\n\nexport const GetTrackTest = defineTestSpec({\n meta: {\n key: 'learningJourney.studioOnboarding.getTrack.test',\n version: '1.0.0',\n stability: 'experimental',\n owners: ['@example.learning-journey-studio-onboarding'],\n description: 'Test for getting studio onboarding track',\n tags: ['test'],\n },\n target: {\n type: 'operation',\n operation: {\n key: 'learningJourney.studioOnboarding.getTrack',\n version: '1.0.0',\n },\n },\n scenarios: [\n {\n key: 'success',\n when: { operation: { key: 'learningJourney.studioOnboarding.getTrack' } },\n then: [{ type: 'expectOutput', match: {} }],\n },\n {\n key: 'error',\n when: { operation: { key: 'learningJourney.studioOnboarding.getTrack' } },\n then: [{ type: 'expectError' }],\n },\n ],\n});\n"],"mappings":";;;AAEA,MAAa,eAAe,eAAe;CACzC,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,8CAA8C;EACvD,aAAa;EACb,MAAM,CAAC,OAAO;EACf;CACD,QAAQ;EACN,MAAM;EACN,WAAW;GACT,KAAK;GACL,SAAS;GACV;EACF;CACD,WAAW,CACT;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,6CAA6C,EAAE;EACzE,MAAM,CAAC;GAAE,MAAM;GAAgB,OAAO,EAAE;GAAE,CAAC;EAC5C,EACD;EACE,KAAK;EACL,MAAM,EAAE,WAAW,EAAE,KAAK,6CAA6C,EAAE;EACzE,MAAM,CAAC,EAAE,MAAM,eAAe,CAAC;EAChC,CACF;CACF,CAAC"}
package/dist/track.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"track.js","names":[],"sources":["../src/track.ts"],"sourcesContent":["import type { LearningJourneyTrackSpec } from '@contractspec/module.learning-journey/track-spec';\n\nexport const studioGettingStartedTrack: LearningJourneyTrackSpec = {\n id: 'studio_getting_started',\n productId: 'contractspec-studio',\n name: 'Studio Getting Started',\n description:\n 'First 30 minutes in Studio: create a project, edit the spec, deploy/regenerate, and try key modules.',\n targetUserSegment: 'new_studio_user',\n targetRole: 'developer',\n totalXp: 110,\n streakRule: { hoursWindow: 48, bonusXp: 25 },\n completionRewards: { xpBonus: 25, badgeKey: 'studio_first_30m' },\n steps: [\n {\n id: 'choose_template',\n title: 'Choose a template',\n description: 'Create your first Studio project (starter template).',\n order: 1,\n completion: {\n eventName: 'studio.template.instantiated',\n sourceModule: '@contractspec/bundle.studio',\n },\n xpReward: 20,\n metadata: { surface: 'projects' },\n },\n {\n id: 'edit_spec',\n title: 'Edit the spec',\n description: 'Change the spec (not generated code) and save.',\n instructions: 'Open spec editor, tweak a contract or presentation, save.',\n order: 2,\n completion: {\n eventName: 'spec.changed',\n sourceModule: '@contractspec/bundle.studio',\n },\n xpReward: 20,\n metadata: { surface: 'spec-editor' },\n },\n {\n id: 'regenerate_app',\n title: 'Regenerate the app',\n description: 'Regenerate artifacts from the updated spec.',\n order: 3,\n completion: {\n eventName: 'regeneration.completed',\n sourceModule: '@contractspec/lib.contracts/regenerator',\n },\n xpReward: 20,\n metadata: { surface: 'regenerator' },\n },\n {\n id: 'open_canvas',\n title: 'Open the canvas',\n description: 'Visit the canvas module for your project.',\n order: 4,\n completion: {\n eventName: 'module.navigated',\n sourceModule: '@contractspec/bundle.studio',\n payloadFilter: { moduleId: 'canvas' },\n },\n xpReward: 20,\n metadata: { surface: 'canvas' },\n },\n {\n id: 'try_evolution_mode',\n title: 'Try evolution mode',\n description: 'Request a change via Evolution, then regenerate.',\n order: 5,\n completion: {\n eventName: 'studio.evolution.applied',\n sourceModule: '@contractspec/lib.evolution',\n },\n xpReward: 30,\n metadata: { surface: 'evolution' },\n },\n ],\n metadata: {\n persona: 'first_run',\n surfacedIn: ['studio/home', 'studio/sidebar/learning'],\n },\n};\n\nexport const studioLearningTracks: LearningJourneyTrackSpec[] = [\n studioGettingStartedTrack,\n];\n"],"mappings":";AAEA,MAAa,4BAAsD;CACjE,IAAI;CACJ,WAAW;CACX,MAAM;CACN,aACE;CACF,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,YAAY;EAAE,aAAa;EAAI,SAAS;EAAI;CAC5C,mBAAmB;EAAE,SAAS;EAAI,UAAU;EAAoB;CAChE,OAAO;EACL;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,WAAW;IACX,cAAc;IACf;GACD,UAAU;GACV,UAAU,EAAE,SAAS,YAAY;GAClC;EACD;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACP,YAAY;IACV,WAAW;IACX,cAAc;IACf;GACD,UAAU;GACV,UAAU,EAAE,SAAS,eAAe;GACrC;EACD;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,WAAW;IACX,cAAc;IACf;GACD,UAAU;GACV,UAAU,EAAE,SAAS,eAAe;GACrC;EACD;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,WAAW;IACX,cAAc;IACd,eAAe,EAAE,UAAU,UAAU;IACtC;GACD,UAAU;GACV,UAAU,EAAE,SAAS,UAAU;GAChC;EACD;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,WAAW;IACX,cAAc;IACf;GACD,UAAU;GACV,UAAU,EAAE,SAAS,aAAa;GACnC;EACF;CACD,UAAU;EACR,SAAS;EACT,YAAY,CAAC,eAAe,0BAA0B;EACvD;CACF;AAED,MAAa,uBAAmD,CAC9D,0BACD"}