@synap-core/cli 1.2.0 → 1.5.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 (74) hide show
  1. package/README.md +26 -0
  2. package/dist/commands/agents.d.ts +31 -0
  3. package/dist/commands/agents.js +478 -0
  4. package/dist/commands/agents.js.map +1 -0
  5. package/dist/commands/connect.d.ts +18 -1
  6. package/dist/commands/connect.js +154 -74
  7. package/dist/commands/connect.js.map +1 -1
  8. package/dist/commands/connections.d.ts +9 -0
  9. package/dist/commands/connections.js +161 -0
  10. package/dist/commands/connections.js.map +1 -0
  11. package/dist/commands/data.d.ts +43 -0
  12. package/dist/commands/data.js +387 -0
  13. package/dist/commands/data.js.map +1 -0
  14. package/dist/commands/finish.js +41 -8
  15. package/dist/commands/finish.js.map +1 -1
  16. package/dist/commands/infra.d.ts +21 -0
  17. package/dist/commands/infra.js +262 -0
  18. package/dist/commands/infra.js.map +1 -0
  19. package/dist/commands/init.js +188 -10
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/knowledge.d.ts +36 -0
  22. package/dist/commands/knowledge.js +123 -0
  23. package/dist/commands/knowledge.js.map +1 -0
  24. package/dist/commands/openclaw.d.ts +2 -0
  25. package/dist/commands/openclaw.js +300 -23
  26. package/dist/commands/openclaw.js.map +1 -1
  27. package/dist/commands/pods.d.ts +17 -0
  28. package/dist/commands/pods.js +371 -0
  29. package/dist/commands/pods.js.map +1 -0
  30. package/dist/commands/status.d.ts +14 -1
  31. package/dist/commands/status.js +78 -220
  32. package/dist/commands/status.js.map +1 -1
  33. package/dist/commands/update.d.ts +11 -2
  34. package/dist/commands/update.js +116 -5
  35. package/dist/commands/update.js.map +1 -1
  36. package/dist/index.js +370 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/agents-config.d.ts +20 -0
  39. package/dist/lib/agents-config.js +45 -0
  40. package/dist/lib/agents-config.js.map +1 -0
  41. package/dist/lib/auth.d.ts +4 -0
  42. package/dist/lib/auth.js +4 -0
  43. package/dist/lib/auth.js.map +1 -1
  44. package/dist/lib/browser-auth.d.ts +35 -0
  45. package/dist/lib/browser-auth.js +170 -0
  46. package/dist/lib/browser-auth.js.map +1 -0
  47. package/dist/lib/hub-client.d.ts +17 -0
  48. package/dist/lib/hub-client.js +115 -0
  49. package/dist/lib/hub-client.js.map +1 -0
  50. package/dist/lib/openclaw.js +30 -19
  51. package/dist/lib/openclaw.js.map +1 -1
  52. package/dist/lib/pod.d.ts +32 -1
  53. package/dist/lib/pod.js +121 -9
  54. package/dist/lib/pod.js.map +1 -1
  55. package/dist/lib/skills-installer.d.ts +18 -0
  56. package/dist/lib/skills-installer.js +97 -0
  57. package/dist/lib/skills-installer.js.map +1 -0
  58. package/dist/lib/targets.d.ts +65 -0
  59. package/dist/lib/targets.js +673 -0
  60. package/dist/lib/targets.js.map +1 -0
  61. package/package.json +5 -3
  62. package/skills/README.md +91 -0
  63. package/skills/synap/README.md +76 -0
  64. package/skills/synap/SKILL.md +882 -0
  65. package/skills/synap/capture.md +170 -0
  66. package/skills/synap/governance.md +206 -0
  67. package/skills/synap/linking.md +128 -0
  68. package/skills/synap/scripts/orient.sh +28 -0
  69. package/skills/synap-schema/SKILL.md +231 -0
  70. package/skills/synap-schema/property-types.md +228 -0
  71. package/skills/synap-ui/SKILL.md +295 -0
  72. package/skills/synap-ui/bento-recipes.md +608 -0
  73. package/skills/synap-ui/view-types.md +259 -0
  74. package/skills/synap-ui/widget-catalog.md +305 -0
@@ -0,0 +1,371 @@
1
+ /**
2
+ * synap pods — manage multiple pod profiles and switch between them
3
+ *
4
+ * synap pods list list all configured pods
5
+ * synap pods add [name] connect a new pod and save as a named profile
6
+ * synap pods use <name> switch active pod and propagate to all surfaces
7
+ * synap pods remove <name> remove a pod profile
8
+ */
9
+ import prompts from "prompts";
10
+ import ora from "ora";
11
+ import chalk from "chalk";
12
+ import fs from "node:fs";
13
+ import path from "node:path";
14
+ import os from "node:os";
15
+ import { log } from "../utils/logger.js";
16
+ import { checkPodHealth, setupAgent, addPodProfile, setActivePod, setSurfacePod, removePodProfile, listPodProfiles, } from "../lib/pod.js";
17
+ import { TARGETS, writeMcpServerEntry, writeClaudeCodeEnv, } from "../lib/targets.js";
18
+ import { runBrowserAuth } from "../lib/browser-auth.js";
19
+ import { readOpenClawConfig, writeOpenClawConfig, setConfigValue } from "../lib/openclaw.js";
20
+ // ─── list ─────────────────────────────────────────────────────────────────────
21
+ export async function podsList() {
22
+ const profiles = listPodProfiles();
23
+ if (profiles.length === 0) {
24
+ log.info("No pods configured. Run: synap pods add");
25
+ return;
26
+ }
27
+ log.heading("Configured pods");
28
+ const checks = await Promise.all(profiles.map(async (p) => {
29
+ const health = await checkPodHealth(p.config.podUrl).catch(() => ({ healthy: false }));
30
+ return { ...p, healthy: health.healthy };
31
+ }));
32
+ for (const p of checks) {
33
+ const active = p.active ? chalk.green(" ● active") : chalk.dim(" ○");
34
+ const health = p.healthy ? chalk.green("healthy") : chalk.red("unreachable");
35
+ const label = p.config.label ? chalk.dim(` (${p.config.label})`) : "";
36
+ console.log(` ${chalk.bold(p.name.padEnd(14))}${active} ${health} ${chalk.dim(p.config.podUrl)}${label}`);
37
+ }
38
+ log.blank();
39
+ log.dim("synap pods use <name> — switch active pod");
40
+ log.dim("synap pods add [name] — connect another pod");
41
+ }
42
+ // ─── add ──────────────────────────────────────────────────────────────────────
43
+ export async function podsAdd(name, podUrlArg) {
44
+ // Resolve profile name
45
+ let profileName = name;
46
+ if (!profileName) {
47
+ const existing = listPodProfiles().map((p) => p.name);
48
+ const { inputName } = await prompts({
49
+ type: "text",
50
+ name: "inputName",
51
+ message: "Profile name for this pod:",
52
+ initial: existing.includes("personal") ? "team" : existing.includes("default") ? "personal" : "default",
53
+ validate: (v) => v.trim().length > 0 || "Name is required",
54
+ });
55
+ if (!inputName)
56
+ return;
57
+ profileName = inputName.trim().toLowerCase().replace(/\s+/g, "-");
58
+ }
59
+ // Pod URL — pre-filled if passed as positional arg
60
+ const { url } = await prompts({
61
+ type: "text",
62
+ name: "url",
63
+ message: "Pod URL:",
64
+ initial: podUrlArg ?? "https://",
65
+ validate: (v) => v.startsWith("http") || "Must be a valid URL",
66
+ });
67
+ if (!url)
68
+ return;
69
+ const spinner = ora("Checking pod health...").start();
70
+ const health = await checkPodHealth(url);
71
+ if (!health.healthy) {
72
+ spinner.fail(`Pod not reachable at ${url}`);
73
+ return;
74
+ }
75
+ spinner.succeed(`Pod healthy at ${url}`);
76
+ // Optional label
77
+ const { label } = await prompts({
78
+ type: "text",
79
+ name: "label",
80
+ message: "Label (optional, e.g. 'Personal' or 'Team'):",
81
+ });
82
+ // API key
83
+ const { method } = await prompts({
84
+ type: "select",
85
+ name: "method",
86
+ message: "Authentication:",
87
+ choices: [
88
+ { title: "Open browser to approve (recommended)", value: "browser" },
89
+ { title: "Paste existing API key", value: "paste" },
90
+ { title: "Generate via PROVISIONING_TOKEN (self-hosted admin)", value: "provisioning" },
91
+ ],
92
+ });
93
+ if (!method)
94
+ return;
95
+ let apiKey;
96
+ let workspaceId;
97
+ let agentUserId;
98
+ const podUrl = url;
99
+ if (method === "browser") {
100
+ const browserSpinner = ora("Opening browser to approve...").start();
101
+ try {
102
+ const result = await runBrowserAuth({
103
+ podUrl,
104
+ integration: "cli",
105
+ onUrlReady: (authUrl) => {
106
+ browserSpinner.stop();
107
+ log.info(`Opening ${chalk.cyan(authUrl)}`);
108
+ log.dim("Sign in and click Generate & connect.");
109
+ },
110
+ });
111
+ apiKey = result.apiKey;
112
+ workspaceId = result.workspaceId;
113
+ }
114
+ catch (err) {
115
+ browserSpinner.stop();
116
+ log.error(err instanceof Error ? err.message : "Browser flow failed");
117
+ return;
118
+ }
119
+ }
120
+ else if (method === "paste") {
121
+ const { key } = await prompts({ type: "password", name: "key", message: "Hub Protocol API key:" });
122
+ apiKey = key;
123
+ }
124
+ else if (method === "provisioning") {
125
+ const { token } = await prompts({ type: "password", name: "token", message: "PROVISIONING_TOKEN:" });
126
+ if (!token)
127
+ return;
128
+ const genSpinner = ora("Creating agent credentials...").start();
129
+ try {
130
+ const result = await setupAgent(podUrl, token, "cli");
131
+ apiKey = result.hubApiKey;
132
+ workspaceId = result.workspaceId;
133
+ agentUserId = result.agentUserId;
134
+ genSpinner.succeed("Credentials created");
135
+ }
136
+ catch (err) {
137
+ genSpinner.fail(err instanceof Error ? err.message : "Failed");
138
+ return;
139
+ }
140
+ }
141
+ if (!apiKey)
142
+ return;
143
+ addPodProfile(profileName, {
144
+ podUrl,
145
+ workspaceId: workspaceId ?? "",
146
+ agentUserId: agentUserId ?? "",
147
+ hubApiKey: apiKey,
148
+ label: label || undefined,
149
+ savedAt: new Date().toISOString(),
150
+ });
151
+ log.blank();
152
+ log.success(`Pod '${profileName}' saved.`);
153
+ log.dim(`Run: synap pods use ${profileName} — to make it active`);
154
+ }
155
+ const SURFACE_LABELS = {
156
+ raycast: "Raycast",
157
+ "claude-code": "Claude Code",
158
+ "claude-desktop": "Claude Desktop",
159
+ cursor: "Cursor",
160
+ openclaw: "OpenClaw",
161
+ };
162
+ export async function podsUse(name, opts = {}) {
163
+ const profiles = listPodProfiles();
164
+ const profile = profiles.find((p) => p.name === name);
165
+ if (!profile) {
166
+ log.error(`Pod profile '${name}' not found.`);
167
+ if (profiles.length > 0)
168
+ log.dim("Available: " + profiles.map((p) => p.name).join(", "));
169
+ return;
170
+ }
171
+ const podConfig = profile.config;
172
+ if (opts.surface) {
173
+ // Per-surface switch — only update that surface's config
174
+ try {
175
+ setSurfacePod(opts.surface, name);
176
+ }
177
+ catch (err) {
178
+ log.error(err instanceof Error ? err.message : String(err));
179
+ return;
180
+ }
181
+ log.info(`${SURFACE_LABELS[opts.surface]} → pod '${name}' (${podConfig.podUrl})`);
182
+ await applySurfaceConfig(opts.surface, podConfig);
183
+ log.blank();
184
+ log.dim("Other surfaces are unchanged. Run without --surface to switch all.");
185
+ return;
186
+ }
187
+ // Global switch — update activePod + propagate to all surfaces
188
+ setActivePod(name);
189
+ log.info(`Switching all surfaces to pod '${name}' (${podConfig.podUrl})`);
190
+ log.blank();
191
+ const updated = [];
192
+ // Claude Desktop
193
+ const desktopPath = TARGETS["claude-desktop"].mcpConfigPath?.();
194
+ if (desktopPath && fs.existsSync(desktopPath)) {
195
+ writeMcpServerEntry(desktopPath, "synap", {
196
+ command: "npx",
197
+ args: ["-y", "mcp-remote", `${podConfig.podUrl.replace(/\/$/, "")}/mcp`, "--header", `Authorization: Bearer ${podConfig.hubApiKey}`],
198
+ });
199
+ updated.push("Claude Desktop");
200
+ }
201
+ // Cursor
202
+ const cursorPath = TARGETS["cursor"].mcpConfigPath?.();
203
+ if (cursorPath && fs.existsSync(cursorPath)) {
204
+ writeMcpServerEntry(cursorPath, "synap", {
205
+ url: `${podConfig.podUrl}/mcp`,
206
+ headers: { Authorization: `Bearer ${podConfig.hubApiKey}` },
207
+ });
208
+ updated.push("Cursor");
209
+ }
210
+ // Claude Code
211
+ const claudeSettings = path.join(os.homedir(), ".claude", "settings.json");
212
+ if (fs.existsSync(claudeSettings)) {
213
+ await writeClaudeCodeEnv({ podUrl: podConfig.podUrl, apiKey: podConfig.hubApiKey, workspaceId: podConfig.workspaceId, agentUserId: podConfig.agentUserId });
214
+ updated.push("Claude Code");
215
+ }
216
+ // OpenClaw
217
+ try {
218
+ const ocConfig = readOpenClawConfig();
219
+ if (ocConfig) {
220
+ setConfigValue(ocConfig, "synap.podUrl", podConfig.podUrl);
221
+ setConfigValue(ocConfig, "synap.hubApiKey", podConfig.hubApiKey);
222
+ if (podConfig.workspaceId)
223
+ setConfigValue(ocConfig, "synap.workspaceId", podConfig.workspaceId);
224
+ if (podConfig.agentUserId)
225
+ setConfigValue(ocConfig, "synap.agentUserId", podConfig.agentUserId);
226
+ writeOpenClawConfig(ocConfig);
227
+ updated.push("OpenClaw");
228
+ }
229
+ }
230
+ catch { /* OpenClaw not installed — skip */ }
231
+ // Raycast reads ~/.synap/config.json directly — activePod update is sufficient.
232
+ updated.push("Raycast");
233
+ log.success(`Updated: ${updated.join(", ")}`);
234
+ log.dim("Restart any open agents to apply the new pod.");
235
+ log.blank();
236
+ log.dim("Tip: synap pods use <name> --surface <surface> — switch only one surface");
237
+ }
238
+ /** Apply a pod config to a single surface's external config file. */
239
+ async function applySurfaceConfig(surface, podConfig) {
240
+ switch (surface) {
241
+ case "claude-desktop": {
242
+ const p = TARGETS["claude-desktop"].mcpConfigPath?.();
243
+ if (p && fs.existsSync(p)) {
244
+ writeMcpServerEntry(p, "synap", {
245
+ command: "npx",
246
+ args: ["-y", "mcp-remote", `${podConfig.podUrl.replace(/\/$/, "")}/mcp`, "--header", `Authorization: Bearer ${podConfig.hubApiKey}`],
247
+ });
248
+ log.success("Claude Desktop MCP config updated.");
249
+ log.dim("Quit + relaunch Claude Desktop to apply.");
250
+ }
251
+ else {
252
+ log.dim("Claude Desktop config not found — run `synap connect --target=claude-desktop` first.");
253
+ }
254
+ break;
255
+ }
256
+ case "cursor": {
257
+ const p = TARGETS["cursor"].mcpConfigPath?.();
258
+ if (p && fs.existsSync(p)) {
259
+ writeMcpServerEntry(p, "synap", {
260
+ url: `${podConfig.podUrl}/mcp`,
261
+ headers: { Authorization: `Bearer ${podConfig.hubApiKey}` },
262
+ });
263
+ log.success("Cursor MCP config updated.");
264
+ }
265
+ else {
266
+ log.dim("Cursor config not found — run `synap connect --target=cursor` first.");
267
+ }
268
+ break;
269
+ }
270
+ case "claude-code": {
271
+ const p = path.join(os.homedir(), ".claude", "settings.json");
272
+ if (fs.existsSync(p)) {
273
+ await writeClaudeCodeEnv({ podUrl: podConfig.podUrl, apiKey: podConfig.hubApiKey, workspaceId: podConfig.workspaceId, agentUserId: podConfig.agentUserId });
274
+ log.success("Claude Code env updated (~/.claude/settings.json).");
275
+ }
276
+ else {
277
+ log.dim("Claude Code settings not found — run `synap connect --target=claude-code` first.");
278
+ }
279
+ break;
280
+ }
281
+ case "openclaw": {
282
+ try {
283
+ const ocConfig = readOpenClawConfig();
284
+ if (ocConfig) {
285
+ setConfigValue(ocConfig, "synap.podUrl", podConfig.podUrl);
286
+ setConfigValue(ocConfig, "synap.hubApiKey", podConfig.hubApiKey);
287
+ if (podConfig.workspaceId)
288
+ setConfigValue(ocConfig, "synap.workspaceId", podConfig.workspaceId);
289
+ writeOpenClawConfig(ocConfig);
290
+ log.success("OpenClaw config updated.");
291
+ }
292
+ else {
293
+ log.dim("OpenClaw config not found.");
294
+ }
295
+ }
296
+ catch {
297
+ log.dim("OpenClaw not installed.");
298
+ }
299
+ break;
300
+ }
301
+ case "raycast":
302
+ // Raycast reads ~/.synap/config.json directly — surfaces entry is enough.
303
+ log.success("Raycast surface preference saved.");
304
+ break;
305
+ }
306
+ }
307
+ // ─── switch (interactive) ─────────────────────────────────────────────────────
308
+ export async function podsSwitch(name) {
309
+ const profiles = listPodProfiles();
310
+ if (profiles.length === 0) {
311
+ log.info("No pods configured. Run: synap pods add");
312
+ return;
313
+ }
314
+ let targetName = name;
315
+ if (!targetName) {
316
+ if (profiles.length === 1) {
317
+ log.info(`Only one pod configured: ${chalk.bold(profiles[0].name)}`);
318
+ targetName = profiles[0].name;
319
+ }
320
+ else {
321
+ const active = profiles.find((p) => p.active);
322
+ const { picked } = await prompts({
323
+ type: "select",
324
+ name: "picked",
325
+ message: "Switch to which pod?",
326
+ choices: profiles.map((p) => ({
327
+ title: `${chalk.bold(p.name)}${p.active ? chalk.green(" ← active") : ""} ${chalk.dim(p.config.podUrl)}`,
328
+ value: p.name,
329
+ })),
330
+ initial: active ? profiles.indexOf(active) : 0,
331
+ });
332
+ if (!picked)
333
+ return;
334
+ targetName = picked;
335
+ }
336
+ }
337
+ await podsUse(targetName);
338
+ }
339
+ // ─── remove ───────────────────────────────────────────────────────────────────
340
+ export async function podsRemove(name) {
341
+ const profiles = listPodProfiles();
342
+ const profile = profiles.find((p) => p.name === name);
343
+ if (!profile) {
344
+ log.error(`Pod profile '${name}' not found.`);
345
+ if (profiles.length > 0)
346
+ log.dim("Available: " + profiles.map((p) => p.name).join(", "));
347
+ return;
348
+ }
349
+ if (profile.active) {
350
+ log.warn(`'${name}' is the active pod.`);
351
+ const remaining = profiles.filter((p) => p.name !== name);
352
+ if (remaining.length > 0) {
353
+ log.dim(`Will switch to '${remaining[0].name}' after removal.`);
354
+ }
355
+ }
356
+ const { confirm } = await prompts({
357
+ type: "confirm",
358
+ name: "confirm",
359
+ message: `Remove pod profile '${name}' (${profile.config.podUrl})?`,
360
+ initial: false,
361
+ });
362
+ if (!confirm)
363
+ return;
364
+ removePodProfile(name);
365
+ log.success(`Removed '${name}'.`);
366
+ const after = listPodProfiles();
367
+ if (after.length > 0 && profile.active) {
368
+ log.dim(`Active pod is now '${after[0].name}'.`);
369
+ }
370
+ }
371
+ //# sourceMappingURL=pods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pods.js","sourceRoot":"","sources":["../../src/commands/pods.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
1
  /**
2
2
  * synap status
3
3
  *
4
- * Show Synap pod + OpenClaw health at a glance.
4
+ * API-only status: hits the pod's `/health` endpoint and related remote
5
+ * status endpoints. Never shells out to Docker; never SSHes. The bash
6
+ * `./synap health` on the pod host is the canonical local health check —
7
+ * this npm CLI is the remote / laptop-side view.
8
+ *
9
+ * Sources (all HTTP):
10
+ * - Pod `/health` (basic reachability + version)
11
+ * - Pod `/api/provision/status` (Intelligence Service state)
12
+ * - CP `/openclaw/status/:podId` for managed pods (via stored creds)
13
+ *
14
+ * Explicitly NOT sources anymore:
15
+ * - `docker ps` / `docker inspect` / `docker logs` (was getOpenClawDockerStatus)
16
+ * - `docker exec openclaw openclaw skills list` (was isSynapSkillInstalledInDocker)
17
+ * For those, the user runs `./synap health` on the pod host.
5
18
  */
6
19
  export declare function status(): Promise<void>;