@fractary/faber-cli 1.5.9 → 1.5.13
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/commands/auth/index.d.ts.map +1 -1
- package/dist/commands/config.d.ts +9 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +106 -0
- package/dist/index.js +4 -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
|
@@ -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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config command - Read FABER configuration from unified config.yaml
|
|
3
|
+
*
|
|
4
|
+
* This command provides access to configuration values for scripts and tools.
|
|
5
|
+
* It uses the SDK's config loading logic, ensuring consistency across all tools.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function createConfigCommand(): Command;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,mBAAmB,IAAI,OAAO,CAkF7C"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config command - Read FABER configuration from unified config.yaml
|
|
3
|
+
*
|
|
4
|
+
* This command provides access to configuration values for scripts and tools.
|
|
5
|
+
* It uses the SDK's config loading logic, ensuring consistency across all tools.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { loadYamlConfig, configExists, getConfigPath, } from '../lib/yaml-config.js';
|
|
9
|
+
/**
|
|
10
|
+
* Get a nested value from an object using dot notation
|
|
11
|
+
* @param obj The object to search
|
|
12
|
+
* @param path Dot-separated path (e.g., "faber.default_workflow")
|
|
13
|
+
* @returns The value at the path, or undefined if not found
|
|
14
|
+
*/
|
|
15
|
+
function getNestedValue(obj, path) {
|
|
16
|
+
const parts = path.split('.');
|
|
17
|
+
let current = obj;
|
|
18
|
+
for (const part of parts) {
|
|
19
|
+
if (current === null || current === undefined) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
if (typeof current !== 'object') {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
current = current[part];
|
|
26
|
+
}
|
|
27
|
+
return current;
|
|
28
|
+
}
|
|
29
|
+
export function createConfigCommand() {
|
|
30
|
+
const configCmd = new Command('config')
|
|
31
|
+
.description('Manage FABER configuration');
|
|
32
|
+
configCmd
|
|
33
|
+
.command('get')
|
|
34
|
+
.description('Get configuration values')
|
|
35
|
+
.argument('[key]', 'Configuration key path (e.g., faber.default_workflow). Omit for full config.')
|
|
36
|
+
.option('--json', 'Output as JSON (default when no key specified)')
|
|
37
|
+
.option('--raw', 'Output raw value without quotes (for shell scripts)')
|
|
38
|
+
.action(async (key, options) => {
|
|
39
|
+
try {
|
|
40
|
+
// Check if config exists
|
|
41
|
+
if (!configExists()) {
|
|
42
|
+
const configPath = getConfigPath();
|
|
43
|
+
console.error(`Error: Configuration not found at ${configPath}`);
|
|
44
|
+
console.error('Run: fractary-core:init to create configuration');
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
// Load configuration using SDK logic
|
|
48
|
+
const config = loadYamlConfig({ warnMissingEnvVars: false });
|
|
49
|
+
if (!config) {
|
|
50
|
+
console.error('Error: Failed to load configuration');
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
// If no key specified, output full config
|
|
54
|
+
if (!key) {
|
|
55
|
+
console.log(JSON.stringify(config, null, options.json ? 2 : 0));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Get nested value
|
|
59
|
+
const value = getNestedValue(config, key);
|
|
60
|
+
if (value === undefined) {
|
|
61
|
+
if (options.raw) {
|
|
62
|
+
// Output empty string for undefined (useful for shell scripts)
|
|
63
|
+
console.log('');
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.log('null');
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Output value
|
|
71
|
+
if (options.raw && typeof value === 'string') {
|
|
72
|
+
// Raw output - no quotes, no JSON
|
|
73
|
+
console.log(value);
|
|
74
|
+
}
|
|
75
|
+
else if (typeof value === 'object') {
|
|
76
|
+
// Objects are always JSON
|
|
77
|
+
console.log(JSON.stringify(value, null, options.json ? 2 : 0));
|
|
78
|
+
}
|
|
79
|
+
else if (options.json) {
|
|
80
|
+
// JSON output
|
|
81
|
+
console.log(JSON.stringify(value));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Default: string values without quotes, others as JSON
|
|
85
|
+
console.log(typeof value === 'string' ? value : JSON.stringify(value));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
configCmd
|
|
94
|
+
.command('path')
|
|
95
|
+
.description('Show configuration file path')
|
|
96
|
+
.action(() => {
|
|
97
|
+
console.log(getConfigPath());
|
|
98
|
+
});
|
|
99
|
+
configCmd
|
|
100
|
+
.command('exists')
|
|
101
|
+
.description('Check if configuration file exists (exit 0 if yes, 1 if no)')
|
|
102
|
+
.action(() => {
|
|
103
|
+
process.exit(configExists() ? 0 : 1);
|
|
104
|
+
});
|
|
105
|
+
return configCmd;
|
|
106
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -13,24 +13,24 @@ 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';
|
|
20
19
|
import { createPlanCommand } from './commands/plan/index.js';
|
|
21
20
|
import { createAuthCommand } from './commands/auth/index.js';
|
|
21
|
+
import { createConfigCommand } from './commands/config.js';
|
|
22
22
|
// Force unbuffered output to prevent buffering issues in terminals
|
|
23
23
|
if (process.stdout.isTTY) {
|
|
24
24
|
process.stdout._handle?.setBlocking?.(true);
|
|
25
25
|
}
|
|
26
|
-
const version = '1.5.
|
|
26
|
+
const version = '1.5.13';
|
|
27
27
|
/**
|
|
28
28
|
* Create and configure the main CLI program
|
|
29
29
|
*/
|
|
30
30
|
export function createFaberCLI() {
|
|
31
31
|
const program = new Command('fractary-faber');
|
|
32
32
|
program
|
|
33
|
-
.description('FABER development toolkit (workflow, work, repo,
|
|
33
|
+
.description('FABER development toolkit (workflow, work, repo, logs, auth)')
|
|
34
34
|
.version(version)
|
|
35
35
|
.enablePositionalOptions();
|
|
36
36
|
// Global options
|
|
@@ -38,6 +38,7 @@ export function createFaberCLI() {
|
|
|
38
38
|
// Workflow commands (top-level)
|
|
39
39
|
program.addCommand(createInitCommand()); // init
|
|
40
40
|
program.addCommand(createMigrateCommand()); // migrate
|
|
41
|
+
program.addCommand(createConfigCommand()); // config get/path/exists
|
|
41
42
|
program.addCommand(createPlanCommand()); // plan
|
|
42
43
|
program.addCommand(createRunCommand()); // workflow-run
|
|
43
44
|
program.addCommand(createStatusCommand()); // run-inspect
|
|
@@ -152,7 +153,6 @@ export function createFaberCLI() {
|
|
|
152
153
|
program.addCommand(createAuthCommand());
|
|
153
154
|
program.addCommand(createWorkCommand());
|
|
154
155
|
program.addCommand(createRepoCommand());
|
|
155
|
-
program.addCommand(createSpecCommand());
|
|
156
156
|
program.addCommand(createLogsCommand());
|
|
157
157
|
// Help command
|
|
158
158
|
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.13",
|
|
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",
|