@fractary/faber-cli 1.5.3 → 1.5.7

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/index.js CHANGED
@@ -21,7 +21,7 @@ if (process.stdout.isTTY) {
21
21
  process.stdout._handle?.setBlocking?.(true);
22
22
  }
23
23
  console.error('[DEBUG] CLI starting, args:', process.argv);
24
- const version = '1.5.2';
24
+ const version = '1.5.7';
25
25
  /**
26
26
  * Create and configure the main CLI program
27
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAiB,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpG;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO;IAIP;;;OAGG;WACU,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG;QAAE,SAAS,CAAC,EAAE,eAAe,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAyGlG;;;OAGG;mBACkB,cAAc;IAwBnC;;OAEG;mBACkB,8BAA8B;IAoBnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,WAAW,GAAG,GAAG;CAGjC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAiB,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpG;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO;IAIP;;;OAGG;WACU,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG;QAAE,SAAS,CAAC,EAAE,eAAe,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IA8GlG;;;OAGG;mBACkB,cAAc;IAwBnC;;OAEG;mBACkB,8BAA8B;IAoBnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,WAAW,GAAG,GAAG;CAGjC"}
@@ -62,8 +62,12 @@ export class ConfigManager {
62
62
  project = project || repoParts[1];
63
63
  }
64
64
  }
65
+ // Token fallback: env var > github section > work.handlers.github
66
+ const token = process.env.GITHUB_TOKEN
67
+ || unifiedConfig.github?.token
68
+ || anyConfig.work?.handlers?.github?.token;
65
69
  let github = {
66
- token: process.env.GITHUB_TOKEN || unifiedConfig.github?.token,
70
+ token,
67
71
  organization,
68
72
  project,
69
73
  repo: unifiedConfig.github?.repo,
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Repo Client
3
3
  *
4
- * Integrates with @fractary/core SDK for repository and work tracking operations
5
- * Supports both PAT and GitHub App authentication methods.
4
+ * Integrates with @fractary/core SDK for repository and work tracking operations.
5
+ * Supports both PAT and GitHub App authentication.
6
6
  */
7
- import { WorkManager, RepoManager } from '@fractary/core';
8
7
  import type { LoadedFaberConfig } from '../types/config.js';
9
8
  interface Issue {
10
9
  id: string;
@@ -34,10 +33,9 @@ interface IssueUpdateOptions {
34
33
  * Repo Client - integrates with @fractary/core SDK
35
34
  *
36
35
  * Provides repository and work tracking operations using WorkManager and RepoManager
37
- * from the @fractary/core SDK. Supports both PAT and GitHub App authentication.
36
+ * from the @fractary/core SDK.
38
37
  */
39
38
  export declare class RepoClient {
40
- private config;
41
39
  private workManager;
42
40
  private repoManager;
43
41
  private organization;
@@ -45,21 +43,17 @@ export declare class RepoClient {
45
43
  /**
46
44
  * Create a RepoClient instance (async factory method)
47
45
  *
48
- * Use this method to create RepoClient instances as it supports
49
- * both PAT and GitHub App authentication.
46
+ * Supports both PAT and GitHub App authentication.
47
+ * GitHub App takes precedence if configured.
50
48
  *
51
- * @param config - FABER CLI configuration
49
+ * @param config - FABER CLI configuration with GitHub settings
52
50
  * @returns Promise resolving to RepoClient instance
53
51
  */
54
52
  static create(config: LoadedFaberConfig): Promise<RepoClient>;
55
53
  /**
56
- * Create a RepoClient instance
57
- *
58
- * @param config - FABER CLI configuration
59
- * @param workManager - Optional pre-initialized WorkManager (for async factory)
60
- * @param repoManager - Optional pre-initialized RepoManager (for async factory)
54
+ * Private constructor - use RepoClient.create() factory method
61
55
  */
62
- constructor(config: LoadedFaberConfig, workManager?: WorkManager, repoManager?: RepoManager);
56
+ private constructor();
63
57
  /**
64
58
  * Fetch specific issues by ID
65
59
  *
@@ -1 +1 @@
1
- {"version":3,"file":"repo-client.d.ts","sourceRoot":"","sources":["../../src/lib/repo-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;;OAQG;WACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBnE;;;;;;OAMG;gBACS,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,WAAW;IA0C3F;;;;OAIG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAclD;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAetD;;;;OAIG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IA+BzF;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0B9D"}
1
+ {"version":3,"file":"repo-client.d.ts","sourceRoot":"","sources":["../../src/lib/repo-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;;OAQG;WACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA2EnE;;OAEG;IACH,OAAO;IAYP;;;;OAIG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAclD;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAetD;;;;OAIG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IA+BzF;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB9D"}
@@ -1,80 +1,85 @@
1
1
  /**
2
2
  * Repo Client
3
3
  *
4
- * Integrates with @fractary/core SDK for repository and work tracking operations
5
- * Supports both PAT and GitHub App authentication methods.
4
+ * Integrates with @fractary/core SDK for repository and work tracking operations.
5
+ * Supports both PAT and GitHub App authentication.
6
6
  */
7
7
  import { WorkManager, RepoManager } from '@fractary/core';
8
- import { createWorkConfig, createRepoConfig, createWorkConfigAsync, createRepoConfigAsync, isGitHubAppConfigured, } from './sdk-config-adapter.js';
8
+ import { GitHubAppAuth } from '@fractary/faber';
9
9
  import { sdkIssueToCLIIssue, sdkWorktreeToCLIWorktreeResult } from './sdk-type-adapter.js';
10
10
  import os from 'os';
11
11
  /**
12
12
  * Repo Client - integrates with @fractary/core SDK
13
13
  *
14
14
  * Provides repository and work tracking operations using WorkManager and RepoManager
15
- * from the @fractary/core SDK. Supports both PAT and GitHub App authentication.
15
+ * from the @fractary/core SDK.
16
16
  */
17
17
  export class RepoClient {
18
18
  /**
19
19
  * Create a RepoClient instance (async factory method)
20
20
  *
21
- * Use this method to create RepoClient instances as it supports
22
- * both PAT and GitHub App authentication.
21
+ * Supports both PAT and GitHub App authentication.
22
+ * GitHub App takes precedence if configured.
23
23
  *
24
- * @param config - FABER CLI configuration
24
+ * @param config - FABER CLI configuration with GitHub settings
25
25
  * @returns Promise resolving to RepoClient instance
26
26
  */
27
27
  static async create(config) {
28
- // Use async config methods for GitHub App support
29
- const workConfig = await createWorkConfigAsync(config);
30
- const repoConfig = await createRepoConfigAsync(config);
31
- try {
32
- const workManager = new WorkManager(workConfig);
33
- const repoManager = new RepoManager(repoConfig);
34
- // Create client with pre-initialized managers
35
- return new RepoClient(config, workManager, repoManager);
28
+ const organization = config.github?.organization;
29
+ const project = config.github?.project;
30
+ if (!organization || typeof organization !== 'string' || organization.trim() === '') {
31
+ throw new Error('GitHub organization must be configured in .fractary/config.yaml\n' +
32
+ 'Add: github.organization: "your-org"');
33
+ }
34
+ if (!project || typeof project !== 'string' || project.trim() === '') {
35
+ throw new Error('GitHub project must be configured in .fractary/config.yaml\n' +
36
+ 'Add: github.project: "your-repo"');
37
+ }
38
+ // Get token - GitHub App takes precedence over PAT
39
+ let token;
40
+ const appConfig = config.github?.app;
41
+ if (appConfig?.id && appConfig?.installation_id) {
42
+ // Use GitHub App authentication
43
+ try {
44
+ const auth = new GitHubAppAuth(appConfig);
45
+ token = await auth.getToken();
46
+ }
47
+ catch (error) {
48
+ if (error instanceof Error) {
49
+ throw new Error(`GitHub App authentication failed: ${error.message}`);
50
+ }
51
+ throw error;
52
+ }
36
53
  }
37
- catch (error) {
38
- if (error instanceof Error) {
39
- throw new Error(`Failed to initialize SDK managers: ${error.message}`);
54
+ else {
55
+ // Fall back to PAT
56
+ const patToken = config.github?.token || process.env.GITHUB_TOKEN;
57
+ if (!patToken || typeof patToken !== 'string' || patToken.trim() === '') {
58
+ throw new Error('GitHub authentication not configured. Either:\n' +
59
+ ' 1. Set GITHUB_TOKEN environment variable, or\n' +
60
+ ' 2. Configure GitHub App in .fractary/config.yaml:\n' +
61
+ ' github:\n' +
62
+ ' app:\n' +
63
+ ' id: "<app-id>"\n' +
64
+ ' installation_id: "<installation-id>"\n' +
65
+ ' private_key_path: "~/.github/your-app.pem"');
40
66
  }
41
- throw error;
67
+ token = patToken;
42
68
  }
43
- }
44
- /**
45
- * Create a RepoClient instance
46
- *
47
- * @param config - FABER CLI configuration
48
- * @param workManager - Optional pre-initialized WorkManager (for async factory)
49
- * @param repoManager - Optional pre-initialized RepoManager (for async factory)
50
- */
51
- constructor(config, workManager, repoManager) {
52
- this.config = config;
53
- this.organization = config.github?.organization || 'unknown';
54
- this.project = config.github?.project || 'unknown';
55
- // If managers are provided (from static create), use them
56
- if (workManager && repoManager) {
57
- this.workManager = workManager;
58
- this.repoManager = repoManager;
59
- return;
60
- }
61
- // Synchronous initialization - only works with PAT
62
- if (isGitHubAppConfigured(config)) {
63
- throw new Error('GitHub App authentication requires async initialization. ' +
64
- 'Use RepoClient.create() instead of new RepoClient().');
65
- }
66
- // Validate GitHub token for PAT auth
67
- const token = config.github?.token;
68
- if (!token) {
69
- throw new Error('GitHub token not found. Set GITHUB_TOKEN environment variable.');
70
- }
71
- // Create SDK configurations (PAT only)
72
- const workConfig = createWorkConfig(config);
73
- const repoConfig = createRepoConfig(config);
74
- // Initialize SDK managers
75
69
  try {
76
- this.workManager = new WorkManager(workConfig);
77
- this.repoManager = new RepoManager(repoConfig);
70
+ const workManager = new WorkManager({
71
+ platform: 'github',
72
+ owner: organization.trim(),
73
+ repo: project.trim(),
74
+ token,
75
+ });
76
+ const repoManager = new RepoManager({
77
+ platform: 'github',
78
+ owner: organization.trim(),
79
+ repo: project.trim(),
80
+ token,
81
+ });
82
+ return new RepoClient(workManager, repoManager, organization.trim(), project.trim());
78
83
  }
79
84
  catch (error) {
80
85
  if (error instanceof Error) {
@@ -83,6 +88,15 @@ export class RepoClient {
83
88
  throw error;
84
89
  }
85
90
  }
91
+ /**
92
+ * Private constructor - use RepoClient.create() factory method
93
+ */
94
+ constructor(workManager, repoManager, organization, project) {
95
+ this.workManager = workManager;
96
+ this.repoManager = repoManager;
97
+ this.organization = organization;
98
+ this.project = project;
99
+ }
86
100
  /**
87
101
  * Fetch specific issues by ID
88
102
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-config-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/sdk-config-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAEL,aAAa,EAGd,MAAM,sBAAsB,CAAC;AA2D9B;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAG7E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,UAAU,CAmC3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB/F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,UAAU,CAyB3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/F"}
1
+ {"version":3,"file":"sdk-config-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/sdk-config-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAEL,aAAa,EAGd,MAAM,sBAAsB,CAAC;AAuD9B;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAG7E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,UAAU,CAmC3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB/F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,UAAU,CAyB3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/F"}
@@ -43,15 +43,11 @@ function getTokenProvider(faberConfig) {
43
43
  throw new Error('GitHub authentication not configured. Either:\n' +
44
44
  ' 1. Set GITHUB_TOKEN environment variable, or\n' +
45
45
  ' 2. Configure GitHub App in .fractary/config.yaml:\n' +
46
- ' {\n' +
47
- ' "github": {\n' +
48
- ' "app": {\n' +
49
- ' "id": "<app-id>",\n' +
50
- ' "installation_id": "<installation-id>",\n' +
51
- ' "private_key_path": "~/.github/your-app.pem"\n' +
52
- ' }\n' +
53
- ' }\n' +
54
- ' }');
46
+ ' github:\n' +
47
+ ' app:\n' +
48
+ ' id: "<app-id>"\n' +
49
+ ' installation_id: "<installation-id>"\n' +
50
+ ' private_key_path: "~/.github/your-app.pem"');
55
51
  }
56
52
  /**
57
53
  * Get the current token from the provider
package/package.json CHANGED
@@ -1,72 +1,70 @@
1
- {
2
- "name": "@fractary/faber-cli",
3
- "version": "1.5.3",
4
- "description": "FABER CLI - Command-line interface for FABER development toolkit",
5
- "main": "dist/index.js",
6
- "bin": {
7
- "fractary-faber": "dist/index.js"
8
- },
9
- "type": "module",
10
- "files": [
11
- "dist",
12
- "README.md",
13
- "LICENSE"
14
- ],
15
- "scripts": {
16
- "dev": "tsc --watch",
17
- "build": "tsc",
18
- "test": "jest",
19
- "test:watch": "jest --watch",
20
- "lint": "eslint src --ext .ts",
21
- "typecheck": "tsc --noEmit",
22
- "prepublishOnly": "npm run build"
23
- },
24
- "keywords": [
25
- "faber",
26
- "cli",
27
- "workflow",
28
- "sdk",
29
- "ai",
30
- "development",
31
- "automation"
32
- ],
33
- "author": "Fractary Team",
34
- "license": "MIT",
35
- "publishConfig": {
36
- "access": "public"
37
- },
38
- "dependencies": {
39
- "@fractary/core": "^0.2.0",
40
- "@fractary/faber": "^2.1.2",
41
- "ajv": "^8.12.0",
42
- "chalk": "^5.0.0",
43
- "commander": "^12.0.0",
44
- "js-yaml": "^4.1.0",
45
- "jsonwebtoken": "^9.0.0"
46
- },
47
- "devDependencies": {
48
- "@types/jest": "^30.0.0",
49
- "@types/js-yaml": "^4.0.9",
50
- "@types/jsonwebtoken": "^9.0.0",
51
- "@types/node": "^20.19.26",
52
- "@typescript-eslint/eslint-plugin": "^6.19.0",
53
- "@typescript-eslint/parser": "^6.19.0",
54
- "eslint": "^8.56.0",
55
- "jest": "^29.7.0",
56
- "ts-jest": "^29.1.1",
57
- "ts-node": "^10.9.2",
58
- "typescript": "^5.3.3"
59
- },
60
- "engines": {
61
- "node": ">=18.0.0"
62
- },
63
- "repository": {
64
- "type": "git",
65
- "url": "git+https://github.com/fractary/faber.git",
66
- "directory": "cli"
67
- },
68
- "bugs": {
69
- "url": "https://github.com/fractary/faber/issues"
70
- },
71
- "homepage": "https://github.com/fractary/faber/tree/main/cli#readme"
72
- }
1
+ {
2
+ "name": "@fractary/faber-cli",
3
+ "version": "1.5.7",
4
+ "description": "FABER CLI - Command-line interface for FABER development toolkit",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "fractary-faber": "dist/index.js"
8
+ },
9
+ "type": "module",
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "dev": "tsc --watch",
17
+ "build": "tsc",
18
+ "test": "jest",
19
+ "test:watch": "jest --watch",
20
+ "lint": "eslint src --ext .ts",
21
+ "typecheck": "tsc --noEmit",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "keywords": [
25
+ "faber",
26
+ "cli",
27
+ "workflow",
28
+ "sdk",
29
+ "ai",
30
+ "development",
31
+ "automation"
32
+ ],
33
+ "author": "Fractary Team",
34
+ "license": "MIT",
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "dependencies": {
39
+ "@fractary/core": "^0.5.0",
40
+ "@fractary/faber": "^2.1.2",
41
+ "ajv": "^8.12.0",
42
+ "chalk": "^5.0.0",
43
+ "commander": "^12.0.0",
44
+ "js-yaml": "^4.1.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/jest": "^30.0.0",
48
+ "@types/js-yaml": "^4.0.9",
49
+ "@types/node": "^20.19.26",
50
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
51
+ "@typescript-eslint/parser": "^6.19.0",
52
+ "eslint": "^8.56.0",
53
+ "jest": "^29.7.0",
54
+ "ts-jest": "^29.1.1",
55
+ "ts-node": "^10.9.2",
56
+ "typescript": "^5.3.3"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "git+https://github.com/fractary/faber.git",
64
+ "directory": "cli"
65
+ },
66
+ "bugs": {
67
+ "url": "https://github.com/fractary/faber/issues"
68
+ },
69
+ "homepage": "https://github.com/fractary/faber/tree/main/cli#readme"
70
+ }