@orion-agents/orion-code 0.2.2 → 0.3.1
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 +82 -0
- package/README.md +89 -14
- package/README.zh-CN.md +77 -14
- package/bin/orion +15 -4
- package/dist/cli.js +51 -172
- package/dist/cli.js.map +1 -1
- package/dist/commands/model-command-handlers.d.ts +2 -2
- package/dist/commands/model-command-handlers.d.ts.map +1 -1
- package/dist/commands/model-command-handlers.js +113 -32
- package/dist/commands/model-command-handlers.js.map +1 -1
- package/dist/commands/session-command-handlers.d.ts.map +1 -1
- package/dist/commands/session-command-handlers.js +106 -15
- package/dist/commands/session-command-handlers.js.map +1 -1
- package/dist/commands/types.d.ts +13 -3
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/core/tool-artifacts.d.ts +2 -0
- package/dist/core/tool-artifacts.d.ts.map +1 -1
- package/dist/core/tool-artifacts.js +27 -1
- package/dist/core/tool-artifacts.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/runtime/agent-loop.d.ts.map +1 -1
- package/dist/runtime/agent-loop.js +3 -3
- package/dist/runtime/agent-loop.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +32 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +241 -27
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +4 -0
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/agent-runtime-runner.d.ts +2 -1
- package/dist/runtime/agent-runtime-runner.d.ts.map +1 -1
- package/dist/runtime/durable-tool-receipt-reader.d.ts +32 -0
- package/dist/runtime/durable-tool-receipt-reader.d.ts.map +1 -0
- package/dist/runtime/durable-tool-receipt-reader.js +130 -0
- package/dist/runtime/durable-tool-receipt-reader.js.map +1 -0
- package/dist/runtime/legacy-thread-materializer.d.ts +31 -0
- package/dist/runtime/legacy-thread-materializer.d.ts.map +1 -1
- package/dist/runtime/legacy-thread-materializer.js +71 -17
- package/dist/runtime/legacy-thread-materializer.js.map +1 -1
- package/dist/runtime/orion-runtime-v1.d.ts +2 -0
- package/dist/runtime/orion-runtime-v1.d.ts.map +1 -1
- package/dist/runtime/orion-runtime-v1.js +7 -1
- package/dist/runtime/orion-runtime-v1.js.map +1 -1
- package/dist/runtime/orion-session-runner.d.ts +7 -2
- package/dist/runtime/orion-session-runner.d.ts.map +1 -1
- package/dist/runtime/orion-session-runner.js +16 -6
- package/dist/runtime/orion-session-runner.js.map +1 -1
- package/dist/runtime/product-bootstrap.d.ts +22 -0
- package/dist/runtime/product-bootstrap.d.ts.map +1 -0
- package/dist/runtime/product-bootstrap.js +374 -0
- package/dist/runtime/product-bootstrap.js.map +1 -0
- package/dist/runtime/product-orion-runtime.d.ts +2 -1
- package/dist/runtime/product-orion-runtime.d.ts.map +1 -1
- package/dist/runtime/product-orion-runtime.js +83 -13
- package/dist/runtime/product-orion-runtime.js.map +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.d.ts +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.js +1 -1
- package/dist/runtime/protocol/runtime-protocol-v1.js.map +1 -1
- package/dist/runtime/release-receipts.d.ts +66 -3
- package/dist/runtime/release-receipts.d.ts.map +1 -1
- package/dist/runtime/release-receipts.js +340 -7
- package/dist/runtime/release-receipts.js.map +1 -1
- package/dist/runtime/step-snapshot.d.ts.map +1 -1
- package/dist/runtime/step-snapshot.js +22 -2
- package/dist/runtime/step-snapshot.js.map +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
- package/dist/runtime/subagents/runtime-integration.js +5 -2
- package/dist/runtime/subagents/runtime-integration.js.map +1 -1
- package/dist/runtime/thread-event-store.d.ts +80 -0
- package/dist/runtime/thread-event-store.d.ts.map +1 -1
- package/dist/runtime/thread-event-store.js +456 -22
- package/dist/runtime/thread-event-store.js.map +1 -1
- package/dist/runtime/thread-projection.d.ts +10 -0
- package/dist/runtime/thread-projection.d.ts.map +1 -1
- package/dist/runtime/thread-projection.js +40 -0
- package/dist/runtime/thread-projection.js.map +1 -1
- package/dist/runtime/thread-runtime.d.ts +3 -1
- package/dist/runtime/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/thread-runtime.js +6 -0
- package/dist/runtime/thread-runtime.js.map +1 -1
- package/dist/runtime/thread-session-index.d.ts +84 -0
- package/dist/runtime/thread-session-index.d.ts.map +1 -0
- package/dist/runtime/thread-session-index.js +503 -0
- package/dist/runtime/thread-session-index.js.map +1 -0
- package/dist/runtime/thread-session-view.d.ts +70 -9
- package/dist/runtime/thread-session-view.d.ts.map +1 -1
- package/dist/runtime/thread-session-view.js +200 -82
- package/dist/runtime/thread-session-view.js.map +1 -1
- package/dist/runtime/thread-ui-adapter.d.ts +2 -0
- package/dist/runtime/thread-ui-adapter.d.ts.map +1 -1
- package/dist/runtime/thread-ui-adapter.js +86 -4
- package/dist/runtime/thread-ui-adapter.js.map +1 -1
- package/dist/runtime/tool-detail-repository.d.ts.map +1 -1
- package/dist/runtime/tool-detail-repository.js +23 -19
- package/dist/runtime/tool-detail-repository.js.map +1 -1
- package/dist/runtime/tool-receipt-validator.d.ts +21 -0
- package/dist/runtime/tool-receipt-validator.d.ts.map +1 -0
- package/dist/runtime/tool-receipt-validator.js +157 -0
- package/dist/runtime/tool-receipt-validator.js.map +1 -0
- package/dist/runtime/ui-events.d.ts +35 -0
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js +1 -0
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +2 -0
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +7 -3
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/services/global-config.d.ts +25 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +373 -5
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/redaction.d.ts +4 -0
- package/dist/services/redaction.d.ts.map +1 -1
- package/dist/services/redaction.js +63 -0
- package/dist/services/redaction.js.map +1 -1
- package/dist/services/session-index.d.ts +16 -0
- package/dist/services/session-index.d.ts.map +1 -1
- package/dist/services/session-index.js +45 -36
- package/dist/services/session-index.js.map +1 -1
- package/dist/services/session-storage.d.ts +59 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +306 -107
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/settings-coordinator.d.ts +174 -0
- package/dist/services/settings-coordinator.d.ts.map +1 -0
- package/dist/services/settings-coordinator.js +605 -0
- package/dist/services/settings-coordinator.js.map +1 -0
- package/dist/services/settings-document-repository.d.ts +138 -0
- package/dist/services/settings-document-repository.d.ts.map +1 -0
- package/dist/services/settings-document-repository.js +551 -0
- package/dist/services/settings-document-repository.js.map +1 -0
- package/dist/services/workspace-registry.d.ts +42 -0
- package/dist/services/workspace-registry.d.ts.map +1 -0
- package/dist/services/workspace-registry.js +222 -0
- package/dist/services/workspace-registry.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +5 -0
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +5 -0
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/web/errors.d.ts +6 -0
- package/dist/web/errors.d.ts.map +1 -0
- package/dist/web/errors.js +13 -0
- package/dist/web/errors.js.map +1 -0
- package/dist/web/event-hub.d.ts +43 -0
- package/dist/web/event-hub.d.ts.map +1 -0
- package/dist/web/event-hub.js +323 -0
- package/dist/web/event-hub.js.map +1 -0
- package/dist/web/file-read-service.d.ts +55 -0
- package/dist/web/file-read-service.d.ts.map +1 -0
- package/dist/web/file-read-service.js +399 -0
- package/dist/web/file-read-service.js.map +1 -0
- package/dist/web/git-read-model-service.d.ts +77 -0
- package/dist/web/git-read-model-service.d.ts.map +1 -0
- package/dist/web/git-read-model-service.js +631 -0
- package/dist/web/git-read-model-service.js.map +1 -0
- package/dist/web/index.d.ts +6 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +28 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/launch.d.ts +9 -0
- package/dist/web/launch.d.ts.map +1 -0
- package/dist/web/launch.js +64 -0
- package/dist/web/launch.js.map +1 -0
- package/dist/web/protocol.d.ts +408 -0
- package/dist/web/protocol.d.ts.map +1 -0
- package/dist/web/protocol.js +369 -0
- package/dist/web/protocol.js.map +1 -0
- package/dist/web/review-service.d.ts +38 -0
- package/dist/web/review-service.d.ts.map +1 -0
- package/dist/web/review-service.js +74 -0
- package/dist/web/review-service.js.map +1 -0
- package/dist/web/server.d.ts +20 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +744 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/terminal-manager.d.ts +155 -0
- package/dist/web/terminal-manager.d.ts.map +1 -0
- package/dist/web/terminal-manager.js +728 -0
- package/dist/web/terminal-manager.js.map +1 -0
- package/dist/web/terminal-server.d.ts +8 -0
- package/dist/web/terminal-server.d.ts.map +1 -0
- package/dist/web/terminal-server.js +275 -0
- package/dist/web/terminal-server.js.map +1 -0
- package/dist/web/workbench-controller.d.ts +99 -0
- package/dist/web/workbench-controller.d.ts.map +1 -0
- package/dist/web/workbench-controller.js +1267 -0
- package/dist/web/workbench-controller.js.map +1 -0
- package/dist/web-client/assets/DiffViewer-DpKoD07C.js +5 -0
- package/dist/web-client/assets/FilesPanel-BkoLmgjR.js +2 -0
- package/dist/web-client/assets/GitPanel-D20StcdG.js +1 -0
- package/dist/web-client/assets/ReviewPanel-3MVWbMQV.js +1 -0
- package/dist/web-client/assets/TerminalPanel-BLQ592Fb.js +21 -0
- package/dist/web-client/assets/TerminalPanel-DLuoa74B.css +1 -0
- package/dist/web-client/assets/index-BkIDl_xk.js +16 -0
- package/dist/web-client/assets/index-DXMpnWE8.css +1 -0
- package/dist/web-client/index.html +16 -0
- package/docs/architecture/v0.3.0-web-api.yaml +1340 -0
- package/docs/architecture/v0.3.1-web-api.yaml +2290 -0
- package/docs/migration/v0.2.2-to-v0.3.0-settings.md +114 -0
- package/docs/migration/v0.2.2-to-v0.3.0.md +55 -0
- package/docs/migration/v0.3.0-to-v0.3.1.md +88 -0
- package/docs/orion.example.json +9 -2
- package/docs/plan/v0.3.0-node-runtime-compatibility-plan.md +57 -0
- package/docs/plan/v0.3.0-settings-integration-plan.md +740 -0
- package/docs/plan/v0.3.0-web-workbench-plan.md +376 -0
- package/docs/plan/v0.3.1-web-workbench-professional-shell-plan.md +848 -0
- package/docs/readme.md +22 -1
- package/docs/test/v0.3.1-web-workbench-e2e-plan.md +140 -0
- package/npm-shrinkwrap.json +1229 -45
- package/package.json +47 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-session-index.d.ts","sourceRoot":"","sources":["../../src/runtime/thread-session-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThreadSessionIndexError = void 0;
|
|
4
|
+
exports.buildThreadSessionIndexV1 = buildThreadSessionIndexV1;
|
|
5
|
+
exports.advanceThreadSessionIndexV1 = advanceThreadSessionIndexV1;
|
|
6
|
+
exports.loadThreadSessionIndexManifestV1 = loadThreadSessionIndexManifestV1;
|
|
7
|
+
exports.loadThreadSessionIndexedPageV1 = loadThreadSessionIndexedPageV1;
|
|
8
|
+
exports.projectTranscriptMessages = projectTranscriptMessages;
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const atomic_write_1 = require("../services/atomic-write");
|
|
12
|
+
const canonical_1 = require("./protocol/canonical");
|
|
13
|
+
const TRANSCRIPT_PAGE_ITEMS = 100;
|
|
14
|
+
const MAX_MANIFEST_PAGES = 100000;
|
|
15
|
+
class ThreadSessionIndexError extends Error {
|
|
16
|
+
constructor(code, message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.name = 'ThreadSessionIndexError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ThreadSessionIndexError = ThreadSessionIndexError;
|
|
23
|
+
function buildThreadSessionIndexV1(input) {
|
|
24
|
+
const previous = readManifest(manifestPath(input.rootDir, input.threadId), input.threadId);
|
|
25
|
+
const messages = projectTranscriptMessages(input.projection.items, input.events);
|
|
26
|
+
const pages = [];
|
|
27
|
+
for (let start = 0; start < messages.length; start += TRANSCRIPT_PAGE_ITEMS) {
|
|
28
|
+
pages.push(writeImmutablePage(input.rootDir, input.threadId, start, messages.slice(start, start + TRANSCRIPT_PAGE_ITEMS)));
|
|
29
|
+
}
|
|
30
|
+
const commits = latestAuthorityCommits(input.projection);
|
|
31
|
+
const manifest = createManifest({
|
|
32
|
+
generation: (previous?.generation ?? 0) + 1,
|
|
33
|
+
threadId: input.threadId,
|
|
34
|
+
head: input.head,
|
|
35
|
+
startedAt: input.events[0]?.timestamp ?? 0,
|
|
36
|
+
updatedAt: input.events.at(-1)?.timestamp ?? 0,
|
|
37
|
+
messageCount: messages.length,
|
|
38
|
+
pages,
|
|
39
|
+
...commits,
|
|
40
|
+
});
|
|
41
|
+
writeManifest(input.rootDir, manifest);
|
|
42
|
+
return manifest;
|
|
43
|
+
}
|
|
44
|
+
/** Advance the derived index only when it exactly matches the pre-commit head. */
|
|
45
|
+
function advanceThreadSessionIndexV1(input) {
|
|
46
|
+
const current = readManifest(manifestPath(input.rootDir, input.threadId), input.threadId);
|
|
47
|
+
if (!current || !manifestMatchesHead(current, input.previousHead))
|
|
48
|
+
return false;
|
|
49
|
+
const orderedItems = orderedTranscriptItems(input.projection.items);
|
|
50
|
+
const messages = projectTranscriptMessages(input.projection.items, input.committedEvents);
|
|
51
|
+
const committedTerminalItemIds = new Set(input.committedEvents
|
|
52
|
+
.filter(event => event.itemId && isItemTerminalEvent(event))
|
|
53
|
+
.map(event => event.itemId));
|
|
54
|
+
const appendedItems = orderedItems.slice(current.messageCount);
|
|
55
|
+
if (orderedItems.length !== current.messageCount + messages.length ||
|
|
56
|
+
appendedItems.length !== messages.length ||
|
|
57
|
+
appendedItems.some(item => !committedTerminalItemIds.has(item.itemId))) {
|
|
58
|
+
// A message that started before the indexed tail may complete later. It
|
|
59
|
+
// belongs inside the existing order, so blindly appending would publish a
|
|
60
|
+
// transcript that disagrees with the authoritative startedSeq ordering.
|
|
61
|
+
// Leave the old manifest stale and let the next snapshot rebuild once.
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const pages = [...current.pages];
|
|
65
|
+
let messageCount = current.messageCount;
|
|
66
|
+
for (let start = 0; start < messages.length; start += TRANSCRIPT_PAGE_ITEMS) {
|
|
67
|
+
const chunk = messages.slice(start, start + TRANSCRIPT_PAGE_ITEMS);
|
|
68
|
+
pages.push(writeImmutablePage(input.rootDir, input.threadId, messageCount, chunk));
|
|
69
|
+
messageCount += chunk.length;
|
|
70
|
+
}
|
|
71
|
+
const nextCommits = latestAuthorityCommits(input.projection, input.committedEvents);
|
|
72
|
+
const manifest = createManifest({
|
|
73
|
+
generation: current.generation + 1,
|
|
74
|
+
threadId: input.threadId,
|
|
75
|
+
head: input.nextHead,
|
|
76
|
+
startedAt: current.startedAt,
|
|
77
|
+
updatedAt: input.nextHead.lastEventTimestamp,
|
|
78
|
+
messageCount,
|
|
79
|
+
pages,
|
|
80
|
+
latestTurnCommit: nextCommits.latestTurnCommit ?? current.latestTurnCommit,
|
|
81
|
+
latestPlanTurnCommit: nextCommits.latestPlanTurnCommit ?? current.latestPlanTurnCommit,
|
|
82
|
+
});
|
|
83
|
+
writeManifest(input.rootDir, manifest);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
function loadThreadSessionIndexManifestV1(rootDir, threadId, head) {
|
|
87
|
+
const manifest = readManifest(manifestPath(rootDir, threadId), threadId);
|
|
88
|
+
return manifest && manifestMatchesHead(manifest, head) ? manifest : undefined;
|
|
89
|
+
}
|
|
90
|
+
function loadThreadSessionIndexedPageV1(input) {
|
|
91
|
+
const pageSize = input.pageSize ?? 50;
|
|
92
|
+
if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > TRANSCRIPT_PAGE_ITEMS) {
|
|
93
|
+
throw new ThreadSessionIndexError('ORION_THREAD_SESSION_CURSOR_INVALID', 'Transcript pageSize must be an integer from 1 through 100.');
|
|
94
|
+
}
|
|
95
|
+
const manifest = loadThreadSessionIndexManifestV1(input.rootDir, input.threadId, input.head);
|
|
96
|
+
if (!manifest)
|
|
97
|
+
return undefined;
|
|
98
|
+
const end = input.cursor ? decodeCursor(input.cursor, manifest) : manifest.messageCount;
|
|
99
|
+
const offset = Math.max(0, end - pageSize);
|
|
100
|
+
const items = [];
|
|
101
|
+
for (const pointer of manifest.pages) {
|
|
102
|
+
if (pointer.end <= offset || pointer.start >= end)
|
|
103
|
+
continue;
|
|
104
|
+
const page = readPage(input.rootDir, input.threadId, pointer);
|
|
105
|
+
const from = Math.max(offset, pointer.start) - pointer.start;
|
|
106
|
+
const to = Math.min(end, pointer.end) - pointer.start;
|
|
107
|
+
items.push(...page.items.slice(from, to));
|
|
108
|
+
}
|
|
109
|
+
if (items.length !== end - offset) {
|
|
110
|
+
throw indexCorrupt('Transcript page manifest did not cover the requested range.');
|
|
111
|
+
}
|
|
112
|
+
return deepFreeze({
|
|
113
|
+
manifest,
|
|
114
|
+
items,
|
|
115
|
+
offset,
|
|
116
|
+
nextCursor: offset > 0 ? encodeCursor(manifest, offset) : null,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function projectTranscriptMessages(items, events) {
|
|
120
|
+
const timestamps = new Map();
|
|
121
|
+
for (const event of events) {
|
|
122
|
+
if (!event.itemId || !isItemTerminalEvent(event))
|
|
123
|
+
continue;
|
|
124
|
+
timestamps.set(event.itemId, event.timestamp);
|
|
125
|
+
}
|
|
126
|
+
return orderedTranscriptItems(items)
|
|
127
|
+
.filter(item => timestamps.has(item.itemId))
|
|
128
|
+
.map(item => {
|
|
129
|
+
const legacy = parseLegacyTranscriptReceipt(item.receipt);
|
|
130
|
+
if (legacy)
|
|
131
|
+
return legacy;
|
|
132
|
+
return {
|
|
133
|
+
role: item.role,
|
|
134
|
+
content: item.content ?? item.summary ?? item.error ?? '',
|
|
135
|
+
timestamp: timestamps.get(item.itemId) ?? 0,
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function orderedTranscriptItems(items) {
|
|
140
|
+
return Object.values(items)
|
|
141
|
+
.filter(item => item.kind === 'message' && item.status !== 'started' && isMessageRole(item.role))
|
|
142
|
+
.sort((left, right) => left.startedSeq - right.startedSeq);
|
|
143
|
+
}
|
|
144
|
+
function createManifest(input) {
|
|
145
|
+
const content = {
|
|
146
|
+
version: 1,
|
|
147
|
+
generation: input.generation,
|
|
148
|
+
threadId: input.threadId,
|
|
149
|
+
cursor: input.head.cursor,
|
|
150
|
+
projectionDigest: input.head.projectionDigest,
|
|
151
|
+
lastEventTimestamp: input.head.lastEventTimestamp,
|
|
152
|
+
lastRecordHash: input.head.lastRecordHash,
|
|
153
|
+
log: { ...input.head.log },
|
|
154
|
+
startedAt: input.startedAt,
|
|
155
|
+
updatedAt: input.updatedAt,
|
|
156
|
+
messageCount: input.messageCount,
|
|
157
|
+
pages: input.pages.map(page => ({ ...page })),
|
|
158
|
+
...(input.latestTurnCommit ? { latestTurnCommit: { ...input.latestTurnCommit } } : {}),
|
|
159
|
+
...(input.latestPlanTurnCommit
|
|
160
|
+
? { latestPlanTurnCommit: { ...input.latestPlanTurnCommit } }
|
|
161
|
+
: {}),
|
|
162
|
+
};
|
|
163
|
+
return deepFreeze({ ...content, digest: (0, canonical_1.digestRuntimeValue)(content) });
|
|
164
|
+
}
|
|
165
|
+
function latestAuthorityCommits(projection, events) {
|
|
166
|
+
const committedTurns = events
|
|
167
|
+
? new Set(events
|
|
168
|
+
.filter(event => event.payload.type === 'turn.committed' && event.turnId)
|
|
169
|
+
.map(event => event.turnId))
|
|
170
|
+
: undefined;
|
|
171
|
+
const commits = Object.values(projection.turns)
|
|
172
|
+
.filter(turn => !committedTurns || committedTurns.has(turn.turnId))
|
|
173
|
+
.flatMap(turn => (turn.commit ? [{ seq: turn.commit.seq, receipt: turn.commit.receipt }] : []))
|
|
174
|
+
.sort((left, right) => left.seq - right.seq);
|
|
175
|
+
const latestTurnCommit = commits.at(-1);
|
|
176
|
+
const latestPlanTurnCommit = [...commits]
|
|
177
|
+
.reverse()
|
|
178
|
+
.find(commit => turnCommitContainsPlan(commit.receipt));
|
|
179
|
+
return {
|
|
180
|
+
...(latestTurnCommit ? { latestTurnCommit } : {}),
|
|
181
|
+
...(latestPlanTurnCommit ? { latestPlanTurnCommit } : {}),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function writeImmutablePage(rootDir, threadId, start, items) {
|
|
185
|
+
const end = start + items.length;
|
|
186
|
+
const content = {
|
|
187
|
+
version: 1,
|
|
188
|
+
threadId,
|
|
189
|
+
start,
|
|
190
|
+
end,
|
|
191
|
+
items: items.map(item => structuredClone(item)),
|
|
192
|
+
};
|
|
193
|
+
const page = deepFreeze({ ...content, digest: (0, canonical_1.digestRuntimeValue)(content) });
|
|
194
|
+
const file = `${threadId}.${start}-${end}.${page.digest}.page.v1.json`;
|
|
195
|
+
const dir = pagesDir(rootDir, threadId);
|
|
196
|
+
ensurePrivateDirectory(dir);
|
|
197
|
+
const path = (0, path_1.join)(dir, file);
|
|
198
|
+
const existing = readStoredPage(path, threadId);
|
|
199
|
+
if (!existing || existing.digest !== page.digest) {
|
|
200
|
+
(0, atomic_write_1.atomicWriteFileSync)(path, `${(0, canonical_1.canonicalRuntimeJson)(page)}\n`, { mode: 0o600, fsync: true });
|
|
201
|
+
fsyncDirectory(dir);
|
|
202
|
+
}
|
|
203
|
+
return { start, end, file, digest: page.digest };
|
|
204
|
+
}
|
|
205
|
+
function writeManifest(rootDir, manifest) {
|
|
206
|
+
ensurePrivateDirectory(rootDir);
|
|
207
|
+
(0, atomic_write_1.atomicWriteFileSync)(manifestPath(rootDir, manifest.threadId), `${(0, canonical_1.canonicalRuntimeJson)(manifest)}\n`, { mode: 0o600, fsync: true });
|
|
208
|
+
fsyncDirectory(rootDir);
|
|
209
|
+
}
|
|
210
|
+
function readManifest(path, threadId) {
|
|
211
|
+
const value = readRegularJson(path);
|
|
212
|
+
if (!isRecord(value))
|
|
213
|
+
return null;
|
|
214
|
+
const { digest: _digest, ...content } = value;
|
|
215
|
+
void _digest;
|
|
216
|
+
if (value.version !== 1 ||
|
|
217
|
+
value.threadId !== threadId ||
|
|
218
|
+
!positiveSafeInteger(value.generation) ||
|
|
219
|
+
!nonNegativeSafeInteger(value.cursor) ||
|
|
220
|
+
typeof value.projectionDigest !== 'string' ||
|
|
221
|
+
!nonNegativeSafeInteger(value.lastEventTimestamp) ||
|
|
222
|
+
(value.lastRecordHash !== null && !isSha256(value.lastRecordHash)) ||
|
|
223
|
+
!isLogIdentity(value.log) ||
|
|
224
|
+
!nonNegativeSafeInteger(value.startedAt) ||
|
|
225
|
+
!nonNegativeSafeInteger(value.updatedAt) ||
|
|
226
|
+
!nonNegativeSafeInteger(value.messageCount) ||
|
|
227
|
+
!Array.isArray(value.pages) ||
|
|
228
|
+
value.pages.length > MAX_MANIFEST_PAGES ||
|
|
229
|
+
typeof value.digest !== 'string' ||
|
|
230
|
+
(0, canonical_1.digestRuntimeValue)(content) !== value.digest) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
let nextStart = 0;
|
|
234
|
+
for (const page of value.pages) {
|
|
235
|
+
if (!isPagePointer(page, nextStart))
|
|
236
|
+
return null;
|
|
237
|
+
nextStart = page.end;
|
|
238
|
+
}
|
|
239
|
+
if (nextStart !== value.messageCount)
|
|
240
|
+
return null;
|
|
241
|
+
if (value.latestTurnCommit !== undefined && !isTurnCommit(value.latestTurnCommit))
|
|
242
|
+
return null;
|
|
243
|
+
if (value.latestPlanTurnCommit !== undefined && !isTurnCommit(value.latestPlanTurnCommit)) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
return deepFreeze(value);
|
|
247
|
+
}
|
|
248
|
+
function readPage(rootDir, threadId, pointer) {
|
|
249
|
+
if ((0, path_1.basename)(pointer.file) !== pointer.file)
|
|
250
|
+
throw indexCorrupt('Transcript page path escaped.');
|
|
251
|
+
const page = readStoredPage((0, path_1.join)(pagesDir(rootDir, threadId), pointer.file), threadId);
|
|
252
|
+
if (!page ||
|
|
253
|
+
page.start !== pointer.start ||
|
|
254
|
+
page.end !== pointer.end ||
|
|
255
|
+
page.digest !== pointer.digest) {
|
|
256
|
+
throw indexCorrupt('Transcript page failed its manifest binding.');
|
|
257
|
+
}
|
|
258
|
+
return page;
|
|
259
|
+
}
|
|
260
|
+
function readStoredPage(path, threadId) {
|
|
261
|
+
const value = readRegularJson(path);
|
|
262
|
+
if (!isRecord(value))
|
|
263
|
+
return null;
|
|
264
|
+
const { digest: _digest, ...content } = value;
|
|
265
|
+
void _digest;
|
|
266
|
+
if (value.version !== 1 ||
|
|
267
|
+
value.threadId !== threadId ||
|
|
268
|
+
!nonNegativeSafeInteger(value.start) ||
|
|
269
|
+
!nonNegativeSafeInteger(value.end) ||
|
|
270
|
+
value.end <= value.start ||
|
|
271
|
+
!Array.isArray(value.items) ||
|
|
272
|
+
value.items.length !== value.end - value.start ||
|
|
273
|
+
value.items.length > TRANSCRIPT_PAGE_ITEMS ||
|
|
274
|
+
value.items.some(item => !isTranscriptMessage(item)) ||
|
|
275
|
+
typeof value.digest !== 'string' ||
|
|
276
|
+
(0, canonical_1.digestRuntimeValue)(content) !== value.digest) {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
return deepFreeze(value);
|
|
280
|
+
}
|
|
281
|
+
function manifestMatchesHead(manifest, head) {
|
|
282
|
+
return (manifest.cursor === head.cursor &&
|
|
283
|
+
manifest.projectionDigest === head.projectionDigest &&
|
|
284
|
+
manifest.lastEventTimestamp === head.lastEventTimestamp &&
|
|
285
|
+
manifest.lastRecordHash === head.lastRecordHash &&
|
|
286
|
+
sameLogIdentity(manifest.log, head.log));
|
|
287
|
+
}
|
|
288
|
+
function encodeCursor(manifest, end) {
|
|
289
|
+
return Buffer.from((0, canonical_1.canonicalRuntimeJson)({
|
|
290
|
+
version: 1,
|
|
291
|
+
kind: 'thread-transcript',
|
|
292
|
+
threadId: manifest.threadId,
|
|
293
|
+
revision: manifest.digest,
|
|
294
|
+
end,
|
|
295
|
+
})).toString('base64url');
|
|
296
|
+
}
|
|
297
|
+
function decodeCursor(cursor, manifest) {
|
|
298
|
+
if (!cursor || cursor.length > 1024)
|
|
299
|
+
throw cursorInvalid();
|
|
300
|
+
let value;
|
|
301
|
+
try {
|
|
302
|
+
value = JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'));
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
throw cursorInvalid();
|
|
306
|
+
}
|
|
307
|
+
if (!isRecord(value) ||
|
|
308
|
+
value.version !== 1 ||
|
|
309
|
+
value.kind !== 'thread-transcript' ||
|
|
310
|
+
value.threadId !== manifest.threadId ||
|
|
311
|
+
!nonNegativeSafeInteger(value.end) ||
|
|
312
|
+
value.end > manifest.messageCount ||
|
|
313
|
+
typeof value.revision !== 'string') {
|
|
314
|
+
throw cursorInvalid();
|
|
315
|
+
}
|
|
316
|
+
if (value.revision !== manifest.digest) {
|
|
317
|
+
throw new ThreadSessionIndexError('ORION_THREAD_SESSION_CURSOR_STALE', 'Transcript changed after this page cursor was issued.');
|
|
318
|
+
}
|
|
319
|
+
return value.end;
|
|
320
|
+
}
|
|
321
|
+
function parseLegacyTranscriptReceipt(receipt) {
|
|
322
|
+
if (!receipt)
|
|
323
|
+
return undefined;
|
|
324
|
+
let parsed;
|
|
325
|
+
try {
|
|
326
|
+
parsed = JSON.parse(receipt);
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
if (!isRecord(parsed) || !isRecord(parsed.legacyRecord))
|
|
332
|
+
return undefined;
|
|
333
|
+
const record = parsed.legacyRecord;
|
|
334
|
+
if (!isMessageRole(record.role) || typeof record.content !== 'string')
|
|
335
|
+
return undefined;
|
|
336
|
+
if (!Number.isFinite(record.timestamp))
|
|
337
|
+
return undefined;
|
|
338
|
+
const toolCalls = parseToolCalls(record.tool_calls);
|
|
339
|
+
const appliedSkills = Array.isArray(record.appliedSkills)
|
|
340
|
+
? record.appliedSkills.filter((value) => typeof value === 'string')
|
|
341
|
+
: undefined;
|
|
342
|
+
return {
|
|
343
|
+
role: record.role,
|
|
344
|
+
content: record.content,
|
|
345
|
+
timestamp: record.timestamp,
|
|
346
|
+
...(typeof record.modelVisibleContent === 'string'
|
|
347
|
+
? { modelVisibleContent: record.modelVisibleContent }
|
|
348
|
+
: {}),
|
|
349
|
+
...(typeof record.toolCallId === 'string' ? { toolCallId: record.toolCallId } : {}),
|
|
350
|
+
...(toolCalls ? { tool_calls: toolCalls } : {}),
|
|
351
|
+
...(appliedSkills ? { appliedSkills } : {}),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function parseToolCalls(value) {
|
|
355
|
+
if (value === undefined || !Array.isArray(value))
|
|
356
|
+
return undefined;
|
|
357
|
+
const result = [];
|
|
358
|
+
for (const item of value) {
|
|
359
|
+
if (!isRecord(item) ||
|
|
360
|
+
typeof item.id !== 'string' ||
|
|
361
|
+
item.type !== 'function' ||
|
|
362
|
+
!isRecord(item.function) ||
|
|
363
|
+
typeof item.function.name !== 'string' ||
|
|
364
|
+
typeof item.function.arguments !== 'string') {
|
|
365
|
+
return undefined;
|
|
366
|
+
}
|
|
367
|
+
result.push({
|
|
368
|
+
id: item.id,
|
|
369
|
+
type: 'function',
|
|
370
|
+
function: { name: item.function.name, arguments: item.function.arguments },
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
return result;
|
|
374
|
+
}
|
|
375
|
+
function isTranscriptMessage(value) {
|
|
376
|
+
if (!isRecord(value) ||
|
|
377
|
+
!isMessageRole(value.role) ||
|
|
378
|
+
typeof value.content !== 'string' ||
|
|
379
|
+
!nonNegativeSafeInteger(value.timestamp)) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
if (value.modelVisibleContent !== undefined && typeof value.modelVisibleContent !== 'string') {
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
if (value.toolCallId !== undefined && typeof value.toolCallId !== 'string')
|
|
386
|
+
return false;
|
|
387
|
+
if (value.appliedSkills !== undefined) {
|
|
388
|
+
if (!Array.isArray(value.appliedSkills) ||
|
|
389
|
+
value.appliedSkills.some(item => typeof item !== 'string')) {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return value.tool_calls === undefined || parseToolCalls(value.tool_calls) !== undefined;
|
|
394
|
+
}
|
|
395
|
+
function isPagePointer(value, expectedStart) {
|
|
396
|
+
return (isRecord(value) &&
|
|
397
|
+
value.start === expectedStart &&
|
|
398
|
+
nonNegativeSafeInteger(value.end) &&
|
|
399
|
+
value.end > expectedStart &&
|
|
400
|
+
value.end - expectedStart <= TRANSCRIPT_PAGE_ITEMS &&
|
|
401
|
+
typeof value.file === 'string' &&
|
|
402
|
+
(0, path_1.basename)(value.file) === value.file &&
|
|
403
|
+
isSha256(value.digest));
|
|
404
|
+
}
|
|
405
|
+
function isTurnCommit(value) {
|
|
406
|
+
return isRecord(value) && positiveSafeInteger(value.seq) && typeof value.receipt === 'string';
|
|
407
|
+
}
|
|
408
|
+
function isLogIdentity(value) {
|
|
409
|
+
return (isRecord(value) &&
|
|
410
|
+
nonNegativeSafeInteger(value.bytes) &&
|
|
411
|
+
['device', 'inode', 'mtimeNs', 'ctimeNs'].every(key => typeof value[key] === 'string' && /^\d+$/.test(value[key])));
|
|
412
|
+
}
|
|
413
|
+
function sameLogIdentity(left, right) {
|
|
414
|
+
return (left.bytes === right.bytes &&
|
|
415
|
+
left.device === right.device &&
|
|
416
|
+
left.inode === right.inode &&
|
|
417
|
+
left.mtimeNs === right.mtimeNs &&
|
|
418
|
+
left.ctimeNs === right.ctimeNs);
|
|
419
|
+
}
|
|
420
|
+
function turnCommitContainsPlan(receipt) {
|
|
421
|
+
try {
|
|
422
|
+
const parsed = JSON.parse(receipt);
|
|
423
|
+
return typeof parsed.planReceipt === 'string' && parsed.planReceipt.length > 0;
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function isItemTerminalEvent(event) {
|
|
430
|
+
return (event.payload.type === 'item.completed' ||
|
|
431
|
+
event.payload.type === 'item.failed' ||
|
|
432
|
+
event.payload.type === 'item.interrupted' ||
|
|
433
|
+
event.payload.type === 'item.indeterminate');
|
|
434
|
+
}
|
|
435
|
+
function isMessageRole(value) {
|
|
436
|
+
return value === 'system' || value === 'user' || value === 'assistant' || value === 'tool';
|
|
437
|
+
}
|
|
438
|
+
function readRegularJson(path) {
|
|
439
|
+
let fd;
|
|
440
|
+
try {
|
|
441
|
+
fd = (0, fs_1.openSync)(path, fs_1.constants.O_RDONLY | (typeof fs_1.constants.O_NOFOLLOW === 'number' ? fs_1.constants.O_NOFOLLOW : 0));
|
|
442
|
+
if (!(0, fs_1.fstatSync)(fd).isFile())
|
|
443
|
+
return undefined;
|
|
444
|
+
return JSON.parse((0, fs_1.readFileSync)(fd, 'utf8'));
|
|
445
|
+
}
|
|
446
|
+
catch {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
finally {
|
|
450
|
+
if (fd !== undefined)
|
|
451
|
+
(0, fs_1.closeSync)(fd);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
function manifestPath(rootDir, threadId) {
|
|
455
|
+
return (0, path_1.join)(rootDir, `${threadId}.session-index.v1.json`);
|
|
456
|
+
}
|
|
457
|
+
function pagesDir(rootDir, threadId) {
|
|
458
|
+
return (0, path_1.join)(rootDir, `${threadId}.transcript-pages.v1`);
|
|
459
|
+
}
|
|
460
|
+
function ensurePrivateDirectory(path) {
|
|
461
|
+
(0, fs_1.mkdirSync)(path, { recursive: true, mode: 0o700 });
|
|
462
|
+
}
|
|
463
|
+
function fsyncDirectory(path) {
|
|
464
|
+
let fd;
|
|
465
|
+
try {
|
|
466
|
+
fd = (0, fs_1.openSync)(path, 'r');
|
|
467
|
+
(0, fs_1.fsyncSync)(fd);
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
// Atomic rename + file fsync remains the portable minimum.
|
|
471
|
+
}
|
|
472
|
+
finally {
|
|
473
|
+
if (fd !== undefined)
|
|
474
|
+
(0, fs_1.closeSync)(fd);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
function positiveSafeInteger(value) {
|
|
478
|
+
return Number.isSafeInteger(value) && value > 0;
|
|
479
|
+
}
|
|
480
|
+
function nonNegativeSafeInteger(value) {
|
|
481
|
+
return Number.isSafeInteger(value) && value >= 0;
|
|
482
|
+
}
|
|
483
|
+
function isSha256(value) {
|
|
484
|
+
return typeof value === 'string' && /^[a-f0-9]{64}$/.test(value);
|
|
485
|
+
}
|
|
486
|
+
function cursorInvalid() {
|
|
487
|
+
return new ThreadSessionIndexError('ORION_THREAD_SESSION_CURSOR_INVALID', 'Transcript page cursor is invalid.');
|
|
488
|
+
}
|
|
489
|
+
function indexCorrupt(message) {
|
|
490
|
+
return new ThreadSessionIndexError('ORION_THREAD_SESSION_INDEX_CORRUPT', message);
|
|
491
|
+
}
|
|
492
|
+
function isRecord(value) {
|
|
493
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
494
|
+
}
|
|
495
|
+
function deepFreeze(value) {
|
|
496
|
+
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
497
|
+
Object.freeze(value);
|
|
498
|
+
for (const nested of Object.values(value))
|
|
499
|
+
deepFreeze(nested);
|
|
500
|
+
}
|
|
501
|
+
return value;
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=thread-session-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-session-index.js","sourceRoot":"","sources":["../../src/runtime/thread-session-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import type { Message } from '../services/llm';
|
|
2
2
|
import { type SessionHistoryRecoveryDiagnosticV1, type SessionHistoryResolvedSourceV1 } from './session-history-recovery';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
readonly timestamp: number;
|
|
7
|
-
readonly modelVisibleContent?: string;
|
|
8
|
-
readonly toolCallId?: string;
|
|
9
|
-
readonly tool_calls?: NonNullable<Message['tool_calls']>;
|
|
10
|
-
readonly appliedSkills?: readonly string[];
|
|
11
|
-
}
|
|
3
|
+
import { ThreadEventStore, type ThreadReadModelHeadV1 } from './thread-event-store';
|
|
4
|
+
import { type ThreadSessionTranscriptMessageV1, type ThreadSessionTurnCommitV1 } from './thread-session-index';
|
|
5
|
+
export type { ThreadSessionTranscriptMessageV1, ThreadSessionTurnCommitV1, } from './thread-session-index';
|
|
12
6
|
/** Metadata/transcript projection that never needs to decode model history. */
|
|
13
7
|
export interface ThreadSessionSummaryV1 {
|
|
14
8
|
readonly version: 1;
|
|
@@ -21,12 +15,65 @@ export interface ThreadSessionSummaryV1 {
|
|
|
21
15
|
readonly historySizeBytes: number;
|
|
22
16
|
readonly messageCount: number;
|
|
23
17
|
readonly transcriptMessages: readonly ThreadSessionTranscriptMessageV1[];
|
|
18
|
+
readonly readModel: {
|
|
19
|
+
readonly cutoverGeneration: number;
|
|
20
|
+
readonly lastRecordHash: string | null;
|
|
21
|
+
readonly log: ThreadReadModelHeadV1['log'];
|
|
22
|
+
};
|
|
24
23
|
}
|
|
25
24
|
/** Read-only compatibility view over the authoritative v2 Thread facts. */
|
|
26
25
|
export interface ThreadSessionViewV1 extends ThreadSessionSummaryV1 {
|
|
27
26
|
readonly modelHistory: readonly Message[];
|
|
28
27
|
readonly modelHistorySource: SessionHistoryResolvedSourceV1;
|
|
29
28
|
readonly diagnostics: readonly SessionHistoryRecoveryDiagnosticV1[];
|
|
29
|
+
readonly latestTurnCommit?: ThreadSessionTurnCommitV1;
|
|
30
|
+
readonly latestPlanTurnCommit?: ThreadSessionTurnCommitV1;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A verified, process-local hand-off from Session restore into the sole
|
|
34
|
+
* OrionRuntime owner. The mutable Store is intentionally not serialized or
|
|
35
|
+
* recursively frozen; the outer receipt binds it to the canonical project,
|
|
36
|
+
* Session, Thread and projection edge that were validated before the previous
|
|
37
|
+
* Runtime is torn down.
|
|
38
|
+
*/
|
|
39
|
+
export interface ThreadSessionRuntimeActivationV1 {
|
|
40
|
+
readonly version: 1;
|
|
41
|
+
readonly projectPath: string;
|
|
42
|
+
readonly sessionId: string;
|
|
43
|
+
readonly threadId: string;
|
|
44
|
+
readonly cursor: number;
|
|
45
|
+
readonly projectionDigest: string;
|
|
46
|
+
readonly cutoverGeneration: number;
|
|
47
|
+
readonly store: ThreadEventStore;
|
|
48
|
+
/** Cursor-bound view captured with the same Store; Web may reuse it once for baseline. */
|
|
49
|
+
readonly view?: ThreadSessionViewV1;
|
|
50
|
+
}
|
|
51
|
+
export interface OpenThreadSessionViewV1 {
|
|
52
|
+
readonly view: ThreadSessionViewV1;
|
|
53
|
+
readonly runtimeActivation: ThreadSessionRuntimeActivationV1;
|
|
54
|
+
}
|
|
55
|
+
export interface ThreadSessionSnapshotPageV1 {
|
|
56
|
+
readonly version: 1;
|
|
57
|
+
readonly sessionId: string;
|
|
58
|
+
readonly threadId: string;
|
|
59
|
+
readonly cursor: number;
|
|
60
|
+
readonly projectionDigest: string;
|
|
61
|
+
readonly startedAt: number;
|
|
62
|
+
readonly updatedAt: number;
|
|
63
|
+
readonly historySizeBytes: number;
|
|
64
|
+
readonly messageCount: number;
|
|
65
|
+
readonly transcript: {
|
|
66
|
+
readonly items: readonly ThreadSessionTranscriptMessageV1[];
|
|
67
|
+
readonly offset: number;
|
|
68
|
+
readonly nextCursor: string | null;
|
|
69
|
+
};
|
|
70
|
+
readonly readModel: {
|
|
71
|
+
readonly cutoverGeneration: number;
|
|
72
|
+
readonly lastRecordHash: string | null;
|
|
73
|
+
readonly log: ThreadReadModelHeadV1['log'];
|
|
74
|
+
};
|
|
75
|
+
readonly latestTurnCommit?: ThreadSessionTurnCommitV1;
|
|
76
|
+
readonly latestPlanTurnCommit?: ThreadSessionTurnCommitV1;
|
|
30
77
|
}
|
|
31
78
|
export declare class ThreadSessionViewError extends Error {
|
|
32
79
|
readonly code = "ORION_THREAD_SESSION_VIEW_INVALID";
|
|
@@ -40,6 +87,20 @@ export declare class ThreadSessionViewError extends Error {
|
|
|
40
87
|
* identity, replay, or projection data still fails closed.
|
|
41
88
|
*/
|
|
42
89
|
export declare function loadThreadSessionViewV1(projectPath: string, sessionId: string): ThreadSessionViewV1 | undefined;
|
|
90
|
+
/** Capture the restore view and retain its already-verified Store for Runtime activation. */
|
|
91
|
+
export declare function openThreadSessionViewV1(projectPath: string, sessionId: string): OpenThreadSessionViewV1 | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Open only the verified Runtime hand-off. This is used after an atomic legacy
|
|
94
|
+
* cutover, where the provider history was already captured from the legacy
|
|
95
|
+
* source and rebuilding the complete transcript view would be duplicate work.
|
|
96
|
+
*/
|
|
97
|
+
export declare function openThreadSessionRuntimeActivationV1(projectPath: string, sessionId: string): ThreadSessionRuntimeActivationV1 | undefined;
|
|
43
98
|
/** Load list/picker metadata without allowing model-history damage to fan out. */
|
|
44
99
|
export declare function loadThreadSessionSummaryV1(projectPath: string, sessionId: string): ThreadSessionSummaryV1 | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Load one revision-bound transcript page without materializing the complete
|
|
102
|
+
* projection/history. A missing or stale derived index is rebuilt once from
|
|
103
|
+
* the authoritative Thread and then reused by later processes.
|
|
104
|
+
*/
|
|
105
|
+
export declare function loadThreadSessionSnapshotPageV1(projectPath: string, sessionId: string, cursor?: string, pageSize?: number): ThreadSessionSnapshotPageV1 | undefined;
|
|
45
106
|
//# sourceMappingURL=thread-session-view.d.ts.map
|