@agentxjs/portagent 0.0.9 → 0.1.2

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/cli/index.js CHANGED
@@ -3,10 +3,11 @@
3
3
  // src/cli/index.ts
4
4
  import { Command } from "commander";
5
5
  import { config } from "dotenv";
6
- import { existsSync } from "fs";
6
+ import { existsSync, mkdirSync } from "fs";
7
7
  import { resolve } from "path";
8
+ import { homedir } from "os";
8
9
  var program = new Command();
9
- program.name("portagent").description("Portagent - AgentX Portal Application").version("0.0.1").option("-p, --port <port>", "Port to listen on", "5200").option("-e, --env-file <path>", "Path to environment file").option("--password <password>", "Set login password (or use PORTAGENT_PASSWORD env var)").option("--jwt-secret <secret>", "JWT secret for token signing (or use JWT_SECRET env var)").option("--api-key <key>", "LLM provider API key (or use LLM_PROVIDER_KEY env var)").option("--api-url <url>", "LLM provider base URL (or use LLM_PROVIDER_URL env var)").option("--model <model>", "LLM model name (or use LLM_PROVIDER_MODEL env var)").action(async (options) => {
10
+ program.name("portagent").description("Portagent - AgentX Portal Application").version("0.0.1").option("-p, --port <port>", "Port to listen on", "5200").option("-d, --data-dir <path>", "Data directory (default: ~/.agentx)").option("-e, --env-file <path>", "Path to environment file").option("--password <password>", "Set login password (or use PORTAGENT_PASSWORD env var)").option("--jwt-secret <secret>", "JWT secret for token signing (or use JWT_SECRET env var)").option("--api-key <key>", "LLM provider API key (or use LLM_PROVIDER_KEY env var)").option("--api-url <url>", "LLM provider base URL (or use LLM_PROVIDER_URL env var)").option("--model <model>", "LLM model name (or use LLM_PROVIDER_MODEL env var)").action(async (options) => {
10
11
  if (options.envFile) {
11
12
  const envPath = resolve(process.cwd(), options.envFile);
12
13
  if (!existsSync(envPath)) {
@@ -18,6 +19,12 @@ program.name("portagent").description("Portagent - AgentX Portal Application").v
18
19
  config({ path: resolve(process.cwd(), ".env") });
19
20
  config({ path: resolve(process.cwd(), ".env.local") });
20
21
  }
22
+ const dataDir = options.dataDir || process.env.PORTAGENT_DATA_DIR || resolve(homedir(), ".agentx");
23
+ process.env.PORTAGENT_DATA_DIR = dataDir;
24
+ const dataDirPath = resolve(dataDir, "data");
25
+ const logsDirPath = resolve(dataDir, "logs");
26
+ mkdirSync(dataDirPath, { recursive: true });
27
+ mkdirSync(logsDirPath, { recursive: true });
21
28
  if (options.port) {
22
29
  process.env.PORT = options.port;
23
30
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Portagent CLI\n *\n * Command-line interface for running the Portagent server.\n *\n * Usage:\n * portagent # Start with defaults\n * portagent -p 3000 # Custom port\n * portagent --env-file .env.prod # Load custom env file\n */\n\nimport { Command } from \"commander\";\nimport { config } from \"dotenv\";\nimport { existsSync } from \"fs\";\nimport { resolve } from \"path\";\n\nconst program = new Command();\n\nprogram\n .name(\"portagent\")\n .description(\"Portagent - AgentX Portal Application\")\n .version(\"0.0.1\")\n .option(\"-p, --port <port>\", \"Port to listen on\", \"5200\")\n .option(\"-e, --env-file <path>\", \"Path to environment file\")\n .option(\"--password <password>\", \"Set login password (or use PORTAGENT_PASSWORD env var)\")\n .option(\"--jwt-secret <secret>\", \"JWT secret for token signing (or use JWT_SECRET env var)\")\n .option(\"--api-key <key>\", \"LLM provider API key (or use LLM_PROVIDER_KEY env var)\")\n .option(\"--api-url <url>\", \"LLM provider base URL (or use LLM_PROVIDER_URL env var)\")\n .option(\"--model <model>\", \"LLM model name (or use LLM_PROVIDER_MODEL env var)\")\n .action(async (options) => {\n // Load env file (CLI option takes priority, then defaults)\n if (options.envFile) {\n const envPath = resolve(process.cwd(), options.envFile);\n if (!existsSync(envPath)) {\n console.error(`Error: Environment file not found: ${envPath}`);\n process.exit(1);\n }\n config({ path: envPath });\n } else {\n // Default: load .env and .env.local from current directory\n config({ path: resolve(process.cwd(), \".env\") });\n config({ path: resolve(process.cwd(), \".env.local\") });\n }\n\n // Set environment variables from CLI options (override env file)\n if (options.port) {\n process.env.PORT = options.port;\n }\n if (options.password) {\n process.env.PORTAGENT_PASSWORD = options.password;\n }\n if (options.jwtSecret) {\n process.env.JWT_SECRET = options.jwtSecret;\n }\n if (options.apiKey) {\n process.env.LLM_PROVIDER_KEY = options.apiKey;\n }\n if (options.apiUrl) {\n process.env.LLM_PROVIDER_URL = options.apiUrl;\n }\n if (options.model) {\n process.env.LLM_PROVIDER_MODEL = options.model;\n }\n\n // Import and start server\n const { startServer } = await import(\"../server/index.js\");\n await startServer();\n });\n\nprogram.parse();\n"],"mappings":";;;AAYA,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AAExB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,WAAW,EAChB,YAAY,uCAAuC,EACnD,QAAQ,OAAO,EACf,OAAO,qBAAqB,qBAAqB,MAAM,EACvD,OAAO,yBAAyB,0BAA0B,EAC1D,OAAO,yBAAyB,wDAAwD,EACxF,OAAO,yBAAyB,0DAA0D,EAC1F,OAAO,mBAAmB,wDAAwD,EAClF,OAAO,mBAAmB,yDAAyD,EACnF,OAAO,mBAAmB,oDAAoD,EAC9E,OAAO,OAAO,YAAY;AAEzB,MAAI,QAAQ,SAAS;AACnB,UAAM,UAAU,QAAQ,QAAQ,IAAI,GAAG,QAAQ,OAAO;AACtD,QAAI,CAAC,WAAW,OAAO,GAAG;AACxB,cAAQ,MAAM,sCAAsC,OAAO,EAAE;AAC7D,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,EAC1B,OAAO;AAEL,WAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,GAAG,MAAM,EAAE,CAAC;AAC/C,WAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,GAAG,YAAY,EAAE,CAAC;AAAA,EACvD;AAGA,MAAI,QAAQ,MAAM;AAChB,YAAQ,IAAI,OAAO,QAAQ;AAAA,EAC7B;AACA,MAAI,QAAQ,UAAU;AACpB,YAAQ,IAAI,qBAAqB,QAAQ;AAAA,EAC3C;AACA,MAAI,QAAQ,WAAW;AACrB,YAAQ,IAAI,aAAa,QAAQ;AAAA,EACnC;AACA,MAAI,QAAQ,QAAQ;AAClB,YAAQ,IAAI,mBAAmB,QAAQ;AAAA,EACzC;AACA,MAAI,QAAQ,QAAQ;AAClB,YAAQ,IAAI,mBAAmB,QAAQ;AAAA,EACzC;AACA,MAAI,QAAQ,OAAO;AACjB,YAAQ,IAAI,qBAAqB,QAAQ;AAAA,EAC3C;AAGA,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAoB;AACzD,QAAM,YAAY;AACpB,CAAC;AAEH,QAAQ,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Portagent CLI\n *\n * Command-line interface for running the Portagent server.\n *\n * Usage:\n * portagent # Start with defaults\n * portagent -p 3000 # Custom port\n * portagent --env-file .env.prod # Load custom env file\n * portagent --data-dir /path/to # Custom data directory\n *\n * Directory structure (default: ~/.agentx):\n * data-dir/\n * ├── data/ # Database files\n * │ ├── agentx.db # AgentX data (containers, images, sessions)\n * │ └── portagent.db # User authentication data\n * └── logs/ # Log files\n * └── portagent.log\n */\n\nimport { Command } from \"commander\";\nimport { config } from \"dotenv\";\nimport { existsSync, mkdirSync } from \"fs\";\nimport { resolve } from \"path\";\nimport { homedir } from \"os\";\n\nconst program = new Command();\n\nprogram\n .name(\"portagent\")\n .description(\"Portagent - AgentX Portal Application\")\n .version(\"0.0.1\")\n .option(\"-p, --port <port>\", \"Port to listen on\", \"5200\")\n .option(\"-d, --data-dir <path>\", \"Data directory (default: ~/.agentx)\")\n .option(\"-e, --env-file <path>\", \"Path to environment file\")\n .option(\"--password <password>\", \"Set login password (or use PORTAGENT_PASSWORD env var)\")\n .option(\"--jwt-secret <secret>\", \"JWT secret for token signing (or use JWT_SECRET env var)\")\n .option(\"--api-key <key>\", \"LLM provider API key (or use LLM_PROVIDER_KEY env var)\")\n .option(\"--api-url <url>\", \"LLM provider base URL (or use LLM_PROVIDER_URL env var)\")\n .option(\"--model <model>\", \"LLM model name (or use LLM_PROVIDER_MODEL env var)\")\n .action(async (options) => {\n // Load env file (CLI option takes priority, then defaults)\n if (options.envFile) {\n const envPath = resolve(process.cwd(), options.envFile);\n if (!existsSync(envPath)) {\n console.error(`Error: Environment file not found: ${envPath}`);\n process.exit(1);\n }\n config({ path: envPath });\n } else {\n // Default: load .env and .env.local from current directory\n config({ path: resolve(process.cwd(), \".env\") });\n config({ path: resolve(process.cwd(), \".env.local\") });\n }\n\n // Set data directory (CLI > env > default)\n const dataDir =\n options.dataDir || process.env.PORTAGENT_DATA_DIR || resolve(homedir(), \".agentx\");\n process.env.PORTAGENT_DATA_DIR = dataDir;\n\n // Ensure directories exist\n const dataDirPath = resolve(dataDir, \"data\");\n const logsDirPath = resolve(dataDir, \"logs\");\n mkdirSync(dataDirPath, { recursive: true });\n mkdirSync(logsDirPath, { recursive: true });\n\n // Set environment variables from CLI options (override env file)\n if (options.port) {\n process.env.PORT = options.port;\n }\n if (options.password) {\n process.env.PORTAGENT_PASSWORD = options.password;\n }\n if (options.jwtSecret) {\n process.env.JWT_SECRET = options.jwtSecret;\n }\n if (options.apiKey) {\n process.env.LLM_PROVIDER_KEY = options.apiKey;\n }\n if (options.apiUrl) {\n process.env.LLM_PROVIDER_URL = options.apiUrl;\n }\n if (options.model) {\n process.env.LLM_PROVIDER_MODEL = options.model;\n }\n\n // Import and start server\n const { startServer } = await import(\"../server/index.js\");\n await startServer();\n });\n\nprogram.parse();\n"],"mappings":";;;AAqBA,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,YAAY,iBAAiB;AACtC,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,WAAW,EAChB,YAAY,uCAAuC,EACnD,QAAQ,OAAO,EACf,OAAO,qBAAqB,qBAAqB,MAAM,EACvD,OAAO,yBAAyB,qCAAqC,EACrE,OAAO,yBAAyB,0BAA0B,EAC1D,OAAO,yBAAyB,wDAAwD,EACxF,OAAO,yBAAyB,0DAA0D,EAC1F,OAAO,mBAAmB,wDAAwD,EAClF,OAAO,mBAAmB,yDAAyD,EACnF,OAAO,mBAAmB,oDAAoD,EAC9E,OAAO,OAAO,YAAY;AAEzB,MAAI,QAAQ,SAAS;AACnB,UAAM,UAAU,QAAQ,QAAQ,IAAI,GAAG,QAAQ,OAAO;AACtD,QAAI,CAAC,WAAW,OAAO,GAAG;AACxB,cAAQ,MAAM,sCAAsC,OAAO,EAAE;AAC7D,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,EAC1B,OAAO;AAEL,WAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,GAAG,MAAM,EAAE,CAAC;AAC/C,WAAO,EAAE,MAAM,QAAQ,QAAQ,IAAI,GAAG,YAAY,EAAE,CAAC;AAAA,EACvD;AAGA,QAAM,UACJ,QAAQ,WAAW,QAAQ,IAAI,sBAAsB,QAAQ,QAAQ,GAAG,SAAS;AACnF,UAAQ,IAAI,qBAAqB;AAGjC,QAAM,cAAc,QAAQ,SAAS,MAAM;AAC3C,QAAM,cAAc,QAAQ,SAAS,MAAM;AAC3C,YAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAC1C,YAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAG1C,MAAI,QAAQ,MAAM;AAChB,YAAQ,IAAI,OAAO,QAAQ;AAAA,EAC7B;AACA,MAAI,QAAQ,UAAU;AACpB,YAAQ,IAAI,qBAAqB,QAAQ;AAAA,EAC3C;AACA,MAAI,QAAQ,WAAW;AACrB,YAAQ,IAAI,aAAa,QAAQ;AAAA,EACnC;AACA,MAAI,QAAQ,QAAQ;AAClB,YAAQ,IAAI,mBAAmB,QAAQ;AAAA,EACzC;AACA,MAAI,QAAQ,QAAQ;AAClB,YAAQ,IAAI,mBAAmB,QAAQ;AAAA,EACzC;AACA,MAAI,QAAQ,OAAO;AACjB,YAAQ,IAAI,qBAAqB,QAAQ;AAAA,EAC3C;AAGA,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAoB;AACzD,QAAM,YAAY;AACpB,CAAC;AAEH,QAAQ,MAAM;","names":[]}
@@ -0,0 +1,2 @@
1
+ function u(t,i){for(var o=0;o<i.length;o++){const e=i[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const n=Object.getOwnPropertyDescriptor(e,r);n&&Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var s,c;function a(){return c||(c=1,s=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}),s}var f=a();const b=u({__proto__:null},[f]);export{b};
2
+ //# sourceMappingURL=browser-C0DG1J1h.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-C0DG1J1h.js","sources":["../../../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/browser.js"],"sourcesContent":["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n"],"names":["browser"],"mappings":"0XAEAA,EAAiB,UAAY,CAC3B,MAAM,IAAI,MACR,wFAGJ","x_google_ignoreList":[0]}