@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @fractary/faber-cli
2
2
 
3
- Command-line interface for FABER development toolkit. Execute and manage FABER workflows, work items, repository operations, specifications, and logs.
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. Install
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
- This command will:
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
- ### Work Commands
31
+ ### 3. Run a Workflow
82
32
 
83
33
  ```bash
84
- # Issue operations
85
- fractary-faber work issue fetch 123
86
- fractary-faber work issue create --title "New feature"
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
- ### Specification Commands
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
- ### Logs Commands
160
-
161
- ```bash
162
- # Capture logs
163
- fractary-faber logs capture <workflow-id>
164
-
165
- # Stop capturing logs
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
- ## Authentication
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
- See [SPEC-00026: Distributed Plugin Architecture](../specs/SPEC-00026-distributed-plugin-architecture.md)
59
+ For complete documentation, see:
311
60
 
312
- The CLI follows SPEC-00026 standards:
313
- - Package: `@fractary/faber-cli`
314
- - Binary: `fractary-faber`
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;AA+BpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAehD;AAojBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAM3C"}
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"}
@@ -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;AAmBpC;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CA0KxC"}
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.9';
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, spec, logs, auth)')
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;IAerC;;OAEG;YACW,cAAc;IAiB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA6DnE;;OAEG;YACW,kBAAkB;IAchC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqD/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;YACW,eAAe;CAqB9B"}
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
- this.ajv = new Ajv({ strict: false }); // Allow additional properties
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
- // Load workflow configuration
72
- const workflowConfig = await this.loadWorkflowConfig(input.workflow);
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;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAG1E;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,0BAA0B,CAAC,CAuCrC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAoBjF;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAiDjB;AA2BD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAY5E"}
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.9",
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.1.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",