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.
Files changed (51) hide show
  1. package/.env.example +39 -0
  2. package/README.md +2 -0
  3. package/docs/capabilities.md +2 -2
  4. package/docs/configuration.md +13 -5
  5. package/docs/integrations.md +4 -1
  6. package/lib/manager.js +231 -7
  7. package/package.json +2 -1
  8. package/server/db/database.js +68 -0
  9. package/server/http/middleware.js +50 -0
  10. package/server/http/routes.js +3 -1
  11. package/server/index.js +1 -0
  12. package/server/public/.last_build_id +1 -1
  13. package/server/public/assets/NOTICES +61 -0
  14. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  15. package/server/public/flutter_bootstrap.js +1 -1
  16. package/server/public/main.dart.js +65262 -64422
  17. package/server/routes/integrations.js +86 -0
  18. package/server/routes/memory.js +11 -2
  19. package/server/routes/screenHistory.js +46 -0
  20. package/server/routes/triggers.js +81 -0
  21. package/server/services/ai/models.js +30 -0
  22. package/server/services/ai/providers/githubCopilot.js +97 -0
  23. package/server/services/ai/providers/openai.js +2 -1
  24. package/server/services/ai/providers/openaiCodex.js +31 -0
  25. package/server/services/ai/settings.js +20 -0
  26. package/server/services/ai/systemPrompt.js +1 -1
  27. package/server/services/ai/tools.js +35 -6
  28. package/server/services/browser/controller.js +47 -3
  29. package/server/services/desktop/screenRecorder.js +172 -0
  30. package/server/services/integrations/env.js +5 -0
  31. package/server/services/integrations/github/common.js +106 -0
  32. package/server/services/integrations/github/provider.js +499 -0
  33. package/server/services/integrations/github/repos.js +1124 -0
  34. package/server/services/integrations/home_assistant/provider.js +306 -26
  35. package/server/services/integrations/manager.js +63 -7
  36. package/server/services/integrations/oauth_provider.js +13 -6
  37. package/server/services/integrations/provider_config_store.js +76 -0
  38. package/server/services/integrations/registry.js +4 -0
  39. package/server/services/integrations/trello/provider.js +744 -0
  40. package/server/services/integrations/whatsapp/provider.js +6 -2
  41. package/server/services/manager.js +22 -0
  42. package/server/services/memory/manager.js +39 -2
  43. package/server/services/skills/base_catalog.js +33 -0
  44. package/server/services/tasks/adapters/index.js +1 -0
  45. package/server/services/tasks/adapters/manual.js +12 -0
  46. package/server/services/tasks/runtime.js +1 -1
  47. package/server/services/voice/openaiClient.js +4 -1
  48. package/server/services/voice/providers.js +2 -1
  49. package/server/services/widgets/service.js +49 -4
  50. package/server/utils/local_secrets.js +56 -0
  51. 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),