@fractary/faber 0.1.1
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 +146 -0
- package/dist/api.d.ts +81 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +261 -0
- package/dist/api.js.map +1 -0
- package/dist/bindings/claude-code/transformer.d.ts +55 -0
- package/dist/bindings/claude-code/transformer.d.ts.map +1 -0
- package/dist/bindings/claude-code/transformer.js +271 -0
- package/dist/bindings/claude-code/transformer.js.map +1 -0
- package/dist/bindings/index.d.ts +21 -0
- package/dist/bindings/index.d.ts.map +1 -0
- package/dist/bindings/index.js +43 -0
- package/dist/bindings/index.js.map +1 -0
- package/dist/core/concepts/base.d.ts +89 -0
- package/dist/core/concepts/base.d.ts.map +1 -0
- package/dist/core/concepts/base.js +230 -0
- package/dist/core/concepts/base.js.map +1 -0
- package/dist/core/concepts/eval.d.ts +90 -0
- package/dist/core/concepts/eval.d.ts.map +1 -0
- package/dist/core/concepts/eval.js +118 -0
- package/dist/core/concepts/eval.js.map +1 -0
- package/dist/core/concepts/index.d.ts +9 -0
- package/dist/core/concepts/index.d.ts.map +1 -0
- package/dist/core/concepts/index.js +36 -0
- package/dist/core/concepts/index.js.map +1 -0
- package/dist/core/concepts/role.d.ts +19 -0
- package/dist/core/concepts/role.d.ts.map +1 -0
- package/dist/core/concepts/role.js +227 -0
- package/dist/core/concepts/role.js.map +1 -0
- package/dist/core/concepts/team.d.ts +57 -0
- package/dist/core/concepts/team.d.ts.map +1 -0
- package/dist/core/concepts/team.js +106 -0
- package/dist/core/concepts/team.js.map +1 -0
- package/dist/core/concepts/tool.d.ts +43 -0
- package/dist/core/concepts/tool.d.ts.map +1 -0
- package/dist/core/concepts/tool.js +104 -0
- package/dist/core/concepts/tool.js.map +1 -0
- package/dist/core/concepts/workflow.d.ts +87 -0
- package/dist/core/concepts/workflow.d.ts.map +1 -0
- package/dist/core/concepts/workflow.js +114 -0
- package/dist/core/concepts/workflow.js.map +1 -0
- package/dist/core/config/index.d.ts +34 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +80 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/loader.d.ts +53 -0
- package/dist/core/config/loader.d.ts.map +1 -0
- package/dist/core/config/loader.js +234 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/contexts/index.d.ts +36 -0
- package/dist/core/contexts/index.d.ts.map +1 -0
- package/dist/core/contexts/index.js +75 -0
- package/dist/core/contexts/index.js.map +1 -0
- package/dist/core/contexts/loader.d.ts +66 -0
- package/dist/core/contexts/loader.d.ts.map +1 -0
- package/dist/core/contexts/loader.js +261 -0
- package/dist/core/contexts/loader.js.map +1 -0
- package/dist/core/overlays/index.d.ts +31 -0
- package/dist/core/overlays/index.d.ts.map +1 -0
- package/dist/core/overlays/index.js +82 -0
- package/dist/core/overlays/index.js.map +1 -0
- package/dist/core/overlays/resolver.d.ts +65 -0
- package/dist/core/overlays/resolver.d.ts.map +1 -0
- package/dist/core/overlays/resolver.js +249 -0
- package/dist/core/overlays/resolver.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/types/bindings.d.ts +59 -0
- package/dist/types/bindings.d.ts.map +1 -0
- package/dist/types/bindings.js +6 -0
- package/dist/types/bindings.js.map +1 -0
- package/dist/types/concepts.d.ts +131 -0
- package/dist/types/concepts.d.ts.map +1 -0
- package/dist/types/concepts.js +29 -0
- package/dist/types/concepts.js.map +1 -0
- package/dist/types/config.d.ts +42 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/contexts.d.ts +59 -0
- package/dist/types/contexts.d.ts.map +1 -0
- package/dist/types/contexts.js +17 -0
- package/dist/types/contexts.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +30 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/overlays.d.ts +28 -0
- package/dist/types/overlays.d.ts.map +1 -0
- package/dist/types/overlays.js +15 -0
- package/dist/types/overlays.js.map +1 -0
- package/dist/utils/file-system.d.ts +40 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +105 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/template.d.ts +28 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/utils/template.js +107 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/validation.d.ts +42 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +94 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +83 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Fractary Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Faber
|
|
2
|
+
|
|
3
|
+
> Universal AI Agent Orchestration Framework - Core SDK
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](package.json)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Faber is the core SDK for building universal AI agents that can be deployed across multiple AI frameworks (Claude Code, LangGraph, CrewAI, etc.) and adapted to different platforms and organizational contexts.
|
|
12
|
+
|
|
13
|
+
This is the **core framework package**. For the CLI tool, see [@fractary/faber-cli](https://www.npmjs.com/package/@fractary/faber-cli).
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @fractary/faber
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Programmatic Usage
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { FaberAPI, RoleLoader } from '@fractary/faber';
|
|
25
|
+
|
|
26
|
+
// Initialize API
|
|
27
|
+
const api = new FaberAPI({
|
|
28
|
+
projectPath: './my-agents'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Load and build an agent
|
|
32
|
+
const result = await api.build('claude', 'role', 'issue-manager', {
|
|
33
|
+
output: './deployments/claude',
|
|
34
|
+
platform: 'github-issues'
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
console.log('Built agent:', result.files);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Core Features
|
|
41
|
+
|
|
42
|
+
- **Concept System** - Roles, Teams, Tools, Workflows, Evals
|
|
43
|
+
- **Context System** - 7 categories of dynamic knowledge loading
|
|
44
|
+
- **Overlay System** - Customization without forking
|
|
45
|
+
- **Binding Framework** - Transform to any AI framework
|
|
46
|
+
- **Configuration Management** - Flexible config system
|
|
47
|
+
- **TypeScript First** - Full type safety
|
|
48
|
+
|
|
49
|
+
## API Reference
|
|
50
|
+
|
|
51
|
+
### FaberAPI
|
|
52
|
+
|
|
53
|
+
Main programmatic interface:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
class FaberAPI {
|
|
57
|
+
// Initialize a new Faber project
|
|
58
|
+
async init(options: InitOptions): Promise<void>
|
|
59
|
+
|
|
60
|
+
// Create new concepts
|
|
61
|
+
async create(type: ConceptType, name: string, options: CreateOptions): Promise<void>
|
|
62
|
+
|
|
63
|
+
// List available concepts
|
|
64
|
+
async list(type?: ConceptType, filter?: ListFilter): Promise<ConceptInfo[]>
|
|
65
|
+
|
|
66
|
+
// Validate a concept
|
|
67
|
+
async validate(type: ConceptType, name: string): Promise<ValidationResult>
|
|
68
|
+
|
|
69
|
+
// Build/transform for a framework
|
|
70
|
+
async build(binding: string, type: ConceptType, name: string, options: BuildOptions): Promise<DeploymentArtifact>
|
|
71
|
+
|
|
72
|
+
// Load configuration
|
|
73
|
+
async loadConfig(): Promise<Config>
|
|
74
|
+
|
|
75
|
+
// Apply overlays
|
|
76
|
+
async applyOverlays(concept: Concept, overlays: Overlays): Promise<Concept>
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Concept Loaders
|
|
81
|
+
|
|
82
|
+
Direct access to loaders:
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
import { RoleLoader, TeamLoader, ToolLoader } from '@fractary/faber/loaders';
|
|
86
|
+
|
|
87
|
+
const loader = new RoleLoader();
|
|
88
|
+
const role = await loader.load('./roles/my-agent');
|
|
89
|
+
const validation = await loader.validate(role);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Bindings
|
|
93
|
+
|
|
94
|
+
Create custom framework bindings:
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
import { BindingTransformer, DeploymentArtifact } from '@fractary/faber/bindings';
|
|
98
|
+
|
|
99
|
+
class MyCustomBinding implements BindingTransformer {
|
|
100
|
+
async transform(concept: Concept, config: Config, overlays?: Overlays): Promise<DeploymentArtifact> {
|
|
101
|
+
// Custom transformation logic
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async validate(concept: Concept): Promise<ValidationResult> {
|
|
105
|
+
// Validation logic
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getRequirements(): BindingRequirements {
|
|
109
|
+
return {
|
|
110
|
+
supportedConcepts: [ConceptType.ROLE, ConceptType.TEAM]
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Documentation
|
|
117
|
+
|
|
118
|
+
- [Core Concepts](https://github.com/fractary/faber-cli/blob/main/docs/concepts.md)
|
|
119
|
+
- [Context System](https://github.com/fractary/faber-cli/blob/main/docs/contexts.md)
|
|
120
|
+
- [Overlay System](https://github.com/fractary/faber-cli/blob/main/docs/overlays.md)
|
|
121
|
+
- [Binding System](https://github.com/fractary/faber-cli/blob/main/docs/bindings.md)
|
|
122
|
+
- [API Reference](https://github.com/fractary/faber-cli/blob/main/docs/api.md)
|
|
123
|
+
|
|
124
|
+
## CLI Tool
|
|
125
|
+
|
|
126
|
+
For command-line usage, install the CLI package:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
npm install -g @fractary/faber-cli
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
See [@fractary/faber-cli](https://www.npmjs.com/package/@fractary/faber-cli) for CLI documentation.
|
|
133
|
+
|
|
134
|
+
## Contributing
|
|
135
|
+
|
|
136
|
+
See [Contributing Guide](https://github.com/fractary/faber-cli/blob/main/docs/contributing.md).
|
|
137
|
+
|
|
138
|
+
## License
|
|
139
|
+
|
|
140
|
+
MIT - see [LICENSE](LICENSE) file for details.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
**Part of the Faber Ecosystem**
|
|
145
|
+
- [@fractary/faber](https://www.npmjs.com/package/@fractary/faber) - Core SDK (this package)
|
|
146
|
+
- [@fractary/faber-cli](https://www.npmjs.com/package/@fractary/faber-cli) - CLI tool
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Faber-CLI Programmatic API
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { Config, ConceptType, ValidationResult, Concept } from './types';
|
|
6
|
+
import { Overlays } from './core/overlays/resolver';
|
|
7
|
+
import { ConceptInfo, DeploymentArtifact } from './types';
|
|
8
|
+
export interface FaberOptions {
|
|
9
|
+
projectPath?: string;
|
|
10
|
+
configPath?: string;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
quiet?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface CreateOptions {
|
|
15
|
+
org?: string;
|
|
16
|
+
system?: string;
|
|
17
|
+
platforms?: string[];
|
|
18
|
+
description?: string;
|
|
19
|
+
members?: string[];
|
|
20
|
+
type?: string;
|
|
21
|
+
target?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface BuildOptions {
|
|
24
|
+
output?: string;
|
|
25
|
+
noOverlays?: boolean;
|
|
26
|
+
platform?: string;
|
|
27
|
+
dryRun?: boolean;
|
|
28
|
+
verbose?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare class FaberAPI extends EventEmitter {
|
|
31
|
+
private projectPath;
|
|
32
|
+
private configPath;
|
|
33
|
+
private config;
|
|
34
|
+
private configLoader;
|
|
35
|
+
constructor(options?: FaberOptions);
|
|
36
|
+
/**
|
|
37
|
+
* Initialize a new Faber project
|
|
38
|
+
*/
|
|
39
|
+
init(template?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get project configuration
|
|
42
|
+
*/
|
|
43
|
+
getConfig(): Promise<Config>;
|
|
44
|
+
/**
|
|
45
|
+
* Set configuration value
|
|
46
|
+
*/
|
|
47
|
+
setConfig(key: string, value: any): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Create a new concept
|
|
50
|
+
*/
|
|
51
|
+
createConcept(type: ConceptType, name: string, options?: CreateOptions): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Load a concept
|
|
54
|
+
*/
|
|
55
|
+
loadConcept<T extends Concept>(type: ConceptType, name: string): Promise<T>;
|
|
56
|
+
/**
|
|
57
|
+
* List concepts
|
|
58
|
+
*/
|
|
59
|
+
listConcepts(type?: ConceptType): Promise<ConceptInfo[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Validate a concept
|
|
62
|
+
*/
|
|
63
|
+
validateConcept(type: ConceptType, name: string): Promise<ValidationResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Build a deployment
|
|
66
|
+
*/
|
|
67
|
+
build(framework: string, concept: Concept, options?: BuildOptions): Promise<DeploymentArtifact>;
|
|
68
|
+
/**
|
|
69
|
+
* Deploy an artifact
|
|
70
|
+
*/
|
|
71
|
+
deploy(artifact: DeploymentArtifact, target: string): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Resolve overlays
|
|
74
|
+
*/
|
|
75
|
+
resolveOverlays(type: string, name: string, platform?: string): Promise<Overlays>;
|
|
76
|
+
/**
|
|
77
|
+
* Apply overlays to concept
|
|
78
|
+
*/
|
|
79
|
+
applyOverlays(concept: Concept, overlays: Overlays): Promise<Concept>;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOzE,OAAO,EAAmB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAe;gBAEvB,OAAO,GAAE,YAAiB;IAOtC;;OAEG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C5C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ChG;;OAEG;IACG,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA6BjF;;OAEG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAY9D;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BjF;;OAEG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuCzG;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKvF;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAK5E"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Faber-CLI Programmatic API
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.FaberAPI = void 0;
|
|
10
|
+
const events_1 = require("events");
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const types_1 = require("./types");
|
|
13
|
+
const loader_1 = require("./core/config/loader");
|
|
14
|
+
const role_1 = require("./core/concepts/role");
|
|
15
|
+
const team_1 = require("./core/concepts/team");
|
|
16
|
+
const workflow_1 = require("./core/concepts/workflow");
|
|
17
|
+
const tool_1 = require("./core/concepts/tool");
|
|
18
|
+
const eval_1 = require("./core/concepts/eval");
|
|
19
|
+
const resolver_1 = require("./core/overlays/resolver");
|
|
20
|
+
const transformer_1 = require("./bindings/claude-code/transformer");
|
|
21
|
+
const file_system_1 = require("./utils/file-system");
|
|
22
|
+
class FaberAPI extends events_1.EventEmitter {
|
|
23
|
+
constructor(options = {}) {
|
|
24
|
+
super();
|
|
25
|
+
this.config = null;
|
|
26
|
+
this.projectPath = options.projectPath || process.cwd();
|
|
27
|
+
this.configPath = options.configPath || path_1.default.join(this.projectPath, '.faber', 'config.yml');
|
|
28
|
+
this.configLoader = new loader_1.ConfigLoader();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize a new Faber project
|
|
32
|
+
*/
|
|
33
|
+
async init(template) {
|
|
34
|
+
// Create project structure
|
|
35
|
+
const dirs = [
|
|
36
|
+
'.faber/overlays/organization',
|
|
37
|
+
'.faber/overlays/platforms',
|
|
38
|
+
'.faber/overlays/roles',
|
|
39
|
+
'.faber/overlays/teams',
|
|
40
|
+
'.faber/overlays/workflows',
|
|
41
|
+
'roles',
|
|
42
|
+
'tools',
|
|
43
|
+
'teams',
|
|
44
|
+
'workflows',
|
|
45
|
+
'evals',
|
|
46
|
+
'deployments'
|
|
47
|
+
];
|
|
48
|
+
for (const dir of dirs) {
|
|
49
|
+
await (0, file_system_1.ensureDirectoryExists)(path_1.default.join(this.projectPath, dir));
|
|
50
|
+
}
|
|
51
|
+
// Create default config
|
|
52
|
+
const defaultConfig = {
|
|
53
|
+
platforms: {},
|
|
54
|
+
mcp_servers: {},
|
|
55
|
+
overlays: {
|
|
56
|
+
enabled: true,
|
|
57
|
+
paths: ['.faber/overlays']
|
|
58
|
+
},
|
|
59
|
+
bindings: {
|
|
60
|
+
claude: {
|
|
61
|
+
auto_activate: true
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
await (0, file_system_1.writeFile)(this.configPath, `# Faber-CLI Configuration\n\n${JSON.stringify(defaultConfig, null, 2)}`);
|
|
66
|
+
this.emit('init', { projectPath: this.projectPath, template });
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get project configuration
|
|
70
|
+
*/
|
|
71
|
+
async getConfig() {
|
|
72
|
+
if (!this.config) {
|
|
73
|
+
this.config = await this.configLoader.load(this.configPath);
|
|
74
|
+
}
|
|
75
|
+
return this.config;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Set configuration value
|
|
79
|
+
*/
|
|
80
|
+
async setConfig(key, value) {
|
|
81
|
+
const config = await this.getConfig();
|
|
82
|
+
const keys = key.split('.');
|
|
83
|
+
let obj = config;
|
|
84
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
85
|
+
if (!(keys[i] in obj)) {
|
|
86
|
+
obj[keys[i]] = {};
|
|
87
|
+
}
|
|
88
|
+
obj = obj[keys[i]];
|
|
89
|
+
}
|
|
90
|
+
obj[keys[keys.length - 1]] = value;
|
|
91
|
+
await (0, file_system_1.writeFile)(this.configPath, JSON.stringify(config, null, 2));
|
|
92
|
+
this.config = config;
|
|
93
|
+
this.emit('config:set', { key, value });
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a new concept
|
|
97
|
+
*/
|
|
98
|
+
async createConcept(type, name, options = {}) {
|
|
99
|
+
const conceptPath = path_1.default.join(this.projectPath, `${type}s`, name);
|
|
100
|
+
await (0, file_system_1.ensureDirectoryExists)(conceptPath);
|
|
101
|
+
// Create metadata file based on type
|
|
102
|
+
const metadata = {
|
|
103
|
+
name,
|
|
104
|
+
description: options.description || `${type} ${name}`,
|
|
105
|
+
...options
|
|
106
|
+
};
|
|
107
|
+
const metadataFile = type === types_1.ConceptType.ROLE ? 'agent.yml' :
|
|
108
|
+
type === types_1.ConceptType.TEAM ? 'team.yml' :
|
|
109
|
+
type === types_1.ConceptType.WORKFLOW ? 'workflow.yml' :
|
|
110
|
+
type === types_1.ConceptType.TOOL ? 'tool.yml' :
|
|
111
|
+
'eval.yml';
|
|
112
|
+
await (0, file_system_1.writeFile)(path_1.default.join(conceptPath, metadataFile), `name: ${name}\n` +
|
|
113
|
+
`description: ${metadata.description}\n` +
|
|
114
|
+
(type === types_1.ConceptType.ROLE && options.platforms ?
|
|
115
|
+
`platforms:\n${options.platforms.map(p => ` - ${p}`).join('\n')}\n` : '') +
|
|
116
|
+
(type === types_1.ConceptType.TEAM && options.members ?
|
|
117
|
+
`members:\n${options.members.map(m => ` - role: ${m}`).join('\n')}\n` : ''));
|
|
118
|
+
// Create prompt.md for roles
|
|
119
|
+
if (type === types_1.ConceptType.ROLE) {
|
|
120
|
+
await (0, file_system_1.writeFile)(path_1.default.join(conceptPath, 'prompt.md'), `# ${name}\n\n${metadata.description}\n\n## Core Behavior\n\n[Define agent behavior here]`);
|
|
121
|
+
// Create subdirectories
|
|
122
|
+
for (const dir of ['tasks', 'flows', 'contexts']) {
|
|
123
|
+
await (0, file_system_1.ensureDirectoryExists)(path_1.default.join(conceptPath, dir));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
this.emit('concept:created', { type, name, options });
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Load a concept
|
|
130
|
+
*/
|
|
131
|
+
async loadConcept(type, name) {
|
|
132
|
+
const conceptPath = path_1.default.join(this.projectPath, `${type}s`, name);
|
|
133
|
+
let loader;
|
|
134
|
+
switch (type) {
|
|
135
|
+
case types_1.ConceptType.ROLE:
|
|
136
|
+
loader = new role_1.RoleLoader();
|
|
137
|
+
break;
|
|
138
|
+
case types_1.ConceptType.TEAM:
|
|
139
|
+
loader = new team_1.TeamLoader();
|
|
140
|
+
break;
|
|
141
|
+
case types_1.ConceptType.WORKFLOW:
|
|
142
|
+
loader = new workflow_1.WorkflowLoader();
|
|
143
|
+
break;
|
|
144
|
+
case types_1.ConceptType.TOOL:
|
|
145
|
+
loader = new tool_1.ToolLoader();
|
|
146
|
+
break;
|
|
147
|
+
case types_1.ConceptType.EVAL:
|
|
148
|
+
loader = new eval_1.EvalLoader();
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
throw new Error(`Unknown concept type: ${type}`);
|
|
152
|
+
}
|
|
153
|
+
const concept = await loader.load(conceptPath);
|
|
154
|
+
this.emit('concept:loaded', { type, name, concept });
|
|
155
|
+
return concept;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* List concepts
|
|
159
|
+
*/
|
|
160
|
+
async listConcepts(type) {
|
|
161
|
+
const concepts = [];
|
|
162
|
+
const types = type ? [type] : Object.values(types_1.ConceptType);
|
|
163
|
+
for (const t of types) {
|
|
164
|
+
// Implementation would scan directories and load metadata
|
|
165
|
+
// For now, returning empty array
|
|
166
|
+
}
|
|
167
|
+
return concepts;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Validate a concept
|
|
171
|
+
*/
|
|
172
|
+
async validateConcept(type, name) {
|
|
173
|
+
const concept = await this.loadConcept(type, name);
|
|
174
|
+
let loader;
|
|
175
|
+
switch (type) {
|
|
176
|
+
case types_1.ConceptType.ROLE:
|
|
177
|
+
loader = new role_1.RoleLoader();
|
|
178
|
+
break;
|
|
179
|
+
case types_1.ConceptType.TEAM:
|
|
180
|
+
loader = new team_1.TeamLoader();
|
|
181
|
+
break;
|
|
182
|
+
case types_1.ConceptType.WORKFLOW:
|
|
183
|
+
loader = new workflow_1.WorkflowLoader();
|
|
184
|
+
break;
|
|
185
|
+
case types_1.ConceptType.TOOL:
|
|
186
|
+
loader = new tool_1.ToolLoader();
|
|
187
|
+
break;
|
|
188
|
+
case types_1.ConceptType.EVAL:
|
|
189
|
+
loader = new eval_1.EvalLoader();
|
|
190
|
+
break;
|
|
191
|
+
default:
|
|
192
|
+
throw new Error(`Unknown concept type: ${type}`);
|
|
193
|
+
}
|
|
194
|
+
const result = await loader.validate(concept);
|
|
195
|
+
this.emit('concept:validated', { type, name, result });
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build a deployment
|
|
200
|
+
*/
|
|
201
|
+
async build(framework, concept, options = {}) {
|
|
202
|
+
this.emit('build:start', { framework, concept: concept.name });
|
|
203
|
+
const config = await this.getConfig();
|
|
204
|
+
// Resolve overlays
|
|
205
|
+
const overlayResolver = new resolver_1.OverlayResolver(this.projectPath);
|
|
206
|
+
const overlays = options.noOverlays ?
|
|
207
|
+
{} :
|
|
208
|
+
await overlayResolver.resolveOverlays(concept.type, concept.name, options.platform);
|
|
209
|
+
// Get transformer
|
|
210
|
+
let transformer;
|
|
211
|
+
switch (framework) {
|
|
212
|
+
case 'claude':
|
|
213
|
+
transformer = new transformer_1.ClaudeCodeTransformer();
|
|
214
|
+
break;
|
|
215
|
+
default:
|
|
216
|
+
throw new Error(`Unknown framework: ${framework}`);
|
|
217
|
+
}
|
|
218
|
+
// Transform
|
|
219
|
+
const artifact = await transformer.transform(concept, config, overlays);
|
|
220
|
+
// Write files unless dry-run
|
|
221
|
+
if (!options.dryRun) {
|
|
222
|
+
const outputDir = options.output || path_1.default.join(this.projectPath, 'deployments', framework);
|
|
223
|
+
for (const file of artifact.files) {
|
|
224
|
+
const filePath = path_1.default.join(outputDir, file.path);
|
|
225
|
+
await (0, file_system_1.ensureDirectoryExists)(path_1.default.dirname(filePath));
|
|
226
|
+
await (0, file_system_1.writeFile)(filePath, file.content);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
this.emit('build:complete', artifact);
|
|
230
|
+
return artifact;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Deploy an artifact
|
|
234
|
+
*/
|
|
235
|
+
async deploy(artifact, target) {
|
|
236
|
+
this.emit('deploy:start', { artifact, target });
|
|
237
|
+
for (const file of artifact.files) {
|
|
238
|
+
const filePath = path_1.default.join(target, file.path);
|
|
239
|
+
await (0, file_system_1.ensureDirectoryExists)(path_1.default.dirname(filePath));
|
|
240
|
+
await (0, file_system_1.writeFile)(filePath, file.content);
|
|
241
|
+
}
|
|
242
|
+
this.emit('deploy:complete', { artifact, target });
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Resolve overlays
|
|
246
|
+
*/
|
|
247
|
+
async resolveOverlays(type, name, platform) {
|
|
248
|
+
const resolver = new resolver_1.OverlayResolver(this.projectPath);
|
|
249
|
+
return resolver.resolveOverlays(type, name, platform);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Apply overlays to concept
|
|
253
|
+
*/
|
|
254
|
+
async applyOverlays(concept, overlays) {
|
|
255
|
+
// Deep merge logic would go here
|
|
256
|
+
// For now, returning original concept
|
|
257
|
+
return concept;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.FaberAPI = FaberAPI;
|
|
261
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code binding transformer
|
|
3
|
+
*/
|
|
4
|
+
import { Role, Config, DeploymentArtifact } from '../../types';
|
|
5
|
+
import { Overlays } from '../../core/overlays';
|
|
6
|
+
export declare class ClaudeCodeTransformer {
|
|
7
|
+
private bindingConfig;
|
|
8
|
+
private templates;
|
|
9
|
+
constructor(bindingConfigPath?: string);
|
|
10
|
+
/**
|
|
11
|
+
* Transform role to Claude Code deployment
|
|
12
|
+
*/
|
|
13
|
+
transform(role: Role, config: Config, overlays: Overlays): Promise<DeploymentArtifact>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate agent file content
|
|
16
|
+
*/
|
|
17
|
+
private generateAgentFile;
|
|
18
|
+
/**
|
|
19
|
+
* Copy contexts to deployment
|
|
20
|
+
*/
|
|
21
|
+
private copyContexts;
|
|
22
|
+
/**
|
|
23
|
+
* Copy overlay contexts to deployment
|
|
24
|
+
*/
|
|
25
|
+
private copyOverlayContexts;
|
|
26
|
+
/**
|
|
27
|
+
* Copy tasks to deployment
|
|
28
|
+
*/
|
|
29
|
+
private copyTasks;
|
|
30
|
+
/**
|
|
31
|
+
* Copy flows to deployment
|
|
32
|
+
*/
|
|
33
|
+
private copyFlows;
|
|
34
|
+
/**
|
|
35
|
+
* Load binding configuration
|
|
36
|
+
*/
|
|
37
|
+
private loadBindingConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Load Handlebars templates
|
|
40
|
+
*/
|
|
41
|
+
private loadTemplates;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve path template
|
|
44
|
+
*/
|
|
45
|
+
private resolvePath;
|
|
46
|
+
/**
|
|
47
|
+
* Collect overlay contexts for template
|
|
48
|
+
*/
|
|
49
|
+
private collectOverlayContexts;
|
|
50
|
+
/**
|
|
51
|
+
* Get MCP servers used by role
|
|
52
|
+
*/
|
|
53
|
+
private getMCPServers;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/bindings/claude-code/transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EACL,IAAI,EACJ,MAAM,EACN,kBAAkB,EAKnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAGV;gBAEK,iBAAiB,CAAC,EAAE,MAAM;IAOtC;;OAEG;IACG,SAAS,CACb,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,kBAAkB,CAAC;IA6C9B;;OAEG;YACW,iBAAiB;IAuC/B;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,mBAAmB;IAuDjC;;OAEG;YACW,SAAS;IAkBvB;;OAEG;YACW,SAAS;IAkBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,aAAa;CAgBtB"}
|