@lobu/cli 5.0.0 → 6.0.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 (266) hide show
  1. package/README.md +11 -26
  2. package/dist/__tests__/chat.integration.test.js +19 -19
  3. package/dist/__tests__/chat.integration.test.js.map +1 -1
  4. package/dist/__tests__/dev.test.d.ts +2 -0
  5. package/dist/__tests__/dev.test.d.ts.map +1 -0
  6. package/dist/__tests__/dev.test.js +25 -0
  7. package/dist/__tests__/dev.test.js.map +1 -0
  8. package/dist/__tests__/init-memory.test.js +1 -14
  9. package/dist/__tests__/init-memory.test.js.map +1 -1
  10. package/dist/__tests__/token.test.d.ts +2 -0
  11. package/dist/__tests__/token.test.d.ts.map +1 -0
  12. package/dist/__tests__/token.test.js +52 -0
  13. package/dist/__tests__/token.test.js.map +1 -0
  14. package/dist/bundled-skills/lobu/SKILL.md +95 -7
  15. package/dist/commands/_lib/apply/__tests__/client.test.d.ts +2 -0
  16. package/dist/commands/_lib/apply/__tests__/client.test.d.ts.map +1 -0
  17. package/dist/commands/_lib/apply/__tests__/client.test.js +23 -0
  18. package/dist/commands/_lib/apply/__tests__/client.test.js.map +1 -0
  19. package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts +2 -0
  20. package/dist/commands/_lib/apply/__tests__/desired-state.test.d.ts.map +1 -0
  21. package/dist/commands/_lib/apply/__tests__/desired-state.test.js +140 -0
  22. package/dist/commands/_lib/apply/__tests__/desired-state.test.js.map +1 -0
  23. package/dist/commands/_lib/apply/__tests__/diff.test.d.ts +2 -0
  24. package/dist/commands/_lib/apply/__tests__/diff.test.d.ts.map +1 -0
  25. package/dist/commands/_lib/apply/__tests__/diff.test.js +378 -0
  26. package/dist/commands/_lib/apply/__tests__/diff.test.js.map +1 -0
  27. package/dist/commands/_lib/apply/apply-cmd.d.ts +12 -0
  28. package/dist/commands/_lib/apply/apply-cmd.d.ts.map +1 -0
  29. package/dist/commands/_lib/apply/apply-cmd.js +183 -0
  30. package/dist/commands/_lib/apply/apply-cmd.js.map +1 -0
  31. package/dist/commands/_lib/apply/client.d.ts +130 -0
  32. package/dist/commands/_lib/apply/client.d.ts.map +1 -0
  33. package/dist/commands/_lib/apply/client.js +243 -0
  34. package/dist/commands/_lib/apply/client.js.map +1 -0
  35. package/dist/commands/_lib/apply/desired-state.d.ts +71 -0
  36. package/dist/commands/_lib/apply/desired-state.d.ts.map +1 -0
  37. package/dist/commands/_lib/apply/desired-state.js +600 -0
  38. package/dist/commands/_lib/apply/desired-state.js.map +1 -0
  39. package/dist/commands/_lib/apply/diff.d.ts +76 -0
  40. package/dist/commands/_lib/apply/diff.d.ts.map +1 -0
  41. package/dist/commands/_lib/apply/diff.js +323 -0
  42. package/dist/commands/_lib/apply/diff.js.map +1 -0
  43. package/dist/commands/_lib/apply/prompt.d.ts +13 -0
  44. package/dist/commands/_lib/apply/prompt.d.ts.map +1 -0
  45. package/dist/commands/_lib/apply/prompt.js +19 -0
  46. package/dist/commands/_lib/apply/prompt.js.map +1 -0
  47. package/dist/commands/_lib/apply/render.d.ts +9 -0
  48. package/dist/commands/_lib/apply/render.d.ts.map +1 -0
  49. package/dist/commands/_lib/apply/render.js +92 -0
  50. package/dist/commands/_lib/apply/render.js.map +1 -0
  51. package/dist/commands/agent.d.ts +27 -0
  52. package/dist/commands/agent.d.ts.map +1 -0
  53. package/dist/commands/agent.js +111 -0
  54. package/dist/commands/agent.js.map +1 -0
  55. package/dist/commands/apply.d.ts +3 -0
  56. package/dist/commands/apply.d.ts.map +1 -0
  57. package/dist/commands/apply.js +5 -0
  58. package/dist/commands/apply.js.map +1 -0
  59. package/dist/commands/chat.d.ts.map +1 -1
  60. package/dist/commands/chat.js +5 -5
  61. package/dist/commands/chat.js.map +1 -1
  62. package/dist/commands/dev.d.ts +8 -3
  63. package/dist/commands/dev.d.ts.map +1 -1
  64. package/dist/commands/dev.js +128 -124
  65. package/dist/commands/dev.js.map +1 -1
  66. package/dist/commands/doctor.d.ts +6 -0
  67. package/dist/commands/doctor.d.ts.map +1 -0
  68. package/dist/commands/doctor.js +75 -0
  69. package/dist/commands/doctor.js.map +1 -0
  70. package/dist/commands/eval.d.ts +1 -0
  71. package/dist/commands/eval.d.ts.map +1 -1
  72. package/dist/commands/eval.js +7 -4
  73. package/dist/commands/eval.js.map +1 -1
  74. package/dist/commands/init.d.ts +2 -9
  75. package/dist/commands/init.d.ts.map +1 -1
  76. package/dist/commands/init.js +34 -248
  77. package/dist/commands/init.js.map +1 -1
  78. package/dist/commands/login.d.ts +11 -3
  79. package/dist/commands/login.d.ts.map +1 -1
  80. package/dist/commands/login.js +109 -251
  81. package/dist/commands/login.js.map +1 -1
  82. package/dist/commands/logout.d.ts.map +1 -1
  83. package/dist/commands/logout.js +12 -11
  84. package/dist/commands/logout.js.map +1 -1
  85. package/dist/commands/memory/_lib/agent-detect.d.ts +9 -0
  86. package/dist/commands/memory/_lib/agent-detect.d.ts.map +1 -0
  87. package/dist/commands/memory/_lib/agent-detect.js +82 -0
  88. package/dist/commands/memory/_lib/agent-detect.js.map +1 -0
  89. package/dist/commands/memory/_lib/browser-auth-cmd.d.ts +19 -0
  90. package/dist/commands/memory/_lib/browser-auth-cmd.d.ts.map +1 -0
  91. package/dist/commands/memory/_lib/browser-auth-cmd.js +635 -0
  92. package/dist/commands/memory/_lib/browser-auth-cmd.js.map +1 -0
  93. package/dist/commands/memory/_lib/browser.d.ts +2 -0
  94. package/dist/commands/memory/_lib/browser.d.ts.map +1 -0
  95. package/dist/commands/memory/_lib/browser.js +26 -0
  96. package/dist/commands/memory/_lib/browser.js.map +1 -0
  97. package/dist/commands/memory/_lib/errors.d.ts +13 -0
  98. package/dist/commands/memory/_lib/errors.d.ts.map +1 -0
  99. package/dist/commands/memory/_lib/errors.js +23 -0
  100. package/dist/commands/memory/_lib/errors.js.map +1 -0
  101. package/dist/commands/memory/_lib/init-wizard.d.ts +12 -0
  102. package/dist/commands/memory/_lib/init-wizard.d.ts.map +1 -0
  103. package/dist/commands/memory/_lib/init-wizard.js +182 -0
  104. package/dist/commands/memory/_lib/init-wizard.js.map +1 -0
  105. package/dist/commands/memory/_lib/install-targets.d.ts +15 -0
  106. package/dist/commands/memory/_lib/install-targets.d.ts.map +1 -0
  107. package/dist/commands/memory/_lib/install-targets.js +209 -0
  108. package/dist/commands/memory/_lib/install-targets.js.map +1 -0
  109. package/dist/commands/memory/_lib/mcp.d.ts +20 -0
  110. package/dist/commands/memory/_lib/mcp.d.ts.map +1 -0
  111. package/dist/commands/memory/_lib/mcp.js +182 -0
  112. package/dist/commands/memory/_lib/mcp.js.map +1 -0
  113. package/dist/commands/memory/_lib/openclaw-auth.d.ts +41 -0
  114. package/dist/commands/memory/_lib/openclaw-auth.d.ts.map +1 -0
  115. package/dist/commands/memory/_lib/openclaw-auth.js +133 -0
  116. package/dist/commands/memory/_lib/openclaw-auth.js.map +1 -0
  117. package/dist/commands/memory/_lib/openclaw-auth.test.d.ts +2 -0
  118. package/dist/commands/memory/_lib/openclaw-auth.test.d.ts.map +1 -0
  119. package/dist/commands/memory/_lib/openclaw-auth.test.js +9 -0
  120. package/dist/commands/memory/_lib/openclaw-auth.test.js.map +1 -0
  121. package/dist/commands/memory/_lib/openclaw-cmd.d.ts +15 -0
  122. package/dist/commands/memory/_lib/openclaw-cmd.d.ts.map +1 -0
  123. package/dist/commands/memory/_lib/openclaw-cmd.js +208 -0
  124. package/dist/commands/memory/_lib/openclaw-cmd.js.map +1 -0
  125. package/dist/commands/memory/_lib/output.d.ts +5 -0
  126. package/dist/commands/memory/_lib/output.d.ts.map +1 -0
  127. package/dist/commands/memory/_lib/output.js +17 -0
  128. package/dist/commands/memory/_lib/output.js.map +1 -0
  129. package/dist/commands/memory/_lib/schema.d.ts +93 -0
  130. package/dist/commands/memory/_lib/schema.d.ts.map +1 -0
  131. package/dist/commands/memory/_lib/schema.js +192 -0
  132. package/dist/commands/memory/_lib/schema.js.map +1 -0
  133. package/dist/commands/memory/_lib/seed-cmd.d.ts +9 -0
  134. package/dist/commands/memory/_lib/seed-cmd.d.ts.map +1 -0
  135. package/dist/commands/memory/_lib/seed-cmd.js +516 -0
  136. package/dist/commands/memory/_lib/seed-cmd.js.map +1 -0
  137. package/dist/commands/memory/browser-auth.d.ts +3 -0
  138. package/dist/commands/memory/browser-auth.d.ts.map +1 -0
  139. package/dist/commands/memory/browser-auth.js +5 -0
  140. package/dist/commands/memory/browser-auth.js.map +1 -0
  141. package/dist/commands/memory/configure.d.ts +3 -0
  142. package/dist/commands/memory/configure.d.ts.map +1 -0
  143. package/dist/commands/memory/configure.js +5 -0
  144. package/dist/commands/memory/configure.js.map +1 -0
  145. package/dist/commands/memory/health.d.ts +3 -0
  146. package/dist/commands/memory/health.d.ts.map +1 -0
  147. package/dist/commands/memory/health.js +5 -0
  148. package/dist/commands/memory/health.js.map +1 -0
  149. package/dist/commands/memory/init.d.ts +8 -0
  150. package/dist/commands/memory/init.d.ts.map +1 -0
  151. package/dist/commands/memory/init.js +65 -0
  152. package/dist/commands/memory/init.js.map +1 -0
  153. package/dist/commands/memory/org.d.ts +7 -0
  154. package/dist/commands/memory/org.d.ts.map +1 -0
  155. package/dist/commands/memory/org.js +22 -0
  156. package/dist/commands/memory/org.js.map +1 -0
  157. package/dist/commands/memory/run.d.ts +8 -0
  158. package/dist/commands/memory/run.d.ts.map +1 -0
  159. package/dist/commands/memory/run.js +58 -0
  160. package/dist/commands/memory/run.js.map +1 -0
  161. package/dist/commands/memory/seed.d.ts +3 -0
  162. package/dist/commands/memory/seed.d.ts.map +1 -0
  163. package/dist/commands/memory/seed.js +5 -0
  164. package/dist/commands/memory/seed.js.map +1 -0
  165. package/dist/commands/org.d.ts +10 -0
  166. package/dist/commands/org.d.ts.map +1 -0
  167. package/dist/commands/org.js +34 -0
  168. package/dist/commands/org.js.map +1 -0
  169. package/dist/commands/{connections/platforms.d.ts → platforms/platform-prompts.d.ts} +5 -5
  170. package/dist/commands/platforms/platform-prompts.d.ts.map +1 -0
  171. package/dist/commands/{connections/platforms.js → platforms/platform-prompts.js} +24 -24
  172. package/dist/commands/platforms/platform-prompts.js.map +1 -0
  173. package/dist/commands/status.d.ts +4 -1
  174. package/dist/commands/status.d.ts.map +1 -1
  175. package/dist/commands/status.js +15 -84
  176. package/dist/commands/status.js.map +1 -1
  177. package/dist/commands/token.d.ts +17 -0
  178. package/dist/commands/token.d.ts.map +1 -0
  179. package/dist/commands/token.js +55 -0
  180. package/dist/commands/token.js.map +1 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +303 -88
  183. package/dist/index.js.map +1 -1
  184. package/dist/internal/__tests__/api-client.test.d.ts +2 -0
  185. package/dist/internal/__tests__/api-client.test.d.ts.map +1 -0
  186. package/dist/internal/__tests__/api-client.test.js +95 -0
  187. package/dist/internal/__tests__/api-client.test.js.map +1 -0
  188. package/dist/internal/__tests__/context.test.d.ts +2 -0
  189. package/dist/internal/__tests__/context.test.d.ts.map +1 -0
  190. package/dist/internal/__tests__/context.test.js +77 -0
  191. package/dist/internal/__tests__/context.test.js.map +1 -0
  192. package/dist/internal/api-client.d.ts +39 -0
  193. package/dist/internal/api-client.d.ts.map +1 -0
  194. package/dist/internal/api-client.js +217 -0
  195. package/dist/internal/api-client.js.map +1 -0
  196. package/dist/internal/context.d.ts +10 -1
  197. package/dist/internal/context.d.ts.map +1 -1
  198. package/dist/internal/context.js +109 -2
  199. package/dist/internal/context.js.map +1 -1
  200. package/dist/internal/credentials.d.ts +12 -2
  201. package/dist/internal/credentials.d.ts.map +1 -1
  202. package/dist/internal/credentials.js +47 -54
  203. package/dist/internal/credentials.js.map +1 -1
  204. package/dist/internal/gateway-url.d.ts +4 -4
  205. package/dist/internal/gateway-url.d.ts.map +1 -1
  206. package/dist/internal/gateway-url.js +6 -5
  207. package/dist/internal/gateway-url.js.map +1 -1
  208. package/dist/internal/index.d.ts +5 -3
  209. package/dist/internal/index.d.ts.map +1 -1
  210. package/dist/internal/index.js +3 -2
  211. package/dist/internal/index.js.map +1 -1
  212. package/dist/internal/local-env.d.ts +2 -0
  213. package/dist/internal/local-env.d.ts.map +1 -0
  214. package/dist/internal/local-env.js +32 -0
  215. package/dist/internal/local-env.js.map +1 -0
  216. package/dist/internal/oauth.d.ts +82 -0
  217. package/dist/internal/oauth.d.ts.map +1 -0
  218. package/dist/internal/oauth.js +234 -0
  219. package/dist/internal/oauth.js.map +1 -0
  220. package/dist/server.bundle.mjs +72219 -0
  221. package/dist/templates/.env.tmpl +7 -3
  222. package/dist/templates/README.md.tmpl +20 -53
  223. package/package.json +60 -6
  224. package/dist/__tests__/skills.test.d.ts +0 -2
  225. package/dist/__tests__/skills.test.d.ts.map +0 -1
  226. package/dist/__tests__/skills.test.js +0 -33
  227. package/dist/__tests__/skills.test.js.map +0 -1
  228. package/dist/commands/connections/add.d.ts +0 -2
  229. package/dist/commands/connections/add.d.ts.map +0 -1
  230. package/dist/commands/connections/add.js +0 -46
  231. package/dist/commands/connections/add.js.map +0 -1
  232. package/dist/commands/connections/list.d.ts +0 -2
  233. package/dist/commands/connections/list.d.ts.map +0 -1
  234. package/dist/commands/connections/list.js +0 -25
  235. package/dist/commands/connections/list.js.map +0 -1
  236. package/dist/commands/connections/platforms.d.ts.map +0 -1
  237. package/dist/commands/connections/platforms.js.map +0 -1
  238. package/dist/commands/providers/add.d.ts +0 -2
  239. package/dist/commands/providers/add.d.ts.map +0 -1
  240. package/dist/commands/providers/add.js +0 -50
  241. package/dist/commands/providers/add.js.map +0 -1
  242. package/dist/commands/providers/list.d.ts +0 -2
  243. package/dist/commands/providers/list.d.ts.map +0 -1
  244. package/dist/commands/providers/list.js +0 -22
  245. package/dist/commands/providers/list.js.map +0 -1
  246. package/dist/commands/secrets.d.ts +0 -8
  247. package/dist/commands/secrets.d.ts.map +0 -1
  248. package/dist/commands/secrets.js +0 -98
  249. package/dist/commands/secrets.js.map +0 -1
  250. package/dist/commands/skills/add.d.ts +0 -5
  251. package/dist/commands/skills/add.d.ts.map +0 -1
  252. package/dist/commands/skills/add.js +0 -27
  253. package/dist/commands/skills/add.js.map +0 -1
  254. package/dist/commands/skills/list.d.ts +0 -2
  255. package/dist/commands/skills/list.d.ts.map +0 -1
  256. package/dist/commands/skills/list.js +0 -19
  257. package/dist/commands/skills/list.js.map +0 -1
  258. package/dist/commands/skills/registry.d.ts +0 -19
  259. package/dist/commands/skills/registry.d.ts.map +0 -1
  260. package/dist/commands/skills/registry.js +0 -76
  261. package/dist/commands/skills/registry.js.map +0 -1
  262. package/dist/config/agent-helpers.d.ts +0 -38
  263. package/dist/config/agent-helpers.d.ts.map +0 -1
  264. package/dist/config/agent-helpers.js +0 -58
  265. package/dist/config/agent-helpers.js.map +0 -1
  266. package/dist/templates/Dockerfile.worker.tmpl +0 -29
@@ -0,0 +1,516 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
3
+ import { parse as parseToml } from "smol-toml";
4
+ import { parse as parseYaml } from "yaml";
5
+ import { ApiError, ValidationError } from "./errors.js";
6
+ import { getSessionForOrg, getUsableToken, mcpUrlForOrg, orgFromMcpUrl, resolveOrg, resolveServerUrl, } from "./openclaw-auth.js";
7
+ import { printError, printText } from "./output.js";
8
+ import { validateDataRecord, validateModel, } from "./schema.js";
9
+ function readYamlFiles(dir) {
10
+ if (!existsSync(dir))
11
+ return [];
12
+ return readdirSync(dir)
13
+ .filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"))
14
+ .sort()
15
+ .map((f) => ({
16
+ data: parseYaml(readFileSync(resolve(dir, f), "utf8")),
17
+ file: basename(f),
18
+ }));
19
+ }
20
+ function readYamlFilesRecursive(dir, prefix = "") {
21
+ if (!existsSync(dir))
22
+ return [];
23
+ return readdirSync(dir, { withFileTypes: true })
24
+ .sort((a, b) => a.name.localeCompare(b.name))
25
+ .flatMap((entry) => {
26
+ const relPath = prefix ? join(prefix, entry.name) : entry.name;
27
+ const fullPath = join(dir, entry.name);
28
+ if (entry.isDirectory()) {
29
+ return readYamlFilesRecursive(fullPath, relPath);
30
+ }
31
+ if (!entry.isFile() ||
32
+ (!entry.name.endsWith(".yaml") && !entry.name.endsWith(".yml"))) {
33
+ return [];
34
+ }
35
+ return [
36
+ {
37
+ data: parseYaml(readFileSync(fullPath, "utf8")),
38
+ file: relPath,
39
+ },
40
+ ];
41
+ });
42
+ }
43
+ function checkErrors(errors) {
44
+ if (errors.length > 0) {
45
+ for (const e of errors) {
46
+ printError(` ${e.file}: ${e.field} — ${e.message}`);
47
+ }
48
+ throw new ValidationError(`Schema validation failed (${errors.length} error${errors.length > 1 ? "s" : ""})`);
49
+ }
50
+ }
51
+ function resolveProjectLayout(inputPath) {
52
+ const requestedPath = resolve(inputPath || ".");
53
+ let projectPath;
54
+ let projectRoot;
55
+ if (existsSync(requestedPath) && statSync(requestedPath).isFile()) {
56
+ if (basename(requestedPath) !== "lobu.toml") {
57
+ throw new ValidationError(`Expected a lobu.toml file, got ${basename(requestedPath)}`);
58
+ }
59
+ projectPath = requestedPath;
60
+ projectRoot = dirname(requestedPath);
61
+ }
62
+ else {
63
+ projectPath = join(requestedPath, "lobu.toml");
64
+ projectRoot = requestedPath;
65
+ if (!existsSync(projectPath)) {
66
+ throw new ValidationError(`Could not find lobu.toml at ${projectPath}`);
67
+ }
68
+ }
69
+ const toml = parseToml(readFileSync(projectPath, "utf8"));
70
+ const memory = toml.memory
71
+ ?.owletto;
72
+ if (!memory) {
73
+ throw new ValidationError(`lobu.toml at ${projectPath} is missing a [memory.owletto] section`);
74
+ }
75
+ if (memory.enabled === false) {
76
+ throw new ValidationError(`[memory.owletto] in ${projectPath} is disabled (enabled = false)`);
77
+ }
78
+ const org = typeof memory.org === "string" ? memory.org.trim() : "";
79
+ const name = typeof memory.name === "string" ? memory.name.trim() : "";
80
+ if (!org) {
81
+ throw new ValidationError(`[memory.owletto] in ${projectPath} is missing required field "org"`);
82
+ }
83
+ if (!name) {
84
+ throw new ValidationError(`[memory.owletto] in ${projectPath} is missing required field "name"`);
85
+ }
86
+ const description = typeof memory.description === "string" ? memory.description : undefined;
87
+ const modelsRel = typeof memory.models === "string" && memory.models.trim()
88
+ ? memory.models
89
+ : "./models";
90
+ const dataRel = typeof memory.data === "string" && memory.data.trim()
91
+ ? memory.data
92
+ : "./data";
93
+ const modelsPath = isAbsolute(modelsRel)
94
+ ? modelsRel
95
+ : resolve(projectRoot, modelsRel);
96
+ const dataPath = isAbsolute(dataRel)
97
+ ? dataRel
98
+ : resolve(projectRoot, dataRel);
99
+ return {
100
+ projectRoot,
101
+ projectPath,
102
+ modelsPath,
103
+ dataPath,
104
+ org,
105
+ name,
106
+ description,
107
+ };
108
+ }
109
+ /**
110
+ * Load models from the `models/` directory (type in each file).
111
+ */
112
+ function loadModels(modelsPath) {
113
+ const entries = readYamlFiles(modelsPath);
114
+ for (const { data, file } of entries) {
115
+ checkErrors(validateModel(data, file));
116
+ }
117
+ return entries.map(({ data, file }) => ({
118
+ data,
119
+ file,
120
+ modelType: data.type,
121
+ }));
122
+ }
123
+ function loadDataRecords(dataPath) {
124
+ const entries = readYamlFilesRecursive(dataPath);
125
+ for (const { data, file } of entries) {
126
+ checkErrors(validateDataRecord(data, file));
127
+ }
128
+ return entries.map(({ data, file }) => ({
129
+ data,
130
+ file,
131
+ recordType: data.type,
132
+ }));
133
+ }
134
+ function deriveApiBaseUrl(mcpUrl) {
135
+ const url = new URL(mcpUrl);
136
+ url.pathname = "";
137
+ url.search = "";
138
+ url.hash = "";
139
+ return url.toString().replace(/\/+$/, "");
140
+ }
141
+ async function callTool(ctx, toolName, args) {
142
+ const url = `${ctx.apiBaseUrl}/api/${ctx.orgSlug}/${toolName}`;
143
+ const res = await fetch(url, {
144
+ method: "POST",
145
+ headers: {
146
+ "Content-Type": "application/json",
147
+ Authorization: `Bearer ${ctx.token}`,
148
+ },
149
+ body: JSON.stringify(args),
150
+ });
151
+ const body = await res.text();
152
+ let parsed;
153
+ try {
154
+ parsed = JSON.parse(body);
155
+ }
156
+ catch {
157
+ throw new ApiError(`Invalid JSON from ${toolName}: ${body}`, res.status);
158
+ }
159
+ if (!res.ok) {
160
+ const msg = typeof parsed.error === "string" ? parsed.error : `HTTP ${res.status}`;
161
+ throw new ApiError(msg, res.status);
162
+ }
163
+ return parsed;
164
+ }
165
+ async function seedEntity(entity, ctx) {
166
+ const slug = entity.slug;
167
+ if (ctx.dryRun) {
168
+ printText(` [dry-run] would create entity_type: ${slug}`);
169
+ return;
170
+ }
171
+ try {
172
+ await callTool(ctx, "manage_entity_schema", {
173
+ schema_type: "entity_type",
174
+ action: "create",
175
+ ...entity,
176
+ });
177
+ printText(` + entity_type: ${slug}`);
178
+ }
179
+ catch (e) {
180
+ if (e instanceof Error && e.message?.includes("already exists")) {
181
+ printText(` = entity_type: ${slug} (exists)`);
182
+ }
183
+ else {
184
+ throw e;
185
+ }
186
+ }
187
+ }
188
+ async function seedRelationshipType(rel, ctx) {
189
+ const slug = rel.slug;
190
+ const rules = Array.isArray(rel.rules)
191
+ ? rel.rules
192
+ : [];
193
+ // Strip `rules` from the create payload — the backend's manage_entity_schema
194
+ // create handler doesn't accept it; rules are registered via separate
195
+ // add_rule calls below.
196
+ const { rules: _unused, ...createPayload } = rel;
197
+ if (ctx.dryRun) {
198
+ printText(` [dry-run] would create relationship_type: ${slug}`);
199
+ for (const rule of rules) {
200
+ printText(` [dry-run] + rule: ${rule.source} -> ${rule.target}`);
201
+ }
202
+ return;
203
+ }
204
+ try {
205
+ await callTool(ctx, "manage_entity_schema", {
206
+ schema_type: "relationship_type",
207
+ action: "create",
208
+ ...createPayload,
209
+ });
210
+ printText(` + relationship_type: ${slug}`);
211
+ }
212
+ catch (e) {
213
+ if (e instanceof Error && e.message?.includes("already exists")) {
214
+ await callTool(ctx, "manage_entity_schema", {
215
+ schema_type: "relationship_type",
216
+ action: "update",
217
+ ...createPayload,
218
+ });
219
+ printText(` = relationship_type: ${slug} (updated)`);
220
+ }
221
+ else {
222
+ throw e;
223
+ }
224
+ }
225
+ for (const rule of rules) {
226
+ const source = String(rule.source ?? "");
227
+ const target = String(rule.target ?? "");
228
+ if (!source || !target)
229
+ continue;
230
+ try {
231
+ await callTool(ctx, "manage_entity_schema", {
232
+ schema_type: "relationship_type",
233
+ action: "add_rule",
234
+ slug,
235
+ source_entity_type_slug: source,
236
+ target_entity_type_slug: target,
237
+ });
238
+ printText(` + rule: ${source} -> ${target}`);
239
+ }
240
+ catch (e) {
241
+ if (e instanceof Error && e.message?.includes("already exists")) {
242
+ printText(` = rule: ${source} -> ${target} (exists)`);
243
+ }
244
+ else {
245
+ throw e;
246
+ }
247
+ }
248
+ }
249
+ }
250
+ function addEntityRef(entityMap, entity) {
251
+ entityMap.set(entity.slug, entity.id);
252
+ entityMap.set(`${entity.entity_type}:${entity.slug}`, entity.id);
253
+ }
254
+ function resolveEntityRef(entityMap, ref) {
255
+ return entityMap.get(ref) ?? null;
256
+ }
257
+ async function loadEntityMap(ctx, entityTypes) {
258
+ const entityMap = new Map();
259
+ const uniqueTypes = Array.from(new Set(entityTypes.filter(Boolean))).sort();
260
+ const PAGE_SIZE = 500;
261
+ for (const entityType of uniqueTypes) {
262
+ let offset = 0;
263
+ while (true) {
264
+ const result = await callTool(ctx, "manage_entity", {
265
+ action: "list",
266
+ entity_type: entityType,
267
+ limit: PAGE_SIZE,
268
+ offset,
269
+ });
270
+ const entities = (result.entities || []);
271
+ for (const entity of entities) {
272
+ addEntityRef(entityMap, entity);
273
+ }
274
+ if (entities.length < PAGE_SIZE)
275
+ break;
276
+ offset += PAGE_SIZE;
277
+ }
278
+ }
279
+ return entityMap;
280
+ }
281
+ async function seedDataEntity(entity, entityMap, ctx) {
282
+ if (ctx.dryRun) {
283
+ if (entity.parent && !resolveEntityRef(entityMap, entity.parent)) {
284
+ printError(` ! entity: ${entity.slug} - unknown parent "${entity.parent}", will retry`);
285
+ return false;
286
+ }
287
+ const placeholderId = -(entityMap.size + 1);
288
+ addEntityRef(entityMap, {
289
+ id: placeholderId,
290
+ slug: entity.slug,
291
+ entity_type: entity.entity_type,
292
+ });
293
+ printText(` [dry-run] would create entity: ${entity.slug}`);
294
+ return true;
295
+ }
296
+ const payload = {
297
+ action: "create",
298
+ entity_type: entity.entity_type,
299
+ slug: entity.slug,
300
+ name: entity.name,
301
+ };
302
+ if (entity.content)
303
+ payload.content = entity.content;
304
+ if (entity.metadata)
305
+ payload.metadata = entity.metadata;
306
+ if (entity.enabled_classifiers)
307
+ payload.enabled_classifiers = entity.enabled_classifiers;
308
+ if (entity.parent) {
309
+ const parentId = resolveEntityRef(entityMap, entity.parent);
310
+ if (!parentId) {
311
+ printError(` ! entity: ${entity.slug} - unknown parent "${entity.parent}", will retry`);
312
+ return false;
313
+ }
314
+ payload.parent_id = parentId;
315
+ }
316
+ try {
317
+ const result = await callTool(ctx, "manage_entity", payload);
318
+ const created = result.entity;
319
+ if (created) {
320
+ addEntityRef(entityMap, created);
321
+ }
322
+ printText(` + entity: ${entity.slug}`);
323
+ return true;
324
+ }
325
+ catch (e) {
326
+ if (e instanceof Error && e.message?.includes("already exists")) {
327
+ printText(` = entity: ${entity.slug} (exists)`);
328
+ return true;
329
+ }
330
+ throw e;
331
+ }
332
+ }
333
+ async function seedDataRelationship(relationship, entityMap, ctx) {
334
+ const fromId = resolveEntityRef(entityMap, relationship.from);
335
+ const toId = resolveEntityRef(entityMap, relationship.to);
336
+ if (!fromId || !toId) {
337
+ printError(` ! relationship: ${relationship.relationship_type} - unresolved refs from="${relationship.from}" to="${relationship.to}", skipping`);
338
+ return false;
339
+ }
340
+ if (ctx.dryRun) {
341
+ printText(` [dry-run] would create relationship: ${relationship.relationship_type} (${relationship.from} -> ${relationship.to})`);
342
+ return true;
343
+ }
344
+ try {
345
+ await callTool(ctx, "manage_entity", {
346
+ action: "link",
347
+ from_entity_id: fromId,
348
+ to_entity_id: toId,
349
+ relationship_type_slug: relationship.relationship_type,
350
+ ...(relationship.metadata ? { metadata: relationship.metadata } : {}),
351
+ ...(relationship.confidence !== undefined
352
+ ? { confidence: relationship.confidence }
353
+ : {}),
354
+ ...(relationship.source ? { source: relationship.source } : {}),
355
+ });
356
+ printText(` + relationship: ${relationship.relationship_type} (${relationship.from} -> ${relationship.to})`);
357
+ return true;
358
+ }
359
+ catch (e) {
360
+ if (e instanceof Error && e.message?.includes("already exists")) {
361
+ printText(` = relationship: ${relationship.relationship_type} (${relationship.from} -> ${relationship.to}) (exists)`);
362
+ return true;
363
+ }
364
+ throw e;
365
+ }
366
+ }
367
+ async function seedWatcher(watcher, entityMap, ctx) {
368
+ const payload = { ...watcher };
369
+ const slug = payload.slug;
370
+ if (typeof payload.entity === "string") {
371
+ const entityId = resolveEntityRef(entityMap, payload.entity);
372
+ if (entityId) {
373
+ payload.entity_id = entityId;
374
+ }
375
+ else {
376
+ printError(` ! watcher: ${slug} - unknown entity ref "${payload.entity}", skipping`);
377
+ return;
378
+ }
379
+ delete payload.entity;
380
+ }
381
+ if (!payload.entity_id) {
382
+ const fallbackEntityId = entityMap.values().next().value;
383
+ if (fallbackEntityId) {
384
+ payload.entity_id = fallbackEntityId;
385
+ printText(` ~ watcher: ${slug} - no entity specified, using first seeded entity (${fallbackEntityId})`);
386
+ }
387
+ }
388
+ if (!payload.entity_id) {
389
+ printError(` ! watcher: ${slug} - no entity_id available, skipping`);
390
+ return;
391
+ }
392
+ if (ctx.dryRun) {
393
+ printText(` [dry-run] would create watcher: ${slug}`);
394
+ return;
395
+ }
396
+ try {
397
+ await callTool(ctx, "manage_watchers", {
398
+ action: "create",
399
+ ...payload,
400
+ });
401
+ printText(` + watcher: ${slug}`);
402
+ }
403
+ catch (e) {
404
+ if (e instanceof Error && e.message?.includes("already exists")) {
405
+ printText(` = watcher: ${slug} (exists)`);
406
+ }
407
+ else {
408
+ throw e;
409
+ }
410
+ }
411
+ }
412
+ async function resolveAuth(urlFlag, orgFlag, context) {
413
+ const org = await resolveOrg(orgFlag, undefined, context);
414
+ if (org) {
415
+ const orgSession = await getSessionForOrg(org, context, urlFlag);
416
+ if (orgSession) {
417
+ const result = await getUsableToken(orgSession.key, context);
418
+ if (result) {
419
+ return { token: result.token, mcpUrl: orgSession.key, orgSlug: org };
420
+ }
421
+ }
422
+ const serverUrl = await resolveServerUrl(urlFlag, context);
423
+ if (serverUrl) {
424
+ const orgUrl = mcpUrlForOrg(serverUrl, org);
425
+ const result = await getUsableToken(orgUrl, context);
426
+ if (result) {
427
+ return { token: result.token, mcpUrl: orgUrl, orgSlug: org };
428
+ }
429
+ }
430
+ throw new ValidationError("Not logged in. Run: lobu login");
431
+ }
432
+ const serverUrl = await resolveServerUrl(urlFlag, context);
433
+ const result = await getUsableToken(serverUrl || undefined, context);
434
+ if (!result) {
435
+ throw new ValidationError("Not logged in. Run: lobu login");
436
+ }
437
+ const resolvedOrg = orgFromMcpUrl(result.session.mcpUrl) || result.session.org;
438
+ if (!resolvedOrg) {
439
+ throw new ValidationError("Cannot determine org. Use --org or set LOBU_MEMORY_ORG.");
440
+ }
441
+ return {
442
+ token: result.token,
443
+ mcpUrl: result.session.mcpUrl,
444
+ orgSlug: resolvedOrg,
445
+ };
446
+ }
447
+ export async function seedMemoryWorkspace(opts = {}) {
448
+ const layout = resolveProjectLayout(opts.path);
449
+ const orgOverride = opts.org || layout.org;
450
+ const { token, mcpUrl, orgSlug } = await resolveAuth(opts.url, orgOverride, opts.context);
451
+ const apiBaseUrl = deriveApiBaseUrl(mcpUrl);
452
+ const dryRun = opts.dryRun ?? false;
453
+ const ctx = { apiBaseUrl, orgSlug, token, dryRun };
454
+ printText(`Seeding org: ${orgSlug}${dryRun ? " (dry-run)" : ""}`);
455
+ printText(`Config: ${layout.projectPath}`);
456
+ printText(`Project: ${layout.name}`);
457
+ const models = loadModels(layout.modelsPath);
458
+ const dataRecords = loadDataRecords(layout.dataPath);
459
+ const entityTypes = models.filter((m) => m.modelType === "entity");
460
+ const relationshipTypes = models.filter((m) => m.modelType === "relationship");
461
+ const watchers = models.filter((m) => m.modelType === "watcher");
462
+ const dataEntities = dataRecords.filter((record) => record.recordType === "entity");
463
+ const dataRelationships = dataRecords.filter((record) => record.recordType === "relationship");
464
+ if (entityTypes.length > 0) {
465
+ printText(`\nEntity types (${entityTypes.length}):`);
466
+ for (const { data } of entityTypes) {
467
+ await seedEntity(data, ctx);
468
+ }
469
+ }
470
+ if (relationshipTypes.length > 0) {
471
+ printText(`\nRelationship types (${relationshipTypes.length}):`);
472
+ for (const { data } of relationshipTypes) {
473
+ await seedRelationshipType(data, ctx);
474
+ }
475
+ }
476
+ const entityTypesForLookup = Array.from(new Set([
477
+ ...entityTypes.map((entry) => String(entry.data.slug || "")),
478
+ ...dataEntities.map((entry) => entry.data.entity_type),
479
+ ]));
480
+ const entityMap = dryRun
481
+ ? new Map()
482
+ : await loadEntityMap(ctx, entityTypesForLookup);
483
+ if (dataEntities.length > 0) {
484
+ printText(`\nData entities (${dataEntities.length}):`);
485
+ let pending = [...dataEntities];
486
+ let previousPendingCount = Number.POSITIVE_INFINITY;
487
+ while (pending.length > 0 && pending.length < previousPendingCount) {
488
+ previousPendingCount = pending.length;
489
+ const nextPending = [];
490
+ for (const entry of pending) {
491
+ const resolved = await seedDataEntity(entry.data, entityMap, ctx);
492
+ if (!resolved) {
493
+ nextPending.push(entry);
494
+ }
495
+ }
496
+ pending = nextPending;
497
+ }
498
+ for (const entry of pending) {
499
+ printError(` ! entity: ${entry.data.slug} - could not resolve dependencies, skipped`);
500
+ }
501
+ }
502
+ if (dataRelationships.length > 0) {
503
+ printText(`\nData relationships (${dataRelationships.length}):`);
504
+ for (const entry of dataRelationships) {
505
+ await seedDataRelationship(entry.data, entityMap, ctx);
506
+ }
507
+ }
508
+ if (watchers.length > 0) {
509
+ printText(`\nWatchers (${watchers.length}):`);
510
+ for (const { data } of watchers) {
511
+ await seedWatcher(data, entityMap, ctx);
512
+ }
513
+ }
514
+ printText(dryRun ? "\nDry run complete." : "\nSeed complete.");
515
+ }
516
+ //# sourceMappingURL=seed-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-cmd.js","sourceRoot":"","sources":["../../../../src/commands/memory/_lib/seed-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type BrowserAuthOptions } from "./_lib/browser-auth-cmd.js";
2
+ export declare function memoryBrowserAuthCommand(options: BrowserAuthOptions): Promise<void>;
3
+ //# sourceMappingURL=browser-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-auth.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/browser-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAEpC,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,5 @@
1
+ import { captureBrowserAuth, } from "./_lib/browser-auth-cmd.js";
2
+ export async function memoryBrowserAuthCommand(options) {
3
+ await captureBrowserAuth(options);
4
+ }
5
+ //# sourceMappingURL=browser-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-auth.js","sourceRoot":"","sources":["../../../src/commands/memory/browser-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA2B;IAE3B,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ConfigureOptions } from "./_lib/openclaw-cmd.js";
2
+ export declare function memoryConfigureCommand(options: ConfigureOptions): Promise<void>;
3
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,5 @@
1
+ import { configureMemoryPlugin, } from "./_lib/openclaw-cmd.js";
2
+ export async function memoryConfigureCommand(options) {
3
+ await configureMemoryPlugin(options);
4
+ }
5
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/commands/memory/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB;IAEzB,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type HealthOptions } from "./_lib/openclaw-cmd.js";
2
+ export declare function memoryHealthCommand(options: HealthOptions): Promise<void>;
3
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,5 @@
1
+ import { checkMemoryHealth } from "./_lib/openclaw-cmd.js";
2
+ export async function memoryHealthCommand(options) {
3
+ await checkMemoryHealth(options);
4
+ }
5
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/commands/memory/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,wBAAwB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAsB;IAEtB,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface MemoryInitOptions {
2
+ url?: string;
3
+ agent?: string;
4
+ skipAuth?: boolean;
5
+ }
6
+ export declare function memoryInitCommand(options?: MemoryInitOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/init.ts"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyDD,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf"}