@oharness/engine 0.10.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.
Files changed (118) hide show
  1. package/dist/acp/claude.d.ts +34 -0
  2. package/dist/acp/claude.js +122 -0
  3. package/dist/acp/claude.js.map +1 -0
  4. package/dist/acp/client.d.ts +193 -0
  5. package/dist/acp/client.js +279 -0
  6. package/dist/acp/client.js.map +1 -0
  7. package/dist/acp/runner.d.ts +80 -0
  8. package/dist/acp/runner.js +159 -0
  9. package/dist/acp/runner.js.map +1 -0
  10. package/dist/agent/agent.d.ts +51 -1
  11. package/dist/agent/agent.js +322 -1
  12. package/dist/agent/agent.js.map +1 -1
  13. package/dist/agent/hooks.js +6 -6
  14. package/dist/agent/hooks.js.map +1 -1
  15. package/dist/agent/session.d.ts +2 -0
  16. package/dist/agent/session.js +19 -2
  17. package/dist/agent/session.js.map +1 -1
  18. package/dist/agent/skills.d.ts +16 -3
  19. package/dist/agent/skills.js +36 -2
  20. package/dist/agent/skills.js.map +1 -1
  21. package/dist/agent/subagent.d.ts +24 -2
  22. package/dist/agent/subagent.js +76 -16
  23. package/dist/agent/subagent.js.map +1 -1
  24. package/dist/auth/index.d.ts +3 -1
  25. package/dist/auth/index.js +3 -1
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/manager.js +4 -0
  28. package/dist/auth/manager.js.map +1 -1
  29. package/dist/auth/oauth.d.ts +33 -0
  30. package/dist/auth/oauth.js +59 -8
  31. package/dist/auth/oauth.js.map +1 -1
  32. package/dist/auth/providers/anthropic.d.ts +25 -5
  33. package/dist/auth/providers/anthropic.js +47 -6
  34. package/dist/auth/providers/anthropic.js.map +1 -1
  35. package/dist/auth/providers/chatgpt.d.ts +8 -0
  36. package/dist/auth/providers/chatgpt.js +180 -0
  37. package/dist/auth/providers/chatgpt.js.map +1 -0
  38. package/dist/auth/providers/openrouter.d.ts +2 -0
  39. package/dist/auth/providers/openrouter.js +101 -0
  40. package/dist/auth/providers/openrouter.js.map +1 -0
  41. package/dist/auth/types.d.ts +15 -0
  42. package/dist/auth/types.js.map +1 -1
  43. package/dist/browser/index.d.ts +1 -1
  44. package/dist/browser/plugin.d.ts +6 -1
  45. package/dist/browser/plugin.js.map +1 -1
  46. package/dist/browser/session.d.ts +47 -0
  47. package/dist/browser/session.js +177 -2
  48. package/dist/browser/session.js.map +1 -1
  49. package/dist/browser/tools.js +139 -18
  50. package/dist/browser/tools.js.map +1 -1
  51. package/dist/computer/cua-driver.d.ts +60 -1
  52. package/dist/computer/cua-driver.js +149 -5
  53. package/dist/computer/cua-driver.js.map +1 -1
  54. package/dist/computer/helper-client.d.ts +3 -1
  55. package/dist/computer/helper-client.js +3 -0
  56. package/dist/computer/helper-client.js.map +1 -1
  57. package/dist/computer/index.d.ts +3 -2
  58. package/dist/computer/index.js +1 -1
  59. package/dist/computer/index.js.map +1 -1
  60. package/dist/computer/mode.d.ts +15 -0
  61. package/dist/computer/mode.js +11 -1
  62. package/dist/computer/mode.js.map +1 -1
  63. package/dist/computer/session.d.ts +36 -7
  64. package/dist/computer/session.js +118 -17
  65. package/dist/computer/session.js.map +1 -1
  66. package/dist/computer/target.d.ts +19 -0
  67. package/dist/computer/target.js.map +1 -1
  68. package/dist/computer/tools.js +135 -8
  69. package/dist/computer/tools.js.map +1 -1
  70. package/dist/config.d.ts +16 -0
  71. package/dist/config.js +2 -0
  72. package/dist/config.js.map +1 -1
  73. package/dist/foreign.d.ts +81 -0
  74. package/dist/foreign.js +198 -0
  75. package/dist/foreign.js.map +1 -0
  76. package/dist/harness.d.ts +79 -0
  77. package/dist/harness.js +241 -17
  78. package/dist/harness.js.map +1 -1
  79. package/dist/mcp/manager.d.ts +15 -0
  80. package/dist/mcp/manager.js +28 -1
  81. package/dist/mcp/manager.js.map +1 -1
  82. package/dist/mcp/registry.d.ts +2 -0
  83. package/dist/mcp/registry.js +1 -0
  84. package/dist/mcp/registry.js.map +1 -1
  85. package/dist/mcp/registry.json +394 -1
  86. package/dist/paths.d.ts +19 -0
  87. package/dist/paths.js +38 -0
  88. package/dist/paths.js.map +1 -1
  89. package/dist/plugin-market.d.ts +57 -0
  90. package/dist/plugin-market.js +229 -0
  91. package/dist/plugin-market.js.map +1 -0
  92. package/dist/plugin-market.json +1246 -0
  93. package/dist/plugins.d.ts +49 -2
  94. package/dist/plugins.js +252 -10
  95. package/dist/plugins.js.map +1 -1
  96. package/dist/providers/catalog.json +14 -3
  97. package/dist/providers/models-dev.d.ts +15 -0
  98. package/dist/providers/models-dev.js +14 -0
  99. package/dist/providers/models-dev.js.map +1 -1
  100. package/dist/providers/piai.d.ts +38 -1
  101. package/dist/providers/piai.js +70 -2
  102. package/dist/providers/piai.js.map +1 -1
  103. package/dist/providers/registry.d.ts +16 -1
  104. package/dist/providers/registry.js +42 -11
  105. package/dist/providers/registry.js.map +1 -1
  106. package/dist/runtime-plugins/builtin/studio.d.ts +7 -0
  107. package/dist/runtime-plugins/builtin/studio.js +69 -4
  108. package/dist/runtime-plugins/builtin/studio.js.map +1 -1
  109. package/dist/tools/builtin/bash.js +6 -10
  110. package/dist/tools/builtin/bash.js.map +1 -1
  111. package/dist/util/shell.d.ts +30 -0
  112. package/dist/util/shell.js +70 -0
  113. package/dist/util/shell.js.map +1 -1
  114. package/dist/util/toml.d.ts +22 -0
  115. package/dist/util/toml.js +305 -0
  116. package/dist/util/toml.js.map +1 -0
  117. package/package.json +4 -4
  118. package/skills/media-generation/SKILL.md +22 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ChildProcess, ChildProcessWithoutNullStreams } from "node:child_process";
1
2
  /**
2
3
  * Which shell to run a command string through.
3
4
  *
@@ -18,3 +19,32 @@ export interface ShellCommand {
18
19
  export declare function shellFor(script: string): ShellCommand;
19
20
  /** True when the platform's shell is cmd.exe rather than a POSIX shell. */
20
21
  export declare function isWindowsShell(): boolean;
22
+ /**
23
+ * How long a shell that has exited is given for its output to finish
24
+ * arriving. The pipes normally close with it; when they do not, something it
25
+ * started is still holding them, and nothing that thing writes is output of
26
+ * the command any more.
27
+ */
28
+ export declare const EXIT_GRACE_MS = 1000;
29
+ /**
30
+ * Start a shell that can be stopped along with everything it started.
31
+ *
32
+ * On POSIX it leads its own process group, so a kill reaches the `grep` or
33
+ * `find` it is running too. Killing only the shell left those behind,
34
+ * re-parented to init and still holding the output pipe, and the call waiting
35
+ * for that pipe to close waited forever. Not on Windows, where a detached
36
+ * child gets a console window of its own; the tree is killed by pid there.
37
+ */
38
+ export declare function spawnShell(script: string, opts: {
39
+ cwd: string;
40
+ env: NodeJS.ProcessEnv;
41
+ }): ChildProcessWithoutNullStreams;
42
+ /** Kill a shell from `spawnShell` and every process under it. */
43
+ export declare function killShell(child: ChildProcess): void;
44
+ /**
45
+ * Call `done` once a shell's output is complete: when its pipes close, or
46
+ * `graceMs` after it exits if something it left running still holds them —
47
+ * `server &`, or a child that outlived a kill. Then the pipes are let go, so
48
+ * this side stops waiting on a process that is no longer the command.
49
+ */
50
+ export declare function whenShellDone(child: ChildProcessWithoutNullStreams, done: (code: number | null) => void, graceMs?: number): void;
@@ -1,3 +1,4 @@
1
+ import { spawn } from "node:child_process";
1
2
  /**
2
3
  * `SHELL` is honoured on POSIX so a user on zsh/fish gets their own
3
4
  * environment; `ComSpec` is the Windows equivalent.
@@ -21,4 +22,73 @@ export function shellFor(script) {
21
22
  export function isWindowsShell() {
22
23
  return process.platform === "win32" && !/powershell|pwsh/i.test(process.env["ComSpec"] ?? "");
23
24
  }
25
+ /**
26
+ * How long a shell that has exited is given for its output to finish
27
+ * arriving. The pipes normally close with it; when they do not, something it
28
+ * started is still holding them, and nothing that thing writes is output of
29
+ * the command any more.
30
+ */
31
+ export const EXIT_GRACE_MS = 1_000;
32
+ /**
33
+ * Start a shell that can be stopped along with everything it started.
34
+ *
35
+ * On POSIX it leads its own process group, so a kill reaches the `grep` or
36
+ * `find` it is running too. Killing only the shell left those behind,
37
+ * re-parented to init and still holding the output pipe, and the call waiting
38
+ * for that pipe to close waited forever. Not on Windows, where a detached
39
+ * child gets a console window of its own; the tree is killed by pid there.
40
+ */
41
+ export function spawnShell(script, opts) {
42
+ const shell = shellFor(script);
43
+ return spawn(shell.command, shell.args, {
44
+ cwd: opts.cwd,
45
+ env: opts.env,
46
+ detached: process.platform !== "win32",
47
+ windowsHide: true,
48
+ });
49
+ }
50
+ /** Kill a shell from `spawnShell` and every process under it. */
51
+ export function killShell(child) {
52
+ const pid = child.pid;
53
+ if (pid === undefined)
54
+ return;
55
+ if (process.platform === "win32") {
56
+ const killer = spawn("taskkill", ["/pid", String(pid), "/T", "/F"], { stdio: "ignore", windowsHide: true });
57
+ killer.on("error", () => child.kill("SIGKILL"));
58
+ return;
59
+ }
60
+ try {
61
+ process.kill(-pid, "SIGKILL");
62
+ }
63
+ catch {
64
+ // The group is gone already, or never formed: the shell alone, then.
65
+ child.kill("SIGKILL");
66
+ }
67
+ }
68
+ /**
69
+ * Call `done` once a shell's output is complete: when its pipes close, or
70
+ * `graceMs` after it exits if something it left running still holds them —
71
+ * `server &`, or a child that outlived a kill. Then the pipes are let go, so
72
+ * this side stops waiting on a process that is no longer the command.
73
+ */
74
+ export function whenShellDone(child, done, graceMs = EXIT_GRACE_MS) {
75
+ let settled = false;
76
+ let grace;
77
+ const settle = (code) => {
78
+ if (settled)
79
+ return;
80
+ settled = true;
81
+ if (grace)
82
+ clearTimeout(grace);
83
+ done(code);
84
+ };
85
+ child.on("close", (code) => settle(code));
86
+ child.on("exit", (code) => {
87
+ grace = setTimeout(() => {
88
+ child.stdout.destroy();
89
+ child.stderr.destroy();
90
+ settle(code);
91
+ }, graceMs);
92
+ });
93
+ }
24
94
  //# sourceMappingURL=shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/util/shell.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QACpD,0EAA0E;QAC1E,+CAA+C;QAC/C,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,uEAAuE;IACvE,iEAAiE;IACjE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/util/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
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 type TomlValue = string | number | boolean | TomlValue[] | TomlTable;
17
+ export interface TomlTable {
18
+ [key: string]: TomlValue;
19
+ }
20
+ export declare class TomlError extends Error {
21
+ }
22
+ export declare function parseToml(text: string): TomlTable;
@@ -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.10.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,13 +43,13 @@
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
  },
50
50
  "dependencies": {
51
- "@earendil-works/pi-ai": "^0.99.1",
52
- "ottoport": "1.10.0",
51
+ "@earendil-works/pi-ai": "^1.1.0",
52
+ "ottoport": "1.13.0",
53
53
  "zod": "^4.1.5"
54
54
  }
55
55
  }
@@ -5,7 +5,7 @@ description: Generate images, video, speech and music with the GenerateImage, Ge
5
5
 
6
6
  # Generating media
7
7
 
8
- Five tools, when the account has a media gateway configured:
8
+ Five tools to make media, when the account has a media gateway configured:
9
9
 
10
10
  | Tool | For |
11
11
  | --- | --- |
@@ -94,3 +94,24 @@ and the first one is still running.
94
94
  Under `media/` by default, or wherever `path` says. Point `path` at the
95
95
  directory the work actually belongs in — an `assets/` folder, the directory of
96
96
  the page that will reference it — when that is obvious, and ask when it is not.
97
+
98
+ ## Keeping files online
99
+
100
+ The workspace copy is the user's for good. The URL a generation returns
101
+ lasts a few days. When the user wants results kept online — to use them from
102
+ another device, or kept together as a campaign or a character — that is a
103
+ **collection**, in their OHarness account (or the team's, when team credits
104
+ are in use):
105
+
106
+ | Tool | For |
107
+ | --- | --- |
108
+ | `ListMediaCollections` | Their collections, and how much of their allowance is used |
109
+ | `CreateMediaCollection` | A new one — check the list first |
110
+ | `ListSavedMedia` | What is kept, by collection and kind |
111
+ | `SaveMedia` | Keep a result after the fact, from its URL, while it lasts |
112
+ | `UploadMedia` | A local file as a URL models accept (a reference, a first frame), optionally kept |
113
+ | `DeleteSavedMedia` | Remove a kept file, for good — only when asked |
114
+
115
+ To keep a result as it is made, pass `collection` (an id or exact name) to the
116
+ generate tool. Keeping is free within the allowance. Do not create collections
117
+ or save files nobody asked to keep.