@testany/hephos 0.3.0

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 (99) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +79 -0
  3. package/out/LocalExecutionEnvironment.d.ts +23 -0
  4. package/out/LocalExecutionEnvironment.d.ts.map +1 -0
  5. package/out/LocalExecutionEnvironment.js +124 -0
  6. package/out/LocalExecutionEnvironment.js.map +1 -0
  7. package/out/adapters/AdapterFactory.d.ts +55 -0
  8. package/out/adapters/AdapterFactory.d.ts.map +1 -0
  9. package/out/adapters/AdapterFactory.js +117 -0
  10. package/out/adapters/AdapterFactory.js.map +1 -0
  11. package/out/adapters/ClaudeCodeAdapter.d.ts +28 -0
  12. package/out/adapters/ClaudeCodeAdapter.d.ts.map +1 -0
  13. package/out/adapters/ClaudeCodeAdapter.js +95 -0
  14. package/out/adapters/ClaudeCodeAdapter.js.map +1 -0
  15. package/out/adapters/GenericShellAdapter.d.ts +51 -0
  16. package/out/adapters/GenericShellAdapter.d.ts.map +1 -0
  17. package/out/adapters/GenericShellAdapter.js +162 -0
  18. package/out/adapters/GenericShellAdapter.js.map +1 -0
  19. package/out/adapters/OpenAICodexAdapter.d.ts +36 -0
  20. package/out/adapters/OpenAICodexAdapter.d.ts.map +1 -0
  21. package/out/adapters/OpenAICodexAdapter.js +155 -0
  22. package/out/adapters/OpenAICodexAdapter.js.map +1 -0
  23. package/out/adapters/index.d.ts +12 -0
  24. package/out/adapters/index.d.ts.map +1 -0
  25. package/out/adapters/index.js +12 -0
  26. package/out/adapters/index.js.map +1 -0
  27. package/out/cli-layer-index.d.ts +14 -0
  28. package/out/cli-layer-index.d.ts.map +1 -0
  29. package/out/cli-layer-index.js +15 -0
  30. package/out/cli-layer-index.js.map +1 -0
  31. package/out/cli.d.ts +8 -0
  32. package/out/cli.d.ts.map +1 -0
  33. package/out/cli.js +297 -0
  34. package/out/cli.js.map +1 -0
  35. package/out/commands/AgentsCommand.d.ts +47 -0
  36. package/out/commands/AgentsCommand.d.ts.map +1 -0
  37. package/out/commands/AgentsCommand.js +487 -0
  38. package/out/commands/AgentsCommand.js.map +1 -0
  39. package/out/config/ConfigAdapter.d.ts +58 -0
  40. package/out/config/ConfigAdapter.d.ts.map +1 -0
  41. package/out/config/ConfigAdapter.js +95 -0
  42. package/out/config/ConfigAdapter.js.map +1 -0
  43. package/out/config/UIPreferences.d.ts +24 -0
  44. package/out/config/UIPreferences.d.ts.map +1 -0
  45. package/out/config/UIPreferences.js +18 -0
  46. package/out/config/UIPreferences.js.map +1 -0
  47. package/out/config/index.d.ts +9 -0
  48. package/out/config/index.d.ts.map +1 -0
  49. package/out/config/index.js +9 -0
  50. package/out/config/index.js.map +1 -0
  51. package/out/outputs/ConsoleLogger.d.ts +30 -0
  52. package/out/outputs/ConsoleLogger.d.ts.map +1 -0
  53. package/out/outputs/ConsoleLogger.js +54 -0
  54. package/out/outputs/ConsoleLogger.js.map +1 -0
  55. package/out/outputs/ConsoleOutput.d.ts +30 -0
  56. package/out/outputs/ConsoleOutput.d.ts.map +1 -0
  57. package/out/outputs/ConsoleOutput.js +49 -0
  58. package/out/outputs/ConsoleOutput.js.map +1 -0
  59. package/out/outputs/IOutput.d.ts +38 -0
  60. package/out/outputs/IOutput.d.ts.map +1 -0
  61. package/out/outputs/IOutput.js +13 -0
  62. package/out/outputs/IOutput.js.map +1 -0
  63. package/out/outputs/InkOutput.d.ts +24 -0
  64. package/out/outputs/InkOutput.d.ts.map +1 -0
  65. package/out/outputs/InkOutput.js +38 -0
  66. package/out/outputs/InkOutput.js.map +1 -0
  67. package/out/repl/ReplModeInk.d.ts +8 -0
  68. package/out/repl/ReplModeInk.d.ts.map +1 -0
  69. package/out/repl/ReplModeInk.js +1486 -0
  70. package/out/repl/ReplModeInk.js.map +1 -0
  71. package/out/repl/components/AgentsMenu.d.ts +7 -0
  72. package/out/repl/components/AgentsMenu.d.ts.map +1 -0
  73. package/out/repl/components/AgentsMenu.js +565 -0
  74. package/out/repl/components/AgentsMenu.js.map +1 -0
  75. package/out/repl/components/LoadingIndicator.d.ts +5 -0
  76. package/out/repl/components/LoadingIndicator.d.ts.map +1 -0
  77. package/out/repl/components/LoadingIndicator.js +14 -0
  78. package/out/repl/components/LoadingIndicator.js.map +1 -0
  79. package/out/repl/components/QueueDisplay.d.ts +18 -0
  80. package/out/repl/components/QueueDisplay.d.ts.map +1 -0
  81. package/out/repl/components/QueueDisplay.js +16 -0
  82. package/out/repl/components/QueueDisplay.js.map +1 -0
  83. package/out/repl/components/RestorePrompt.d.ts +25 -0
  84. package/out/repl/components/RestorePrompt.d.ts.map +1 -0
  85. package/out/repl/components/RestorePrompt.js +32 -0
  86. package/out/repl/components/RestorePrompt.js.map +1 -0
  87. package/out/repl/components/StreamingDisplay.d.ts +5 -0
  88. package/out/repl/components/StreamingDisplay.d.ts.map +1 -0
  89. package/out/repl/components/StreamingDisplay.js +27 -0
  90. package/out/repl/components/StreamingDisplay.js.map +1 -0
  91. package/out/repl/components/ThinkingIndicator.d.ts +19 -0
  92. package/out/repl/components/ThinkingIndicator.d.ts.map +1 -0
  93. package/out/repl/components/ThinkingIndicator.js +35 -0
  94. package/out/repl/components/ThinkingIndicator.js.map +1 -0
  95. package/out/repl/wizard/wizardStep1Reducer.d.ts +30 -0
  96. package/out/repl/wizard/wizardStep1Reducer.d.ts.map +1 -0
  97. package/out/repl/wizard/wizardStep1Reducer.js +189 -0
  98. package/out/repl/wizard/wizardStep1Reducer.js.map +1 -0
  99. package/package.json +62 -0
package/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ UNLICENSED
2
+
3
+ Copyright (c) 2024 TestAny.io. All rights reserved.
4
+
5
+ This software is proprietary and confidential. Unauthorized copying, distribution,
6
+ modification, or use of this software, via any medium, is strictly prohibited.
7
+
8
+ For licensing inquiries, contact: support@testany.io
package/README.md ADDED
@@ -0,0 +1,79 @@
1
+ # @testany/agent-chatter
2
+
3
+ Multi-agent conversation orchestration CLI for AI assistants.
4
+
5
+ ## License
6
+
7
+ **UNLICENSED** - Proprietary software. All rights reserved.
8
+
9
+ This software is proprietary and confidential. Unauthorized copying, distribution, modification, or use of this software is strictly prohibited.
10
+
11
+ For licensing inquiries: support@testany.io
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install -g @testany/agent-chatter
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```bash
22
+ # Check installed AI CLI tools
23
+ agent-chatter status
24
+
25
+ # Manage registered agents
26
+ agent-chatter agents list
27
+ agent-chatter agents scan
28
+ agent-chatter agents verify
29
+
30
+ # Start interactive REPL
31
+ agent-chatter
32
+
33
+ # Generate example configuration
34
+ agent-chatter config-example
35
+ ```
36
+
37
+ ## Features
38
+
39
+ - Multi-agent conversation orchestration
40
+ - Support for Claude Code, OpenAI Codex, Google Gemini CLI
41
+ - Interactive REPL with Ink-based UI
42
+ - Team configuration and management
43
+ - Session persistence and restoration
44
+
45
+ ## Debug Mode
46
+
47
+ Enable debug logging to troubleshoot issues:
48
+
49
+ ```bash
50
+ # Using CLI flag
51
+ agent-chatter --debug
52
+
53
+ # Using environment variable
54
+ AGENT_CHATTER_DEBUG=1 agent-chatter
55
+
56
+ # Redirect debug logs to file (debug goes to stderr)
57
+ agent-chatter --debug 2>debug.log
58
+ ```
59
+
60
+ Debug logs show Core service activities including:
61
+ - Agent verification process
62
+ - Message routing decisions
63
+ - Process spawning details
64
+
65
+ ## Requirements
66
+
67
+ - Node.js >= 20.0.0
68
+ - At least one supported AI CLI installed:
69
+ - Claude Code (`claude`)
70
+ - OpenAI Codex (`codex`)
71
+ - Google Gemini CLI (`gemini`)
72
+
73
+ ## Related Packages
74
+
75
+ - `@testany/agent-chatter-core` - Core library (MPL-2.0 OR Apache-2.0)
76
+
77
+ ## Support
78
+
79
+ For support and licensing: support@testany.io
@@ -0,0 +1,23 @@
1
+ /**
2
+ * LocalExecutionEnvironment - Local process execution implementation
3
+ *
4
+ * @file src/infrastructure/LocalExecutionEnvironment.ts
5
+ *
6
+ * Uses Node.js child_process module to spawn Agent processes locally.
7
+ * Implements IExecutionEnvironment interface for Core abstraction.
8
+ *
9
+ * NOTE: In future CLI/Core split, this will move to CLI package.
10
+ */
11
+ import type { IExecutionEnvironment, IProcess, IPty, SpawnOptions, PtyOptions } from '@testany/agent-chatter-core';
12
+ /**
13
+ * Local execution environment implementation
14
+ *
15
+ * Uses Node.js child_process module to spawn Agent processes locally
16
+ */
17
+ export declare class LocalExecutionEnvironment implements IExecutionEnvironment {
18
+ readonly type: "local";
19
+ spawn(command: string, args: string[], options?: SpawnOptions): IProcess;
20
+ createPty(command: string, args: string[], options?: PtyOptions): IPty | undefined;
21
+ private buildEnv;
22
+ }
23
+ //# sourceMappingURL=LocalExecutionEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalExecutionEnvironment.d.ts","sourceRoot":"","sources":["../src/LocalExecutionEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,UAAU,EACX,MAAM,6BAA6B,CAAC;AAKrC;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,QAAQ;IAa5E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI,GAAG,SAAS;IAoBtF,OAAO,CAAC,QAAQ;CAIjB"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * LocalExecutionEnvironment - Local process execution implementation
3
+ *
4
+ * @file src/infrastructure/LocalExecutionEnvironment.ts
5
+ *
6
+ * Uses Node.js child_process module to spawn Agent processes locally.
7
+ * Implements IExecutionEnvironment interface for Core abstraction.
8
+ *
9
+ * NOTE: In future CLI/Core split, this will move to CLI package.
10
+ */
11
+ import { spawn } from 'child_process';
12
+ // NOTE: This file has moved from src/infrastructure/ to src/cli/ as part of LLD-04
13
+ // CLI layer provides concrete implementations; Core only depends on interfaces
14
+ /**
15
+ * Local execution environment implementation
16
+ *
17
+ * Uses Node.js child_process module to spawn Agent processes locally
18
+ */
19
+ export class LocalExecutionEnvironment {
20
+ type = 'local';
21
+ spawn(command, args, options = {}) {
22
+ const nodeOptions = {
23
+ cwd: options.cwd,
24
+ shell: options.shell ?? false,
25
+ env: this.buildEnv(options),
26
+ // 0.2.x 行为:关闭 stdin,避免某些 CLI(如 claude)因等待 stdin 而卡住
27
+ stdio: ['ignore', 'pipe', 'pipe']
28
+ };
29
+ const childProcess = spawn(command, args, nodeOptions);
30
+ return new LocalProcess(childProcess);
31
+ }
32
+ createPty(command, args, options = {}) {
33
+ // PTY support is optional, requires node-pty dependency
34
+ try {
35
+ // Dynamic import of node-pty (if installed)
36
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
37
+ const nodePty = require('node-pty');
38
+ const pty = nodePty.spawn(command, args, {
39
+ name: 'xterm-color',
40
+ cols: options.cols ?? 80,
41
+ rows: options.rows ?? 30,
42
+ cwd: options.cwd,
43
+ env: this.buildEnv(options)
44
+ });
45
+ return new LocalPty(pty);
46
+ }
47
+ catch {
48
+ // node-pty not installed, return undefined
49
+ return undefined;
50
+ }
51
+ }
52
+ buildEnv(options) {
53
+ const baseEnv = options.inheritEnv !== false ? { ...process.env } : {};
54
+ return options.env ? { ...baseEnv, ...options.env } : baseEnv;
55
+ }
56
+ }
57
+ /**
58
+ * Local process wrapper
59
+ *
60
+ * Wraps Node.js ChildProcess to implement IProcess interface
61
+ */
62
+ class LocalProcess {
63
+ childProcess;
64
+ constructor(childProcess) {
65
+ this.childProcess = childProcess;
66
+ }
67
+ get stdin() {
68
+ return this.childProcess.stdin;
69
+ }
70
+ get stdout() {
71
+ return this.childProcess.stdout;
72
+ }
73
+ get stderr() {
74
+ return this.childProcess.stderr;
75
+ }
76
+ get pid() {
77
+ return this.childProcess.pid;
78
+ }
79
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
+ on(event, handler) {
81
+ this.childProcess.on(event, handler);
82
+ return this;
83
+ }
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ once(event, handler) {
86
+ this.childProcess.once(event, handler);
87
+ return this;
88
+ }
89
+ kill(signal) {
90
+ return this.childProcess.kill(signal);
91
+ }
92
+ }
93
+ /**
94
+ * Local PTY wrapper
95
+ *
96
+ * Wraps node-pty IPty to implement IPty interface
97
+ * Note: node-pty is an optional dependency
98
+ */
99
+ class LocalPty {
100
+ pty;
101
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
102
+ constructor(pty) {
103
+ this.pty = pty;
104
+ }
105
+ get pid() {
106
+ return this.pty.pid;
107
+ }
108
+ write(data) {
109
+ this.pty.write(data);
110
+ }
111
+ onData(handler) {
112
+ this.pty.onData(handler);
113
+ }
114
+ onExit(handler) {
115
+ this.pty.onExit(({ exitCode, signal }) => handler(exitCode, signal));
116
+ }
117
+ resize(cols, rows) {
118
+ this.pty.resize(cols, rows);
119
+ }
120
+ kill(signal) {
121
+ this.pty.kill(signal);
122
+ }
123
+ }
124
+ //# sourceMappingURL=LocalExecutionEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalExecutionEnvironment.js","sourceRoot":"","sources":["../src/LocalExecutionEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAA4D,MAAM,eAAe,CAAC;AAShG,mFAAmF;AACnF,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,OAAgB,CAAC;IAEjC,KAAK,CAAC,OAAe,EAAE,IAAc,EAAE,UAAwB,EAAE;QAC/D,MAAM,WAAW,GAAqB;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,oDAAoD;YACpD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,IAAc,EAAE,UAAsB,EAAE;QACjE,wDAAwD;QACxD,IAAI,CAAC;YACH,4CAA4C;YAC5C,iEAAiE;YACjE,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBACvC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAA2B;aACtD,CAAC,CAAC;YACH,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,OAAqB;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,YAAY;IACI;IAApB,YAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAElD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC/B,CAAC;IAKD,8DAA8D;IAC9D,EAAE,CAAC,KAAa,EAAE,OAAiC;QACjD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,8DAA8D;IAC9D,IAAI,CAAC,KAAa,EAAE,OAAiC;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAgC;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,QAAQ;IAEQ;IADpB,8DAA8D;IAC9D,YAAoB,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;IAAG,CAAC;IAEhC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,OAA+B;QACpC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,OAAoD;QACzD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAyC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,MAAe;QAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * AdapterFactory - Factory for creating agent adapters
3
+ *
4
+ * Creates the appropriate adapter based on agent configuration.
5
+ * Implements IAdapterFactory interface for Core abstraction.
6
+ */
7
+ import type { IAgentAdapter } from '@testany/agent-chatter-core';
8
+ import type { IAdapterFactory, AdapterFactoryFn } from '@testany/agent-chatter-core';
9
+ import type { IExecutionEnvironment } from '@testany/agent-chatter-core';
10
+ import type { AgentConfig } from '@testany/agent-chatter-core';
11
+ /**
12
+ * AdapterFactory implementing IAdapterFactory interface
13
+ *
14
+ * Manages adapter registration and creation with IExecutionEnvironment injection
15
+ */
16
+ export declare class AdapterFactory implements IAdapterFactory {
17
+ private executionEnv;
18
+ private factories;
19
+ constructor(executionEnv: IExecutionEnvironment);
20
+ /**
21
+ * Register default adapters for known agent types
22
+ */
23
+ private registerDefaultAdapters;
24
+ /**
25
+ * Register an adapter factory function
26
+ */
27
+ register(type: string, factory: AdapterFactoryFn): void;
28
+ /**
29
+ * Create an adapter instance by type
30
+ */
31
+ create(type: string): IAgentAdapter;
32
+ /**
33
+ * Check if an adapter type is registered
34
+ */
35
+ has(type: string): boolean;
36
+ /**
37
+ * Get all registered adapter types
38
+ */
39
+ getRegisteredTypes(): string[];
40
+ /**
41
+ * Create an adapter based on agent configuration
42
+ *
43
+ * @param config - Agent configuration
44
+ * @returns Appropriate adapter for the agent type
45
+ */
46
+ createAdapter(config: AgentConfig): IAgentAdapter;
47
+ /**
48
+ * Validate an agent configuration
49
+ *
50
+ * @param config - Agent configuration to validate
51
+ * @returns true if valid and available, false otherwise
52
+ */
53
+ validateAgentConfig(config: AgentConfig): Promise<boolean>;
54
+ }
55
+ //# sourceMappingURL=AdapterFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterFactory.d.ts","sourceRoot":"","sources":["../../src/adapters/AdapterFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,YAAY;IAFhC,OAAO,CAAC,SAAS,CAAuC;gBAEpC,YAAY,EAAE,qBAAqB;IAKvD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAIvD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IASnC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAyBjD;;;;;OAKG;IACG,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;CAQjE"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * AdapterFactory - Factory for creating agent adapters
3
+ *
4
+ * Creates the appropriate adapter based on agent configuration.
5
+ * Implements IAdapterFactory interface for Core abstraction.
6
+ */
7
+ import { ClaudeCodeAdapter } from './ClaudeCodeAdapter.js';
8
+ import { OpenAICodexAdapter } from './OpenAICodexAdapter.js';
9
+ import { GenericShellAdapter } from './GenericShellAdapter.js';
10
+ /**
11
+ * AdapterFactory implementing IAdapterFactory interface
12
+ *
13
+ * Manages adapter registration and creation with IExecutionEnvironment injection
14
+ */
15
+ export class AdapterFactory {
16
+ executionEnv;
17
+ factories = new Map();
18
+ constructor(executionEnv) {
19
+ this.executionEnv = executionEnv;
20
+ // Register default adapters
21
+ this.registerDefaultAdapters();
22
+ }
23
+ /**
24
+ * Register default adapters for known agent types
25
+ */
26
+ registerDefaultAdapters() {
27
+ // Claude Code adapters
28
+ this.register('claude', () => new ClaudeCodeAdapter(this.executionEnv, 'claude'));
29
+ this.register('claude-code', () => new ClaudeCodeAdapter(this.executionEnv, 'claude'));
30
+ // OpenAI Codex adapters
31
+ this.register('codex', () => new OpenAICodexAdapter(this.executionEnv, 'codex'));
32
+ this.register('openai-codex', () => new OpenAICodexAdapter(this.executionEnv, 'codex'));
33
+ // Gemini adapters
34
+ this.register('gemini', () => new GenericShellAdapter(this.executionEnv, {
35
+ agentType: 'google-gemini',
36
+ command: 'gemini',
37
+ defaultArgs: []
38
+ }));
39
+ this.register('google-gemini', () => new GenericShellAdapter(this.executionEnv, {
40
+ agentType: 'google-gemini',
41
+ command: 'gemini',
42
+ defaultArgs: []
43
+ }));
44
+ }
45
+ /**
46
+ * Register an adapter factory function
47
+ */
48
+ register(type, factory) {
49
+ this.factories.set(type, factory);
50
+ }
51
+ /**
52
+ * Create an adapter instance by type
53
+ */
54
+ create(type) {
55
+ const factory = this.factories.get(type);
56
+ if (!factory) {
57
+ const available = this.getRegisteredTypes().join(', ') || 'none';
58
+ throw new Error(`Unknown adapter type "${type}". Available types: ${available}`);
59
+ }
60
+ return factory();
61
+ }
62
+ /**
63
+ * Check if an adapter type is registered
64
+ */
65
+ has(type) {
66
+ return this.factories.has(type);
67
+ }
68
+ /**
69
+ * Get all registered adapter types
70
+ */
71
+ getRegisteredTypes() {
72
+ return Array.from(this.factories.keys());
73
+ }
74
+ /**
75
+ * Create an adapter based on agent configuration
76
+ *
77
+ * @param config - Agent configuration
78
+ * @returns Appropriate adapter for the agent type
79
+ */
80
+ createAdapter(config) {
81
+ switch (config.type) {
82
+ case 'claude-code':
83
+ return new ClaudeCodeAdapter(this.executionEnv, config.command);
84
+ case 'openai-codex':
85
+ return new OpenAICodexAdapter(this.executionEnv, config.command);
86
+ case 'google-gemini':
87
+ case 'gemini':
88
+ return new GenericShellAdapter(this.executionEnv, {
89
+ agentType: 'google-gemini',
90
+ command: config.command,
91
+ defaultArgs: []
92
+ });
93
+ default:
94
+ return new GenericShellAdapter(this.executionEnv, {
95
+ agentType: config.type,
96
+ command: config.command,
97
+ defaultArgs: []
98
+ });
99
+ }
100
+ }
101
+ /**
102
+ * Validate an agent configuration
103
+ *
104
+ * @param config - Agent configuration to validate
105
+ * @returns true if valid and available, false otherwise
106
+ */
107
+ async validateAgentConfig(config) {
108
+ try {
109
+ const adapter = this.createAdapter(config);
110
+ return await adapter.validate();
111
+ }
112
+ catch {
113
+ return false;
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=AdapterFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/adapters/AdapterFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ClaudeCodeAdapter - Adapter for Anthropic's Claude Code CLI
3
+ *
4
+ * Handles spawning and configuration for the 'claude' command
5
+ */
6
+ import type { IAgentAdapter, AgentSpawnConfig, AgentSpawnResult } from '@testany/agent-chatter-core';
7
+ import type { IExecutionEnvironment } from '@testany/agent-chatter-core';
8
+ export declare class ClaudeCodeAdapter implements IAgentAdapter {
9
+ private executionEnv;
10
+ readonly command: string;
11
+ readonly agentType = "claude-code";
12
+ readonly executionMode: "stateless";
13
+ constructor(executionEnv: IExecutionEnvironment, command?: string);
14
+ /**
15
+ * Get default arguments for Claude Code
16
+ * Uses stream-json format for better output parsing
17
+ */
18
+ getDefaultArgs(): string[];
19
+ /**
20
+ * Spawn a Claude Code process
21
+ */
22
+ spawn(config: AgentSpawnConfig): Promise<AgentSpawnResult>;
23
+ /**
24
+ * Validate that Claude Code is available
25
+ */
26
+ validate(): Promise<boolean>;
27
+ }
28
+ //# sourceMappingURL=ClaudeCodeAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAIzE,qBAAa,iBAAkB,YAAW,aAAa;IAMnD,OAAO,CAAC,YAAY;aACJ,OAAO,EAAE,MAAM;IANjC,QAAQ,CAAC,SAAS,iBAAiB;IAEnC,QAAQ,CAAC,aAAa,EAAG,WAAW,CAAU;gBAGpC,YAAY,EAAE,qBAAqB,EAC3B,OAAO,GAAE,MAAiB;IAG5C;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwDhE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;CAQnC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * ClaudeCodeAdapter - Adapter for Anthropic's Claude Code CLI
3
+ *
4
+ * Handles spawning and configuration for the 'claude' command
5
+ */
6
+ import { exec } from 'child_process';
7
+ import { promisify } from 'util';
8
+ const execAsync = promisify(exec);
9
+ export class ClaudeCodeAdapter {
10
+ executionEnv;
11
+ command;
12
+ agentType = 'claude-code';
13
+ // Use stateless mode so we can pass prompt via -p and avoid the interactive TUI
14
+ executionMode = 'stateless';
15
+ constructor(executionEnv, command = 'claude') {
16
+ this.executionEnv = executionEnv;
17
+ this.command = command;
18
+ }
19
+ /**
20
+ * Get default arguments for Claude Code
21
+ * Uses stream-json format for better output parsing
22
+ */
23
+ getDefaultArgs() {
24
+ return ['--output-format=stream-json', '--verbose'];
25
+ }
26
+ /**
27
+ * Spawn a Claude Code process
28
+ */
29
+ async spawn(config) {
30
+ const args = [...this.getDefaultArgs()];
31
+ // Add system instruction if provided
32
+ if (config.systemInstruction) {
33
+ args.push('--append-system-prompt', config.systemInstruction);
34
+ }
35
+ // Add additional arguments from member config
36
+ if (config.additionalArgs && config.additionalArgs.length > 0) {
37
+ args.push(...config.additionalArgs);
38
+ }
39
+ // Spawn the process using IExecutionEnvironment
40
+ const iProcess = this.executionEnv.spawn(this.command, args, {
41
+ cwd: config.workDir,
42
+ env: config.env,
43
+ inheritEnv: true
44
+ });
45
+ // Return spawn result with cleanup function
46
+ return {
47
+ process: iProcess,
48
+ cleanup: async () => {
49
+ return new Promise((resolve) => {
50
+ // Check if process is still alive by trying to send signal 0
51
+ try {
52
+ if (iProcess.pid !== undefined) {
53
+ process.kill(iProcess.pid, 0);
54
+ // Process is alive, set up exit handler and kill it
55
+ iProcess.on('exit', () => resolve());
56
+ iProcess.kill();
57
+ // Force kill after 5 seconds if still running
58
+ setTimeout(() => {
59
+ try {
60
+ if (iProcess.pid !== undefined) {
61
+ process.kill(iProcess.pid, 0);
62
+ iProcess.kill('SIGKILL');
63
+ }
64
+ }
65
+ catch {
66
+ // Process already dead
67
+ }
68
+ }, 5000);
69
+ }
70
+ else {
71
+ resolve();
72
+ }
73
+ }
74
+ catch {
75
+ // Process already dead
76
+ resolve();
77
+ }
78
+ });
79
+ }
80
+ };
81
+ }
82
+ /**
83
+ * Validate that Claude Code is available
84
+ */
85
+ async validate() {
86
+ try {
87
+ await execAsync(`${this.command} --version`, { timeout: 3000 });
88
+ return true;
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ }
95
+ //# sourceMappingURL=ClaudeCodeAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * GenericShellAdapter - Generic adapter for shell scripts and custom commands
3
+ *
4
+ * Stateless adapter that executes commands once per message:
5
+ * - Executes command with prompt as CLI argument
6
+ * - Each message spawns a new process (one-shot execution)
7
+ * - Prepends [SYSTEM] section to messages
8
+ * - Suitable for custom agents, Gemini CLI, or any other CLI tool
9
+ */
10
+ import type { IAgentAdapter, AgentSpawnConfig, AgentSpawnResult } from '@testany/agent-chatter-core';
11
+ import type { IExecutionEnvironment } from '@testany/agent-chatter-core';
12
+ export interface GenericShellAdapterConfig {
13
+ /**
14
+ * Agent type identifier (e.g., 'google-gemini', 'custom-agent')
15
+ */
16
+ agentType: string;
17
+ /**
18
+ * Command to execute
19
+ */
20
+ command: string;
21
+ /**
22
+ * Default arguments to pass to the command
23
+ */
24
+ defaultArgs?: string[];
25
+ }
26
+ export declare class GenericShellAdapter implements IAgentAdapter {
27
+ private executionEnv;
28
+ readonly agentType: string;
29
+ readonly command: string;
30
+ readonly executionMode: "stateless";
31
+ private readonly defaultArgs;
32
+ constructor(executionEnv: IExecutionEnvironment, config: GenericShellAdapterConfig);
33
+ /**
34
+ * Get default arguments for this adapter
35
+ */
36
+ getDefaultArgs(): string[];
37
+ /**
38
+ * Spawn a generic shell process with stdout interception
39
+ */
40
+ spawn(config: AgentSpawnConfig): Promise<AgentSpawnResult>;
41
+ /**
42
+ * Validate that the command exists and is executable
43
+ */
44
+ validate(): Promise<boolean>;
45
+ /**
46
+ * Execute a one-shot command (stateless mode)
47
+ * Spawns a new process for each message, passes message as CLI argument
48
+ */
49
+ executeOneShot(message: string, config: AgentSpawnConfig): Promise<string>;
50
+ }
51
+ //# sourceMappingURL=GenericShellAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericShellAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/GenericShellAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAIzE,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,mBAAoB,YAAW,aAAa;IAOrD,OAAO,CAAC,YAAY;IANtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAG,WAAW,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;gBAG7B,YAAY,EAAE,qBAAqB,EAC3C,MAAM,EAAE,yBAAyB;IAOnC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkDhE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BlC;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoDjF"}