agenr 0.9.76 → 0.9.78
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.md +18 -0
- package/dist/{chunk-PO67KZSH.js → chunk-JJZHOS4U.js} +20 -0
- package/dist/cli-main.js +18 -4
- package/dist/openclaw-plugin/index.d.ts +1 -1
- package/dist/openclaw-plugin/index.js +1819 -242
- package/package.json +13 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.9.78] - 2026-03-08
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Restored OpenClaw session-start continuity for legacy TUI session keys that expose `family=tui` without explicit lane metadata by deriving a narrow compatibility lane from safe structured key forms such as `agent:main:tui` and `agent:main:macbook_tui`.
|
|
8
|
+
- Added regression coverage ensuring legacy plain and aliased TUI keys recover same-lane explicit and fallback predecessors, while ambiguous non-lane identifiers still fail closed.
|
|
9
|
+
|
|
10
|
+
## [0.9.77] - 2026-03-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Added DB-backed OpenClaw session identity breadcrumbs keyed by `sessionId`, allowing agenr to recover family and lane identity for reset-archived predecessors after OpenClaw renames live transcripts to `*.jsonl.reset.*`.
|
|
15
|
+
- Restored same-family and same-lane OpenClaw session-start continuity across reset artifacts while preserving fail-closed rejection for different-family or different-lane predecessors.
|
|
16
|
+
- Hardened OpenClaw session-start continuity so direct event identity now beats stale mirrored context, preventing `ctx.sessionKey` lane data from overriding an incoming event family or manufacturing a lane the event never asserted.
|
|
17
|
+
- Hardened predecessor validation so structured identity from validated session keys and session ids now outranks stale manifest `origin.surface` metadata, preserving correct family and lane classification when those signals conflict.
|
|
18
|
+
- Fixed session-store reverse lookup to resolve relative `sessionFile` entries against the OpenClaw sessions directory, preventing valid predecessors from collapsing to `unknown` due to path-base mismatches.
|
|
19
|
+
- Explicit predecessor references that point at a base `*.jsonl` path now canonicalize back to the real archived transcript artifact when the live file is gone and only a supported reset or deleted artifact remains on disk.
|
|
20
|
+
|
|
3
21
|
## [0.9.76] - 2026-03-07
|
|
4
22
|
|
|
5
23
|
### Changed
|
|
@@ -186,6 +186,24 @@ var CREATE_SESSION_PROJECTS_TABLE_SQL = `
|
|
|
186
186
|
updated_at TEXT NOT NULL
|
|
187
187
|
)
|
|
188
188
|
`;
|
|
189
|
+
var CREATE_SESSION_IDENTITY_BREADCRUMBS_TABLE_SQL = `
|
|
190
|
+
CREATE TABLE IF NOT EXISTS session_identity_breadcrumbs (
|
|
191
|
+
session_id TEXT PRIMARY KEY,
|
|
192
|
+
session_key TEXT,
|
|
193
|
+
family TEXT NOT NULL,
|
|
194
|
+
lane_id TEXT,
|
|
195
|
+
origin_surface TEXT,
|
|
196
|
+
delivery_channel TEXT,
|
|
197
|
+
family_source TEXT,
|
|
198
|
+
lane_source TEXT,
|
|
199
|
+
created_at TEXT NOT NULL,
|
|
200
|
+
updated_at TEXT NOT NULL
|
|
201
|
+
)
|
|
202
|
+
`;
|
|
203
|
+
var CREATE_SESSION_IDENTITY_BREADCRUMBS_UPDATED_AT_INDEX_SQL = `
|
|
204
|
+
CREATE INDEX IF NOT EXISTS idx_session_identity_breadcrumbs_updated_at
|
|
205
|
+
ON session_identity_breadcrumbs(updated_at)
|
|
206
|
+
`;
|
|
189
207
|
var ADD_SESSION_PROJECT_STATE_COLUMN_SQL = `
|
|
190
208
|
ALTER TABLE session_projects
|
|
191
209
|
ADD COLUMN state TEXT NOT NULL DEFAULT 'set'
|
|
@@ -198,6 +216,8 @@ async function ensurePluginDbTables(client) {
|
|
|
198
216
|
await client.execute(CREATE_SEEN_SESSIONS_TABLE_SQL);
|
|
199
217
|
await client.execute(CREATE_SEEN_SESSIONS_SEEN_AT_INDEX_SQL);
|
|
200
218
|
await client.execute(CREATE_SESSION_PROJECTS_TABLE_SQL);
|
|
219
|
+
await client.execute(CREATE_SESSION_IDENTITY_BREADCRUMBS_TABLE_SQL);
|
|
220
|
+
await client.execute(CREATE_SESSION_IDENTITY_BREADCRUMBS_UPDATED_AT_INDEX_SQL);
|
|
201
221
|
const sessionProjectsInfo = await client.execute("PRAGMA table_info(session_projects)");
|
|
202
222
|
const hasStateColumn = sessionProjectsInfo.rows.some(
|
|
203
223
|
(row) => String(row.name) === "state"
|
package/dist/cli-main.js
CHANGED
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
runStoreService,
|
|
40
40
|
runTraceService,
|
|
41
41
|
ui
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-JJZHOS4U.js";
|
|
43
43
|
import {
|
|
44
44
|
ConflictAlreadyResolvedError,
|
|
45
45
|
REVIEW_QUEUE_PATH,
|
|
@@ -10582,6 +10582,7 @@ var codexSessionResolver = createMtimeResolver("**/*.jsonl", {
|
|
|
10582
10582
|
// src/watch/resolvers/openclaw.ts
|
|
10583
10583
|
import fs18 from "fs/promises";
|
|
10584
10584
|
import path16 from "path";
|
|
10585
|
+
var ARCHIVED_TRANSCRIPT_MARKERS = [".reset.", ".deleted."];
|
|
10585
10586
|
function parseUpdatedAt(value) {
|
|
10586
10587
|
if (typeof value !== "string" || value.trim().length === 0) {
|
|
10587
10588
|
return 0;
|
|
@@ -10661,9 +10662,22 @@ var openClawSessionResolver = {
|
|
|
10661
10662
|
} catch {
|
|
10662
10663
|
return null;
|
|
10663
10664
|
}
|
|
10664
|
-
const
|
|
10665
|
-
|
|
10666
|
-
|
|
10665
|
+
const candidateStats = await Promise.all(
|
|
10666
|
+
entries.filter((entry) => ARCHIVED_TRANSCRIPT_MARKERS.some((marker) => entry.startsWith(`${base}${marker}`))).map(async (entry) => {
|
|
10667
|
+
const filePath = path16.join(dir, entry);
|
|
10668
|
+
try {
|
|
10669
|
+
const stat = await fs18.stat(filePath);
|
|
10670
|
+
return {
|
|
10671
|
+
filePath,
|
|
10672
|
+
mtimeMs: stat.mtimeMs
|
|
10673
|
+
};
|
|
10674
|
+
} catch {
|
|
10675
|
+
return null;
|
|
10676
|
+
}
|
|
10677
|
+
})
|
|
10678
|
+
);
|
|
10679
|
+
const candidates = candidateStats.filter((entry) => entry !== null).sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
10680
|
+
return candidates[0]?.filePath ?? null;
|
|
10667
10681
|
}
|
|
10668
10682
|
};
|
|
10669
10683
|
|
|
@@ -80,7 +80,7 @@ declare function stripInjectedContext(text: string): string;
|
|
|
80
80
|
declare function getBaseSessionPath(filePath: string): string;
|
|
81
81
|
declare function readSessionsJson(sessionsDir: string): Promise<Record<string, unknown>>;
|
|
82
82
|
declare function readAndParseSessionJsonl(sessionFile: string): Promise<unknown[]>;
|
|
83
|
-
declare function getSurfaceForSessionFile(sessionFilePath: string, sessionsJson: Record<string, unknown
|
|
83
|
+
declare function getSurfaceForSessionFile(sessionFilePath: string, sessionsJson: Record<string, unknown>, sessionsDir?: string): string;
|
|
84
84
|
declare function readMessagesFromJsonl(filePath: string): Promise<HandoffMessage[]>;
|
|
85
85
|
declare function findPriorResetFile(sessionsDir: string, currentSessionFile: string): Promise<string | null>;
|
|
86
86
|
declare function buildTranscript(messages: HandoffMessage[], surface: string): string;
|