@rotifer/mcp-server 0.8.1 → 0.8.5

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/dist/index.js CHANGED
@@ -1,6 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { createServer } from "./server.js";
4
+ import { getVersionInfo, getPackageVersion } from "./version.js";
5
+ async function notifyVersionOnStderr() {
6
+ if (process.env.CI || process.env.NO_UPDATE_NOTIFIER || process.env.ROTIFER_NO_UPDATE_CHECK)
7
+ return;
8
+ try {
9
+ const info = await getVersionInfo();
10
+ if (info.updateAvailable && info.latest) {
11
+ process.stderr.write(`[rotifer-mcp-server] Update available: ${info.current} → ${info.latest}. ` +
12
+ `Run: npm i -g @rotifer/mcp-server@latest\n`);
13
+ }
14
+ }
15
+ catch { /* non-critical */ }
16
+ }
4
17
  async function main() {
5
18
  const subcommand = process.argv[2];
6
19
  if (subcommand === "login") {
@@ -18,6 +31,19 @@ async function main() {
18
31
  runLogout();
19
32
  return;
20
33
  }
34
+ if (subcommand === "serve") {
35
+ const { startHttpServer } = await import("./http.js");
36
+ const portIdx = process.argv.indexOf("--port");
37
+ const port = portIdx !== -1 ? parseInt(process.argv[portIdx + 1], 10) : undefined;
38
+ notifyVersionOnStderr();
39
+ await startHttpServer({ port });
40
+ return;
41
+ }
42
+ if (subcommand === "--version" || subcommand === "-v") {
43
+ console.log(getPackageVersion());
44
+ return;
45
+ }
46
+ notifyVersionOnStderr();
21
47
  const server = createServer();
22
48
  const transport = new StdioServerTransport();
23
49
  await server.connect(transport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,QAAQ,CAAC;YACb,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACxE,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/local.d.ts CHANGED
@@ -6,22 +6,22 @@ export interface LocalGene {
6
6
  version: string | null;
7
7
  author: string | null;
8
8
  description: string | null;
9
- has_wasm: boolean;
10
- has_source: boolean;
9
+ hasWasm: boolean;
10
+ hasSource: boolean;
11
11
  cloud?: {
12
12
  id: string;
13
13
  owner: string;
14
14
  version: string;
15
15
  };
16
16
  compiled?: {
17
- ir_hash: string;
18
- compiled_at: string;
19
- wasm_size: number | null;
17
+ irHash: string;
18
+ compiledAt: string;
19
+ wasmSize: number | null;
20
20
  };
21
21
  }
22
22
  export interface ListLocalGenesResult {
23
- project_root: string;
24
- genes_dir: string;
23
+ projectRoot: string;
24
+ genesDir: string;
25
25
  genes: LocalGene[];
26
26
  total: number;
27
27
  }
@@ -37,12 +37,12 @@ export interface LocalAgent {
37
37
  genome: string[];
38
38
  composition: Record<string, unknown>;
39
39
  strategy: string;
40
- created_at: string;
40
+ createdAt: string;
41
41
  reputation: number;
42
42
  }
43
43
  export interface ListLocalAgentsResult {
44
- project_root: string;
45
- agents_dir: string;
44
+ projectRoot: string;
45
+ agentsDir: string;
46
46
  agents: LocalAgent[];
47
47
  total: number;
48
48
  }
@@ -57,54 +57,92 @@ export interface CreateAgentResult {
57
57
  genome: string[];
58
58
  composition: Record<string, unknown>;
59
59
  strategy: string;
60
- created_at: string;
60
+ createdAt: string;
61
61
  }
62
62
  export declare function createLocalAgent(options: {
63
63
  project_root?: string;
64
- name: string;
65
- genes: string[];
64
+ agent_name: string;
65
+ gene_ids?: string[];
66
66
  composition?: string;
67
+ domain?: string;
68
+ strategy?: string;
69
+ par_merge?: string;
67
70
  }): CreateAgentResult;
68
71
  export interface ShellResult {
69
72
  success: boolean;
70
- exit_code: number;
73
+ exitCode: number;
71
74
  stdout: string;
72
75
  stderr: string;
73
76
  }
74
77
  export declare function agentRun(options: {
75
- agent_id: string;
78
+ agent_name: string;
76
79
  project_root?: string;
77
80
  input?: string;
81
+ verbose?: boolean;
82
+ no_sandbox?: boolean;
78
83
  }): ShellResult;
79
84
  export declare function compileGene(options: {
80
85
  gene_name: string;
81
86
  project_root?: string;
87
+ check?: boolean;
88
+ wasm_path?: string;
89
+ lang?: string;
82
90
  }): ShellResult;
83
91
  export declare function runGene(options: {
84
92
  gene_name: string;
85
93
  project_root?: string;
86
94
  input?: string;
95
+ verbose?: boolean;
96
+ no_sandbox?: boolean;
97
+ trust_unsigned?: boolean;
87
98
  }): ShellResult;
88
99
  export declare function initGene(options: {
89
- name: string;
100
+ gene_name: string;
90
101
  project_root?: string;
91
102
  fidelity?: string;
103
+ domain?: string;
104
+ no_genesis?: boolean;
92
105
  }): ShellResult;
93
106
  export declare function scanGenes(options: {
94
107
  path?: string;
95
108
  project_root?: string;
109
+ skills?: boolean;
110
+ skills_path?: string;
96
111
  }): ShellResult;
97
112
  export declare function wrapGene(options: {
98
- name: string;
113
+ gene_name: string;
99
114
  project_root?: string;
115
+ domain?: string;
116
+ fidelity?: string;
117
+ from_skill?: string;
118
+ from_clawhub?: string;
100
119
  }): ShellResult;
101
120
  export declare function testGene(options: {
102
- name?: string;
121
+ gene_name: string;
103
122
  project_root?: string;
123
+ verbose?: boolean;
124
+ compliance?: boolean;
104
125
  }): ShellResult;
105
126
  export declare function publishGene(options: {
106
- name?: string;
127
+ gene_name?: string;
107
128
  project_root?: string;
108
129
  all?: boolean;
109
130
  skip_arena?: boolean;
131
+ description?: string;
132
+ changelog?: string;
133
+ skip_security?: boolean;
110
134
  }): ShellResult;
135
+ export declare function vgScan(options: {
136
+ path?: string;
137
+ project_root?: string;
138
+ gene_id?: string;
139
+ all?: boolean;
140
+ }): {
141
+ grade: string;
142
+ skill_id: string;
143
+ findings: unknown[];
144
+ stats: {
145
+ files_scanned: number;
146
+ lines_of_code: number;
147
+ };
148
+ };
package/dist/local.js CHANGED
@@ -1,5 +1,7 @@
1
- import { readFileSync, readdirSync, existsSync, statSync } from "node:fs";
1
+ import { readFileSync, readdirSync, existsSync, statSync, writeFileSync, mkdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { spawnSync } from "node:child_process";
3
5
  function readJson(path) {
4
6
  try {
5
7
  return JSON.parse(readFileSync(path, "utf-8"));
@@ -21,7 +23,7 @@ export function listLocalGenes(options) {
21
23
  const root = resolveProjectRoot(options.project_root);
22
24
  const genesDir = resolveGenesDir(root);
23
25
  if (!existsSync(genesDir)) {
24
- return { project_root: root, genes_dir: genesDir, genes: [], total: 0 };
26
+ return { projectRoot: root, genesDir, genes: [], total: 0 };
25
27
  }
26
28
  let entries;
27
29
  try {
@@ -31,7 +33,7 @@ export function listLocalGenes(options) {
31
33
  });
32
34
  }
33
35
  catch {
34
- return { project_root: root, genes_dir: genesDir, genes: [], total: 0 };
36
+ return { projectRoot: root, genesDir, genes: [], total: 0 };
35
37
  }
36
38
  let genes = entries.map((name) => {
37
39
  const geneDir = join(genesDir, name);
@@ -46,16 +48,16 @@ export function listLocalGenes(options) {
46
48
  version: phenotype?.version || cloud?.version || null,
47
49
  author: phenotype?.author || cloud?.owner || null,
48
50
  description: phenotype?.description || null,
49
- has_wasm: existsSync(join(geneDir, "gene.ir.wasm")),
50
- has_source: existsSync(join(geneDir, "index.ts")),
51
+ hasWasm: existsSync(join(geneDir, "gene.ir.wasm")),
52
+ hasSource: existsSync(join(geneDir, "index.ts")),
51
53
  ...(cloud && {
52
54
  cloud: { id: cloud.cloud_id, owner: cloud.owner, version: cloud.version },
53
55
  }),
54
56
  ...(compiled && {
55
57
  compiled: {
56
- ir_hash: compiled.irHash,
57
- compiled_at: compiled.compiledAt,
58
- wasm_size: compiled.totalSize ?? null,
58
+ irHash: compiled.irHash,
59
+ compiledAt: compiled.compiledAt,
60
+ wasmSize: compiled.wasmSize ?? compiled.totalSize ?? null,
59
61
  },
60
62
  }),
61
63
  };
@@ -67,20 +69,20 @@ export function listLocalGenes(options) {
67
69
  genes = genes.filter((g) => g.fidelity === options.fidelity);
68
70
  }
69
71
  genes.sort((a, b) => a.domain.localeCompare(b.domain) || a.name.localeCompare(b.name));
70
- return { project_root: root, genes_dir: genesDir, genes, total: genes.length };
72
+ return { projectRoot: root, genesDir, genes, total: genes.length };
71
73
  }
72
74
  export function listLocalAgents(options) {
73
75
  const root = resolveProjectRoot(options.project_root);
74
76
  const agentsDir = join(root, ".rotifer", "agents");
75
77
  if (!existsSync(agentsDir)) {
76
- return { project_root: root, agents_dir: agentsDir, agents: [], total: 0 };
78
+ return { projectRoot: root, agentsDir, agents: [], total: 0 };
77
79
  }
78
80
  let files;
79
81
  try {
80
82
  files = readdirSync(agentsDir).filter((f) => f.endsWith(".json"));
81
83
  }
82
84
  catch {
83
- return { project_root: root, agents_dir: agentsDir, agents: [], total: 0 };
85
+ return { projectRoot: root, agentsDir, agents: [], total: 0 };
84
86
  }
85
87
  let agents = files
86
88
  .map((f) => {
@@ -94,7 +96,7 @@ export function listLocalAgents(options) {
94
96
  genome: Array.isArray(raw.genome) ? raw.genome : [],
95
97
  composition: raw.composition || { type: "Single" },
96
98
  strategy: raw.strategy || "manual",
97
- created_at: raw.createdAt || raw.created_at || "",
99
+ createdAt: raw.createdAt || raw.created_at || "",
98
100
  reputation: raw.reputation ?? 0,
99
101
  };
100
102
  })
@@ -102,42 +104,52 @@ export function listLocalAgents(options) {
102
104
  if (options.state) {
103
105
  agents = agents.filter((a) => a.state.toLowerCase() === options.state.toLowerCase());
104
106
  }
105
- agents.sort((a, b) => (b.created_at || "").localeCompare(a.created_at || ""));
106
- return { project_root: root, agents_dir: agentsDir, agents, total: agents.length };
107
+ agents.sort((a, b) => (b.createdAt || "").localeCompare(a.createdAt || ""));
108
+ return { projectRoot: root, agentsDir, agents, total: agents.length };
107
109
  }
108
110
  export function createLocalAgent(options) {
109
- const { randomUUID } = require("node:crypto");
110
- const { writeFileSync, mkdirSync } = require("node:fs");
111
111
  const root = resolveProjectRoot(options.project_root);
112
112
  const genesDir = resolveGenesDir(root);
113
113
  const agentsDir = join(root, ".rotifer", "agents");
114
114
  mkdirSync(agentsDir, { recursive: true });
115
- for (const geneName of options.genes) {
115
+ const genes = options.gene_ids || [];
116
+ if (genes.length === 0) {
117
+ throw new Error("'gene_ids' is required with at least one gene name. Wrap genes first with 'rotifer wrap <gene-name>'.");
118
+ }
119
+ for (const geneName of genes) {
116
120
  const phenoPath = join(genesDir, geneName, "phenotype.json");
117
121
  if (!existsSync(phenoPath)) {
118
122
  throw new Error(`Gene '${geneName}' not found at ${phenoPath}. Run 'rotifer wrap ${geneName}' first.`);
119
123
  }
120
124
  }
121
125
  const agentId = randomUUID();
122
- const compositionType = options.genes.length >= 2
126
+ const compositionType = genes.length >= 2
123
127
  ? (options.composition || "Seq")
124
- : "Single";
128
+ : (genes.length === 1 ? "Single" : (options.composition || "Seq"));
129
+ const mergeStrategy = options.par_merge || "first";
125
130
  let composition = { type: compositionType };
126
131
  if (compositionType === "Par") {
127
- composition = { type: "Par", branches: options.genes, merge: "first" };
132
+ composition = { type: "Par", branches: genes, merge: mergeStrategy };
133
+ }
134
+ else if (compositionType === "Try" && genes.length >= 2) {
135
+ composition = { type: "Try", primary: genes[0], fallback: genes[1] };
136
+ }
137
+ else if (compositionType === "Cond" && genes.length >= 2) {
138
+ composition = { type: "Cond", thenBranch: genes[0], elseBranch: genes[1] };
128
139
  }
129
- else if (compositionType === "Try" && options.genes.length >= 2) {
130
- composition = { type: "Try", primary: options.genes[0], fallback: options.genes[1] };
140
+ else if (compositionType === "TryPool") {
141
+ composition = { type: "TryPool", pool: genes };
131
142
  }
132
143
  const agent = {
133
144
  id: agentId,
134
- name: options.name,
145
+ name: options.agent_name,
135
146
  state: "Active",
136
- genome: options.genes,
147
+ genome: genes,
137
148
  composition,
138
- strategy: "manual",
149
+ strategy: options.strategy || "manual",
139
150
  createdAt: new Date().toISOString(),
140
151
  reputation: 0.0,
152
+ ...(options.domain && { domain: options.domain }),
141
153
  };
142
154
  writeFileSync(join(agentsDir, agentId + ".json"), JSON.stringify(agent, null, 2) + "\n");
143
155
  return {
@@ -147,11 +159,10 @@ export function createLocalAgent(options) {
147
159
  genome: agent.genome,
148
160
  composition: agent.composition,
149
161
  strategy: agent.strategy,
150
- created_at: agent.createdAt,
162
+ createdAt: agent.createdAt,
151
163
  };
152
164
  }
153
165
  function shellExec(cmd, args, cwd) {
154
- const { spawnSync } = require("node:child_process");
155
166
  const result = spawnSync(cmd, args, {
156
167
  cwd: cwd || process.cwd(),
157
168
  timeout: 120_000,
@@ -160,7 +171,7 @@ function shellExec(cmd, args, cwd) {
160
171
  });
161
172
  return {
162
173
  success: result.status === 0,
163
- exit_code: result.status ?? 1,
174
+ exitCode: result.status ?? 1,
164
175
  stdout: (result.stdout || "").trim(),
165
176
  stderr: (result.stderr || "").trim(),
166
177
  };
@@ -180,51 +191,83 @@ function rotiferCmd(args, cwd) {
180
191
  }
181
192
  export function agentRun(options) {
182
193
  const root = resolveProjectRoot(options.project_root);
183
- const args = ["agent", "run", options.agent_id];
194
+ const args = ["agent", "run", options.agent_name];
184
195
  if (options.input) {
185
196
  args.push("--input", options.input);
186
197
  }
198
+ if (options.verbose)
199
+ args.push("--isVerbose");
200
+ if (options.no_sandbox)
201
+ args.push("--no-sandbox");
187
202
  return rotiferCmd(args, root);
188
203
  }
189
204
  export function compileGene(options) {
190
205
  const root = resolveProjectRoot(options.project_root);
191
- return rotiferCmd(["compile", options.gene_name], root);
206
+ const args = ["compile", options.gene_name];
207
+ if (options.check)
208
+ args.push("--check");
209
+ if (options.wasm_path)
210
+ args.push("--wasm", options.wasm_path);
211
+ if (options.lang)
212
+ args.push("--lang", options.lang);
213
+ return rotiferCmd(args, root);
192
214
  }
193
215
  export function runGene(options) {
194
216
  const root = resolveProjectRoot(options.project_root);
195
217
  const args = ["run", options.gene_name];
196
- if (options.input) {
218
+ if (options.input)
197
219
  args.push("--input", options.input);
198
- }
220
+ if (options.verbose)
221
+ args.push("--verbose");
222
+ if (options.no_sandbox)
223
+ args.push("--no-sandbox");
224
+ if (options.trust_unsigned)
225
+ args.push("--trust-unsigned");
199
226
  return rotiferCmd(args, root);
200
227
  }
201
228
  // ── Creation-side operations ──
202
229
  export function initGene(options) {
203
230
  const root = resolveProjectRoot(options.project_root);
204
- const args = ["init", options.name];
205
- if (options.fidelity) {
231
+ const args = ["init", options.gene_name];
232
+ if (options.fidelity)
206
233
  args.push("--fidelity", options.fidelity);
207
- }
234
+ if (options.domain)
235
+ args.push("--domain", options.domain);
236
+ if (options.no_genesis)
237
+ args.push("--no-genesis");
208
238
  return rotiferCmd(args, root);
209
239
  }
210
240
  export function scanGenes(options) {
211
241
  const root = resolveProjectRoot(options.project_root);
212
242
  const args = ["scan"];
213
- if (options.path) {
243
+ if (options.path)
214
244
  args.push(options.path);
215
- }
245
+ if (options.skills)
246
+ args.push("--skills");
247
+ if (options.skills_path)
248
+ args.push("--skills-path", options.skills_path);
216
249
  return rotiferCmd(args, root);
217
250
  }
218
251
  export function wrapGene(options) {
219
252
  const root = resolveProjectRoot(options.project_root);
220
- return rotiferCmd(["wrap", options.name], root);
253
+ const args = ["wrap", options.gene_name];
254
+ if (options.domain)
255
+ args.push("--domain", options.domain);
256
+ if (options.fidelity)
257
+ args.push("--fidelity", options.fidelity);
258
+ if (options.from_skill)
259
+ args.push("--from-skill", options.from_skill);
260
+ if (options.from_clawhub)
261
+ args.push("--from-clawhub", options.from_clawhub);
262
+ return rotiferCmd(args, root);
221
263
  }
222
264
  export function testGene(options) {
223
265
  const root = resolveProjectRoot(options.project_root);
224
- const args = ["test"];
225
- if (options.name) {
226
- args.push(options.name);
227
- }
266
+ const args = ["test", options.gene_name];
267
+ if (options.verbose)
268
+ args.push("--verbose");
269
+ if (options.compliance)
270
+ args.push("--compliance");
228
271
  return rotiferCmd(args, root);
229
272
  }
230
273
  export function publishGene(options) {
@@ -233,12 +276,36 @@ export function publishGene(options) {
233
276
  if (options.all) {
234
277
  args.push("--all");
235
278
  }
236
- else if (options.name) {
237
- args.push(options.name);
279
+ else if (options.gene_name) {
280
+ args.push(options.gene_name);
238
281
  }
239
- if (options.skip_arena) {
282
+ if (options.skip_arena)
240
283
  args.push("--skip-arena");
241
- }
284
+ if (options.description)
285
+ args.push("--description", options.description);
286
+ if (options.changelog)
287
+ args.push("--changelog", options.changelog);
288
+ if (options.skip_security)
289
+ args.push("--skip-security");
242
290
  return rotiferCmd(args, root);
243
291
  }
292
+ export function vgScan(options) {
293
+ const root = resolveProjectRoot(options.project_root);
294
+ const scanPath = options.path || ".";
295
+ const args = ["vg", scanPath, "--json"];
296
+ if (options.gene_id)
297
+ args.push("--id", options.gene_id);
298
+ if (options.all)
299
+ args.push("--all");
300
+ const result = rotiferCmd(args, root);
301
+ if (!result.success) {
302
+ throw new Error(result.stderr || "V(g) scan failed");
303
+ }
304
+ try {
305
+ return JSON.parse(result.stdout);
306
+ }
307
+ catch {
308
+ throw new Error("Failed to parse V(g) scan output: " + result.stdout.slice(0, 200));
309
+ }
310
+ }
244
311
  //# sourceMappingURL=local.js.map
package/dist/local.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
package/dist/login.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { loadCloudConfig } from "./cloud.js";
2
2
  import { openBrowser } from "./open-browser.js";
3
- import { loadCredentials, saveCredentials, clearCredentials, generateCodeVerifier, generateCodeChallenge, waitForOAuthCallback, } from "./auth.js";
3
+ import { loadCredentials, saveCredentials, clearCredentials, generateCodeVerifier, generateCodeChallenge, startOAuthCallbackServer, } from "./auth.js";
4
4
  const SUPPORTED_PROVIDERS = ["github", "gitlab"];
5
5
  export async function runLogin(options) {
6
6
  console.log("Rotifer Cloud Login\n");
@@ -14,21 +14,22 @@ export async function runLogin(options) {
14
14
  if (!SUPPORTED_PROVIDERS.includes(provider)) {
15
15
  console.error(`Unsupported provider: '${provider}'. Supported: ${SUPPORTED_PROVIDERS.join(", ")}`);
16
16
  process.exit(1);
17
+ return;
17
18
  }
18
19
  const config = loadCloudConfig();
19
20
  const endpoint = options.endpoint || config.endpoint;
20
- console.log(`Opening browser for ${provider} authorization...`);
21
- const callbackPort = 9876;
22
21
  const codeVerifier = generateCodeVerifier();
23
22
  const codeChallenge = generateCodeChallenge(codeVerifier);
23
+ const { port: callbackPort, waitForCallback } = await startOAuthCallbackServer();
24
+ console.log(`Opening browser for ${provider} authorization...`);
24
25
  const authUrl = `${endpoint}/auth/v1/authorize?provider=${provider}` +
25
26
  `&redirect_to=http://localhost:${callbackPort}/callback` +
26
27
  `&code_challenge=${codeChallenge}` +
27
28
  `&code_challenge_method=S256`;
28
29
  openBrowser(authUrl);
29
- console.log("Waiting for authorization (timeout: 120s)...");
30
+ console.log(`Waiting for authorization on port ${callbackPort} (timeout: 120s)...`);
30
31
  try {
31
- const callbackResult = await waitForOAuthCallback(callbackPort);
32
+ const callbackResult = await waitForCallback;
32
33
  let accessToken;
33
34
  let refreshToken;
34
35
  if (callbackResult.startsWith("implicit:")) {
package/dist/login.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
- * Build the shell command to open a URL in the default browser.
2
+ * Resolve the binary and arguments to open a URL in the default browser.
3
3
  * Exported separately for testability.
4
4
  */
5
- export declare function buildOpenCommand(url: string, platform: string): string;
5
+ export declare function buildOpenCommand(url: string, platform: string): {
6
+ bin: string;
7
+ args: string[];
8
+ };
6
9
  /**
7
10
  * Open a URL in the user's default browser, cross-platform.
8
11
  */
@@ -1,19 +1,20 @@
1
- import { exec } from "node:child_process";
1
+ import { execFile } from "node:child_process";
2
2
  /**
3
- * Build the shell command to open a URL in the default browser.
3
+ * Resolve the binary and arguments to open a URL in the default browser.
4
4
  * Exported separately for testability.
5
5
  */
6
6
  export function buildOpenCommand(url, platform) {
7
7
  if (platform === "win32") {
8
- return `start "" "${url}"`;
8
+ return { bin: "cmd", args: ["/c", "start", "", url] };
9
9
  }
10
10
  const bin = platform === "darwin" ? "open" : "xdg-open";
11
- return `${bin} "${url}"`;
11
+ return { bin, args: [url] };
12
12
  }
13
13
  /**
14
14
  * Open a URL in the user's default browser, cross-platform.
15
15
  */
16
16
  export function openBrowser(url) {
17
- exec(buildOpenCommand(url, process.platform));
17
+ const { bin, args } = buildOpenCommand(url, process.platform);
18
+ execFile(bin, args);
18
19
  }
19
20
  //# sourceMappingURL=open-browser.js.map