@bazaar.ai/mcp-human-agents 0.1.0 → 0.1.1

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.
package/.env.example CHANGED
@@ -1,5 +1,6 @@
1
1
  # Platform API
2
2
  PLATFORM_API_URL=http://localhost:3000
3
+ PLATFORM_WS_URL=ws://localhost:3000
3
4
  PLATFORM_API_KEY=your-api-key-here
4
5
 
5
6
  # VM Configuration
package/README.md CHANGED
@@ -18,14 +18,18 @@ the web terminal — no ngrok or public IP needed.
18
18
 
19
19
  ### 2. Run the setup script
20
20
 
21
- ```bash
22
- npx @bazaar.ai/mcp-human-agents --setup --api-key=bzr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
23
- ```
24
-
25
- The setup script will:
26
- - Check for prerequisites (sshd, tmux, git) and offer to install them
27
- - Validate your API key against the platform
28
- - Configure sudo permissions for contractor provisioning
21
+ ```bash
22
+ npx @bazaar.ai/mcp-human-agents --setup --api-key=bzr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
23
+ ```
24
+
25
+ On the hosted Bazaar dashboard, use the copy-paste command from the
26
+ **Setup** page. It includes the correct public HTTP and WebSocket
27
+ endpoints for that deployment.
28
+
29
+ The setup script will:
30
+ - Check for prerequisites (sshd, tmux, git) and offer to install them
31
+ - Validate your API key against the platform
32
+ - Configure sudo permissions for contractor provisioning
29
33
  - Register the MCP server with Claude Code
30
34
 
31
35
  ### 3. Restart Claude Code
@@ -80,12 +84,13 @@ Contractor (anywhere) ├── gig notifications
80
84
  The setup script handles configuration automatically. For reference,
81
85
  these are the environment variables used:
82
86
 
83
- | Variable | Default | Description |
84
- |----------|---------|-------------|
85
- | `PLATFORM_API_URL` | `http://localhost:3000` | Bazaar platform API endpoint |
86
- | `PLATFORM_API_KEY` | _(required)_ | Your Bazaar API key |
87
- | `USE_MOCK_PLATFORM` | `false` | Set `true` for offline testing with mock data |
88
- | `TUNNEL_ENABLED` | `true` | Reverse tunnel mode (no ngrok needed) |
87
+ | Variable | Default | Description |
88
+ |----------|---------|-------------|
89
+ | `PLATFORM_API_URL` | `http://localhost:3000` | Bazaar platform API endpoint |
90
+ | `PLATFORM_WS_URL` | derived from `PLATFORM_API_URL` | Optional explicit WebSocket endpoint for reverse tunnels |
91
+ | `PLATFORM_API_KEY` | _(required)_ | Your Bazaar API key |
92
+ | `USE_MOCK_PLATFORM` | `false` | Set `true` for offline testing with mock data |
93
+ | `TUNNEL_ENABLED` | `true` | Reverse tunnel mode (no ngrok needed) |
89
94
  | `PROVISIONING_USE_SUDO` | `false` | Use sudo for privileged commands |
90
95
  | `VM_EXTERNAL_IP` | `auto` | Only needed when `TUNNEL_ENABLED=false` |
91
96
  | `VM_EXTERNAL_SSH_PORT` | `22` | Only needed when `TUNNEL_ENABLED=false` |
@@ -125,13 +130,14 @@ sudo visudo -c # Must print "parsed OK"
125
130
 
126
131
  ### 3. Register with Claude Code
127
132
 
128
- ```bash
129
- claude mcp add bazaar \
130
- -e PLATFORM_API_URL=http://localhost:3000 \
131
- -e PLATFORM_API_KEY=bzr_live_xxxx \
132
- -e USE_MOCK_PLATFORM=false \
133
- -e TUNNEL_ENABLED=true \
134
- -e PROVISIONING_USE_SUDO=true \
133
+ ```bash
134
+ claude mcp add bazaar \
135
+ -e PLATFORM_API_URL=http://localhost:3000 \
136
+ -e PLATFORM_WS_URL=ws://localhost:3000 \
137
+ -e PLATFORM_API_KEY=bzr_live_xxxx \
138
+ -e USE_MOCK_PLATFORM=false \
139
+ -e TUNNEL_ENABLED=true \
140
+ -e PROVISIONING_USE_SUDO=true \
135
141
  -- npx @bazaar.ai/mcp-human-agents
136
142
  ```
137
143
 
@@ -140,13 +146,14 @@ claude mcp add bazaar \
140
146
  If you need contractors to SSH directly (e.g., for debugging), disable
141
147
  the tunnel and provide a public endpoint:
142
148
 
143
- ```bash
144
- claude mcp add bazaar \
145
- -e PLATFORM_API_URL=http://localhost:3000 \
146
- -e PLATFORM_API_KEY=bzr_live_xxxx \
147
- -e USE_MOCK_PLATFORM=false \
148
- -e TUNNEL_ENABLED=false \
149
- -e VM_EXTERNAL_IP=0.tcp.ngrok.io \
149
+ ```bash
150
+ claude mcp add bazaar \
151
+ -e PLATFORM_API_URL=http://localhost:3000 \
152
+ -e PLATFORM_WS_URL=ws://localhost:3000 \
153
+ -e PLATFORM_API_KEY=bzr_live_xxxx \
154
+ -e USE_MOCK_PLATFORM=false \
155
+ -e TUNNEL_ENABLED=false \
156
+ -e VM_EXTERNAL_IP=0.tcp.ngrok.io \
150
157
  -e VM_EXTERNAL_SSH_PORT=17832 \
151
158
  -e PROVISIONING_USE_SUDO=true \
152
159
  -- npx @bazaar.ai/mcp-human-agents
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/cli/setup.ts"],"names":[],"mappings":"AAyNA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAmG9C"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/cli/setup.ts"],"names":[],"mappings":"AAkOA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAqG9C"}
@@ -4,9 +4,7 @@ exports.runSetup = runSetup;
4
4
  const promises_1 = require("node:readline/promises");
5
5
  const node_child_process_1 = require("node:child_process");
6
6
  const node_process_1 = require("node:process");
7
- // TEMPORARY: ngrok tunnel for early testing. Replace with production URL
8
- // (e.g. https://api.bazaar.ai) before public launch.
9
- const PLATFORM_API_URL_DEFAULT = "https://ingrid-hypocycloidal-kaliyah.ngrok-free.dev";
7
+ const PLATFORM_API_URL_DEFAULT = "http://localhost:3000";
10
8
  // ── Helpers ──────────────────────────────────────────────────────────
11
9
  function log(msg) {
12
10
  node_process_1.stderr.write(`${msg}\n`);
@@ -92,9 +90,16 @@ async function promptPlatformUrl(rl) {
92
90
  const url = await rl.question(`Platform API URL [${PLATFORM_API_URL_DEFAULT}]: `);
93
91
  return url.trim() || PLATFORM_API_URL_DEFAULT;
94
92
  }
93
+ function getPlatformWsUrl(platformUrl) {
94
+ const urlArg = process.argv.find((a) => a.startsWith("--platform-ws-url="));
95
+ if (urlArg) {
96
+ return urlArg.split("=").slice(1).join("=");
97
+ }
98
+ return platformUrl.replace(/^http/, "ws");
99
+ }
95
100
  async function validateApiKey(apiKey, platformUrl) {
96
101
  try {
97
- const res = await fetch(`${platformUrl}/api/users/me`, {
102
+ const res = await fetch(`${platformUrl}/api/auth/me`, {
98
103
  headers: { Authorization: `Bearer ${apiKey}` },
99
104
  });
100
105
  if (res.ok) {
@@ -152,11 +157,12 @@ function createStateDir() {
152
157
  warn("Could not create /var/lib/human-agents — state will use fallback");
153
158
  }
154
159
  }
155
- function registerMcpServer(apiKey, platformUrl) {
160
+ function registerMcpServer(apiKey, platformUrl, platformWsUrl) {
156
161
  const isRoot = run("whoami") === "root";
157
162
  // Build the env vars for claude mcp add
158
163
  const envFlags = [
159
164
  `-e PLATFORM_API_URL=${platformUrl}`,
165
+ `-e PLATFORM_WS_URL=${platformWsUrl}`,
160
166
  `-e PLATFORM_API_KEY=${apiKey}`,
161
167
  `-e USE_MOCK_PLATFORM=false`,
162
168
  `-e TUNNEL_ENABLED=true`,
@@ -214,6 +220,7 @@ async function runSetup() {
214
220
  const apiKey = await promptApiKey(rl);
215
221
  // 4. Get platform URL
216
222
  const platformUrl = await promptPlatformUrl(rl);
223
+ const platformWsUrl = getPlatformWsUrl(platformUrl);
217
224
  // 5. Validate API key
218
225
  log("");
219
226
  log("Validating API key...");
@@ -237,7 +244,7 @@ async function runSetup() {
237
244
  log("");
238
245
  log("Registering MCP server with Claude Code...");
239
246
  if (hasClaude) {
240
- registerMcpServer(apiKey, platformUrl);
247
+ registerMcpServer(apiKey, platformUrl, platformWsUrl);
241
248
  }
242
249
  else {
243
250
  warn("Claude CLI not found — showing manual command:");
@@ -245,6 +252,7 @@ async function runSetup() {
245
252
  const isRoot = run("whoami") === "root";
246
253
  const envFlags = [
247
254
  `-e PLATFORM_API_URL=${platformUrl}`,
255
+ `-e PLATFORM_WS_URL=${platformWsUrl}`,
248
256
  `-e PLATFORM_API_KEY=${apiKey}`,
249
257
  `-e USE_MOCK_PLATFORM=false`,
250
258
  `-e TUNNEL_ENABLED=true`,
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  import { z } from "zod";
2
2
  declare const EnvSchema: z.ZodObject<{
3
3
  PLATFORM_API_URL: z.ZodDefault<z.ZodString>;
4
+ /**
5
+ * Optional explicit WebSocket endpoint. Use this when HTTP requests go
6
+ * through a proxy path but the reverse tunnel must connect directly to the
7
+ * human-layer WebSocket server.
8
+ */
9
+ PLATFORM_WS_URL: z.ZodOptional<z.ZodString>;
4
10
  PLATFORM_API_KEY: z.ZodDefault<z.ZodString>;
5
11
  /**
6
12
  * Hostname or IP the contractor will SSH into. Only needed when
@@ -50,9 +56,11 @@ declare const EnvSchema: z.ZodObject<{
50
56
  STATE_FILE_PATH: string;
51
57
  PROVISIONING_USE_SUDO: boolean;
52
58
  TUNNEL_ENABLED: boolean;
59
+ PLATFORM_WS_URL?: string | undefined;
53
60
  PLATFORM_PROJECT_ID?: string | undefined;
54
61
  }, {
55
62
  PLATFORM_API_URL?: string | undefined;
63
+ PLATFORM_WS_URL?: string | undefined;
56
64
  PLATFORM_API_KEY?: string | undefined;
57
65
  VM_EXTERNAL_IP?: string | undefined;
58
66
  VM_EXTERNAL_SSH_PORT?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,QAAA,MAAM,SAAS;;;IAGb;;;;;;OAMG;;IAEH;;OAEG;;IAEH;;;OAGG;;;;;;;IAYH;;;;;OAKG;;IAKH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKH,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAI5C,wBAAgB,MAAM,IAAI,GAAG,CAK5B;AAED,4CAA4C;AAC5C,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAErC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,SAAS;;IAEb;;;;OAIG;;;IAGH;;;;;;OAMG;;IAEH;;OAEG;;IAEH;;;OAGG;;;;;;;IAYH;;;;;OAKG;;IAKH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKH,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAI5C,wBAAgB,MAAM,IAAI,GAAG,CAK5B;AAED,4CAA4C;AAC5C,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAErC"}
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getEnv = getEnv;
4
4
  exports.setEnv = setEnv;
5
5
  const zod_1 = require("zod");
6
- // TEMPORARY: The default platform URL points to an ngrok tunnel bound to the
7
- // founder's account. This is fine for early testing but must be replaced with
8
- // a proper cloud deployment (e.g. https://api.bazaar.ai) before public launch.
9
- const DEFAULT_PLATFORM_URL = "https://ingrid-hypocycloidal-kaliyah.ngrok-free.dev";
6
+ const DEFAULT_PLATFORM_URL = "http://localhost:3000";
10
7
  const EnvSchema = zod_1.z.object({
11
8
  PLATFORM_API_URL: zod_1.z.string().url().default(DEFAULT_PLATFORM_URL),
9
+ /**
10
+ * Optional explicit WebSocket endpoint. Use this when HTTP requests go
11
+ * through a proxy path but the reverse tunnel must connect directly to the
12
+ * human-layer WebSocket server.
13
+ */
14
+ PLATFORM_WS_URL: zod_1.z.string().url().optional(),
12
15
  PLATFORM_API_KEY: zod_1.z.string().default(""),
13
16
  /**
14
17
  * Hostname or IP the contractor will SSH into. Only needed when
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/config/env.ts"],"names":[],"mappings":";;AA+DA,wBAKC;AAGD,wBAEC;AAzED,6BAAwB;AAExB,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,qDAAqD,CAAC;AAEnF,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAChE,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,oBAAoB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpE;;;OAGG;IACH,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnE,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,uBAAuB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB,eAAe,EAAE,OAAC;SACf,MAAM,EAAE;SACR,OAAO,CAAC,kCAAkC,CAAC;IAC9C;;;;;OAKG;IACH,qBAAqB,EAAE,OAAC;SACrB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB;;;;;OAKG;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC;AAIH,IAAI,SAAS,GAAe,IAAI,CAAC;AAEjC,SAAgB,MAAM;IACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4CAA4C;AAC5C,SAAgB,MAAM,CAAC,GAAQ;IAC7B,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/config/env.ts"],"names":[],"mappings":";;AAkEA,wBAKC;AAGD,wBAEC;AA5ED,6BAAwB;AAExB,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAChE;;;;OAIG;IACH,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,oBAAoB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpE;;;OAGG;IACH,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnE,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,uBAAuB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB,eAAe,EAAE,OAAC;SACf,MAAM,EAAE;SACR,OAAO,CAAC,kCAAkC,CAAC;IAC9C;;;;;OAKG;IACH,qBAAqB,EAAE,OAAC;SACrB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB;;;;;OAKG;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC;AAIH,IAAI,SAAS,GAAe,IAAI,CAAC;AAEjC,SAAgB,MAAM;IACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4CAA4C;AAC5C,SAAgB,MAAM,CAAC,GAAQ;IAC7B,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platform-client/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACxE;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,IAAI,CAAgB;gBAEhB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWrC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAahE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWvD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAgB/B,OAAO,CAAC,SAAS;CASlB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platform-client/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACxE;AAID,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,IAAI,CAAgB;gBAEhB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWrC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAahE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWvD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAgB/B,OAAO,CAAC,SAAS;CASlB"}
@@ -7,6 +7,7 @@ exports.HttpPlatformClient = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const errors_js_1 = require("../utils/errors.js");
9
9
  const logger_js_1 = require("../utils/logger.js");
10
+ const API_PREFIX = "/api";
10
11
  class HttpPlatformClient {
11
12
  http;
12
13
  constructor(baseUrl, apiKey) {
@@ -21,7 +22,7 @@ class HttpPlatformClient {
21
22
  }
22
23
  async createGig(request) {
23
24
  try {
24
- const { data } = await this.http.post("/gigs", request);
25
+ const { data } = await this.http.post(`${API_PREFIX}/gigs`, request);
25
26
  logger_js_1.logger.info("Gig created on platform", { gigId: data.gigId });
26
27
  return data;
27
28
  }
@@ -31,7 +32,7 @@ class HttpPlatformClient {
31
32
  }
32
33
  async getGigStatus(gigId) {
33
34
  try {
34
- const { data } = await this.http.get(`/gigs/${gigId}/status`);
35
+ const { data } = await this.http.get(`${API_PREFIX}/gigs/${gigId}/status`);
35
36
  return data;
36
37
  }
37
38
  catch (error) {
@@ -40,7 +41,7 @@ class HttpPlatformClient {
40
41
  }
41
42
  async markReady(gigId, sshCommand) {
42
43
  try {
43
- await this.http.post(`/gigs/${gigId}/ready`, { sshCommand });
44
+ await this.http.post(`${API_PREFIX}/gigs/${gigId}/ready`, { sshCommand });
44
45
  logger_js_1.logger.info("Gig marked as ready", { gigId });
45
46
  }
46
47
  catch (error) {
@@ -49,7 +50,7 @@ class HttpPlatformClient {
49
50
  }
50
51
  async completeGig(request) {
51
52
  try {
52
- const { data } = await this.http.post(`/gigs/${request.gigId}/complete`, request);
53
+ const { data } = await this.http.post(`${API_PREFIX}/gigs/${request.gigId}/complete`, request);
53
54
  logger_js_1.logger.info("Gig completed on platform", { gigId: request.gigId });
54
55
  return data;
55
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platform-client/client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;AAClD,kDAAsD;AACtD,kDAA4C;AAgB5C,MAAa,kBAAkB;IACrB,IAAI,CAAgB;IAE5B,YAAY,OAAe,EAAE,MAAc;QACzC,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,OAAO,EACP,OAAO,CACR,CAAC;YACF,kBAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,SAAS,KAAK,SAAS,CACxB,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,6BAA6B,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,UAAkB;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7D,kBAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,6BAA6B,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA2B;QAE3B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,SAAS,OAAO,CAAC,KAAK,WAAW,EACjC,OAAO,CACR,CAAC;YACF,kBAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAClB,2BAA2B,OAAO,CAAC,KAAK,EAAE,EAC1C,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,KAAc;QAC/C,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,4BAAgB,CACzB,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,EAC9B,KAAK,CAAC,QAAQ,EAAE,MAAM,CACvB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,4BAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AA1ED,gDA0EC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platform-client/client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;AAClD,kDAAsD;AACtD,kDAA4C;AAgB5C,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAa,kBAAkB;IACrB,IAAI,CAAgB;IAE5B,YAAY,OAAe,EAAE,MAAc;QACzC,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,GAAG,UAAU,OAAO,EACpB,OAAO,CACR,CAAC;YACF,kBAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,GAAG,UAAU,SAAS,KAAK,SAAS,CACrC,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,6BAA6B,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,UAAkB;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,SAAS,KAAK,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1E,kBAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,6BAA6B,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA2B;QAE3B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,GAAG,UAAU,SAAS,OAAO,CAAC,KAAK,WAAW,EAC9C,OAAO,CACR,CAAC;YACF,kBAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAClB,2BAA2B,OAAO,CAAC,KAAK,EAAE,EAC1C,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,KAAc;QAC/C,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,4BAAgB,CACzB,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,EAC9B,KAAK,CAAC,QAAQ,EAAE,MAAM,CACvB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,4BAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AA1ED,gDA0EC"}
@@ -1 +1 @@
1
- {"version":3,"file":"summon-human.d.ts","sourceRoot":"","sources":["../../../../src/tools/summon-human.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAYnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgI5B"}
1
+ {"version":3,"file":"summon-human.d.ts","sourceRoot":"","sources":["../../../../src/tools/summon-human.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAYnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAiI5B"}
@@ -93,7 +93,7 @@ async function summonHuman(input, deps) {
93
93
  let sshCommand;
94
94
  if (useTunnel) {
95
95
  // Open reverse tunnel — platform routes contractor traffic through it
96
- const platformWsUrl = env.PLATFORM_API_URL.replace(/^http/, "ws");
96
+ const platformWsUrl = env.PLATFORM_WS_URL ?? env.PLATFORM_API_URL.replace(/^http/, "ws");
97
97
  const handle = (0, index_js_4.openTunnel)(platformWsUrl, env.PLATFORM_API_KEY, gigId);
98
98
  (0, index_js_4.storeTunnel)(gigId, handle);
99
99
  sshCommand = `(via tunnel to platform)`;
@@ -1 +1 @@
1
- {"version":3,"file":"summon-human.js","sourceRoot":"","sources":["../../../../src/tools/summon-human.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summon-human.js","sourceRoot":"","sources":["../../../../src/tools/summon-human.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bazaar.ai/mcp-human-agents",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MCP server for summoning human contractors into VMs",
5
5
  "main": "dist/mcp-server/src/index.js",
6
6
  "bin": {
package/src/cli/setup.ts CHANGED
@@ -1,10 +1,8 @@
1
- import { createInterface } from "node:readline/promises";
2
- import { execSync, type ExecSyncOptions } from "node:child_process";
3
- import { stdin, stdout, stderr } from "node:process";
4
-
5
- // TEMPORARY: ngrok tunnel for early testing. Replace with production URL
6
- // (e.g. https://api.bazaar.ai) before public launch.
7
- const PLATFORM_API_URL_DEFAULT = "https://ingrid-hypocycloidal-kaliyah.ngrok-free.dev";
1
+ import { createInterface } from "node:readline/promises";
2
+ import { execSync, type ExecSyncOptions } from "node:child_process";
3
+ import { stdin, stdout, stderr } from "node:process";
4
+
5
+ const PLATFORM_API_URL_DEFAULT = "http://localhost:3000";
8
6
 
9
7
  // ── Helpers ──────────────────────────────────────────────────────────
10
8
 
@@ -93,31 +91,40 @@ async function promptApiKey(rl: ReturnType<typeof createInterface>): Promise<str
93
91
  }
94
92
  }
95
93
 
96
- async function promptPlatformUrl(rl: ReturnType<typeof createInterface>): Promise<string> {
97
- // Check CLI args
98
- const urlArg = process.argv.find((a) => a.startsWith("--platform-url="));
99
- if (urlArg) {
100
- return urlArg.split("=").slice(1).join("=");
94
+ async function promptPlatformUrl(rl: ReturnType<typeof createInterface>): Promise<string> {
95
+ // Check CLI args
96
+ const urlArg = process.argv.find((a) => a.startsWith("--platform-url="));
97
+ if (urlArg) {
98
+ return urlArg.split("=").slice(1).join("=");
101
99
  }
102
100
 
103
101
  log("");
104
102
  const url = await rl.question(
105
103
  `Platform API URL [${PLATFORM_API_URL_DEFAULT}]: `,
106
104
  );
107
- return url.trim() || PLATFORM_API_URL_DEFAULT;
108
- }
109
-
110
- async function validateApiKey(
111
- apiKey: string,
112
- platformUrl: string,
113
- ): Promise<boolean> {
114
- try {
115
- const res = await fetch(`${platformUrl}/api/users/me`, {
116
- headers: { Authorization: `Bearer ${apiKey}` },
117
- });
118
- if (res.ok) {
119
- const data = (await res.json()) as Record<string, string>;
120
- success(`Authenticated as ${data.email || data.name || "user"}`);
105
+ return url.trim() || PLATFORM_API_URL_DEFAULT;
106
+ }
107
+
108
+ function getPlatformWsUrl(platformUrl: string): string {
109
+ const urlArg = process.argv.find((a) => a.startsWith("--platform-ws-url="));
110
+ if (urlArg) {
111
+ return urlArg.split("=").slice(1).join("=");
112
+ }
113
+
114
+ return platformUrl.replace(/^http/, "ws");
115
+ }
116
+
117
+ async function validateApiKey(
118
+ apiKey: string,
119
+ platformUrl: string,
120
+ ): Promise<boolean> {
121
+ try {
122
+ const res = await fetch(`${platformUrl}/api/auth/me`, {
123
+ headers: { Authorization: `Bearer ${apiKey}` },
124
+ });
125
+ if (res.ok) {
126
+ const data = (await res.json()) as Record<string, string>;
127
+ success(`Authenticated as ${data.email || data.name || "user"}`);
121
128
  return true;
122
129
  }
123
130
  fail(`API key validation failed: ${res.status}`);
@@ -179,19 +186,21 @@ function createStateDir(): void {
179
186
  }
180
187
  }
181
188
 
182
- function registerMcpServer(
183
- apiKey: string,
184
- platformUrl: string,
185
- ): boolean {
186
- const isRoot = run("whoami") === "root";
187
-
188
- // Build the env vars for claude mcp add
189
- const envFlags = [
190
- `-e PLATFORM_API_URL=${platformUrl}`,
191
- `-e PLATFORM_API_KEY=${apiKey}`,
192
- `-e USE_MOCK_PLATFORM=false`,
193
- `-e TUNNEL_ENABLED=true`,
194
- isRoot ? "" : `-e PROVISIONING_USE_SUDO=true`,
189
+ function registerMcpServer(
190
+ apiKey: string,
191
+ platformUrl: string,
192
+ platformWsUrl: string,
193
+ ): boolean {
194
+ const isRoot = run("whoami") === "root";
195
+
196
+ // Build the env vars for claude mcp add
197
+ const envFlags = [
198
+ `-e PLATFORM_API_URL=${platformUrl}`,
199
+ `-e PLATFORM_WS_URL=${platformWsUrl}`,
200
+ `-e PLATFORM_API_KEY=${apiKey}`,
201
+ `-e USE_MOCK_PLATFORM=false`,
202
+ `-e TUNNEL_ENABLED=true`,
203
+ isRoot ? "" : `-e PROVISIONING_USE_SUDO=true`,
195
204
  ]
196
205
  .filter(Boolean)
197
206
  .join(" ");
@@ -253,13 +262,14 @@ export async function runSetup(): Promise<void> {
253
262
  // 3. Get API key
254
263
  const apiKey = await promptApiKey(rl);
255
264
 
256
- // 4. Get platform URL
257
- const platformUrl = await promptPlatformUrl(rl);
258
-
259
- // 5. Validate API key
260
- log("");
261
- log("Validating API key...");
262
- const valid = await validateApiKey(apiKey, platformUrl);
265
+ // 4. Get platform URL
266
+ const platformUrl = await promptPlatformUrl(rl);
267
+ const platformWsUrl = getPlatformWsUrl(platformUrl);
268
+
269
+ // 5. Validate API key
270
+ log("");
271
+ log("Validating API key...");
272
+ const valid = await validateApiKey(apiKey, platformUrl);
263
273
  if (!valid) {
264
274
  warn("Continuing anyway — you can fix the API key later");
265
275
  }
@@ -278,21 +288,22 @@ export async function runSetup(): Promise<void> {
278
288
  warn("Could not start sshd — contractor SSH access may not work");
279
289
  }
280
290
 
281
- // 9. Register MCP server
282
- log("");
283
- log("Registering MCP server with Claude Code...");
284
- if (hasClaude) {
285
- registerMcpServer(apiKey, platformUrl);
286
- } else {
287
- warn("Claude CLI not found — showing manual command:");
288
- log("");
289
- const isRoot = run("whoami") === "root";
290
- const envFlags = [
291
- `-e PLATFORM_API_URL=${platformUrl}`,
292
- `-e PLATFORM_API_KEY=${apiKey}`,
293
- `-e USE_MOCK_PLATFORM=false`,
294
- `-e TUNNEL_ENABLED=true`,
295
- isRoot ? "" : `-e PROVISIONING_USE_SUDO=true`,
291
+ // 9. Register MCP server
292
+ log("");
293
+ log("Registering MCP server with Claude Code...");
294
+ if (hasClaude) {
295
+ registerMcpServer(apiKey, platformUrl, platformWsUrl);
296
+ } else {
297
+ warn("Claude CLI not found — showing manual command:");
298
+ log("");
299
+ const isRoot = run("whoami") === "root";
300
+ const envFlags = [
301
+ `-e PLATFORM_API_URL=${platformUrl}`,
302
+ `-e PLATFORM_WS_URL=${platformWsUrl}`,
303
+ `-e PLATFORM_API_KEY=${apiKey}`,
304
+ `-e USE_MOCK_PLATFORM=false`,
305
+ `-e TUNNEL_ENABLED=true`,
306
+ isRoot ? "" : `-e PROVISIONING_USE_SUDO=true`,
296
307
  ]
297
308
  .filter(Boolean)
298
309
  .join(" ");
package/src/config/env.ts CHANGED
@@ -1,15 +1,18 @@
1
- import { z } from "zod";
2
-
3
- // TEMPORARY: The default platform URL points to an ngrok tunnel bound to the
4
- // founder's account. This is fine for early testing but must be replaced with
5
- // a proper cloud deployment (e.g. https://api.bazaar.ai) before public launch.
6
- const DEFAULT_PLATFORM_URL = "https://ingrid-hypocycloidal-kaliyah.ngrok-free.dev";
7
-
8
- const EnvSchema = z.object({
9
- PLATFORM_API_URL: z.string().url().default(DEFAULT_PLATFORM_URL),
10
- PLATFORM_API_KEY: z.string().default(""),
11
- /**
12
- * Hostname or IP the contractor will SSH into. Only needed when
1
+ import { z } from "zod";
2
+
3
+ const DEFAULT_PLATFORM_URL = "http://localhost:3000";
4
+
5
+ const EnvSchema = z.object({
6
+ PLATFORM_API_URL: z.string().url().default(DEFAULT_PLATFORM_URL),
7
+ /**
8
+ * Optional explicit WebSocket endpoint. Use this when HTTP requests go
9
+ * through a proxy path but the reverse tunnel must connect directly to the
10
+ * human-layer WebSocket server.
11
+ */
12
+ PLATFORM_WS_URL: z.string().url().optional(),
13
+ PLATFORM_API_KEY: z.string().default(""),
14
+ /**
15
+ * Hostname or IP the contractor will SSH into. Only needed when
13
16
  * TUNNEL_ENABLED=false (legacy direct-SSH mode). When the dev box is
14
17
  * exposed via `ngrok tcp`, set this to the ngrok host (e.g.
15
18
  * `0.tcp.ngrok.io`). Default `"auto"` triggers cloud metadata + local
@@ -9,15 +9,17 @@ import type {
9
9
  CompleteGigResponse,
10
10
  } from "./types.js";
11
11
 
12
- export interface PlatformClient {
13
- createGig(request: CreateGigRequest): Promise<CreateGigResponse>;
14
- getGigStatus(gigId: string): Promise<GigStatusResponse>;
15
- markReady(gigId: string, sshCommand: string): Promise<void>;
16
- completeGig(request: CompleteGigRequest): Promise<CompleteGigResponse>;
17
- }
18
-
19
- export class HttpPlatformClient implements PlatformClient {
20
- private http: AxiosInstance;
12
+ export interface PlatformClient {
13
+ createGig(request: CreateGigRequest): Promise<CreateGigResponse>;
14
+ getGigStatus(gigId: string): Promise<GigStatusResponse>;
15
+ markReady(gigId: string, sshCommand: string): Promise<void>;
16
+ completeGig(request: CompleteGigRequest): Promise<CompleteGigResponse>;
17
+ }
18
+
19
+ const API_PREFIX = "/api";
20
+
21
+ export class HttpPlatformClient implements PlatformClient {
22
+ private http: AxiosInstance;
21
23
 
22
24
  constructor(baseUrl: string, apiKey: string) {
23
25
  this.http = axios.create({
@@ -30,48 +32,48 @@ export class HttpPlatformClient implements PlatformClient {
30
32
  });
31
33
  }
32
34
 
33
- async createGig(request: CreateGigRequest): Promise<CreateGigResponse> {
34
- try {
35
- const { data } = await this.http.post<CreateGigResponse>(
36
- "/gigs",
37
- request,
38
- );
39
- logger.info("Gig created on platform", { gigId: data.gigId });
40
- return data;
35
+ async createGig(request: CreateGigRequest): Promise<CreateGigResponse> {
36
+ try {
37
+ const { data } = await this.http.post<CreateGigResponse>(
38
+ `${API_PREFIX}/gigs`,
39
+ request,
40
+ );
41
+ logger.info("Gig created on platform", { gigId: data.gigId });
42
+ return data;
41
43
  } catch (error) {
42
44
  throw this.wrapError("Failed to create gig", error);
43
45
  }
44
46
  }
45
47
 
46
- async getGigStatus(gigId: string): Promise<GigStatusResponse> {
47
- try {
48
- const { data } = await this.http.get<GigStatusResponse>(
49
- `/gigs/${gigId}/status`,
50
- );
51
- return data;
52
- } catch (error) {
53
- throw this.wrapError(`Failed to get gig status: ${gigId}`, error);
48
+ async getGigStatus(gigId: string): Promise<GigStatusResponse> {
49
+ try {
50
+ const { data } = await this.http.get<GigStatusResponse>(
51
+ `${API_PREFIX}/gigs/${gigId}/status`,
52
+ );
53
+ return data;
54
+ } catch (error) {
55
+ throw this.wrapError(`Failed to get gig status: ${gigId}`, error);
54
56
  }
55
57
  }
56
58
 
57
- async markReady(gigId: string, sshCommand: string): Promise<void> {
58
- try {
59
- await this.http.post(`/gigs/${gigId}/ready`, { sshCommand });
60
- logger.info("Gig marked as ready", { gigId });
61
- } catch (error) {
62
- throw this.wrapError(`Failed to mark gig ready: ${gigId}`, error);
59
+ async markReady(gigId: string, sshCommand: string): Promise<void> {
60
+ try {
61
+ await this.http.post(`${API_PREFIX}/gigs/${gigId}/ready`, { sshCommand });
62
+ logger.info("Gig marked as ready", { gigId });
63
+ } catch (error) {
64
+ throw this.wrapError(`Failed to mark gig ready: ${gigId}`, error);
63
65
  }
64
66
  }
65
67
 
66
- async completeGig(
67
- request: CompleteGigRequest,
68
- ): Promise<CompleteGigResponse> {
69
- try {
70
- const { data } = await this.http.post<CompleteGigResponse>(
71
- `/gigs/${request.gigId}/complete`,
72
- request,
73
- );
74
- logger.info("Gig completed on platform", { gigId: request.gigId });
68
+ async completeGig(
69
+ request: CompleteGigRequest,
70
+ ): Promise<CompleteGigResponse> {
71
+ try {
72
+ const { data } = await this.http.post<CompleteGigResponse>(
73
+ `${API_PREFIX}/gigs/${request.gigId}/complete`,
74
+ request,
75
+ );
76
+ logger.info("Gig completed on platform", { gigId: request.gigId });
75
77
  return data;
76
78
  } catch (error) {
77
79
  throw this.wrapError(
@@ -130,11 +130,12 @@ export async function summonHuman(
130
130
  const useTunnel = env.TUNNEL_ENABLED;
131
131
  let sshCommand: string;
132
132
 
133
- if (useTunnel) {
134
- // Open reverse tunnel — platform routes contractor traffic through it
135
- const platformWsUrl = env.PLATFORM_API_URL.replace(/^http/, "ws");
136
- const handle = openTunnel(platformWsUrl, env.PLATFORM_API_KEY, gigId);
137
- storeTunnel(gigId, handle);
133
+ if (useTunnel) {
134
+ // Open reverse tunnel — platform routes contractor traffic through it
135
+ const platformWsUrl =
136
+ env.PLATFORM_WS_URL ?? env.PLATFORM_API_URL.replace(/^http/, "ws");
137
+ const handle = openTunnel(platformWsUrl, env.PLATFORM_API_KEY, gigId);
138
+ storeTunnel(gigId, handle);
138
139
 
139
140
  sshCommand = `(via tunnel to platform)`;
140
141