@agentforscience/flamebird 0.1.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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/actions/action-executor.d.ts +72 -0
  4. package/dist/actions/action-executor.d.ts.map +1 -0
  5. package/dist/actions/action-executor.js +458 -0
  6. package/dist/actions/action-executor.js.map +1 -0
  7. package/dist/agents/agent-manager.d.ts +90 -0
  8. package/dist/agents/agent-manager.d.ts.map +1 -0
  9. package/dist/agents/agent-manager.js +269 -0
  10. package/dist/agents/agent-manager.js.map +1 -0
  11. package/dist/api/agent4science-client.d.ts +297 -0
  12. package/dist/api/agent4science-client.d.ts.map +1 -0
  13. package/dist/api/agent4science-client.js +386 -0
  14. package/dist/api/agent4science-client.js.map +1 -0
  15. package/dist/cli/commands/add-agent.d.ts +13 -0
  16. package/dist/cli/commands/add-agent.d.ts.map +1 -0
  17. package/dist/cli/commands/add-agent.js +76 -0
  18. package/dist/cli/commands/add-agent.js.map +1 -0
  19. package/dist/cli/commands/community.d.ts +20 -0
  20. package/dist/cli/commands/community.d.ts.map +1 -0
  21. package/dist/cli/commands/community.js +1180 -0
  22. package/dist/cli/commands/community.js.map +1 -0
  23. package/dist/cli/commands/config.d.ts +12 -0
  24. package/dist/cli/commands/config.d.ts.map +1 -0
  25. package/dist/cli/commands/config.js +152 -0
  26. package/dist/cli/commands/config.js.map +1 -0
  27. package/dist/cli/commands/create-agent.d.ts +12 -0
  28. package/dist/cli/commands/create-agent.d.ts.map +1 -0
  29. package/dist/cli/commands/create-agent.js +1780 -0
  30. package/dist/cli/commands/create-agent.js.map +1 -0
  31. package/dist/cli/commands/init.d.ts +15 -0
  32. package/dist/cli/commands/init.d.ts.map +1 -0
  33. package/dist/cli/commands/init.js +487 -0
  34. package/dist/cli/commands/init.js.map +1 -0
  35. package/dist/cli/commands/interactive.d.ts +6 -0
  36. package/dist/cli/commands/interactive.d.ts.map +1 -0
  37. package/dist/cli/commands/interactive.js +447 -0
  38. package/dist/cli/commands/interactive.js.map +1 -0
  39. package/dist/cli/commands/list-agents.d.ts +10 -0
  40. package/dist/cli/commands/list-agents.d.ts.map +1 -0
  41. package/dist/cli/commands/list-agents.js +67 -0
  42. package/dist/cli/commands/list-agents.js.map +1 -0
  43. package/dist/cli/commands/play.d.ts +30 -0
  44. package/dist/cli/commands/play.d.ts.map +1 -0
  45. package/dist/cli/commands/play.js +1890 -0
  46. package/dist/cli/commands/play.js.map +1 -0
  47. package/dist/cli/commands/setup-production.d.ts +7 -0
  48. package/dist/cli/commands/setup-production.d.ts.map +1 -0
  49. package/dist/cli/commands/setup-production.js +127 -0
  50. package/dist/cli/commands/setup-production.js.map +1 -0
  51. package/dist/cli/commands/start.d.ts +15 -0
  52. package/dist/cli/commands/start.d.ts.map +1 -0
  53. package/dist/cli/commands/start.js +89 -0
  54. package/dist/cli/commands/start.js.map +1 -0
  55. package/dist/cli/commands/stats.d.ts +6 -0
  56. package/dist/cli/commands/stats.d.ts.map +1 -0
  57. package/dist/cli/commands/stats.js +74 -0
  58. package/dist/cli/commands/stats.js.map +1 -0
  59. package/dist/cli/commands/status.d.ts +10 -0
  60. package/dist/cli/commands/status.d.ts.map +1 -0
  61. package/dist/cli/commands/status.js +121 -0
  62. package/dist/cli/commands/status.js.map +1 -0
  63. package/dist/cli/index.d.ts +13 -0
  64. package/dist/cli/index.d.ts.map +1 -0
  65. package/dist/cli/index.js +174 -0
  66. package/dist/cli/index.js.map +1 -0
  67. package/dist/cli/utils/ensure-credentials.d.ts +32 -0
  68. package/dist/cli/utils/ensure-credentials.d.ts.map +1 -0
  69. package/dist/cli/utils/ensure-credentials.js +280 -0
  70. package/dist/cli/utils/ensure-credentials.js.map +1 -0
  71. package/dist/cli/utils/local-agents.d.ts +49 -0
  72. package/dist/cli/utils/local-agents.d.ts.map +1 -0
  73. package/dist/cli/utils/local-agents.js +117 -0
  74. package/dist/cli/utils/local-agents.js.map +1 -0
  75. package/dist/config/config.d.ts +28 -0
  76. package/dist/config/config.d.ts.map +1 -0
  77. package/dist/config/config.js +182 -0
  78. package/dist/config/config.js.map +1 -0
  79. package/dist/db/database.d.ts +150 -0
  80. package/dist/db/database.d.ts.map +1 -0
  81. package/dist/db/database.js +838 -0
  82. package/dist/db/database.js.map +1 -0
  83. package/dist/engagement/proactive-engine.d.ts +246 -0
  84. package/dist/engagement/proactive-engine.d.ts.map +1 -0
  85. package/dist/engagement/proactive-engine.js +1753 -0
  86. package/dist/engagement/proactive-engine.js.map +1 -0
  87. package/dist/index.d.ts +6 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +87 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/llm/llm-client.d.ts +181 -0
  92. package/dist/llm/llm-client.d.ts.map +1 -0
  93. package/dist/llm/llm-client.js +658 -0
  94. package/dist/llm/llm-client.js.map +1 -0
  95. package/dist/logging/logger.d.ts +14 -0
  96. package/dist/logging/logger.d.ts.map +1 -0
  97. package/dist/logging/logger.js +47 -0
  98. package/dist/logging/logger.js.map +1 -0
  99. package/dist/polling/notification-poller.d.ts +70 -0
  100. package/dist/polling/notification-poller.d.ts.map +1 -0
  101. package/dist/polling/notification-poller.js +190 -0
  102. package/dist/polling/notification-poller.js.map +1 -0
  103. package/dist/rate-limit/rate-limiter.d.ts +56 -0
  104. package/dist/rate-limit/rate-limiter.d.ts.map +1 -0
  105. package/dist/rate-limit/rate-limiter.js +202 -0
  106. package/dist/rate-limit/rate-limiter.js.map +1 -0
  107. package/dist/runtime/event-loop.d.ts +101 -0
  108. package/dist/runtime/event-loop.d.ts.map +1 -0
  109. package/dist/runtime/event-loop.js +680 -0
  110. package/dist/runtime/event-loop.js.map +1 -0
  111. package/dist/tools/manager-agent.d.ts +48 -0
  112. package/dist/tools/manager-agent.d.ts.map +1 -0
  113. package/dist/tools/manager-agent.js +440 -0
  114. package/dist/tools/manager-agent.js.map +1 -0
  115. package/dist/tools/paper-tools.d.ts +70 -0
  116. package/dist/tools/paper-tools.d.ts.map +1 -0
  117. package/dist/tools/paper-tools.js +446 -0
  118. package/dist/tools/paper-tools.js.map +1 -0
  119. package/dist/types.d.ts +266 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +5 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/utils/cost-tracker.d.ts +51 -0
  124. package/dist/utils/cost-tracker.d.ts.map +1 -0
  125. package/dist/utils/cost-tracker.js +161 -0
  126. package/dist/utils/cost-tracker.js.map +1 -0
  127. package/dist/utils/similarity.d.ts +37 -0
  128. package/dist/utils/similarity.d.ts.map +1 -0
  129. package/dist/utils/similarity.js +78 -0
  130. package/dist/utils/similarity.js.map +1 -0
  131. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-credentials.js","sourceRoot":"","sources":["../../../src/cli/utils/ensure-credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Local Agent Storage
3
+ * Persists created agents locally so users can select them in future sessions
4
+ */
5
+ export interface LocalAgent {
6
+ id: string;
7
+ handle: string;
8
+ displayName: string;
9
+ apiKey: string;
10
+ persona: {
11
+ voice: string;
12
+ epistemics: string;
13
+ preferredTopics: string[];
14
+ spiceLevel: number;
15
+ catchphrases: string[];
16
+ petPeeves: string[];
17
+ };
18
+ createdAt: string;
19
+ lastUsed?: string;
20
+ }
21
+ /**
22
+ * Get all locally stored agents
23
+ */
24
+ export declare function getLocalAgents(): LocalAgent[];
25
+ /**
26
+ * Save a new agent locally
27
+ */
28
+ export declare function saveLocalAgent(agent: LocalAgent): void;
29
+ /**
30
+ * Update last used time for an agent
31
+ */
32
+ export declare function touchAgent(handle: string): void;
33
+ /**
34
+ * Update an agent's display name (and optionally handle) in local storage
35
+ */
36
+ export declare function updateLocalAgent(handle: string, updates: Partial<Pick<LocalAgent, 'displayName' | 'handle'>>): boolean;
37
+ /**
38
+ * Delete an agent from local storage
39
+ */
40
+ export declare function deleteLocalAgent(handle: string): boolean;
41
+ /**
42
+ * Get a specific agent by handle
43
+ */
44
+ export declare function getLocalAgent(handle: string): LocalAgent | undefined;
45
+ /**
46
+ * Get agents sorted by last used (most recent first)
47
+ */
48
+ export declare function getRecentAgents(limit?: number): LocalAgent[];
49
+ //# sourceMappingURL=local-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/local-agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqCD;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAG7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAetD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC,CAAC,GAC3D,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,MAAU,GAAG,UAAU,EAAE,CAS/D"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Local Agent Storage
3
+ * Persists created agents locally so users can select them in future sessions
4
+ */
5
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
6
+ import { join } from 'path';
7
+ import { homedir } from 'os';
8
+ // Store in ~/.flamebird-agents/
9
+ const STORE_DIR = join(homedir(), '.flamebird-agents');
10
+ const STORE_FILE = join(STORE_DIR, 'agents.json');
11
+ function ensureStoreDir() {
12
+ if (!existsSync(STORE_DIR)) {
13
+ mkdirSync(STORE_DIR, { recursive: true });
14
+ }
15
+ }
16
+ function loadStore() {
17
+ ensureStoreDir();
18
+ if (!existsSync(STORE_FILE)) {
19
+ return { version: 1, agents: [] };
20
+ }
21
+ try {
22
+ const content = readFileSync(STORE_FILE, 'utf-8');
23
+ return JSON.parse(content);
24
+ }
25
+ catch {
26
+ return { version: 1, agents: [] };
27
+ }
28
+ }
29
+ function saveStore(store) {
30
+ ensureStoreDir();
31
+ writeFileSync(STORE_FILE, JSON.stringify(store, null, 2));
32
+ }
33
+ /**
34
+ * Get all locally stored agents
35
+ */
36
+ export function getLocalAgents() {
37
+ const store = loadStore();
38
+ return store.agents;
39
+ }
40
+ /**
41
+ * Save a new agent locally
42
+ */
43
+ export function saveLocalAgent(agent) {
44
+ const store = loadStore();
45
+ // Check if agent already exists (by handle)
46
+ const existingIndex = store.agents.findIndex(a => a.handle === agent.handle);
47
+ if (existingIndex >= 0) {
48
+ // Update existing
49
+ store.agents[existingIndex] = { ...agent, lastUsed: new Date().toISOString() };
50
+ }
51
+ else {
52
+ // Add new
53
+ store.agents.push(agent);
54
+ }
55
+ saveStore(store);
56
+ }
57
+ /**
58
+ * Update last used time for an agent
59
+ */
60
+ export function touchAgent(handle) {
61
+ const store = loadStore();
62
+ const agent = store.agents.find(a => a.handle === handle);
63
+ if (agent) {
64
+ agent.lastUsed = new Date().toISOString();
65
+ saveStore(store);
66
+ }
67
+ }
68
+ /**
69
+ * Update an agent's display name (and optionally handle) in local storage
70
+ */
71
+ export function updateLocalAgent(handle, updates) {
72
+ const store = loadStore();
73
+ const agent = store.agents.find(a => a.handle === handle);
74
+ if (!agent)
75
+ return false;
76
+ if (updates.displayName !== undefined)
77
+ agent.displayName = updates.displayName;
78
+ if (updates.handle !== undefined)
79
+ agent.handle = updates.handle;
80
+ agent.lastUsed = new Date().toISOString();
81
+ saveStore(store);
82
+ return true;
83
+ }
84
+ /**
85
+ * Delete an agent from local storage
86
+ */
87
+ export function deleteLocalAgent(handle) {
88
+ const store = loadStore();
89
+ const initialLength = store.agents.length;
90
+ store.agents = store.agents.filter(a => a.handle !== handle);
91
+ if (store.agents.length < initialLength) {
92
+ saveStore(store);
93
+ return true;
94
+ }
95
+ return false;
96
+ }
97
+ /**
98
+ * Get a specific agent by handle
99
+ */
100
+ export function getLocalAgent(handle) {
101
+ const store = loadStore();
102
+ return store.agents.find(a => a.handle === handle);
103
+ }
104
+ /**
105
+ * Get agents sorted by last used (most recent first)
106
+ */
107
+ export function getRecentAgents(limit = 5) {
108
+ const store = loadStore();
109
+ return store.agents
110
+ .sort((a, b) => {
111
+ const aTime = a.lastUsed ? new Date(a.lastUsed).getTime() : new Date(a.createdAt).getTime();
112
+ const bTime = b.lastUsed ? new Date(b.lastUsed).getTime() : new Date(b.createdAt).getTime();
113
+ return bTime - aTime;
114
+ })
115
+ .slice(0, limit);
116
+ }
117
+ //# sourceMappingURL=local-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-agents.js","sourceRoot":"","sources":["../../../src/cli/utils/local-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Configuration Loader
3
+ * Loads and validates runtime configuration from environment and files
4
+ */
5
+ import type { RuntimeConfig } from '../types.js';
6
+ /**
7
+ * Resolve config file path: explicit arg > CONFIG_PATH/ENV_PATH > .env
8
+ * Enables production to point at a secret mount (e.g. CONFIG_PATH=/secrets/.env).
9
+ */
10
+ export declare function getConfigPath(envPath?: string): string;
11
+ /**
12
+ * Load configuration from environment variables.
13
+ * Cached per process so we only load and log once (avoids log spam during interactive CLI).
14
+ */
15
+ export declare function loadConfig(envPath?: string): RuntimeConfig;
16
+ export interface ValidateSecretsOptions {
17
+ /** If false, LLM keys are not required (e.g. for add/list). Default true. */
18
+ requireLlm?: boolean;
19
+ }
20
+ /**
21
+ * Validate that required secrets are set. Call from CLI commands so production fails fast.
22
+ */
23
+ export declare function validateSecrets(options?: ValidateSecretsOptions): void;
24
+ /**
25
+ * Get config value with type safety
26
+ */
27
+ export declare function getConfigValue<K extends keyof RuntimeConfig>(config: RuntimeConfig, key: K): RuntimeConfig[K];
28
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAqDlE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAgF1D;AAiBD,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,IAAI,CAoB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,aAAa,EAC1D,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,CAAC,GACL,aAAa,CAAC,CAAC,CAAC,CAElB"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Configuration Loader
3
+ * Loads and validates runtime configuration from environment and files
4
+ */
5
+ import { config as loadEnv } from 'dotenv';
6
+ import { z } from 'zod';
7
+ import { createLogger } from '../logging/logger.js';
8
+ const logger = createLogger('config');
9
+ let cachedConfig = null;
10
+ let cachedEnvPath = '.env';
11
+ let encryptionKeyWarned = false;
12
+ // Default agent-side rate limits — aligned to spec; server enforces separate, higher limits
13
+ const DEFAULT_RATE_LIMITS = [
14
+ { action: 'paper', maxRequests: 1, window: 'day', cooldownMs: 60 * 60 * 1000 }, // 1/day, 1hr cooldown
15
+ { action: 'take', maxRequests: 24, window: 'day', cooldownMs: 60 * 60 * 1000 }, // 1/hr = 24/day, 1hr cooldown
16
+ { action: 'review', maxRequests: 12, window: 'day', cooldownMs: 60 * 1000 }, // 12/day, 60s cooldown (was 2hr)
17
+ { action: 'comment', maxRequests: 288, window: 'day', cooldownMs: 30 * 1000 }, // 1/30s = 288/day, 30s cooldown (was 5min)
18
+ { action: 'vote', maxRequests: 1440, window: 'day', cooldownMs: 60 * 1000 }, // 1/min = 1440/day, 1min cooldown
19
+ { action: 'follow', maxRequests: 1440, window: 'day', cooldownMs: 60 * 1000 }, // 1/min = 1440/day, 1min cooldown
20
+ { action: 'sciencesub', maxRequests: 3, window: 'day', cooldownMs: 0 }, // 3/day, no cooldown
21
+ ];
22
+ // Zod schema for validation
23
+ const ConfigSchema = z.object({
24
+ api: z.object({
25
+ apiUrl: z.string().url(),
26
+ adminSecret: z.string().optional(),
27
+ }),
28
+ llm: z.object({
29
+ provider: z.enum(['openrouter', 'anthropic', 'openai']),
30
+ apiKey: z.string().min(1),
31
+ model: z.string().min(1),
32
+ }),
33
+ polling: z.object({
34
+ baseIntervalMs: z.number().min(5000).max(300000),
35
+ maxIntervalMs: z.number().min(30000).max(3600000),
36
+ backoffMultiplier: z.number().min(1).max(5),
37
+ }),
38
+ rateLimits: z.array(z.object({
39
+ action: z.string(),
40
+ maxRequests: z.number().positive(),
41
+ window: z.enum(['minute', 'hour', 'day']),
42
+ cooldownMs: z.number().nonnegative(),
43
+ })),
44
+ security: z.object({
45
+ encryptionKey: z.string().min(16),
46
+ }),
47
+ database: z.object({
48
+ path: z.string().min(1),
49
+ }),
50
+ logging: z.object({
51
+ level: z.enum(['debug', 'info', 'warn', 'error']),
52
+ }),
53
+ });
54
+ /**
55
+ * Resolve config file path: explicit arg > CONFIG_PATH/ENV_PATH > .env
56
+ * Enables production to point at a secret mount (e.g. CONFIG_PATH=/secrets/.env).
57
+ */
58
+ export function getConfigPath(envPath) {
59
+ return envPath || process.env.CONFIG_PATH || process.env.ENV_PATH || '.env';
60
+ }
61
+ /**
62
+ * Load configuration from environment variables.
63
+ * Cached per process so we only load and log once (avoids log spam during interactive CLI).
64
+ */
65
+ export function loadConfig(envPath) {
66
+ const pathKey = getConfigPath(envPath);
67
+ if (cachedConfig !== null && cachedEnvPath === pathKey) {
68
+ return cachedConfig;
69
+ }
70
+ // Load .env file if it exists
71
+ const result = loadEnv({ path: pathKey });
72
+ if (result.error && !process.env.AGENT4SCIENCE_API_URL) {
73
+ logger.warn('No .env file found, using environment variables');
74
+ }
75
+ const apiUrl = process.env.AGENT4SCIENCE_API_URL || 'http://localhost:3000';
76
+ // Build config from environment
77
+ const config = {
78
+ api: {
79
+ apiUrl,
80
+ adminSecret: process.env.ADMIN_SECRET,
81
+ },
82
+ llm: {
83
+ provider: process.env.LLM_PROVIDER || 'openrouter',
84
+ apiKey: process.env.LLM_API_KEY || process.env.OPENROUTER_API_KEY || '',
85
+ model: process.env.LLM_MODEL || 'anthropic/claude-sonnet-4',
86
+ },
87
+ polling: {
88
+ baseIntervalMs: parseInt(process.env.POLL_BASE_INTERVAL_MS || '30000', 10),
89
+ maxIntervalMs: parseInt(process.env.POLL_MAX_INTERVAL_MS || '300000', 10),
90
+ backoffMultiplier: parseFloat(process.env.POLL_BACKOFF_MULTIPLIER || '1.5'),
91
+ },
92
+ proactive: {
93
+ discoveryIntervalMs: parseInt(process.env.DISCOVERY_INTERVAL_MS || '60000', 10),
94
+ maxDiscoveryItems: parseInt(process.env.MAX_DISCOVERY_ITEMS || '10', 10),
95
+ minEngagementThreshold: parseFloat(process.env.MIN_ENGAGEMENT_THRESHOLD || '0.6'),
96
+ enableAgentFollowing: process.env.ENABLE_AGENT_FOLLOWING !== 'false',
97
+ enableSciencesubJoining: process.env.ENABLE_SCIENCESUB_JOINING !== 'false',
98
+ enableSciencesubCreation: process.env.ENABLE_SCIENCESUB_CREATION !== 'false',
99
+ enableTakeCreation: process.env.ENABLE_TAKE_CREATION !== 'false',
100
+ enableVoting: process.env.ENABLE_VOTING !== 'false',
101
+ // Master switch: set ENABLE_POSTING=false to disable content creation
102
+ // Default: true (agents can create comments, takes, papers, notes)
103
+ enablePosting: process.env.ENABLE_POSTING !== 'false',
104
+ // Override action weights for testing (JSON object, e.g. '{"reply":1,"comment_paper":1}')
105
+ // Zero-weight actions are effectively disabled. Weights are auto-normalized.
106
+ actionWeights: process.env.ACTION_WEIGHTS ? JSON.parse(process.env.ACTION_WEIGHTS) : undefined,
107
+ },
108
+ rateLimits: DEFAULT_RATE_LIMITS,
109
+ security: {
110
+ encryptionKey: process.env.ENCRYPTION_KEY || generateDefaultKey(),
111
+ },
112
+ database: {
113
+ path: process.env.DB_PATH || './data/runtime.db',
114
+ },
115
+ logging: {
116
+ level: process.env.LOG_LEVEL || 'info',
117
+ },
118
+ };
119
+ // Validate config
120
+ try {
121
+ ConfigSchema.parse(config);
122
+ }
123
+ catch (error) {
124
+ if (error instanceof z.ZodError) {
125
+ const issues = error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
126
+ throw new Error(`Invalid configuration: ${issues}`);
127
+ }
128
+ throw error;
129
+ }
130
+ logger.info({
131
+ apiUrl: config.api.apiUrl,
132
+ llmProvider: config.llm.provider,
133
+ llmModel: config.llm.model,
134
+ pollInterval: `${config.polling.baseIntervalMs}ms - ${config.polling.maxIntervalMs}ms`,
135
+ dbPath: config.database.path,
136
+ }, 'Configuration loaded');
137
+ cachedConfig = config;
138
+ cachedEnvPath = pathKey;
139
+ return config;
140
+ }
141
+ /**
142
+ * Generate a default encryption key (for development only).
143
+ * Warns only once per process to avoid log spam during interactive CLI.
144
+ */
145
+ function generateDefaultKey() {
146
+ if (process.env.NODE_ENV === 'production') {
147
+ throw new Error('ENCRYPTION_KEY must be set in production');
148
+ }
149
+ if (!encryptionKeyWarned) {
150
+ encryptionKeyWarned = true;
151
+ logger.warn('Using default encryption key – fine for local dev; set ENCRYPTION_KEY in .env for production');
152
+ }
153
+ return 'dev-key-not-secure-0123456789abcdef';
154
+ }
155
+ /**
156
+ * Validate that required secrets are set. Call from CLI commands so production fails fast.
157
+ */
158
+ export function validateSecrets(options = {}) {
159
+ const { requireLlm = true } = options;
160
+ const missing = [];
161
+ if (requireLlm && !process.env.LLM_API_KEY && !process.env.OPENROUTER_API_KEY) {
162
+ missing.push('LLM_API_KEY or OPENROUTER_API_KEY');
163
+ }
164
+ if (process.env.NODE_ENV === 'production') {
165
+ if (!process.env.ENCRYPTION_KEY) {
166
+ missing.push('ENCRYPTION_KEY');
167
+ }
168
+ if (!process.env.AGENT4SCIENCE_API_URL) {
169
+ missing.push('AGENT4SCIENCE_API_URL');
170
+ }
171
+ }
172
+ if (missing.length > 0) {
173
+ throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
174
+ }
175
+ }
176
+ /**
177
+ * Get config value with type safety
178
+ */
179
+ export function getConfigValue(config, key) {
180
+ return config[key];
181
+ }
182
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * SQLite Database Layer
3
+ * Persistent storage for agents, actions, and state
4
+ */
5
+ import type { AgentConfig, AgentCapability, QueuedAction } from '../types.js';
6
+ export declare class RuntimeDatabase {
7
+ private db;
8
+ constructor(dbPath: string);
9
+ private initialize;
10
+ /** Run schema migrations for existing databases. */
11
+ private migrate;
12
+ addAgent(config: AgentConfig, apiKeyEncrypted: string, paperIntervalMs?: number): void;
13
+ getAgent(id: string): (AgentConfig & {
14
+ apiKeyEncrypted: string;
15
+ }) | null;
16
+ getAgentByHandle(handle: string): (AgentConfig & {
17
+ apiKeyEncrypted: string;
18
+ }) | null;
19
+ getAllAgents(): (AgentConfig & {
20
+ apiKeyEncrypted: string;
21
+ })[];
22
+ /**
23
+ * Update agent details (handle, displayName)
24
+ */
25
+ updateAgent(id: string, updates: {
26
+ handle?: string;
27
+ displayName?: string;
28
+ }): void;
29
+ updateAgentEnabled(id: string, enabled: boolean): void;
30
+ deleteAgent(id: string): void;
31
+ updateAgentCapability(id: string, capability: AgentCapability): void;
32
+ /** Get the paper generation schedule for an agent. */
33
+ getPaperGenerationConfig(agentId: string): {
34
+ intervalMs: number;
35
+ lastGenerationTime: Date | null;
36
+ };
37
+ /** Record that an agent just generated a paper. */
38
+ recordPaperGeneration(agentId: string): void;
39
+ /** Update how often an agent generates papers (in ms). */
40
+ setPaperGenerationInterval(agentId: string, intervalMs: number): void;
41
+ queueAction(action: QueuedAction): void;
42
+ getNextAction(): QueuedAction | null;
43
+ markActionComplete(id: string): void;
44
+ markActionFailed(id: string, error: string, retryAfter?: Date): void;
45
+ /**
46
+ * Check if an agent already has a pending action of a given type
47
+ */
48
+ hasPendingAction(agentId: string, type: string): boolean;
49
+ /**
50
+ * Reschedule a rate-limited action WITHOUT incrementing attempts
51
+ */
52
+ rescheduleAction(id: string, reason: string, executeAfter: Date): void;
53
+ getQueueStats(): {
54
+ pending: number;
55
+ completed: number;
56
+ failed: number;
57
+ };
58
+ updateAgentState(agentId: string, state: string, updates?: {
59
+ lastPollTime?: Date;
60
+ lastActionTime?: Date;
61
+ errorCount?: number;
62
+ lastError?: string | null;
63
+ }): void;
64
+ isNotificationProcessed(notificationId: string): boolean;
65
+ markNotificationProcessed(notificationId: string, agentId: string): void;
66
+ logAction(agentId: string | null, action: string, targetId: string | null, targetType: string | null, success: boolean, error?: string, metadata?: Record<string, unknown>): void;
67
+ cleanupOldData(daysToKeep?: number): void;
68
+ /**
69
+ * Record an interaction between two agents (for reciprocity tracking)
70
+ */
71
+ recordInteraction(agentId: string, otherAgentId: string, interactionType: 'comment' | 'reply' | 'follow' | 'vote'): void;
72
+ /**
73
+ * Get total interaction count between two agents (all types)
74
+ */
75
+ getInteractionCount(agentId: string, otherAgentId: string): number;
76
+ /**
77
+ * Get interactions from another agent towards this agent (for reciprocity)
78
+ * Returns how many times otherAgent has engaged with this agent
79
+ */
80
+ getIncomingInteractions(agentId: string, otherAgentId: string): number;
81
+ /**
82
+ * Get most frequently interacted agents (social circle)
83
+ */
84
+ getTopInteractedAgents(agentId: string, limit?: number): Array<{
85
+ agentId: string;
86
+ count: number;
87
+ }>;
88
+ /**
89
+ * Get recent comments by an agent (for similarity checking)
90
+ */
91
+ getRecentCommentsByAgent(agentId: string, limit?: number): Array<{
92
+ body: string;
93
+ createdAt: string;
94
+ }>;
95
+ close(): void;
96
+ getAgentState(agentId: string): {
97
+ state: string;
98
+ lastPollTime: Date | null;
99
+ lastActionTime: Date | null;
100
+ errorCount: number;
101
+ lastError: string | null;
102
+ } | null;
103
+ getRecentLogs(limit?: number): Array<{
104
+ agentId: string;
105
+ actionType: string;
106
+ targetId: string;
107
+ success: boolean;
108
+ error: string | null;
109
+ timestamp: string;
110
+ }>;
111
+ hasEngaged(agentId: string, contentId: string, actionType?: string): boolean;
112
+ recordEngagement(agentId: string, contentId: string, contentType: 'paper' | 'take' | 'comment' | 'review', actionType: string): void;
113
+ getEngagementCount(agentId: string): number;
114
+ getRecentEngagements(agentId: string, limit?: number): Array<{
115
+ contentId: string;
116
+ contentType: string;
117
+ actionType: string;
118
+ engagedAt: Date;
119
+ }>;
120
+ hasFollowed(followerId: string, followingId: string): boolean;
121
+ recordFollow(followerId: string, followingId: string): void;
122
+ getFollowingCount(agentId: string): number;
123
+ getFollowing(agentId: string): string[];
124
+ hasJoinedSciencesub(agentId: string, slug: string): boolean;
125
+ recordSciencesubJoin(agentId: string, slug: string): void;
126
+ getJoinedSciencesubs(agentId: string): string[];
127
+ getMembershipCount(agentId: string): number;
128
+ getAgentActivitySummary(agentId: string): {
129
+ papers: number;
130
+ takes: number;
131
+ comments: number;
132
+ votes: number;
133
+ follows: number;
134
+ total: number;
135
+ };
136
+ getAllAgentsActivitySummary(): Array<{
137
+ agentId: string;
138
+ handle: string;
139
+ papers: number;
140
+ takes: number;
141
+ comments: number;
142
+ votes: number;
143
+ follows: number;
144
+ total: number;
145
+ }>;
146
+ }
147
+ export declare function createDatabase(dbPath: string): RuntimeDatabase;
148
+ export declare function getDatabase(): RuntimeDatabase;
149
+ export declare function closeDatabase(): void;
150
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"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"}