@multiplayer-app/sandbox 0.0.32 → 0.0.33-beta.2

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 (116) hide show
  1. package/dist/agents/content-generator.agent.d.ts +8 -0
  2. package/dist/agents/content-generator.agent.d.ts.map +1 -1
  3. package/dist/agents/content-generator.agent.js +53 -6
  4. package/dist/agents/content-generator.agent.js.map +1 -1
  5. package/dist/agents/notebook.agent.d.ts.map +1 -1
  6. package/dist/agents/notebook.agent.js +2 -1
  7. package/dist/agents/notebook.agent.js.map +1 -1
  8. package/dist/agents/shared/build-plan.tools.d.ts.map +1 -1
  9. package/dist/agents/shared/build-plan.tools.js +4 -4
  10. package/dist/agents/shared/build-plan.tools.js.map +1 -1
  11. package/dist/agents/shared/content-generator-system-prompt.d.ts +3 -2
  12. package/dist/agents/shared/content-generator-system-prompt.d.ts.map +1 -1
  13. package/dist/agents/shared/content-generator-system-prompt.js +41 -24
  14. package/dist/agents/shared/content-generator-system-prompt.js.map +1 -1
  15. package/dist/agents/shared/publish-session-artifacts.tool.d.ts +5 -0
  16. package/dist/agents/shared/publish-session-artifacts.tool.d.ts.map +1 -1
  17. package/dist/agents/shared/publish-session-artifacts.tool.js +154 -15
  18. package/dist/agents/shared/publish-session-artifacts.tool.js.map +1 -1
  19. package/dist/agents/shared/session-quality-report.tool.js +1 -1
  20. package/dist/agents/shared/session-quality-report.tool.js.map +1 -1
  21. package/dist/agents/shared/update-session-artifacts.tool.d.ts +5 -0
  22. package/dist/agents/shared/update-session-artifacts.tool.d.ts.map +1 -1
  23. package/dist/agents/shared/update-session-artifacts.tool.js +136 -26
  24. package/dist/agents/shared/update-session-artifacts.tool.js.map +1 -1
  25. package/dist/agents/shared/validate-artifact-content.tools.d.ts +4 -0
  26. package/dist/agents/shared/validate-artifact-content.tools.d.ts.map +1 -1
  27. package/dist/agents/shared/validate-artifact-content.tools.js +24 -1
  28. package/dist/agents/shared/validate-artifact-content.tools.js.map +1 -1
  29. package/dist/agents/skills/designer.skill.d.ts.map +1 -1
  30. package/dist/agents/skills/designer.skill.js +75 -113
  31. package/dist/agents/skills/designer.skill.js.map +1 -1
  32. package/dist/agents/skills/skill-injection.d.ts.map +1 -1
  33. package/dist/agents/skills/skill-injection.js +9 -3
  34. package/dist/agents/skills/skill-injection.js.map +1 -1
  35. package/dist/context.d.ts +4 -0
  36. package/dist/context.d.ts.map +1 -1
  37. package/dist/context.js.map +1 -1
  38. package/dist/create-builder-api.d.ts +6 -0
  39. package/dist/create-builder-api.d.ts.map +1 -1
  40. package/dist/create-builder-api.js +2 -0
  41. package/dist/create-builder-api.js.map +1 -1
  42. package/dist/index.d.ts +4 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +6 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/lib/notebooks/notebook-storage-paths.d.ts +8 -0
  47. package/dist/lib/notebooks/notebook-storage-paths.d.ts.map +1 -0
  48. package/dist/lib/notebooks/notebook-storage-paths.js +22 -0
  49. package/dist/lib/notebooks/notebook-storage-paths.js.map +1 -0
  50. package/dist/lib/notebooks/notebook-yjs-content.d.ts +6 -0
  51. package/dist/lib/notebooks/notebook-yjs-content.d.ts.map +1 -0
  52. package/dist/lib/notebooks/notebook-yjs-content.js +42 -0
  53. package/dist/lib/notebooks/notebook-yjs-content.js.map +1 -0
  54. package/dist/lib/object-storage/keys.d.ts +1 -0
  55. package/dist/lib/object-storage/keys.d.ts.map +1 -1
  56. package/dist/lib/object-storage/keys.js +5 -0
  57. package/dist/lib/object-storage/keys.js.map +1 -1
  58. package/dist/lib/object-storage/named-snapshot-paths.d.ts +9 -0
  59. package/dist/lib/object-storage/named-snapshot-paths.d.ts.map +1 -0
  60. package/dist/lib/object-storage/named-snapshot-paths.js +39 -0
  61. package/dist/lib/object-storage/named-snapshot-paths.js.map +1 -0
  62. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts +1 -1
  63. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts.map +1 -1
  64. package/dist/lib/session-artifacts/hashline-diff-guide.js +9 -5
  65. package/dist/lib/session-artifacts/hashline-diff-guide.js.map +1 -1
  66. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts +13 -0
  67. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts.map +1 -1
  68. package/dist/lib/session-artifacts/parse-hashline-diff.js +72 -0
  69. package/dist/lib/session-artifacts/parse-hashline-diff.js.map +1 -1
  70. package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -1
  71. package/dist/lib/session-pages/artifact-quality-audit.js +19 -14
  72. package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -1
  73. package/dist/lib/session-pages/artifact-storage-paths.d.ts +1 -0
  74. package/dist/lib/session-pages/artifact-storage-paths.d.ts.map +1 -1
  75. package/dist/lib/session-pages/artifact-storage-paths.js +9 -5
  76. package/dist/lib/session-pages/artifact-storage-paths.js.map +1 -1
  77. package/dist/lib/session-pages/html-artifact-template.d.ts +16 -0
  78. package/dist/lib/session-pages/html-artifact-template.d.ts.map +1 -1
  79. package/dist/lib/session-pages/html-artifact-template.js +166 -10
  80. package/dist/lib/session-pages/html-artifact-template.js.map +1 -1
  81. package/dist/lib/session-pages/index.d.ts +4 -0
  82. package/dist/lib/session-pages/index.d.ts.map +1 -1
  83. package/dist/lib/session-pages/index.js +11 -1
  84. package/dist/lib/session-pages/index.js.map +1 -1
  85. package/dist/lib/session-pages/write-session-artifacts.d.ts +1 -0
  86. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  87. package/dist/lib/session-pages/write-session-artifacts.js +4 -1
  88. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  89. package/dist/lib/session-plans/build-plan.d.ts +13 -3
  90. package/dist/lib/session-plans/build-plan.d.ts.map +1 -1
  91. package/dist/lib/session-plans/build-plan.js +37 -6
  92. package/dist/lib/session-plans/build-plan.js.map +1 -1
  93. package/dist/lib/yjs-pending/flush-worker.d.ts +1 -1
  94. package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -1
  95. package/dist/lib/yjs-pending/flush-worker.js +3 -33
  96. package/dist/lib/yjs-pending/flush-worker.js.map +1 -1
  97. package/dist/lib/yjs-pending/snapshot-retention.d.ts +6 -0
  98. package/dist/lib/yjs-pending/snapshot-retention.d.ts.map +1 -0
  99. package/dist/lib/yjs-pending/snapshot-retention.js +33 -0
  100. package/dist/lib/yjs-pending/snapshot-retention.js.map +1 -0
  101. package/dist/lib/yjs-pending/yjs-persistence.d.ts +1 -0
  102. package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -1
  103. package/dist/lib/yjs-pending/yjs-persistence.js +36 -0
  104. package/dist/lib/yjs-pending/yjs-persistence.js.map +1 -1
  105. package/dist/realtime/session-artifact-yjs-store.d.ts +21 -0
  106. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  107. package/dist/realtime/session-artifact-yjs-store.js +84 -0
  108. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  109. package/dist/routes/notebooks.d.ts.map +1 -1
  110. package/dist/routes/notebooks.js +2 -0
  111. package/dist/routes/notebooks.js.map +1 -1
  112. package/dist/routes/schemas.d.ts +2 -2
  113. package/dist/server.d.ts.map +1 -1
  114. package/dist/server.js +2 -0
  115. package/dist/server.js.map +1 -1
  116. package/package.json +4 -4
@@ -7,10 +7,12 @@ exports.sessionArtifactNamedSnapshotKey = sessionArtifactNamedSnapshotKey;
7
7
  exports.notebookPrefix = notebookPrefix;
8
8
  exports.notebookContentKey = notebookContentKey;
9
9
  exports.notebookYjsStateKey = notebookYjsStateKey;
10
+ exports.notebookNamedSnapshotKey = notebookNamedSnapshotKey;
10
11
  exports.isSessionArtifactUserFacingKey = isSessionArtifactUserFacingKey;
11
12
  exports.relativeSessionArtifactPath = relativeSessionArtifactPath;
12
13
  const paths_1 = require("../session-pages/paths");
13
14
  const artifact_storage_paths_1 = require("../session-pages/artifact-storage-paths");
15
+ const notebook_storage_paths_1 = require("../notebooks/notebook-storage-paths");
14
16
  function assertSafeSegment(value, label) {
15
17
  if (!value || value.includes('..') || value.includes('/') || value.includes('\\')) {
16
18
  throw new Error(`Invalid ${label}`);
@@ -38,6 +40,9 @@ function notebookContentKey(accountId, notebookId) {
38
40
  function notebookYjsStateKey(accountId, notebookId) {
39
41
  return `${notebookPrefix(accountId, notebookId)}yjs.state`;
40
42
  }
43
+ function notebookNamedSnapshotKey(accountId, notebookId, at = new Date()) {
44
+ return `${notebookPrefix(accountId, notebookId)}${(0, notebook_storage_paths_1.notebookContentSnapshotPath)(at)}`;
45
+ }
41
46
  function isSessionArtifactUserFacingKey(prefix, key) {
42
47
  if (!key.startsWith(prefix)) {
43
48
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/lib/object-storage/keys.ts"],"names":[],"mappings":";;AAcA,wDAEC;AAED,8DAMC;AAED,sEAMC;AAED,0EAOC;AAED,wCAEC;AAED,gDAEC;AAED,kDAEC;AAED,wEAMC;AAED,kEAEC;AAjED,kDAA8D;AAC9D,oFAIgD;AAEhD,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,sBAAsB,CAAC,SAAiB,EAAE,SAAiB;IACzE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,aAAa,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAA;AAC9G,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,EAAE,CAAA;AAChG,CAAC;AAED,SAAgB,6BAA6B,CAC3C,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,gDAAuB,EAAC,YAAY,CAAC,CAAC,CAAA;AAC/F,CAAC;AAED,SAAgB,+BAA+B,CAC7C,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,KAAW,IAAI,IAAI,EAAE;IAErB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,6CAAoB,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB,EAAE,UAAkB;IAClE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,cAAc,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAA;AACjH,CAAC;AAED,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,UAAkB;IACtE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAA;AAC/D,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;IACvE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAA;AAC5D,CAAC;AAED,SAAgB,8BAA8B,CAAC,MAAc,EAAE,GAAW;IACxE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAA,iDAAwB,EAAC,QAAQ,CAAC,CAAA;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAAc,EAAE,GAAW;IACrE,OAAO,IAAA,6BAAqB,EAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/lib/object-storage/keys.ts"],"names":[],"mappings":";;AAeA,wDAEC;AAED,8DAMC;AAED,sEAMC;AAED,0EAOC;AAED,wCAEC;AAED,gDAEC;AAED,kDAEC;AAED,4DAMC;AAED,wEAMC;AAED,kEAEC;AA1ED,kDAA8D;AAC9D,oFAIgD;AAChD,gFAAiF;AAEjF,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,sBAAsB,CAAC,SAAiB,EAAE,SAAiB;IACzE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,aAAa,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAA;AAC9G,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,EAAE,CAAA;AAChG,CAAC;AAED,SAAgB,6BAA6B,CAC3C,SAAiB,EACjB,SAAiB,EACjB,YAAoB;IAEpB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,gDAAuB,EAAC,YAAY,CAAC,CAAC,CAAA;AAC/F,CAAC;AAED,SAAgB,+BAA+B,CAC7C,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,KAAW,IAAI,IAAI,EAAE;IAErB,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAA,6CAAoB,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB,EAAE,UAAkB;IAClE,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,cAAc,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAA;AACjH,CAAC;AAED,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,UAAkB;IACtE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAA;AAC/D,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;IACvE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAA;AAC5D,CAAC;AAED,SAAgB,wBAAwB,CACtC,SAAiB,EACjB,UAAkB,EAClB,KAAW,IAAI,IAAI,EAAE;IAErB,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAA,oDAA2B,EAAC,EAAE,CAAC,EAAE,CAAA;AACrF,CAAC;AAED,SAAgB,8BAA8B,CAAC,MAAc,EAAE,GAAW;IACxE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAA,iDAAwB,EAAC,QAAQ,CAAC,CAAA;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAAc,EAAE,GAAW;IACrE,OAAO,IAAA,6BAAqB,EAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AACxD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Shared dated snapshot suffix used by session artifacts and notebooks. */
2
+ export declare const NAMED_SNAPSHOT_SEGMENT = ".snapshot-";
3
+ export declare function formatNamedSnapshotTimestamp(at: Date): string;
4
+ export declare function namedSnapshotSuffix(at: Date): string;
5
+ export declare function parseNamedSnapshotTimestamp(pathOrKey: string): number | null;
6
+ export declare function hasNamedSnapshotTimestamp(pathOrKey: string): boolean;
7
+ /** Whether `relativePath` is `{basePath}.snapshot-{timestamp}` for any nested base path. */
8
+ export declare function isDatedSnapshotForBase(relativePath: string, basePath: string): boolean;
9
+ //# sourceMappingURL=named-snapshot-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-snapshot-paths.d.ts","sourceRoot":"","sources":["../../../src/lib/object-storage/named-snapshot-paths.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,eAAe,CAAA;AAKlD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,CAE7D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,CAEpD;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY5E;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,4FAA4F;AAC5F,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtF"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NAMED_SNAPSHOT_SEGMENT = void 0;
4
+ exports.formatNamedSnapshotTimestamp = formatNamedSnapshotTimestamp;
5
+ exports.namedSnapshotSuffix = namedSnapshotSuffix;
6
+ exports.parseNamedSnapshotTimestamp = parseNamedSnapshotTimestamp;
7
+ exports.hasNamedSnapshotTimestamp = hasNamedSnapshotTimestamp;
8
+ exports.isDatedSnapshotForBase = isDatedSnapshotForBase;
9
+ /** Shared dated snapshot suffix used by session artifacts and notebooks. */
10
+ exports.NAMED_SNAPSHOT_SEGMENT = '.snapshot-';
11
+ const NAMED_SNAPSHOT_TIMESTAMP_PATTERN = /^(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z$/;
12
+ function formatNamedSnapshotTimestamp(at) {
13
+ return at.toISOString().replace(/[:.]/g, '-');
14
+ }
15
+ function namedSnapshotSuffix(at) {
16
+ return `${exports.NAMED_SNAPSHOT_SEGMENT}${formatNamedSnapshotTimestamp(at)}`;
17
+ }
18
+ function parseNamedSnapshotTimestamp(pathOrKey) {
19
+ const idx = pathOrKey.lastIndexOf(exports.NAMED_SNAPSHOT_SEGMENT);
20
+ if (idx < 0) {
21
+ return null;
22
+ }
23
+ const stamp = pathOrKey.slice(idx + exports.NAMED_SNAPSHOT_SEGMENT.length);
24
+ const match = NAMED_SNAPSHOT_TIMESTAMP_PATTERN.exec(stamp);
25
+ if (!match) {
26
+ return null;
27
+ }
28
+ const ms = Date.parse(`${match[1]}T${match[2]}:${match[3]}:${match[4]}.${match[5]}Z`);
29
+ return Number.isFinite(ms) ? ms : null;
30
+ }
31
+ function hasNamedSnapshotTimestamp(pathOrKey) {
32
+ return parseNamedSnapshotTimestamp(pathOrKey) !== null;
33
+ }
34
+ /** Whether `relativePath` is `{basePath}.snapshot-{timestamp}` for any nested base path. */
35
+ function isDatedSnapshotForBase(relativePath, basePath) {
36
+ return (relativePath.startsWith(`${basePath}${exports.NAMED_SNAPSHOT_SEGMENT}`) &&
37
+ hasNamedSnapshotTimestamp(relativePath));
38
+ }
39
+ //# sourceMappingURL=named-snapshot-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-snapshot-paths.js","sourceRoot":"","sources":["../../../src/lib/object-storage/named-snapshot-paths.ts"],"names":[],"mappings":";;;AAMA,oEAEC;AAED,kDAEC;AAED,kEAYC;AAED,8DAEC;AAGD,wDAKC;AAtCD,4EAA4E;AAC/D,QAAA,sBAAsB,GAAG,YAAY,CAAA;AAElD,MAAM,gCAAgC,GACpC,wDAAwD,CAAA;AAE1D,SAAgB,4BAA4B,CAAC,EAAQ;IACnD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,SAAgB,mBAAmB,CAAC,EAAQ;IAC1C,OAAO,GAAG,8BAAsB,GAAG,4BAA4B,CAAC,EAAE,CAAC,EAAE,CAAA;AACvE,CAAC;AAED,SAAgB,2BAA2B,CAAC,SAAiB;IAC3D,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,8BAAsB,CAAC,CAAA;IACzD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAsB,CAAC,MAAM,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACrF,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACxC,CAAC;AAED,SAAgB,yBAAyB,CAAC,SAAiB;IACzD,OAAO,2BAA2B,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;AACxD,CAAC;AAED,4FAA4F;AAC5F,SAAgB,sBAAsB,CAAC,YAAoB,EAAE,QAAgB;IAC3E,OAAO,CACL,YAAY,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,8BAAsB,EAAE,CAAC;QAC/D,yBAAyB,CAAC,YAAY,CAAC,CACxC,CAAA;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** Injected into session-artefact-updater system prompt. */
2
- export declare const HASHLINE_DIFF_GUIDE = "Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4). Use ONLY this format in applySessionArtifactDiff:\n\nSearch/replace blocks (tag range on the first line; optional search context until >>>REPLACE is ignored):\n<<<SEARCH 45:d4..52:a3\n old text\n>>>REPLACE\n new data goes here\n<<<END\n\nRules:\n- range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.\n- you may include the old lines between <<<SEARCH and >>>REPLACE for clarity; edits are applied by tags only.\n- A single-tag range (e.g. 10:ab..10:ab) replaces one line.\n- Apply minimal SEARCH/REPLACE blocks; multiple SEARCH/REPLACE blocks are allowed.";
2
+ export declare const HASHLINE_DIFF_GUIDE = "Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4).\n\n## Prefer wholesale rewrite for structural work\nIf the task fixes duplicates, broken <script>/<footer>, nested sections, consistency polish, or touches more than a small localized change: pass the COMPLETE new page (fragment or full document) as `diff` with NO <<<SEARCH markers. The server replaces the file atomically. Do NOT try to \"patch your way\" out of corrupted HTML.\n\n## Small localized edits \u2014 hashline format\n<<<SEARCH 45:d4..52:a3\n old text (optional; ignored)\n>>>REPLACE\n new data goes here\n<<<END\n\nRules:\n- range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.\n- A single-tag range (e.g. 10:ab..10:ab) replaces one line.\n- Multiple SEARCH/REPLACE blocks are allowed; apply minimal ranges.\n- On hash mismatch: call getSessionArtifactLatestContent again \u2014 do not resend the stale diff.\n- Never invent <<<SEARCH markers around a full page; that fails classification. Either valid blocks OR a clean wholesale body.";
3
3
  //# sourceMappingURL=hashline-diff-guide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashline-diff-guide.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,qtBAamD,CAAA"}
1
+ {"version":3,"file":"hashline-diff-guide.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,imCAiB+F,CAAA"}
@@ -2,18 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HASHLINE_DIFF_GUIDE = void 0;
4
4
  /** Injected into session-artefact-updater system prompt. */
5
- exports.HASHLINE_DIFF_GUIDE = `Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4). Use ONLY this format in applySessionArtifactDiff:
5
+ exports.HASHLINE_DIFF_GUIDE = `Hashline diffs reference line tags from getSessionArtifactLatestContent (format lineNumber:hash, e.g. 45:d4).
6
6
 
7
- Search/replace blocks (tag range on the first line; optional search context until >>>REPLACE is ignored):
7
+ ## Prefer wholesale rewrite for structural work
8
+ If the task fixes duplicates, broken <script>/<footer>, nested sections, consistency polish, or touches more than a small localized change: pass the COMPLETE new page (fragment or full document) as \`diff\` with NO <<<SEARCH markers. The server replaces the file atomically. Do NOT try to "patch your way" out of corrupted HTML.
9
+
10
+ ## Small localized edits — hashline format
8
11
  <<<SEARCH 45:d4..52:a3
9
- old text
12
+ old text (optional; ignored)
10
13
  >>>REPLACE
11
14
  new data goes here
12
15
  <<<END
13
16
 
14
17
  Rules:
15
18
  - range start/end tags on the <<<SEARCH line must come from the latest content snapshot you just read.
16
- - you may include the old lines between <<<SEARCH and >>>REPLACE for clarity; edits are applied by tags only.
17
19
  - A single-tag range (e.g. 10:ab..10:ab) replaces one line.
18
- - Apply minimal SEARCH/REPLACE blocks; multiple SEARCH/REPLACE blocks are allowed.`;
20
+ - Multiple SEARCH/REPLACE blocks are allowed; apply minimal ranges.
21
+ - On hash mismatch: call getSessionArtifactLatestContent again — do not resend the stale diff.
22
+ - Never invent <<<SEARCH markers around a full page; that fails classification. Either valid blocks OR a clean wholesale body.`;
19
23
  //# sourceMappingURL=hashline-diff-guide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashline-diff-guide.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC/C,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;mFAagD,CAAA"}
1
+ {"version":3,"file":"hashline-diff-guide.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/hashline-diff-guide.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC/C,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;+HAiB4F,CAAA"}
@@ -7,5 +7,18 @@ interface Patch {
7
7
  export declare function parsePatches(input: string): Patch[];
8
8
  export declare function applyPatchToLines(lines: string[], patchText: string): string[];
9
9
  export declare function applyPatch(ytext: Y.Text, patchText: string): void;
10
+ export type ArtifactDiffClassification = {
11
+ kind: 'hashline';
12
+ patchCount: number;
13
+ } | {
14
+ kind: 'replace';
15
+ content: string;
16
+ } | {
17
+ kind: 'invalid';
18
+ reason: string;
19
+ };
20
+ export declare function classifyArtifactDiff(diff: string, options: {
21
+ isHtml: boolean;
22
+ }): ArtifactDiffClassification;
10
23
  export {};
11
24
  //# sourceMappingURL=parse-hashline-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-hashline-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAQxB,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAmBnD;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAS9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAcjE"}
1
+ {"version":3,"file":"parse-hashline-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAQxB,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAqBnD;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAY9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAcjE;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AA6BvC,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC3B,0BAA0B,CA+C5B"}
@@ -3,11 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parsePatches = parsePatches;
4
4
  exports.applyPatchToLines = applyPatchToLines;
5
5
  exports.applyPatch = applyPatch;
6
+ exports.classifyArtifactDiff = classifyArtifactDiff;
6
7
  const hashline_tags_1 = require("./hashline-tags");
7
8
  const PATCH_PATTERN = /<<<SEARCH\s+([^\n]+)\n([\s\S]*?)>>>REPLACE\n([\s\S]*?)<<<END/g;
9
+ /** Loose marker detection — models invent spacing/casing variants. */
10
+ const SEARCH_MARKER = /<<<\s*SEARCH/i;
8
11
  function parsePatches(input) {
9
12
  const patches = [];
10
13
  let match;
14
+ // Reset lastIndex in case of prior exec on the shared regex.
15
+ PATCH_PATTERN.lastIndex = 0;
11
16
  while ((match = PATCH_PATTERN.exec(input)) !== null) {
12
17
  let replace = match[3];
13
18
  if (replace.endsWith('\n')) {
@@ -30,6 +35,9 @@ function sortPatchesForApplication(patches) {
30
35
  }
31
36
  function applyPatchToLines(lines, patchText) {
32
37
  const patches = sortPatchesForApplication(parsePatches(patchText));
38
+ if (patches.length === 0) {
39
+ throw new Error('No SEARCH/REPLACE blocks found in diff');
40
+ }
33
41
  let nextLines = lines;
34
42
  for (const patch of patches) {
35
43
  nextLines = (0, hashline_tags_1.applyTaggedLinePatch)(nextLines, patch.range, patch.replace);
@@ -51,4 +59,68 @@ function applyPatch(ytext, patchText) {
51
59
  }
52
60
  });
53
61
  }
62
+ /**
63
+ * Decide how to interpret applySessionArtifactDiff input.
64
+ *
65
+ * Models often send a full page when hashline is hard, or malformed <<<SEARCH
66
+ * markers that previously fell through to applyPatchText and threw — after
67
+ * partial retries that left duplicated sections / orphaned script bodies.
68
+ */
69
+ function looksLikeWholesaleHtml(html) {
70
+ var _a;
71
+ const looksLikeFullDocument = /<!DOCTYPE\s+html|<html[\s>]/i.test(html);
72
+ const sectionLikeCount = ((_a = html.match(/<(?:section|header|footer|main)[\s>]/gi)) !== null && _a !== void 0 ? _a : []).length;
73
+ const looksLikeFragmentPage = /<(?:header|main|footer)[\s>]/i.test(html) && html.length >= 600 && sectionLikeCount >= 2;
74
+ const looksLikeSubstantialBody = /<(?:main|body)[\s>]/i.test(html) && html.length >= 800;
75
+ return looksLikeFullDocument || looksLikeFragmentPage || looksLikeSubstantialBody;
76
+ }
77
+ /** Drop incomplete hashline marker lines so a botched patch can fall through
78
+ * to wholesale replace when the payload is actually a full page. */
79
+ function stripBrokenHashlineMarkers(diff) {
80
+ return diff
81
+ .replace(/^<<<\s*SEARCH[^\n]*\n?/gim, '')
82
+ .replace(/^>>>\s*REPLACE\s*\n?/gim, '')
83
+ .replace(/^<<<\s*END\s*$/gim, '')
84
+ .trim();
85
+ }
86
+ function classifyArtifactDiff(diff, options) {
87
+ const trimmed = diff.trim();
88
+ if (!trimmed) {
89
+ return {
90
+ kind: 'invalid',
91
+ reason: 'Empty diff — pass hashline SEARCH/REPLACE blocks or the complete new file contents.',
92
+ };
93
+ }
94
+ const patches = parsePatches(trimmed);
95
+ if (patches.length > 0) {
96
+ return { kind: 'hashline', patchCount: patches.length };
97
+ }
98
+ // Mentions SEARCH but nothing parsed — try recovering a wholesale page
99
+ // (models often wrap a full rewrite in a broken <<<SEARCH). Otherwise reject.
100
+ if (SEARCH_MARKER.test(trimmed)) {
101
+ const recovered = stripBrokenHashlineMarkers(trimmed);
102
+ if (recovered && !SEARCH_MARKER.test(recovered)) {
103
+ if (!options.isHtml) {
104
+ return { kind: 'replace', content: recovered };
105
+ }
106
+ if (looksLikeWholesaleHtml(recovered)) {
107
+ return { kind: 'replace', content: recovered };
108
+ }
109
+ }
110
+ return {
111
+ kind: 'invalid',
112
+ reason: 'Malformed hashline diff: found <<<SEARCH but no complete <<<SEARCH … >>>REPLACE … <<<END blocks. Do NOT retry hashline — send the COMPLETE file contents with no SEARCH markers for a wholesale rewrite.',
113
+ };
114
+ }
115
+ if (!options.isHtml) {
116
+ return { kind: 'replace', content: trimmed };
117
+ }
118
+ if (looksLikeWholesaleHtml(trimmed)) {
119
+ return { kind: 'replace', content: trimmed };
120
+ }
121
+ return {
122
+ kind: 'invalid',
123
+ reason: 'HTML diff is neither valid hashline SEARCH/REPLACE nor a complete page rewrite. For small edits use <<<SEARCH tag..tag >>>REPLACE … <<<END with fresh tags. For structural fixes (duplicates, broken script/footer, consistency polish) send the COMPLETE page body as diff with no SEARCH markers.',
124
+ };
125
+ }
54
126
  //# sourceMappingURL=parse-hashline-diff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-hashline-diff.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":";;AAiBA,oCAmBC;AAUD,8CASC;AAED,gCAcC;AAtED,mDAKwB;AAQxB,MAAM,aAAa,GACjB,+DAA+D,CAAA;AAEjE,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,IAAI,KAA6B,CAAA;IAEjC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACrD,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACvD,OAAO,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAe,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAElE,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAA,oCAAoB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,SAAiB;;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,MAAA,KAAK,CAAC,GAAG,0CAAE,QAAQ,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,OAAO,GAAG,IAAA,gCAAgB,EAAC,iBAAiB,CAAC,IAAA,iCAAiB,EAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1F,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"parse-hashline-diff.js","sourceRoot":"","sources":["../../../src/lib/session-artifacts/parse-hashline-diff.ts"],"names":[],"mappings":";;AAoBA,oCAqBC;AAUD,8CAYC;AAED,gCAcC;AAkCD,oDAkDC;AAlKD,mDAKwB;AAQxB,MAAM,aAAa,GACjB,+DAA+D,CAAA;AAEjE,sEAAsE;AACtE,MAAM,aAAa,GAAG,eAAe,CAAA;AAErC,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,IAAI,KAA6B,CAAA;IACjC,6DAA6D;IAC7D,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACrD,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAA;QACvD,OAAO,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAe,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAA,oCAAoB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,SAAiB;;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,MAAA,KAAK,CAAC,GAAG,0CAAE,QAAQ,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,OAAO,GAAG,IAAA,gCAAgB,EAAC,iBAAiB,CAAC,IAAA,iCAAiB,EAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1F,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAOD;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,IAAY;;IAC1C,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAA;IAC5F,MAAM,qBAAqB,GACzB,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,gBAAgB,IAAI,CAAC,CAAA;IAC3F,MAAM,wBAAwB,GAC5B,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA;IACzD,OAAO,qBAAqB,IAAI,qBAAqB,IAAI,wBAAwB,CAAA;AACnF,CAAC;AAED;oEACoE;AACpE,SAAS,0BAA0B,CAAC,IAAY;IAC9C,OAAO,IAAI;SACR,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,IAAI,EAAE,CAAA;AACX,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,OAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EACJ,qFAAqF;SACxF,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IACzD,CAAC;IAED,uEAAuE;IACvE,8EAA8E;IAC9E,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAA;QACrD,IAAI,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YAChD,CAAC;YACD,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YAChD,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EACJ,0MAA0M;SAC7M,CAAA;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC9C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,MAAM,EACJ,qSAAqS;KACxS,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-quality-audit.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-quality-audit.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AA+BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAgTlE"}
1
+ {"version":3,"file":"artifact-quality-audit.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-quality-audit.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AA+BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAoTlE"}
@@ -149,25 +149,29 @@ function auditHtmlArtifact(html) {
149
149
  // Contrast analysis is best-effort — never break the audit on it.
150
150
  }
151
151
  }
152
- // Distinctive web fonts are required the shell no longer injects Inter.
153
- // Google Fonts link OR an explicit font-family in <style> satisfies this.
154
- if (!/fonts\.googleapis\.com/i.test(html) &&
155
- !/font-family\s*:/i.test(styles) &&
156
- !/<link[^>]+fonts\.(?:googleapis|gstatic)\.com/i.test(html)) {
152
+ // Distinctive web fonts: the shell auto-injects a Google Fonts <link> when
153
+ // missing (see ensureWebFontHeadExtras). Leftover gaps are advisory only
154
+ // blocking publish on fonts caused endless "revising once" loops.
155
+ const hasFontLink = /fonts\.googleapis\.com|fonts\.gstatic\.com|fonts\.bunny\.net/i.test(html) ||
156
+ /<link[^>]+(?:fonts\.(?:googleapis|gstatic|bunny)\.com|css2\?family=)/i.test(html);
157
+ const hasFontFamily = /font-family\s*:/i.test(styles) || /font-family\s*:/i.test(html);
158
+ if (!hasFontLink || !hasFontFamily) {
157
159
  findings.push({
158
160
  rule: 'missing-web-font',
159
- severity: 'error',
160
- message: 'No web font loadedadd the design-brief Google Font pairing (<link href="https://fonts.googleapis.com/css2?family=…"> plus font-family on body). Never rely on system/Inter defaults.',
161
+ severity: 'warning',
162
+ message: 'Web font incompleteprefer a design-brief Google Fonts <link> plus font-family on body. The server usually injects a fallback pairing automatically.',
161
163
  });
162
164
  }
165
+ // Emoji are stripped in prepareHtmlArtifactContent before publish/update.
166
+ // Leftover glyphs (raw audit without prepare) are advisory — never block.
163
167
  const emojiMatches = ((_e = markupOnly.match(/\p{Extended_Pictographic}/gu)) !== null && _e !== void 0 ? _e : []).filter((char) => !'©®™°†‡§¶'.includes(char));
164
168
  if (emojiMatches.length > 0) {
165
169
  findings.push({
166
170
  rule: 'emoji-icons',
167
- severity: 'error',
171
+ severity: 'warning',
168
172
  message: `${emojiMatches.length} emoji character(s) in the markup (${[...new Set(emojiMatches)]
169
173
  .slice(0, 6)
170
- .join(' ')}) — emoji are not icons; use inline SVG icons (Lucide/Heroicons, stroke="currentColor") unless the user explicitly asked for emoji content.`,
174
+ .join(' ')}) — prefer inline SVG icons; the server strips emoji on publish/update.`,
171
175
  });
172
176
  }
173
177
  const markupLength = markupOnly.length;
@@ -203,19 +207,20 @@ function auditHtmlArtifact(html) {
203
207
  message: 'Generic sample data ("Item 1"…) found — use realistic, internally consistent examples.',
204
208
  });
205
209
  }
206
- // Generic marketing filler — ships as "AI template" even when layout is fine.
210
+ // Generic marketing filler — server strips common phrases in prepareHtmlArtifactContent.
211
+ // Leftovers are advisory only so they cannot restart publish/revise loops.
207
212
  if (/\bwelcome\s+to\s+(?:our|the)\b/i.test(markupOnly)) {
208
213
  findings.push({
209
214
  rule: 'template-copy',
210
- severity: 'error',
211
- message: 'Template copy ("Welcome to our/the…") found — lead with the product outcome instead.',
215
+ severity: 'warning',
216
+ message: 'Template copy ("Welcome to our/the…") found — prefer leading with the product outcome. The server usually strips this phrase automatically.',
212
217
  });
213
218
  }
214
219
  if (/\b(?:revolutionary|seamless|cutting-edge|unleash(?:ing)?|empower(?:ing)?)\b/i.test(markupOnly)) {
215
220
  findings.push({
216
221
  rule: 'template-copy',
217
- severity: 'error',
218
- message: 'Banned template adjectives found (revolutionary/seamless/cutting-edge/unleash/empower) — use concrete, domain-specific language.',
222
+ severity: 'warning',
223
+ message: 'Banned template adjectives found (revolutionary/seamless/cutting-edge/unleash/empower) — prefer concrete, domain-specific language. The server usually rewrites these automatically.',
219
224
  });
220
225
  }
221
226
  // Inter is the default AI-page tell — designer skill and design brief forbid it.
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-quality-audit.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-quality-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-quality-audit.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-quality-audit.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare function artifactLatestStatePath(artifactPath: string): string;
4
4
  /** Relative path for a point-in-time content snapshot. */
5
5
  export declare function artifactSnapshotPath(artifactPath: string, at: Date): string;
6
6
  export declare function isArtifactLatestStatePath(relativePath: string): boolean;
7
+ /** Any session artifact sidecar snapshot, including nested paths like `src/App.tsx.snapshot-*`. */
7
8
  export declare function isArtifactSnapshotPath(relativePath: string): boolean;
8
9
  /** Sidecar files managed by the artifact storage layer (not user-facing artifacts). */
9
10
  export declare function isArtifactStorageSidecar(relativePath: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-storage-paths.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage-paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,4BAA4B,kBAAkB,CAAA;AAG3D,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,CAI3E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhF;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGzF"}
1
+ {"version":3,"file":"artifact-storage-paths.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage-paths.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,4BAA4B,kBAAkB,CAAA;AAE3D,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,CAG3E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAMpE;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhF;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGzF"}
@@ -9,8 +9,8 @@ exports.isArtifactStorageSidecar = isArtifactStorageSidecar;
9
9
  exports.artifactPathFromLatestStatePath = artifactPathFromLatestStatePath;
10
10
  exports.isSnapshotForArtifact = isSnapshotForArtifact;
11
11
  const paths_1 = require("./paths");
12
+ const named_snapshot_paths_1 = require("../object-storage/named-snapshot-paths");
12
13
  exports.ARTIFACT_LATEST_STATE_SUFFIX = '.latest.state';
13
- const SNAPSHOT_SEGMENT = '.snapshot-';
14
14
  /** Relative path for the persisted Yjs update blob. */
15
15
  function artifactLatestStatePath(artifactPath) {
16
16
  const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
@@ -19,14 +19,18 @@ function artifactLatestStatePath(artifactPath) {
19
19
  /** Relative path for a point-in-time content snapshot. */
20
20
  function artifactSnapshotPath(artifactPath, at) {
21
21
  const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
22
- const stamp = at.toISOString().replace(/[:.]/g, '-');
23
- return `${base}${SNAPSHOT_SEGMENT}${stamp}`;
22
+ return `${base}${(0, named_snapshot_paths_1.namedSnapshotSuffix)(at)}`;
24
23
  }
25
24
  function isArtifactLatestStatePath(relativePath) {
26
25
  return relativePath.endsWith(exports.ARTIFACT_LATEST_STATE_SUFFIX);
27
26
  }
27
+ /** Any session artifact sidecar snapshot, including nested paths like `src/App.tsx.snapshot-*`. */
28
28
  function isArtifactSnapshotPath(relativePath) {
29
- return relativePath.includes(SNAPSHOT_SEGMENT);
29
+ if (!(0, named_snapshot_paths_1.hasNamedSnapshotTimestamp)(relativePath)) {
30
+ return false;
31
+ }
32
+ const idx = relativePath.lastIndexOf(named_snapshot_paths_1.NAMED_SNAPSHOT_SEGMENT);
33
+ return idx > 0;
30
34
  }
31
35
  /** Sidecar files managed by the artifact storage layer (not user-facing artifacts). */
32
36
  function isArtifactStorageSidecar(relativePath) {
@@ -41,6 +45,6 @@ function artifactPathFromLatestStatePath(statePath) {
41
45
  /** Whether `relativePath` is a dated snapshot for `artifactPath`. */
42
46
  function isSnapshotForArtifact(relativePath, artifactPath) {
43
47
  const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
44
- return relativePath.startsWith(`${base}${SNAPSHOT_SEGMENT}`);
48
+ return (0, named_snapshot_paths_1.isDatedSnapshotForBase)(relativePath, base);
45
49
  }
46
50
  //# sourceMappingURL=artifact-storage-paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-storage-paths.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage-paths.ts"],"names":[],"mappings":";;;AAMA,0DAGC;AAGD,oDAIC;AAED,8DAEC;AAED,wDAEC;AAGD,4DAEC;AAED,0EAKC;AAGD,sDAGC;AA1CD,mCAA+C;AAElC,QAAA,4BAA4B,GAAG,eAAe,CAAA;AAC3D,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAErC,uDAAuD;AACvD,SAAgB,uBAAuB,CAAC,YAAoB;IAC1D,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,oCAA4B,EAAE,CAAA;AACjD,CAAC;AAED,0DAA0D;AAC1D,SAAgB,oBAAoB,CAAC,YAAoB,EAAE,EAAQ;IACjE,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACpD,OAAO,GAAG,IAAI,GAAG,gBAAgB,GAAG,KAAK,EAAE,CAAA;AAC7C,CAAC;AAED,SAAgB,yBAAyB,CAAC,YAAoB;IAC5D,OAAO,YAAY,CAAC,QAAQ,CAAC,oCAA4B,CAAC,CAAA;AAC5D,CAAC;AAED,SAAgB,sBAAsB,CAAC,YAAoB;IACzD,OAAO,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAChD,CAAC;AAED,uFAAuF;AACvF,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,yBAAyB,CAAC,YAAY,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAA;AACxF,CAAC;AAED,SAAgB,+BAA+B,CAAC,SAAiB;IAC/D,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,oCAA4B,CAAC,MAAM,CAAC,CAAA;AACjE,CAAC;AAED,qEAAqE;AACrE,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,YAAoB;IAC9E,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"artifact-storage-paths.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage-paths.ts"],"names":[],"mappings":";;;AAWA,0DAGC;AAGD,oDAGC;AAED,8DAEC;AAGD,wDAMC;AAGD,4DAEC;AAED,0EAKC;AAGD,sDAGC;AAnDD,mCAA+C;AAC/C,iFAK+C;AAElC,QAAA,4BAA4B,GAAG,eAAe,CAAA;AAE3D,uDAAuD;AACvD,SAAgB,uBAAuB,CAAC,YAAoB;IAC1D,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,oCAA4B,EAAE,CAAA;AACjD,CAAC;AAED,0DAA0D;AAC1D,SAAgB,oBAAoB,CAAC,YAAoB,EAAE,EAAQ;IACjE,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,IAAA,0CAAmB,EAAC,EAAE,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,SAAgB,yBAAyB,CAAC,YAAoB;IAC5D,OAAO,YAAY,CAAC,QAAQ,CAAC,oCAA4B,CAAC,CAAA;AAC5D,CAAC;AAED,mGAAmG;AACnG,SAAgB,sBAAsB,CAAC,YAAoB;IACzD,IAAI,CAAC,IAAA,gDAAyB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,6CAAsB,CAAC,CAAA;IAC5D,OAAO,GAAG,GAAG,CAAC,CAAA;AAChB,CAAC;AAED,uFAAuF;AACvF,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,yBAAyB,CAAC,YAAY,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAA;AACxF,CAAC;AAED,SAAgB,+BAA+B,CAAC,SAAiB;IAC/D,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,oCAA4B,CAAC,MAAM,CAAC,CAAA;AACjE,CAAC;AAED,qEAAqE;AACrE,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,YAAoB;IAC9E,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,IAAA,6CAAsB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC"}
@@ -3,7 +3,23 @@ export interface WrapHtmlFragmentOptions {
3
3
  lang?: string;
4
4
  }
5
5
  export declare function isHtmlFragment(content: string): boolean;
6
+ /**
7
+ * Repair missing webfont loading. Models often set font-family without the
8
+ * matching <link> (or forget both) — rejecting that caused endless revise loops.
9
+ * Prefer families already named in CSS; otherwise a non-Inter default pairing.
10
+ */
11
+ export declare function ensureWebFontHeadExtras(html: string): string[];
6
12
  export declare function wrapHtmlFragment(fragment: string, options?: WrapHtmlFragmentOptions): string;
13
+ /**
14
+ * Strip emoji-as-icons from markup. Models keep inserting 🚀/✨ then looping on
15
+ * the emoji-icons audit — repair beats reject.
16
+ */
17
+ export declare function stripEmojiIcons(html: string): string;
18
+ /**
19
+ * Neutralize the most common "AI template" phrases that otherwise fail the
20
+ * template-copy audit and trigger revise loops.
21
+ */
22
+ export declare function stripTemplateCopyPhrases(html: string): string;
7
23
  export declare function prepareHtmlArtifactContent(content: string, options?: {
8
24
  fragment?: boolean;
9
25
  title?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"html-artifact-template.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/html-artifact-template.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,MAAM,CAoBhG;AAUD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,MAAM,CAOR"}
1
+ {"version":3,"file":"html-artifact-template.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/html-artifact-template.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAsCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AAuCD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,MAAM,CAwBhG;AAsBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,MAAM,CASR"}