@fias/plugin-dev-harness 1.2.0 → 1.3.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.
Files changed (52) hide show
  1. package/dist/cli/check-auth.d.ts +3 -3
  2. package/dist/cli/check-auth.d.ts.map +1 -1
  3. package/dist/cli/check-auth.js +19 -8
  4. package/dist/cli/check-auth.js.map +1 -1
  5. package/dist/cli/check-auth.test.d.ts +2 -0
  6. package/dist/cli/check-auth.test.d.ts.map +1 -0
  7. package/dist/cli/check-auth.test.js +49 -0
  8. package/dist/cli/check-auth.test.js.map +1 -0
  9. package/dist/cli/dev.d.ts +2 -2
  10. package/dist/cli/dev.d.ts.map +1 -1
  11. package/dist/cli/dev.js +4 -20
  12. package/dist/cli/dev.js.map +1 -1
  13. package/dist/cli/dev.test.js +10 -38
  14. package/dist/cli/dev.test.js.map +1 -1
  15. package/dist/cli/entities.d.ts.map +1 -1
  16. package/dist/cli/entities.js +8 -6
  17. package/dist/cli/entities.js.map +1 -1
  18. package/dist/cli/entities.test.js +15 -24
  19. package/dist/cli/entities.test.js.map +1 -1
  20. package/dist/cli/index.test.js +2 -2
  21. package/dist/cli/login.d.ts +2 -0
  22. package/dist/cli/login.d.ts.map +1 -1
  23. package/dist/cli/login.js +19 -14
  24. package/dist/cli/login.js.map +1 -1
  25. package/dist/cli/login.test.js +46 -24
  26. package/dist/cli/login.test.js.map +1 -1
  27. package/dist/cli/submit.d.ts.map +1 -1
  28. package/dist/cli/submit.js +13 -11
  29. package/dist/cli/submit.js.map +1 -1
  30. package/dist/cli/submit.test.js +13 -22
  31. package/dist/cli/submit.test.js.map +1 -1
  32. package/dist/config/config-loader.d.ts +6 -0
  33. package/dist/config/config-loader.d.ts.map +1 -1
  34. package/dist/config/config-loader.js +12 -0
  35. package/dist/config/config-loader.js.map +1 -1
  36. package/dist/config/credentials.d.ts +19 -1
  37. package/dist/config/credentials.d.ts.map +1 -1
  38. package/dist/config/credentials.js +46 -6
  39. package/dist/config/credentials.js.map +1 -1
  40. package/dist/config/credentials.test.js +72 -27
  41. package/dist/config/credentials.test.js.map +1 -1
  42. package/dist/index.js +0 -0
  43. package/dist/server/harness-server.d.ts +2 -3
  44. package/dist/server/harness-server.d.ts.map +1 -1
  45. package/dist/server/harness-server.js +233 -41
  46. package/dist/server/harness-server.js.map +1 -1
  47. package/dist/server/harness-server.test.js +60 -3
  48. package/dist/server/harness-server.test.js.map +1 -1
  49. package/dist/server/static/static/harness.css +58 -0
  50. package/dist/server/static/static/harness.html +20 -7
  51. package/dist/server/static/static/harness.js +139 -2
  52. package/package.json +10 -10
@@ -1,8 +1,8 @@
1
1
  /**
2
- * `fias-dev check-auth` Command — Verify credentials exist
2
+ * `fias-dev check-auth` Command — Show credential status
3
3
  *
4
- * Exits 0 if an API key is saved, exits 1 with a helpful message if not.
5
- * Used by `npm start` to fail fast before launching servers.
4
+ * Diagnostic command that prints per-environment authentication status.
5
+ * Always exits 0 no longer a gate for `npm start`.
6
6
  */
7
7
  import { Command } from 'commander';
8
8
  export declare function registerCheckAuthCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"check-auth.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW/D"}
1
+ {"version":3,"file":"check-auth.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB/D"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  /**
3
- * `fias-dev check-auth` Command — Verify credentials exist
3
+ * `fias-dev check-auth` Command — Show credential status
4
4
  *
5
- * Exits 0 if an API key is saved, exits 1 with a helpful message if not.
6
- * Used by `npm start` to fail fast before launching servers.
5
+ * Diagnostic command that prints per-environment authentication status.
6
+ * Always exits 0 no longer a gate for `npm start`.
7
7
  */
8
8
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -15,13 +15,24 @@ const credentials_1 = require("../config/credentials");
15
15
  function registerCheckAuthCommand(program) {
16
16
  program
17
17
  .command('check-auth')
18
- .description('Check if FIAS API key is saved (used by npm start)')
18
+ .description('Check if FIAS API keys are saved')
19
19
  .action(() => {
20
- const credentials = (0, credentials_1.loadCredentials)();
21
- if (!credentials.apiKey) {
22
- console.error(chalk_1.default.red('\n Not logged in. Run `npx fias-dev login` first.\n'));
23
- process.exit(1);
20
+ const stagingKey = (0, credentials_1.loadApiKeyForEnvironment)('staging');
21
+ const prodKey = (0, credentials_1.loadApiKeyForEnvironment)('production');
22
+ console.log('');
23
+ if (stagingKey) {
24
+ console.log(chalk_1.default.green(' Staging: authenticated'));
24
25
  }
26
+ else {
27
+ console.log(chalk_1.default.dim(' Staging: not authenticated'));
28
+ }
29
+ if (prodKey) {
30
+ console.log(chalk_1.default.green(' Production: authenticated'));
31
+ }
32
+ else {
33
+ console.log(chalk_1.default.dim(' Production: not authenticated'));
34
+ }
35
+ console.log('');
25
36
  });
26
37
  }
27
38
  //# sourceMappingURL=check-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-auth.js","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAMH,4DAWC;AAdD,kDAA0B;AAC1B,uDAAwD;AAExD,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,IAAA,6BAAe,GAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"check-auth.js","sourceRoot":"","sources":["../../src/cli/check-auth.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAMH,4DAsBC;AAzBD,kDAA0B;AAC1B,uDAAiE;AAEjE,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,IAAA,sCAAwB,EAAC,SAAS,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAA,sCAAwB,EAAC,YAAY,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=check-auth.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-auth.test.d.ts","sourceRoot":"","sources":["../../src/cli/check-auth.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ jest.mock('../config/credentials', () => ({
4
+ loadApiKeyForEnvironment: jest.fn(),
5
+ }));
6
+ const commander_1 = require("commander");
7
+ const check_auth_1 = require("./check-auth");
8
+ const credentials_1 = require("../config/credentials");
9
+ const mockedLoadApiKey = jest.mocked(credentials_1.loadApiKeyForEnvironment);
10
+ describe('cli/check-auth', () => {
11
+ let program;
12
+ let consoleSpy;
13
+ beforeEach(() => {
14
+ jest.clearAllMocks();
15
+ program = new commander_1.Command();
16
+ program.exitOverride();
17
+ (0, check_auth_1.registerCheckAuthCommand)(program);
18
+ consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
19
+ });
20
+ afterEach(() => {
21
+ consoleSpy.mockRestore();
22
+ });
23
+ it('shows authenticated status when keys exist', async () => {
24
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
25
+ await program.parseAsync(['check-auth'], { from: 'user' });
26
+ const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
27
+ expect(allLogs).toContain('authenticated');
28
+ });
29
+ it('shows not authenticated when no keys', async () => {
30
+ mockedLoadApiKey.mockReturnValue('');
31
+ await program.parseAsync(['check-auth'], { from: 'user' });
32
+ const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
33
+ expect(allLogs).toContain('not authenticated');
34
+ });
35
+ it('always exits 0 regardless of credentials', async () => {
36
+ mockedLoadApiKey.mockReturnValue('');
37
+ const mockExit = jest.spyOn(process, 'exit').mockImplementation((() => { }));
38
+ await program.parseAsync(['check-auth'], { from: 'user' });
39
+ expect(mockExit).not.toHaveBeenCalled();
40
+ mockExit.mockRestore();
41
+ });
42
+ it('checks both staging and production environments', async () => {
43
+ mockedLoadApiKey.mockReturnValue('');
44
+ await program.parseAsync(['check-auth'], { from: 'user' });
45
+ expect(mockedLoadApiKey).toHaveBeenCalledWith('staging');
46
+ expect(mockedLoadApiKey).toHaveBeenCalledWith('production');
47
+ });
48
+ });
49
+ //# sourceMappingURL=check-auth.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-auth.test.js","sourceRoot":"","sources":["../../src/cli/check-auth.test.ts"],"names":[],"mappings":";;AAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;CACpC,CAAC,CAAC,CAAC;AAEJ,yCAAoC;AACpC,6CAAwD;AACxD,uDAAiE;AAEjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,sCAAwB,CAAC,CAAC;AAE/D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,OAAgB,CAAC;IACrB,IAAI,UAAkD,CAAC;IAEvD,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QACxB,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,IAAA,qCAAwB,EAAC,OAAO,CAAC,CAAC;QAClC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAU,CAAC,CAAC;QAErF,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/cli/dev.d.ts CHANGED
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * Launches an Express server that serves the harness host page,
5
5
  * which embeds the plugin iframe and handles bridge communication.
6
+ * Always starts in mock mode — use the toolbar to switch to live.
6
7
  *
7
8
  * Usage:
8
- * npx fias-dev # Mock mode (default)
9
- * npx fias-dev --live # Live mode (real AI, costs credits)
9
+ * npx fias-dev # Start harness (mock mode)
10
10
  * npx fias-dev --port 3200 # Custom port
11
11
  * npx fias-dev --plugin-url http://localhost:3100
12
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkDzD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BzD"}
package/dist/cli/dev.js CHANGED
@@ -4,10 +4,10 @@
4
4
  *
5
5
  * Launches an Express server that serves the harness host page,
6
6
  * which embeds the plugin iframe and handles bridge communication.
7
+ * Always starts in mock mode — use the toolbar to switch to live.
7
8
  *
8
9
  * Usage:
9
- * npx fias-dev # Mock mode (default)
10
- * npx fias-dev --live # Live mode (real AI, costs credits)
10
+ * npx fias-dev # Start harness (mock mode)
11
11
  * npx fias-dev --port 3200 # Custom port
12
12
  * npx fias-dev --plugin-url http://localhost:3100
13
13
  */
@@ -18,42 +18,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.registerDevCommand = registerDevCommand;
19
19
  const chalk_1 = __importDefault(require("chalk"));
20
20
  const config_loader_1 = require("../config/config-loader");
21
- const credentials_1 = require("../config/credentials");
22
21
  const harness_server_1 = require("../server/harness-server");
23
22
  function registerDevCommand(program) {
24
23
  program
25
24
  .command('dev', { isDefault: true })
26
25
  .description('Start the dev harness server')
27
- .option('--live', 'Enable live mode (real AI, costs credits)', false)
28
26
  .option('--port <port>', 'Harness server port', '3200')
29
27
  .option('--plugin-url <url>', 'Plugin dev server URL')
30
28
  .action(async (options) => {
31
29
  const config = (0, config_loader_1.loadConfig)();
32
30
  const port = parseInt(options.port, 10) || config.port;
33
31
  const pluginUrl = options.pluginUrl || config.pluginUrl;
34
- const isLive = options.live;
35
- if (isLive) {
36
- const credentials = (0, credentials_1.loadCredentials)();
37
- if (!credentials.apiKey) {
38
- console.error(chalk_1.default.red('No API key found. Run `fias-dev login` first to save your API key.'));
39
- process.exit(1);
40
- }
41
- }
42
- const credentials = isLive ? (0, credentials_1.loadCredentials)() : { apiKey: '' };
43
32
  console.log(chalk_1.default.bold('\n FIAS Plugin Dev Harness\n'));
44
- console.log(` Mode: ${isLive ? chalk_1.default.yellow('LIVE (credits will be used)') : chalk_1.default.green('MOCK (free, offline)')}`);
33
+ console.log(` Mode: ${chalk_1.default.green('MOCK (toggle to LIVE in the toolbar)')}`);
45
34
  console.log(` Plugin: ${chalk_1.default.cyan(pluginUrl)}`);
46
35
  console.log(` Harness: ${chalk_1.default.cyan(`http://localhost:${port}`)}`);
47
- if (isLive) {
48
- console.log(` API: ${chalk_1.default.dim(config.apiUrl)}`);
49
- }
50
36
  console.log('');
51
37
  await (0, harness_server_1.startHarnessServer)({
52
38
  port,
53
39
  pluginUrl,
54
- isLive,
55
- apiKey: credentials.apiKey,
56
- apiUrl: config.apiUrl,
40
+ defaultEnvironment: 'staging',
57
41
  permissions: config.permissions,
58
42
  mockUser: config.mockUser,
59
43
  mockTheme: config.mockTheme,
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAQH,gDAkDC;AAvDD,kDAA0B;AAC1B,2DAAqD;AACrD,uDAAwD;AACxD,6DAA8D;AAE9D,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnC,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,2CAA2C,EAAE,KAAK,CAAC;SACpE,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,MAAM,CAAC;SACtD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,IAAA,0BAAU,GAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAE5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,IAAA,6BAAe,GAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAChF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,6BAAe,GAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CACT,iBAAiB,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAC9G,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,IAAA,mCAAkB,EAAC;YACvB,IAAI;YACJ,SAAS;YACT,MAAM;YACN,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAOH,gDA4BC;AAhCD,kDAA0B;AAC1B,2DAAqD;AACrD,6DAA8D;AAE9D,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnC,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,MAAM,CAAC;SACtD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,IAAA,0BAAU,GAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QAExD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,IAAA,mCAAkB,EAAC;YACvB,IAAI;YACJ,SAAS;YACT,kBAAkB,EAAE,SAAS;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -3,62 +3,54 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  jest.mock('../config/config-loader', () => ({
4
4
  loadConfig: jest.fn(),
5
5
  }));
6
- jest.mock('../config/credentials', () => ({
7
- loadCredentials: jest.fn(),
8
- }));
9
6
  jest.mock('../server/harness-server', () => ({
10
7
  startHarnessServer: jest.fn(),
11
8
  }));
12
9
  const commander_1 = require("commander");
13
10
  const dev_1 = require("./dev");
14
11
  const config_loader_1 = require("../config/config-loader");
15
- const credentials_1 = require("../config/credentials");
16
12
  const harness_server_1 = require("../server/harness-server");
17
13
  const mockedLoadConfig = jest.mocked(config_loader_1.loadConfig);
18
- const mockedLoadCredentials = jest.mocked(credentials_1.loadCredentials);
19
14
  const mockedStartHarnessServer = jest.mocked(harness_server_1.startHarnessServer);
20
15
  describe('cli/dev', () => {
21
16
  let program;
22
- let mockExit;
23
17
  let consoleSpy;
24
- let consoleErrorSpy;
25
18
  const defaultConfig = {
26
19
  pluginUrl: 'http://localhost:3100',
27
20
  port: 3200,
28
21
  permissions: ['theme:read', 'entities:invoke'],
29
22
  mockUser: { userId: 'dev_user_001', displayName: 'Dev User', avatar: null },
30
23
  mockTheme: 'dark',
31
- apiUrl: 'https://api.fias.app/v1',
32
- platformUrl: 'https://fias.app',
24
+ apiUrl: 'https://api.staging.fias.io/v1',
25
+ platformUrl: 'https://staging.fias.io',
33
26
  };
34
27
  beforeEach(() => {
35
28
  jest.clearAllMocks();
36
29
  program = new commander_1.Command();
37
30
  program.exitOverride();
38
31
  (0, dev_1.registerDevCommand)(program);
39
- mockExit = jest.spyOn(process, 'exit').mockImplementation(((code) => {
40
- throw new Error(`process.exit(${code})`);
41
- }));
42
32
  consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
43
- consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
44
33
  mockedLoadConfig.mockReturnValue({ ...defaultConfig });
45
- mockedLoadCredentials.mockReturnValue({ apiKey: '' });
46
34
  mockedStartHarnessServer.mockResolvedValue();
47
35
  });
48
36
  afterEach(() => {
49
- mockExit.mockRestore();
50
37
  consoleSpy.mockRestore();
51
- consoleErrorSpy.mockRestore();
52
38
  });
53
39
  it('starts harness server in mock mode by default', async () => {
54
40
  await program.parseAsync(['dev'], { from: 'user' });
55
41
  expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
56
42
  port: 3200,
57
43
  pluginUrl: 'http://localhost:3100',
58
- isLive: false,
59
- apiKey: '',
44
+ defaultEnvironment: 'staging',
60
45
  }));
61
46
  });
47
+ it('does not pass isLive or apiKey to server', async () => {
48
+ await program.parseAsync(['dev'], { from: 'user' });
49
+ const options = mockedStartHarnessServer.mock.calls[0][0];
50
+ expect(options).not.toHaveProperty('isLive');
51
+ expect(options).not.toHaveProperty('apiKey');
52
+ expect(options).not.toHaveProperty('apiUrl');
53
+ });
62
54
  it('starts harness server with custom port', async () => {
63
55
  await program.parseAsync(['dev', '--port', '4000'], { from: 'user' });
64
56
  expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
@@ -73,26 +65,6 @@ describe('cli/dev', () => {
73
65
  pluginUrl: 'http://localhost:5555',
74
66
  }));
75
67
  });
76
- it('exits with error in live mode when no API key is saved', async () => {
77
- mockedLoadCredentials.mockReturnValue({ apiKey: '' });
78
- await expect(program.parseAsync(['dev', '--live'], { from: 'user' })).rejects.toThrow('process.exit(1)');
79
- expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('No API key found'));
80
- expect(mockedStartHarnessServer).not.toHaveBeenCalled();
81
- });
82
- it('starts harness server in live mode with API key', async () => {
83
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_live_key' });
84
- await program.parseAsync(['dev', '--live'], { from: 'user' });
85
- expect(mockedStartHarnessServer).toHaveBeenCalledWith(expect.objectContaining({
86
- isLive: true,
87
- apiKey: 'fias_sk_live_key',
88
- }));
89
- });
90
- it('logs live mode info', async () => {
91
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_live_key' });
92
- await program.parseAsync(['dev', '--live'], { from: 'user' });
93
- const allLogs = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
94
- expect(allLogs).toContain('LIVE');
95
- });
96
68
  it('passes config properties to harness server', async () => {
97
69
  mockedLoadConfig.mockReturnValue({
98
70
  ...defaultConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"dev.test.js","sourceRoot":"","sources":["../../src/cli/dev.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.test.js","sourceRoot":"","sources":["../../src/cli/dev.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE9D"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E9D"}
@@ -20,23 +20,25 @@ function registerEntitiesCommand(program) {
20
20
  .option('--search <query>', 'Search entities by name/description')
21
21
  .option('--type <type>', 'Filter by entity type (prompt, specialized-model, etc.)')
22
22
  .option('--limit <n>', 'Number of results', '20')
23
+ .option('--env <environment>', 'Target environment (staging or production)', 'staging')
23
24
  .action(async (options) => {
24
- const credentials = (0, credentials_1.loadCredentials)();
25
- if (!credentials.apiKey) {
26
- console.error(chalk_1.default.red('No API key found. Run `fias-dev login` first.'));
25
+ const env = options.env === 'production' ? 'production' : 'staging';
26
+ const apiKey = (0, credentials_1.loadApiKeyForEnvironment)(env);
27
+ if (!apiKey) {
28
+ console.error(chalk_1.default.red(`No API key found for ${env}. Run \`fias-dev login --env ${env}\` first.`));
27
29
  process.exit(1);
28
30
  }
29
- const config = (0, config_loader_1.loadConfig)();
31
+ const apiUrl = config_loader_1.ENVIRONMENT_URLS[env].apiUrl;
30
32
  const params = new URLSearchParams();
31
33
  if (options.search)
32
34
  params.set('search', options.search);
33
35
  if (options.type)
34
36
  params.set('type', options.type);
35
37
  params.set('limit', options.limit);
36
- const url = `${config.apiUrl}/developer/entities?${params.toString()}`;
38
+ const url = `${apiUrl}/developer/entities?${params.toString()}`;
37
39
  try {
38
40
  const response = await fetch(url, {
39
- headers: { Authorization: `Bearer ${credentials.apiKey}` },
41
+ headers: { Authorization: `Bearer ${apiKey}` },
40
42
  });
41
43
  if (!response.ok) {
42
44
  const err = await response.json().catch(() => ({}));
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/cli/entities.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  jest.mock('../config/credentials', () => ({
4
- loadCredentials: jest.fn(),
4
+ loadApiKeyForEnvironment: jest.fn(),
5
5
  }));
6
6
  jest.mock('../config/config-loader', () => ({
7
- loadConfig: jest.fn(),
7
+ ENVIRONMENT_URLS: {
8
+ staging: { apiUrl: 'https://api.staging.fias.io/v1', platformUrl: 'https://staging.fias.io' },
9
+ production: { apiUrl: 'https://api.fias.io/v1', platformUrl: 'https://fias.io' },
10
+ },
8
11
  }));
9
12
  const commander_1 = require("commander");
10
13
  const entities_1 = require("./entities");
11
14
  const credentials_1 = require("../config/credentials");
12
- const config_loader_1 = require("../config/config-loader");
13
- const mockedLoadCredentials = jest.mocked(credentials_1.loadCredentials);
14
- const mockedLoadConfig = jest.mocked(config_loader_1.loadConfig);
15
+ const mockedLoadApiKey = jest.mocked(credentials_1.loadApiKeyForEnvironment);
15
16
  describe('cli/entities', () => {
16
17
  let program;
17
18
  let mockExit;
18
19
  let consoleSpy;
19
20
  let consoleErrorSpy;
20
21
  let originalFetch;
21
- const defaultConfigValue = {
22
- pluginUrl: 'http://localhost:3100',
23
- port: 3200,
24
- permissions: [],
25
- mockUser: { userId: 'dev_user_001', displayName: 'Dev User', avatar: null },
26
- mockTheme: 'dark',
27
- apiUrl: 'https://api.fias.app/v1',
28
- platformUrl: 'https://fias.app',
29
- };
30
22
  beforeEach(() => {
31
23
  jest.clearAllMocks();
32
24
  originalFetch = global.fetch;
@@ -38,7 +30,6 @@ describe('cli/entities', () => {
38
30
  }));
39
31
  consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
40
32
  consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
41
- mockedLoadConfig.mockReturnValue({ ...defaultConfigValue });
42
33
  });
43
34
  afterEach(() => {
44
35
  mockExit.mockRestore();
@@ -47,12 +38,12 @@ describe('cli/entities', () => {
47
38
  global.fetch = originalFetch;
48
39
  });
49
40
  it('exits with error when no API key is configured', async () => {
50
- mockedLoadCredentials.mockReturnValue({ apiKey: '' });
41
+ mockedLoadApiKey.mockReturnValue('');
51
42
  await expect(program.parseAsync(['entities'], { from: 'user' })).rejects.toThrow('process.exit(1)');
52
43
  expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('No API key found'));
53
44
  });
54
45
  it('displays entities when API returns results', async () => {
55
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
46
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
56
47
  global.fetch = jest.fn().mockResolvedValue({
57
48
  ok: true,
58
49
  json: () => Promise.resolve({
@@ -75,7 +66,7 @@ describe('cli/entities', () => {
75
66
  expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('entity_sum'));
76
67
  });
77
68
  it('shows "no entities found" when API returns empty list', async () => {
78
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
69
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
79
70
  global.fetch = jest.fn().mockResolvedValue({
80
71
  ok: true,
81
72
  json: () => Promise.resolve({
@@ -89,7 +80,7 @@ describe('cli/entities', () => {
89
80
  expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('No entities found'));
90
81
  });
91
82
  it('displays "showing X of Y" message when there are more results', async () => {
92
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
83
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
93
84
  global.fetch = jest.fn().mockResolvedValue({
94
85
  ok: true,
95
86
  json: () => Promise.resolve({
@@ -111,7 +102,7 @@ describe('cli/entities', () => {
111
102
  expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Showing 1 of 50'));
112
103
  });
113
104
  it('passes search, type, and limit query params', async () => {
114
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
105
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
115
106
  global.fetch = jest.fn().mockResolvedValue({
116
107
  ok: true,
117
108
  json: () => Promise.resolve({
@@ -129,7 +120,7 @@ describe('cli/entities', () => {
129
120
  expect(url).toContain('limit=5');
130
121
  });
131
122
  it('exits with error when API returns non-ok response', async () => {
132
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
123
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
133
124
  global.fetch = jest.fn().mockResolvedValue({
134
125
  ok: false,
135
126
  statusText: 'Unauthorized',
@@ -139,7 +130,7 @@ describe('cli/entities', () => {
139
130
  expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Invalid API key'));
140
131
  });
141
132
  it('exits with error when API response JSON parsing fails', async () => {
142
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
133
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
143
134
  global.fetch = jest.fn().mockResolvedValue({
144
135
  ok: false,
145
136
  statusText: 'Server Error',
@@ -149,13 +140,13 @@ describe('cli/entities', () => {
149
140
  expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Server Error'));
150
141
  });
151
142
  it('exits with error when fetch throws (network error)', async () => {
152
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
143
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
153
144
  global.fetch = jest.fn().mockRejectedValue(new Error('Connection refused'));
154
145
  await expect(program.parseAsync(['entities'], { from: 'user' })).rejects.toThrow('process.exit(1)');
155
146
  expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Connection refused'));
156
147
  });
157
148
  it('handles entity without description', async () => {
158
- mockedLoadCredentials.mockReturnValue({ apiKey: 'fias_sk_test' });
149
+ mockedLoadApiKey.mockReturnValue('fias_sk_test');
159
150
  global.fetch = jest.fn().mockResolvedValue({
160
151
  ok: true,
161
152
  json: () => Promise.resolve({
@@ -1 +1 @@
1
- {"version":3,"file":"entities.test.js","sourceRoot":"","sources":["../../src/cli/entities.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.test.js","sourceRoot":"","sources":["../../src/cli/entities.test.ts"],"names":[],"mappings":"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"}
@@ -46,9 +46,9 @@ describe('cli/index', () => {
46
46
  const commands = program.commands.map((cmd) => cmd.name());
47
47
  expect(commands).toContain('submit');
48
48
  });
49
- it('has exactly 5 commands registered', () => {
49
+ it('has exactly 6 commands registered', () => {
50
50
  const program = (0, index_1.createCli)();
51
- expect(program.commands).toHaveLength(5);
51
+ expect(program.commands).toHaveLength(6);
52
52
  });
53
53
  });
54
54
  });
@@ -5,7 +5,9 @@
5
5
  * Manual: `fias-dev login --key fias_sk_...` saves key directly.
6
6
  */
7
7
  import { Command } from 'commander';
8
+ import { type Environment } from '../config/credentials';
8
9
  export declare function registerLoginCommand(program: Command): void;
10
+ export declare function handleBrowserLogin(environment?: Environment): Promise<void>;
9
11
  /**
10
12
  * Prompts for API key interactively (used as fallback).
11
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe3D;AAyJD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjD"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB3D;AAaD,wBAAsB,kBAAkB,CAAC,WAAW,GAAE,WAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5F;AA+CD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjD"}