@oharness/engine 0.11.0 → 0.12.0

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.
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Enough TOML to read Codex's `config.toml`.
3
+ *
4
+ * That file is the only TOML this harness reads, and what it needs out of it
5
+ * is a handful of strings, arrays and tables — so a dependency for the whole
6
+ * spec would be the larger cost. What is here is the grammar the file is
7
+ * actually written in: tables and dotted table headers, quoted keys, basic
8
+ * and literal strings in both their single- and multi-line forms, numbers,
9
+ * booleans, arrays and inline tables. Dates come back as their text, and an
10
+ * array of tables (`[[x]]`) is read and kept, since skipping one would mean
11
+ * misreading every key after it.
12
+ *
13
+ * It throws on what it cannot read. The caller decides whether a broken file
14
+ * is worth reporting; what it must not get is half a file presented as whole.
15
+ */
16
+ export class TomlError extends Error {
17
+ }
18
+ export function parseToml(text) {
19
+ return new Parser(text.replace(/^/, "")).document();
20
+ }
21
+ class Parser {
22
+ pos = 0;
23
+ src;
24
+ constructor(src) {
25
+ this.src = src;
26
+ }
27
+ document() {
28
+ const root = {};
29
+ let table = root;
30
+ for (;;) {
31
+ this.skipBlank();
32
+ if (this.pos >= this.src.length)
33
+ return root;
34
+ const ch = this.src[this.pos];
35
+ if (ch === "[") {
36
+ const array = this.src[this.pos + 1] === "[";
37
+ this.pos += array ? 2 : 1;
38
+ const keys = this.key();
39
+ this.expect(array ? "]]" : "]");
40
+ table = array ? this.appendTable(root, keys) : this.openTable(root, keys);
41
+ }
42
+ else {
43
+ const keys = this.key();
44
+ this.inlineSpace();
45
+ this.expect("=");
46
+ this.inlineSpace();
47
+ this.assign(table, keys, this.value());
48
+ }
49
+ this.endOfLine();
50
+ }
51
+ }
52
+ // --- structure -----------------------------------------------------------
53
+ openTable(root, keys) {
54
+ let table = root;
55
+ for (const key of keys) {
56
+ const next = table[key];
57
+ if (next === undefined)
58
+ table = table[key] = {};
59
+ else if (Array.isArray(next) && isTable(next[next.length - 1]))
60
+ table = next[next.length - 1];
61
+ else if (isTable(next))
62
+ table = next;
63
+ else
64
+ throw this.fail(`"${keys.join(".")}" is already a value`);
65
+ }
66
+ return table;
67
+ }
68
+ appendTable(root, keys) {
69
+ const parent = this.openTable(root, keys.slice(0, -1));
70
+ const last = keys[keys.length - 1];
71
+ const list = parent[last] ?? (parent[last] = []);
72
+ if (!Array.isArray(list))
73
+ throw this.fail(`"${keys.join(".")}" is not an array of tables`);
74
+ const table = {};
75
+ list.push(table);
76
+ return table;
77
+ }
78
+ assign(table, keys, value) {
79
+ const parent = this.openTable(table, keys.slice(0, -1));
80
+ parent[keys[keys.length - 1]] = value;
81
+ }
82
+ // --- keys ----------------------------------------------------------------
83
+ key() {
84
+ const keys = [];
85
+ for (;;) {
86
+ this.inlineSpace();
87
+ const ch = this.src[this.pos];
88
+ if (ch === '"')
89
+ keys.push(this.basicString());
90
+ else if (ch === "'")
91
+ keys.push(this.literalString());
92
+ else {
93
+ const match = /^[A-Za-z0-9_-]+/.exec(this.src.slice(this.pos));
94
+ if (!match)
95
+ throw this.fail("expected a key");
96
+ keys.push(match[0]);
97
+ this.pos += match[0].length;
98
+ }
99
+ this.inlineSpace();
100
+ if (this.src[this.pos] !== ".")
101
+ return keys;
102
+ this.pos++;
103
+ }
104
+ }
105
+ // --- values --------------------------------------------------------------
106
+ value() {
107
+ const rest = this.src.slice(this.pos, this.pos + 3);
108
+ const ch = rest[0];
109
+ if (rest === '"""')
110
+ return this.multiline('"""', true);
111
+ if (rest === "'''")
112
+ return this.multiline("'''", false);
113
+ if (ch === '"')
114
+ return this.basicString();
115
+ if (ch === "'")
116
+ return this.literalString();
117
+ if (ch === "[")
118
+ return this.array();
119
+ if (ch === "{")
120
+ return this.inlineTable();
121
+ return this.scalar();
122
+ }
123
+ scalar() {
124
+ const match = /^[^\s,\]\}#]+(?: [0-9:.+\-Z]+)?/.exec(this.src.slice(this.pos));
125
+ if (!match)
126
+ throw this.fail("expected a value");
127
+ const raw = match[0];
128
+ this.pos += raw.length;
129
+ if (raw === "true")
130
+ return true;
131
+ if (raw === "false")
132
+ return false;
133
+ const plain = raw.replaceAll("_", "");
134
+ if (/^[+-]?(\d+|0x[0-9a-fA-F]+|0o[0-7]+|0b[01]+)$/.test(plain))
135
+ return Number(plain.replace(/^\+/, ""));
136
+ if (/^[+-]?(\d+(\.\d+)?([eE][+-]?\d+)?|inf|nan)$/.test(plain)) {
137
+ return plain.endsWith("inf") ? (plain.startsWith("-") ? -Infinity : Infinity) : plain.endsWith("nan") ? NaN : Number(plain);
138
+ }
139
+ // A date, a time or a datetime: kept as written, since nothing here reads one.
140
+ if (/^\d{4}-\d{2}-\d{2}|^\d{2}:\d{2}/.test(raw))
141
+ return raw;
142
+ throw this.fail(`cannot read "${raw}"`);
143
+ }
144
+ array() {
145
+ this.pos++; // [
146
+ const out = [];
147
+ for (;;) {
148
+ this.skipBlank();
149
+ if (this.src[this.pos] === "]") {
150
+ this.pos++;
151
+ return out;
152
+ }
153
+ out.push(this.value());
154
+ this.skipBlank();
155
+ if (this.src[this.pos] === ",")
156
+ this.pos++;
157
+ else if (this.src[this.pos] !== "]")
158
+ throw this.fail("expected , or ] in an array");
159
+ }
160
+ }
161
+ inlineTable() {
162
+ this.pos++; // {
163
+ const out = {};
164
+ this.inlineSpace();
165
+ if (this.src[this.pos] === "}") {
166
+ this.pos++;
167
+ return out;
168
+ }
169
+ for (;;) {
170
+ const keys = this.key();
171
+ this.inlineSpace();
172
+ this.expect("=");
173
+ this.inlineSpace();
174
+ this.assign(out, keys, this.value());
175
+ this.inlineSpace();
176
+ if (this.src[this.pos] === ",") {
177
+ this.pos++;
178
+ continue;
179
+ }
180
+ this.expect("}");
181
+ return out;
182
+ }
183
+ }
184
+ basicString() {
185
+ this.pos++; // "
186
+ let out = "";
187
+ for (;;) {
188
+ const ch = this.src[this.pos++];
189
+ if (ch === undefined || ch === "\n")
190
+ throw this.fail("unterminated string");
191
+ if (ch === '"')
192
+ return out;
193
+ out += ch === "\\" ? this.escape() : ch;
194
+ }
195
+ }
196
+ literalString() {
197
+ const end = this.src.indexOf("'", this.pos + 1);
198
+ const line = this.src.indexOf("\n", this.pos);
199
+ if (end === -1 || (line !== -1 && line < end))
200
+ throw this.fail("unterminated string");
201
+ const out = this.src.slice(this.pos + 1, end);
202
+ this.pos = end + 1;
203
+ return out;
204
+ }
205
+ multiline(quote, escapes) {
206
+ this.pos += 3;
207
+ // A newline straight after the opening quotes is not part of the string.
208
+ if (this.src[this.pos] === "\n")
209
+ this.pos++;
210
+ else if (this.src.startsWith("\r\n", this.pos))
211
+ this.pos += 2;
212
+ let out = "";
213
+ for (;;) {
214
+ if (this.pos >= this.src.length)
215
+ throw this.fail("unterminated string");
216
+ if (this.src.startsWith(quote, this.pos)) {
217
+ // Up to two quotes may sit just inside the closing three.
218
+ let extra = 0;
219
+ while (extra < 2 && this.src[this.pos + 3 + extra] === quote[0])
220
+ extra++;
221
+ out += quote[0].repeat(extra);
222
+ this.pos += 3 + extra;
223
+ return out;
224
+ }
225
+ const ch = this.src[this.pos++];
226
+ if (escapes && ch === "\\") {
227
+ // A backslash at the end of a line swallows the break and the indent.
228
+ if (/^[ \t]*\r?\n/.test(this.src.slice(this.pos))) {
229
+ this.pos += /^\s*/.exec(this.src.slice(this.pos))[0].length;
230
+ continue;
231
+ }
232
+ out += this.escape();
233
+ continue;
234
+ }
235
+ out += ch;
236
+ }
237
+ }
238
+ escape() {
239
+ const ch = this.src[this.pos++];
240
+ switch (ch) {
241
+ case "b": return "\b";
242
+ case "t": return "\t";
243
+ case "n": return "\n";
244
+ case "f": return "\f";
245
+ case "r": return "\r";
246
+ case "e": return "\x1b";
247
+ case '"': return '"';
248
+ case "\\": return "\\";
249
+ case "u":
250
+ case "U": {
251
+ const length = ch === "u" ? 4 : 8;
252
+ const hex = this.src.slice(this.pos, this.pos + length);
253
+ if (!/^[0-9a-fA-F]+$/.test(hex) || hex.length !== length)
254
+ throw this.fail("bad unicode escape");
255
+ this.pos += length;
256
+ return String.fromCodePoint(parseInt(hex, 16));
257
+ }
258
+ default:
259
+ throw this.fail(`bad escape \\${ch ?? ""}`);
260
+ }
261
+ }
262
+ // --- whitespace ----------------------------------------------------------
263
+ inlineSpace() {
264
+ while (this.src[this.pos] === " " || this.src[this.pos] === "\t")
265
+ this.pos++;
266
+ }
267
+ /** Whitespace, newlines and comments: what may sit between two statements. */
268
+ skipBlank() {
269
+ for (;;) {
270
+ const ch = this.src[this.pos];
271
+ if (ch === " " || ch === "\t" || ch === "\n" || ch === "\r")
272
+ this.pos++;
273
+ else if (ch === "#")
274
+ this.skipComment();
275
+ else
276
+ return;
277
+ }
278
+ }
279
+ skipComment() {
280
+ const end = this.src.indexOf("\n", this.pos);
281
+ this.pos = end === -1 ? this.src.length : end;
282
+ }
283
+ endOfLine() {
284
+ this.inlineSpace();
285
+ if (this.src[this.pos] === "#")
286
+ this.skipComment();
287
+ if (this.src[this.pos] === "\r")
288
+ this.pos++;
289
+ if (this.pos < this.src.length && this.src[this.pos] !== "\n")
290
+ throw this.fail("expected the end of the line");
291
+ }
292
+ expect(text) {
293
+ if (!this.src.startsWith(text, this.pos))
294
+ throw this.fail(`expected ${text}`);
295
+ this.pos += text.length;
296
+ }
297
+ fail(message) {
298
+ const line = this.src.slice(0, this.pos).split("\n").length;
299
+ return new TomlError(`line ${line}: ${message}`);
300
+ }
301
+ }
302
+ function isTable(value) {
303
+ return !!value && typeof value === "object" && !Array.isArray(value);
304
+ }
305
+ //# sourceMappingURL=toml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toml.js","sourceRoot":"","sources":["../../src/util/toml.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oharness/engine",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "The agent loop, tool execution, context management and permissions. No frontend, no transport.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "official.json"
44
44
  ],
45
45
  "scripts": {
46
- "build": "rm -rf dist && tsc -p tsconfig.build.json && cp src/providers/catalog.json dist/providers/catalog.json && cp src/providers/models-dev.json dist/providers/models-dev.json && cp src/mcp/registry.json dist/mcp/registry.json",
46
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && cp src/providers/catalog.json dist/providers/catalog.json && cp src/providers/models-dev.json dist/providers/models-dev.json && cp src/mcp/registry.json dist/mcp/registry.json && cp src/plugin-market.json dist/plugin-market.json",
47
47
  "prepack": "node scripts/write-official.mjs",
48
48
  "postpack": "node scripts/write-official.mjs --clean"
49
49
  },