erosolar-cli 1.7.356 → 1.7.358
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/README.md +24 -148
- package/dist/bin/erosolar.js +5 -21
- package/dist/bin/erosolar.js.map +1 -1
- package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
- package/dist/capabilities/agentSpawningCapability.js +56 -31
- package/dist/capabilities/agentSpawningCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +0 -15
- package/dist/contracts/tools.schema.json +0 -9
- package/dist/core/agent.d.ts +2 -2
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/core/customCommands.d.ts +1 -0
- package/dist/core/customCommands.d.ts.map +1 -1
- package/dist/core/customCommands.js +3 -0
- package/dist/core/customCommands.js.map +1 -1
- package/dist/core/hooks.d.ts +113 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +267 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/metricsTracker.d.ts +122 -0
- package/dist/core/metricsTracker.d.ts.map +1 -0
- package/dist/{alpha-zero → core}/metricsTracker.js +2 -5
- package/dist/core/metricsTracker.js.map +1 -0
- package/dist/core/securityAssessment.d.ts +91 -0
- package/dist/core/securityAssessment.d.ts.map +1 -0
- package/dist/core/securityAssessment.js +580 -0
- package/dist/core/securityAssessment.js.map +1 -0
- package/dist/core/sessionStore.d.ts +2 -0
- package/dist/core/sessionStore.d.ts.map +1 -1
- package/dist/core/sessionStore.js +1 -0
- package/dist/core/sessionStore.js.map +1 -1
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +0 -14
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts +22 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +0 -5
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/toolValidation.d.ts.map +1 -1
- package/dist/core/toolValidation.js +14 -3
- package/dist/core/toolValidation.js.map +1 -1
- package/dist/core/validationRunner.d.ts +1 -3
- package/dist/core/validationRunner.d.ts.map +1 -1
- package/dist/core/validationRunner.js.map +1 -1
- package/dist/core/verification.d.ts +137 -0
- package/dist/core/verification.d.ts.map +1 -0
- package/dist/core/verification.js +323 -0
- package/dist/core/verification.js.map +1 -0
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +21 -0
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/mcp/sseClient.d.ts.map +1 -1
- package/dist/mcp/sseClient.js +9 -18
- package/dist/mcp/sseClient.js.map +1 -1
- package/dist/plugins/tools/build/buildPlugin.d.ts +0 -6
- package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
- package/dist/plugins/tools/build/buildPlugin.js +4 -10
- package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -2
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +2 -2
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -2
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +41 -7
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +399 -166
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts +2 -0
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +82 -9
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +1 -4
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +250 -125
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +1061 -612
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +106 -24
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +137 -30
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/subagents/agentConfig.d.ts +27 -0
- package/dist/subagents/agentConfig.d.ts.map +1 -0
- package/dist/subagents/agentConfig.js +89 -0
- package/dist/subagents/agentConfig.js.map +1 -0
- package/dist/subagents/agentRegistry.d.ts +33 -0
- package/dist/subagents/agentRegistry.d.ts.map +1 -0
- package/dist/subagents/agentRegistry.js +162 -0
- package/dist/subagents/agentRegistry.js.map +1 -0
- package/dist/subagents/taskRunner.d.ts +7 -1
- package/dist/subagents/taskRunner.d.ts.map +1 -1
- package/dist/subagents/taskRunner.js +200 -49
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +7 -1
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +42 -18
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/display.d.ts +24 -45
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +148 -274
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js +6 -8
- package/dist/ui/theme.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts +0 -158
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +0 -348
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/ui/unified/layout.d.ts +20 -0
- package/dist/ui/unified/layout.d.ts.map +1 -1
- package/dist/ui/unified/layout.js +105 -216
- package/dist/ui/unified/layout.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +10 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +78 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/package.json +4 -4
- package/dist/alpha-zero/agentWrapper.d.ts +0 -84
- package/dist/alpha-zero/agentWrapper.d.ts.map +0 -1
- package/dist/alpha-zero/agentWrapper.js +0 -171
- package/dist/alpha-zero/agentWrapper.js.map +0 -1
- package/dist/alpha-zero/codeEvaluator.d.ts +0 -25
- package/dist/alpha-zero/codeEvaluator.d.ts.map +0 -1
- package/dist/alpha-zero/codeEvaluator.js +0 -273
- package/dist/alpha-zero/codeEvaluator.js.map +0 -1
- package/dist/alpha-zero/competitiveRunner.d.ts +0 -66
- package/dist/alpha-zero/competitiveRunner.d.ts.map +0 -1
- package/dist/alpha-zero/competitiveRunner.js +0 -224
- package/dist/alpha-zero/competitiveRunner.js.map +0 -1
- package/dist/alpha-zero/index.d.ts +0 -67
- package/dist/alpha-zero/index.d.ts.map +0 -1
- package/dist/alpha-zero/index.js +0 -99
- package/dist/alpha-zero/index.js.map +0 -1
- package/dist/alpha-zero/introspection.d.ts +0 -128
- package/dist/alpha-zero/introspection.d.ts.map +0 -1
- package/dist/alpha-zero/introspection.js +0 -300
- package/dist/alpha-zero/introspection.js.map +0 -1
- package/dist/alpha-zero/metricsTracker.d.ts +0 -71
- package/dist/alpha-zero/metricsTracker.d.ts.map +0 -1
- package/dist/alpha-zero/metricsTracker.js.map +0 -1
- package/dist/alpha-zero/security/core.d.ts +0 -125
- package/dist/alpha-zero/security/core.d.ts.map +0 -1
- package/dist/alpha-zero/security/core.js +0 -271
- package/dist/alpha-zero/security/core.js.map +0 -1
- package/dist/alpha-zero/security/google.d.ts +0 -125
- package/dist/alpha-zero/security/google.d.ts.map +0 -1
- package/dist/alpha-zero/security/google.js +0 -311
- package/dist/alpha-zero/security/google.js.map +0 -1
- package/dist/alpha-zero/security/googleLoader.d.ts +0 -17
- package/dist/alpha-zero/security/googleLoader.d.ts.map +0 -1
- package/dist/alpha-zero/security/googleLoader.js +0 -41
- package/dist/alpha-zero/security/googleLoader.js.map +0 -1
- package/dist/alpha-zero/security/index.d.ts +0 -29
- package/dist/alpha-zero/security/index.d.ts.map +0 -1
- package/dist/alpha-zero/security/index.js +0 -32
- package/dist/alpha-zero/security/index.js.map +0 -1
- package/dist/alpha-zero/security/simulation.d.ts +0 -124
- package/dist/alpha-zero/security/simulation.d.ts.map +0 -1
- package/dist/alpha-zero/security/simulation.js +0 -277
- package/dist/alpha-zero/security/simulation.js.map +0 -1
- package/dist/alpha-zero/selfModification.d.ts +0 -109
- package/dist/alpha-zero/selfModification.d.ts.map +0 -1
- package/dist/alpha-zero/selfModification.js +0 -233
- package/dist/alpha-zero/selfModification.js.map +0 -1
- package/dist/alpha-zero/types.d.ts +0 -170
- package/dist/alpha-zero/types.d.ts.map +0 -1
- package/dist/alpha-zero/types.js +0 -31
- package/dist/alpha-zero/types.js.map +0 -1
- package/dist/capabilities/securityTestingCapability.d.ts +0 -13
- package/dist/capabilities/securityTestingCapability.d.ts.map +0 -1
- package/dist/capabilities/securityTestingCapability.js +0 -25
- package/dist/capabilities/securityTestingCapability.js.map +0 -1
- package/dist/core/aiFlowOptimizer.d.ts +0 -26
- package/dist/core/aiFlowOptimizer.d.ts.map +0 -1
- package/dist/core/aiFlowOptimizer.js +0 -31
- package/dist/core/aiFlowOptimizer.js.map +0 -1
- package/dist/core/aiOptimizationEngine.d.ts +0 -158
- package/dist/core/aiOptimizationEngine.d.ts.map +0 -1
- package/dist/core/aiOptimizationEngine.js +0 -428
- package/dist/core/aiOptimizationEngine.js.map +0 -1
- package/dist/core/aiOptimizationIntegration.d.ts +0 -93
- package/dist/core/aiOptimizationIntegration.d.ts.map +0 -1
- package/dist/core/aiOptimizationIntegration.js +0 -250
- package/dist/core/aiOptimizationIntegration.js.map +0 -1
- package/dist/core/enhancedErrorRecovery.d.ts +0 -100
- package/dist/core/enhancedErrorRecovery.d.ts.map +0 -1
- package/dist/core/enhancedErrorRecovery.js +0 -345
- package/dist/core/enhancedErrorRecovery.js.map +0 -1
- package/dist/core/hooksSystem.d.ts +0 -65
- package/dist/core/hooksSystem.d.ts.map +0 -1
- package/dist/core/hooksSystem.js +0 -273
- package/dist/core/hooksSystem.js.map +0 -1
- package/dist/core/memorySystem.d.ts +0 -48
- package/dist/core/memorySystem.d.ts.map +0 -1
- package/dist/core/memorySystem.js +0 -271
- package/dist/core/memorySystem.js.map +0 -1
- package/dist/core/unified/errors.d.ts +0 -189
- package/dist/core/unified/errors.d.ts.map +0 -1
- package/dist/core/unified/errors.js +0 -497
- package/dist/core/unified/errors.js.map +0 -1
- package/dist/core/unified/index.d.ts +0 -19
- package/dist/core/unified/index.d.ts.map +0 -1
- package/dist/core/unified/index.js +0 -68
- package/dist/core/unified/index.js.map +0 -1
- package/dist/core/unified/schema.d.ts +0 -101
- package/dist/core/unified/schema.d.ts.map +0 -1
- package/dist/core/unified/schema.js +0 -350
- package/dist/core/unified/schema.js.map +0 -1
- package/dist/core/unified/toolRuntime.d.ts +0 -179
- package/dist/core/unified/toolRuntime.d.ts.map +0 -1
- package/dist/core/unified/toolRuntime.js +0 -517
- package/dist/core/unified/toolRuntime.js.map +0 -1
- package/dist/core/unified/tools.d.ts +0 -127
- package/dist/core/unified/tools.d.ts.map +0 -1
- package/dist/core/unified/tools.js +0 -1333
- package/dist/core/unified/tools.js.map +0 -1
- package/dist/core/unified/types.d.ts +0 -352
- package/dist/core/unified/types.d.ts.map +0 -1
- package/dist/core/unified/types.js +0 -12
- package/dist/core/unified/types.js.map +0 -1
- package/dist/core/unified/version.d.ts +0 -209
- package/dist/core/unified/version.d.ts.map +0 -1
- package/dist/core/unified/version.js +0 -454
- package/dist/core/unified/version.js.map +0 -1
- package/dist/plugins/tools/security/securityPlugin.d.ts +0 -3
- package/dist/plugins/tools/security/securityPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/security/securityPlugin.js +0 -12
- package/dist/plugins/tools/security/securityPlugin.js.map +0 -1
- package/dist/security/active-stack-security.d.ts +0 -112
- package/dist/security/active-stack-security.d.ts.map +0 -1
- package/dist/security/active-stack-security.js +0 -296
- package/dist/security/active-stack-security.js.map +0 -1
- package/dist/security/advanced-persistence-research.d.ts +0 -92
- package/dist/security/advanced-persistence-research.d.ts.map +0 -1
- package/dist/security/advanced-persistence-research.js +0 -195
- package/dist/security/advanced-persistence-research.js.map +0 -1
- package/dist/security/advanced-targeting.d.ts +0 -119
- package/dist/security/advanced-targeting.d.ts.map +0 -1
- package/dist/security/advanced-targeting.js +0 -233
- package/dist/security/advanced-targeting.js.map +0 -1
- package/dist/security/assessment/vulnerabilityAssessment.d.ts +0 -104
- package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +0 -1
- package/dist/security/assessment/vulnerabilityAssessment.js +0 -315
- package/dist/security/assessment/vulnerabilityAssessment.js.map +0 -1
- package/dist/security/authorization/securityAuthorization.d.ts +0 -88
- package/dist/security/authorization/securityAuthorization.d.ts.map +0 -1
- package/dist/security/authorization/securityAuthorization.js +0 -172
- package/dist/security/authorization/securityAuthorization.js.map +0 -1
- package/dist/security/comprehensive-targeting.d.ts +0 -85
- package/dist/security/comprehensive-targeting.d.ts.map +0 -1
- package/dist/security/comprehensive-targeting.js +0 -438
- package/dist/security/comprehensive-targeting.js.map +0 -1
- package/dist/security/global-security-integration.d.ts +0 -91
- package/dist/security/global-security-integration.d.ts.map +0 -1
- package/dist/security/global-security-integration.js +0 -218
- package/dist/security/global-security-integration.js.map +0 -1
- package/dist/security/index.d.ts +0 -38
- package/dist/security/index.d.ts.map +0 -1
- package/dist/security/index.js +0 -47
- package/dist/security/index.js.map +0 -1
- package/dist/security/persistence-analyzer.d.ts +0 -56
- package/dist/security/persistence-analyzer.d.ts.map +0 -1
- package/dist/security/persistence-analyzer.js +0 -187
- package/dist/security/persistence-analyzer.js.map +0 -1
- package/dist/security/persistence-cli.d.ts +0 -36
- package/dist/security/persistence-cli.d.ts.map +0 -1
- package/dist/security/persistence-cli.js +0 -160
- package/dist/security/persistence-cli.js.map +0 -1
- package/dist/security/persistence-research.d.ts +0 -92
- package/dist/security/persistence-research.d.ts.map +0 -1
- package/dist/security/persistence-research.js +0 -364
- package/dist/security/persistence-research.js.map +0 -1
- package/dist/security/research/persistenceResearch.d.ts +0 -97
- package/dist/security/research/persistenceResearch.d.ts.map +0 -1
- package/dist/security/research/persistenceResearch.js +0 -282
- package/dist/security/research/persistenceResearch.js.map +0 -1
- package/dist/security/security-integration.d.ts +0 -74
- package/dist/security/security-integration.d.ts.map +0 -1
- package/dist/security/security-integration.js +0 -137
- package/dist/security/security-integration.js.map +0 -1
- package/dist/security/security-testing-framework.d.ts +0 -112
- package/dist/security/security-testing-framework.d.ts.map +0 -1
- package/dist/security/security-testing-framework.js +0 -364
- package/dist/security/security-testing-framework.js.map +0 -1
- package/dist/security/simulation/attackSimulation.d.ts +0 -93
- package/dist/security/simulation/attackSimulation.d.ts.map +0 -1
- package/dist/security/simulation/attackSimulation.js +0 -341
- package/dist/security/simulation/attackSimulation.js.map +0 -1
- package/dist/security/strategic-operations.d.ts +0 -100
- package/dist/security/strategic-operations.d.ts.map +0 -1
- package/dist/security/strategic-operations.js +0 -276
- package/dist/security/strategic-operations.js.map +0 -1
- package/dist/security/tool-security-wrapper.d.ts +0 -58
- package/dist/security/tool-security-wrapper.d.ts.map +0 -1
- package/dist/security/tool-security-wrapper.js +0 -156
- package/dist/security/tool-security-wrapper.js.map +0 -1
- package/dist/shell/claudeCodeStreamHandler.d.ts +0 -145
- package/dist/shell/claudeCodeStreamHandler.d.ts.map +0 -1
- package/dist/shell/claudeCodeStreamHandler.js +0 -322
- package/dist/shell/claudeCodeStreamHandler.js.map +0 -1
- package/dist/shell/inputQueueManager.d.ts +0 -144
- package/dist/shell/inputQueueManager.d.ts.map +0 -1
- package/dist/shell/inputQueueManager.js +0 -290
- package/dist/shell/inputQueueManager.js.map +0 -1
- package/dist/shell/metricsTracker.d.ts +0 -60
- package/dist/shell/metricsTracker.d.ts.map +0 -1
- package/dist/shell/metricsTracker.js +0 -119
- package/dist/shell/metricsTracker.js.map +0 -1
- package/dist/shell/streamingOutputManager.d.ts +0 -115
- package/dist/shell/streamingOutputManager.d.ts.map +0 -1
- package/dist/shell/streamingOutputManager.js +0 -225
- package/dist/shell/streamingOutputManager.js.map +0 -1
- package/dist/tools/securityTools.d.ts +0 -22
- package/dist/tools/securityTools.d.ts.map +0 -1
- package/dist/tools/securityTools.js +0 -448
- package/dist/tools/securityTools.js.map +0 -1
- package/dist/ui/persistentPrompt.d.ts +0 -50
- package/dist/ui/persistentPrompt.d.ts.map +0 -1
- package/dist/ui/persistentPrompt.js +0 -92
- package/dist/ui/persistentPrompt.js.map +0 -1
- package/dist/ui/terminalUISchema.d.ts +0 -195
- package/dist/ui/terminalUISchema.d.ts.map +0 -1
- package/dist/ui/terminalUISchema.js +0 -113
- package/dist/ui/terminalUISchema.js.map +0 -1
- package/scripts/deploy-security-capabilities.js +0 -178
|
@@ -33,12 +33,20 @@ export class TerminalInputAdapter {
|
|
|
33
33
|
this.input.on('mode-change', (mode) => this.callbacks.onEditModeChange?.(mode));
|
|
34
34
|
this.input.on('toggleVerify', () => this.callbacks.onToggleVerify?.());
|
|
35
35
|
this.input.on('toggleAutoContinue', () => this.callbacks.onToggleAutoContinue?.());
|
|
36
|
+
this.input.on('toggleThinking', () => this.callbacks.onToggleThinking?.());
|
|
37
|
+
this.input.on('toggleEditMode', () => {
|
|
38
|
+
const mode = this.input.getEditMode?.() || 'display-edits';
|
|
39
|
+
this.callbacks.onEditModeChange?.(mode);
|
|
40
|
+
});
|
|
41
|
+
this.input.on('clearContext', () => this.callbacks.onClearContext?.());
|
|
36
42
|
}
|
|
37
43
|
/**
|
|
38
|
-
* Start capturing input
|
|
44
|
+
* Start capturing input. Does NOT render - caller should render after setup.
|
|
39
45
|
*/
|
|
40
46
|
start() {
|
|
41
47
|
this.input.enableBracketedPaste();
|
|
48
|
+
// Mouse tracking disabled for native text selection
|
|
49
|
+
// Use PgUp/PgDn or Shift+Up/Down for scrollback
|
|
42
50
|
// Set up raw mode
|
|
43
51
|
if (this.inStream.isTTY) {
|
|
44
52
|
this.inStream.setRawMode(true);
|
|
@@ -50,8 +58,7 @@ export class TerminalInputAdapter {
|
|
|
50
58
|
this.setupRawDataInterception();
|
|
51
59
|
// Set up keypress handling
|
|
52
60
|
this.setupKeypressHandler();
|
|
53
|
-
//
|
|
54
|
-
this.input.forceRender();
|
|
61
|
+
// Note: No auto-render here - caller controls when to render
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
64
|
* Stop capturing input
|
|
@@ -80,11 +87,10 @@ export class TerminalInputAdapter {
|
|
|
80
87
|
this.input.setMode(streaming ? 'streaming' : 'idle');
|
|
81
88
|
}
|
|
82
89
|
/**
|
|
83
|
-
*
|
|
84
|
-
* Input area will render starting from this row + 1.
|
|
90
|
+
* Pin top rows (e.g., the launch banner) outside the scroll region.
|
|
85
91
|
*/
|
|
86
|
-
|
|
87
|
-
this.input.
|
|
92
|
+
setPinnedHeaderLines(count) {
|
|
93
|
+
this.input.setPinnedHeaderLines(count);
|
|
88
94
|
}
|
|
89
95
|
/**
|
|
90
96
|
* Get current buffer content
|
|
@@ -107,8 +113,8 @@ export class TerminalInputAdapter {
|
|
|
107
113
|
/**
|
|
108
114
|
* Update context usage indicator (0-100, null to clear)
|
|
109
115
|
*/
|
|
110
|
-
setContextUsage(percentage) {
|
|
111
|
-
this.input.updateContextUsage(percentage);
|
|
116
|
+
setContextUsage(percentage, autoCompactThreshold) {
|
|
117
|
+
this.input.updateContextUsage(percentage, autoCompactThreshold);
|
|
112
118
|
}
|
|
113
119
|
/**
|
|
114
120
|
* Surface mode toggle states (verification/auto-continue) in the control bar.
|
|
@@ -116,13 +122,6 @@ export class TerminalInputAdapter {
|
|
|
116
122
|
setModeToggles(options) {
|
|
117
123
|
this.input.setModeToggles(options);
|
|
118
124
|
}
|
|
119
|
-
/**
|
|
120
|
-
* Set the model info string (e.g., "OpenAI · gpt-4")
|
|
121
|
-
* This is displayed persistently above the input area.
|
|
122
|
-
*/
|
|
123
|
-
setModelInfo(info) {
|
|
124
|
-
this.input.setModelInfo(info);
|
|
125
|
-
}
|
|
126
125
|
/**
|
|
127
126
|
* Update the inline status message shown before the prompt (e.g., streaming heartbeat).
|
|
128
127
|
*/
|
|
@@ -143,12 +142,24 @@ export class TerminalInputAdapter {
|
|
|
143
142
|
setStreamingLabel(label) {
|
|
144
143
|
this.input.setStreamingLabel(label);
|
|
145
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Surface meta header information (elapsed, tokens/context) above the divider.
|
|
147
|
+
*/
|
|
148
|
+
setMetaStatus(meta) {
|
|
149
|
+
this.input.setMetaStatus(meta);
|
|
150
|
+
}
|
|
146
151
|
/**
|
|
147
152
|
* Clear all status messages at once (convenience method).
|
|
148
153
|
*/
|
|
149
154
|
clearAllStatus() {
|
|
150
155
|
this.input.clearAllStatus();
|
|
151
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Surface model/provider context in the controls bar.
|
|
159
|
+
*/
|
|
160
|
+
setModelContext(options) {
|
|
161
|
+
this.input.setModelContext(options);
|
|
162
|
+
}
|
|
152
163
|
/**
|
|
153
164
|
* Set the edit guard mode explicitly
|
|
154
165
|
*/
|
|
@@ -185,6 +196,114 @@ export class TerminalInputAdapter {
|
|
|
185
196
|
forceRender() {
|
|
186
197
|
this.input.forceRender();
|
|
187
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Stream content above the pinned chat box (Claude Code method).
|
|
201
|
+
* Automatically enables scroll region on first call.
|
|
202
|
+
*/
|
|
203
|
+
streamContent(content) {
|
|
204
|
+
this.input.streamContent(content);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Enable scroll region (Claude Code method).
|
|
208
|
+
* Chat box is pinned below scroll region.
|
|
209
|
+
*/
|
|
210
|
+
enableScrollRegion() {
|
|
211
|
+
this.input.enableScrollRegion();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Disable scroll region and reset to full terminal.
|
|
215
|
+
*/
|
|
216
|
+
disableScrollRegion() {
|
|
217
|
+
this.input.disableScrollRegion();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* @deprecated Use streamContent() instead
|
|
221
|
+
* Write content directly into the scroll region.
|
|
222
|
+
*/
|
|
223
|
+
writeToScrollRegion(content) {
|
|
224
|
+
this.input.writeToScrollRegion(content);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Enter alternate screen buffer.
|
|
228
|
+
*/
|
|
229
|
+
enterAlternateScreen() {
|
|
230
|
+
this.input.enterAlternateScreen();
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Exit alternate screen buffer.
|
|
234
|
+
*/
|
|
235
|
+
exitAlternateScreen() {
|
|
236
|
+
this.input.exitAlternateScreen();
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Clear the entire terminal screen and reset content position.
|
|
240
|
+
* This removes all content including the launching command.
|
|
241
|
+
*/
|
|
242
|
+
clearScreen() {
|
|
243
|
+
this.input.clearScreen();
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Enter streaming scroll region mode.
|
|
247
|
+
* Call once at the start of streaming.
|
|
248
|
+
*/
|
|
249
|
+
enterStreamingScrollRegion() {
|
|
250
|
+
this.input.enterStreamingScrollRegion();
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Exit streaming scroll region mode.
|
|
254
|
+
* Call once at the end of streaming.
|
|
255
|
+
*/
|
|
256
|
+
exitStreamingScrollRegion() {
|
|
257
|
+
this.input.exitStreamingScrollRegion();
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get scrollback buffer content for persistence.
|
|
261
|
+
*/
|
|
262
|
+
getScrollbackBuffer() {
|
|
263
|
+
return this.input.getScrollbackBuffer();
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Load scrollback buffer for restoration.
|
|
267
|
+
*/
|
|
268
|
+
loadScrollbackBuffer(lines) {
|
|
269
|
+
this.input.loadScrollbackBuffer(lines);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Clear scrollback buffer.
|
|
273
|
+
*/
|
|
274
|
+
clearScrollbackBuffer() {
|
|
275
|
+
this.input.clearScrollbackBuffer();
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Check if alternate screen buffer is currently active.
|
|
279
|
+
*/
|
|
280
|
+
isAlternateScreenActive() {
|
|
281
|
+
return this.input.isAlternateScreenActive();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get a snapshot of the scrollback buffer (for display on exit).
|
|
285
|
+
*/
|
|
286
|
+
getScrollbackSnapshot() {
|
|
287
|
+
return this.input.getScrollbackSnapshot();
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Reset content position to top of scroll region.
|
|
291
|
+
*/
|
|
292
|
+
resetContentPosition() {
|
|
293
|
+
this.input.resetContentPosition();
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Set the content row explicitly (used after banner is written).
|
|
297
|
+
*/
|
|
298
|
+
setContentRow(row) {
|
|
299
|
+
this.input.setContentRow(row);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get the current content row position.
|
|
303
|
+
*/
|
|
304
|
+
getContentRow() {
|
|
305
|
+
return this.input.getContentRow();
|
|
306
|
+
}
|
|
188
307
|
/**
|
|
189
308
|
* Handle terminal resize
|
|
190
309
|
*/
|
|
@@ -205,24 +324,12 @@ export class TerminalInputAdapter {
|
|
|
205
324
|
return this.input;
|
|
206
325
|
}
|
|
207
326
|
/**
|
|
208
|
-
* Register with display's output interceptor
|
|
327
|
+
* Register with display's output interceptor for cursor positioning.
|
|
328
|
+
* This ensures streamed output goes to the scroll region during processing.
|
|
209
329
|
*/
|
|
210
330
|
registerOutputInterceptor(display) {
|
|
211
331
|
this.input.registerOutputInterceptor(display);
|
|
212
332
|
}
|
|
213
|
-
/**
|
|
214
|
-
* Set banner content to be written when unified UI initializes.
|
|
215
|
-
*/
|
|
216
|
-
setBannerContent(content) {
|
|
217
|
-
this.input.setBannerContent(content);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Initialize the unified UI system.
|
|
221
|
-
* Clears screen, writes banner, renders input area.
|
|
222
|
-
*/
|
|
223
|
-
initializeUnifiedUI() {
|
|
224
|
-
this.input.initializeUnifiedUI();
|
|
225
|
-
}
|
|
226
333
|
// ===========================================================================
|
|
227
334
|
// PRIVATE
|
|
228
335
|
// ===========================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAoC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface InlineAgentConfig {
|
|
2
|
+
description?: string;
|
|
3
|
+
prompt?: string;
|
|
4
|
+
tools?: string | string[];
|
|
5
|
+
model?: string;
|
|
6
|
+
permissionMode?: string;
|
|
7
|
+
skills?: string | string[];
|
|
8
|
+
}
|
|
9
|
+
export type InlineAgentConfigMap = Record<string, InlineAgentConfig>;
|
|
10
|
+
/**
|
|
11
|
+
* Set inline agent config (from CLI flag or env). Values are normalized eagerly.
|
|
12
|
+
*/
|
|
13
|
+
export declare function setInlineAgentConfig(config: InlineAgentConfigMap | null): void;
|
|
14
|
+
/**
|
|
15
|
+
* Retrieve the current inline agent configuration.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getInlineAgentConfig(): InlineAgentConfigMap | null;
|
|
18
|
+
/**
|
|
19
|
+
* Parse a JSON string into inline agent config, throwing a descriptive error on failure.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseInlineAgentConfig(json: string): InlineAgentConfigMap;
|
|
22
|
+
/**
|
|
23
|
+
* Load inline agent config from environment variables.
|
|
24
|
+
* Supports EROSOLAR_AGENTS as a JSON string.
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadInlineAgentConfigFromEnv(env?: NodeJS.ProcessEnv): InlineAgentConfigMap | null;
|
|
27
|
+
//# sourceMappingURL=agentConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentConfig.d.ts","sourceRoot":"","sources":["../../src/subagents/agentConfig.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAIrE;;IAEI;AACJ,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAE9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAWzE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,oBAAoB,GAAG,IAAI,CAY9G"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
let inlineAgentConfig = null;
|
|
2
|
+
/**
|
|
3
|
+
* Set inline agent config (from CLI flag or env). Values are normalized eagerly.
|
|
4
|
+
*/
|
|
5
|
+
export function setInlineAgentConfig(config) {
|
|
6
|
+
inlineAgentConfig = config ? normalizeConfig(config) : null;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Retrieve the current inline agent configuration.
|
|
10
|
+
*/
|
|
11
|
+
export function getInlineAgentConfig() {
|
|
12
|
+
return inlineAgentConfig;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parse a JSON string into inline agent config, throwing a descriptive error on failure.
|
|
16
|
+
*/
|
|
17
|
+
export function parseInlineAgentConfig(json) {
|
|
18
|
+
try {
|
|
19
|
+
const parsed = JSON.parse(json);
|
|
20
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
21
|
+
throw new Error('Inline agents must be an object keyed by agent name.');
|
|
22
|
+
}
|
|
23
|
+
return normalizeConfig(parsed);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
const message = error instanceof Error ? error.message : 'Unknown error parsing inline agents';
|
|
27
|
+
throw new Error(`Invalid inline agent config: ${message}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Load inline agent config from environment variables.
|
|
32
|
+
* Supports EROSOLAR_AGENTS as a JSON string.
|
|
33
|
+
*/
|
|
34
|
+
export function loadInlineAgentConfigFromEnv(env = process.env) {
|
|
35
|
+
const raw = env['EROSOLAR_AGENTS']?.trim();
|
|
36
|
+
if (!raw) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
return parseInlineAgentConfig(raw);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.warn('[agent-config] Failed to parse EROSOLAR_AGENTS:', error);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function normalizeConfig(config) {
|
|
48
|
+
const normalized = {};
|
|
49
|
+
for (const [key, value] of Object.entries(config)) {
|
|
50
|
+
if (!key.trim()) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const agentName = key.trim();
|
|
54
|
+
if (!value || typeof value !== 'object') {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const record = value;
|
|
58
|
+
const description = typeof record['description'] === 'string' ? record['description'].trim() : undefined;
|
|
59
|
+
const prompt = typeof record['prompt'] === 'string' ? record['prompt'].trim() : undefined;
|
|
60
|
+
const model = typeof record['model'] === 'string' ? record['model'].trim() : undefined;
|
|
61
|
+
const permissionMode = typeof record['permissionMode'] === 'string' ? record['permissionMode'].trim() : undefined;
|
|
62
|
+
const tools = normalizeStringList(record['tools']);
|
|
63
|
+
const skills = normalizeStringList(record['skills']);
|
|
64
|
+
normalized[agentName] = {
|
|
65
|
+
description,
|
|
66
|
+
prompt,
|
|
67
|
+
model,
|
|
68
|
+
permissionMode,
|
|
69
|
+
tools,
|
|
70
|
+
skills,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return normalized;
|
|
74
|
+
}
|
|
75
|
+
function normalizeStringList(value) {
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
const trimmed = value.trim();
|
|
78
|
+
return trimmed ? [trimmed] : undefined;
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(value)) {
|
|
81
|
+
const entries = value
|
|
82
|
+
.filter((entry) => typeof entry === 'string')
|
|
83
|
+
.map((entry) => entry.trim())
|
|
84
|
+
.filter(Boolean);
|
|
85
|
+
return entries.length ? entries : undefined;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=agentConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentConfig.js","sourceRoot":"","sources":["../../src/subagents/agentConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { InlineAgentConfigMap } from './agentConfig.js';
|
|
2
|
+
export type AgentSource = 'builtin' | 'project' | 'user' | 'inline';
|
|
3
|
+
export interface AgentDefinition {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
tools?: string[];
|
|
8
|
+
model?: string;
|
|
9
|
+
permissionMode?: string;
|
|
10
|
+
skills?: string[];
|
|
11
|
+
source: AgentSource;
|
|
12
|
+
path?: string;
|
|
13
|
+
summary?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AgentRegistryOptions {
|
|
16
|
+
workingDir: string;
|
|
17
|
+
inlineAgents?: InlineAgentConfigMap | null;
|
|
18
|
+
builtIns?: AgentDefinition[];
|
|
19
|
+
}
|
|
20
|
+
export declare class AgentRegistry {
|
|
21
|
+
private readonly workingDir;
|
|
22
|
+
private readonly inlineAgents;
|
|
23
|
+
private readonly builtIns;
|
|
24
|
+
private agents;
|
|
25
|
+
constructor(options: AgentRegistryOptions);
|
|
26
|
+
refresh(): AgentDefinition[];
|
|
27
|
+
list(): AgentDefinition[];
|
|
28
|
+
resolve(name: string): AgentDefinition | null;
|
|
29
|
+
private register;
|
|
30
|
+
private loadFromDirectory;
|
|
31
|
+
private loadInlineAgents;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=agentRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRegistry.d.ts","sourceRoot":"","sources":["../../src/subagents/agentRegistry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAsC;gBAExC,OAAO,EAAE,oBAAoB;IAOzC,OAAO,IAAI,eAAe,EAAE;IAwB5B,IAAI,IAAI,eAAe,EAAE;IAIzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAK7C,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,gBAAgB;CAkBzB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join, basename } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { parseFrontmatter } from '../utils/frontmatter.js';
|
|
5
|
+
import { getInlineAgentConfig } from './agentConfig.js';
|
|
6
|
+
const PROJECT_AGENT_DIR = '.claude/agents';
|
|
7
|
+
const USER_AGENT_DIR = '.claude/agents';
|
|
8
|
+
export class AgentRegistry {
|
|
9
|
+
workingDir;
|
|
10
|
+
inlineAgents;
|
|
11
|
+
builtIns;
|
|
12
|
+
agents = new Map();
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.workingDir = options.workingDir;
|
|
15
|
+
this.inlineAgents = options.inlineAgents ?? getInlineAgentConfig();
|
|
16
|
+
this.builtIns = options.builtIns ?? [];
|
|
17
|
+
this.refresh();
|
|
18
|
+
}
|
|
19
|
+
refresh() {
|
|
20
|
+
this.agents.clear();
|
|
21
|
+
// Lowest priority: built-in agents
|
|
22
|
+
for (const agent of this.builtIns) {
|
|
23
|
+
this.register(agent);
|
|
24
|
+
}
|
|
25
|
+
// User-level agents (~/.claude/agents)
|
|
26
|
+
const userDir = join(homedir(), USER_AGENT_DIR);
|
|
27
|
+
this.loadFromDirectory(userDir, 'user');
|
|
28
|
+
// Inline agents (CLI/env)
|
|
29
|
+
if (this.inlineAgents) {
|
|
30
|
+
this.loadInlineAgents(this.inlineAgents);
|
|
31
|
+
}
|
|
32
|
+
// Project-level agents (.claude/agents)
|
|
33
|
+
const projectDir = join(this.workingDir, PROJECT_AGENT_DIR);
|
|
34
|
+
this.loadFromDirectory(projectDir, 'project');
|
|
35
|
+
return this.list();
|
|
36
|
+
}
|
|
37
|
+
list() {
|
|
38
|
+
return Array.from(this.agents.values()).sort((a, b) => a.name.localeCompare(b.name));
|
|
39
|
+
}
|
|
40
|
+
resolve(name) {
|
|
41
|
+
const key = normalizeName(name);
|
|
42
|
+
return this.agents.get(key) ?? null;
|
|
43
|
+
}
|
|
44
|
+
register(agent) {
|
|
45
|
+
const key = normalizeName(agent.name);
|
|
46
|
+
if (!key) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.agents.set(key, {
|
|
50
|
+
...agent,
|
|
51
|
+
name: key,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
loadFromDirectory(dir, source) {
|
|
55
|
+
if (!existsSync(dir)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
let entries = [];
|
|
59
|
+
try {
|
|
60
|
+
entries = readdirSync(dir);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
const fullPath = join(dir, entry);
|
|
67
|
+
try {
|
|
68
|
+
const stats = statSync(fullPath);
|
|
69
|
+
if (stats.isDirectory()) {
|
|
70
|
+
this.loadFromDirectory(fullPath, source);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (!entry.toLowerCase().endsWith('.md')) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const content = readFileSync(fullPath, 'utf8');
|
|
77
|
+
const parsed = parseFrontmatter(content);
|
|
78
|
+
const name = normalizeName(parsed.attributes.name || basename(entry, '.md'));
|
|
79
|
+
if (!name) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const description = extractDescription(parsed);
|
|
83
|
+
const prompt = parsed.body?.trim() || '';
|
|
84
|
+
this.register({
|
|
85
|
+
name,
|
|
86
|
+
description,
|
|
87
|
+
prompt,
|
|
88
|
+
tools: normalizeStringList(parsed.attributes.tools),
|
|
89
|
+
model: parsed.attributes.model ? String(parsed.attributes.model) : undefined,
|
|
90
|
+
permissionMode: parsed.attributes.permissionMode ? String(parsed.attributes.permissionMode) : undefined,
|
|
91
|
+
skills: normalizeStringList(parsed.attributes.skills),
|
|
92
|
+
summary: parsed.attributes.summary ? String(parsed.attributes.summary) : undefined,
|
|
93
|
+
source,
|
|
94
|
+
path: fullPath,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.warn(`[agent-registry] Failed to load agent from ${fullPath}:`, error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
loadInlineAgents(definitions) {
|
|
103
|
+
for (const [name, config] of Object.entries(definitions)) {
|
|
104
|
+
const normalized = normalizeName(name);
|
|
105
|
+
if (!normalized) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
this.register({
|
|
109
|
+
name: normalized,
|
|
110
|
+
description: config.description || `Inline agent ${normalized}`,
|
|
111
|
+
prompt: config.prompt || '',
|
|
112
|
+
tools: Array.isArray(config.tools) ? config.tools : config.tools ? [config.tools] : undefined,
|
|
113
|
+
model: config.model,
|
|
114
|
+
permissionMode: config.permissionMode,
|
|
115
|
+
skills: Array.isArray(config.skills) ? config.skills : config.skills ? [config.skills] : undefined,
|
|
116
|
+
source: 'inline',
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function normalizeName(value) {
|
|
122
|
+
if (typeof value !== 'string') {
|
|
123
|
+
return '';
|
|
124
|
+
}
|
|
125
|
+
const trimmed = value.trim();
|
|
126
|
+
if (!trimmed) {
|
|
127
|
+
return '';
|
|
128
|
+
}
|
|
129
|
+
return trimmed.toLowerCase().replace(/\s+/g, '-');
|
|
130
|
+
}
|
|
131
|
+
function normalizeStringList(value) {
|
|
132
|
+
if (!value) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
if (typeof value === 'string') {
|
|
136
|
+
const trimmed = value.trim();
|
|
137
|
+
if (!trimmed) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
return trimmed.split(',').map((entry) => entry.trim()).filter(Boolean);
|
|
141
|
+
}
|
|
142
|
+
if (Array.isArray(value)) {
|
|
143
|
+
const normalized = value
|
|
144
|
+
.filter((entry) => typeof entry === 'string')
|
|
145
|
+
.map((entry) => entry.trim())
|
|
146
|
+
.filter(Boolean);
|
|
147
|
+
return normalized.length ? normalized : undefined;
|
|
148
|
+
}
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
function extractDescription(parsed) {
|
|
152
|
+
const attrDescription = typeof parsed.attributes['description'] === 'string' ? parsed.attributes['description'].trim() : '';
|
|
153
|
+
if (attrDescription) {
|
|
154
|
+
return attrDescription;
|
|
155
|
+
}
|
|
156
|
+
const firstLine = parsed.body?.split('\n').find((line) => line.trim().length > 0);
|
|
157
|
+
if (firstLine) {
|
|
158
|
+
return firstLine.trim().slice(0, 200);
|
|
159
|
+
}
|
|
160
|
+
return 'Custom subagent';
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=agentRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRegistry.js","sourceRoot":"","sources":["../../src/subagents/agentRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import type { CapabilityContext } from '../runtime/agentHost.js';
|
|
2
|
+
import { AgentRegistry, type AgentDefinition } from './agentRegistry.js';
|
|
2
3
|
type TaskModelName = 'sonnet' | 'opus' | 'haiku';
|
|
4
|
+
type TaskThoroughness = 'quick' | 'medium' | 'very_thorough';
|
|
3
5
|
export interface TaskInvocationOptions {
|
|
4
6
|
description: string;
|
|
5
7
|
prompt: string;
|
|
6
8
|
subagentType: string;
|
|
7
9
|
model?: TaskModelName;
|
|
8
10
|
resumeId?: string;
|
|
11
|
+
thoroughness?: TaskThoroughness;
|
|
9
12
|
}
|
|
10
13
|
interface TaskExecutionResult {
|
|
11
14
|
output: string;
|
|
12
15
|
}
|
|
16
|
+
export declare const BUILTIN_AGENT_DEFINITIONS: AgentDefinition[];
|
|
13
17
|
export declare class TaskRunner {
|
|
14
18
|
private readonly context;
|
|
19
|
+
private readonly registry;
|
|
15
20
|
private readonly snapshots;
|
|
16
|
-
constructor(context: CapabilityContext);
|
|
21
|
+
constructor(context: CapabilityContext, registry?: AgentRegistry);
|
|
17
22
|
runTask(options: TaskInvocationOptions): Promise<TaskExecutionResult>;
|
|
23
|
+
private buildToolRuntime;
|
|
18
24
|
private resolveToolPermissions;
|
|
19
25
|
private buildModelSelection;
|
|
20
26
|
private composeSystemPrompt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskRunner.d.ts","sourceRoot":"","sources":["../../src/subagents/taskRunner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,KAAK,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"taskRunner.d.ts","sourceRoot":"","sources":["../../src/subagents/taskRunner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzE,KAAK,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AACjD,KAAK,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAwDtD,CAAC;AAUF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,aAAa;IAU1D,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2G3E,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;CAwD5B"}
|