@agentmeshhq/agent 0.1.17 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/__tests__/orphan-process.test.d.ts +11 -0
  4. package/dist/__tests__/orphan-process.test.js +286 -0
  5. package/dist/__tests__/orphan-process.test.js.map +1 -0
  6. package/dist/__tests__/runner.test.js +16 -0
  7. package/dist/__tests__/runner.test.js.map +1 -1
  8. package/dist/__tests__/watchdog.test.js +138 -12
  9. package/dist/__tests__/watchdog.test.js.map +1 -1
  10. package/dist/cli/index.js +2 -1
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/start.d.ts +2 -1
  13. package/dist/cli/start.js +6 -3
  14. package/dist/cli/start.js.map +1 -1
  15. package/dist/cli/status.js +11 -0
  16. package/dist/cli/status.js.map +1 -1
  17. package/dist/cli/stop.js +7 -2
  18. package/dist/cli/stop.js.map +1 -1
  19. package/dist/config/schema.d.ts +4 -2
  20. package/dist/core/daemon/assignment-message.d.ts +12 -0
  21. package/dist/core/daemon/assignment-message.js +36 -0
  22. package/dist/core/daemon/assignment-message.js.map +1 -0
  23. package/dist/core/daemon/bootstrap.d.ts +35 -0
  24. package/dist/core/daemon/bootstrap.js +52 -0
  25. package/dist/core/daemon/bootstrap.js.map +1 -0
  26. package/dist/core/daemon/crash-log.d.ts +16 -0
  27. package/dist/core/daemon/crash-log.js +24 -0
  28. package/dist/core/daemon/crash-log.js.map +1 -0
  29. package/dist/core/daemon/health-policy.d.ts +21 -0
  30. package/dist/core/daemon/health-policy.js +32 -0
  31. package/dist/core/daemon/health-policy.js.map +1 -0
  32. package/dist/core/daemon/sandbox-config.d.ts +9 -0
  33. package/dist/core/daemon/sandbox-config.js +17 -0
  34. package/dist/core/daemon/sandbox-config.js.map +1 -0
  35. package/dist/core/daemon/state.d.ts +33 -0
  36. package/dist/core/daemon/state.js +77 -0
  37. package/dist/core/daemon/state.js.map +1 -0
  38. package/dist/core/daemon/tmux-session.d.ts +17 -0
  39. package/dist/core/daemon/tmux-session.js +34 -0
  40. package/dist/core/daemon/tmux-session.js.map +1 -0
  41. package/dist/core/daemon/workspace.d.ts +10 -0
  42. package/dist/core/daemon/workspace.js +51 -0
  43. package/dist/core/daemon/workspace.js.map +1 -0
  44. package/dist/core/daemon.d.ts +4 -7
  45. package/dist/core/daemon.js +143 -259
  46. package/dist/core/daemon.js.map +1 -1
  47. package/dist/core/injector.js +6 -0
  48. package/dist/core/injector.js.map +1 -1
  49. package/dist/core/registry.js +1 -1
  50. package/dist/core/registry.js.map +1 -1
  51. package/dist/core/runner/build.d.ts +9 -0
  52. package/dist/core/runner/build.js +53 -0
  53. package/dist/core/runner/build.js.map +1 -0
  54. package/dist/core/runner/detect.d.ts +5 -0
  55. package/dist/core/runner/detect.js +14 -0
  56. package/dist/core/runner/detect.js.map +1 -0
  57. package/dist/core/runner/index.d.ts +5 -0
  58. package/dist/core/runner/index.js +5 -0
  59. package/dist/core/runner/index.js.map +1 -0
  60. package/dist/core/runner/model.d.ts +5 -0
  61. package/dist/core/runner/model.js +7 -0
  62. package/dist/core/runner/model.js.map +1 -0
  63. package/dist/core/runner/opencode-models.d.ts +15 -0
  64. package/dist/core/runner/opencode-models.js +70 -0
  65. package/dist/core/runner/opencode-models.js.map +1 -0
  66. package/dist/core/runner/types.d.ts +19 -0
  67. package/dist/core/runner/types.js +8 -0
  68. package/dist/core/runner/types.js.map +1 -0
  69. package/dist/core/runner.d.ts +5 -47
  70. package/dist/core/runner.js +5 -167
  71. package/dist/core/runner.js.map +1 -1
  72. package/dist/core/tmux-runtime.d.ts +13 -0
  73. package/dist/core/tmux-runtime.js +72 -0
  74. package/dist/core/tmux-runtime.js.map +1 -0
  75. package/dist/core/tmux.d.ts +7 -1
  76. package/dist/core/tmux.js +75 -45
  77. package/dist/core/tmux.js.map +1 -1
  78. package/dist/core/watchdog.d.ts +18 -1
  79. package/dist/core/watchdog.js +78 -29
  80. package/dist/core/watchdog.js.map +1 -1
  81. package/package.json +30 -11
  82. package/dist/cli/inbox.d.ts +0 -5
  83. package/dist/cli/inbox.js +0 -123
  84. package/dist/cli/inbox.js.map +0 -1
  85. package/dist/cli/issue.d.ts +0 -42
  86. package/dist/cli/issue.js +0 -297
  87. package/dist/cli/issue.js.map +0 -1
  88. package/dist/cli/ready.d.ts +0 -5
  89. package/dist/cli/ready.js +0 -131
  90. package/dist/cli/ready.js.map +0 -1
  91. package/dist/cli/sync.d.ts +0 -8
  92. package/dist/cli/sync.js +0 -154
  93. package/dist/cli/sync.js.map +0 -1
  94. package/dist/core/issue-cache.d.ts +0 -44
  95. package/dist/core/issue-cache.js +0 -75
  96. package/dist/core/issue-cache.js.map +0 -1
  97. package/src/__tests__/context.test.ts +0 -464
  98. package/src/__tests__/injector.test.ts +0 -29
  99. package/src/__tests__/jwt.test.ts +0 -112
  100. package/src/__tests__/loader.test.ts +0 -239
  101. package/src/__tests__/runner.test.ts +0 -104
  102. package/src/__tests__/sandbox.test.ts +0 -435
  103. package/src/__tests__/watchdog.test.ts +0 -368
  104. package/src/cli/attach.ts +0 -22
  105. package/src/cli/build.ts +0 -145
  106. package/src/cli/config.ts +0 -148
  107. package/src/cli/context.ts +0 -231
  108. package/src/cli/deploy.ts +0 -155
  109. package/src/cli/index.ts +0 -375
  110. package/src/cli/init.ts +0 -75
  111. package/src/cli/list.ts +0 -70
  112. package/src/cli/local.ts +0 -183
  113. package/src/cli/logs.ts +0 -64
  114. package/src/cli/migrate.ts +0 -212
  115. package/src/cli/nudge.ts +0 -81
  116. package/src/cli/restart.ts +0 -59
  117. package/src/cli/slack.ts +0 -70
  118. package/src/cli/start.ts +0 -115
  119. package/src/cli/status.ts +0 -91
  120. package/src/cli/stop.ts +0 -48
  121. package/src/cli/test.ts +0 -143
  122. package/src/cli/token.ts +0 -188
  123. package/src/cli/whoami.ts +0 -142
  124. package/src/config/loader.ts +0 -121
  125. package/src/config/schema.ts +0 -68
  126. package/src/context/handoff.ts +0 -122
  127. package/src/context/index.ts +0 -8
  128. package/src/context/schema.ts +0 -111
  129. package/src/context/storage.ts +0 -197
  130. package/src/core/daemon.ts +0 -1308
  131. package/src/core/heartbeat.ts +0 -129
  132. package/src/core/injector.ts +0 -292
  133. package/src/core/registry.ts +0 -159
  134. package/src/core/runner.ts +0 -225
  135. package/src/core/sandbox.ts +0 -547
  136. package/src/core/session-id.ts +0 -111
  137. package/src/core/tmux.ts +0 -405
  138. package/src/core/watchdog.ts +0 -238
  139. package/src/core/websocket.ts +0 -94
  140. package/src/index.ts +0 -10
  141. package/src/utils/jwt.ts +0 -87
  142. package/tsconfig.json +0 -8
  143. package/vitest.config.ts +0 -12
@@ -0,0 +1,77 @@
1
+ import { execSync } from "node:child_process";
2
+ import { addAgentToState } from "../../config/loader.js";
3
+ import { getSessionName } from "../tmux.js";
4
+ /**
5
+ * Get the PID of the foreground process running in a tmux pane.
6
+ * Returns null if session doesn't exist or PID can't be determined.
7
+ */
8
+ export function getTmuxPanePid(sessionName) {
9
+ try {
10
+ const result = execSync(`tmux list-panes -t "${sessionName}" -F '#{pane_pid}' 2>/dev/null`, {
11
+ encoding: "utf-8",
12
+ });
13
+ const pid = parseInt(result.trim(), 10);
14
+ return Number.isNaN(pid) ? null : pid;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ /**
21
+ * Recursively get all descendant PIDs of a process (process tree).
22
+ * Returns empty array if the process has no children or doesn't exist.
23
+ */
24
+ export function getProcessTree(pid) {
25
+ try {
26
+ const result = execSync(`pgrep -P ${pid} 2>/dev/null`, { encoding: "utf-8" });
27
+ const childPids = result
28
+ .trim()
29
+ .split("\n")
30
+ .map((p) => parseInt(p, 10))
31
+ .filter((p) => !Number.isNaN(p) && p > 0);
32
+ const allDescendants = [...childPids];
33
+ for (const childPid of childPids) {
34
+ allDescendants.push(...getProcessTree(childPid));
35
+ }
36
+ return allDescendants;
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ /**
43
+ * Capture all PIDs for a running agent: the tmux pane process + full process tree.
44
+ * This includes the opencode process and any LSP servers it spawned.
45
+ */
46
+ export function captureAgentChildPids(agentName) {
47
+ const sessionName = getSessionName(agentName);
48
+ const panePid = getTmuxPanePid(sessionName);
49
+ if (!panePid) {
50
+ return [];
51
+ }
52
+ const pids = [panePid, ...getProcessTree(panePid)];
53
+ // Deduplicate
54
+ return [...new Set(pids)];
55
+ }
56
+ /**
57
+ * Persists daemon runtime state for status/attach/restart operations.
58
+ */
59
+ export function persistRunningState(input) {
60
+ const sessionName = input.serveMode
61
+ ? `serve:${input.servePort}`
62
+ : getSessionName(input.agentName);
63
+ addAgentToState({
64
+ name: input.agentName,
65
+ agentId: input.agentId,
66
+ pid: input.pid,
67
+ tmuxSession: sessionName,
68
+ startedAt: new Date().toISOString(),
69
+ token: input.token,
70
+ workdir: input.workdir,
71
+ assignedProject: input.assignedProject,
72
+ runtimeModel: input.runtimeModel,
73
+ runnerType: input.runnerType,
74
+ sandboxContainer: input.sandboxContainer,
75
+ });
76
+ }
77
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/daemon/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type SessionEnv } from "../tmux.js";
2
+ export interface StartTmuxSessionInput {
3
+ agentName: string;
4
+ agentId: string | null;
5
+ command: string;
6
+ workdir?: string;
7
+ runnerEnv: SessionEnv;
8
+ shouldRestoreContext: boolean;
9
+ }
10
+ export interface StartTmuxSessionResult {
11
+ preStartSessionId?: string | null;
12
+ attemptedResumeSessionId?: string;
13
+ }
14
+ /**
15
+ * Starts or reconnects to the interactive tmux runtime session.
16
+ */
17
+ export declare function startTmuxRuntimeSession(input: StartTmuxSessionInput): StartTmuxSessionResult;
@@ -0,0 +1,34 @@
1
+ import { loadContext } from "../../context/index.js";
2
+ import { snapshotSessionId } from "../session-id.js";
3
+ import { createSession, getSessionName, sessionExists, updateSessionEnvironment, } from "../tmux.js";
4
+ /**
5
+ * Starts or reconnects to the interactive tmux runtime session.
6
+ */
7
+ export function startTmuxRuntimeSession(input) {
8
+ const sessionName = getSessionName(input.agentName);
9
+ const alreadyExists = sessionExists(sessionName);
10
+ if (!alreadyExists) {
11
+ let savedSessionId;
12
+ if (input.shouldRestoreContext && input.agentId) {
13
+ const savedContext = loadContext(input.agentId);
14
+ savedSessionId = savedContext?.custom?.opencodeSessionId;
15
+ if (savedSessionId) {
16
+ console.log(`[CONTEXT] Found saved OpenCode session ID: ${savedSessionId}`);
17
+ }
18
+ }
19
+ const preStartSessionId = snapshotSessionId(input.agentName);
20
+ console.log(`Creating tmux session: ${sessionName}`);
21
+ const created = createSession(input.agentName, input.command, input.workdir, input.runnerEnv, savedSessionId);
22
+ if (!created) {
23
+ throw new Error("Failed to create tmux session");
24
+ }
25
+ return {
26
+ preStartSessionId,
27
+ attemptedResumeSessionId: savedSessionId,
28
+ };
29
+ }
30
+ console.log(`Reconnecting to existing session: ${sessionName}`);
31
+ updateSessionEnvironment(input.agentName, input.runnerEnv);
32
+ return {};
33
+ }
34
+ //# sourceMappingURL=tmux-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux-session.js","sourceRoot":"","sources":["../../../src/core/daemon/tmux-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,cAAc,EAEd,aAAa,EACb,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAgBpB;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA4B;IAClE,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,cAAkC,CAAC;QAEvC,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChD,cAAc,GAAG,YAAY,EAAE,MAAM,EAAE,iBAAuC,CAAC;YAC/E,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,8CAA8C,cAAc,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,aAAa,CAC3B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,EACf,cAAc,CACf,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,OAAO;YACL,iBAAiB;YACjB,wBAAwB,EAAE,cAAc;SACzC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IAChE,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface WorkspaceSetupInput {
2
+ workspacePath: string;
3
+ repoUrl: string;
4
+ defaultBranch: string;
5
+ projectName: string;
6
+ }
7
+ /**
8
+ * Ensures a project workspace exists and is on the target default branch.
9
+ */
10
+ export declare function setupWorkspace(input: WorkspaceSetupInput): string;
@@ -0,0 +1,51 @@
1
+ import { execSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ /**
5
+ * Ensures a project workspace exists and is on the target default branch.
6
+ */
7
+ export function setupWorkspace(input) {
8
+ const { workspacePath, repoUrl, defaultBranch, projectName } = input;
9
+ console.log(`\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
10
+ console.log(`🔧 AUTO-SETUP: Setting up workspace for ${projectName}`);
11
+ console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`);
12
+ const gitDir = path.join(workspacePath, ".git");
13
+ if (fs.existsSync(gitDir)) {
14
+ console.log(`✓ Workspace already exists: ${workspacePath}`);
15
+ console.log(" Updating from remote...");
16
+ try {
17
+ execSync("git fetch origin", { cwd: workspacePath, stdio: "inherit" });
18
+ execSync(`git checkout ${defaultBranch}`, { cwd: workspacePath, stdio: "inherit" });
19
+ execSync(`git pull origin ${defaultBranch}`, { cwd: workspacePath, stdio: "inherit" });
20
+ console.log("✓ Workspace updated successfully\n");
21
+ }
22
+ catch (error) {
23
+ console.warn(`⚠ Could not update workspace: ${error.message}`);
24
+ console.log(" Continuing with existing state...\n");
25
+ }
26
+ return workspacePath;
27
+ }
28
+ const parentDir = path.dirname(workspacePath);
29
+ if (!fs.existsSync(parentDir)) {
30
+ console.log(`Creating directory: ${parentDir}`);
31
+ fs.mkdirSync(parentDir, { recursive: true });
32
+ }
33
+ console.log("Cloning repository...");
34
+ console.log(` URL: ${repoUrl}`);
35
+ console.log(` Path: ${workspacePath}`);
36
+ console.log(` Branch: ${defaultBranch}\n`);
37
+ try {
38
+ execSync(`git clone --branch ${defaultBranch} "${repoUrl}" "${workspacePath}"`, {
39
+ stdio: "inherit",
40
+ });
41
+ console.log("\n✓ Repository cloned successfully");
42
+ }
43
+ catch (error) {
44
+ console.error(`\n✗ Failed to clone repository: ${error.message}`);
45
+ console.error("\nMake sure you have access to the repository and SSH keys are configured.");
46
+ process.exit(1);
47
+ }
48
+ console.log(`✓ Workspace ready: ${workspacePath}\n`);
49
+ return workspacePath;
50
+ }
51
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/core/daemon/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAErE,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,2CAA2C,WAAW,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAElG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvE,QAAQ,CAAC,gBAAgB,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACpF,QAAQ,CAAC,mBAAmB,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,IAAI,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,QAAQ,CAAC,sBAAsB,aAAa,KAAK,OAAO,MAAM,aAAa,GAAG,EAAE;YAC9E,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,IAAI,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -4,8 +4,10 @@ export interface DaemonOptions {
4
4
  workdir?: string;
5
5
  model?: string;
6
6
  daemonize?: boolean;
7
- /** Whether to restore context from previous session (default: true) */
7
+ /** Whether to restore context from previous session (default: false) */
8
8
  restoreContext?: boolean;
9
+ /** Only send nudges/restart for worker agents (default: false) */
10
+ worker?: boolean;
9
11
  /** Auto-clone repository for project assignments */
10
12
  autoSetup?: boolean;
11
13
  /** Run opencode serve instead of tmux TUI (for Integration Service) */
@@ -33,6 +35,7 @@ export declare class AgentDaemon {
33
35
  private isRunning;
34
36
  private assignedProject;
35
37
  private shouldRestoreContext;
38
+ private isWorkerAgent;
36
39
  private autoSetup;
37
40
  private serveMode;
38
41
  private servePort;
@@ -43,7 +46,6 @@ export declare class AgentDaemon {
43
46
  private sandboxMemory;
44
47
  private sandbox;
45
48
  private healthCheckInterval;
46
- private serverContext;
47
49
  private _preStartSessionId;
48
50
  private _attemptedResumeSessionId;
49
51
  private restartCount;
@@ -93,11 +95,6 @@ export declare class AgentDaemon {
93
95
  * Uses project.workdir from HQ as source of truth, falls back to helpful instructions
94
96
  */
95
97
  private checkAssignments;
96
- /**
97
- * Sets up workspace by cloning repository or using existing clone
98
- * Returns the absolute path to the workspace
99
- */
100
- private setupWorkspace;
101
98
  /**
102
99
  * Ensures the sandbox OpenCode config exists
103
100
  * Creates ~/.agentmesh/opencode-sandbox.json with permissive permissions and model