coding-agent-adapters 0.11.0 → 0.12.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.
package/dist/index.d.cts CHANGED
@@ -44,6 +44,7 @@ declare function generateClaudeApprovalConfig(preset: ApprovalPreset): ApprovalC
44
44
  declare function generateGeminiApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
45
45
  declare function generateCodexApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
46
46
  declare function generateAiderApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
47
+ declare function generateHermesApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
47
48
  declare function generateApprovalConfig(adapterType: AdapterType, preset: ApprovalPreset): ApprovalConfig;
48
49
  declare function listPresets(): PresetDefinition[];
49
50
  declare function getPresetDefinition(preset: ApprovalPreset): PresetDefinition;
@@ -58,7 +59,7 @@ declare function getPresetDefinition(preset: ApprovalPreset): PresetDefinition;
58
59
  /**
59
60
  * Supported adapter types
60
61
  */
61
- type AdapterType = 'claude' | 'gemini' | 'codex' | 'aider';
62
+ type AdapterType = 'claude' | 'gemini' | 'codex' | 'aider' | 'hermes';
62
63
  /**
63
64
  * Credentials that can be passed via SpawnConfig.adapterConfig
64
65
  */
@@ -137,6 +138,24 @@ interface CodingAgentConfig extends SpawnConfig {
137
138
  * Translates to CLI-specific config files and flags.
138
139
  */
139
140
  approvalPreset?: ApprovalPreset;
141
+ /**
142
+ * Claude-only: enable hook marker telemetry parsing.
143
+ * Requires Claude hook config that emits PARALLAX_CLAUDE_HOOK lines.
144
+ */
145
+ claudeHookTelemetry?: boolean;
146
+ /**
147
+ * Claude-only: override hook marker prefix token.
148
+ */
149
+ claudeHookMarkerPrefix?: string;
150
+ /**
151
+ * Gemini-only: enable hook marker telemetry parsing.
152
+ * Requires Gemini hook config that emits PARALLAX_GEMINI_HOOK markers.
153
+ */
154
+ geminiHookTelemetry?: boolean;
155
+ /**
156
+ * Gemini-only: override hook marker prefix token.
157
+ */
158
+ geminiHookMarkerPrefix?: string;
140
159
  } & Record<string, unknown>;
141
160
  }
142
161
  /**
@@ -196,6 +215,21 @@ declare abstract class BaseCodingAdapter extends BaseCLIAdapter {
196
215
  * detectReady / detectTaskComplete.
197
216
  */
198
217
  protected stripAnsi(str: string): string;
218
+ /**
219
+ * Generate hook telemetry protocol configuration.
220
+ * Returns null by default — only Claude adapter supports hooks.
221
+ */
222
+ getHookTelemetryProtocol(_options?: {
223
+ scriptPath?: string;
224
+ markerPrefix?: string;
225
+ httpUrl?: string;
226
+ sessionId?: string;
227
+ }): {
228
+ markerPrefix: string;
229
+ scriptPath: string;
230
+ scriptContent: string;
231
+ settingsHooks: Record<string, unknown>;
232
+ } | null;
199
233
  /**
200
234
  * Override detectExit to include installation instructions
201
235
  */
@@ -278,6 +312,20 @@ declare class ClaudeAdapter extends BaseCodingAdapter {
278
312
  getCommand(): string;
279
313
  getArgs(config: SpawnConfig): string[];
280
314
  getEnv(config: SpawnConfig): Record<string, string>;
315
+ getHookTelemetryProtocol(options?: {
316
+ scriptPath?: string;
317
+ markerPrefix?: string;
318
+ httpUrl?: string;
319
+ sessionId?: string;
320
+ }): {
321
+ markerPrefix: string;
322
+ scriptPath: string;
323
+ scriptContent: string;
324
+ settingsHooks: Record<string, unknown>;
325
+ };
326
+ private getHookMarkers;
327
+ private getLatestHookMarker;
328
+ private stripHookMarkers;
281
329
  detectLogin(output: string): LoginDetection;
282
330
  /**
283
331
  * Detect blocking prompts specific to Claude Code CLI
@@ -318,6 +366,11 @@ declare class ClaudeAdapter extends BaseCodingAdapter {
318
366
  parseOutput(output: string): ParsedOutput | null;
319
367
  getPromptPattern(): RegExp;
320
368
  getHealthCheckCommand(): string;
369
+ detectExit(output: string): {
370
+ exited: boolean;
371
+ code?: number;
372
+ error?: string;
373
+ };
321
374
  }
322
375
 
323
376
  /**
@@ -341,6 +394,18 @@ declare class GeminiAdapter extends BaseCodingAdapter {
341
394
  getCommand(): string;
342
395
  getArgs(config: SpawnConfig): string[];
343
396
  getEnv(config: SpawnConfig): Record<string, string>;
397
+ getHookTelemetryProtocol(options?: {
398
+ scriptPath?: string;
399
+ markerPrefix?: string;
400
+ }): {
401
+ markerPrefix: string;
402
+ scriptPath: string;
403
+ scriptContent: string;
404
+ settingsHooks: Record<string, unknown>;
405
+ };
406
+ private getHookMarkers;
407
+ private getLatestHookMarker;
408
+ private stripHookMarkers;
344
409
  detectLogin(output: string): LoginDetection;
345
410
  detectBlockingPrompt(output: string): BlockingPromptDetection;
346
411
  /**
@@ -351,6 +416,7 @@ declare class GeminiAdapter extends BaseCodingAdapter {
351
416
  * - gemini_active_waiting_user_confirmation: "Waiting for user confirmation..."
352
417
  */
353
418
  detectLoading(output: string): boolean;
419
+ detectToolRunning(output: string): ToolRunningInfo | null;
354
420
  /**
355
421
  * Detect task completion for Gemini CLI.
356
422
  *
@@ -511,6 +577,38 @@ declare class AiderAdapter extends BaseCodingAdapter {
511
577
  getHealthCheckCommand(): string;
512
578
  }
513
579
 
580
+ /**
581
+ * Hermes Agent CLI Adapter
582
+ *
583
+ * Adapter for the Hermes Agent CLI tool.
584
+ */
585
+
586
+ declare class HermesAdapter extends BaseCodingAdapter {
587
+ readonly adapterType = "hermes";
588
+ readonly displayName = "Hermes Agent";
589
+ /** Prompt-toolkit TUI + spinner rendering needs a slightly longer settle. */
590
+ readonly readySettleMs: number;
591
+ readonly installation: InstallationInfo;
592
+ getWorkspaceFiles(): AgentFileDescriptor[];
593
+ getRecommendedModels(_credentials?: AgentCredentials): ModelRecommendations;
594
+ getCommand(): string;
595
+ getArgs(_config: SpawnConfig): string[];
596
+ getEnv(config: SpawnConfig): Record<string, string>;
597
+ detectLogin(output: string): LoginDetection;
598
+ detectBlockingPrompt(output: string): BlockingPromptDetection;
599
+ detectLoading(output: string): boolean;
600
+ detectTaskComplete(output: string): boolean;
601
+ detectReady(output: string): boolean;
602
+ parseOutput(output: string): ParsedOutput | null;
603
+ getPromptPattern(): RegExp;
604
+ detectExit(output: string): {
605
+ exited: boolean;
606
+ code?: number;
607
+ error?: string;
608
+ };
609
+ getHealthCheckCommand(): string;
610
+ }
611
+
514
612
  /**
515
613
  * Dynamic Pattern Loader
516
614
  *
@@ -619,13 +717,13 @@ declare function hasDynamicPatterns(adapter: AdapterType): Promise<boolean>;
619
717
  /**
620
718
  * Create instances of all available adapters
621
719
  */
622
- declare function createAllAdapters(): (ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter)[];
720
+ declare function createAllAdapters(): (ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter | HermesAdapter)[];
623
721
 
624
- declare const ADAPTER_TYPES: Record<AdapterType, typeof ClaudeAdapter | typeof GeminiAdapter | typeof CodexAdapter | typeof AiderAdapter>;
722
+ declare const ADAPTER_TYPES: Record<AdapterType, typeof ClaudeAdapter | typeof GeminiAdapter | typeof CodexAdapter | typeof AiderAdapter | typeof HermesAdapter>;
625
723
  /**
626
724
  * Create a specific adapter by type
627
725
  */
628
- declare function createAdapter(type: AdapterType): ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter;
726
+ declare function createAdapter(type: AdapterType): ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter | HermesAdapter;
629
727
  /**
630
728
  * Result of checking if a CLI is installed
631
729
  */
@@ -673,4 +771,4 @@ declare function checkAllAdapters(): Promise<PreflightResult[]>;
673
771
  */
674
772
  declare function printMissingAdapters(types?: AdapterType[]): Promise<void>;
675
773
 
676
- export { ADAPTER_TYPES, AIDER_COMMAND_CATEGORIES, type AdapterPatterns, type AdapterType, type AgentCredentials, type AgentFileDescriptor, AiderAdapter, type ApprovalConfig, type ApprovalPreset, BaseCodingAdapter, CLAUDE_TOOL_CATEGORIES, CODEX_TOOL_CATEGORIES, ClaudeAdapter, CodexAdapter, type CodingAgentConfig, GEMINI_TOOL_CATEGORIES, GeminiAdapter, type InstallationInfo, type ModelRecommendations, PRESET_DEFINITIONS, type PreflightResult, type PresetDefinition, type RiskLevel, TOOL_CATEGORIES, type ToolCategory, type ToolCategoryInfo, type WriteMemoryOptions, checkAdapters, checkAllAdapters, clearPatternCache, createAdapter, createAllAdapters, generateAiderApprovalConfig, generateApprovalConfig, generateClaudeApprovalConfig, generateCodexApprovalConfig, generateGeminiApprovalConfig, getBaselinePatterns, getPresetDefinition, hasDynamicPatterns, listPresets, loadPatterns, loadPatternsSync, preloadAllPatterns, printMissingAdapters };
774
+ export { ADAPTER_TYPES, AIDER_COMMAND_CATEGORIES, type AdapterPatterns, type AdapterType, type AgentCredentials, type AgentFileDescriptor, AiderAdapter, type ApprovalConfig, type ApprovalPreset, BaseCodingAdapter, CLAUDE_TOOL_CATEGORIES, CODEX_TOOL_CATEGORIES, ClaudeAdapter, CodexAdapter, type CodingAgentConfig, GEMINI_TOOL_CATEGORIES, GeminiAdapter, HermesAdapter, type InstallationInfo, type ModelRecommendations, PRESET_DEFINITIONS, type PreflightResult, type PresetDefinition, type RiskLevel, TOOL_CATEGORIES, type ToolCategory, type ToolCategoryInfo, type WriteMemoryOptions, checkAdapters, checkAllAdapters, clearPatternCache, createAdapter, createAllAdapters, generateAiderApprovalConfig, generateApprovalConfig, generateClaudeApprovalConfig, generateCodexApprovalConfig, generateGeminiApprovalConfig, generateHermesApprovalConfig, getBaselinePatterns, getPresetDefinition, hasDynamicPatterns, listPresets, loadPatterns, loadPatternsSync, preloadAllPatterns, printMissingAdapters };
package/dist/index.d.ts CHANGED
@@ -44,6 +44,7 @@ declare function generateClaudeApprovalConfig(preset: ApprovalPreset): ApprovalC
44
44
  declare function generateGeminiApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
45
45
  declare function generateCodexApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
46
46
  declare function generateAiderApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
47
+ declare function generateHermesApprovalConfig(preset: ApprovalPreset): ApprovalConfig;
47
48
  declare function generateApprovalConfig(adapterType: AdapterType, preset: ApprovalPreset): ApprovalConfig;
48
49
  declare function listPresets(): PresetDefinition[];
49
50
  declare function getPresetDefinition(preset: ApprovalPreset): PresetDefinition;
@@ -58,7 +59,7 @@ declare function getPresetDefinition(preset: ApprovalPreset): PresetDefinition;
58
59
  /**
59
60
  * Supported adapter types
60
61
  */
61
- type AdapterType = 'claude' | 'gemini' | 'codex' | 'aider';
62
+ type AdapterType = 'claude' | 'gemini' | 'codex' | 'aider' | 'hermes';
62
63
  /**
63
64
  * Credentials that can be passed via SpawnConfig.adapterConfig
64
65
  */
@@ -137,6 +138,24 @@ interface CodingAgentConfig extends SpawnConfig {
137
138
  * Translates to CLI-specific config files and flags.
138
139
  */
139
140
  approvalPreset?: ApprovalPreset;
141
+ /**
142
+ * Claude-only: enable hook marker telemetry parsing.
143
+ * Requires Claude hook config that emits PARALLAX_CLAUDE_HOOK lines.
144
+ */
145
+ claudeHookTelemetry?: boolean;
146
+ /**
147
+ * Claude-only: override hook marker prefix token.
148
+ */
149
+ claudeHookMarkerPrefix?: string;
150
+ /**
151
+ * Gemini-only: enable hook marker telemetry parsing.
152
+ * Requires Gemini hook config that emits PARALLAX_GEMINI_HOOK markers.
153
+ */
154
+ geminiHookTelemetry?: boolean;
155
+ /**
156
+ * Gemini-only: override hook marker prefix token.
157
+ */
158
+ geminiHookMarkerPrefix?: string;
140
159
  } & Record<string, unknown>;
141
160
  }
142
161
  /**
@@ -196,6 +215,21 @@ declare abstract class BaseCodingAdapter extends BaseCLIAdapter {
196
215
  * detectReady / detectTaskComplete.
197
216
  */
198
217
  protected stripAnsi(str: string): string;
218
+ /**
219
+ * Generate hook telemetry protocol configuration.
220
+ * Returns null by default — only Claude adapter supports hooks.
221
+ */
222
+ getHookTelemetryProtocol(_options?: {
223
+ scriptPath?: string;
224
+ markerPrefix?: string;
225
+ httpUrl?: string;
226
+ sessionId?: string;
227
+ }): {
228
+ markerPrefix: string;
229
+ scriptPath: string;
230
+ scriptContent: string;
231
+ settingsHooks: Record<string, unknown>;
232
+ } | null;
199
233
  /**
200
234
  * Override detectExit to include installation instructions
201
235
  */
@@ -278,6 +312,20 @@ declare class ClaudeAdapter extends BaseCodingAdapter {
278
312
  getCommand(): string;
279
313
  getArgs(config: SpawnConfig): string[];
280
314
  getEnv(config: SpawnConfig): Record<string, string>;
315
+ getHookTelemetryProtocol(options?: {
316
+ scriptPath?: string;
317
+ markerPrefix?: string;
318
+ httpUrl?: string;
319
+ sessionId?: string;
320
+ }): {
321
+ markerPrefix: string;
322
+ scriptPath: string;
323
+ scriptContent: string;
324
+ settingsHooks: Record<string, unknown>;
325
+ };
326
+ private getHookMarkers;
327
+ private getLatestHookMarker;
328
+ private stripHookMarkers;
281
329
  detectLogin(output: string): LoginDetection;
282
330
  /**
283
331
  * Detect blocking prompts specific to Claude Code CLI
@@ -318,6 +366,11 @@ declare class ClaudeAdapter extends BaseCodingAdapter {
318
366
  parseOutput(output: string): ParsedOutput | null;
319
367
  getPromptPattern(): RegExp;
320
368
  getHealthCheckCommand(): string;
369
+ detectExit(output: string): {
370
+ exited: boolean;
371
+ code?: number;
372
+ error?: string;
373
+ };
321
374
  }
322
375
 
323
376
  /**
@@ -341,6 +394,18 @@ declare class GeminiAdapter extends BaseCodingAdapter {
341
394
  getCommand(): string;
342
395
  getArgs(config: SpawnConfig): string[];
343
396
  getEnv(config: SpawnConfig): Record<string, string>;
397
+ getHookTelemetryProtocol(options?: {
398
+ scriptPath?: string;
399
+ markerPrefix?: string;
400
+ }): {
401
+ markerPrefix: string;
402
+ scriptPath: string;
403
+ scriptContent: string;
404
+ settingsHooks: Record<string, unknown>;
405
+ };
406
+ private getHookMarkers;
407
+ private getLatestHookMarker;
408
+ private stripHookMarkers;
344
409
  detectLogin(output: string): LoginDetection;
345
410
  detectBlockingPrompt(output: string): BlockingPromptDetection;
346
411
  /**
@@ -351,6 +416,7 @@ declare class GeminiAdapter extends BaseCodingAdapter {
351
416
  * - gemini_active_waiting_user_confirmation: "Waiting for user confirmation..."
352
417
  */
353
418
  detectLoading(output: string): boolean;
419
+ detectToolRunning(output: string): ToolRunningInfo | null;
354
420
  /**
355
421
  * Detect task completion for Gemini CLI.
356
422
  *
@@ -511,6 +577,38 @@ declare class AiderAdapter extends BaseCodingAdapter {
511
577
  getHealthCheckCommand(): string;
512
578
  }
513
579
 
580
+ /**
581
+ * Hermes Agent CLI Adapter
582
+ *
583
+ * Adapter for the Hermes Agent CLI tool.
584
+ */
585
+
586
+ declare class HermesAdapter extends BaseCodingAdapter {
587
+ readonly adapterType = "hermes";
588
+ readonly displayName = "Hermes Agent";
589
+ /** Prompt-toolkit TUI + spinner rendering needs a slightly longer settle. */
590
+ readonly readySettleMs: number;
591
+ readonly installation: InstallationInfo;
592
+ getWorkspaceFiles(): AgentFileDescriptor[];
593
+ getRecommendedModels(_credentials?: AgentCredentials): ModelRecommendations;
594
+ getCommand(): string;
595
+ getArgs(_config: SpawnConfig): string[];
596
+ getEnv(config: SpawnConfig): Record<string, string>;
597
+ detectLogin(output: string): LoginDetection;
598
+ detectBlockingPrompt(output: string): BlockingPromptDetection;
599
+ detectLoading(output: string): boolean;
600
+ detectTaskComplete(output: string): boolean;
601
+ detectReady(output: string): boolean;
602
+ parseOutput(output: string): ParsedOutput | null;
603
+ getPromptPattern(): RegExp;
604
+ detectExit(output: string): {
605
+ exited: boolean;
606
+ code?: number;
607
+ error?: string;
608
+ };
609
+ getHealthCheckCommand(): string;
610
+ }
611
+
514
612
  /**
515
613
  * Dynamic Pattern Loader
516
614
  *
@@ -619,13 +717,13 @@ declare function hasDynamicPatterns(adapter: AdapterType): Promise<boolean>;
619
717
  /**
620
718
  * Create instances of all available adapters
621
719
  */
622
- declare function createAllAdapters(): (ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter)[];
720
+ declare function createAllAdapters(): (ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter | HermesAdapter)[];
623
721
 
624
- declare const ADAPTER_TYPES: Record<AdapterType, typeof ClaudeAdapter | typeof GeminiAdapter | typeof CodexAdapter | typeof AiderAdapter>;
722
+ declare const ADAPTER_TYPES: Record<AdapterType, typeof ClaudeAdapter | typeof GeminiAdapter | typeof CodexAdapter | typeof AiderAdapter | typeof HermesAdapter>;
625
723
  /**
626
724
  * Create a specific adapter by type
627
725
  */
628
- declare function createAdapter(type: AdapterType): ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter;
726
+ declare function createAdapter(type: AdapterType): ClaudeAdapter | GeminiAdapter | CodexAdapter | AiderAdapter | HermesAdapter;
629
727
  /**
630
728
  * Result of checking if a CLI is installed
631
729
  */
@@ -673,4 +771,4 @@ declare function checkAllAdapters(): Promise<PreflightResult[]>;
673
771
  */
674
772
  declare function printMissingAdapters(types?: AdapterType[]): Promise<void>;
675
773
 
676
- export { ADAPTER_TYPES, AIDER_COMMAND_CATEGORIES, type AdapterPatterns, type AdapterType, type AgentCredentials, type AgentFileDescriptor, AiderAdapter, type ApprovalConfig, type ApprovalPreset, BaseCodingAdapter, CLAUDE_TOOL_CATEGORIES, CODEX_TOOL_CATEGORIES, ClaudeAdapter, CodexAdapter, type CodingAgentConfig, GEMINI_TOOL_CATEGORIES, GeminiAdapter, type InstallationInfo, type ModelRecommendations, PRESET_DEFINITIONS, type PreflightResult, type PresetDefinition, type RiskLevel, TOOL_CATEGORIES, type ToolCategory, type ToolCategoryInfo, type WriteMemoryOptions, checkAdapters, checkAllAdapters, clearPatternCache, createAdapter, createAllAdapters, generateAiderApprovalConfig, generateApprovalConfig, generateClaudeApprovalConfig, generateCodexApprovalConfig, generateGeminiApprovalConfig, getBaselinePatterns, getPresetDefinition, hasDynamicPatterns, listPresets, loadPatterns, loadPatternsSync, preloadAllPatterns, printMissingAdapters };
774
+ export { ADAPTER_TYPES, AIDER_COMMAND_CATEGORIES, type AdapterPatterns, type AdapterType, type AgentCredentials, type AgentFileDescriptor, AiderAdapter, type ApprovalConfig, type ApprovalPreset, BaseCodingAdapter, CLAUDE_TOOL_CATEGORIES, CODEX_TOOL_CATEGORIES, ClaudeAdapter, CodexAdapter, type CodingAgentConfig, GEMINI_TOOL_CATEGORIES, GeminiAdapter, HermesAdapter, type InstallationInfo, type ModelRecommendations, PRESET_DEFINITIONS, type PreflightResult, type PresetDefinition, type RiskLevel, TOOL_CATEGORIES, type ToolCategory, type ToolCategoryInfo, type WriteMemoryOptions, checkAdapters, checkAllAdapters, clearPatternCache, createAdapter, createAllAdapters, generateAiderApprovalConfig, generateApprovalConfig, generateClaudeApprovalConfig, generateCodexApprovalConfig, generateGeminiApprovalConfig, generateHermesApprovalConfig, getBaselinePatterns, getPresetDefinition, hasDynamicPatterns, listPresets, loadPatterns, loadPatternsSync, preloadAllPatterns, printMissingAdapters };