@sashabogi/foundation 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.
- package/LICENSE +21 -0
- package/README.md +341 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +308 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/services/config.service.d.ts +92 -0
- package/dist/services/config.service.d.ts.map +1 -0
- package/dist/services/config.service.js +284 -0
- package/dist/services/config.service.js.map +1 -0
- package/dist/services/git.service.d.ts +175 -0
- package/dist/services/git.service.d.ts.map +1 -0
- package/dist/services/git.service.js +395 -0
- package/dist/services/git.service.js.map +1 -0
- package/dist/services/provider.service.d.ts +74 -0
- package/dist/services/provider.service.d.ts.map +1 -0
- package/dist/services/provider.service.js +182 -0
- package/dist/services/provider.service.js.map +1 -0
- package/dist/services/storage.service.d.ts +84 -0
- package/dist/services/storage.service.d.ts.map +1 -0
- package/dist/services/storage.service.js +320 -0
- package/dist/services/storage.service.js.map +1 -0
- package/dist/tools/demerzel/index.d.ts +21 -0
- package/dist/tools/demerzel/index.d.ts.map +1 -0
- package/dist/tools/demerzel/index.js +166 -0
- package/dist/tools/demerzel/index.js.map +1 -0
- package/dist/tools/gaia/index.d.ts +27 -0
- package/dist/tools/gaia/index.d.ts.map +1 -0
- package/dist/tools/gaia/index.js +466 -0
- package/dist/tools/gaia/index.js.map +1 -0
- package/dist/tools/seldon/index.d.ts +43 -0
- package/dist/tools/seldon/index.d.ts.map +1 -0
- package/dist/tools/seldon/index.js +886 -0
- package/dist/tools/seldon/index.js.map +1 -0
- package/dist/types/index.d.ts +392 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +85 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Foundation MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Unified MCP server combining three pillars from Asimov's Foundation:
|
|
6
|
+
*
|
|
7
|
+
* - Demerzel: Codebase intelligence (R. Daneel Olivaw - 20,000 years of perfect memory)
|
|
8
|
+
* - Seldon: Multi-agent orchestration (Hari Seldon - the Seldon Plan guides the future)
|
|
9
|
+
* - Gaia: Workflow patterns (The collective consciousness - "We are all one")
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* npx @sashabogi/foundation
|
|
13
|
+
*
|
|
14
|
+
* Or add to ~/.claude.json:
|
|
15
|
+
* {
|
|
16
|
+
* "mcpServers": {
|
|
17
|
+
* "foundation": {
|
|
18
|
+
* "command": "npx",
|
|
19
|
+
* "args": ["@sashabogi/foundation"]
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
declare const SERVER_NAME = "foundation";
|
|
25
|
+
declare const SERVER_VERSION = "0.1.0";
|
|
26
|
+
/**
|
|
27
|
+
* Start the Foundation MCP server
|
|
28
|
+
* Can be called from CLI or run directly
|
|
29
|
+
*/
|
|
30
|
+
export declare function startServer(): Promise<void>;
|
|
31
|
+
export { SERVER_NAME, SERVER_VERSION };
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAgBH,QAAA,MAAM,WAAW,eAAe,CAAC;AACjC,QAAA,MAAM,cAAc,UAAU,CAAC;AAE/B;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCjD;AAGD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Foundation MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Unified MCP server combining three pillars from Asimov's Foundation:
|
|
6
|
+
*
|
|
7
|
+
* - Demerzel: Codebase intelligence (R. Daneel Olivaw - 20,000 years of perfect memory)
|
|
8
|
+
* - Seldon: Multi-agent orchestration (Hari Seldon - the Seldon Plan guides the future)
|
|
9
|
+
* - Gaia: Workflow patterns (The collective consciousness - "We are all one")
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* npx @sashabogi/foundation
|
|
13
|
+
*
|
|
14
|
+
* Or add to ~/.claude.json:
|
|
15
|
+
* {
|
|
16
|
+
* "mcpServers": {
|
|
17
|
+
* "foundation": {
|
|
18
|
+
* "command": "npx",
|
|
19
|
+
* "args": ["@sashabogi/foundation"]
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
25
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
26
|
+
// Services
|
|
27
|
+
import { ConfigService } from "./services/config.service.js";
|
|
28
|
+
import { StorageService } from "./services/storage.service.js";
|
|
29
|
+
import { GitService } from "./services/git.service.js";
|
|
30
|
+
import { ProviderService } from "./services/provider.service.js";
|
|
31
|
+
// Tool registrations
|
|
32
|
+
import { registerDemerzelTools } from "./tools/demerzel/index.js";
|
|
33
|
+
import { registerSeldonTools } from "./tools/seldon/index.js";
|
|
34
|
+
import { registerGaiaTools } from "./tools/gaia/index.js";
|
|
35
|
+
const SERVER_NAME = "foundation";
|
|
36
|
+
const SERVER_VERSION = "0.1.0";
|
|
37
|
+
/**
|
|
38
|
+
* Start the Foundation MCP server
|
|
39
|
+
* Can be called from CLI or run directly
|
|
40
|
+
*/
|
|
41
|
+
export async function startServer() {
|
|
42
|
+
// Initialize services in order (config first, then storage, then others)
|
|
43
|
+
const config = ConfigService.getInstance();
|
|
44
|
+
await config.init();
|
|
45
|
+
const storage = StorageService.getInstance();
|
|
46
|
+
await storage.init();
|
|
47
|
+
const _git = GitService.getInstance();
|
|
48
|
+
// Git service doesn't need init - it's stateless
|
|
49
|
+
const providers = ProviderService.getInstance();
|
|
50
|
+
await providers.init(config.getConfig());
|
|
51
|
+
// Create MCP server
|
|
52
|
+
const server = new McpServer({
|
|
53
|
+
name: SERVER_NAME,
|
|
54
|
+
version: SERVER_VERSION,
|
|
55
|
+
});
|
|
56
|
+
// Register all tools from each module
|
|
57
|
+
// Each module prefixes its tools: demerzel_*, seldon_*, gaia_*
|
|
58
|
+
registerDemerzelTools(server);
|
|
59
|
+
registerSeldonTools(server);
|
|
60
|
+
registerGaiaTools(server);
|
|
61
|
+
// Create stdio transport and connect
|
|
62
|
+
const transport = new StdioServerTransport();
|
|
63
|
+
await server.connect(transport);
|
|
64
|
+
// Log startup to stderr (stdout is for MCP protocol)
|
|
65
|
+
console.error(`🏛️ ${SERVER_NAME} v${SERVER_VERSION} started`);
|
|
66
|
+
console.error(` Modules: Demerzel (codebase) | Seldon (agents) | Gaia (workflow)`);
|
|
67
|
+
}
|
|
68
|
+
// Export for CLI usage
|
|
69
|
+
export { SERVER_NAME, SERVER_VERSION };
|
|
70
|
+
// If run directly (not imported), start the server
|
|
71
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
72
|
+
if (isMainModule) {
|
|
73
|
+
startServer().catch((error) => {
|
|
74
|
+
console.error("Fatal error:", error);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,qBAAqB;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,yEAAyE;IACzE,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IAEpB,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,iDAAiD;IAEjD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAEzC,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,sCAAsC;IACtC,+DAA+D;IAC/D,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,qDAAqD;IACrD,OAAO,CAAC,KAAK,CAAC,QAAQ,WAAW,KAAK,cAAc,UAAU,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;AACvF,CAAC;AAED,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAEvC,mDAAmD;AACnD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,IAAI,YAAY,EAAE,CAAC;IACjB,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigService - Unified configuration management
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from:
|
|
5
|
+
* 1. ~/.foundation/config.yaml (global)
|
|
6
|
+
* 2. .foundation/config.yaml (project-level overrides)
|
|
7
|
+
* 3. Environment variables
|
|
8
|
+
*
|
|
9
|
+
* Environment variable interpolation: ${VAR_NAME} in YAML values
|
|
10
|
+
*/
|
|
11
|
+
import type { FoundationConfig, DefaultsConfig, ProvidersConfig, RoleConfig, ArgusConfig, WorktreeConfig, LearningConfig } from '../types/index.js';
|
|
12
|
+
export declare class ConfigService {
|
|
13
|
+
private static instance;
|
|
14
|
+
private config;
|
|
15
|
+
private globalConfigPath;
|
|
16
|
+
private initialized;
|
|
17
|
+
private constructor();
|
|
18
|
+
static getInstance(): ConfigService;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize configuration by loading from files
|
|
21
|
+
*/
|
|
22
|
+
init(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the full configuration
|
|
25
|
+
*/
|
|
26
|
+
getConfig(): FoundationConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Get defaults configuration
|
|
29
|
+
*/
|
|
30
|
+
getDefaults(): DefaultsConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Get providers configuration
|
|
33
|
+
*/
|
|
34
|
+
getProviders(): ProvidersConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Get a specific role configuration
|
|
37
|
+
*/
|
|
38
|
+
getRole(role: string): RoleConfig | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get all roles
|
|
41
|
+
*/
|
|
42
|
+
getRoles(): Record<string, RoleConfig>;
|
|
43
|
+
/**
|
|
44
|
+
* Get Argus configuration
|
|
45
|
+
*/
|
|
46
|
+
getArgusConfig(): ArgusConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Get worktree configuration
|
|
49
|
+
*/
|
|
50
|
+
getWorktreeConfig(): WorktreeConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Get learning configuration
|
|
53
|
+
*/
|
|
54
|
+
getLearningConfig(): LearningConfig;
|
|
55
|
+
/**
|
|
56
|
+
* Get the global config directory path
|
|
57
|
+
*/
|
|
58
|
+
getGlobalConfigDir(): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get the project config directory path
|
|
61
|
+
*/
|
|
62
|
+
getProjectConfigDir(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Ensure global config directory exists
|
|
65
|
+
*/
|
|
66
|
+
ensureGlobalConfigDir(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Ensure project config directory exists
|
|
69
|
+
*/
|
|
70
|
+
ensureProjectConfigDir(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Save current config to global config file
|
|
73
|
+
*/
|
|
74
|
+
saveGlobalConfig(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Create default config file if it doesn't exist
|
|
77
|
+
*/
|
|
78
|
+
createDefaultConfig(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Load and parse a YAML file
|
|
81
|
+
*/
|
|
82
|
+
private loadYamlFile;
|
|
83
|
+
/**
|
|
84
|
+
* Deep merge two configs, with source overriding target
|
|
85
|
+
*/
|
|
86
|
+
private mergeConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Recursively interpolate ${VAR_NAME} patterns with environment variables
|
|
89
|
+
*/
|
|
90
|
+
private interpolateEnvVars;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=config.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAgE3B,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,WAAW,IAAI,cAAc;IAI7B;;OAEG;IACH,YAAY,IAAI,eAAe;IAI/B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI7C;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAItC;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAO7B;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAO9B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAQ3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgDnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigService - Unified configuration management
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from:
|
|
5
|
+
* 1. ~/.foundation/config.yaml (global)
|
|
6
|
+
* 2. .foundation/config.yaml (project-level overrides)
|
|
7
|
+
* 3. Environment variables
|
|
8
|
+
*
|
|
9
|
+
* Environment variable interpolation: ${VAR_NAME} in YAML values
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
15
|
+
// Default configuration
|
|
16
|
+
const DEFAULT_CONFIG = {
|
|
17
|
+
version: '1.0',
|
|
18
|
+
defaults: {
|
|
19
|
+
temperature: 0.7,
|
|
20
|
+
max_tokens: 4096,
|
|
21
|
+
timeout_ms: 60000,
|
|
22
|
+
},
|
|
23
|
+
providers: {},
|
|
24
|
+
roles: {
|
|
25
|
+
orchestrator: {
|
|
26
|
+
provider: 'anthropic',
|
|
27
|
+
model: 'claude-sonnet-4-20250514',
|
|
28
|
+
},
|
|
29
|
+
coder: {
|
|
30
|
+
provider: 'deepseek',
|
|
31
|
+
model: 'deepseek-reasoner',
|
|
32
|
+
needs_worktree: true,
|
|
33
|
+
},
|
|
34
|
+
critic: {
|
|
35
|
+
provider: 'deepseek',
|
|
36
|
+
model: 'deepseek-reasoner',
|
|
37
|
+
temperature: 0.3,
|
|
38
|
+
},
|
|
39
|
+
reviewer: {
|
|
40
|
+
provider: 'openai',
|
|
41
|
+
model: 'gpt-4o',
|
|
42
|
+
},
|
|
43
|
+
designer: {
|
|
44
|
+
provider: 'google',
|
|
45
|
+
model: 'gemini-2.5-pro',
|
|
46
|
+
},
|
|
47
|
+
researcher: {
|
|
48
|
+
provider: 'google',
|
|
49
|
+
model: 'gemini-2.5-pro',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
argus: {
|
|
53
|
+
provider: 'ollama',
|
|
54
|
+
model: 'qwen2.5-coder:7b',
|
|
55
|
+
snapshot_max_age_hours: 24,
|
|
56
|
+
auto_refresh: true,
|
|
57
|
+
},
|
|
58
|
+
worktrees: {
|
|
59
|
+
base_dir: '.foundation/worktrees',
|
|
60
|
+
max_count: 10,
|
|
61
|
+
auto_cleanup: true,
|
|
62
|
+
stale_after_hours: 24,
|
|
63
|
+
},
|
|
64
|
+
learning: {
|
|
65
|
+
auto_apply: false,
|
|
66
|
+
categories: [
|
|
67
|
+
'code_style',
|
|
68
|
+
'architecture',
|
|
69
|
+
'testing',
|
|
70
|
+
'performance',
|
|
71
|
+
'security',
|
|
72
|
+
'documentation',
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
export class ConfigService {
|
|
77
|
+
static instance;
|
|
78
|
+
config = DEFAULT_CONFIG;
|
|
79
|
+
globalConfigPath;
|
|
80
|
+
initialized = false;
|
|
81
|
+
constructor() {
|
|
82
|
+
this.globalConfigPath = join(homedir(), '.foundation', 'config.yaml');
|
|
83
|
+
}
|
|
84
|
+
static getInstance() {
|
|
85
|
+
if (!ConfigService.instance) {
|
|
86
|
+
ConfigService.instance = new ConfigService();
|
|
87
|
+
}
|
|
88
|
+
return ConfigService.instance;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Initialize configuration by loading from files
|
|
92
|
+
*/
|
|
93
|
+
async init() {
|
|
94
|
+
if (this.initialized)
|
|
95
|
+
return;
|
|
96
|
+
// Start with defaults
|
|
97
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
98
|
+
// Load global config if exists
|
|
99
|
+
if (existsSync(this.globalConfigPath)) {
|
|
100
|
+
const globalConfig = this.loadYamlFile(this.globalConfigPath);
|
|
101
|
+
this.config = this.mergeConfig(this.config, globalConfig);
|
|
102
|
+
}
|
|
103
|
+
// Load project config if exists (cwd)
|
|
104
|
+
const projectConfigPath = join(process.cwd(), '.foundation', 'config.yaml');
|
|
105
|
+
if (existsSync(projectConfigPath)) {
|
|
106
|
+
const projectConfig = this.loadYamlFile(projectConfigPath);
|
|
107
|
+
this.config = this.mergeConfig(this.config, projectConfig);
|
|
108
|
+
}
|
|
109
|
+
// Interpolate environment variables
|
|
110
|
+
this.config = this.interpolateEnvVars(this.config);
|
|
111
|
+
this.initialized = true;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get the full configuration
|
|
115
|
+
*/
|
|
116
|
+
getConfig() {
|
|
117
|
+
return this.config;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get defaults configuration
|
|
121
|
+
*/
|
|
122
|
+
getDefaults() {
|
|
123
|
+
return this.config.defaults;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get providers configuration
|
|
127
|
+
*/
|
|
128
|
+
getProviders() {
|
|
129
|
+
return this.config.providers;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get a specific role configuration
|
|
133
|
+
*/
|
|
134
|
+
getRole(role) {
|
|
135
|
+
return this.config.roles[role];
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all roles
|
|
139
|
+
*/
|
|
140
|
+
getRoles() {
|
|
141
|
+
return this.config.roles;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get Argus configuration
|
|
145
|
+
*/
|
|
146
|
+
getArgusConfig() {
|
|
147
|
+
return this.config.argus;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get worktree configuration
|
|
151
|
+
*/
|
|
152
|
+
getWorktreeConfig() {
|
|
153
|
+
return this.config.worktrees;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get learning configuration
|
|
157
|
+
*/
|
|
158
|
+
getLearningConfig() {
|
|
159
|
+
return this.config.learning;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get the global config directory path
|
|
163
|
+
*/
|
|
164
|
+
getGlobalConfigDir() {
|
|
165
|
+
return join(homedir(), '.foundation');
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get the project config directory path
|
|
169
|
+
*/
|
|
170
|
+
getProjectConfigDir() {
|
|
171
|
+
return join(process.cwd(), '.foundation');
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Ensure global config directory exists
|
|
175
|
+
*/
|
|
176
|
+
ensureGlobalConfigDir() {
|
|
177
|
+
const dir = this.getGlobalConfigDir();
|
|
178
|
+
if (!existsSync(dir)) {
|
|
179
|
+
mkdirSync(dir, { recursive: true });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Ensure project config directory exists
|
|
184
|
+
*/
|
|
185
|
+
ensureProjectConfigDir() {
|
|
186
|
+
const dir = this.getProjectConfigDir();
|
|
187
|
+
if (!existsSync(dir)) {
|
|
188
|
+
mkdirSync(dir, { recursive: true });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Save current config to global config file
|
|
193
|
+
*/
|
|
194
|
+
saveGlobalConfig() {
|
|
195
|
+
this.ensureGlobalConfigDir();
|
|
196
|
+
const yaml = stringifyYaml(this.config);
|
|
197
|
+
writeFileSync(this.globalConfigPath, yaml, 'utf-8');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Create default config file if it doesn't exist
|
|
201
|
+
*/
|
|
202
|
+
createDefaultConfig() {
|
|
203
|
+
if (!existsSync(this.globalConfigPath)) {
|
|
204
|
+
this.ensureGlobalConfigDir();
|
|
205
|
+
const yaml = stringifyYaml(DEFAULT_CONFIG);
|
|
206
|
+
writeFileSync(this.globalConfigPath, yaml, 'utf-8');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Load and parse a YAML file
|
|
211
|
+
*/
|
|
212
|
+
loadYamlFile(path) {
|
|
213
|
+
try {
|
|
214
|
+
const content = readFileSync(path, 'utf-8');
|
|
215
|
+
return parseYaml(content);
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
console.error(`Warning: Failed to load config from ${path}:`, error);
|
|
219
|
+
return {};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Deep merge two configs, with source overriding target
|
|
224
|
+
*/
|
|
225
|
+
mergeConfig(target, source) {
|
|
226
|
+
const result = { ...target };
|
|
227
|
+
if (source.version)
|
|
228
|
+
result.version = source.version;
|
|
229
|
+
if (source.defaults) {
|
|
230
|
+
result.defaults = { ...target.defaults, ...source.defaults };
|
|
231
|
+
}
|
|
232
|
+
if (source.providers) {
|
|
233
|
+
result.providers = { ...target.providers };
|
|
234
|
+
for (const [key, value] of Object.entries(source.providers)) {
|
|
235
|
+
if (value) {
|
|
236
|
+
result.providers[key] = {
|
|
237
|
+
...result.providers[key],
|
|
238
|
+
...value,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (source.roles) {
|
|
244
|
+
result.roles = { ...target.roles };
|
|
245
|
+
for (const [key, value] of Object.entries(source.roles)) {
|
|
246
|
+
if (value) {
|
|
247
|
+
result.roles[key] = { ...result.roles[key], ...value };
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (source.argus) {
|
|
252
|
+
result.argus = { ...target.argus, ...source.argus };
|
|
253
|
+
}
|
|
254
|
+
if (source.worktrees) {
|
|
255
|
+
result.worktrees = { ...target.worktrees, ...source.worktrees };
|
|
256
|
+
}
|
|
257
|
+
if (source.learning) {
|
|
258
|
+
result.learning = { ...target.learning, ...source.learning };
|
|
259
|
+
}
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Recursively interpolate ${VAR_NAME} patterns with environment variables
|
|
264
|
+
*/
|
|
265
|
+
interpolateEnvVars(obj) {
|
|
266
|
+
if (typeof obj === 'string') {
|
|
267
|
+
return obj.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
268
|
+
return process.env[varName] || '';
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
if (Array.isArray(obj)) {
|
|
272
|
+
return obj.map((item) => this.interpolateEnvVars(item));
|
|
273
|
+
}
|
|
274
|
+
if (obj && typeof obj === 'object') {
|
|
275
|
+
const result = {};
|
|
276
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
277
|
+
result[key] = this.interpolateEnvVars(value);
|
|
278
|
+
}
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
return obj;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"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"}
|