@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,40 +0,0 @@
1
- export interface InstalledExtensionPackageJson {
2
- name?: unknown;
3
- version?: unknown;
4
- private?: unknown;
5
- type?: unknown;
6
- openclaw?: {
7
- extensions?: unknown;
8
- };
9
- dependencies?: Record<string, string>;
10
- }
11
- export interface InstalledPluginManifest {
12
- id?: unknown;
13
- name?: unknown;
14
- description?: unknown;
15
- version?: unknown;
16
- configSchema?: unknown;
17
- }
18
- export interface ShadowProfileExtensionInstall {
19
- openclawHome: string;
20
- extensionsDir: string;
21
- extensionDir: string;
22
- manifestPath: string;
23
- packageJsonPath: string;
24
- loaderEntryPath: string;
25
- runtimeGuardPath: string;
26
- manifest: InstalledPluginManifest;
27
- packageJson: InstalledExtensionPackageJson;
28
- configuredEntries: string[];
29
- }
30
- export interface ShadowProfileExtensionLoadProof extends ShadowProfileExtensionInstall {
31
- runtimeGuardExportNames: string[];
32
- registeredEventName: string;
33
- registeredPriority: number | null;
34
- probeWarning: string;
35
- probeResult: Record<string, unknown>;
36
- diagnosticLogPath: string;
37
- diagnosticLogContents: string;
38
- }
39
- export declare function inspectInstalledOpenClawBrainExtension(openclawHome: string, extensionId?: string): ShadowProfileExtensionInstall;
40
- export declare function proveInstalledOpenClawBrainExtensionLoad(openclawHome: string, extensionId?: string): Promise<ShadowProfileExtensionLoadProof>;
@@ -1,218 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import path from "node:path";
4
- import { pathToFileURL } from "node:url";
5
- const REQUIRED_RUNTIME_GUARD_EXPORTS = [
6
- "createBeforePromptBuildHandler",
7
- "isActivationRootPlaceholder",
8
- "normalizePromptBuildEvent",
9
- "validateExtensionRegistrationApi"
10
- ];
11
- export function inspectInstalledOpenClawBrainExtension(openclawHome, extensionId = "openclawbrain") {
12
- const resolvedOpenclawHome = path.resolve(openclawHome);
13
- const extensionsDir = path.join(resolvedOpenclawHome, "extensions");
14
- const extensionDir = path.join(extensionsDir, extensionId);
15
- if (!existsSync(extensionsDir)) {
16
- throw new Error(`[shadow-extension-load-proof] OpenClaw extensions dir is missing: ${extensionsDir}`);
17
- }
18
- if (!existsSync(extensionDir)) {
19
- throw new Error(`[shadow-extension-load-proof] Installed extension dir is missing: ${extensionDir}`);
20
- }
21
- const manifestPath = path.join(extensionDir, "openclaw.plugin.json");
22
- const packageJsonPath = path.join(extensionDir, "package.json");
23
- const runtimeGuardPath = path.join(extensionDir, "runtime-guard.js");
24
- if (!existsSync(manifestPath)) {
25
- throw new Error(`[shadow-extension-load-proof] Plugin manifest missing: ${manifestPath}`);
26
- }
27
- if (!existsSync(packageJsonPath)) {
28
- throw new Error(`[shadow-extension-load-proof] Package manifest missing: ${packageJsonPath}`);
29
- }
30
- if (!existsSync(runtimeGuardPath)) {
31
- throw new Error(`[shadow-extension-load-proof] Installed runtime-guard.js is missing: ${runtimeGuardPath}`);
32
- }
33
- const manifest = readRequiredJson(manifestPath, "plugin manifest");
34
- if (manifest.id !== extensionId) {
35
- throw new Error(`[shadow-extension-load-proof] Plugin manifest id must be ${JSON.stringify(extensionId)} at ${manifestPath} ` +
36
- `(received=${describeValue(manifest.id)})`);
37
- }
38
- if (typeof manifest.version !== "string" || manifest.version.trim().length === 0) {
39
- throw new Error(`[shadow-extension-load-proof] Plugin manifest version must be a non-empty string at ${manifestPath}`);
40
- }
41
- const packageJson = readRequiredJson(packageJsonPath, "package manifest");
42
- const configuredEntries = readConfiguredEntries(packageJson, packageJsonPath);
43
- const loaderEntryPath = resolveLoaderEntryPath(extensionDir, configuredEntries);
44
- if (packageJson.type !== "module") {
45
- throw new Error(`[shadow-extension-load-proof] Installed package manifest must declare \"type\": \"module\" at ${packageJsonPath} ` +
46
- `(received=${describeValue(packageJson.type)})`);
47
- }
48
- if (packageJson.name !== extensionId) {
49
- throw new Error(`[shadow-extension-load-proof] Installed package manifest name must match plugin id ${JSON.stringify(extensionId)} at ${packageJsonPath} ` +
50
- `(received=${describeValue(packageJson.name)})`);
51
- }
52
- if (typeof packageJson.version === "string" &&
53
- packageJson.version.trim().length > 0 &&
54
- packageJson.version !== manifest.version) {
55
- throw new Error(`[shadow-extension-load-proof] Installed package and plugin manifest versions disagree ` +
56
- `(package=${packageJson.version}, manifest=${manifest.version})`);
57
- }
58
- return {
59
- openclawHome: resolvedOpenclawHome,
60
- extensionsDir,
61
- extensionDir,
62
- manifestPath,
63
- packageJsonPath,
64
- loaderEntryPath,
65
- runtimeGuardPath,
66
- manifest,
67
- packageJson,
68
- configuredEntries
69
- };
70
- }
71
- export async function proveInstalledOpenClawBrainExtensionLoad(openclawHome, extensionId = "openclawbrain") {
72
- const inspected = inspectInstalledOpenClawBrainExtension(openclawHome, extensionId);
73
- const runtimeGuardModule = await importWithHelpfulError(inspected.runtimeGuardPath, "runtime-guard.js");
74
- const runtimeGuardExportNames = Object.keys(runtimeGuardModule).sort((left, right) => left.localeCompare(right));
75
- const missingRuntimeGuardExports = REQUIRED_RUNTIME_GUARD_EXPORTS.filter((exportName) => !runtimeGuardExportNames.includes(exportName));
76
- if (missingRuntimeGuardExports.length > 0) {
77
- throw new Error(`[shadow-extension-load-proof] Installed runtime-guard.js is missing required exports ` +
78
- `${missingRuntimeGuardExports.join(", ")} at ${inspected.runtimeGuardPath}`);
79
- }
80
- const loaderModule = await importWithHelpfulError(inspected.loaderEntryPath, "loader entry");
81
- if (typeof loaderModule.default !== "function") {
82
- throw new Error(`[shadow-extension-load-proof] Installed loader entry default export must be a function at ${inspected.loaderEntryPath} ` +
83
- `(received=${describeValue(loaderModule.default)})`);
84
- }
85
- const registrations = [];
86
- loaderModule.default({
87
- on(eventName, handler, options) {
88
- registrations.push({
89
- eventName,
90
- handler,
91
- priority: typeof options?.priority === "number" ? options.priority : null
92
- });
93
- }
94
- });
95
- if (registrations.length !== 1) {
96
- throw new Error(`[shadow-extension-load-proof] Installed loader must register exactly one hook ` +
97
- `(received=${registrations.length})`);
98
- }
99
- const registeredHook = registrations[0];
100
- if (registeredHook.eventName !== "before_prompt_build") {
101
- throw new Error(`[shadow-extension-load-proof] Installed loader must register before_prompt_build ` +
102
- `(received=${JSON.stringify(registeredHook.eventName)})`);
103
- }
104
- if (registeredHook.priority !== 5) {
105
- throw new Error(`[shadow-extension-load-proof] Installed loader must register before_prompt_build with priority 5 ` +
106
- `(received=${registeredHook.priority === null ? "null" : String(registeredHook.priority)})`);
107
- }
108
- const warnings = [];
109
- const originalWarn = console.warn;
110
- console.warn = (...args) => {
111
- warnings.push(args.map((value) => String(value)).join(" "));
112
- };
113
- let probeResult;
114
- try {
115
- probeResult = await registeredHook.handler({
116
- messages: {
117
- content: "not-an-array"
118
- }
119
- }, {});
120
- }
121
- finally {
122
- console.warn = originalWarn;
123
- }
124
- if (!isRecord(probeResult) || Object.keys(probeResult).length !== 0) {
125
- throw new Error(`[shadow-extension-load-proof] Malformed before_prompt_build probe must fail open with an empty object ` +
126
- `(received=${describeValue(probeResult)})`);
127
- }
128
- const probeWarning = warnings.find((message) => message.includes("before_prompt_build event.messages is not an array"));
129
- if (probeWarning === undefined) {
130
- throw new Error(`[shadow-extension-load-proof] Installed runtime-guard did not emit the expected malformed-event diagnostic ` +
131
- `(warnings=${warnings.length === 0 ? "none" : warnings.join(" | ")})`);
132
- }
133
- const diagnosticLogPath = path.join(homedir(), ".openclawbrain", "extension-errors.log");
134
- if (!existsSync(diagnosticLogPath)) {
135
- throw new Error(`[shadow-extension-load-proof] Installed runtime-guard did not write a local diagnostic log at ${diagnosticLogPath}`);
136
- }
137
- const diagnosticLogContents = readFileSync(diagnosticLogPath, "utf8");
138
- if (!diagnosticLogContents.includes("before_prompt_build event.messages is not an array")) {
139
- throw new Error(`[shadow-extension-load-proof] Local diagnostic log at ${diagnosticLogPath} does not contain the malformed-event failure`);
140
- }
141
- return {
142
- ...inspected,
143
- runtimeGuardExportNames,
144
- registeredEventName: registeredHook.eventName,
145
- registeredPriority: registeredHook.priority,
146
- probeWarning,
147
- probeResult,
148
- diagnosticLogPath,
149
- diagnosticLogContents
150
- };
151
- }
152
- function readRequiredJson(filePath, label) {
153
- let raw;
154
- try {
155
- raw = readFileSync(filePath, "utf8");
156
- }
157
- catch (error) {
158
- const detail = error instanceof Error ? error.message : String(error);
159
- throw new Error(`[shadow-extension-load-proof] Failed to read ${label} at ${filePath}: ${detail}`);
160
- }
161
- try {
162
- return JSON.parse(raw);
163
- }
164
- catch (error) {
165
- const detail = error instanceof Error ? error.message : String(error);
166
- throw new Error(`[shadow-extension-load-proof] Failed to parse ${label} at ${filePath}: ${detail}`);
167
- }
168
- }
169
- function readConfiguredEntries(packageJson, packageJsonPath) {
170
- const extensions = packageJson.openclaw?.extensions;
171
- if (!Array.isArray(extensions)) {
172
- throw new Error(`[shadow-extension-load-proof] Installed package manifest must expose openclaw.extensions as a non-empty string array at ${packageJsonPath} ` +
173
- `(received=${describeValue(extensions)})`);
174
- }
175
- const configuredEntries = extensions.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
176
- if (configuredEntries.length === 0) {
177
- throw new Error(`[shadow-extension-load-proof] Installed package manifest openclaw.extensions is empty at ${packageJsonPath}`);
178
- }
179
- return configuredEntries;
180
- }
181
- function resolveLoaderEntryPath(extensionDir, configuredEntries) {
182
- for (const configuredEntry of configuredEntries) {
183
- const candidate = path.join(extensionDir, configuredEntry);
184
- if (existsSync(candidate)) {
185
- return candidate;
186
- }
187
- }
188
- throw new Error(`[shadow-extension-load-proof] Installed package manifest points at missing loader entries in ${extensionDir} ` +
189
- `(configured=${configuredEntries.join(", ")})`);
190
- }
191
- async function importWithHelpfulError(filePath, label) {
192
- try {
193
- return await import(pathToFileURL(filePath).href);
194
- }
195
- catch (error) {
196
- const detail = error instanceof Error ? error.stack ?? error.message : String(error);
197
- throw new Error(`[shadow-extension-load-proof] Installed ${label} failed to import from ${filePath}: ${detail}`);
198
- }
199
- }
200
- function describeValue(value) {
201
- if (value === null) {
202
- return "null";
203
- }
204
- if (Array.isArray(value)) {
205
- return `array(len=${value.length})`;
206
- }
207
- if (typeof value === "string") {
208
- return `string(${JSON.stringify(value)})`;
209
- }
210
- if (typeof value === "object") {
211
- return `object(keys=${Object.keys(value).join(",") || "none"})`;
212
- }
213
- return `${typeof value}(${String(value)})`;
214
- }
215
- function isRecord(value) {
216
- return typeof value === "object" && value !== null;
217
- }
218
- //# sourceMappingURL=shadow-extension-proof.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shadow-extension-proof.js","sourceRoot":"","sources":["../../src/shadow-extension-proof.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { type NormalizedEventExportV1, type TeacherSupervisionArtifactV1 } from "@openclawbrain/contracts";
2
- import type { LearningSpineServeRouteDecisionLogEntryV1 } from "@openclawbrain/pack-format";
3
- export interface TeacherLabelerRunInputV1 {
4
- normalizedEventExport: NormalizedEventExportV1;
5
- observedAt: string;
6
- staleAfterMs: number;
7
- serveTimeDecisions?: readonly LearningSpineServeRouteDecisionLogEntryV1[];
8
- existingArtifacts?: readonly TeacherSupervisionArtifactV1[];
9
- }
10
- export interface TeacherLabelerResultV1 {
11
- artifacts: TeacherSupervisionArtifactV1[];
12
- status: "ok" | "skipped" | "fail_open";
13
- detail: string;
14
- }
15
- export interface TeacherLabeler {
16
- label(input: TeacherLabelerRunInputV1): Promise<TeacherLabelerResultV1>;
17
- }
18
- export interface OllamaTeacherLabelerGenerateInputV1 {
19
- model: string;
20
- prompt: string;
21
- maxOutputTokens: number;
22
- timeoutMs: number;
23
- }
24
- export interface OllamaTeacherLabelerClient {
25
- generate(input: OllamaTeacherLabelerGenerateInputV1): Promise<{
26
- response: string;
27
- }>;
28
- }
29
- export interface AsyncTeacherOllamaLabelerConfigV1 {
30
- provider: "ollama";
31
- baseUrl?: string;
32
- model?: string;
33
- timeoutMs?: number;
34
- maxPromptChars?: number;
35
- maxResponseChars?: number;
36
- maxOutputTokens?: number;
37
- maxArtifactsPerExport?: number;
38
- maxInteractionsPerExport?: number;
39
- maxUserMessageChars?: number;
40
- maxContextIdsPerDecision?: number;
41
- teacherIdentity?: string;
42
- client?: OllamaTeacherLabelerClient;
43
- }
44
- export interface AsyncTeacherNoopLabelerConfigV1 {
45
- provider: "none";
46
- }
47
- export type AsyncTeacherLabelerConfigV1 = AsyncTeacherNoopLabelerConfigV1 | AsyncTeacherOllamaLabelerConfigV1;
48
- export declare function createHttpOllamaTeacherLabelerClient(baseUrl?: string): OllamaTeacherLabelerClient;
49
- export declare function createOllamaTeacherLabeler(config: AsyncTeacherOllamaLabelerConfigV1): TeacherLabeler;
50
- export declare function createTeacherLabeler(config: AsyncTeacherLabelerConfigV1 | null | undefined): TeacherLabeler | null;