@ouro.bot/cli 0.1.0-alpha.661 → 0.1.0-alpha.663
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 +16 -0
- package/dist/arc/flight-recorder.js +8 -3
- package/dist/heart/context-loss-gauntlet.js +1 -1
- package/dist/heart/context-loss-sentinel.js +752 -0
- package/dist/heart/daemon/agent-config-check.js +24 -16
- package/dist/heart/daemon/cli-exec.js +77 -1
- package/dist/heart/daemon/cli-help.js +11 -4
- package/dist/heart/daemon/cli-parse.js +39 -13
- package/dist/heart/daemon/daemon-entry.js +29 -1
- package/dist/heart/daemon/health-monitor.js +3 -0
- package/dist/heart/hatch/hatch-flow.js +2 -0
- package/dist/heart/mailbox/mailbox-http-hooks.js +1 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +4 -0
- package/dist/heart/mailbox/mailbox-read.js +2 -1
- package/dist/heart/mailbox/readers/continuity-readers.js +5 -0
- package/dist/heart/provider-binding-resolver.js +3 -2
- package/dist/heart/provider-readiness-cache.js +88 -9
- package/dist/heart/start-of-turn-packet.js +7 -1
- package/dist/heart/turn-context.js +20 -0
- package/dist/mailbox-ui/assets/{index-B-V9vRQ0.js → index-BZ60na8O.js} +15 -15
- package/dist/mailbox-ui/assets/index-DG6Xf5uL.css +1 -0
- package/dist/mailbox-ui/index.html +2 -2
- package/dist/mind/bundle-manifest.js +3 -0
- package/dist/senses/pipeline.js +25 -2
- package/package.json +3 -2
- package/dist/mailbox-ui/assets/index-BOZbGbkL.css +0 -1
package/changelog.json
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
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.663",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Add deterministic Arc Sentinel recovery receipts, lifecycle refreshes, and Workbench Sentinel history.",
|
|
8
|
+
"Harden Sentinel recovery receipts with canonical POSIX Arc locators, invalid timestamp rejection, inherited blocker provenance, and exact latest-ready recovery after Sentinel-authored blockers.",
|
|
9
|
+
"Make Sentinel's printed `ouro provider check --agent <agent> --lane <lane>` repair command executable, persist non-secret provider readiness under the agent bundle for cross-process recovery, and prefer the freshest exact-matching readiness without mutating orientation-only probes.",
|
|
10
|
+
"Include non-OK generic daemon health results in Sentinel receipts so failures such as crashed managed agents, cron delays, or disk pressure appear in Workbench and start-of-turn recovery context alongside sense health."
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"version": "0.1.0-alpha.662",
|
|
15
|
+
"changes": [
|
|
16
|
+
"Parse `--github-token` and `--base-url` in `ouro hatch` so the GitHub Copilot provider can be connected headlessly at cold-start. The credential type, per-provider validation, and storage split already supported github-copilot (githubToken -> vault credential, baseUrl -> config); only the argv parsing was missing, which left the provider selectable but unconnectable from a non-interactive hatch — the exact path Ouro Workbench's provider-config form uses for the work agent.",
|
|
17
|
+
"Override the transitive `shell-quote` dependency to `^1.8.4` (pulled in via `ink` -> `react-devtools-core`) to clear the newly-disclosed GHSA-w7jw-789q-3m8p critical advisory that was failing the release-preflight `npm audit` gate on every PR."
|
|
18
|
+
]
|
|
19
|
+
},
|
|
4
20
|
{
|
|
5
21
|
"version": "0.1.0-alpha.661",
|
|
6
22
|
"changes": [
|
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.flightRecorderLatestPath = flightRecorderLatestPath;
|
|
37
|
+
exports.isFlightRecorderResume = isFlightRecorderResume;
|
|
37
38
|
exports.readFlightRecorderResume = readFlightRecorderResume;
|
|
38
39
|
exports.writeFlightRecorderResume = writeFlightRecorderResume;
|
|
39
40
|
exports.recordFlightRecorderEvent = recordFlightRecorderEvent;
|
|
@@ -123,7 +124,7 @@ function isStringArray(value) {
|
|
|
123
124
|
function isNullableString(value) {
|
|
124
125
|
return value === null || typeof value === "string";
|
|
125
126
|
}
|
|
126
|
-
function
|
|
127
|
+
function isFlightRecorderResume(value) {
|
|
127
128
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
128
129
|
return false;
|
|
129
130
|
const record = value;
|
|
@@ -217,6 +218,10 @@ function latestFromEvent(event, previous) {
|
|
|
217
218
|
const nextSafeActionValue = event.nextSafeAction !== undefined ? event.nextSafeAction : previous.nextSafeAction.value;
|
|
218
219
|
const currentAskSourceEventIds = event.currentAsk !== undefined ? [event.id] : previous.currentAsk.sourceEventIds;
|
|
219
220
|
const nextSafeActionSourceEventIds = event.nextSafeAction !== undefined ? [event.id] : previous.nextSafeAction.sourceEventIds;
|
|
221
|
+
const inheritedBlocker = event.blockedBecause === undefined && previous.blockedBecause.length > 0;
|
|
222
|
+
const lastSafeCheckpointEventIds = inheritedBlocker
|
|
223
|
+
? uniqueStrings([...previous.lastSafeCheckpoint.sourceEventIds, event.id])
|
|
224
|
+
: [event.id];
|
|
220
225
|
const hasCurrentAsk = typeof currentAskValue === "string" && currentAskValue.trim().length > 0;
|
|
221
226
|
const hasNextSafeAction = typeof nextSafeActionValue === "string" && nextSafeActionValue.trim().length > 0;
|
|
222
227
|
return {
|
|
@@ -248,7 +253,7 @@ function latestFromEvent(event, previous) {
|
|
|
248
253
|
turnId: event.turnId ?? previous.lastSafeCheckpoint.turnId,
|
|
249
254
|
sessionRef: event.sessionRef ?? previous.lastSafeCheckpoint.sessionRef,
|
|
250
255
|
recordedAt: event.recordedAt,
|
|
251
|
-
sourceEventIds:
|
|
256
|
+
sourceEventIds: lastSafeCheckpointEventIds,
|
|
252
257
|
},
|
|
253
258
|
recorderHealth: { status: "ok", issues: [] },
|
|
254
259
|
};
|
|
@@ -257,7 +262,7 @@ function readFlightRecorderResume(agentRoot) {
|
|
|
257
262
|
const latestPath = flightRecorderLatestPath(agentRoot);
|
|
258
263
|
try {
|
|
259
264
|
const parsed = JSON.parse(fs.readFileSync(latestPath, "utf-8"));
|
|
260
|
-
if (!
|
|
265
|
+
if (!isFlightRecorderResume(parsed)) {
|
|
261
266
|
throw new Error("latest.json has invalid flight-recorder resume shape");
|
|
262
267
|
}
|
|
263
268
|
const resume = normalizeResumeInvariants(parsed);
|
|
@@ -282,7 +282,7 @@ function summarize(verdict) {
|
|
|
282
282
|
return "blocked: context-loss recovery would lose or mislead the agent";
|
|
283
283
|
}
|
|
284
284
|
function runContextLossGauntlet(agentName, agentRoot, options = {}) {
|
|
285
|
-
const flightRecorderResume = (0, flight_recorder_1.readFlightRecorderResume)(agentRoot);
|
|
285
|
+
const flightRecorderResume = options.flightRecorderResume ?? (0, flight_recorder_1.readFlightRecorderResume)(agentRoot);
|
|
286
286
|
const card = (0, work_card_1.buildWorkCard)(agentName, agentRoot, { ...options, flightRecorderResume });
|
|
287
287
|
const generatedAt = (options.now ?? (() => new Date()))().toISOString();
|
|
288
288
|
const checks = [
|