@multiplayer-app/sandbox 0.0.31 → 0.0.32

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 (186) hide show
  1. package/dist/agents/html-generator.agent.d.ts +3 -1
  2. package/dist/agents/html-generator.agent.d.ts.map +1 -1
  3. package/dist/agents/html-generator.agent.js +90 -4
  4. package/dist/agents/html-generator.agent.js.map +1 -1
  5. package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
  6. package/dist/agents/markdown-generator.agent.js +5 -10
  7. package/dist/agents/markdown-generator.agent.js.map +1 -1
  8. package/dist/agents/shared/app-vm.tools.d.ts +4 -0
  9. package/dist/agents/shared/app-vm.tools.d.ts.map +1 -0
  10. package/dist/agents/shared/app-vm.tools.js +105 -0
  11. package/dist/agents/shared/app-vm.tools.js.map +1 -0
  12. package/dist/agents/shared/build-plan.tools.d.ts +5 -0
  13. package/dist/agents/shared/build-plan.tools.d.ts.map +1 -0
  14. package/dist/agents/shared/build-plan.tools.js +176 -0
  15. package/dist/agents/shared/build-plan.tools.js.map +1 -0
  16. package/dist/agents/shared/session-quality-report.tool.d.ts +7 -0
  17. package/dist/agents/shared/session-quality-report.tool.d.ts.map +1 -0
  18. package/dist/agents/shared/session-quality-report.tool.js +97 -0
  19. package/dist/agents/shared/session-quality-report.tool.js.map +1 -0
  20. package/dist/agents/shared/session-vm-bridge.d.ts +49 -0
  21. package/dist/agents/shared/session-vm-bridge.d.ts.map +1 -0
  22. package/dist/agents/shared/session-vm-bridge.js +9 -0
  23. package/dist/agents/shared/session-vm-bridge.js.map +1 -0
  24. package/dist/agents/skills/a11y.skill.d.ts +3 -0
  25. package/dist/agents/skills/a11y.skill.d.ts.map +1 -0
  26. package/dist/agents/skills/a11y.skill.js +23 -0
  27. package/dist/agents/skills/a11y.skill.js.map +1 -0
  28. package/dist/agents/skills/account-skill-loader.d.ts +13 -0
  29. package/dist/agents/skills/account-skill-loader.d.ts.map +1 -0
  30. package/dist/agents/skills/account-skill-loader.js +42 -0
  31. package/dist/agents/skills/account-skill-loader.js.map +1 -0
  32. package/dist/agents/skills/app-scaffold.skill.d.ts +3 -0
  33. package/dist/agents/skills/app-scaffold.skill.d.ts.map +1 -0
  34. package/dist/agents/skills/app-scaffold.skill.js +30 -0
  35. package/dist/agents/skills/app-scaffold.skill.js.map +1 -0
  36. package/dist/agents/skills/copywriting.skill.d.ts +3 -0
  37. package/dist/agents/skills/copywriting.skill.d.ts.map +1 -0
  38. package/dist/agents/skills/copywriting.skill.js +35 -0
  39. package/dist/agents/skills/copywriting.skill.js.map +1 -0
  40. package/dist/agents/skills/custom-skill-repository.d.ts +40 -0
  41. package/dist/agents/skills/custom-skill-repository.d.ts.map +1 -0
  42. package/dist/agents/skills/custom-skill-repository.js +3 -0
  43. package/dist/agents/skills/custom-skill-repository.js.map +1 -0
  44. package/dist/agents/skills/data-viz.skill.d.ts +3 -0
  45. package/dist/agents/skills/data-viz.skill.d.ts.map +1 -0
  46. package/dist/agents/skills/data-viz.skill.js +42 -0
  47. package/dist/agents/skills/data-viz.skill.js.map +1 -0
  48. package/dist/agents/skills/designer.skill.d.ts +3 -0
  49. package/dist/agents/skills/designer.skill.d.ts.map +1 -0
  50. package/dist/agents/skills/designer.skill.js +139 -0
  51. package/dist/agents/skills/designer.skill.js.map +1 -0
  52. package/dist/agents/skills/forms.skill.d.ts +3 -0
  53. package/dist/agents/skills/forms.skill.d.ts.map +1 -0
  54. package/dist/agents/skills/forms.skill.js +37 -0
  55. package/dist/agents/skills/forms.skill.js.map +1 -0
  56. package/dist/agents/skills/index.d.ts +6 -0
  57. package/dist/agents/skills/index.d.ts.map +1 -0
  58. package/dist/agents/skills/index.js +18 -0
  59. package/dist/agents/skills/index.js.map +1 -0
  60. package/dist/agents/skills/interactions.skill.d.ts +3 -0
  61. package/dist/agents/skills/interactions.skill.d.ts.map +1 -0
  62. package/dist/agents/skills/interactions.skill.js +31 -0
  63. package/dist/agents/skills/interactions.skill.js.map +1 -0
  64. package/dist/agents/skills/registry.d.ts +23 -0
  65. package/dist/agents/skills/registry.d.ts.map +1 -0
  66. package/dist/agents/skills/registry.js +75 -0
  67. package/dist/agents/skills/registry.js.map +1 -0
  68. package/dist/agents/skills/skill-injection.d.ts +52 -0
  69. package/dist/agents/skills/skill-injection.d.ts.map +1 -0
  70. package/dist/agents/skills/skill-injection.js +210 -0
  71. package/dist/agents/skills/skill-injection.js.map +1 -0
  72. package/dist/agents/skills/types.d.ts +12 -0
  73. package/dist/agents/skills/types.d.ts.map +1 -0
  74. package/dist/agents/skills/types.js +3 -0
  75. package/dist/agents/skills/types.js.map +1 -0
  76. package/dist/builder-api-config.d.ts +7 -0
  77. package/dist/builder-api-config.d.ts.map +1 -1
  78. package/dist/builder-api-config.js.map +1 -1
  79. package/dist/context.d.ts +7 -0
  80. package/dist/context.d.ts.map +1 -1
  81. package/dist/context.js +19 -0
  82. package/dist/context.js.map +1 -1
  83. package/dist/create-builder-api.d.ts +2 -3
  84. package/dist/create-builder-api.d.ts.map +1 -1
  85. package/dist/create-builder-api.js +18 -0
  86. package/dist/create-builder-api.js.map +1 -1
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/library/list-library-items.d.ts +2 -2
  92. package/dist/lib/library/list-library-items.d.ts.map +1 -1
  93. package/dist/lib/library/list-library-items.js +49 -7
  94. package/dist/lib/library/list-library-items.js.map +1 -1
  95. package/dist/lib/object-storage/index.d.ts +3 -0
  96. package/dist/lib/object-storage/index.d.ts.map +1 -0
  97. package/dist/lib/object-storage/index.js +19 -0
  98. package/dist/lib/object-storage/index.js.map +1 -0
  99. package/dist/lib/object-storage/keys.d.ts +10 -0
  100. package/dist/lib/object-storage/keys.d.ts.map +1 -0
  101. package/dist/lib/object-storage/keys.js +51 -0
  102. package/dist/lib/object-storage/keys.js.map +1 -0
  103. package/dist/lib/object-storage/s3-object-store.d.ts +14 -0
  104. package/dist/lib/object-storage/s3-object-store.d.ts.map +1 -0
  105. package/dist/lib/object-storage/s3-object-store.js +64 -0
  106. package/dist/lib/object-storage/s3-object-store.js.map +1 -0
  107. package/dist/lib/session-pages/artifact-quality-audit.d.ts +16 -0
  108. package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -0
  109. package/dist/lib/session-pages/artifact-quality-audit.js +293 -0
  110. package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -0
  111. package/dist/lib/session-pages/artifact-storage.d.ts +3 -0
  112. package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -1
  113. package/dist/lib/session-pages/artifact-storage.js +94 -85
  114. package/dist/lib/session-pages/artifact-storage.js.map +1 -1
  115. package/dist/lib/session-pages/audit-session-html.d.ts +23 -0
  116. package/dist/lib/session-pages/audit-session-html.d.ts.map +1 -0
  117. package/dist/lib/session-pages/audit-session-html.js +82 -0
  118. package/dist/lib/session-pages/audit-session-html.js.map +1 -0
  119. package/dist/lib/session-pages/contrast-check.d.ts +25 -0
  120. package/dist/lib/session-pages/contrast-check.d.ts.map +1 -0
  121. package/dist/lib/session-pages/contrast-check.js +290 -0
  122. package/dist/lib/session-pages/contrast-check.js.map +1 -0
  123. package/dist/lib/session-pages/deferred-quality-rules.d.ts +7 -0
  124. package/dist/lib/session-pages/deferred-quality-rules.d.ts.map +1 -0
  125. package/dist/lib/session-pages/deferred-quality-rules.js +25 -0
  126. package/dist/lib/session-pages/deferred-quality-rules.js.map +1 -0
  127. package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -1
  128. package/dist/lib/session-pages/delete-session-artifact.js +12 -41
  129. package/dist/lib/session-pages/delete-session-artifact.js.map +1 -1
  130. package/dist/lib/session-pages/delete-session-artifacts.d.ts +0 -6
  131. package/dist/lib/session-pages/delete-session-artifacts.d.ts.map +1 -1
  132. package/dist/lib/session-pages/delete-session-artifacts.js +51 -15
  133. package/dist/lib/session-pages/delete-session-artifacts.js.map +1 -1
  134. package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
  135. package/dist/lib/session-pages/list-session-artifacts.js +48 -48
  136. package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
  137. package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -1
  138. package/dist/lib/session-pages/read-session-artifacts.js +4 -26
  139. package/dist/lib/session-pages/read-session-artifacts.js.map +1 -1
  140. package/dist/lib/session-pages/resolve-session-account-id.d.ts +3 -0
  141. package/dist/lib/session-pages/resolve-session-account-id.d.ts.map +1 -0
  142. package/dist/lib/session-pages/resolve-session-account-id.js +31 -0
  143. package/dist/lib/session-pages/resolve-session-account-id.js.map +1 -0
  144. package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -2
  145. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  146. package/dist/lib/session-pages/write-session-artifacts.js +8 -0
  147. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  148. package/dist/lib/session-plans/build-plan.d.ts +64 -0
  149. package/dist/lib/session-plans/build-plan.d.ts.map +1 -0
  150. package/dist/lib/session-plans/build-plan.js +134 -0
  151. package/dist/lib/session-plans/build-plan.js.map +1 -0
  152. package/dist/lib/yjs-pending/flush-lock.d.ts +6 -0
  153. package/dist/lib/yjs-pending/flush-lock.d.ts.map +1 -0
  154. package/dist/lib/yjs-pending/flush-lock.js +43 -0
  155. package/dist/lib/yjs-pending/flush-lock.js.map +1 -0
  156. package/dist/lib/yjs-pending/flush-worker.d.ts +5 -0
  157. package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -0
  158. package/dist/lib/yjs-pending/flush-worker.js +75 -0
  159. package/dist/lib/yjs-pending/flush-worker.js.map +1 -0
  160. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts +22 -0
  161. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts.map +1 -0
  162. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js +3 -0
  163. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js.map +1 -0
  164. package/dist/lib/yjs-pending/yjs-persistence.d.ts +23 -0
  165. package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -0
  166. package/dist/lib/yjs-pending/yjs-persistence.js +222 -0
  167. package/dist/lib/yjs-pending/yjs-persistence.js.map +1 -0
  168. package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
  169. package/dist/realtime/reset-session-artifact-y-docs.js +1 -6
  170. package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
  171. package/dist/realtime/session-artifact-y-socket-io.d.ts +0 -5
  172. package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
  173. package/dist/realtime/session-artifact-y-socket-io.js +5 -69
  174. package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
  175. package/dist/realtime/session-artifact-yjs-store.d.ts +3 -35
  176. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  177. package/dist/realtime/session-artifact-yjs-store.js +75 -235
  178. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  179. package/dist/routes/sessions.d.ts.map +1 -1
  180. package/dist/routes/sessions.js +26 -6
  181. package/dist/routes/sessions.js.map +1 -1
  182. package/dist/routes/skills.d.ts +2 -0
  183. package/dist/routes/skills.d.ts.map +1 -0
  184. package/dist/routes/skills.js +140 -0
  185. package/dist/routes/skills.js.map +1 -0
  186. package/package.json +2 -2
@@ -1,43 +1,23 @@
1
1
  import * as Y from 'yjs';
2
2
  type BroadcastUpdate = (documentIdentifier: string, update: Uint8Array) => void;
3
3
  export declare class SessionArtifactYjsStore {
4
- private readonly docCache;
5
- private readonly persistTimers;
6
- private readonly snapshotTimers;
7
4
  private broadcastUpdate;
8
5
  registerBroadcast(fn: BroadcastUpdate): void;
9
- /** Merge an externally produced y-update into this replica's cached doc, if loaded. */
10
- applyExternalUpdate(documentIdentifier: string, update: Uint8Array): void;
6
+ applyExternalUpdate(_documentIdentifier: string, _update: Uint8Array): void;
11
7
  getOrLoadDoc(documentIdentifier: string): Promise<Y.Doc | null>;
12
- /** Prefer persisted Yjs update bytes; fall back to legacy UTF-8 snapshot only when absent. */
13
- private hydrateDocFromLatestState;
14
8
  getLatestText(sessionId: string, artifactPath: string): Promise<string>;
15
- /**
16
- * Creates or replaces an artifact from full text: writes Yjs state, latest content snapshot,
17
- * and broadcasts to connected editors.
18
- */
19
9
  initializeFromContent(sessionId: string, artifactPath: string, content: string): Promise<{
20
10
  path: string;
21
11
  bytes: number;
22
12
  documentIdentifier: string;
23
13
  }>;
24
- /**
25
- * Applies hashline SEARCH/REPLACE patch text to the Yjs document, broadcasts the update to
26
- * connected clients, and persists state + latest snapshot immediately.
27
- */
28
14
  applyPatchText(sessionId: string, artifactPath: string, patchText: string): Promise<{
29
15
  path: string;
30
16
  }>;
31
- /** Notebook content lives in the 'xml' fragment (TipTap/y-prosemirror document). */
32
17
  getNotebookFragment(accountId: string, notebookId: string): Promise<Y.XmlFragment>;
33
- /**
34
- * Mutates the notebook document in a single transaction, broadcasts the update to
35
- * connected editors, and persists state immediately.
36
- */
37
18
  mutateNotebook(accountId: string, notebookId: string, mutator: (fragment: Y.XmlFragment, doc: Y.Doc) => void): Promise<void>;
38
- evictDocument(sessionId: string, artifactPath: string): void;
19
+ evictDocument(_sessionId: string, _artifactPath: string): void;
39
20
  resetFromFileContent(sessionId: string, artifactPath: string): Promise<void>;
40
- schedulePersist(documentIdentifier: string, doc: Y.Doc): void;
41
21
  getPersistedStateRecord(documentIdentifier: string): Promise<{
42
22
  id: {
43
23
  toString(): string;
@@ -45,19 +25,7 @@ export declare class SessionArtifactYjsStore {
45
25
  state?: Uint8Array;
46
26
  } | undefined>;
47
27
  persistBinaryState(documentIdentifier: string, state: Uint8Array): Promise<void>;
48
- private persistToDisk;
49
- /**
50
- * Persist the doc, merged with whatever is already stored: with multiple
51
- * replicas each holding its own in-memory copy, a plain full-state write
52
- * would let the last writer clobber ops it never saw. `Y.mergeUpdates` makes
53
- * the write commutative (a read-merge-write race can still momentarily drop
54
- * the loser's newest ops from storage, but the next persist re-adds them).
55
- */
56
- private writePersistedState;
57
- private scheduleNamedSnapshot;
58
- private clearPersistTimer;
59
- private clearTimers;
60
- private parseDocumentTarget;
28
+ private sessionArtifactExists;
61
29
  private getNotebookRepository;
62
30
  }
63
31
  export declare function getSessionArtifactYjsStore(): SessionArtifactYjsStore;
@@ -1 +1 @@
1
- {"version":3,"file":"session-artifact-yjs-store.d.ts","sourceRoot":"","sources":["../../src/realtime/session-artifact-yjs-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAsBxB,KAAK,eAAe,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;AAS/E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;IACjF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmD;IAClF,OAAO,CAAC,eAAe,CAA+B;IAEtD,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAI5C,uFAAuF;IACvF,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAenE,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAwBrE,8FAA8F;YAChF,yBAAyB;IAiCjC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7E;;;OAGG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAqCvE;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IAyB7B,oFAAoF;IAC9E,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IASxF;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,GACrD,OAAO,CAAC,IAAI,CAAC;IAmBhB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAYtD,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlF,eAAe,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI;IAevD,uBAAuB,CAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC;QAAE,EAAE,EAAE;YAAE,QAAQ,IAAI,MAAM,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IAqBpE,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAsBxE,aAAa;IAQ3B;;;;;;OAMG;YACW,mBAAmB;IAqCjC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,qBAAqB;CAO9B;AAID,wBAAgB,0BAA0B,IAAI,uBAAuB,CAKpE"}
1
+ {"version":3,"file":"session-artifact-yjs-store.d.ts","sourceRoot":"","sources":["../../src/realtime/session-artifact-yjs-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAyBxB,KAAK,eAAe,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;AAE/E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,eAAe,CAA+B;IAEtD,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAI5C,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAErE,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAc/D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcvE,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAyCjE,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBtB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IAQlF,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,GACrD,OAAO,CAAC,IAAI,CAAC;IAoBhB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAExD,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5E,uBAAuB,CAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC;QAAE,EAAE,EAAE;YAAE,QAAQ,IAAI,MAAM,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IAQpE,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAYxE,qBAAqB;IAcnC,OAAO,CAAC,qBAAqB;CAO9B;AAID,wBAAgB,0BAA0B,IAAI,uBAAuB,CAKpE"}
@@ -37,43 +37,24 @@ exports.SessionArtifactYjsStore = void 0;
37
37
  exports.getSessionArtifactYjsStore = getSessionArtifactYjsStore;
38
38
  const Y = __importStar(require("yjs"));
39
39
  const parse_hashline_diff_1 = require("../lib/session-artifacts/parse-hashline-diff");
40
- const artifact_storage_1 = require("../lib/session-pages/artifact-storage");
41
- const logger_1 = require("../logger");
42
40
  const context_1 = require("../context");
43
41
  const paths_1 = require("../lib/session-pages/paths");
42
+ const resolve_session_account_id_1 = require("../lib/session-pages/resolve-session-account-id");
43
+ const keys_1 = require("../lib/object-storage/keys");
44
+ const s3 = __importStar(require("../lib/object-storage/s3-object-store"));
45
+ const yjs_persistence_1 = require("../lib/yjs-pending/yjs-persistence");
44
46
  const session_artifact_document_id_1 = require("./session-artifact-document-id");
45
47
  const notebook_document_id_1 = require("./notebook-document-id");
46
- const PERSIST_DEBOUNCE_MS = 400;
47
- const SNAPSHOT_DEBOUNCE_MS = 10000;
48
- const YTEXT_FIELD = 'content';
49
- function docTextContent(doc) {
50
- return doc.getText(YTEXT_FIELD).toJSON();
51
- }
52
48
  class SessionArtifactYjsStore {
53
49
  constructor() {
54
- this.docCache = new Map();
55
- this.persistTimers = new Map();
56
- this.snapshotTimers = new Map();
57
50
  this.broadcastUpdate = null;
58
51
  }
59
52
  registerBroadcast(fn) {
60
53
  this.broadcastUpdate = fn;
61
54
  }
62
- /** Merge an externally produced y-update into this replica's cached doc, if loaded. */
63
- applyExternalUpdate(documentIdentifier, update) {
64
- const doc = this.docCache.get(documentIdentifier);
65
- if (!doc || update.byteLength === 0) {
66
- return;
67
- }
68
- try {
69
- Y.applyUpdate(doc, update);
70
- }
71
- catch (error) {
72
- (0, logger_1.getBuilderApiLogger)().warn({ err: error, documentIdentifier }, 'Ignoring invalid external Yjs update');
73
- }
74
- }
55
+ applyExternalUpdate(_documentIdentifier, _update) { }
75
56
  async getOrLoadDoc(documentIdentifier) {
76
- const parsed = this.parseDocumentTarget(documentIdentifier);
57
+ const parsed = (0, yjs_persistence_1.parseDocumentTarget)(documentIdentifier);
77
58
  if (!parsed) {
78
59
  return null;
79
60
  }
@@ -83,40 +64,7 @@ class SessionArtifactYjsStore {
83
64
  return null;
84
65
  }
85
66
  }
86
- const cached = this.docCache.get(documentIdentifier);
87
- if (cached) {
88
- return cached;
89
- }
90
- const doc = new Y.Doc();
91
- await this.hydrateDocFromLatestState(doc, parsed);
92
- this.docCache.set(documentIdentifier, doc);
93
- return doc;
94
- }
95
- /** Prefer persisted Yjs update bytes; fall back to legacy UTF-8 snapshot only when absent. */
96
- async hydrateDocFromLatestState(doc, target) {
97
- var _a;
98
- let state = null;
99
- let notebookState = null;
100
- if (target.kind === 'session-artifact') {
101
- state = await (0, artifact_storage_1.readArtifactLatestState)(target.sessionId, target.artifactPath);
102
- }
103
- else {
104
- notebookState = await this.getNotebookRepository().readRealtimeState(target.accountId, target.notebookId);
105
- state = (_a = notebookState === null || notebookState === void 0 ? void 0 : notebookState.yjsState) !== null && _a !== void 0 ? _a : null;
106
- }
107
- if (state === null || state === void 0 ? void 0 : state.byteLength) {
108
- Y.applyUpdate(doc, state);
109
- }
110
- if (target.kind !== 'session-artifact') {
111
- return;
112
- }
113
- const ytext = doc.getText(YTEXT_FIELD);
114
- if (ytext.length === 0) {
115
- const content = await (0, artifact_storage_1.readArtifactContentSnapshot)(target.sessionId, target.artifactPath);
116
- if (content) {
117
- ytext.insert(0, content);
118
- }
119
- }
67
+ return (0, yjs_persistence_1.hydrateEphemeralDoc)(documentIdentifier);
120
68
  }
121
69
  async getLatestText(sessionId, artifactPath) {
122
70
  const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
@@ -125,33 +73,38 @@ class SessionArtifactYjsStore {
125
73
  if (!doc) {
126
74
  throw new Error(`Invalid session artifact document: ${normalizedPath}`);
127
75
  }
128
- return docTextContent(doc);
76
+ try {
77
+ return (0, yjs_persistence_1.docTextContent)(doc);
78
+ }
79
+ finally {
80
+ doc.destroy();
81
+ }
129
82
  }
130
- /**
131
- * Creates or replaces an artifact from full text: writes Yjs state, latest content snapshot,
132
- * and broadcasts to connected editors.
133
- */
134
83
  async initializeFromContent(sessionId, artifactPath, content) {
135
84
  var _a;
136
85
  const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
137
86
  const documentIdentifier = (0, session_artifact_document_id_1.buildSessionArtifactDocumentId)(sessionId, normalizedPath);
138
- this.clearTimers(documentIdentifier);
139
- const existing = this.docCache.get(documentIdentifier);
140
- if (existing) {
141
- existing.destroy();
142
- this.docCache.delete(documentIdentifier);
87
+ const accountId = await (0, resolve_session_account_id_1.resolveSessionAccountId)(sessionId);
88
+ if (await this.sessionArtifactExists(accountId, sessionId, normalizedPath, documentIdentifier)) {
89
+ throw new Error(`File already exists: ${normalizedPath}. Use the update tool to modify existing artifacts.`);
143
90
  }
144
91
  const doc = new Y.Doc();
145
92
  const beforeVector = Y.encodeStateVector(doc);
146
93
  doc.transact(() => {
147
- const ytext = doc.getText(YTEXT_FIELD);
148
94
  if (content.length > 0) {
149
- ytext.insert(0, content);
95
+ doc.getText('content').insert(0, content);
150
96
  }
151
97
  });
152
- this.docCache.set(documentIdentifier, doc);
153
- await this.persistToDisk(documentIdentifier, doc);
98
+ const state = Y.encodeStateAsUpdate(doc);
154
99
  const update = Y.encodeStateAsUpdate(doc, beforeVector);
100
+ const parsed = {
101
+ kind: 'session-artifact',
102
+ sessionId,
103
+ artifactPath: normalizedPath,
104
+ };
105
+ await (0, yjs_persistence_1.writeCommittedYjsState)(parsed, state);
106
+ await (0, yjs_persistence_1.writeCommittedContentSnapshot)(parsed, content);
107
+ doc.destroy();
155
108
  if (update.byteLength > 0) {
156
109
  (_a = this.broadcastUpdate) === null || _a === void 0 ? void 0 : _a.call(this, documentIdentifier, update);
157
110
  }
@@ -161,44 +114,36 @@ class SessionArtifactYjsStore {
161
114
  documentIdentifier,
162
115
  };
163
116
  }
164
- /**
165
- * Applies hashline SEARCH/REPLACE patch text to the Yjs document, broadcasts the update to
166
- * connected clients, and persists state + latest snapshot immediately.
167
- */
168
117
  async applyPatchText(sessionId, artifactPath, patchText) {
169
118
  var _a;
170
119
  const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
171
120
  const documentIdentifier = (0, session_artifact_document_id_1.buildSessionArtifactDocumentId)(sessionId, normalizedPath);
121
+ const accountId = await (0, resolve_session_account_id_1.resolveSessionAccountId)(sessionId);
172
122
  const doc = await this.getOrLoadDoc(documentIdentifier);
173
123
  if (!doc) {
174
124
  throw new Error(`Invalid session artifact document: ${normalizedPath}`);
175
125
  }
176
- const ytext = doc.getText(YTEXT_FIELD);
177
- const beforeVector = Y.encodeStateVector(doc);
178
- (0, parse_hashline_diff_1.applyPatch)(ytext, patchText);
179
- const update = Y.encodeStateAsUpdate(doc, beforeVector);
180
- if (update.byteLength > 0) {
181
- (_a = this.broadcastUpdate) === null || _a === void 0 ? void 0 : _a.call(this, documentIdentifier, update);
126
+ try {
127
+ const beforeVector = Y.encodeStateVector(doc);
128
+ (0, parse_hashline_diff_1.applyPatch)(doc.getText('content'), patchText);
129
+ const update = Y.encodeStateAsUpdate(doc, beforeVector);
130
+ if (update.byteLength > 0) {
131
+ await (0, yjs_persistence_1.appendIncrementalUpdate)(documentIdentifier, accountId, update);
132
+ (_a = this.broadcastUpdate) === null || _a === void 0 ? void 0 : _a.call(this, documentIdentifier, update);
133
+ }
182
134
  }
183
- this.clearPersistTimer(documentIdentifier);
184
- await this.persistToDisk(documentIdentifier, doc);
185
- return {
186
- path: normalizedPath,
187
- };
135
+ finally {
136
+ doc.destroy();
137
+ }
138
+ return { path: normalizedPath };
188
139
  }
189
- /** Notebook content lives in the 'xml' fragment (TipTap/y-prosemirror document). */
190
140
  async getNotebookFragment(accountId, notebookId) {
191
- const documentIdentifier = (0, notebook_document_id_1.buildNotebookDocumentId)(accountId, notebookId);
192
- const doc = await this.getOrLoadDoc(documentIdentifier);
141
+ const doc = await this.getOrLoadDoc((0, notebook_document_id_1.buildNotebookDocumentId)(accountId, notebookId));
193
142
  if (!doc) {
194
143
  throw new Error(`Notebook not found: ${notebookId}`);
195
144
  }
196
145
  return doc.getXmlFragment('xml');
197
146
  }
198
- /**
199
- * Mutates the notebook document in a single transaction, broadcasts the update to
200
- * connected editors, and persists state immediately.
201
- */
202
147
  async mutateNotebook(accountId, notebookId, mutator) {
203
148
  var _a;
204
149
  const documentIdentifier = (0, notebook_document_id_1.buildNotebookDocumentId)(accountId, notebookId);
@@ -206,160 +151,55 @@ class SessionArtifactYjsStore {
206
151
  if (!doc) {
207
152
  throw new Error(`Notebook not found: ${notebookId}`);
208
153
  }
209
- const beforeVector = Y.encodeStateVector(doc);
210
- doc.transact(() => mutator(doc.getXmlFragment('xml'), doc));
211
- const update = Y.encodeStateAsUpdate(doc, beforeVector);
212
- if (update.byteLength > 0) {
213
- (_a = this.broadcastUpdate) === null || _a === void 0 ? void 0 : _a.call(this, documentIdentifier, update);
154
+ try {
155
+ const beforeVector = Y.encodeStateVector(doc);
156
+ doc.transact(() => mutator(doc.getXmlFragment('xml'), doc));
157
+ const update = Y.encodeStateAsUpdate(doc, beforeVector);
158
+ if (update.byteLength > 0) {
159
+ await (0, yjs_persistence_1.appendIncrementalUpdate)(documentIdentifier, accountId, update);
160
+ (_a = this.broadcastUpdate) === null || _a === void 0 ? void 0 : _a.call(this, documentIdentifier, update);
161
+ }
214
162
  }
215
- this.clearPersistTimer(documentIdentifier);
216
- await this.persistToDisk(documentIdentifier, doc);
217
- }
218
- evictDocument(sessionId, artifactPath) {
219
- const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
220
- const documentIdentifier = (0, session_artifact_document_id_1.buildSessionArtifactDocumentId)(sessionId, normalizedPath);
221
- this.clearTimers(documentIdentifier);
222
- const doc = this.docCache.get(documentIdentifier);
223
- if (doc) {
163
+ finally {
224
164
  doc.destroy();
225
- this.docCache.delete(documentIdentifier);
226
165
  }
227
166
  }
167
+ evictDocument(_sessionId, _artifactPath) { }
228
168
  async resetFromFileContent(sessionId, artifactPath) {
229
- const content = await (0, artifact_storage_1.readArtifactContentSnapshot)(sessionId, artifactPath);
230
- await this.initializeFromContent(sessionId, artifactPath, content !== null && content !== void 0 ? content : '');
231
- }
232
- schedulePersist(documentIdentifier, doc) {
233
- const existing = this.persistTimers.get(documentIdentifier);
234
- if (existing) {
235
- clearTimeout(existing);
236
- }
237
- this.persistTimers.set(documentIdentifier, setTimeout(() => {
238
- this.persistTimers.delete(documentIdentifier);
239
- void this.persistToDisk(documentIdentifier, doc);
240
- }, PERSIST_DEBOUNCE_MS));
169
+ var _a;
170
+ const accountId = await (0, resolve_session_account_id_1.resolveSessionAccountId)(sessionId);
171
+ const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
172
+ const content = (_a = (await s3.getString((0, keys_1.sessionArtifactContentKey)(accountId, sessionId, normalizedPath)))) !== null && _a !== void 0 ? _a : '';
173
+ const documentIdentifier = (0, session_artifact_document_id_1.buildSessionArtifactDocumentId)(sessionId, normalizedPath);
174
+ await (0, context_1.getYjsPendingUpdatesRepository)().deleteByDocumentId(documentIdentifier);
175
+ await s3.deleteObject((0, keys_1.sessionArtifactLatestStateKey)(accountId, sessionId, normalizedPath)).catch(() => undefined);
176
+ await s3.deleteObject((0, keys_1.sessionArtifactContentKey)(accountId, sessionId, normalizedPath)).catch(() => undefined);
177
+ await this.initializeFromContent(sessionId, normalizedPath, content);
241
178
  }
242
179
  async getPersistedStateRecord(documentIdentifier) {
243
- const parsed = this.parseDocumentTarget(documentIdentifier);
244
- if (!parsed) {
180
+ const state = await (0, yjs_persistence_1.loadMergedState)(documentIdentifier);
181
+ if (!(state === null || state === void 0 ? void 0 : state.byteLength)) {
245
182
  return undefined;
246
183
  }
247
- if (parsed.kind === 'session-artifact') {
248
- const state = await (0, artifact_storage_1.readArtifactLatestState)(parsed.sessionId, parsed.artifactPath);
249
- return state ? { id: { toString: () => documentIdentifier }, state } : undefined;
250
- }
251
- const notebookState = await this.getNotebookRepository().readRealtimeState(parsed.accountId, parsed.notebookId);
252
- if (!(notebookState === null || notebookState === void 0 ? void 0 : notebookState.yjsState)) {
253
- return undefined;
254
- }
255
- return { id: { toString: () => documentIdentifier }, state: notebookState.yjsState };
184
+ return { id: { toString: () => documentIdentifier }, state };
256
185
  }
257
186
  async persistBinaryState(documentIdentifier, state) {
258
- const parsed = this.parseDocumentTarget(documentIdentifier);
259
- if (!parsed) {
187
+ const parsed = (0, yjs_persistence_1.parseDocumentTarget)(documentIdentifier);
188
+ if (!parsed || !state.byteLength) {
260
189
  return;
261
190
  }
262
- // Merge into the live cached doc instead of replacing it, so concurrent
263
- // agent writes on this replica survive the relay's debounced saves.
264
- let doc = this.docCache.get(documentIdentifier);
265
- if (doc) {
266
- this.applyExternalUpdate(documentIdentifier, state);
267
- }
268
- else {
269
- doc = new Y.Doc();
270
- if (state.byteLength) {
271
- Y.applyUpdate(doc, state);
272
- }
273
- this.docCache.set(documentIdentifier, doc);
274
- }
275
- await this.writePersistedState(documentIdentifier, parsed, doc);
276
- }
277
- async persistToDisk(documentIdentifier, doc) {
278
- const parsed = this.parseDocumentTarget(documentIdentifier);
279
- if (!parsed) {
280
- return;
281
- }
282
- await this.writePersistedState(documentIdentifier, parsed, doc);
283
- }
284
- /**
285
- * Persist the doc, merged with whatever is already stored: with multiple
286
- * replicas each holding its own in-memory copy, a plain full-state write
287
- * would let the last writer clobber ops it never saw. `Y.mergeUpdates` makes
288
- * the write commutative (a read-merge-write race can still momentarily drop
289
- * the loser's newest ops from storage, but the next persist re-adds them).
290
- */
291
- async writePersistedState(documentIdentifier, parsed, doc) {
292
- var _a;
293
- let state = Y.encodeStateAsUpdate(doc);
294
- try {
295
- const stored = parsed.kind === 'session-artifact'
296
- ? await (0, artifact_storage_1.readArtifactLatestState)(parsed.sessionId, parsed.artifactPath)
297
- : (_a = (await this.getNotebookRepository().readRealtimeState(parsed.accountId, parsed.notebookId))) === null || _a === void 0 ? void 0 : _a.yjsState;
298
- if (stored === null || stored === void 0 ? void 0 : stored.byteLength) {
299
- state = Y.mergeUpdates([stored, state]);
300
- // Keep the cached doc a superset of storage so later encodes retain it.
301
- this.applyExternalUpdate(documentIdentifier, stored);
302
- }
303
- }
304
- catch (error) {
305
- (0, logger_1.getBuilderApiLogger)().warn({ err: error, documentIdentifier }, 'Persisting without merge: failed to read stored Yjs state');
306
- }
307
- const content = docTextContent(doc);
308
- if (parsed.kind === 'session-artifact') {
309
- await (0, artifact_storage_1.writeArtifactLatestState)(parsed.sessionId, parsed.artifactPath, state);
310
- await (0, artifact_storage_1.writeArtifactContentSnapshot)(parsed.sessionId, parsed.artifactPath, content);
311
- this.scheduleNamedSnapshot(documentIdentifier, parsed.sessionId, parsed.artifactPath);
312
- return;
313
- }
314
- await this.getNotebookRepository().writeRealtimeState(parsed.accountId, parsed.notebookId, state);
315
- }
316
- scheduleNamedSnapshot(documentIdentifier, sessionId, artifactPath) {
317
- const existing = this.snapshotTimers.get(documentIdentifier);
318
- if (existing) {
319
- clearTimeout(existing);
320
- }
321
- this.snapshotTimers.set(documentIdentifier, setTimeout(() => {
322
- this.snapshotTimers.delete(documentIdentifier);
323
- const doc = this.docCache.get(documentIdentifier);
324
- const snapshotContent = doc ? docTextContent(doc) : '';
325
- void (0, artifact_storage_1.writeArtifactNamedSnapshot)(sessionId, artifactPath, snapshotContent).catch((error) => {
326
- (0, logger_1.getBuilderApiLogger)().warn({ err: error, sessionId, artifactPath }, 'Failed to write artifact snapshot');
327
- });
328
- }, SNAPSHOT_DEBOUNCE_MS));
329
- }
330
- clearPersistTimer(documentIdentifier) {
331
- const pending = this.persistTimers.get(documentIdentifier);
332
- if (pending) {
333
- clearTimeout(pending);
334
- this.persistTimers.delete(documentIdentifier);
335
- }
336
- }
337
- clearTimers(documentIdentifier) {
338
- this.clearPersistTimer(documentIdentifier);
339
- const snapshotPending = this.snapshotTimers.get(documentIdentifier);
340
- if (snapshotPending) {
341
- clearTimeout(snapshotPending);
342
- this.snapshotTimers.delete(documentIdentifier);
343
- }
191
+ const accountId = parsed.kind === 'notebook' ? parsed.accountId : await (0, resolve_session_account_id_1.resolveSessionAccountId)(parsed.sessionId);
192
+ await (0, yjs_persistence_1.appendIncrementalUpdate)(documentIdentifier, accountId, state, {
193
+ treatAsPossiblyFullState: true,
194
+ });
344
195
  }
345
- parseDocumentTarget(documentIdentifier) {
346
- const sessionArtifact = (0, session_artifact_document_id_1.parseSessionArtifactDocumentId)(documentIdentifier);
347
- if (sessionArtifact) {
348
- return {
349
- kind: 'session-artifact',
350
- sessionId: sessionArtifact.sessionId,
351
- artifactPath: sessionArtifact.artifactPath,
352
- };
353
- }
354
- const notebook = (0, notebook_document_id_1.parseNotebookDocumentId)(documentIdentifier);
355
- if (notebook) {
356
- return {
357
- kind: 'notebook',
358
- accountId: notebook.accountId,
359
- notebookId: notebook.notebookId,
360
- };
361
- }
362
- return null;
196
+ async sessionArtifactExists(accountId, sessionId, artifactPath, documentIdentifier) {
197
+ const [content, latest, pendingCount] = await Promise.all([
198
+ s3.objectExists((0, keys_1.sessionArtifactContentKey)(accountId, sessionId, artifactPath)),
199
+ s3.objectExists((0, keys_1.sessionArtifactLatestStateKey)(accountId, sessionId, artifactPath)),
200
+ (0, context_1.getYjsPendingUpdatesRepository)().countByDocumentId(documentIdentifier),
201
+ ]);
202
+ return content || latest || pendingCount > 0;
363
203
  }
364
204
  getNotebookRepository() {
365
205
  const repository = (0, context_1.getBuilderApiContext)().notebookRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"session-artifact-yjs-store.js","sourceRoot":"","sources":["../../src/realtime/session-artifact-yjs-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-artifact-yjs-store.js","sourceRoot":"","sources":["../../src/realtime/session-artifact-yjs-store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsOA,gEAKC;AA3OD,uCAAwB;AACxB,sFAAyE;AACzE,wCAAiF;AACjF,sDAAkE;AAClE,gGAAyF;AACzF,qDAGmC;AACnC,0EAA2D;AAC3D,wEAS2C;AAC3C,iFAEuC;AACvC,iEAAgE;AAIhE,MAAa,uBAAuB;IAApC;QACU,oBAAe,GAA2B,IAAI,CAAA;IAsMxD,CAAC;IApMC,iBAAiB,CAAC,EAAmB;QACnC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,mBAAmB,CAAC,mBAA2B,EAAE,OAAmB,IAAS,CAAC;IAE9E,KAAK,CAAC,YAAY,CAAC,kBAA0B;QAC3C,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,kBAAkB,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAA,qCAAmB,EAAC,kBAAkB,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,YAAoB;QACzD,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;QAC1D,MAAM,kBAAkB,GAAG,IAAA,6DAA8B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACpF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,cAAc,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAA,gCAAc,EAAC,GAAG,CAAC,CAAA;QAC5B,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,SAAiB,EACjB,YAAoB,EACpB,OAAe;;QAEf,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;QAC1D,MAAM,kBAAkB,GAAG,IAAA,6DAA8B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACpF,MAAM,SAAS,GAAG,MAAM,IAAA,oDAAuB,EAAC,SAAS,CAAC,CAAA;QAE1D,IAAI,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CACb,wBAAwB,cAAc,qDAAqD,CAC5F,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QACvB,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC7C,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;YAChB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QACvD,MAAM,MAAM,GAAyB;YACnC,IAAI,EAAE,kBAAkB;YACxB,SAAS;YACT,YAAY,EAAE,cAAc;SAC7B,CAAA;QACD,MAAM,IAAA,wCAAsB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC3C,MAAM,IAAA,+CAA6B,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACpD,GAAG,CAAC,OAAO,EAAE,CAAA;QAEb,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAA,IAAI,CAAC,eAAe,qDAAG,kBAAkB,EAAE,MAAM,CAAC,CAAA;QACpD,CAAC;QAED,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;YACzC,kBAAkB;SACnB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,YAAoB,EACpB,SAAiB;;QAEjB,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;QAC1D,MAAM,kBAAkB,GAAG,IAAA,6DAA8B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACpF,MAAM,SAAS,GAAG,MAAM,IAAA,oDAAuB,EAAC,SAAS,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,cAAc,EAAE,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAA,gCAAU,EAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YACvD,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAA,yCAAuB,EAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;gBACpE,MAAA,IAAI,CAAC,eAAe,qDAAG,kBAAkB,EAAE,MAAM,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,CAAA;QACf,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAA,8CAAuB,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,UAAkB,EAClB,OAAsD;;QAEtD,MAAM,kBAAkB,GAAG,IAAA,8CAAuB,EAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAA;QACtD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC7C,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YACvD,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAA,yCAAuB,EAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;gBACpE,MAAA,IAAI,CAAC,eAAe,qDAAG,kBAAkB,EAAE,MAAM,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,aAAqB,IAAS,CAAC;IAEjE,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,YAAoB;;QAChE,MAAM,SAAS,GAAG,MAAM,IAAA,oDAAuB,EAAC,SAAS,CAAC,CAAA;QAC1D,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;QAC1D,MAAM,OAAO,GACX,MAAA,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAA,gCAAyB,EAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAA;QAC7F,MAAM,kBAAkB,GAAG,IAAA,6DAA8B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACpF,MAAM,IAAA,wCAA8B,GAAE,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;QAC7E,MAAM,EAAE,CAAC,YAAY,CAAC,IAAA,oCAA6B,EAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACjH,MAAM,EAAE,CAAC,YAAY,CAAC,IAAA,gCAAyB,EAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC7G,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,kBAA0B;QAE1B,MAAM,KAAK,GAAG,MAAM,IAAA,iCAAe,EAAC,kBAAkB,CAAC,CAAA;QACvD,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAA,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,kBAA0B,EAAE,KAAiB;QACpE,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,kBAAkB,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,OAAM;QACR,CAAC;QACD,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,oDAAuB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACjG,MAAM,IAAA,yCAAuB,EAAC,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE;YAClE,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,kBAA0B;QAE1B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxD,EAAE,CAAC,YAAY,CAAC,IAAA,gCAAyB,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC9E,EAAE,CAAC,YAAY,CAAC,IAAA,oCAA6B,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAClF,IAAA,wCAA8B,GAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;SACvE,CAAC,CAAA;QACF,OAAO,OAAO,IAAI,MAAM,IAAI,YAAY,GAAG,CAAC,CAAA;IAC9C,CAAC;IAEO,qBAAqB;QAC3B,MAAM,UAAU,GAAG,IAAA,8BAAoB,GAAE,CAAC,kBAAkB,CAAA;QAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;CACF;AAvMD,0DAuMC;AAED,IAAI,aAAa,GAAmC,IAAI,CAAA;AAExD,SAAgB,0BAA0B;IACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAC/C,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,aAAa,4CAAmB,CAAA"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAsHA,eAAO,MAAM,aAAa,4CAAmB,CAAA"}
@@ -9,6 +9,7 @@ const context_1 = require("../context");
9
9
  const chat_access_1 = require("../lib/chat-access");
10
10
  const artifact_events_1 = require("../lib/socket/artifact-events");
11
11
  const session_pages_1 = require("../lib/session-pages");
12
+ const session_artifact_yjs_store_1 = require("../realtime/session-artifact-yjs-store");
12
13
  function getArtifactRelativePath(req) {
13
14
  const raw = req.params.artifactPath;
14
15
  const joined = Array.isArray(raw) ? raw.join('/') : raw !== null && raw !== void 0 ? raw : 'index.html';
@@ -35,6 +36,22 @@ async function requireSessionAccess(req, sessionId) {
35
36
  const userId = (0, chat_access_1.requireUserId)(req);
36
37
  await (0, chat_access_1.loadChatForUser)(sessionId, userId);
37
38
  }
39
+ function contentTypeForPath(artifactPath) {
40
+ const lower = artifactPath.toLowerCase();
41
+ if (lower.endsWith('.html') || lower.endsWith('.htm'))
42
+ return 'text/html; charset=utf-8';
43
+ if (lower.endsWith('.css'))
44
+ return 'text/css; charset=utf-8';
45
+ if (lower.endsWith('.js') || lower.endsWith('.mjs'))
46
+ return 'text/javascript; charset=utf-8';
47
+ if (lower.endsWith('.json'))
48
+ return 'application/json; charset=utf-8';
49
+ if (lower.endsWith('.md'))
50
+ return 'text/markdown; charset=utf-8';
51
+ if (lower.endsWith('.svg'))
52
+ return 'image/svg+xml';
53
+ return 'text/plain; charset=utf-8';
54
+ }
38
55
  const deleteArtifact = async (req, res) => {
39
56
  var _a, _b, _c;
40
57
  try {
@@ -66,16 +83,19 @@ const deleteArtifact = async (req, res) => {
66
83
  respondSessionError(res, error);
67
84
  }
68
85
  };
69
- const sendArtifact = async (req, res, next) => {
86
+ const sendArtifact = async (req, res) => {
70
87
  try {
71
88
  const sessionId = req.params.sessionId;
72
89
  await requireSessionAccess(req, sessionId);
73
90
  const relativePath = getArtifactRelativePath(req);
74
- const absolutePath = (0, session_pages_1.resolveArtifactPath)(sessionId, relativePath);
75
- res.sendFile(absolutePath, (err) => {
76
- if (err)
77
- next(err);
78
- });
91
+ if (!(await (0, session_pages_1.sessionArtifactExists)(sessionId, relativePath))) {
92
+ res.status(404).json({ message: `Session artifact not found: ${relativePath}` });
93
+ return;
94
+ }
95
+ const content = await (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().getLatestText(sessionId, relativePath);
96
+ res.setHeader('Content-Type', contentTypeForPath(relativePath));
97
+ res.setHeader('Cache-Control', 'no-store');
98
+ res.send(content);
79
99
  }
80
100
  catch (error) {
81
101
  respondSessionError(res, error);
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const skillRoutes: import("express-serve-static-core").Router;
2
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/routes/skills.ts"],"names":[],"mappings":"AAsIA,eAAO,MAAM,WAAW,4CAAmB,CAAA"}