@fractary/faber-cli 1.5.9 → 1.5.12
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/README.md +20 -273
- package/dist/commands/auth/index.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/lib/anthropic-client.d.ts +0 -4
- package/dist/lib/anthropic-client.d.ts.map +1 -1
- package/dist/lib/anthropic-client.js +7 -17
- package/dist/lib/github-app-setup.d.ts +0 -6
- package/dist/lib/github-app-setup.d.ts.map +1 -1
- package/dist/lib/github-app-setup.js +0 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @fractary/faber-cli
|
|
2
2
|
|
|
3
|
-
Command-line interface for FABER development toolkit.
|
|
3
|
+
Command-line interface for FABER development toolkit.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -16,205 +16,35 @@ npx @fractary/faber-cli --help
|
|
|
16
16
|
|
|
17
17
|
## Quick Start
|
|
18
18
|
|
|
19
|
-
### 1.
|
|
19
|
+
### 1. Authenticate
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
npm install -g @fractary/faber-cli
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Or use directly with `npx`:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npx @fractary/faber-cli --help
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### 2. Authenticate with GitHub
|
|
32
|
-
|
|
33
|
-
**Option A: Automated Setup (Recommended)**
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
cd your-project
|
|
37
22
|
fractary-faber auth setup
|
|
38
23
|
```
|
|
39
24
|
|
|
40
|
-
|
|
41
|
-
1. Detect your GitHub organization and repository
|
|
42
|
-
2. Show you a URL to create a GitHub App
|
|
43
|
-
3. Guide you through copying the authorization code
|
|
44
|
-
4. Automatically configure FABER CLI
|
|
45
|
-
|
|
46
|
-
All in ~30 seconds!
|
|
47
|
-
|
|
48
|
-
**Option B: Manual Setup**
|
|
49
|
-
|
|
50
|
-
See [GitHub App Setup Guide](../docs/github-app-setup.md) for detailed manual instructions.
|
|
51
|
-
|
|
52
|
-
### 3. Initialize a FABER project
|
|
25
|
+
### 2. Initialize
|
|
53
26
|
|
|
54
27
|
```bash
|
|
55
28
|
fractary-faber init
|
|
56
|
-
fractary-faber init --preset minimal
|
|
57
|
-
fractary-faber init --preset enterprise
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Workflow Commands
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Start a FABER workflow
|
|
64
|
-
fractary-faber run --work-id 123
|
|
65
|
-
|
|
66
|
-
# Check workflow status
|
|
67
|
-
fractary-faber status
|
|
68
|
-
fractary-faber status --workflow-id <id>
|
|
69
|
-
|
|
70
|
-
# Pause/resume workflows
|
|
71
|
-
fractary-faber pause <workflow-id>
|
|
72
|
-
fractary-faber resume <workflow-id>
|
|
73
|
-
|
|
74
|
-
# Recover from checkpoint
|
|
75
|
-
fractary-faber recover <workflow-id>
|
|
76
|
-
|
|
77
|
-
# Clean up old workflows
|
|
78
|
-
fractary-faber cleanup --max-age 30
|
|
79
29
|
```
|
|
80
30
|
|
|
81
|
-
###
|
|
31
|
+
### 3. Run a Workflow
|
|
82
32
|
|
|
83
33
|
```bash
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
fractary-faber
|
|
87
|
-
fractary-faber work issue update 123 --title "Updated"
|
|
88
|
-
fractary-faber work issue close 123
|
|
89
|
-
fractary-faber work issue search --query "bug fix"
|
|
90
|
-
|
|
91
|
-
# Comment operations
|
|
92
|
-
fractary-faber work comment create 123 --body "This is a comment"
|
|
93
|
-
fractary-faber work comment list 123
|
|
94
|
-
|
|
95
|
-
# Label operations
|
|
96
|
-
fractary-faber work label add 123 --label "bug,critical"
|
|
97
|
-
fractary-faber work label remove 123 --label "wontfix"
|
|
98
|
-
fractary-faber work label list
|
|
99
|
-
|
|
100
|
-
# Milestone operations
|
|
101
|
-
fractary-faber work milestone create --title "v1.0" --due-on "2025-12-31"
|
|
102
|
-
fractary-faber work milestone list
|
|
103
|
-
fractary-faber work milestone set 123 --milestone "v1.0"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Repository Commands
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
# Branch operations
|
|
110
|
-
fractary-faber repo branch create "feat/new-feature"
|
|
111
|
-
fractary-faber repo branch list
|
|
112
|
-
fractary-faber repo branch delete feat/old-feature
|
|
113
|
-
|
|
114
|
-
# Commit operations
|
|
115
|
-
fractary-faber repo commit "feat: add new feature"
|
|
116
|
-
|
|
117
|
-
# Pull request operations
|
|
118
|
-
fractary-faber repo pr create "Add new feature" --body "Description"
|
|
119
|
-
fractary-faber repo pr list
|
|
120
|
-
fractary-faber repo pr merge 42
|
|
121
|
-
fractary-faber repo pr review 42
|
|
122
|
-
|
|
123
|
-
# Tag operations
|
|
124
|
-
fractary-faber repo tag create v1.0.0
|
|
125
|
-
fractary-faber repo tag push v1.0.0
|
|
126
|
-
fractary-faber repo tag list
|
|
127
|
-
|
|
128
|
-
# Worktree operations
|
|
129
|
-
fractary-faber repo worktree create feat/new-feature
|
|
130
|
-
fractary-faber repo worktree list
|
|
131
|
-
fractary-faber repo worktree remove feat/new-feature
|
|
34
|
+
faber plan --work-id 123
|
|
35
|
+
cd ~/.claude-worktrees/{org}-{project}-123
|
|
36
|
+
/fractary-faber:workflow-run 123
|
|
132
37
|
```
|
|
133
38
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
# Create specifications
|
|
138
|
-
fractary-faber spec create "My Specification"
|
|
139
|
-
|
|
140
|
-
# Get specification
|
|
141
|
-
fractary-faber spec get <id>
|
|
142
|
-
|
|
143
|
-
# List specifications
|
|
144
|
-
fractary-faber spec list
|
|
145
|
-
|
|
146
|
-
# Update specification
|
|
147
|
-
fractary-faber spec update <id> --title "Updated"
|
|
148
|
-
|
|
149
|
-
# Validate specification
|
|
150
|
-
fractary-faber spec validate <id>
|
|
151
|
-
|
|
152
|
-
# Refine specification
|
|
153
|
-
fractary-faber spec refine <id>
|
|
154
|
-
|
|
155
|
-
# Delete specification
|
|
156
|
-
fractary-faber spec delete <id>
|
|
157
|
-
```
|
|
39
|
+
## Commands
|
|
158
40
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
fractary-faber logs stop <session-id>
|
|
167
|
-
|
|
168
|
-
# Write logs
|
|
169
|
-
fractary-faber logs write --message "Log message"
|
|
170
|
-
|
|
171
|
-
# Read logs
|
|
172
|
-
fractary-faber logs read <session-id>
|
|
173
|
-
|
|
174
|
-
# Search logs
|
|
175
|
-
fractary-faber logs search --query "error"
|
|
176
|
-
|
|
177
|
-
# List logs
|
|
178
|
-
fractary-faber logs list
|
|
179
|
-
|
|
180
|
-
# Archive logs
|
|
181
|
-
fractary-faber logs archive --older-than 30
|
|
182
|
-
|
|
183
|
-
# Delete logs
|
|
184
|
-
fractary-faber logs delete <session-id>
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Configuration
|
|
188
|
-
|
|
189
|
-
FABER is configured via `.fractary/faber/config.json`:
|
|
190
|
-
|
|
191
|
-
```json
|
|
192
|
-
{
|
|
193
|
-
"version": "1.0.0",
|
|
194
|
-
"preset": "default",
|
|
195
|
-
"work": {
|
|
196
|
-
"provider": "github"
|
|
197
|
-
},
|
|
198
|
-
"repo": {
|
|
199
|
-
"provider": "github",
|
|
200
|
-
"defaultBranch": "main"
|
|
201
|
-
},
|
|
202
|
-
"spec": {
|
|
203
|
-
"directory": ".fractary/faber/specs"
|
|
204
|
-
},
|
|
205
|
-
"logs": {
|
|
206
|
-
"directory": ".fractary/faber/logs"
|
|
207
|
-
},
|
|
208
|
-
"workflow": {
|
|
209
|
-
"defaultAutonomy": "guarded",
|
|
210
|
-
"phases": ["frame", "architect", "build", "evaluate", "release"],
|
|
211
|
-
"checkpoints": true
|
|
212
|
-
},
|
|
213
|
-
"state": {
|
|
214
|
-
"directory": ".fractary/faber/state"
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
```
|
|
41
|
+
| Category | Commands |
|
|
42
|
+
|----------|----------|
|
|
43
|
+
| **Workflow** | `run`, `status`, `pause`, `resume`, `recover`, `cleanup` |
|
|
44
|
+
| **Work** | `issue`, `comment`, `label`, `milestone` |
|
|
45
|
+
| **Repo** | `branch`, `commit`, `pr`, `tag`, `worktree` |
|
|
46
|
+
| **Spec** | `create`, `get`, `list`, `validate`, `refine` |
|
|
47
|
+
| **Logs** | `capture`, `stop`, `read`, `search`, `archive` |
|
|
218
48
|
|
|
219
49
|
## Options
|
|
220
50
|
|
|
@@ -224,96 +54,13 @@ All commands support:
|
|
|
224
54
|
- `--debug` - Enable debug output
|
|
225
55
|
- `--help` - Show command help
|
|
226
56
|
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
### GitHub App Authentication (Recommended)
|
|
230
|
-
|
|
231
|
-
For enhanced security, audit trails, and enterprise readiness, use GitHub App authentication instead of Personal Access Tokens.
|
|
232
|
-
|
|
233
|
-
**Quick Setup (Automated):**
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
fractary-faber auth setup
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
This command will guide you through creating and configuring a GitHub App in ~30 seconds.
|
|
240
|
-
|
|
241
|
-
**Manual Configuration (`.fractary/settings.json`):**
|
|
242
|
-
```json
|
|
243
|
-
{
|
|
244
|
-
"github": {
|
|
245
|
-
"organization": "your-org",
|
|
246
|
-
"project": "your-repo",
|
|
247
|
-
"app": {
|
|
248
|
-
"id": "123456",
|
|
249
|
-
"installation_id": "12345678",
|
|
250
|
-
"private_key_path": "~/.github/faber-app.pem"
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
**For CI/CD (environment variable):**
|
|
257
|
-
```json
|
|
258
|
-
{
|
|
259
|
-
"github": {
|
|
260
|
-
"organization": "your-org",
|
|
261
|
-
"project": "your-repo",
|
|
262
|
-
"app": {
|
|
263
|
-
"id": "123456",
|
|
264
|
-
"installation_id": "12345678",
|
|
265
|
-
"private_key_env_var": "GITHUB_APP_PRIVATE_KEY"
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
export GITHUB_APP_PRIVATE_KEY=$(cat ~/.github/faber-app.pem | base64)
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
**See detailed setup guide:** [docs/github-app-setup.md](../docs/github-app-setup.md)
|
|
276
|
-
|
|
277
|
-
### Personal Access Token (Legacy)
|
|
278
|
-
|
|
279
|
-
Still supported for backward compatibility:
|
|
280
|
-
|
|
281
|
-
```bash
|
|
282
|
-
export GITHUB_TOKEN=<token>
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
Or in `.fractary/settings.json`:
|
|
286
|
-
```json
|
|
287
|
-
{
|
|
288
|
-
"github": {
|
|
289
|
-
"token": "ghp_xxxxxxxxxxxx",
|
|
290
|
-
"organization": "your-org",
|
|
291
|
-
"project": "your-repo"
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Other Providers
|
|
297
|
-
|
|
298
|
-
```bash
|
|
299
|
-
# Jira
|
|
300
|
-
export JIRA_BASE_URL=<url>
|
|
301
|
-
export JIRA_USERNAME=<username>
|
|
302
|
-
export JIRA_API_TOKEN=<token>
|
|
303
|
-
|
|
304
|
-
# Linear
|
|
305
|
-
export LINEAR_API_KEY=<key>
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
## Architecture
|
|
57
|
+
## Documentation
|
|
309
58
|
|
|
310
|
-
|
|
59
|
+
For complete documentation, see:
|
|
311
60
|
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
- Located: `/cli` at root of repository
|
|
316
|
-
- Depends on: `@fractary/faber` SDK
|
|
61
|
+
- **[Commands Reference](../docs/cli/commands.md)** - All commands
|
|
62
|
+
- **[Authentication Guide](../docs/cli/authentication.md)** - GitHub App and PAT setup
|
|
63
|
+
- **[Configuration Guide](../docs/guides/configuration.md)** - Configuration options
|
|
317
64
|
|
|
318
65
|
## License
|
|
319
66
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAehD;AAojBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAM3C"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAyKxC"}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,6 @@ import chalk from 'chalk';
|
|
|
13
13
|
import { createRunCommand, createStatusCommand, createResumeCommand, createPauseCommand, createRecoverCommand, createCleanupCommand } from './commands/workflow/index.js';
|
|
14
14
|
import { createWorkCommand } from './commands/work/index.js';
|
|
15
15
|
import { createRepoCommand } from './commands/repo/index.js';
|
|
16
|
-
import { createSpecCommand } from './commands/spec/index.js';
|
|
17
16
|
import { createLogsCommand } from './commands/logs/index.js';
|
|
18
17
|
import { createInitCommand } from './commands/init.js';
|
|
19
18
|
import { createMigrateCommand } from './commands/migrate.js';
|
|
@@ -23,14 +22,14 @@ import { createAuthCommand } from './commands/auth/index.js';
|
|
|
23
22
|
if (process.stdout.isTTY) {
|
|
24
23
|
process.stdout._handle?.setBlocking?.(true);
|
|
25
24
|
}
|
|
26
|
-
const version = '1.5.
|
|
25
|
+
const version = '1.5.12';
|
|
27
26
|
/**
|
|
28
27
|
* Create and configure the main CLI program
|
|
29
28
|
*/
|
|
30
29
|
export function createFaberCLI() {
|
|
31
30
|
const program = new Command('fractary-faber');
|
|
32
31
|
program
|
|
33
|
-
.description('FABER development toolkit (workflow, work, repo,
|
|
32
|
+
.description('FABER development toolkit (workflow, work, repo, logs, auth)')
|
|
34
33
|
.version(version)
|
|
35
34
|
.enablePositionalOptions();
|
|
36
35
|
// Global options
|
|
@@ -152,7 +151,6 @@ export function createFaberCLI() {
|
|
|
152
151
|
program.addCommand(createAuthCommand());
|
|
153
152
|
program.addCommand(createWorkCommand());
|
|
154
153
|
program.addCommand(createRepoCommand());
|
|
155
|
-
program.addCommand(createSpecCommand());
|
|
156
154
|
program.addCommand(createLogsCommand());
|
|
157
155
|
// Help command
|
|
158
156
|
program.addCommand(new Command('help')
|
|
@@ -48,10 +48,6 @@ export declare class AnthropicClient {
|
|
|
48
48
|
* Generate workflow plan via Claude API
|
|
49
49
|
*/
|
|
50
50
|
generatePlan(input: GeneratePlanInput): Promise<WorkflowPlan>;
|
|
51
|
-
/**
|
|
52
|
-
* Load workflow configuration
|
|
53
|
-
*/
|
|
54
|
-
private loadWorkflowConfig;
|
|
55
51
|
/**
|
|
56
52
|
* Construct planning prompt for Claude
|
|
57
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-client.d.ts","sourceRoot":"","sources":["../../src/lib/anthropic-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAM;gBAEZ,MAAM,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"anthropic-client.d.ts","sourceRoot":"","sources":["../../src/lib/anthropic-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAM;gBAEZ,MAAM,EAAE,iBAAiB;IAiBrC;;OAEG;YACW,cAAc;IAiB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA8DnE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqD/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;YACW,eAAe;CAqB9B"}
|
|
@@ -8,7 +8,7 @@ import Ajv from 'ajv';
|
|
|
8
8
|
import fs from 'fs/promises';
|
|
9
9
|
import path from 'path';
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
|
-
import { Git } from '@fractary/faber';
|
|
11
|
+
import { Git, WorkflowResolver } from '@fractary/faber';
|
|
12
12
|
import { validateJsonSize } from '../utils/validation.js';
|
|
13
13
|
const __filename = fileURLToPath(import.meta.url);
|
|
14
14
|
const __dirname = path.dirname(__filename);
|
|
@@ -19,7 +19,9 @@ export class AnthropicClient {
|
|
|
19
19
|
constructor(config) {
|
|
20
20
|
this.config = config;
|
|
21
21
|
this.git = new Git();
|
|
22
|
-
|
|
22
|
+
// validateFormats: false suppresses warnings about unknown formats (uri, date-time)
|
|
23
|
+
// These formats are used for documentation, not strict validation
|
|
24
|
+
this.ajv = new Ajv({ strict: false, validateFormats: false });
|
|
23
25
|
const apiKey = config.anthropic?.api_key;
|
|
24
26
|
if (!apiKey) {
|
|
25
27
|
throw new Error('Anthropic API key not found. Set ANTHROPIC_API_KEY environment variable.');
|
|
@@ -68,8 +70,9 @@ export class AnthropicClient {
|
|
|
68
70
|
async generatePlan(input) {
|
|
69
71
|
// Load plan schema for validation
|
|
70
72
|
await this.loadPlanSchema();
|
|
71
|
-
//
|
|
72
|
-
const
|
|
73
|
+
// Resolve workflow with inheritance (uses SDK WorkflowResolver)
|
|
74
|
+
const resolver = new WorkflowResolver({ projectRoot: process.cwd() });
|
|
75
|
+
const workflowConfig = await resolver.resolveWorkflow(input.workflow);
|
|
73
76
|
// Generate plan ID
|
|
74
77
|
const timestamp = new Date().toISOString().replace(/[-:]/g, '').replace(/\.\d+Z/, '').replace('T', '-');
|
|
75
78
|
const planId = `fractary-faber-${input.issueNumber}-${timestamp}`;
|
|
@@ -115,19 +118,6 @@ export class AnthropicClient {
|
|
|
115
118
|
this.validatePlan(plan);
|
|
116
119
|
return plan;
|
|
117
120
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Load workflow configuration
|
|
120
|
-
*/
|
|
121
|
-
async loadWorkflowConfig(workflow) {
|
|
122
|
-
const workflowPath = path.join(this.config.workflow?.config_path || './plugins/faber/config/workflows', `${workflow}.json`);
|
|
123
|
-
try {
|
|
124
|
-
const content = await fs.readFile(workflowPath, 'utf-8');
|
|
125
|
-
return JSON.parse(content);
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
throw new Error(`Failed to load workflow config: ${workflow} (${workflowPath})`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
121
|
/**
|
|
132
122
|
* Construct planning prompt for Claude
|
|
133
123
|
*/
|
|
@@ -92,12 +92,6 @@ export declare function generateAppManifest(config: ManifestConfig): GitHubAppMa
|
|
|
92
92
|
* @returns HTML content ready to save to file
|
|
93
93
|
*/
|
|
94
94
|
export declare function generateManifestHtml(manifest: GitHubAppManifest, organization: string): string;
|
|
95
|
-
/**
|
|
96
|
-
* Generate GitHub App creation URL (legacy - prefer generateManifestHtml)
|
|
97
|
-
*
|
|
98
|
-
* @deprecated Use generateManifestHtml() instead for proper manifest flow
|
|
99
|
-
*/
|
|
100
|
-
export declare function getManifestCreationUrl(manifest: GitHubAppManifest): string;
|
|
101
95
|
/**
|
|
102
96
|
* Exchange manifest code for app credentials
|
|
103
97
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-app-setup.d.ts","sourceRoot":"","sources":["../../src/lib/github-app-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB,EAAE;QACnB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3B,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAqB7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,GACnB,MAAM,CAiHR;AAED
|
|
1
|
+
{"version":3,"file":"github-app-setup.d.ts","sourceRoot":"","sources":["../../src/lib/github-app-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -155,15 +155,6 @@ export function generateManifestHtml(manifest, organization) {
|
|
|
155
155
|
</body>
|
|
156
156
|
</html>`;
|
|
157
157
|
}
|
|
158
|
-
/**
|
|
159
|
-
* Generate GitHub App creation URL (legacy - prefer generateManifestHtml)
|
|
160
|
-
*
|
|
161
|
-
* @deprecated Use generateManifestHtml() instead for proper manifest flow
|
|
162
|
-
*/
|
|
163
|
-
export function getManifestCreationUrl(manifest) {
|
|
164
|
-
// For backward compatibility, return the basic GitHub App creation page
|
|
165
|
-
return 'https://github.com/settings/apps/new';
|
|
166
|
-
}
|
|
167
158
|
/**
|
|
168
159
|
* Exchange manifest code for app credentials
|
|
169
160
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fractary/faber-cli",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.12",
|
|
4
4
|
"description": "FABER CLI - Command-line interface for FABER development toolkit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@fractary/core": "^0.5.0",
|
|
41
|
-
"@fractary/faber": "^2.
|
|
41
|
+
"@fractary/faber": "^2.3.0",
|
|
42
42
|
"ajv": "^8.12.0",
|
|
43
43
|
"chalk": "^5.0.0",
|
|
44
44
|
"commander": "^12.0.0",
|