@lssm/example.learning-journey-duo-drills 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229

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 (78) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +76 -23
  2. package/.turbo/turbo-build.log +77 -10
  3. package/CHANGELOG.md +4 -4
  4. package/LICENSE +21 -0
  5. package/dist/{duo-drills.docblock-Df751ptb.mjs → docs/duo-drills.docblock.js} +3 -2
  6. package/dist/docs/duo-drills.docblock.js.map +1 -0
  7. package/dist/docs/index.js +1 -0
  8. package/dist/{index.d.mts → example.d.ts} +2 -4
  9. package/dist/example.d.ts.map +1 -0
  10. package/dist/{index.mjs → example.js} +2 -5
  11. package/dist/example.js.map +1 -0
  12. package/dist/index.d.ts +3 -0
  13. package/dist/index.js +5 -0
  14. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -0
  15. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  16. package/dist/libs/contracts/dist/docs/index.js +25 -0
  17. package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
  18. package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
  19. package/dist/libs/contracts/dist/docs/presentations.js +72 -0
  20. package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
  21. package/dist/libs/contracts/dist/docs/registry.js +45 -0
  22. package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
  23. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +81 -0
  24. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  25. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +58 -0
  26. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  27. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -0
  28. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  29. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +358 -0
  30. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  31. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +38 -0
  32. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  33. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +17 -0
  34. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  35. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +21 -0
  36. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
  37. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +49 -0
  38. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  39. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +80 -0
  40. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  41. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +85 -0
  42. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  43. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +46 -0
  44. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  45. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +68 -0
  46. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  47. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +41 -0
  48. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  49. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +70 -0
  50. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  51. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +48 -0
  52. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  53. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +63 -0
  54. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  55. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +156 -0
  56. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  57. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +21 -0
  58. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  59. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +102 -0
  60. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  61. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +21 -0
  62. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
  63. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
  64. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
  65. package/dist/{track-PgA6pTIr.d.mts → track.d.ts} +2 -1
  66. package/dist/track.d.ts.map +1 -0
  67. package/dist/{track-DuxJHlQ1.mjs → track.js} +2 -1
  68. package/dist/track.js.map +1 -0
  69. package/package.json +14 -13
  70. package/tsconfig.tsbuildinfo +1 -1
  71. package/tsdown.config.js +15 -11
  72. package/dist/docs/duo-drills.docblock.mjs +0 -3
  73. package/dist/docs/index.mjs +0 -3
  74. package/dist/duo-drills.docblock--Zt4euaY.d.mts +0 -1
  75. package/dist/track.d.mts +0 -2
  76. package/dist/track.mjs +0 -3
  77. /package/dist/docs/{duo-drills.docblock.d.mts → duo-drills.docblock.d.ts} +0 -0
  78. /package/dist/docs/{index.d.mts → index.d.ts} +0 -0
@@ -0,0 +1,97 @@
1
+ import { registerDocBlocks } from "./registry.js";
2
+
3
+ //#region ../../libs/contracts/dist/docs/tech-contracts.docs.js
4
+ const techContractsDocs = [{
5
+ id: "docs.tech.contracts.presentations-v2",
6
+ title: "Presentations V2 — Unified Descriptor & Transform Engine",
7
+ summary: "How PresentationDescriptorV2 and TransformEngine keep docs/renderers consistent.",
8
+ visibility: "public",
9
+ route: "/docs/tech/contracts/presentations-v2",
10
+ kind: "reference",
11
+ tags: [
12
+ "presentations",
13
+ "docs",
14
+ "mcp"
15
+ ],
16
+ body: `## Presentations V2 — Unified Descriptor & Transform Engine
17
+
18
+ ### Purpose
19
+
20
+ Unify presentations into one descriptor (\`PresentationDescriptorV2\`) that declares a single source (React component key or BlockNote doc) and a list of output targets (react, markdown, application/json, application/xml). A pluggable \`TransformEngine\` renders any target and applies PII redaction.
21
+
22
+ ### Types
23
+
24
+ \`\`\`ts
25
+ type PresentationTarget =
26
+ | 'react'
27
+ | 'markdown'
28
+ | 'application/json'
29
+ | 'application/xml';
30
+
31
+ type PresentationSource =
32
+ | {
33
+ type: 'component';
34
+ framework: 'react';
35
+ componentKey: string;
36
+ props?: AnySchemaModel;
37
+ }
38
+ | { type: 'blocknotejs'; docJson: unknown; blockConfig?: unknown };
39
+
40
+ interface PresentationDescriptorV2 {
41
+ meta: PresentationV2Meta; // includes partial OwnerShipMeta + description
42
+ policy?: { flags?: string[]; pii?: string[] };
43
+ source: PresentationSource;
44
+ targets: PresentationTarget[];
45
+ }
46
+
47
+ // Shared ownership schema (source of truth in @lssm/lib.contracts/src/ownership.ts)
48
+ interface OwnerShipMeta {
49
+ title: string;
50
+ description: string;
51
+ domain: string;
52
+ owners: Owner[];
53
+ tags: Tag[];
54
+ stability: Stability;
55
+ }
56
+
57
+ type Stability = 'experimental' | 'beta' | 'stable' | 'deprecated';
58
+ type Owner = string; // curated list available in code (e.g., '@sigil-team', 'team-strit')
59
+ type Tag = string; // curated list available in code (e.g., 'auth', 'spots')
60
+
61
+ // For V2 presentations, meta is a Partial<OwnerShipMeta> plus description, name, version
62
+ interface PresentationV2Meta extends Partial<OwnerShipMeta> {
63
+ name: string;
64
+ version: number;
65
+ description?: string;
66
+ }
67
+ \`\`\`
68
+
69
+ ### Engine
70
+
71
+ Use \`createDefaultTransformEngine()\` and register custom renderers as needed (e.g., high-fidelity BlockNote → Markdown). The default engine supports markdown/json/xml; a React renderer returns a serializable descriptor the host app renders via a \`componentMap\` or a BlockNote renderer. The canonical source type string is \`blocknotejs\` (not \`blocknote\`).
72
+
73
+ PII paths (JSON-like) are redacted from rendered outputs.
74
+
75
+ ### MCP Integration
76
+
77
+ \`createMcpServer\` accepts \`presentationsV2\`. Each descriptor is exposed under \`presentation://<name>/v<version>\` and negotiated variants (\`.md/.json/.xml\`) are rendered by the engine.
78
+
79
+ ### Migration
80
+
81
+ - V1 \`PresentationSpec\` remains supported; a back-compat helper converts V1 → V2 when convenient.
82
+ - Prefer V2 for new work.
83
+
84
+ ### Examples (Sigil)
85
+
86
+ - \`sigil.auth.webauth_tabs_v2\`: component source (\`componentKey: 'sigil.webauth.tabs'\`), targets \`react/json/xml\`.
87
+ - \`sigil.signup.guide_v2\`: BlockNote doc source, targets \`react/markdown/json/xml\`.
88
+
89
+ ### React Rendering
90
+
91
+ Host apps use a \`componentMap\` (e.g., \`'sigil.webauth.tabs' → WebAuthTabs\`) and a BlockNote renderer to turn the React render descriptor into elements.`
92
+ }];
93
+ registerDocBlocks(techContractsDocs);
94
+
95
+ //#endregion
96
+ export { techContractsDocs };
97
+ //# sourceMappingURL=tech-contracts.docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tech-contracts.docs.js","names":[],"sources":["../../../../../../../libs/contracts/dist/docs/tech-contracts.docs.js"],"sourcesContent":["import { registerDocBlocks } from \"./registry.js\";\n\n//#region src/docs/tech-contracts.docs.ts\nconst techContractsDocs = [{\n\tid: \"docs.tech.contracts.presentations-v2\",\n\ttitle: \"Presentations V2 — Unified Descriptor & Transform Engine\",\n\tsummary: \"How PresentationDescriptorV2 and TransformEngine keep docs/renderers consistent.\",\n\tvisibility: \"public\",\n\troute: \"/docs/tech/contracts/presentations-v2\",\n\tkind: \"reference\",\n\ttags: [\n\t\t\"presentations\",\n\t\t\"docs\",\n\t\t\"mcp\"\n\t],\n\tbody: `## Presentations V2 — Unified Descriptor & Transform Engine\n\n### Purpose\n\nUnify presentations into one descriptor (\\`PresentationDescriptorV2\\`) that declares a single source (React component key or BlockNote doc) and a list of output targets (react, markdown, application/json, application/xml). A pluggable \\`TransformEngine\\` renders any target and applies PII redaction.\n\n### Types\n\n\\`\\`\\`ts\ntype PresentationTarget =\n | 'react'\n | 'markdown'\n | 'application/json'\n | 'application/xml';\n\ntype PresentationSource =\n | {\n type: 'component';\n framework: 'react';\n componentKey: string;\n props?: AnySchemaModel;\n }\n | { type: 'blocknotejs'; docJson: unknown; blockConfig?: unknown };\n\ninterface PresentationDescriptorV2 {\n meta: PresentationV2Meta; // includes partial OwnerShipMeta + description\n policy?: { flags?: string[]; pii?: string[] };\n source: PresentationSource;\n targets: PresentationTarget[];\n}\n\n// Shared ownership schema (source of truth in @lssm/lib.contracts/src/ownership.ts)\ninterface OwnerShipMeta {\n title: string;\n description: string;\n domain: string;\n owners: Owner[];\n tags: Tag[];\n stability: Stability;\n}\n\ntype Stability = 'experimental' | 'beta' | 'stable' | 'deprecated';\ntype Owner = string; // curated list available in code (e.g., '@sigil-team', 'team-strit')\ntype Tag = string; // curated list available in code (e.g., 'auth', 'spots')\n\n// For V2 presentations, meta is a Partial<OwnerShipMeta> plus description, name, version\ninterface PresentationV2Meta extends Partial<OwnerShipMeta> {\n name: string;\n version: number;\n description?: string;\n}\n\\`\\`\\`\n\n### Engine\n\nUse \\`createDefaultTransformEngine()\\` and register custom renderers as needed (e.g., high-fidelity BlockNote → Markdown). The default engine supports markdown/json/xml; a React renderer returns a serializable descriptor the host app renders via a \\`componentMap\\` or a BlockNote renderer. The canonical source type string is \\`blocknotejs\\` (not \\`blocknote\\`).\n\nPII paths (JSON-like) are redacted from rendered outputs.\n\n### MCP Integration\n\n\\`createMcpServer\\` accepts \\`presentationsV2\\`. Each descriptor is exposed under \\`presentation://<name>/v<version>\\` and negotiated variants (\\`.md/.json/.xml\\`) are rendered by the engine.\n\n### Migration\n\n- V1 \\`PresentationSpec\\` remains supported; a back-compat helper converts V1 → V2 when convenient.\n- Prefer V2 for new work.\n\n### Examples (Sigil)\n\n- \\`sigil.auth.webauth_tabs_v2\\`: component source (\\`componentKey: 'sigil.webauth.tabs'\\`), targets \\`react/json/xml\\`.\n- \\`sigil.signup.guide_v2\\`: BlockNote doc source, targets \\`react/markdown/json/xml\\`.\n\n### React Rendering\n\nHost apps use a \\`componentMap\\` (e.g., \\`'sigil.webauth.tabs' → WebAuthTabs\\`) and a BlockNote renderer to turn the React render descriptor into elements.`\n}];\nregisterDocBlocks(techContractsDocs);\n\n//#endregion\nexport { techContractsDocs };\n//# sourceMappingURL=tech-contracts.docs.js.map"],"mappings":";;;AAGA,MAAM,oBAAoB,CAAC;CAC1B,IAAI;CACJ,OAAO;CACP,SAAS;CACT,YAAY;CACZ,OAAO;CACP,MAAM;CACN,MAAM;EACL;EACA;EACA;EACA;CACD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EN,CAAC;AACF,kBAAkB,kBAAkB"}
@@ -4,4 +4,5 @@ import { LearningJourneyTrackSpec } from "@lssm/module.learning-journey/track-sp
4
4
  declare const drillsLanguageBasicsTrack: LearningJourneyTrackSpec;
5
5
  declare const drillTracks: LearningJourneyTrackSpec[];
6
6
  //#endregion
7
- export { drillsLanguageBasicsTrack as n, drillTracks as t };
7
+ export { drillTracks, drillsLanguageBasicsTrack };
8
+ //# sourceMappingURL=track.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.d.ts","names":[],"sources":["../src/track.ts"],"sourcesContent":[],"mappings":";;;cAEa,2BAA2B;cAyD3B,aAAa"}
@@ -62,4 +62,5 @@ const drillsLanguageBasicsTrack = {
62
62
  const drillTracks = [drillsLanguageBasicsTrack];
63
63
 
64
64
  //#endregion
65
- export { drillsLanguageBasicsTrack as n, drillTracks as t };
65
+ export { drillTracks, drillsLanguageBasicsTrack };
66
+ //# sourceMappingURL=track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.js","names":["drillsLanguageBasicsTrack: LearningJourneyTrackSpec","drillTracks: LearningJourneyTrackSpec[]"],"sources":["../src/track.ts"],"sourcesContent":["import type { LearningJourneyTrackSpec } from '@lssm/module.learning-journey/track-spec';\n\nexport const drillsLanguageBasicsTrack: LearningJourneyTrackSpec = {\n id: 'drills_language_basics',\n name: 'Language Basics Drills',\n description:\n 'Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.',\n targetUserSegment: 'learner',\n targetRole: 'individual',\n totalXp: 50,\n completionRewards: { xpBonus: 25 },\n steps: [\n {\n id: 'complete_first_session',\n title: 'Complete first drill session',\n description: 'Finish a drill session to get started.',\n order: 1,\n completion: {\n kind: 'event',\n eventName: 'drill.session.completed',\n },\n xpReward: 20,\n metadata: { surface: 'drills' },\n },\n {\n id: 'reach_accuracy_threshold',\n title: 'Hit high accuracy in sessions',\n description: 'Achieve three high-accuracy sessions to build confidence.',\n order: 2,\n completion: {\n kind: 'count',\n eventName: 'drill.session.completed',\n atLeast: 3,\n payloadFilter: { accuracyBucket: 'high' },\n },\n xpReward: 30,\n metadata: { metric: 'accuracy', target: '>=85%' },\n },\n {\n id: 'unlock_new_skill',\n title: 'Master core cards in first skill',\n description:\n 'Reach mastery on at least five cards in the first skill to unlock the next one.',\n order: 3,\n completion: {\n kind: 'srs_mastery',\n eventName: 'drill.card.mastered',\n minimumMastery: 0.8,\n requiredCount: 5,\n skillIdField: 'skillId',\n masteryField: 'mastery',\n payloadFilter: { skillId: 'language_basics' },\n },\n xpReward: 40,\n metadata: { surface: 'srs', skill: 'language_basics' },\n },\n ],\n};\n\nexport const drillTracks: LearningJourneyTrackSpec[] = [\n drillsLanguageBasicsTrack,\n];\n"],"mappings":";AAEA,MAAaA,4BAAsD;CACjE,IAAI;CACJ,MAAM;CACN,aACE;CACF,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,mBAAmB,EAAE,SAAS,IAAI;CAClC,OAAO;EACL;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW;IACZ;GACD,UAAU;GACV,UAAU,EAAE,SAAS,UAAU;GAChC;EACD;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW;IACX,SAAS;IACT,eAAe,EAAE,gBAAgB,QAAQ;IAC1C;GACD,UAAU;GACV,UAAU;IAAE,QAAQ;IAAY,QAAQ;IAAS;GAClD;EACD;GACE,IAAI;GACJ,OAAO;GACP,aACE;GACF,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe,EAAE,SAAS,mBAAmB;IAC9C;GACD,UAAU;GACV,UAAU;IAAE,SAAS;IAAO,OAAO;IAAmB;GACvD;EACF;CACF;AAED,MAAaC,cAA0C,CACrD,0BACD"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@lssm/example.learning-journey-duo-drills",
3
- "version": "0.0.0-canary-20251217080011",
3
+ "version": "0.0.0-canary-20251219202229",
4
4
  "description": "Drill-based learning journey example with SRS, XP, and streak hooks.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
- ".": "./src/index.ts",
10
- "./example": "./src/example.ts",
11
- "./track": "./src/track.ts",
12
- "./docs": "./src/docs/index.ts",
13
- "./docs/duo-drills.docblock": "./src/docs/duo-drills.docblock.ts",
9
+ ".": "./dist/index.js",
10
+ "./docs": "./dist/docs/index.js",
11
+ "./docs/duo-drills.docblock": "./dist/docs/duo-drills.docblock.js",
12
+ "./example": "./dist/example.js",
13
+ "./track": "./dist/track.js",
14
14
  "./*": "./*"
15
15
  },
16
16
  "scripts": {
@@ -27,14 +27,14 @@
27
27
  "test": "bun test"
28
28
  },
29
29
  "dependencies": {
30
- "@lssm/module.learning-journey": "0.0.0-canary-20251217080011",
31
- "@lssm/lib.schema": "0.0.0-canary-20251217080011",
32
- "@lssm/lib.contracts": "0.0.0-canary-20251217080011"
30
+ "@lssm/module.learning-journey": "0.0.0-canary-20251219202229",
31
+ "@lssm/lib.schema": "0.0.0-canary-20251219202229",
32
+ "@lssm/lib.contracts": "0.0.0-canary-20251219202229"
33
33
  },
34
34
  "devDependencies": {
35
- "@lssm/tool.tsdown": "0.0.0-canary-20251217080011",
36
- "@lssm/tool.typescript": "0.0.0-canary-20251217080011",
37
- "tsdown": "^0.17.4",
35
+ "@lssm/tool.tsdown": "0.0.0-canary-20251219202229",
36
+ "@lssm/tool.typescript": "0.0.0-canary-20251219202229",
37
+ "tsdown": "^0.18.1",
38
38
  "typescript": "^5.9.3"
39
39
  },
40
40
  "module": "./dist/index.js",
@@ -47,5 +47,6 @@
47
47
  "./docs/duo-drills.docblock": "./dist/docs/duo-drills.docblock.js",
48
48
  "./*": "./*"
49
49
  }
50
- }
50
+ },
51
+ "license": "MIT"
51
52
  }