@ouro.bot/cli 0.1.0-alpha.168 → 0.1.0-alpha.169
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 +8 -0
- package/dist/heart/daemon/auth-flow.js +1 -1
- package/dist/heart/daemon/daemon-cli.js +1 -1
- package/dist/heart/daemon/daemon.js +1 -0
- package/dist/heart/daemon/outlook-http.js +31 -1
- package/dist/heart/daemon/outlook-read.js +7 -0
- package/dist/heart/provider-ping.js +1 -1
- package/package.json +1 -1
package/changelog.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
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.169",
|
|
6
|
+
"changes": [
|
|
7
|
+
"fix(outlook): desk prefs wiring \u2014 carrying block, constellations, starred friends now load in production",
|
|
8
|
+
"feat(outlook): obligation dismiss \u2014 agents can clear stale obligations from needs-me queue",
|
|
9
|
+
"fix: default minimax model updated to MiniMax-M2.7"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
4
12
|
{
|
|
5
13
|
"version": "0.1.0-alpha.168",
|
|
6
14
|
"changes": [
|
|
@@ -1404,7 +1404,7 @@ async function defaultRunAdoptionSpecialist() {
|
|
|
1404
1404
|
// Default models per provider (used when entering new credentials)
|
|
1405
1405
|
const defaultModels = {
|
|
1406
1406
|
anthropic: "claude-opus-4-6",
|
|
1407
|
-
minimax: "MiniMax-
|
|
1407
|
+
minimax: "MiniMax-M2.7",
|
|
1408
1408
|
"openai-codex": "gpt-5.4",
|
|
1409
1409
|
"github-copilot": "claude-sonnet-4.6",
|
|
1410
1410
|
azure: "",
|
|
@@ -299,6 +299,7 @@ class OuroDaemon {
|
|
|
299
299
|
this.outlookServer = await (0, outlook_http_1.startOutlookHttpServer)({
|
|
300
300
|
host: "127.0.0.1",
|
|
301
301
|
port: outlook_types_1.OUTLOOK_DEFAULT_PORT,
|
|
302
|
+
bundlesRoot: this.bundlesRoot,
|
|
302
303
|
readMachineState: () => (0, outlook_read_1.readOutlookMachineState)({ bundlesRoot: this.bundlesRoot }),
|
|
303
304
|
readMachineView: ({ machine }) => {
|
|
304
305
|
const overview = this.buildStatusPayload().overview;
|
|
@@ -306,7 +306,37 @@ async function startOutlookHttpServer(options = {}) {
|
|
|
306
306
|
writeJson(response, 200, hooks.readAgentFriends(agent));
|
|
307
307
|
return;
|
|
308
308
|
}
|
|
309
|
-
/* v8 ignore start — desk prefs +
|
|
309
|
+
/* v8 ignore start — desk prefs write + reads */
|
|
310
|
+
if (surface === "dismiss-obligation" && request.method === "POST") {
|
|
311
|
+
let body = "";
|
|
312
|
+
request.on("data", (chunk) => { body += chunk; });
|
|
313
|
+
request.on("end", () => {
|
|
314
|
+
try {
|
|
315
|
+
const { obligationId } = JSON.parse(body);
|
|
316
|
+
if (!obligationId) {
|
|
317
|
+
writeJson(response, 400, { ok: false, error: "obligationId required" });
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const prefsPath = path.join(agentRoot(agent), "state", "outlook-prefs.json");
|
|
321
|
+
let prefs = {};
|
|
322
|
+
try {
|
|
323
|
+
prefs = JSON.parse(fs.readFileSync(prefsPath, "utf-8"));
|
|
324
|
+
}
|
|
325
|
+
catch { /* new file */ }
|
|
326
|
+
const dismissed = Array.isArray(prefs.dismissedObligations) ? prefs.dismissedObligations : [];
|
|
327
|
+
if (!dismissed.includes(obligationId))
|
|
328
|
+
dismissed.push(obligationId);
|
|
329
|
+
prefs.dismissedObligations = dismissed;
|
|
330
|
+
fs.mkdirSync(path.dirname(prefsPath), { recursive: true });
|
|
331
|
+
fs.writeFileSync(prefsPath, JSON.stringify(prefs, null, 2) + "\n", "utf-8");
|
|
332
|
+
writeJson(response, 200, { ok: true, dismissed: dismissed.length });
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
writeJson(response, 500, { ok: false, error: String(error) });
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
310
340
|
if (surface === "desk-prefs") {
|
|
311
341
|
writeJson(response, 200, (0, outlook_read_1.readDeskPrefs)(agentRoot(agent)));
|
|
312
342
|
return;
|
|
@@ -1157,6 +1157,9 @@ function readNeedsMeView(agentName, options = {}) {
|
|
|
1157
1157
|
const now = options.now?.() ?? new Date();
|
|
1158
1158
|
const agentRoot = path.join(bundlesRoot, `${agentName}.ouro`);
|
|
1159
1159
|
const items = [];
|
|
1160
|
+
// Load dismissed obligations to filter them out
|
|
1161
|
+
const prefs = readDeskPrefs(agentRoot);
|
|
1162
|
+
const dismissed = new Set(prefs.dismissedObligations);
|
|
1160
1163
|
// 1. Sessions that need a reply (last message is from user)
|
|
1161
1164
|
const sessions = readSessionInventory(agentName, options);
|
|
1162
1165
|
for (const s of sessions.items) {
|
|
@@ -1173,6 +1176,8 @@ function readNeedsMeView(agentName, options = {}) {
|
|
|
1173
1176
|
// 2. Obligations that are blocking or stale
|
|
1174
1177
|
const obligations = readObligationSummary(agentRoot);
|
|
1175
1178
|
for (const o of obligations.items) {
|
|
1179
|
+
if (dismissed.has(o.id))
|
|
1180
|
+
continue;
|
|
1176
1181
|
const ageMs = now.getTime() - Date.parse(o.updatedAt);
|
|
1177
1182
|
const isStale = ageMs > 24 * 60 * 60 * 1000;
|
|
1178
1183
|
if (o.status === "pending" || o.status === "investigating") {
|
|
@@ -1237,6 +1242,7 @@ function readDeskPrefs(agentRoot) {
|
|
|
1237
1242
|
tabOrder: null,
|
|
1238
1243
|
starredFriends: [],
|
|
1239
1244
|
pinnedConstellations: [],
|
|
1245
|
+
dismissedObligations: [],
|
|
1240
1246
|
};
|
|
1241
1247
|
try {
|
|
1242
1248
|
const raw = fs.readFileSync(prefsPath, "utf-8");
|
|
@@ -1255,6 +1261,7 @@ function readDeskPrefs(agentRoot) {
|
|
|
1255
1261
|
codingIds: Array.isArray(c.codingIds) ? c.codingIds.filter((c2) => typeof c2 === "string") : [],
|
|
1256
1262
|
}))
|
|
1257
1263
|
: [],
|
|
1264
|
+
dismissedObligations: Array.isArray(parsed.dismissedObligations) ? parsed.dismissedObligations.filter((id) => typeof id === "string") : [],
|
|
1258
1265
|
};
|
|
1259
1266
|
}
|
|
1260
1267
|
catch {
|
|
@@ -70,7 +70,7 @@ function createRuntimeForPing(provider, _config) {
|
|
|
70
70
|
const DEFAULT_MODELS = {
|
|
71
71
|
anthropic: "claude-haiku-4-5-20251001",
|
|
72
72
|
azure: "gpt-4o",
|
|
73
|
-
minimax: "
|
|
73
|
+
minimax: "MiniMax-M2.7",
|
|
74
74
|
"openai-codex": "codex-mini-latest",
|
|
75
75
|
"github-copilot": "gpt-4o",
|
|
76
76
|
};
|