@nepopsx/cli 0.0.19 → 0.0.20

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 (129) hide show
  1. package/dist/agents/catalog.d.ts +19 -0
  2. package/dist/agents/catalog.d.ts.map +1 -0
  3. package/dist/agents/catalog.js +45 -0
  4. package/dist/agents/catalog.js.map +1 -0
  5. package/dist/agents/configuration.d.ts +1 -0
  6. package/dist/agents/configuration.d.ts.map +1 -1
  7. package/dist/agents/configuration.js +36 -0
  8. package/dist/agents/configuration.js.map +1 -1
  9. package/dist/agents/configuration.test.d.ts +2 -0
  10. package/dist/agents/configuration.test.d.ts.map +1 -0
  11. package/dist/agents/configuration.test.js +32 -0
  12. package/dist/agents/configuration.test.js.map +1 -0
  13. package/dist/commands/capture.d.ts +19 -0
  14. package/dist/commands/capture.d.ts.map +1 -0
  15. package/dist/commands/capture.js +105 -0
  16. package/dist/commands/capture.js.map +1 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +11 -30
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/install.d.ts +2 -0
  21. package/dist/commands/install.d.ts.map +1 -1
  22. package/dist/commands/install.js +86 -15
  23. package/dist/commands/install.js.map +1 -1
  24. package/dist/commands/login.d.ts +8 -1
  25. package/dist/commands/login.d.ts.map +1 -1
  26. package/dist/commands/login.js +169 -80
  27. package/dist/commands/login.js.map +1 -1
  28. package/dist/commands/push-learnings.d.ts.map +1 -1
  29. package/dist/commands/push-learnings.js +93 -62
  30. package/dist/commands/push-learnings.js.map +1 -1
  31. package/dist/commands/sync.d.ts +4 -0
  32. package/dist/commands/sync.d.ts.map +1 -1
  33. package/dist/commands/sync.js +120 -64
  34. package/dist/commands/sync.js.map +1 -1
  35. package/dist/commands/up.d.ts +23 -0
  36. package/dist/commands/up.d.ts.map +1 -0
  37. package/dist/commands/up.js +263 -0
  38. package/dist/commands/up.js.map +1 -0
  39. package/dist/enrichment/workflow.d.ts +1 -0
  40. package/dist/enrichment/workflow.d.ts.map +1 -1
  41. package/dist/enrichment/workflow.js +13 -0
  42. package/dist/enrichment/workflow.js.map +1 -1
  43. package/dist/generator/preview.d.ts +13 -0
  44. package/dist/generator/preview.d.ts.map +1 -0
  45. package/dist/generator/preview.js +242 -0
  46. package/dist/generator/preview.js.map +1 -0
  47. package/dist/generator/preview.test.d.ts +19 -0
  48. package/dist/generator/preview.test.d.ts.map +1 -0
  49. package/dist/generator/preview.test.js +289 -0
  50. package/dist/generator/preview.test.js.map +1 -0
  51. package/dist/generator/render.d.ts +2 -2
  52. package/dist/generator/render.d.ts.map +1 -1
  53. package/dist/generator/render.js +37 -18
  54. package/dist/generator/render.js.map +1 -1
  55. package/dist/generator/writer.d.ts +15 -1
  56. package/dist/generator/writer.d.ts.map +1 -1
  57. package/dist/generator/writer.js +41 -3
  58. package/dist/generator/writer.js.map +1 -1
  59. package/dist/hooks/capture-hooks.d.ts +9 -0
  60. package/dist/hooks/capture-hooks.d.ts.map +1 -0
  61. package/dist/hooks/capture-hooks.js +100 -0
  62. package/dist/hooks/capture-hooks.js.map +1 -0
  63. package/dist/hooks/capture-hooks.test.d.ts +2 -0
  64. package/dist/hooks/capture-hooks.test.d.ts.map +1 -0
  65. package/dist/hooks/capture-hooks.test.js +50 -0
  66. package/dist/hooks/capture-hooks.test.js.map +1 -0
  67. package/dist/index.js +26 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/learnings/yaml-learnings.d.ts +16 -2
  70. package/dist/learnings/yaml-learnings.d.ts.map +1 -1
  71. package/dist/learnings/yaml-learnings.js +43 -8
  72. package/dist/learnings/yaml-learnings.js.map +1 -1
  73. package/dist/learnings/yaml-learnings.test.d.ts +2 -0
  74. package/dist/learnings/yaml-learnings.test.d.ts.map +1 -0
  75. package/dist/learnings/yaml-learnings.test.js +39 -0
  76. package/dist/learnings/yaml-learnings.test.js.map +1 -0
  77. package/dist/licensing/installer.d.ts +2 -2
  78. package/dist/licensing/installer.d.ts.map +1 -1
  79. package/dist/licensing/installer.js +3 -1
  80. package/dist/licensing/installer.js.map +1 -1
  81. package/dist/licensing/template-fetch.d.ts +2 -2
  82. package/dist/licensing/template-fetch.d.ts.map +1 -1
  83. package/dist/licensing/template-fetch.js +4 -1
  84. package/dist/licensing/template-fetch.js.map +1 -1
  85. package/dist/mcp/config-generator.d.ts +42 -0
  86. package/dist/mcp/config-generator.d.ts.map +1 -0
  87. package/dist/mcp/config-generator.js +55 -0
  88. package/dist/mcp/config-generator.js.map +1 -0
  89. package/dist/mcp/config-generator.test.d.ts +7 -0
  90. package/dist/mcp/config-generator.test.d.ts.map +1 -0
  91. package/dist/mcp/config-generator.test.js +79 -0
  92. package/dist/mcp/config-generator.test.js.map +1 -0
  93. package/dist/ruflo/config-generator.d.ts +22 -0
  94. package/dist/ruflo/config-generator.d.ts.map +1 -0
  95. package/dist/ruflo/config-generator.js +89 -0
  96. package/dist/ruflo/config-generator.js.map +1 -0
  97. package/dist/ruflo/config-generator.test.d.ts +2 -0
  98. package/dist/ruflo/config-generator.test.d.ts.map +1 -0
  99. package/dist/ruflo/config-generator.test.js +18 -0
  100. package/dist/ruflo/config-generator.test.js.map +1 -0
  101. package/dist/ruflo/detect.d.ts +11 -0
  102. package/dist/ruflo/detect.d.ts.map +1 -0
  103. package/dist/ruflo/detect.js +30 -0
  104. package/dist/ruflo/detect.js.map +1 -0
  105. package/dist/ruflo/index.d.ts +3 -0
  106. package/dist/ruflo/index.d.ts.map +1 -0
  107. package/dist/ruflo/index.js +3 -0
  108. package/dist/ruflo/index.js.map +1 -0
  109. package/dist/security/index.d.ts +1 -1
  110. package/dist/security/index.d.ts.map +1 -1
  111. package/dist/security/index.js +1 -1
  112. package/dist/security/index.js.map +1 -1
  113. package/dist/security/integrity.d.ts +8 -0
  114. package/dist/security/integrity.d.ts.map +1 -1
  115. package/dist/security/integrity.js +28 -0
  116. package/dist/security/integrity.js.map +1 -1
  117. package/package.json +5 -3
  118. package/dist/generator/package-renderer.d.ts +0 -38
  119. package/dist/generator/package-renderer.d.ts.map +0 -1
  120. package/dist/generator/package-renderer.js +0 -181
  121. package/dist/generator/package-renderer.js.map +0 -1
  122. package/dist/generator/provider-transform.d.ts +0 -15
  123. package/dist/generator/provider-transform.d.ts.map +0 -1
  124. package/dist/generator/provider-transform.js +0 -163
  125. package/dist/generator/provider-transform.js.map +0 -1
  126. package/dist/licensing/fingerprint.test.d.ts +0 -2
  127. package/dist/licensing/fingerprint.test.d.ts.map +0 -1
  128. package/dist/licensing/fingerprint.test.js +0 -41
  129. package/dist/licensing/fingerprint.test.js.map +0 -1
@@ -4,16 +4,19 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
4
4
  import { resolve } from "node:path";
5
5
  import { cwd } from "node:process";
6
6
  import { parse, stringify } from "yaml";
7
- import { validateWorkspaceConfig, generateFingerprint, TIER_LIMITS, DEFAULT_PROVIDERS, } from "@nepopsx/core";
7
+ import { validateWorkspaceConfig, generateFingerprint, TIER_LIMITS, DEFAULT_PROVIDERS, IMPLEMENTED_PROVIDERS, } from "@nepopsx/core";
8
8
  import { readLicense } from "../licensing/license-manager.js";
9
9
  import { fetchRemoteTemplates } from "../licensing/index.js";
10
10
  import { downloadBundle, downloadBootstrapConfig, decryptBundle, verifyBundleSha, } from "../licensing/installer.js";
11
- import { getAgentConfigPath, getAgentSupportOperations, } from "../agents/configuration.js";
11
+ import { detectRuflo, generateRufloConfig, buildRufloBinding } from "../ruflo/index.js";
12
+ import { generateCaptureHooks } from "../hooks/capture-hooks.js";
13
+ import { resolveApiBase } from "../config/api-config.js";
14
+ import { generateMcpConfig } from "../mcp/config-generator.js";
15
+ import { getAgentConfigPath, getAgentSupportOperations, bundleToOperations, } from "../agents/configuration.js";
12
16
  import { loadLocalAgentConfig, pushRemoteAgentConfig, pushRemoteWorkspaceConfig, fetchRemoteEnrichmentState, } from '../agents/remote-config.js';
13
17
  import { loadCustomInstructions } from '../customs/instructions.js';
14
18
  import { createEnrichmentMetadata, hashRecord, readLocalEnrichmentState, retargetEnrichmentMetadata, writeLocalEnrichmentState, } from '../enrichment/state.js';
15
19
  import { checkEnrichmentGate, checkAgentEnrichmentGate, enrichSingleAgent, parseAgentEnrichmentResponse, writeAgentConfigFile, writeAgentEnrichmentPromptFiles, } from '../enrichment/workflow.js';
16
- import { renderBundleForInstall, renderAgentBundle } from "../generator/package-renderer.js";
17
20
  import { setWatermarkData, applyLicenseWatermark, } from "../generator/render.js";
18
21
  import { writeGeneratedFiles, printWriteResult } from "../generator/writer.js";
19
22
  import { generateManifest } from "../security/index.js";
@@ -25,7 +28,15 @@ function resolveProviders(cliProviders, agentConfig) {
25
28
  if (!raw || raw.length === 0)
26
29
  return DEFAULT_PROVIDERS;
27
30
  const valid = raw.filter((p) => VALID_PROVIDERS.has(p));
28
- return valid.length > 0 ? valid : DEFAULT_PROVIDERS;
31
+ // Drop (and warn about) providers that are declared but not yet rendered, so the
32
+ // user gets a clear message instead of an install that silently writes nothing.
33
+ const unimplemented = valid.filter((p) => !IMPLEMENTED_PROVIDERS.includes(p));
34
+ if (unimplemented.length > 0) {
35
+ console.warn(chalk.yellow(`⚠ Provider(s) not yet supported, skipping: ${unimplemented.join(", ")}. ` +
36
+ `Supported: ${IMPLEMENTED_PROVIDERS.join(", ")}.`));
37
+ }
38
+ const implemented = valid.filter((p) => IMPLEMENTED_PROVIDERS.includes(p));
39
+ return implemented.length > 0 ? implemented : DEFAULT_PROVIDERS;
29
40
  }
30
41
  export async function installCommand(agent, options) {
31
42
  if (!AGENT_NAME_RE.test(agent)) {
@@ -132,7 +143,7 @@ export async function installCommand(agent, options) {
132
143
  localState = readLocalEnrichmentState(rootDir);
133
144
  }
134
145
  else {
135
- const result = await enrichSingleAgent(rootDir, activeLicense, agent, requestedVersion ?? 'latest', gateResult.config, localState, workspaceEnrichment, { yes: options.yes });
146
+ const result = await enrichSingleAgent(rootDir, activeLicense, agent, requestedVersion ?? 'latest', gateResult.config, localState, workspaceEnrichment, { yes: options.yes, system: options.system });
136
147
  agentEnrichment = result.enrichment;
137
148
  // Re-read local state since enrichSingleAgent writes it
138
149
  localState = readLocalEnrichmentState(rootDir);
@@ -140,6 +151,13 @@ export async function installCommand(agent, options) {
140
151
  }
141
152
  catch (error) {
142
153
  console.error(chalk.red('Agent enrichment failed:'), error instanceof Error ? error.message : String(error));
154
+ console.log(chalk.dim('\n No LLM key needed — install with default config: ' +
155
+ chalk.cyan(`nepopsx install ${agent} --system`) +
156
+ '\n or enrich via your own Copilot/Claude: ' +
157
+ chalk.cyan(`nepopsx install ${agent} --agent`) +
158
+ '\n Or just run ' +
159
+ chalk.cyan('nepopsx up') +
160
+ ' for one-command setup.'));
143
161
  process.exit(1);
144
162
  return;
145
163
  }
@@ -161,7 +179,7 @@ export async function installCommand(agent, options) {
161
179
  localState = readLocalEnrichmentState(rootDir);
162
180
  }
163
181
  else {
164
- const result = await enrichSingleAgent(rootDir, activeLicense, agent, requestedVersion ?? 'latest', gateResult.config, localState, workspaceEnrichment, { yes: options.yes });
182
+ const result = await enrichSingleAgent(rootDir, activeLicense, agent, requestedVersion ?? 'latest', gateResult.config, localState, workspaceEnrichment, { yes: options.yes, system: options.system });
165
183
  agentEnrichment = result.enrichment;
166
184
  localState = readLocalEnrichmentState(rootDir);
167
185
  }
@@ -173,6 +191,15 @@ export async function installCommand(agent, options) {
173
191
  }
174
192
  }
175
193
  const rawConfig = parse(readFileSync(configPath, "utf-8"));
194
+ // ── Ruflo detection (drives memory-augmented rendering) ─────────
195
+ // Detect Ruflo up-front so the `ruflo` binding is baked into the workspace
196
+ // config BEFORE it is validated, pushed, and rendered server-side. Without
197
+ // this, the `{{#if config.ruflo}}` memory blocks in agent templates never
198
+ // activate. The local `.claude-flow/` runtime config is still written below.
199
+ const ruflo = detectRuflo(rootDir);
200
+ if (ruflo.available) {
201
+ rawConfig.ruflo = buildRufloBinding(activeLicense.org, activeLicense.workspace);
202
+ }
176
203
  const validation = validateWorkspaceConfig(rawConfig);
177
204
  if (!validation.valid) {
178
205
  console.error(chalk.red("Invalid workspace config:"));
@@ -182,6 +209,8 @@ export async function installCommand(agent, options) {
182
209
  process.exit(1);
183
210
  }
184
211
  const config = validation.config;
212
+ // Resolve target providers once (warns about + drops any declared-but-unimplemented providers).
213
+ const providers = resolveProviders(options.providers, config.agents?.[agent]);
185
214
  // ── Plan limit checks ──────────────────────────────────────────
186
215
  const limits = TIER_LIMITS[activeLicense.tier];
187
216
  // Agent count: count currently installed agents from the config
@@ -215,7 +244,7 @@ export async function installCommand(agent, options) {
215
244
  // Download → decrypt → verify
216
245
  let encBundle = null;
217
246
  try {
218
- encBundle = await downloadBundle(rootDir, activeLicense, agent, requestedVersion ?? "latest", customInstructions);
247
+ encBundle = await downloadBundle(rootDir, activeLicense, agent, requestedVersion ?? "latest", customInstructions, providers);
219
248
  }
220
249
  catch (err) {
221
250
  console.error(chalk.red("Download failed:"), err instanceof Error ? err.message : String(err));
@@ -279,9 +308,11 @@ export async function installCommand(agent, options) {
279
308
  templates,
280
309
  source: "remote",
281
310
  };
311
+ // Server returns FINAL per-provider files; getAgentSupportOperations still reads
312
+ // the bundle's reserved metadata for the local .nepopsx/ config.
282
313
  const operations = [
283
314
  ...getAgentSupportOperations(rootDir, bundle, agent, config.agents?.[agent]),
284
- ...renderBundleForInstall(bundle, resolveProviders(options.providers, config.agents?.[agent])),
315
+ ...bundleToOperations(bundle),
285
316
  ];
286
317
  // On first install, also render workspace-core templates (AGENTS.md, copilot-instructions,
287
318
  // language instructions). Sync always does this; install skips it for speed but that means
@@ -290,17 +321,18 @@ export async function installCommand(agent, options) {
290
321
  if (!existsSync(coreMarker) && activeLicense) {
291
322
  const customsDir = resolve(rootDir, config.customs_dir ?? 'customs');
292
323
  const customs = loadCustomInstructions(customsDir);
293
- const coreBundle = await fetchRemoteTemplates(rootDir, activeLicense, 'workspace-core', 'latest', customs);
324
+ const coreBundle = await fetchRemoteTemplates(rootDir, activeLicense, 'workspace-core', 'latest', customs, providers);
294
325
  if (coreBundle) {
295
- const coreOps = renderAgentBundle(coreBundle);
296
- for (const op of coreOps) {
297
- op.content = applyLicenseWatermark(op.content, op.path);
298
- }
299
- operations.push(...coreOps);
326
+ // Watermarked once, below — applySteganography is not idempotent, so we must
327
+ // never stamp the same op twice.
328
+ operations.push(...bundleToOperations(coreBundle));
300
329
  }
301
330
  }
302
- // Apply watermark to all rendered files
331
+ // Apply the license watermark to all rendered files exactly once. SKILL.md must
332
+ // keep its frontmatter at line 1, so it is never watermarked (matches sync.ts).
303
333
  for (const op of operations) {
334
+ if (op.path.startsWith('.claude/skills/'))
335
+ continue;
304
336
  op.content = applyLicenseWatermark(op.content, op.path);
305
337
  }
306
338
  // Reset global watermark state
@@ -320,6 +352,45 @@ export async function installCommand(agent, options) {
320
352
  const allFiles = operations.map((op) => ({ path: op.path, content: op.content }));
321
353
  const manifest = generateManifest(rootDir, allFiles);
322
354
  console.log(chalk.dim(`Integrity manifest: ${manifest.length} file(s) hashed → .nepopsx/manifest.sha256`));
355
+ // ── Ruflo integration (optional) ──────────────────────────────
356
+ // `ruflo` was detected up-front (above) and, when available, baked into the
357
+ // workspace config so the backend rendered memory-aware agent files. Here we
358
+ // additionally write the local `.claude-flow/` runtime config + MCP server.
359
+ if (ruflo.available) {
360
+ console.log(chalk.dim(`\n Ruflo ${ruflo.version} detected — configuring memory layer...`));
361
+ const apiUrl = resolveApiBase(rootDir);
362
+ const rufloFiles = generateRufloConfig({
363
+ rootDir,
364
+ orgSlug: activeLicense.org,
365
+ workspaceSlug: activeLicense.workspace,
366
+ agent,
367
+ providers,
368
+ apiUrl,
369
+ licenseKey: activeLicense.key,
370
+ });
371
+ for (const f of rufloFiles) {
372
+ console.log(chalk.dim(` ✓ ${f}`));
373
+ }
374
+ console.log(chalk.dim(" Memory namespace: ") + chalk.cyan(`${activeLicense.org}/${activeLicense.workspace}`));
375
+ }
376
+ else if (!ruflo.hasLocalConfig) {
377
+ console.log(chalk.dim("\n 💡 Install Ruflo for memory-powered agents: ") + chalk.cyan("npx ruflo@latest init"));
378
+ }
379
+ // Register our own provider-agnostic MCP server (nepopsx-memory) so Claude
380
+ // Code / Copilot can call learning_search + learning_store for governed team
381
+ // recall. Independent of Ruflo; uses a ${NEPOPSX_LICENSE_KEY} env placeholder
382
+ // so the committed .mcp.json never carries the raw license key.
383
+ const mcpFiles = generateMcpConfig({ rootDir, apiUrl: resolveApiBase(rootDir) });
384
+ if (mcpFiles.length > 0) {
385
+ console.log(chalk.dim(` MCP recall server (nepopsx-memory): ${mcpFiles.join(", ")}`) +
386
+ chalk.dim(`\n → export ${"NEPOPSX_LICENSE_KEY"}=<your license key> to authenticate recall`));
387
+ }
388
+ // Set up session-end capture hooks so reflector learnings auto-sync to the
389
+ // backend (`nepopsx capture` → /learnings/auto) — native on each chosen provider.
390
+ const hookFiles = generateCaptureHooks(rootDir, providers);
391
+ if (hookFiles.length > 0) {
392
+ console.log(chalk.dim(` Capture hooks (learnings auto-sync on session end): ${hookFiles.join(", ")}`));
393
+ }
323
394
  console.log(chalk.bold.green(`\n✅ Installed ${agent}@${resolvedVersion}\n`));
324
395
  }
325
396
  async function handleAgentAssistedEnrichment(rootDir, license, agent, requestedVersion, workspaceConfig, localState, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  interface LoginOptions {
2
- email?: string;
2
+ config?: string;
3
+ browser?: boolean;
3
4
  }
5
+ /**
6
+ * `nepopsx login` — OAuth device-authorization grant. No password in the
7
+ * terminal and no license key to copy-paste: the CLI shows a short code, the
8
+ * already-signed-in dashboard approves it, and the backend hands back the org's
9
+ * license (provisioned via the normal activation path) + a device token.
10
+ */
4
11
  export declare function loginCommand(options: LoginOptions): Promise<void>;
5
12
  export {};
6
13
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAWA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4ED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDvE"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAgBA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2BD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FvE"}
@@ -1,108 +1,197 @@
1
1
  import chalk from "chalk";
2
- import { createInterface } from "node:readline";
3
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
- import { join } from "node:path";
2
+ import { spawn } from "node:child_process";
3
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { hostname, platform } from "node:os";
5
+ import { join, resolve } from "node:path";
5
6
  import { cwd } from "node:process";
7
+ import { parse } from "yaml";
8
+ import { validateWorkspaceConfig } from "@nepopsx/core";
6
9
  import { resolveApiBase } from "../config/api-config.js";
7
10
  import { API_TIMEOUT_MS } from "../constants.js";
11
+ import { activateLicense } from "../licensing/index.js";
8
12
  const NEPOPSX_DIR = ".nepopsx";
9
13
  const CONFIG_FILE = "config.json";
10
- async function prompt(question, hidden = false) {
11
- const rl = createInterface({
12
- input: process.stdin,
13
- output: process.stdout,
14
- });
15
- return new Promise((resolve) => {
16
- if (hidden && process.stdin.isTTY) {
17
- process.stdout.write(question);
18
- process.stdin.setRawMode(true);
19
- process.stdin.resume();
20
- let value = "";
21
- process.stdin.on("data", function onData(char) {
22
- const ch = char.toString("utf-8");
23
- if (ch === "\n" || ch === "\r" || ch === "\u0004") {
24
- process.stdin.setRawMode(false);
25
- process.stdin.pause();
26
- process.stdin.removeListener("data", onData);
27
- process.stdout.write("\n");
28
- rl.close();
29
- resolve(value);
30
- }
31
- else if (ch === "\u0003") {
32
- process.stdout.write("\n");
33
- process.exit(0);
34
- }
35
- else if (ch === "\u007f") {
36
- value = value.slice(0, -1);
37
- }
38
- else {
39
- value += ch;
40
- }
14
+ const WORKSPACE_CONFIG = ".nepopsx/workspace.yaml";
15
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
16
+ /**
17
+ * `nepopsx login` — OAuth device-authorization grant. No password in the
18
+ * terminal and no license key to copy-paste: the CLI shows a short code, the
19
+ * already-signed-in dashboard approves it, and the backend hands back the org's
20
+ * license (provisioned via the normal activation path) + a device token.
21
+ */
22
+ export async function loginCommand(options) {
23
+ const rootDir = cwd();
24
+ const apiBase = resolveApiBase(rootDir);
25
+ const label = `${hostname()} (${platform()})`;
26
+ console.log(chalk.bold.cyan("\n🔐 NEPOPSX login\n"));
27
+ // 1. Begin the grant.
28
+ let start;
29
+ try {
30
+ start = await postJson(`${apiBase}/auth/device/start`, { label });
31
+ }
32
+ catch (err) {
33
+ console.error(chalk.red("Could not start login:"), errMsg(err));
34
+ process.exit(1);
35
+ return;
36
+ }
37
+ // 2. Show the code + open the browser.
38
+ console.log(" Confirm this code in your browser to authorize this machine:\n");
39
+ console.log(" " + chalk.bold.yellow(formatUserCode(start.user_code)) + "\n");
40
+ console.log(" " + chalk.dim(start.verification_uri_complete) + "\n");
41
+ if (options.browser !== false) {
42
+ openBrowser(start.verification_uri_complete);
43
+ }
44
+ // 3. Poll until approved or the code expires.
45
+ process.stdout.write(chalk.dim(" Waiting for authorization"));
46
+ const deadline = Date.now() + start.expires_in * 1000;
47
+ const intervalMs = Math.max(1, start.interval) * 1000;
48
+ let approved = null;
49
+ while (Date.now() < deadline) {
50
+ await sleep(intervalMs);
51
+ process.stdout.write(chalk.dim("."));
52
+ let poll;
53
+ try {
54
+ poll = await postJson(`${apiBase}/auth/device/token`, {
55
+ device_code: start.device_code,
41
56
  });
42
57
  }
43
- else {
44
- rl.question(question, (answer) => {
45
- rl.close();
46
- resolve(answer);
47
- });
58
+ catch (err) {
59
+ // 400 = invalid/expired code; anything else = transient — keep waiting.
60
+ if (isHttpStatus(err, 400)) {
61
+ process.stdout.write("\n");
62
+ console.error(chalk.red("\n This login code expired. Run `nepopsx login` again."));
63
+ process.exit(1);
64
+ return;
65
+ }
66
+ continue;
48
67
  }
49
- });
50
- }
51
- function writeConfig(rootDir, patch) {
52
- const configPath = join(rootDir, NEPOPSX_DIR, CONFIG_FILE);
53
- let existing = {};
54
- if (existsSync(configPath)) {
55
- try {
56
- existing = JSON.parse(readFileSync(configPath, "utf-8"));
57
- }
58
- catch {
59
- /* start fresh */
68
+ if (poll.status === "approved") {
69
+ approved = poll;
70
+ break;
60
71
  }
61
72
  }
62
- const merged = { ...existing, ...patch };
63
- mkdirSync(join(rootDir, NEPOPSX_DIR), { recursive: true });
64
- writeFileSync(configPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
65
- }
66
- export async function loginCommand(options) {
67
- const rootDir = cwd();
68
- const email = options.email ?? (await prompt("Email: "));
69
- const password = await prompt("Password: ", true);
70
- if (!email || !password) {
71
- console.error(chalk.red("Email and password are required."));
73
+ process.stdout.write("\n");
74
+ if (!approved) {
75
+ console.error(chalk.red("\n Timed out waiting for authorization. Run `nepopsx login` again."));
72
76
  process.exit(1);
77
+ return;
73
78
  }
74
- const apiBase = resolveApiBase(rootDir);
79
+ // 4. Persist the device identity token (for `whoami`/future device-only auth).
80
+ writeConfig(rootDir, {
81
+ auth: {
82
+ token: approved.device_token,
83
+ email: "",
84
+ org: approved.org?.slug ?? "",
85
+ },
86
+ });
87
+ // 5. Provision the org license through the normal activation path so every
88
+ // existing command (templates decrypt, sync, learnings) keeps working.
89
+ if (!approved.license) {
90
+ console.warn(chalk.yellow("\n ✓ Signed in, but your org has no active plan yet."));
91
+ console.log(chalk.dim(" Request a plan from the dashboard, then run `nepopsx login` again.\n"));
92
+ return;
93
+ }
94
+ const workspaceName = readWorkspaceName(rootDir, options.config);
95
+ const result = await activateLicense(rootDir, approved.license.key, workspaceName);
96
+ if (!result.success) {
97
+ console.error(chalk.red(`\n Signed in, but provisioning the license failed: ${result.error}`));
98
+ process.exit(1);
99
+ return;
100
+ }
101
+ const license = result.license;
102
+ console.log(chalk.bold.green(`\n✅ Logged in — ${license.org} (${license.tier})`));
103
+ console.log(chalk.dim(` License provisioned for this machine. Next: `) + chalk.cyan("nepopsx up") + "\n");
104
+ }
105
+ // ─── helpers ────────────────────────────────────────────────────────────────
106
+ async function postJson(url, body) {
75
107
  const controller = new AbortController();
76
108
  const timer = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
77
- let response;
78
109
  try {
79
- response = await fetch(`${apiBase}/auth/login`, {
110
+ const res = await fetch(url, {
80
111
  method: "POST",
81
112
  headers: { "Content-Type": "application/json" },
82
- body: JSON.stringify({ email, password }),
113
+ body: JSON.stringify(body),
83
114
  signal: controller.signal,
84
115
  });
85
- }
86
- catch (err) {
87
- console.error(chalk.red("Login failed:"), err instanceof Error ? err.message : String(err));
88
- process.exit(1);
116
+ if (!res.ok) {
117
+ const text = await res.text().catch(() => "");
118
+ throw new HttpError(res.status, text || res.statusText);
119
+ }
120
+ return (await res.json());
89
121
  }
90
122
  finally {
91
123
  clearTimeout(timer);
92
124
  }
93
- if (!response.ok) {
94
- const body = await response.text().catch(() => "");
95
- console.error(chalk.red(`Login failed (${response.status}):`), body || response.statusText);
96
- process.exit(1);
125
+ }
126
+ class HttpError extends Error {
127
+ status;
128
+ constructor(status, message) {
129
+ super(message);
130
+ this.status = status;
97
131
  }
98
- const data = (await response.json());
99
- writeConfig(rootDir, {
100
- auth: {
101
- token: data.access_token,
102
- email: data.user?.email ?? email,
103
- org: data.user?.org ?? "",
104
- },
132
+ }
133
+ function isHttpStatus(err, status) {
134
+ return err instanceof HttpError && err.status === status;
135
+ }
136
+ function errMsg(err) {
137
+ return err instanceof Error ? err.message : String(err);
138
+ }
139
+ function formatUserCode(code) {
140
+ // Group an even-length code into two halves (XXXXX-XXXXX) for readability.
141
+ if (code.length >= 6 && code.length % 2 === 0) {
142
+ const half = code.length / 2;
143
+ return `${code.slice(0, half)}-${code.slice(half)}`;
144
+ }
145
+ return code;
146
+ }
147
+ function openBrowser(url) {
148
+ const isWin = process.platform === "win32";
149
+ const cmd = process.platform === "darwin" ? "open" : isWin ? "cmd" : "xdg-open";
150
+ const args = isWin ? ["/c", "start", "", url] : [url];
151
+ try {
152
+ const child = spawn(cmd, args, { stdio: "ignore", detached: true });
153
+ child.on("error", () => { });
154
+ child.unref();
155
+ }
156
+ catch {
157
+ /* best-effort; the URL is printed above */
158
+ }
159
+ }
160
+ function readWorkspaceName(rootDir, configRel) {
161
+ const configPath = resolve(rootDir, configRel ?? WORKSPACE_CONFIG);
162
+ if (!existsSync(configPath))
163
+ return "unknown";
164
+ try {
165
+ const validation = validateWorkspaceConfig(parse(readFileSync(configPath, "utf-8")));
166
+ return validation.valid ? validation.config.workspace.name : "unknown";
167
+ }
168
+ catch {
169
+ return "unknown";
170
+ }
171
+ }
172
+ function writeConfig(rootDir, patch) {
173
+ const configPath = join(rootDir, NEPOPSX_DIR, CONFIG_FILE);
174
+ let existing = {};
175
+ if (existsSync(configPath)) {
176
+ try {
177
+ existing = JSON.parse(readFileSync(configPath, "utf-8"));
178
+ }
179
+ catch {
180
+ /* start fresh */
181
+ }
182
+ }
183
+ mkdirSync(join(rootDir, NEPOPSX_DIR), { recursive: true });
184
+ writeFileSync(configPath, JSON.stringify({ ...existing, ...patch }, null, 2) + "\n", {
185
+ encoding: "utf-8",
186
+ mode: 0o600,
105
187
  });
106
- console.log(chalk.green(`\n✔ Logged in as ${data.user?.email ?? email}\n`));
188
+ // mode on writeFileSync only applies on create; enforce on existing files too —
189
+ // this file now holds the device token.
190
+ try {
191
+ chmodSync(configPath, 0o600);
192
+ }
193
+ catch {
194
+ /* best-effort (e.g. non-POSIX fs) */
195
+ }
107
196
  }
108
197
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,WAAW,GAAG,aAAa,CAAC;AAuBlC,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,MAAM,GAAG,KAAK;IACpD,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAEvB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC,IAAY;gBACnD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAClD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;qBAAM,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,KAA4B;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,QAAQ,GAAiB,EAAE,CAAC;IAEhC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAiB,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;IACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,KAAK,GACT,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;IAEnE,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,aAAa,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACzC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAC1B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,MAAM,IAAI,CAAC,EAC/C,IAAI,IAAI,QAAQ,CAAC,UAAU,CAC5B,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;IAEtD,WAAW,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE;YACJ,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK;YAChC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;SAC1B;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}