expxagents 0.7.0 → 0.7.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.
|
@@ -47,14 +47,22 @@ export async function virtualOfficeCommand() {
|
|
|
47
47
|
console.error('Run "npm run build" first, or install the latest expxagents package.');
|
|
48
48
|
process.exit(1);
|
|
49
49
|
}
|
|
50
|
+
// Ensure .env is loaded from the user's project directory
|
|
51
|
+
const userProjectDir = process.cwd();
|
|
52
|
+
const dotenvPath = path.join(userProjectDir, '.env');
|
|
53
|
+
// Generate a temporary JWT_SECRET if none exists (needed for server startup)
|
|
54
|
+
const jwtSecret = process.env.JWT_SECRET ?? (await import('crypto')).randomBytes(32).toString('hex');
|
|
50
55
|
console.log('Starting ExpxAgents server...');
|
|
51
56
|
const child = spawn('node', [serverEntry], {
|
|
52
|
-
cwd,
|
|
57
|
+
cwd: userProjectDir,
|
|
53
58
|
stdio: 'inherit',
|
|
54
59
|
env: {
|
|
55
60
|
...process.env,
|
|
56
61
|
NODE_ENV: 'production',
|
|
57
62
|
DASHBOARD_DIST: dashboardDist,
|
|
63
|
+
SQUADS_DIR: path.join(userProjectDir, 'squads'),
|
|
64
|
+
DOTENV_PATH: dotenvPath,
|
|
65
|
+
JWT_SECRET: jwtSecret,
|
|
58
66
|
PORT: port,
|
|
59
67
|
},
|
|
60
68
|
detached: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAqBnC"}
|
package/dist/server/config.js
CHANGED
|
@@ -3,19 +3,20 @@ import path from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
export function loadConfig() {
|
|
6
|
-
// Load .env
|
|
6
|
+
// Load .env — prefer DOTENV_PATH (set by CLI), fallback to project root
|
|
7
7
|
const projectRoot = path.resolve(__dirname, '..', '..');
|
|
8
|
-
|
|
8
|
+
const dotenvFile = process.env.DOTENV_PATH ?? path.join(projectRoot, '.env');
|
|
9
|
+
dotenv.config({ path: dotenvFile });
|
|
9
10
|
const jwtSecret = process.env.JWT_SECRET;
|
|
10
11
|
if (!jwtSecret || jwtSecret.length < 32) {
|
|
11
12
|
throw new Error('JWT_SECRET environment variable is required and must be at least 32 characters. ' +
|
|
12
|
-
'Run "npx
|
|
13
|
+
'Run "npx expxagents init" to generate one.');
|
|
13
14
|
}
|
|
14
15
|
const port = parseInt(process.env.PORT || '3001', 10);
|
|
15
16
|
const corsOrigin = process.env.CORS_ORIGIN || `http://localhost:${port}`;
|
|
16
17
|
const nodeEnv = process.env.NODE_ENV || 'development';
|
|
17
|
-
const dataDir = path.join(__dirname, '..', 'data');
|
|
18
|
-
const squadsDir = path.resolve(projectRoot, 'squads');
|
|
18
|
+
const dataDir = process.env.DATA_DIR ?? path.join(__dirname, '..', 'data');
|
|
19
|
+
const squadsDir = process.env.SQUADS_DIR ?? path.resolve(projectRoot, 'squads');
|
|
19
20
|
return { port, corsOrigin, nodeEnv, jwtSecret, dataDir, squadsDir };
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAW/D,MAAM,UAAU,UAAU;IACxB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAW/D,MAAM,UAAU,UAAU;IACxB,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,kFAAkF;YAClF,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oBAAoB,IAAI,EAAE,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEhF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACtE,CAAC"}
|