opc-agent 3.0.1 → 4.0.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 +30 -24
- package/dist/channels/dingtalk.d.ts +17 -0
- package/dist/channels/dingtalk.js +38 -0
- package/dist/channels/googlechat.d.ts +14 -0
- package/dist/channels/googlechat.js +37 -0
- package/dist/channels/imessage.d.ts +13 -0
- package/dist/channels/imessage.js +28 -0
- package/dist/channels/irc.d.ts +20 -0
- package/dist/channels/irc.js +71 -0
- package/dist/channels/line.d.ts +14 -0
- package/dist/channels/line.js +28 -0
- package/dist/channels/matrix.d.ts +15 -0
- package/dist/channels/matrix.js +28 -0
- package/dist/channels/mattermost.d.ts +18 -0
- package/dist/channels/mattermost.js +49 -0
- package/dist/channels/msteams.d.ts +14 -0
- package/dist/channels/msteams.js +28 -0
- package/dist/channels/nostr.d.ts +14 -0
- package/dist/channels/nostr.js +28 -0
- package/dist/channels/qq.d.ts +15 -0
- package/dist/channels/qq.js +28 -0
- package/dist/channels/signal.d.ts +14 -0
- package/dist/channels/signal.js +28 -0
- package/dist/channels/sms.d.ts +15 -0
- package/dist/channels/sms.js +28 -0
- package/dist/channels/twitch.d.ts +17 -0
- package/dist/channels/twitch.js +59 -0
- package/dist/channels/voice-call.d.ts +27 -0
- package/dist/channels/voice-call.js +82 -0
- package/dist/channels/whatsapp.d.ts +14 -0
- package/dist/channels/whatsapp.js +28 -0
- package/dist/cli.js +36 -0
- package/dist/core/api-server.d.ts +25 -0
- package/dist/core/api-server.js +286 -0
- package/dist/core/audio.d.ts +50 -0
- package/dist/core/audio.js +68 -0
- package/dist/core/context-discovery.d.ts +16 -0
- package/dist/core/context-discovery.js +107 -0
- package/dist/core/context-refs.d.ts +29 -0
- package/dist/core/context-refs.js +162 -0
- package/dist/core/gateway.d.ts +53 -0
- package/dist/core/gateway.js +80 -0
- package/dist/core/heartbeat.d.ts +19 -0
- package/dist/core/heartbeat.js +50 -0
- package/dist/core/hooks.d.ts +28 -0
- package/dist/core/hooks.js +82 -0
- package/dist/core/ide-bridge.d.ts +53 -0
- package/dist/core/ide-bridge.js +97 -0
- package/dist/core/node-network.d.ts +23 -0
- package/dist/core/node-network.js +77 -0
- package/dist/core/profiles.d.ts +27 -0
- package/dist/core/profiles.js +131 -0
- package/dist/core/sandbox.d.ts +25 -0
- package/dist/core/sandbox.js +84 -1
- package/dist/core/session-manager.d.ts +33 -0
- package/dist/core/session-manager.js +157 -0
- package/dist/core/vision.d.ts +45 -0
- package/dist/core/vision.js +177 -0
- package/dist/index.d.ts +64 -1
- package/dist/index.js +86 -3
- package/dist/memory/context-compressor.d.ts +43 -0
- package/dist/memory/context-compressor.js +167 -0
- package/dist/memory/index.d.ts +4 -0
- package/dist/memory/index.js +5 -1
- package/dist/memory/user-profiler.d.ts +50 -0
- package/dist/memory/user-profiler.js +201 -0
- package/dist/schema/oad.d.ts +12 -12
- package/dist/security/approvals.d.ts +53 -0
- package/dist/security/approvals.js +115 -0
- package/dist/security/elevated.d.ts +41 -0
- package/dist/security/elevated.js +89 -0
- package/dist/security/index.d.ts +6 -0
- package/dist/security/index.js +7 -1
- package/dist/security/secrets.d.ts +34 -0
- package/dist/security/secrets.js +115 -0
- package/dist/tools/builtin/browser.d.ts +47 -0
- package/dist/tools/builtin/browser.js +284 -0
- package/dist/tools/builtin/home-assistant.d.ts +12 -0
- package/dist/tools/builtin/home-assistant.js +126 -0
- package/dist/tools/builtin/index.d.ts +6 -1
- package/dist/tools/builtin/index.js +18 -2
- package/dist/tools/builtin/rl-tools.d.ts +13 -0
- package/dist/tools/builtin/rl-tools.js +228 -0
- package/dist/tools/builtin/vision.d.ts +6 -0
- package/dist/tools/builtin/vision.js +61 -0
- package/package.json +2 -2
- package/src/channels/dingtalk.ts +46 -0
- package/src/channels/googlechat.ts +42 -0
- package/src/channels/imessage.ts +32 -0
- package/src/channels/irc.ts +82 -0
- package/src/channels/line.ts +33 -0
- package/src/channels/matrix.ts +34 -0
- package/src/channels/mattermost.ts +57 -0
- package/src/channels/msteams.ts +33 -0
- package/src/channels/nostr.ts +33 -0
- package/src/channels/qq.ts +34 -0
- package/src/channels/signal.ts +33 -0
- package/src/channels/sms.ts +34 -0
- package/src/channels/twitch.ts +65 -0
- package/src/channels/voice-call.ts +100 -0
- package/src/channels/whatsapp.ts +33 -0
- package/src/cli.ts +40 -0
- package/src/core/api-server.ts +277 -0
- package/src/core/audio.ts +98 -0
- package/src/core/context-discovery.ts +85 -0
- package/src/core/context-refs.ts +140 -0
- package/src/core/gateway.ts +106 -0
- package/src/core/heartbeat.ts +51 -0
- package/src/core/hooks.ts +105 -0
- package/src/core/ide-bridge.ts +133 -0
- package/src/core/node-network.ts +86 -0
- package/src/core/profiles.ts +122 -0
- package/src/core/sandbox.ts +100 -0
- package/src/core/session-manager.ts +137 -0
- package/src/core/vision.ts +180 -0
- package/src/index.ts +84 -1
- package/src/memory/context-compressor.ts +189 -0
- package/src/memory/index.ts +4 -0
- package/src/memory/user-profiler.ts +215 -0
- package/src/security/approvals.ts +143 -0
- package/src/security/elevated.ts +105 -0
- package/src/security/index.ts +6 -0
- package/src/security/secrets.ts +129 -0
- package/src/tools/builtin/browser.ts +299 -0
- package/src/tools/builtin/home-assistant.ts +116 -0
- package/src/tools/builtin/index.ts +9 -2
- package/src/tools/builtin/rl-tools.ts +243 -0
- package/src/tools/builtin/vision.ts +64 -0
- package/tests/api-server.test.ts +148 -0
- package/tests/approvals.test.ts +89 -0
- package/tests/audio.test.ts +40 -0
- package/tests/browser.test.ts +179 -0
- package/tests/builtin-tools.test.ts +83 -83
- package/tests/channels-extra.test.ts +45 -0
- package/tests/context-compressor.test.ts +172 -0
- package/tests/context-refs.test.ts +121 -0
- package/tests/elevated.test.ts +69 -0
- package/tests/gateway.test.ts +63 -71
- package/tests/home-assistant.test.ts +40 -0
- package/tests/hooks.test.ts +79 -0
- package/tests/ide-bridge.test.ts +38 -0
- package/tests/node-network.test.ts +74 -0
- package/tests/profiles.test.ts +61 -0
- package/tests/rl-tools.test.ts +93 -0
- package/tests/sandbox-manager.test.ts +46 -0
- package/tests/secrets.test.ts +107 -0
- package/tests/tools/builtin-extended.test.ts +138 -138
- package/tests/user-profiler.test.ts +169 -0
- package/tests/v090-features.test.ts +254 -0
- package/tests/vision.test.ts +61 -0
- package/tests/voice-call.test.ts +47 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SessionManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
class SessionManager {
|
|
41
|
+
sessions = new Map();
|
|
42
|
+
storageDir;
|
|
43
|
+
constructor(storageDir) {
|
|
44
|
+
this.storageDir = storageDir || path.join(process.env.HOME || process.env.USERPROFILE || '~', '.opc', 'sessions');
|
|
45
|
+
}
|
|
46
|
+
create(agentId, channel, parentId) {
|
|
47
|
+
const session = {
|
|
48
|
+
id: crypto.randomUUID(),
|
|
49
|
+
agentId,
|
|
50
|
+
channel,
|
|
51
|
+
messages: [],
|
|
52
|
+
metadata: {},
|
|
53
|
+
createdAt: Date.now(),
|
|
54
|
+
lastActivity: Date.now(),
|
|
55
|
+
parentId,
|
|
56
|
+
};
|
|
57
|
+
this.sessions.set(session.id, session);
|
|
58
|
+
return session;
|
|
59
|
+
}
|
|
60
|
+
get(id) {
|
|
61
|
+
return this.sessions.get(id) || null;
|
|
62
|
+
}
|
|
63
|
+
list(filter) {
|
|
64
|
+
let result = Array.from(this.sessions.values());
|
|
65
|
+
if (filter?.agentId)
|
|
66
|
+
result = result.filter(s => s.agentId === filter.agentId);
|
|
67
|
+
if (filter?.channel)
|
|
68
|
+
result = result.filter(s => s.channel === filter.channel);
|
|
69
|
+
if (filter?.active !== undefined) {
|
|
70
|
+
const cutoff = Date.now() - 30 * 60 * 1000; // 30 min
|
|
71
|
+
result = result.filter(s => filter.active ? s.lastActivity > cutoff : s.lastActivity <= cutoff);
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
addMessage(sessionId, message) {
|
|
76
|
+
const session = this.sessions.get(sessionId);
|
|
77
|
+
if (!session)
|
|
78
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
79
|
+
session.messages.push(message);
|
|
80
|
+
session.lastActivity = Date.now();
|
|
81
|
+
}
|
|
82
|
+
async compact(sessionId, brain) {
|
|
83
|
+
const session = this.sessions.get(sessionId);
|
|
84
|
+
if (!session)
|
|
85
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
86
|
+
if (brain && typeof brain.compress === 'function') {
|
|
87
|
+
const compressed = await brain.compress(session.messages);
|
|
88
|
+
session.messages = [{ id: 'compacted', role: 'system', content: compressed, timestamp: Date.now() }];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Simple: keep first and last 5 messages
|
|
92
|
+
if (session.messages.length > 10) {
|
|
93
|
+
const first = session.messages.slice(0, 2);
|
|
94
|
+
const last = session.messages.slice(-5);
|
|
95
|
+
session.messages = [...first, { id: 'compacted', role: 'system', content: `[${session.messages.length - 7} messages compacted]`, timestamp: Date.now() }, ...last];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
session.compactedAt = Date.now();
|
|
99
|
+
}
|
|
100
|
+
prune(maxAge) {
|
|
101
|
+
const cutoff = Date.now() - maxAge;
|
|
102
|
+
let pruned = 0;
|
|
103
|
+
for (const [id, session] of this.sessions) {
|
|
104
|
+
if (session.lastActivity < cutoff) {
|
|
105
|
+
this.sessions.delete(id);
|
|
106
|
+
pruned++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return pruned;
|
|
110
|
+
}
|
|
111
|
+
getLineage(sessionId) {
|
|
112
|
+
const lineage = [];
|
|
113
|
+
let current = this.sessions.get(sessionId);
|
|
114
|
+
while (current) {
|
|
115
|
+
lineage.unshift(current);
|
|
116
|
+
current = current.parentId ? this.sessions.get(current.parentId) || undefined : undefined;
|
|
117
|
+
}
|
|
118
|
+
return lineage;
|
|
119
|
+
}
|
|
120
|
+
fork(sessionId) {
|
|
121
|
+
const parent = this.sessions.get(sessionId);
|
|
122
|
+
if (!parent)
|
|
123
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
124
|
+
return this.create(parent.agentId, parent.channel, parent.id);
|
|
125
|
+
}
|
|
126
|
+
export(sessionId) {
|
|
127
|
+
const session = this.sessions.get(sessionId);
|
|
128
|
+
if (!session)
|
|
129
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
130
|
+
const lines = [`# Session ${session.id}`, `Agent: ${session.agentId} | Channel: ${session.channel}`, `Created: ${new Date(session.createdAt).toISOString()}`, ''];
|
|
131
|
+
for (const msg of session.messages) {
|
|
132
|
+
lines.push(`**${msg.role}** (${new Date(msg.timestamp).toISOString()}):`);
|
|
133
|
+
lines.push(msg.content);
|
|
134
|
+
lines.push('');
|
|
135
|
+
}
|
|
136
|
+
return lines.join('\n');
|
|
137
|
+
}
|
|
138
|
+
save() {
|
|
139
|
+
if (!fs.existsSync(this.storageDir)) {
|
|
140
|
+
fs.mkdirSync(this.storageDir, { recursive: true });
|
|
141
|
+
}
|
|
142
|
+
for (const [id, session] of this.sessions) {
|
|
143
|
+
fs.writeFileSync(path.join(this.storageDir, `${id}.json`), JSON.stringify(session, null, 2));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
load() {
|
|
147
|
+
if (!fs.existsSync(this.storageDir))
|
|
148
|
+
return;
|
|
149
|
+
const files = fs.readdirSync(this.storageDir).filter(f => f.endsWith('.json'));
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
const data = JSON.parse(fs.readFileSync(path.join(this.storageDir, file), 'utf-8'));
|
|
152
|
+
this.sessions.set(data.id, data);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.SessionManager = SessionManager;
|
|
157
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface ImageInput {
|
|
2
|
+
type: 'base64' | 'url' | 'file';
|
|
3
|
+
data: string;
|
|
4
|
+
mimeType?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface VisionResult {
|
|
7
|
+
description: string;
|
|
8
|
+
text_content?: string;
|
|
9
|
+
objects?: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function detectMimeType(buffer: Buffer): string;
|
|
12
|
+
export interface VisionManagerConfig {
|
|
13
|
+
model?: string;
|
|
14
|
+
apiKey?: string;
|
|
15
|
+
baseURL?: string;
|
|
16
|
+
maxImageSize?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class VisionManager {
|
|
19
|
+
private config;
|
|
20
|
+
constructor(config?: VisionManagerConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Load image data as base64, detecting MIME type.
|
|
23
|
+
*/
|
|
24
|
+
loadImage(input: ImageInput): Promise<{
|
|
25
|
+
base64: string;
|
|
26
|
+
mimeType: string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Prepare messages in OpenAI multimodal format.
|
|
30
|
+
*/
|
|
31
|
+
prepareMessage(images: ImageInput[], text: string): Array<Record<string, unknown>>;
|
|
32
|
+
/**
|
|
33
|
+
* Analyze an image with optional prompt.
|
|
34
|
+
*/
|
|
35
|
+
analyze(image: ImageInput, prompt?: string): Promise<VisionResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Extract text (OCR) from an image.
|
|
38
|
+
*/
|
|
39
|
+
extractText(image: ImageInput): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Compare multiple images.
|
|
42
|
+
*/
|
|
43
|
+
compareImages(images: ImageInput[], prompt?: string): Promise<string>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=vision.d.ts.map
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.VisionManager = void 0;
|
|
37
|
+
exports.detectMimeType = detectMimeType;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
// ─── MIME detection from magic bytes ─────────────────────────
|
|
40
|
+
const MAGIC_BYTES = [
|
|
41
|
+
{ bytes: [0x89, 0x50, 0x4E, 0x47], mime: 'image/png' },
|
|
42
|
+
{ bytes: [0xFF, 0xD8, 0xFF], mime: 'image/jpeg' },
|
|
43
|
+
{ bytes: [0x47, 0x49, 0x46, 0x38], mime: 'image/gif' },
|
|
44
|
+
{ bytes: [0x52, 0x49, 0x46, 0x46], mime: 'image/webp' }, // RIFF header (WebP)
|
|
45
|
+
];
|
|
46
|
+
function detectMimeType(buffer) {
|
|
47
|
+
for (const { bytes, mime } of MAGIC_BYTES) {
|
|
48
|
+
if (bytes.every((b, i) => buffer[i] === b)) {
|
|
49
|
+
return mime;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return 'application/octet-stream';
|
|
53
|
+
}
|
|
54
|
+
class VisionManager {
|
|
55
|
+
config;
|
|
56
|
+
constructor(config = {}) {
|
|
57
|
+
this.config = {
|
|
58
|
+
model: config.model ?? 'gpt-4o',
|
|
59
|
+
apiKey: config.apiKey ?? process.env.OPENAI_API_KEY ?? '',
|
|
60
|
+
baseURL: config.baseURL ?? 'https://api.openai.com/v1',
|
|
61
|
+
maxImageSize: config.maxImageSize ?? 20 * 1024 * 1024,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Load image data as base64, detecting MIME type.
|
|
66
|
+
*/
|
|
67
|
+
async loadImage(input) {
|
|
68
|
+
if (input.type === 'base64') {
|
|
69
|
+
const buf = Buffer.from(input.data, 'base64');
|
|
70
|
+
return { base64: input.data, mimeType: input.mimeType ?? detectMimeType(buf) };
|
|
71
|
+
}
|
|
72
|
+
if (input.type === 'file') {
|
|
73
|
+
const buf = fs.readFileSync(input.data);
|
|
74
|
+
if (buf.length > this.config.maxImageSize) {
|
|
75
|
+
throw new Error(`Image exceeds max size: ${buf.length} > ${this.config.maxImageSize}`);
|
|
76
|
+
}
|
|
77
|
+
return { base64: buf.toString('base64'), mimeType: input.mimeType ?? detectMimeType(buf) };
|
|
78
|
+
}
|
|
79
|
+
// URL — return as-is for API
|
|
80
|
+
return { base64: '', mimeType: input.mimeType ?? 'image/jpeg' };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Prepare messages in OpenAI multimodal format.
|
|
84
|
+
*/
|
|
85
|
+
prepareMessage(images, text) {
|
|
86
|
+
const content = [];
|
|
87
|
+
if (text) {
|
|
88
|
+
content.push({ type: 'text', text });
|
|
89
|
+
}
|
|
90
|
+
for (const img of images) {
|
|
91
|
+
if (img.type === 'url') {
|
|
92
|
+
content.push({
|
|
93
|
+
type: 'image_url',
|
|
94
|
+
image_url: { url: img.data },
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// base64 or file — will need to be loaded first
|
|
99
|
+
const mime = img.mimeType ?? 'image/jpeg';
|
|
100
|
+
const data = img.type === 'base64' ? img.data : fs.readFileSync(img.data).toString('base64');
|
|
101
|
+
content.push({
|
|
102
|
+
type: 'image_url',
|
|
103
|
+
image_url: { url: `data:${mime};base64,${data}` },
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return [{ role: 'user', content }];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Analyze an image with optional prompt.
|
|
111
|
+
*/
|
|
112
|
+
async analyze(image, prompt) {
|
|
113
|
+
const messages = this.prepareMessage([image], prompt ?? 'Describe this image in detail.');
|
|
114
|
+
if (!this.config.apiKey) {
|
|
115
|
+
throw new Error('Vision API key not configured. Set OPENAI_API_KEY or pass apiKey in config.');
|
|
116
|
+
}
|
|
117
|
+
const response = await fetch(`${this.config.baseURL}/chat/completions`, {
|
|
118
|
+
method: 'POST',
|
|
119
|
+
headers: {
|
|
120
|
+
'Content-Type': 'application/json',
|
|
121
|
+
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
122
|
+
},
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
model: this.config.model,
|
|
125
|
+
messages,
|
|
126
|
+
max_tokens: 1000,
|
|
127
|
+
}),
|
|
128
|
+
});
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
throw new Error(`Vision API error: ${response.status} ${response.statusText}`);
|
|
131
|
+
}
|
|
132
|
+
const data = await response.json();
|
|
133
|
+
const text = data.choices?.[0]?.message?.content ?? '';
|
|
134
|
+
return {
|
|
135
|
+
description: text,
|
|
136
|
+
text_content: undefined,
|
|
137
|
+
objects: [],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Extract text (OCR) from an image.
|
|
142
|
+
*/
|
|
143
|
+
async extractText(image) {
|
|
144
|
+
const result = await this.analyze(image, 'Extract all visible text from this image. Return only the text, nothing else.');
|
|
145
|
+
return result.description;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Compare multiple images.
|
|
149
|
+
*/
|
|
150
|
+
async compareImages(images, prompt) {
|
|
151
|
+
if (images.length < 2)
|
|
152
|
+
throw new Error('Need at least 2 images to compare');
|
|
153
|
+
const messages = this.prepareMessage(images, prompt ?? 'Compare these images and describe the differences.');
|
|
154
|
+
if (!this.config.apiKey) {
|
|
155
|
+
throw new Error('Vision API key not configured.');
|
|
156
|
+
}
|
|
157
|
+
const response = await fetch(`${this.config.baseURL}/chat/completions`, {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: {
|
|
160
|
+
'Content-Type': 'application/json',
|
|
161
|
+
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
162
|
+
},
|
|
163
|
+
body: JSON.stringify({
|
|
164
|
+
model: this.config.model,
|
|
165
|
+
messages,
|
|
166
|
+
max_tokens: 1000,
|
|
167
|
+
}),
|
|
168
|
+
});
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
throw new Error(`Vision API error: ${response.status} ${response.statusText}`);
|
|
171
|
+
}
|
|
172
|
+
const data = await response.json();
|
|
173
|
+
return data.choices?.[0]?.message?.content ?? '';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.VisionManager = VisionManager;
|
|
177
|
+
//# sourceMappingURL=vision.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -67,6 +67,22 @@ export { TextAnalysisTool } from './tools/text-analysis';
|
|
|
67
67
|
export { HttpSkill } from './skills/http';
|
|
68
68
|
export { WebhookTriggerSkill } from './skills/webhook-trigger';
|
|
69
69
|
export type { WebhookTarget } from './skills/webhook-trigger';
|
|
70
|
+
export { DingTalkChannel } from './channels/dingtalk';
|
|
71
|
+
export type { DingTalkChannelConfig } from './channels/dingtalk';
|
|
72
|
+
export { MattermostChannel } from './channels/mattermost';
|
|
73
|
+
export type { MattermostChannelConfig } from './channels/mattermost';
|
|
74
|
+
export { GoogleChatChannel } from './channels/googlechat';
|
|
75
|
+
export type { GoogleChatChannelConfig } from './channels/googlechat';
|
|
76
|
+
export { TwitchChannel } from './channels/twitch';
|
|
77
|
+
export type { TwitchChannelConfig } from './channels/twitch';
|
|
78
|
+
export { IRCChannel } from './channels/irc';
|
|
79
|
+
export type { IRCChannelConfig } from './channels/irc';
|
|
80
|
+
export { ContextDiscovery } from './core/context-discovery';
|
|
81
|
+
export type { ContextFile } from './core/context-discovery';
|
|
82
|
+
export { SessionManager } from './core/session-manager';
|
|
83
|
+
export type { Session } from './core/session-manager';
|
|
84
|
+
export { HeartbeatManager } from './core/heartbeat';
|
|
85
|
+
export type { HeartbeatConfig } from './core/heartbeat';
|
|
70
86
|
export { SchedulerSkill } from './skills/scheduler';
|
|
71
87
|
export type { ScheduledTask } from './skills/scheduler';
|
|
72
88
|
export { DocumentSkill } from './skills/document';
|
|
@@ -93,6 +109,16 @@ export { rateLimiterPlugin, createRateLimiterPlugin as createEnhancedRateLimiter
|
|
|
93
109
|
export { contentFilterPlugin, createContentFilterPlugin } from './plugins/content-filter';
|
|
94
110
|
export { GuardrailManager, createGuardrailsFromConfig } from './security/guardrails';
|
|
95
111
|
export type { GuardrailConfig, GuardrailRule, GuardrailResult, GuardrailViolation } from './security/guardrails';
|
|
112
|
+
export { ExecApprovalManager } from './security/approvals';
|
|
113
|
+
export type { ExecApprovalPolicy, ExecApprovalRequest, ExecApprovalHistory, ApprovalRequestCallback } from './security/approvals';
|
|
114
|
+
export { ElevatedManager } from './security/elevated';
|
|
115
|
+
export type { ElevationMode, ElevationAuditEntry } from './security/elevated';
|
|
116
|
+
export { SecretsManager } from './security/secrets';
|
|
117
|
+
export type { SecretsStore } from './security/secrets';
|
|
118
|
+
export { HookManager, ALL_HOOK_EVENTS } from './core/hooks';
|
|
119
|
+
export type { HookEvent, HookContext, HookHandler } from './core/hooks';
|
|
120
|
+
export { AudioProcessor } from './core/audio';
|
|
121
|
+
export type { AudioFormat, TranscribeOptions, SynthesizeOptions, TranscribeResult, SynthesizeResult } from './core/audio';
|
|
96
122
|
export { FeishuChannel } from './channels/feishu';
|
|
97
123
|
export type { FeishuChannelConfig } from './channels/feishu';
|
|
98
124
|
export { DiscordChannel } from './channels/discord';
|
|
@@ -111,7 +137,7 @@ export { SubAgentManager } from './core/subagent';
|
|
|
111
137
|
export type { SubAgentConfig, SubAgentResult } from './core/subagent';
|
|
112
138
|
export { Scheduler, parseCron, cronMatches } from './core/scheduler';
|
|
113
139
|
export type { CronJob, JobHandler } from './core/scheduler';
|
|
114
|
-
export { getBuiltinTools, getBuiltinToolsByName } from './tools/builtin';
|
|
140
|
+
export { getBuiltinTools, getBuiltinToolsByName, rlTools, homeAssistantTools, configureHomeAssistant } from './tools/builtin';
|
|
115
141
|
export { MCPClient } from './tools/mcp-client';
|
|
116
142
|
export type { MCPServerConfig } from './tools/mcp-client';
|
|
117
143
|
export { AgentPackager, AgentPublisher, AgentInstaller } from './publish';
|
|
@@ -130,5 +156,42 @@ export { AGUI_EVENT_TYPES, isValidEventType } from './protocols/agui';
|
|
|
130
156
|
export { DebatePattern, VotingPattern, PipelinePattern, HierarchyPattern, SharedContext, ConversationProtocol } from './core/collaboration';
|
|
131
157
|
export type { DebateResult, DebateArgument, VoteResult, VoteEntry, PipelineResult, PipelineStageResult, HierarchyResult, WorkerResult } from './core/collaboration';
|
|
132
158
|
export type { AGUIEvent, AGUIEventType, AGUIMessage, AGUIRunRequest, AGUIToolCall, AGUIToolDefinition, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, CustomEvent, } from './protocols/agui';
|
|
159
|
+
export { APIServer } from './core/api-server';
|
|
160
|
+
export type { APIServerConfig } from './core/api-server';
|
|
161
|
+
export { ContextRefResolver } from './core/context-refs';
|
|
162
|
+
export type { ContextRef, RefType } from './core/context-refs';
|
|
163
|
+
export { VisionManager, detectMimeType } from './core/vision';
|
|
164
|
+
export type { ImageInput, VisionResult, VisionManagerConfig } from './core/vision';
|
|
165
|
+
export { visionTools, visionAnalyzeTool, visionExtractTextTool, visionCompareTool } from './tools/builtin/vision';
|
|
166
|
+
export { WhatsAppChannel } from './channels/whatsapp';
|
|
167
|
+
export type { WhatsAppChannelConfig } from './channels/whatsapp';
|
|
168
|
+
export { SignalChannel } from './channels/signal';
|
|
169
|
+
export type { SignalChannelConfig } from './channels/signal';
|
|
170
|
+
export { MatrixChannel } from './channels/matrix';
|
|
171
|
+
export type { MatrixChannelConfig } from './channels/matrix';
|
|
172
|
+
export { IMessageChannel } from './channels/imessage';
|
|
173
|
+
export type { IMessageChannelConfig } from './channels/imessage';
|
|
174
|
+
export { LINEChannel } from './channels/line';
|
|
175
|
+
export type { LINEChannelConfig } from './channels/line';
|
|
176
|
+
export { MSTeamsChannel } from './channels/msteams';
|
|
177
|
+
export type { MSTeamsChannelConfig } from './channels/msteams';
|
|
178
|
+
export { QQChannel } from './channels/qq';
|
|
179
|
+
export type { QQChannelConfig } from './channels/qq';
|
|
180
|
+
export { NostrChannel } from './channels/nostr';
|
|
181
|
+
export type { NostrChannelConfig } from './channels/nostr';
|
|
182
|
+
export { SMSChannel } from './channels/sms';
|
|
183
|
+
export type { SMSChannelConfig } from './channels/sms';
|
|
184
|
+
export { VoiceCallManager } from './channels/voice-call';
|
|
185
|
+
export type { VoiceCallConfig } from './channels/voice-call';
|
|
186
|
+
export { IDEBridge } from './core/ide-bridge';
|
|
187
|
+
export type { IDEConfig, Diagnostic, TextEdit, Range, SearchOptions, SearchResult } from './core/ide-bridge';
|
|
188
|
+
export { NodeNetwork } from './core/node-network';
|
|
189
|
+
export type { RemoteNode } from './core/node-network';
|
|
190
|
+
export { Gateway } from './core/gateway';
|
|
191
|
+
export type { AgentConfig as GatewayAgentConfig, ChannelConfig as GatewayChannelConfig, GatewayConfig } from './core/gateway';
|
|
192
|
+
export { SandboxManager } from './core/sandbox';
|
|
193
|
+
export type { RemoteSandboxConfig, ExecResult } from './core/sandbox';
|
|
194
|
+
export { ProfileManager } from './core/profiles';
|
|
195
|
+
export type { Profile, ProfileConfig } from './core/profiles';
|
|
133
196
|
export { SlackTool, EmailSendTool, WebhookTool, NotionTool, GitHubTool, JiraTool, CalendarTool, TrelloTool, WebSearchTool, WebScraperTool, DatabaseTool, VectorSearchTool, CodeExecutionTool, GitTool, NpmTool, ImageGenerationTool, PDFReaderTool, CSVAnalyzerTool, SummarizerTool, TranslatorTool, getAllIntegrationTools, getIntegrationTool, } from './tools/integrations';
|
|
134
197
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.KnowledgeBase = exports.addMessages = exports.detectLocale = exports.getLocale = exports.setLocale = exports.t = exports.LazyLoader = exports.RequestBatcher = exports.ConnectionPool = exports.VersionManager = exports.WebhookChannel = exports.createVoiceProviders = exports.ElevenLabsTTSProvider = exports.OpenAITTSProvider = exports.EdgeTTSProvider = exports.DeepgramSTTProvider = exports.WhisperSTTProvider = exports.VoiceChannel = exports.HITLManager = exports.AgentCardRegistry = exports.AgentRegistry = exports.parseOADWorkflow = exports.WorkflowBuilder = exports.GraphWorkflowEngine = exports.WorkflowEngine = exports.Analytics = exports.KeyManager = exports.ApprovalManager = exports.Sandbox = exports.PluginManager = exports.createMCPTool = exports.MCPToolRegistry = exports.Room = exports.SUPPORTED_PROVIDERS = exports.createProvider = exports.DeepBrainMemoryStore = exports.InMemoryStore = exports.SkillRegistry = exports.BaseSkill = exports.WebSocketChannel = exports.TelegramChannel = exports.WebChannel = exports.BaseChannel = exports.OADSchema = exports.validateOAD = exports.loadOAD = exports.Logger = exports.truncateOutput = exports.AgentRuntime = exports.BaseAgent = void 0;
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
4
|
+
exports.detectInjection = exports.sanitizeInput = exports.formatErrorForUser = exports.wrapError = exports.TimeoutError = exports.SecurityError = exports.RateLimitError = exports.PluginError = exports.ChannelError = exports.ConfigError = exports.ValidationError = exports.ProviderError = exports.OPCError = exports.createTeacherConfig = exports.createDataAnalystConfig = exports.getSupportedLocales = exports.LLMCache = exports.RateLimiter = exports.AnalyticsEngine = exports.formatReport = exports.loadTestCases = exports.runTests = exports.parseSkillMarkdown = exports.skillToMarkdown = exports.SkillLearner = exports.DocumentSkill = exports.SchedulerSkill = exports.HeartbeatManager = exports.SessionManager = exports.ContextDiscovery = exports.IRCChannel = exports.TwitchChannel = exports.GoogleChatChannel = exports.MattermostChannel = exports.DingTalkChannel = exports.WebhookTriggerSkill = exports.HttpSkill = exports.TextAnalysisTool = exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = exports.EmailChannel = exports.compose = exports.AgentPipeline = exports.Orchestrator = exports.getActiveSessions = exports.createAuthMiddleware = exports.deployToHermes = void 0;
|
|
5
|
+
exports.A2AServer = exports.StudioServer = exports.AgentInstaller = exports.AgentPublisher = exports.AgentPackager = exports.MCPClient = exports.configureHomeAssistant = exports.homeAssistantTools = exports.rlTools = exports.getBuiltinToolsByName = exports.getBuiltinTools = exports.cronMatches = exports.parseCron = exports.Scheduler = exports.SubAgentManager = exports.generateSpanId = exports.generateTraceId = exports.OTLPHttpExporter = exports.FileExporter = exports.ConsoleExporter = exports.Tracer = exports.DeepBrainExporter = exports.TraceConsoleExporter = exports.TraceCollector = exports.StreamableResponse = exports.StreamingManager = exports.ToolGateway = exports.ProcessWatcher = exports.DiscordChannel = exports.FeishuChannel = exports.AudioProcessor = exports.ALL_HOOK_EVENTS = exports.HookManager = exports.SecretsManager = exports.ElevatedManager = exports.ExecApprovalManager = exports.createGuardrailsFromConfig = exports.GuardrailManager = exports.createContentFilterPlugin = exports.contentFilterPlugin = exports.createEnhancedRateLimiterPlugin = exports.rateLimiterPlugin = exports.loggerPlugin = exports.createRateLimitPlugin = exports.createAnalyticsPlugin = exports.createLoggingPlugin = exports.inputValidation = exports.APIKeyManager = exports.corsMiddleware = exports.securityHeaders = void 0;
|
|
6
|
+
exports.WebSearchTool = exports.TrelloTool = exports.CalendarTool = exports.JiraTool = exports.GitHubTool = exports.NotionTool = exports.WebhookTool = exports.EmailSendTool = exports.SlackTool = exports.ProfileManager = exports.SandboxManager = exports.Gateway = exports.NodeNetwork = exports.IDEBridge = exports.VoiceCallManager = exports.SMSChannel = exports.NostrChannel = exports.QQChannel = exports.MSTeamsChannel = exports.LINEChannel = exports.IMessageChannel = exports.MatrixChannel = exports.SignalChannel = exports.WhatsAppChannel = exports.visionCompareTool = exports.visionExtractTextTool = exports.visionAnalyzeTool = exports.visionTools = exports.detectMimeType = exports.VisionManager = exports.ContextRefResolver = exports.APIServer = exports.ConversationProtocol = exports.SharedContext = exports.HierarchyPattern = exports.PipelinePattern = exports.VotingPattern = exports.DebatePattern = exports.isValidEventType = exports.AGUI_EVENT_TYPES = exports.AGUIClient = exports.AGUIEventEmitter = exports.AGUIServer = exports.AgentEvaluator = exports.agentToMCPResources = exports.agentToMCPTools = exports.MCPServer = exports.JSON_RPC_ERRORS = exports.oadToAgentCard = exports.A2AClient = void 0;
|
|
7
|
+
exports.getIntegrationTool = exports.getAllIntegrationTools = exports.TranslatorTool = exports.SummarizerTool = exports.CSVAnalyzerTool = exports.PDFReaderTool = exports.ImageGenerationTool = exports.NpmTool = exports.GitTool = exports.CodeExecutionTool = exports.VectorSearchTool = exports.DatabaseTool = exports.WebScraperTool = void 0;
|
|
7
8
|
// OPC Agent — Open Agent Framework
|
|
8
9
|
var agent_1 = require("./core/agent");
|
|
9
10
|
Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return agent_1.BaseAgent; } });
|
|
@@ -120,6 +121,24 @@ var http_1 = require("./skills/http");
|
|
|
120
121
|
Object.defineProperty(exports, "HttpSkill", { enumerable: true, get: function () { return http_1.HttpSkill; } });
|
|
121
122
|
var webhook_trigger_1 = require("./skills/webhook-trigger");
|
|
122
123
|
Object.defineProperty(exports, "WebhookTriggerSkill", { enumerable: true, get: function () { return webhook_trigger_1.WebhookTriggerSkill; } });
|
|
124
|
+
// v0.9.0 channels
|
|
125
|
+
var dingtalk_1 = require("./channels/dingtalk");
|
|
126
|
+
Object.defineProperty(exports, "DingTalkChannel", { enumerable: true, get: function () { return dingtalk_1.DingTalkChannel; } });
|
|
127
|
+
var mattermost_1 = require("./channels/mattermost");
|
|
128
|
+
Object.defineProperty(exports, "MattermostChannel", { enumerable: true, get: function () { return mattermost_1.MattermostChannel; } });
|
|
129
|
+
var googlechat_1 = require("./channels/googlechat");
|
|
130
|
+
Object.defineProperty(exports, "GoogleChatChannel", { enumerable: true, get: function () { return googlechat_1.GoogleChatChannel; } });
|
|
131
|
+
var twitch_1 = require("./channels/twitch");
|
|
132
|
+
Object.defineProperty(exports, "TwitchChannel", { enumerable: true, get: function () { return twitch_1.TwitchChannel; } });
|
|
133
|
+
var irc_1 = require("./channels/irc");
|
|
134
|
+
Object.defineProperty(exports, "IRCChannel", { enumerable: true, get: function () { return irc_1.IRCChannel; } });
|
|
135
|
+
// v0.9.0 core
|
|
136
|
+
var context_discovery_1 = require("./core/context-discovery");
|
|
137
|
+
Object.defineProperty(exports, "ContextDiscovery", { enumerable: true, get: function () { return context_discovery_1.ContextDiscovery; } });
|
|
138
|
+
var session_manager_1 = require("./core/session-manager");
|
|
139
|
+
Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return session_manager_1.SessionManager; } });
|
|
140
|
+
var heartbeat_1 = require("./core/heartbeat");
|
|
141
|
+
Object.defineProperty(exports, "HeartbeatManager", { enumerable: true, get: function () { return heartbeat_1.HeartbeatManager; } });
|
|
123
142
|
var scheduler_1 = require("./skills/scheduler");
|
|
124
143
|
Object.defineProperty(exports, "SchedulerSkill", { enumerable: true, get: function () { return scheduler_1.SchedulerSkill; } });
|
|
125
144
|
var document_1 = require("./skills/document");
|
|
@@ -181,6 +200,19 @@ Object.defineProperty(exports, "createContentFilterPlugin", { enumerable: true,
|
|
|
181
200
|
var guardrails_1 = require("./security/guardrails");
|
|
182
201
|
Object.defineProperty(exports, "GuardrailManager", { enumerable: true, get: function () { return guardrails_1.GuardrailManager; } });
|
|
183
202
|
Object.defineProperty(exports, "createGuardrailsFromConfig", { enumerable: true, get: function () { return guardrails_1.createGuardrailsFromConfig; } });
|
|
203
|
+
// v3.1.0 — Exec Approvals + Elevated + Secrets
|
|
204
|
+
var approvals_1 = require("./security/approvals");
|
|
205
|
+
Object.defineProperty(exports, "ExecApprovalManager", { enumerable: true, get: function () { return approvals_1.ExecApprovalManager; } });
|
|
206
|
+
var elevated_1 = require("./security/elevated");
|
|
207
|
+
Object.defineProperty(exports, "ElevatedManager", { enumerable: true, get: function () { return elevated_1.ElevatedManager; } });
|
|
208
|
+
var secrets_1 = require("./security/secrets");
|
|
209
|
+
Object.defineProperty(exports, "SecretsManager", { enumerable: true, get: function () { return secrets_1.SecretsManager; } });
|
|
210
|
+
// v3.1.0 — Hooks + Audio
|
|
211
|
+
var hooks_1 = require("./core/hooks");
|
|
212
|
+
Object.defineProperty(exports, "HookManager", { enumerable: true, get: function () { return hooks_1.HookManager; } });
|
|
213
|
+
Object.defineProperty(exports, "ALL_HOOK_EVENTS", { enumerable: true, get: function () { return hooks_1.ALL_HOOK_EVENTS; } });
|
|
214
|
+
var audio_1 = require("./core/audio");
|
|
215
|
+
Object.defineProperty(exports, "AudioProcessor", { enumerable: true, get: function () { return audio_1.AudioProcessor; } });
|
|
184
216
|
// v1.1.0 modules
|
|
185
217
|
var feishu_1 = require("./channels/feishu");
|
|
186
218
|
Object.defineProperty(exports, "FeishuChannel", { enumerable: true, get: function () { return feishu_1.FeishuChannel; } });
|
|
@@ -219,6 +251,9 @@ Object.defineProperty(exports, "cronMatches", { enumerable: true, get: function
|
|
|
219
251
|
var builtin_1 = require("./tools/builtin");
|
|
220
252
|
Object.defineProperty(exports, "getBuiltinTools", { enumerable: true, get: function () { return builtin_1.getBuiltinTools; } });
|
|
221
253
|
Object.defineProperty(exports, "getBuiltinToolsByName", { enumerable: true, get: function () { return builtin_1.getBuiltinToolsByName; } });
|
|
254
|
+
Object.defineProperty(exports, "rlTools", { enumerable: true, get: function () { return builtin_1.rlTools; } });
|
|
255
|
+
Object.defineProperty(exports, "homeAssistantTools", { enumerable: true, get: function () { return builtin_1.homeAssistantTools; } });
|
|
256
|
+
Object.defineProperty(exports, "configureHomeAssistant", { enumerable: true, get: function () { return builtin_1.configureHomeAssistant; } });
|
|
222
257
|
var mcp_client_1 = require("./tools/mcp-client");
|
|
223
258
|
Object.defineProperty(exports, "MCPClient", { enumerable: true, get: function () { return mcp_client_1.MCPClient; } });
|
|
224
259
|
// v1.6.0 — publish/pack/install
|
|
@@ -260,6 +295,54 @@ Object.defineProperty(exports, "PipelinePattern", { enumerable: true, get: funct
|
|
|
260
295
|
Object.defineProperty(exports, "HierarchyPattern", { enumerable: true, get: function () { return collaboration_1.HierarchyPattern; } });
|
|
261
296
|
Object.defineProperty(exports, "SharedContext", { enumerable: true, get: function () { return collaboration_1.SharedContext; } });
|
|
262
297
|
Object.defineProperty(exports, "ConversationProtocol", { enumerable: true, get: function () { return collaboration_1.ConversationProtocol; } });
|
|
298
|
+
// v2.1.0 — API Server + Context References
|
|
299
|
+
var api_server_1 = require("./core/api-server");
|
|
300
|
+
Object.defineProperty(exports, "APIServer", { enumerable: true, get: function () { return api_server_1.APIServer; } });
|
|
301
|
+
var context_refs_1 = require("./core/context-refs");
|
|
302
|
+
Object.defineProperty(exports, "ContextRefResolver", { enumerable: true, get: function () { return context_refs_1.ContextRefResolver; } });
|
|
303
|
+
// v2.2.0 — Vision
|
|
304
|
+
var vision_1 = require("./core/vision");
|
|
305
|
+
Object.defineProperty(exports, "VisionManager", { enumerable: true, get: function () { return vision_1.VisionManager; } });
|
|
306
|
+
Object.defineProperty(exports, "detectMimeType", { enumerable: true, get: function () { return vision_1.detectMimeType; } });
|
|
307
|
+
var vision_2 = require("./tools/builtin/vision");
|
|
308
|
+
Object.defineProperty(exports, "visionTools", { enumerable: true, get: function () { return vision_2.visionTools; } });
|
|
309
|
+
Object.defineProperty(exports, "visionAnalyzeTool", { enumerable: true, get: function () { return vision_2.visionAnalyzeTool; } });
|
|
310
|
+
Object.defineProperty(exports, "visionExtractTextTool", { enumerable: true, get: function () { return vision_2.visionExtractTextTool; } });
|
|
311
|
+
Object.defineProperty(exports, "visionCompareTool", { enumerable: true, get: function () { return vision_2.visionCompareTool; } });
|
|
312
|
+
// v2.2.0 — Additional channels
|
|
313
|
+
var whatsapp_1 = require("./channels/whatsapp");
|
|
314
|
+
Object.defineProperty(exports, "WhatsAppChannel", { enumerable: true, get: function () { return whatsapp_1.WhatsAppChannel; } });
|
|
315
|
+
var signal_1 = require("./channels/signal");
|
|
316
|
+
Object.defineProperty(exports, "SignalChannel", { enumerable: true, get: function () { return signal_1.SignalChannel; } });
|
|
317
|
+
var matrix_1 = require("./channels/matrix");
|
|
318
|
+
Object.defineProperty(exports, "MatrixChannel", { enumerable: true, get: function () { return matrix_1.MatrixChannel; } });
|
|
319
|
+
var imessage_1 = require("./channels/imessage");
|
|
320
|
+
Object.defineProperty(exports, "IMessageChannel", { enumerable: true, get: function () { return imessage_1.IMessageChannel; } });
|
|
321
|
+
var line_1 = require("./channels/line");
|
|
322
|
+
Object.defineProperty(exports, "LINEChannel", { enumerable: true, get: function () { return line_1.LINEChannel; } });
|
|
323
|
+
var msteams_1 = require("./channels/msteams");
|
|
324
|
+
Object.defineProperty(exports, "MSTeamsChannel", { enumerable: true, get: function () { return msteams_1.MSTeamsChannel; } });
|
|
325
|
+
var qq_1 = require("./channels/qq");
|
|
326
|
+
Object.defineProperty(exports, "QQChannel", { enumerable: true, get: function () { return qq_1.QQChannel; } });
|
|
327
|
+
var nostr_1 = require("./channels/nostr");
|
|
328
|
+
Object.defineProperty(exports, "NostrChannel", { enumerable: true, get: function () { return nostr_1.NostrChannel; } });
|
|
329
|
+
var sms_1 = require("./channels/sms");
|
|
330
|
+
Object.defineProperty(exports, "SMSChannel", { enumerable: true, get: function () { return sms_1.SMSChannel; } });
|
|
331
|
+
// v2.3.0 — Voice Calls + IDE + Node Network + Gateway
|
|
332
|
+
var voice_call_1 = require("./channels/voice-call");
|
|
333
|
+
Object.defineProperty(exports, "VoiceCallManager", { enumerable: true, get: function () { return voice_call_1.VoiceCallManager; } });
|
|
334
|
+
var ide_bridge_1 = require("./core/ide-bridge");
|
|
335
|
+
Object.defineProperty(exports, "IDEBridge", { enumerable: true, get: function () { return ide_bridge_1.IDEBridge; } });
|
|
336
|
+
var node_network_1 = require("./core/node-network");
|
|
337
|
+
Object.defineProperty(exports, "NodeNetwork", { enumerable: true, get: function () { return node_network_1.NodeNetwork; } });
|
|
338
|
+
var gateway_2 = require("./core/gateway");
|
|
339
|
+
Object.defineProperty(exports, "Gateway", { enumerable: true, get: function () { return gateway_2.Gateway; } });
|
|
340
|
+
// v2.2.0 — Remote Sandbox
|
|
341
|
+
var sandbox_2 = require("./core/sandbox");
|
|
342
|
+
Object.defineProperty(exports, "SandboxManager", { enumerable: true, get: function () { return sandbox_2.SandboxManager; } });
|
|
343
|
+
// v2.2.0 — Profiles
|
|
344
|
+
var profiles_1 = require("./core/profiles");
|
|
345
|
+
Object.defineProperty(exports, "ProfileManager", { enumerable: true, get: function () { return profiles_1.ProfileManager; } });
|
|
263
346
|
// v2.0.0 - Pre-built tool integrations (20 tools)
|
|
264
347
|
var integrations_1 = require("./tools/integrations");
|
|
265
348
|
Object.defineProperty(exports, "SlackTool", { enumerable: true, get: function () { return integrations_1.SlackTool; } });
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Message } from '../core/types';
|
|
2
|
+
export interface CompressorConfig {
|
|
3
|
+
maxTokens: number;
|
|
4
|
+
compressThreshold: number;
|
|
5
|
+
preserveRecent: number;
|
|
6
|
+
brain?: any;
|
|
7
|
+
}
|
|
8
|
+
export interface CompressResult {
|
|
9
|
+
messages: Message[];
|
|
10
|
+
learnedCount: number;
|
|
11
|
+
savedTokens: number;
|
|
12
|
+
summary: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Context compression with optional DeepBrain memory offloading.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ContextCompressor {
|
|
18
|
+
private config;
|
|
19
|
+
constructor(config?: Partial<CompressorConfig>);
|
|
20
|
+
/**
|
|
21
|
+
* Estimate token count using language-aware heuristic.
|
|
22
|
+
* English: ~1 token per 4 chars. Chinese: ~1 token per 2 chars.
|
|
23
|
+
*/
|
|
24
|
+
estimateTokens(text: string): number;
|
|
25
|
+
private estimateMessagesTokens;
|
|
26
|
+
/**
|
|
27
|
+
* Extract key insights from messages for brain storage.
|
|
28
|
+
*/
|
|
29
|
+
private extractInsights;
|
|
30
|
+
/**
|
|
31
|
+
* Generate a simple summary from messages (no-brain fallback).
|
|
32
|
+
*/
|
|
33
|
+
private summarize;
|
|
34
|
+
/**
|
|
35
|
+
* Compress messages when token count exceeds threshold.
|
|
36
|
+
*/
|
|
37
|
+
compress(messages: Message[], config?: Partial<CompressorConfig>): Promise<CompressResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Restore context from brain for a given query.
|
|
40
|
+
*/
|
|
41
|
+
restore(query: string, brain: any): Promise<string[]>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=context-compressor.d.ts.map
|