@agent-deck/cli 1.1.0 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmCA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDtE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBzD;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBrE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE7D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAc1E;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2CA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDtE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBzD;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBrE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE7D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAc1E;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2D5D"}
package/dist/index.js CHANGED
@@ -8,13 +8,21 @@ exports.runCredentialCommand = runCredentialCommand;
8
8
  exports.runCli = runCli;
9
9
  const runtime_1 = require("./lib/runtime");
10
10
  const start_1 = require("./start");
11
+ const setup_1 = require("./setup");
12
+ const status_1 = require("./status");
13
+ const stop_1 = require("./stop");
14
+ const upgrade_1 = require("./upgrade");
11
15
  const version_1 = require("./version");
12
16
  function getVaultManager() {
13
17
  return (0, runtime_1.createCredentialManager)();
14
18
  }
15
19
  function printUsage() {
16
20
  console.log(`Usage:
17
- agent-deck start [--open] [--no-ui] [--port PORT] [--mcp-port PORT]
21
+ agent-deck start [--open] [--no-ui] [--force] [--port PORT] [--mcp-port PORT]
22
+ agent-deck stop
23
+ agent-deck status
24
+ agent-deck setup --client cursor|claude|claude-desktop [--scope global|project] [--start]
25
+ agent-deck upgrade [--check]
18
26
  agent-deck doctor
19
27
  agent-deck --version
20
28
  agent-deck credential add <id> --env-name ENV_NAME --scheme bearer|header|http_basic_user [--label LABEL] [--header-name NAME] [--tags tag1,tag2]
@@ -194,6 +202,7 @@ async function runCli(argv) {
194
202
  case 'start': {
195
203
  let openBrowser = false;
196
204
  let skipUi = false;
205
+ let force = false;
197
206
  let backendPort;
198
207
  let mcpPort;
199
208
  for (let i = 0; i < rest.length; i += 1) {
@@ -204,6 +213,9 @@ async function runCli(argv) {
204
213
  else if (arg === '--no-ui') {
205
214
  skipUi = true;
206
215
  }
216
+ else if (arg === '--force') {
217
+ force = true;
218
+ }
207
219
  else if (arg === '--port') {
208
220
  backendPort = Number.parseInt(rest[++i] ?? '', 10);
209
221
  }
@@ -215,8 +227,21 @@ async function runCli(argv) {
215
227
  return 0;
216
228
  }
217
229
  }
218
- return (0, start_1.runStart)({ openBrowser, skipUi, backendPort, mcpPort });
230
+ return (0, start_1.runStart)({ openBrowser, skipUi, force, backendPort, mcpPort });
231
+ }
232
+ case 'stop':
233
+ return (0, stop_1.runStop)();
234
+ case 'status':
235
+ return (0, status_1.runStatus)();
236
+ case 'setup': {
237
+ const code = await (0, setup_1.runSetup)(rest);
238
+ if ((0, setup_1.shouldStartAfterSetup)(code)) {
239
+ return (0, start_1.runStart)({});
240
+ }
241
+ return code;
219
242
  }
243
+ case 'upgrade':
244
+ return (0, upgrade_1.runUpgrade)(rest);
220
245
  case 'doctor':
221
246
  return (0, start_1.runDoctor)();
222
247
  case 'credential':
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAmCA,4CAoDC;AAED,8CAgBC;AAED,kDAqBC;AAED,0BAwEC;AAED,oDAcC;AAED,wBA2CC;AAvQD,2CAKuB;AAEvB,mCAA8C;AAC9C,uCAAgD;AAYhD,SAAS,eAAe;IACtB,OAAO,IAAA,iCAAuB,GAAkB,CAAC;AACnD,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;6FAO+E,CAAC,CAAC;AAC/F,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,GAA4C,QAAQ,CAAC;IAC/D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,UAA8B,CAAC;IACnC,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAkB,CAAC;QACpD,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,6BAAmB,EAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,KAAK;QACL,MAAM;QACN,UAAU;QACV,OAAO;QACP,IAAI;QACJ,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,iBAAiB;IACrC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACpI,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,EAAU;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,6BAAmB,EAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,IAAI,MAA0B,CAAC;IAC/B,IAAI,cAAkC,CAAC;IACvC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAE5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,cAAc,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,0BAAgB,EAAC,cAAc,CAAC,CAAC;IACvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,iBAAiB,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,WAAW,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAErD,MAAM,OAAO,CAAC,aAAa,CAAC;QAC1B,MAAM;QACN,OAAO;QACP,aAAa;QACb,QAAQ;QACR,SAAS;QACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,KAAK,MAAM;YACT,OAAO,iBAAiB,EAAE,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC;YACE,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAmB,GAAE,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,WAA+B,CAAC;YACpC,IAAI,OAA2B,CAAC;YAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACrB,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;qBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;qBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrD,CAAC;qBAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;oBAChC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBAC5C,UAAU,EAAE,CAAC;oBACb,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;YAED,OAAO,IAAA,gBAAQ,EAAC,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,IAAA,iBAAS,GAAE,CAAC;QACrB,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB;YACE,UAAU,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type McpClient = 'cursor' | 'claude' | 'claude-desktop';
2
+ export type SetupScope = 'global' | 'project';
3
+ export interface McpEndpoint {
4
+ host: string;
5
+ mcpPort: number;
6
+ }
7
+ export declare function buildMcpUrl({ host, mcpPort }: McpEndpoint): string;
8
+ export declare function resolveConfigPath(client: McpClient, scope: SetupScope): string;
9
+ export declare function buildAgentDeckEntry(client: McpClient, endpoint: McpEndpoint): Record<string, unknown>;
10
+ export declare function readJsonFile(filePath: string): Record<string, unknown>;
11
+ export declare function mergeMcpServerConfig(existing: Record<string, unknown>, entry: Record<string, unknown>): Record<string, unknown>;
12
+ export declare function writeJsonFile(filePath: string, data: Record<string, unknown>): void;
13
+ //# sourceMappingURL=mcp-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,MAAM,CAElE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAuB9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBrG;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBtE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGnF"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildMcpUrl = buildMcpUrl;
7
+ exports.resolveConfigPath = resolveConfigPath;
8
+ exports.buildAgentDeckEntry = buildAgentDeckEntry;
9
+ exports.readJsonFile = readJsonFile;
10
+ exports.mergeMcpServerConfig = mergeMcpServerConfig;
11
+ exports.writeJsonFile = writeJsonFile;
12
+ const node_fs_1 = __importDefault(require("node:fs"));
13
+ const node_os_1 = __importDefault(require("node:os"));
14
+ const node_path_1 = __importDefault(require("node:path"));
15
+ function buildMcpUrl({ host, mcpPort }) {
16
+ return `http://${host}:${mcpPort}/mcp`;
17
+ }
18
+ function resolveConfigPath(client, scope) {
19
+ const home = node_os_1.default.homedir();
20
+ switch (client) {
21
+ case 'cursor':
22
+ return scope === 'project'
23
+ ? node_path_1.default.join(process.cwd(), '.cursor', 'mcp.json')
24
+ : node_path_1.default.join(home, '.cursor', 'mcp.json');
25
+ case 'claude':
26
+ return scope === 'project'
27
+ ? node_path_1.default.join(process.cwd(), '.mcp.json')
28
+ : node_path_1.default.join(home, '.claude.json');
29
+ case 'claude-desktop':
30
+ if (process.platform === 'darwin') {
31
+ return node_path_1.default.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
32
+ }
33
+ if (process.platform === 'win32') {
34
+ return node_path_1.default.join(process.env.APPDATA ?? home, 'Claude', 'claude_desktop_config.json');
35
+ }
36
+ return node_path_1.default.join(home, '.config', 'Claude', 'claude_desktop_config.json');
37
+ default:
38
+ throw new Error(`Unsupported client: ${client}`);
39
+ }
40
+ }
41
+ function buildAgentDeckEntry(client, endpoint) {
42
+ const url = buildMcpUrl(endpoint);
43
+ if (client === 'claude-desktop') {
44
+ return {
45
+ command: 'npx',
46
+ args: ['-y', 'supergateway', '--streamableHttp', url],
47
+ };
48
+ }
49
+ if (client === 'claude') {
50
+ return {
51
+ type: 'http',
52
+ url,
53
+ };
54
+ }
55
+ return { url };
56
+ }
57
+ function readJsonFile(filePath) {
58
+ if (!node_fs_1.default.existsSync(filePath)) {
59
+ return {};
60
+ }
61
+ const raw = node_fs_1.default.readFileSync(filePath, 'utf8').trim();
62
+ if (!raw) {
63
+ return {};
64
+ }
65
+ const parsed = JSON.parse(raw);
66
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
67
+ throw new Error(`Expected JSON object in ${filePath}`);
68
+ }
69
+ return parsed;
70
+ }
71
+ function mergeMcpServerConfig(existing, entry) {
72
+ const currentServers = existing.mcpServers;
73
+ const mcpServers = currentServers && typeof currentServers === 'object' && !Array.isArray(currentServers)
74
+ ? { ...currentServers }
75
+ : {};
76
+ mcpServers['agent-deck'] = entry;
77
+ return {
78
+ ...existing,
79
+ mcpServers,
80
+ };
81
+ }
82
+ function writeJsonFile(filePath, data) {
83
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(filePath), { recursive: true });
84
+ node_fs_1.default.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`, 'utf8');
85
+ }
86
+ //# sourceMappingURL=mcp-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface AgentDeckProbe {
2
+ backendUp: boolean;
3
+ mcpUp: boolean;
4
+ backendVersion?: string;
5
+ backendUrl: string;
6
+ mcpUrl: string;
7
+ }
8
+ export declare function isTcpPortOpen(host: string, port: number): Promise<boolean>;
9
+ export declare function probeAgentDeck(host: string, backendPort: number, mcpPort: number): Promise<AgentDeckProbe>;
10
+ export declare function listListeningPids(port: number): number[];
11
+ export declare function formatPortConflict(port: number, label: string, host: string, isAgentDeck: boolean): string;
12
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAahF;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAqBzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBxD;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,MAAM,CAkBR"}
package/dist/ports.js ADDED
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isTcpPortOpen = isTcpPortOpen;
7
+ exports.probeAgentDeck = probeAgentDeck;
8
+ exports.listListeningPids = listListeningPids;
9
+ exports.formatPortConflict = formatPortConflict;
10
+ const node_child_process_1 = require("node:child_process");
11
+ const node_net_1 = __importDefault(require("node:net"));
12
+ async function fetchJson(url, timeoutMs = 2000) {
13
+ const controller = new AbortController();
14
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
15
+ try {
16
+ const response = await fetch(url, { signal: controller.signal });
17
+ if (!response.ok) {
18
+ return null;
19
+ }
20
+ return (await response.json());
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ finally {
26
+ clearTimeout(timer);
27
+ }
28
+ }
29
+ async function isTcpPortOpen(host, port) {
30
+ return new Promise((resolve) => {
31
+ const socket = node_net_1.default.connect({ host, port });
32
+ const done = (open) => {
33
+ socket.removeAllListeners();
34
+ socket.destroy();
35
+ resolve(open);
36
+ };
37
+ socket.setTimeout(1500);
38
+ socket.on('connect', () => done(true));
39
+ socket.on('timeout', () => done(false));
40
+ socket.on('error', () => done(false));
41
+ });
42
+ }
43
+ async function probeAgentDeck(host, backendPort, mcpPort) {
44
+ const backendUrl = `http://${host}:${backendPort}`;
45
+ const mcpUrl = `http://${host}:${mcpPort}`;
46
+ const [backendHealth, mcpHealth] = await Promise.all([
47
+ fetchJson(`${backendUrl}/health`),
48
+ fetchJson(`${mcpUrl}/health`),
49
+ ]);
50
+ const backendUp = backendHealth?.status === 'ok' &&
51
+ (backendHealth.service === 'agent-deck-backend' || typeof backendHealth.version === 'string');
52
+ const mcpUp = mcpHealth?.service === 'agent-deck-mcp-server';
53
+ return {
54
+ backendUp,
55
+ mcpUp,
56
+ backendVersion: typeof backendHealth?.version === 'string' ? backendHealth.version : undefined,
57
+ backendUrl,
58
+ mcpUrl,
59
+ };
60
+ }
61
+ function listListeningPids(port) {
62
+ if (process.platform === 'win32') {
63
+ return [];
64
+ }
65
+ try {
66
+ const output = (0, node_child_process_1.execSync)(`lsof -ti :${port} -sTCP:LISTEN`, { encoding: 'utf8' }).trim();
67
+ if (!output) {
68
+ return [];
69
+ }
70
+ return output
71
+ .split('\n')
72
+ .map((value) => Number.parseInt(value, 10))
73
+ .filter((pid) => Number.isFinite(pid) && pid > 0);
74
+ }
75
+ catch {
76
+ return [];
77
+ }
78
+ }
79
+ function formatPortConflict(port, label, host, isAgentDeck) {
80
+ const pids = listListeningPids(port);
81
+ const pidHint = pids.length > 0
82
+ ? ` Listening PID(s): ${pids.join(', ')}.`
83
+ : process.platform === 'win32'
84
+ ? ''
85
+ : ` Check: lsof -i :${port}`;
86
+ if (isAgentDeck) {
87
+ return `Port ${port} (${label}) is already used by a running Agent Deck instance on ${host}.${pidHint}`;
88
+ }
89
+ return (`Port ${port} (${label}) is in use by another program on ${host}.${pidHint}\n` +
90
+ ` • Free the port, or start on different ports: agent-deck start --port <api> --mcp-port <mcp>\n` +
91
+ ` • If you change ports, re-run: agent-deck setup --client <cursor|claude>`);
92
+ }
93
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface RunState {
2
+ host: string;
3
+ backendPort: number;
4
+ mcpPort: number;
5
+ backendPid: number;
6
+ mcpPid: number;
7
+ cliPid: number;
8
+ startedAt: string;
9
+ }
10
+ export declare function runStatePath(): string;
11
+ export declare function readRunState(): RunState | null;
12
+ export declare function writeRunState(state: RunState): void;
13
+ export declare function clearRunState(): void;
14
+ export declare function isProcessAlive(pid: number): boolean;
15
+ //# sourceMappingURL=runtime-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAO9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAGnD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUnD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runStatePath = runStatePath;
7
+ exports.readRunState = readRunState;
8
+ exports.writeRunState = writeRunState;
9
+ exports.clearRunState = clearRunState;
10
+ exports.isProcessAlive = isProcessAlive;
11
+ const node_fs_1 = __importDefault(require("node:fs"));
12
+ const node_os_1 = __importDefault(require("node:os"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ function agentDeckHome() {
15
+ return process.env.AGENT_DECK_HOME ?? node_path_1.default.join(node_os_1.default.homedir(), '.agent-deck');
16
+ }
17
+ function runStatePath() {
18
+ return node_path_1.default.join(agentDeckHome(), 'run.json');
19
+ }
20
+ function readRunState() {
21
+ try {
22
+ const raw = node_fs_1.default.readFileSync(runStatePath(), 'utf8');
23
+ return JSON.parse(raw);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ function writeRunState(state) {
30
+ node_fs_1.default.mkdirSync(agentDeckHome(), { recursive: true });
31
+ node_fs_1.default.writeFileSync(runStatePath(), `${JSON.stringify(state, null, 2)}\n`, 'utf8');
32
+ }
33
+ function clearRunState() {
34
+ try {
35
+ node_fs_1.default.unlinkSync(runStatePath());
36
+ }
37
+ catch {
38
+ // ignore
39
+ }
40
+ }
41
+ function isProcessAlive(pid) {
42
+ if (!Number.isFinite(pid) || pid <= 0) {
43
+ return false;
44
+ }
45
+ try {
46
+ process.kill(pid, 0);
47
+ return true;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ //# sourceMappingURL=runtime-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":";;;;;AAkBA,oCAEC;AAED,oCAOC;AAED,sCAGC;AAED,sCAMC;AAED,wCAUC;AAtDD,sDAAyB;AACzB,sDAAyB;AACzB,0DAA6B;AAY7B,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,iBAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAe;IAC3C,iBAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,iBAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,CAAC;QACH,iBAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type McpClient, type SetupScope } from './mcp-config';
2
+ export interface SetupOptions {
3
+ client: McpClient;
4
+ scope?: SetupScope;
5
+ host?: string;
6
+ mcpPort?: number;
7
+ start?: boolean;
8
+ }
9
+ export declare function printSetupUsage(): void;
10
+ export declare function runSetup(args: string[]): Promise<number>;
11
+ export declare function shouldStartAfterSetup(exitCode: number): boolean;
12
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkGD,wBAAgB,eAAe,IAAI,IAAI,CAUtC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC9D;AAiBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D"}
package/dist/setup.js ADDED
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printSetupUsage = printSetupUsage;
4
+ exports.runSetup = runSetup;
5
+ exports.shouldStartAfterSetup = shouldStartAfterSetup;
6
+ const node_child_process_1 = require("node:child_process");
7
+ const mcp_config_1 = require("./mcp-config");
8
+ function parseClient(value) {
9
+ if (!value) {
10
+ return null;
11
+ }
12
+ const normalized = value.toLowerCase();
13
+ if (normalized === 'claude-code' || normalized === 'claude_code') {
14
+ return 'claude';
15
+ }
16
+ if (normalized === 'cursor' || normalized === 'claude' || normalized === 'claude-desktop') {
17
+ return normalized;
18
+ }
19
+ return null;
20
+ }
21
+ function parseSetupArgs(args) {
22
+ let client = null;
23
+ let scope = 'global';
24
+ let host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
25
+ let mcpPort = Number.parseInt(process.env.AGENT_DECK_MCP_PORT ?? '3001', 10);
26
+ let start = false;
27
+ for (let i = 0; i < args.length; i += 1) {
28
+ const arg = args[i];
29
+ if (arg === '--client') {
30
+ client = parseClient(args[++i]);
31
+ }
32
+ else if (arg === '--scope') {
33
+ const value = args[++i];
34
+ if (value === 'global' || value === 'project') {
35
+ scope = value;
36
+ }
37
+ else {
38
+ return { error: '--scope must be global or project' };
39
+ }
40
+ }
41
+ else if (arg === '--host') {
42
+ host = args[++i] ?? host;
43
+ }
44
+ else if (arg === '--mcp-port') {
45
+ mcpPort = Number.parseInt(args[++i] ?? '', 10);
46
+ }
47
+ else if (arg === '--start') {
48
+ start = true;
49
+ }
50
+ else if (arg === '--help' || arg === '-h') {
51
+ return { error: 'help' };
52
+ }
53
+ else {
54
+ return { error: `Unknown setup option: ${arg}` };
55
+ }
56
+ }
57
+ if (!client) {
58
+ return { error: '--client is required (cursor, claude, or claude-desktop)' };
59
+ }
60
+ if (client !== 'cursor' && client !== 'claude' && scope === 'project') {
61
+ return { error: '--scope project is only supported for cursor and claude' };
62
+ }
63
+ if (!Number.isFinite(mcpPort)) {
64
+ return { error: '--mcp-port must be a number' };
65
+ }
66
+ return { client, scope, host, mcpPort, start };
67
+ }
68
+ async function tryClaudeCliAdd(endpoint) {
69
+ return new Promise((resolve) => {
70
+ const child = (0, node_child_process_1.spawn)('claude', [
71
+ 'mcp',
72
+ 'add',
73
+ '--scope',
74
+ 'user',
75
+ '--transport',
76
+ 'http',
77
+ 'agent-deck',
78
+ (0, mcp_config_1.buildMcpUrl)(endpoint),
79
+ ], { stdio: ['ignore', 'pipe', 'pipe'], env: process.env });
80
+ let stderr = '';
81
+ child.stderr?.on('data', (chunk) => {
82
+ stderr += chunk.toString();
83
+ });
84
+ child.on('error', (error) => resolve({ ok: false, error: error.message }));
85
+ child.on('exit', (code) => {
86
+ if (code === 0) {
87
+ resolve({ ok: true });
88
+ return;
89
+ }
90
+ resolve({ ok: false, error: stderr.trim() || `claude mcp add exited with code ${code}` });
91
+ });
92
+ });
93
+ }
94
+ function printSetupUsage() {
95
+ console.log(`Usage:
96
+ agent-deck setup --client cursor|claude|claude-desktop [--scope global|project] [--mcp-port PORT] [--start]
97
+
98
+ Options:
99
+ --client MCP client to configure (required)
100
+ --scope global (default) or project — project only for cursor (.cursor/mcp.json)
101
+ --host MCP host (default 127.0.0.1 or AGENT_DECK_HOST)
102
+ --mcp-port MCP port (default 3001 or AGENT_DECK_MCP_PORT)
103
+ --start Start Agent Deck after writing config`);
104
+ }
105
+ async function runSetup(args) {
106
+ const parsed = parseSetupArgs(args);
107
+ if ('error' in parsed) {
108
+ if (parsed.error === 'help') {
109
+ printSetupUsage();
110
+ return 0;
111
+ }
112
+ console.error(parsed.error);
113
+ printSetupUsage();
114
+ return 1;
115
+ }
116
+ const endpoint = {
117
+ host: parsed.host ?? '127.0.0.1',
118
+ mcpPort: parsed.mcpPort ?? 3001,
119
+ };
120
+ if (parsed.client === 'claude') {
121
+ const added = await tryClaudeCliAdd(endpoint);
122
+ if (added.ok) {
123
+ console.log('Configured Claude Code via `claude mcp add` → ~/.claude.json');
124
+ printNextSteps(endpoint, parsed.start === true);
125
+ console.log('Verify: claude mcp list');
126
+ return parsed.start ? 2 : 0;
127
+ }
128
+ console.warn(`Claude CLI failed (${added.error ?? 'unknown error'}) — writing ~/.claude.json instead`);
129
+ }
130
+ const configPath = (0, mcp_config_1.resolveConfigPath)(parsed.client, parsed.scope ?? 'global');
131
+ const entry = (0, mcp_config_1.buildAgentDeckEntry)(parsed.client, endpoint);
132
+ const merged = (0, mcp_config_1.mergeMcpServerConfig)((0, mcp_config_1.readJsonFile)(configPath), entry);
133
+ (0, mcp_config_1.writeJsonFile)(configPath, merged);
134
+ console.log(`Wrote agent-deck MCP config → ${configPath}`);
135
+ if (parsed.client === 'claude-desktop') {
136
+ console.log('Claude Desktop uses a stdio bridge (supergateway) because JSON config is stdio-only.');
137
+ console.log('Start Agent Deck before opening Claude Desktop.');
138
+ }
139
+ printNextSteps(endpoint, parsed.start === true);
140
+ return parsed.start ? 2 : 0;
141
+ }
142
+ function printNextSteps(endpoint, shouldStart) {
143
+ console.log('');
144
+ console.log('Next steps:');
145
+ if (shouldStart) {
146
+ console.log(' 1. Agent Deck will start now (same as `agent-deck start`)');
147
+ }
148
+ else {
149
+ console.log(' 1. npx @agent-deck/cli@latest start (or `agent-deck stop` first if ports are busy)');
150
+ }
151
+ console.log(` 2. MCP endpoint → ${(0, mcp_config_1.buildMcpUrl)(endpoint)} (Claude shows server name "agent-deck", not the URL)`);
152
+ console.log(' 3. Restart Claude Code / Cursor if it was already open');
153
+ console.log(' 4. Claude Code: run `claude mcp list` — should show agent-deck ✓ Connected when step 1 is running');
154
+ console.log('');
155
+ console.log('Optional: AGENT_DECK_AUTO_UPGRADE=1 agent-deck start (check npm for updates on start)');
156
+ }
157
+ function shouldStartAfterSetup(exitCode) {
158
+ return exitCode === 2;
159
+ }
160
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/start.d.ts CHANGED
@@ -3,6 +3,7 @@ export interface StartOptions {
3
3
  mcpPort?: number;
4
4
  openBrowser?: boolean;
5
5
  skipUi?: boolean;
6
+ force?: boolean;
6
7
  }
7
8
  export declare function runStart(options?: StartOptions): Promise<number>;
8
9
  export declare function runDoctor(): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmED,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CA8BjD"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAwGD,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuG1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAwCjD"}
package/dist/start.js CHANGED
@@ -4,6 +4,10 @@ exports.runStart = runStart;
4
4
  exports.runDoctor = runDoctor;
5
5
  const node_child_process_1 = require("node:child_process");
6
6
  const paths_1 = require("./paths");
7
+ const ports_1 = require("./ports");
8
+ const runtime_state_1 = require("./runtime-state");
9
+ const stop_1 = require("./stop");
10
+ const upgrade_1 = require("./upgrade");
7
11
  const version_1 = require("./version");
8
12
  const children = [];
9
13
  let shuttingDown = false;
@@ -50,6 +54,7 @@ async function shutdown(exitCode = 0) {
50
54
  return;
51
55
  }
52
56
  shuttingDown = true;
57
+ (0, runtime_state_1.clearRunState)();
53
58
  for (const child of children) {
54
59
  if (!child.killed) {
55
60
  child.kill('SIGTERM');
@@ -58,12 +63,58 @@ async function shutdown(exitCode = 0) {
58
63
  await new Promise((resolve) => setTimeout(resolve, 300));
59
64
  process.exit(exitCode);
60
65
  }
66
+ function printRunningEndpoints(host, backendPort, mcpPort, backendUrl) {
67
+ console.log('');
68
+ console.log('Agent Deck is running');
69
+ console.log(` Dashboard ${backendUrl} (not :3000 — that port is dev-only)`);
70
+ console.log(` MCP http://${host}:${mcpPort}/mcp`);
71
+ console.log(` API health ${backendUrl}/health`);
72
+ console.log('');
73
+ console.log('Claude Code:');
74
+ console.log(` claude mcp add --scope user --transport http agent-deck http://${host}:${mcpPort}/mcp`);
75
+ console.log('');
76
+ }
77
+ async function ensurePortsAvailable(host, backendPort, mcpPort, probe) {
78
+ const [backendBusy, mcpBusy] = await Promise.all([
79
+ (0, ports_1.isTcpPortOpen)(host, backendPort),
80
+ (0, ports_1.isTcpPortOpen)(host, mcpPort),
81
+ ]);
82
+ if (backendBusy && !probe.backendUp) {
83
+ console.error(`[agent-deck] ${(0, ports_1.formatPortConflict)(backendPort, 'API/dashboard', host, false)}`);
84
+ return 1;
85
+ }
86
+ if (mcpBusy && !probe.mcpUp) {
87
+ console.error(`[agent-deck] ${(0, ports_1.formatPortConflict)(mcpPort, 'MCP', host, false)}`);
88
+ return 1;
89
+ }
90
+ return null;
91
+ }
61
92
  async function runStart(options = {}) {
93
+ await (0, upgrade_1.maybeAutoUpgradeOnStart)();
94
+ await (0, upgrade_1.notifyIfUpdateAvailable)();
62
95
  const backendPort = options.backendPort ?? parsePort(process.env.AGENT_DECK_PORT, 8000);
63
96
  const mcpPort = options.mcpPort ?? parsePort(process.env.AGENT_DECK_MCP_PORT, 3001);
64
97
  const host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
65
98
  const backendUrl = `http://${host}:${backendPort}`;
66
99
  const uiDist = options.skipUi ? undefined : (0, paths_1.resolveUiDist)();
100
+ const probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
101
+ if (probe.backendUp && probe.mcpUp) {
102
+ if (options.force) {
103
+ console.log('[agent-deck] Restarting existing instance (--force) ...');
104
+ await (0, stop_1.runStop)();
105
+ await new Promise((resolve) => setTimeout(resolve, 500));
106
+ }
107
+ else {
108
+ printRunningEndpoints(host, backendPort, mcpPort, backendUrl);
109
+ console.log('Already running. Use `agent-deck stop` or `agent-deck start --force` to restart.');
110
+ return 0;
111
+ }
112
+ }
113
+ const refreshedProbe = options.force ? await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort) : probe;
114
+ const portError = await ensurePortsAvailable(host, backendPort, mcpPort, refreshedProbe);
115
+ if (portError !== null) {
116
+ return portError;
117
+ }
67
118
  if (!options.skipUi && !uiDist) {
68
119
  console.warn('[agent-deck] Dashboard UI bundle not found (static-ui). API and MCP will still start.');
69
120
  console.warn('[agent-deck] Set AGENT_DECK_UI_DIST or run from a published npm package build.');
@@ -71,26 +122,44 @@ async function runStart(options = {}) {
71
122
  const backendEntry = (0, paths_1.resolveBackendEntry)('index');
72
123
  const mcpEntry = (0, paths_1.resolveBackendEntry)('mcp-index');
73
124
  console.log('[agent-deck] Starting backend ...');
74
- spawnNodeService('backend', backendEntry, {
125
+ const backendChild = spawnNodeService('backend', backendEntry, {
75
126
  PORT: String(backendPort),
76
127
  HOST: host,
77
128
  ...(uiDist ? { AGENT_DECK_UI_DIST: uiDist } : {}),
78
129
  });
79
130
  const healthy = await waitForHealth(`${backendUrl}/health`);
80
131
  if (!healthy) {
81
- console.error('[agent-deck] Backend failed health check');
132
+ console.error('[agent-deck] Backend failed health check (port conflict or crash).');
133
+ console.error(`[agent-deck] Run: agent-deck status`);
82
134
  await shutdown(1);
83
135
  return 1;
84
136
  }
85
137
  console.log('[agent-deck] Starting MCP server ...');
86
- spawnNodeService('mcp', mcpEntry, {
138
+ const mcpChild = spawnNodeService('mcp', mcpEntry, {
87
139
  AGENT_DECK_MCP_PORT: String(mcpPort),
88
140
  AGENT_DECK_BACKEND_URL: backendUrl,
89
141
  });
142
+ await new Promise((resolve) => setTimeout(resolve, 400));
143
+ const mcpProbe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
144
+ if (!mcpProbe.mcpUp) {
145
+ console.error('[agent-deck] MCP server failed to start (port conflict or crash).');
146
+ console.error(`[agent-deck] Run: agent-deck status`);
147
+ await shutdown(1);
148
+ return 1;
149
+ }
150
+ (0, runtime_state_1.writeRunState)({
151
+ host,
152
+ backendPort,
153
+ mcpPort,
154
+ backendPid: backendChild.pid ?? 0,
155
+ mcpPid: mcpChild.pid ?? 0,
156
+ cliPid: process.pid,
157
+ startedAt: new Date().toISOString(),
158
+ });
90
159
  const dashboardLine = uiDist ? backendUrl : '(UI bundle missing — use npm run dev:all for dev UI)';
91
160
  console.log('');
92
161
  console.log('Agent Deck is running');
93
- console.log(` Dashboard ${dashboardLine}`);
162
+ console.log(` Dashboard ${dashboardLine} (not :3000 — that port is dev-only)`);
94
163
  console.log(` MCP http://${host}:${mcpPort}/mcp`);
95
164
  console.log(` API health ${backendUrl}/health`);
96
165
  console.log('');
@@ -135,6 +204,16 @@ async function runDoctor() {
135
204
  console.warn('WARN: dashboard UI bundle missing (optional for API/MCP)');
136
205
  }
137
206
  console.log(`Package version ${(0, version_1.getAgentDeckVersion)()}`);
207
+ const host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
208
+ const backendPort = parsePort(process.env.AGENT_DECK_PORT, 8000);
209
+ const mcpPort = parsePort(process.env.AGENT_DECK_MCP_PORT, 3001);
210
+ const probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
211
+ if (probe.backendUp && probe.mcpUp) {
212
+ console.log(`OK: Agent Deck reachable on :${backendPort} / :${mcpPort}`);
213
+ }
214
+ else {
215
+ console.warn('WARN: Agent Deck is not running (agent-deck start)');
216
+ }
138
217
  return ok ? 0 : 1;
139
218
  }
140
219
  //# sourceMappingURL=start.js.map
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runStatus(): Promise<number>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAqDjD"}
package/dist/status.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runStatus = runStatus;
4
+ const ports_1 = require("./ports");
5
+ const runtime_state_1 = require("./runtime-state");
6
+ const version_1 = require("./version");
7
+ function parsePort(value, fallback) {
8
+ if (!value) {
9
+ return fallback;
10
+ }
11
+ const parsed = Number.parseInt(value, 10);
12
+ return Number.isFinite(parsed) ? parsed : fallback;
13
+ }
14
+ async function runStatus() {
15
+ const host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
16
+ const backendPort = parsePort(process.env.AGENT_DECK_PORT, 8000);
17
+ const mcpPort = parsePort(process.env.AGENT_DECK_MCP_PORT, 3001);
18
+ const probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
19
+ const state = (0, runtime_state_1.readRunState)();
20
+ console.log(`CLI package ${(0, version_1.getAgentDeckVersion)()}`);
21
+ console.log(`Configured host ${host} API :${backendPort} MCP :${mcpPort}`);
22
+ console.log('');
23
+ if (probe.backendUp && probe.mcpUp) {
24
+ console.log('Status: running');
25
+ console.log(` Dashboard ${probe.backendUrl}`);
26
+ console.log(` MCP ${probe.mcpUrl}/mcp`);
27
+ if (probe.backendVersion) {
28
+ console.log(` Backend v${probe.backendVersion}`);
29
+ }
30
+ }
31
+ else if (probe.backendUp || probe.mcpUp) {
32
+ console.log('Status: partial (one service up, one down — try agent-deck stop && agent-deck start)');
33
+ console.log(` Backend ${probe.backendUp ? 'up' : 'down'} ${probe.backendUrl}`);
34
+ console.log(` MCP ${probe.mcpUp ? 'up' : 'down'} ${probe.mcpUrl}`);
35
+ }
36
+ else {
37
+ console.log('Status: not running');
38
+ }
39
+ if (state) {
40
+ console.log('');
41
+ console.log('Last run.json:');
42
+ console.log(` started ${state.startedAt}`);
43
+ console.log(` pids backend=${state.backendPid}${(0, runtime_state_1.isProcessAlive)(state.backendPid) ? '' : ' (dead)'} ` +
44
+ `mcp=${state.mcpPid}${(0, runtime_state_1.isProcessAlive)(state.mcpPid) ? '' : ' (dead)'} ` +
45
+ `cli=${state.cliPid}${(0, runtime_state_1.isProcessAlive)(state.cliPid) ? '' : ' (dead)'}`);
46
+ }
47
+ const [backendBusy, mcpBusy] = await Promise.all([
48
+ (0, ports_1.isTcpPortOpen)(host, backendPort),
49
+ (0, ports_1.isTcpPortOpen)(host, mcpPort),
50
+ ]);
51
+ if (backendBusy && !probe.backendUp) {
52
+ console.log('');
53
+ console.warn((0, ports_1.formatPortConflict)(backendPort, 'API/dashboard', host, false));
54
+ }
55
+ if (mcpBusy && !probe.mcpUp) {
56
+ console.log('');
57
+ console.warn((0, ports_1.formatPortConflict)(mcpPort, 'MCP', host, false));
58
+ }
59
+ return probe.backendUp && probe.mcpUp ? 0 : 1;
60
+ }
61
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
package/dist/stop.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function runStop(): Promise<number>;
2
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"AAqCA,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAqD/C"}
package/dist/stop.js ADDED
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runStop = runStop;
4
+ const ports_1 = require("./ports");
5
+ const runtime_state_1 = require("./runtime-state");
6
+ function parsePort(value, fallback) {
7
+ if (!value) {
8
+ return fallback;
9
+ }
10
+ const parsed = Number.parseInt(value, 10);
11
+ return Number.isFinite(parsed) ? parsed : fallback;
12
+ }
13
+ function terminatePid(pid, label) {
14
+ if (!(0, runtime_state_1.isProcessAlive)(pid)) {
15
+ return false;
16
+ }
17
+ try {
18
+ process.kill(pid, 'SIGTERM');
19
+ console.log(`[agent-deck] Stopped ${label} (pid ${pid})`);
20
+ return true;
21
+ }
22
+ catch (error) {
23
+ console.warn(`[agent-deck] Could not stop ${label} (pid ${pid}): ${error instanceof Error ? error.message : error}`);
24
+ return false;
25
+ }
26
+ }
27
+ async function waitForShutdown(host, backendPort, mcpPort) {
28
+ for (let i = 0; i < 20; i += 1) {
29
+ const probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
30
+ if (!probe.backendUp && !probe.mcpUp) {
31
+ return;
32
+ }
33
+ await new Promise((resolve) => setTimeout(resolve, 200));
34
+ }
35
+ }
36
+ async function runStop() {
37
+ const host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
38
+ const backendPort = parsePort(process.env.AGENT_DECK_PORT, 8000);
39
+ const mcpPort = parsePort(process.env.AGENT_DECK_MCP_PORT, 3001);
40
+ const state = (0, runtime_state_1.readRunState)();
41
+ let stopped = 0;
42
+ if (state) {
43
+ if (terminatePid(state.mcpPid, 'MCP server')) {
44
+ stopped += 1;
45
+ }
46
+ if (terminatePid(state.backendPid, 'backend')) {
47
+ stopped += 1;
48
+ }
49
+ if (terminatePid(state.cliPid, 'CLI supervisor')) {
50
+ stopped += 1;
51
+ }
52
+ (0, runtime_state_1.clearRunState)();
53
+ }
54
+ let probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
55
+ if (probe.backendUp || probe.mcpUp) {
56
+ for (const pid of (0, ports_1.listListeningPids)(mcpPort)) {
57
+ if (terminatePid(pid, `listener on :${mcpPort}`)) {
58
+ stopped += 1;
59
+ }
60
+ }
61
+ for (const pid of (0, ports_1.listListeningPids)(backendPort)) {
62
+ if (terminatePid(pid, `listener on :${backendPort}`)) {
63
+ stopped += 1;
64
+ }
65
+ }
66
+ await waitForShutdown(host, backendPort, mcpPort);
67
+ probe = await (0, ports_1.probeAgentDeck)(host, backendPort, mcpPort);
68
+ }
69
+ if (probe.backendUp || probe.mcpUp) {
70
+ console.warn('[agent-deck] Agent Deck still responds on configured ports. Kill remaining processes manually:');
71
+ console.warn(` lsof -ti :${backendPort} -sTCP:LISTEN | xargs kill`);
72
+ console.warn(` lsof -ti :${mcpPort} -sTCP:LISTEN | xargs kill`);
73
+ return 1;
74
+ }
75
+ if (stopped === 0) {
76
+ console.log('[agent-deck] No running Agent Deck instance found.');
77
+ }
78
+ else {
79
+ console.log('[agent-deck] Agent Deck stopped.');
80
+ }
81
+ return 0;
82
+ }
83
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface UpgradeCheckResult {
2
+ current: string;
3
+ latest: string | null;
4
+ updateAvailable: boolean;
5
+ fromCache: boolean;
6
+ }
7
+ export declare function compareSemver(a: string, b: string): number;
8
+ export declare function fetchLatestVersion(): Promise<string | null>;
9
+ export declare function checkForUpgrade(options?: {
10
+ force?: boolean;
11
+ }): Promise<UpgradeCheckResult>;
12
+ export declare function runUpgrade(args: string[]): Promise<number>;
13
+ export declare function maybeAutoUpgradeOnStart(): Promise<void>;
14
+ export declare function notifyIfUpdateAvailable(): Promise<void>;
15
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AA4BD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAajE;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2BpG;AAaD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkChE;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB7D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB7D"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compareSemver = compareSemver;
7
+ exports.fetchLatestVersion = fetchLatestVersion;
8
+ exports.checkForUpgrade = checkForUpgrade;
9
+ exports.runUpgrade = runUpgrade;
10
+ exports.maybeAutoUpgradeOnStart = maybeAutoUpgradeOnStart;
11
+ exports.notifyIfUpdateAvailable = notifyIfUpdateAvailable;
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_fs_1 = __importDefault(require("node:fs"));
14
+ const node_os_1 = __importDefault(require("node:os"));
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const version_1 = require("./version");
17
+ const PACKAGE_NAME = '@agent-deck/cli';
18
+ const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
19
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
20
+ function agentDeckHome() {
21
+ return process.env.AGENT_DECK_HOME ?? node_path_1.default.join(node_os_1.default.homedir(), '.agent-deck');
22
+ }
23
+ function cachePath() {
24
+ return node_path_1.default.join(agentDeckHome(), 'version-check.json');
25
+ }
26
+ function readCache() {
27
+ try {
28
+ const raw = node_fs_1.default.readFileSync(cachePath(), 'utf8');
29
+ return JSON.parse(raw);
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ function writeCache(latest) {
36
+ node_fs_1.default.mkdirSync(agentDeckHome(), { recursive: true });
37
+ const payload = {
38
+ checkedAt: new Date().toISOString(),
39
+ latest,
40
+ };
41
+ node_fs_1.default.writeFileSync(cachePath(), `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
42
+ }
43
+ function compareSemver(a, b) {
44
+ const parse = (value) => value.replace(/^v/, '').split('.').map((part) => Number.parseInt(part, 10) || 0);
45
+ const left = parse(a);
46
+ const right = parse(b);
47
+ for (let i = 0; i < Math.max(left.length, right.length); i += 1) {
48
+ const diff = (left[i] ?? 0) - (right[i] ?? 0);
49
+ if (diff !== 0) {
50
+ return diff > 0 ? 1 : -1;
51
+ }
52
+ }
53
+ return 0;
54
+ }
55
+ async function fetchLatestVersion() {
56
+ try {
57
+ const response = await fetch(REGISTRY_URL, {
58
+ headers: { accept: 'application/json' },
59
+ });
60
+ if (!response.ok) {
61
+ return null;
62
+ }
63
+ const data = (await response.json());
64
+ return data.version ?? null;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ async function checkForUpgrade(options = {}) {
71
+ const current = (0, version_1.getAgentDeckVersion)();
72
+ const cache = readCache();
73
+ if (!options.force && cache?.latest) {
74
+ const age = Date.now() - Date.parse(cache.checkedAt);
75
+ if (Number.isFinite(age) && age >= 0 && age < CACHE_TTL_MS) {
76
+ return {
77
+ current,
78
+ latest: cache.latest,
79
+ updateAvailable: compareSemver(cache.latest, current) > 0,
80
+ fromCache: true,
81
+ };
82
+ }
83
+ }
84
+ const latest = await fetchLatestVersion();
85
+ if (latest) {
86
+ writeCache(latest);
87
+ }
88
+ return {
89
+ current,
90
+ latest,
91
+ updateAvailable: latest ? compareSemver(latest, current) > 0 : false,
92
+ fromCache: false,
93
+ };
94
+ }
95
+ function runNpmInstallGlobal(version) {
96
+ return new Promise((resolve) => {
97
+ const child = (0, node_child_process_1.spawn)('npm', ['install', '-g', `${PACKAGE_NAME}@${version}`], {
98
+ stdio: 'inherit',
99
+ shell: process.platform === 'win32',
100
+ });
101
+ child.on('error', () => resolve(1));
102
+ child.on('exit', (code) => resolve(code ?? 1));
103
+ });
104
+ }
105
+ async function runUpgrade(args) {
106
+ const checkOnly = args.includes('--check');
107
+ const result = await checkForUpgrade({ force: true });
108
+ if (!result.latest) {
109
+ console.error('Could not reach npm registry to check for updates.');
110
+ return 1;
111
+ }
112
+ console.log(`Current: ${result.current}`);
113
+ console.log(`Latest: ${result.latest}`);
114
+ if (!result.updateAvailable) {
115
+ console.log('Already on the latest version.');
116
+ return 0;
117
+ }
118
+ if (checkOnly) {
119
+ console.log('Update available. Run: agent-deck upgrade');
120
+ return 0;
121
+ }
122
+ console.log(`Upgrading ${PACKAGE_NAME} → ${result.latest} ...`);
123
+ const code = await runNpmInstallGlobal(result.latest);
124
+ if (code === 0) {
125
+ console.log('Upgrade complete. Restart any running Agent Deck process.');
126
+ }
127
+ else {
128
+ console.error('Upgrade failed. Try manually:');
129
+ console.error(` npm install -g ${PACKAGE_NAME}@${result.latest}`);
130
+ console.error('Or use without global install:');
131
+ console.error(` npx ${PACKAGE_NAME}@${result.latest} start`);
132
+ }
133
+ return code;
134
+ }
135
+ async function maybeAutoUpgradeOnStart() {
136
+ const enabled = process.env.AGENT_DECK_AUTO_UPGRADE === '1' ||
137
+ process.env.AGENT_DECK_AUTO_UPGRADE === 'true';
138
+ if (!enabled) {
139
+ return;
140
+ }
141
+ const result = await checkForUpgrade();
142
+ if (!result.updateAvailable || !result.latest) {
143
+ return;
144
+ }
145
+ console.log(`[agent-deck] Update available: ${result.current} → ${result.latest}`);
146
+ const code = await runNpmInstallGlobal(result.latest);
147
+ if (code !== 0) {
148
+ console.warn('[agent-deck] Auto-upgrade failed; continuing with current version.');
149
+ }
150
+ }
151
+ async function notifyIfUpdateAvailable() {
152
+ if (process.env.AGENT_DECK_AUTO_UPGRADE === '1' ||
153
+ process.env.AGENT_DECK_AUTO_UPGRADE === 'true' ||
154
+ process.env.AGENT_DECK_NO_UPDATE_CHECK === '1' ||
155
+ process.env.AGENT_DECK_NO_UPDATE_CHECK === 'true') {
156
+ return;
157
+ }
158
+ const result = await checkForUpgrade();
159
+ if (!result.updateAvailable || !result.latest) {
160
+ return;
161
+ }
162
+ console.log(`[agent-deck] Update available: ${result.current} → ${result.latest} (agent-deck upgrade, or npx ${PACKAGE_NAME}@latest start)`);
163
+ }
164
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "@agent-deck/cli",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Local MCP proxy with decks — one endpoint for Claude Code, Cursor, and other MCP clients",
5
5
  "license": "ISC",
6
6
  "bin": {
7
- "agent-deck": "bin/agent-deck"
7
+ "agent-deck": "./dist/bin.js"
8
8
  },
9
9
  "main": "dist/index.js",
10
10
  "files": [
11
- "dist",
12
- "bin"
11
+ "dist"
13
12
  ],
14
13
  "engines": {
15
14
  "node": ">=20"
@@ -40,8 +39,8 @@
40
39
  "prepublishOnly": "npm run build"
41
40
  },
42
41
  "dependencies": {
43
- "@agent-deck/backend": "^1.1.0",
44
- "@agent-deck/shared": "^1.1.0"
42
+ "@agent-deck/backend": "^1.1.2",
43
+ "@agent-deck/shared": "^1.1.2"
45
44
  },
46
45
  "devDependencies": {
47
46
  "@types/node": "^20.11.5",
package/bin/agent-deck DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- DIR="$(cd "$(dirname "$0")/.." && pwd)"
4
- if [[ -f "$DIR/dist/bin.js" ]]; then
5
- exec node "$DIR/dist/bin.js" "$@"
6
- fi
7
- exec npx tsx "$DIR/src/bin.ts" "$@"