@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
@@ -1,96 +1,176 @@
1
1
  /**
2
2
  * synap connect
3
3
  *
4
- * Quick connection: link existing OpenClaw to existing Synap pod.
4
+ * Wire an AI surface to a configured Synap pod. Credentials come from stored
5
+ * pod profiles (synap pods add) — no re-authentication needed.
6
+ *
7
+ * Usage:
8
+ * synap connect (interactive: pick surface + pod)
9
+ * synap connect --target=claude-code
10
+ * synap connect --target=claude-desktop
11
+ * synap connect --target=cursor
12
+ * synap connect --target=raycast
13
+ * synap connect --target=openclaw
14
+ * synap connect --target=claude-code --name=team (use specific pod profile)
15
+ *
16
+ * Escape hatch for scripting:
17
+ * synap connect --pod-url <url> --api-key <key> (bypass stored profiles)
5
18
  */
6
19
  import prompts from "prompts";
7
20
  import ora from "ora";
21
+ import chalk from "chalk";
8
22
  import { log, banner } from "../utils/logger.js";
9
- import { detectOpenClaw, readOpenClawConfig, writeOpenClawConfig, setConfigValue } from "../lib/openclaw.js";
10
- import { checkPodHealth, setupAgent } from "../lib/pod.js";
23
+ import { checkPodHealth, listPodProfiles } from "../lib/pod.js";
24
+ import { installForTarget, isTargetName, listTargets, resolveWorkspaceId, TARGETS, } from "../lib/targets.js";
25
+ import { podsAdd } from "./pods.js";
11
26
  export async function connect(opts) {
12
27
  banner();
13
- log.heading("Connect to Synap Pod");
14
- // Get pod URL
28
+ if (opts.list) {
29
+ listTargets();
30
+ return;
31
+ }
32
+ // ── Step 1: Pod (data source) ───────────────────────────────────────────
33
+ // Resolve pod first — the surface config depends on which pod to point at.
15
34
  let podUrl = opts.podUrl;
16
- if (!podUrl) {
17
- const { url } = await prompts({
18
- type: "text",
19
- name: "url",
20
- message: "Synap pod URL:",
21
- initial: "http://localhost:4000",
22
- });
23
- podUrl = url;
35
+ let apiKey = opts.apiKey;
36
+ let workspaceId;
37
+ let agentUserId;
38
+ if (!podUrl || !apiKey) {
39
+ const resolved = await resolvePodFromProfiles(opts.name);
40
+ if (!resolved)
41
+ return;
42
+ podUrl = resolved.podUrl;
43
+ apiKey = resolved.hubApiKey;
44
+ workspaceId = resolved.workspaceId || undefined;
45
+ agentUserId = resolved.agentUserId || undefined;
24
46
  }
25
- if (!podUrl)
26
- return;
27
- // Health check
47
+ // ── Step 2: Health check ────────────────────────────────────────────────
28
48
  const spinner = ora("Checking pod health...").start();
29
- const status = await checkPodHealth(podUrl);
30
- if (!status.healthy) {
49
+ const health = await checkPodHealth(podUrl);
50
+ if (!health.healthy) {
31
51
  spinner.fail(`Pod not reachable at ${podUrl}`);
32
52
  return;
33
53
  }
34
54
  spinner.succeed(`Pod healthy at ${podUrl}`);
35
- // Get or generate API key
36
- let apiKey = opts.apiKey;
37
- if (!apiKey) {
38
- const { method } = await prompts({
39
- type: "select",
40
- name: "method",
41
- message: "Authentication:",
42
- choices: [
43
- { title: "Paste existing API key", value: "paste" },
44
- { title: "Generate new key (needs PROVISIONING_TOKEN)", value: "generate" },
45
- ],
55
+ // ── Step 3: Target (AI surface) ─────────────────────────────────────────
56
+ const target = await resolveTarget(opts.target);
57
+ if (!target)
58
+ return;
59
+ // ── Step 4: Workspace scope ─────────────────────────────────────────────
60
+ // Ask once and inject into MCP URLs. Skipped for Raycast — it reads
61
+ // workspaceId directly from ~/.synap/config.json (the pod profile).
62
+ if (target !== "raycast") {
63
+ workspaceId = await resolveWorkspaceId({ podUrl, apiKey, workspaceId });
64
+ }
65
+ // ── Step 5: Install ─────────────────────────────────────────────────────
66
+ log.heading(`Connecting ${TARGETS[target].label} → ${podUrl}`);
67
+ const ok = await installForTarget(target, { podUrl, apiKey, workspaceId, agentUserId });
68
+ log.blank();
69
+ if (ok) {
70
+ log.success(`${TARGETS[target].label} connected to ${podUrl}`);
71
+ log.dim("Run 'synap connections' to see all surface connections.");
72
+ }
73
+ else {
74
+ log.warn(`${TARGETS[target].label} install did not complete — see above.`);
75
+ }
76
+ }
77
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
78
+ async function resolvePodFromProfiles(preferredName) {
79
+ let profiles = listPodProfiles();
80
+ // No pods yet — offer to add one inline instead of dead-ending
81
+ if (profiles.length === 0) {
82
+ log.blank();
83
+ log.info("No pods configured yet.");
84
+ const { shouldAdd } = await prompts({
85
+ type: "confirm",
86
+ name: "shouldAdd",
87
+ message: "Add a pod now?",
88
+ initial: true,
46
89
  });
47
- if (method === "paste") {
48
- const { key } = await prompts({
49
- type: "password",
50
- name: "key",
51
- message: "Hub Protocol API key:",
52
- });
53
- apiKey = key;
90
+ if (!shouldAdd)
91
+ return null;
92
+ log.blank();
93
+ await podsAdd();
94
+ profiles = listPodProfiles();
95
+ if (profiles.length === 0)
96
+ return null; // user bailed out of add flow
97
+ }
98
+ // --name flag: use that profile directly
99
+ if (preferredName) {
100
+ const match = profiles.find((p) => p.name === preferredName);
101
+ if (!match) {
102
+ log.error(`Pod profile '${preferredName}' not found.`);
103
+ log.dim("Available: " + profiles.map((p) => p.name).join(", "));
104
+ return null;
54
105
  }
55
- else {
56
- const { token } = await prompts({
57
- type: "password",
58
- name: "token",
59
- message: "PROVISIONING_TOKEN:",
60
- });
61
- if (token) {
62
- const genSpinner = ora("Creating agent credentials...").start();
63
- try {
64
- const result = await setupAgent(podUrl, token);
65
- apiKey = result.hubApiKey;
66
- genSpinner.succeed("Credentials created");
67
- // Save to OpenClaw config
68
- const oc = detectOpenClaw();
69
- if (oc.found) {
70
- const config = readOpenClawConfig() ?? {};
71
- setConfigValue(config, "synap.podUrl", podUrl);
72
- setConfigValue(config, "synap.workspaceId", result.workspaceId);
73
- setConfigValue(config, "synap.agentUserId", result.agentUserId);
74
- writeOpenClawConfig(config);
75
- }
76
- }
77
- catch (err) {
78
- genSpinner.fail(err instanceof Error ? err.message : "Failed");
79
- return;
80
- }
81
- }
106
+ log.info(`Using pod: ${chalk.bold(match.name)} ${chalk.dim(match.config.podUrl)}`);
107
+ return match.config;
108
+ }
109
+ // Single profile: show it so the user knows what they're connecting to
110
+ if (profiles.length === 1) {
111
+ const p = profiles[0];
112
+ log.info(`Pod: ${chalk.bold(p.name)} ${chalk.dim(p.config.podUrl)}`);
113
+ return p.config;
114
+ }
115
+ // Multiple profiles: let user pick
116
+ const active = profiles.find((p) => p.active);
117
+ const { profileName } = await prompts({
118
+ type: "select",
119
+ name: "profileName",
120
+ message: "Which pod?",
121
+ choices: [
122
+ ...profiles.map((p) => ({
123
+ title: `${chalk.bold(p.name)}${p.active ? chalk.green(" active") : ""} ${chalk.dim(p.config.podUrl)}`,
124
+ value: p.name,
125
+ })),
126
+ { title: chalk.dim("Add a new pod…"), value: "__add__" },
127
+ ],
128
+ initial: active ? profiles.indexOf(active) : 0,
129
+ });
130
+ if (!profileName)
131
+ return null;
132
+ if (profileName === "__add__") {
133
+ log.blank();
134
+ await podsAdd();
135
+ const updated = listPodProfiles();
136
+ // Return the most recently added profile (last in list)
137
+ const newest = updated.filter((p) => !profiles.some((o) => o.name === p.name));
138
+ if (newest.length > 0) {
139
+ log.info(`Using pod: ${chalk.bold(newest[0].name)} ${chalk.dim(newest[0].config.podUrl)}`);
140
+ return newest[0].config;
82
141
  }
142
+ return null;
83
143
  }
84
- if (!apiKey)
85
- return;
86
- log.blank();
87
- log.success("Connected to Synap pod");
88
- log.blank();
89
- log.info("Set these environment variables:");
90
- log.dim(` export SYNAP_HUB_API_KEY="${apiKey}"`);
91
- log.dim(` export SYNAP_POD_URL="${podUrl}"`);
92
- log.blank();
93
- log.info("Install the skill:");
94
- log.dim(" openclaw skills install synap");
144
+ return profiles.find((p) => p.name === profileName).config;
145
+ }
146
+ async function resolveTarget(raw) {
147
+ if (raw) {
148
+ if (!isTargetName(raw)) {
149
+ log.error(`Unknown target: ${raw}`);
150
+ log.dim("Run `synap connect --list` to see supported targets.");
151
+ return null;
152
+ }
153
+ return raw;
154
+ }
155
+ const { target } = await prompts({
156
+ type: "select",
157
+ name: "target",
158
+ message: "Which AI surface are you connecting?",
159
+ choices: Object.values(TARGETS).map((t) => ({
160
+ title: `${t.label}${describeCaps(t.supports)}`,
161
+ value: t.name,
162
+ })),
163
+ });
164
+ if (!target || !isTargetName(target))
165
+ return null;
166
+ return target;
167
+ }
168
+ function describeCaps(supports) {
169
+ const parts = [];
170
+ if (supports.skills)
171
+ parts.push("skills");
172
+ if (supports.mcp)
173
+ parts.push("MCP");
174
+ return parts.length ? ` ${chalk.dim(`(${parts.join(" + ")})`)}` : "";
95
175
  }
96
176
  //# sourceMappingURL=connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAoB;IAChD,MAAM,EAAE,CAAC;IACT,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEpC,cAAc;IACd,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC;YAC5B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,uBAAuB;SACjC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,eAAe;IACf,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;IAE5C,0BAA0B;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;YAC/B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE;gBACnD,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,UAAU,EAAE;aAC5E;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC5B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,uBAAuB;aACjC,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC9B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,UAAU,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;gBAChE,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC1B,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBAE1C,0BAA0B;oBAC1B,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;oBAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;wBACb,MAAM,MAAM,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC;wBAC1C,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;wBAC/C,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAChE,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAChE,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,CAAC,+BAA+B,MAAM,GAAG,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAC;IAC9C,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * synap connections
3
+ *
4
+ * Show which Synap pod each agent surface is currently pointing at,
5
+ * and which stored profile it matches.
6
+ *
7
+ * synap connections
8
+ */
9
+ export declare function connections(): Promise<void>;
@@ -0,0 +1,161 @@
1
+ /**
2
+ * synap connections
3
+ *
4
+ * Show which Synap pod each agent surface is currently pointing at,
5
+ * and which stored profile it matches.
6
+ *
7
+ * synap connections
8
+ */
9
+ import chalk from "chalk";
10
+ import fs from "node:fs";
11
+ import path from "node:path";
12
+ import os from "node:os";
13
+ import { log } from "../utils/logger.js";
14
+ import { listPodProfiles } from "../lib/pod.js";
15
+ import { TARGETS } from "../lib/targets.js";
16
+ import { readOpenClawConfig } from "../lib/openclaw.js";
17
+ export async function connections() {
18
+ const profiles = listPodProfiles();
19
+ // URL → profile name lookup (normalise trailing slash)
20
+ const urlToProfile = {};
21
+ for (const p of profiles) {
22
+ urlToProfile[p.config.podUrl.replace(/\/$/, "")] = p.name;
23
+ }
24
+ const surfaces = [
25
+ detectClaudeCode(urlToProfile),
26
+ detectClaudeDesktop(urlToProfile),
27
+ detectCursor(urlToProfile),
28
+ detectOpenClaw(urlToProfile),
29
+ detectRaycast(urlToProfile),
30
+ ];
31
+ const configured = surfaces.filter((s) => s.configured);
32
+ const unconfigured = surfaces.filter((s) => !s.configured);
33
+ log.heading("Agent surface connections");
34
+ if (configured.length === 0 && unconfigured.length === surfaces.length) {
35
+ log.dim("No surfaces connected yet.");
36
+ log.blank();
37
+ log.info("Connect a surface: synap connect");
38
+ return;
39
+ }
40
+ // Widths for alignment
41
+ const labelW = Math.max(...surfaces.map((s) => s.label.length)) + 2;
42
+ const profileW = Math.max(10, ...configured.map((s) => (s.profile ?? "(unknown)").length)) + 2;
43
+ for (const s of configured) {
44
+ const icon = s.profile ? chalk.green("●") : chalk.yellow("●");
45
+ const label = s.label.padEnd(labelW);
46
+ const profileStr = s.profile
47
+ ? chalk.bold(s.profile.padEnd(profileW))
48
+ : chalk.yellow("(unknown pod)".padEnd(profileW));
49
+ const url = chalk.dim(s.podUrl ?? "");
50
+ console.log(` ${icon} ${label} ${profileStr} ${url}`);
51
+ }
52
+ for (const s of unconfigured) {
53
+ console.log(` ${chalk.dim("○")} ${chalk.dim(s.label.padEnd(labelW))} ${chalk.dim("not configured")}`);
54
+ }
55
+ log.blank();
56
+ if (profiles.length > 1) {
57
+ log.dim("synap pods use <name> — switch ALL surfaces to a pod");
58
+ }
59
+ log.dim("synap connect — wire a surface to a specific pod");
60
+ log.dim("synap pods list — show configured pods");
61
+ }
62
+ // ─── Surface detectors ────────────────────────────────────────────────────────
63
+ function detectClaudeCode(urlToProfile) {
64
+ const settingsPath = path.join(os.homedir(), ".claude", "settings.json");
65
+ try {
66
+ if (!fs.existsSync(settingsPath))
67
+ return { label: "Claude Code", configured: false, configPath: settingsPath };
68
+ const settings = JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
69
+ const podUrl = settings.env?.SYNAP_POD_URL;
70
+ if (!podUrl)
71
+ return { label: "Claude Code", configured: false, configPath: settingsPath };
72
+ const profile = urlToProfile[podUrl.replace(/\/$/, "")];
73
+ return { label: "Claude Code", configured: true, podUrl, profile, configPath: settingsPath };
74
+ }
75
+ catch {
76
+ return { label: "Claude Code", configured: false, configPath: settingsPath };
77
+ }
78
+ }
79
+ function detectClaudeDesktop(urlToProfile) {
80
+ const configPath = TARGETS["claude-desktop"].mcpConfigPath?.();
81
+ if (!configPath)
82
+ return { label: "Claude Desktop", configured: false };
83
+ try {
84
+ if (!fs.existsSync(configPath))
85
+ return { label: "Claude Desktop", configured: false, configPath };
86
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
87
+ const synap = config.mcpServers?.["synap"];
88
+ if (!synap)
89
+ return { label: "Claude Desktop", configured: false, configPath };
90
+ // stdio bridge: args = ["-y", "mcp-remote", "<podUrl>/mcp", "--header", "..."]
91
+ const rawUrl = synap.args?.[2] ?? synap.url;
92
+ const podUrl = rawUrl?.replace(/\/mcp$/, "");
93
+ if (!podUrl)
94
+ return { label: "Claude Desktop", configured: false, configPath };
95
+ const profile = urlToProfile[podUrl.replace(/\/$/, "")];
96
+ return { label: "Claude Desktop", configured: true, podUrl, profile, configPath };
97
+ }
98
+ catch {
99
+ return { label: "Claude Desktop", configured: false, configPath };
100
+ }
101
+ }
102
+ function detectCursor(urlToProfile) {
103
+ const configPath = TARGETS["cursor"].mcpConfigPath?.();
104
+ if (!configPath)
105
+ return { label: "Cursor", configured: false };
106
+ try {
107
+ if (!fs.existsSync(configPath))
108
+ return { label: "Cursor", configured: false, configPath };
109
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
110
+ const synap = config.mcpServers?.["synap"];
111
+ const rawUrl = synap?.url;
112
+ const podUrl = rawUrl?.replace(/\/mcp$/, "");
113
+ if (!podUrl)
114
+ return { label: "Cursor", configured: false, configPath };
115
+ const profile = urlToProfile[podUrl.replace(/\/$/, "")];
116
+ return { label: "Cursor", configured: true, podUrl, profile, configPath };
117
+ }
118
+ catch {
119
+ return { label: "Cursor", configured: false, configPath };
120
+ }
121
+ }
122
+ function detectOpenClaw(urlToProfile) {
123
+ try {
124
+ const ocConfig = readOpenClawConfig();
125
+ const podUrl = ocConfig?.["synap"];
126
+ const url = podUrl?.["podUrl"];
127
+ if (!url)
128
+ return { label: "OpenClaw", configured: false };
129
+ const profile = urlToProfile[url.replace(/\/$/, "")];
130
+ return { label: "OpenClaw", configured: true, podUrl: url, profile };
131
+ }
132
+ catch {
133
+ return { label: "OpenClaw", configured: false };
134
+ }
135
+ }
136
+ // Raycast reads ~/.synap/config.json directly. It can have a per-surface pod
137
+ // override (surfaces.raycast); falls back to activePod if not set.
138
+ function detectRaycast(urlToProfile) {
139
+ try {
140
+ const configPath = path.join(os.homedir(), ".synap", "config.json");
141
+ if (!fs.existsSync(configPath))
142
+ return { label: "Raycast", configured: false };
143
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
144
+ const podName = raw.surfaces?.["raycast"] ?? raw.activePod;
145
+ const podUrl = podName && raw.pods?.[podName]?.podUrl;
146
+ if (!podUrl || !podName)
147
+ return { label: "Raycast", configured: false };
148
+ const profile = urlToProfile[podUrl.replace(/\/$/, "")] ?? podName;
149
+ const hasOverride = Boolean(raw.surfaces?.["raycast"]);
150
+ return {
151
+ label: hasOverride ? "Raycast (own pod)" : "Raycast",
152
+ configured: true,
153
+ podUrl,
154
+ profile,
155
+ };
156
+ }
157
+ catch {
158
+ return { label: "Raycast", configured: false };
159
+ }
160
+ }
161
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/commands/connections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ interface BaseOpts {
2
+ json?: boolean;
3
+ podUrl?: string;
4
+ apiKey?: string;
5
+ }
6
+ export declare function orient(opts: BaseOpts): Promise<void>;
7
+ export declare function useWorkspace(workspaceId: string, opts: BaseOpts): Promise<void>;
8
+ export declare function listWorkspaces(opts: BaseOpts): Promise<void>;
9
+ export declare function listEntities(opts: BaseOpts & {
10
+ workspace?: string;
11
+ profile?: string;
12
+ limit?: string;
13
+ }): Promise<void>;
14
+ export declare function getEntity(id: string, opts: BaseOpts & {
15
+ workspace?: string;
16
+ }): Promise<void>;
17
+ export declare function searchData(query: string, opts: BaseOpts & {
18
+ workspace?: string;
19
+ type?: string;
20
+ limit?: string;
21
+ }): Promise<void>;
22
+ export declare function rememberData(text: string, opts: BaseOpts & {
23
+ context?: string;
24
+ }): Promise<void>;
25
+ export declare function recallData(query: string, opts: BaseOpts & {
26
+ limit?: string;
27
+ }): Promise<void>;
28
+ export declare function createEntity(opts: BaseOpts & {
29
+ profile: string;
30
+ name: string;
31
+ workspace?: string;
32
+ props?: string;
33
+ }): Promise<void>;
34
+ export declare function createRelation(opts: BaseOpts & {
35
+ source: string;
36
+ target: string;
37
+ type: string;
38
+ workspace?: string;
39
+ }): Promise<void>;
40
+ export declare function updateEntity(id: string, opts: BaseOpts & {
41
+ props: string;
42
+ }): Promise<void>;
43
+ export {};