@kortix/ui 0.14.6 → 0.14.7

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 (123) hide show
  1. package/dist/_vendor/kortix-shared.js +489 -381
  2. package/dist/customize/agents/agent-authority-card.js +1 -2
  3. package/dist/customize/agents/agent-detail-aside.js +15 -14
  4. package/dist/customize/agents/agent-drives-section.js +5 -6
  5. package/dist/customize/agents/agent-grant-pages.js +68 -70
  6. package/dist/customize/agents/agent-nav.prototype.d.ts +35 -0
  7. package/dist/customize/agents/agent-nav.prototype.js +95 -0
  8. package/dist/customize/agents/agent-page.js +57 -22
  9. package/dist/customize/agents/agent-people-section.js +18 -17
  10. package/dist/customize/agents/agent-triggers-section.js +6 -5
  11. package/dist/customize/connectors/catalog/catalog-entry.d.ts +14 -0
  12. package/dist/customize/connectors/catalog/catalog-entry.js +18 -1
  13. package/dist/customize/connectors/catalog/connector-browse.d.ts +28 -0
  14. package/dist/customize/connectors/catalog/connector-browse.js +18 -5
  15. package/dist/customize/connectors/detail/app-page.js +19 -5
  16. package/dist/customize/connectors/detail/connector-modal.d.ts +10 -13
  17. package/dist/customize/connectors/detail/connector-modal.js +18 -101
  18. package/dist/customize/connectors/detail/connector-notice.js +6 -2
  19. package/dist/customize/connectors/detail/connector-page.d.ts +30 -0
  20. package/dist/customize/connectors/detail/connector-page.js +26 -13
  21. package/dist/customize/sections/llm-provider/custom-provider-form.js +24 -7
  22. package/dist/customize/sections/llm-provider/custom-provider-panel.js +44 -8
  23. package/dist/customize/sections/llm-provider/types.d.ts +3 -0
  24. package/dist/customize/sections/llm-provider/utils.js +2 -2
  25. package/dist/customize/sections/view/agent-editor-access-fields.d.ts +9 -16
  26. package/dist/customize/sections/view/agent-editor-access-fields.js +30 -30
  27. package/dist/customize/sections/view/agent-editor-basics-fields.js +3 -10
  28. package/dist/customize/sections/view/agent-editor-primitives.d.ts +28 -10
  29. package/dist/customize/sections/view/agent-editor-primitives.js +32 -19
  30. package/dist/customize/sections/view/agent-editor.js +3 -3
  31. package/dist/customize/sections/view/gateway/gateway-routing.js +3 -3
  32. package/dist/customize/sections/view/grant-mode-field.d.ts +2 -5
  33. package/dist/customize/sections/view/grant-mode-field.js +10 -18
  34. package/dist/customize/sections/view/permission-editor.js +11 -8
  35. package/dist/customize/sections/view/secrets-view.js +2 -1
  36. package/dist/customize/settings/tabs/general-tab.d.ts +9 -2
  37. package/dist/customize/settings/tabs/general-tab.js +33 -11
  38. package/dist/customize/settings/tabs/transfer-workspace-dialog.d.ts +4 -0
  39. package/dist/customize/settings/tabs/transfer-workspace-dialog.js +82 -0
  40. package/dist/files/project/api/runtime-files.js +3 -2
  41. package/dist/files/project/file-source.js +18 -1
  42. package/dist/files/project/hooks/use-file-content.js +2 -0
  43. package/dist/files/viewer/file-header.js +1 -1
  44. package/dist/files/viewer/file-preview-modal.d.ts +1 -1
  45. package/dist/files/viewer/file-preview-modal.js +12 -2
  46. package/dist/files/viewer/file-source.d.ts +3 -1
  47. package/dist/files/viewer/use-file-content-state.js +26 -7
  48. package/dist/files/viewer/viewer-actions.js +2 -2
  49. package/dist/i18n/en.d.ts +345 -12
  50. package/dist/i18n/en.js +350 -17
  51. package/dist/internal/files/types.d.ts +2 -0
  52. package/dist/internal/goals/goal-meta.d.ts +30 -0
  53. package/dist/internal/goals/goal-meta.js +55 -0
  54. package/dist/internal/lib/query-client-singleton.d.ts +9 -3
  55. package/dist/internal/lib/query-client-singleton.js +18 -12
  56. package/dist/internal/share/session-shares-modal.js +3 -7
  57. package/dist/internal/stores/kortix-computer-store.js +14 -2
  58. package/dist/internal/stores/session-hover-store.d.ts +32 -0
  59. package/dist/internal/stores/session-hover-store.js +38 -0
  60. package/dist/internal/stores/sidebar-nav-store.d.ts +1 -1
  61. package/dist/internal/stores/sidebar-nav-store.js +3 -1
  62. package/dist/lib/routes.d.ts +2 -0
  63. package/dist/lib/routes.js +1 -0
  64. package/dist/primitives/settings-section-header.d.ts +1 -1
  65. package/dist/session/composer/attachment-tile.d.ts +0 -2
  66. package/dist/session/composer/attachment-tile.js +0 -8
  67. package/dist/session/composer/clipboard-files.d.ts +2 -1
  68. package/dist/session/composer/composer-draft-recovery.d.ts +1 -2
  69. package/dist/session/composer/composer-draft-recovery.js +0 -13
  70. package/dist/session/composer/context-ring.d.ts +1 -1
  71. package/dist/session/composer/context-ring.js +2 -2
  72. package/dist/session/composer/context-usage.d.ts +3 -6
  73. package/dist/session/composer/context-usage.js +3 -6
  74. package/dist/session/composer/inbox-row-claims.d.ts +2 -2
  75. package/dist/session/composer/inbox-row-claims.js +1 -1
  76. package/dist/session/composer/queue-projection.d.ts +3 -2
  77. package/dist/session/composer/queued-prompt-edit.d.ts +1 -1
  78. package/dist/session/composer/reasoning-effort-selector.d.ts +2 -1
  79. package/dist/session/composer/session-composer-readiness.d.ts +7 -22
  80. package/dist/session/composer/session-composer-readiness.js +12 -40
  81. package/dist/session/composer/token-progress.d.ts +1 -1
  82. package/dist/session/composer/token-progress.js +2 -2
  83. package/dist/session/header/session-goal-indicator.d.ts +1 -0
  84. package/dist/session/header/session-goal-indicator.js +41 -0
  85. package/dist/session/header/session-site-header.js +2 -1
  86. package/dist/session/panel/session-action-panel-column.js +11 -1
  87. package/dist/session/panel/session-audit-shared.d.ts +0 -4
  88. package/dist/session/panel/session-audit-shared.js +1 -1
  89. package/dist/session/panel/session-changes-shared.d.ts +2 -1
  90. package/dist/session/prompts/session-permission-prompt.js +6 -3
  91. package/dist/session/status/provisioning-failure.d.ts +2 -1
  92. package/dist/session/status/session-error-banner.js +8 -6
  93. package/dist/session/status/session-starting-loader.d.ts +24 -31
  94. package/dist/session/status/session-starting-loader.js +32 -81
  95. package/dist/session/thread/chat-minimap-items.d.ts +4 -4
  96. package/dist/session/thread/first-prompt-handover.d.ts +3 -2
  97. package/dist/session/thread/message-parsing.d.ts +3 -3
  98. package/dist/session/thread/session-chat.js +3 -10
  99. package/dist/session/thread/session-history-scroll.d.ts +2 -1
  100. package/dist/session/thread/session-thread.js +1 -1
  101. package/dist/styles.css +1 -1
  102. package/dist/terminal/pty-connection.d.ts +5 -4
  103. package/dist/workspace/index.d.ts +1 -0
  104. package/dist/workspace/index.js +1 -0
  105. package/dist/workspace/saved-session-skeleton-shape.d.ts +4 -3
  106. package/dist/workspace/saved-session-skeleton.d.ts +5 -1
  107. package/dist/workspace/saved-session-skeleton.js +5 -4
  108. package/dist/workspace/session-workspace.js +4 -5
  109. package/dist/workspace/sidebar/footer/project-goals-nav.d.ts +6 -0
  110. package/dist/workspace/sidebar/footer/project-goals-nav.js +26 -0
  111. package/dist/workspace/sidebar/modal/session-embed-section.d.ts +25 -0
  112. package/dist/workspace/sidebar/modal/session-embed-section.js +71 -0
  113. package/dist/workspace/sidebar/modal/share-session-modal.js +2 -2
  114. package/dist/workspace/sidebar/nav-row-meta.js +14 -2
  115. package/dist/workspace/sidebar/project-nav-items.js +3 -0
  116. package/dist/workspace/sidebar/project-session-list.js +12 -3
  117. package/dist/workspace/sidebar/session-brief-hover-card.js +5 -8
  118. package/package.json +4 -4
  119. package/skills/kortix-ui/references/modules.md +2 -0
  120. package/dist/session/status/use-readiness-settling.d.ts +0 -18
  121. package/dist/session/status/use-readiness-settling.js +0 -43
  122. package/dist/workspace/sidebar/modal/session-public-link-section.d.ts +0 -13
  123. package/dist/workspace/sidebar/modal/session-public-link-section.js +0 -66
@@ -31,105 +31,13 @@ function k(n, t) {
31
31
  }
32
32
  h.minitz = h;
33
33
 
34
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/date.js
35
- var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;
36
- var TomlDate = class _TomlDate extends Date {
37
- #hasDate = false;
38
- #hasTime = false;
39
- #offset = null;
40
- constructor(date) {
41
- let hasDate = true;
42
- let hasTime = true;
43
- let offset = "Z";
44
- if (typeof date === "string") {
45
- let match = date.match(DATE_TIME_RE);
46
- if (match) {
47
- if (!match[1]) {
48
- hasDate = false;
49
- date = `0000-01-01T${date}`;
50
- }
51
- hasTime = !!match[2];
52
- hasTime && date[10] === " " && (date = date.replace(" ", "T"));
53
- if (match[2] && +match[2] > 23) {
54
- date = "";
55
- } else {
56
- offset = match[3] || null;
57
- date = date.toUpperCase();
58
- if (!offset && hasTime)
59
- date += "Z";
60
- }
61
- } else {
62
- date = "";
63
- }
64
- }
65
- super(date);
66
- if (!isNaN(this.getTime())) {
67
- this.#hasDate = hasDate;
68
- this.#hasTime = hasTime;
69
- this.#offset = offset;
70
- }
71
- }
72
- isDateTime() {
73
- return this.#hasDate && this.#hasTime;
74
- }
75
- isLocal() {
76
- return !this.#hasDate || !this.#hasTime || !this.#offset;
77
- }
78
- isDate() {
79
- return this.#hasDate && !this.#hasTime;
80
- }
81
- isTime() {
82
- return this.#hasTime && !this.#hasDate;
83
- }
84
- isValid() {
85
- return this.#hasDate || this.#hasTime;
86
- }
87
- toISOString() {
88
- let iso = super.toISOString();
89
- if (this.isDate())
90
- return iso.slice(0, 10);
91
- if (this.isTime())
92
- return iso.slice(11, 23);
93
- if (this.#offset === null)
94
- return iso.slice(0, -1);
95
- if (this.#offset === "Z")
96
- return iso;
97
- let offset = +this.#offset.slice(1, 3) * 60 + +this.#offset.slice(4, 6);
98
- offset = this.#offset[0] === "-" ? offset : -offset;
99
- let offsetDate = new Date(this.getTime() - offset * 6e4);
100
- return offsetDate.toISOString().slice(0, -1) + this.#offset;
101
- }
102
- static wrapAsOffsetDateTime(jsDate, offset = "Z") {
103
- let date = new _TomlDate(jsDate);
104
- date.#offset = offset;
105
- return date;
106
- }
107
- static wrapAsLocalDateTime(jsDate) {
108
- let date = new _TomlDate(jsDate);
109
- date.#offset = null;
110
- return date;
111
- }
112
- static wrapAsLocalDate(jsDate) {
113
- let date = new _TomlDate(jsDate);
114
- date.#hasTime = false;
115
- date.#offset = null;
116
- return date;
117
- }
118
- static wrapAsLocalTime(jsDate) {
119
- let date = new _TomlDate(jsDate);
120
- date.#hasDate = false;
121
- date.#offset = null;
122
- return date;
123
- }
124
- };
125
-
126
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/error.js
34
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/error.js
127
35
  function getLineColFromPtr(string2, ptr) {
128
- let lines = string2.slice(0, ptr).split(/\r\n|\n|\r/g);
36
+ let lines = string2.slice(0, ptr).split(/\r?\n/);
129
37
  return [lines.length, lines.pop().length + 1];
130
38
  }
131
39
  function makeCodeBlock(string2, line, column) {
132
- let lines = string2.split(/\r\n|\n|\r/g);
40
+ let lines = string2.split(/\r?\n/);
133
41
  let codeblock = "";
134
42
  let numberLen = (Math.log10(line + 1) | 0) + 1;
135
43
  for (let i = line - 1; i <= line + 1; i++) {
@@ -147,7 +55,7 @@ function makeCodeBlock(string2, line, column) {
147
55
  }
148
56
  return codeblock;
149
57
  }
150
- var TomlError = class extends Error {
58
+ var TomlError = class _TomlError extends Error {
151
59
  line;
152
60
  column;
153
61
  codeblock;
@@ -161,69 +69,15 @@ ${codeblock}`, options);
161
69
  this.column = column;
162
70
  this.codeblock = codeblock;
163
71
  }
164
- };
165
-
166
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/util.js
167
- function indexOfNewline(str, start = 0) {
168
- let idx = str.indexOf("\n", start);
169
- if (str.charCodeAt(idx - 1) === 13)
170
- idx--;
171
- return idx;
172
- }
173
- function skipComment(ctx) {
174
- for (; ctx.p < ctx.s.length; ctx.p++) {
175
- let c = ctx.s.charCodeAt(ctx.p);
176
- if (c === 10)
177
- break;
178
- if (c === 13 && ctx.s.charCodeAt(ctx.p + 1) === 10) {
179
- ctx.p++;
180
- break;
181
- }
182
- if (c < 32 && c !== 9 || c === 127) {
183
- throw new TomlError("control characters are not allowed in comments", {
184
- toml: ctx.s,
185
- ptr: ctx.p
186
- });
187
- }
188
- }
189
- }
190
- function skipVoid(ctx, banNewLines, banComments) {
191
- let c;
192
- while (1) {
193
- while ((c = ctx.s.charCodeAt(ctx.p)) === 32 || c === 9 || !banNewLines && (c === 10 || c === 13 && ctx.s.charCodeAt(ctx.p + 1) === 10))
194
- ctx.p++;
195
- if (banComments || c !== 35)
196
- break;
197
- skipComment(ctx);
198
- }
199
- }
200
- function skipUntil(ctx, sep, end) {
201
- let ptr = ctx.p;
202
- if (!end) {
203
- ptr = indexOfNewline(ctx.s, ptr);
204
- ctx.p = ptr < 0 ? ctx.s.length : ptr;
205
- return;
206
- }
207
- for (; ctx.p < ctx.s.length; ctx.p++) {
208
- let c = ctx.s.charCodeAt(ctx.p);
209
- if (c === 35) {
210
- skipComment(ctx);
211
- } else if (c === end || c === sep) {
212
- return;
213
- }
72
+ /** @internal */
73
+ static x(message, ctx, ptr) {
74
+ throw new _TomlError(message, { toml: ctx.s, ptr: ptr ?? ctx.p });
214
75
  }
215
- throw new TomlError("cannot find end of structure", {
216
- toml: ctx.s,
217
- ptr
218
- });
219
- }
76
+ };
220
77
 
221
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/primitive.js
222
- var INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
223
- var FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
224
- var LEADING_ZERO = /^[+-]?0[0-9_]/;
78
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/primitive.js
225
79
  function parseString(ctx) {
226
- let start = ctx.p;
80
+ let startPtr = ctx.p;
227
81
  let c = ctx.s.charCodeAt(ctx.p++);
228
82
  let first = c;
229
83
  let isLiteral = c === 39;
@@ -242,10 +96,7 @@ function parseString(ctx) {
242
96
  if (isMultiline && (c === 10 || c === 13 && ctx.s.charCodeAt(ctx.p + 1) === 10)) {
243
97
  state = state && 3;
244
98
  } else if (c < 32 && c !== 9 || c === 127) {
245
- throw new TomlError("control characters are not allowed in strings", {
246
- toml: ctx.s,
247
- ptr: ctx.p
248
- });
99
+ TomlError.x("control characters are not allowed in strings", ctx);
249
100
  } else if ((!state || state === 3) && c === first && (!isMultiline || ctx.s.charCodeAt(ctx.p + 1) === first && ctx.s.charCodeAt(ctx.p + 2) === first)) {
250
101
  if (isMultiline) {
251
102
  if (ctx.s.charCodeAt(ctx.p + 3) === first)
@@ -253,8 +104,10 @@ function parseString(ctx) {
253
104
  if (ctx.s.charCodeAt(ctx.p + 3) === first)
254
105
  ctx.p++;
255
106
  }
256
- if (!state)
257
- parsed += ctx.s.slice(sliceStart, ctx.p);
107
+ if (!state) {
108
+ let s = ctx.s.slice(sliceStart, ctx.p);
109
+ parsed = parsed ? parsed + s : s;
110
+ }
258
111
  ctx.p += isMultiline ? 3 : 1;
259
112
  return parsed;
260
113
  } else if (!state) {
@@ -264,10 +117,11 @@ function parseString(ctx) {
264
117
  }
265
118
  } else if (state === 1) {
266
119
  if (c === 120 || c === 117 || c === 85) {
120
+ let errPtr = ctx.p++ - 1;
267
121
  let value = 0;
268
122
  let len = c === 120 ? 2 : c === 117 ? 4 : 8;
269
123
  for (let j = 0; j < len; j++, ctx.p++) {
270
- let hex = ctx.s.charCodeAt(ctx.p + 1);
124
+ let hex = ctx.s.charCodeAt(ctx.p);
271
125
  let digit = (
272
126
  /* 0-9 */
273
127
  hex >= 48 && hex <= 57 ? hex - 48 : (
@@ -279,16 +133,16 @@ function parseString(ctx) {
279
133
  )
280
134
  );
281
135
  if (digit < 0)
282
- throw new TomlError("invalid non-hex character in unicode escape", { toml: ctx.s, ptr: ctx.p + 1 });
136
+ TomlError.x("invalid non-hex character in unicode escape", ctx);
283
137
  value = value << 4 | digit;
284
138
  }
285
139
  if (value < 0 || value > 1114111 || value >= 55296 && value <= 57343) {
286
- throw new TomlError("invalid unicode escape", { toml: ctx.s, ptr: ctx.p });
140
+ TomlError.x("invalid unicode escape", ctx, errPtr);
287
141
  }
288
142
  parsed += String.fromCodePoint(value);
289
- sliceStart = ctx.p + 1;
143
+ sliceStart = ctx.p--;
290
144
  state = 0;
291
- } else if (c === 32 || c === 9) {
145
+ } else if (isMultiline && (c === 32 || c === 9)) {
292
146
  state = 2;
293
147
  } else {
294
148
  if (c === 98)
@@ -308,84 +162,150 @@ function parseString(ctx) {
308
162
  else if (c === 92)
309
163
  parsed += "\\";
310
164
  else
311
- throw new TomlError("unrecognized escape sequence", { toml: ctx.s, ptr: ctx.p });
165
+ TomlError.x("unrecognised escape sequence", ctx);
312
166
  sliceStart = ctx.p + 1;
313
167
  state = 0;
314
168
  }
315
169
  } else if (c !== 32 && c !== 9) {
316
- if (state === 2) {
317
- throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
318
- toml: ctx.s,
319
- ptr: sliceStart
320
- });
321
- }
170
+ if (state === 2)
171
+ TomlError.x("invalid escape: only line-ending whitespace may be escaped", ctx, sliceStart);
322
172
  state = !isLiteral && c === 92 ? 1 : 0;
323
173
  sliceStart = ctx.p;
324
174
  }
325
175
  }
326
- throw new TomlError("unfinished string", { toml: ctx.s, ptr: start });
176
+ TomlError.x("unfinished string", ctx, startPtr);
327
177
  }
328
- function sliceAndTrimEndOf(ctx, start, end) {
329
- let value = ctx.s.slice(start, end);
330
- let commentIdx = value.indexOf("#");
331
- if (commentIdx > 0) {
332
- skipComment({ s: value, p: commentIdx});
333
- value = value.slice(0, commentIdx);
178
+
179
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/date.js
180
+ var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;
181
+ var TomlDate = class _TomlDate extends Date {
182
+ #hasDate = false;
183
+ #hasTime = false;
184
+ #offset = null;
185
+ constructor(date, fasttype, unsafeDelim) {
186
+ let hasDate = true;
187
+ let hasTime = true;
188
+ let offset = "Z";
189
+ let c;
190
+ if (typeof date === "string") {
191
+ if (fasttype)
192
+ prep: {
193
+ if (fasttype < 3) {
194
+ if (+date.slice(11, 13) > 23) {
195
+ date = "";
196
+ break prep;
197
+ }
198
+ if (fasttype === 2) {
199
+ offset = null;
200
+ date += "Z";
201
+ } else if ((c = date.charCodeAt(date.length - 1)) !== 90 && c !== 122) {
202
+ offset = date.slice(date.length - 6);
203
+ }
204
+ if (unsafeDelim)
205
+ date = date.slice(0, 10) + "T" + date.slice(11);
206
+ } else if (fasttype === 4) {
207
+ date = +date.slice(0, 2) > 23 ? "" : `0000-01-01T${date}Z`;
208
+ }
209
+ hasDate = fasttype !== 4;
210
+ hasTime = fasttype !== 3;
211
+ }
212
+ else {
213
+ let match = date.match(DATE_TIME_RE);
214
+ if (match) {
215
+ if (!match[1]) {
216
+ hasDate = false;
217
+ date = `0000-01-01T${date}`;
218
+ }
219
+ hasTime = !!match[2];
220
+ hasTime && date[10] === " " && (date = date.replace(" ", "T"));
221
+ if (match[2] && +match[2] > 23) {
222
+ date = "";
223
+ } else {
224
+ offset = match[3] || null;
225
+ if (!offset && hasTime)
226
+ date += "Z";
227
+ }
228
+ } else {
229
+ date = "";
230
+ }
231
+ }
232
+ }
233
+ super(date);
234
+ if (!isNaN(this.getTime())) {
235
+ this.#hasDate = hasDate;
236
+ this.#hasTime = hasTime;
237
+ this.#offset = offset;
238
+ }
334
239
  }
335
- return value.trimEnd();
336
- }
337
- function parseValue(ctx, integersAsBigInt, end) {
338
- let ptr = ctx.p;
339
- let err = { toml: ctx.s, ptr };
340
- skipUntil(ctx, 44, end);
341
- let value = sliceAndTrimEndOf(ctx, ptr, ctx.p);
342
- if (!value)
343
- throw new TomlError("incomplete declaration: value expected", err);
344
- if (value === "-inf")
345
- return -Infinity;
346
- if (value === "inf" || value === "+inf")
347
- return Infinity;
348
- if (value === "nan" || value === "+nan" || value === "-nan")
349
- return NaN;
350
- if (value === "-0")
351
- return integersAsBigInt ? 0n : 0;
352
- let isInt = INT_REGEX.test(value);
353
- if (isInt || FLOAT_REGEX.test(value)) {
354
- if (LEADING_ZERO.test(value)) {
355
- throw new TomlError("leading zeroes are not allowed", err);
356
- }
357
- value = value.replace(/_/g, "");
358
- let numeric = +value;
359
- if (isNaN(numeric)) {
360
- throw new TomlError("invalid number", err);
361
- }
362
- if (isInt) {
363
- if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {
364
- throw new TomlError("integer value cannot be represented losslessly", err);
365
- }
366
- if (isInt || integersAsBigInt === true)
367
- numeric = BigInt(value);
368
- }
369
- return numeric;
370
- }
371
- const date = new TomlDate(value);
372
- if (!date.isValid())
373
- throw new TomlError("invalid value", err);
374
- return date;
375
- }
240
+ isDateTime() {
241
+ return this.#hasDate && this.#hasTime;
242
+ }
243
+ isLocal() {
244
+ return !this.#hasDate || !this.#hasTime || !this.#offset;
245
+ }
246
+ isDate() {
247
+ return this.#hasDate && !this.#hasTime;
248
+ }
249
+ isTime() {
250
+ return this.#hasTime && !this.#hasDate;
251
+ }
252
+ isValid() {
253
+ return this.#hasDate || this.#hasTime;
254
+ }
255
+ toISOString() {
256
+ let iso = super.toISOString();
257
+ if (this.isDate())
258
+ return iso.slice(0, 10);
259
+ if (this.isTime())
260
+ return iso.slice(11, 23);
261
+ if (this.#offset === null)
262
+ return iso.slice(0, -1);
263
+ if (this.#offset === "Z" || this.#offset === "z")
264
+ return iso;
265
+ let offset = +this.#offset.slice(1, 3) * 60 + +this.#offset.slice(4, 6);
266
+ offset = this.#offset[0] === "-" ? offset : -offset;
267
+ let offsetDate = new Date(this.getTime() - offset * 6e4);
268
+ return offsetDate.toISOString().slice(0, -1) + this.#offset;
269
+ }
270
+ static wrapAsOffsetDateTime(jsDate, offset = "Z") {
271
+ let date = new _TomlDate(jsDate);
272
+ date.#offset = offset;
273
+ return date;
274
+ }
275
+ static wrapAsLocalDateTime(jsDate) {
276
+ let date = new _TomlDate(jsDate);
277
+ date.#offset = null;
278
+ return date;
279
+ }
280
+ static wrapAsLocalDate(jsDate) {
281
+ let date = new _TomlDate(jsDate);
282
+ date.#hasTime = false;
283
+ date.#offset = null;
284
+ return date;
285
+ }
286
+ static wrapAsLocalTime(jsDate) {
287
+ let date = new _TomlDate(jsDate);
288
+ date.#hasDate = false;
289
+ date.#offset = null;
290
+ return date;
291
+ }
292
+ };
376
293
 
377
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/extract.js
378
- function extractValue(ctx, end, integersAsBigInt) {
379
- let ptr = ctx.p;
380
- let c = ctx.s.charCodeAt(ptr);
294
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/extract.js
295
+ function isDigit(char, base = 10) {
296
+ return base === 16 ? char > 47 && char < 58 || char > 64 && char < 71 || char > 96 && char < 103 : char > 47 && char < 48 + base;
297
+ }
298
+ function isEndOfValue(char, delim) {
299
+ return char === 32 || char === 9 || char === 10 || char === 13 || // Structure end or next value delimiter
300
+ delim && (char === delim || char === 44) || // Comment
301
+ char === 35;
302
+ }
303
+ function extractValue(ctx, end) {
304
+ let errPtr = ctx.p;
305
+ let c = ctx.s.charCodeAt(ctx.p);
381
306
  if (c === 91 || c === 123) {
382
- if (!ctx.d--) {
383
- throw new TomlError("document contains excessively nested structures. aborting.", {
384
- toml: ctx.s,
385
- ptr
386
- });
387
- }
388
- let value = c === 91 ? parseArray(ctx, integersAsBigInt) : parseInlineTable(ctx, integersAsBigInt);
307
+ ctx.d-- || TomlError.x("document contains excessively nested structures. aborting.", ctx);
308
+ let value = c === 91 ? parseArray(ctx) : parseInlineTable(ctx);
389
309
  ctx.d++;
390
310
  return value;
391
311
  }
@@ -394,90 +314,261 @@ function extractValue(ctx, end, integersAsBigInt) {
394
314
  }
395
315
  if (c === 116) {
396
316
  if (ctx.s.charCodeAt(++ctx.p) !== 114 || ctx.s.charCodeAt(++ctx.p) !== 117 || ctx.s.charCodeAt(++ctx.p) !== 101)
397
- throw new TomlError("invalid value", { toml: ctx.s, ptr });
398
- ctx.p++;
399
- return true;
317
+ TomlError.x("invalid value", ctx, errPtr);
318
+ return ctx.p++, true;
400
319
  }
401
320
  if (c === 102) {
402
321
  if (ctx.s.charCodeAt(++ctx.p) !== 97 || ctx.s.charCodeAt(++ctx.p) !== 108 || ctx.s.charCodeAt(++ctx.p) !== 115 || ctx.s.charCodeAt(++ctx.p) !== 101)
403
- throw new TomlError("invalid value", { toml: ctx.s, ptr });
404
- ctx.p++;
405
- return false;
322
+ TomlError.x("invalid value", ctx, errPtr);
323
+ return ctx.p++, false;
324
+ }
325
+ if (c === 43 || c === 45) {
326
+ return parseNumber(ctx, ctx.p, ctx.s.charCodeAt(++ctx.p), 44 - c, end);
327
+ }
328
+ if (ctx.s.charCodeAt(ctx.p + 4) === 45 && ctx.s.charCodeAt(ctx.p + 7) === 45) {
329
+ return parseDate(ctx, c, end);
406
330
  }
407
- return parseValue(ctx, integersAsBigInt, end);
331
+ if (ctx.s.charCodeAt(ctx.p + 2) === 58) {
332
+ return parseTime(ctx, c, end);
333
+ }
334
+ return parseNumber(ctx, ctx.p, c, 0, end);
408
335
  }
409
-
410
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/struct.js
411
- var KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/;
412
- function parseKey(ctx, end = "=") {
336
+ function parseNumber(ctx, startPtr, startChr, sign, endChr) {
337
+ let c = startChr;
338
+ let state = 0;
339
+ let hasUnderscores = false;
340
+ if (c === 105) {
341
+ if (ctx.s.charCodeAt(++ctx.p) !== 110 || ctx.s.charCodeAt(++ctx.p) !== 102)
342
+ TomlError.x("invalid value", ctx, startPtr);
343
+ return ctx.p++, (sign || 1) / 0;
344
+ }
345
+ if (c === 110) {
346
+ if (ctx.s.charCodeAt(++ctx.p) !== 97 || ctx.s.charCodeAt(++ctx.p) !== 110)
347
+ TomlError.x("invalid value", ctx, startPtr);
348
+ return ctx.p++, NaN;
349
+ }
350
+ if (c === 48) {
351
+ if (++ctx.p >= ctx.s.length || isEndOfValue(c = ctx.s.charCodeAt(ctx.p), endChr))
352
+ return ctx.bi === true ? 0n : 0;
353
+ if (!sign) {
354
+ if (c === 120)
355
+ return parseIntegerBaseN(ctx, startPtr, 16, endChr);
356
+ else if (c === 98)
357
+ return parseIntegerBaseN(ctx, startPtr, 2, endChr);
358
+ else if (c === 111)
359
+ return parseIntegerBaseN(ctx, startPtr, 8, endChr);
360
+ }
361
+ if (c === 46)
362
+ state = 2;
363
+ else if (c === 101 || c === 69)
364
+ state = 4;
365
+ else
366
+ TomlError.x("illegal leading zero", ctx, startPtr);
367
+ } else if (!isDigit(c))
368
+ TomlError.x("invalid value", ctx, startPtr);
369
+ while (++ctx.p < ctx.s.length && (c = ctx.s.charCodeAt(ctx.p), !isEndOfValue(c, endChr))) {
370
+ if (!state)
371
+ state = 1;
372
+ if (c === 95) {
373
+ if (!(state & 1))
374
+ TomlError.x("illegal underscore", ctx);
375
+ state += 11;
376
+ hasUnderscores = true;
377
+ } else if (state === 1 && c === 46)
378
+ state = 2;
379
+ else if ((state === 1 || state === 3) && (c === 101 || c === 69))
380
+ state = 4;
381
+ else if (state === 4 && (c === 43 || c === 45)) ; else if (!isDigit(c))
382
+ TomlError.x(`illegal character in numeric literal`, ctx);
383
+ else if (state > 9)
384
+ state -= 11;
385
+ else if (!(state & 1))
386
+ state++;
387
+ }
388
+ if (!state) {
389
+ let val = (startChr - 48) * (sign || 1);
390
+ return ctx.bi === true ? BigInt(val) : val;
391
+ }
392
+ if (!(state & 1))
393
+ TomlError.x("unfinished numeric value", ctx, startPtr);
394
+ let str = ctx.s.slice(startPtr, ctx.p);
395
+ if (hasUnderscores)
396
+ str = str.replaceAll("_", "");
397
+ return state > 1 ? parseFloat(str) : parseInteger(ctx, str, 10, startPtr);
398
+ }
399
+ function parseIntegerBaseN(ctx, startPtr, base, endChr) {
400
+ let c, underscore = 1;
401
+ while (++ctx.p < ctx.s.length && (c = ctx.s.charCodeAt(ctx.p), !isEndOfValue(c, endChr))) {
402
+ if (c === 95) {
403
+ if (underscore & 1)
404
+ TomlError.x("illegal underscore", ctx);
405
+ underscore = 3;
406
+ } else if (!isDigit(c, base))
407
+ TomlError.x(`illegal character in numeric literal`, ctx);
408
+ else if (underscore & 1)
409
+ underscore--;
410
+ }
411
+ if (underscore & 1)
412
+ TomlError.x("unfinished numeric value", ctx);
413
+ let str = ctx.s.slice(startPtr + 2, ctx.p);
414
+ if (underscore)
415
+ str = str.replaceAll("_", "");
416
+ return parseInteger(ctx, str, base, startPtr);
417
+ }
418
+ function parseInteger(ctx, str, base, startPtr) {
419
+ if (ctx.bi !== true)
420
+ int: {
421
+ let val = parseInt(str, base);
422
+ if (!Number.isSafeInteger(val)) {
423
+ if (ctx.bi)
424
+ break int;
425
+ TomlError.x("integer value cannot be represented losslessly", ctx, startPtr);
426
+ }
427
+ return val;
428
+ }
429
+ return base === 10 ? BigInt(str) : BigInt((base === 2 ? "0b" : base === 8 ? "0o" : "0x") + str);
430
+ }
431
+ function parseDate(ctx, c, endChr) {
432
+ let startPtr = ctx.p++, unsafeSeparator;
433
+ if (!isDigit(c) || !isDigit(ctx.s.charCodeAt(ctx.p++)) || !isDigit(ctx.s.charCodeAt(ctx.p++)) || !isDigit(ctx.s.charCodeAt(ctx.p++))) {
434
+ return parseNumber(ctx, ctx.p = startPtr, c, 0, endChr);
435
+ }
436
+ ctx.p += 5;
437
+ if (!isDigit(ctx.s.charCodeAt(ctx.p++)))
438
+ TomlError.x("invalid date-time: date part is malformed", ctx, startPtr);
439
+ if (ctx.p >= ctx.s.length || ((c = ctx.s.charCodeAt(ctx.p)) !== 32 || (unsafeSeparator = true, !isDigit(ctx.s.charCodeAt(ctx.p + 1)))) && c !== 84 && c !== 116) {
440
+ let t2 = ctx.s.slice(startPtr, ctx.p);
441
+ return readDate(ctx, t2, 3, false, startPtr);
442
+ }
443
+ if (ctx.s.charCodeAt(ctx.p += 3) !== 58)
444
+ TomlError.x("invalid date-time: time part is malformed", ctx, startPtr);
445
+ if (ctx.s.charCodeAt(ctx.p += 3) === 58)
446
+ ctx.p += 3;
447
+ if (ctx.s.charCodeAt(ctx.p) === 46)
448
+ while (isDigit(ctx.s.charCodeAt(++ctx.p)))
449
+ ;
450
+ if (c = ctx.s.charCodeAt(ctx.p)) {
451
+ if (c === 90 || c === 122) {
452
+ let t2 = ctx.s.slice(startPtr, ++ctx.p);
453
+ return readDate(ctx, t2, 1, unsafeSeparator, startPtr, "[+00:00]");
454
+ }
455
+ if (c === 43 || c === 45) {
456
+ let t2 = ctx.s.slice(startPtr, ctx.p += 6);
457
+ return readDate(ctx, t2, 1, unsafeSeparator, startPtr, !ctx.ld && "[" + ctx.s.slice(ctx.p - 6, ctx.p) + "]");
458
+ }
459
+ }
460
+ let t = ctx.s.slice(startPtr, ctx.p);
461
+ return readDate(ctx, t, 2, unsafeSeparator, startPtr);
462
+ }
463
+ function parseTime(ctx, c, endChr) {
413
464
  let start = ctx.p;
414
- let dot = start - 1;
415
- let parsed = [];
416
- let endPtr = ctx.s.indexOf(end, start);
417
- if (endPtr < 0) {
418
- throw new TomlError("incomplete key-value: cannot find end of key", {
419
- toml: ctx.s,
420
- ptr: start
421
- });
465
+ if (!isDigit(c) || !isDigit(ctx.s.charCodeAt(++ctx.p))) {
466
+ return parseNumber(ctx, --ctx.p, c, 0, endChr);
467
+ }
468
+ if (ctx.s.charCodeAt(ctx.p += 4) === 58)
469
+ ctx.p += 3;
470
+ if (ctx.s.charCodeAt(ctx.p) === 46)
471
+ while (isDigit(ctx.s.charCodeAt(++ctx.p)))
472
+ ;
473
+ let t = ctx.s.slice(start, ctx.p);
474
+ return readDate(ctx, t, 4, false, start);
475
+ }
476
+ function readDate(ctx, str, type, unsafeDelim, errPtr, temporalSuffix) {
477
+ if (ctx.ld) {
478
+ let date = new TomlDate(str, type, unsafeDelim);
479
+ if (!date.isValid())
480
+ TomlError.x("invalid date", ctx, errPtr);
481
+ return date;
422
482
  }
483
+ try {
484
+ if (temporalSuffix)
485
+ str += temporalSuffix;
486
+ switch (type) {
487
+ case 1:
488
+ return Temporal.ZonedDateTime.from(str);
489
+ case 2:
490
+ return Temporal.PlainDateTime.from(str);
491
+ case 3:
492
+ return Temporal.PlainDate.from(str);
493
+ case 4:
494
+ return Temporal.PlainTime.from(str);
495
+ }
496
+ } catch (e) {
497
+ TomlError.x(e instanceof Error ? e.message : "" + e, ctx, errPtr);
498
+ }
499
+ }
500
+
501
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/util.js
502
+ function skipComment(ctx) {
503
+ for (; ctx.p < ctx.s.length; ctx.p++) {
504
+ let c = ctx.s.charCodeAt(ctx.p);
505
+ if (c === 10)
506
+ break;
507
+ if (c === 13 && ctx.s.charCodeAt(ctx.p + 1) === 10) {
508
+ ctx.p++;
509
+ break;
510
+ }
511
+ if (c < 32 && c !== 9 || c === 127) {
512
+ TomlError.x("control characters are not allowed in comments", ctx);
513
+ }
514
+ }
515
+ }
516
+ function skipVoid(ctx, banNewLines, banComments) {
517
+ let c;
518
+ while (ctx.p < ctx.s.length) {
519
+ while (ctx.p < ctx.s.length && ((c = ctx.s.charCodeAt(ctx.p)) === 32 || c === 9 || !banNewLines && (c === 10 || c === 13 && ctx.s.charCodeAt(ctx.p + 1) === 10)))
520
+ ctx.p++;
521
+ if (banComments || c !== 35)
522
+ break;
523
+ skipComment(ctx);
524
+ }
525
+ }
526
+
527
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/struct.js
528
+ function parseKey(ctx, end = 61) {
529
+ let startPtr;
530
+ let state = 0;
531
+ let parsed = [];
532
+ let sliceStart;
533
+ let c = ctx.s.charCodeAt(startPtr = ctx.p);
423
534
  do {
424
- let c = ctx.s.charCodeAt(ctx.p = ++dot);
425
- if (c !== 32 && c !== 9) {
426
- if (c === 34 || c === 39) {
427
- if (c === ctx.s.charCodeAt(ctx.p + 1) && c === ctx.s.charCodeAt(ctx.p + 2)) {
428
- throw new TomlError("multiline strings are not allowed in keys", {
429
- toml: ctx.s,
430
- ptr: ctx.p
431
- });
432
- }
433
- let part = parseString(ctx);
434
- dot = ctx.s.indexOf(".", ctx.p);
435
- let strEnd = ctx.s.slice(ctx.p, dot < 0 || dot > endPtr ? endPtr : dot);
436
- let newLine = indexOfNewline(strEnd);
437
- if (newLine > -1) {
438
- throw new TomlError("newlines are not allowed in keys", {
439
- toml: ctx.s,
440
- ptr: newLine
441
- });
442
- }
443
- if (strEnd.trimStart()) {
444
- throw new TomlError("found extra tokens after the string part", {
445
- toml: ctx.s,
446
- ptr: ctx.p
447
- });
448
- }
449
- if (endPtr < ctx.p) {
450
- endPtr = ctx.s.indexOf(end, ctx.p);
451
- if (endPtr < 0) {
452
- throw new TomlError("incomplete key-value: cannot find end of key", {
453
- toml: ctx.s,
454
- ptr: start
455
- });
456
- }
457
- }
458
- parsed.push(part);
459
- } else {
460
- dot = ctx.s.indexOf(".", ctx.p);
461
- let part = ctx.s.slice(ctx.p, dot < 0 || dot > endPtr ? endPtr : dot);
462
- if (!KEY_PART_RE.test(part)) {
463
- throw new TomlError("only letter, numbers, dashes and underscores are allowed in keys", {
464
- toml: ctx.s,
465
- ptr: ctx.p
466
- });
467
- }
468
- parsed.push(part.trimEnd());
535
+ if (c === end) {
536
+ if (!state)
537
+ TomlError.x("unexpected end of key", ctx);
538
+ if (state === 1)
539
+ parsed.push(ctx.s.slice(sliceStart, ctx.p));
540
+ return ctx.p++, parsed;
541
+ } else if (c === 46) {
542
+ if (!state)
543
+ TomlError.x("illegal empty bare key", ctx);
544
+ if (state === 1)
545
+ parsed.push(ctx.s.slice(sliceStart, ctx.p));
546
+ state = 0;
547
+ } else if (!state && (c === 34 || c === 39)) {
548
+ if (c === ctx.s.charCodeAt(ctx.p + 1) && c === ctx.s.charCodeAt(ctx.p + 2))
549
+ TomlError.x("illegal quoted key: multiline strings are not allowed", ctx);
550
+ parsed.push(parseString(ctx));
551
+ state = 2;
552
+ ctx.p--;
553
+ } else if (c === 32 || c === 9) {
554
+ if (state === 1) {
555
+ parsed.push(ctx.s.slice(sliceStart, ctx.p));
556
+ state = 2;
469
557
  }
558
+ } else if (state === 2 || c < 48 && c !== 45 || c > 57 && c < 65 || c > 90 && c < 97 && c !== 95 || c > 122) {
559
+ TomlError.x("illegal character in key", ctx);
560
+ } else if (!state) {
561
+ state = 1;
562
+ sliceStart = ctx.p;
470
563
  }
471
- } while (dot + 1 && dot < endPtr);
472
- ctx.p = endPtr + 1;
473
- skipVoid(ctx, true, true);
474
- return parsed;
564
+ } while (c = ctx.s.charCodeAt(++ctx.p));
565
+ TomlError.x("incomplete key-value: cannot find end of key", ctx, startPtr);
475
566
  }
476
- function parseInlineTable(ctx, integersAsBigInt) {
477
- let res = {};
567
+ function parseInlineTable(ctx) {
568
+ let startPtr = ctx.p++;
569
+ let res = /* @__PURE__ */ Object.create(null);
478
570
  let seen = /* @__PURE__ */ new Set();
479
571
  let c;
480
- ctx.p++;
481
572
  while (ctx.p < ctx.s.length) {
482
573
  skipVoid(ctx);
483
574
  if ((c = ctx.s.charCodeAt(ctx.p)) === 125) {
@@ -487,70 +578,71 @@ function parseInlineTable(ctx, integersAsBigInt) {
487
578
  let k2;
488
579
  let t = res;
489
580
  let hasOwn = false;
490
- let p2 = ctx.p;
581
+ let errPtr = ctx.p;
491
582
  let key = parseKey(ctx);
492
583
  for (let i = 0; i < key.length; i++) {
493
584
  if (i)
494
- t = hasOwn ? t[k2] : t[k2] = {};
585
+ t = hasOwn ? t[k2] : t[k2] = /* @__PURE__ */ Object.create(null);
495
586
  k2 = key[i];
496
587
  if ((hasOwn = Object.hasOwn(t, k2)) && (typeof t[k2] !== "object" || seen.has(t[k2]))) {
497
- throw new TomlError("trying to redefine an already defined value", {
498
- toml: ctx.s,
499
- ptr: p2
500
- });
588
+ TomlError.x("trying to redefine an already defined value", ctx, errPtr);
501
589
  }
502
- if (!hasOwn && k2 === "__proto__") {
590
+ let unsafe = k2 === "__proto__";
591
+ if (ctx.uk && (unsafe || k2 === "constructor")) {
592
+ t = ctx.uk !== 1 && TomlError.x("document contains an unsafe property", ctx, errPtr);
593
+ break;
594
+ }
595
+ if (!hasOwn && unsafe) {
503
596
  Object.defineProperty(t, k2, { enumerable: true, configurable: true, writable: true });
504
597
  }
505
598
  }
506
599
  if (hasOwn) {
507
- throw new TomlError("trying to redefine an already defined value", {
508
- toml: ctx.s,
509
- ptr: ctx.p
510
- });
600
+ TomlError.x("trying to redefine an already defined value", ctx, errPtr);
511
601
  }
512
- let value = extractValue(ctx, 125, integersAsBigInt);
513
- seen.add(t[k2] = value);
602
+ skipVoid(ctx, true, true);
603
+ let value = extractValue(
604
+ ctx,
605
+ 125
606
+ /* } */
607
+ );
608
+ if (t && typeof (t[k2] = value) === "object")
609
+ seen.add(value);
514
610
  skipVoid(ctx);
515
611
  if ((c = ctx.s.charCodeAt(ctx.p++)) === 125) {
516
612
  return res;
517
613
  }
518
- if (c !== 44) {
519
- throw new TomlError("expected comma or end of structure", { toml: ctx.s, ptr: ctx.p - 1 });
520
- }
614
+ if (c !== 44)
615
+ TomlError.x("expected comma or end of structure", ctx, ctx.p - 1);
521
616
  }
522
- throw new TomlError("unfinished table encountered", {
523
- toml: ctx.s,
524
- ptr: ctx.p
525
- });
617
+ TomlError.x("unfinished table", ctx, startPtr);
526
618
  }
527
- function parseArray(ctx, integersAsBigInt) {
619
+ function parseArray(ctx) {
620
+ let startPtr = ctx.p++;
528
621
  let res = [];
529
622
  let c;
530
- ctx.p++;
531
623
  while (ctx.p < ctx.s.length) {
532
624
  skipVoid(ctx);
533
625
  if ((c = ctx.s.charCodeAt(ctx.p)) === 93) {
534
626
  ctx.p++;
535
627
  return res;
536
628
  }
537
- res.push(extractValue(ctx, 93, integersAsBigInt));
629
+ res.push(extractValue(
630
+ ctx,
631
+ 93
632
+ /* ] */
633
+ ));
538
634
  skipVoid(ctx);
539
635
  if ((c = ctx.s.charCodeAt(ctx.p++)) === 93) {
540
636
  return res;
541
637
  }
542
- if (c !== 44) {
543
- throw new TomlError("expected comma or end of structure", { toml: ctx.s, ptr: ctx.p - 1 });
544
- }
638
+ if (c !== 44)
639
+ TomlError.x("expected comma or end of structure", ctx, ctx.p - 1);
545
640
  }
546
- throw new TomlError("unfinished array encountered", {
547
- toml: ctx.s,
548
- ptr: ctx.p
549
- });
641
+ TomlError.x("unfinished array", ctx, startPtr);
550
642
  }
551
643
 
552
- // ../../node_modules/.pnpm/smol-toml@1.8.0/node_modules/smol-toml/dist/parse.js
553
- function peekTable(key, table, meta, type) {
644
+ // ../../node_modules/.pnpm/smol-toml@1.9.0/node_modules/smol-toml/dist/parse.js
645
+ function peekTable(ctx, key, table, meta, type) {
554
646
  let t = table;
555
647
  let m = meta;
556
648
  let k2;
@@ -558,7 +650,7 @@ function peekTable(key, table, meta, type) {
558
650
  let state;
559
651
  for (let i = 0; i < key.length; i++) {
560
652
  if (i) {
561
- t = hasOwn ? t[k2] : t[k2] = {};
653
+ t = hasOwn ? t[k2] : t[k2] = /* @__PURE__ */ Object.create(null);
562
654
  m = (state = m[k2]).c;
563
655
  if (type === 0 && (state.t === 1 || state.t === 2)) {
564
656
  return null;
@@ -574,7 +666,10 @@ function peekTable(key, table, meta, type) {
574
666
  return null;
575
667
  }
576
668
  if (!hasOwn) {
577
- if (k2 === "__proto__") {
669
+ let unsafe = k2 === "__proto__";
670
+ if (ctx.uk && (unsafe || k2 === "constructor"))
671
+ return false;
672
+ if (unsafe) {
578
673
  Object.defineProperty(t, k2, { enumerable: true, configurable: true, writable: true });
579
674
  Object.defineProperty(m, k2, { enumerable: true, configurable: true, writable: true });
580
675
  }
@@ -582,7 +677,7 @@ function peekTable(key, table, meta, type) {
582
677
  t: i < key.length - 1 && type === 2 ? 3 : type,
583
678
  d: false,
584
679
  i: 0,
585
- c: {}
680
+ c: /* @__PURE__ */ Object.create(null)
586
681
  };
587
682
  }
588
683
  }
@@ -595,43 +690,60 @@ function peekTable(key, table, meta, type) {
595
690
  state.d = true;
596
691
  t[k2] = [];
597
692
  }
598
- t[k2].push(t = {});
599
- state.c[state.i++] = state = { t: 1, d: false, i: 0, c: {} };
693
+ t[k2].push(t = /* @__PURE__ */ Object.create(null));
694
+ state.c[state.i++] = state = { t: 1, d: false, i: 0, c: /* @__PURE__ */ Object.create(null) };
600
695
  }
601
696
  if (state.d) {
602
697
  return null;
603
698
  }
604
699
  state.d = true;
605
700
  if (type === 1) {
606
- t = hasOwn ? t[k2] : t[k2] = {};
701
+ t = hasOwn ? t[k2] : t[k2] = /* @__PURE__ */ Object.create(null);
607
702
  } else if (type === 0 && hasOwn) {
608
703
  return null;
609
704
  }
610
705
  return [k2, t, state.c];
611
706
  }
612
- function parse(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
613
- let ctx = { s: toml, p: 0, d: maxDepth };
614
- let res = {};
615
- let meta = {};
707
+ function validateTablePeek(ctx, peek, ptr) {
708
+ if (peek === null || ctx.uk === 2)
709
+ TomlError.x(peek === null ? "trying to redefine an already defined table or value" : "document contains an unsafe property", ctx, ptr);
710
+ }
711
+ function parse(toml, options = {}) {
712
+ let ctx = {
713
+ s: toml,
714
+ p: 0,
715
+ d: options.maxDepth ?? 1e3,
716
+ bi: options.integersAsBigInt ?? false,
717
+ ld: options.useLegacyDate ?? true,
718
+ uk: options.unsafeKeyBehaviour === "throw" ? 2 : options.unsafeKeyBehaviour === "drop" ? 1 : 0
719
+ };
720
+ let res = /* @__PURE__ */ Object.create(null);
721
+ let meta = /* @__PURE__ */ Object.create(null);
616
722
  let tmp;
723
+ let skipping = false;
617
724
  let tbl = res;
618
725
  let m = meta;
726
+ if (toml.charCodeAt(0) === 65279)
727
+ ctx.p++;
619
728
  skipVoid(ctx);
620
729
  while (ctx.p < toml.length) {
621
730
  if (toml.charCodeAt(ctx.p) === 91) {
622
731
  let isTableArray = toml.charCodeAt(++ctx.p) === 91;
623
732
  tmp = ctx.p += +isTableArray;
624
- let k2 = parseKey(ctx, "]");
733
+ skipping = false;
734
+ let k2 = parseKey(
735
+ ctx,
736
+ 93
737
+ /* ] */
738
+ );
625
739
  if (isTableArray) {
626
- if (toml.charCodeAt(ctx.p - 1) !== 93) {
627
- throw new TomlError("expected end of table declaration", {
628
- toml,
629
- ptr: ctx.p - 1
630
- });
740
+ if (toml.charCodeAt(ctx.p) !== 93) {
741
+ TomlError.x("expected end of table array declaration", ctx);
631
742
  }
632
743
  ctx.p++;
633
744
  }
634
745
  let p2 = peekTable(
746
+ ctx,
635
747
  k2,
636
748
  res,
637
749
  meta,
@@ -639,37 +751,33 @@ function parse(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
639
751
  /* Type.EXPLICIT */
640
752
  );
641
753
  if (!p2) {
642
- throw new TomlError("trying to redefine an already defined table or value", {
643
- toml,
644
- ptr: tmp
645
- });
754
+ validateTablePeek(ctx, p2, tmp);
755
+ skipping = true;
756
+ } else {
757
+ m = p2[2];
758
+ tbl = p2[1];
646
759
  }
647
- m = p2[2];
648
- tbl = p2[1];
649
760
  } else {
650
761
  tmp = ctx.p;
651
762
  let k2 = parseKey(ctx);
652
763
  let p2 = peekTable(
764
+ ctx,
653
765
  k2,
654
766
  tbl,
655
767
  m,
656
768
  0
657
769
  /* Type.DOTTED */
658
770
  );
659
- if (!p2) {
660
- throw new TomlError("trying to redefine an already defined table or value", {
661
- toml,
662
- ptr: tmp
663
- });
664
- }
665
- p2[1][p2[0]] = extractValue(ctx, void 0, integersAsBigInt);
771
+ if (!p2 && !skipping)
772
+ validateTablePeek(ctx, p2, tmp);
773
+ skipVoid(ctx, true, true);
774
+ let v = extractValue(ctx, void 0);
775
+ if (p2 && !skipping)
776
+ p2[1][p2[0]] = v;
666
777
  }
667
778
  skipVoid(ctx, true);
668
- if (ctx.p < toml.length && (tmp = toml.charCodeAt(ctx.p)) !== 10 && tmp !== 13) {
669
- throw new TomlError("each key-value declaration must be followed by an end-of-line", {
670
- toml,
671
- ptr: ctx.p
672
- });
779
+ if (ctx.p < toml.length && (tmp = toml.charCodeAt(ctx.p)) !== 10 && (tmp !== 13 || toml.charCodeAt(ctx.p + 1) !== 10)) {
780
+ TomlError.x("each key-value declaration must be followed by an end-of-line", ctx);
673
781
  }
674
782
  skipVoid(ctx);
675
783
  }
@@ -9266,7 +9374,7 @@ function whitespaceEnd(text, from) {
9266
9374
  while (i < text.length && isWhitespace2(text.charCodeAt(i))) i++;
9267
9375
  return i;
9268
9376
  }
9269
- function isDigit(code) {
9377
+ function isDigit2(code) {
9270
9378
  return code >= 48 && code <= 57;
9271
9379
  }
9272
9380
  function isWordCharacter(code) {
@@ -9445,7 +9553,7 @@ function hasOrderedListItem(text) {
9445
9553
  for (let at = 0; at <= text.length; ) {
9446
9554
  const digits = whitespaceEnd(text, at);
9447
9555
  let dot = digits;
9448
- while (isDigit(text.charCodeAt(dot))) dot++;
9556
+ while (isDigit2(text.charCodeAt(dot))) dot++;
9449
9557
  if (dot > digits && text.charCodeAt(dot) === 46) {
9450
9558
  const next = whitespaceEnd(text, dot + 1);
9451
9559
  if (next > dot + 1 && next < text.length) return true;
@@ -9585,7 +9693,7 @@ function observationHeader(text) {
9585
9693
  const hash = whitespaceEnd(text, word + 11);
9586
9694
  if (text.charCodeAt(hash) !== HASH) continue;
9587
9695
  let digits = hash + 1;
9588
- while (isDigit(text.charCodeAt(digits))) digits++;
9696
+ while (isDigit2(text.charCodeAt(digits))) digits++;
9589
9697
  if (digits === hash + 1) continue;
9590
9698
  const open = whitespaceEnd(text, digits);
9591
9699
  if (text.charCodeAt(open) !== BRACKET_OPEN) continue;
@@ -9820,7 +9928,7 @@ function resultCountAt(text, from) {
9820
9928
  const open = whitespaceEnd(text, from);
9821
9929
  if (text.charCodeAt(open) !== PAREN_OPEN) return null;
9822
9930
  let digits = open + 1;
9823
- while (isDigit(text.charCodeAt(digits))) digits++;
9931
+ while (isDigit2(text.charCodeAt(digits))) digits++;
9824
9932
  if (digits === open + 1) return null;
9825
9933
  const word = whitespaceEnd(text, digits);
9826
9934
  if (!startsWithIgnoreCase(text, "result", word)) return null;
@@ -9950,7 +10058,7 @@ function detailedBlocks(body) {
9950
10058
  if (!body.startsWith("(confidence:", open)) return null;
9951
10059
  const digits = whitespaceEnd(body, open + 12);
9952
10060
  let digitsEnd = digits;
9953
- while (isDigit(body.charCodeAt(digitsEnd)) || body.charCodeAt(digitsEnd) === 46) digitsEnd++;
10061
+ while (isDigit2(body.charCodeAt(digitsEnd)) || body.charCodeAt(digitsEnd) === 46) digitsEnd++;
9954
10062
  if (digitsEnd === digits || body.charCodeAt(digitsEnd) !== PAREN_CLOSE) return null;
9955
10063
  const rest = contentFrom(digitsEnd + 1);
9956
10064
  return rest ? { confidence: [digits, digitsEnd], ...rest } : null;
@@ -10222,7 +10330,7 @@ function lineHeader(text, at) {
10222
10330
  const digitsStart = whitespaceEnd(text, at + 4);
10223
10331
  if (digitsStart === at + 4) return null;
10224
10332
  let i = digitsStart;
10225
- while (i < text.length && isDigit(text.charCodeAt(i))) i++;
10333
+ while (i < text.length && isDigit2(text.charCodeAt(i))) i++;
10226
10334
  if (i === digitsStart || text.charCodeAt(i) !== COLON3) return null;
10227
10335
  return { digits: text.slice(digitsStart, i), end: i + 1 };
10228
10336
  }
@@ -10524,7 +10632,7 @@ function conversationHeader(text) {
10524
10632
  function digitsBefore(text, suffix) {
10525
10633
  for (let at = text.indexOf(suffix); at !== -1; at = text.indexOf(suffix, at + 1)) {
10526
10634
  let start = at;
10527
- while (start > 0 && isDigit(text.charCodeAt(start - 1))) start--;
10635
+ while (start > 0 && isDigit2(text.charCodeAt(start - 1))) start--;
10528
10636
  if (start < at) return text.slice(start, at);
10529
10637
  }
10530
10638
  return null;
@@ -10582,7 +10690,7 @@ function searchHitRow(line) {
10582
10690
  const pipe = t.spaceEnd[e];
10583
10691
  if (line.charCodeAt(pipe) !== PIPE2) return false;
10584
10692
  const label = t.spaceEnd[pipe + 1];
10585
- return line.startsWith("score=", label) && isDigit(line.charCodeAt(label + 6));
10693
+ return line.startsWith("score=", label) && isDigit2(line.charCodeAt(label + 6));
10586
10694
  });
10587
10695
  const idRunEnd = t.solidEnd[4];
10588
10696
  if (idRunEnd === 4) return null;
@@ -10603,7 +10711,7 @@ function searchHitRow(line) {
10603
10711
  }
10604
10712
  const label = t.spaceEnd[t.spaceEnd[end] + 1];
10605
10713
  let digits = label + 6;
10606
- while (isDigit(line.charCodeAt(digits))) digits++;
10714
+ while (isDigit2(line.charCodeAt(digits))) digits++;
10607
10715
  return [
10608
10716
  line.slice(0, idEnd),
10609
10717
  line.slice(open + 1, close),
@@ -10797,11 +10905,11 @@ function parseTriggerLines(output) {
10797
10905
  }
10798
10906
  /*! Bundled license information:
10799
10907
 
10800
- smol-toml/dist/date.js:
10801
10908
  smol-toml/dist/error.js:
10802
- smol-toml/dist/util.js:
10803
10909
  smol-toml/dist/primitive.js:
10910
+ smol-toml/dist/date.js:
10804
10911
  smol-toml/dist/extract.js:
10912
+ smol-toml/dist/util.js:
10805
10913
  smol-toml/dist/struct.js:
10806
10914
  smol-toml/dist/parse.js:
10807
10915
  smol-toml/dist/stringify.js: