@ouro.bot/cli 0.1.0-alpha.940 → 0.1.0-alpha.942

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.
package/changelog.json CHANGED
@@ -1,6 +1,18 @@
1
1
  {
2
2
  "_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
3
3
  "versions": [
4
+ {
5
+ "version": "0.1.0-alpha.942",
6
+ "changes": [
7
+ "Patch multer to 2.5.0 and accept the MSAL Node auth-code advisory, which no Ouro path reaches, so release checks pass again."
8
+ ]
9
+ },
10
+ {
11
+ "version": "0.1.0-alpha.941",
12
+ "changes": [
13
+ "Shepherd owner-requested terminal input now reports submission separately from unverified receiver receipt, execution, capability and progress; uncertain attempts retain identity and are not blindly retried."
14
+ ]
15
+ },
4
16
  {
5
17
  "version": "0.1.0-alpha.940",
6
18
  "changes": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "runtimeVersion": "0.1.0-alpha.940",
2
+ "runtimeVersion": "0.1.0-alpha.942",
3
3
  "bundleSchemaVersion": 3,
4
4
  "lastUpdated": "2026-09-03T00:00:00.000Z"
5
5
  }
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
  <Container version="2">
3
3
  <Name>ouro-butler</Name>
4
- <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.940</Repository>
4
+ <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.942</Repository>
5
5
  <Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
6
6
  <Network>host</Network>
7
7
  <Shell>sh</Shell>
@@ -37,6 +37,7 @@ exports.shepherdToolDefinitions = exports.shepherdSendToolDefinition = exports.s
37
37
  exports.shepherdToolsEnabled = shepherdToolsEnabled;
38
38
  const fs = __importStar(require("node:fs"));
39
39
  const path = __importStar(require("node:path"));
40
+ const node_crypto_1 = require("node:crypto");
40
41
  const runtime_credentials_1 = require("../heart/runtime-credentials");
41
42
  const shepherd_config_1 = require("../heart/shepherd-config");
42
43
  const runtime_1 = require("../nerves/runtime");
@@ -228,7 +229,7 @@ exports.shepherdSendToolDefinition = {
228
229
  type: "function",
229
230
  function: {
230
231
  name: "shepherd_send",
231
- description: `Type into one coding agent's terminal on this machine for the human you are talking with, because they asked you to. Use it only to deliver that human's own instruction or keypress ("tell it to run the tests", "approve that", "stop it"): never on your own initiative, and never for anyone else. Give exactly one of text or key. text is one line (at most ${exports.SEND_TEXT_MAX_CHARS} characters, no control characters), typed as "[<your configured name> for <their name>] <text>" and submitted with Enter. key is pressed alone: one of ${exports.SEND_KEYS.join(", ")} (a menu or permission prompt, escape to interrupt, ctrl-c to cancel). enter, tab, a digit, y and n can approve or choose on a prompt, so they need screen from a shepherd_read made just before, and nothing is sent if the terminal changed since; tell the human what a prompt asks before approving it unless they have seen it. Pass screen with text too when the text answers what is on screen. To interrupt and then instruct, send escape, read again, then send the text. It also types into the terminal the human has focused on this machine.`,
232
+ description: `Type into one coding agent's terminal on this machine for the human you are talking with, because they asked you to. Use it only to submit that human's own instruction or keypress ("tell it to run the tests", "approve that", "stop it"): never on your own initiative, and never for anyone else. Give exactly one of text or key. text is one line (at most ${exports.SEND_TEXT_MAX_CHARS} characters, no control characters), typed as "[<your configured name> for <their name>] <text>" and submitted with Enter. key is pressed alone: one of ${exports.SEND_KEYS.join(", ")} (a menu or permission prompt, escape to interrupt, ctrl-c to cancel). enter, tab, a digit, y and n can approve or choose on a prompt, so they need screen from a shepherd_read made just before, and nothing is sent if the terminal changed since; tell the human what a prompt asks before approving it unless they have seen it. Pass screen with text too when the text answers what is on screen. To interrupt and then instruct, send escape, read again, then send the text. It also types into the terminal the human has focused on this machine. submission.state accepted means only that the terminal host accepted input; it may still be queued behind credential approval or a busy agent. It does not prove receiver receipt, resumed execution, restored capability or useful progress. Report those as unverified, never "unblocked" or "all unblocked" from this result or an unchanged screen. Each stronger claim needs fresh evidence from the exact target instance after this attempt, tied to this instruction; receipt alone is not progress or restored credentials. unknown may already have arrived: preserve the attempt and do not blindly resend.`,
232
233
  parameters: {
233
234
  type: "object",
234
235
  properties: {
@@ -275,19 +276,45 @@ exports.shepherdSendToolDefinition = {
275
276
  if (seen && seen !== now)
276
277
  return refused("the terminal changed since it was read, so nothing was sent; read it again", meta);
277
278
  const typed = key ? null : `[${(0, agent_presentation_1.readAgentPresentation)(ctx.agentName, ctx.agentRoot).name} for ${friend.name}] ${line}`;
278
- if (key)
279
- await host.key(target.id, key);
280
- else
281
- await host.prompt(target.id, typed);
279
+ const input = key ? { key } : { text: typed };
280
+ const attemptId = (0, node_crypto_1.randomUUID)();
281
+ const attemptedAt = new Date().toISOString();
282
+ const receiptTarget = { host: host.name, id: target.id, ref: target.ref, instance: target.instance ?? null };
283
+ const verification = { received: "unverified", execution: "unverified", capability: "unverified", progress: "unverified" };
284
+ const retry = "Do not resend blindly; reconcile this attempt with the exact receiver first.";
285
+ // A rejected/expired call can follow a partial paste or an accepted key.
286
+ // Neither host provides an agent-receipt or progress acknowledgement here.
287
+ try {
288
+ if (key)
289
+ await host.key(target.id, key);
290
+ else
291
+ await host.prompt(target.id, typed);
292
+ }
293
+ catch (error) {
294
+ const message = (0, redact_1.redactSecrets)(error instanceof Error ? error.message : String(error));
295
+ (0, runtime_1.emitNervesEvent)({
296
+ level: "warn", component: "repertoire", event: "repertoire.shepherd_send_unknown",
297
+ message: "terminal input outcome is unknown; do not blindly resend",
298
+ meta: { ...meta, session: target.id, ref: target.ref, instance: target.instance ?? null, attemptId, attemptedAt, error: message },
299
+ });
300
+ return {
301
+ error: message, session: target.ref, attempted: input,
302
+ submission: { state: "unknown", attemptId, attemptedAt, reportedAt: new Date().toISOString(), target: receiptTarget },
303
+ verification, retry,
304
+ };
305
+ }
282
306
  (0, runtime_1.emitNervesEvent)({
283
307
  component: "repertoire",
284
308
  event: "repertoire.shepherd_send",
285
- message: "typed into a terminal for a family member",
286
- meta: { ...meta, session: target.id, ref: target.ref, agent: target.agent, focused: target.focused, screenChecked: !!seen },
309
+ message: "terminal host accepted input; receiver receipt and progress unverified",
310
+ meta: { ...meta, session: target.id, ref: target.ref, instance: target.instance ?? null, attemptId, attemptedAt, agent: target.agent, focused: target.focused, screenChecked: !!seen },
287
311
  });
288
- // The status line shows the human at the machine who typed; it is best effort, the send already happened.
289
- await host.signal(target.id, `sent for ${friend.name}`.slice(0, STATUS_MAX_CHARS)).catch(() => undefined);
290
- return { session: target.ref, sent: key ? { key } : { text: typed }, focused: target.focused };
312
+ await host.signal(target.id, `submitted for ${friend.name}; receipt unverified`.slice(0, STATUS_MAX_CHARS)).catch(() => undefined);
313
+ return {
314
+ session: target.ref, submitted: input, focused: target.focused,
315
+ submission: { state: "accepted", attemptId, attemptedAt, reportedAt: new Date().toISOString(), target: receiptTarget },
316
+ verification, retry,
317
+ };
291
318
  });
292
319
  },
293
320
  summaryKeys: ["session", "key"],
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.940",
3
+ "version": "0.1.0-alpha.942",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@ouro.bot/cli",
9
- "version": "0.1.0-alpha.940",
9
+ "version": "0.1.0-alpha.942",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.78.0",
12
12
  "@azure/identity": "^4.13.0",
@@ -315,18 +315,27 @@
315
315
  }
316
316
  },
317
317
  "node_modules/@azure/msal-node": {
318
- "version": "5.2.2",
319
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.2.tgz",
320
- "integrity": "sha512-toS+2AePxqyzb0YOKttDOOiSl3jrkK9aiqIvpurpis0O34QcIS5gToqrgT39p04Dpxw3YoUU0lxJKTpSFFfA6Q==",
318
+ "version": "5.6.0",
319
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.6.0.tgz",
320
+ "integrity": "sha512-uFY9NxrWHw8PwZx7gAX6PDn+9vdfS05+levc/kwkx77IkjfaldnQbbcQzzDIZ5Hq5Zdr6/z92oAIoRWKp6MnOA==",
321
321
  "license": "MIT",
322
322
  "dependencies": {
323
- "@azure/msal-common": "16.6.2",
323
+ "@azure/msal-common": "16.13.0",
324
324
  "jsonwebtoken": "^9.0.0"
325
325
  },
326
326
  "engines": {
327
327
  "node": ">=20"
328
328
  }
329
329
  },
330
+ "node_modules/@azure/msal-node/node_modules/@azure/msal-common": {
331
+ "version": "16.13.0",
332
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.13.0.tgz",
333
+ "integrity": "sha512-rOAy0KUcyBbdwVJ+f3uPpthXatFLLZN+/KWAsTLzk1aB23Xl9DRmmXYwSvBFOZyXj4jUQQ5FKxxRkhAFW1fOow==",
334
+ "license": "MIT",
335
+ "engines": {
336
+ "node": ">=0.8.0"
337
+ }
338
+ },
330
339
  "node_modules/@azure/storage-blob": {
331
340
  "version": "12.31.0",
332
341
  "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz",
@@ -443,8 +452,8 @@
443
452
  },
444
453
  "node_modules/@bitwarden/cli": {
445
454
  "version": "2026.6.0",
446
- "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@bitwarden/cli/-/cli-2026.6.0.tgz",
447
- "integrity": "sha1-/JxkIICSfrvaPSOASmT+6n80E50=",
455
+ "resolved": "https://registry.npmjs.org/@bitwarden/cli/-/cli-2026.6.0.tgz",
456
+ "integrity": "sha512-quoPpGnLIAaGOBe61FZjZInbZzSvJTRzyK76icDFj4p6I4Oah7QubTKa//tIThU1GG5wFWK/OJeHA7AR1Knaxw==",
448
457
  "license": "SEE LICENSE IN LICENSE.txt",
449
458
  "dependencies": {
450
459
  "@koa/multer": "4.0.0",
@@ -2078,16 +2087,16 @@
2078
2087
  }
2079
2088
  },
2080
2089
  "node_modules/@vitest/expect": {
2081
- "version": "4.1.11",
2082
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz",
2083
- "integrity": "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==",
2090
+ "version": "4.1.12",
2091
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.12.tgz",
2092
+ "integrity": "sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==",
2084
2093
  "dev": true,
2085
2094
  "license": "MIT",
2086
2095
  "dependencies": {
2087
2096
  "@standard-schema/spec": "^1.1.0",
2088
2097
  "@types/chai": "^5.2.2",
2089
- "@vitest/spy": "4.1.11",
2090
- "@vitest/utils": "4.1.11",
2098
+ "@vitest/spy": "4.1.12",
2099
+ "@vitest/utils": "4.1.12",
2091
2100
  "chai": "^6.2.2",
2092
2101
  "tinyrainbow": "^3.1.0"
2093
2102
  },
@@ -2095,14 +2104,42 @@
2095
2104
  "url": "https://opencollective.com/vitest"
2096
2105
  }
2097
2106
  },
2107
+ "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": {
2108
+ "version": "4.1.12",
2109
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.12.tgz",
2110
+ "integrity": "sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==",
2111
+ "dev": true,
2112
+ "license": "MIT",
2113
+ "dependencies": {
2114
+ "tinyrainbow": "^3.1.0"
2115
+ },
2116
+ "funding": {
2117
+ "url": "https://opencollective.com/vitest"
2118
+ }
2119
+ },
2120
+ "node_modules/@vitest/expect/node_modules/@vitest/utils": {
2121
+ "version": "4.1.12",
2122
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.12.tgz",
2123
+ "integrity": "sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==",
2124
+ "dev": true,
2125
+ "license": "MIT",
2126
+ "dependencies": {
2127
+ "@vitest/pretty-format": "4.1.12",
2128
+ "convert-source-map": "^2.0.0",
2129
+ "tinyrainbow": "^3.1.0"
2130
+ },
2131
+ "funding": {
2132
+ "url": "https://opencollective.com/vitest"
2133
+ }
2134
+ },
2098
2135
  "node_modules/@vitest/mocker": {
2099
- "version": "4.1.11",
2100
- "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/mocker/-/mocker-4.1.11.tgz",
2101
- "integrity": "sha1-jikGNhvF36JxdXqFiugGQxGPy7Q=",
2136
+ "version": "4.1.12",
2137
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.12.tgz",
2138
+ "integrity": "sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==",
2102
2139
  "dev": true,
2103
2140
  "license": "MIT",
2104
2141
  "dependencies": {
2105
- "@vitest/spy": "4.1.11",
2142
+ "@vitest/spy": "4.1.12",
2106
2143
  "estree-walker": "^3.0.3",
2107
2144
  "magic-string": "^0.30.21"
2108
2145
  },
@@ -2136,28 +2173,56 @@
2136
2173
  }
2137
2174
  },
2138
2175
  "node_modules/@vitest/runner": {
2139
- "version": "4.1.11",
2140
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz",
2141
- "integrity": "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==",
2176
+ "version": "4.1.12",
2177
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.12.tgz",
2178
+ "integrity": "sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==",
2142
2179
  "dev": true,
2143
2180
  "license": "MIT",
2144
2181
  "dependencies": {
2145
- "@vitest/utils": "4.1.11",
2182
+ "@vitest/utils": "4.1.12",
2146
2183
  "pathe": "^2.0.3"
2147
2184
  },
2148
2185
  "funding": {
2149
2186
  "url": "https://opencollective.com/vitest"
2150
2187
  }
2151
2188
  },
2189
+ "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": {
2190
+ "version": "4.1.12",
2191
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.12.tgz",
2192
+ "integrity": "sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==",
2193
+ "dev": true,
2194
+ "license": "MIT",
2195
+ "dependencies": {
2196
+ "tinyrainbow": "^3.1.0"
2197
+ },
2198
+ "funding": {
2199
+ "url": "https://opencollective.com/vitest"
2200
+ }
2201
+ },
2202
+ "node_modules/@vitest/runner/node_modules/@vitest/utils": {
2203
+ "version": "4.1.12",
2204
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.12.tgz",
2205
+ "integrity": "sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==",
2206
+ "dev": true,
2207
+ "license": "MIT",
2208
+ "dependencies": {
2209
+ "@vitest/pretty-format": "4.1.12",
2210
+ "convert-source-map": "^2.0.0",
2211
+ "tinyrainbow": "^3.1.0"
2212
+ },
2213
+ "funding": {
2214
+ "url": "https://opencollective.com/vitest"
2215
+ }
2216
+ },
2152
2217
  "node_modules/@vitest/snapshot": {
2153
- "version": "4.1.11",
2154
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz",
2155
- "integrity": "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==",
2218
+ "version": "4.1.12",
2219
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.12.tgz",
2220
+ "integrity": "sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==",
2156
2221
  "dev": true,
2157
2222
  "license": "MIT",
2158
2223
  "dependencies": {
2159
- "@vitest/pretty-format": "4.1.11",
2160
- "@vitest/utils": "4.1.11",
2224
+ "@vitest/pretty-format": "4.1.12",
2225
+ "@vitest/utils": "4.1.12",
2161
2226
  "magic-string": "^0.30.21",
2162
2227
  "pathe": "^2.0.3"
2163
2228
  },
@@ -2165,10 +2230,38 @@
2165
2230
  "url": "https://opencollective.com/vitest"
2166
2231
  }
2167
2232
  },
2233
+ "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": {
2234
+ "version": "4.1.12",
2235
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.12.tgz",
2236
+ "integrity": "sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==",
2237
+ "dev": true,
2238
+ "license": "MIT",
2239
+ "dependencies": {
2240
+ "tinyrainbow": "^3.1.0"
2241
+ },
2242
+ "funding": {
2243
+ "url": "https://opencollective.com/vitest"
2244
+ }
2245
+ },
2246
+ "node_modules/@vitest/snapshot/node_modules/@vitest/utils": {
2247
+ "version": "4.1.12",
2248
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.12.tgz",
2249
+ "integrity": "sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==",
2250
+ "dev": true,
2251
+ "license": "MIT",
2252
+ "dependencies": {
2253
+ "@vitest/pretty-format": "4.1.12",
2254
+ "convert-source-map": "^2.0.0",
2255
+ "tinyrainbow": "^3.1.0"
2256
+ },
2257
+ "funding": {
2258
+ "url": "https://opencollective.com/vitest"
2259
+ }
2260
+ },
2168
2261
  "node_modules/@vitest/spy": {
2169
- "version": "4.1.11",
2170
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz",
2171
- "integrity": "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==",
2262
+ "version": "4.1.12",
2263
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.12.tgz",
2264
+ "integrity": "sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==",
2172
2265
  "dev": true,
2173
2266
  "license": "MIT",
2174
2267
  "funding": {
@@ -2191,14 +2284,17 @@
2191
2284
  }
2192
2285
  },
2193
2286
  "node_modules/@zone-eu/mailsplit": {
2194
- "version": "5.4.19",
2195
- "resolved": "https://registry.npmjs.org/@zone-eu/mailsplit/-/mailsplit-5.4.19.tgz",
2196
- "integrity": "sha512-nDWzw+X3tqfwd7DpDThAjg3KqtrNA6bG2gkrf6m2j1JBaGyyKAZzu1TguzB4GEco+HYpXAbXZ7kbl4Sn8H1vXw==",
2287
+ "version": "5.4.29",
2288
+ "resolved": "https://registry.npmjs.org/@zone-eu/mailsplit/-/mailsplit-5.4.29.tgz",
2289
+ "integrity": "sha512-CCUNycmUjrV5M0wNf23waWAt9eOHczhjLbUQS7k0FNJvR0py9VSqHFt+tSl/D0+XI73VLG0U+PwYtq9R0zsm9Q==",
2197
2290
  "license": "(MIT OR EUPL-1.1+)",
2198
2291
  "dependencies": {
2199
- "libbase64": "1.3.1",
2200
- "libmime": "5.4.6",
2201
- "libqp": "2.1.2"
2292
+ "libbase64": "1.4.1",
2293
+ "libmime": "5.6.3",
2294
+ "libqp": "3.0.1"
2295
+ },
2296
+ "engines": {
2297
+ "node": ">=20.0.0"
2202
2298
  }
2203
2299
  },
2204
2300
  "node_modules/accepts": {
@@ -2518,18 +2614,18 @@
2518
2614
  }
2519
2615
  },
2520
2616
  "node_modules/body-parser": {
2521
- "version": "2.3.0",
2522
- "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/body-parser/-/body-parser-2.3.0.tgz",
2523
- "integrity": "sha1-bYZi9NjDNgKLismqJCUbDKZLpDc=",
2617
+ "version": "2.4.0",
2618
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.4.0.tgz",
2619
+ "integrity": "sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==",
2524
2620
  "license": "MIT",
2525
2621
  "dependencies": {
2526
2622
  "bytes": "^3.1.2",
2527
- "content-type": "^2.0.0",
2623
+ "content-type": "^2.1.0",
2528
2624
  "debug": "^4.4.3",
2529
2625
  "http-errors": "^2.0.1",
2530
- "iconv-lite": "^0.7.2",
2626
+ "iconv-lite": "^0.7.3",
2531
2627
  "on-finished": "^2.4.1",
2532
- "qs": "^6.15.2",
2628
+ "qs": "^6.16.1",
2533
2629
  "raw-body": "^3.0.2",
2534
2630
  "type-is": "^2.1.0"
2535
2631
  },
@@ -2542,9 +2638,9 @@
2542
2638
  }
2543
2639
  },
2544
2640
  "node_modules/body-parser/node_modules/content-type": {
2545
- "version": "2.0.0",
2546
- "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/content-type/-/content-type-2.0.0.tgz",
2547
- "integrity": "sha1-L7Pt5p3/oK94ynxM51iWgGOLVt8=",
2641
+ "version": "2.1.0",
2642
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz",
2643
+ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==",
2548
2644
  "license": "MIT",
2549
2645
  "engines": {
2550
2646
  "node": ">=18"
@@ -2680,9 +2776,9 @@
2680
2776
  }
2681
2777
  },
2682
2778
  "node_modules/chai": {
2683
- "version": "6.2.2",
2684
- "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
2685
- "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
2779
+ "version": "6.3.0",
2780
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.3.0.tgz",
2781
+ "integrity": "sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==",
2686
2782
  "dev": true,
2687
2783
  "license": "MIT",
2688
2784
  "engines": {
@@ -3914,9 +4010,9 @@
3914
4010
  "license": "MIT"
3915
4011
  },
3916
4012
  "node_modules/fast-uri": {
3917
- "version": "3.1.8",
3918
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
3919
- "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
4013
+ "version": "3.1.9",
4014
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
4015
+ "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
3920
4016
  "funding": [
3921
4017
  {
3922
4018
  "type": "github",
@@ -5259,28 +5355,37 @@
5259
5355
  }
5260
5356
  },
5261
5357
  "node_modules/libbase64": {
5262
- "version": "1.3.1",
5263
- "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.3.1.tgz",
5264
- "integrity": "sha512-1b9LXEjEtXj35YKOR9RqNKBootlb37qbIzmqiw4MsP52cjOsfR6i/AYU1Y8qN4kV2TJQmLJ5aiXn45qI6h+Szw==",
5265
- "license": "MIT"
5358
+ "version": "1.4.1",
5359
+ "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.4.1.tgz",
5360
+ "integrity": "sha512-Nyh3H90B3gRtrcxIe56Ayy7635J0jmh6AbxbQgQae8wrSPQMH5wFqJChiMTB13yKG512L3YspbA5DzumhFTITA==",
5361
+ "license": "MIT",
5362
+ "engines": {
5363
+ "node": ">=20.0.0"
5364
+ }
5266
5365
  },
5267
5366
  "node_modules/libmime": {
5268
- "version": "5.4.6",
5269
- "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.4.6.tgz",
5270
- "integrity": "sha512-Cgx1vHd76GTwDaLNsl0K44CjNFfhkX/1bMcoruoWr8Ugcl0/zMw7x/8NpZERIOcpGyzlQo10tOEw9goGsv2Wlg==",
5367
+ "version": "5.6.3",
5368
+ "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.6.3.tgz",
5369
+ "integrity": "sha512-cuTUW/Jybvh5O4/U9p61gyutHOjDtZyGQYuY99+bfnaFwqcDf2Nb+R6hMHY6DDen2H9wLKQSMpofWUgn2TI5JQ==",
5271
5370
  "license": "MIT",
5272
5371
  "dependencies": {
5273
5372
  "encoding-japanese": "2.4.0",
5274
5373
  "iconv-lite": "0.7.3",
5275
- "libbase64": "1.3.1",
5276
- "libqp": "2.1.2"
5374
+ "libbase64": "1.4.1",
5375
+ "libqp": "3.0.1"
5376
+ },
5377
+ "engines": {
5378
+ "node": ">=20.0.0"
5277
5379
  }
5278
5380
  },
5279
5381
  "node_modules/libqp": {
5280
- "version": "2.1.2",
5281
- "resolved": "https://registry.npmjs.org/libqp/-/libqp-2.1.2.tgz",
5282
- "integrity": "sha512-rp+U80tl9Os4K7GnVbPzPRmghPu6eqB8rcF+ontvNAnoga0JhMFG/bkTD/reC8yoznKMgOc5/ttZHJasiWeFPw==",
5283
- "license": "MIT"
5382
+ "version": "3.0.1",
5383
+ "resolved": "https://registry.npmjs.org/libqp/-/libqp-3.0.1.tgz",
5384
+ "integrity": "sha512-7QZxpPX25pga1WiMueduWxmrHMVBFrZPH6ZUaozGYa/H98JH6NVBSET3qVw+4NxzoraIW7rJ81YxSU9IalvCpg==",
5385
+ "license": "MIT",
5386
+ "engines": {
5387
+ "node": ">=20.0.0"
5388
+ }
5284
5389
  },
5285
5390
  "node_modules/libsodium": {
5286
5391
  "version": "0.8.4",
@@ -5768,19 +5873,17 @@
5768
5873
  }
5769
5874
  },
5770
5875
  "node_modules/mailparser": {
5771
- "version": "3.9.33",
5772
- "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.9.33.tgz",
5773
- "integrity": "sha512-+ZYhApN4f7B8+jokb7VZeml8lxYHixVJ3tJTB5iPG9/MJpy8YmBHGdy+AWJ9dmtUX6t0xlu4rxwj1b7eWCvbDA==",
5876
+ "version": "3.12.4",
5877
+ "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.12.4.tgz",
5878
+ "integrity": "sha512-FdoMF+S89/AQaJHY7StwTfABPHZ8Vey+CDyUno5j+TO0jF0UxM+la4Pe9MeqKqBO4Y9ZMB2eomdyg5i+jzpfZw==",
5774
5879
  "license": "MIT",
5775
5880
  "dependencies": {
5776
- "@zone-eu/mailsplit": "5.4.19",
5777
- "encoding-japanese": "2.4.0",
5881
+ "@zone-eu/mailsplit": "5.4.29",
5778
5882
  "he": "1.2.0",
5779
5883
  "html-to-text": "10.0.1",
5780
- "iconv-lite": "0.7.3",
5781
- "libmime": "5.4.6",
5884
+ "libmime": "5.6.3",
5782
5885
  "linkify-it": "5.0.2",
5783
- "nodemailer": "10.0.13",
5886
+ "nodemailer": "10.2.1",
5784
5887
  "punycode.js": "2.3.1",
5785
5888
  "tlds": "1.261.0"
5786
5889
  },
@@ -5928,9 +6031,9 @@
5928
6031
  "license": "MIT"
5929
6032
  },
5930
6033
  "node_modules/multer": {
5931
- "version": "2.4.0",
5932
- "resolved": "https://registry.npmjs.org/multer/-/multer-2.4.0.tgz",
5933
- "integrity": "sha512-7dqa0ZcFfzbefdTuIkzOSMvZWC0J7FLqBOjJUZvDCXShIURWKxAyTT1wHhnE5q19c7jOJf43IYYKjBmZVZmvhg==",
6034
+ "version": "2.5.0",
6035
+ "resolved": "https://registry.npmjs.org/multer/-/multer-2.5.0.tgz",
6036
+ "integrity": "sha512-BsqOzYGVq49JcW2IzoSAxeKYRevb+dGGPPWleOR8Lrlk4igwxu1/9pwSXlByhCb7MVZDrNJFC0IBP5/O5nLYRw==",
5934
6037
  "license": "MIT",
5935
6038
  "dependencies": {
5936
6039
  "append-field": "^1.0.0",
@@ -6061,17 +6164,17 @@
6061
6164
  },
6062
6165
  "node_modules/node-forge": {
6063
6166
  "version": "1.4.0",
6064
- "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/node-forge/-/node-forge-1.4.0.tgz",
6065
- "integrity": "sha1-HHt9i9wtB4c59YKH1YnZA6EbL8I=",
6167
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz",
6168
+ "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==",
6066
6169
  "license": "(BSD-3-Clause OR GPL-2.0)",
6067
6170
  "engines": {
6068
6171
  "node": ">= 6.13.0"
6069
6172
  }
6070
6173
  },
6071
6174
  "node_modules/nodemailer": {
6072
- "version": "10.0.13",
6073
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-10.0.13.tgz",
6074
- "integrity": "sha512-SzG86OlvcW/NNhUFC6uROMwRTL4n7MswfQqC/T8mhkmnY1YVa23zUEMYi4ijSeXSl9GLz9ZeTJDUatEDuY5FeQ==",
6175
+ "version": "10.2.1",
6176
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-10.2.1.tgz",
6177
+ "integrity": "sha512-ZrDNsPFoDMwefNs7sJwrYiEJ/CG4ClJWDZv05iNJsEBWa8GRDry1QJHTJxsuTAY9eDDKjX4k+q3SxslXJOao7w==",
6075
6178
  "license": "MIT-0",
6076
6179
  "engines": {
6077
6180
  "node": ">=20.0.0"
@@ -6510,9 +6613,9 @@
6510
6613
  }
6511
6614
  },
6512
6615
  "node_modules/qs": {
6513
- "version": "6.16.0",
6514
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz",
6515
- "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==",
6616
+ "version": "6.16.1",
6617
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz",
6618
+ "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==",
6516
6619
  "license": "BSD-3-Clause",
6517
6620
  "dependencies": {
6518
6621
  "es-define-property": "^1.0.1",
@@ -7079,13 +7182,13 @@
7079
7182
  }
7080
7183
  },
7081
7184
  "node_modules/smtp-server": {
7082
- "version": "3.19.16",
7083
- "resolved": "https://registry.npmjs.org/smtp-server/-/smtp-server-3.19.16.tgz",
7084
- "integrity": "sha512-EAO7FiexdU+s/IiW92MIRDSOaVTGF2skmXEpSvl+A+NDMDLnv+NnoYpmEh+7kmARU1F1NTTe3am35IBMEEnN1w==",
7185
+ "version": "3.21.1",
7186
+ "resolved": "https://registry.npmjs.org/smtp-server/-/smtp-server-3.21.1.tgz",
7187
+ "integrity": "sha512-gj95f6YhcL0uu3m3FvRnQ6LSotursugAuVjK5V4f0f2C/4OSVpn/+h28F4pPJFob/myli9V+F7/Hxx9DJVdwvg==",
7085
7188
  "license": "MIT-0",
7086
7189
  "dependencies": {
7087
7190
  "ipv6-normalize": "1.0.1",
7088
- "nodemailer": "10.0.13",
7191
+ "nodemailer": "10.2.1",
7089
7192
  "punycode.js": "2.3.1"
7090
7193
  },
7091
7194
  "engines": {
@@ -7554,9 +7657,9 @@
7554
7657
  "license": "MIT"
7555
7658
  },
7556
7659
  "node_modules/undici": {
7557
- "version": "7.30.0",
7558
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.30.0.tgz",
7559
- "integrity": "sha512-dkrQXeHSaoamnItlYbmzG0wFYrM0ZwDxCIg0A7aKjTyyhh9svRzCNFEzV+Vm05/yehjCzjDZ31KXfGEjYSztDQ==",
7660
+ "version": "7.30.1",
7661
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.30.1.tgz",
7662
+ "integrity": "sha512-03KrMbjIFDWQR5RNPrSw3bd1r12JpyFQl9/yxjUbJtqkjmllqC5lFjZh6ujeuJCKr8EOQvRW872Oy/az+nLYxg==",
7560
7663
  "dev": true,
7561
7664
  "license": "MIT",
7562
7665
  "engines": {
@@ -7682,19 +7785,19 @@
7682
7785
  }
7683
7786
  },
7684
7787
  "node_modules/vitest": {
7685
- "version": "4.1.11",
7686
- "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/vitest/-/vitest-4.1.11.tgz",
7687
- "integrity": "sha1-FlPBUhrpF/lg2bIYd3l8R9/YvyE=",
7788
+ "version": "4.1.12",
7789
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.12.tgz",
7790
+ "integrity": "sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==",
7688
7791
  "dev": true,
7689
7792
  "license": "MIT",
7690
7793
  "dependencies": {
7691
- "@vitest/expect": "4.1.11",
7692
- "@vitest/mocker": "4.1.11",
7693
- "@vitest/pretty-format": "4.1.11",
7694
- "@vitest/runner": "4.1.11",
7695
- "@vitest/snapshot": "4.1.11",
7696
- "@vitest/spy": "4.1.11",
7697
- "@vitest/utils": "4.1.11",
7794
+ "@vitest/expect": "4.1.12",
7795
+ "@vitest/mocker": "4.1.12",
7796
+ "@vitest/pretty-format": "4.1.12",
7797
+ "@vitest/runner": "4.1.12",
7798
+ "@vitest/snapshot": "4.1.12",
7799
+ "@vitest/spy": "4.1.12",
7800
+ "@vitest/utils": "4.1.12",
7698
7801
  "es-module-lexer": "^2.0.0",
7699
7802
  "expect-type": "^1.3.0",
7700
7803
  "magic-string": "^0.30.21",
@@ -7722,12 +7825,12 @@
7722
7825
  "@edge-runtime/vm": "*",
7723
7826
  "@opentelemetry/api": "^1.9.0",
7724
7827
  "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
7725
- "@vitest/browser-playwright": "4.1.11",
7726
- "@vitest/browser-preview": "4.1.11",
7727
- "@vitest/browser-webdriverio": "4.1.11",
7728
- "@vitest/coverage-istanbul": "4.1.11",
7729
- "@vitest/coverage-v8": "4.1.11",
7730
- "@vitest/ui": "4.1.11",
7828
+ "@vitest/browser-playwright": "4.1.12",
7829
+ "@vitest/browser-preview": "4.1.12",
7830
+ "@vitest/browser-webdriverio": "^4.1.11",
7831
+ "@vitest/coverage-istanbul": "4.1.12",
7832
+ "@vitest/coverage-v8": "4.1.12",
7833
+ "@vitest/ui": "4.1.12",
7731
7834
  "happy-dom": "*",
7732
7835
  "jsdom": "*",
7733
7836
  "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -7771,6 +7874,34 @@
7771
7874
  }
7772
7875
  }
7773
7876
  },
7877
+ "node_modules/vitest/node_modules/@vitest/pretty-format": {
7878
+ "version": "4.1.12",
7879
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.12.tgz",
7880
+ "integrity": "sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==",
7881
+ "dev": true,
7882
+ "license": "MIT",
7883
+ "dependencies": {
7884
+ "tinyrainbow": "^3.1.0"
7885
+ },
7886
+ "funding": {
7887
+ "url": "https://opencollective.com/vitest"
7888
+ }
7889
+ },
7890
+ "node_modules/vitest/node_modules/@vitest/utils": {
7891
+ "version": "4.1.12",
7892
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.12.tgz",
7893
+ "integrity": "sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==",
7894
+ "dev": true,
7895
+ "license": "MIT",
7896
+ "dependencies": {
7897
+ "@vitest/pretty-format": "4.1.12",
7898
+ "convert-source-map": "^2.0.0",
7899
+ "tinyrainbow": "^3.1.0"
7900
+ },
7901
+ "funding": {
7902
+ "url": "https://opencollective.com/vitest"
7903
+ }
7904
+ },
7774
7905
  "node_modules/w3c-xmlserializer": {
7775
7906
  "version": "5.0.0",
7776
7907
  "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.940",
3
+ "version": "0.1.0-alpha.942",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },
@@ -103,7 +103,7 @@
103
103
  "overrides": {
104
104
  "deepmerge-ts": "^8.0.1",
105
105
  "form-data": "4.0.6",
106
- "multer": "2.4.0",
106
+ "multer": "2.5.0",
107
107
  "tmp": "0.2.7",
108
108
  "@microsoft/teams.apps": {
109
109
  "@azure/msal-node": "^5.2.2"