@animus-labs/cortex 0.2.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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/budget-guard.d.ts +75 -0
- package/dist/budget-guard.d.ts.map +1 -0
- package/dist/budget-guard.js +142 -0
- package/dist/budget-guard.js.map +1 -0
- package/dist/compaction/compaction.d.ts +99 -0
- package/dist/compaction/compaction.d.ts.map +1 -0
- package/dist/compaction/compaction.js +302 -0
- package/dist/compaction/compaction.js.map +1 -0
- package/dist/compaction/failsafe.d.ts +57 -0
- package/dist/compaction/failsafe.d.ts.map +1 -0
- package/dist/compaction/failsafe.js +135 -0
- package/dist/compaction/failsafe.js.map +1 -0
- package/dist/compaction/index.d.ts +381 -0
- package/dist/compaction/index.d.ts.map +1 -0
- package/dist/compaction/index.js +979 -0
- package/dist/compaction/index.js.map +1 -0
- package/dist/compaction/microcompaction.d.ts +219 -0
- package/dist/compaction/microcompaction.d.ts.map +1 -0
- package/dist/compaction/microcompaction.js +536 -0
- package/dist/compaction/microcompaction.js.map +1 -0
- package/dist/compaction/observational/buffering.d.ts +225 -0
- package/dist/compaction/observational/buffering.d.ts.map +1 -0
- package/dist/compaction/observational/buffering.js +354 -0
- package/dist/compaction/observational/buffering.js.map +1 -0
- package/dist/compaction/observational/constants.d.ts +70 -0
- package/dist/compaction/observational/constants.d.ts.map +1 -0
- package/dist/compaction/observational/constants.js +507 -0
- package/dist/compaction/observational/constants.js.map +1 -0
- package/dist/compaction/observational/index.d.ts +219 -0
- package/dist/compaction/observational/index.d.ts.map +1 -0
- package/dist/compaction/observational/index.js +641 -0
- package/dist/compaction/observational/index.js.map +1 -0
- package/dist/compaction/observational/observer.d.ts +97 -0
- package/dist/compaction/observational/observer.d.ts.map +1 -0
- package/dist/compaction/observational/observer.js +424 -0
- package/dist/compaction/observational/observer.js.map +1 -0
- package/dist/compaction/observational/recall-tool.d.ts +27 -0
- package/dist/compaction/observational/recall-tool.d.ts.map +1 -0
- package/dist/compaction/observational/recall-tool.js +93 -0
- package/dist/compaction/observational/recall-tool.js.map +1 -0
- package/dist/compaction/observational/reflector.d.ts +94 -0
- package/dist/compaction/observational/reflector.d.ts.map +1 -0
- package/dist/compaction/observational/reflector.js +167 -0
- package/dist/compaction/observational/reflector.js.map +1 -0
- package/dist/compaction/observational/types.d.ts +271 -0
- package/dist/compaction/observational/types.d.ts.map +1 -0
- package/dist/compaction/observational/types.js +15 -0
- package/dist/compaction/observational/types.js.map +1 -0
- package/dist/context-manager.d.ts +134 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +170 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/cortex-agent.d.ts +1020 -0
- package/dist/cortex-agent.d.ts.map +1 -0
- package/dist/cortex-agent.js +3589 -0
- package/dist/cortex-agent.js.map +1 -0
- package/dist/error-classifier.d.ts +48 -0
- package/dist/error-classifier.d.ts.map +1 -0
- package/dist/error-classifier.js +152 -0
- package/dist/error-classifier.js.map +1 -0
- package/dist/event-bridge.d.ts +166 -0
- package/dist/event-bridge.d.ts.map +1 -0
- package/dist/event-bridge.js +381 -0
- package/dist/event-bridge.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-client.d.ts +119 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +474 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/model-wrapper.d.ts +58 -0
- package/dist/model-wrapper.d.ts.map +1 -0
- package/dist/model-wrapper.js +86 -0
- package/dist/model-wrapper.js.map +1 -0
- package/dist/noop-logger.d.ts +4 -0
- package/dist/noop-logger.d.ts.map +1 -0
- package/dist/noop-logger.js +8 -0
- package/dist/noop-logger.js.map +1 -0
- package/dist/prompt-diagnostics.d.ts +47 -0
- package/dist/prompt-diagnostics.d.ts.map +1 -0
- package/dist/prompt-diagnostics.js +230 -0
- package/dist/prompt-diagnostics.js.map +1 -0
- package/dist/provider-manager.d.ts +224 -0
- package/dist/provider-manager.d.ts.map +1 -0
- package/dist/provider-manager.js +563 -0
- package/dist/provider-manager.js.map +1 -0
- package/dist/provider-registry.d.ts +115 -0
- package/dist/provider-registry.d.ts.map +1 -0
- package/dist/provider-registry.js +305 -0
- package/dist/provider-registry.js.map +1 -0
- package/dist/schema-converter.d.ts +20 -0
- package/dist/schema-converter.d.ts.map +1 -0
- package/dist/schema-converter.js +48 -0
- package/dist/schema-converter.js.map +1 -0
- package/dist/skill-preprocessor.d.ts +46 -0
- package/dist/skill-preprocessor.d.ts.map +1 -0
- package/dist/skill-preprocessor.js +237 -0
- package/dist/skill-preprocessor.js.map +1 -0
- package/dist/skill-registry.d.ts +107 -0
- package/dist/skill-registry.d.ts.map +1 -0
- package/dist/skill-registry.js +330 -0
- package/dist/skill-registry.js.map +1 -0
- package/dist/skill-tool.d.ts +54 -0
- package/dist/skill-tool.d.ts.map +1 -0
- package/dist/skill-tool.js +88 -0
- package/dist/skill-tool.js.map +1 -0
- package/dist/sub-agent-manager.d.ts +90 -0
- package/dist/sub-agent-manager.d.ts.map +1 -0
- package/dist/sub-agent-manager.js +192 -0
- package/dist/sub-agent-manager.js.map +1 -0
- package/dist/token-estimator.d.ts +23 -0
- package/dist/token-estimator.d.ts.map +1 -0
- package/dist/token-estimator.js +27 -0
- package/dist/token-estimator.js.map +1 -0
- package/dist/tool-contract.d.ts +68 -0
- package/dist/tool-contract.d.ts.map +1 -0
- package/dist/tool-contract.js +35 -0
- package/dist/tool-contract.js.map +1 -0
- package/dist/tool-result-persistence.d.ts +89 -0
- package/dist/tool-result-persistence.d.ts.map +1 -0
- package/dist/tool-result-persistence.js +152 -0
- package/dist/tool-result-persistence.js.map +1 -0
- package/dist/tools/bash/index.d.ts +71 -0
- package/dist/tools/bash/index.d.ts.map +1 -0
- package/dist/tools/bash/index.js +485 -0
- package/dist/tools/bash/index.js.map +1 -0
- package/dist/tools/bash/interactive.d.ts +47 -0
- package/dist/tools/bash/interactive.d.ts.map +1 -0
- package/dist/tools/bash/interactive.js +262 -0
- package/dist/tools/bash/interactive.js.map +1 -0
- package/dist/tools/bash/safety.d.ts +149 -0
- package/dist/tools/bash/safety.d.ts.map +1 -0
- package/dist/tools/bash/safety.js +1116 -0
- package/dist/tools/bash/safety.js.map +1 -0
- package/dist/tools/edit.d.ts +57 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +310 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +34 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +268 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +53 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +673 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +62 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/read.d.ts +43 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +459 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/runtime.d.ts +62 -0
- package/dist/tools/runtime.d.ts.map +1 -0
- package/dist/tools/runtime.js +116 -0
- package/dist/tools/runtime.js.map +1 -0
- package/dist/tools/shared/cwd-tracker.d.ts +32 -0
- package/dist/tools/shared/cwd-tracker.d.ts.map +1 -0
- package/dist/tools/shared/cwd-tracker.js +44 -0
- package/dist/tools/shared/cwd-tracker.js.map +1 -0
- package/dist/tools/shared/edit-history.d.ts +55 -0
- package/dist/tools/shared/edit-history.d.ts.map +1 -0
- package/dist/tools/shared/edit-history.js +72 -0
- package/dist/tools/shared/edit-history.js.map +1 -0
- package/dist/tools/shared/edit-matcher.d.ts +83 -0
- package/dist/tools/shared/edit-matcher.d.ts.map +1 -0
- package/dist/tools/shared/edit-matcher.js +359 -0
- package/dist/tools/shared/edit-matcher.js.map +1 -0
- package/dist/tools/shared/file-mutation-lock.d.ts +22 -0
- package/dist/tools/shared/file-mutation-lock.d.ts.map +1 -0
- package/dist/tools/shared/file-mutation-lock.js +35 -0
- package/dist/tools/shared/file-mutation-lock.js.map +1 -0
- package/dist/tools/shared/gitignore.d.ts +17 -0
- package/dist/tools/shared/gitignore.d.ts.map +1 -0
- package/dist/tools/shared/gitignore.js +59 -0
- package/dist/tools/shared/gitignore.js.map +1 -0
- package/dist/tools/shared/pdf-extractor.d.ts +96 -0
- package/dist/tools/shared/pdf-extractor.d.ts.map +1 -0
- package/dist/tools/shared/pdf-extractor.js +196 -0
- package/dist/tools/shared/pdf-extractor.js.map +1 -0
- package/dist/tools/shared/read-registry.d.ts +66 -0
- package/dist/tools/shared/read-registry.d.ts.map +1 -0
- package/dist/tools/shared/read-registry.js +65 -0
- package/dist/tools/shared/read-registry.js.map +1 -0
- package/dist/tools/shared/safe-env.d.ts +18 -0
- package/dist/tools/shared/safe-env.d.ts.map +1 -0
- package/dist/tools/shared/safe-env.js +70 -0
- package/dist/tools/shared/safe-env.js.map +1 -0
- package/dist/tools/sub-agent.d.ts +91 -0
- package/dist/tools/sub-agent.d.ts.map +1 -0
- package/dist/tools/sub-agent.js +89 -0
- package/dist/tools/sub-agent.js.map +1 -0
- package/dist/tools/task-output.d.ts +38 -0
- package/dist/tools/task-output.d.ts.map +1 -0
- package/dist/tools/task-output.js +186 -0
- package/dist/tools/task-output.js.map +1 -0
- package/dist/tools/tool-search/index.d.ts +40 -0
- package/dist/tools/tool-search/index.d.ts.map +1 -0
- package/dist/tools/tool-search/index.js +110 -0
- package/dist/tools/tool-search/index.js.map +1 -0
- package/dist/tools/tool-search/registry.d.ts +82 -0
- package/dist/tools/tool-search/registry.d.ts.map +1 -0
- package/dist/tools/tool-search/registry.js +238 -0
- package/dist/tools/tool-search/registry.js.map +1 -0
- package/dist/tools/undo-edit.d.ts +51 -0
- package/dist/tools/undo-edit.d.ts.map +1 -0
- package/dist/tools/undo-edit.js +231 -0
- package/dist/tools/undo-edit.js.map +1 -0
- package/dist/tools/web-fetch/cache.d.ts +49 -0
- package/dist/tools/web-fetch/cache.d.ts.map +1 -0
- package/dist/tools/web-fetch/cache.js +89 -0
- package/dist/tools/web-fetch/cache.js.map +1 -0
- package/dist/tools/web-fetch/index.d.ts +53 -0
- package/dist/tools/web-fetch/index.d.ts.map +1 -0
- package/dist/tools/web-fetch/index.js +513 -0
- package/dist/tools/web-fetch/index.js.map +1 -0
- package/dist/tools/write.d.ts +59 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +316 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +881 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/working-tags.d.ts +44 -0
- package/dist/working-tags.d.ts.map +1 -0
- package/dist/working-tags.js +103 -0
- package/dist/working-tags.js.map +1 -0
- package/package.json +87 -0
- package/src/budget-guard.ts +170 -0
- package/src/compaction/compaction.ts +386 -0
- package/src/compaction/failsafe.ts +185 -0
- package/src/compaction/index.ts +1199 -0
- package/src/compaction/microcompaction.ts +709 -0
- package/src/compaction/observational/buffering.ts +430 -0
- package/src/compaction/observational/constants.ts +532 -0
- package/src/compaction/observational/index.ts +837 -0
- package/src/compaction/observational/observer.ts +510 -0
- package/src/compaction/observational/recall-tool.ts +130 -0
- package/src/compaction/observational/reflector.ts +221 -0
- package/src/compaction/observational/types.ts +343 -0
- package/src/context-manager.ts +237 -0
- package/src/cortex-agent.ts +4297 -0
- package/src/error-classifier.ts +199 -0
- package/src/event-bridge.ts +508 -0
- package/src/index.ts +292 -0
- package/src/mcp-client.ts +582 -0
- package/src/model-wrapper.ts +128 -0
- package/src/noop-logger.ts +9 -0
- package/src/prompt-diagnostics.ts +296 -0
- package/src/provider-manager.ts +823 -0
- package/src/provider-registry.ts +386 -0
- package/src/schema-converter.ts +51 -0
- package/src/skill-preprocessor.ts +314 -0
- package/src/skill-registry.ts +378 -0
- package/src/skill-tool.ts +130 -0
- package/src/sub-agent-manager.ts +236 -0
- package/src/token-estimator.ts +26 -0
- package/src/tool-contract.ts +113 -0
- package/src/tool-result-persistence.ts +197 -0
- package/src/tools/bash/index.ts +633 -0
- package/src/tools/bash/interactive.ts +302 -0
- package/src/tools/bash/safety.ts +1297 -0
- package/src/tools/edit.ts +422 -0
- package/src/tools/glob.ts +330 -0
- package/src/tools/grep.ts +819 -0
- package/src/tools/index.ts +110 -0
- package/src/tools/read.ts +580 -0
- package/src/tools/runtime.ts +173 -0
- package/src/tools/shared/cwd-tracker.ts +50 -0
- package/src/tools/shared/edit-history.ts +96 -0
- package/src/tools/shared/edit-matcher.ts +457 -0
- package/src/tools/shared/file-mutation-lock.ts +40 -0
- package/src/tools/shared/gitignore.ts +61 -0
- package/src/tools/shared/pdf-extractor.ts +290 -0
- package/src/tools/shared/read-registry.ts +93 -0
- package/src/tools/shared/safe-env.ts +82 -0
- package/src/tools/sub-agent.ts +171 -0
- package/src/tools/task-output.ts +236 -0
- package/src/tools/tool-search/index.ts +167 -0
- package/src/tools/tool-search/registry.ts +278 -0
- package/src/tools/undo-edit.ts +314 -0
- package/src/tools/web-fetch/cache.ts +112 -0
- package/src/tools/web-fetch/index.ts +604 -0
- package/src/tools/write.ts +385 -0
- package/src/types.ts +1057 -0
- package/src/working-tags.ts +118 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event bridge: maps pi-agent-core events to normalized consumer events.
|
|
3
|
+
*
|
|
4
|
+
* Pi-agent-core emits 10 events across 4 scopes (agent, turn, message, tool).
|
|
5
|
+
* The event bridge normalizes these into a consumer-facing event stream for
|
|
6
|
+
* logging, monitoring, and lifecycle hooks.
|
|
7
|
+
*
|
|
8
|
+
* Key mappings:
|
|
9
|
+
* agent_start -> loop_start
|
|
10
|
+
* agent_end -> loop_end (onLoopComplete fires here)
|
|
11
|
+
* turn_start -> turn_start
|
|
12
|
+
* turn_end -> turn_end + AgentTextOutput (parse working tags)
|
|
13
|
+
* message_start -> response_start
|
|
14
|
+
* message_update -> response_chunk
|
|
15
|
+
* message_end -> response_end
|
|
16
|
+
* tool_execution_start -> tool_call_start
|
|
17
|
+
* tool_execution_update -> tool_call_update
|
|
18
|
+
* tool_execution_end -> tool_call_end
|
|
19
|
+
*
|
|
20
|
+
* Child event forwarding:
|
|
21
|
+
* forwardFrom(childBridge, childTaskId) subscribes to a child agent's
|
|
22
|
+
* event bridge and re-emits events on this bridge with childTaskId set.
|
|
23
|
+
* Consumers use event.childTaskId to distinguish parent vs child events.
|
|
24
|
+
*
|
|
25
|
+
* Reference: cortex-architecture.md (Event Bridge section)
|
|
26
|
+
*/
|
|
27
|
+
import { NOOP_LOGGER } from './noop-logger.js';
|
|
28
|
+
import { parseWorkingTags } from './working-tags.js';
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Event type mapping
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
const PI_TO_CORTEX_MAP = {
|
|
33
|
+
agent_start: 'loop_start',
|
|
34
|
+
agent_end: 'loop_end',
|
|
35
|
+
turn_start: 'turn_start',
|
|
36
|
+
turn_end: 'turn_end',
|
|
37
|
+
message_start: 'response_start',
|
|
38
|
+
message_update: 'response_chunk',
|
|
39
|
+
message_end: 'response_end',
|
|
40
|
+
tool_execution_start: 'tool_call_start',
|
|
41
|
+
tool_execution_update: 'tool_call_update',
|
|
42
|
+
tool_execution_end: 'tool_call_end',
|
|
43
|
+
};
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// EventBridge
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
export class EventBridge {
|
|
48
|
+
listeners = new Map();
|
|
49
|
+
allListeners = new Set();
|
|
50
|
+
unsubscribeFromPi = null;
|
|
51
|
+
workingTagsEnabled;
|
|
52
|
+
logger;
|
|
53
|
+
/**
|
|
54
|
+
* Create an EventBridge.
|
|
55
|
+
*
|
|
56
|
+
* @param workingTagsEnabled - Whether to parse working tags on turn_end
|
|
57
|
+
* @param logger - Optional logger for diagnostics (defaults to silent no-op)
|
|
58
|
+
*/
|
|
59
|
+
constructor(workingTagsEnabled = true, logger) {
|
|
60
|
+
this.workingTagsEnabled = workingTagsEnabled;
|
|
61
|
+
this.logger = logger ?? NOOP_LOGGER;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Wire the bridge to a pi-agent-core Agent's event stream.
|
|
65
|
+
* Stores the unsubscribe function for cleanup.
|
|
66
|
+
*
|
|
67
|
+
* @param source - The pi-agent-core Agent (or any PiEventSource)
|
|
68
|
+
*/
|
|
69
|
+
wire(source) {
|
|
70
|
+
// Clean up previous wiring if any
|
|
71
|
+
this.unwire();
|
|
72
|
+
this.unsubscribeFromPi = source.subscribe((piEvent) => {
|
|
73
|
+
this.handlePiEvent(piEvent);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Disconnect from the pi-agent-core event stream.
|
|
78
|
+
*/
|
|
79
|
+
unwire() {
|
|
80
|
+
if (this.unsubscribeFromPi) {
|
|
81
|
+
this.unsubscribeFromPi();
|
|
82
|
+
this.unsubscribeFromPi = null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Register a listener for a specific event type.
|
|
87
|
+
*
|
|
88
|
+
* @param type - The event type to listen for
|
|
89
|
+
* @param listener - The callback function
|
|
90
|
+
* @returns An unsubscribe function
|
|
91
|
+
*/
|
|
92
|
+
on(type, listener) {
|
|
93
|
+
let typeListeners = this.listeners.get(type);
|
|
94
|
+
if (!typeListeners) {
|
|
95
|
+
typeListeners = new Set();
|
|
96
|
+
this.listeners.set(type, typeListeners);
|
|
97
|
+
}
|
|
98
|
+
typeListeners.add(listener);
|
|
99
|
+
return () => {
|
|
100
|
+
typeListeners.delete(listener);
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Register a listener for all event types.
|
|
105
|
+
*
|
|
106
|
+
* @param listener - The callback function
|
|
107
|
+
* @returns An unsubscribe function
|
|
108
|
+
*/
|
|
109
|
+
onAll(listener) {
|
|
110
|
+
this.allListeners.add(listener);
|
|
111
|
+
return () => {
|
|
112
|
+
this.allListeners.delete(listener);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Forward all events from a child agent's event bridge onto this bridge.
|
|
117
|
+
*
|
|
118
|
+
* Each forwarded event gets `childTaskId` set so consumers can distinguish
|
|
119
|
+
* parent events from child events. Returns an unsubscribe function that
|
|
120
|
+
* stops forwarding (call when the child agent completes or is destroyed).
|
|
121
|
+
*
|
|
122
|
+
* @param childBridge - The child agent's EventBridge
|
|
123
|
+
* @param childTaskId - The sub-agent task ID to tag forwarded events with
|
|
124
|
+
* @returns An unsubscribe function
|
|
125
|
+
*/
|
|
126
|
+
forwardFrom(childBridge, childTaskId) {
|
|
127
|
+
return childBridge.onAll((event) => {
|
|
128
|
+
this.emit({
|
|
129
|
+
...event,
|
|
130
|
+
childTaskId,
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Update whether working tags parsing is enabled.
|
|
136
|
+
*/
|
|
137
|
+
setWorkingTagsEnabled(enabled) {
|
|
138
|
+
this.workingTagsEnabled = enabled;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clean up all listeners and disconnect from the pi-agent-core event stream.
|
|
142
|
+
*/
|
|
143
|
+
destroy() {
|
|
144
|
+
this.unwire();
|
|
145
|
+
this.listeners.clear();
|
|
146
|
+
this.allListeners.clear();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Handle a pi-agent-core event by mapping and emitting to consumers.
|
|
150
|
+
*/
|
|
151
|
+
handlePiEvent(piEvent) {
|
|
152
|
+
const cortexType = PI_TO_CORTEX_MAP[piEvent.type];
|
|
153
|
+
if (!cortexType) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const cortexEvent = {
|
|
157
|
+
type: cortexType,
|
|
158
|
+
data: piEvent,
|
|
159
|
+
};
|
|
160
|
+
// Populate typed payload for tool events
|
|
161
|
+
const payload = this.extractToolPayload(cortexType, piEvent);
|
|
162
|
+
if (payload) {
|
|
163
|
+
cortexEvent.payload = payload;
|
|
164
|
+
}
|
|
165
|
+
// For turn_end, extract typed usage and parse working tags
|
|
166
|
+
if (cortexType === 'turn_end') {
|
|
167
|
+
const usage = this.extractUsage(piEvent);
|
|
168
|
+
if (usage) {
|
|
169
|
+
cortexEvent.usage = usage;
|
|
170
|
+
}
|
|
171
|
+
if (this.workingTagsEnabled) {
|
|
172
|
+
const text = this.extractTurnText(piEvent);
|
|
173
|
+
if (text) {
|
|
174
|
+
cortexEvent.textOutput = parseWorkingTags(text);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
this.emit(cortexEvent);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Extract a typed payload from a pi-agent-core tool event.
|
|
182
|
+
* Returns undefined for non-tool events.
|
|
183
|
+
*/
|
|
184
|
+
extractToolPayload(cortexType, piEvent) {
|
|
185
|
+
if (cortexType === 'tool_call_start') {
|
|
186
|
+
return {
|
|
187
|
+
toolCallId: String(piEvent['toolCallId'] ?? piEvent['id'] ?? ''),
|
|
188
|
+
toolName: String(piEvent['toolName'] ?? piEvent['name'] ?? 'unknown'),
|
|
189
|
+
args: (piEvent['args'] ?? piEvent['input'] ?? {}),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
if (cortexType === 'tool_call_update') {
|
|
193
|
+
const partialResult = piEvent['partialResult'];
|
|
194
|
+
return {
|
|
195
|
+
toolCallId: String(piEvent['toolCallId'] ?? piEvent['id'] ?? ''),
|
|
196
|
+
toolName: String(piEvent['toolName'] ?? piEvent['name'] ?? 'unknown'),
|
|
197
|
+
args: (piEvent['args'] ?? piEvent['input'] ?? {}),
|
|
198
|
+
partialResult: partialResult ?? { content: [], details: {} },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (cortexType === 'tool_call_end') {
|
|
202
|
+
const result = piEvent['result'];
|
|
203
|
+
const isError = Boolean(piEvent['isError']);
|
|
204
|
+
const explicitError = piEvent['error'];
|
|
205
|
+
const payload = {
|
|
206
|
+
toolCallId: String(piEvent['toolCallId'] ?? piEvent['id'] ?? ''),
|
|
207
|
+
toolName: String(piEvent['toolName'] ?? piEvent['name'] ?? 'unknown'),
|
|
208
|
+
result: result ?? { content: [], details: {} },
|
|
209
|
+
durationMs: Number(piEvent['durationMs'] ?? piEvent['duration'] ?? 0),
|
|
210
|
+
isError,
|
|
211
|
+
};
|
|
212
|
+
if (isError) {
|
|
213
|
+
// Extract error text from multiple possible sources:
|
|
214
|
+
// 1. Explicit error string field
|
|
215
|
+
// 2. Error object with message
|
|
216
|
+
// 3. Result content text (pi-agent-core puts error details here)
|
|
217
|
+
// 4. Fallback
|
|
218
|
+
let errorText;
|
|
219
|
+
if (typeof explicitError === 'string') {
|
|
220
|
+
errorText = explicitError;
|
|
221
|
+
}
|
|
222
|
+
else if (explicitError instanceof Error) {
|
|
223
|
+
errorText = explicitError.message;
|
|
224
|
+
}
|
|
225
|
+
else if (typeof explicitError === 'object' && explicitError !== null && 'message' in explicitError) {
|
|
226
|
+
errorText = String(explicitError['message']);
|
|
227
|
+
}
|
|
228
|
+
// If no explicit error, extract from result content
|
|
229
|
+
if (!errorText && result?.content) {
|
|
230
|
+
const textParts = result.content
|
|
231
|
+
.filter((c) => c.type === 'text')
|
|
232
|
+
.map(c => c.text);
|
|
233
|
+
if (textParts.length > 0) {
|
|
234
|
+
errorText = textParts.join('\n');
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
payload.error = errorText ?? 'unknown error';
|
|
238
|
+
}
|
|
239
|
+
return payload;
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Extract the text content from a turn_end event.
|
|
245
|
+
* Pi-agent-core's turn_end event carries the assistant message for that turn.
|
|
246
|
+
*/
|
|
247
|
+
extractTurnText(piEvent) {
|
|
248
|
+
// The turn_end event from pi-agent-core carries the assistant message.
|
|
249
|
+
// The structure varies, so we try multiple access patterns.
|
|
250
|
+
// Pattern 1: Direct text property
|
|
251
|
+
if (typeof piEvent['text'] === 'string') {
|
|
252
|
+
return piEvent['text'];
|
|
253
|
+
}
|
|
254
|
+
// Pattern 2: message.content as string
|
|
255
|
+
const message = piEvent['message'];
|
|
256
|
+
if (message && typeof message['content'] === 'string') {
|
|
257
|
+
return message['content'];
|
|
258
|
+
}
|
|
259
|
+
// Pattern 3: message.content as array with text parts
|
|
260
|
+
if (message && Array.isArray(message['content'])) {
|
|
261
|
+
const textParts = message['content']
|
|
262
|
+
.filter((part) => part.type === 'text' && typeof part.text === 'string')
|
|
263
|
+
.map((part) => part.text);
|
|
264
|
+
if (textParts.length > 0) {
|
|
265
|
+
return textParts.join('');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Pattern 4: result.content
|
|
269
|
+
const result = piEvent['result'];
|
|
270
|
+
if (result && typeof result['content'] === 'string') {
|
|
271
|
+
return result['content'];
|
|
272
|
+
}
|
|
273
|
+
// Pattern 5: content on the content parts of the result
|
|
274
|
+
if (result && Array.isArray(result['content'])) {
|
|
275
|
+
const textParts = result['content']
|
|
276
|
+
.filter((part) => part.type === 'text' && typeof part.text === 'string')
|
|
277
|
+
.map((part) => part.text);
|
|
278
|
+
if (textParts.length > 0) {
|
|
279
|
+
return textParts.join('');
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Extract typed CortexUsage from a turn_end event.
|
|
286
|
+
*
|
|
287
|
+
* Pi-ai's AssistantMessage carries usage at message.usage with a nested
|
|
288
|
+
* cost object. This method navigates the opaque event data once so all
|
|
289
|
+
* subscribers receive clean, typed usage without duplicating extraction.
|
|
290
|
+
*/
|
|
291
|
+
extractUsage(piEvent) {
|
|
292
|
+
// Pattern 1: message.usage (pi-ai AssistantMessage, the primary path)
|
|
293
|
+
const message = piEvent['message'];
|
|
294
|
+
if (message) {
|
|
295
|
+
const usage = this.buildUsageFromObject(message['usage']);
|
|
296
|
+
if (usage) {
|
|
297
|
+
if (typeof message['model'] === 'string') {
|
|
298
|
+
usage.model = message['model'];
|
|
299
|
+
}
|
|
300
|
+
return usage;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Pattern 2: Direct usage property on the event
|
|
304
|
+
const directUsage = this.buildUsageFromObject(piEvent['usage']);
|
|
305
|
+
if (directUsage)
|
|
306
|
+
return directUsage;
|
|
307
|
+
// Pattern 3: result.usage
|
|
308
|
+
const result = piEvent['result'];
|
|
309
|
+
if (result) {
|
|
310
|
+
const resultUsage = this.buildUsageFromObject(result['usage']);
|
|
311
|
+
if (resultUsage)
|
|
312
|
+
return resultUsage;
|
|
313
|
+
}
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Build a CortexUsage from a raw usage-shaped object.
|
|
318
|
+
* Returns null if the object is not a valid usage structure.
|
|
319
|
+
*/
|
|
320
|
+
buildUsageFromObject(raw) {
|
|
321
|
+
if (!raw || typeof raw !== 'object')
|
|
322
|
+
return null;
|
|
323
|
+
const u = raw;
|
|
324
|
+
const input = typeof u['input'] === 'number' ? u['input'] : 0;
|
|
325
|
+
const output = typeof u['output'] === 'number' ? u['output'] : 0;
|
|
326
|
+
const cacheRead = typeof u['cacheRead'] === 'number' ? u['cacheRead'] : 0;
|
|
327
|
+
const cacheWrite = typeof u['cacheWrite'] === 'number' ? u['cacheWrite'] : 0;
|
|
328
|
+
const totalTokens = typeof u['totalTokens'] === 'number' ? u['totalTokens'] : input + output;
|
|
329
|
+
// At least one non-zero field to consider this a valid usage object
|
|
330
|
+
if (input === 0 && output === 0 && cacheRead === 0 && totalTokens === 0)
|
|
331
|
+
return null;
|
|
332
|
+
let cost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 };
|
|
333
|
+
const costObj = u['cost'];
|
|
334
|
+
if (costObj && typeof costObj === 'object') {
|
|
335
|
+
const c = costObj;
|
|
336
|
+
cost = {
|
|
337
|
+
input: typeof c['input'] === 'number' ? c['input'] : 0,
|
|
338
|
+
output: typeof c['output'] === 'number' ? c['output'] : 0,
|
|
339
|
+
cacheRead: typeof c['cacheRead'] === 'number' ? c['cacheRead'] : 0,
|
|
340
|
+
cacheWrite: typeof c['cacheWrite'] === 'number' ? c['cacheWrite'] : 0,
|
|
341
|
+
total: typeof c['total'] === 'number' ? c['total'] : 0,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
return { input, output, cacheRead, cacheWrite, totalTokens, cost };
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Emit a normalized event to all matching listeners.
|
|
348
|
+
* Each listener is wrapped in try/catch so a throwing listener
|
|
349
|
+
* does not prevent subsequent listeners from receiving the event.
|
|
350
|
+
*/
|
|
351
|
+
emit(event) {
|
|
352
|
+
// Notify type-specific listeners
|
|
353
|
+
const typeListeners = this.listeners.get(event.type);
|
|
354
|
+
if (typeListeners) {
|
|
355
|
+
for (const listener of typeListeners) {
|
|
356
|
+
try {
|
|
357
|
+
listener(event);
|
|
358
|
+
}
|
|
359
|
+
catch (err) {
|
|
360
|
+
this.logger.error('[EventBridge] listener threw', {
|
|
361
|
+
eventType: event.type,
|
|
362
|
+
error: err instanceof Error ? err.message : String(err),
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// Notify catch-all listeners
|
|
368
|
+
for (const listener of this.allListeners) {
|
|
369
|
+
try {
|
|
370
|
+
listener(event);
|
|
371
|
+
}
|
|
372
|
+
catch (err) {
|
|
373
|
+
this.logger.error('[EventBridge] catch-all listener threw', {
|
|
374
|
+
eventType: event.type,
|
|
375
|
+
error: err instanceof Error ? err.message : String(err),
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=event-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bridge.js","sourceRoot":"","sources":["../src/event-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @animus-labs/cortex
|
|
3
|
+
*
|
|
4
|
+
* Production-grade agent wrapper for pi-agent-core.
|
|
5
|
+
* Provides context management, MCP tool support, tool permissions,
|
|
6
|
+
* budget guards, compaction, skill system, and event logging.
|
|
7
|
+
*
|
|
8
|
+
* Phase 1A exports: types and pure utility modules.
|
|
9
|
+
* Phase 1B exports: CortexAgent, ContextManager, EventBridge, BudgetGuard.
|
|
10
|
+
* Phase 1C exports: Built-in tools (Read, Write, Edit, Glob, Grep, Bash, TaskOutput, WebFetch).
|
|
11
|
+
* Phase 1D exports: ProviderManager, model wrapper, provider registry.
|
|
12
|
+
*/
|
|
13
|
+
export type { CortexLogger, CortexUsage, SessionUsage, CortexLifecycleState, CortexToolPermissionDecision, CortexToolPermissionResult, CortexAgentConfig, CortexDiagnosticsConfig, ContextManagerConfig, ErrorCategory, ErrorSeverity, ClassifiedError, AgentTextOutput, ToolContentDetails, BudgetGuardConfig, ToolCategory, MicrocompactionConfig, CompactionConfig, FailsafeConfig, AdaptiveThresholdConfig, CortexCompactionConfig, CompactionTarget, CompactionResult, CompactionDegradedInfo, CompactionExhaustedInfo, PersistResultFn, CortexEvents, UtilityModelDefaults, McpTransportConfig, McpStdioConfig, McpHttpConfig, McpConnectionState, SkillConfig, SkillEntry, LoadedSkill, CortexScriptContext, SubAgentSpawnConfig, SubAgentResult, TrackedSubAgent, ThinkingLevel, ModelThinkingCapabilities, ToolExecuteContext, ToolCallStartPayload, ToolCallUpdatePayload, ToolCallEndPayload, PromptWatchdogDiagnosticsConfig, } from './types.js';
|
|
14
|
+
export { NOOP_LOGGER } from './noop-logger.js';
|
|
15
|
+
export { zodToTypebox } from './schema-converter.js';
|
|
16
|
+
export { estimateTokens } from './token-estimator.js';
|
|
17
|
+
export { stripWorkingTags, extractWorkingContent, parseWorkingTags, } from './working-tags.js';
|
|
18
|
+
export { classifyError } from './error-classifier.js';
|
|
19
|
+
export type { ClassifyErrorOptions } from './error-classifier.js';
|
|
20
|
+
export { ContextManager } from './context-manager.js';
|
|
21
|
+
export type { AgentMessage, AgentStateAccessor, AgentContext, } from './context-manager.js';
|
|
22
|
+
export { EventBridge } from './event-bridge.js';
|
|
23
|
+
export type { CortexEventType, CortexEvent, CortexEventListener, PiEventType, PiEvent, PiEventSource, } from './event-bridge.js';
|
|
24
|
+
export { BudgetGuard } from './budget-guard.js';
|
|
25
|
+
export { CortexAgent, MINIMUM_CONTEXT_WINDOW, TOOL_RESULT_WORKING_TAGS_REMINDER } from './cortex-agent.js';
|
|
26
|
+
export type { PiAgent, PiModel } from './cortex-agent.js';
|
|
27
|
+
export { fromPiAgentTool, assertValidCortexTool } from './tool-contract.js';
|
|
28
|
+
export type { CortexTool, PiAgentTool } from './tool-contract.js';
|
|
29
|
+
export { McpClientManager } from './mcp-client.js';
|
|
30
|
+
export type { AgentTool } from './mcp-client.js';
|
|
31
|
+
export { ReadRegistry, CwdTracker, CortexToolRuntime, BackgroundTaskStore, WebFetchRuntimeState, globalBackgroundTaskStore, attachRuntimeAwareTool, getRuntimeAwareToolMetadata, cloneRuntimeAwareTool, createReadTool, createWriteTool, createEditTool, createGlobTool, createGrepTool, createBashTool, createTaskOutputTool, createWebFetchTool, WebFetchCache, getBackgroundTask, getAllBackgroundTasks, buildSafeEnv, isCriticalPath, classifyCommand, checkObfuscation, stripInvisibleChars, checkScriptPreflight, checkAutoModeClassifier, runSafetyChecks, validateWritePaths, extractWritePaths, TOOL_NAMES, } from './tools/index.js';
|
|
32
|
+
export type { ReadDetails, ReadParamsType, ReadToolConfig, WriteDetails, WriteParamsType, WriteToolConfig, DiffHunk, EditDetails, EditParamsType, EditToolConfig, GlobDetails, GlobParamsType, GlobToolConfig, GrepDetails, GrepParamsType, GrepToolConfig, BashDetails, BashStreamUpdate, BashParamsType, BashToolConfig, BackgroundTask, TaskOutputDetails, TaskOutputParamsType, TaskOutputToolConfig, WebFetchDetails, WebFetchParamsType, WebFetchToolConfig, CacheEntry, CommandClassification, SafetyCheckResult, BuiltInToolName, SubAgentToolConfig, SubAgentDetails, SubAgentParamsType, } from './tools/index.js';
|
|
33
|
+
export { SkillRegistry, parseFrontmatter } from './skill-registry.js';
|
|
34
|
+
export { preprocessSkillBody, substituteVariables, executeShellCommand, executeScript } from './skill-preprocessor.js';
|
|
35
|
+
export { createLoadSkillTool, buildLoadSkillDescription, LOAD_SKILL_TOOL_NAME } from './skill-tool.js';
|
|
36
|
+
export type { LoadSkillToolConfig, LoadSkillParamsType } from './skill-tool.js';
|
|
37
|
+
export { LoadSkillParams } from './skill-tool.js';
|
|
38
|
+
export { SubAgentManager } from './sub-agent-manager.js';
|
|
39
|
+
export type { SubAgentManagerConfig, SubAgentLifecycleHooks } from './sub-agent-manager.js';
|
|
40
|
+
export { DeferredToolRegistry } from './tools/tool-search/registry.js';
|
|
41
|
+
export type { ToolSearchResult } from './tools/tool-search/registry.js';
|
|
42
|
+
export { createToolSearchTool, TOOL_SEARCH_TOOL_NAME, ToolSearchParams, } from './tools/tool-search/index.js';
|
|
43
|
+
export type { ToolSearchToolConfig, ToolSearchDetails, ToolSearchParamsType, } from './tools/tool-search/index.js';
|
|
44
|
+
export type { DeferredToolsConfig } from './types.js';
|
|
45
|
+
export { CompactionManager, buildCompactionConfig, DEFAULT_COMPACTION_CONFIG, ADAPTIVE_DEFAULTS, computeAdaptiveThreshold, MicrocompactionEngine, capToolResult, runCompaction, shouldCompact, partitionHistory, buildSummaryMessage, emergencyTruncate, shouldTruncate, isContextOverflow, } from './compaction/index.js';
|
|
46
|
+
export { applyResultPersistence, processToolResult, resolveThreshold, MAX_RESULT_TOKENS, BOOKEND_CHARS, SKIP_RESULT_PERSISTENCE, DEFAULT_TOOL_THRESHOLDS, } from './tool-result-persistence.js';
|
|
47
|
+
export type { ApplyPersistenceOptions, ProcessResultOptions, } from './tool-result-persistence.js';
|
|
48
|
+
export type { TrimAction, TrimState, CompleteFn, FailsafeTruncationResult, ObservationalMemoryConfig, ObservationalMemoryState, ObservationEvent, ReflectionEvent, RecallConfig, RecallResult, } from './compaction/index.js';
|
|
49
|
+
export { wrapModel, unwrapModel, isCortexModel } from './model-wrapper.js';
|
|
50
|
+
export type { CortexModel } from './model-wrapper.js';
|
|
51
|
+
export { PROVIDER_REGISTRY, OAUTH_PROVIDER_IDS, UTILITY_MODEL_DEFAULTS, PRIMARY_MODEL_DEFAULTS, PROVIDER_CACHE_CONFIG, resolveCacheRetention, } from './provider-registry.js';
|
|
52
|
+
export type { AuthMethod, ProviderInfo, ModelInfo, ProviderCacheConfig, CacheRetention, } from './provider-registry.js';
|
|
53
|
+
export { ProviderManager } from './provider-manager.js';
|
|
54
|
+
export type { IProviderManager, OAuthCallbacks, OAuthMeta, OAuthResult, OAuthRefreshResult, CustomModelConfig, ApiKeyValidationStatus, ApiKeyValidationResult, } from './provider-manager.js';
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @animus-labs/cortex
|
|
3
|
+
*
|
|
4
|
+
* Production-grade agent wrapper for pi-agent-core.
|
|
5
|
+
* Provides context management, MCP tool support, tool permissions,
|
|
6
|
+
* budget guards, compaction, skill system, and event logging.
|
|
7
|
+
*
|
|
8
|
+
* Phase 1A exports: types and pure utility modules.
|
|
9
|
+
* Phase 1B exports: CortexAgent, ContextManager, EventBridge, BudgetGuard.
|
|
10
|
+
* Phase 1C exports: Built-in tools (Read, Write, Edit, Glob, Grep, Bash, TaskOutput, WebFetch).
|
|
11
|
+
* Phase 1D exports: ProviderManager, model wrapper, provider registry.
|
|
12
|
+
*/
|
|
13
|
+
// Logger
|
|
14
|
+
export { NOOP_LOGGER } from './noop-logger.js';
|
|
15
|
+
// Schema Converter
|
|
16
|
+
export { zodToTypebox } from './schema-converter.js';
|
|
17
|
+
// Token Estimator
|
|
18
|
+
export { estimateTokens } from './token-estimator.js';
|
|
19
|
+
// Working Tags Parser
|
|
20
|
+
export { stripWorkingTags, extractWorkingContent, parseWorkingTags, } from './working-tags.js';
|
|
21
|
+
// Error Classifier
|
|
22
|
+
export { classifyError } from './error-classifier.js';
|
|
23
|
+
// Context Manager (Phase 1B)
|
|
24
|
+
export { ContextManager } from './context-manager.js';
|
|
25
|
+
// Event Bridge (Phase 1B)
|
|
26
|
+
export { EventBridge } from './event-bridge.js';
|
|
27
|
+
// Budget Guard (Phase 1B)
|
|
28
|
+
export { BudgetGuard } from './budget-guard.js';
|
|
29
|
+
// CortexAgent (Phase 1B)
|
|
30
|
+
export { CortexAgent, MINIMUM_CONTEXT_WINDOW, TOOL_RESULT_WORKING_TAGS_REMINDER } from './cortex-agent.js';
|
|
31
|
+
// Tool Contracts
|
|
32
|
+
export { fromPiAgentTool, assertValidCortexTool } from './tool-contract.js';
|
|
33
|
+
// MCP Client Manager (Phase 3)
|
|
34
|
+
export { McpClientManager } from './mcp-client.js';
|
|
35
|
+
// Built-in Tools (Phase 1C)
|
|
36
|
+
export { ReadRegistry, CwdTracker, CortexToolRuntime, BackgroundTaskStore, WebFetchRuntimeState, globalBackgroundTaskStore, attachRuntimeAwareTool, getRuntimeAwareToolMetadata, cloneRuntimeAwareTool, createReadTool, createWriteTool, createEditTool, createGlobTool, createGrepTool, createBashTool, createTaskOutputTool, createWebFetchTool, WebFetchCache, getBackgroundTask, getAllBackgroundTasks, buildSafeEnv, isCriticalPath, classifyCommand, checkObfuscation, stripInvisibleChars, checkScriptPreflight, checkAutoModeClassifier, runSafetyChecks, validateWritePaths, extractWritePaths, TOOL_NAMES, } from './tools/index.js';
|
|
37
|
+
// Skill System (Phase 4)
|
|
38
|
+
export { SkillRegistry, parseFrontmatter } from './skill-registry.js';
|
|
39
|
+
export { preprocessSkillBody, substituteVariables, executeShellCommand, executeScript } from './skill-preprocessor.js';
|
|
40
|
+
export { createLoadSkillTool, buildLoadSkillDescription, LOAD_SKILL_TOOL_NAME } from './skill-tool.js';
|
|
41
|
+
export { LoadSkillParams } from './skill-tool.js';
|
|
42
|
+
// Sub-Agent Manager (Phase 4)
|
|
43
|
+
export { SubAgentManager } from './sub-agent-manager.js';
|
|
44
|
+
// Deferred Tool Loading / ToolSearch
|
|
45
|
+
export { DeferredToolRegistry } from './tools/tool-search/registry.js';
|
|
46
|
+
export { createToolSearchTool, TOOL_SEARCH_TOOL_NAME, ToolSearchParams, } from './tools/tool-search/index.js';
|
|
47
|
+
// Compaction (Phase 5)
|
|
48
|
+
export { CompactionManager, buildCompactionConfig, DEFAULT_COMPACTION_CONFIG, ADAPTIVE_DEFAULTS, computeAdaptiveThreshold, MicrocompactionEngine, capToolResult, runCompaction, shouldCompact, partitionHistory, buildSummaryMessage, emergencyTruncate, shouldTruncate, isContextOverflow, } from './compaction/index.js';
|
|
49
|
+
// Tool Result Persistence (proactive interceptor at the tool execution boundary)
|
|
50
|
+
export { applyResultPersistence, processToolResult, resolveThreshold, MAX_RESULT_TOKENS, BOOKEND_CHARS, SKIP_RESULT_PERSISTENCE, DEFAULT_TOOL_THRESHOLDS, } from './tool-result-persistence.js';
|
|
51
|
+
// Model Wrapper (Phase 1D)
|
|
52
|
+
export { wrapModel, unwrapModel, isCortexModel } from './model-wrapper.js';
|
|
53
|
+
// Provider Registry (Phase 1D)
|
|
54
|
+
export { PROVIDER_REGISTRY, OAUTH_PROVIDER_IDS, UTILITY_MODEL_DEFAULTS, PRIMARY_MODEL_DEFAULTS, PROVIDER_CACHE_CONFIG, resolveCacheRetention, } from './provider-registry.js';
|
|
55
|
+
// Provider Manager (Phase 1D)
|
|
56
|
+
export { ProviderManager } from './provider-manager.js';
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* McpClientManager: connects to MCP servers and wraps discovered tools
|
|
3
|
+
* as AgentTool objects for registration with pi-agent-core.
|
|
4
|
+
*
|
|
5
|
+
* Handles two transport types:
|
|
6
|
+
* - Stdio: spawns a subprocess, communicates via stdin/stdout
|
|
7
|
+
* - HTTP: connects to an already-running Streamable HTTP server
|
|
8
|
+
*
|
|
9
|
+
* Tool discovery via tools/list, tool execution via tools/call.
|
|
10
|
+
* Connections are persistent (kept alive between ticks) with health monitoring.
|
|
11
|
+
* Reconnect on subprocess crash (3 attempts before deregistering).
|
|
12
|
+
*
|
|
13
|
+
* References:
|
|
14
|
+
* - docs/cortex/mcp-integration.md
|
|
15
|
+
* - docs/cortex/plans/phase-3-plugin-tools.md
|
|
16
|
+
*/
|
|
17
|
+
import type { McpTransportConfig, McpConnectionState, CortexLogger } from './types.js';
|
|
18
|
+
import type { CortexTool } from './tool-contract.js';
|
|
19
|
+
/**
|
|
20
|
+
* Backward-compatible export name for Cortex's canonical tool contract.
|
|
21
|
+
*/
|
|
22
|
+
export type AgentTool = CortexTool;
|
|
23
|
+
export declare class McpClientManager {
|
|
24
|
+
private connections;
|
|
25
|
+
/**
|
|
26
|
+
* Callback invoked whenever the aggregate tool set changes.
|
|
27
|
+
* CortexAgent uses this to resync live tools after connect/disconnect/reconnect.
|
|
28
|
+
*/
|
|
29
|
+
onToolsChanged?: () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Callback invoked when a subprocess is spawned (for PID tracking).
|
|
32
|
+
* The consumer (CortexAgent) uses this to track PIDs for exit cleanup.
|
|
33
|
+
*/
|
|
34
|
+
onSubprocessSpawned?: (pid: number) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Callback invoked when a subprocess exits (for PID tracking).
|
|
37
|
+
*/
|
|
38
|
+
onSubprocessExited?: (pid: number) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Consumer-set environment variable overrides that bypass the security blocklist.
|
|
41
|
+
* Merged ON TOP of the sanitized environment for all stdio subprocesses.
|
|
42
|
+
* Used for macOS dock icon suppression vars (DYLD_INSERT_LIBRARIES, etc.).
|
|
43
|
+
*/
|
|
44
|
+
envOverrides?: Record<string, string>;
|
|
45
|
+
/** Logger for MCP diagnostics. Set by CortexAgent after construction. */
|
|
46
|
+
logger: CortexLogger;
|
|
47
|
+
/**
|
|
48
|
+
* Connect to an MCP server and discover its tools.
|
|
49
|
+
*
|
|
50
|
+
* Spawns a subprocess (stdio) or connects to a URL (http), performs
|
|
51
|
+
* the MCP handshake, calls tools/list, and wraps each discovered
|
|
52
|
+
* tool as an AgentTool with namespaced name.
|
|
53
|
+
*
|
|
54
|
+
* @param serverName - Unique name for this server (used for tool namespacing)
|
|
55
|
+
* @param config - Transport configuration
|
|
56
|
+
* @throws Error if connection or tool discovery fails
|
|
57
|
+
*/
|
|
58
|
+
connect(serverName: string, config: McpTransportConfig): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Disconnect from a specific MCP server.
|
|
61
|
+
* Closes the transport and removes all tools from that server.
|
|
62
|
+
*
|
|
63
|
+
* @param serverName - The server name to disconnect
|
|
64
|
+
*/
|
|
65
|
+
disconnect(serverName: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Close all MCP connections.
|
|
68
|
+
* Kills all stdio subprocesses and closes HTTP connections.
|
|
69
|
+
*/
|
|
70
|
+
closeAll(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Get all AgentTool objects from all connected MCP servers.
|
|
73
|
+
* Returns tools namespaced as serverName__toolName.
|
|
74
|
+
*/
|
|
75
|
+
getTools(): AgentTool[];
|
|
76
|
+
/**
|
|
77
|
+
* Get tool names from a specific server.
|
|
78
|
+
*/
|
|
79
|
+
getServerToolNames(serverName: string): string[];
|
|
80
|
+
/**
|
|
81
|
+
* Get the connection state for all servers.
|
|
82
|
+
*/
|
|
83
|
+
getConnectionStates(): McpConnectionState[];
|
|
84
|
+
/**
|
|
85
|
+
* Check if a specific server is connected.
|
|
86
|
+
*/
|
|
87
|
+
isConnected(serverName: string): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Get the number of active connections.
|
|
90
|
+
*/
|
|
91
|
+
get connectionCount(): number;
|
|
92
|
+
private createTransport;
|
|
93
|
+
private createStdioTransport;
|
|
94
|
+
private createHttpTransport;
|
|
95
|
+
/**
|
|
96
|
+
* Discover tools from a connected MCP server and wrap them as AgentTools.
|
|
97
|
+
*/
|
|
98
|
+
private discoverTools;
|
|
99
|
+
/**
|
|
100
|
+
* Wrap a single MCP tool definition as an AgentTool.
|
|
101
|
+
*
|
|
102
|
+
* Key details:
|
|
103
|
+
* - Name is prefixed with serverName__ for namespacing
|
|
104
|
+
* - JSON Schema from MCP is wrapped via Type.Unsafe() for TypeBox
|
|
105
|
+
* - execute() calls tools/call on the MCP connection using the original name
|
|
106
|
+
* - Errors are caught and returned as error results (not thrown)
|
|
107
|
+
*/
|
|
108
|
+
private wrapMcpTool;
|
|
109
|
+
/**
|
|
110
|
+
* Handle unexpected disconnection from an MCP server.
|
|
111
|
+
* Attempts reconnection up to MAX_RECONNECT_ATTEMPTS times.
|
|
112
|
+
*/
|
|
113
|
+
private handleDisconnect;
|
|
114
|
+
/**
|
|
115
|
+
* Attempt to reconnect to an MCP server.
|
|
116
|
+
*/
|
|
117
|
+
private attemptReconnect;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAiC,YAAY,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQrD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC;AA4BnC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAoC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,yEAAyE;IACzE,MAAM,EAAE,YAAY,CAAe;IAEnC;;;;;;;;;;OAUG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE5E;;;;;OAKG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnD;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B;;;OAGG;IACH,QAAQ,IAAI,SAAS,EAAE;IAUvB;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAMhD;;OAEG;IACH,mBAAmB,IAAI,kBAAkB,EAAE;IAc3C;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKxC;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAM5B;IAMD,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;YACW,aAAa;IAmB3B;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IA+GnB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;YACW,gBAAgB;CAqE/B"}
|