@caelo-cms/shared 0.10.57 → 0.10.58

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 (49) hide show
  1. package/dist/ai-tools.d.ts +19 -0
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +19 -9
  4. package/dist/ai-tools.js.map +1 -1
  5. package/dist/google-oauth.d.ts +22 -0
  6. package/dist/google-oauth.d.ts.map +1 -0
  7. package/dist/google-oauth.js +25 -0
  8. package/dist/google-oauth.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/link-canonicalise.d.ts +109 -0
  14. package/dist/link-canonicalise.d.ts.map +1 -0
  15. package/dist/link-canonicalise.js +471 -0
  16. package/dist/link-canonicalise.js.map +1 -0
  17. package/dist/link-refs.d.ts +63 -8
  18. package/dist/link-refs.d.ts.map +1 -1
  19. package/dist/link-refs.js +80 -14
  20. package/dist/link-refs.js.map +1 -1
  21. package/dist/media.d.ts.map +1 -1
  22. package/dist/media.js +15 -0
  23. package/dist/media.js.map +1 -1
  24. package/dist/nested-module-render.d.ts +17 -0
  25. package/dist/nested-module-render.d.ts.map +1 -1
  26. package/dist/nested-module-render.js +45 -6
  27. package/dist/nested-module-render.js.map +1 -1
  28. package/dist/preview-compose.d.ts.map +1 -1
  29. package/dist/preview-compose.js +12 -2
  30. package/dist/preview-compose.js.map +1 -1
  31. package/dist/theme-normalize.d.ts.map +1 -1
  32. package/dist/theme-normalize.js +17 -2
  33. package/dist/theme-normalize.js.map +1 -1
  34. package/dist/version.d.ts +2 -2
  35. package/dist/version.js +1 -1
  36. package/package.json +1 -1
  37. package/src/ai-tools.ts +22 -11
  38. package/src/google-oauth.ts +27 -0
  39. package/src/index.ts +2 -0
  40. package/src/link-canonicalise.test.ts +387 -0
  41. package/src/link-canonicalise.ts +598 -0
  42. package/src/link-refs.test.ts +206 -0
  43. package/src/link-refs.ts +119 -21
  44. package/src/media.ts +16 -0
  45. package/src/nested-module-render.ts +59 -4
  46. package/src/preview-compose.ts +11 -2
  47. package/src/theme-normalize-typography-subfields.test.ts +54 -0
  48. package/src/theme-normalize.ts +19 -2
  49. package/src/version.ts +1 -1
@@ -230,8 +230,12 @@ export function normalizeTokens(input) {
230
230
  // resulting document validates. applyDtcgWrites merges this into
231
231
  // any existing typography composite at the path so partial updates
232
232
  // don't erase sibling sub-fields.
233
+ // Numbers wrap too: the admin form coerces `.lineHeight` / `.fontWeight`
234
+ // to numbers, and an unwrapped `1.6` would replace the whole composite.
233
235
  let storedValue = rawValue;
234
- if (resolved.compositeWrap && typeof rawValue === "string" && !ALIAS_REGEX.test(rawValue)) {
236
+ if (resolved.compositeWrap &&
237
+ (typeof rawValue === "number" ||
238
+ (typeof rawValue === "string" && !ALIAS_REGEX.test(rawValue)))) {
235
239
  storedValue = { [resolved.compositeWrap]: rawValue };
236
240
  }
237
241
  else if (resolved.inferredType === "gradient" &&
@@ -248,11 +252,19 @@ export function normalizeTokens(input) {
248
252
  // rather than us silently inventing a gradient (CLAUDE.md §2).
249
253
  storedValue = gradientObjectToCss(rawValue) ?? rawValue;
250
254
  }
255
+ // Several sub-field inputs (`typography.body.fontSize` +
256
+ // `typography.body.lineHeight`) collapse onto the same composite
257
+ // path; merge them so the last one doesn't silently drop the others.
258
+ const prior = set[resolved.path];
259
+ if (resolved.compositeWrap && isPlainObject(prior) && isPlainObject(storedValue)) {
260
+ storedValue = { ...prior, ...storedValue };
261
+ }
251
262
  set[resolved.path] = storedValue;
252
263
  types[resolved.path] = resolved.inferredType;
253
264
  if (envelopeDescription !== undefined)
254
265
  descriptions[resolved.path] = envelopeDescription;
255
- paths.push(resolved.path);
266
+ if (!paths.includes(resolved.path))
267
+ paths.push(resolved.path);
256
268
  }
257
269
  return { set, types, descriptions, canonicalPaths: paths };
258
270
  }
@@ -643,4 +655,7 @@ function similarity(a, b) {
643
655
  function tokenise(s) {
644
656
  return s.split(/[.\-_]/).filter((p) => p.length > 0);
645
657
  }
658
+ function isPlainObject(v) {
659
+ return v !== null && typeof v === "object" && !Array.isArray(v);
660
+ }
646
661
  //# sourceMappingURL=theme-normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-normalize.js","sourceRoot":"","sources":["../src/theme-normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-normalize.js","sourceRoot":"","sources":["../src/theme-normalize.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiChG,MAAM,iBAAiB,GACrB,kGAAkG,CAAC;AACrG,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AACrF,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAC5C,MAAM,kBAAkB,GAAG,6CAA6C,CAAC;AACzE,oEAAoE;AACpE,oEAAoE;AACpE,wEAAwE;AACxE,uEAAuE;AACvE,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,0DAA0D,CAAC;AAExF;;;;;GAKG;AACH,MAAM,qBAAqB,GAA6B;IACtD,wCAAwC;IACxC,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,0BAA0B;IAC1B,iBAAiB;IACjB,4BAA4B;IAC5B,cAAc;IACd,yBAAyB;IACzB,aAAa;IACb,wBAAwB;IACxB,YAAY;IACZ,uBAAuB;IACvB,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,8BAA8B;IAC9B,eAAe;IACf,eAAe;IACf,oEAAoE;IACpE,mEAAmE;IACnE,yBAAyB;IACzB,+BAA+B;IAC/B,4BAA4B;IAC5B,+BAA+B;IAC/B,4BAA4B;IAC5B,kCAAkC;IAClC,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,yDAAyD;IACzD,+DAA+D;IAC/D,eAAe;IACf,iBAAiB;CAClB,CAAC;AAmBF,MAAM,UAAU,GAA2B;IACzC;QACE,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE;YACT,QAAQ;YACR,OAAO;YACP,aAAa;YACb,aAAa;YACb,cAAc;YACd,WAAW;YACX,aAAa;YACb,UAAU;YACV,SAAS;YACT,QAAQ;YACR,UAAU;SACX;QACD,YAAY,EAAE,OAAO;QACrB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,QAAQ,EAAE;KAC7C;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;QAC7E,YAAY,EAAE,YAAY;QAC1B,iEAAiE;QACjE,sEAAsE;QACtE,mEAAmE;QACnE,gEAAgE;QAChE,kEAAkE;QAClE,mCAAmC;QACnC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,QAAQ,EAAE;KAClD;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;QACrE,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,QAAQ,EAAE;KAC/C;IACD;QACE,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,CAAC;QAClE,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,QAAQ,EAAE;KAC9C;IACD;QACE,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;QACtD,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,QAAQ,EAAE;KAC9C;IACD;QACE,yDAAyD;QACzD,yDAAyD;QACzD,uDAAuD;QACvD,kEAAkE;QAClE,oEAAoE;QACpE,4BAA4B;QAC5B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,YAAY,EAAE,UAAU;QACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,QAAQ,EAAE;KAChD;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACnC,YAAY,EAAE,UAAU;QACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,QAAQ,EAAE;KAChD;CACF,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,8BAA8B;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA8B;IAC5D,MAAM,GAAG,GAAmC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAA4D,EAAE,CAAC;IAC1E,MAAM,YAAY,GAAkC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,gEAAgE;QAChE,8DAA8D;QAC9D,+CAA+C;QAC/C,mEAAmE;QACnE,gEAAgE;QAChE,2CAA2C;QAC3C,IAAI,QAAQ,GAAG,UAAU,CAAC;QAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC;QACD,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,uEAAuE;QACvE,IAAI,mBAAuC,CAAC;QAC5C,MAAM,UAAU,GACd,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChF,IAAI,UAAU,IAAI,QAAQ,IAAK,QAAoC,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,QAAmC,CAAC;YACrD,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzF,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC9C,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,CAAC;aAAM,IAAI,UAAU,IAAI,cAAc,IAAK,QAAoC,EAAE,CAAC;YACjF,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,oEAAoE;YACpE,sEAAsE;YACtE,0DAA0D;YAC1D,yEAAyE;YACzE,MAAM,IAAI,GAAI,QAAoC,CAAC,YAAY,CAAC;YAChE,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnE,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC9C,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,8DAA8D;QAC9D,gEAAgE;QAChE,qEAAqE;QACrE,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,mEAAmE;QACnE,kCAAkC;QAClC,yEAAyE;QACzE,wEAAwE;QACxE,IAAI,WAAW,GAAY,QAAQ,CAAC;QACpC,IACE,QAAQ,CAAC,aAAa;YACtB,CAAC,OAAO,QAAQ,KAAK,QAAQ;gBAC3B,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAChE,CAAC;YACD,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvD,CAAC;aAAM,IACL,QAAQ,CAAC,YAAY,KAAK,UAAU;YACpC,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,KAAK,IAAI;YACjB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EACxB,CAAC;YACD,4DAA4D;YAC5D,8DAA8D;YAC9D,oDAAoD;YACpD,gEAAgE;YAChE,iEAAiE;YACjE,gEAAgE;YAChE,kEAAkE;YAClE,+DAA+D;YAC/D,WAAW,GAAG,mBAAmB,CAAC,QAAmC,CAAC,IAAI,QAAQ,CAAC;QACrF,CAAC;QACD,yDAAyD;QACzD,iEAAiE;QACjE,qEAAqE;QACrE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YACjF,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;QACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC7C,IAAI,mBAAmB,KAAK,SAAS;YAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAC7D,CAAC;AAcD;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,OAAe;IAC9C,IAAI,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YAC7C,+DAA+D;YAC/D,yDAAyD;YACzD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAO,cAAc,IAAI,EAAE,CAAC;YAC5E,OAAO,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,QAAiB;IACpD,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,iDAAiD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IACE,QAAQ,KAAK,YAAY;YACzB,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACvC,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC/B,YAAY,EAAE,YAAY;gBAC1B,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;aACxB,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YAC7C,8DAA8D;YAC9D,8DAA8D;YAC9D,gEAAgE;YAChE,gDAAgD;YAChD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,cAAc,IAAI,EAAE;oBAC1B,YAAY,EAAE,YAAY;oBAC1B,aAAa,EAAE,YAAY;iBAC5B,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;gBAC9D,OAAO;oBACL,IAAI,EAAE,cAAc,IAAI,EAAE;oBAC1B,YAAY,EAAE,YAAY;oBAC1B,aAAa,EAAE,UAAU;iBAC1B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,iEAAiE;IACjE,+BAA+B;IAC/B,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAA+B,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,mEAAmE;QACnE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,sDAAsD;QACtD,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,QAAQ;QACnB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC5B,CAAC,CAAC,kEAAkE;YAClE,uDAAuD;YACvD,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,mEAAmE;IACnE,mEAAmE;IACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,6BAA6B,CAAC,OAA2B;IAChE,OAAO,CACL,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,UAAU;QACtB,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,eAAe,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,KAAc,EAAE,aAAqB;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IACtC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO;IAEpC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QAC1C,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACjF,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QAC7C,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YACtC,8DAA8D;YAC9D,gEAAgE;YAChE,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QACD,qEAAqE;QACrE,8DAA8D;QAC9D,4DAA4D;QAC5D,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,mEAAmE;IACnE,wCAAwC;AAC1C,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAc;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,YAAY;YACf,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,+DAA+D;YAC/D,gEAAgE;YAChE,OAAO,YAAY,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,6DAA6D;YAC7D,sEAAsE;YACtE,mEAAmE;YACnE,kEAAkE;YAClE,4DAA4D;YAC5D,+DAA+D;YAC/D,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,OAAO,IAAI,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,2BAA2B;IAC1E,uEAAuE;IACvE,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACxD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAClD,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,6DAA6D;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,mEAAmE;IACnE,0CAA0C;IAC1C,MAAM,UAAU,GAAsC;QACpD,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;QAClC,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;QACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,CAAC;QAClF,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;QACjE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;QAChC,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,sEAAsE;YACtE,kEAAkE;YAClE,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,mBAAmB,CAAC,GAA4B;IACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,CAA4B,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,IAAI,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC7B,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACtB,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBACjC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG;oBACrB,CAAC,CAAC,SAAS,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,wCAAwC;IAC5D,CAAC;IAED,MAAM,IAAI,GACR,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE/F,qEAAqE;IACrE,kEAAkE;IAClE,qEAAqE;IACrE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;SAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACpB,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,GAAG,IAAI,aAAa,IAAI,GAAG,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
package/dist/version.d.ts CHANGED
@@ -19,7 +19,7 @@
19
19
  * Format: SemVer 2.0.0. Pre-1.0 minor bumps are breaking; post-1.0
20
20
  * follow standard SemVer.
21
21
  */
22
- export declare const CAELO_VERSION = "0.10.57";
22
+ export declare const CAELO_VERSION = "0.10.58";
23
23
  /**
24
24
  * Deprecated alias for back-compat — early P17 work spelled this
25
25
  * `CALEO_VERSION` (typo of "Caelo"). New code should import
@@ -31,7 +31,7 @@ export declare const CAELO_VERSION = "0.10.57";
31
31
  *
32
32
  * @deprecated use CAELO_VERSION
33
33
  */
34
- export declare const CALEO_VERSION = "0.10.57";
34
+ export declare const CALEO_VERSION = "0.10.58";
35
35
  /**
36
36
  * Parsed shape — major/minor/patch + optional pre-release tag.
37
37
  * Stable interface for callers that need to feature-gate (rare —
package/dist/version.js CHANGED
@@ -20,7 +20,7 @@
20
20
  * Format: SemVer 2.0.0. Pre-1.0 minor bumps are breaking; post-1.0
21
21
  * follow standard SemVer.
22
22
  */
23
- export const CAELO_VERSION = "0.10.57";
23
+ export const CAELO_VERSION = "0.10.58";
24
24
  /**
25
25
  * Deprecated alias for back-compat — early P17 work spelled this
26
26
  * `CALEO_VERSION` (typo of "Caelo"). New code should import
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caelo-cms/shared",
3
- "version": "0.10.57",
3
+ "version": "0.10.58",
4
4
  "private": false,
5
5
  "license": "MPL-2.0",
6
6
  "description": "Shared Zod schemas + types + the two-pass HTML composer used by every Caelo CMS workspace package. Stable enough for plugin authors and embedders to depend on directly.",
package/src/ai-tools.ts CHANGED
@@ -425,6 +425,27 @@ export type ChatAttachment = z.infer<typeof chatAttachmentSchema>;
425
425
  /** issue #190 — attachments-per-message cap; bounds provider payload size. */
426
426
  export const CHAT_MAX_ATTACHMENTS = 4;
427
427
 
428
+ /**
429
+ * An element reference riding a chat message. `selector` is empty for a
430
+ * module picked from the composer's module dropdown. `selectedText` and
431
+ * `context` come from a right-click / text selection in the live-edit
432
+ * preview (#916): what the operator selected and the text of the block
433
+ * around it, so the AI knows exactly what was meant.
434
+ */
435
+ export const chatChipSchema = z
436
+ .object({
437
+ moduleId: z.string().uuid(),
438
+ selector: z.string().max(500),
439
+ label: z.string().min(1).max(200),
440
+ selectedText: z.string().min(1).max(2000).optional(),
441
+ context: z.string().min(1).max(500).optional(),
442
+ })
443
+ .strict();
444
+ export type ChatChip = z.infer<typeof chatChipSchema>;
445
+
446
+ /** Cap on chips per message; bounds the persisted user-message size. */
447
+ export const CHAT_MAX_CHIPS = 20;
448
+
428
449
  export const chatSendMessageInput = z
429
450
  .object({
430
451
  chatSessionId: z.string().uuid(),
@@ -434,17 +455,7 @@ export const chatSendMessageInput = z
434
455
  content: z.string().min(1).max(8000).optional(),
435
456
  previewSelection: pluginPreviewSelectionSchema.optional(),
436
457
  /** Element-reference chips appended to the message. */
437
- chips: z
438
- .array(
439
- z
440
- .object({
441
- moduleId: z.string().uuid(),
442
- selector: z.string().min(1).max(500),
443
- label: z.string().min(1).max(200),
444
- })
445
- .strict(),
446
- )
447
- .default([]),
458
+ chips: z.array(chatChipSchema).max(CHAT_MAX_CHIPS).default([]),
448
459
  /** issue #190 — operator-attached images (see chatAttachmentSchema). */
449
460
  attachments: z.array(chatAttachmentSchema).max(CHAT_MAX_ATTACHMENTS).default([]),
450
461
  /**
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ /**
4
+ * Issue #914 — the shape of a Google OAuth client and the redirect URI IAP
5
+ * needs on it. Shared so the admin's server-side validation and the setup
6
+ * page (which shows IAP's redirect URI as the Owner types the client ID)
7
+ * use one definition.
8
+ */
9
+
10
+ /**
11
+ * A Google OAuth 2.0 client ID (`<project number>-<random>.apps.googleusercontent.com`).
12
+ * Same pattern as the `operator_oauth_client` CHECK constraint (migration 0323).
13
+ */
14
+ export const GOOGLE_OAUTH_CLIENT_ID = /^[0-9]+-[a-z0-9]+\.apps\.googleusercontent\.com$/;
15
+
16
+ /**
17
+ * IAP's redirect URI for a custom OAuth client: Google sends a signed-in
18
+ * visitor back to IAP here, so the client must list it among its authorized
19
+ * redirect URIs (cloud.google.com/iap/docs/custom-oauth-configuration).
20
+ *
21
+ * @example
22
+ * iapRedirectUri("123-abc.apps.googleusercontent.com")
23
+ * // → "https://iap.googleapis.com/v1/oauth/clientIds/123-abc.apps.googleusercontent.com:handleRedirect"
24
+ */
25
+ export function iapRedirectUri(clientId: string): string {
26
+ return `https://iap.googleapis.com/v1/oauth/clientIds/${clientId}:handleRedirect`;
27
+ }
package/src/index.ts CHANGED
@@ -23,8 +23,10 @@ export * from "./fonts.js";
23
23
  export * from "./genesis.js";
24
24
  export * from "./genesis-inventory.js";
25
25
  export * from "./google-models.js";
26
+ export * from "./google-oauth.js";
26
27
  export * from "./image-capabilities.js";
27
28
  export * from "./interactions.js";
29
+ export * from "./link-canonicalise.js";
28
30
  export * from "./link-refs.js";
29
31
  export {
30
32
  type LogContext,
@@ -0,0 +1,387 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ /**
4
+ * Tier-1 unit tests for write-time link canonicalisation (epic #724,
5
+ * rollout C): which positions are links, what becomes a reference, what
6
+ * stays literal, and what is an issue.
7
+ */
8
+
9
+ import { describe, expect, it } from "bun:test";
10
+ import {
11
+ canonicaliseContentValues,
12
+ canonicaliseFieldDefaults,
13
+ canonicaliseHtmlLinks,
14
+ canonicaliseJsonLinks,
15
+ canonicaliseUrl,
16
+ collectLinkLiterals,
17
+ describeLinkIssues,
18
+ type LinkTargetLookup,
19
+ linkCanonicaliseRun,
20
+ } from "./link-canonicalise.js";
21
+
22
+ const ABOUT = "11111111-1111-4111-8111-111111111111";
23
+ const HOME = "22222222-2222-4222-8222-222222222222";
24
+ const GONE = "33333333-3333-4333-8333-333333333333";
25
+ const HERO = "44444444-4444-4444-8444-444444444444";
26
+
27
+ const lookup: LinkTargetLookup = {
28
+ pageIdForPath: (p) =>
29
+ (
30
+ ({
31
+ "/": HOME,
32
+ "/company/about": ABOUT,
33
+ "/old-about": ABOUT,
34
+ // Old URLs an import redirected (301) to the page.
35
+ "/about.html": ABOUT,
36
+ "/about/index.html": ABOUT,
37
+ }) as Record<string, string>
38
+ )[p] ?? null,
39
+ mediaIdForSlug: (s) => (s === "hero" ? HERO : null),
40
+ pageExists: (id) => id === ABOUT || id === HOME,
41
+ mediaExists: (id) => id === HERO,
42
+ isOwnHost: (h) => h === "example.com",
43
+ };
44
+
45
+ const run = (grandfathered: string[] = []) =>
46
+ linkCanonicaliseRun(lookup, { grandfathered: new Set(grandfathered) });
47
+
48
+ describe("canonicaliseUrl", () => {
49
+ it("turns internal paths, own-domain URLs and media URLs into references", () => {
50
+ const r = run();
51
+ expect(canonicaliseUrl("/company/about", r, "x")).toBe(`caelo:page/${ABOUT}`);
52
+ expect(canonicaliseUrl("/company/about/#team", r, "x")).toBe(`caelo:page/${ABOUT}#team`);
53
+ expect(canonicaliseUrl("/company/about?ref=nav", r, "x")).toBe(`caelo:page/${ABOUT}?ref=nav`);
54
+ expect(canonicaliseUrl("/", r, "x")).toBe(`caelo:page/${HOME}`);
55
+ expect(canonicaliseUrl("https://example.com/company/about", r, "x")).toBe(
56
+ `caelo:page/${ABOUT}`,
57
+ );
58
+ expect(canonicaliseUrl("/old-about", r, "x")).toBe(`caelo:page/${ABOUT}`);
59
+ expect(canonicaliseUrl("/_caelo/media/hero", r, "x")).toBe(`caelo:media/${HERO}`);
60
+ expect(canonicaliseUrl("/_caelo/media/hero/webp-800", r, "x")).toBe(
61
+ `caelo:media/${HERO}/webp-800`,
62
+ );
63
+ expect(canonicaliseUrl(`/_caelo/media/${HERO}/webp-400`, r, "x")).toBe(
64
+ `caelo:media/${HERO}/webp-400`,
65
+ );
66
+ expect(r.issues).toEqual([]);
67
+ });
68
+
69
+ it("leaves external, special and non-page URLs literal", () => {
70
+ const r = run();
71
+ for (const v of [
72
+ "https://other.org/about",
73
+ "//cdn.example.com/x.js",
74
+ "mailto:hi@example.com",
75
+ "tel:+491234",
76
+ "#pricing",
77
+ "{{cta_href}}",
78
+ "/robots.txt",
79
+ "/sitemap.xml",
80
+ "/_assets/app.css",
81
+ "/api/forms/contact",
82
+ "relative/path",
83
+ "",
84
+ ]) {
85
+ expect(canonicaliseUrl(v, r, "x")).toBe(v);
86
+ }
87
+ expect(r.issues).toEqual([]);
88
+ });
89
+
90
+ it("reports unknown paths, unknown media and dangling references", () => {
91
+ const r = run();
92
+ expect(canonicaliseUrl("/nope", r, "values.cta_href")).toBe("/nope");
93
+ expect(canonicaliseUrl("/_caelo/media/missing", r, "html")).toBe("/_caelo/media/missing");
94
+ expect(canonicaliseUrl(`caelo:page/${GONE}`, r, "items[0].href")).toBe(`caelo:page/${GONE}`);
95
+ expect(canonicaliseUrl(`caelo:page/${ABOUT}`, r, "ok")).toBe(`caelo:page/${ABOUT}`);
96
+ expect(r.issues.map((i) => [i.kind, i.value, i.where])).toEqual([
97
+ ["unknown-page-path", "/nope", "values.cta_href"],
98
+ ["unknown-media", "/_caelo/media/missing", "html"],
99
+ ["dangling-page-ref", `caelo:page/${GONE}`, "items[0].href"],
100
+ ]);
101
+ });
102
+
103
+ it("resolves file-shaped old URLs a page or redirect answers before treating them as files", () => {
104
+ const r = run();
105
+ expect(canonicaliseUrl("/about.html", r, "x")).toBe(`caelo:page/${ABOUT}`);
106
+ expect(canonicaliseUrl("/about/index.html#team", r, "x")).toBe(`caelo:page/${ABOUT}#team`);
107
+ expect(r.issues).toEqual([]);
108
+ });
109
+
110
+ it("reports a file path nothing serves (strict) and keeps it literal (report)", () => {
111
+ const strict = run();
112
+ expect(canonicaliseUrl("/files/guide.pdf", strict, "html")).toBe("/files/guide.pdf");
113
+ expect(canonicaliseUrl("/index.php", strict, "html")).toBe("/index.php");
114
+ expect(strict.issues.map((i) => [i.kind, i.value])).toEqual([
115
+ ["unknown-file", "/files/guide.pdf"],
116
+ ["unknown-file", "/index.php"],
117
+ ]);
118
+ const report = linkCanonicaliseRun(lookup, { mode: "report" });
119
+ expect(canonicaliseUrl("/files/guide.pdf", report, "html")).toBe("/files/guide.pdf");
120
+ expect(report.issues.map((i) => i.kind)).toEqual(["unknown-file"]);
121
+ expect(describeLinkIssues(strict.issues)).toContain("media library");
122
+ });
123
+
124
+ it("refuses a media link with a query or anchor instead of dropping it", () => {
125
+ const r = run();
126
+ expect(canonicaliseUrl("/_caelo/media/hero#page=3", r, "x")).toBe("/_caelo/media/hero#page=3");
127
+ expect(canonicaliseUrl("/_caelo/media/hero?download=1", r, "y")).toBe(
128
+ "/_caelo/media/hero?download=1",
129
+ );
130
+ expect(r.issues.map((i) => [i.kind, i.where])).toEqual([
131
+ ["unsupported-link-form", "x"],
132
+ ["unsupported-link-form", "y"],
133
+ ]);
134
+ const report = linkCanonicaliseRun(lookup, { mode: "report" });
135
+ expect(canonicaliseUrl("/_caelo/media/hero#page=3", report, "x")).toBe(
136
+ "/_caelo/media/hero#page=3",
137
+ );
138
+ expect(report.issues.map((i) => i.kind)).toEqual(["unsupported-link-form"]);
139
+ });
140
+
141
+ it("stores the orig variant as the plain media reference", () => {
142
+ const r = run();
143
+ expect(canonicaliseUrl("/_caelo/media/hero/orig", r, "x")).toBe(`caelo:media/${HERO}`);
144
+ expect(canonicaliseUrl(`/_caelo/media/${HERO}/orig`, r, "x")).toBe(`caelo:media/${HERO}`);
145
+ expect(r.issues).toEqual([]);
146
+ });
147
+
148
+ it("grandfathers links already stored", () => {
149
+ const r = run(["/nope", `caelo:page/${GONE}`]);
150
+ canonicaliseUrl("/nope", r, "x");
151
+ canonicaliseUrl(`caelo:page/${GONE}`, r, "x");
152
+ expect(r.issues).toEqual([]);
153
+ });
154
+
155
+ it("restricts media positions to media", () => {
156
+ const r = run();
157
+ expect(canonicaliseUrl("/company/about", r, "x", "media")).toBe("/company/about");
158
+ expect(r.issues).toEqual([]);
159
+ });
160
+
161
+ it("keeps a link to a planned page literal and pending, never an issue", () => {
162
+ const planned = new Set(["/later", "/old/page.html"]);
163
+ const r = linkCanonicaliseRun({ ...lookup, isPendingPagePath: (p) => planned.has(p) });
164
+ expect(canonicaliseUrl("/later/#x", r, "values.cta_href")).toBe("/later/#x");
165
+ expect(canonicaliseUrl("https://example.com/old/page.html", r, "html")).toBe(
166
+ "https://example.com/old/page.html",
167
+ );
168
+ // An existing page still resolves; an unplanned path is still an issue.
169
+ expect(canonicaliseUrl("/company/about", r, "x")).toBe(`caelo:page/${ABOUT}`);
170
+ expect(canonicaliseUrl("/typo", r, "y")).toBe("/typo");
171
+ expect(r.pending).toEqual([
172
+ { value: "/later/#x", path: "/later", where: "values.cta_href" },
173
+ { value: "https://example.com/old/page.html", path: "/old/page.html", where: "html" },
174
+ ]);
175
+ expect(r.issues.map((i) => [i.kind, i.value])).toEqual([["unknown-page-path", "/typo"]]);
176
+ // Without an import run nothing is pending.
177
+ const strict = run();
178
+ canonicaliseUrl("/later", strict, "x");
179
+ expect(strict.pending).toEqual([]);
180
+ expect(strict.issues.map((i) => i.kind)).toEqual(["unknown-page-path"]);
181
+ });
182
+
183
+ it("reports a malformed reference instead of passing it through", () => {
184
+ const r = run();
185
+ const bad = [
186
+ "caelo:page/1111", // truncated id
187
+ `caelo:page/${ABOUT}/team`, // stray path after the id
188
+ "caelo:page/ABCDEF01-1111-4111-8111-111111111111", // ids are lowercase
189
+ `caelo:media/${HERO}/WEBP`, // variant outside the grammar
190
+ ];
191
+ for (const v of bad) expect(canonicaliseUrl(v, r, "values.cta_href")).toBe(v);
192
+ expect(r.issues.map((i) => [i.kind, i.value])).toEqual(
193
+ bad.map((v) => ["malformed-link-ref", v]),
194
+ );
195
+ expect(describeLinkIssues(r.issues)).toContain("write the page's path");
196
+ // Grandfathered like any other stored literal.
197
+ const g = run(["caelo:page/1111"]);
198
+ canonicaliseUrl("caelo:page/1111", g, "x");
199
+ expect(g.issues).toEqual([]);
200
+ });
201
+
202
+ it("turns a query or anchor outside the grammar into an issue, never a throw", () => {
203
+ // `formatLinkRef` throws on a suffix it cannot parse back; the
204
+ // canonicaliser must validate with the grammar's own patterns first.
205
+ const r = run();
206
+ for (const v of [
207
+ "/company/about#a b",
208
+ "/company/about#x#y",
209
+ "/company/about?a=1?b=2",
210
+ '/company/about?q="x"',
211
+ `/company/about#${"a".repeat(257)}`,
212
+ `/company/about?${"q".repeat(513)}`,
213
+ "/company/about#über",
214
+ ]) {
215
+ expect(() => canonicaliseUrl(v, r, "x")).not.toThrow();
216
+ expect(canonicaliseUrl(v, run(), "x")).toBe(v);
217
+ }
218
+ expect(r.issues.every((i) => i.kind === "unsupported-link-form")).toBe(true);
219
+ expect(r.issues).toHaveLength(7);
220
+ // The longest suffixes the grammar allows still become references.
221
+ const ok = run();
222
+ const anchor = "a".repeat(256);
223
+ expect(canonicaliseUrl(`/company/about#${anchor}`, ok, "x")).toBe(
224
+ `caelo:page/${ABOUT}#${anchor}`,
225
+ );
226
+ expect(ok.issues).toEqual([]);
227
+ });
228
+ });
229
+
230
+ describe("HTML and JSON positions", () => {
231
+ it("canonicalises href, src, srcset and poster in HTML", () => {
232
+ const r = run();
233
+ const html =
234
+ `<a class="b" href="/company/about#x">A</a><a href='https://other.org/'>O</a>` +
235
+ `<img src="/_caelo/media/hero" srcset="/_caelo/media/hero/webp-400 400w, /_caelo/media/hero/webp-800 800w">` +
236
+ `<img data-src="/company/about" src="/company/about"><a href="{{href}}">t</a>`;
237
+ expect(canonicaliseHtmlLinks(html, r, "html")).toBe(
238
+ `<a class="b" href="caelo:page/${ABOUT}#x">A</a><a href='https://other.org/'>O</a>` +
239
+ `<img src="caelo:media/${HERO}" srcset="caelo:media/${HERO}/webp-400 400w, caelo:media/${HERO}/webp-800 800w">` +
240
+ `<img data-src="/company/about" src="/company/about"><a href="{{href}}">t</a>`,
241
+ );
242
+ expect(r.issues).toEqual([]);
243
+ });
244
+
245
+ it("reads attributes only inside start tags, not in escaped code samples", () => {
246
+ const r = run();
247
+ const html =
248
+ '<pre><code>&lt;a href="/nope"&gt;Docs&lt;/a&gt;</code></pre>' +
249
+ `<a title="a > b" href="/company/about">x</a><img alt='it"s' src="/_caelo/media/hero">`;
250
+ expect(canonicaliseHtmlLinks(html, r, "html")).toBe(
251
+ '<pre><code>&lt;a href="/nope"&gt;Docs&lt;/a&gt;</code></pre>' +
252
+ `<a title="a > b" href="caelo:page/${ABOUT}">x</a><img alt='it"s' src="caelo:media/${HERO}">`,
253
+ );
254
+ expect(r.issues).toEqual([]);
255
+ // An unterminated quote does not hide the tags before it.
256
+ expect(canonicaliseHtmlLinks('<a href="/company/about">x</a><b title="oops>', run(), "h")).toBe(
257
+ `<a href="caelo:page/${ABOUT}">x</a><b title="oops>`,
258
+ );
259
+ });
260
+
261
+ it("reports malformed references in any HTML link position, once each", () => {
262
+ const r = run();
263
+ const html =
264
+ `<a href="caelo:page/${ABOUT}/team">A</a>` +
265
+ `<div data-href="caelo:page/1234">B</div>` +
266
+ `<img srcset="caelo:media/${HERO} 1x, caelo:media/abc 2x">` +
267
+ `<a href="caelo:page/${ABOUT}#ok">C</a>` +
268
+ "<p>Write caelo:page/&lt;id&gt; in prose: not a link.</p>";
269
+ expect(canonicaliseHtmlLinks(html, r, "html")).toBe(html);
270
+ expect(r.issues.map((i) => [i.kind, i.value])).toEqual([
271
+ ["malformed-link-ref", `caelo:page/${ABOUT}/team`],
272
+ ["malformed-link-ref", "caelo:media/abc"],
273
+ ["malformed-link-ref", "caelo:page/1234"],
274
+ ]);
275
+ // HTML without any attribute is still checked (a value that starts
276
+ // with the broken reference); element text is not a link position.
277
+ const t = run();
278
+ canonicaliseHtmlLinks("caelo:page/1234 <b>caelo:page/5678</b>", t, "html");
279
+ expect(t.issues.map((i) => i.value)).toEqual(["caelo:page/1234"]);
280
+ });
281
+
282
+ it("reports a malformed reference in a plain text value", () => {
283
+ const r = run();
284
+ expect(canonicaliseJsonLinks({ label: "caelo:page/1234" }, r, "values")).toEqual({
285
+ label: "caelo:page/1234",
286
+ });
287
+ expect(r.issues.map((i) => [i.kind, i.where])).toEqual([
288
+ ["malformed-link-ref", "values.label"],
289
+ ]);
290
+ // A stored malformed value is grandfathered by the next write.
291
+ const g = linkCanonicaliseRun(lookup, {
292
+ grandfathered: collectLinkLiterals({ label: "caelo:page/1234" }),
293
+ });
294
+ canonicaliseJsonLinks({ label: "caelo:page/1234" }, g, "values");
295
+ expect(g.issues).toEqual([]);
296
+ });
297
+
298
+ it("treats link-named keys as URLs and plain text as text", () => {
299
+ const r = run();
300
+ const items = [
301
+ { label: "About", href: "/company/about", children: [{ label: "Home", href: "/" }] },
302
+ { label: "/month", note: "/month" },
303
+ ];
304
+ expect(canonicaliseJsonLinks(items, r, "items")).toEqual([
305
+ {
306
+ label: "About",
307
+ href: `caelo:page/${ABOUT}`,
308
+ children: [{ label: "Home", href: `caelo:page/${HOME}` }],
309
+ },
310
+ { label: "/month", note: "/month" },
311
+ ]);
312
+ expect(r.issues).toEqual([]);
313
+ });
314
+
315
+ it("canonicalises content values by field kind and name", () => {
316
+ const r = run();
317
+ const out = canonicaliseContentValues(
318
+ [
319
+ { name: "cta", kind: "url" },
320
+ { name: "hero", kind: "image" },
321
+ { name: "price_suffix", kind: "text" },
322
+ { name: "nav", kind: "link-list" },
323
+ { name: "body", kind: "richtext" },
324
+ { name: "card", kind: "module" },
325
+ ],
326
+ {
327
+ cta: "/company/about",
328
+ hero: "/_caelo/media/hero",
329
+ price_suffix: "/month",
330
+ nav: [{ label: "Home", href: "/" }],
331
+ body: '<p><a href="/company/about">us</a></p>',
332
+ card: { moduleId: ABOUT, contentInstanceId: HOME },
333
+ legacy_href: "/company/about",
334
+ },
335
+ r,
336
+ );
337
+ expect(out).toEqual({
338
+ cta: `caelo:page/${ABOUT}`,
339
+ hero: `caelo:media/${HERO}`,
340
+ price_suffix: "/month",
341
+ nav: [{ label: "Home", href: `caelo:page/${HOME}` }],
342
+ body: `<p><a href="caelo:page/${ABOUT}">us</a></p>`,
343
+ card: { moduleId: ABOUT, contentInstanceId: HOME },
344
+ legacy_href: `caelo:page/${ABOUT}`,
345
+ });
346
+ expect(r.issues).toEqual([]);
347
+ });
348
+
349
+ it("canonicalises field defaults (layout chrome)", () => {
350
+ const r = run();
351
+ const fields = canonicaliseFieldDefaults(
352
+ [
353
+ {
354
+ name: "links",
355
+ kind: "link-list",
356
+ label: "L",
357
+ default: [{ label: "A", href: "/company/about" }],
358
+ },
359
+ { name: "title", kind: "text", label: "T", default: "/company/about" },
360
+ ],
361
+ r,
362
+ );
363
+ expect(fields[0]?.default).toEqual([{ label: "A", href: `caelo:page/${ABOUT}` }]);
364
+ expect(fields[1]?.default).toBe("/company/about");
365
+ });
366
+ });
367
+
368
+ describe("grandfathering + messages", () => {
369
+ it("collects every link literal from a stored state", () => {
370
+ const literals = collectLinkLiterals({
371
+ html: '<a href="/nope">x</a>',
372
+ values: { cta: "/gone", text: "hello" },
373
+ });
374
+ expect(literals.has("/nope")).toBe(true);
375
+ expect(literals.has("/gone")).toBe(true);
376
+ expect(literals.has("hello")).toBe(false);
377
+ });
378
+
379
+ it("names the value, the place and the next step", () => {
380
+ const msg = describeLinkIssues([
381
+ { kind: "unknown-page-path", value: "/pricing", where: "values.cta_href" },
382
+ ]);
383
+ expect(msg).toContain('values.cta_href: "/pricing" is not the path of any page on this site');
384
+ expect(msg).toContain("list_pages");
385
+ expect(msg).toContain("create it first");
386
+ });
387
+ });