@overaihq/cli 0.13.0 → 0.13.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.
@@ -378,6 +378,10 @@ var screenshotResultPayloadSchema = external_exports.object({
378
378
  width: external_exports.number().optional(),
379
379
  height: external_exports.number().optional()
380
380
  });
381
+ var injectCodeMessageSchema = external_exports.object({
382
+ type: external_exports.literal("injectCode"),
383
+ code: external_exports.string()
384
+ });
381
385
 
382
386
  // ../common/src/webPage.ts
383
387
  var webPageLanguage = ["react"];
@@ -393,11 +397,21 @@ var webPageConfigSchema = external_exports.object({
393
397
  /* Drops the iframe's sandbox attribute — needed for storage, cookies, forms. */
394
398
  noSandbox: configFlag,
395
399
  /* Renders the page fullscreen for guests by hiding the workspace top bar. */
396
- hideTopBar: configFlag
400
+ hideTopBar: configFlag,
401
+ /*
402
+ * Which iframe runtime renders the page. "v1" is the sandboxed srcdoc
403
+ * iframe; "v2" serves the page from its own origin (separate renderer
404
+ * process, real localStorage). Absent or invalid reads as "v1" so a legacy
405
+ * config never fails to parse over the toggle.
406
+ */
407
+ runtime: external_exports.enum(["v1", "v2"]).catch("v1")
397
408
  });
398
409
  var webPageConfigWriteSchema = webPageConfigSchema.extend({
399
410
  noSandbox: external_exports.union([external_exports.boolean(), external_exports.enum(["true", "false"])]).nullish(),
400
- hideTopBar: external_exports.union([external_exports.boolean(), external_exports.enum(["true", "false"])]).nullish()
411
+ hideTopBar: external_exports.union([external_exports.boolean(), external_exports.enum(["true", "false"])]).nullish(),
412
+ // Without this override the read schema's .catch would silently push a typo
413
+ // ("V2", "2") as v1.
414
+ runtime: external_exports.enum(["v1", "v2"]).nullish()
401
415
  });
402
416
  var defaultWebPageTemplate = reactDefaultTemplate.replace(
403
417
  'className="page"',
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  itemFilterExpressionRootSchema,
7
7
  webPageConfigSchema
8
- } from "./chunk-56E4CWBE.js";
8
+ } from "./chunk-5CMM7GCC.js";
9
9
  import {
10
10
  external_exports
11
11
  } from "./chunk-XCJJTK3H.js";
@@ -20019,9 +20019,9 @@ var require_dist = __commonJS({
20019
20019
  }
20020
20020
  });
20021
20021
 
20022
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/conventions.js
20022
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/conventions.js
20023
20023
  var require_conventions = __commonJS({
20024
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/conventions.js"(exports) {
20024
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/conventions.js"(exports) {
20025
20025
  "use strict";
20026
20026
  function find2(list, predicate, ac) {
20027
20027
  if (ac === void 0) {
@@ -20228,9 +20228,9 @@ var require_conventions = __commonJS({
20228
20228
  }
20229
20229
  });
20230
20230
 
20231
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/errors.js
20231
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/errors.js
20232
20232
  var require_errors = __commonJS({
20233
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/errors.js"(exports) {
20233
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/errors.js"(exports) {
20234
20234
  "use strict";
20235
20235
  var conventions = require_conventions();
20236
20236
  function extendError(constructor, writableName) {
@@ -20373,9 +20373,10 @@ var require_errors = __commonJS({
20373
20373
  }
20374
20374
  var key;
20375
20375
  var i;
20376
- function ParseError2(message, locator) {
20376
+ function ParseError2(message, locator, cause) {
20377
20377
  this.message = message;
20378
20378
  this.locator = locator;
20379
+ this.cause = cause;
20379
20380
  if (Error.captureStackTrace) Error.captureStackTrace(this, ParseError2);
20380
20381
  }
20381
20382
  extendError(ParseError2);
@@ -20386,9 +20387,9 @@ var require_errors = __commonJS({
20386
20387
  }
20387
20388
  });
20388
20389
 
20389
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/grammar.js
20390
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/grammar.js
20390
20391
  var require_grammar = __commonJS({
20391
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/grammar.js"(exports) {
20392
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/grammar.js"(exports) {
20392
20393
  "use strict";
20393
20394
  function detectUnicodeSupport(RegExpImpl) {
20394
20395
  try {
@@ -20433,7 +20434,7 @@ var require_grammar = __commonJS({
20433
20434
  }
20434
20435
  return isStr ? part : part.source;
20435
20436
  }).join(""),
20436
- UNICODE_SUPPORT ? "mu" : "m"
20437
+ UNICODE_SUPPORT ? "u" : ""
20437
20438
  );
20438
20439
  }
20439
20440
  function regg(args) {
@@ -20459,6 +20460,7 @@ var require_grammar = __commonJS({
20459
20460
  var NameStartChar_s = chars(NameStartChar);
20460
20461
  var NameChar = reg("[", NameStartChar_s, chars(/[-.0-9\xB7]/), chars(/[\u0300-\u036F\u203F-\u2040]/), "]");
20461
20462
  var Name = reg(NameStartChar, NameChar, "*");
20463
+ var Name_exact = reg("^", Name, "$");
20462
20464
  var Nmtoken = reg(NameChar, "+");
20463
20465
  var EntityRef = reg("&", Name, ";");
20464
20466
  var CharRef = regg(/&#[0-9]+;|&#x[0-9a-fA-F]+;/);
@@ -20473,11 +20475,12 @@ var require_grammar = __commonJS({
20473
20475
  var NCNameStartChar = chars_without(NameStartChar, ":");
20474
20476
  var NCNameChar = chars_without(NameChar, ":");
20475
20477
  var NCName = reg(NCNameStartChar, NCNameChar, "*");
20478
+ var NCName_exact = reg("^", NCName, "$");
20476
20479
  var QName = reg(NCName, regg(":", NCName), "?");
20477
20480
  var QName_exact = reg("^", QName, "$");
20478
20481
  var QName_group = reg("(", QName, ")");
20479
20482
  var SystemLiteral = regg(/"[^"]*"|'[^']*'/);
20480
- var PI = reg(/^<\?/, "(", Name, ")", regg(S, "(", Char, "*?)"), "?", /\?>/);
20483
+ var PI = reg(/^<\?/, "(", Name, ")", regg(S, "(?!", _SChar, ")(", Char, "*?)"), "?", /\?>/);
20481
20484
  var PubidChar = /[\x20\x0D\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/;
20482
20485
  var PubidLiteral = regg('"', PubidChar, '*"', "|", "'", chars_without(PubidChar, "'"), "*'");
20483
20486
  var COMMENT_START = "<!--";
@@ -20566,6 +20569,8 @@ var require_grammar = __commonJS({
20566
20569
  exports.ExternalID = ExternalID;
20567
20570
  exports.ExternalID_match = ExternalID_match;
20568
20571
  exports.Name = Name;
20572
+ exports.Name_exact = Name_exact;
20573
+ exports.NCName_exact = NCName_exact;
20569
20574
  exports.NotationDecl = NotationDecl;
20570
20575
  exports.Reference = Reference;
20571
20576
  exports.PEReference = PEReference;
@@ -20589,9 +20594,9 @@ var require_grammar = __commonJS({
20589
20594
  }
20590
20595
  });
20591
20596
 
20592
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/dom.js
20597
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/dom.js
20593
20598
  var require_dom = __commonJS({
20594
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/dom.js"(exports) {
20599
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/dom.js"(exports) {
20595
20600
  "use strict";
20596
20601
  var conventions = require_conventions();
20597
20602
  var find2 = conventions.find;
@@ -20857,6 +20862,8 @@ var require_dom = __commonJS({
20857
20862
  };
20858
20863
  _extends(LiveNodeList, NodeList);
20859
20864
  function NamedNodeMap() {
20865
+ this._nsIndex = /* @__PURE__ */ Object.create(null);
20866
+ this._noNsIndex = /* @__PURE__ */ Object.create(null);
20860
20867
  }
20861
20868
  function _findNodeIndex(list, node) {
20862
20869
  var i = 0;
@@ -20867,6 +20874,30 @@ var require_dom = __commonJS({
20867
20874
  i++;
20868
20875
  }
20869
20876
  }
20877
+ function _nnmBucket(map2, namespaceURI, create) {
20878
+ if (!namespaceURI) {
20879
+ return map2._noNsIndex;
20880
+ }
20881
+ var bucket = map2._nsIndex[namespaceURI];
20882
+ if (!bucket && create) {
20883
+ bucket = map2._nsIndex[namespaceURI] = /* @__PURE__ */ Object.create(null);
20884
+ }
20885
+ return bucket;
20886
+ }
20887
+ function _nnmIndexFind(map2, namespaceURI, localName) {
20888
+ var bucket = _nnmBucket(map2, namespaceURI, false);
20889
+ var found = bucket && bucket[localName];
20890
+ return found ? found : null;
20891
+ }
20892
+ function _nnmIndexAdd(map2, attr) {
20893
+ _nnmBucket(map2, attr.namespaceURI, true)[attr.localName] = attr;
20894
+ }
20895
+ function _nnmIndexRemove(map2, attr) {
20896
+ var bucket = _nnmBucket(map2, attr.namespaceURI, false);
20897
+ if (bucket) {
20898
+ delete bucket[attr.localName];
20899
+ }
20900
+ }
20870
20901
  function _addNamedNode(el, list, newAttr, oldAttr) {
20871
20902
  if (oldAttr) {
20872
20903
  list[_findNodeIndex(list, oldAttr)] = newAttr;
@@ -20874,6 +20905,7 @@ var require_dom = __commonJS({
20874
20905
  list[list.length] = newAttr;
20875
20906
  list.length++;
20876
20907
  }
20908
+ _nnmIndexAdd(list, newAttr);
20877
20909
  if (el) {
20878
20910
  newAttr.ownerElement = el;
20879
20911
  var doc = el.ownerDocument;
@@ -20891,6 +20923,7 @@ var require_dom = __commonJS({
20891
20923
  list[i] = list[++i];
20892
20924
  }
20893
20925
  list.length = lastIndex;
20926
+ _nnmIndexRemove(list, attr);
20894
20927
  if (el) {
20895
20928
  var doc = el.ownerDocument;
20896
20929
  if (doc) {
@@ -20946,7 +20979,7 @@ var require_dom = __commonJS({
20946
20979
  if (el && el !== this._ownerElement) {
20947
20980
  throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);
20948
20981
  }
20949
- var oldAttr = this.getNamedItemNS(attr.namespaceURI, attr.localName);
20982
+ var oldAttr = _nnmIndexFind(this, attr.namespaceURI, attr.localName);
20950
20983
  if (oldAttr === attr) {
20951
20984
  return attr;
20952
20985
  }
@@ -21608,8 +21641,29 @@ var require_dom = __commonJS({
21608
21641
  while (child) {
21609
21642
  var next = child.nextSibling;
21610
21643
  if (next !== null && next.nodeType === TEXT_NODE && child.nodeType === TEXT_NODE) {
21611
- node.removeChild(next);
21612
- child.appendData(next.data);
21644
+ var tail = [];
21645
+ var sibling = next;
21646
+ while (sibling !== null && sibling.nodeType === TEXT_NODE) {
21647
+ tail.push(sibling.data);
21648
+ sibling = sibling.nextSibling;
21649
+ }
21650
+ var removed = child.nextSibling;
21651
+ while (removed !== sibling) {
21652
+ var following = removed.nextSibling;
21653
+ removed.parentNode = null;
21654
+ removed.previousSibling = null;
21655
+ removed.nextSibling = null;
21656
+ removed = following;
21657
+ }
21658
+ child.nextSibling = sibling;
21659
+ if (sibling !== null) {
21660
+ sibling.previousSibling = child;
21661
+ } else {
21662
+ node.lastChild = child;
21663
+ }
21664
+ child.appendData(tail.join(""));
21665
+ _onUpdateChild(node.ownerDocument, node);
21666
+ child = sibling;
21613
21667
  } else {
21614
21668
  child = next;
21615
21669
  }
@@ -22247,10 +22301,10 @@ var require_dom = __commonJS({
22247
22301
  * "InvalidCharacterError".
22248
22302
  *
22249
22303
  * Note: When the resulting document is serialized with `requireWellFormed: true`, the
22250
- * serializer throws `InvalidStateError` if `.target` contains `:` or is an ASCII
22251
- * case-insensitive match for `"xml"`, or if `.data` contains `?>` or characters outside the
22252
- * XML Char production (W3C DOM Parsing §3.2.1.7). Without that option the data is emitted
22253
- * verbatim.
22304
+ * serializer throws `InvalidStateError` if `.target` is not a valid XML `NCName` (a `Name`
22305
+ * with no colon) or is an ASCII case-insensitive match for `"xml"`, or if `.data` contains
22306
+ * `?>` or characters outside the XML Char production (W3C DOM Parsing §3.2.1.7). Without that
22307
+ * option the target and data are emitted verbatim.
22254
22308
  *
22255
22309
  * @param {string} target
22256
22310
  * @param {string} data
@@ -22305,19 +22359,29 @@ var require_dom = __commonJS({
22305
22359
  * The current implementation does not fill the `childNodes` with those of the corresponding
22306
22360
  * `Entity`
22307
22361
  *
22362
+ * The `name` is validated against the XML `Name` production at creation time; an invalid name
22363
+ * throws `InvalidCharacterError`. When the resulting node is serialized with
22364
+ * `requireWellFormed: true`, the serializer re-validates `nodeName` against the XML `Name`
22365
+ * production and throws `InvalidStateError` if a later `nodeName` mutation made it invalid;
22366
+ * without that option the name is emitted verbatim.
22367
+ *
22368
+ * __This implementation differs from the specification:__ xmldom does not expand entities —
22369
+ * the parser resolves entity references inline and never constructs `EntityReference` nodes,
22370
+ * so this method is the only producer.
22371
+ *
22308
22372
  * @deprecated
22309
22373
  * In DOM Level 4.
22310
22374
  * @param {string} name
22311
22375
  * The name of the entity to reference. No namespace well-formedness checks are performed.
22312
22376
  * @returns {EntityReference}
22313
22377
  * @throws {DOMException}
22314
- * With code `INVALID_CHARACTER_ERR` when `name` is not valid.
22378
+ * With code `INVALID_CHARACTER_ERR` when `name` is not a valid XML `Name`.
22315
22379
  * @throws {DOMException}
22316
22380
  * with code `NOT_SUPPORTED_ERR` when the document is of type `html`
22317
22381
  * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-392B75AE
22318
22382
  */
22319
22383
  createEntityReference: function(name2) {
22320
- if (!g.Name.test(name2)) {
22384
+ if (!g.Name_exact.test(name2)) {
22321
22385
  throw new DOMException(DOMException.INVALID_CHARACTER_ERR, 'not a valid xml name "' + name2 + '"');
22322
22386
  }
22323
22387
  if (this.type === "html") {
@@ -22755,7 +22819,13 @@ var require_dom = __commonJS({
22755
22819
  }
22756
22820
  return true;
22757
22821
  }
22758
- function addSerializedAttribute(buf, qualifiedName, value) {
22822
+ function addSerializedAttribute(buf, qualifiedName, value, requireWellFormed) {
22823
+ if (requireWellFormed && !g.QName_exact.test(qualifiedName)) {
22824
+ throw new DOMException(
22825
+ 'The attribute name "' + qualifiedName + '" is not a valid XML QName',
22826
+ DOMExceptionName.InvalidStateError
22827
+ );
22828
+ }
22759
22829
  buf.push(" ", qualifiedName, '="', value.replace(/[<>&"\t\n\r]/g, _xmlEncoder), '"');
22760
22830
  }
22761
22831
  function serializeToString(node, buf, visibleNamespaces, opts) {
@@ -22819,6 +22889,12 @@ var require_dom = __commonJS({
22819
22889
  }
22820
22890
  }
22821
22891
  }
22892
+ if (requireWellFormed && !g.QName_exact.test(prefixedNodeName)) {
22893
+ throw new DOMException(
22894
+ 'The element name "' + prefixedNodeName + '" is not a valid XML QName',
22895
+ DOMExceptionName.InvalidStateError
22896
+ );
22897
+ }
22822
22898
  buf.push("<", prefixedNodeName);
22823
22899
  var childNamespaces = namespaces.slice();
22824
22900
  for (var i = 0; i < len; i++) {
@@ -22837,7 +22913,7 @@ var require_dom = __commonJS({
22837
22913
  if (needNamespaceDefine(attr, isHTML, childNamespaces)) {
22838
22914
  var attrPrefix = attr.prefix || "";
22839
22915
  var uri = attr.namespaceURI;
22840
- addSerializedAttribute(buf, attrPrefix ? "xmlns:" + attrPrefix : "xmlns", uri);
22916
+ addSerializedAttribute(buf, attrPrefix ? "xmlns:" + attrPrefix : "xmlns", uri, requireWellFormed);
22841
22917
  childNamespaces.push({ prefix: attrPrefix, namespace: uri });
22842
22918
  }
22843
22919
  var filteredAttr = nodeFilter ? nodeFilter(attr) : attr;
@@ -22845,14 +22921,14 @@ var require_dom = __commonJS({
22845
22921
  if (typeof filteredAttr === "string") {
22846
22922
  buf.push(filteredAttr);
22847
22923
  } else {
22848
- addSerializedAttribute(buf, filteredAttr.name, filteredAttr.value);
22924
+ addSerializedAttribute(buf, filteredAttr.name, filteredAttr.value, requireWellFormed);
22849
22925
  }
22850
22926
  }
22851
22927
  }
22852
22928
  if (nodeName === prefixedNodeName && needNamespaceDefine(n, isHTML, childNamespaces)) {
22853
22929
  var nodePrefix = n.prefix || "";
22854
22930
  var uri = n.namespaceURI;
22855
- addSerializedAttribute(buf, nodePrefix ? "xmlns:" + nodePrefix : "xmlns", uri);
22931
+ addSerializedAttribute(buf, nodePrefix ? "xmlns:" + nodePrefix : "xmlns", uri, requireWellFormed);
22856
22932
  childNamespaces.push({ prefix: nodePrefix, namespace: uri });
22857
22933
  }
22858
22934
  var canCloseTag = !n.firstChild;
@@ -22885,7 +22961,7 @@ var require_dom = __commonJS({
22885
22961
  }
22886
22962
  return { ns: namespaces };
22887
22963
  case ATTRIBUTE_NODE:
22888
- addSerializedAttribute(buf, n.name, n.value);
22964
+ addSerializedAttribute(buf, n.name, n.value, requireWellFormed);
22889
22965
  return null;
22890
22966
  case TEXT_NODE:
22891
22967
  if (requireWellFormed && g.InvalidChar.test(n.data)) {
@@ -22927,6 +23003,12 @@ var require_dom = __commonJS({
22927
23003
  var pubid = n.publicId;
22928
23004
  var sysid = n.systemId;
22929
23005
  if (requireWellFormed) {
23006
+ if (!g.Name_exact.test(n.name)) {
23007
+ throw new DOMException(
23008
+ 'The doctype name "' + n.name + '" is not a valid XML Name',
23009
+ DOMExceptionName.InvalidStateError
23010
+ );
23011
+ }
22930
23012
  if (pubid && !g.PubidLiteral_match.test(pubid)) {
22931
23013
  throw new DOMException("DocumentType publicId is not a valid PubidLiteral", DOMExceptionName.InvalidStateError);
22932
23014
  }
@@ -22953,8 +23035,11 @@ var require_dom = __commonJS({
22953
23035
  return null;
22954
23036
  case PROCESSING_INSTRUCTION_NODE:
22955
23037
  if (requireWellFormed) {
22956
- if (n.target.indexOf(":") !== -1 || n.target.toLowerCase() === "xml") {
22957
- throw new DOMException("The ProcessingInstruction target is not well-formed", DOMExceptionName.InvalidStateError);
23038
+ if (!g.NCName_exact.test(n.target) || n.target.toLowerCase() === "xml") {
23039
+ throw new DOMException(
23040
+ 'The processing instruction target "' + n.target + '" is not a valid XML NCName or is reserved',
23041
+ DOMExceptionName.InvalidStateError
23042
+ );
22958
23043
  }
22959
23044
  if (g.InvalidChar.test(n.data)) {
22960
23045
  throw new DOMException(
@@ -22969,6 +23054,12 @@ var require_dom = __commonJS({
22969
23054
  buf.push("<?", n.target, " ", n.data, "?>");
22970
23055
  return null;
22971
23056
  case ENTITY_REFERENCE_NODE:
23057
+ if (requireWellFormed && !g.Name_exact.test(n.nodeName)) {
23058
+ throw new DOMException(
23059
+ 'The entity reference name "' + n.nodeName + '" is not a valid XML Name',
23060
+ DOMExceptionName.InvalidStateError
23061
+ );
23062
+ }
22972
23063
  buf.push("&", n.nodeName, ";");
22973
23064
  return null;
22974
23065
  //case ENTITY_NODE:
@@ -23106,6 +23197,25 @@ var require_dom = __commonJS({
23106
23197
  }
23107
23198
  }
23108
23199
  });
23200
+ Object.defineProperty(CharacterData.prototype, "data", {
23201
+ get: function() {
23202
+ return this._data != null ? this._data : "";
23203
+ },
23204
+ set: function(v) {
23205
+ this._data = v;
23206
+ this.length = typeof v === "string" ? v.length : 0;
23207
+ }
23208
+ });
23209
+ Object.defineProperty(CharacterData.prototype, "nodeValue", {
23210
+ get: function() {
23211
+ return this.data;
23212
+ },
23213
+ set: function(v) {
23214
+ this.data = v;
23215
+ },
23216
+ enumerable: true,
23217
+ configurable: true
23218
+ });
23109
23219
  Object.defineProperty(Element.prototype, "children", {
23110
23220
  get: function() {
23111
23221
  return new LiveNodeList(this, childrenRefresh);
@@ -23151,9 +23261,9 @@ var require_dom = __commonJS({
23151
23261
  }
23152
23262
  });
23153
23263
 
23154
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/entities.js
23264
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/entities.js
23155
23265
  var require_entities = __commonJS({
23156
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/entities.js"(exports) {
23266
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/entities.js"(exports) {
23157
23267
  "use strict";
23158
23268
  var freeze = require_conventions().freeze;
23159
23269
  exports.XML_ENTITIES = freeze({
@@ -25294,9 +25404,9 @@ var require_entities = __commonJS({
25294
25404
  }
25295
25405
  });
25296
25406
 
25297
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/sax.js
25407
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/sax.js
25298
25408
  var require_sax = __commonJS({
25299
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/sax.js"(exports) {
25409
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/sax.js"(exports) {
25300
25410
  "use strict";
25301
25411
  var conventions = require_conventions();
25302
25412
  var g = require_grammar();
@@ -25419,9 +25529,26 @@ var require_sax = __commonJS({
25419
25529
  if (!tagNameRaw) {
25420
25530
  return errorHandler.fatalError("end tag name missing");
25421
25531
  }
25422
- var tagNameMatch = end > 0 && g.reg("^", g.QName_group, g.S_OPT, "$").exec(tagNameRaw);
25532
+ var endTagNameStrict = g.reg("^", g.QName_group, g.S_OPT, "$");
25533
+ var tagNameMatch = end > 0 && endTagNameStrict.exec(tagNameRaw);
25423
25534
  if (!tagNameMatch) {
25424
- return errorHandler.fatalError('end tag name contains invalid characters: "' + tagNameRaw + '"');
25535
+ var leadingTagNameMatch = end > 0 && g.reg("^", g.QName_group).exec(tagNameRaw);
25536
+ if (isHTML && leadingTagNameMatch) {
25537
+ errorHandler.warning('end tag name contains invalid trailing characters: "' + tagNameRaw + '"');
25538
+ tagNameMatch = leadingTagNameMatch;
25539
+ } else if (
25540
+ // Backward compatibility, remove this whole `else if` arm in the next breaking release
25541
+ // (XML then falls through to the `fatalError` below, for a clean mode split: XML fatal,
25542
+ // HTML warning). A valid end-tag name followed by a line break and trailing content was
25543
+ // silently accepted while `reg` still used the `m` flag; re-adding `m` here matches exactly
25544
+ // those inputs, kept recoverable and reported.
25545
+ leadingTagNameMatch && new RegExp(endTagNameStrict.source, endTagNameStrict.flags + "m").test(tagNameRaw)
25546
+ ) {
25547
+ errorHandler.error('end tag name is followed by a line break and trailing content: "' + tagNameRaw + '"');
25548
+ tagNameMatch = leadingTagNameMatch;
25549
+ } else {
25550
+ return errorHandler.fatalError('end tag name contains invalid characters: "' + tagNameRaw + '"');
25551
+ }
25425
25552
  }
25426
25553
  if (!domBuilder.currentElement && !domBuilder.doc.documentElement) {
25427
25554
  return;
@@ -25495,7 +25622,7 @@ var require_sax = __commonJS({
25495
25622
  if (e instanceof ParseError2) {
25496
25623
  throw e;
25497
25624
  } else if (e instanceof DOMException) {
25498
- throw new ParseError2(e.name + ": " + e.message, domBuilder.locator, e);
25625
+ return errorHandler.fatalError("Error constructing the DOM: " + e.name + ": " + e.message, e);
25499
25626
  }
25500
25627
  errorHandler.error("element parse error: " + e);
25501
25628
  end = -1;
@@ -25536,6 +25663,9 @@ var require_sax = __commonJS({
25536
25663
  var s = S_TAG;
25537
25664
  while (true) {
25538
25665
  var c = source.charAt(p);
25666
+ if (s === S_TAG && c === "<") {
25667
+ throw new Error("unexpected < in tag name: " + source.slice(start, p));
25668
+ }
25539
25669
  switch (c) {
25540
25670
  case "=":
25541
25671
  if (s === S_ATTR) {
@@ -25711,7 +25841,7 @@ var require_sax = __commonJS({
25711
25841
  if (nsPrefix !== false) {
25712
25842
  if (localNSMap == null) {
25713
25843
  localNSMap = /* @__PURE__ */ Object.create(null);
25714
- _copy(currentNSMap, currentNSMap = /* @__PURE__ */ Object.create(null));
25844
+ currentNSMap = Object.create(currentNSMap);
25715
25845
  }
25716
25846
  currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
25717
25847
  a.uri = NAMESPACE.XMLNS;
@@ -25758,7 +25888,13 @@ var require_sax = __commonJS({
25758
25888
  function parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) {
25759
25889
  var isEscapableRaw = isHTMLEscapableRawTextElement(tagName);
25760
25890
  if (isEscapableRaw || isHTMLRawTextElement(tagName)) {
25761
- var elEndStart = source.indexOf("</" + tagName + ">", elStartEnd);
25891
+ var closeTag = new RegExp("</" + tagName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ">", "ig");
25892
+ closeTag.lastIndex = elStartEnd;
25893
+ var match = closeTag.exec(source);
25894
+ var elEndStart = match ? match.index : -1;
25895
+ if (elEndStart < 0) {
25896
+ return elStartEnd + 1;
25897
+ }
25762
25898
  var text = source.substring(elStartEnd + 1, elEndStart);
25763
25899
  if (isEscapableRaw) {
25764
25900
  text = text.replace(ENTITY_REG, entityReplacer);
@@ -26050,9 +26186,9 @@ var require_sax = __commonJS({
26050
26186
  }
26051
26187
  });
26052
26188
 
26053
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/dom-parser.js
26189
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/dom-parser.js
26054
26190
  var require_dom_parser = __commonJS({
26055
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/dom-parser.js"(exports) {
26191
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/dom-parser.js"(exports) {
26056
26192
  "use strict";
26057
26193
  var conventions = require_conventions();
26058
26194
  var dom = require_dom();
@@ -26262,14 +26398,16 @@ var require_dom_parser = __commonJS({
26262
26398
  *
26263
26399
  * @param {string} message
26264
26400
  * - The message to be used for reporting and throwing the error.
26401
+ * @param {Error} [cause]
26402
+ * The error that caused this fatal error, preserved as the thrown `ParseError`'s `cause`.
26265
26403
  * @returns {never}
26266
26404
  * This function always throws an error and never returns a value.
26267
26405
  * @throws {ParseError}
26268
26406
  * Always throws a ParseError with the provided message.
26269
26407
  */
26270
- fatalError: function(message) {
26408
+ fatalError: function(message, cause) {
26271
26409
  this.reportError("fatalError", message);
26272
- throw new ParseError2(message, this.locator);
26410
+ throw new ParseError2(message, this.locator, cause);
26273
26411
  }
26274
26412
  };
26275
26413
  function _locator(l) {
@@ -26316,9 +26454,9 @@ var require_dom_parser = __commonJS({
26316
26454
  }
26317
26455
  });
26318
26456
 
26319
- // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/index.js
26457
+ // ../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/index.js
26320
26458
  var require_lib2 = __commonJS({
26321
- "../../node_modules/.pnpm/@xmldom+xmldom@0.9.10/node_modules/@xmldom/xmldom/lib/index.js"(exports) {
26459
+ "../../node_modules/.pnpm/@xmldom+xmldom@0.9.12/node_modules/@xmldom/xmldom/lib/index.js"(exports) {
26322
26460
  "use strict";
26323
26461
  var conventions = require_conventions();
26324
26462
  exports.assign = conventions.assign;
@@ -26821,7 +26959,10 @@ var gqlRequest = async (query, variables) => {
26821
26959
  }
26822
26960
  })();
26823
26961
  if (body?.errors != null && body.errors.length > 0) {
26824
- throw new Error(body.errors.map((e) => e.message).join("; "));
26962
+ throw Object.assign(
26963
+ new Error(body.errors.map((e) => e.message).join("; ")),
26964
+ { errors: body.errors }
26965
+ );
26825
26966
  }
26826
26967
  if (!res.ok) throw v2Error("graphql", res, raw2);
26827
26968
  if (body?.data == null) {
@@ -27083,10 +27224,48 @@ var validateAutomationElements = async (elements) => {
27083
27224
  return findings(automationNodesSchema.safeParse(elements));
27084
27225
  };
27085
27226
  var validateWebPageConfig = async (config) => {
27086
- const { webPageConfigWriteSchema } = await import("./webPage-4HUHD7FS.js");
27227
+ const { webPageConfigWriteSchema } = await import("./webPage-5UOLQ3AW.js");
27087
27228
  return findings(webPageConfigWriteSchema.safeParse(config));
27088
27229
  };
27089
27230
 
27231
+ // ../common/src/function.ts
27232
+ var defaultAgentFunctionInputSchema = `{
27233
+ "type": "object",
27234
+ "properties": {
27235
+ "method": {
27236
+ "type": "string",
27237
+ "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
27238
+ "default": "POST",
27239
+ "description": "HTTP method for this function call."
27240
+ },
27241
+ "headers": {
27242
+ "type": "object",
27243
+ "description": "Request headers. Use {} when none are needed.",
27244
+ "default": {},
27245
+ "additionalProperties": {
27246
+ "type": "string"
27247
+ }
27248
+ },
27249
+ "queryParams": {
27250
+ "type": "object",
27251
+ "description": "URL query params. Use {} when none are needed.",
27252
+ "default": {},
27253
+ "additionalProperties": {
27254
+ "type": ["string", "number", "boolean"]
27255
+ }
27256
+ },
27257
+ "body": {
27258
+ "type": "object",
27259
+ "description": "Request body payload. Use {} when none is needed.",
27260
+ "default": {},
27261
+ "additionalProperties": true
27262
+ }
27263
+ },
27264
+ "required": ["method", "headers", "queryParams", "body"]
27265
+ }`;
27266
+ var DEFAULT_FUNCTION_EXECUTION_TIMEOUT_MS = 3e4;
27267
+ var DEFAULT_FUNCTION_EXECUTION_MEMORY_MB = 512;
27268
+
27090
27269
  // src/workspace/adapters.ts
27091
27270
  var metaJson = (value) => `${JSON.stringify(value, null, 2)}
27092
27271
  `;
@@ -27116,7 +27295,7 @@ var functionAdapter = {
27116
27295
  functions(condition: { workspaceId: $workspaceId }, includeArchived: NO) {
27117
27296
  nodes {
27118
27297
  id name
27119
- functionVersions(orderBy: [CREATED_AT_DESC], first: 1) {
27298
+ functionVersions(orderBy: [VERSION_NUMBER_DESC], first: 1) {
27120
27299
  nodes { versionNumber code inputSchema outputSchema executionTimeout executionCpu executionMemory }
27121
27300
  }
27122
27301
  functionDeployedVersion { versionNumber }
@@ -27143,7 +27322,7 @@ var functionAdapter = {
27143
27322
  const data = await gqlRequest(
27144
27323
  `query CliFunctionHead($id: String!) {
27145
27324
  function(id: $id) {
27146
- functionVersions(orderBy: [CREATED_AT_DESC], first: 1) { nodes { versionNumber } }
27325
+ functionVersions(orderBy: [VERSION_NUMBER_DESC], first: 1) { nodes { versionNumber } }
27147
27326
  functionDeployedVersion { versionNumber }
27148
27327
  }
27149
27328
  }`,
@@ -27171,11 +27350,11 @@ var functionAdapter = {
27171
27350
  }
27172
27351
  return functionFiles(id, name2, data.functionVersion);
27173
27352
  },
27174
- push: async (id, files, message) => {
27353
+ push: async (id, files, message, expectedLatestVersion) => {
27175
27354
  const meta = JSON.parse(fileBySuffix(files, ".meta.json"));
27176
27355
  const data = await gqlRequest(
27177
- `mutation CliCreateFunctionVersion($functionId: String!, $code: String!, $message: String, $inputSchema: String, $outputSchema: String, $executionTimeout: Int, $executionCpu: Int, $executionMemory: Int) {
27178
- createFunctionVersion(input: { functionVersion: {
27356
+ `mutation CliCreateFunctionVersion($expectedLatestVersion: Int, $functionId: String!, $code: String!, $message: String, $inputSchema: String, $outputSchema: String, $executionTimeout: Int, $executionCpu: Int, $executionMemory: Int) {
27357
+ createFunctionVersion(input: { expectedLatestVersion: $expectedLatestVersion, functionVersion: {
27179
27358
  functionId: $functionId, code: $code, message: $message,
27180
27359
  inputSchema: $inputSchema, outputSchema: $outputSchema,
27181
27360
  executionTimeout: $executionTimeout, executionCpu: $executionCpu,
@@ -27183,6 +27362,7 @@ var functionAdapter = {
27183
27362
  }}) { functionVersion { versionNumber } }
27184
27363
  }`,
27185
27364
  {
27365
+ expectedLatestVersion,
27186
27366
  functionId: id,
27187
27367
  code: fileBySuffix(files, ".ts"),
27188
27368
  message,
@@ -27190,9 +27370,9 @@ var functionAdapter = {
27190
27370
  // limits, and so an explicit null doesn't hit the NOT NULL column.
27191
27371
  inputSchema: meta.inputSchema ?? "",
27192
27372
  outputSchema: meta.outputSchema ?? "",
27193
- executionTimeout: meta.executionTimeout ?? 1e4,
27373
+ executionTimeout: meta.executionTimeout ?? DEFAULT_FUNCTION_EXECUTION_TIMEOUT_MS,
27194
27374
  executionCpu: meta.executionCpu ?? 250,
27195
- executionMemory: meta.executionMemory ?? 512
27375
+ executionMemory: meta.executionMemory ?? DEFAULT_FUNCTION_EXECUTION_MEMORY_MB
27196
27376
  }
27197
27377
  );
27198
27378
  return data.createFunctionVersion.functionVersion.versionNumber;
@@ -27301,7 +27481,7 @@ var pageAdapter = (opts) => {
27301
27481
  }
27302
27482
  return pageFiles(opts.dir, id, name2, version.config);
27303
27483
  },
27304
- push: async (id, files, message) => {
27484
+ push: async (id, files, message, expectedLatestVersion) => {
27305
27485
  const config = pageConfigFromFiles(files);
27306
27486
  const findings2 = await opts.validateConfig?.(config) ?? [];
27307
27487
  if (findings2.length > 0) {
@@ -27311,12 +27491,12 @@ ${findings2.map((f) => ` ${f}`).join("\n")}`
27311
27491
  );
27312
27492
  }
27313
27493
  const data = await gqlRequest(
27314
- `mutation CliCreatePageVersion($id: String!, $message: String, $config: JSON!) {
27315
- create${capitalized}Version(input: { ${gqlName}Version: { ${idArg}: $id, message: $message, config: $config } }) {
27494
+ `mutation CliCreatePageVersion($expectedLatestVersion: Int, $id: String!, $message: String, $config: JSON!) {
27495
+ create${capitalized}Version(input: { expectedLatestVersion: $expectedLatestVersion, ${gqlName}Version: { ${idArg}: $id, message: $message, config: $config } }) {
27316
27496
  ${gqlName}Version { versionNumber }
27317
27497
  }
27318
27498
  }`,
27319
- { id, message, config }
27499
+ { id, message, config, expectedLatestVersion }
27320
27500
  );
27321
27501
  const versionNumber = data[`create${capitalized}Version`]?.[`${gqlName}Version`]?.versionNumber;
27322
27502
  if (versionNumber == null) {
@@ -27411,7 +27591,7 @@ var automationAdapter = {
27411
27591
  })
27412
27592
  };
27413
27593
  },
27414
- push: async (id, files, message) => {
27594
+ push: async (id, files, message, expectedLatestVersion) => {
27415
27595
  const doc = JSON.parse(fileBySuffix(files, ".json"));
27416
27596
  const findings2 = await validateAutomationElements(doc.elements);
27417
27597
  if (findings2.length > 0) {
@@ -27421,12 +27601,13 @@ ${findings2.map((f) => ` ${f}`).join("\n")}`
27421
27601
  );
27422
27602
  }
27423
27603
  const data = await gqlRequest(
27424
- `mutation CliCreateAutomationVersion($automationId: String!, $elements: JSON!, $message: String, $maxConcurrentRuns: Int) {
27425
- createAutomationVersion(input: { automationVersion: {
27604
+ `mutation CliCreateAutomationVersion($expectedLatestVersion: Int, $automationId: String!, $elements: JSON!, $message: String, $maxConcurrentRuns: Int) {
27605
+ createAutomationVersion(input: { expectedLatestVersion: $expectedLatestVersion, automationVersion: {
27426
27606
  automationId: $automationId, elements: $elements, message: $message, maxConcurrentRuns: $maxConcurrentRuns
27427
27607
  }}) { automationVersion { num } }
27428
27608
  }`,
27429
27609
  {
27610
+ expectedLatestVersion,
27430
27611
  automationId: id,
27431
27612
  elements: doc.elements,
27432
27613
  message,
@@ -27536,22 +27717,20 @@ var agentAdapter = {
27536
27717
  { agentId: id, versionNumber }
27537
27718
  );
27538
27719
  if (data.agentVersion == null) {
27539
- throw new Error(
27540
- `Agent ${id} has no version ${String(versionNumber)}.`
27541
- );
27720
+ throw new Error(`Agent ${id} has no version ${String(versionNumber)}.`);
27542
27721
  }
27543
27722
  return agentFiles(id, name2, data.agentVersion);
27544
27723
  },
27545
- push: async (id, files, message) => {
27724
+ push: async (id, files, message, expectedLatestVersion) => {
27546
27725
  const config = JSON.parse(fileBySuffix(files, ".json"));
27547
27726
  const data = await gqlRequest(
27548
- `mutation CliCreateAgentVersion(
27727
+ `mutation CliCreateAgentVersion($expectedLatestVersion: Int,
27549
27728
  $agentId: String!, $message: String!, $systemPrompt: String!,
27550
27729
  $model: String!, $temperature: Float!, $maxTokens: Int!,
27551
27730
  $rateLimitRequestsPerMinute: Int!, $rateLimitTokensPerMinute: Int!,
27552
27731
  $functionIds: [String]
27553
27732
  ) {
27554
- createAgentVersionWithFunctions(input: {
27733
+ createAgentVersionWithFunctions(input: { expectedLatestVersion: $expectedLatestVersion,
27555
27734
  agentId: $agentId, message: $message, systemPrompt: $systemPrompt,
27556
27735
  model: $model, temperature: $temperature, maxTokens: $maxTokens,
27557
27736
  rateLimitRequestsPerMinute: $rateLimitRequestsPerMinute,
@@ -27559,7 +27738,7 @@ var agentAdapter = {
27559
27738
  functionIds: $functionIds
27560
27739
  }) { result { versionNumber } }
27561
27740
  }`,
27562
- { agentId: id, message, ...config }
27741
+ { agentId: id, message, ...config, expectedLatestVersion }
27563
27742
  );
27564
27743
  const versionNumber = data.createAgentVersionWithFunctions?.result?.versionNumber;
27565
27744
  if (versionNumber == null) {
@@ -27931,7 +28110,12 @@ var runPush = async (args, clone) => {
27931
28110
  if (content == null) throw new Error(`${relPath} is missing locally.`);
27932
28111
  files[relPath] = content;
27933
28112
  }
27934
- const versionNumber = await adapter.push(id, files, message);
28113
+ const versionNumber = await adapter.push(
28114
+ id,
28115
+ files,
28116
+ message,
28117
+ force ? void 0 : resource.baseVersion
28118
+ );
27935
28119
  for (const relPath of changedFiles) {
27936
28120
  const content = files[relPath];
27937
28121
  if (content == null) continue;
@@ -29036,42 +29220,6 @@ var agentToolRequestJsonSchemaSchema = external_exports.object({
29036
29220
  )
29037
29221
  }).loose();
29038
29222
 
29039
- // ../common/src/function.ts
29040
- var defaultAgentFunctionInputSchema = `{
29041
- "type": "object",
29042
- "properties": {
29043
- "method": {
29044
- "type": "string",
29045
- "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
29046
- "default": "POST",
29047
- "description": "HTTP method for this function call."
29048
- },
29049
- "headers": {
29050
- "type": "object",
29051
- "description": "Request headers. Use {} when none are needed.",
29052
- "default": {},
29053
- "additionalProperties": {
29054
- "type": "string"
29055
- }
29056
- },
29057
- "queryParams": {
29058
- "type": "object",
29059
- "description": "URL query params. Use {} when none are needed.",
29060
- "default": {},
29061
- "additionalProperties": {
29062
- "type": ["string", "number", "boolean"]
29063
- }
29064
- },
29065
- "body": {
29066
- "type": "object",
29067
- "description": "Request body payload. Use {} when none is needed.",
29068
- "default": {},
29069
- "additionalProperties": true
29070
- }
29071
- },
29072
- "required": ["method", "headers", "queryParams", "body"]
29073
- }`;
29074
-
29075
29223
  // ../common/src/liquidjs/liquidjs.ts
29076
29224
  var import_jmespath = __toESM(require_jmespath(), 1);
29077
29225
 
@@ -34573,8 +34721,7 @@ var runCreate2 = async (args) => {
34573
34721
  ) {
34574
34722
  createFunctionVersion(input: { functionVersion: {
34575
34723
  functionId: $functionId, code: $code, message: "Initial version",
34576
- inputSchema: $inputSchema, outputSchema: "",
34577
- executionTimeout: 10000, executionCpu: 250, executionMemory: 512
34724
+ inputSchema: $inputSchema, outputSchema: ""
34578
34725
  }}) { functionVersion { versionNumber } }
34579
34726
  }`,
34580
34727
  {
@@ -35597,6 +35744,8 @@ var runResource = async (args) => {
35597
35744
  // src/docs/bestPractices.ts
35598
35745
  var platform2 = `# OverAI platform primer
35599
35746
 
35747
+ Saves reject a stale editing base without discarding your draft. Incorporate the latest saved changes before retrying; never retry with a newer base unless those changes have been reconciled. A save conflict does not deploy anything. Normal push sends the manifest base to an atomic server check. Only explicit --force omits it; never use --force as automatic conflict recovery.
35748
+
35600
35749
  Organization context: Commands in a clone select its org automatically. Outside a clone,
35601
35750
  use OVERAI_ORG_ID=<orgId>. Each backend/org has an independent saved session; org switch
35602
35751
  changes only the machine-global default. Use whoami to inspect the effective scope.
@@ -35715,7 +35864,15 @@ language, customTitle, hideTopBar, ...). Push reassembles them.
35715
35864
  - Web pages follow the app's light/dark theme: the page root carries a \`dark\`
35716
35865
  class in dark mode (Tailwind darkMode: "class"), so style with \`dark:\`
35717
35866
  variants; useTheme() only for JS-driven styling like chart palettes.
35718
- Printable pages have no theme \u2014 neither the class nor the hook exists there.
35867
+ - Two dark-mode traps a web page written light-only hits. A \`border\` or
35868
+ \`divide\` utility with no color class falls back to Tailwind's default light
35869
+ gray, so a bare \`border-b\` stays a bright rule \u2014 write \`border-b
35870
+ border-gray-200 dark:border-gray-700\`. And if the page loads daisyUI, its
35871
+ theme sets the inherited text color, so a hardcoded \`bg-white\` whose text
35872
+ just inherits goes light-on-white; pair every surface, not only the text.
35873
+ - Printable pages have no theme \u2014 neither the \`dark\` class nor useTheme()
35874
+ exists there, so \`dark:\` variants never activate and neither trap above
35875
+ applies.
35719
35876
  - Call Functions for server-side logic \u2014 they're awaitable; automations are
35720
35877
  fire-and-forget.
35721
35878
  - SQL from pages: env.TBSxxx.sql tagged templates only; compose dynamic SQL by
@@ -35730,6 +35887,9 @@ language, customTitle, hideTopBar, ...). Push reassembles them.
35730
35887
  conversation helpers throw), and author-requiring writes like
35731
35888
  env.DFxxx.saveVersion 401. Reads use the workspace's own access, so treat
35732
35889
  anything the page can query as public.
35890
+ - meta.json \`runtime\`: "v2" serves the page from its own origin (separate
35891
+ process, real localStorage/cookies \u2014 no noSandbox needed); absent or "v1" is
35892
+ the sandboxed srcdoc iframe. Anything else is rejected on push.
35733
35893
  - Write meta.json flags (noSandbox, hideTopBar) as JSON booleans. A page cloned
35734
35894
  before the shape settled may hold the strings "true"/"false" \u2014 those still
35735
35895
  push, anything else is rejected. noSandbox drops the iframe sandbox, which
@@ -3,7 +3,7 @@ import {
3
3
  webPageConfigSchema,
4
4
  webPageConfigWriteSchema,
5
5
  webPageLanguage
6
- } from "./chunk-56E4CWBE.js";
6
+ } from "./chunk-5CMM7GCC.js";
7
7
  import "./chunk-XCJJTK3H.js";
8
8
  import "./chunk-U67V476Y.js";
9
9
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overaihq/cli",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "Create, edit, deploy, and run OverAI workspace resources from the command line",
5
5
  "type": "module",
6
6
  "homepage": "https://overai.com",