@agentmeshhq/agent 0.4.16 → 0.4.20

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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/attach.test.d.ts +1 -0
  3. package/dist/__tests__/attach.test.js +200 -0
  4. package/dist/__tests__/attach.test.js.map +1 -0
  5. package/dist/__tests__/auth-guard.integration.test.js +1 -1
  6. package/dist/__tests__/auth-guard.integration.test.js.map +1 -1
  7. package/dist/__tests__/auth-guard.test.js +3 -3
  8. package/dist/__tests__/auth-guard.test.js.map +1 -1
  9. package/dist/__tests__/bootstrap.test.js +23 -0
  10. package/dist/__tests__/bootstrap.test.js.map +1 -1
  11. package/dist/__tests__/daemon-hub-resilience.test.js +2 -2
  12. package/dist/__tests__/daemon-hub-resilience.test.js.map +1 -1
  13. package/dist/__tests__/evicted-cleanup.test.js.map +1 -1
  14. package/dist/__tests__/injection-verify.test.d.ts +1 -0
  15. package/dist/__tests__/injection-verify.test.js +93 -0
  16. package/dist/__tests__/injection-verify.test.js.map +1 -0
  17. package/dist/__tests__/injector.test.js +124 -4
  18. package/dist/__tests__/injector.test.js.map +1 -1
  19. package/dist/__tests__/list.test.d.ts +1 -0
  20. package/dist/__tests__/list.test.js +62 -0
  21. package/dist/__tests__/list.test.js.map +1 -0
  22. package/dist/__tests__/opencode-serve.test.d.ts +1 -0
  23. package/dist/__tests__/opencode-serve.test.js +54 -0
  24. package/dist/__tests__/opencode-serve.test.js.map +1 -0
  25. package/dist/__tests__/opencode-session-policy.test.d.ts +1 -0
  26. package/dist/__tests__/opencode-session-policy.test.js +61 -0
  27. package/dist/__tests__/opencode-session-policy.test.js.map +1 -0
  28. package/dist/__tests__/opencode-session.test.d.ts +1 -0
  29. package/dist/__tests__/opencode-session.test.js +178 -0
  30. package/dist/__tests__/opencode-session.test.js.map +1 -0
  31. package/dist/__tests__/registry.register.test.js +16 -0
  32. package/dist/__tests__/registry.register.test.js.map +1 -1
  33. package/dist/__tests__/relay.test.d.ts +1 -0
  34. package/dist/__tests__/relay.test.js +136 -0
  35. package/dist/__tests__/relay.test.js.map +1 -0
  36. package/dist/__tests__/runner.test.js +17 -0
  37. package/dist/__tests__/runner.test.js.map +1 -1
  38. package/dist/__tests__/session-recovery.test.js +214 -11
  39. package/dist/__tests__/session-recovery.test.js.map +1 -1
  40. package/dist/__tests__/shared-resource-guards.test.js +1 -4
  41. package/dist/__tests__/shared-resource-guards.test.js.map +1 -1
  42. package/dist/__tests__/start-team-id.test.js +22 -0
  43. package/dist/__tests__/start-team-id.test.js.map +1 -1
  44. package/dist/__tests__/startup-diagnostics.test.d.ts +1 -0
  45. package/dist/__tests__/startup-diagnostics.test.js +250 -0
  46. package/dist/__tests__/startup-diagnostics.test.js.map +1 -0
  47. package/dist/__tests__/tmux-runtime.test.js +13 -0
  48. package/dist/__tests__/tmux-runtime.test.js.map +1 -1
  49. package/dist/__tests__/token-rejection-recovery.test.js +52 -0
  50. package/dist/__tests__/token-rejection-recovery.test.js.map +1 -1
  51. package/dist/__tests__/watcher-queue.test.d.ts +1 -0
  52. package/dist/__tests__/watcher-queue.test.js +90 -0
  53. package/dist/__tests__/watcher-queue.test.js.map +1 -0
  54. package/dist/__tests__/watcher-state.test.d.ts +1 -0
  55. package/dist/__tests__/watcher-state.test.js +159 -0
  56. package/dist/__tests__/watcher-state.test.js.map +1 -0
  57. package/dist/cli/attach.d.ts +1 -1
  58. package/dist/cli/attach.js +125 -2
  59. package/dist/cli/attach.js.map +1 -1
  60. package/dist/cli/auth.js.map +1 -1
  61. package/dist/cli/commands.d.ts +32 -0
  62. package/dist/cli/commands.js +165 -0
  63. package/dist/cli/commands.js.map +1 -0
  64. package/dist/cli/index.js +97 -4
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/cli/list.js +26 -2
  67. package/dist/cli/list.js.map +1 -1
  68. package/dist/cli/relay.d.ts +4 -0
  69. package/dist/cli/relay.js +165 -3
  70. package/dist/cli/relay.js.map +1 -1
  71. package/dist/cli/start.d.ts +9 -1
  72. package/dist/cli/start.js +8 -0
  73. package/dist/cli/start.js.map +1 -1
  74. package/dist/cli/status.js +21 -8
  75. package/dist/cli/status.js.map +1 -1
  76. package/dist/cli/test.js +12 -1
  77. package/dist/cli/test.js.map +1 -1
  78. package/dist/config/schema.d.ts +17 -1
  79. package/dist/core/auth-guard.js +2 -2
  80. package/dist/core/auth-guard.js.map +1 -1
  81. package/dist/core/chat-output-parser.d.ts +24 -0
  82. package/dist/core/chat-output-parser.js +150 -0
  83. package/dist/core/chat-output-parser.js.map +1 -0
  84. package/dist/core/chat-output-parser.test.d.ts +7 -0
  85. package/dist/core/chat-output-parser.test.js +151 -0
  86. package/dist/core/chat-output-parser.test.js.map +1 -0
  87. package/dist/core/daemon/bootstrap.d.ts +8 -0
  88. package/dist/core/daemon/bootstrap.js +6 -1
  89. package/dist/core/daemon/bootstrap.js.map +1 -1
  90. package/dist/core/daemon/crash-log.js +5 -0
  91. package/dist/core/daemon/crash-log.js.map +1 -1
  92. package/dist/core/daemon/injection-verify.d.ts +25 -0
  93. package/dist/core/daemon/injection-verify.js +94 -0
  94. package/dist/core/daemon/injection-verify.js.map +1 -0
  95. package/dist/core/daemon/roles.d.ts +2 -2
  96. package/dist/core/daemon/roles.js +3 -0
  97. package/dist/core/daemon/roles.js.map +1 -1
  98. package/dist/core/daemon/session-recovery.d.ts +18 -1
  99. package/dist/core/daemon/session-recovery.js +89 -5
  100. package/dist/core/daemon/session-recovery.js.map +1 -1
  101. package/dist/core/daemon/startup-diagnostics.d.ts +76 -0
  102. package/dist/core/daemon/startup-diagnostics.js +277 -0
  103. package/dist/core/daemon/startup-diagnostics.js.map +1 -0
  104. package/dist/core/daemon/state.d.ts +8 -0
  105. package/dist/core/daemon/state.js +8 -0
  106. package/dist/core/daemon/state.js.map +1 -1
  107. package/dist/core/daemon/tmux-session.d.ts +4 -0
  108. package/dist/core/daemon/tmux-session.js +9 -1
  109. package/dist/core/daemon/tmux-session.js.map +1 -1
  110. package/dist/core/daemon/watcher-loop.d.ts +27 -0
  111. package/dist/core/daemon/watcher-loop.js +134 -0
  112. package/dist/core/daemon/watcher-loop.js.map +1 -0
  113. package/dist/core/daemon/watcher-queue.d.ts +33 -0
  114. package/dist/core/daemon/watcher-queue.js +71 -0
  115. package/dist/core/daemon/watcher-queue.js.map +1 -0
  116. package/dist/core/daemon/watcher-state.d.ts +66 -0
  117. package/dist/core/daemon/watcher-state.js +151 -0
  118. package/dist/core/daemon/watcher-state.js.map +1 -0
  119. package/dist/core/daemon/workspace.js +10 -2
  120. package/dist/core/daemon/workspace.js.map +1 -1
  121. package/dist/core/daemon.d.ts +22 -1
  122. package/dist/core/daemon.js +289 -20
  123. package/dist/core/daemon.js.map +1 -1
  124. package/dist/core/handoff-sla.js +1 -1
  125. package/dist/core/handoff-sla.js.map +1 -1
  126. package/dist/core/injector.d.ts +2 -0
  127. package/dist/core/injector.js +227 -32
  128. package/dist/core/injector.js.map +1 -1
  129. package/dist/core/opencode-serve.d.ts +26 -0
  130. package/dist/core/opencode-serve.js +97 -0
  131. package/dist/core/opencode-serve.js.map +1 -0
  132. package/dist/core/opencode-session-policy.d.ts +10 -0
  133. package/dist/core/opencode-session-policy.js +10 -0
  134. package/dist/core/opencode-session-policy.js.map +1 -0
  135. package/dist/core/opencode-session.d.ts +12 -0
  136. package/dist/core/opencode-session.js +165 -0
  137. package/dist/core/opencode-session.js.map +1 -0
  138. package/dist/core/registry.d.ts +2 -1
  139. package/dist/core/registry.js +3 -2
  140. package/dist/core/registry.js.map +1 -1
  141. package/dist/core/runner/build.js +7 -31
  142. package/dist/core/runner/build.js.map +1 -1
  143. package/dist/core/runner/detect.js +2 -8
  144. package/dist/core/runner/detect.js.map +1 -1
  145. package/dist/core/runner/index.d.ts +3 -1
  146. package/dist/core/runner/index.js +2 -0
  147. package/dist/core/runner/index.js.map +1 -1
  148. package/dist/core/runner/kimi-models.d.ts +4 -0
  149. package/dist/core/runner/kimi-models.js +24 -0
  150. package/dist/core/runner/kimi-models.js.map +1 -0
  151. package/dist/core/runner/registry.d.ts +3 -0
  152. package/dist/core/runner/registry.js +75 -0
  153. package/dist/core/runner/registry.js.map +1 -0
  154. package/dist/core/runner/types.d.ts +17 -1
  155. package/dist/core/tmux-runtime.d.ts +2 -1
  156. package/dist/core/tmux-runtime.js +17 -1
  157. package/dist/core/tmux-runtime.js.map +1 -1
  158. package/dist/core/tmux.d.ts +4 -0
  159. package/dist/core/tmux.js +54 -11
  160. package/dist/core/tmux.js.map +1 -1
  161. package/dist/runtime/adapters/opencode.d.ts +63 -0
  162. package/dist/runtime/adapters/opencode.js +358 -0
  163. package/dist/runtime/adapters/opencode.js.map +1 -0
  164. package/dist/runtime/adapters/tmux-fallback.d.ts +23 -0
  165. package/dist/runtime/adapters/tmux-fallback.js +148 -0
  166. package/dist/runtime/adapters/tmux-fallback.js.map +1 -0
  167. package/dist/runtime/adapters/tmux-fallback.test.d.ts +4 -0
  168. package/dist/runtime/adapters/tmux-fallback.test.js +91 -0
  169. package/dist/runtime/adapters/tmux-fallback.test.js.map +1 -0
  170. package/dist/runtime/index.d.ts +146 -0
  171. package/dist/runtime/index.js +191 -0
  172. package/dist/runtime/index.js.map +1 -0
  173. package/dist/runtime/registry.d.ts +53 -0
  174. package/dist/runtime/registry.js +112 -0
  175. package/dist/runtime/registry.js.map +1 -0
  176. package/dist/runtime/registry.test.d.ts +4 -0
  177. package/dist/runtime/registry.test.js +69 -0
  178. package/dist/runtime/registry.test.js.map +1 -0
  179. package/dist/runtime/types.d.ts +158 -0
  180. package/dist/runtime/types.js +8 -0
  181. package/dist/runtime/types.js.map +1 -0
  182. package/package.json +11 -12
package/dist/core/tmux.js CHANGED
@@ -1,7 +1,13 @@
1
1
  import { execFileSync, execSync, spawn } from "node:child_process";
2
+ import { detectRunnerKind, logProcessExit, logSessionStartup, monitorSessionExit, redactEnvKeys, } from "./daemon/startup-diagnostics.js";
2
3
  import { buildInteractiveCommand, detectRunnerCommandKind, prepareOpenCodeRuntime, } from "./tmux-runtime.js";
3
4
  const SESSION_PREFIX = "agentmesh-";
4
5
  export function getSessionName(agentName) {
6
+ // Accept either plain agent name ("my-agent") or fully-qualified tmux
7
+ // session name ("agentmesh-my-agent") to avoid accidental double-prefixing.
8
+ if (agentName.startsWith(SESSION_PREFIX)) {
9
+ return agentName;
10
+ }
5
11
  return `${SESSION_PREFIX}${agentName}`;
6
12
  }
7
13
  export function sessionExists(sessionName) {
@@ -13,8 +19,13 @@ export function sessionExists(sessionName) {
13
19
  return false;
14
20
  }
15
21
  }
22
+ /**
23
+ * Creates a new tmux session for the agent
24
+ * Includes startup diagnostics and robust error handling
25
+ */
16
26
  export function createSession(agentName, command, workdir, env, opencodeSessionId, autonomous) {
17
27
  const sessionName = getSessionName(agentName);
28
+ const startTime = new Date();
18
29
  if (sessionExists(sessionName)) {
19
30
  console.error(`Session ${sessionName} already exists`);
20
31
  return false;
@@ -38,35 +49,67 @@ export function createSession(agentName, command, workdir, env, opencodeSessionI
38
49
  ...(autonomous ? { AGENTMESH_AUTONOMOUS: "true" } : {}),
39
50
  ...env,
40
51
  };
41
- let envPrefix = "";
42
- const envParts = [];
52
+ // Build environment setup for the shell
53
+ const envSetupCommands = [];
43
54
  for (const [key, value] of Object.entries(mergedEnv)) {
44
55
  if (value !== undefined && value !== "") {
45
- // Escape special characters in value
46
- const escapedValue = value.replace(/"/g, '\\"');
47
- envParts.push(`${key}="${escapedValue}"`);
56
+ // Export each environment variable safely
57
+ // Use single quotes and escape any single quotes in the value
58
+ const safeValue = value.replace(/'/g, "'\"'\"'");
59
+ envSetupCommands.push(`export ${key}='${safeValue}'`);
48
60
  }
49
61
  }
50
- if (envParts.length > 0) {
51
- envPrefix = `${envParts.join(" ")} `;
52
- }
62
+ const envSetup = envSetupCommands.join(" && ");
53
63
  const finalCommand = buildInteractiveCommand(command, env, opencodeSessionId, autonomous);
54
- const fullCommand = `${envPrefix}${finalCommand}`;
64
+ // Wrap the command in a shell that:
65
+ // 1. Sets up environment variables
66
+ // 2. Runs the actual command
67
+ // 3. Captures exit status and logs it
68
+ // This prevents tmux from closing immediately on command failure
69
+ const wrappedCommand = `
70
+ ${envSetup}${envSetup ? " && " : ""}exec ${finalCommand}
71
+ `.trim();
72
+ // Log startup diagnostics
73
+ const diagnostics = {
74
+ resolvedCommand: finalCommand,
75
+ envKeys: redactEnvKeys(mergedEnv),
76
+ sessionName,
77
+ workdir,
78
+ startTime: startTime.toISOString(),
79
+ runnerKind: detectRunnerKind(command),
80
+ autonomous,
81
+ };
82
+ logSessionStartup(agentName, diagnostics);
55
83
  // Set reasonable terminal size for TUI applications
56
84
  const args = ["new-session", "-d", "-s", sessionName, "-x", "200", "-y", "50"];
57
85
  if (workdir) {
58
86
  args.push("-c", workdir);
59
87
  }
60
- args.push(fullCommand);
88
+ // Use bash -c to execute the wrapped command
89
+ // This ensures proper shell interpretation and error handling
90
+ args.push("bash", "-c", wrappedCommand);
61
91
  execFileSync("tmux", args);
62
92
  // Also set session environment for any subsequent processes/refreshes
63
93
  if (env) {
64
94
  setSessionEnvironment(sessionName, env);
65
95
  }
96
+ // Start monitoring for early exits (first 15 seconds)
97
+ monitorSessionExit(agentName, sessionName, startTime, (event) => {
98
+ console.error(`[STARTUP] ${agentName}: Early process exit detected - ${event.reason} ` +
99
+ `(elapsed: ${event.elapsedMs}ms)`);
100
+ });
66
101
  return true;
67
102
  }
68
103
  catch (error) {
69
- console.error(`Failed to create tmux session: ${error}`);
104
+ const errorMsg = error instanceof Error ? error.message : String(error);
105
+ console.error(`[STARTUP] Failed to create tmux session for ${agentName}: ${errorMsg}`);
106
+ // Log the failure
107
+ logProcessExit(agentName, {
108
+ code: null,
109
+ signal: null,
110
+ elapsedMs: Date.now() - startTime.getTime(),
111
+ reason: `session_creation_failed: ${errorMsg}`,
112
+ });
70
113
  return false;
71
114
  }
72
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/core/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,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;AAWD,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,OAAe,EACf,OAAgB,EAChB,GAAgB,EAChB,iBAA0B,EAC1B,UAAoB;IAEpB,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,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,WAAW,KAAK,UAAU,CAAC;QAErD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,IAAI,iBAAiB,EAAE,CAAC;YACtB,YAAY,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QAED,2CAA2C;QAC3C,0DAA0D;QAC1D,MAAM,SAAS,GAAe,iBAAiB;YAC7C,CAAC,CAAC;gBACE,aAAa,EAAE,YAAY;gBAC3B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,GAAG;aACP;YACH,CAAC,CAAC;gBACE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,GAAG;aACP,CAAC;QAEN,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACxC,qCAAqC;gBACrC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,YAAY,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACvC,CAAC;QAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE1F,MAAM,WAAW,GAAG,GAAG,SAAS,GAAG,YAAY,EAAE,CAAC;QAElD,oDAAoD;QACpD,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/E,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE3B,sEAAsE;QACtE,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,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACxC,YAAY,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3E,CAAC;QACH,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;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,SAAS,GAAG,IAAI;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE;QACrC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,QAAQ,CAAC,MAAM,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjG,kBAAkB;IAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gCAAgC;QAChC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CACT,2BAA2B,UAAU,CAAC,MAAM,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,SAAoB;IACpE,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,sFAAsF;IACtF,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,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,2FAA2F;QAC3F,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEnD,kEAAkE;QAClE,mCAAmC;QACnC,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAE3E,6EAA6E;QAC7E,oEAAoE;QACpE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEtB,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,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;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,aAAsB;IAEtB,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,oDAAoD;IACpD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,eAAe,GAAG,QAAQ,CAC9B,2CAA2C,aAAa,GAAG,EAC3D;gBACE,QAAQ,EAAE,OAAO;aAClB,CACF,CAAC,IAAI,EAAE,CAAC;YAET,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;gBAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;YAC7D,CAAC;YAED,gDAAgD;YAChD,MAAM,SAAS,GAAG,QAAQ,CACxB,gBAAgB,aAAa,0BAA0B,WAAW,6BAA6B,EAC/F,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;YAET,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;YACtE,CAAC;YAED,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,QAAQ,CACvB,gBAAgB,aAAa,yBAAyB,WAAW,iCAAiC,EAClG,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;YAET,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAExC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;YAC3D,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,KAAK,EAAE,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,WAAW,iCAAiC,EAAE;YAC7F,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9C,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,KAAK,EAAE,EAAE,CAAC;IAC9D,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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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * OpenCode Runtime Adapter
3
+ *
4
+ * PRIMARY: OpenCode serve mode (HTTP API)
5
+ * FALLBACK: Tmux capture with delivery_path=tmux-fallback metadata
6
+ *
7
+ * This adapter implements the runtime I/O contract with OpenCode serve mode
8
+ * as the primary path for clean, structured output.
9
+ */
10
+ import type { ChatInputRequest, ChatOutputResponse, RuntimeAdapter, WaitForOutputOptions } from "../types.js";
11
+ /**
12
+ * OpenCode adapter - serve mode primary, tmux fallback
13
+ */
14
+ export declare class OpenCodeAdapter implements RuntimeAdapter {
15
+ readonly id = "opencode";
16
+ readonly displayName = "OpenCode";
17
+ readonly supportedRunners: string[];
18
+ readonly supportsStructuredEvents = true;
19
+ /** Cache for serve port by session */
20
+ private servePort;
21
+ canHandle(sessionName: string): boolean;
22
+ /**
23
+ * Detect OpenCode serve mode port for session
24
+ * Returns port number or null if not in serve mode
25
+ */
26
+ private detectServePort;
27
+ /**
28
+ * PRIMARY: Inject via OpenCode serve mode HTTP API
29
+ * FALLBACK: Tmux send-keys
30
+ */
31
+ injectInput(sessionName: string, request: ChatInputRequest): Promise<boolean>;
32
+ /**
33
+ * PRIMARY: Capture from OpenCode serve mode events
34
+ * FALLBACK: Tmux capture with delivery_path=tmux-fallback
35
+ */
36
+ captureOutput(sessionName: string, request: ChatInputRequest): Promise<ChatOutputResponse>;
37
+ /**
38
+ * Wait for output with serve mode primary, tmux fallback
39
+ */
40
+ waitForOutput(sessionName: string, request: ChatInputRequest, options?: WaitForOutputOptions): Promise<ChatOutputResponse>;
41
+ /**
42
+ * PRIMARY path: Wait for output via serve mode
43
+ */
44
+ private waitForServeModeOutput;
45
+ /**
46
+ * FALLBACK path: Wait for output via tmux capture
47
+ */
48
+ private waitForTmuxFallback;
49
+ /**
50
+ * FALLBACK: Capture from tmux with metadata
51
+ */
52
+ private captureTmuxFallback;
53
+ /**
54
+ * Format serve mode response
55
+ */
56
+ private formatServeModeResponse;
57
+ /**
58
+ * Format tmux fallback response
59
+ */
60
+ private formatTmuxFallbackResponse;
61
+ }
62
+ /** Singleton instance */
63
+ export declare const opencodeAdapter: OpenCodeAdapter;
@@ -0,0 +1,358 @@
1
+ /**
2
+ * OpenCode Runtime Adapter
3
+ *
4
+ * PRIMARY: OpenCode serve mode (HTTP API)
5
+ * FALLBACK: Tmux capture with delivery_path=tmux-fallback metadata
6
+ *
7
+ * This adapter implements the runtime I/O contract with OpenCode serve mode
8
+ * as the primary path for clean, structured output.
9
+ */
10
+ import { extractLLMReply } from "../../core/chat-output-parser.js";
11
+ import { captureSessionOutput, sendKeys, sessionExists } from "../../core/tmux.js";
12
+ const DEFAULT_WAIT_OPTIONS = {
13
+ pollMs: 1000,
14
+ stableMs: 3000,
15
+ timeoutMs: 60000,
16
+ maxLines: 120,
17
+ };
18
+ /** OpenCode serve mode default port range */
19
+ const OPENCODE_PORT_RANGE = { min: 3000, max: 3010 };
20
+ /**
21
+ * OpenCode adapter - serve mode primary, tmux fallback
22
+ */
23
+ export class OpenCodeAdapter {
24
+ id = "opencode";
25
+ displayName = "OpenCode";
26
+ supportedRunners = ["opencode"];
27
+ supportsStructuredEvents = true;
28
+ /** Cache for serve port by session */
29
+ servePort = new Map();
30
+ canHandle(sessionName) {
31
+ if (!sessionExists(sessionName))
32
+ return false;
33
+ try {
34
+ const { execSync } = require("node:child_process");
35
+ const output = execSync(`tmux list-panes -t "${sessionName}" -F "#{pane_current_command}"`, {
36
+ encoding: "utf-8",
37
+ });
38
+ return output.toLowerCase().includes("opencode");
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ /**
45
+ * Detect OpenCode serve mode port for session
46
+ * Returns port number or null if not in serve mode
47
+ */
48
+ async detectServePort(sessionName) {
49
+ const cached = this.servePort.get(sessionName);
50
+ if (cached !== undefined)
51
+ return cached;
52
+ try {
53
+ const { execSync } = require("node:child_process");
54
+ // Check for AGENTMESH_OPENCODE_PORT env var in tmux session
55
+ const envOutput = execSync(`tmux show-environment -t "${sessionName}" | grep AGENTMESH_OPENCODE_PORT || true`, { encoding: "utf-8" });
56
+ const portMatch = envOutput.match(/AGENTMESH_OPENCODE_PORT=(\d+)/);
57
+ if (portMatch) {
58
+ const port = parseInt(portMatch[1], 10);
59
+ this.servePort.set(sessionName, port);
60
+ return port;
61
+ }
62
+ // Probe common OpenCode serve ports
63
+ for (let port = OPENCODE_PORT_RANGE.min; port <= OPENCODE_PORT_RANGE.max; port++) {
64
+ try {
65
+ const response = await fetch(`http://localhost:${port}/health`, {
66
+ method: "GET",
67
+ signal: AbortSignal.timeout(500),
68
+ });
69
+ if (response.ok) {
70
+ this.servePort.set(sessionName, port);
71
+ return port;
72
+ }
73
+ }
74
+ catch {
75
+ // Port not available, continue probing
76
+ }
77
+ }
78
+ this.servePort.set(sessionName, null);
79
+ return null;
80
+ }
81
+ catch {
82
+ this.servePort.set(sessionName, null);
83
+ return null;
84
+ }
85
+ }
86
+ /**
87
+ * PRIMARY: Inject via OpenCode serve mode HTTP API
88
+ * FALLBACK: Tmux send-keys
89
+ */
90
+ async injectInput(sessionName, request) {
91
+ // Try serve mode first (PRIMARY path)
92
+ const servePort = await this.detectServePort(sessionName);
93
+ if (servePort !== null) {
94
+ try {
95
+ const response = await fetch(`http://localhost:${servePort}/api/v1/chat`, {
96
+ method: "POST",
97
+ headers: { "Content-Type": "application/json" },
98
+ body: JSON.stringify({
99
+ message: request.content,
100
+ correlation_id: request.messageId,
101
+ }),
102
+ signal: AbortSignal.timeout(5000),
103
+ });
104
+ if (response.ok) {
105
+ console.log(`[OpenCodeAdapter] Injected via serve mode (port ${servePort})`);
106
+ return true;
107
+ }
108
+ }
109
+ catch (error) {
110
+ console.log(`[OpenCodeAdapter] Serve mode failed, falling back to tmux: ${error}`);
111
+ }
112
+ }
113
+ // FALLBACK: Tmux
114
+ console.log(`[OpenCodeAdapter] Using tmux fallback`);
115
+ return sendKeys(sessionName, request.content);
116
+ }
117
+ /**
118
+ * PRIMARY: Capture from OpenCode serve mode events
119
+ * FALLBACK: Tmux capture with delivery_path=tmux-fallback
120
+ */
121
+ async captureOutput(sessionName, request) {
122
+ const servePort = await this.detectServePort(sessionName);
123
+ // PRIMARY: Try serve mode
124
+ if (servePort !== null) {
125
+ try {
126
+ const response = await fetch(`http://localhost:${servePort}/api/v1/chat/${request.messageId}/response`, {
127
+ method: "GET",
128
+ signal: AbortSignal.timeout(5000),
129
+ });
130
+ if (response.ok) {
131
+ const data = await response.json();
132
+ return this.formatServeModeResponse(data, request, servePort);
133
+ }
134
+ }
135
+ catch (error) {
136
+ console.log(`[OpenCodeAdapter] Serve mode capture failed: ${error}`);
137
+ }
138
+ }
139
+ // FALLBACK: Tmux capture with metadata
140
+ return this.captureTmuxFallback(sessionName, request);
141
+ }
142
+ /**
143
+ * Wait for output with serve mode primary, tmux fallback
144
+ */
145
+ async waitForOutput(sessionName, request, options) {
146
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
147
+ const servePort = await this.detectServePort(sessionName);
148
+ // PRIMARY: Use serve mode if available
149
+ if (servePort !== null) {
150
+ return this.waitForServeModeOutput(sessionName, request, servePort, opts);
151
+ }
152
+ // FALLBACK: Tmux-based capture
153
+ return this.waitForTmuxFallback(sessionName, request, opts);
154
+ }
155
+ /**
156
+ * PRIMARY path: Wait for output via serve mode
157
+ */
158
+ async waitForServeModeOutput(sessionName, request, port, opts) {
159
+ const startTime = Date.now();
160
+ while (Date.now() - startTime < opts.timeoutMs) {
161
+ try {
162
+ const response = await fetch(`http://localhost:${port}/api/v1/chat/${request.messageId}/response`, {
163
+ method: "GET",
164
+ signal: AbortSignal.timeout(1000),
165
+ });
166
+ if (response.ok) {
167
+ const data = await response.json();
168
+ if (data.complete) {
169
+ return this.formatServeModeResponse(data, request, port, Date.now() - startTime);
170
+ }
171
+ }
172
+ }
173
+ catch {
174
+ // Not ready yet, continue polling
175
+ }
176
+ await new Promise((r) => setTimeout(r, opts.pollMs));
177
+ }
178
+ // Timeout - return what we have
179
+ console.log(`[OpenCodeAdapter] Serve mode timeout, falling back to tmux`);
180
+ return this.waitForTmuxFallback(sessionName, request, opts);
181
+ }
182
+ /**
183
+ * FALLBACK path: Wait for output via tmux capture
184
+ */
185
+ async waitForTmuxFallback(sessionName, request, opts) {
186
+ const startTime = Date.now();
187
+ let lastSnapshot = captureSessionOutput(sessionName, opts.maxLines) || "";
188
+ let lastChangeAt = Date.now();
189
+ let stabilizedAt = null;
190
+ const baselineParsed = extractLLMReply(lastSnapshot).trim();
191
+ let lastParsed = baselineParsed;
192
+ let parsedChangedAt = null;
193
+ return new Promise((resolve) => {
194
+ const check = () => {
195
+ const elapsed = Date.now() - startTime;
196
+ const current = captureSessionOutput(sessionName, opts.maxLines) || "";
197
+ const parsed = extractLLMReply(current).trim();
198
+ if (current !== lastSnapshot) {
199
+ lastSnapshot = current;
200
+ lastChangeAt = Date.now();
201
+ stabilizedAt = null;
202
+ }
203
+ else if (!stabilizedAt) {
204
+ stabilizedAt = Date.now();
205
+ }
206
+ if (parsed !== lastParsed) {
207
+ lastParsed = parsed;
208
+ parsedChangedAt = Date.now();
209
+ }
210
+ else if (parsedChangedAt === null && parsed !== baselineParsed) {
211
+ parsedChangedAt = Date.now();
212
+ }
213
+ const stable = stabilizedAt && Date.now() - stabilizedAt >= opts.stableMs;
214
+ const timedOut = elapsed >= opts.timeoutMs;
215
+ const hasNewParsedOutput = parsed.length > 0 && parsed !== baselineParsed;
216
+ const parsedStable = parsedChangedAt !== null &&
217
+ Date.now() - parsedChangedAt >= Math.min(1200, Math.max(400, opts.stableMs / 2));
218
+ if (stable || timedOut) {
219
+ // For clean/structured capture, do not resolve on a merely stable pane
220
+ // unless we actually parsed assistant output. This prevents false
221
+ // "(no assistant output captured)" when only the user input echo is visible.
222
+ if (!timedOut && request.outputMode !== "raw" && !hasNewParsedOutput) {
223
+ stabilizedAt = null;
224
+ setTimeout(check, opts.pollMs);
225
+ return;
226
+ }
227
+ const stabilizationMs = stabilizedAt ? stabilizedAt - lastChangeAt : 0;
228
+ resolve(this.formatTmuxFallbackResponse(current, request, stabilizationMs, timedOut));
229
+ return;
230
+ }
231
+ // Fast-path for clean/structured: return as soon as parsed assistant
232
+ // output is new for this turn and stable, even if raw pane keeps changing
233
+ // due to token counters / terminal chrome updates.
234
+ if (!timedOut && request.outputMode !== "raw" && hasNewParsedOutput && parsedStable) {
235
+ const stabilizationMs = Date.now() - (parsedChangedAt ?? startTime);
236
+ resolve(this.formatTmuxFallbackResponse(current, request, stabilizationMs, false));
237
+ return;
238
+ }
239
+ setTimeout(check, opts.pollMs);
240
+ };
241
+ check();
242
+ });
243
+ }
244
+ /**
245
+ * FALLBACK: Capture from tmux with metadata
246
+ */
247
+ captureTmuxFallback(sessionName, request) {
248
+ const rawOutput = captureSessionOutput(sessionName, 120) || "";
249
+ const linesCaptured = rawOutput.split("\n").length;
250
+ const cleaned = extractLLMReply(rawOutput);
251
+ switch (request.outputMode) {
252
+ case "raw":
253
+ return {
254
+ mode: "raw",
255
+ content: rawOutput,
256
+ metadata: { delivery_path: "tmux-fallback" },
257
+ };
258
+ case "structured": {
259
+ const structured = {
260
+ content: cleaned,
261
+ rawOutput,
262
+ metadata: {
263
+ capturedAt: new Date().toISOString(),
264
+ linesCaptured,
265
+ stabilizationMs: 0,
266
+ truncated: linesCaptured >= 120,
267
+ delivery_path: "tmux-fallback",
268
+ },
269
+ parsing: {
270
+ success: cleaned.length > 0,
271
+ parser: "tmux-regex",
272
+ error: cleaned.length === 0 ? "No LLM reply extracted" : undefined,
273
+ },
274
+ };
275
+ return { mode: "structured", data: structured };
276
+ }
277
+ default:
278
+ return {
279
+ mode: "clean",
280
+ content: cleaned,
281
+ metadata: { delivery_path: "tmux-fallback" },
282
+ };
283
+ }
284
+ }
285
+ /**
286
+ * Format serve mode response
287
+ */
288
+ formatServeModeResponse(data, request, port, elapsedMs = 0) {
289
+ const content = String(data.content || data.message || "");
290
+ switch (request.outputMode) {
291
+ case "raw":
292
+ return { mode: "raw", content };
293
+ case "structured": {
294
+ const structured = {
295
+ content,
296
+ rawOutput: content,
297
+ metadata: {
298
+ capturedAt: new Date().toISOString(),
299
+ linesCaptured: content.split("\n").length,
300
+ stabilizationMs: elapsedMs,
301
+ truncated: false,
302
+ delivery_path: `opencode-serve:${port}`,
303
+ },
304
+ parsing: {
305
+ success: true,
306
+ parser: "opencode-serve-api",
307
+ },
308
+ };
309
+ return { mode: "structured", data: structured };
310
+ }
311
+ default:
312
+ return { mode: "clean", content };
313
+ }
314
+ }
315
+ /**
316
+ * Format tmux fallback response
317
+ */
318
+ formatTmuxFallbackResponse(rawOutput, request, stabilizationMs, timedOut) {
319
+ const linesCaptured = rawOutput.split("\n").length;
320
+ const cleaned = extractLLMReply(rawOutput);
321
+ switch (request.outputMode) {
322
+ case "raw":
323
+ return {
324
+ mode: "raw",
325
+ content: rawOutput,
326
+ metadata: { delivery_path: "tmux-fallback" },
327
+ };
328
+ case "structured": {
329
+ const structured = {
330
+ content: cleaned,
331
+ rawOutput,
332
+ metadata: {
333
+ capturedAt: new Date().toISOString(),
334
+ linesCaptured,
335
+ stabilizationMs,
336
+ truncated: linesCaptured >= 120,
337
+ delivery_path: "tmux-fallback",
338
+ },
339
+ parsing: {
340
+ success: cleaned.length > 0 && !timedOut,
341
+ parser: "tmux-regex",
342
+ error: cleaned.length === 0 ? "No LLM reply extracted" : timedOut ? "Timed out" : undefined,
343
+ },
344
+ };
345
+ return { mode: "structured", data: structured };
346
+ }
347
+ default:
348
+ return {
349
+ mode: "clean",
350
+ content: cleaned,
351
+ metadata: { delivery_path: "tmux-fallback" },
352
+ };
353
+ }
354
+ }
355
+ }
356
+ /** Singleton instance */
357
+ export const opencodeAdapter = new OpenCodeAdapter();
358
+ //# sourceMappingURL=opencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/runtime/adapters/opencode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tmux Fallback Adapter
3
+ *
4
+ * Generic tmux-based adapter that works with any runner.
5
+ * Uses tmux capture-pane and regex parsing for output extraction.
6
+ */
7
+ import type { ChatInputRequest, ChatOutputResponse, RuntimeAdapter, WaitForOutputOptions } from "../types.js";
8
+ /**
9
+ * Tmux fallback adapter - works with any runner via tmux capture
10
+ */
11
+ export declare class TmuxFallbackAdapter implements RuntimeAdapter {
12
+ readonly id = "tmux-fallback";
13
+ readonly displayName = "Tmux Fallback";
14
+ readonly supportedRunners: string[];
15
+ readonly supportsStructuredEvents = false;
16
+ canHandle(sessionName: string): boolean;
17
+ injectInput(sessionName: string, request: ChatInputRequest): boolean;
18
+ captureOutput(sessionName: string, request: ChatInputRequest): ChatOutputResponse;
19
+ waitForOutput(sessionName: string, request: ChatInputRequest, options?: WaitForOutputOptions): Promise<ChatOutputResponse>;
20
+ private formatResponse;
21
+ }
22
+ /** Singleton instance */
23
+ export declare const tmuxFallbackAdapter: TmuxFallbackAdapter;