@openclawbrain/openclaw 0.3.5 → 0.4.0

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.
Files changed (60) hide show
  1. package/README.md +23 -175
  2. package/dist/extension/index.js +3 -2
  3. package/dist/extension/index.js.map +1 -1
  4. package/dist/extension/runtime-guard.js +1 -1
  5. package/dist/extension/runtime-guard.js.map +1 -1
  6. package/dist/src/attachment-truth.d.ts +32 -22
  7. package/dist/src/attachment-truth.js +338 -181
  8. package/dist/src/index.d.ts +75 -1712
  9. package/dist/src/index.js +7 -6875
  10. package/dist/src/runtime-core.js +574 -0
  11. package/extension/index.ts +3 -2
  12. package/extension/runtime-guard.ts +1 -1
  13. package/openclaw.plugin.json +11 -0
  14. package/package.json +24 -15
  15. package/dist/src/attachment-truth.js.map +0 -1
  16. package/dist/src/cli.d.ts +0 -170
  17. package/dist/src/cli.js +0 -5523
  18. package/dist/src/cli.js.map +0 -1
  19. package/dist/src/daemon.d.ts +0 -70
  20. package/dist/src/daemon.js +0 -955
  21. package/dist/src/daemon.js.map +0 -1
  22. package/dist/src/import-export.d.ts +0 -36
  23. package/dist/src/import-export.js +0 -171
  24. package/dist/src/import-export.js.map +0 -1
  25. package/dist/src/index.js.map +0 -1
  26. package/dist/src/learning-spine.d.ts +0 -50
  27. package/dist/src/learning-spine.js.map +0 -1
  28. package/dist/src/local-session-passive-learning.d.ts +0 -61
  29. package/dist/src/local-session-passive-learning.js +0 -454
  30. package/dist/src/local-session-passive-learning.js.map +0 -1
  31. package/dist/src/ollama-client.d.ts +0 -46
  32. package/dist/src/ollama-client.js +0 -231
  33. package/dist/src/ollama-client.js.map +0 -1
  34. package/dist/src/openclaw-home-layout.d.ts +0 -17
  35. package/dist/src/openclaw-home-layout.js +0 -182
  36. package/dist/src/openclaw-home-layout.js.map +0 -1
  37. package/dist/src/openclaw-hook-truth.d.ts +0 -25
  38. package/dist/src/openclaw-hook-truth.js +0 -154
  39. package/dist/src/openclaw-hook-truth.js.map +0 -1
  40. package/dist/src/provider-config.d.ts +0 -64
  41. package/dist/src/provider-config.js +0 -306
  42. package/dist/src/provider-config.js.map +0 -1
  43. package/dist/src/resolve-activation-root.d.ts +0 -27
  44. package/dist/src/resolve-activation-root.js +0 -185
  45. package/dist/src/resolve-activation-root.js.map +0 -1
  46. package/dist/src/semantic-metadata.d.ts +0 -5
  47. package/dist/src/semantic-metadata.js +0 -70
  48. package/dist/src/semantic-metadata.js.map +0 -1
  49. package/dist/src/session-store.d.ts +0 -168
  50. package/dist/src/session-store.js +0 -250
  51. package/dist/src/session-store.js.map +0 -1
  52. package/dist/src/session-tail.d.ts +0 -73
  53. package/dist/src/session-tail.js +0 -602
  54. package/dist/src/session-tail.js.map +0 -1
  55. package/dist/src/shadow-extension-proof.d.ts +0 -40
  56. package/dist/src/shadow-extension-proof.js +0 -218
  57. package/dist/src/shadow-extension-proof.js.map +0 -1
  58. package/dist/src/teacher-labeler.d.ts +0 -50
  59. package/dist/src/teacher-labeler.js +0 -424
  60. package/dist/src/teacher-labeler.js.map +0 -1
@@ -1,185 +0,0 @@
1
- /**
2
- * Auto-detect the OpenClawBrain activation root.
3
- *
4
- * Resolution order:
5
- * 1. Explicit `--activation-root <path>` (passed as `explicit` arg)
6
- * 2. A selected OpenClaw home (`openclawHome` option or OPENCLAW_HOME env)
7
- * 3. Unpinned host auto-detect from ~/.openclawbrain/activation and installed hooks
8
- * 4. Refuse clearly if host-local signals disagree or are unresolved
9
- * 5. Fail with a clear error message
10
- *
11
- * Exported for use by CLI commands and other agents' code.
12
- */
13
- import { existsSync, readFileSync } from "node:fs";
14
- import path from "node:path";
15
- import { describeOpenClawHomeInspection, discoverOpenClawHomes, formatOpenClawHomeLayout, inspectOpenClawHome } from "./openclaw-home-layout.js";
16
- function getHomeDir() {
17
- return process.env.HOME ?? process.env.USERPROFILE ?? "~";
18
- }
19
- function normalizeOptionalString(value) {
20
- if (typeof value !== "string") {
21
- return null;
22
- }
23
- const trimmed = value.trim();
24
- return trimmed.length > 0 ? trimmed : null;
25
- }
26
- function buildInstallGuidance() {
27
- return "Run: openclawbrain install --openclaw-home <path>";
28
- }
29
- function buildProfilePinningGuidance() {
30
- return "Pass --activation-root <path> to pin the brain directly, or --openclaw-home <path> (or OPENCLAW_HOME) to select one installed OpenClaw home.";
31
- }
32
- function extractActivationRootFromExtension(filePath) {
33
- try {
34
- const content = readFileSync(filePath, "utf8");
35
- const match = content.match(/const\s+ACTIVATION_ROOT\s*=\s*["'`]([^"'`]+)["'`]/) ??
36
- content.match(/activationRoot:\s*["'`]([^"'`]+)["'`]/);
37
- if (!match || !match[1]) {
38
- return {
39
- activationRoot: null,
40
- diagnostic: `installed extension ${filePath} does not declare a hardcoded activation root`
41
- };
42
- }
43
- const candidate = match[1].trim();
44
- if (candidate === "__ACTIVATION_ROOT__" ||
45
- candidate === "__ACTIVATION_" + "ROOT__") {
46
- return {
47
- activationRoot: null,
48
- diagnostic: `installed extension ${filePath} still contains the ACTIVATION_ROOT placeholder`
49
- };
50
- }
51
- const resolvedCandidate = path.resolve(candidate);
52
- if (!existsSync(resolvedCandidate)) {
53
- return {
54
- activationRoot: null,
55
- diagnostic: `installed extension ${filePath} points at missing activation root ${resolvedCandidate}`
56
- };
57
- }
58
- return {
59
- activationRoot: resolvedCandidate,
60
- diagnostic: null
61
- };
62
- }
63
- catch {
64
- return {
65
- activationRoot: null,
66
- diagnostic: `installed extension ${filePath} exists but could not be read`
67
- };
68
- }
69
- }
70
- function readActivationRootFromOpenClawHome(openclawHome) {
71
- const extensionIndex = path.join(path.resolve(openclawHome), "extensions", "openclawbrain", "index.ts");
72
- if (!existsSync(extensionIndex)) {
73
- return null;
74
- }
75
- return extractActivationRootFromExtension(extensionIndex);
76
- }
77
- /**
78
- * Scan discoverable ~/.openclaw* directories for installed hooks and record
79
- * either the pinned activation root or the reason the hook is unresolved.
80
- */
81
- function scanInstalledProfileActivationRoots() {
82
- const probes = [];
83
- for (const inspection of discoverOpenClawHomes(path.resolve(getHomeDir()))) {
84
- const openclawHome = inspection.openclawHome;
85
- const extensionIndex = path.join(openclawHome, "extensions", "openclawbrain", "index.ts");
86
- if (!existsSync(extensionIndex)) {
87
- continue;
88
- }
89
- const found = extractActivationRootFromExtension(extensionIndex);
90
- probes.push({
91
- openclawHome,
92
- extensionIndex,
93
- activationRoot: found.activationRoot,
94
- diagnostic: found.diagnostic,
95
- inspection
96
- });
97
- }
98
- return probes.sort((left, right) => left.openclawHome.localeCompare(right.openclawHome));
99
- }
100
- function buildUnpinnedResolutionRefusal(input) {
101
- const details = [];
102
- const { defaultActivationRoot, installedProfileProbes } = input;
103
- if (defaultActivationRoot !== null) {
104
- details.push(` - default HOME root -> ${defaultActivationRoot}`);
105
- }
106
- for (const probe of installedProfileProbes) {
107
- const inspectionSummary = describeOpenClawHomeInspection(probe.inspection);
108
- if (probe.activationRoot !== null) {
109
- details.push(` - ${probe.openclawHome} [${inspectionSummary}] -> ${probe.activationRoot}`);
110
- continue;
111
- }
112
- details.push(` - ${probe.openclawHome} [${inspectionSummary}] -> unresolved: ${probe.diagnostic ?? `installed extension ${probe.extensionIndex} is unresolved`}`);
113
- }
114
- return [
115
- "Refusing to auto-select an activation root from unpinned host state.",
116
- "Detected targets:",
117
- ...details,
118
- buildProfilePinningGuidance(),
119
- buildInstallGuidance()
120
- ].join("\n");
121
- }
122
- /**
123
- * Resolve the activation root path through the detection chain.
124
- *
125
- * @returns Absolute path to the activation root.
126
- * @throws If no activation root can be found (unless `quiet` is true).
127
- */
128
- export function resolveActivationRoot(options = {}) {
129
- const { explicit, openclawHome, quiet } = options;
130
- // 1. Explicit flag
131
- if (typeof explicit === "string" && explicit.trim().length > 0) {
132
- return path.resolve(explicit);
133
- }
134
- const selectedOpenClawHome = normalizeOptionalString(openclawHome) ?? normalizeOptionalString(process.env.OPENCLAW_HOME);
135
- // 2. A selected OpenClaw home is authoritative on many-profile hosts.
136
- if (selectedOpenClawHome !== null) {
137
- const selectedInspection = inspectOpenClawHome(selectedOpenClawHome);
138
- const selectedActivationRoot = readActivationRootFromOpenClawHome(selectedOpenClawHome);
139
- const selectedActivationRootPath = selectedActivationRoot?.activationRoot ?? null;
140
- if (selectedActivationRootPath !== null) {
141
- return path.resolve(selectedActivationRootPath);
142
- }
143
- if (quiet) {
144
- return "";
145
- }
146
- const selectedActivationRootDiagnostic = selectedActivationRoot?.diagnostic ?? null;
147
- if (selectedActivationRootDiagnostic !== null) {
148
- throw new Error(`OpenClawBrain extension found for OpenClaw home ${path.resolve(selectedOpenClawHome)} (${formatOpenClawHomeLayout(selectedInspection.layout)}), but activation root is unresolved: ${selectedActivationRootDiagnostic}. ${buildInstallGuidance()}`);
149
- }
150
- throw new Error(`No brain found for OpenClaw home ${path.resolve(selectedOpenClawHome)} (${formatOpenClawHomeLayout(selectedInspection.layout)}). ${buildInstallGuidance()}`);
151
- }
152
- // 3. Default location: ~/.openclawbrain/activation
153
- const defaultPath = path.join(getHomeDir(), ".openclawbrain", "activation");
154
- const resolvedDefaultPath = existsSync(defaultPath) ? path.resolve(defaultPath) : null;
155
- // 4. Scan installed hooks under HOME
156
- const installedProfileProbes = scanInstalledProfileActivationRoots();
157
- const resolvedCandidateRoots = new Set();
158
- const hasUnresolvedInstalledProfiles = installedProfileProbes.some((probe) => probe.activationRoot === null);
159
- if (resolvedDefaultPath !== null) {
160
- resolvedCandidateRoots.add(resolvedDefaultPath);
161
- }
162
- for (const probe of installedProfileProbes) {
163
- if (probe.activationRoot !== null) {
164
- resolvedCandidateRoots.add(path.resolve(probe.activationRoot));
165
- }
166
- }
167
- if (resolvedCandidateRoots.size === 1 && !hasUnresolvedInstalledProfiles) {
168
- return [...resolvedCandidateRoots][0];
169
- }
170
- if ((resolvedCandidateRoots.size > 1 || hasUnresolvedInstalledProfiles) && installedProfileProbes.length > 0) {
171
- if (quiet) {
172
- return "";
173
- }
174
- throw new Error(buildUnpinnedResolutionRefusal({
175
- defaultActivationRoot: resolvedDefaultPath,
176
- installedProfileProbes
177
- }));
178
- }
179
- // 5. Nothing found
180
- if (quiet) {
181
- return "";
182
- }
183
- throw new Error(`No brain found. ${buildInstallGuidance()}`);
184
- }
185
- //# sourceMappingURL=resolve-activation-root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-activation-root.js","sourceRoot":"","sources":["../../src/resolve-activation-root.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { EventSemanticMetadataV1, EventSourceKindV1, FeedbackEventKind, InteractionEventKind } from "@openclawbrain/contracts";
2
- export declare function buildInteractionSemanticMetadata(sourceKind: EventSourceKindV1, kind: InteractionEventKind): EventSemanticMetadataV1;
3
- export declare function buildAssistantMessageSemanticMetadata(): EventSemanticMetadataV1;
4
- export declare function isInstructionalScaffoldingContent(kind: FeedbackEventKind, content: string | undefined): boolean;
5
- export declare function buildFeedbackSemanticMetadata(sourceKind: EventSourceKindV1, kind: FeedbackEventKind, content?: string): EventSemanticMetadataV1;
@@ -1,70 +0,0 @@
1
- const QUESTIONNAIRE_KEYWORD_PATTERN = /\b(?:questionnaire|question list|list of questions|discovery questions|intake questions)\b/u;
2
- const QUESTION_ROUTING_PATTERNS = [
3
- /\b(?:send|give|pass|forward|route)\b.{0,40}\b(?:these|the following|this)\b.{0,24}\b(?:questions?|questionnaire|question list|checklist)\b/u,
4
- /\b(?:ask|walk|take|run)\b.{0,32}\b(?:through|over)\b.{0,24}\b(?:these|the following|this)\b.{0,24}\b(?:questions?|questionnaire|checklist)\b/u,
5
- /\b(?:ask|send)\b.{0,16}\beagle\b.{0,32}\b(?:questions?|questionnaire)\b/u,
6
- /\bone question at a time\b/u
7
- ];
8
- const NUMBERED_QUESTION_PATTERN = /(?:^|\n|\s)(?:\d+[.)]|[-*])\s*(?:what|when|why|how|which|who|can|could|should|would|is|are|do|does|did)\b/gmu;
9
- const QUESTION_SCAFFOLDING_CONTEXT_PATTERN = /\b(?:question|questions|ask|before answering|before you answer|intake|discovery)\b/u;
10
- function normalizeSemanticContent(value) {
11
- return (value ?? "").replace(/\s+/gu, " ").trim().toLowerCase();
12
- }
13
- function interactionSemanticType(kind) {
14
- switch (kind) {
15
- case "memory_compiled":
16
- return "observability_residue";
17
- case "message_delivered":
18
- return "delivery_residue";
19
- case "operator_override":
20
- return "control_signal";
21
- }
22
- }
23
- function interactionDiagnosticIntent(kind) {
24
- switch (kind) {
25
- case "memory_compiled":
26
- return "compile_observability";
27
- case "message_delivered":
28
- return "delivery_observability";
29
- case "operator_override":
30
- return undefined;
31
- }
32
- }
33
- export function buildInteractionSemanticMetadata(sourceKind, kind) {
34
- const diagnosticIntent = interactionDiagnosticIntent(kind);
35
- return {
36
- semanticType: interactionSemanticType(kind),
37
- sourceKind,
38
- ...(diagnosticIntent === undefined ? {} : { diagnosticIntent })
39
- };
40
- }
41
- export function buildAssistantMessageSemanticMetadata() {
42
- return {
43
- semanticType: "memory_candidate",
44
- sourceKind: "session_store"
45
- };
46
- }
47
- export function isInstructionalScaffoldingContent(kind, content) {
48
- if (kind !== "teaching") {
49
- return false;
50
- }
51
- const normalized = normalizeSemanticContent(content);
52
- if (normalized.length === 0) {
53
- return false;
54
- }
55
- if (QUESTIONNAIRE_KEYWORD_PATTERN.test(normalized)) {
56
- return true;
57
- }
58
- if (QUESTION_ROUTING_PATTERNS.some((pattern) => pattern.test(normalized))) {
59
- return true;
60
- }
61
- const numberedQuestions = [...normalized.matchAll(NUMBERED_QUESTION_PATTERN)].length;
62
- return numberedQuestions >= 2 && QUESTION_SCAFFOLDING_CONTEXT_PATTERN.test(normalized);
63
- }
64
- export function buildFeedbackSemanticMetadata(sourceKind, kind, content) {
65
- return {
66
- semanticType: isInstructionalScaffoldingContent(kind, content) ? "instructional_scaffolding" : "teacher_signal",
67
- sourceKind
68
- };
69
- }
70
- //# sourceMappingURL=semantic-metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-metadata.js","sourceRoot":"","sources":["../../src/semantic-metadata.ts"],"names":[],"mappings":"AAQA,MAAM,6BAA6B,GAAG,6FAA6F,CAAC;AACpI,MAAM,yBAAyB,GAAG;IAChC,6IAA6I;IAC7I,+IAA+I;IAC/I,0EAA0E;IAC1E,6BAA6B;CACrB,CAAC;AACX,MAAM,yBAAyB,GAAG,8GAA8G,CAAC;AACjJ,MAAM,oCAAoC,GAAG,qFAAqF,CAAC;AAEnI,SAAS,wBAAwB,CAAC,KAAyB;IACzD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,uBAAuB,CAAC,IAA0B;IACzD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB;YACpB,OAAO,uBAAuB,CAAC;QACjC,KAAK,mBAAmB;YACtB,OAAO,kBAAkB,CAAC;QAC5B,KAAK,mBAAmB;YACtB,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,IAA0B;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB;YACpB,OAAO,uBAAuB,CAAC;QACjC,KAAK,mBAAmB;YACtB,OAAO,wBAAwB,CAAC;QAClC,KAAK,mBAAmB;YACtB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAA6B,EAC7B,IAA0B;IAE1B,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAE3D,OAAO;QACL,YAAY,EAAE,uBAAuB,CAAC,IAAI,CAAC;QAC3C,UAAU;QACV,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC;IACnD,OAAO;QACL,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,eAAe;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAuB,EAAE,OAA2B;IACpG,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC;IACrF,OAAO,iBAAiB,IAAI,CAAC,IAAI,oCAAoC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,UAA6B,EAC7B,IAAuB,EACvB,OAAgB;IAEhB,OAAO;QACL,YAAY,EAAE,iCAAiC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,gBAAgB;QAC/G,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1,168 +0,0 @@
1
- export interface OpenClawInjectedWorkspaceFile {
2
- name: string;
3
- path: string;
4
- missing: boolean;
5
- rawChars: number;
6
- injectedChars: number;
7
- truncated: boolean;
8
- }
9
- export interface OpenClawToolSurfaceEntry {
10
- name: string;
11
- summaryChars: number;
12
- schemaChars: number;
13
- propertiesCount: number;
14
- }
15
- export interface OpenClawSystemPromptReport {
16
- source?: string;
17
- generatedAt?: number;
18
- sessionId?: string;
19
- sessionKey?: string;
20
- provider?: string;
21
- model?: string;
22
- workspaceDir?: string;
23
- injectedWorkspaceFiles?: readonly OpenClawInjectedWorkspaceFile[];
24
- tools?: {
25
- listChars?: number;
26
- schemaChars?: number;
27
- entries?: readonly OpenClawToolSurfaceEntry[];
28
- [key: string]: unknown;
29
- };
30
- [key: string]: unknown;
31
- }
32
- export interface OpenClawSessionIndexEntry {
33
- sessionId: string;
34
- updatedAt: number;
35
- sessionFile?: string;
36
- model?: string;
37
- modelProvider?: string;
38
- chatType?: string;
39
- origin?: Record<string, unknown>;
40
- deliveryContext?: Record<string, unknown>;
41
- systemPromptReport?: OpenClawSystemPromptReport;
42
- [key: string]: unknown;
43
- }
44
- export type OpenClawSessionIndex = Record<string, OpenClawSessionIndexEntry>;
45
- export interface OpenClawSessionTextPart {
46
- type: "text";
47
- text: string;
48
- textSignature?: string;
49
- [key: string]: unknown;
50
- }
51
- export interface OpenClawSessionThinkingPart {
52
- type: "thinking";
53
- thinking: string;
54
- thinkingSignature?: string;
55
- [key: string]: unknown;
56
- }
57
- export interface OpenClawSessionToolCallPart {
58
- type: "toolCall";
59
- id: string;
60
- name: string;
61
- arguments: Record<string, unknown>;
62
- partialJson?: string;
63
- [key: string]: unknown;
64
- }
65
- export interface OpenClawSessionUnknownContentPart {
66
- type: string;
67
- [key: string]: unknown;
68
- }
69
- export type OpenClawSessionContentPart = OpenClawSessionTextPart | OpenClawSessionThinkingPart | OpenClawSessionToolCallPart | OpenClawSessionUnknownContentPart;
70
- export interface OpenClawSessionMessagePayload {
71
- role: string;
72
- content: readonly OpenClawSessionContentPart[];
73
- timestamp: number;
74
- toolCallId?: string;
75
- toolName?: string;
76
- details?: Record<string, unknown>;
77
- isError?: boolean;
78
- api?: string;
79
- provider?: string;
80
- model?: string;
81
- usage?: Record<string, unknown>;
82
- stopReason?: string;
83
- [key: string]: unknown;
84
- }
85
- export interface OpenClawSessionHeaderRecord {
86
- type: "session";
87
- version: number;
88
- id: string;
89
- timestamp: string;
90
- cwd: string;
91
- }
92
- export interface OpenClawSessionModelChangeRecord {
93
- type: "model_change";
94
- id: string;
95
- parentId: string | null;
96
- timestamp: string;
97
- provider: string;
98
- modelId: string;
99
- }
100
- export interface OpenClawSessionThinkingLevelChangeRecord {
101
- type: "thinking_level_change";
102
- id: string;
103
- parentId: string | null;
104
- timestamp: string;
105
- thinkingLevel: string;
106
- }
107
- export interface OpenClawSessionCustomRecord {
108
- type: "custom";
109
- customType: string;
110
- data: Record<string, unknown>;
111
- id: string;
112
- parentId: string | null;
113
- timestamp: string;
114
- }
115
- export interface OpenClawSessionMessageRecord {
116
- type: "message";
117
- id: string;
118
- parentId: string | null;
119
- timestamp: string;
120
- message: OpenClawSessionMessagePayload;
121
- }
122
- export type OpenClawSessionRecord = OpenClawSessionHeaderRecord | OpenClawSessionModelChangeRecord | OpenClawSessionThinkingLevelChangeRecord | OpenClawSessionCustomRecord | OpenClawSessionMessageRecord;
123
- export interface OpenClawAcpStreamRecord {
124
- ts: string;
125
- epochMs: number;
126
- runId: string;
127
- parentSessionKey: string;
128
- childSessionKey: string;
129
- agentId: string;
130
- kind: string;
131
- contextKey?: string;
132
- text?: string;
133
- delta?: string;
134
- phase?: string;
135
- data?: Record<string, unknown>;
136
- [key: string]: unknown;
137
- }
138
- export interface OpenClawMainSessionStoreV1 {
139
- profileRoot: string;
140
- agentId: "main";
141
- sessionsDir: string;
142
- indexPath: string;
143
- }
144
- /**
145
- * Generic session store that can represent any agent (main, subagent, ACP, etc.).
146
- */
147
- export interface OpenClawSessionStoreV1 {
148
- profileRoot: string;
149
- agentId: string;
150
- sessionsDir: string;
151
- indexPath: string;
152
- }
153
- export declare function loadOpenClawSessionIndex(indexFilePath: string): OpenClawSessionIndex;
154
- export declare function readOpenClawSessionFile(sessionFilePath: string): OpenClawSessionRecord[];
155
- export declare function readOpenClawAcpStreamFile(streamFilePath: string): OpenClawAcpStreamRecord[];
156
- export declare function discoverOpenClawMainSessionStores(options?: {
157
- homeDir?: string;
158
- profileRoots?: readonly string[];
159
- }): OpenClawMainSessionStoreV1[];
160
- /**
161
- * Discover session stores for ALL agents under each profile root.
162
- * Scans every directory under `agents/` (not just `agents/main/`),
163
- * finding subagent, ACP, and any other agent session stores.
164
- */
165
- export declare function discoverOpenClawSessionStores(options?: {
166
- homeDir?: string;
167
- profileRoots?: readonly string[];
168
- }): OpenClawSessionStoreV1[];