@openclawbrain/cli 0.4.13 → 0.4.15
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/README.md +17 -11
- package/dist/extension/index.js +29 -3
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/runtime-guard.d.ts +8 -0
- package/dist/extension/runtime-guard.js +100 -12
- package/dist/extension/runtime-guard.js.map +1 -1
- package/dist/src/attachment-truth.d.ts +32 -22
- package/dist/src/attachment-truth.js +338 -186
- package/dist/src/cli.d.ts +13 -1
- package/dist/src/cli.js +595 -113
- package/dist/src/index.d.ts +242 -3
- package/dist/src/index.js +1029 -38
- package/dist/src/install-converge.js +217 -0
- package/dist/src/learning-spine.d.ts +2 -1
- package/dist/src/learning-spine.js +49 -19
- package/dist/src/local-learner.d.ts +30 -0
- package/dist/src/local-learner.js +298 -179
- package/dist/src/local-session-passive-learning.js +28 -2
- package/dist/src/materialization-embedder.js +11 -0
- package/dist/src/openclaw-hook-truth.d.ts +6 -0
- package/dist/src/openclaw-hook-truth.js +27 -0
- package/dist/src/proof-command.js +301 -42
- package/dist/src/runtime-core.js +658 -0
- package/dist/src/status-learning-path.js +32 -2
- package/dist/src/teacher-decision-match.js +277 -0
- package/dist/src/teacher-labeler.js +4 -30
- package/dist/src/traced-learning-bridge.js +17 -1
- package/extension/index.ts +35 -4
- package/extension/runtime-guard.ts +92 -14
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -2,26 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Operator CLI for OpenClawBrain. Use it with `@openclawbrain/openclaw`.
|
|
4
4
|
|
|
5
|
-
The public
|
|
5
|
+
The public front door is one command pinned to one OpenClaw home:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
9
|
-
npx @openclawbrain/cli install --openclaw-home ~/.openclaw
|
|
8
|
+
openclawbrain install --openclaw-home ~/.openclaw
|
|
10
9
|
openclaw gateway restart
|
|
11
|
-
|
|
12
|
-
npx @openclawbrain/cli proof --openclaw-home ~/.openclaw --skip-install --skip-restart
|
|
10
|
+
openclawbrain status --openclaw-home ~/.openclaw --detailed
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
`install` is the public front door for the selected home. It writes or repairs the hook for that home and pins the activation root the runtime serves from. `status --detailed` is the quick verify surface.
|
|
14
|
+
|
|
15
|
+
When you need durable operator evidence today, run:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
openclawbrain proof --openclaw-home ~/.openclaw
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The intended canonical lane is the same install command with optional `--proof`. Until that lands cleanly across the operator surfaces, proof stays a separate follow-up command. `proof` writes `summary.md`, `steps.json`, `verdict.json`, raw step logs, and proof pointers under one bundle directory.
|
|
16
22
|
|
|
17
23
|
## Common commands
|
|
18
24
|
|
|
19
25
|
```bash
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
openclawbrain rollback --openclaw-home ~/.openclaw --dry-run
|
|
27
|
+
openclawbrain detach --openclaw-home ~/.openclaw
|
|
28
|
+
openclawbrain uninstall --openclaw-home ~/.openclaw --keep-data
|
|
29
|
+
openclawbrain learn --openclaw-home ~/.openclaw --json
|
|
30
|
+
openclawbrain daemon status --activation-root ~/.openclawbrain/activation
|
|
25
31
|
```
|
|
26
32
|
|
|
27
33
|
## Docs
|
package/dist/extension/index.js
CHANGED
|
@@ -44,8 +44,26 @@ async function reportDiagnostic(input) {
|
|
|
44
44
|
}
|
|
45
45
|
warnedDiagnostics.add(input.key);
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
const formatted = formatDiagnosticMessage(input);
|
|
48
|
+
console.warn(formatted);
|
|
49
|
+
await appendLocalDiagnosticLog(formatted);
|
|
50
|
+
}
|
|
51
|
+
function formatDiagnosticMessage(input) {
|
|
52
|
+
if (input.severity === undefined ||
|
|
53
|
+
input.actionability === undefined ||
|
|
54
|
+
input.summary === undefined ||
|
|
55
|
+
input.action === undefined) {
|
|
56
|
+
return input.message;
|
|
57
|
+
}
|
|
58
|
+
const detail = input.message.replace(/^\[openclawbrain\]\s*/, "");
|
|
59
|
+
return [
|
|
60
|
+
"[openclawbrain]",
|
|
61
|
+
`severity=${input.severity}`,
|
|
62
|
+
`actionability=${input.actionability}`,
|
|
63
|
+
`summary=${JSON.stringify(input.summary)}`,
|
|
64
|
+
`action=${JSON.stringify(input.action)}`,
|
|
65
|
+
`detail=${JSON.stringify(detail)}`
|
|
66
|
+
].join(" ");
|
|
49
67
|
}
|
|
50
68
|
function announceStartupBreadcrumb() {
|
|
51
69
|
if (isActivationRootPlaceholder(ACTIVATION_ROOT)) {
|
|
@@ -78,8 +96,12 @@ export default function register(api) {
|
|
|
78
96
|
catch (error) {
|
|
79
97
|
const detail = error instanceof Error ? error.message : String(error);
|
|
80
98
|
void reportDiagnostic({
|
|
81
|
-
key:
|
|
99
|
+
key: "runtime-load-proof-failed",
|
|
82
100
|
once: true,
|
|
101
|
+
severity: "degraded",
|
|
102
|
+
actionability: "inspect_local_proof_write",
|
|
103
|
+
summary: "runtime-load proof write failed after hook registration",
|
|
104
|
+
action: "Inspect local filesystem permissions and the activation-root proof path if proof capture is expected.",
|
|
83
105
|
message: `[openclawbrain] runtime load proof failed: ${detail}`
|
|
84
106
|
});
|
|
85
107
|
}
|
|
@@ -91,6 +113,10 @@ export default function register(api) {
|
|
|
91
113
|
void reportDiagnostic({
|
|
92
114
|
key: "registration-failed",
|
|
93
115
|
once: true,
|
|
116
|
+
severity: "blocking",
|
|
117
|
+
actionability: "rerun_install",
|
|
118
|
+
summary: "extension registration threw before the runtime hook was fully attached",
|
|
119
|
+
action: "Rerun openclawbrain install --openclaw-home <path>; if it still fails, inspect the extension loader/runtime.",
|
|
94
120
|
message: `[openclawbrain] extension registration failed: ${detail}`
|
|
95
121
|
});
|
|
96
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../extension/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../extension/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface ExtensionCompileInput {
|
|
2
2
|
activationRoot: string;
|
|
3
3
|
message: string;
|
|
4
|
+
maxContextChars?: number;
|
|
4
5
|
sessionId?: string;
|
|
5
6
|
channel?: string;
|
|
6
7
|
_serveRouteBreadcrumbs?: {
|
|
@@ -21,10 +22,16 @@ export interface ExtensionCompileFailure {
|
|
|
21
22
|
}
|
|
22
23
|
export type ExtensionCompileResult = ExtensionCompileSuccess | ExtensionCompileFailure;
|
|
23
24
|
export type ExtensionCompileRuntimeContext = (input: ExtensionCompileInput) => ExtensionCompileResult;
|
|
25
|
+
export type ExtensionDiagnosticSeverity = "degraded" | "blocking";
|
|
26
|
+
export type ExtensionDiagnosticActionability = "inspect_host_event_shape" | "inspect_host_registration_api" | "inspect_local_proof_write" | "inspect_runtime_compile" | "rerun_install";
|
|
24
27
|
export interface ExtensionDiagnostic {
|
|
25
28
|
key: string;
|
|
26
29
|
message: string;
|
|
27
30
|
once?: boolean;
|
|
31
|
+
severity?: ExtensionDiagnosticSeverity;
|
|
32
|
+
actionability?: ExtensionDiagnosticActionability;
|
|
33
|
+
summary?: string;
|
|
34
|
+
action?: string;
|
|
28
35
|
}
|
|
29
36
|
export interface ExtensionRegistrationApi {
|
|
30
37
|
on(eventName: string, handler: (event: unknown, ctx: unknown) => Promise<Record<string, unknown>>, options?: {
|
|
@@ -33,6 +40,7 @@ export interface ExtensionRegistrationApi {
|
|
|
33
40
|
}
|
|
34
41
|
export interface NormalizedPromptBuildEvent {
|
|
35
42
|
message: string;
|
|
43
|
+
maxContextChars?: number;
|
|
36
44
|
sessionId?: string;
|
|
37
45
|
channel?: string;
|
|
38
46
|
warnings: ExtensionDiagnostic[];
|
|
@@ -5,12 +5,12 @@ export function validateExtensionRegistrationApi(api) {
|
|
|
5
5
|
if (!isRecord(api) || typeof api.on !== "function") {
|
|
6
6
|
return {
|
|
7
7
|
ok: false,
|
|
8
|
-
diagnostic: {
|
|
8
|
+
diagnostic: shapeDiagnostic({
|
|
9
9
|
key: "registration-api-invalid",
|
|
10
10
|
once: true,
|
|
11
11
|
message: `[openclawbrain] extension inactive: host registration API is missing api.on(event, handler, options) ` +
|
|
12
12
|
`(received=${describeValue(api)})`
|
|
13
|
-
}
|
|
13
|
+
})
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
return {
|
|
@@ -35,6 +35,7 @@ export function normalizePromptBuildEvent(event) {
|
|
|
35
35
|
const warnings = [];
|
|
36
36
|
const sessionId = normalizeOptionalScalarField(event.sessionId, "sessionId", warnings);
|
|
37
37
|
const channel = normalizeOptionalScalarField(event.channel, "channel", warnings);
|
|
38
|
+
const maxContextChars = normalizeOptionalNonNegativeIntegerField(event.maxContextChars, "maxContextChars", warnings);
|
|
38
39
|
const promptFallback = extractTextContent(event.prompt);
|
|
39
40
|
let extractedMessage = promptFallback ?? "";
|
|
40
41
|
if (messages.length === 0) {
|
|
@@ -53,6 +54,7 @@ export function normalizePromptBuildEvent(event) {
|
|
|
53
54
|
ok: true,
|
|
54
55
|
event: {
|
|
55
56
|
message: extractedMessage,
|
|
57
|
+
...(maxContextChars !== undefined ? { maxContextChars } : {}),
|
|
56
58
|
...(sessionId !== undefined ? { sessionId } : {}),
|
|
57
59
|
...(channel !== undefined ? { channel } : {}),
|
|
58
60
|
warnings
|
|
@@ -62,11 +64,11 @@ export function normalizePromptBuildEvent(event) {
|
|
|
62
64
|
export function createBeforePromptBuildHandler(input) {
|
|
63
65
|
return async (event, _ctx) => {
|
|
64
66
|
if (isActivationRootPlaceholder(input.activationRoot)) {
|
|
65
|
-
await input.reportDiagnostic({
|
|
67
|
+
await input.reportDiagnostic(shapeDiagnostic({
|
|
66
68
|
key: "activation-root-placeholder",
|
|
67
69
|
once: true,
|
|
68
70
|
message: "[openclawbrain] BRAIN NOT YET LOADED: ACTIVATION_ROOT is still a placeholder. Install @openclawbrain/cli, then run: openclawbrain install --openclaw-home <path>"
|
|
69
|
-
});
|
|
71
|
+
}));
|
|
70
72
|
return {};
|
|
71
73
|
}
|
|
72
74
|
const normalized = normalizePromptBuildEvent(event);
|
|
@@ -86,6 +88,7 @@ export function createBeforePromptBuildHandler(input) {
|
|
|
86
88
|
const result = input.compileRuntimeContext({
|
|
87
89
|
activationRoot: input.activationRoot,
|
|
88
90
|
message: normalized.event.message,
|
|
91
|
+
...(normalized.event.maxContextChars !== undefined ? { maxContextChars: normalized.event.maxContextChars } : {}),
|
|
89
92
|
...(normalized.event.sessionId !== undefined ? { sessionId: normalized.event.sessionId } : {}),
|
|
90
93
|
...(normalized.event.channel !== undefined ? { channel: normalized.event.channel } : {}),
|
|
91
94
|
...(input.extensionEntryPath === undefined
|
|
@@ -100,11 +103,11 @@ export function createBeforePromptBuildHandler(input) {
|
|
|
100
103
|
});
|
|
101
104
|
if (!result.ok) {
|
|
102
105
|
const mode = result.hardRequirementViolated ? "hard-fail" : "fail-open";
|
|
103
|
-
await input.reportDiagnostic({
|
|
106
|
+
await input.reportDiagnostic(shapeDiagnostic({
|
|
104
107
|
key: `compile-${mode}`,
|
|
105
108
|
message: `[openclawbrain] ${mode}: ${result.error} ` +
|
|
106
109
|
`(activationRoot=${input.activationRoot}, sessionId=${normalized.event.sessionId ?? "unknown"}, channel=${normalized.event.channel ?? "unknown"})`
|
|
107
|
-
});
|
|
110
|
+
}));
|
|
108
111
|
return {};
|
|
109
112
|
}
|
|
110
113
|
if (result.brainContext.length > 0) {
|
|
@@ -116,20 +119,20 @@ export function createBeforePromptBuildHandler(input) {
|
|
|
116
119
|
}
|
|
117
120
|
catch (error) {
|
|
118
121
|
const detail = error instanceof Error ? error.stack ?? error.message : String(error);
|
|
119
|
-
await input.reportDiagnostic({
|
|
122
|
+
await input.reportDiagnostic(shapeDiagnostic({
|
|
120
123
|
key: "compile-threw",
|
|
121
124
|
message: `[openclawbrain] compile threw: ${detail} ` +
|
|
122
125
|
`(activationRoot=${input.activationRoot}, sessionId=${normalized.event.sessionId ?? "unknown"}, channel=${normalized.event.channel ?? "unknown"})`
|
|
123
|
-
});
|
|
126
|
+
}));
|
|
124
127
|
}
|
|
125
128
|
return {};
|
|
126
129
|
};
|
|
127
130
|
}
|
|
128
131
|
function failOpenDiagnostic(key, reason, detail) {
|
|
129
|
-
return {
|
|
132
|
+
return shapeDiagnostic({
|
|
130
133
|
key,
|
|
131
134
|
message: `[openclawbrain] fail-open: ${reason} (${detail})`
|
|
132
|
-
};
|
|
135
|
+
});
|
|
133
136
|
}
|
|
134
137
|
function normalizeOptionalScalarField(value, fieldName, warnings) {
|
|
135
138
|
if (value === undefined || value === null) {
|
|
@@ -142,11 +145,40 @@ function normalizeOptionalScalarField(value, fieldName, warnings) {
|
|
|
142
145
|
if (typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") {
|
|
143
146
|
return String(value);
|
|
144
147
|
}
|
|
145
|
-
warnings.push({
|
|
148
|
+
warnings.push(shapeDiagnostic({
|
|
146
149
|
key: `runtime-${fieldName}-ignored`,
|
|
147
150
|
message: `[openclawbrain] fail-open: ignored unsupported before_prompt_build ${fieldName} ` +
|
|
148
151
|
`(${fieldName}=${describeValue(value)})`
|
|
149
|
-
});
|
|
152
|
+
}));
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
function normalizeOptionalNonNegativeIntegerField(value, fieldName, warnings) {
|
|
156
|
+
if (value === undefined || value === null) {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
if (typeof value === "number" && Number.isSafeInteger(value) && value >= 0) {
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
if (typeof value === "bigint" && value >= 0n && value <= BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
163
|
+
return Number(value);
|
|
164
|
+
}
|
|
165
|
+
if (typeof value === "string") {
|
|
166
|
+
const trimmed = value.trim();
|
|
167
|
+
if (trimmed.length === 0) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
if (/^\d+$/.test(trimmed)) {
|
|
171
|
+
const parsed = Number(trimmed);
|
|
172
|
+
if (Number.isSafeInteger(parsed)) {
|
|
173
|
+
return parsed;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
warnings.push(shapeDiagnostic({
|
|
178
|
+
key: `runtime-${fieldName}-ignored`,
|
|
179
|
+
message: `[openclawbrain] fail-open: ignored unsupported before_prompt_build ${fieldName} ` +
|
|
180
|
+
`(${fieldName}=${describeValue(value)})`
|
|
181
|
+
}));
|
|
150
182
|
return undefined;
|
|
151
183
|
}
|
|
152
184
|
function extractPromptMessage(message) {
|
|
@@ -232,6 +264,62 @@ function describeValue(value) {
|
|
|
232
264
|
}
|
|
233
265
|
return `${typeof value}(${String(value)})`;
|
|
234
266
|
}
|
|
267
|
+
function shapeDiagnostic(diagnostic) {
|
|
268
|
+
if (diagnostic.severity !== undefined &&
|
|
269
|
+
diagnostic.actionability !== undefined &&
|
|
270
|
+
diagnostic.summary !== undefined &&
|
|
271
|
+
diagnostic.action !== undefined) {
|
|
272
|
+
return diagnostic;
|
|
273
|
+
}
|
|
274
|
+
if (diagnostic.key === "activation-root-placeholder") {
|
|
275
|
+
return {
|
|
276
|
+
...diagnostic,
|
|
277
|
+
severity: "blocking",
|
|
278
|
+
actionability: "rerun_install",
|
|
279
|
+
summary: "extension hook is installed but ACTIVATION_ROOT is still unpinned",
|
|
280
|
+
action: "Run openclawbrain install --openclaw-home <path> to pin the runtime hook."
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
if (diagnostic.key === "registration-api-invalid") {
|
|
284
|
+
return {
|
|
285
|
+
...diagnostic,
|
|
286
|
+
severity: "blocking",
|
|
287
|
+
actionability: "inspect_host_registration_api",
|
|
288
|
+
summary: "extension host registration API is missing or incompatible",
|
|
289
|
+
action: "Repair or upgrade the host extension API so api.on(event, handler, options) is available."
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
if (diagnostic.key === "compile-hard-fail") {
|
|
293
|
+
return {
|
|
294
|
+
...diagnostic,
|
|
295
|
+
severity: "blocking",
|
|
296
|
+
actionability: "inspect_runtime_compile",
|
|
297
|
+
summary: "brain context compile hit a hard requirement",
|
|
298
|
+
action: "Inspect the activation root and compile error; rerun install if the pinned hook may be stale."
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
if (diagnostic.key === "compile-fail-open" || diagnostic.key === "compile-threw") {
|
|
302
|
+
return {
|
|
303
|
+
...diagnostic,
|
|
304
|
+
severity: "degraded",
|
|
305
|
+
actionability: "inspect_runtime_compile",
|
|
306
|
+
summary: diagnostic.key === "compile-threw"
|
|
307
|
+
? "brain context compile threw during before_prompt_build"
|
|
308
|
+
: "brain context compile failed open during before_prompt_build",
|
|
309
|
+
action: "Inspect the activation root and compile error if brain context is unexpectedly empty."
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (diagnostic.key.startsWith("runtime-")) {
|
|
313
|
+
return {
|
|
314
|
+
...diagnostic,
|
|
315
|
+
severity: "degraded",
|
|
316
|
+
actionability: "inspect_host_event_shape",
|
|
317
|
+
summary: "before_prompt_build payload was partial or malformed",
|
|
318
|
+
action: "Inspect the host before_prompt_build event shape; OpenClawBrain fail-opened safely."
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
return diagnostic;
|
|
322
|
+
}
|
|
235
323
|
function isRecord(value) {
|
|
236
324
|
return typeof value === "object" && value !== null;
|
|
237
325
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-guard.js","sourceRoot":"","sources":["../../extension/runtime-guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-guard.js","sourceRoot":"","sources":["../../extension/runtime-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,44 @@
|
|
|
1
|
-
|
|
1
|
+
export type OpenClawHomeProfileSource =
|
|
2
|
+
| "openclaw_json_profile"
|
|
3
|
+
| "openclaw_json_single_profile_key"
|
|
4
|
+
| "directory_name"
|
|
5
|
+
| "none";
|
|
6
|
+
|
|
2
7
|
declare const ATTACHMENT_RUNTIME_LOAD_PROOFS_CONTRACT: "openclaw_profile_runtime_load_proofs.v1";
|
|
8
|
+
|
|
3
9
|
export interface OpenClawProfileRuntimeLoadProofRecordV1 {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
openclawHome: string;
|
|
11
|
+
profileId: string | null;
|
|
12
|
+
profileSource: OpenClawHomeProfileSource;
|
|
13
|
+
loadedAt: string;
|
|
14
|
+
extensionEntryPath: string;
|
|
9
15
|
}
|
|
16
|
+
|
|
10
17
|
export interface OpenClawProfileRuntimeLoadProofsV1 {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
contract: typeof ATTACHMENT_RUNTIME_LOAD_PROOFS_CONTRACT;
|
|
19
|
+
runtimeOwner: "openclaw";
|
|
20
|
+
activationRoot: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
profiles: OpenClawProfileRuntimeLoadProofRecordV1[];
|
|
16
23
|
}
|
|
24
|
+
|
|
17
25
|
export interface OpenClawProfileRuntimeLoadProofSetV1 {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
path: string;
|
|
27
|
+
proofs: OpenClawProfileRuntimeLoadProofsV1 | null;
|
|
28
|
+
error: string | null;
|
|
21
29
|
}
|
|
30
|
+
|
|
22
31
|
export declare function resolveAttachmentRuntimeLoadProofsPath(activationRoot: string): string;
|
|
23
|
-
export declare function listOpenClawProfileRuntimeLoadProofs(
|
|
32
|
+
export declare function listOpenClawProfileRuntimeLoadProofs(
|
|
33
|
+
activationRoot: string,
|
|
34
|
+
): OpenClawProfileRuntimeLoadProofSetV1;
|
|
24
35
|
export declare function recordOpenClawProfileRuntimeLoadProof(input: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
activationRoot: string;
|
|
37
|
+
extensionEntryPath: string;
|
|
38
|
+
loadedAt?: string | null;
|
|
28
39
|
}): OpenClawProfileRuntimeLoadProofRecordV1;
|
|
29
40
|
export declare function clearOpenClawProfileRuntimeLoadProof(input: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
activationRoot: string;
|
|
42
|
+
openclawHome: string;
|
|
43
|
+
clearedAt?: string | null;
|
|
33
44
|
}): boolean;
|
|
34
|
-
export {};
|