@blackms/aistack 1.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.
Files changed (214) hide show
  1. package/README.md +244 -0
  2. package/dist/agents/definitions/analyst.d.ts +6 -0
  3. package/dist/agents/definitions/analyst.d.ts.map +1 -0
  4. package/dist/agents/definitions/analyst.js +53 -0
  5. package/dist/agents/definitions/analyst.js.map +1 -0
  6. package/dist/agents/definitions/architect.d.ts +6 -0
  7. package/dist/agents/definitions/architect.d.ts.map +1 -0
  8. package/dist/agents/definitions/architect.js +46 -0
  9. package/dist/agents/definitions/architect.js.map +1 -0
  10. package/dist/agents/definitions/coder.d.ts +6 -0
  11. package/dist/agents/definitions/coder.d.ts.map +1 -0
  12. package/dist/agents/definitions/coder.js +39 -0
  13. package/dist/agents/definitions/coder.js.map +1 -0
  14. package/dist/agents/definitions/coordinator.d.ts +6 -0
  15. package/dist/agents/definitions/coordinator.d.ts.map +1 -0
  16. package/dist/agents/definitions/coordinator.js +54 -0
  17. package/dist/agents/definitions/coordinator.js.map +1 -0
  18. package/dist/agents/definitions/index.d.ts +11 -0
  19. package/dist/agents/definitions/index.d.ts.map +1 -0
  20. package/dist/agents/definitions/index.js +11 -0
  21. package/dist/agents/definitions/index.js.map +1 -0
  22. package/dist/agents/definitions/researcher.d.ts +6 -0
  23. package/dist/agents/definitions/researcher.d.ts.map +1 -0
  24. package/dist/agents/definitions/researcher.js +39 -0
  25. package/dist/agents/definitions/researcher.js.map +1 -0
  26. package/dist/agents/definitions/reviewer.d.ts +6 -0
  27. package/dist/agents/definitions/reviewer.d.ts.map +1 -0
  28. package/dist/agents/definitions/reviewer.js +46 -0
  29. package/dist/agents/definitions/reviewer.js.map +1 -0
  30. package/dist/agents/definitions/tester.d.ts +6 -0
  31. package/dist/agents/definitions/tester.d.ts.map +1 -0
  32. package/dist/agents/definitions/tester.js +44 -0
  33. package/dist/agents/definitions/tester.js.map +1 -0
  34. package/dist/agents/index.d.ts +7 -0
  35. package/dist/agents/index.d.ts.map +1 -0
  36. package/dist/agents/index.js +7 -0
  37. package/dist/agents/index.js.map +1 -0
  38. package/dist/agents/registry.d.ts +41 -0
  39. package/dist/agents/registry.d.ts.map +1 -0
  40. package/dist/agents/registry.js +107 -0
  41. package/dist/agents/registry.js.map +1 -0
  42. package/dist/agents/spawner.d.ts +62 -0
  43. package/dist/agents/spawner.d.ts.map +1 -0
  44. package/dist/agents/spawner.js +169 -0
  45. package/dist/agents/spawner.js.map +1 -0
  46. package/dist/cli/commands/agent.d.ts +6 -0
  47. package/dist/cli/commands/agent.d.ts.map +1 -0
  48. package/dist/cli/commands/agent.js +144 -0
  49. package/dist/cli/commands/agent.js.map +1 -0
  50. package/dist/cli/commands/index.d.ts +10 -0
  51. package/dist/cli/commands/index.d.ts.map +1 -0
  52. package/dist/cli/commands/index.js +10 -0
  53. package/dist/cli/commands/index.js.map +1 -0
  54. package/dist/cli/commands/init.d.ts +6 -0
  55. package/dist/cli/commands/init.d.ts.map +1 -0
  56. package/dist/cli/commands/init.js +50 -0
  57. package/dist/cli/commands/init.js.map +1 -0
  58. package/dist/cli/commands/mcp.d.ts +6 -0
  59. package/dist/cli/commands/mcp.d.ts.map +1 -0
  60. package/dist/cli/commands/mcp.js +82 -0
  61. package/dist/cli/commands/mcp.js.map +1 -0
  62. package/dist/cli/commands/memory.d.ts +6 -0
  63. package/dist/cli/commands/memory.d.ts.map +1 -0
  64. package/dist/cli/commands/memory.js +157 -0
  65. package/dist/cli/commands/memory.js.map +1 -0
  66. package/dist/cli/commands/plugin.d.ts +6 -0
  67. package/dist/cli/commands/plugin.d.ts.map +1 -0
  68. package/dist/cli/commands/plugin.js +146 -0
  69. package/dist/cli/commands/plugin.js.map +1 -0
  70. package/dist/cli/commands/status.d.ts +6 -0
  71. package/dist/cli/commands/status.d.ts.map +1 -0
  72. package/dist/cli/commands/status.js +115 -0
  73. package/dist/cli/commands/status.js.map +1 -0
  74. package/dist/cli/index.d.ts +6 -0
  75. package/dist/cli/index.d.ts.map +1 -0
  76. package/dist/cli/index.js +41 -0
  77. package/dist/cli/index.js.map +1 -0
  78. package/dist/coordination/index.d.ts +7 -0
  79. package/dist/coordination/index.d.ts.map +1 -0
  80. package/dist/coordination/index.js +7 -0
  81. package/dist/coordination/index.js.map +1 -0
  82. package/dist/coordination/message-bus.d.ts +64 -0
  83. package/dist/coordination/message-bus.d.ts.map +1 -0
  84. package/dist/coordination/message-bus.js +148 -0
  85. package/dist/coordination/message-bus.js.map +1 -0
  86. package/dist/coordination/task-queue.d.ts +71 -0
  87. package/dist/coordination/task-queue.d.ts.map +1 -0
  88. package/dist/coordination/task-queue.js +140 -0
  89. package/dist/coordination/task-queue.js.map +1 -0
  90. package/dist/coordination/topology.d.ts +68 -0
  91. package/dist/coordination/topology.d.ts.map +1 -0
  92. package/dist/coordination/topology.js +195 -0
  93. package/dist/coordination/topology.js.map +1 -0
  94. package/dist/github/client.d.ts +56 -0
  95. package/dist/github/client.d.ts.map +1 -0
  96. package/dist/github/client.js +179 -0
  97. package/dist/github/client.js.map +1 -0
  98. package/dist/github/index.d.ts +5 -0
  99. package/dist/github/index.d.ts.map +1 -0
  100. package/dist/github/index.js +5 -0
  101. package/dist/github/index.js.map +1 -0
  102. package/dist/hooks/index.d.ts +29 -0
  103. package/dist/hooks/index.d.ts.map +1 -0
  104. package/dist/hooks/index.js +112 -0
  105. package/dist/hooks/index.js.map +1 -0
  106. package/dist/hooks/session.d.ts +16 -0
  107. package/dist/hooks/session.d.ts.map +1 -0
  108. package/dist/hooks/session.js +60 -0
  109. package/dist/hooks/session.js.map +1 -0
  110. package/dist/hooks/task.d.ts +16 -0
  111. package/dist/hooks/task.d.ts.map +1 -0
  112. package/dist/hooks/task.js +82 -0
  113. package/dist/hooks/task.js.map +1 -0
  114. package/dist/index.d.ts +16 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +32 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/mcp/index.d.ts +6 -0
  119. package/dist/mcp/index.d.ts.map +1 -0
  120. package/dist/mcp/index.js +6 -0
  121. package/dist/mcp/index.js.map +1 -0
  122. package/dist/mcp/server.d.ts +22 -0
  123. package/dist/mcp/server.d.ts.map +1 -0
  124. package/dist/mcp/server.js +128 -0
  125. package/dist/mcp/server.js.map +1 -0
  126. package/dist/mcp/tools/agent-tools.d.ts +174 -0
  127. package/dist/mcp/tools/agent-tools.d.ts.map +1 -0
  128. package/dist/mcp/tools/agent-tools.js +214 -0
  129. package/dist/mcp/tools/agent-tools.js.map +1 -0
  130. package/dist/mcp/tools/github-tools.d.ts +229 -0
  131. package/dist/mcp/tools/github-tools.d.ts.map +1 -0
  132. package/dist/mcp/tools/github-tools.js +286 -0
  133. package/dist/mcp/tools/github-tools.js.map +1 -0
  134. package/dist/mcp/tools/index.d.ts +10 -0
  135. package/dist/mcp/tools/index.d.ts.map +1 -0
  136. package/dist/mcp/tools/index.js +10 -0
  137. package/dist/mcp/tools/index.js.map +1 -0
  138. package/dist/mcp/tools/memory-tools.d.ts +190 -0
  139. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  140. package/dist/mcp/tools/memory-tools.js +207 -0
  141. package/dist/mcp/tools/memory-tools.js.map +1 -0
  142. package/dist/mcp/tools/session-tools.d.ts +116 -0
  143. package/dist/mcp/tools/session-tools.d.ts.map +1 -0
  144. package/dist/mcp/tools/session-tools.js +151 -0
  145. package/dist/mcp/tools/session-tools.js.map +1 -0
  146. package/dist/mcp/tools/system-tools.d.ts +98 -0
  147. package/dist/mcp/tools/system-tools.d.ts.map +1 -0
  148. package/dist/mcp/tools/system-tools.js +165 -0
  149. package/dist/mcp/tools/system-tools.js.map +1 -0
  150. package/dist/mcp/tools/task-tools.d.ts +170 -0
  151. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  152. package/dist/mcp/tools/task-tools.js +188 -0
  153. package/dist/mcp/tools/task-tools.js.map +1 -0
  154. package/dist/memory/fts-search.d.ts +46 -0
  155. package/dist/memory/fts-search.d.ts.map +1 -0
  156. package/dist/memory/fts-search.js +136 -0
  157. package/dist/memory/fts-search.js.map +1 -0
  158. package/dist/memory/index.d.ts +77 -0
  159. package/dist/memory/index.d.ts.map +1 -0
  160. package/dist/memory/index.js +203 -0
  161. package/dist/memory/index.js.map +1 -0
  162. package/dist/memory/sqlite-store.d.ts +36 -0
  163. package/dist/memory/sqlite-store.d.ts.map +1 -0
  164. package/dist/memory/sqlite-store.js +371 -0
  165. package/dist/memory/sqlite-store.js.map +1 -0
  166. package/dist/memory/vector-search.d.ts +43 -0
  167. package/dist/memory/vector-search.d.ts.map +1 -0
  168. package/dist/memory/vector-search.js +179 -0
  169. package/dist/memory/vector-search.js.map +1 -0
  170. package/dist/plugins/index.d.ts +7 -0
  171. package/dist/plugins/index.d.ts.map +1 -0
  172. package/dist/plugins/index.js +7 -0
  173. package/dist/plugins/index.js.map +1 -0
  174. package/dist/plugins/loader.d.ts +33 -0
  175. package/dist/plugins/loader.d.ts.map +1 -0
  176. package/dist/plugins/loader.js +147 -0
  177. package/dist/plugins/loader.js.map +1 -0
  178. package/dist/plugins/registry.d.ts +48 -0
  179. package/dist/plugins/registry.d.ts.map +1 -0
  180. package/dist/plugins/registry.js +72 -0
  181. package/dist/plugins/registry.js.map +1 -0
  182. package/dist/plugins/types.d.ts +5 -0
  183. package/dist/plugins/types.d.ts.map +1 -0
  184. package/dist/plugins/types.js +5 -0
  185. package/dist/plugins/types.js.map +1 -0
  186. package/dist/providers/index.d.ts +49 -0
  187. package/dist/providers/index.d.ts.map +1 -0
  188. package/dist/providers/index.js +254 -0
  189. package/dist/providers/index.js.map +1 -0
  190. package/dist/types.d.ts +189 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +10 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/utils/config.d.ts +32 -0
  195. package/dist/utils/config.d.ts.map +1 -0
  196. package/dist/utils/config.js +194 -0
  197. package/dist/utils/config.js.map +1 -0
  198. package/dist/utils/embeddings.d.ts +23 -0
  199. package/dist/utils/embeddings.d.ts.map +1 -0
  200. package/dist/utils/embeddings.js +151 -0
  201. package/dist/utils/embeddings.js.map +1 -0
  202. package/dist/utils/index.d.ts +8 -0
  203. package/dist/utils/index.d.ts.map +1 -0
  204. package/dist/utils/index.js +8 -0
  205. package/dist/utils/index.js.map +1 -0
  206. package/dist/utils/logger.d.ts +24 -0
  207. package/dist/utils/logger.d.ts.map +1 -0
  208. package/dist/utils/logger.js +96 -0
  209. package/dist/utils/logger.js.map +1 -0
  210. package/dist/utils/validation.d.ts +264 -0
  211. package/dist/utils/validation.d.ts.map +1 -0
  212. package/dist/utils/validation.js +144 -0
  213. package/dist/utils/validation.js.map +1 -0
  214. package/package.json +84 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Core types for agentstack
3
+ */
4
+ export type AgentType = 'coder' | 'researcher' | 'tester' | 'reviewer' | 'architect' | 'coordinator' | 'analyst';
5
+ export interface AgentDefinition {
6
+ type: AgentType | string;
7
+ name: string;
8
+ description: string;
9
+ systemPrompt: string;
10
+ capabilities: string[];
11
+ }
12
+ export interface SpawnedAgent {
13
+ id: string;
14
+ type: AgentType | string;
15
+ name: string;
16
+ status: AgentStatus;
17
+ createdAt: Date;
18
+ sessionId?: string;
19
+ metadata?: Record<string, unknown>;
20
+ }
21
+ export type AgentStatus = 'idle' | 'running' | 'completed' | 'failed' | 'stopped';
22
+ export interface MemoryEntry {
23
+ id: string;
24
+ key: string;
25
+ namespace: string;
26
+ content: string;
27
+ embedding?: Float32Array;
28
+ metadata?: Record<string, unknown>;
29
+ createdAt: Date;
30
+ updatedAt: Date;
31
+ }
32
+ export interface MemorySearchResult {
33
+ entry: MemoryEntry;
34
+ score: number;
35
+ matchType: 'fts' | 'vector' | 'exact';
36
+ }
37
+ export interface MemoryStoreOptions {
38
+ namespace?: string;
39
+ metadata?: Record<string, unknown>;
40
+ generateEmbedding?: boolean;
41
+ }
42
+ export interface MemorySearchOptions {
43
+ namespace?: string;
44
+ limit?: number;
45
+ threshold?: number;
46
+ useVector?: boolean;
47
+ }
48
+ export interface Session {
49
+ id: string;
50
+ status: SessionStatus;
51
+ startedAt: Date;
52
+ endedAt?: Date;
53
+ metadata?: Record<string, unknown>;
54
+ }
55
+ export type SessionStatus = 'active' | 'ended' | 'error';
56
+ export interface Task {
57
+ id: string;
58
+ sessionId?: string;
59
+ agentType: AgentType | string;
60
+ status: TaskStatus;
61
+ input?: string;
62
+ output?: string;
63
+ createdAt: Date;
64
+ completedAt?: Date;
65
+ }
66
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
67
+ export interface LLMProvider {
68
+ name: string;
69
+ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
70
+ embed?(text: string): Promise<number[]>;
71
+ }
72
+ export interface ChatMessage {
73
+ role: 'system' | 'user' | 'assistant';
74
+ content: string;
75
+ }
76
+ export interface ChatOptions {
77
+ model?: string;
78
+ temperature?: number;
79
+ maxTokens?: number;
80
+ stopSequences?: string[];
81
+ }
82
+ export interface ChatResponse {
83
+ content: string;
84
+ model: string;
85
+ usage?: {
86
+ inputTokens: number;
87
+ outputTokens: number;
88
+ };
89
+ }
90
+ export interface AgentStackPlugin {
91
+ name: string;
92
+ version: string;
93
+ description?: string;
94
+ agents?: AgentDefinition[];
95
+ tools?: MCPToolDefinition[];
96
+ hooks?: HookDefinition[];
97
+ providers?: ProviderDefinition[];
98
+ init?(config: AgentStackConfig): Promise<void>;
99
+ cleanup?(): Promise<void>;
100
+ }
101
+ export interface MCPToolDefinition {
102
+ name: string;
103
+ description: string;
104
+ inputSchema: Record<string, unknown>;
105
+ handler: (params: Record<string, unknown>) => Promise<unknown>;
106
+ }
107
+ export interface HookDefinition {
108
+ name: string;
109
+ event: HookEvent;
110
+ handler: (context: HookContext) => Promise<void>;
111
+ }
112
+ export type HookEvent = 'session-start' | 'session-end' | 'pre-task' | 'post-task';
113
+ export interface HookContext {
114
+ event: HookEvent;
115
+ sessionId?: string;
116
+ taskId?: string;
117
+ agentType?: AgentType | string;
118
+ data?: Record<string, unknown>;
119
+ }
120
+ export interface ProviderDefinition {
121
+ name: string;
122
+ factory: (config: Record<string, unknown>) => LLMProvider;
123
+ }
124
+ export interface AgentStackConfig {
125
+ version: string;
126
+ memory: MemoryConfig;
127
+ providers: ProvidersConfig;
128
+ agents: AgentsConfig;
129
+ github: GitHubConfig;
130
+ plugins: PluginsConfig;
131
+ mcp: MCPConfig;
132
+ hooks: HooksConfig;
133
+ }
134
+ export interface MemoryConfig {
135
+ path: string;
136
+ defaultNamespace: string;
137
+ vectorSearch: {
138
+ enabled: boolean;
139
+ provider?: string;
140
+ model?: string;
141
+ };
142
+ }
143
+ export interface ProvidersConfig {
144
+ default: string;
145
+ anthropic?: {
146
+ apiKey: string;
147
+ model?: string;
148
+ };
149
+ openai?: {
150
+ apiKey: string;
151
+ model?: string;
152
+ };
153
+ ollama?: {
154
+ baseUrl: string;
155
+ model?: string;
156
+ };
157
+ }
158
+ export interface AgentsConfig {
159
+ maxConcurrent: number;
160
+ defaultTimeout: number;
161
+ }
162
+ export interface GitHubConfig {
163
+ enabled: boolean;
164
+ useGhCli?: boolean;
165
+ token?: string;
166
+ }
167
+ export interface PluginsConfig {
168
+ enabled: boolean;
169
+ directory: string;
170
+ }
171
+ export interface MCPConfig {
172
+ transport: 'stdio' | 'http';
173
+ port?: number;
174
+ host?: string;
175
+ }
176
+ export interface HooksConfig {
177
+ sessionStart: boolean;
178
+ sessionEnd: boolean;
179
+ preTask: boolean;
180
+ postTask: boolean;
181
+ }
182
+ export interface Result<T, E = Error> {
183
+ ok: boolean;
184
+ value?: T;
185
+ error?: E;
186
+ }
187
+ export declare function ok<T>(value: T): Result<T>;
188
+ export declare function err<E = Error>(error: E): Result<never, E>;
189
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core types for agentstack
3
+ */
4
+ export function ok(value) {
5
+ return { ok: true, value };
6
+ }
7
+ export function err(error) {
8
+ return { ok: false, error };
9
+ }
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuOH,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,GAAG,CAAY,KAAQ;IACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Configuration management for aistack
3
+ */
4
+ import type { AgentStackConfig } from '../types.js';
5
+ /**
6
+ * Load and validate configuration
7
+ */
8
+ export declare function loadConfig(configPath?: string): AgentStackConfig;
9
+ /**
10
+ * Get default config
11
+ */
12
+ export declare function getDefaultConfig(): AgentStackConfig;
13
+ /**
14
+ * Save configuration to file
15
+ */
16
+ export declare function saveConfig(config: AgentStackConfig, configPath?: string): void;
17
+ /**
18
+ * Validate a configuration object
19
+ */
20
+ export declare function validateConfig(config: unknown): {
21
+ valid: boolean;
22
+ errors?: string[];
23
+ };
24
+ /**
25
+ * Get the current configuration (cached)
26
+ */
27
+ export declare function getConfig(): AgentStackConfig;
28
+ /**
29
+ * Reset the cached configuration
30
+ */
31
+ export declare function resetConfig(): void;
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA4HpD;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAkChE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAW9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAWrF;AAKD;;GAEG;AACH,wBAAgB,SAAS,IAAI,gBAAgB,CAK5C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Configuration management for aistack
3
+ */
4
+ import { readFileSync, existsSync, writeFileSync, mkdirSync } from 'node:fs';
5
+ import { join, dirname } from 'node:path';
6
+ import { z } from 'zod';
7
+ import { logger } from './logger.js';
8
+ // Configuration schema using Zod
9
+ const VectorSearchConfigSchema = z.object({
10
+ enabled: z.boolean().default(false),
11
+ provider: z.string().optional(),
12
+ model: z.string().optional(),
13
+ });
14
+ const MemoryConfigSchema = z.object({
15
+ path: z.string().default('./data/aistack.db'),
16
+ defaultNamespace: z.string().default('default'),
17
+ vectorSearch: VectorSearchConfigSchema.default({}),
18
+ });
19
+ const AnthropicConfigSchema = z.object({
20
+ apiKey: z.string(),
21
+ model: z.string().optional(),
22
+ });
23
+ const OpenAIConfigSchema = z.object({
24
+ apiKey: z.string(),
25
+ model: z.string().optional(),
26
+ });
27
+ const OllamaConfigSchema = z.object({
28
+ baseUrl: z.string().default('http://localhost:11434'),
29
+ model: z.string().optional(),
30
+ });
31
+ const ProvidersConfigSchema = z.object({
32
+ default: z.string().default('anthropic'),
33
+ anthropic: AnthropicConfigSchema.optional(),
34
+ openai: OpenAIConfigSchema.optional(),
35
+ ollama: OllamaConfigSchema.optional(),
36
+ });
37
+ const AgentsConfigSchema = z.object({
38
+ maxConcurrent: z.number().min(1).max(20).default(5),
39
+ defaultTimeout: z.number().min(10).max(3600).default(300),
40
+ });
41
+ const GitHubConfigSchema = z.object({
42
+ enabled: z.boolean().default(false),
43
+ useGhCli: z.boolean().optional(),
44
+ token: z.string().optional(),
45
+ });
46
+ const PluginsConfigSchema = z.object({
47
+ enabled: z.boolean().default(true),
48
+ directory: z.string().default('./plugins'),
49
+ });
50
+ const MCPConfigSchema = z.object({
51
+ transport: z.enum(['stdio', 'http']).default('stdio'),
52
+ port: z.number().optional(),
53
+ host: z.string().optional(),
54
+ });
55
+ const HooksConfigSchema = z.object({
56
+ sessionStart: z.boolean().default(true),
57
+ sessionEnd: z.boolean().default(true),
58
+ preTask: z.boolean().default(true),
59
+ postTask: z.boolean().default(true),
60
+ });
61
+ const ConfigSchema = z.object({
62
+ version: z.string().default('1.0.0'),
63
+ memory: MemoryConfigSchema.default({}),
64
+ providers: ProvidersConfigSchema.default({}),
65
+ agents: AgentsConfigSchema.default({}),
66
+ github: GitHubConfigSchema.default({}),
67
+ plugins: PluginsConfigSchema.default({}),
68
+ mcp: MCPConfigSchema.default({}),
69
+ hooks: HooksConfigSchema.default({}),
70
+ });
71
+ const CONFIG_FILE_NAME = 'aistack.config.json';
72
+ /**
73
+ * Interpolate environment variables in config values
74
+ */
75
+ function interpolateEnvVars(obj) {
76
+ if (typeof obj === 'string') {
77
+ return obj.replace(/\$\{([^}]+)\}/g, (_, envVar) => {
78
+ return process.env[envVar] ?? '';
79
+ });
80
+ }
81
+ if (Array.isArray(obj)) {
82
+ return obj.map(interpolateEnvVars);
83
+ }
84
+ if (obj !== null && typeof obj === 'object') {
85
+ const result = {};
86
+ for (const [key, value] of Object.entries(obj)) {
87
+ result[key] = interpolateEnvVars(value);
88
+ }
89
+ return result;
90
+ }
91
+ return obj;
92
+ }
93
+ /**
94
+ * Find config file by walking up directories
95
+ */
96
+ function findConfigFile(startDir = process.cwd()) {
97
+ let currentDir = startDir;
98
+ while (true) {
99
+ const configPath = join(currentDir, CONFIG_FILE_NAME);
100
+ if (existsSync(configPath)) {
101
+ return configPath;
102
+ }
103
+ const parentDir = dirname(currentDir);
104
+ if (parentDir === currentDir) {
105
+ break;
106
+ }
107
+ currentDir = parentDir;
108
+ }
109
+ return null;
110
+ }
111
+ /**
112
+ * Load and validate configuration
113
+ */
114
+ export function loadConfig(configPath) {
115
+ const path = configPath ?? findConfigFile();
116
+ let rawConfig = {};
117
+ if (path && existsSync(path)) {
118
+ try {
119
+ const content = readFileSync(path, 'utf-8');
120
+ rawConfig = JSON.parse(content);
121
+ logger.debug('Loaded config from file', { path });
122
+ }
123
+ catch (error) {
124
+ logger.warn('Failed to parse config file, using defaults', {
125
+ path,
126
+ error: error instanceof Error ? error.message : String(error)
127
+ });
128
+ }
129
+ }
130
+ else {
131
+ logger.debug('No config file found, using defaults');
132
+ }
133
+ // Interpolate environment variables
134
+ const interpolated = interpolateEnvVars(rawConfig);
135
+ // Validate and apply defaults
136
+ const result = ConfigSchema.safeParse(interpolated);
137
+ if (!result.success) {
138
+ logger.warn('Config validation errors, using defaults for invalid fields', {
139
+ errors: result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`),
140
+ });
141
+ return ConfigSchema.parse({});
142
+ }
143
+ return result.data;
144
+ }
145
+ /**
146
+ * Get default config
147
+ */
148
+ export function getDefaultConfig() {
149
+ return ConfigSchema.parse({});
150
+ }
151
+ /**
152
+ * Save configuration to file
153
+ */
154
+ export function saveConfig(config, configPath) {
155
+ const path = configPath ?? join(process.cwd(), CONFIG_FILE_NAME);
156
+ // Ensure directory exists
157
+ const dir = dirname(path);
158
+ if (!existsSync(dir)) {
159
+ mkdirSync(dir, { recursive: true });
160
+ }
161
+ writeFileSync(path, JSON.stringify(config, null, 2));
162
+ logger.info('Configuration saved', { path });
163
+ }
164
+ /**
165
+ * Validate a configuration object
166
+ */
167
+ export function validateConfig(config) {
168
+ const result = ConfigSchema.safeParse(config);
169
+ if (result.success) {
170
+ return { valid: true };
171
+ }
172
+ return {
173
+ valid: false,
174
+ errors: result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`),
175
+ };
176
+ }
177
+ // Singleton config instance
178
+ let cachedConfig = null;
179
+ /**
180
+ * Get the current configuration (cached)
181
+ */
182
+ export function getConfig() {
183
+ if (!cachedConfig) {
184
+ cachedConfig = loadConfig();
185
+ }
186
+ return cachedConfig;
187
+ }
188
+ /**
189
+ * Reset the cached configuration
190
+ */
191
+ export function resetConfig() {
192
+ cachedConfig = null;
193
+ }
194
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Embedding API client for vector search
3
+ * Uses external APIs - no fake in-process claims
4
+ */
5
+ import type { AgentStackConfig } from '../types.js';
6
+ export interface EmbeddingProvider {
7
+ embed(text: string): Promise<number[]>;
8
+ embedBatch(texts: string[]): Promise<number[][]>;
9
+ dimensions: number;
10
+ }
11
+ /**
12
+ * Create an embedding provider based on config
13
+ */
14
+ export declare function createEmbeddingProvider(config: AgentStackConfig): EmbeddingProvider | null;
15
+ /**
16
+ * Cosine similarity between two vectors
17
+ */
18
+ export declare function cosineSimilarity(a: number[], b: number[]): number;
19
+ /**
20
+ * Normalize a vector to unit length
21
+ */
22
+ export declare function normalizeVector(vector: number[]): number[];
23
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/utils/embeddings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAuGD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,IAAI,CA6B1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU1D"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Embedding API client for vector search
3
+ * Uses external APIs - no fake in-process claims
4
+ */
5
+ import { logger } from './logger.js';
6
+ const log = logger.child('embeddings');
7
+ /**
8
+ * OpenAI embedding provider
9
+ */
10
+ class OpenAIEmbeddings {
11
+ apiKey;
12
+ model;
13
+ dimensions;
14
+ constructor(apiKey, model = 'text-embedding-3-small') {
15
+ this.apiKey = apiKey;
16
+ this.model = model;
17
+ // text-embedding-3-small has 1536 dimensions
18
+ this.dimensions = model === 'text-embedding-3-large' ? 3072 : 1536;
19
+ }
20
+ async embed(text) {
21
+ const result = await this.embedBatch([text]);
22
+ const embedding = result[0];
23
+ if (!embedding) {
24
+ throw new Error('Failed to generate embedding');
25
+ }
26
+ return embedding;
27
+ }
28
+ async embedBatch(texts) {
29
+ const response = await fetch('https://api.openai.com/v1/embeddings', {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Content-Type': 'application/json',
33
+ 'Authorization': `Bearer ${this.apiKey}`,
34
+ },
35
+ body: JSON.stringify({
36
+ model: this.model,
37
+ input: texts,
38
+ }),
39
+ });
40
+ if (!response.ok) {
41
+ const error = await response.text();
42
+ throw new Error(`OpenAI API error: ${response.status} - ${error}`);
43
+ }
44
+ const data = await response.json();
45
+ return data.data.map(d => d.embedding);
46
+ }
47
+ }
48
+ /**
49
+ * Ollama embedding provider (local)
50
+ */
51
+ class OllamaEmbeddings {
52
+ baseUrl;
53
+ model;
54
+ dimensions;
55
+ constructor(baseUrl = 'http://localhost:11434', model = 'nomic-embed-text') {
56
+ this.baseUrl = baseUrl;
57
+ this.model = model;
58
+ // nomic-embed-text has 768 dimensions
59
+ this.dimensions = 768;
60
+ }
61
+ async embed(text) {
62
+ const response = await fetch(`${this.baseUrl}/api/embeddings`, {
63
+ method: 'POST',
64
+ headers: {
65
+ 'Content-Type': 'application/json',
66
+ },
67
+ body: JSON.stringify({
68
+ model: this.model,
69
+ prompt: text,
70
+ }),
71
+ });
72
+ if (!response.ok) {
73
+ const error = await response.text();
74
+ throw new Error(`Ollama API error: ${response.status} - ${error}`);
75
+ }
76
+ const data = await response.json();
77
+ return data.embedding;
78
+ }
79
+ async embedBatch(texts) {
80
+ // Ollama doesn't support batch embeddings, so we do them sequentially
81
+ const results = [];
82
+ for (const text of texts) {
83
+ results.push(await this.embed(text));
84
+ }
85
+ return results;
86
+ }
87
+ }
88
+ /**
89
+ * Create an embedding provider based on config
90
+ */
91
+ export function createEmbeddingProvider(config) {
92
+ const vectorConfig = config.memory.vectorSearch;
93
+ if (!vectorConfig.enabled) {
94
+ log.debug('Vector search disabled');
95
+ return null;
96
+ }
97
+ const provider = vectorConfig.provider ?? 'openai';
98
+ switch (provider) {
99
+ case 'openai': {
100
+ const apiKey = config.providers.openai?.apiKey;
101
+ if (!apiKey) {
102
+ log.warn('OpenAI API key not configured for embeddings');
103
+ return null;
104
+ }
105
+ return new OpenAIEmbeddings(apiKey, vectorConfig.model);
106
+ }
107
+ case 'ollama': {
108
+ const baseUrl = config.providers.ollama?.baseUrl ?? 'http://localhost:11434';
109
+ return new OllamaEmbeddings(baseUrl, vectorConfig.model);
110
+ }
111
+ default:
112
+ log.warn('Unknown embedding provider', { provider });
113
+ return null;
114
+ }
115
+ }
116
+ /**
117
+ * Cosine similarity between two vectors
118
+ */
119
+ export function cosineSimilarity(a, b) {
120
+ if (a.length !== b.length) {
121
+ throw new Error(`Vector dimensions must match: ${a.length} vs ${b.length}`);
122
+ }
123
+ let dotProduct = 0;
124
+ let normA = 0;
125
+ let normB = 0;
126
+ for (let i = 0; i < a.length; i++) {
127
+ const aVal = a[i] ?? 0;
128
+ const bVal = b[i] ?? 0;
129
+ dotProduct += aVal * bVal;
130
+ normA += aVal * aVal;
131
+ normB += bVal * bVal;
132
+ }
133
+ const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
134
+ if (magnitude === 0)
135
+ return 0;
136
+ return dotProduct / magnitude;
137
+ }
138
+ /**
139
+ * Normalize a vector to unit length
140
+ */
141
+ export function normalizeVector(vector) {
142
+ let norm = 0;
143
+ for (const v of vector) {
144
+ norm += v * v;
145
+ }
146
+ norm = Math.sqrt(norm);
147
+ if (norm === 0)
148
+ return vector;
149
+ return vector.map(v => v / norm);
150
+ }
151
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/utils/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utility exports
3
+ */
4
+ export { logger, createLogger } from './logger.js';
5
+ export { loadConfig, getConfig, getDefaultConfig, saveConfig, validateConfig, resetConfig, } from './config.js';
6
+ export * from './validation.js';
7
+ export { createEmbeddingProvider, cosineSimilarity, normalizeVector, type EmbeddingProvider, } from './embeddings.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utility exports
3
+ */
4
+ export { logger, createLogger } from './logger.js';
5
+ export { loadConfig, getConfig, getDefaultConfig, saveConfig, validateConfig, resetConfig, } from './config.js';
6
+ export * from './validation.js';
7
+ export { createEmbeddingProvider, cosineSimilarity, normalizeVector, } from './embeddings.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GAEhB,MAAM,iBAAiB,CAAC"}