@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,140 @@
1
+ import { afterEach, describe, expect, test } from "bun:test";
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { buildStablePlatformId, loadDesiredState } from "../desired-state.js";
6
+ describe("buildStablePlatformId — keep in sync with file-loader.ts", () => {
7
+ test("two parts when no name", () => {
8
+ expect(buildStablePlatformId("triage", "telegram")).toBe("triage-telegram");
9
+ });
10
+ test("three parts when name provided", () => {
11
+ expect(buildStablePlatformId("triage", "slack", "ops")).toBe("triage-slack-ops");
12
+ });
13
+ test("slugifies non-alphanumeric chars in agent + type + name", () => {
14
+ expect(buildStablePlatformId("Tri Age", "Slack/Ops", "Bot 1")).toBe("tri-age-slack-ops-bot-1");
15
+ });
16
+ });
17
+ describe("loadDesiredState", () => {
18
+ const tempDirs = [];
19
+ afterEach(() => {
20
+ while (tempDirs.length > 0) {
21
+ const dir = tempDirs.pop();
22
+ if (dir)
23
+ rmSync(dir, { recursive: true, force: true });
24
+ }
25
+ });
26
+ function mkProject(toml) {
27
+ const dir = mkdtempSync(join(tmpdir(), "lobu-apply-"));
28
+ tempDirs.push(dir);
29
+ writeFileSync(join(dir, "lobu.toml"), toml);
30
+ return dir;
31
+ }
32
+ test("collects $VAR references from platforms + providers", async () => {
33
+ const dir = mkProject(`[agents.triage]
34
+ name = "Triage"
35
+ description = ""
36
+ dir = "./agents/triage"
37
+
38
+ [[agents.triage.providers]]
39
+ id = "anthropic"
40
+ key = "$ANTHROPIC_API_KEY"
41
+
42
+ [[agents.triage.platforms]]
43
+ type = "telegram"
44
+ [agents.triage.platforms.config]
45
+ botToken = "$TELEGRAM_BOT_TOKEN"
46
+ `);
47
+ // Provide an empty agent dir so markdown read returns nothing.
48
+ const { state } = await loadDesiredState({
49
+ cwd: dir,
50
+ env: {
51
+ ANTHROPIC_API_KEY: "sk-anth-fake",
52
+ TELEGRAM_BOT_TOKEN: "tg-fake-token",
53
+ },
54
+ });
55
+ expect(state.requiredSecrets).toEqual([
56
+ "ANTHROPIC_API_KEY",
57
+ "TELEGRAM_BOT_TOKEN",
58
+ ]);
59
+ expect(state.agents).toHaveLength(1);
60
+ expect(state.agents[0].metadata.agentId).toBe("triage");
61
+ expect(state.agents[0].platforms).toHaveLength(1);
62
+ expect(state.agents[0].platforms[0].stableId).toBe("triage-telegram");
63
+ expect(state.agents[0].platforms[0].config.botToken).toBe("tg-fake-token");
64
+ });
65
+ test("throws when a platform $VAR ref is unset in the apply env", async () => {
66
+ const dir = mkProject(`[agents.triage]
67
+ name = "Triage"
68
+ dir = "./agents/triage"
69
+
70
+ [[agents.triage.platforms]]
71
+ type = "telegram"
72
+ [agents.triage.platforms.config]
73
+ botToken = "$TELEGRAM_BOT_TOKEN"
74
+ `);
75
+ await expect(loadDesiredState({ cwd: dir, env: {} })).rejects.toThrow(/\$TELEGRAM_BOT_TOKEN/);
76
+ });
77
+ test("rejects duplicate (type, name) platform pairs", async () => {
78
+ const dir = mkProject(`[agents.triage]
79
+ name = "Triage"
80
+ dir = "./agents/triage"
81
+
82
+ [[agents.triage.platforms]]
83
+ type = "slack"
84
+ [agents.triage.platforms.config]
85
+ botToken = "x"
86
+
87
+ [[agents.triage.platforms]]
88
+ type = "slack"
89
+ [agents.triage.platforms.config]
90
+ botToken = "y"
91
+ `);
92
+ await expect(loadDesiredState({ cwd: dir })).rejects.toThrow(/multiple "slack" platforms/);
93
+ });
94
+ test("loads local skills and merges skill network, nix, and MCP declarations", async () => {
95
+ const dir = mkProject(`[agents.triage]
96
+ name = "Triage"
97
+ dir = "./agents/triage"
98
+
99
+ [agents.triage.network]
100
+ allowed = ["api.operator.example.com"]
101
+
102
+ [agents.triage.worker]
103
+ nix_packages = ["git"]
104
+ `);
105
+ const skillDir = join(dir, "agents", "triage", "skills", "docs-search");
106
+ mkdirSync(skillDir, { recursive: true });
107
+ writeFileSync(join(skillDir, "SKILL.md"), `---
108
+ name: docs-search
109
+ description: Search docs safely
110
+ nixPackages: [ripgrep]
111
+ network:
112
+ allow: ["*.docs.example.com", "*"]
113
+ mcpServers:
114
+ docs:
115
+ url: "https://docs.example.com/mcp"
116
+ ---
117
+ Use the docs MCP before answering.
118
+ `);
119
+ const { state } = await loadDesiredState({ cwd: dir });
120
+ const settings = state.agents[0].settings;
121
+ expect(settings.skillsConfig?.skills[0]?.name).toBe("docs-search");
122
+ expect(settings.networkConfig?.allowedDomains).toEqual([
123
+ "api.operator.example.com",
124
+ ".docs.example.com",
125
+ ]);
126
+ expect(settings.nixConfig?.packages).toEqual(["git", "ripgrep"]);
127
+ expect(settings.mcpServers?.docs?.url).toBe("https://docs.example.com/mcp");
128
+ });
129
+ test("rejects watcher blocks (v1 doesn't sync watchers)", async () => {
130
+ const dir = mkProject(`[agents.triage]
131
+ name = "Triage"
132
+ dir = "./agents/triage"
133
+
134
+ [[agents.triage.watchers]]
135
+ slug = "stale"
136
+ `);
137
+ await expect(loadDesiredState({ cwd: dir })).rejects.toThrow(/watchers/);
138
+ });
139
+ });
140
+ //# sourceMappingURL=desired-state.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desired-state.test.js","sourceRoot":"","sources":["../../../../../src/commands/_lib/apply/__tests__/desired-state.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=diff.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["../../../../../src/commands/_lib/apply/__tests__/diff.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,378 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import chalk from "chalk";
3
+ import { computeDiff } from "../diff.js";
4
+ import { renderPlan, renderSummary } from "../render.js";
5
+ // Force chalk to render plain text in snapshots regardless of TTY detection.
6
+ // `chalk.level = 0` strips colors so snapshot diffs aren't TTY-dependent.
7
+ chalk.level = 0;
8
+ function buildDesiredAgent(agentId, overrides = {}) {
9
+ return {
10
+ metadata: { agentId, name: agentId, description: undefined },
11
+ settings: {},
12
+ platforms: [],
13
+ ...overrides,
14
+ };
15
+ }
16
+ function buildState(agents) {
17
+ return {
18
+ agents,
19
+ memorySchema: { entityTypes: [], relationshipTypes: [] },
20
+ requiredSecrets: [],
21
+ };
22
+ }
23
+ function emptyRemote() {
24
+ return {
25
+ agents: [],
26
+ agentSettings: new Map(),
27
+ platformsByAgent: new Map(),
28
+ entityTypes: [],
29
+ relationshipTypes: [],
30
+ };
31
+ }
32
+ describe("apply diff — agents", () => {
33
+ test("create from empty remote", () => {
34
+ const desired = buildState([
35
+ buildDesiredAgent("triage", {
36
+ metadata: {
37
+ agentId: "triage",
38
+ name: "Triage",
39
+ description: "Triage bot",
40
+ },
41
+ }),
42
+ ]);
43
+ const plan = computeDiff(desired, emptyRemote());
44
+ expect(plan.counts).toEqual({ create: 2, update: 0, noop: 0, drift: 0 });
45
+ expect(renderPlan(plan)).toMatchSnapshot();
46
+ });
47
+ test("noop when remote matches desired", () => {
48
+ const desired = buildState([
49
+ buildDesiredAgent("triage", {
50
+ metadata: { agentId: "triage", name: "Triage" },
51
+ }),
52
+ ]);
53
+ const remote = {
54
+ ...emptyRemote(),
55
+ agents: [{ agentId: "triage", name: "Triage" }],
56
+ agentSettings: new Map([["triage", null]]),
57
+ platformsByAgent: new Map([["triage", []]]),
58
+ };
59
+ const plan = computeDiff(desired, remote);
60
+ expect(plan.counts.noop).toBeGreaterThan(0);
61
+ expect(plan.counts.create).toBe(0);
62
+ expect(plan.counts.update).toBe(0);
63
+ expect(renderPlan(plan)).toMatchSnapshot();
64
+ });
65
+ test("update when name differs", () => {
66
+ const desired = buildState([
67
+ buildDesiredAgent("triage", {
68
+ metadata: { agentId: "triage", name: "Renamed" },
69
+ }),
70
+ ]);
71
+ const remote = {
72
+ ...emptyRemote(),
73
+ agents: [{ agentId: "triage", name: "Original" }],
74
+ agentSettings: new Map([["triage", null]]),
75
+ platformsByAgent: new Map([["triage", []]]),
76
+ };
77
+ const plan = computeDiff(desired, remote);
78
+ expect(plan.counts.update).toBeGreaterThan(0);
79
+ expect(renderPlan(plan)).toMatchSnapshot();
80
+ });
81
+ test("drift when remote has agent not in desired", () => {
82
+ const desired = buildState([]);
83
+ const remote = {
84
+ ...emptyRemote(),
85
+ agents: [{ agentId: "stale", name: "Stale Agent" }],
86
+ };
87
+ const plan = computeDiff(desired, remote);
88
+ expect(plan.counts.drift).toBe(1);
89
+ expect(renderPlan(plan)).toMatchSnapshot();
90
+ });
91
+ });
92
+ describe("apply diff — settings", () => {
93
+ test("update on networkConfig change", () => {
94
+ const desired = buildState([
95
+ buildDesiredAgent("triage", {
96
+ metadata: { agentId: "triage", name: "Triage" },
97
+ settings: {
98
+ networkConfig: { allowedDomains: ["github.com"] },
99
+ },
100
+ }),
101
+ ]);
102
+ const remote = {
103
+ ...emptyRemote(),
104
+ agents: [{ agentId: "triage", name: "Triage" }],
105
+ agentSettings: new Map([
106
+ [
107
+ "triage",
108
+ {
109
+ networkConfig: { allowedDomains: ["pypi.org"] },
110
+ updatedAt: 0,
111
+ },
112
+ ],
113
+ ]),
114
+ platformsByAgent: new Map([["triage", []]]),
115
+ };
116
+ const plan = computeDiff(desired, remote);
117
+ const settingsRow = plan.rows.find((r) => r.kind === "settings");
118
+ expect(settingsRow?.verb).toBe("update");
119
+ if (settingsRow?.kind === "settings") {
120
+ expect(settingsRow.changedFields).toContain("networkConfig");
121
+ }
122
+ expect(renderPlan(plan)).toMatchSnapshot();
123
+ });
124
+ test("updates when provider declarations change but ignores installedAt churn", () => {
125
+ const desired = buildState([
126
+ buildDesiredAgent("triage", {
127
+ metadata: { agentId: "triage", name: "Triage" },
128
+ settings: {
129
+ installedProviders: [
130
+ { providerId: "anthropic", installedAt: 200 },
131
+ { providerId: "openai", installedAt: 200 },
132
+ ],
133
+ },
134
+ }),
135
+ ]);
136
+ const remote = {
137
+ ...emptyRemote(),
138
+ agents: [{ agentId: "triage", name: "Triage" }],
139
+ agentSettings: new Map([
140
+ [
141
+ "triage",
142
+ {
143
+ installedProviders: [{ providerId: "anthropic", installedAt: 100 }],
144
+ updatedAt: 0,
145
+ },
146
+ ],
147
+ ]),
148
+ platformsByAgent: new Map([["triage", []]]),
149
+ };
150
+ const plan = computeDiff(desired, remote);
151
+ const settingsRow = plan.rows.find((r) => r.kind === "settings");
152
+ expect(settingsRow?.verb).toBe("update");
153
+ if (settingsRow?.kind === "settings") {
154
+ expect(settingsRow.changedFields).toContain("installedProviders");
155
+ }
156
+ const unchanged = computeDiff(desired, {
157
+ ...remote,
158
+ agentSettings: new Map([
159
+ [
160
+ "triage",
161
+ {
162
+ installedProviders: [
163
+ { providerId: "anthropic", installedAt: 1 },
164
+ { providerId: "openai", installedAt: 2 },
165
+ ],
166
+ updatedAt: 0,
167
+ },
168
+ ],
169
+ ]),
170
+ });
171
+ const unchangedSettingsRow = unchanged.rows.find((r) => r.kind === "settings");
172
+ expect(unchangedSettingsRow?.verb).toBe("noop");
173
+ });
174
+ });
175
+ describe("apply diff — platforms", () => {
176
+ test("create on empty remote", () => {
177
+ const desired = buildState([
178
+ buildDesiredAgent("triage", {
179
+ metadata: { agentId: "triage", name: "Triage" },
180
+ platforms: [
181
+ {
182
+ stableId: "triage-telegram",
183
+ type: "telegram",
184
+ config: { botToken: "abc" },
185
+ },
186
+ ],
187
+ }),
188
+ ]);
189
+ const plan = computeDiff(desired, emptyRemote());
190
+ const platformRow = plan.rows.find((r) => r.kind === "platform");
191
+ expect(platformRow?.verb).toBe("create");
192
+ expect(renderPlan(plan)).toMatchSnapshot();
193
+ });
194
+ test("update with willRestart when config changes", () => {
195
+ const desired = buildState([
196
+ buildDesiredAgent("triage", {
197
+ metadata: { agentId: "triage", name: "Triage" },
198
+ platforms: [
199
+ {
200
+ stableId: "triage-telegram",
201
+ type: "telegram",
202
+ config: { botToken: "new" },
203
+ },
204
+ ],
205
+ }),
206
+ ]);
207
+ const remote = {
208
+ ...emptyRemote(),
209
+ agents: [{ agentId: "triage", name: "Triage" }],
210
+ agentSettings: new Map([["triage", null]]),
211
+ platformsByAgent: new Map([
212
+ [
213
+ "triage",
214
+ [
215
+ {
216
+ id: "triage-telegram",
217
+ platform: "telegram",
218
+ config: { botToken: "old" },
219
+ },
220
+ ],
221
+ ],
222
+ ]),
223
+ };
224
+ const plan = computeDiff(desired, remote);
225
+ const platformRow = plan.rows.find((r) => r.kind === "platform");
226
+ expect(platformRow?.verb).toBe("update");
227
+ if (platformRow?.kind === "platform") {
228
+ expect(platformRow.willRestart).toBe(true);
229
+ }
230
+ expect(renderPlan(plan)).toMatchSnapshot();
231
+ });
232
+ });
233
+ describe("apply diff — memory schema", () => {
234
+ test("creates entity + relationship types", () => {
235
+ const desired = {
236
+ agents: [],
237
+ memorySchema: {
238
+ entityTypes: [{ slug: "company", name: "Company", required: ["name"] }],
239
+ relationshipTypes: [
240
+ {
241
+ slug: "works_at",
242
+ name: "Works At",
243
+ rules: [{ source: "person", target: "company" }],
244
+ },
245
+ ],
246
+ },
247
+ requiredSecrets: [],
248
+ };
249
+ const plan = computeDiff(desired, emptyRemote());
250
+ expect(plan.counts.create).toBe(2);
251
+ expect(renderPlan(plan)).toMatchSnapshot();
252
+ });
253
+ test("noop when remote matches", () => {
254
+ const desired = {
255
+ agents: [],
256
+ memorySchema: {
257
+ entityTypes: [{ slug: "company", name: "Company" }],
258
+ relationshipTypes: [],
259
+ },
260
+ requiredSecrets: [],
261
+ };
262
+ const remote = {
263
+ ...emptyRemote(),
264
+ entityTypes: [{ slug: "company", name: "Company" }],
265
+ };
266
+ const plan = computeDiff(desired, remote);
267
+ expect(plan.counts.noop).toBe(1);
268
+ expect(plan.counts.update).toBe(0);
269
+ });
270
+ });
271
+ describe("apply diff — empty container preservation", () => {
272
+ // Bug fix: previously canonical() collapsed [] and {} to null, which
273
+ // meant clearing a remote allowlist by setting it to [] silently
274
+ // round-tripped as a noop instead of an update.
275
+ test("clearing networkConfig.allowedDomains from non-empty to [] is an update", () => {
276
+ const desired = buildState([
277
+ buildDesiredAgent("triage", {
278
+ metadata: { agentId: "triage", name: "Triage" },
279
+ settings: {
280
+ networkConfig: { allowedDomains: [] },
281
+ },
282
+ }),
283
+ ]);
284
+ const remote = {
285
+ ...emptyRemote(),
286
+ agents: [{ agentId: "triage", name: "Triage" }],
287
+ agentSettings: new Map([
288
+ [
289
+ "triage",
290
+ {
291
+ networkConfig: { allowedDomains: ["foo.com"] },
292
+ updatedAt: 0,
293
+ },
294
+ ],
295
+ ]),
296
+ platformsByAgent: new Map([["triage", []]]),
297
+ };
298
+ const plan = computeDiff(desired, remote);
299
+ const settingsRow = plan.rows.find((r) => r.kind === "settings");
300
+ expect(settingsRow?.verb).toBe("update");
301
+ if (settingsRow?.kind === "settings") {
302
+ expect(settingsRow.changedFields).toContain("networkConfig");
303
+ }
304
+ });
305
+ test("[] is not equal to null (preserved as distinct values)", () => {
306
+ // When desired sets allowedDomains: [] and remote has the field
307
+ // missing entirely, the diff should still treat them as equivalent
308
+ // for the case where remote literally doesn't have the field — but
309
+ // [] vs the explicit array ["foo"] must differ.
310
+ const desiredEmpty = buildState([
311
+ buildDesiredAgent("triage", {
312
+ metadata: { agentId: "triage", name: "Triage" },
313
+ settings: {
314
+ networkConfig: { allowedDomains: [] },
315
+ },
316
+ }),
317
+ ]);
318
+ const remoteWithItems = {
319
+ ...emptyRemote(),
320
+ agents: [{ agentId: "triage", name: "Triage" }],
321
+ agentSettings: new Map([
322
+ [
323
+ "triage",
324
+ {
325
+ networkConfig: { allowedDomains: ["x.com"] },
326
+ updatedAt: 0,
327
+ },
328
+ ],
329
+ ]),
330
+ platformsByAgent: new Map([["triage", []]]),
331
+ };
332
+ const plan = computeDiff(desiredEmpty, remoteWithItems);
333
+ expect(plan.counts.update).toBeGreaterThan(0);
334
+ });
335
+ test("{} is not equal to populated object", () => {
336
+ // empty config object vs populated config object must show as drift/update
337
+ const desired = buildState([
338
+ buildDesiredAgent("triage", {
339
+ metadata: { agentId: "triage", name: "Triage" },
340
+ platforms: [
341
+ {
342
+ stableId: "triage-telegram",
343
+ type: "telegram",
344
+ config: {},
345
+ },
346
+ ],
347
+ }),
348
+ ]);
349
+ const remote = {
350
+ ...emptyRemote(),
351
+ agents: [{ agentId: "triage", name: "Triage" }],
352
+ agentSettings: new Map([["triage", null]]),
353
+ platformsByAgent: new Map([
354
+ [
355
+ "triage",
356
+ [
357
+ {
358
+ id: "triage-telegram",
359
+ platform: "telegram",
360
+ config: { botToken: "abc" },
361
+ },
362
+ ],
363
+ ],
364
+ ]),
365
+ };
366
+ const plan = computeDiff(desired, remote);
367
+ const platformRow = plan.rows.find((r) => r.kind === "platform");
368
+ expect(platformRow?.verb).toBe("update");
369
+ });
370
+ });
371
+ describe("renderSummary", () => {
372
+ test("renders zero-row plan", () => {
373
+ const desired = buildState([]);
374
+ const plan = computeDiff(desired, emptyRemote());
375
+ expect(renderSummary(plan)).toMatchSnapshot();
376
+ });
377
+ });
378
+ //# sourceMappingURL=diff.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.test.js","sourceRoot":"","sources":["../../../../../src/commands/_lib/apply/__tests__/diff.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface ApplyOptions {
2
+ cwd?: string;
3
+ dryRun?: boolean;
4
+ yes?: boolean;
5
+ only?: "agents" | "memory";
6
+ org?: string;
7
+ url?: string;
8
+ /** Test seam — inject a stubbed fetch. */
9
+ fetchImpl?: typeof fetch;
10
+ }
11
+ export declare function applyCommand(opts?: ApplyOptions): Promise<void>;
12
+ //# sourceMappingURL=apply-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-cmd.d.ts","sourceRoot":"","sources":["../../../../src/commands/_lib/apply/apply-cmd.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA6JD,wBAAsB,YAAY,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEzE"}