@fractary/faber 1.1.0 → 1.2.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/dist/__tests__/integration/forge-integration.test.d.ts +7 -0
- package/dist/__tests__/integration/forge-integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/forge-integration.test.js +370 -0
- package/dist/__tests__/integration/forge-integration.test.js.map +1 -0
- package/dist/config.d.ts +45 -44
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +114 -28
- package/dist/config.js.map +1 -1
- package/dist/spec/manager.js +1 -1
- package/dist/spec/manager.js.map +1 -1
- package/dist/types.d.ts +24 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow/__tests__/agent-executor.test.d.ts +5 -0
- package/dist/workflow/__tests__/agent-executor.test.d.ts.map +1 -0
- package/dist/workflow/__tests__/agent-executor.test.js +282 -0
- package/dist/workflow/__tests__/agent-executor.test.js.map +1 -0
- package/dist/workflow/agent-executor.d.ts +59 -0
- package/dist/workflow/agent-executor.d.ts.map +1 -0
- package/dist/workflow/agent-executor.js +150 -0
- package/dist/workflow/agent-executor.js.map +1 -0
- package/dist/workflow/faber.d.ts +13 -0
- package/dist/workflow/faber.d.ts.map +1 -1
- package/dist/workflow/faber.js +87 -2
- package/dist/workflow/faber.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +3 -1
- package/dist/workflow/index.js.map +1 -1
- package/package.json +2 -1
- package/LICENSE +0 -21
- package/README.md +0 -263
package/README.md
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
# @fractary/faber
|
|
2
|
-
|
|
3
|
-
> AI-native workflow automation that runs in production
|
|
4
|
-
|
|
5
|
-
[](LICENSE)
|
|
6
|
-
[](package.json)
|
|
7
|
-
[](https://www.typescriptlang.org/)
|
|
8
|
-
|
|
9
|
-
## What is FABER?
|
|
10
|
-
|
|
11
|
-
**FABER enables AI agents to do meaningful work autonomously while knowing exactly when to involve humans.**
|
|
12
|
-
|
|
13
|
-
Unlike simple automation tools that chain API calls, FABER orchestrates AI agents that actually reason about your work. Unlike raw AI frameworks, FABER provides the guardrails enterprises need to deploy with confidence.
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
From issue to PR, autonomously.
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### The Problem
|
|
20
|
-
|
|
21
|
-
| Approach | What Happens |
|
|
22
|
-
|----------|--------------|
|
|
23
|
-
| **Deterministic Automation** (Zapier, Make) | Works for simple tasks, breaks when reasoning is required |
|
|
24
|
-
| **Raw AI Agents** (LangGraph, AutoGen) | Powerful but unpredictable—enterprises won't adopt |
|
|
25
|
-
| **AI + Approve Everything** | Human becomes the bottleneck, defeats the purpose |
|
|
26
|
-
|
|
27
|
-
### The FABER Solution
|
|
28
|
-
|
|
29
|
-
FABER takes a different approach: **AI operates autonomously within defined boundaries, escalates intelligently when boundaries are approached.**
|
|
30
|
-
|
|
31
|
-
- **Structural Guardrails**: The FABER methodology (Frame → Architect → Build → Evaluate → Release) prevents chaos through process
|
|
32
|
-
- **Boundary Guardrails**: Hard limits the AI cannot cross (production deploys, cost thresholds)
|
|
33
|
-
- **Intelligent Guardrails**: AI reasons about its own confidence and risk, deciding when to proceed vs. escalate
|
|
34
|
-
|
|
35
|
-
The result: 90% autonomous operation, 10% human involvement—focused on decisions that actually matter.
|
|
36
|
-
|
|
37
|
-
## Who is FABER For?
|
|
38
|
-
|
|
39
|
-
### Development Teams
|
|
40
|
-
Automate complex development tasks—from understanding an issue to shipping a PR. Focus on interesting problems while AI handles the routine work.
|
|
41
|
-
|
|
42
|
-
### Technical Operations
|
|
43
|
-
Automated incident response, deployment pipelines, and infrastructure changes with human oversight on critical decisions.
|
|
44
|
-
|
|
45
|
-
### Platform Engineers
|
|
46
|
-
Build AI-powered workflows that your entire organization can use, with the safety and observability enterprises require.
|
|
47
|
-
|
|
48
|
-
## Key Concepts
|
|
49
|
-
|
|
50
|
-
### The FABER Methodology
|
|
51
|
-
|
|
52
|
-
Every workflow follows five phases:
|
|
53
|
-
|
|
54
|
-
| Phase | Purpose |
|
|
55
|
-
|-------|---------|
|
|
56
|
-
| **Frame** | Understand the problem before acting |
|
|
57
|
-
| **Architect** | Plan the approach before building |
|
|
58
|
-
| **Build** | Implement to specification |
|
|
59
|
-
| **Evaluate** | Validate before shipping |
|
|
60
|
-
| **Release** | Controlled delivery |
|
|
61
|
-
|
|
62
|
-
### Earned Autonomy
|
|
63
|
-
|
|
64
|
-
Trust is earned, not assumed:
|
|
65
|
-
|
|
66
|
-
1. **Day 1**: Conservative—more human checkpoints
|
|
67
|
-
2. **Week 4**: Established patterns—less intervention needed
|
|
68
|
-
3. **Month 6**: Mature—90% autonomous, 10% escalation
|
|
69
|
-
|
|
70
|
-
### Autonomy Levels
|
|
71
|
-
|
|
72
|
-
| Level | Description |
|
|
73
|
-
|-------|-------------|
|
|
74
|
-
| `dry-run` | Preview changes without executing |
|
|
75
|
-
| `assisted` | Pause for user confirmation at each step |
|
|
76
|
-
| `guarded` | Confirm destructive operations only |
|
|
77
|
-
| `autonomous` | Execute within established boundaries |
|
|
78
|
-
|
|
79
|
-
## Installation
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
npm install @fractary/faber
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Quick Start
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
import { FaberWorkflow } from '@fractary/faber';
|
|
89
|
-
|
|
90
|
-
// Run a complete FABER workflow
|
|
91
|
-
const workflow = new FaberWorkflow();
|
|
92
|
-
const result = await workflow.run({
|
|
93
|
-
workId: '123',
|
|
94
|
-
autonomy: 'assisted'
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Or use the CLI:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
# Run workflow for issue #123
|
|
102
|
-
faber run 123 --autonomy assisted
|
|
103
|
-
|
|
104
|
-
# Check status
|
|
105
|
-
faber status <workflow-id>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## SDK Modules
|
|
109
|
-
|
|
110
|
-
The FABER SDK provides modular primitives for building AI-powered workflows:
|
|
111
|
-
|
|
112
|
-
| Module | Purpose | Import |
|
|
113
|
-
|--------|---------|--------|
|
|
114
|
-
| **Work** | Issue tracking (GitHub, Jira, Linear) | `@fractary/faber/work` |
|
|
115
|
-
| **Repo** | Git & PRs (GitHub, GitLab, Bitbucket) | `@fractary/faber/repo` |
|
|
116
|
-
| **Spec** | Specification management | `@fractary/faber/spec` |
|
|
117
|
-
| **State** | Workflow persistence & checkpoints | `@fractary/faber/state` |
|
|
118
|
-
| **Logs** | Session capture & audit trails | `@fractary/faber/logs` |
|
|
119
|
-
| **Storage** | Artifact storage with Codex integration | `@fractary/faber/storage` |
|
|
120
|
-
| **Workflow** | Full FABER orchestration | `@fractary/faber/workflow` |
|
|
121
|
-
|
|
122
|
-
### Work Module
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
import { WorkManager } from '@fractary/faber/work';
|
|
126
|
-
|
|
127
|
-
const work = new WorkManager();
|
|
128
|
-
const issue = await work.fetchIssue(123);
|
|
129
|
-
await work.createComment(123, 'Starting implementation');
|
|
130
|
-
const workType = await work.classifyWorkType(issue); // 'feature' | 'bug' | 'chore'
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Repo Module
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
import { RepoManager } from '@fractary/faber/repo';
|
|
137
|
-
|
|
138
|
-
const repo = new RepoManager();
|
|
139
|
-
await repo.createBranch('feature/add-export', { base: 'main' });
|
|
140
|
-
await repo.createPR({ title: 'Add export feature', head: 'feature/add-export' });
|
|
141
|
-
await repo.commit({ message: 'Add feature', type: 'feat' });
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Workflow Module
|
|
145
|
-
|
|
146
|
-
```typescript
|
|
147
|
-
import { FaberWorkflow } from '@fractary/faber/workflow';
|
|
148
|
-
|
|
149
|
-
const faber = new FaberWorkflow({
|
|
150
|
-
config: {
|
|
151
|
-
autonomy: 'guarded',
|
|
152
|
-
phases: {
|
|
153
|
-
frame: { enabled: true },
|
|
154
|
-
architect: { enabled: true, refineSpec: true },
|
|
155
|
-
build: { enabled: true },
|
|
156
|
-
evaluate: { enabled: true, maxRetries: 3 },
|
|
157
|
-
release: { enabled: true, requestReviews: true },
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
// Event handling
|
|
163
|
-
faber.addEventListener((event, data) => {
|
|
164
|
-
console.log(`${event}:`, data);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
// Run workflow
|
|
168
|
-
const result = await faber.run({ workId: '123' });
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## CLI Commands
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
# Workflow
|
|
175
|
-
faber run <issue> [--autonomy <level>]
|
|
176
|
-
faber status <workflow-id>
|
|
177
|
-
faber resume <workflow-id>
|
|
178
|
-
|
|
179
|
-
# Work tracking
|
|
180
|
-
faber work fetch <issue>
|
|
181
|
-
faber work create --title "Feature" --type feature
|
|
182
|
-
faber work comment <issue> --body "Update"
|
|
183
|
-
|
|
184
|
-
# Repository
|
|
185
|
-
faber repo branch create <name>
|
|
186
|
-
faber repo pr create --title "Title" --head <branch>
|
|
187
|
-
faber repo commit --message "Message" --type feat
|
|
188
|
-
|
|
189
|
-
# Specifications
|
|
190
|
-
faber spec create "Title" --template feature
|
|
191
|
-
faber spec validate <spec-id>
|
|
192
|
-
faber spec refine <spec-id>
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
## Configuration
|
|
196
|
-
|
|
197
|
-
Configuration is stored in `.fractary/plugins/{module}/config.json`:
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
.fractary/
|
|
201
|
-
└── plugins/
|
|
202
|
-
├── work/config.json
|
|
203
|
-
├── repo/config.json
|
|
204
|
-
└── ...
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
Example work configuration:
|
|
208
|
-
|
|
209
|
-
```json
|
|
210
|
-
{
|
|
211
|
-
"platform": "github",
|
|
212
|
-
"owner": "your-org",
|
|
213
|
-
"repo": "your-repo"
|
|
214
|
-
}
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Platform Support
|
|
218
|
-
|
|
219
|
-
| Platform | Work Tracking | Repository |
|
|
220
|
-
|----------|--------------|------------|
|
|
221
|
-
| GitHub | Full | Full |
|
|
222
|
-
| Jira | Planned | - |
|
|
223
|
-
| Linear | Planned | - |
|
|
224
|
-
| GitLab | - | Planned |
|
|
225
|
-
| Bitbucket | - | Planned |
|
|
226
|
-
|
|
227
|
-
## Documentation
|
|
228
|
-
|
|
229
|
-
| Document | Description |
|
|
230
|
-
|----------|-------------|
|
|
231
|
-
| [Vision](docs/vision/FABER-VISION.md) | Mission, philosophy, and strategic positioning |
|
|
232
|
-
| [SDK Architecture](specs/SPEC-00016-sdk-architecture.md) | Technical architecture overview |
|
|
233
|
-
| [LangGraph Integration](specs/SPEC-00025-langgraph-integration.md) | Graph-based workflow orchestration |
|
|
234
|
-
| [Intelligent Guardrails](specs/SPEC-00028-intelligent-guardrails.md) | Confidence-based autonomy system |
|
|
235
|
-
| [Multi-Workflow Orchestration](specs/SPEC-00027-multi-workflow-orchestration.md) | DAC foundation |
|
|
236
|
-
|
|
237
|
-
## Type Exports
|
|
238
|
-
|
|
239
|
-
All types are exported for TypeScript consumers:
|
|
240
|
-
|
|
241
|
-
```typescript
|
|
242
|
-
import type {
|
|
243
|
-
// Workflow
|
|
244
|
-
WorkflowConfig, WorkflowResult, PhaseResult, FaberPhase, AutonomyLevel,
|
|
245
|
-
|
|
246
|
-
// Work
|
|
247
|
-
Issue, IssueCreateOptions, Comment, Label, WorkType,
|
|
248
|
-
|
|
249
|
-
// Repo
|
|
250
|
-
PullRequest, PRCreateOptions, Branch, BranchCreateOptions,
|
|
251
|
-
|
|
252
|
-
// Spec
|
|
253
|
-
Specification, SpecTemplate, ValidationResult,
|
|
254
|
-
} from '@fractary/faber';
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## License
|
|
258
|
-
|
|
259
|
-
MIT - see [LICENSE](LICENSE) for details.
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
**Part of the [Fractary](https://fractary.dev) Ecosystem**
|