@agentmeshhq/agent 0.1.8 → 0.1.10

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 (41) hide show
  1. package/dist/__tests__/runner.test.d.ts +1 -0
  2. package/dist/__tests__/runner.test.js +87 -0
  3. package/dist/__tests__/runner.test.js.map +1 -0
  4. package/dist/cli/index.js +5 -3
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/restart.d.ts +3 -1
  7. package/dist/cli/restart.js +11 -3
  8. package/dist/cli/restart.js.map +1 -1
  9. package/dist/cli/start.d.ts +1 -0
  10. package/dist/cli/start.js +3 -0
  11. package/dist/cli/start.js.map +1 -1
  12. package/dist/cli/status.js +7 -0
  13. package/dist/cli/status.js.map +1 -1
  14. package/dist/cli/whoami.js +25 -0
  15. package/dist/cli/whoami.js.map +1 -1
  16. package/dist/config/schema.d.ts +5 -0
  17. package/dist/core/daemon.d.ts +14 -0
  18. package/dist/core/daemon.js +173 -17
  19. package/dist/core/daemon.js.map +1 -1
  20. package/dist/core/registry.d.ts +26 -0
  21. package/dist/core/registry.js +18 -0
  22. package/dist/core/registry.js.map +1 -1
  23. package/dist/core/runner.d.ts +49 -0
  24. package/dist/core/runner.js +148 -0
  25. package/dist/core/runner.js.map +1 -0
  26. package/dist/core/tmux.d.ts +3 -0
  27. package/dist/core/tmux.js +23 -7
  28. package/dist/core/tmux.js.map +1 -1
  29. package/package.json +11 -11
  30. package/src/__tests__/runner.test.ts +105 -0
  31. package/src/cli/index.ts +5 -3
  32. package/src/cli/restart.ts +12 -3
  33. package/src/cli/start.ts +3 -0
  34. package/src/cli/status.ts +8 -0
  35. package/src/cli/whoami.ts +30 -1
  36. package/src/config/schema.ts +6 -0
  37. package/src/core/daemon.ts +223 -20
  38. package/src/core/registry.ts +57 -16
  39. package/src/core/runner.ts +200 -0
  40. package/src/core/tmux.ts +28 -9
  41. package/LICENSE +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/core/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,GAAG,cAAc,GAAG,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,WAAW,eAAe,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,OAAe,EACf,OAAgB,EAChB,GAAgB;IAEhB,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAEtD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnB,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEnC,sDAAsD;QACtD,IAAI,GAAG,EAAE,CAAC;YACR,qBAAqB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,GAAe;IACxE,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,QAAQ,CAAC,4BAA4B,WAAW,kBAAkB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC3B,QAAQ,CACN,4BAA4B,WAAW,yBAAyB,GAAG,CAAC,kBAAkB,GAAG,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,GAAe;IACzE,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,qBAAqB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,CAAC,eAAe;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,OAAe;IACzD,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,cAAc,GAAG,OAAO;aAC3B,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;aACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAExB,oEAAoE;QACpE,QAAQ,CAAC,sBAAsB,WAAW,MAAM,cAAc,GAAG,CAAC,CAAC;QACnE,QAAQ,CAAC,sBAAsB,WAAW,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mDAAmD;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE;QAChE,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACvB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,yCAAyC,EAAE;YACjE,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,MAAM;aACV,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,uBAAuB,WAAW,gCAAgC,EAAE;YAC3F,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAQD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,4BAA4B,WAAW,6BAA6B,EAAE;YAC7F,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,OAAO,GAAmB,EAAE,OAAO,EAAE,CAAC;QAE5C,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,6CAA6C,EAAE;gBACxE,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,OAAO;aACb,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,gCAAgC,EAAE;gBAC3D,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,OAAO;aACb,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,SAAS,EAAE,CAAC;gBACd,uBAAuB;gBACvB,OAAO,CAAC,SAAS;oBACf,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,KAAK,GAAG,GAAG;IACjE,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,yBAAyB,WAAW,YAAY,KAAK,EAAE,EAAE;YAC/E,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/core/tmux.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "name": "@agentmeshhq/agent",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "AgentMesh Agent Wrapper - Turn any AI coding assistant into a dispatchable, nudge-able agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "agentmesh": "dist/cli/index.js"
9
9
  },
10
+ "scripts": {
11
+ "dev": "tsx watch src/cli/index.ts",
12
+ "build": "tsc -p tsconfig.json",
13
+ "lint": "biome check src",
14
+ "start": "node dist/cli/index.js",
15
+ "test": "vitest run",
16
+ "test:watch": "vitest"
17
+ },
10
18
  "dependencies": {
11
19
  "commander": "^12.0.0",
12
20
  "picocolors": "^1.0.0",
@@ -25,13 +33,5 @@
25
33
  "opencode"
26
34
  ],
27
35
  "author": "AgentMesh",
28
- "license": "MIT",
29
- "scripts": {
30
- "dev": "tsx watch src/cli/index.ts",
31
- "build": "tsc -p tsconfig.json",
32
- "lint": "biome check src",
33
- "start": "node dist/cli/index.js",
34
- "test": "vitest run",
35
- "test:watch": "vitest"
36
- }
37
- }
36
+ "license": "MIT"
37
+ }
@@ -0,0 +1,105 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import {
3
+ buildRunnerConfig,
4
+ detectRunner,
5
+ getRunnerDisplayName,
6
+ type RunnerType,
7
+ resolveModel,
8
+ } from "../core/runner.js";
9
+
10
+ describe("Runner Module", () => {
11
+ describe("detectRunner", () => {
12
+ it("should detect opencode runner", () => {
13
+ expect(detectRunner("opencode")).toBe("opencode");
14
+ expect(detectRunner("opencode --some-flag")).toBe("opencode");
15
+ expect(detectRunner("OPENCODE")).toBe("opencode");
16
+ });
17
+
18
+ it("should detect claude runner", () => {
19
+ expect(detectRunner("claude")).toBe("claude");
20
+ expect(detectRunner("claude --some-flag")).toBe("claude");
21
+ expect(detectRunner("CLAUDE")).toBe("claude");
22
+ });
23
+
24
+ it("should detect custom runner for unknown commands", () => {
25
+ expect(detectRunner("aider")).toBe("custom");
26
+ expect(detectRunner("cursor")).toBe("custom");
27
+ expect(detectRunner("my-custom-tool")).toBe("custom");
28
+ });
29
+ });
30
+
31
+ describe("resolveModel", () => {
32
+ it("should prioritize CLI model over all others", () => {
33
+ const result = resolveModel({
34
+ cliModel: "cli-model",
35
+ agentModel: "agent-model",
36
+ defaultModel: "default-model",
37
+ command: "opencode",
38
+ });
39
+ expect(result).toBe("cli-model");
40
+ });
41
+
42
+ it("should use agent model when CLI not provided", () => {
43
+ const result = resolveModel({
44
+ agentModel: "agent-model",
45
+ defaultModel: "default-model",
46
+ command: "opencode",
47
+ });
48
+ expect(result).toBe("agent-model");
49
+ });
50
+
51
+ it("should fall back to default model", () => {
52
+ const result = resolveModel({
53
+ defaultModel: "default-model",
54
+ command: "opencode",
55
+ });
56
+ expect(result).toBe("default-model");
57
+ });
58
+ });
59
+
60
+ describe("buildRunnerConfig", () => {
61
+ it("should build config for opencode with OPENCODE_MODEL env", () => {
62
+ const config = buildRunnerConfig({
63
+ cliModel: "claude-sonnet-4",
64
+ defaultModel: "claude-sonnet-4",
65
+ command: "opencode",
66
+ });
67
+
68
+ expect(config.type).toBe("opencode");
69
+ expect(config.model).toBe("claude-sonnet-4");
70
+ expect(config.env.OPENCODE_MODEL).toBeDefined();
71
+ });
72
+
73
+ it("should build config for claude with CLAUDE_MODEL env", () => {
74
+ const config = buildRunnerConfig({
75
+ cliModel: "claude-sonnet-4",
76
+ defaultModel: "claude-sonnet-4",
77
+ command: "claude",
78
+ });
79
+
80
+ expect(config.type).toBe("claude");
81
+ expect(config.model).toBe("claude-sonnet-4");
82
+ expect(config.env.CLAUDE_MODEL).toBe("claude-sonnet-4");
83
+ });
84
+
85
+ it("should build config for custom runner without env vars", () => {
86
+ const config = buildRunnerConfig({
87
+ cliModel: "gpt-4",
88
+ defaultModel: "claude-sonnet-4",
89
+ command: "aider",
90
+ });
91
+
92
+ expect(config.type).toBe("custom");
93
+ expect(config.model).toBe("gpt-4");
94
+ expect(Object.keys(config.env)).toHaveLength(0);
95
+ });
96
+ });
97
+
98
+ describe("getRunnerDisplayName", () => {
99
+ it("should return correct display names", () => {
100
+ expect(getRunnerDisplayName("opencode")).toBe("OpenCode");
101
+ expect(getRunnerDisplayName("claude")).toBe("Claude CLI");
102
+ expect(getRunnerDisplayName("custom")).toBe("Custom");
103
+ });
104
+ });
105
+ });
package/src/cli/index.ts CHANGED
@@ -48,6 +48,7 @@ program
48
48
  .option("-m, --model <model>", "Model identifier")
49
49
  .option("-f, --foreground", "Run in foreground (blocking)")
50
50
  .option("--no-context", "Start fresh without restoring previous context")
51
+ .option("--auto-setup", "Auto-clone repository for project assignments")
51
52
  .action(async (options) => {
52
53
  try {
53
54
  await start(options);
@@ -166,11 +167,12 @@ program
166
167
 
167
168
  program
168
169
  .command("restart")
169
- .description("Restart an agent (preserves agent ID)")
170
+ .description("Restart an agent (preserves agent ID and runtime model)")
170
171
  .argument("<name>", "Agent name")
171
- .action(async (name) => {
172
+ .option("-m, --model <model>", "Override the runtime model")
173
+ .action(async (name, options) => {
172
174
  try {
173
- await restart(name);
175
+ await restart(name, { model: options.model });
174
176
  } catch (error) {
175
177
  console.error(pc.red((error as Error).message));
176
178
  process.exit(1);
@@ -4,7 +4,7 @@ import { destroySession, getSessionName, sessionExists } from "../core/tmux.js";
4
4
  import { start } from "./start.js";
5
5
  import { stop } from "./stop.js";
6
6
 
7
- export async function restart(name: string): Promise<void> {
7
+ export async function restart(name: string, options?: { model?: string }): Promise<void> {
8
8
  const config = loadConfig();
9
9
 
10
10
  if (!config) {
@@ -21,6 +21,12 @@ export async function restart(name: string): Promise<void> {
21
21
 
22
22
  console.log(pc.dim(`Restarting agent "${name}"...`));
23
23
 
24
+ // Preserve runtime model from previous session unless overridden
25
+ const preservedModel = options?.model || agent.runtimeModel;
26
+ if (preservedModel) {
27
+ console.log(pc.dim(`Preserving runtime model: ${preservedModel}`));
28
+ }
29
+
24
30
  // Stop the agent (but preserve the agent ID for re-registration)
25
31
  const sessionName = getSessionName(name);
26
32
  if (sessionExists(sessionName)) {
@@ -36,15 +42,18 @@ export async function restart(name: string): Promise<void> {
36
42
 
37
43
  console.log(pc.dim("Starting new session..."));
38
44
 
39
- // Start with the same settings, agent ID will be reused from state
45
+ // Start with preserved model (prioritize: CLI override > previous runtime > agent config)
40
46
  await start({
41
47
  name,
42
48
  command: agentConfig?.command,
43
49
  workdir: agentConfig?.workdir,
44
- model: agentConfig?.model,
50
+ model: preservedModel || agentConfig?.model,
45
51
  foreground: false,
46
52
  });
47
53
 
48
54
  console.log(pc.green(`Agent "${name}" restarted.`));
49
55
  console.log(pc.dim(`Agent ID preserved: ${agent.agentId}`));
56
+ if (preservedModel) {
57
+ console.log(pc.dim(`Runtime model: ${preservedModel}`));
58
+ }
50
59
  }
package/src/cli/start.ts CHANGED
@@ -13,6 +13,7 @@ export interface StartOptions {
13
13
  model?: string;
14
14
  foreground?: boolean;
15
15
  noContext?: boolean;
16
+ autoSetup?: boolean;
16
17
  }
17
18
 
18
19
  export async function start(options: StartOptions): Promise<void> {
@@ -44,6 +45,7 @@ export async function start(options: StartOptions): Promise<void> {
44
45
  const daemon = new AgentDaemon({
45
46
  ...options,
46
47
  restoreContext: !options.noContext,
48
+ autoSetup: options.autoSetup,
47
49
  });
48
50
  await daemon.start();
49
51
  // Keep process alive
@@ -67,6 +69,7 @@ export async function start(options: StartOptions): Promise<void> {
67
69
  if (options.workdir) args.push("--workdir", options.workdir);
68
70
  if (options.model) args.push("--model", options.model);
69
71
  if (options.noContext) args.push("--no-context");
72
+ if (options.autoSetup) args.push("--auto-setup");
70
73
 
71
74
  // Spawn detached background process
72
75
  const child = spawn("node", [cliPath, ...args], {
package/src/cli/status.ts CHANGED
@@ -61,6 +61,14 @@ export async function status(): Promise<void> {
61
61
 
62
62
  if (runningAgents.length > 0) {
63
63
  console.log(` Names: ${pc.dim(runningAgents.map((a) => a.name).join(", "))}`);
64
+
65
+ // Show models for running agents
66
+ const modelsInfo = runningAgents
67
+ .filter((a) => a.runtimeModel)
68
+ .map((a) => `${a.name}:${a.runtimeModel}`);
69
+ if (modelsInfo.length > 0) {
70
+ console.log(` Models: ${pc.dim(modelsInfo.join(", "))}`);
71
+ }
64
72
  }
65
73
 
66
74
  // Check tmux
package/src/cli/whoami.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import pc from "picocolors";
2
2
  import { loadConfig, loadState } from "../config/loader.js";
3
- import { decodeToken, getTokenExpiry } from "../utils/jwt.js";
3
+ import type { RunnerType } from "../config/schema.js";
4
+ import { getRunnerDisplayName } from "../core/runner.js";
5
+ import { getTokenExpiry } from "../utils/jwt.js";
4
6
 
5
7
  export async function whoami(agentName?: string): Promise<void> {
6
8
  const config = loadConfig();
@@ -23,11 +25,23 @@ export async function whoami(agentName?: string): Promise<void> {
23
25
  const expiry = getTokenExpiry(envToken);
24
26
  const expiryStr = formatExpiry(expiry);
25
27
 
28
+ // Try to find agent in state for runtime info
29
+ const agentState = state.agents.find((a) => a.agentId === envAgentId);
30
+
26
31
  console.log(pc.bold("Current Agent"));
27
32
  console.log(` ID: ${pc.cyan(envAgentId)}`);
28
33
  console.log(` Workspace: ${pc.dim(config.workspace)}`);
29
34
  console.log(` Token: ${expiryStr}`);
30
35
  console.log(` Hub: ${pc.dim(config.hubUrl)}`);
36
+
37
+ // Show runtime model info if available
38
+ if (agentState?.runtimeModel) {
39
+ const runnerName = agentState.runnerType
40
+ ? getRunnerDisplayName(agentState.runnerType as RunnerType)
41
+ : "Unknown";
42
+ console.log(` Model: ${pc.cyan(agentState.runtimeModel)}`);
43
+ console.log(` Runner: ${pc.dim(runnerName)}`);
44
+ }
31
45
  return;
32
46
  }
33
47
 
@@ -50,6 +64,12 @@ export async function whoami(agentName?: string): Promise<void> {
50
64
  console.log(` ID: ${pc.dim(agent.agentId)}`);
51
65
  console.log(` Status: ${running ? pc.green("running") : pc.yellow("stopped")}`);
52
66
  console.log(` Token: ${expiryStr}`);
67
+ if (agent.runtimeModel) {
68
+ const runnerName = agent.runnerType
69
+ ? getRunnerDisplayName(agent.runnerType as RunnerType)
70
+ : "Unknown";
71
+ console.log(` Model: ${pc.dim(agent.runtimeModel)} (${runnerName})`);
72
+ }
53
73
  console.log();
54
74
  }
55
75
  return;
@@ -75,6 +95,15 @@ export async function whoami(agentName?: string): Promise<void> {
75
95
  console.log(` Session: ${pc.dim(agent.tmuxSession || "none")}`);
76
96
  console.log(` Started: ${pc.dim(agent.startedAt || "unknown")}`);
77
97
  console.log(` Hub: ${pc.dim(config.hubUrl)}`);
98
+
99
+ // Show runtime model info
100
+ if (agent.runtimeModel) {
101
+ const runnerName = agent.runnerType
102
+ ? getRunnerDisplayName(agent.runnerType as RunnerType)
103
+ : "Unknown";
104
+ console.log(` Model: ${pc.cyan(agent.runtimeModel)}`);
105
+ console.log(` Runner: ${pc.dim(runnerName)}`);
106
+ }
78
107
  }
79
108
 
80
109
  function formatExpiry(expiry: Date | null): string {
@@ -30,6 +30,8 @@ export const DEFAULT_CONFIG: Partial<Config> = {
30
30
  export const CONFIG_PATH = `${process.env.HOME}/.agentmesh/config.json`;
31
31
  export const STATE_PATH = `${process.env.HOME}/.agentmesh/state.json`;
32
32
 
33
+ export type RunnerType = "opencode" | "claude" | "custom";
34
+
33
35
  export interface AgentState {
34
36
  name: string;
35
37
  agentId: string;
@@ -37,6 +39,10 @@ export interface AgentState {
37
39
  tmuxSession: string;
38
40
  startedAt: string;
39
41
  token?: string;
42
+ /** The effective runtime model (resolved from CLI > agent > defaults) */
43
+ runtimeModel?: string;
44
+ /** The runner type (opencode, claude, custom) */
45
+ runnerType?: RunnerType;
40
46
  }
41
47
 
42
48
  export interface State {