@multiplayer-app/sandbox 0.0.30 → 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 (201) 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/notebooks/notebook-assistant.d.ts +12 -0
  96. package/dist/lib/notebooks/notebook-assistant.d.ts.map +1 -1
  97. package/dist/lib/notebooks/notebook-assistant.js +35 -8
  98. package/dist/lib/notebooks/notebook-assistant.js.map +1 -1
  99. package/dist/lib/object-storage/index.d.ts +3 -0
  100. package/dist/lib/object-storage/index.d.ts.map +1 -0
  101. package/dist/lib/object-storage/index.js +19 -0
  102. package/dist/lib/object-storage/index.js.map +1 -0
  103. package/dist/lib/object-storage/keys.d.ts +10 -0
  104. package/dist/lib/object-storage/keys.d.ts.map +1 -0
  105. package/dist/lib/object-storage/keys.js +51 -0
  106. package/dist/lib/object-storage/keys.js.map +1 -0
  107. package/dist/lib/object-storage/s3-object-store.d.ts +14 -0
  108. package/dist/lib/object-storage/s3-object-store.d.ts.map +1 -0
  109. package/dist/lib/object-storage/s3-object-store.js +64 -0
  110. package/dist/lib/object-storage/s3-object-store.js.map +1 -0
  111. package/dist/lib/session-pages/artifact-quality-audit.d.ts +16 -0
  112. package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -0
  113. package/dist/lib/session-pages/artifact-quality-audit.js +293 -0
  114. package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -0
  115. package/dist/lib/session-pages/artifact-storage.d.ts +3 -0
  116. package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -1
  117. package/dist/lib/session-pages/artifact-storage.js +94 -85
  118. package/dist/lib/session-pages/artifact-storage.js.map +1 -1
  119. package/dist/lib/session-pages/audit-session-html.d.ts +23 -0
  120. package/dist/lib/session-pages/audit-session-html.d.ts.map +1 -0
  121. package/dist/lib/session-pages/audit-session-html.js +82 -0
  122. package/dist/lib/session-pages/audit-session-html.js.map +1 -0
  123. package/dist/lib/session-pages/contrast-check.d.ts +25 -0
  124. package/dist/lib/session-pages/contrast-check.d.ts.map +1 -0
  125. package/dist/lib/session-pages/contrast-check.js +290 -0
  126. package/dist/lib/session-pages/contrast-check.js.map +1 -0
  127. package/dist/lib/session-pages/deferred-quality-rules.d.ts +7 -0
  128. package/dist/lib/session-pages/deferred-quality-rules.d.ts.map +1 -0
  129. package/dist/lib/session-pages/deferred-quality-rules.js +25 -0
  130. package/dist/lib/session-pages/deferred-quality-rules.js.map +1 -0
  131. package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -1
  132. package/dist/lib/session-pages/delete-session-artifact.js +12 -41
  133. package/dist/lib/session-pages/delete-session-artifact.js.map +1 -1
  134. package/dist/lib/session-pages/delete-session-artifacts.d.ts +0 -6
  135. package/dist/lib/session-pages/delete-session-artifacts.d.ts.map +1 -1
  136. package/dist/lib/session-pages/delete-session-artifacts.js +51 -15
  137. package/dist/lib/session-pages/delete-session-artifacts.js.map +1 -1
  138. package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
  139. package/dist/lib/session-pages/list-session-artifacts.js +48 -48
  140. package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
  141. package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -1
  142. package/dist/lib/session-pages/read-session-artifacts.js +4 -26
  143. package/dist/lib/session-pages/read-session-artifacts.js.map +1 -1
  144. package/dist/lib/session-pages/resolve-session-account-id.d.ts +3 -0
  145. package/dist/lib/session-pages/resolve-session-account-id.d.ts.map +1 -0
  146. package/dist/lib/session-pages/resolve-session-account-id.js +31 -0
  147. package/dist/lib/session-pages/resolve-session-account-id.js.map +1 -0
  148. package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -2
  149. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  150. package/dist/lib/session-pages/write-session-artifacts.js +8 -0
  151. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  152. package/dist/lib/session-plans/build-plan.d.ts +64 -0
  153. package/dist/lib/session-plans/build-plan.d.ts.map +1 -0
  154. package/dist/lib/session-plans/build-plan.js +134 -0
  155. package/dist/lib/session-plans/build-plan.js.map +1 -0
  156. package/dist/lib/yjs-pending/flush-lock.d.ts +6 -0
  157. package/dist/lib/yjs-pending/flush-lock.d.ts.map +1 -0
  158. package/dist/lib/yjs-pending/flush-lock.js +43 -0
  159. package/dist/lib/yjs-pending/flush-lock.js.map +1 -0
  160. package/dist/lib/yjs-pending/flush-worker.d.ts +5 -0
  161. package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -0
  162. package/dist/lib/yjs-pending/flush-worker.js +75 -0
  163. package/dist/lib/yjs-pending/flush-worker.js.map +1 -0
  164. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts +22 -0
  165. package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts.map +1 -0
  166. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js +3 -0
  167. package/dist/lib/yjs-pending/yjs-pending-updates-repository.js.map +1 -0
  168. package/dist/lib/yjs-pending/yjs-persistence.d.ts +23 -0
  169. package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -0
  170. package/dist/lib/yjs-pending/yjs-persistence.js +222 -0
  171. package/dist/lib/yjs-pending/yjs-persistence.js.map +1 -0
  172. package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
  173. package/dist/realtime/reset-session-artifact-y-docs.js +1 -6
  174. package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
  175. package/dist/realtime/session-artifact-y-socket-io.d.ts +0 -5
  176. package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
  177. package/dist/realtime/session-artifact-y-socket-io.js +5 -69
  178. package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
  179. package/dist/realtime/session-artifact-yjs-store.d.ts +3 -35
  180. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  181. package/dist/realtime/session-artifact-yjs-store.js +75 -235
  182. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  183. package/dist/routes/chats/multiUserMessages.d.ts.map +1 -1
  184. package/dist/routes/chats/multiUserMessages.js +2 -1
  185. package/dist/routes/chats/multiUserMessages.js.map +1 -1
  186. package/dist/routes/chats/stream.d.ts.map +1 -1
  187. package/dist/routes/chats/stream.js +2 -1
  188. package/dist/routes/chats/stream.js.map +1 -1
  189. package/dist/routes/notebooks/assistant-generate.d.ts.map +1 -1
  190. package/dist/routes/notebooks/assistant-generate.js +3 -1
  191. package/dist/routes/notebooks/assistant-generate.js.map +1 -1
  192. package/dist/routes/sessions.d.ts.map +1 -1
  193. package/dist/routes/sessions.js +26 -6
  194. package/dist/routes/sessions.js.map +1 -1
  195. package/dist/routes/skills.d.ts +2 -0
  196. package/dist/routes/skills.d.ts.map +1 -0
  197. package/dist/routes/skills.js +140 -0
  198. package/dist/routes/skills.js.map +1 -0
  199. package/dist/routes/tenants/credentials.js +3 -3
  200. package/dist/routes/tenants/credentials.js.map +1 -1
  201. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-storage.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-storage.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type QualityFinding } from './artifact-quality-audit';
2
+ export interface SessionQualityIssue {
3
+ path: string;
4
+ findings: QualityFinding[];
5
+ }
6
+ export interface SessionQualityReport {
7
+ issues: SessionQualityIssue[];
8
+ /** Actionable findings only (excludes deferred heuristics like contrast). */
9
+ actionableIssues: SessionQualityIssue[];
10
+ /** Flat lines suitable for plan.openAdvisories / tool output (actionable only). */
11
+ advisoryLines: string[];
12
+ errorCount: number;
13
+ warningCount: number;
14
+ deferredWarningCount: number;
15
+ }
16
+ /**
17
+ * Re-audit every HTML artifact in the session. Used by the consistency pass
18
+ * to prove polish work actually cleared quality findings.
19
+ */
20
+ export declare function auditSessionHtmlArtifacts(sessionId: string): Promise<SessionQualityReport>;
21
+ /** Compact path → finding lines for openAdvisories storage (actionable only). */
22
+ export declare function sessionQualityToAdvisoryLines(report: SessionQualityReport): string[];
23
+ //# sourceMappingURL=audit-session-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-session-html.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/audit-session-html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAKjF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,6EAA6E;IAC7E,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;IACvC,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuEhG;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAIpF"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.auditSessionHtmlArtifacts = auditSessionHtmlArtifacts;
4
+ exports.sessionQualityToAdvisoryLines = sessionQualityToAdvisoryLines;
5
+ const artifact_quality_audit_1 = require("./artifact-quality-audit");
6
+ const deferred_quality_rules_1 = require("./deferred-quality-rules");
7
+ const list_session_artifacts_1 = require("./list-session-artifacts");
8
+ const read_session_artifacts_1 = require("./read-session-artifacts");
9
+ /**
10
+ * Re-audit every HTML artifact in the session. Used by the consistency pass
11
+ * to prove polish work actually cleared quality findings.
12
+ */
13
+ async function auditSessionHtmlArtifacts(sessionId) {
14
+ const files = await (0, list_session_artifacts_1.listSessionArtifacts)(sessionId);
15
+ const htmlPaths = files
16
+ .map((file) => file.path)
17
+ .filter((path) => path.toLowerCase().endsWith('.html') && path !== 'plan.json');
18
+ if (htmlPaths.length === 0) {
19
+ // Empty HTML set used to report clean:true, which let the parent mark the
20
+ // whole plan done after a failed publish left only plan.json on disk.
21
+ const missing = {
22
+ rule: 'missing-html-pages',
23
+ severity: 'error',
24
+ message: 'No HTML artifacts published yet. Call publishSessionArtifacts to create index.html (updateSessionArtifact cannot create files).',
25
+ };
26
+ const issue = { path: '(session)', findings: [missing] };
27
+ return {
28
+ issues: [issue],
29
+ actionableIssues: [issue],
30
+ advisoryLines: [`[error] (session): [missing-html-pages] ${missing.message}`],
31
+ errorCount: 1,
32
+ warningCount: 0,
33
+ deferredWarningCount: 0,
34
+ };
35
+ }
36
+ const artifacts = await (0, read_session_artifacts_1.readSessionArtifacts)(sessionId, htmlPaths);
37
+ const issues = [];
38
+ const actionableIssues = [];
39
+ let errorCount = 0;
40
+ let warningCount = 0;
41
+ let deferredWarningCount = 0;
42
+ for (const artifact of artifacts) {
43
+ if (!artifact.found || !artifact.content)
44
+ continue;
45
+ const findings = (0, artifact_quality_audit_1.auditHtmlArtifact)(artifact.content).findings;
46
+ if (findings.length === 0)
47
+ continue;
48
+ issues.push({ path: artifact.path, findings });
49
+ const actionable = [];
50
+ for (const finding of findings) {
51
+ if (finding.severity === 'error') {
52
+ errorCount += 1;
53
+ actionable.push(finding);
54
+ }
55
+ else if ((0, deferred_quality_rules_1.isDeferredQualityRule)(finding.rule)) {
56
+ deferredWarningCount += 1;
57
+ }
58
+ else {
59
+ // Non-error warnings are informational only — never drive consistency
60
+ // subagents (that caused endless same-page update loops).
61
+ warningCount += 1;
62
+ }
63
+ }
64
+ if (actionable.length > 0) {
65
+ actionableIssues.push({ path: artifact.path, findings: actionable });
66
+ }
67
+ }
68
+ const advisoryLines = actionableIssues.flatMap((issue) => issue.findings.map((finding) => `[${finding.severity}] ${issue.path}: [${finding.rule}] ${finding.message}`));
69
+ return {
70
+ issues,
71
+ actionableIssues,
72
+ advisoryLines,
73
+ errorCount,
74
+ warningCount,
75
+ deferredWarningCount,
76
+ };
77
+ }
78
+ /** Compact path → finding lines for openAdvisories storage (actionable only). */
79
+ function sessionQualityToAdvisoryLines(report) {
80
+ return report.actionableIssues.flatMap((issue) => issue.findings.map((finding) => `${issue.path}: [${finding.rule}] ${finding.message}`));
81
+ }
82
+ //# sourceMappingURL=audit-session-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-session-html.js","sourceRoot":"","sources":["../../../src/lib/session-pages/audit-session-html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Static WCAG contrast analysis for generated Tailwind pages.
3
+ *
4
+ * Walks the markup with a tag stack, tracking the effective text color and
5
+ * background inherited from Tailwind utility classes (default palette +
6
+ * arbitrary hex values). Every element that directly contains text gets its
7
+ * WCAG contrast ratio checked against the nearest known background.
8
+ *
9
+ * Deliberately conservative: anything unresolvable (CSS variables, gradients,
10
+ * low-alpha backgrounds, inline styles) suppresses checking for that subtree
11
+ * rather than guessing — the goal is zero false positives on egregious
12
+ * failures (white-on-white), not exhaustive coverage.
13
+ */
14
+ export interface ContrastIssue {
15
+ ratio: number;
16
+ textToken: string;
17
+ bgToken: string;
18
+ snippet: string;
19
+ severity: 'error' | 'warning';
20
+ }
21
+ export declare function contrastRatio(hexA: string, hexB: string): number | null;
22
+ /** CSS custom properties defined with plain hex values in <style> blocks. */
23
+ export declare function extractCssVarColors(html: string): Map<string, string>;
24
+ export declare function checkContrast(html: string): ContrastIssue[];
25
+ //# sourceMappingURL=contrast-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contrast-check.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/contrast-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B;AA4DD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrE;AAsGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CA6G3D"}
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ /**
3
+ * Static WCAG contrast analysis for generated Tailwind pages.
4
+ *
5
+ * Walks the markup with a tag stack, tracking the effective text color and
6
+ * background inherited from Tailwind utility classes (default palette +
7
+ * arbitrary hex values). Every element that directly contains text gets its
8
+ * WCAG contrast ratio checked against the nearest known background.
9
+ *
10
+ * Deliberately conservative: anything unresolvable (CSS variables, gradients,
11
+ * low-alpha backgrounds, inline styles) suppresses checking for that subtree
12
+ * rather than guessing — the goal is zero false positives on egregious
13
+ * failures (white-on-white), not exhaustive coverage.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.contrastRatio = contrastRatio;
17
+ exports.extractCssVarColors = extractCssVarColors;
18
+ exports.checkContrast = checkContrast;
19
+ const SHADES = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'];
20
+ // Tailwind v3 default palette.
21
+ const FAMILIES = {
22
+ slate: ['f8fafc', 'f1f5f9', 'e2e8f0', 'cbd5e1', '94a3b8', '64748b', '475569', '334155', '1e293b', '0f172a', '020617'],
23
+ gray: ['f9fafb', 'f3f4f6', 'e5e7eb', 'd1d5db', '9ca3af', '6b7280', '4b5563', '374151', '1f2937', '111827', '030712'],
24
+ zinc: ['fafafa', 'f4f4f5', 'e4e4e7', 'd4d4d8', 'a1a1aa', '71717a', '52525b', '3f3f46', '27272a', '18181b', '09090b'],
25
+ neutral: ['fafafa', 'f5f5f5', 'e5e5e5', 'd4d4d4', 'a3a3a3', '737373', '525252', '404040', '262626', '171717', '0a0a0a'],
26
+ stone: ['fafaf9', 'f5f5f4', 'e7e5e4', 'd6d3d1', 'a8a29e', '78716c', '57534e', '44403c', '292524', '1c1917', '0c0a09'],
27
+ red: ['fef2f2', 'fee2e2', 'fecaca', 'fca5a5', 'f87171', 'ef4444', 'dc2626', 'b91c1c', '991b1b', '7f1d1d', '450a0a'],
28
+ orange: ['fff7ed', 'ffedd5', 'fed7aa', 'fdba74', 'fb923c', 'f97316', 'ea580c', 'c2410c', '9a3412', '7c2d12', '431407'],
29
+ amber: ['fffbeb', 'fef3c7', 'fde68a', 'fcd34d', 'fbbf24', 'f59e0b', 'd97706', 'b45309', '92400e', '78350f', '451a03'],
30
+ yellow: ['fefce8', 'fef9c3', 'fef08a', 'fde047', 'facc15', 'eab308', 'ca8a04', 'a16207', '854d0e', '713f12', '422006'],
31
+ lime: ['f7fee7', 'ecfccb', 'd9f99d', 'bef264', 'a3e635', '84cc16', '65a30d', '4d7c0f', '3f6212', '365314', '1a2e05'],
32
+ green: ['f0fdf4', 'dcfce7', 'bbf7d0', '86efac', '4ade80', '22c55e', '16a34a', '15803d', '166534', '14532d', '052e16'],
33
+ emerald: ['ecfdf5', 'd1fae5', 'a7f3d0', '6ee7b7', '34d399', '10b981', '059669', '047857', '065f46', '064e3b', '022c22'],
34
+ teal: ['f0fdfa', 'ccfbf1', '99f6e4', '5eead4', '2dd4bf', '14b8a6', '0d9488', '0f766e', '115e59', '134e4a', '042f2e'],
35
+ cyan: ['ecfeff', 'cffafe', 'a5f3fc', '67e8f9', '22d3ee', '06b6d4', '0891b2', '0e7490', '155e75', '164e63', '083344'],
36
+ sky: ['f0f9ff', 'e0f2fe', 'bae6fd', '7dd3fc', '38bdf8', '0ea5e9', '0284c7', '0369a1', '075985', '0c4a6e', '082f49'],
37
+ blue: ['eff6ff', 'dbeafe', 'bfdbfe', '93c5fd', '60a5fa', '3b82f6', '2563eb', '1d4ed8', '1e40af', '1e3a8a', '172554'],
38
+ indigo: ['eef2ff', 'e0e7ff', 'c7d2fe', 'a5b4fc', '818cf8', '6366f1', '4f46e5', '4338ca', '3730a3', '312e81', '1e1b4b'],
39
+ violet: ['f5f3ff', 'ede9fe', 'ddd6fe', 'c4b5fd', 'a78bfa', '8b5cf6', '7c3aed', '6d28d9', '5b21b6', '4c1d95', '2e1065'],
40
+ purple: ['faf5ff', 'f3e8ff', 'e9d5ff', 'd8b4fe', 'c084fc', 'a855f7', '9333ea', '7e22ce', '6b21a8', '581c87', '3b0764'],
41
+ fuchsia: ['fdf4ff', 'fae8ff', 'f5d0fe', 'f0abfc', 'e879f9', 'd946ef', 'c026d3', 'a21caf', '86198f', '701a75', '4a044e'],
42
+ pink: ['fdf2f8', 'fce7f3', 'fbcfe8', 'f9a8d4', 'f472b6', 'ec4899', 'db2777', 'be185d', '9d174d', '831843', '500724'],
43
+ rose: ['fff1f2', 'ffe4e6', 'fecdd3', 'fda4af', 'fb7185', 'f43f5e', 'e11d48', 'be123c', '9f1239', '881337', '4c0519'],
44
+ };
45
+ const PALETTE = new Map();
46
+ for (const [family, hexes] of Object.entries(FAMILIES)) {
47
+ hexes.forEach((hex, index) => PALETTE.set(`${family}-${SHADES[index]}`, hex));
48
+ }
49
+ PALETTE.set('white', 'ffffff');
50
+ PALETTE.set('black', '000000');
51
+ /** UNKNOWN suppresses checks for the subtree (gradient, var(), low alpha…). */
52
+ const UNKNOWN = 'unknown';
53
+ function parseHex(hex) {
54
+ let value = hex.replace(/^#/, '').toLowerCase();
55
+ if (value.length === 3)
56
+ value = value.split('').map((c) => c + c).join('');
57
+ if (value.length === 8)
58
+ value = value.slice(0, 6);
59
+ if (!/^[0-9a-f]{6}$/.test(value))
60
+ return null;
61
+ return [
62
+ Number.parseInt(value.slice(0, 2), 16),
63
+ Number.parseInt(value.slice(2, 4), 16),
64
+ Number.parseInt(value.slice(4, 6), 16),
65
+ ];
66
+ }
67
+ function luminance(rgb) {
68
+ const [r, g, b] = rgb.map((channel) => {
69
+ const c = channel / 255;
70
+ return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
71
+ });
72
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
73
+ }
74
+ function contrastRatio(hexA, hexB) {
75
+ const a = parseHex(hexA);
76
+ const b = parseHex(hexB);
77
+ if (!a || !b)
78
+ return null;
79
+ const la = luminance(a);
80
+ const lb = luminance(b);
81
+ const [light, dark] = la >= lb ? [la, lb] : [lb, la];
82
+ return (light + 0.05) / (dark + 0.05);
83
+ }
84
+ /** CSS custom properties defined with plain hex values in <style> blocks. */
85
+ function extractCssVarColors(html) {
86
+ const vars = new Map();
87
+ const styles = [...html.matchAll(/<style[^>]*>([\s\S]*?)<\/style>/gi)].map((m) => m[1]).join('\n');
88
+ for (const match of styles.matchAll(/(--[a-zA-Z0-9_-]+)\s*:\s*#([0-9a-fA-F]{3,8})\b/g)) {
89
+ vars.set(match[1], match[2]);
90
+ }
91
+ return vars;
92
+ }
93
+ /** Resolve a Tailwind color token ("slate-500", "white", "[#aabbcc]", "[var(--x)]") to hex. */
94
+ function resolveColorToken(token, cssVars) {
95
+ var _a;
96
+ const [base, alphaRaw] = token.split('/');
97
+ const alpha = alphaRaw !== undefined ? Number.parseInt(alphaRaw, 10) : 100;
98
+ const arbitrary = base.match(/^\[#([0-9a-fA-F]{3,8})\]$/);
99
+ if (arbitrary)
100
+ return { hex: arbitrary[1], alpha };
101
+ const varRef = base.match(/^\[var\((--[a-zA-Z0-9_-]+)\)\]$/);
102
+ if (varRef)
103
+ return { hex: (_a = cssVars.get(varRef[1])) !== null && _a !== void 0 ? _a : UNKNOWN, alpha };
104
+ if (base.startsWith('['))
105
+ return { hex: UNKNOWN, alpha };
106
+ const named = PALETTE.get(base);
107
+ return { hex: named !== null && named !== void 0 ? named : null, alpha };
108
+ }
109
+ const VOID_TAGS = new Set([
110
+ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr',
111
+ ]);
112
+ const SKIP_SUBTREES = new Set(['script', 'style', 'svg', 'head', 'title']);
113
+ const NON_COLOR_TEXT = /^text-(?:xs|sm|base|lg|[2-9]?xl|left|center|right|justify|start|end|wrap|nowrap|balance|pretty|clip|ellipsis)$/;
114
+ function classTokens(attrs) {
115
+ var _a, _b;
116
+ const match = attrs.match(/class\s*=\s*("([^"]*)"|'([^']*)')/i);
117
+ const raw = match ? ((_b = (_a = match[2]) !== null && _a !== void 0 ? _a : match[3]) !== null && _b !== void 0 ? _b : '') : '';
118
+ return raw.split(/\s+/).filter(Boolean);
119
+ }
120
+ function extractColors(tokens, cssVars) {
121
+ const result = {};
122
+ let hasGradient = false;
123
+ const gradientStops = [];
124
+ for (const token of tokens) {
125
+ // Variant-prefixed utilities (hover:, md:, dark:…) don't affect base state.
126
+ if (token.includes(':'))
127
+ continue;
128
+ if (token.startsWith('text-')) {
129
+ const rest = token.slice(5);
130
+ if (NON_COLOR_TEXT.test(token)) {
131
+ if (/^text-(?:[2-9]xl)$/.test(token))
132
+ result.large = true;
133
+ continue;
134
+ }
135
+ if (/^(?:transparent|current|inherit)/.test(rest))
136
+ continue;
137
+ const { hex } = resolveColorToken(rest, cssVars);
138
+ if (hex)
139
+ result.text = { hex, token };
140
+ }
141
+ else if (token.startsWith('from-') || token.startsWith('via-') || token.startsWith('to-')) {
142
+ // Gradient stops — collected as a multi-stop background approximation.
143
+ const rest = token.replace(/^(from|via|to)-/, '');
144
+ const { hex, alpha } = resolveColorToken(rest, cssVars);
145
+ if (hex && hex !== UNKNOWN && alpha >= 50)
146
+ gradientStops.push(hex);
147
+ }
148
+ else if (token.startsWith('bg-')) {
149
+ const rest = token.slice(3);
150
+ if (/^(?:gradient|none|cover|contain|center|top|bottom|left|right|repeat|no-repeat|fixed|local|scroll|origin|clip|auto)/.test(rest)) {
151
+ if (rest.startsWith('gradient'))
152
+ hasGradient = true;
153
+ continue;
154
+ }
155
+ if (/^(?:transparent|current|inherit)/.test(rest))
156
+ continue;
157
+ const { hex, alpha } = resolveColorToken(rest, cssVars);
158
+ if (!hex)
159
+ continue;
160
+ // Low-alpha backgrounds blend with the parent — treat as inherit.
161
+ if (alpha < 50) {
162
+ result.bg = { hex: '', token, keepParent: true };
163
+ continue;
164
+ }
165
+ result.bg = { hex, token };
166
+ }
167
+ }
168
+ // A gradient without a resolvable solid bg: approximate with ALL resolvable
169
+ // stops (text passes if readable against ANY of them); tint-only gradients
170
+ // (all stops low-alpha) inherit the parent; nothing resolvable → suppress.
171
+ if (hasGradient && !result.bg) {
172
+ result.bg =
173
+ gradientStops.length > 0
174
+ ? { hex: `grad:${gradientStops.join(',')}`, token: 'bg-gradient' }
175
+ : { hex: '', token: 'bg-gradient', keepParent: true };
176
+ }
177
+ return result;
178
+ }
179
+ const TAG_PATTERN = /<(\/)?([a-zA-Z][a-zA-Z0-9-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>|([^<]+)/g;
180
+ const ERROR_THRESHOLD = 2.0;
181
+ const NORMAL_TEXT_THRESHOLD = 4.5;
182
+ const LARGE_TEXT_THRESHOLD = 3.0;
183
+ function checkContrast(html) {
184
+ var _a, _b, _c;
185
+ const issues = new Map();
186
+ const cssVars = extractCssVarColors(html);
187
+ // Shell default: light scheme, white canvas, near-black preflight text.
188
+ const stack = [{ tag: 'root', text: '000000', bg: 'ffffff', textToken: 'default', bgToken: 'page background', large: false, bgApprox: false }];
189
+ let skipDepth = 0;
190
+ let skipTag = '';
191
+ TAG_PATTERN.lastIndex = 0;
192
+ let match;
193
+ while ((match = TAG_PATTERN.exec(html)) !== null) {
194
+ const [, closing, tagRaw, attrs, textContent] = match;
195
+ if (textContent !== undefined) {
196
+ if (skipDepth > 0)
197
+ continue;
198
+ const trimmed = textContent.replace(/&[a-z#0-9]+;/gi, 'x').trim();
199
+ if (!trimmed)
200
+ continue;
201
+ const frame = stack[stack.length - 1];
202
+ if (!frame.text || !frame.bg || frame.text === UNKNOWN || frame.bg === UNKNOWN)
203
+ continue;
204
+ let ratio;
205
+ if (frame.bg.startsWith('grad:')) {
206
+ // Gradient: readable against ANY resolvable stop counts as readable.
207
+ const ratios = frame.bg
208
+ .slice(5)
209
+ .split(',')
210
+ .map((stop) => contrastRatio(frame.text, stop))
211
+ .filter((value) => value !== null);
212
+ ratio = ratios.length > 0 ? Math.max(...ratios) : null;
213
+ }
214
+ else {
215
+ ratio = contrastRatio(frame.text, frame.bg);
216
+ }
217
+ if (ratio === null)
218
+ continue;
219
+ const threshold = frame.large ? LARGE_TEXT_THRESHOLD : NORMAL_TEXT_THRESHOLD;
220
+ if (ratio >= threshold)
221
+ continue;
222
+ const key = `${frame.textToken}|${frame.bgToken}`;
223
+ if (!issues.has(key)) {
224
+ issues.set(key, {
225
+ ratio: Math.round(ratio * 100) / 100,
226
+ textToken: (_a = frame.textToken) !== null && _a !== void 0 ? _a : 'inherited',
227
+ bgToken: (_b = frame.bgToken) !== null && _b !== void 0 ? _b : 'inherited',
228
+ snippet: trimmed.slice(0, 60),
229
+ // Approximated backgrounds never block — advisory only.
230
+ severity: ratio < ERROR_THRESHOLD && !frame.bgApprox ? 'error' : 'warning',
231
+ });
232
+ }
233
+ continue;
234
+ }
235
+ const tag = tagRaw.toLowerCase();
236
+ if (skipDepth > 0) {
237
+ if (tag === skipTag)
238
+ skipDepth += closing ? -1 : 1;
239
+ continue;
240
+ }
241
+ if (closing) {
242
+ for (let i = stack.length - 1; i > 0; i--) {
243
+ if (stack[i].tag === tag) {
244
+ stack.length = i;
245
+ break;
246
+ }
247
+ }
248
+ continue;
249
+ }
250
+ if (SKIP_SUBTREES.has(tag)) {
251
+ if (!/\/\s*$/.test(attrs)) {
252
+ skipDepth = 1;
253
+ skipTag = tag;
254
+ }
255
+ continue;
256
+ }
257
+ if (VOID_TAGS.has(tag) || /\/\s*$/.test(attrs))
258
+ continue;
259
+ const parent = stack[stack.length - 1];
260
+ const tokens = classTokens(attrs);
261
+ const colors = extractColors(tokens, cssVars);
262
+ // Overlay pattern: an absolutely-positioned full-cover child with a
263
+ // background (hero overlays) becomes the EFFECTIVE background for its
264
+ // parent's later content — patch the parent frame to match render truth.
265
+ if (tokens.includes('absolute') &&
266
+ (tokens.includes('inset-0') || (tokens.includes('top-0') && tokens.includes('left-0'))) &&
267
+ colors.bg &&
268
+ !colors.bg.keepParent) {
269
+ parent.bg = colors.bg.hex;
270
+ parent.bgToken = colors.bg.token;
271
+ parent.bgApprox = true;
272
+ }
273
+ const bgIsApprox = colors.bg
274
+ ? colors.bg.keepParent
275
+ ? parent.bgApprox
276
+ : colors.bg.hex.startsWith('grad:')
277
+ : parent.bgApprox;
278
+ stack.push({
279
+ tag,
280
+ text: colors.text ? colors.text.hex : parent.text,
281
+ bg: colors.bg ? (colors.bg.keepParent ? parent.bg : colors.bg.hex) : parent.bg,
282
+ textToken: colors.text ? colors.text.token : parent.textToken,
283
+ bgToken: colors.bg && !colors.bg.keepParent ? colors.bg.token : parent.bgToken,
284
+ large: (_c = colors.large) !== null && _c !== void 0 ? _c : parent.large,
285
+ bgApprox: bgIsApprox,
286
+ });
287
+ }
288
+ return [...issues.values()];
289
+ }
290
+ //# sourceMappingURL=contrast-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contrast-check.js","sourceRoot":"","sources":["../../../src/lib/session-pages/contrast-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Warning rules that are heuristic and historically cause endless mid-build
2
+ * fix loops (static contrast especially). They remain visible in full audits
3
+ * but must NOT ride back as publish advisories or consistency openAdvisories
4
+ * that the parent treats as mandatory work. */
5
+ export declare const DEFERRED_QUALITY_RULES: Set<string>;
6
+ export declare function isDeferredQualityRule(rule: string): boolean;
7
+ //# sourceMappingURL=deferred-quality-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-quality-rules.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/deferred-quality-rules.ts"],"names":[],"mappings":"AAAA;;;+CAG+C;AAC/C,eAAO,MAAM,sBAAsB,aAYjC,CAAA;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFERRED_QUALITY_RULES = void 0;
4
+ exports.isDeferredQualityRule = isDeferredQualityRule;
5
+ /** Warning rules that are heuristic and historically cause endless mid-build
6
+ * fix loops (static contrast especially). They remain visible in full audits
7
+ * but must NOT ride back as publish advisories or consistency openAdvisories
8
+ * that the parent treats as mandatory work. */
9
+ exports.DEFERRED_QUALITY_RULES = new Set([
10
+ 'low-contrast',
11
+ 'unreadable-contrast',
12
+ 'ai-palette-cliche',
13
+ 'inert-dark-variants',
14
+ 'hard-coded-scheme-color',
15
+ 'dead-link',
16
+ 'thin-styling',
17
+ 'missing-reduced-motion',
18
+ 'inline-handler',
19
+ 'generic-title',
20
+ 'static-controls',
21
+ ]);
22
+ function isDeferredQualityRule(rule) {
23
+ return exports.DEFERRED_QUALITY_RULES.has(rule);
24
+ }
25
+ //# sourceMappingURL=deferred-quality-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-quality-rules.js","sourceRoot":"","sources":["../../../src/lib/session-pages/deferred-quality-rules.ts"],"names":[],"mappings":";;;AAkBA,sDAEC;AApBD;;;+CAG+C;AAClC,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,yBAAyB;IACzB,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;CAClB,CAAC,CAAA;AAEF,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,8BAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete-session-artifact.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;CACb;AAqBD,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CA+BtC"}
1
+ {"version":3,"file":"delete-session-artifact.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CAmBtC"}
@@ -1,56 +1,27 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.deleteSessionArtifact = deleteSessionArtifact;
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const node_path_1 = __importDefault(require("node:path"));
9
4
  const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
5
+ const list_library_items_1 = require("../library/list-library-items");
10
6
  const artifact_storage_1 = require("./artifact-storage");
7
+ const list_session_artifacts_1 = require("./list-session-artifacts");
11
8
  const paths_1 = require("./paths");
12
- async function pruneEmptyParentDirs(startDir, stopDir) {
13
- let current = startDir;
14
- const resolvedStop = node_path_1.default.resolve(stopDir);
15
- while (current !== resolvedStop && current.startsWith(`${resolvedStop}${node_path_1.default.sep}`)) {
16
- let entries;
17
- try {
18
- entries = await promises_1.default.readdir(current);
19
- }
20
- catch (_a) {
21
- break;
22
- }
23
- if (entries.length > 0) {
24
- break;
25
- }
26
- await promises_1.default.rmdir(current);
27
- current = node_path_1.default.dirname(current);
28
- }
29
- }
30
9
  async function deleteSessionArtifact(sessionId, artifactPath) {
10
+ var _a, _b;
31
11
  const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
32
- const sessionRoot = node_path_1.default.resolve((0, paths_1.getSessionDir)(sessionId));
33
- const [state, content] = await Promise.all([
34
- (0, artifact_storage_1.readArtifactLatestState)(sessionId, normalizedPath),
35
- (0, artifact_storage_1.readArtifactContentSnapshot)(sessionId, normalizedPath),
36
- ]);
37
- let exists = Boolean(state === null || state === void 0 ? void 0 : state.byteLength) || content !== null;
38
- if (!exists) {
39
- try {
40
- await promises_1.default.access((0, paths_1.resolveArtifactPath)(sessionId, normalizedPath));
41
- exists = true;
42
- }
43
- catch (_a) {
44
- exists = false;
45
- }
46
- }
47
- if (!exists) {
12
+ if (!(await (0, artifact_storage_1.sessionArtifactExistsOnStorage)(sessionId, normalizedPath))) {
48
13
  throw new Error(`Session artifact not found: ${normalizedPath}`);
49
14
  }
50
15
  (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().evictDocument(sessionId, normalizedPath);
51
16
  await (0, artifact_storage_1.deleteArtifactStorageFiles)(sessionId, normalizedPath);
52
- const contentParent = node_path_1.default.dirname(node_path_1.default.join(sessionRoot, normalizedPath));
53
- await pruneEmptyParentDirs(contentParent, sessionRoot);
17
+ const remaining = await (0, list_session_artifacts_1.listSessionArtifacts)(sessionId);
18
+ if (remaining.length === 0) {
19
+ await (0, list_library_items_1.clearChatHasArtifacts)(sessionId);
20
+ }
21
+ else {
22
+ const previewPath = (_b = (_a = remaining.find((file) => file.path === 'index.html')) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : remaining[0].path;
23
+ await (0, list_library_items_1.markChatHasArtifacts)(sessionId, previewPath, remaining.length);
24
+ }
54
25
  return { path: normalizedPath };
55
26
  }
56
27
  //# sourceMappingURL=delete-session-artifact.js.map