@lssm/example.learning-journey-registry 0.0.0-canary-20251217034842 → 0.0.0-canary-20251217060433

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 (58) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +65 -0
  2. package/.turbo/turbo-build.log +55 -53
  3. package/CHANGELOG.md +17 -12
  4. package/dist/api-types.d.ts +40 -0
  5. package/dist/api.d.ts +12 -0
  6. package/dist/docs/index.d.ts +1 -0
  7. package/dist/docs/learning-journey-registry.docblock.d.ts +1 -0
  8. package/dist/docs/learning-journey-registry.docblock.js +1 -1
  9. package/dist/example.d.ts +32 -0
  10. package/dist/index.d.ts +8 -0
  11. package/dist/learning-journey-registry.feature.d.ts +11 -0
  12. package/dist/libs/contracts/{src → dist}/docs/PUBLISHING.docblock.js +1 -1
  13. package/dist/libs/contracts/{src → dist}/docs/accessibility_wcag_compliance_specs.docblock.js +1 -1
  14. package/dist/libs/contracts/dist/docs/index.js +1 -0
  15. package/dist/libs/contracts/{src → dist}/docs/presentations.js +1 -1
  16. package/dist/libs/contracts/dist/docs/registry.js +1 -0
  17. package/dist/libs/contracts/{src → dist}/docs/tech/PHASE_1_QUICKSTART.docblock.js +1 -1
  18. package/dist/libs/contracts/{src → dist}/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +1 -1
  19. package/dist/libs/contracts/{src → dist}/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +1 -1
  20. package/dist/libs/contracts/{src → dist}/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +1 -1
  21. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +1 -0
  22. package/dist/libs/contracts/{src → dist}/docs/tech/auth/better-auth-nextjs.docblock.js +1 -1
  23. package/dist/libs/contracts/{src → dist}/docs/tech/contracts/openapi-export.docblock.js +1 -1
  24. package/dist/libs/contracts/{src → dist}/docs/tech/lifecycle-stage-system.docblock.js +1 -1
  25. package/dist/libs/contracts/{src → dist}/docs/tech/llm/llm-integration.docblock.js +1 -1
  26. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +1 -0
  27. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +1 -0
  28. package/dist/libs/contracts/{src → dist}/docs/tech/schema/README.docblock.js +1 -1
  29. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +1 -0
  30. package/dist/libs/contracts/{src → dist}/docs/tech/studio/learning-journeys.docblock.js +1 -1
  31. package/dist/libs/contracts/{src → dist}/docs/tech/studio/platform-admin-panel.docblock.js +1 -1
  32. package/dist/libs/contracts/{src → dist}/docs/tech/studio/project-access-teams.docblock.js +1 -1
  33. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +1 -0
  34. package/dist/libs/contracts/{src → dist}/docs/tech/studio/sandbox-unlogged.docblock.js +1 -1
  35. package/dist/libs/contracts/{src → dist}/docs/tech/studio/team-invitations.docblock.js +1 -1
  36. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +1 -0
  37. package/dist/libs/contracts/{src → dist}/docs/tech/studio/workspaces.docblock.js +1 -1
  38. package/dist/libs/contracts/{src → dist}/docs/tech/telemetry-ingest.docblock.js +1 -1
  39. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +1 -0
  40. package/dist/libs/contracts/{src → dist}/docs/tech/vscode-extension.docblock.js +1 -1
  41. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +1 -0
  42. package/dist/presentations/index.d.ts +9 -0
  43. package/dist/progress-store.d.ts +10 -0
  44. package/dist/tracks.d.ts +39 -0
  45. package/dist/ui/LearningMiniApp.d.ts +23 -0
  46. package/dist/ui/index.d.ts +2 -0
  47. package/package.json +16 -14
  48. package/tsconfig.tsbuildinfo +1 -1
  49. package/dist/libs/contracts/src/docs/index.js +0 -1
  50. package/dist/libs/contracts/src/docs/registry.js +0 -1
  51. package/dist/libs/contracts/src/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -1
  52. package/dist/libs/contracts/src/docs/tech/mcp-endpoints.docblock.js +0 -1
  53. package/dist/libs/contracts/src/docs/tech/presentation-runtime.docblock.js +0 -1
  54. package/dist/libs/contracts/src/docs/tech/studio/learning-events.docblock.js +0 -1
  55. package/dist/libs/contracts/src/docs/tech/studio/project-routing.docblock.js +0 -1
  56. package/dist/libs/contracts/src/docs/tech/studio/workspace-ops.docblock.js +0 -1
  57. package/dist/libs/contracts/src/docs/tech/templates/runtime.docblock.js +0 -1
  58. package/dist/libs/contracts/src/docs/tech/workflows/overview.docblock.js +0 -1
@@ -0,0 +1,65 @@
1
+
2
+ $ tsdown
3
+ ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
4
+ ℹ config file: /Users/tboutron/Documents/clients/lssm/monorepo-lssm/packages/contractspec/packages/examples/learning-journey-registry/tsdown.config.js (unrun)
5
+ ℹ entry: src/api-types.ts, src/api.ts, src/example.ts, src/index.ts, src/learning-journey-registry.feature.ts, src/progress-store.ts, src/tracks.ts, src/docs/index.ts, src/docs/learning-journey-registry.docblock.ts, src/presentations/index.ts, src/ui/LearningMiniApp.tsx, src/ui/index.ts
6
+ ℹ target: esnext
7
+ ℹ tsconfig: tsconfig.json
8
+ ℹ Build start
9
+ ℹ Cleaning 69 files
10
+ ℹ dist/api.js  3.28 kB │ gzip: 1.37 kB
11
+ ℹ dist/ui/LearningMiniApp.js  1.88 kB │ gzip: 0.70 kB
12
+ ℹ dist/tracks.js  1.30 kB │ gzip: 0.50 kB
13
+ ℹ dist/index.js  1.23 kB │ gzip: 0.42 kB
14
+ ℹ dist/docs/learning-journey-registry.docblock.js  1.20 kB │ gzip: 0.62 kB
15
+ ℹ dist/presentations/index.js  0.99 kB │ gzip: 0.39 kB
16
+ ℹ dist/learning-journey-registry.feature.js  0.86 kB │ gzip: 0.36 kB
17
+ ℹ dist/example.js  0.52 kB │ gzip: 0.32 kB
18
+ ℹ dist/progress-store.js  0.43 kB │ gzip: 0.29 kB
19
+ ℹ dist/ui/index.js  0.19 kB │ gzip: 0.11 kB
20
+ ℹ dist/docs/index.js  0.05 kB │ gzip: 0.07 kB
21
+ ℹ dist/api-types.js  0.00 kB │ gzip: 0.02 kB
22
+ ℹ dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js 16.51 kB │ gzip: 7.15 kB
23
+ ℹ dist/libs/contracts/dist/docs/tech/schema/README.docblock.js 10.97 kB │ gzip: 4.28 kB
24
+ ℹ dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js  9.65 kB │ gzip: 3.77 kB
25
+ ℹ dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js  9.10 kB │ gzip: 3.41 kB
26
+ ℹ dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js  8.74 kB │ gzip: 2.67 kB
27
+ ℹ dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js  5.91 kB │ gzip: 2.61 kB
28
+ ℹ dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js  5.62 kB │ gzip: 2.58 kB
29
+ ℹ dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js  5.42 kB │ gzip: 2.25 kB
30
+ ℹ dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js  4.35 kB │ gzip: 2.05 kB
31
+ ℹ dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js  3.89 kB │ gzip: 1.69 kB
32
+ ℹ dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js  3.58 kB │ gzip: 1.38 kB
33
+ ℹ dist/libs/contracts/dist/docs/PUBLISHING.docblock.js  3.42 kB │ gzip: 1.58 kB
34
+ ℹ dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js  3.34 kB │ gzip: 1.45 kB
35
+ ℹ dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js  3.07 kB │ gzip: 1.38 kB
36
+ ℹ dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js  3.03 kB │ gzip: 1.32 kB
37
+ ℹ dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js  2.98 kB │ gzip: 1.52 kB
38
+ ℹ dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js  2.81 kB │ gzip: 1.41 kB
39
+ ℹ dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js  2.73 kB │ gzip: 1.30 kB
40
+ ℹ dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js  2.49 kB │ gzip: 1.11 kB
41
+ ℹ dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js  2.13 kB │ gzip: 1.03 kB
42
+ ℹ dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js  1.89 kB │ gzip: 0.93 kB
43
+ ℹ dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js  1.78 kB │ gzip: 0.87 kB
44
+ ℹ dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js  1.70 kB │ gzip: 0.89 kB
45
+ ℹ dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js  1.57 kB │ gzip: 0.77 kB
46
+ ℹ dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js  1.47 kB │ gzip: 0.73 kB
47
+ ℹ dist/libs/contracts/dist/docs/index.js  1.42 kB │ gzip: 0.47 kB
48
+ ℹ dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js  1.23 kB │ gzip: 0.68 kB
49
+ ℹ dist/libs/contracts/dist/docs/presentations.js  1.14 kB │ gzip: 0.56 kB
50
+ ℹ dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js  0.89 kB │ gzip: 0.55 kB
51
+ ℹ dist/libs/contracts/dist/docs/registry.js  0.63 kB │ gzip: 0.39 kB
52
+ ℹ dist/tracks.d.ts  1.69 kB │ gzip: 0.55 kB
53
+ ℹ dist/index.d.ts  1.17 kB │ gzip: 0.34 kB
54
+ ℹ dist/ui/LearningMiniApp.d.ts  1.15 kB │ gzip: 0.50 kB
55
+ ℹ dist/api-types.d.ts  1.03 kB │ gzip: 0.46 kB
56
+ ℹ dist/example.d.ts  0.96 kB │ gzip: 0.39 kB
57
+ ℹ dist/progress-store.d.ts  0.64 kB │ gzip: 0.29 kB
58
+ ℹ dist/presentations/index.d.ts  0.56 kB │ gzip: 0.21 kB
59
+ ℹ dist/api.d.ts  0.52 kB │ gzip: 0.27 kB
60
+ ℹ dist/learning-journey-registry.feature.d.ts  0.35 kB │ gzip: 0.22 kB
61
+ ℹ dist/ui/index.d.ts  0.17 kB │ gzip: 0.09 kB
62
+ ℹ dist/docs/index.d.ts  0.01 kB │ gzip: 0.03 kB
63
+ ℹ dist/docs/learning-journey-registry.docblock.d.ts  0.01 kB │ gzip: 0.03 kB
64
+ ℹ 54 files, total: 143.63 kB
65
+ ✔ Build complete in 2141ms
@@ -1,53 +1,55 @@
1
- $ bun build:bundle && bun build:types
2
- $ tsdown
3
- ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
4
- ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/learning-journey-registry/tsdown.config.js
5
- ℹ entry: src/api-types.ts, src/api.ts, src/example.ts, src/index.ts, src/learning-journey-registry.feature.ts, src/progress-store.ts, src/tracks.ts, src/docs/index.ts, src/docs/learning-journey-registry.docblock.ts, src/presentations/index.ts, src/ui/LearningMiniApp.tsx, src/ui/index.ts
6
- ℹ target: esnext
7
- ℹ tsconfig: tsconfig.json
8
- ℹ Build start
9
- ℹ dist/api.js  3.28 kB │ gzip: 1.37 kB
10
- ℹ dist/ui/LearningMiniApp.js  1.88 kB │ gzip: 0.70 kB
11
- ℹ dist/tracks.js  1.30 kB │ gzip: 0.50 kB
12
- ℹ dist/index.js  1.23 kB │ gzip: 0.42 kB
13
- ℹ dist/docs/learning-journey-registry.docblock.js  1.21 kB │ gzip: 0.63 kB
14
- ℹ dist/presentations/index.js  0.99 kB │ gzip: 0.39 kB
15
- ℹ dist/learning-journey-registry.feature.js  0.86 kB │ gzip: 0.36 kB
16
- ℹ dist/example.js  0.52 kB │ gzip: 0.32 kB
17
- ℹ dist/progress-store.js  0.43 kB │ gzip: 0.29 kB
18
- ℹ dist/ui/index.js  0.19 kB │ gzip: 0.11 kB
19
- ℹ dist/docs/index.js  0.05 kB │ gzip: 0.07 kB
20
- ℹ dist/api-types.js  0.00 kB │ gzip: 0.02 kB
21
- ℹ dist/libs/contracts/src/docs/accessibility_wcag_compliance_specs.docblock.js 16.53 kB │ gzip: 7.16 kB
22
- ℹ dist/libs/contracts/src/docs/tech/schema/README.docblock.js 10.99 kB │ gzip: 4.29 kB
23
- ℹ dist/libs/contracts/src/docs/tech/lifecycle-stage-system.docblock.js  9.67 kB │ gzip: 3.78 kB
24
- ℹ dist/libs/contracts/src/docs/tech/llm/llm-integration.docblock.js  9.12 kB │ gzip: 3.42 kB
25
- ℹ dist/libs/contracts/src/docs/tech/PHASE_1_QUICKSTART.docblock.js  8.76 kB │ gzip: 2.68 kB
26
- ℹ dist/libs/contracts/src/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js  5.93 kB │ gzip: 2.61 kB
27
- ℹ dist/libs/contracts/src/docs/tech/templates/runtime.docblock.js  5.63 kB │ gzip: 2.58 kB
28
- ℹ dist/libs/contracts/src/docs/tech/workflows/overview.docblock.js  5.44 kB │ gzip: 2.26 kB
29
- ℹ dist/libs/contracts/src/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js  4.37 kB │ gzip: 2.06 kB
30
- ℹ dist/libs/contracts/src/docs/tech/telemetry-ingest.docblock.js  3.90 kB │ gzip: 1.70 kB
31
- ℹ dist/libs/contracts/src/docs/tech/vscode-extension.docblock.js  3.60 kB │ gzip: 1.39 kB
32
- ℹ dist/libs/contracts/src/docs/PUBLISHING.docblock.js  3.43 kB │ gzip: 1.59 kB
33
- ℹ dist/libs/contracts/src/docs/tech/auth/better-auth-nextjs.docblock.js  3.35 kB │ gzip: 1.45 kB
34
- ℹ dist/libs/contracts/src/docs/tech/studio/learning-journeys.docblock.js  3.08 kB │ gzip: 1.39 kB
35
- ℹ dist/libs/contracts/src/docs/tech/studio/platform-admin-panel.docblock.js  3.04 kB │ gzip: 1.33 kB
36
- ℹ dist/libs/contracts/src/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js  3.00 kB │ gzip: 1.53 kB
37
- ℹ dist/libs/contracts/src/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js  2.83 kB │ gzip: 1.41 kB
38
- ℹ dist/libs/contracts/src/docs/tech/presentation-runtime.docblock.js  2.75 kB │ gzip: 1.30 kB
39
- ℹ dist/libs/contracts/src/docs/tech/studio/project-routing.docblock.js  2.50 kB │ gzip: 1.12 kB
40
- ℹ dist/libs/contracts/src/docs/tech/studio/team-invitations.docblock.js  2.14 kB │ gzip: 1.04 kB
41
- ℹ dist/libs/contracts/src/docs/tech/studio/workspaces.docblock.js  1.90 kB │ gzip: 0.94 kB
42
- ℹ dist/libs/contracts/src/docs/tech/studio/learning-events.docblock.js  1.79 kB │ gzip: 0.88 kB
43
- ℹ dist/libs/contracts/src/docs/tech/contracts/openapi-export.docblock.js  1.72 kB │ gzip: 0.90 kB
44
- ℹ dist/libs/contracts/src/docs/tech/studio/project-access-teams.docblock.js  1.58 kB │ gzip: 0.78 kB
45
- ℹ dist/libs/contracts/src/docs/index.js  1.54 kB │ gzip: 0.52 kB
46
- ℹ dist/libs/contracts/src/docs/tech/studio/workspace-ops.docblock.js  1.49 kB │ gzip: 0.73 kB
47
- ℹ dist/libs/contracts/src/docs/tech/mcp-endpoints.docblock.js  1.24 kB │ gzip: 0.68 kB
48
- ℹ dist/libs/contracts/src/docs/presentations.js  1.23 kB │ gzip: 0.59 kB
49
- ℹ dist/libs/contracts/src/docs/tech/studio/sandbox-unlogged.docblock.js  0.90 kB │ gzip: 0.56 kB
50
- ℹ dist/libs/contracts/src/docs/registry.js  0.74 kB │ gzip: 0.42 kB
51
- ℹ 42 files, total: 136.15 kB
52
- ✔ Build complete in 60ms
53
- $ tsc --noEmit
1
+
2
+ $ bun build:bundle && bun build:types
3
+ $ tsdown
4
+ ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
5
+ ℹ config file: /Users/tboutron/Documents/clients/lssm/monorepo-lssm/packages/contractspec/packages/examples/learning-journey-registry/tsdown.config.js (unrun)
6
+ ℹ entry: src/api-types.ts, src/api.ts, src/example.ts, src/index.ts, src/learning-journey-registry.feature.ts, src/progress-store.ts, src/tracks.ts, src/docs/index.ts, src/docs/learning-journey-registry.docblock.ts, src/presentations/index.ts, src/ui/LearningMiniApp.tsx, src/ui/index.ts
7
+ ℹ target: esnext
8
+ ℹ tsconfig: tsconfig.json
9
+ ℹ Build start
10
+ ℹ Cleaning 57 files
11
+ ℹ dist/api.js  3.28 kB │ gzip: 1.37 kB
12
+ ℹ dist/ui/LearningMiniApp.js  1.88 kB │ gzip: 0.70 kB
13
+ ℹ dist/tracks.js  1.30 kB │ gzip: 0.50 kB
14
+ ℹ dist/index.js  1.23 kB │ gzip: 0.42 kB
15
+ ℹ dist/docs/learning-journey-registry.docblock.js  1.21 kB │ gzip: 0.63 kB
16
+ ℹ dist/presentations/index.js  0.99 kB │ gzip: 0.39 kB
17
+ ℹ dist/learning-journey-registry.feature.js  0.86 kB │ gzip: 0.36 kB
18
+ ℹ dist/example.js  0.52 kB │ gzip: 0.32 kB
19
+ ℹ dist/progress-store.js  0.43 kB │ gzip: 0.29 kB
20
+ ℹ dist/ui/index.js  0.19 kB │ gzip: 0.11 kB
21
+ ℹ dist/docs/index.js  0.05 kB │ gzip: 0.07 kB
22
+ ℹ dist/api-types.js  0.00 kB │ gzip: 0.02 kB
23
+ ℹ dist/libs/contracts/src/docs/accessibility_wcag_compliance_specs.docblock.js 16.53 kB │ gzip: 7.16 kB
24
+ ℹ dist/libs/contracts/src/docs/tech/schema/README.docblock.js 10.99 kB │ gzip: 4.29 kB
25
+ ℹ dist/libs/contracts/src/docs/tech/lifecycle-stage-system.docblock.js  9.67 kB │ gzip: 3.78 kB
26
+ ℹ dist/libs/contracts/src/docs/tech/llm/llm-integration.docblock.js  9.12 kB │ gzip: 3.42 kB
27
+ ℹ dist/libs/contracts/src/docs/tech/PHASE_1_QUICKSTART.docblock.js  8.76 kB │ gzip: 2.68 kB
28
+ ℹ dist/libs/contracts/src/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js  5.93 kB │ gzip: 2.61 kB
29
+ ℹ dist/libs/contracts/src/docs/tech/templates/runtime.docblock.js  5.63 kB │ gzip: 2.58 kB
30
+ ℹ dist/libs/contracts/src/docs/tech/workflows/overview.docblock.js  5.44 kB │ gzip: 2.26 kB
31
+ ℹ dist/libs/contracts/src/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js  4.37 kB │ gzip: 2.06 kB
32
+ ℹ dist/libs/contracts/src/docs/tech/telemetry-ingest.docblock.js  3.90 kB │ gzip: 1.70 kB
33
+ ℹ dist/libs/contracts/src/docs/tech/vscode-extension.docblock.js  3.60 kB │ gzip: 1.39 kB
34
+ ℹ dist/libs/contracts/src/docs/PUBLISHING.docblock.js  3.43 kB │ gzip: 1.59 kB
35
+ ℹ dist/libs/contracts/src/docs/tech/auth/better-auth-nextjs.docblock.js  3.35 kB │ gzip: 1.45 kB
36
+ ℹ dist/libs/contracts/src/docs/tech/studio/learning-journeys.docblock.js  3.08 kB │ gzip: 1.39 kB
37
+ ℹ dist/libs/contracts/src/docs/tech/studio/platform-admin-panel.docblock.js  3.04 kB │ gzip: 1.33 kB
38
+ ℹ dist/libs/contracts/src/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js  3.00 kB │ gzip: 1.53 kB
39
+ ℹ dist/libs/contracts/src/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js  2.83 kB │ gzip: 1.41 kB
40
+ ℹ dist/libs/contracts/src/docs/tech/presentation-runtime.docblock.js  2.75 kB │ gzip: 1.30 kB
41
+ ℹ dist/libs/contracts/src/docs/tech/studio/project-routing.docblock.js  2.50 kB │ gzip: 1.12 kB
42
+ ℹ dist/libs/contracts/src/docs/tech/studio/team-invitations.docblock.js  2.14 kB │ gzip: 1.04 kB
43
+ ℹ dist/libs/contracts/src/docs/tech/studio/workspaces.docblock.js  1.90 kB │ gzip: 0.94 kB
44
+ ℹ dist/libs/contracts/src/docs/tech/studio/learning-events.docblock.js  1.79 kB │ gzip: 0.88 kB
45
+ ℹ dist/libs/contracts/src/docs/tech/contracts/openapi-export.docblock.js  1.72 kB │ gzip: 0.90 kB
46
+ ℹ dist/libs/contracts/src/docs/tech/studio/project-access-teams.docblock.js  1.58 kB │ gzip: 0.78 kB
47
+ ℹ dist/libs/contracts/src/docs/index.js  1.54 kB │ gzip: 0.52 kB
48
+ ℹ dist/libs/contracts/src/docs/tech/studio/workspace-ops.docblock.js  1.49 kB │ gzip: 0.73 kB
49
+ ℹ dist/libs/contracts/src/docs/tech/mcp-endpoints.docblock.js  1.24 kB │ gzip: 0.68 kB
50
+ ℹ dist/libs/contracts/src/docs/presentations.js  1.23 kB │ gzip: 0.59 kB
51
+ ℹ dist/libs/contracts/src/docs/tech/studio/sandbox-unlogged.docblock.js  0.90 kB │ gzip: 0.56 kB
52
+ ℹ dist/libs/contracts/src/docs/registry.js  0.74 kB │ gzip: 0.42 kB
53
+ ℹ 42 files, total: 136.15 kB
54
+ ✔ Build complete in 29ms
55
+ $ tsc --noEmit
package/CHANGELOG.md CHANGED
@@ -1,17 +1,22 @@
1
1
  # @lssm/example.learning-journey-registry
2
2
 
3
- ## 0.0.0-canary-20251217034842
3
+ ## 0.0.0-canary-20251217060433
4
+
5
+ ### Minor Changes
6
+
7
+ - 66a5dfd: initial release
4
8
 
5
9
  ### Patch Changes
6
10
 
7
- - @lssm/example.learning-journey-crm-onboarding@0.0.0-canary-20251217034842
8
- - @lssm/example.learning-journey-ui-coaching@0.0.0-canary-20251217034842
9
- - @lssm/example.learning-journey-ui-gamified@0.0.0-canary-20251217034842
10
- - @lssm/example.learning-journey-ui-onboarding@0.0.0-canary-20251217034842
11
- - @lssm/example.learning-journey-ui-shared@0.0.0-canary-20251217034842
12
- - @lssm/example.learning-journey-ambient-coach@0.0.0-canary-20251217034842
13
- - @lssm/example.learning-journey-duo-drills@0.0.0-canary-20251217034842
14
- - @lssm/example.learning-journey-platform-tour@0.0.0-canary-20251217034842
15
- - @lssm/example.learning-journey-quest-challenges@0.0.0-canary-20251217034842
16
- - @lssm/example.learning-journey-studio-onboarding@0.0.0-canary-20251217034842
17
- - @lssm/module.learning-journey@0.0.0-canary-20251217034842
11
+ - Updated dependencies [66a5dfd]
12
+ - @lssm/example.learning-journey-ambient-coach@0.0.0-canary-20251217060433
13
+ - @lssm/example.learning-journey-crm-onboarding@0.0.0-canary-20251217060433
14
+ - @lssm/example.learning-journey-duo-drills@0.0.0-canary-20251217060433
15
+ - @lssm/example.learning-journey-platform-tour@0.0.0-canary-20251217060433
16
+ - @lssm/example.learning-journey-quest-challenges@0.0.0-canary-20251217060433
17
+ - @lssm/example.learning-journey-studio-onboarding@0.0.0-canary-20251217060433
18
+ - @lssm/example.learning-journey-ui-coaching@0.0.0-canary-20251217060433
19
+ - @lssm/example.learning-journey-ui-gamified@0.0.0-canary-20251217060433
20
+ - @lssm/example.learning-journey-ui-onboarding@0.0.0-canary-20251217060433
21
+ - @lssm/example.learning-journey-ui-shared@0.0.0-canary-20251217060433
22
+ - @lssm/module.learning-journey@0.0.0-canary-20251217060433
@@ -0,0 +1,40 @@
1
+ import { LearningJourneyTrackSpec } from "@lssm/module.learning-journey/track-spec";
2
+
3
+ //#region src/api-types.d.ts
4
+ interface LearningEvent {
5
+ name: string;
6
+ version?: number;
7
+ sourceModule?: string;
8
+ payload?: Record<string, unknown>;
9
+ occurredAt?: Date;
10
+ learnerId: string;
11
+ trackId?: string;
12
+ }
13
+ type StepStatus = 'PENDING' | 'COMPLETED';
14
+ interface StepProgress {
15
+ id: string;
16
+ status: StepStatus;
17
+ xpEarned: number;
18
+ completedAt?: Date;
19
+ triggeringEvent?: string;
20
+ eventPayload?: Record<string, unknown>;
21
+ occurrences?: number;
22
+ counterStartedAt?: Date;
23
+ availableAt?: Date;
24
+ dueAt?: Date;
25
+ masteryCount?: number;
26
+ }
27
+ interface TrackProgress {
28
+ learnerId: string;
29
+ trackId: string;
30
+ progress: number;
31
+ isCompleted: boolean;
32
+ xpEarned: number;
33
+ startedAt?: Date;
34
+ completedAt?: Date;
35
+ lastActivityAt?: Date;
36
+ steps: StepProgress[];
37
+ }
38
+ type TrackResolver = (trackId: string) => LearningJourneyTrackSpec | undefined;
39
+ //#endregion
40
+ export { LearningEvent, StepProgress, StepStatus, TrackProgress, TrackResolver };
package/dist/api.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { LearningEvent, TrackProgress } from "./api-types.js";
2
+ import { LearningJourneyTrackSpec } from "@lssm/module.learning-journey/track-spec";
3
+
4
+ //#region src/api.d.ts
5
+ declare const listTracks: (learnerId?: string) => {
6
+ tracks: LearningJourneyTrackSpec[];
7
+ progress: TrackProgress[];
8
+ };
9
+ declare const getProgress: (trackId: string, learnerId: string) => TrackProgress | undefined;
10
+ declare const recordEvent: (event: LearningEvent) => TrackProgress[];
11
+ //#endregion
12
+ export { getProgress, listTracks, recordEvent };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -1 +1 @@
1
- import{registerDocBlocks as e}from"../libs/contracts/src/docs/registry.js";import"../libs/contracts/src/docs/index.js";e([{id:`docs.learning-journey.registry`,title:`Learning Journey — Example Track Registry`,summary:`Aggregates learning journey example tracks (Studio onboarding, Platform tour, CRM first win, Drills, Ambient Coach, Quest challenges).`,kind:`usage`,visibility:`public`,route:`/docs/learning-journey/registry`,tags:[`learning`,`registry`,`onboarding`],body:"## Tracks\n- `studio_getting_started` (Studio onboarding)\n- `platform_primitives_tour` (Platform primitives)\n- `crm_first_win` (CRM pipeline onboarding)\n- `drills_language_basics` (Drills & SRS)\n- `money_ambient_coach`, `coliving_ambient_coach` (Ambient tips)\n- `money_reset_7day` (Quest/challenge)\n\n## Exports\n- `learningJourneyTracks` — raw specs\n- `onboardingTrackCatalog` — DTOs aligned with onboarding API\n- `mapTrackSpecToDto` — helper to map individual tracks\n\n## Wiring\n- Use with onboarding API contracts:\n - `learning.onboarding.listTracks`\n - `learning.onboarding.getProgress`\n - `learning.onboarding.recordEvent`\n- Intended for registry/adapters in Studio UI or services that surface tracks."}]);
1
+ import{a as e}from"../libs/contracts/dist/docs/registry.js";import"../libs/contracts/dist/docs/index.js";e([{id:`docs.learning-journey.registry`,title:`Learning Journey — Example Track Registry`,summary:`Aggregates learning journey example tracks (Studio onboarding, Platform tour, CRM first win, Drills, Ambient Coach, Quest challenges).`,kind:`usage`,visibility:`public`,route:`/docs/learning-journey/registry`,tags:[`learning`,`registry`,`onboarding`],body:"## Tracks\n- `studio_getting_started` (Studio onboarding)\n- `platform_primitives_tour` (Platform primitives)\n- `crm_first_win` (CRM pipeline onboarding)\n- `drills_language_basics` (Drills & SRS)\n- `money_ambient_coach`, `coliving_ambient_coach` (Ambient tips)\n- `money_reset_7day` (Quest/challenge)\n\n## Exports\n- `learningJourneyTracks` — raw specs\n- `onboardingTrackCatalog` — DTOs aligned with onboarding API\n- `mapTrackSpecToDto` — helper to map individual tracks\n\n## Wiring\n- Use with onboarding API contracts:\n - `learning.onboarding.listTracks`\n - `learning.onboarding.getProgress`\n - `learning.onboarding.recordEvent`\n- Intended for registry/adapters in Studio UI or services that surface tracks."}]);
@@ -0,0 +1,32 @@
1
+ //#region src/example.d.ts
2
+ declare const example: {
3
+ readonly id: "learning-journey-registry";
4
+ readonly title: "Learning Journey Registry";
5
+ readonly summary: "Registry of learning journey tracks + presentations + UI mini-app bindings.";
6
+ readonly tags: readonly ["learning", "journey", "registry"];
7
+ readonly kind: "library";
8
+ readonly visibility: "public";
9
+ readonly docs: {
10
+ readonly rootDocId: "docs.examples.learning-journey-registry";
11
+ };
12
+ readonly entrypoints: {
13
+ readonly packageName: "@lssm/example.learning-journey-registry";
14
+ readonly docs: "./docs";
15
+ };
16
+ readonly surfaces: {
17
+ readonly templates: true;
18
+ readonly sandbox: {
19
+ readonly enabled: true;
20
+ readonly modes: readonly ["markdown", "specs"];
21
+ };
22
+ readonly studio: {
23
+ readonly enabled: true;
24
+ readonly installable: true;
25
+ };
26
+ readonly mcp: {
27
+ readonly enabled: true;
28
+ };
29
+ };
30
+ };
31
+ //#endregion
32
+ export { example as default };
@@ -0,0 +1,8 @@
1
+ import { getProgress, listTracks, recordEvent } from "./api.js";
2
+ import example from "./example.js";
3
+ import { OnboardingStepDto, OnboardingTrackDto, crmLearningTracks, learningJourneyTracks, mapStep, mapTrackSpecToDto, onboardingTrackCatalog, platformLearningTracks, studioLearningTracks } from "./tracks.js";
4
+ import { LearningTrackDetailPresentation, LearningTrackListPresentation, LearningTrackProgressWidgetPresentation, learningJourneyPresentations } from "./presentations/index.js";
5
+ import { LearningJourneyRegistryFeature } from "./learning-journey-registry.feature.js";
6
+ import { LearningMiniApp, getLearningTemplateIds, isLearningTemplate } from "./ui/LearningMiniApp.js";
7
+ import "./ui/index.js";
8
+ export { LearningJourneyRegistryFeature, LearningMiniApp, LearningTrackDetailPresentation, LearningTrackListPresentation, LearningTrackProgressWidgetPresentation, OnboardingStepDto, OnboardingTrackDto, crmLearningTracks, example, getLearningTemplateIds, getProgress, isLearningTemplate, learningJourneyPresentations, learningJourneyTracks, listTracks, mapStep, mapTrackSpecToDto, onboardingTrackCatalog, platformLearningTracks, recordEvent, studioLearningTracks };
@@ -0,0 +1,11 @@
1
+ import { FeatureModuleSpec } from "@lssm/lib.contracts";
2
+
3
+ //#region src/learning-journey-registry.feature.d.ts
4
+
5
+ /**
6
+ * Learning Journey Registry feature module that bundles
7
+ * the shared presentations for learning journey tracks.
8
+ */
9
+ declare const LearningJourneyRegistryFeature: FeatureModuleSpec;
10
+ //#endregion
11
+ export { LearningJourneyRegistryFeature };
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"./registry.js";e([{id:`docs.PUBLISHING`,title:`Publishing ContractSpec Libraries`,summary:`This guide describes how we release the ContractSpec libraries to npm. We use a dual-track release system: **Stable** (manual) and **Canary** (automatic).`,kind:`reference`,visibility:`public`,route:`/docs/PUBLISHING`,tags:[`PUBLISHING`],body:`# Publishing ContractSpec Libraries
1
+ import{a as e}from"./registry.js";e([{id:`docs.PUBLISHING`,title:`Publishing ContractSpec Libraries`,summary:`This guide describes how we release the ContractSpec libraries to npm. We use a dual-track release system: **Stable** (manual) and **Canary** (automatic).`,kind:`reference`,visibility:`public`,route:`/docs/PUBLISHING`,tags:[`PUBLISHING`],body:`# Publishing ContractSpec Libraries
2
2
 
3
3
  This guide describes how we release the ContractSpec libraries to npm. We use a dual-track release system: **Stable** (manual) and **Canary** (automatic).
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"./registry.js";e([{id:`docs.accessibility_wcag_compliance_specs`,title:`Accessibility & WCAG Compliance — **specs.md**`,summary:`> **Goal:** Ship interfaces that are usable by everyone, by default. This spec sets non‑negotiable rules, checklists, and CI gates to meet **WCAG\xA02.2 AA** (aim for AAA where low‑cost), align with **EN\xA0301\xA0549** (EU), and keep parity on **web (Next.js)** and **mobile (Expo/React\xA0Native)**.`,kind:`reference`,visibility:`public`,route:`/docs/accessibility_wcag_compliance_specs`,tags:[`accessibility_wcag_compliance_specs`],body:`# Accessibility & WCAG Compliance — **specs.md**
1
+ import{a as e}from"./registry.js";e([{id:`docs.accessibility_wcag_compliance_specs`,title:`Accessibility & WCAG Compliance — **specs.md**`,summary:`> **Goal:** Ship interfaces that are usable by everyone, by default. This spec sets non‑negotiable rules, checklists, and CI gates to meet **WCAG\xA02.2 AA** (aim for AAA where low‑cost), align with **EN\xA0301\xA0549** (EU), and keep parity on **web (Next.js)** and **mobile (Expo/React\xA0Native)**.`,kind:`reference`,visibility:`public`,route:`/docs/accessibility_wcag_compliance_specs`,tags:[`accessibility_wcag_compliance_specs`],body:`# Accessibility & WCAG Compliance — **specs.md**
2
2
 
3
3
  > **Goal:** Ship interfaces that are usable by everyone, by default. This spec sets non‑negotiable rules, checklists, and CI gates to meet **WCAG\xA02.2 AA** (aim for AAA where low‑cost), align with **EN\xA0301\xA0549** (EU), and keep parity on **web (Next.js)** and **mobile (Expo/React\xA0Native)**.
4
4
 
@@ -0,0 +1 @@
1
+ import{a as e,i as t,o as n}from"./presentations.js";import{a as r,i,n as a}from"./registry.js";import"./PUBLISHING.docblock.js";import"./accessibility_wcag_compliance_specs.docblock.js";import"./tech/PHASE_1_QUICKSTART.docblock.js";import"./tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js";import"./tech/PHASE_3_AUTO_EVOLUTION.docblock.js";import"./tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js";import"./tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js";import"./tech/lifecycle-stage-system.docblock.js";import"./tech/presentation-runtime.docblock.js";import"./tech/auth/better-auth-nextjs.docblock.js";import"./tech/schema/README.docblock.js";import"./tech/templates/runtime.docblock.js";import"./tech/workflows/overview.docblock.js";import"./tech/mcp-endpoints.docblock.js";import"./tech/vscode-extension.docblock.js";import"./tech/telemetry-ingest.docblock.js";import"./tech/contracts/openapi-export.docblock.js";import"./tech/studio/workspaces.docblock.js";import"./tech/studio/sandbox-unlogged.docblock.js";import"./tech/studio/workspace-ops.docblock.js";import"./tech/studio/project-routing.docblock.js";import"./tech/studio/platform-admin-panel.docblock.js";import"./tech/studio/learning-events.docblock.js";import"./tech/studio/learning-journeys.docblock.js";import"./tech/studio/project-access-teams.docblock.js";import"./tech/studio/team-invitations.docblock.js";import"./tech/llm/llm-integration.docblock.js";
@@ -1 +1 @@
1
- const e=[`markdown`,`application/json`,`application/xml`,`react`];function t(e){if(!e.length)return`/`;let t=e.startsWith(`/`)?e:`/${e}`;return t===`/`?`/`:t.replace(/\/+$/,``)}function n(e,n){if(e.route)return t(e.route);let r=n??`/docs`,i=e.id.replace(/^docs\.?/,``).replace(/\./g,`/`).replace(/\/+/g,`/`);return t(i.startsWith(`/`)?i:`${r}/${i}`)}function r(e,t){return t?`${t}.${e.id}`:e.id}function i(t,n){let i=n?.defaultTargets??e,a=t.version??n?.defaultVersion??1,o=t.stability??n?.defaultStability??`stable`;return{meta:{name:r(t,n?.namespace),version:a,description:t.summary??t.title,tags:t.tags,owners:t.owners,domain:t.domain,stability:o},policy:t.visibility&&t.visibility!==`public`?{flags:[t.visibility]}:void 0,source:{type:`blocknotejs`,docJson:t.body},targets:i}}function a(e,t){let n=e.version??t?.defaultVersion??1,i=e.stability??t?.defaultStability??`stable`;return{meta:{name:r(e,t?.namespace),version:n,stability:i,tags:e.tags,owners:e.owners,description:e.summary??e.title},content:{kind:`markdown`,content:e.body}}}function o(e,t){return e.map(e=>({block:e,route:n(e,t?.routePrefix),descriptor:i(e,t)}))}export{a as docBlockToPresentationSpec,i as docBlockToPresentationV2,o as docBlocksToPresentationRoutes};
1
+ const e=[`markdown`,`application/json`,`application/xml`,`react`];function t(e){if(!e.length)return`/`;let t=e.startsWith(`/`)?e:`/${e}`;return t===`/`?`/`:t.replace(/\/+$/,``)}function n(e,n){if(e.route)return t(e.route);let r=n??`/docs`,i=e.id.replace(/^docs\.?/,``).replace(/\./g,`/`).replace(/\/+/g,`/`);return t(i.startsWith(`/`)?i:`${r}/${i}`)}function r(e,t){return t?`${t}.${e.id}`:e.id}function i(t,n){let i=n?.defaultTargets??e,a=t.version??n?.defaultVersion??1,o=t.stability??n?.defaultStability??`stable`;return{meta:{name:r(t,n?.namespace),version:a,description:t.summary??t.title,tags:t.tags,owners:t.owners,domain:t.domain,stability:o},policy:t.visibility&&t.visibility!==`public`?{flags:[t.visibility]}:void 0,source:{type:`blocknotejs`,docJson:t.body},targets:i}}function a(e,t){let n=e.version??t?.defaultVersion??1,i=e.stability??t?.defaultStability??`stable`;return{meta:{name:r(e,t?.namespace),version:n,stability:i,tags:e.tags,owners:e.owners,description:e.summary??e.title},content:{kind:`markdown`,content:e.body}}}function o(e,t){return e.map(e=>({block:e,route:n(e,t?.routePrefix),descriptor:i(e,t)}))}export{a,i,o};
@@ -0,0 +1 @@
1
+ import{a as e,o as t}from"./presentations.js";var n=class{routes=new Map;constructor(e=[],t){e.forEach(e=>this.register(e,t))}register(e,n){let[r]=t([e],n);return r&&this.routes.set(e.id,r),this}list(){return[...this.routes.values()]}get(e){return this.routes.get(e)}toRouteTuples(){return this.list().map(({route:e,descriptor:t})=>[e,t])}toPresentationSpecs(t){return this.list().map(({block:n})=>e(n,t))}};const r=[`id`,`title`,`body`,`kind`,`visibility`,`route`],i=new n;function a(e){for(let t of e){for(let e of r)if(!t[e])throw Error(`DocBlock ${t.id??`<missing id>`} missing field ${String(e)}`);i.register(t)}}export{a,i,n};
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../registry.js";e([{id:`docs.tech.PHASE_1_QUICKSTART`,title:`Phase 1: API Reference Index`,summary:`Quick reference for all new Phase 1 APIs.`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_1_QUICKSTART`,tags:[`tech`,`PHASE_1_QUICKSTART`],body:`# Phase 1: API Reference Index
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.PHASE_1_QUICKSTART`,title:`Phase 1: API Reference Index`,summary:`Quick reference for all new Phase 1 APIs.`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_1_QUICKSTART`,tags:[`tech`,`PHASE_1_QUICKSTART`],body:`# Phase 1: API Reference Index
2
2
 
3
3
  Quick reference for all new Phase 1 APIs.
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../registry.js";e([{id:`docs.tech.PHASE_2_AI_NATIVE_OPERATIONS`,title:`Phase 2: AI-Native Operations`,summary:`_Last updated: 2025-11-20_`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS`,tags:[`tech`,`PHASE_2_AI_NATIVE_OPERATIONS`],body:`# Phase 2: AI-Native Operations
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.PHASE_2_AI_NATIVE_OPERATIONS`,title:`Phase 2: AI-Native Operations`,summary:`_Last updated: 2025-11-20_`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS`,tags:[`tech`,`PHASE_2_AI_NATIVE_OPERATIONS`],body:`# Phase 2: AI-Native Operations
2
2
 
3
3
  _Last updated: 2025-11-20_
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../registry.js";e([{id:`docs.tech.PHASE_3_AUTO_EVOLUTION`,title:`Phase 3: Auto-Evolution Technical Notes`,summary:`**Status**: In progress`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_3_AUTO_EVOLUTION`,tags:[`tech`,`PHASE_3_AUTO_EVOLUTION`],body:`# Phase 3: Auto-Evolution Technical Notes
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.PHASE_3_AUTO_EVOLUTION`,title:`Phase 3: Auto-Evolution Technical Notes`,summary:`**Status**: In progress`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_3_AUTO_EVOLUTION`,tags:[`tech`,`PHASE_3_AUTO_EVOLUTION`],body:`# Phase 3: Auto-Evolution Technical Notes
2
2
 
3
3
  **Status**: In progress
4
4
  **Last updated**: 2025-11-21
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../registry.js";e([{id:`docs.tech.PHASE_4_PERSONALIZATION_ENGINE`,title:`Phase 4: Personalization Engine`,summary:`**Status**: Complete`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_4_PERSONALIZATION_ENGINE`,tags:[`tech`,`PHASE_4_PERSONALIZATION_ENGINE`],body:`# Phase 4: Personalization Engine
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.PHASE_4_PERSONALIZATION_ENGINE`,title:`Phase 4: Personalization Engine`,summary:`**Status**: Complete`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_4_PERSONALIZATION_ENGINE`,tags:[`tech`,`PHASE_4_PERSONALIZATION_ENGINE`],body:`# Phase 4: Personalization Engine
2
2
 
3
3
  **Status**: Complete
4
4
  **Last updated**: 2025-11-21
@@ -0,0 +1 @@
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.PHASE_5_ZERO_TOUCH_OPERATIONS`,title:`Phase 5: Zero-Touch Operations`,summary:`**Status**: In progress`,kind:`reference`,visibility:`public`,route:`/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS`,tags:[`tech`,`PHASE_5_ZERO_TOUCH_OPERATIONS`],body:"# Phase 5: Zero-Touch Operations\n\n**Status**: In progress \n**Last updated**: 2025-11-21\n\nPhase 5 delivers progressive delivery, SLO intelligence, cost attribution, and anomaly-driven remediation so the platform can deploy continuously without pager rotations.\n\n---\n\n## 1. New Libraries\n\n### @lssm/lib.progressive-delivery\n- `DeploymentStrategy` types capture canary vs blue-green rollouts.\n- `CanaryController` + `CanaryAnalyzer` orchestrate stage evaluation against telemetry thresholds.\n- `TrafficShifter` keeps stable/candidate splits in sync with feature-flag or router state.\n- `DeploymentCoordinator` drives stage progression, emits events, and triggers rollbacks.\n- `RollbackManager` encapsulates safe revert hooks (spec version revert, traffic shift, etc.).\n\n### @lssm/lib.slo\n- Declarative `SLODefinition` with latency + availability targets per capability/spec.\n- `SLOTracker` stores rolling snapshots + error budget positions.\n- `BurnRateCalculator` implements multi-window burn computations (fast vs slow burn).\n- `SLOMonitor` pushes incidents to Ops tooling automatically when burn exceeds thresholds.\n\n### @lssm/lib.cost-tracking\n- `CostTracker` normalizes DB/API/compute metrics into per-operation cost totals.\n- `BudgetAlertManager` raises tenant budget warnings (80% default) with contextual payloads.\n- `OptimizationRecommender` suggests batching, caching, or contract tweaks to cut spend.\n\n### Observability Anomaly Toolkit\n- `BaselineCalculator` establishes rolling intent metrics (latency, error rate, throughput).\n- `AnomalyDetector` flags spikes/drops via relative deltas after 10+ samples.\n- `RootCauseAnalyzer` correlates anomalies with recent deployments.\n- `AlertManager` deduplicates notifications and feeds MCP/SRE transports.\n\n---\n\n## 2. Data Model Additions\n\nFile: `packages/libs/database/prisma/schema.prisma`\n\n| Model | Purpose |\n| --- | --- |\n| `SLODefinition`, `SLOSnapshot`, `ErrorBudget`, `SLOIncident` | Persist definitions, rolling windows, and incidents. |\n| `OperationCost`, `TenantBudget`, `CostAlert`, `OptimizationSuggestion` | Track per-operation costs, budgets, and generated recommendations. |\n| `Deployment`, `DeploymentStage`, `RollbackEvent` | Audit progressive delivery runs and automated rollbacks. |\n| `MetricBaseline`, `AnomalyEvent` | Store computed baselines and anomaly evidence for training/analytics. |\n\nRun `bun database generate` after pulling to refresh the Prisma client.\n\n---\n\n## 3. Operational Flow\n\n1. **Deploy**: Define a `DeploymentStrategy` and feed telemetry via `@lssm/lib.observability`. Canary stages run automatically.\n2. **Protect**: `CanaryAnalyzer` evaluates error rate + latency thresholds. Failures trigger `RollbackManager`.\n3. **Observe**: `SLOMonitor` consumes snapshots and opens incidents when burn rate exceeds thresholds.\n4. **Optimize**: `CostTracker` aggregates spend per tenant + capability, while `OptimizationRecommender` surfaces fixes.\n5. **Detect**: Anomaly signals route to `RootCauseAnalyzer`, which links them to specific deployments for auto-rollback.\n\n---\n\n## 4. Integration Checklist\n\n1. Instrument adapters with `createTracingMiddleware({ onSample })` to feed metric points into `AnomalyDetector`.\n2. Register SLOs per critical operation (`billing.charge`, `knowledge.search`) and wire monitors to Ops notifications.\n3. Attach `CostTracker.recordSample` to workflow runners (DB instrumentation + external call wrappers).\n4. Store deployment metadata using the new Prisma models for auditing + UI surfacing.\n5. Update `@lssm/app.ops-console` (next iteration) to list deployments, SLO status, costs, and anomalies in one timeline.\n\n---\n\n## 5. Next Steps\n\n- Wire `DeploymentCoordinator` into the Contracts CLI so `contractspec deploy` can run staged rollouts.\n- Add UI for SLO dashboards (burn rate sparkline + incident feed).\n- Ship budget suggestions into Growth Agent for automated cost optimizations.\n- Connect `AnomalyEvent` stream to MCP agents for root-cause playbooks.\n"}]);
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.auth.better-auth-nextjs`,title:`Better Auth + Next.js integration (ContractSpec)`,summary:`How ContractSpec wires Better Auth into Next.js (server config, client singleton, and proxy cookie-only redirects).`,kind:`reference`,visibility:`public`,route:`/docs/tech/auth/better-auth-nextjs`,tags:[`auth`,`better-auth`,`nextjs`,`cookies`,`proxy`,`hmr`],body:`# Better Auth + Next.js integration (ContractSpec)
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.auth.better-auth-nextjs`,title:`Better Auth + Next.js integration (ContractSpec)`,summary:`How ContractSpec wires Better Auth into Next.js (server config, client singleton, and proxy cookie-only redirects).`,kind:`reference`,visibility:`public`,route:`/docs/tech/auth/better-auth-nextjs`,tags:[`auth`,`better-auth`,`nextjs`,`cookies`,`proxy`,`hmr`],body:`# Better Auth + Next.js integration (ContractSpec)
2
2
 
3
3
  This repo uses Better Auth as the primary auth layer (sessions, organizations, teams, API keys, and OAuth).
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.contracts.openapi-export`,title:`OpenAPI export (OpenAPI 3.1) from SpecRegistry`,summary:`Generate a deterministic OpenAPI document from a SpecRegistry using jsonSchemaForSpec + REST transport metadata.`,kind:`reference`,visibility:`public`,route:`/docs/tech/contracts/openapi-export`,tags:[`contracts`,`openapi`,`rest`],body:`## OpenAPI export (OpenAPI 3.1) from SpecRegistry
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.contracts.openapi-export`,title:`OpenAPI export (OpenAPI 3.1) from SpecRegistry`,summary:`Generate a deterministic OpenAPI document from a SpecRegistry using jsonSchemaForSpec + REST transport metadata.`,kind:`reference`,visibility:`public`,route:`/docs/tech/contracts/openapi-export`,tags:[`contracts`,`openapi`,`rest`],body:`## OpenAPI export (OpenAPI 3.1) from SpecRegistry
2
2
 
3
3
  ### Purpose
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../registry.js";e([{id:`docs.tech.lifecycle-stage-system`,title:`ContractSpec Lifecycle Stage System – Technical Design`,summary:`This document describes how ContractSpec implements lifecycle detection and guidance. It covers architecture, module boundaries, scoring heuristics, and integration points so libraries, modules, bundles, and Studio surfaces stay synchronized.`,kind:`reference`,visibility:`public`,route:`/docs/tech/lifecycle-stage-system`,tags:[`tech`,`lifecycle-stage-system`],body:`## ContractSpec Lifecycle Stage System – Technical Design
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.lifecycle-stage-system`,title:`ContractSpec Lifecycle Stage System – Technical Design`,summary:`This document describes how ContractSpec implements lifecycle detection and guidance. It covers architecture, module boundaries, scoring heuristics, and integration points so libraries, modules, bundles, and Studio surfaces stay synchronized.`,kind:`reference`,visibility:`public`,route:`/docs/tech/lifecycle-stage-system`,tags:[`tech`,`lifecycle-stage-system`],body:`## ContractSpec Lifecycle Stage System – Technical Design
2
2
 
3
3
  This document describes how ContractSpec implements lifecycle detection and guidance. It covers architecture, module boundaries, scoring heuristics, and integration points so libraries, modules, bundles, and Studio surfaces stay synchronized.
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.llm.overview`,title:`LLM Integration Overview`,summary:`Export specs to LLM-friendly formats, generate implementation guides, and verify implementations.`,kind:`reference`,visibility:`public`,route:`/docs/tech/llm/overview`,tags:[`llm`,`ai`,`export`,`guide`,`verify`],body:`# LLM Integration
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.llm.overview`,title:`LLM Integration Overview`,summary:`Export specs to LLM-friendly formats, generate implementation guides, and verify implementations.`,kind:`reference`,visibility:`public`,route:`/docs/tech/llm/overview`,tags:[`llm`,`ai`,`export`,`guide`,`verify`],body:`# LLM Integration
2
2
 
3
3
  ContractSpec provides first-class LLM integration to bridge specifications and AI coding agents.
4
4
 
@@ -0,0 +1 @@
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.mcp.endpoints`,title:`ContractSpec MCP endpoints`,summary:`Dedicated MCP servers for docs, CLI usage, and internal development.`,kind:`reference`,visibility:`mixed`,route:`/docs/tech/mcp/endpoints`,tags:[`mcp`,`docs`,`cli`,`internal`],body:"# ContractSpec MCP endpoints\n\nThree dedicated MCP servers keep AI agents efficient and scoped:\n\n- **Docs MCP**: `/api/mcp/docs` — exposes DocBlocks as resources + presentations. Tool: `docs.search`.\n- **CLI MCP**: `/api/mcp/cli` — surfaces CLI quickstart/reference/README and suggests commands. Tool: `cli.suggestCommand`.\n- **Internal MCP**: `/api/mcp/internal` — internal routing hints, playbook, and example registry access. Tool: `internal.describe`.\n\n### Usage notes\n- Transports are HTTP POST (streamable HTTP); SSE is disabled.\n- Resources are namespaced (`docs://*`, `cli://*`, `internal://*`) and are read-only.\n- Internal MCP also exposes the examples registry via `examples://*` resources:\n - `examples://list?q=<query>`\n - `examples://example/<id>`\n- Prompts mirror each surface (navigator, usage, bootstrap) for quick agent onboarding.\n- GraphQL remains at `/graphql`; health at `/health`.\n"}]);
@@ -0,0 +1 @@
1
+ import{a as e}from"../registry.js";e([{id:`docs.tech.presentation-runtime`,title:`Presentation Runtime`,summary:`Cross-platform runtime for list pages and presentation flows.`,kind:`reference`,visibility:`public`,route:`/docs/tech/presentation-runtime`,tags:[`tech`,`presentation-runtime`],body:"## Presentation Runtime\n\nCross-platform runtime for list pages and presentation flows.\n\n### Packages\n\n- `@lssm/lib.presentation-runtime-core`: shared types and config helpers\n- `@lssm/lib.presentation-runtime-react`: React hooks (web/native-compatible API)\n- `@lssm/lib.presentation-runtime-react-native`: Native entrypoint (re-exports React API for now)\n\n### Next.js config helper\n\n```ts\n// next.config.mjs\nimport { withPresentationNextAliases } from '@lssm/lib.presentation-runtime-core/next';\n\nconst nextConfig = {\n webpack: (config) => withPresentationNextAliases(config),\n};\n\nexport default nextConfig;\n```\n\n### Metro config helper\n\n```js\n// metro.config.js (CJS)\nconst { getDefaultConfig } = require('expo/metro-config');\nconst {\n withPresentationMetroAliases,\n} = require('@lssm/lib.presentation-runtime-core/src/metro.cjs');\n\nconst projectRoot = __dirname;\nconst config = getDefaultConfig(projectRoot);\n\nmodule.exports = withPresentationMetroAliases(config);\n```\n\n### React hooks\n\n- `useListCoordinator`: URL + RHF + derived variables (no fetching)\n- `usePresentationController`: Same plus `fetcher` integration\n- `DataViewRenderer` (design-system): render `DataViewSpec` projections (`list`, `table`, `detail`, `grid`) using shared UI atoms\n\nBoth accept a `useUrlState` adapter. On web, use `useListUrlState` (design-system) or a Next adapter.\n\n### KYC molecules (bundle)\n\n- `ComplianceBadge` in `@lssm/bundle.strit/presentation/components/kyc` renders a status badge for KYC/compliance snapshots. It accepts a `state` (missing_core | incomplete | complete | expiring | unknown) and optional localized `labels`. Prefer consuming apps to pass translated labels (e.g., via `useT('appPlatformAdmin')`).\n\n### Markdown routes and llms.txt\n\n- Each web app exposes `/llms` (and `/llms.txt`, `/llms.md`) via rewrites. See [llmstxt.org](https://llmstxt.org/).\n- Catch‑all markdown handler lives at `app/[...slug].md/route.ts`. It resolves a page descriptor from `app/.presentations.manifest.json` and renders via the `presentations.v2` engine (target: `markdown`).\n- Per‑page companion convention: add `app/<route>/ai.ts` exporting a `PresentationDescriptorV2`.\n- Build‑time tool: `tools/generate-presentations-manifest.mjs <app-root>` populates the manifest.\n- CI check: `pnpm llms:check` verifies coverage (% of pages with descriptors) and fails if below threshold.\n"}]);
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.schema.README`,title:`Multi‑File Prisma Schema Conventions (per database)`,summary:`We adopt Prisma multi‑file schema (GA ≥ v6.7) to organize each database’s models by domain and to import core LSSM module schemas locally.`,kind:`reference`,visibility:`public`,route:`/docs/tech/schema/README`,tags:[`tech`,`schema`,`README`],body:`# Multi‑File Prisma Schema Conventions (per database)
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.schema.README`,title:`Multi‑File Prisma Schema Conventions (per database)`,summary:`We adopt Prisma multi‑file schema (GA ≥ v6.7) to organize each database’s models by domain and to import core LSSM module schemas locally.`,kind:`reference`,visibility:`public`,route:`/docs/tech/schema/README`,tags:[`tech`,`schema`,`README`],body:`# Multi‑File Prisma Schema Conventions (per database)
2
2
 
3
3
  We adopt Prisma multi‑file schema (GA ≥ v6.7) to organize each database’s models by domain and to import core LSSM module schemas locally.
4
4
 
@@ -0,0 +1 @@
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.learning-events`,title:`Studio Learning Events`,summary:`Studio persists learning/activity events to the database; Sandbox keeps learning local-first and unlogged.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/learning-events`,tags:[`studio`,`learning`,`events`,`analytics`,`sandbox`],body:"# Studio Learning Events\n\nStudio emits lightweight **learning/activity events** to support onboarding, ambient coaching, and learning journeys.\n\n## Persistence model\n\n- **Studio**: events are persisted to the database in `StudioLearningEvent` and are organization-scoped (optionally project-scoped).\n- **Sandbox**: events remain **local-only** (unlogged); they must never be sent to backend services.\n\n## GraphQL API\n\n- `recordLearningEvent(input: { name, projectId?, payload? })`\n- `myLearningEvents(projectId?, limit?)`\n- `myOnboardingTracks(productId?, includeProgress?)`\n- `myOnboardingProgress(trackKey)`\n- `dismissOnboardingTrack(trackKey)`\n\n## Common event names (convention)\n\n- `module.navigated` — user navigated to a Studio module (payload at minimum: `{ moduleId }`).\n- `studio.template.instantiated` — created a new Studio project (starter template). Payload commonly includes `{ templateId, projectSlug }`.\n- `spec.changed` — created or updated a Studio spec. Payload may include `{ action: 'create' | 'update', specId?, specType? }`.\n- `regeneration.completed` — finished a “regen/deploy” action (currently emitted on successful Studio deploy actions).\n- `studio.evolution.applied` — completed an Evolution session (payload commonly includes `{ evolutionSessionId }`).\n\nThese events are intentionally minimal and must avoid PII/secrets in payloads.\n"}]);
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.studio.learning-journeys`,title:`Studio learning journeys (onboarding + coach)`,summary:`DB-backed learning journeys tracked per organization: seeded tracks/steps, event-driven progress, XP/streaks, and a Studio coach surface.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/learning-journeys`,tags:[`studio`,`learning`,`onboarding`,`journey`,`graphql`,`database`],body:`# Studio learning journeys
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.learning-journeys`,title:`Studio learning journeys (onboarding + coach)`,summary:`DB-backed learning journeys tracked per organization: seeded tracks/steps, event-driven progress, XP/streaks, and a Studio coach surface.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/learning-journeys`,tags:[`studio`,`learning`,`onboarding`,`journey`,`graphql`,`database`],body:`# Studio learning journeys
2
2
 
3
3
  Studio supports **DB-backed learning journeys** (onboarding tracks + ambient coach tips) that are advanced by **recorded learning events**.
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.studio.platform-admin-panel`,title:`Studio Platform Admin Panel`,summary:`How PLATFORM_ADMIN organizations manage tenant orgs and integration connections without session switching.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/platform-admin-panel`,tags:[`studio`,`admin`,`multi-tenancy`,`integrations`,`better-auth`],body:`# Studio Platform Admin Panel
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.platform-admin-panel`,title:`Studio Platform Admin Panel`,summary:`How PLATFORM_ADMIN organizations manage tenant orgs and integration connections without session switching.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/platform-admin-panel`,tags:[`studio`,`admin`,`multi-tenancy`,`integrations`,`better-auth`],body:`# Studio Platform Admin Panel
2
2
 
3
3
  ContractSpec Studio exposes a dedicated **Platform Admin Panel** for users whose **active organization** has:
4
4
 
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.studio.project-access-teams`,title:`Studio Project Access via Teams`,summary:`Projects live under organizations; team sharing refines access with an admin/owner override.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/project-access-teams`,tags:[`studio`,`projects`,`teams`,`rbac`,`access-control`],body:`# Studio Project Access via Teams
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.project-access-teams`,title:`Studio Project Access via Teams`,summary:`Projects live under organizations; team sharing refines access with an admin/owner override.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/project-access-teams`,tags:[`studio`,`projects`,`teams`,`rbac`,`access-control`],body:`# Studio Project Access via Teams
2
2
 
3
3
  Studio access control is **organization-first** with optional **team-based sharing**.
4
4
 
@@ -0,0 +1 @@
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.project-routing`,title:`Studio Project Routing`,summary:`Studio uses slugged, project-first routes: /studio/{projectSlug}/* with canonical slug redirects and soft-deleted projects hidden.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/project-routing`,tags:[`studio`,`routing`,`projects`,`slug`,`redirects`],body:"# Studio Project Routing\n\nContractSpec Studio uses a **project-first URL scheme**:\n\n- `/studio/projects` — create, select, and delete projects.\n- `/studio/{projectSlug}/*` — project modules (canvas/specs/deploy/integrations/evolution/learning).\n- `/studio/learning` — learning hub that does not require selecting a project.\n\n## Studio layout shell\n\nStudio routes are wrapped in a dedicated **Studio app shell** (header + footer) that provides in-app navigation (Projects/Learning/Teams), organization switching, and account actions.\n\nProject module routes (`/studio/{projectSlug}/*`) render their own module shell (`WorkspaceProjectShellLayout`). When combined with the global Studio header, the project shell uses a **sticky header offset** to avoid overlapping sticky headers.\n\n## Slug behavior (rename-safe)\n\n- Each project has a `slug` stored in the database (`StudioProject.slug`).\n- When a project name changes, Studio **updates the slug** and stores the previous slug as an alias (`StudioProjectSlugAlias`).\n- Requests to an alias slug are **redirected to the canonical slug**.\n\nGraphQL entrypoint:\n\n- `studioProjectBySlug(slug: String!)` returns:\n - `project`\n - `canonicalSlug`\n - `wasRedirect`\n\n## Deletion behavior (soft delete)\n\nProjects are **soft-deleted**:\n\n- `deleteStudioProject(id: String!)` sets `StudioProject.deletedAt`.\n- All listings and access checks filter `deletedAt = null`.\n- Soft-deleted projects are treated as “not found” in Studio routes and GraphQL access checks.\n\n## Available modules for a selected project\n\nThe following project modules are expected under `/studio/{projectSlug}`:\n\n- `/canvas` — Visual builder canvas (stored via overlays and canvas versions).\n- `/specs` — Spec editor (stored as `StudioSpec`).\n- `/deploy` — Deployments history + triggers (stored as `StudioDeployment`).\n- `/integrations` — Integrations scoped to project (stored as `StudioIntegration`).\n- `/evolution` — Evolution sessions (stored as `EvolutionSession`).\n- `/learning` — Project learning activity.\n"}]);
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.studio.sandbox.unlogged`,title:`Sandbox (unlogged) vs Studio (authenticated)`,summary:`The sandbox is a lightweight, unlogged surface that mirrors Studio navigation without auth or analytics.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/sandbox-unlogged`,tags:[`studio`,`sandbox`,`privacy`,`analytics`],body:`## Sandbox guarantees
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.sandbox.unlogged`,title:`Sandbox (unlogged) vs Studio (authenticated)`,summary:`The sandbox is a lightweight, unlogged surface that mirrors Studio navigation without auth or analytics.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/sandbox-unlogged`,tags:[`studio`,`sandbox`,`privacy`,`analytics`],body:`## Sandbox guarantees
2
2
 
3
3
  - Route: \`/sandbox\`
4
4
  - **No auth requirement**
@@ -1,4 +1,4 @@
1
- import{registerDocBlocks as e}from"../../registry.js";e([{id:`docs.tech.studio.team-invitations`,title:`Studio Teams & Invitations`,summary:`Admin-only team management and email invitation flow to join an organization and optionally a team.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/team-invitations`,tags:[`studio`,`teams`,`invitations`,`access-control`,`onboarding`],body:`# Studio Teams & Invitations
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.team-invitations`,title:`Studio Teams & Invitations`,summary:`Admin-only team management and email invitation flow to join an organization and optionally a team.`,kind:`reference`,visibility:`public`,route:`/docs/tech/studio/team-invitations`,tags:[`studio`,`teams`,`invitations`,`access-control`,`onboarding`],body:`# Studio Teams & Invitations
2
2
 
3
3
  Studio uses **organization membership** as the base access model. Teams are optional and used to refine access to projects.
4
4
 
@@ -0,0 +1 @@
1
+ import{a as e}from"../../registry.js";e([{id:`docs.tech.studio.workspace_ops`,title:`Workspace ops (repo-linked): list / validate / deps / diff`,summary:`Read-only repo operations used by Studio to inspect and validate a linked ContractSpec workspace.`,kind:`reference`,visibility:`mixed`,route:`/docs/tech/studio/workspace-ops`,tags:[`studio`,`repo`,`workspace`,`validate`,`diff`],body:"## API surface (api-contractspec)\n\nBase: `/api/workspace-ops`\n\nThese endpoints are **read-only** in v1 and never push to git:\n\n- `GET /api/workspace-ops/:integrationId/config?organizationId=`\n- `GET /api/workspace-ops/:integrationId/specs?organizationId=`\n- `POST /api/workspace-ops/:integrationId/validate` (body: organizationId, files?, pattern?)\n- `POST /api/workspace-ops/:integrationId/deps` (body: organizationId, pattern?)\n- `POST /api/workspace-ops/:integrationId/diff` (body: organizationId, specPath, baseline?, breakingOnly?)\n\n## Repo resolution\n\n- The repo root is resolved from the Studio Integration (`IntegrationProvider.GITHUB`) config:\n - `config.repoCachePath` (preferred) or `config.localPath`\n- Resolution is constrained to `CONTRACTSPEC_REPO_CACHE_DIR` (default: `/tmp/contractspec-repos`)\n\n## Intended UX\n\n- Studio Assistant can run these checks and present results as suggestions.\n- Users can copy equivalent CLI commands for local runs:\n - `contractspec validate`\n - `contractspec deps`\n - `contractspec diff --baseline <ref>`\n"}]);