@fractary/core 0.3.2 → 0.4.0
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__/factories.test.d.ts +5 -0
- package/dist/__tests__/factories.test.d.ts.map +1 -0
- package/dist/__tests__/factories.test.js +66 -0
- package/dist/__tests__/factories.test.js.map +1 -0
- package/dist/auth/__tests__/create-token-provider.test.d.ts +5 -0
- package/dist/auth/__tests__/create-token-provider.test.d.ts.map +1 -0
- package/dist/auth/__tests__/create-token-provider.test.js +104 -0
- package/dist/auth/__tests__/create-token-provider.test.js.map +1 -0
- package/dist/auth/__tests__/github-app-auth.test.d.ts +5 -0
- package/dist/auth/__tests__/github-app-auth.test.d.ts.map +1 -0
- package/dist/auth/__tests__/github-app-auth.test.js +293 -0
- package/dist/auth/__tests__/github-app-auth.test.js.map +1 -0
- package/dist/auth/__tests__/static-token-provider.test.d.ts +5 -0
- package/dist/auth/__tests__/static-token-provider.test.d.ts.map +1 -0
- package/dist/auth/__tests__/static-token-provider.test.js +54 -0
- package/dist/auth/__tests__/static-token-provider.test.js.map +1 -0
- package/dist/auth/github-app-auth.d.ts +109 -0
- package/dist/auth/github-app-auth.d.ts.map +1 -0
- package/dist/auth/github-app-auth.js +262 -0
- package/dist/auth/github-app-auth.js.map +1 -0
- package/dist/auth/github-app-token-provider.d.ts +59 -0
- package/dist/auth/github-app-token-provider.d.ts.map +1 -0
- package/dist/auth/github-app-token-provider.js +68 -0
- package/dist/auth/github-app-token-provider.js.map +1 -0
- package/dist/auth/index.d.ts +45 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +74 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/static-token-provider.d.ts +35 -0
- package/dist/auth/static-token-provider.d.ts.map +1 -0
- package/dist/auth/static-token-provider.js +45 -0
- package/dist/auth/static-token-provider.js.map +1 -0
- package/dist/auth/types.d.ts +49 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/common/yaml-config.d.ts +10 -0
- package/dist/common/yaml-config.d.ts.map +1 -1
- package/dist/common/yaml-config.js.map +1 -1
- package/dist/config/__tests__/loader.test.d.ts +5 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +129 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +27 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +126 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +277 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/docs/index.d.ts +5 -0
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +6 -1
- package/dist/docs/index.js.map +1 -1
- package/dist/docs/manager.d.ts +27 -0
- package/dist/docs/manager.d.ts.map +1 -1
- package/dist/docs/manager.js +168 -15
- package/dist/docs/manager.js.map +1 -1
- package/dist/docs/type-registry.d.ts +123 -0
- package/dist/docs/type-registry.d.ts.map +1 -0
- package/dist/docs/type-registry.js +393 -0
- package/dist/docs/type-registry.js.map +1 -0
- package/dist/docs/types.d.ts +93 -0
- package/dist/docs/types.d.ts.map +1 -1
- package/dist/factories.d.ts +89 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +228 -0
- package/dist/factories.js.map +1 -0
- package/dist/file/factory.d.ts +41 -0
- package/dist/file/factory.d.ts.map +1 -0
- package/dist/file/factory.js +237 -0
- package/dist/file/factory.js.map +1 -0
- package/dist/file/gcs.d.ts +66 -0
- package/dist/file/gcs.d.ts.map +1 -0
- package/dist/file/gcs.js +226 -0
- package/dist/file/gcs.js.map +1 -0
- package/dist/file/gdrive.d.ts +78 -0
- package/dist/file/gdrive.d.ts.map +1 -0
- package/dist/file/gdrive.js +302 -0
- package/dist/file/gdrive.js.map +1 -0
- package/dist/file/index.d.ts +13 -1
- package/dist/file/index.d.ts.map +1 -1
- package/dist/file/index.js +25 -1
- package/dist/file/index.js.map +1 -1
- package/dist/file/manager.d.ts +83 -2
- package/dist/file/manager.d.ts.map +1 -1
- package/dist/file/manager.js +125 -4
- package/dist/file/manager.js.map +1 -1
- package/dist/file/r2.d.ts +56 -0
- package/dist/file/r2.d.ts.map +1 -0
- package/dist/file/r2.js +96 -0
- package/dist/file/r2.js.map +1 -0
- package/dist/file/s3.d.ts +61 -0
- package/dist/file/s3.d.ts.map +1 -0
- package/dist/file/s3.js +258 -0
- package/dist/file/s3.js.map +1 -0
- package/dist/file/types.d.ts +145 -2
- package/dist/file/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/logs/index.d.ts +1 -0
- package/dist/logs/index.d.ts.map +1 -1
- package/dist/logs/index.js +3 -1
- package/dist/logs/index.js.map +1 -1
- package/dist/logs/manager.d.ts +29 -2
- package/dist/logs/manager.d.ts.map +1 -1
- package/dist/logs/manager.js +48 -7
- package/dist/logs/manager.js.map +1 -1
- package/dist/logs/type-registry.d.ts +180 -0
- package/dist/logs/type-registry.d.ts.map +1 -0
- package/dist/logs/type-registry.js +421 -0
- package/dist/logs/type-registry.js.map +1 -0
- package/dist/logs/type-registry.test.d.ts +5 -0
- package/dist/logs/type-registry.test.d.ts.map +1 -0
- package/dist/logs/type-registry.test.js +671 -0
- package/dist/logs/type-registry.test.js.map +1 -0
- package/dist/logs/types.d.ts +2 -0
- package/dist/logs/types.d.ts.map +1 -1
- package/package.json +62 -8
package/dist/docs/types.d.ts
CHANGED
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
* Documentation format types
|
|
8
8
|
*/
|
|
9
9
|
export type DocFormat = 'markdown' | 'html' | 'pdf' | 'text';
|
|
10
|
+
/**
|
|
11
|
+
* Metadata storage mode
|
|
12
|
+
* - 'frontmatter': Metadata embedded in YAML frontmatter at start of markdown files (recommended)
|
|
13
|
+
* - 'sidecar': Metadata stored in separate .meta.yaml files alongside content files (legacy)
|
|
14
|
+
*/
|
|
15
|
+
export type MetadataMode = 'frontmatter' | 'sidecar';
|
|
10
16
|
/**
|
|
11
17
|
* Documentation metadata
|
|
12
18
|
*/
|
|
@@ -39,6 +45,14 @@ export interface DocMetadata {
|
|
|
39
45
|
* Tags for categorization
|
|
40
46
|
*/
|
|
41
47
|
tags?: string[];
|
|
48
|
+
/**
|
|
49
|
+
* Document type (e.g., 'adr', 'api', 'architecture')
|
|
50
|
+
*/
|
|
51
|
+
docType?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Document status (e.g., 'draft', 'published', 'deprecated')
|
|
54
|
+
*/
|
|
55
|
+
status?: string;
|
|
42
56
|
/**
|
|
43
57
|
* Custom metadata
|
|
44
58
|
*/
|
|
@@ -85,6 +99,10 @@ export interface DocSearchQuery {
|
|
|
85
99
|
* Filter by author
|
|
86
100
|
*/
|
|
87
101
|
author?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Filter by document type
|
|
104
|
+
*/
|
|
105
|
+
docType?: string;
|
|
88
106
|
/**
|
|
89
107
|
* Filter by date range
|
|
90
108
|
*/
|
|
@@ -109,5 +127,80 @@ export interface DocsManagerConfig {
|
|
|
109
127
|
* Default format for new documents
|
|
110
128
|
*/
|
|
111
129
|
defaultFormat?: DocFormat;
|
|
130
|
+
/**
|
|
131
|
+
* Metadata storage mode (default: 'frontmatter' for markdown, 'sidecar' for others)
|
|
132
|
+
*/
|
|
133
|
+
metadataMode?: MetadataMode;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Document type definition
|
|
137
|
+
*/
|
|
138
|
+
export interface DocType {
|
|
139
|
+
/**
|
|
140
|
+
* Type identifier (e.g., 'adr', 'api', 'architecture')
|
|
141
|
+
*/
|
|
142
|
+
id: string;
|
|
143
|
+
/**
|
|
144
|
+
* Human-readable name
|
|
145
|
+
*/
|
|
146
|
+
displayName: string;
|
|
147
|
+
/**
|
|
148
|
+
* Description of this document type
|
|
149
|
+
*/
|
|
150
|
+
description: string;
|
|
151
|
+
/**
|
|
152
|
+
* Mustache template for document content
|
|
153
|
+
*/
|
|
154
|
+
template: string;
|
|
155
|
+
/**
|
|
156
|
+
* Default output path relative to docs directory
|
|
157
|
+
*/
|
|
158
|
+
outputPath: string;
|
|
159
|
+
/**
|
|
160
|
+
* File naming configuration
|
|
161
|
+
*/
|
|
162
|
+
fileNaming: {
|
|
163
|
+
pattern: string;
|
|
164
|
+
autoNumber?: boolean;
|
|
165
|
+
numberFormat?: string;
|
|
166
|
+
slugSource?: string;
|
|
167
|
+
slugMaxLength?: number;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Frontmatter field configuration
|
|
171
|
+
*/
|
|
172
|
+
frontmatter: {
|
|
173
|
+
requiredFields: string[];
|
|
174
|
+
optionalFields?: string[];
|
|
175
|
+
defaults?: Record<string, unknown>;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Document structure requirements
|
|
179
|
+
*/
|
|
180
|
+
structure?: {
|
|
181
|
+
requiredSections?: string[];
|
|
182
|
+
optionalSections?: string[];
|
|
183
|
+
sectionOrder?: string[];
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Status field configuration
|
|
187
|
+
*/
|
|
188
|
+
status?: {
|
|
189
|
+
allowedValues: string[];
|
|
190
|
+
default: string;
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Index configuration
|
|
194
|
+
*/
|
|
195
|
+
indexConfig?: {
|
|
196
|
+
indexFile: string;
|
|
197
|
+
sortBy?: string;
|
|
198
|
+
sortOrder?: 'asc' | 'desc';
|
|
199
|
+
entryTemplate?: string;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Documentation standards (markdown content)
|
|
203
|
+
*/
|
|
204
|
+
standards?: string;
|
|
112
205
|
}
|
|
113
206
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/docs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,WAAW,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,EAAE,CAAC,EAAE,IAAI,CAAC;KACX,CAAC;IAEF;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fractary/core - Manager Factories
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating authenticated managers.
|
|
5
|
+
* Provides a convenient way to create WorkManager and RepoManager
|
|
6
|
+
* with automatic configuration loading and authentication.
|
|
7
|
+
*/
|
|
8
|
+
import { WorkManager } from './work';
|
|
9
|
+
import { RepoManager } from './repo';
|
|
10
|
+
import { LoadedConfig } from './config/loader';
|
|
11
|
+
/**
|
|
12
|
+
* Options for creating managers
|
|
13
|
+
*/
|
|
14
|
+
export interface CreateManagerOptions {
|
|
15
|
+
/** Pre-loaded configuration (optional - will load if not provided) */
|
|
16
|
+
config?: LoadedConfig;
|
|
17
|
+
/** Working directory for repository operations */
|
|
18
|
+
cwd?: string;
|
|
19
|
+
/** Skip authentication (use existing gh CLI auth instead) */
|
|
20
|
+
skipAuth?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create an authenticated WorkManager
|
|
24
|
+
*
|
|
25
|
+
* Loads configuration automatically and creates a WorkManager
|
|
26
|
+
* with proper authentication.
|
|
27
|
+
*
|
|
28
|
+
* @param options Creation options
|
|
29
|
+
* @returns Configured WorkManager instance
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // Simple usage - auto-loads config and auth
|
|
34
|
+
* const workManager = await createWorkManager();
|
|
35
|
+
* const issues = await workManager.searchIssues('bug');
|
|
36
|
+
*
|
|
37
|
+
* // With pre-loaded config
|
|
38
|
+
* const config = await loadConfig();
|
|
39
|
+
* const workManager = await createWorkManager({ config });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function createWorkManager(options?: CreateManagerOptions): Promise<WorkManager>;
|
|
43
|
+
/**
|
|
44
|
+
* Create an authenticated RepoManager
|
|
45
|
+
*
|
|
46
|
+
* Loads configuration automatically and creates a RepoManager
|
|
47
|
+
* with proper authentication.
|
|
48
|
+
*
|
|
49
|
+
* @param options Creation options
|
|
50
|
+
* @returns Configured RepoManager instance
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* // Simple usage - auto-loads config and auth
|
|
55
|
+
* const repoManager = await createRepoManager();
|
|
56
|
+
* const status = repoManager.getStatus();
|
|
57
|
+
*
|
|
58
|
+
* // With explicit working directory
|
|
59
|
+
* const repoManager = await createRepoManager({ cwd: '/path/to/repo' });
|
|
60
|
+
*
|
|
61
|
+
* // With pre-loaded config
|
|
62
|
+
* const config = await loadConfig();
|
|
63
|
+
* const repoManager = await createRepoManager({ config });
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function createRepoManager(options?: CreateManagerOptions): Promise<RepoManager>;
|
|
67
|
+
/**
|
|
68
|
+
* Create both WorkManager and RepoManager with shared config
|
|
69
|
+
*
|
|
70
|
+
* Useful when you need both managers and want to share
|
|
71
|
+
* configuration and authentication.
|
|
72
|
+
*
|
|
73
|
+
* @param options Creation options
|
|
74
|
+
* @returns Object with both managers
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const { work, repo } = await createManagers();
|
|
79
|
+
*
|
|
80
|
+
* // Fetch issue and create branch
|
|
81
|
+
* const issue = await work.fetchIssue(123);
|
|
82
|
+
* await repo.createBranch(`feature/${issue.number}-${slug(issue.title)}`);
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function createManagers(options?: CreateManagerOptions): Promise<{
|
|
86
|
+
work: WorkManager;
|
|
87
|
+
repo: RepoManager;
|
|
88
|
+
}>;
|
|
89
|
+
//# sourceMappingURL=factories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAc,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA0C3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkFD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAwBnD"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fractary/core - Manager Factories
|
|
4
|
+
*
|
|
5
|
+
* Factory functions for creating authenticated managers.
|
|
6
|
+
* Provides a convenient way to create WorkManager and RepoManager
|
|
7
|
+
* with automatic configuration loading and authentication.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createWorkManager = createWorkManager;
|
|
11
|
+
exports.createRepoManager = createRepoManager;
|
|
12
|
+
exports.createManagers = createManagers;
|
|
13
|
+
const work_1 = require("./work");
|
|
14
|
+
const repo_1 = require("./repo");
|
|
15
|
+
const loader_1 = require("./config/loader");
|
|
16
|
+
const errors_1 = require("./common/errors");
|
|
17
|
+
/** Regex pattern for valid GitHub owner/repo format */
|
|
18
|
+
const PROJECT_FORMAT_REGEX = /^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/;
|
|
19
|
+
/**
|
|
20
|
+
* Validate and parse project string into owner/repo
|
|
21
|
+
*
|
|
22
|
+
* @param project Project string in "owner/repo" format
|
|
23
|
+
* @returns Tuple of [owner, repo] or null if invalid
|
|
24
|
+
* @throws ConfigurationError if format is invalid
|
|
25
|
+
*/
|
|
26
|
+
function parseProject(project) {
|
|
27
|
+
if (!project || typeof project !== 'string') {
|
|
28
|
+
throw new errors_1.ConfigurationError('Invalid project configuration: project must be a non-empty string', { project });
|
|
29
|
+
}
|
|
30
|
+
const trimmed = project.trim();
|
|
31
|
+
if (!PROJECT_FORMAT_REGEX.test(trimmed)) {
|
|
32
|
+
throw new errors_1.ConfigurationError(`Invalid project format: "${project}". Expected "owner/repo" format (e.g., "fractary/core")`, { project });
|
|
33
|
+
}
|
|
34
|
+
const parts = trimmed.split('/');
|
|
35
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
36
|
+
throw new errors_1.ConfigurationError(`Invalid project format: "${project}". Expected exactly one "/" separator`, { project });
|
|
37
|
+
}
|
|
38
|
+
return [parts[0], parts[1]];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build WorkConfig from LoadedConfig
|
|
42
|
+
*
|
|
43
|
+
* @param config Loaded configuration
|
|
44
|
+
* @param token Token from token provider (if available)
|
|
45
|
+
* @returns WorkConfig for WorkManager
|
|
46
|
+
* @throws ConfigurationError if project format is invalid
|
|
47
|
+
*/
|
|
48
|
+
function buildWorkConfig(config, token) {
|
|
49
|
+
// Get platform from work config or default to github
|
|
50
|
+
const workConfig = config.work;
|
|
51
|
+
const activeHandler = workConfig?.active_handler || 'github';
|
|
52
|
+
// Map active_handler to platform
|
|
53
|
+
const platform = activeHandler;
|
|
54
|
+
// Get handler-specific config
|
|
55
|
+
const handlerConfig = workConfig?.handlers?.[activeHandler] || {};
|
|
56
|
+
// Extract owner/repo from project string if needed
|
|
57
|
+
let owner = handlerConfig.owner;
|
|
58
|
+
let repo = handlerConfig.repo;
|
|
59
|
+
const project = handlerConfig.project || config.github?.project;
|
|
60
|
+
// Parse and validate project format if we need to extract owner/repo
|
|
61
|
+
if (!owner && !repo && project) {
|
|
62
|
+
[owner, repo] = parseProject(project);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
platform,
|
|
66
|
+
owner,
|
|
67
|
+
repo,
|
|
68
|
+
project: project,
|
|
69
|
+
token: token || handlerConfig.token || config.github?.token,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build RepoConfig from LoadedConfig
|
|
74
|
+
*
|
|
75
|
+
* @param config Loaded configuration
|
|
76
|
+
* @param token Token from token provider (if available)
|
|
77
|
+
* @returns RepoConfig for RepoManager
|
|
78
|
+
* @throws ConfigurationError if project format is invalid
|
|
79
|
+
*/
|
|
80
|
+
function buildRepoConfig(config, token) {
|
|
81
|
+
// Get platform from repo config or default to github
|
|
82
|
+
const repoConfig = config.repo;
|
|
83
|
+
const activeHandler = repoConfig?.active_handler || 'github';
|
|
84
|
+
// Map active_handler to platform
|
|
85
|
+
const platform = activeHandler;
|
|
86
|
+
// Get handler-specific config
|
|
87
|
+
const handlerConfig = repoConfig?.handlers?.[activeHandler] || {};
|
|
88
|
+
// Get defaults
|
|
89
|
+
const defaults = repoConfig?.defaults || {};
|
|
90
|
+
// Extract owner/repo from project string if needed
|
|
91
|
+
let owner = handlerConfig.owner;
|
|
92
|
+
let repo = handlerConfig.repo;
|
|
93
|
+
const project = handlerConfig.project || config.github?.project;
|
|
94
|
+
// Parse and validate project format if we need to extract owner/repo
|
|
95
|
+
if (!owner && !repo && project) {
|
|
96
|
+
[owner, repo] = parseProject(project);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
platform,
|
|
100
|
+
owner,
|
|
101
|
+
repo,
|
|
102
|
+
defaultBranch: defaults.default_branch || handlerConfig.default_branch,
|
|
103
|
+
token: token || handlerConfig.token || config.github?.token,
|
|
104
|
+
branchPrefixes: defaults.branch_naming?.prefixes,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Create an authenticated WorkManager
|
|
109
|
+
*
|
|
110
|
+
* Loads configuration automatically and creates a WorkManager
|
|
111
|
+
* with proper authentication.
|
|
112
|
+
*
|
|
113
|
+
* @param options Creation options
|
|
114
|
+
* @returns Configured WorkManager instance
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // Simple usage - auto-loads config and auth
|
|
119
|
+
* const workManager = await createWorkManager();
|
|
120
|
+
* const issues = await workManager.searchIssues('bug');
|
|
121
|
+
*
|
|
122
|
+
* // With pre-loaded config
|
|
123
|
+
* const config = await loadConfig();
|
|
124
|
+
* const workManager = await createWorkManager({ config });
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
async function createWorkManager(options = {}) {
|
|
128
|
+
const { config: providedConfig, skipAuth = false } = options;
|
|
129
|
+
// Load config if not provided
|
|
130
|
+
const config = providedConfig || await (0, loader_1.loadConfig)({ skipAuth });
|
|
131
|
+
// Get token from provider if available
|
|
132
|
+
let token;
|
|
133
|
+
if (!skipAuth && config.tokenProvider) {
|
|
134
|
+
try {
|
|
135
|
+
token = await config.tokenProvider.getToken();
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Token provider failed - continue without token
|
|
139
|
+
// The manager will fall back to gh CLI auth
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Build WorkConfig
|
|
143
|
+
const workConfig = buildWorkConfig(config, token);
|
|
144
|
+
return new work_1.WorkManager(workConfig);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Create an authenticated RepoManager
|
|
148
|
+
*
|
|
149
|
+
* Loads configuration automatically and creates a RepoManager
|
|
150
|
+
* with proper authentication.
|
|
151
|
+
*
|
|
152
|
+
* @param options Creation options
|
|
153
|
+
* @returns Configured RepoManager instance
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // Simple usage - auto-loads config and auth
|
|
158
|
+
* const repoManager = await createRepoManager();
|
|
159
|
+
* const status = repoManager.getStatus();
|
|
160
|
+
*
|
|
161
|
+
* // With explicit working directory
|
|
162
|
+
* const repoManager = await createRepoManager({ cwd: '/path/to/repo' });
|
|
163
|
+
*
|
|
164
|
+
* // With pre-loaded config
|
|
165
|
+
* const config = await loadConfig();
|
|
166
|
+
* const repoManager = await createRepoManager({ config });
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
async function createRepoManager(options = {}) {
|
|
170
|
+
const { config: providedConfig, cwd, skipAuth = false } = options;
|
|
171
|
+
// Load config if not provided
|
|
172
|
+
const config = providedConfig || await (0, loader_1.loadConfig)({ skipAuth });
|
|
173
|
+
// Get token from provider if available
|
|
174
|
+
let token;
|
|
175
|
+
if (!skipAuth && config.tokenProvider) {
|
|
176
|
+
try {
|
|
177
|
+
token = await config.tokenProvider.getToken();
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Token provider failed - continue without token
|
|
181
|
+
// The manager will fall back to gh CLI auth
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// Build RepoConfig
|
|
185
|
+
const repoConfig = buildRepoConfig(config, token);
|
|
186
|
+
return new repo_1.RepoManager(repoConfig, cwd);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Create both WorkManager and RepoManager with shared config
|
|
190
|
+
*
|
|
191
|
+
* Useful when you need both managers and want to share
|
|
192
|
+
* configuration and authentication.
|
|
193
|
+
*
|
|
194
|
+
* @param options Creation options
|
|
195
|
+
* @returns Object with both managers
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* const { work, repo } = await createManagers();
|
|
200
|
+
*
|
|
201
|
+
* // Fetch issue and create branch
|
|
202
|
+
* const issue = await work.fetchIssue(123);
|
|
203
|
+
* await repo.createBranch(`feature/${issue.number}-${slug(issue.title)}`);
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
async function createManagers(options = {}) {
|
|
207
|
+
const { config: providedConfig, cwd, skipAuth = false } = options;
|
|
208
|
+
// Load config once
|
|
209
|
+
const config = providedConfig || await (0, loader_1.loadConfig)({ skipAuth });
|
|
210
|
+
// Get token once
|
|
211
|
+
let token;
|
|
212
|
+
if (!skipAuth && config.tokenProvider) {
|
|
213
|
+
try {
|
|
214
|
+
token = await config.tokenProvider.getToken();
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Token provider failed - continue without token
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Build configs
|
|
221
|
+
const workConfig = buildWorkConfig(config, token);
|
|
222
|
+
const repoConfig = buildRepoConfig(config, token);
|
|
223
|
+
return {
|
|
224
|
+
work: new work_1.WorkManager(workConfig),
|
|
225
|
+
repo: new repo_1.RepoManager(repoConfig, cwd),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=factories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fractary/core - Storage Factory
|
|
3
|
+
*
|
|
4
|
+
* Factory function for creating storage backends based on configuration.
|
|
5
|
+
* Supports automatic configuration loading from .fractary/config.yaml.
|
|
6
|
+
*/
|
|
7
|
+
import { Storage, StorageConfig, StorageType, SourceConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Create a storage backend from configuration
|
|
10
|
+
*
|
|
11
|
+
* @param config - Storage configuration
|
|
12
|
+
* @returns Storage instance
|
|
13
|
+
*/
|
|
14
|
+
export declare function createStorage(config: StorageConfig): Storage;
|
|
15
|
+
/**
|
|
16
|
+
* Convert a source configuration from config.yaml to a StorageConfig
|
|
17
|
+
*
|
|
18
|
+
* @param source - Source configuration from config.yaml
|
|
19
|
+
* @returns StorageConfig for creating a storage backend
|
|
20
|
+
*/
|
|
21
|
+
export declare function sourceConfigToStorageConfig(source: SourceConfig): StorageConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Create a storage backend from a named source in config.yaml
|
|
24
|
+
*
|
|
25
|
+
* @param sourceName - Name of the source (e.g., 'specs', 'logs')
|
|
26
|
+
* @param fileConfig - File plugin configuration from config.yaml
|
|
27
|
+
* @returns Storage instance
|
|
28
|
+
*/
|
|
29
|
+
export declare function createStorageFromSource(sourceName: string, fileConfig: {
|
|
30
|
+
sources?: Record<string, SourceConfig>;
|
|
31
|
+
}): Storage;
|
|
32
|
+
/**
|
|
33
|
+
* Get the default storage type based on configuration
|
|
34
|
+
*
|
|
35
|
+
* @param fileConfig - File plugin configuration
|
|
36
|
+
* @returns Default storage type
|
|
37
|
+
*/
|
|
38
|
+
export declare function getDefaultStorageType(fileConfig?: {
|
|
39
|
+
sources?: Record<string, SourceConfig>;
|
|
40
|
+
}): StorageType;
|
|
41
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/file/factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EAMX,YAAY,EACb,MAAM,SAAS,CAAC;AAGjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAqB5D;AA8ED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAsD/E;AAiBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,GACrD,OAAO,CAaT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,GACtD,WAAW,CAQb"}
|