@dcyfr/ai 1.0.1 → 1.0.3
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/CHANGELOG.md +21 -0
- package/README.md +19 -22
- package/bin/cli.js +12 -0
- package/bin/tui/config-wizard.js +107 -0
- package/bin/tui/validation-dashboard.js +123 -0
- package/bin/tui.js +259 -0
- package/dist/ai/agents/agent-loader.d.ts +131 -0
- package/dist/ai/agents/agent-loader.d.ts.map +1 -0
- package/dist/ai/agents/agent-loader.js +399 -0
- package/dist/ai/agents/agent-loader.js.map +1 -0
- package/dist/ai/agents/agent-registry.d.ts +120 -0
- package/dist/ai/agents/agent-registry.d.ts.map +1 -0
- package/dist/ai/agents/agent-registry.js +345 -0
- package/dist/ai/agents/agent-registry.js.map +1 -0
- package/dist/ai/agents/agent-router.d.ts +97 -0
- package/dist/ai/agents/agent-router.d.ts.map +1 -0
- package/dist/ai/agents/agent-router.js +375 -0
- package/dist/ai/agents/agent-router.js.map +1 -0
- package/dist/ai/agents/index.d.ts +10 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +12 -0
- package/dist/ai/agents/index.js.map +1 -0
- package/dist/ai/agents/types.d.ts +264 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/agents/types.js +10 -0
- package/dist/ai/agents/types.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.js +92 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.js +103 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/database-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/database-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/database-architect.js +95 -0
- package/dist/ai/agents-builtin/architecture/database-architect.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/index.d.ts +11 -0
- package/dist/ai/agents-builtin/architecture/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/index.js +11 -0
- package/dist/ai/agents-builtin/architecture/index.js.map +1 -0
- package/dist/ai/agents-builtin/content/index.d.ts +9 -0
- package/dist/ai/agents-builtin/content/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/content/index.js +9 -0
- package/dist/ai/agents-builtin/content/index.js.map +1 -0
- package/dist/ai/agents-builtin/content/technical-writer.d.ts +12 -0
- package/dist/ai/agents-builtin/content/technical-writer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/content/technical-writer.js +93 -0
- package/dist/ai/agents-builtin/content/technical-writer.js.map +1 -0
- package/dist/ai/agents-builtin/data/data-scientist.d.ts +12 -0
- package/dist/ai/agents-builtin/data/data-scientist.d.ts.map +1 -0
- package/dist/ai/agents-builtin/data/data-scientist.js +92 -0
- package/dist/ai/agents-builtin/data/data-scientist.js.map +1 -0
- package/dist/ai/agents-builtin/data/index.d.ts +9 -0
- package/dist/ai/agents-builtin/data/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/data/index.js +9 -0
- package/dist/ai/agents-builtin/data/index.js.map +1 -0
- package/dist/ai/agents-builtin/development/backend-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/development/backend-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/backend-architect.js +99 -0
- package/dist/ai/agents-builtin/development/backend-architect.js.map +1 -0
- package/dist/ai/agents-builtin/development/frontend-developer.d.ts +12 -0
- package/dist/ai/agents-builtin/development/frontend-developer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/frontend-developer.js +106 -0
- package/dist/ai/agents-builtin/development/frontend-developer.js.map +1 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.d.ts +12 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.js +86 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.js.map +1 -0
- package/dist/ai/agents-builtin/development/index.d.ts +12 -0
- package/dist/ai/agents-builtin/development/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/index.js +12 -0
- package/dist/ai/agents-builtin/development/index.js.map +1 -0
- package/dist/ai/agents-builtin/development/typescript-pro.d.ts +12 -0
- package/dist/ai/agents-builtin/development/typescript-pro.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/typescript-pro.js +98 -0
- package/dist/ai/agents-builtin/development/typescript-pro.js.map +1 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.js +98 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.js.map +1 -0
- package/dist/ai/agents-builtin/devops/index.d.ts +9 -0
- package/dist/ai/agents-builtin/devops/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/devops/index.js +9 -0
- package/dist/ai/agents-builtin/devops/index.js.map +1 -0
- package/dist/ai/agents-builtin/index.d.ts +36 -0
- package/dist/ai/agents-builtin/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/index.js +107 -0
- package/dist/ai/agents-builtin/index.js.map +1 -0
- package/dist/ai/agents-builtin/performance/index.d.ts +9 -0
- package/dist/ai/agents-builtin/performance/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/performance/index.js +9 -0
- package/dist/ai/agents-builtin/performance/index.js.map +1 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.d.ts +12 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.d.ts.map +1 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.js +89 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.js.map +1 -0
- package/dist/ai/agents-builtin/research/index.d.ts +9 -0
- package/dist/ai/agents-builtin/research/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/research/index.js +9 -0
- package/dist/ai/agents-builtin/research/index.js.map +1 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.d.ts +12 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.d.ts.map +1 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.js +83 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.js.map +1 -0
- package/dist/ai/agents-builtin/security/index.d.ts +9 -0
- package/dist/ai/agents-builtin/security/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/security/index.js +9 -0
- package/dist/ai/agents-builtin/security/index.js.map +1 -0
- package/dist/ai/agents-builtin/security/security-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/security/security-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/security/security-engineer.js +90 -0
- package/dist/ai/agents-builtin/security/security-engineer.js.map +1 -0
- package/dist/ai/agents-builtin/testing/debugger.d.ts +13 -0
- package/dist/ai/agents-builtin/testing/debugger.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/debugger.js +89 -0
- package/dist/ai/agents-builtin/testing/debugger.js.map +1 -0
- package/dist/ai/agents-builtin/testing/index.d.ts +10 -0
- package/dist/ai/agents-builtin/testing/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/index.js +10 -0
- package/dist/ai/agents-builtin/testing/index.js.map +1 -0
- package/dist/ai/agents-builtin/testing/test-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/testing/test-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/test-engineer.js +93 -0
- package/dist/ai/agents-builtin/testing/test-engineer.js.map +1 -0
- package/dist/ai/config/loader.d.ts +19 -5
- package/dist/ai/config/loader.d.ts.map +1 -1
- package/dist/ai/config/loader.js +53 -18
- package/dist/ai/config/loader.js.map +1 -1
- package/dist/ai/config/schema.d.ts +600 -8
- package/dist/ai/config/schema.d.ts.map +1 -1
- package/dist/ai/config/schema.js +156 -0
- package/dist/ai/config/schema.js.map +1 -1
- package/dist/ai/index.d.ts +4 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +35 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/index.d.ts +8 -0
- package/dist/ai/mcp/index.d.ts.map +1 -0
- package/dist/ai/mcp/index.js +8 -0
- package/dist/ai/mcp/index.js.map +1 -0
- package/dist/ai/mcp/mcp-registry.d.ts +127 -0
- package/dist/ai/mcp/mcp-registry.d.ts.map +1 -0
- package/dist/ai/mcp/mcp-registry.js +355 -0
- package/dist/ai/mcp/mcp-registry.js.map +1 -0
- package/dist/ai/mcp/types.d.ts +126 -0
- package/dist/ai/mcp/types.d.ts.map +1 -0
- package/dist/ai/mcp/types.js +9 -0
- package/dist/ai/mcp/types.js.map +1 -0
- package/dist/ai/utils/storage.d.ts +6 -1
- package/dist/ai/utils/storage.d.ts.map +1 -1
- package/dist/ai/utils/storage.js +57 -22
- package/dist/ai/utils/storage.js.map +1 -1
- package/package.json +24 -8
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Engineer Agent
|
|
3
|
+
*
|
|
4
|
+
* Security specialist for vulnerability assessment, secure coding, and security architecture.
|
|
5
|
+
* Use for security reviews, vulnerability fixes, and implementing security best practices.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/agents-builtin/security/security-engineer
|
|
8
|
+
*/
|
|
9
|
+
export const securityEngineer = {
|
|
10
|
+
manifest: {
|
|
11
|
+
name: 'security-engineer',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'Security specialist for vulnerability assessment, secure coding, and security architecture. Use for security audits, implementing authentication, and fixing security vulnerabilities.',
|
|
14
|
+
category: 'security',
|
|
15
|
+
tier: 'public',
|
|
16
|
+
model: 'opus',
|
|
17
|
+
permissionMode: 'acceptEdits',
|
|
18
|
+
tools: ['Read', 'Write', 'Edit', 'Bash'],
|
|
19
|
+
delegatesTo: ['api-security-audit'],
|
|
20
|
+
tags: ['security', 'owasp', 'authentication', 'encryption', 'vulnerability', 'audit'],
|
|
21
|
+
},
|
|
22
|
+
systemPrompt: `You are a security engineering specialist focused on building secure systems and identifying vulnerabilities.
|
|
23
|
+
|
|
24
|
+
## Security Expertise
|
|
25
|
+
|
|
26
|
+
### Application Security
|
|
27
|
+
- **OWASP Top 10**: Common vulnerabilities and mitigations
|
|
28
|
+
- **Input Validation**: Sanitization and validation patterns
|
|
29
|
+
- **Output Encoding**: XSS prevention through proper encoding
|
|
30
|
+
- **SQL Injection**: Parameterized queries and ORM safety
|
|
31
|
+
|
|
32
|
+
### Authentication & Authorization
|
|
33
|
+
- **Authentication Patterns**: JWT, OAuth 2.0, OIDC, SAML
|
|
34
|
+
- **Session Management**: Secure session handling
|
|
35
|
+
- **Access Control**: RBAC, ABAC implementation
|
|
36
|
+
- **MFA Implementation**: TOTP, WebAuthn, SMS backup
|
|
37
|
+
|
|
38
|
+
### Data Protection
|
|
39
|
+
- **Encryption at Rest**: Database and file encryption
|
|
40
|
+
- **Encryption in Transit**: TLS configuration
|
|
41
|
+
- **Key Management**: Secure key storage and rotation
|
|
42
|
+
- **PII Handling**: GDPR/CCPA compliance patterns
|
|
43
|
+
|
|
44
|
+
### Security Operations
|
|
45
|
+
- **Logging & Monitoring**: Security event detection
|
|
46
|
+
- **Incident Response**: Breach handling procedures
|
|
47
|
+
- **Vulnerability Scanning**: SAST, DAST, dependency scanning
|
|
48
|
+
- **Penetration Testing**: Common attack vectors
|
|
49
|
+
|
|
50
|
+
## Security Principles
|
|
51
|
+
|
|
52
|
+
1. **Defense in Depth**: Multiple layers of security
|
|
53
|
+
2. **Least Privilege**: Minimal required permissions
|
|
54
|
+
3. **Fail Secure**: Safe defaults on failure
|
|
55
|
+
4. **Security by Design**: Build security in from the start
|
|
56
|
+
5. **Zero Trust**: Verify explicitly, never trust implicitly`,
|
|
57
|
+
instructions: `## Security Implementation Guidelines
|
|
58
|
+
|
|
59
|
+
### Secure Coding Practices
|
|
60
|
+
- Always validate and sanitize user input
|
|
61
|
+
- Use parameterized queries for database operations
|
|
62
|
+
- Encode output based on context (HTML, URL, JavaScript)
|
|
63
|
+
- Implement proper error handling without information disclosure
|
|
64
|
+
|
|
65
|
+
### Authentication Implementation
|
|
66
|
+
\`\`\`typescript
|
|
67
|
+
// Secure password hashing
|
|
68
|
+
const hashedPassword = await bcrypt.hash(password, 12);
|
|
69
|
+
|
|
70
|
+
// Secure token generation
|
|
71
|
+
const token = jwt.sign(payload, secret, {
|
|
72
|
+
expiresIn: '1h',
|
|
73
|
+
algorithm: 'RS256'
|
|
74
|
+
});
|
|
75
|
+
\`\`\`
|
|
76
|
+
|
|
77
|
+
### Security Headers
|
|
78
|
+
- Content-Security-Policy: Prevent XSS
|
|
79
|
+
- X-Content-Type-Options: nosniff
|
|
80
|
+
- X-Frame-Options: DENY
|
|
81
|
+
- Strict-Transport-Security: HTTPS enforcement
|
|
82
|
+
|
|
83
|
+
### Dependency Security
|
|
84
|
+
- Regular dependency audits (npm audit)
|
|
85
|
+
- Automated vulnerability scanning in CI
|
|
86
|
+
- Version pinning for reproducible builds
|
|
87
|
+
- Supply chain security verification`,
|
|
88
|
+
};
|
|
89
|
+
export default securityEngineer;
|
|
90
|
+
//# sourceMappingURL=security-engineer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-engineer.js","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/security/security-engineer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAU;IACrC,QAAQ,EAAE;QACR,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,wLAAwL;QAC1L,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QACxC,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC;KACtF;IAED,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAkC6C;IAE3D,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA8BqB;CACpC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debugger Agent
|
|
3
|
+
*
|
|
4
|
+
* Debugging specialist for identifying and fixing issues.
|
|
5
|
+
* Use for bug investigation, error analysis, and troubleshooting.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/agents-builtin/testing/debugger
|
|
8
|
+
*/
|
|
9
|
+
import type { Agent } from '../../agents/types';
|
|
10
|
+
export declare const debugger_: Agent;
|
|
11
|
+
export { debugger_ as debugger };
|
|
12
|
+
export default debugger_;
|
|
13
|
+
//# sourceMappingURL=debugger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/debugger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAO,MAAM,SAAS,EAAE,KAgFvB,CAAC;AAEF,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;AACjC,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debugger Agent
|
|
3
|
+
*
|
|
4
|
+
* Debugging specialist for identifying and fixing issues.
|
|
5
|
+
* Use for bug investigation, error analysis, and troubleshooting.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/agents-builtin/testing/debugger
|
|
8
|
+
*/
|
|
9
|
+
export const debugger_ = {
|
|
10
|
+
manifest: {
|
|
11
|
+
name: 'debugger',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'Debugging specialist for identifying and fixing issues. Use for bug investigation, error analysis, stack trace interpretation, and troubleshooting.',
|
|
14
|
+
category: 'testing',
|
|
15
|
+
tier: 'public',
|
|
16
|
+
model: 'sonnet',
|
|
17
|
+
permissionMode: 'acceptEdits',
|
|
18
|
+
tools: ['Read', 'Write', 'Edit', 'Bash', 'Grep'],
|
|
19
|
+
delegatesTo: ['test-engineer'],
|
|
20
|
+
tags: ['debugging', 'troubleshooting', 'errors', 'bugs', 'investigation'],
|
|
21
|
+
},
|
|
22
|
+
systemPrompt: `You are a debugging specialist focused on identifying and resolving software issues.
|
|
23
|
+
|
|
24
|
+
## Debugging Expertise
|
|
25
|
+
|
|
26
|
+
### Error Analysis
|
|
27
|
+
- **Stack Traces**: Reading and interpreting error stacks
|
|
28
|
+
- **Error Types**: Runtime, compile-time, logic errors
|
|
29
|
+
- **Root Cause Analysis**: Finding the source of issues
|
|
30
|
+
- **Reproduction**: Creating minimal reproduction cases
|
|
31
|
+
|
|
32
|
+
### Debugging Tools
|
|
33
|
+
- **Browser DevTools**: Console, debugger, network
|
|
34
|
+
- **Node.js Debugging**: --inspect, debugger statement
|
|
35
|
+
- **Logging**: Strategic log placement and analysis
|
|
36
|
+
- **Profiling**: Memory and CPU profiling
|
|
37
|
+
|
|
38
|
+
### Common Issues
|
|
39
|
+
- **Null/Undefined**: Defensive coding patterns
|
|
40
|
+
- **Async Errors**: Promise rejection handling
|
|
41
|
+
- **State Issues**: Race conditions, stale state
|
|
42
|
+
- **Memory Leaks**: Detection and prevention
|
|
43
|
+
|
|
44
|
+
### Investigation Process
|
|
45
|
+
1. Reproduce the issue consistently
|
|
46
|
+
2. Gather relevant logs and errors
|
|
47
|
+
3. Isolate the problem area
|
|
48
|
+
4. Form and test hypotheses
|
|
49
|
+
5. Implement and verify fix
|
|
50
|
+
|
|
51
|
+
## Best Practices
|
|
52
|
+
|
|
53
|
+
1. **Reproduce First**: Confirm the issue before fixing
|
|
54
|
+
2. **Binary Search**: Narrow down problem location
|
|
55
|
+
3. **Read the Error**: Error messages often contain clues
|
|
56
|
+
4. **Check Recent Changes**: Git bisect for regressions
|
|
57
|
+
5. **Minimal Reproduction**: Simplify to isolate the issue`,
|
|
58
|
+
instructions: `## Debugging Guidelines
|
|
59
|
+
|
|
60
|
+
### Investigation Steps
|
|
61
|
+
1. Read the full error message and stack trace
|
|
62
|
+
2. Identify the file and line where error occurs
|
|
63
|
+
3. Trace the data flow leading to the error
|
|
64
|
+
4. Check for recent related changes
|
|
65
|
+
5. Test hypotheses with minimal changes
|
|
66
|
+
|
|
67
|
+
### Common Patterns
|
|
68
|
+
\`\`\`typescript
|
|
69
|
+
// Null check debugging
|
|
70
|
+
console.log('Value:', value, 'Type:', typeof value);
|
|
71
|
+
|
|
72
|
+
// Async debugging
|
|
73
|
+
try {
|
|
74
|
+
const result = await asyncOperation();
|
|
75
|
+
console.log('Success:', result);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error('Failed:', error.message, error.stack);
|
|
78
|
+
}
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
### Fix Verification
|
|
82
|
+
- Write a test that fails before the fix
|
|
83
|
+
- Confirm the fix resolves the issue
|
|
84
|
+
- Check for regressions
|
|
85
|
+
- Document the root cause`,
|
|
86
|
+
};
|
|
87
|
+
export { debugger_ as debugger };
|
|
88
|
+
export default debugger_;
|
|
89
|
+
//# sourceMappingURL=debugger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/debugger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,qJAAqJ;QACvJ,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAChD,WAAW,EAAE,CAAC,eAAe,CAAC;QAC9B,IAAI,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC;KAC1E;IAED,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DAmC2C;IAEzD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA2BU;CACzB,CAAC;AAEF,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;AACjC,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing Agents
|
|
3
|
+
*
|
|
4
|
+
* Agents specialized in testing, debugging, and quality assurance.
|
|
5
|
+
*
|
|
6
|
+
* @module @dcyfr/ai/agents-builtin/testing
|
|
7
|
+
*/
|
|
8
|
+
export { testEngineer } from './test-engineer';
|
|
9
|
+
export { debugger } from './debugger';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing Agents
|
|
3
|
+
*
|
|
4
|
+
* Agents specialized in testing, debugging, and quality assurance.
|
|
5
|
+
*
|
|
6
|
+
* @module @dcyfr/ai/agents-builtin/testing
|
|
7
|
+
*/
|
|
8
|
+
export { testEngineer } from './test-engineer';
|
|
9
|
+
export { debugger } from './debugger';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Engineer Agent
|
|
3
|
+
*
|
|
4
|
+
* Testing specialist for comprehensive test coverage and quality assurance.
|
|
5
|
+
* Use for test implementation, test strategy design, and quality validation.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/agents-builtin/testing/test-engineer
|
|
8
|
+
*/
|
|
9
|
+
import type { Agent } from '../../agents/types';
|
|
10
|
+
export declare const testEngineer: Agent;
|
|
11
|
+
export default testEngineer;
|
|
12
|
+
//# sourceMappingURL=test-engineer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-engineer.d.ts","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/test-engineer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,KAqF1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Engineer Agent
|
|
3
|
+
*
|
|
4
|
+
* Testing specialist for comprehensive test coverage and quality assurance.
|
|
5
|
+
* Use for test implementation, test strategy design, and quality validation.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/agents-builtin/testing/test-engineer
|
|
8
|
+
*/
|
|
9
|
+
export const testEngineer = {
|
|
10
|
+
manifest: {
|
|
11
|
+
name: 'test-engineer',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'Testing specialist for comprehensive test coverage and quality assurance. Use for implementing unit tests, integration tests, E2E tests, and test strategy design.',
|
|
14
|
+
category: 'testing',
|
|
15
|
+
tier: 'public',
|
|
16
|
+
model: 'sonnet',
|
|
17
|
+
permissionMode: 'acceptEdits',
|
|
18
|
+
tools: ['Read', 'Write', 'Edit', 'Bash'],
|
|
19
|
+
delegatesTo: ['debugger', 'error-detective'],
|
|
20
|
+
tags: ['testing', 'jest', 'vitest', 'playwright', 'coverage', 'qa', 'tdd'],
|
|
21
|
+
},
|
|
22
|
+
systemPrompt: `You are a test engineering specialist focused on ensuring software quality through comprehensive testing strategies.
|
|
23
|
+
|
|
24
|
+
## Testing Expertise
|
|
25
|
+
|
|
26
|
+
### Unit Testing
|
|
27
|
+
- **Jest/Vitest**: Modern JavaScript testing frameworks
|
|
28
|
+
- **React Testing Library**: Component testing best practices
|
|
29
|
+
- **Mock Strategies**: Proper isolation with mocks, stubs, and spies
|
|
30
|
+
- **Coverage Analysis**: Line, branch, and function coverage metrics
|
|
31
|
+
|
|
32
|
+
### Integration Testing
|
|
33
|
+
- **API Testing**: Supertest for HTTP endpoint validation
|
|
34
|
+
- **Database Testing**: Test fixtures and transaction rollbacks
|
|
35
|
+
- **Service Integration**: Testing service interactions
|
|
36
|
+
- **Contract Testing**: Pact for API contract verification
|
|
37
|
+
|
|
38
|
+
### End-to-End Testing
|
|
39
|
+
- **Playwright**: Cross-browser E2E automation
|
|
40
|
+
- **Cypress**: Real-time browser testing
|
|
41
|
+
- **Visual Regression**: Screenshot comparison testing
|
|
42
|
+
- **Performance Testing**: Lighthouse and Web Vitals
|
|
43
|
+
|
|
44
|
+
### Testing Patterns
|
|
45
|
+
- **Test Pyramid**: Proper balance of unit/integration/E2E
|
|
46
|
+
- **TDD/BDD**: Test-driven and behavior-driven development
|
|
47
|
+
- **Mocking Strategies**: When to mock vs. use real dependencies
|
|
48
|
+
- **Test Data Management**: Factories and fixtures
|
|
49
|
+
|
|
50
|
+
## Best Practices
|
|
51
|
+
|
|
52
|
+
1. **Isolation**: Each test should be independent and repeatable
|
|
53
|
+
2. **Clarity**: Test names should describe the expected behavior
|
|
54
|
+
3. **Speed**: Unit tests should be fast; slow tests should be E2E
|
|
55
|
+
4. **Maintenance**: Keep tests maintainable and refactor with code
|
|
56
|
+
5. **Coverage**: Aim for meaningful coverage, not 100% metrics`,
|
|
57
|
+
instructions: `## Test Implementation Guidelines
|
|
58
|
+
|
|
59
|
+
### Unit Test Structure
|
|
60
|
+
\`\`\`typescript
|
|
61
|
+
describe('ComponentName', () => {
|
|
62
|
+
beforeEach(() => {
|
|
63
|
+
// Setup
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should describe expected behavior', () => {
|
|
67
|
+
// Arrange
|
|
68
|
+
// Act
|
|
69
|
+
// Assert
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
\`\`\`
|
|
73
|
+
|
|
74
|
+
### Mock Best Practices
|
|
75
|
+
- Mock at the boundary (API calls, external services)
|
|
76
|
+
- Avoid mocking what you don't own when possible
|
|
77
|
+
- Use dependency injection for easier mocking
|
|
78
|
+
- Reset mocks between tests
|
|
79
|
+
|
|
80
|
+
### Coverage Goals
|
|
81
|
+
- Unit tests: 80%+ line coverage
|
|
82
|
+
- Critical paths: 100% coverage
|
|
83
|
+
- Integration tests for all API endpoints
|
|
84
|
+
- E2E tests for critical user journeys
|
|
85
|
+
|
|
86
|
+
### Performance Testing
|
|
87
|
+
- Establish baseline metrics
|
|
88
|
+
- Test under realistic load conditions
|
|
89
|
+
- Monitor memory leaks and bundle size
|
|
90
|
+
- Automated performance budgets`,
|
|
91
|
+
};
|
|
92
|
+
export default testEngineer;
|
|
93
|
+
//# sourceMappingURL=test-engineer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-engineer.js","sourceRoot":"","sources":["../../../../packages/ai/agents-builtin/testing/test-engineer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,QAAQ,EAAE;QACR,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,oKAAoK;QACtK,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QACxC,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;QAC5C,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;KAC3E;IAED,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAkC+C;IAE7D,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiCgB;CAC/B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
* 1. Framework defaults (from schema.ts)
|
|
6
6
|
* 2. Project config (.dcyfr.yaml, .dcyfr.json, package.json)
|
|
7
7
|
* 3. User overrides (environment variables, CLI flags)
|
|
8
|
+
*
|
|
9
|
+
* In browser environments, only defaults and user-provided overrides are used.
|
|
10
|
+
* File-based configuration loading requires Node.js.
|
|
8
11
|
*/
|
|
9
12
|
import { type FrameworkConfig } from './schema.js';
|
|
10
13
|
/**
|
|
@@ -13,24 +16,32 @@ import { type FrameworkConfig } from './schema.js';
|
|
|
13
16
|
export interface LoaderOptions {
|
|
14
17
|
/**
|
|
15
18
|
* Project root directory (default: process.cwd())
|
|
19
|
+
* Ignored in browser environments.
|
|
16
20
|
*/
|
|
17
21
|
projectRoot?: string;
|
|
18
22
|
/**
|
|
19
23
|
* Override configuration file path
|
|
24
|
+
* Ignored in browser environments.
|
|
20
25
|
*/
|
|
21
26
|
configFile?: string;
|
|
22
27
|
/**
|
|
23
28
|
* Enable environment variable overrides
|
|
29
|
+
* Only works in Node.js environments.
|
|
24
30
|
*/
|
|
25
31
|
enableEnvOverrides?: boolean;
|
|
26
32
|
/**
|
|
27
33
|
* Enable package.json config section
|
|
34
|
+
* Ignored in browser environments.
|
|
28
35
|
*/
|
|
29
36
|
enablePackageJson?: boolean;
|
|
30
37
|
/**
|
|
31
38
|
* Validation mode
|
|
32
39
|
*/
|
|
33
40
|
validate?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Direct configuration overrides (works in both browser and Node.js)
|
|
43
|
+
*/
|
|
44
|
+
overrides?: Partial<FrameworkConfig>;
|
|
34
45
|
}
|
|
35
46
|
/**
|
|
36
47
|
* Configuration loader with three-layer merge
|
|
@@ -44,19 +55,19 @@ export declare class ConfigLoader {
|
|
|
44
55
|
*/
|
|
45
56
|
load(): Promise<FrameworkConfig>;
|
|
46
57
|
/**
|
|
47
|
-
* Load project configuration from files
|
|
58
|
+
* Load project configuration from files (Node.js only)
|
|
48
59
|
*/
|
|
49
60
|
private loadProjectConfig;
|
|
50
61
|
/**
|
|
51
|
-
* Load configuration from a specific file
|
|
62
|
+
* Load configuration from a specific file (Node.js only)
|
|
52
63
|
*/
|
|
53
64
|
private loadConfigFile;
|
|
54
65
|
/**
|
|
55
|
-
* Load configuration from package.json
|
|
66
|
+
* Load configuration from package.json (Node.js only)
|
|
56
67
|
*/
|
|
57
68
|
private loadPackageJsonConfig;
|
|
58
69
|
/**
|
|
59
|
-
* Load user overrides from environment variables
|
|
70
|
+
* Load user overrides from environment variables (Node.js only)
|
|
60
71
|
*/
|
|
61
72
|
private loadUserOverrides;
|
|
62
73
|
/**
|
|
@@ -80,12 +91,15 @@ export declare class ConfigLoader {
|
|
|
80
91
|
*/
|
|
81
92
|
validate(config: unknown): FrameworkConfig;
|
|
82
93
|
/**
|
|
83
|
-
* Get configuration file path (if exists)
|
|
94
|
+
* Get configuration file path (if exists) - Node.js only
|
|
84
95
|
*/
|
|
85
96
|
getConfigFilePath(): Promise<string | null>;
|
|
86
97
|
}
|
|
87
98
|
/**
|
|
88
99
|
* Convenience function to load configuration
|
|
100
|
+
*
|
|
101
|
+
* In browser environments, returns default configuration merged with any
|
|
102
|
+
* provided overrides. File-based configuration is only loaded in Node.js.
|
|
89
103
|
*/
|
|
90
104
|
export declare function loadConfig(options?: LoaderOptions): Promise<FrameworkConfig>;
|
|
91
105
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../packages/ai/config/loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../packages/ai/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AA0B1F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,GAAE,aAAkB;IAWvC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAsBtC;;OAEG;YACW,iBAAiB;IAwC/B;;OAEG;YACW,cAAc;IAwB5B;;OAEG;YACW,qBAAqB;IA+BnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,SAAS;IAqBjB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe;IAU1C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAsBlD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAGlF"}
|
package/dist/ai/config/loader.js
CHANGED
|
@@ -5,12 +5,17 @@
|
|
|
5
5
|
* 1. Framework defaults (from schema.ts)
|
|
6
6
|
* 2. Project config (.dcyfr.yaml, .dcyfr.json, package.json)
|
|
7
7
|
* 3. User overrides (environment variables, CLI flags)
|
|
8
|
+
*
|
|
9
|
+
* In browser environments, only defaults and user-provided overrides are used.
|
|
10
|
+
* File-based configuration loading requires Node.js.
|
|
8
11
|
*/
|
|
9
|
-
import { readFile } from 'fs/promises';
|
|
10
|
-
import { existsSync } from 'fs';
|
|
11
|
-
import { parse as parseYaml } from 'yaml';
|
|
12
|
-
import { join } from 'path';
|
|
13
12
|
import { FrameworkConfigSchema, DEFAULT_CONFIG } from './schema.js';
|
|
13
|
+
/**
|
|
14
|
+
* Check if running in browser environment
|
|
15
|
+
*/
|
|
16
|
+
const isBrowser = typeof globalThis !== 'undefined' &&
|
|
17
|
+
typeof globalThis.window !== 'undefined' &&
|
|
18
|
+
typeof globalThis.window.document !== 'undefined';
|
|
14
19
|
/**
|
|
15
20
|
* Configuration file names to search for (in priority order)
|
|
16
21
|
*/
|
|
@@ -33,10 +38,11 @@ export class ConfigLoader {
|
|
|
33
38
|
projectRoot;
|
|
34
39
|
options;
|
|
35
40
|
constructor(options = {}) {
|
|
36
|
-
|
|
41
|
+
// In browser, projectRoot is not meaningful
|
|
42
|
+
this.projectRoot = isBrowser ? '' : (options.projectRoot || (typeof process !== 'undefined' ? process.cwd() : ''));
|
|
37
43
|
this.options = {
|
|
38
|
-
enableEnvOverrides:
|
|
39
|
-
enablePackageJson:
|
|
44
|
+
enableEnvOverrides: !isBrowser,
|
|
45
|
+
enablePackageJson: !isBrowser,
|
|
40
46
|
validate: true,
|
|
41
47
|
...options,
|
|
42
48
|
};
|
|
@@ -47,12 +53,13 @@ export class ConfigLoader {
|
|
|
47
53
|
async load() {
|
|
48
54
|
// Layer 1: Framework defaults
|
|
49
55
|
const defaults = { ...DEFAULT_CONFIG };
|
|
50
|
-
// Layer 2: Project configuration
|
|
51
|
-
const projectConfig = await this.loadProjectConfig();
|
|
52
|
-
// Layer 3: User overrides
|
|
53
|
-
const
|
|
56
|
+
// Layer 2: Project configuration (Node.js only)
|
|
57
|
+
const projectConfig = isBrowser ? {} : await this.loadProjectConfig();
|
|
58
|
+
// Layer 3: User overrides (environment variables in Node.js, or direct overrides)
|
|
59
|
+
const envOverrides = isBrowser ? {} : this.loadUserOverrides();
|
|
60
|
+
const directOverrides = this.options.overrides || {};
|
|
54
61
|
// Merge all layers (deep merge)
|
|
55
|
-
const merged = this.deepMerge(defaults, projectConfig,
|
|
62
|
+
const merged = this.deepMerge(defaults, projectConfig, envOverrides, directOverrides);
|
|
56
63
|
// Validate final configuration
|
|
57
64
|
if (this.options.validate) {
|
|
58
65
|
return this.validate(merged);
|
|
@@ -60,9 +67,15 @@ export class ConfigLoader {
|
|
|
60
67
|
return merged;
|
|
61
68
|
}
|
|
62
69
|
/**
|
|
63
|
-
* Load project configuration from files
|
|
70
|
+
* Load project configuration from files (Node.js only)
|
|
64
71
|
*/
|
|
65
72
|
async loadProjectConfig() {
|
|
73
|
+
if (isBrowser) {
|
|
74
|
+
return {};
|
|
75
|
+
}
|
|
76
|
+
// Dynamic imports for Node.js modules
|
|
77
|
+
const { existsSync } = await import('fs');
|
|
78
|
+
const { join } = await import('path');
|
|
66
79
|
// Try custom config file first
|
|
67
80
|
if (this.options.configFile) {
|
|
68
81
|
const customPath = join(this.projectRoot, this.options.configFile);
|
|
@@ -91,15 +104,20 @@ export class ConfigLoader {
|
|
|
91
104
|
return {};
|
|
92
105
|
}
|
|
93
106
|
/**
|
|
94
|
-
* Load configuration from a specific file
|
|
107
|
+
* Load configuration from a specific file (Node.js only)
|
|
95
108
|
*/
|
|
96
109
|
async loadConfigFile(filepath) {
|
|
110
|
+
if (isBrowser) {
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
97
113
|
try {
|
|
114
|
+
const { readFile } = await import('fs/promises');
|
|
98
115
|
const content = await readFile(filepath, 'utf-8');
|
|
99
116
|
if (filepath.endsWith('.json')) {
|
|
100
117
|
return JSON.parse(content);
|
|
101
118
|
}
|
|
102
119
|
if (filepath.endsWith('.yaml') || filepath.endsWith('.yml')) {
|
|
120
|
+
const { parse: parseYaml } = await import('yaml');
|
|
103
121
|
return parseYaml(content);
|
|
104
122
|
}
|
|
105
123
|
throw new Error(`Unsupported config file format: ${filepath}`);
|
|
@@ -109,9 +127,15 @@ export class ConfigLoader {
|
|
|
109
127
|
}
|
|
110
128
|
}
|
|
111
129
|
/**
|
|
112
|
-
* Load configuration from package.json
|
|
130
|
+
* Load configuration from package.json (Node.js only)
|
|
113
131
|
*/
|
|
114
132
|
async loadPackageJsonConfig() {
|
|
133
|
+
if (isBrowser) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
const { existsSync } = await import('fs');
|
|
137
|
+
const { readFile } = await import('fs/promises');
|
|
138
|
+
const { join } = await import('path');
|
|
115
139
|
const pkgPath = join(this.projectRoot, 'package.json');
|
|
116
140
|
if (!existsSync(pkgPath)) {
|
|
117
141
|
return null;
|
|
@@ -131,10 +155,13 @@ export class ConfigLoader {
|
|
|
131
155
|
}
|
|
132
156
|
}
|
|
133
157
|
/**
|
|
134
|
-
* Load user overrides from environment variables
|
|
158
|
+
* Load user overrides from environment variables (Node.js only)
|
|
135
159
|
*/
|
|
136
160
|
loadUserOverrides() {
|
|
137
|
-
if (!this.options.enableEnvOverrides) {
|
|
161
|
+
if (isBrowser || !this.options.enableEnvOverrides) {
|
|
162
|
+
return {};
|
|
163
|
+
}
|
|
164
|
+
if (typeof process === 'undefined' || !process.env) {
|
|
138
165
|
return {};
|
|
139
166
|
}
|
|
140
167
|
const overrides = {};
|
|
@@ -233,9 +260,14 @@ export class ConfigLoader {
|
|
|
233
260
|
}
|
|
234
261
|
}
|
|
235
262
|
/**
|
|
236
|
-
* Get configuration file path (if exists)
|
|
263
|
+
* Get configuration file path (if exists) - Node.js only
|
|
237
264
|
*/
|
|
238
265
|
async getConfigFilePath() {
|
|
266
|
+
if (isBrowser) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
const { existsSync } = await import('fs');
|
|
270
|
+
const { join } = await import('path');
|
|
239
271
|
if (this.options.configFile) {
|
|
240
272
|
const customPath = join(this.projectRoot, this.options.configFile);
|
|
241
273
|
return existsSync(customPath) ? customPath : null;
|
|
@@ -251,6 +283,9 @@ export class ConfigLoader {
|
|
|
251
283
|
}
|
|
252
284
|
/**
|
|
253
285
|
* Convenience function to load configuration
|
|
286
|
+
*
|
|
287
|
+
* In browser environments, returns default configuration merged with any
|
|
288
|
+
* provided overrides. File-based configuration is only loaded in Node.js.
|
|
254
289
|
*/
|
|
255
290
|
export async function loadConfig(options) {
|
|
256
291
|
const loader = new ConfigLoader(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../packages/ai/config/loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../packages/ai/config/loader.ts"],"names":[],"mappings":"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"}
|