@bowenqt/qiniu-ai-sdk 0.10.0 → 0.14.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/README.md +225 -0
- package/dist/ai/agent-graph.d.ts +101 -0
- package/dist/ai/agent-graph.d.ts.map +1 -0
- package/dist/ai/agent-graph.js +322 -0
- package/dist/ai/agent-graph.js.map +1 -0
- package/dist/ai/agent-graph.mjs +318 -0
- package/dist/ai/generate-text.d.ts +58 -0
- package/dist/ai/generate-text.d.ts.map +1 -1
- package/dist/ai/generate-text.js +157 -0
- package/dist/ai/generate-text.js.map +1 -1
- package/dist/ai/generate-text.mjs +156 -0
- package/dist/ai/graph/checkpointer.d.ts +112 -0
- package/dist/ai/graph/checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/checkpointer.js +131 -0
- package/dist/ai/graph/checkpointer.js.map +1 -0
- package/dist/ai/graph/checkpointer.mjs +126 -0
- package/dist/ai/graph/index.d.ts +13 -0
- package/dist/ai/graph/index.d.ts.map +1 -0
- package/dist/ai/graph/index.js +22 -0
- package/dist/ai/graph/index.js.map +1 -0
- package/dist/ai/graph/index.mjs +12 -0
- package/dist/ai/graph/postgres-checkpointer.d.ts +54 -0
- package/dist/ai/graph/postgres-checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/postgres-checkpointer.js +134 -0
- package/dist/ai/graph/postgres-checkpointer.js.map +1 -0
- package/dist/ai/graph/postgres-checkpointer.mjs +130 -0
- package/dist/ai/graph/redis-checkpointer.d.ts +51 -0
- package/dist/ai/graph/redis-checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/redis-checkpointer.js +124 -0
- package/dist/ai/graph/redis-checkpointer.js.map +1 -0
- package/dist/ai/graph/redis-checkpointer.mjs +120 -0
- package/dist/ai/graph/state-graph.d.ts +41 -0
- package/dist/ai/graph/state-graph.d.ts.map +1 -0
- package/dist/ai/graph/state-graph.js +149 -0
- package/dist/ai/graph/state-graph.js.map +1 -0
- package/dist/ai/graph/state-graph.mjs +144 -0
- package/dist/ai/graph/types.d.ts +41 -0
- package/dist/ai/graph/types.d.ts.map +1 -0
- package/dist/ai/graph/types.js +10 -0
- package/dist/ai/graph/types.js.map +1 -0
- package/dist/ai/graph/types.mjs +7 -0
- package/dist/ai/internal-types.d.ts +109 -0
- package/dist/ai/internal-types.d.ts.map +1 -0
- package/dist/ai/internal-types.js +28 -0
- package/dist/ai/internal-types.js.map +1 -0
- package/dist/ai/internal-types.mjs +23 -0
- package/dist/ai/nodes/execute-node.d.ts +27 -0
- package/dist/ai/nodes/execute-node.d.ts.map +1 -0
- package/dist/ai/nodes/execute-node.js +118 -0
- package/dist/ai/nodes/execute-node.js.map +1 -0
- package/dist/ai/nodes/execute-node.mjs +114 -0
- package/dist/ai/nodes/index.d.ts +8 -0
- package/dist/ai/nodes/index.d.ts.map +1 -0
- package/dist/ai/nodes/index.js +16 -0
- package/dist/ai/nodes/index.js.map +1 -0
- package/dist/ai/nodes/index.mjs +7 -0
- package/dist/ai/nodes/memory-node.d.ts +34 -0
- package/dist/ai/nodes/memory-node.d.ts.map +1 -0
- package/dist/ai/nodes/memory-node.js +164 -0
- package/dist/ai/nodes/memory-node.js.map +1 -0
- package/dist/ai/nodes/memory-node.mjs +158 -0
- package/dist/ai/nodes/predict-node.d.ts +42 -0
- package/dist/ai/nodes/predict-node.d.ts.map +1 -0
- package/dist/ai/nodes/predict-node.js +89 -0
- package/dist/ai/nodes/predict-node.js.map +1 -0
- package/dist/ai/nodes/predict-node.mjs +86 -0
- package/dist/ai/nodes/types.d.ts +44 -0
- package/dist/ai/nodes/types.d.ts.map +1 -0
- package/dist/ai/nodes/types.js +6 -0
- package/dist/ai/nodes/types.js.map +1 -0
- package/dist/ai/nodes/types.mjs +5 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +80 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -0
- package/dist/lib/otel-tracer.d.ts +47 -0
- package/dist/lib/otel-tracer.d.ts.map +1 -0
- package/dist/lib/otel-tracer.js +79 -0
- package/dist/lib/otel-tracer.js.map +1 -0
- package/dist/lib/otel-tracer.mjs +75 -0
- package/dist/lib/token-estimator.d.ts +62 -0
- package/dist/lib/token-estimator.d.ts.map +1 -0
- package/dist/lib/token-estimator.js +106 -0
- package/dist/lib/token-estimator.js.map +1 -0
- package/dist/lib/token-estimator.mjs +100 -0
- package/dist/lib/tool-registry.d.ts +103 -0
- package/dist/lib/tool-registry.d.ts.map +1 -0
- package/dist/lib/tool-registry.js +159 -0
- package/dist/lib/tool-registry.js.map +1 -0
- package/dist/lib/tool-registry.mjs +154 -0
- package/dist/lib/tracer.d.ts +85 -0
- package/dist/lib/tracer.d.ts.map +1 -0
- package/dist/lib/tracer.js +170 -0
- package/dist/lib/tracer.js.map +1 -0
- package/dist/lib/tracer.mjs +161 -0
- package/dist/lib/types.d.ts +11 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/modules/mcp/adapter.d.ts +23 -0
- package/dist/modules/mcp/adapter.d.ts.map +1 -0
- package/dist/modules/mcp/adapter.js +63 -0
- package/dist/modules/mcp/adapter.js.map +1 -0
- package/dist/modules/mcp/adapter.mjs +58 -0
- package/dist/modules/mcp/client.d.ts +75 -0
- package/dist/modules/mcp/client.d.ts.map +1 -0
- package/dist/modules/mcp/client.js +300 -0
- package/dist/modules/mcp/client.js.map +1 -0
- package/dist/modules/mcp/client.mjs +295 -0
- package/dist/modules/mcp/http-transport.d.ts +51 -0
- package/dist/modules/mcp/http-transport.d.ts.map +1 -0
- package/dist/modules/mcp/http-transport.js +146 -0
- package/dist/modules/mcp/http-transport.js.map +1 -0
- package/dist/modules/mcp/http-transport.mjs +141 -0
- package/dist/modules/mcp/index.d.ts +11 -0
- package/dist/modules/mcp/index.d.ts.map +1 -0
- package/dist/modules/mcp/index.js +34 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/index.mjs +14 -0
- package/dist/modules/mcp/oauth.d.ts +101 -0
- package/dist/modules/mcp/oauth.d.ts.map +1 -0
- package/dist/modules/mcp/oauth.js +347 -0
- package/dist/modules/mcp/oauth.js.map +1 -0
- package/dist/modules/mcp/oauth.mjs +304 -0
- package/dist/modules/mcp/token-store.d.ts +69 -0
- package/dist/modules/mcp/token-store.d.ts.map +1 -0
- package/dist/modules/mcp/token-store.js +174 -0
- package/dist/modules/mcp/token-store.js.map +1 -0
- package/dist/modules/mcp/token-store.mjs +135 -0
- package/dist/modules/mcp/types.d.ts +91 -0
- package/dist/modules/mcp/types.d.ts.map +1 -0
- package/dist/modules/mcp/types.js +14 -0
- package/dist/modules/mcp/types.js.map +1 -0
- package/dist/modules/mcp/types.mjs +11 -0
- package/dist/modules/skills/index.d.ts +7 -0
- package/dist/modules/skills/index.d.ts.map +1 -0
- package/dist/modules/skills/index.js +14 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/skills/index.mjs +6 -0
- package/dist/modules/skills/loader.d.ts +51 -0
- package/dist/modules/skills/loader.d.ts.map +1 -0
- package/dist/modules/skills/loader.js +237 -0
- package/dist/modules/skills/loader.js.map +1 -0
- package/dist/modules/skills/loader.mjs +198 -0
- package/dist/modules/skills/types.d.ts +60 -0
- package/dist/modules/skills/types.d.ts.map +1 -0
- package/dist/modules/skills/types.js +20 -0
- package/dist/modules/skills/types.js.map +1 -0
- package/dist/modules/skills/types.mjs +17 -0
- package/package.json +4 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry for managing tool registration with conflict resolution.
|
|
3
|
+
* Implements priority-based registration: user > skill > mcp > builtin
|
|
4
|
+
*/
|
|
5
|
+
import { noopLogger } from './logger.mjs';
|
|
6
|
+
/** Priority order (lower index = higher priority) */
|
|
7
|
+
const SOURCE_PRIORITY = ['user', 'skill', 'mcp', 'builtin'];
|
|
8
|
+
/** Tool conflict error */
|
|
9
|
+
export class ToolConflictError extends Error {
|
|
10
|
+
constructor(toolName, existingSource, newSource) {
|
|
11
|
+
super(`Tool "${toolName}" conflict: ${existingSource} vs ${newSource}. ` +
|
|
12
|
+
`Exclude one source in your config.`);
|
|
13
|
+
this.toolName = toolName;
|
|
14
|
+
this.existingSource = existingSource;
|
|
15
|
+
this.newSource = newSource;
|
|
16
|
+
this.name = 'ToolConflictError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Tool Registry manages tool registration with deterministic conflict resolution.
|
|
21
|
+
*/
|
|
22
|
+
export class ToolRegistry {
|
|
23
|
+
constructor(config = {}) {
|
|
24
|
+
this.tools = new Map();
|
|
25
|
+
this.config = {
|
|
26
|
+
excludeSources: config.excludeSources ?? [],
|
|
27
|
+
conflictStrategy: config.conflictStrategy ?? 'first-wins',
|
|
28
|
+
logger: config.logger ?? noopLogger,
|
|
29
|
+
};
|
|
30
|
+
this.logger = this.config.logger;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Register a tool with conflict detection.
|
|
34
|
+
* Tools are registered in priority order: user > skill > mcp > builtin
|
|
35
|
+
*/
|
|
36
|
+
register(tool) {
|
|
37
|
+
const fullSource = `${tool.source.type}:${tool.source.namespace}`;
|
|
38
|
+
// Check if source is excluded
|
|
39
|
+
if (this.isSourceExcluded(fullSource, tool.source)) {
|
|
40
|
+
this.logger.debug('Tool source excluded', {
|
|
41
|
+
tool: tool.name,
|
|
42
|
+
source: fullSource,
|
|
43
|
+
});
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Check for existing tool with same name
|
|
47
|
+
const existing = this.tools.get(tool.name);
|
|
48
|
+
if (existing) {
|
|
49
|
+
const existingSource = `${existing.source.type}:${existing.source.namespace}`;
|
|
50
|
+
// Same source = update
|
|
51
|
+
if (existingSource === fullSource) {
|
|
52
|
+
this.tools.set(tool.name, tool);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
// Different source = conflict
|
|
56
|
+
if (this.config.conflictStrategy === 'error') {
|
|
57
|
+
throw new ToolConflictError(tool.name, existingSource, fullSource);
|
|
58
|
+
}
|
|
59
|
+
// first-wins: compare priority
|
|
60
|
+
const existingPriority = SOURCE_PRIORITY.indexOf(existing.source.type);
|
|
61
|
+
const newPriority = SOURCE_PRIORITY.indexOf(tool.source.type);
|
|
62
|
+
if (newPriority < existingPriority) {
|
|
63
|
+
// New tool has higher priority, replace
|
|
64
|
+
this.logger.warn('Tool replaced due to higher priority', {
|
|
65
|
+
tool: tool.name,
|
|
66
|
+
replaced: existingSource,
|
|
67
|
+
by: fullSource,
|
|
68
|
+
});
|
|
69
|
+
this.tools.set(tool.name, tool);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Existing tool has higher or equal priority, keep
|
|
74
|
+
this.logger.warn('Tool registration skipped due to conflict', {
|
|
75
|
+
tool: tool.name,
|
|
76
|
+
kept: existingSource,
|
|
77
|
+
skipped: fullSource,
|
|
78
|
+
});
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// No conflict, register
|
|
83
|
+
this.tools.set(tool.name, tool);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Register multiple tools from a source.
|
|
88
|
+
* Tools are sorted by name for deterministic order.
|
|
89
|
+
*/
|
|
90
|
+
registerAll(tools) {
|
|
91
|
+
// Sort by name for deterministic registration order
|
|
92
|
+
const sorted = [...tools].sort((a, b) => a.name.localeCompare(b.name));
|
|
93
|
+
let registered = 0;
|
|
94
|
+
let skipped = 0;
|
|
95
|
+
for (const tool of sorted) {
|
|
96
|
+
if (this.register(tool)) {
|
|
97
|
+
registered++;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
skipped++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { registered, skipped };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get a tool by name.
|
|
107
|
+
*/
|
|
108
|
+
get(name) {
|
|
109
|
+
return this.tools.get(name);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get all registered tools.
|
|
113
|
+
*/
|
|
114
|
+
getAll() {
|
|
115
|
+
return Array.from(this.tools.values());
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get tools as OpenAI-compatible format.
|
|
119
|
+
*/
|
|
120
|
+
toOpenAITools() {
|
|
121
|
+
return this.getAll().map(tool => ({
|
|
122
|
+
type: 'function',
|
|
123
|
+
function: {
|
|
124
|
+
name: tool.name,
|
|
125
|
+
description: tool.description,
|
|
126
|
+
parameters: tool.parameters,
|
|
127
|
+
},
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear all registered tools.
|
|
132
|
+
*/
|
|
133
|
+
clear() {
|
|
134
|
+
this.tools.clear();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check if a source should be excluded.
|
|
138
|
+
*/
|
|
139
|
+
isSourceExcluded(fullSource, source) {
|
|
140
|
+
return this.config.excludeSources.some(pattern => {
|
|
141
|
+
// Match full source (e.g., 'mcp:github')
|
|
142
|
+
if (pattern === fullSource)
|
|
143
|
+
return true;
|
|
144
|
+
// Match type only (e.g., 'mcp')
|
|
145
|
+
if (pattern === source.type)
|
|
146
|
+
return true;
|
|
147
|
+
// Match namespace pattern (e.g., 'mcp:*')
|
|
148
|
+
if (pattern.endsWith(':*') && pattern.slice(0, -2) === source.type)
|
|
149
|
+
return true;
|
|
150
|
+
return false;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracer abstraction for observability.
|
|
3
|
+
* Provides pluggable tracing with PII redaction and configurable recording levels.
|
|
4
|
+
*
|
|
5
|
+
* Default: recordPrompts=true (development friendly)
|
|
6
|
+
* Production: Use PRODUCTION_TRACER_CONFIG for safety
|
|
7
|
+
*/
|
|
8
|
+
/** Span interface */
|
|
9
|
+
export interface Span {
|
|
10
|
+
/** Set a string attribute */
|
|
11
|
+
setAttribute(key: string, value: string | number | boolean): void;
|
|
12
|
+
/** Set multiple attributes */
|
|
13
|
+
setAttributes(attributes: Record<string, string | number | boolean>): void;
|
|
14
|
+
/** Record an error */
|
|
15
|
+
recordException(error: Error): void;
|
|
16
|
+
/** Add an event */
|
|
17
|
+
addEvent(name: string, attributes?: Record<string, string | number | boolean>): void;
|
|
18
|
+
/** End the span */
|
|
19
|
+
end(): void;
|
|
20
|
+
}
|
|
21
|
+
/** Tracer configuration */
|
|
22
|
+
export interface TracerConfig {
|
|
23
|
+
/** Record prompt content (default: true) */
|
|
24
|
+
recordPrompts?: boolean;
|
|
25
|
+
/** Record response content (default: true) */
|
|
26
|
+
recordResponses?: boolean;
|
|
27
|
+
/** Record tool arguments (default: true) */
|
|
28
|
+
recordToolArgs?: boolean;
|
|
29
|
+
/** Maximum content length before truncation (default: 1000) */
|
|
30
|
+
maxContentLength?: number;
|
|
31
|
+
/** Sensitive keys to mask (default: ['password', 'apiKey', 'token', 'secret']) */
|
|
32
|
+
sensitiveKeys?: string[];
|
|
33
|
+
}
|
|
34
|
+
/** Tracer interface */
|
|
35
|
+
export interface Tracer {
|
|
36
|
+
/** Start a new span */
|
|
37
|
+
startSpan(name: string, attributes?: Record<string, string | number | boolean>): Span;
|
|
38
|
+
/** Execute a function within a span */
|
|
39
|
+
withSpan<T>(name: string, fn: (span: Span) => Promise<T> | T): Promise<T>;
|
|
40
|
+
/** Get the tracer config */
|
|
41
|
+
getConfig(): TracerConfig;
|
|
42
|
+
}
|
|
43
|
+
/** Default configuration (development friendly) */
|
|
44
|
+
export declare const DEFAULT_TRACER_CONFIG: Required<TracerConfig>;
|
|
45
|
+
/** Production configuration (safety first) */
|
|
46
|
+
export declare const PRODUCTION_TRACER_CONFIG: TracerConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Redact sensitive information from content.
|
|
49
|
+
* Strategy: truncate first, then regex mask.
|
|
50
|
+
*/
|
|
51
|
+
export declare function redactContent(content: string, config?: TracerConfig): string;
|
|
52
|
+
/**
|
|
53
|
+
* Redact attributes based on config.
|
|
54
|
+
*/
|
|
55
|
+
export declare function redactAttributes(attributes: Record<string, unknown>, config?: TracerConfig): Record<string, string | number | boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* No-op tracer (default when no tracing configured).
|
|
58
|
+
*/
|
|
59
|
+
export declare class NoopTracer implements Tracer {
|
|
60
|
+
private readonly config;
|
|
61
|
+
constructor(config?: TracerConfig);
|
|
62
|
+
startSpan(_name: string, _attributes?: Record<string, string | number | boolean>): Span;
|
|
63
|
+
withSpan<T>(name: string, fn: (span: Span) => Promise<T> | T): Promise<T>;
|
|
64
|
+
getConfig(): TracerConfig;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Console tracer for development/debugging.
|
|
68
|
+
* Logs span events to console.
|
|
69
|
+
*/
|
|
70
|
+
export declare class ConsoleTracer implements Tracer {
|
|
71
|
+
private readonly config;
|
|
72
|
+
constructor(config?: TracerConfig);
|
|
73
|
+
startSpan(name: string, attributes?: Record<string, string | number | boolean>): Span;
|
|
74
|
+
withSpan<T>(name: string, fn: (span: Span) => Promise<T> | T): Promise<T>;
|
|
75
|
+
getConfig(): TracerConfig;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Set the global tracer.
|
|
79
|
+
*/
|
|
80
|
+
export declare function setGlobalTracer(tracer: Tracer): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get the global tracer.
|
|
83
|
+
*/
|
|
84
|
+
export declare function getGlobalTracer(): Tracer;
|
|
85
|
+
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/lib/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tracer abstraction for observability.
|
|
4
|
+
* Provides pluggable tracing with PII redaction and configurable recording levels.
|
|
5
|
+
*
|
|
6
|
+
* Default: recordPrompts=true (development friendly)
|
|
7
|
+
* Production: Use PRODUCTION_TRACER_CONFIG for safety
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ConsoleTracer = exports.NoopTracer = exports.PRODUCTION_TRACER_CONFIG = exports.DEFAULT_TRACER_CONFIG = void 0;
|
|
11
|
+
exports.redactContent = redactContent;
|
|
12
|
+
exports.redactAttributes = redactAttributes;
|
|
13
|
+
exports.setGlobalTracer = setGlobalTracer;
|
|
14
|
+
exports.getGlobalTracer = getGlobalTracer;
|
|
15
|
+
/** Default configuration (development friendly) */
|
|
16
|
+
exports.DEFAULT_TRACER_CONFIG = {
|
|
17
|
+
recordPrompts: true,
|
|
18
|
+
recordResponses: true,
|
|
19
|
+
recordToolArgs: true,
|
|
20
|
+
maxContentLength: 1000,
|
|
21
|
+
sensitiveKeys: ['password', 'apiKey', 'token', 'secret', 'authorization'],
|
|
22
|
+
};
|
|
23
|
+
/** Production configuration (safety first) */
|
|
24
|
+
exports.PRODUCTION_TRACER_CONFIG = {
|
|
25
|
+
recordPrompts: false,
|
|
26
|
+
recordResponses: false,
|
|
27
|
+
recordToolArgs: false,
|
|
28
|
+
maxContentLength: 200,
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Redact sensitive information from content.
|
|
32
|
+
* Strategy: truncate first, then regex mask.
|
|
33
|
+
*/
|
|
34
|
+
function redactContent(content, config = exports.DEFAULT_TRACER_CONFIG) {
|
|
35
|
+
const maxLen = config.maxContentLength ?? exports.DEFAULT_TRACER_CONFIG.maxContentLength;
|
|
36
|
+
const sensitiveKeys = config.sensitiveKeys ?? exports.DEFAULT_TRACER_CONFIG.sensitiveKeys;
|
|
37
|
+
// Step 1: Truncate
|
|
38
|
+
let result = content;
|
|
39
|
+
if (result.length > maxLen) {
|
|
40
|
+
result = result.substring(0, maxLen) + `... [truncated ${content.length - maxLen} chars]`;
|
|
41
|
+
}
|
|
42
|
+
// Step 2: Mask sensitive keys
|
|
43
|
+
for (const key of sensitiveKeys) {
|
|
44
|
+
const regex = new RegExp(`("${key}"\\s*:\\s*)"[^"]*"`, 'gi');
|
|
45
|
+
result = result.replace(regex, '$1"[REDACTED]"');
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Redact attributes based on config.
|
|
51
|
+
*/
|
|
52
|
+
function redactAttributes(attributes, config = exports.DEFAULT_TRACER_CONFIG) {
|
|
53
|
+
const sensitiveKeys = config.sensitiveKeys ?? exports.DEFAULT_TRACER_CONFIG.sensitiveKeys;
|
|
54
|
+
const result = {};
|
|
55
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
56
|
+
const lowerKey = key.toLowerCase();
|
|
57
|
+
const isSensitive = sensitiveKeys.some(sk => lowerKey.includes(sk.toLowerCase()));
|
|
58
|
+
if (isSensitive) {
|
|
59
|
+
result[key] = '[REDACTED]';
|
|
60
|
+
}
|
|
61
|
+
else if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
62
|
+
result[key] = value;
|
|
63
|
+
}
|
|
64
|
+
else if (typeof value === 'object') {
|
|
65
|
+
result[key] = JSON.stringify(value).substring(0, 100);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
result[key] = String(value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* No-op span (for NoopTracer).
|
|
75
|
+
*/
|
|
76
|
+
class NoopSpan {
|
|
77
|
+
setAttribute(_key, _value) { }
|
|
78
|
+
setAttributes(_attributes) { }
|
|
79
|
+
recordException(_error) { }
|
|
80
|
+
addEvent(_name, _attributes) { }
|
|
81
|
+
end() { }
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* No-op tracer (default when no tracing configured).
|
|
85
|
+
*/
|
|
86
|
+
class NoopTracer {
|
|
87
|
+
constructor(config = {}) {
|
|
88
|
+
this.config = { ...exports.DEFAULT_TRACER_CONFIG, ...config };
|
|
89
|
+
}
|
|
90
|
+
startSpan(_name, _attributes) {
|
|
91
|
+
return new NoopSpan();
|
|
92
|
+
}
|
|
93
|
+
async withSpan(name, fn) {
|
|
94
|
+
const span = this.startSpan(name);
|
|
95
|
+
try {
|
|
96
|
+
return await fn(span);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
span.end();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
getConfig() {
|
|
103
|
+
return this.config;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.NoopTracer = NoopTracer;
|
|
107
|
+
/**
|
|
108
|
+
* Console tracer for development/debugging.
|
|
109
|
+
* Logs span events to console.
|
|
110
|
+
*/
|
|
111
|
+
class ConsoleTracer {
|
|
112
|
+
constructor(config = {}) {
|
|
113
|
+
this.config = { ...exports.DEFAULT_TRACER_CONFIG, ...config };
|
|
114
|
+
}
|
|
115
|
+
startSpan(name, attributes) {
|
|
116
|
+
const startTime = Date.now();
|
|
117
|
+
console.log(`[TRACE] START: ${name}`, attributes ? redactAttributes(attributes, this.config) : '');
|
|
118
|
+
return {
|
|
119
|
+
setAttribute: (key, value) => {
|
|
120
|
+
console.log(`[TRACE] ATTR: ${name}.${key} =`, value);
|
|
121
|
+
},
|
|
122
|
+
setAttributes: (attrs) => {
|
|
123
|
+
console.log(`[TRACE] ATTRS: ${name}`, redactAttributes(attrs, this.config));
|
|
124
|
+
},
|
|
125
|
+
recordException: (error) => {
|
|
126
|
+
console.error(`[TRACE] ERROR: ${name}`, error.message);
|
|
127
|
+
},
|
|
128
|
+
addEvent: (eventName, eventAttrs) => {
|
|
129
|
+
console.log(`[TRACE] EVENT: ${name}.${eventName}`, eventAttrs || '');
|
|
130
|
+
},
|
|
131
|
+
end: () => {
|
|
132
|
+
const duration = Date.now() - startTime;
|
|
133
|
+
console.log(`[TRACE] END: ${name} (${duration}ms)`);
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async withSpan(name, fn) {
|
|
138
|
+
const span = this.startSpan(name);
|
|
139
|
+
try {
|
|
140
|
+
const result = await fn(span);
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
span.recordException(error);
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
span.end();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
getConfig() {
|
|
152
|
+
return this.config;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.ConsoleTracer = ConsoleTracer;
|
|
156
|
+
/** Global tracer instance */
|
|
157
|
+
let globalTracer = new NoopTracer();
|
|
158
|
+
/**
|
|
159
|
+
* Set the global tracer.
|
|
160
|
+
*/
|
|
161
|
+
function setGlobalTracer(tracer) {
|
|
162
|
+
globalTracer = tracer;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get the global tracer.
|
|
166
|
+
*/
|
|
167
|
+
function getGlobalTracer() {
|
|
168
|
+
return globalTracer;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/lib/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracer abstraction for observability.
|
|
3
|
+
* Provides pluggable tracing with PII redaction and configurable recording levels.
|
|
4
|
+
*
|
|
5
|
+
* Default: recordPrompts=true (development friendly)
|
|
6
|
+
* Production: Use PRODUCTION_TRACER_CONFIG for safety
|
|
7
|
+
*/
|
|
8
|
+
/** Default configuration (development friendly) */
|
|
9
|
+
export const DEFAULT_TRACER_CONFIG = {
|
|
10
|
+
recordPrompts: true,
|
|
11
|
+
recordResponses: true,
|
|
12
|
+
recordToolArgs: true,
|
|
13
|
+
maxContentLength: 1000,
|
|
14
|
+
sensitiveKeys: ['password', 'apiKey', 'token', 'secret', 'authorization'],
|
|
15
|
+
};
|
|
16
|
+
/** Production configuration (safety first) */
|
|
17
|
+
export const PRODUCTION_TRACER_CONFIG = {
|
|
18
|
+
recordPrompts: false,
|
|
19
|
+
recordResponses: false,
|
|
20
|
+
recordToolArgs: false,
|
|
21
|
+
maxContentLength: 200,
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Redact sensitive information from content.
|
|
25
|
+
* Strategy: truncate first, then regex mask.
|
|
26
|
+
*/
|
|
27
|
+
export function redactContent(content, config = DEFAULT_TRACER_CONFIG) {
|
|
28
|
+
const maxLen = config.maxContentLength ?? DEFAULT_TRACER_CONFIG.maxContentLength;
|
|
29
|
+
const sensitiveKeys = config.sensitiveKeys ?? DEFAULT_TRACER_CONFIG.sensitiveKeys;
|
|
30
|
+
// Step 1: Truncate
|
|
31
|
+
let result = content;
|
|
32
|
+
if (result.length > maxLen) {
|
|
33
|
+
result = result.substring(0, maxLen) + `... [truncated ${content.length - maxLen} chars]`;
|
|
34
|
+
}
|
|
35
|
+
// Step 2: Mask sensitive keys
|
|
36
|
+
for (const key of sensitiveKeys) {
|
|
37
|
+
const regex = new RegExp(`("${key}"\\s*:\\s*)"[^"]*"`, 'gi');
|
|
38
|
+
result = result.replace(regex, '$1"[REDACTED]"');
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Redact attributes based on config.
|
|
44
|
+
*/
|
|
45
|
+
export function redactAttributes(attributes, config = DEFAULT_TRACER_CONFIG) {
|
|
46
|
+
const sensitiveKeys = config.sensitiveKeys ?? DEFAULT_TRACER_CONFIG.sensitiveKeys;
|
|
47
|
+
const result = {};
|
|
48
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
49
|
+
const lowerKey = key.toLowerCase();
|
|
50
|
+
const isSensitive = sensitiveKeys.some(sk => lowerKey.includes(sk.toLowerCase()));
|
|
51
|
+
if (isSensitive) {
|
|
52
|
+
result[key] = '[REDACTED]';
|
|
53
|
+
}
|
|
54
|
+
else if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
55
|
+
result[key] = value;
|
|
56
|
+
}
|
|
57
|
+
else if (typeof value === 'object') {
|
|
58
|
+
result[key] = JSON.stringify(value).substring(0, 100);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
result[key] = String(value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* No-op span (for NoopTracer).
|
|
68
|
+
*/
|
|
69
|
+
class NoopSpan {
|
|
70
|
+
setAttribute(_key, _value) { }
|
|
71
|
+
setAttributes(_attributes) { }
|
|
72
|
+
recordException(_error) { }
|
|
73
|
+
addEvent(_name, _attributes) { }
|
|
74
|
+
end() { }
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* No-op tracer (default when no tracing configured).
|
|
78
|
+
*/
|
|
79
|
+
export class NoopTracer {
|
|
80
|
+
constructor(config = {}) {
|
|
81
|
+
this.config = { ...DEFAULT_TRACER_CONFIG, ...config };
|
|
82
|
+
}
|
|
83
|
+
startSpan(_name, _attributes) {
|
|
84
|
+
return new NoopSpan();
|
|
85
|
+
}
|
|
86
|
+
async withSpan(name, fn) {
|
|
87
|
+
const span = this.startSpan(name);
|
|
88
|
+
try {
|
|
89
|
+
return await fn(span);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
span.end();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
getConfig() {
|
|
96
|
+
return this.config;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Console tracer for development/debugging.
|
|
101
|
+
* Logs span events to console.
|
|
102
|
+
*/
|
|
103
|
+
export class ConsoleTracer {
|
|
104
|
+
constructor(config = {}) {
|
|
105
|
+
this.config = { ...DEFAULT_TRACER_CONFIG, ...config };
|
|
106
|
+
}
|
|
107
|
+
startSpan(name, attributes) {
|
|
108
|
+
const startTime = Date.now();
|
|
109
|
+
console.log(`[TRACE] START: ${name}`, attributes ? redactAttributes(attributes, this.config) : '');
|
|
110
|
+
return {
|
|
111
|
+
setAttribute: (key, value) => {
|
|
112
|
+
console.log(`[TRACE] ATTR: ${name}.${key} =`, value);
|
|
113
|
+
},
|
|
114
|
+
setAttributes: (attrs) => {
|
|
115
|
+
console.log(`[TRACE] ATTRS: ${name}`, redactAttributes(attrs, this.config));
|
|
116
|
+
},
|
|
117
|
+
recordException: (error) => {
|
|
118
|
+
console.error(`[TRACE] ERROR: ${name}`, error.message);
|
|
119
|
+
},
|
|
120
|
+
addEvent: (eventName, eventAttrs) => {
|
|
121
|
+
console.log(`[TRACE] EVENT: ${name}.${eventName}`, eventAttrs || '');
|
|
122
|
+
},
|
|
123
|
+
end: () => {
|
|
124
|
+
const duration = Date.now() - startTime;
|
|
125
|
+
console.log(`[TRACE] END: ${name} (${duration}ms)`);
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async withSpan(name, fn) {
|
|
130
|
+
const span = this.startSpan(name);
|
|
131
|
+
try {
|
|
132
|
+
const result = await fn(span);
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
span.recordException(error);
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
span.end();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
getConfig() {
|
|
144
|
+
return this.config;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Global tracer instance */
|
|
148
|
+
let globalTracer = new NoopTracer();
|
|
149
|
+
/**
|
|
150
|
+
* Set the global tracer.
|
|
151
|
+
*/
|
|
152
|
+
export function setGlobalTracer(tracer) {
|
|
153
|
+
globalTracer = tracer;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the global tracer.
|
|
157
|
+
*/
|
|
158
|
+
export function getGlobalTracer() {
|
|
159
|
+
return globalTracer;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=tracer.js.map
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -120,4 +120,15 @@ export interface IQiniuClient {
|
|
|
120
120
|
getLogger(): Logger;
|
|
121
121
|
getBaseUrl(): string;
|
|
122
122
|
}
|
|
123
|
+
/** Compaction info returned in GenerateTextResult */
|
|
124
|
+
export interface CompactionInfo {
|
|
125
|
+
/** Whether compaction occurred */
|
|
126
|
+
occurred: boolean;
|
|
127
|
+
/** Skills dropped during compaction */
|
|
128
|
+
droppedSkills: string[];
|
|
129
|
+
/** Number of messages dropped */
|
|
130
|
+
droppedMessages: number;
|
|
131
|
+
/** Recommendation for reducing context */
|
|
132
|
+
recommendation?: string;
|
|
133
|
+
}
|
|
123
134
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Adapter - converts MCP tools to SDK RegisteredTool format.
|
|
3
|
+
*/
|
|
4
|
+
import type { MCPToolDefinition } from './types';
|
|
5
|
+
import type { RegisteredTool } from '../../lib/tool-registry';
|
|
6
|
+
import type { MCPClient } from './client';
|
|
7
|
+
/**
|
|
8
|
+
* Convert MCP tools to SDK RegisteredTool format.
|
|
9
|
+
* Sorted by name for deterministic registration order.
|
|
10
|
+
*/
|
|
11
|
+
export declare function adaptMCPToolsToRegistry(tools: MCPToolDefinition[], serverName: string, client: MCPClient): RegisteredTool[];
|
|
12
|
+
/**
|
|
13
|
+
* Get all tools from a specific MCP server.
|
|
14
|
+
* Each server maintains its own tool list.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getServerTools(client: MCPClient, serverName: string): RegisteredTool[];
|
|
17
|
+
/**
|
|
18
|
+
* Get all tools from all connected MCP servers.
|
|
19
|
+
* Tools are collected per-server and concatenated; actual deduplication
|
|
20
|
+
* happens in ToolRegistry via priority/conflict resolution.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAllMCPToolsAsRegistered(client: MCPClient): RegisteredTool[];
|
|
23
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/modules/mcp/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAClB,cAAc,EAAE,CA6BlB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GACnB,cAAc,EAAE,CAGlB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,SAAS,GAClB,cAAc,EAAE,CAalB"}
|