neoagent 2.3.1-beta.2 → 2.3.1-beta.20
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/.env.example +39 -0
- package/README.md +2 -0
- package/docs/capabilities.md +2 -2
- package/docs/configuration.md +13 -5
- package/docs/integrations.md +4 -1
- package/lib/manager.js +231 -7
- package/package.json +2 -1
- package/server/db/database.js +68 -0
- package/server/http/middleware.js +50 -0
- package/server/http/routes.js +3 -1
- package/server/index.js +1 -0
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/NOTICES +61 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +65262 -64422
- package/server/routes/integrations.js +86 -0
- package/server/routes/memory.js +11 -2
- package/server/routes/screenHistory.js +46 -0
- package/server/routes/triggers.js +81 -0
- package/server/services/ai/models.js +30 -0
- package/server/services/ai/providers/githubCopilot.js +97 -0
- package/server/services/ai/providers/openai.js +2 -1
- package/server/services/ai/providers/openaiCodex.js +31 -0
- package/server/services/ai/settings.js +20 -0
- package/server/services/ai/systemPrompt.js +1 -1
- package/server/services/ai/tools.js +35 -6
- package/server/services/browser/controller.js +47 -3
- package/server/services/desktop/screenRecorder.js +172 -0
- package/server/services/integrations/env.js +5 -0
- package/server/services/integrations/github/common.js +106 -0
- package/server/services/integrations/github/provider.js +499 -0
- package/server/services/integrations/github/repos.js +1124 -0
- package/server/services/integrations/home_assistant/provider.js +306 -26
- package/server/services/integrations/manager.js +63 -7
- package/server/services/integrations/oauth_provider.js +13 -6
- package/server/services/integrations/provider_config_store.js +76 -0
- package/server/services/integrations/registry.js +4 -0
- package/server/services/integrations/trello/provider.js +744 -0
- package/server/services/integrations/whatsapp/provider.js +6 -2
- package/server/services/manager.js +22 -0
- package/server/services/memory/manager.js +39 -2
- package/server/services/skills/base_catalog.js +33 -0
- package/server/services/tasks/adapters/index.js +1 -0
- package/server/services/tasks/adapters/manual.js +12 -0
- package/server/services/tasks/runtime.js +1 -1
- package/server/services/voice/openaiClient.js +4 -1
- package/server/services/voice/providers.js +2 -1
- package/server/services/widgets/service.js +49 -4
- package/server/utils/local_secrets.js +56 -0
- package/server/utils/logger.js +37 -9
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const db = require('../../db/database');
|
|
4
|
+
const { decryptValue, encryptValue } = require('./secrets');
|
|
5
|
+
|
|
6
|
+
function normalizeProviderKey(providerKey) {
|
|
7
|
+
return String(providerKey || '').trim();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function parseConfig(value) {
|
|
11
|
+
try {
|
|
12
|
+
const parsed = JSON.parse(decryptValue(value || '{}') || '{}');
|
|
13
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
14
|
+
} catch {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function getProviderConfig(userId, providerKey) {
|
|
20
|
+
const normalizedProviderKey = normalizeProviderKey(providerKey);
|
|
21
|
+
if (!Number.isInteger(Number(userId)) || Number(userId) <= 0 || !normalizedProviderKey) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const row = db
|
|
26
|
+
.prepare(
|
|
27
|
+
`SELECT config_json
|
|
28
|
+
FROM integration_provider_configs
|
|
29
|
+
WHERE user_id = ? AND provider_key = ?`,
|
|
30
|
+
)
|
|
31
|
+
.get(Number(userId), normalizedProviderKey);
|
|
32
|
+
|
|
33
|
+
return parseConfig(row?.config_json);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function setProviderConfig(userId, providerKey, config) {
|
|
37
|
+
const normalizedProviderKey = normalizeProviderKey(providerKey);
|
|
38
|
+
if (!Number.isInteger(Number(userId)) || Number(userId) <= 0 || !normalizedProviderKey) {
|
|
39
|
+
throw new Error('A valid user and provider are required to save integration config.');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const payload = config && typeof config === 'object' ? config : {};
|
|
43
|
+
db.prepare(
|
|
44
|
+
`INSERT INTO integration_provider_configs (
|
|
45
|
+
user_id,
|
|
46
|
+
provider_key,
|
|
47
|
+
config_json,
|
|
48
|
+
created_at,
|
|
49
|
+
updated_at
|
|
50
|
+
) VALUES (?, ?, ?, datetime('now'), datetime('now'))
|
|
51
|
+
ON CONFLICT(user_id, provider_key) DO UPDATE SET
|
|
52
|
+
config_json = excluded.config_json,
|
|
53
|
+
updated_at = excluded.updated_at`,
|
|
54
|
+
).run(
|
|
55
|
+
Number(userId),
|
|
56
|
+
normalizedProviderKey,
|
|
57
|
+
encryptValue(JSON.stringify(payload)),
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function deleteProviderConfig(userId, providerKey) {
|
|
62
|
+
const normalizedProviderKey = normalizeProviderKey(providerKey);
|
|
63
|
+
if (!Number.isInteger(Number(userId)) || Number(userId) <= 0 || !normalizedProviderKey) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
db.prepare(
|
|
68
|
+
'DELETE FROM integration_provider_configs WHERE user_id = ? AND provider_key = ?',
|
|
69
|
+
).run(Number(userId), normalizedProviderKey);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
module.exports = {
|
|
73
|
+
deleteProviderConfig,
|
|
74
|
+
getProviderConfig,
|
|
75
|
+
setProviderConfig,
|
|
76
|
+
};
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
const { createFigmaProvider } = require('./figma/provider');
|
|
4
4
|
const { createGoogleWorkspaceProvider } = require('./google/provider');
|
|
5
|
+
const { createGithubProvider } = require('./github/provider');
|
|
5
6
|
const { createHomeAssistantProvider } = require('./home_assistant/provider');
|
|
7
|
+
const { createTrelloProvider } = require('./trello/provider');
|
|
6
8
|
const { createMicrosoftProvider } = require('./microsoft/provider');
|
|
7
9
|
const { createNotionProvider } = require('./notion/provider');
|
|
8
10
|
const { createSpotifyProvider } = require('./spotify/provider');
|
|
@@ -13,11 +15,13 @@ const { createWhatsAppPersonalProvider } = require('./whatsapp');
|
|
|
13
15
|
function createIntegrationRegistry(options = {}) {
|
|
14
16
|
const providers = [
|
|
15
17
|
createGoogleWorkspaceProvider(),
|
|
18
|
+
createGithubProvider(),
|
|
16
19
|
createNotionProvider(),
|
|
17
20
|
createMicrosoftProvider(),
|
|
18
21
|
createSlackProvider(),
|
|
19
22
|
createFigmaProvider(),
|
|
20
23
|
createHomeAssistantProvider(),
|
|
24
|
+
createTrelloProvider(),
|
|
21
25
|
createWeatherProvider(),
|
|
22
26
|
createSpotifyProvider(),
|
|
23
27
|
createWhatsAppPersonalProvider(options),
|