@fractary/core 0.3.3 → 0.5.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.
Files changed (138) hide show
  1. package/dist/__tests__/factories.test.d.ts +5 -0
  2. package/dist/__tests__/factories.test.d.ts.map +1 -0
  3. package/dist/__tests__/factories.test.js +66 -0
  4. package/dist/__tests__/factories.test.js.map +1 -0
  5. package/dist/auth/__tests__/create-token-provider.test.d.ts +5 -0
  6. package/dist/auth/__tests__/create-token-provider.test.d.ts.map +1 -0
  7. package/dist/auth/__tests__/create-token-provider.test.js +104 -0
  8. package/dist/auth/__tests__/create-token-provider.test.js.map +1 -0
  9. package/dist/auth/__tests__/github-app-auth.test.d.ts +5 -0
  10. package/dist/auth/__tests__/github-app-auth.test.d.ts.map +1 -0
  11. package/dist/auth/__tests__/github-app-auth.test.js +293 -0
  12. package/dist/auth/__tests__/github-app-auth.test.js.map +1 -0
  13. package/dist/auth/__tests__/static-token-provider.test.d.ts +5 -0
  14. package/dist/auth/__tests__/static-token-provider.test.d.ts.map +1 -0
  15. package/dist/auth/__tests__/static-token-provider.test.js +54 -0
  16. package/dist/auth/__tests__/static-token-provider.test.js.map +1 -0
  17. package/dist/auth/github-app-auth.d.ts +109 -0
  18. package/dist/auth/github-app-auth.d.ts.map +1 -0
  19. package/dist/auth/github-app-auth.js +262 -0
  20. package/dist/auth/github-app-auth.js.map +1 -0
  21. package/dist/auth/github-app-token-provider.d.ts +59 -0
  22. package/dist/auth/github-app-token-provider.d.ts.map +1 -0
  23. package/dist/auth/github-app-token-provider.js +68 -0
  24. package/dist/auth/github-app-token-provider.js.map +1 -0
  25. package/dist/auth/index.d.ts +45 -0
  26. package/dist/auth/index.d.ts.map +1 -0
  27. package/dist/auth/index.js +74 -0
  28. package/dist/auth/index.js.map +1 -0
  29. package/dist/auth/static-token-provider.d.ts +35 -0
  30. package/dist/auth/static-token-provider.d.ts.map +1 -0
  31. package/dist/auth/static-token-provider.js +45 -0
  32. package/dist/auth/static-token-provider.js.map +1 -0
  33. package/dist/auth/types.d.ts +49 -0
  34. package/dist/auth/types.d.ts.map +1 -0
  35. package/dist/auth/types.js +8 -0
  36. package/dist/auth/types.js.map +1 -0
  37. package/dist/common/__tests__/secrets.test.d.ts +7 -0
  38. package/dist/common/__tests__/secrets.test.d.ts.map +1 -0
  39. package/dist/common/__tests__/secrets.test.js +320 -0
  40. package/dist/common/__tests__/secrets.test.js.map +1 -0
  41. package/dist/common/config.d.ts +6 -4
  42. package/dist/common/config.d.ts.map +1 -1
  43. package/dist/common/config.js +4 -30
  44. package/dist/common/config.js.map +1 -1
  45. package/dist/common/index.d.ts +1 -0
  46. package/dist/common/index.d.ts.map +1 -1
  47. package/dist/common/index.js +1 -0
  48. package/dist/common/index.js.map +1 -1
  49. package/dist/common/secrets.d.ts +68 -0
  50. package/dist/common/secrets.d.ts.map +1 -0
  51. package/dist/common/secrets.js +180 -0
  52. package/dist/common/secrets.js.map +1 -0
  53. package/dist/common/yaml-config.d.ts +10 -0
  54. package/dist/common/yaml-config.d.ts.map +1 -1
  55. package/dist/common/yaml-config.js.map +1 -1
  56. package/dist/config/__tests__/loader.test.d.ts +5 -0
  57. package/dist/config/__tests__/loader.test.d.ts.map +1 -0
  58. package/dist/config/__tests__/loader.test.js +129 -0
  59. package/dist/config/__tests__/loader.test.js.map +1 -0
  60. package/dist/config/index.d.ts +8 -0
  61. package/dist/config/index.d.ts.map +1 -0
  62. package/dist/config/index.js +27 -0
  63. package/dist/config/index.js.map +1 -0
  64. package/dist/config/loader.d.ts +126 -0
  65. package/dist/config/loader.d.ts.map +1 -0
  66. package/dist/config/loader.js +277 -0
  67. package/dist/config/loader.js.map +1 -0
  68. package/dist/docs/index.d.ts +5 -0
  69. package/dist/docs/index.d.ts.map +1 -1
  70. package/dist/docs/index.js +6 -1
  71. package/dist/docs/index.js.map +1 -1
  72. package/dist/docs/manager.d.ts +27 -0
  73. package/dist/docs/manager.d.ts.map +1 -1
  74. package/dist/docs/manager.js +168 -15
  75. package/dist/docs/manager.js.map +1 -1
  76. package/dist/docs/type-registry.d.ts +123 -0
  77. package/dist/docs/type-registry.d.ts.map +1 -0
  78. package/dist/docs/type-registry.js +393 -0
  79. package/dist/docs/type-registry.js.map +1 -0
  80. package/dist/docs/types.d.ts +93 -0
  81. package/dist/docs/types.d.ts.map +1 -1
  82. package/dist/factories.d.ts +89 -0
  83. package/dist/factories.d.ts.map +1 -0
  84. package/dist/factories.js +228 -0
  85. package/dist/factories.js.map +1 -0
  86. package/dist/file/factory.d.ts +41 -0
  87. package/dist/file/factory.d.ts.map +1 -0
  88. package/dist/file/factory.js +237 -0
  89. package/dist/file/factory.js.map +1 -0
  90. package/dist/file/gcs.d.ts +66 -0
  91. package/dist/file/gcs.d.ts.map +1 -0
  92. package/dist/file/gcs.js +226 -0
  93. package/dist/file/gcs.js.map +1 -0
  94. package/dist/file/gdrive.d.ts +78 -0
  95. package/dist/file/gdrive.d.ts.map +1 -0
  96. package/dist/file/gdrive.js +302 -0
  97. package/dist/file/gdrive.js.map +1 -0
  98. package/dist/file/index.d.ts +13 -1
  99. package/dist/file/index.d.ts.map +1 -1
  100. package/dist/file/index.js +25 -1
  101. package/dist/file/index.js.map +1 -1
  102. package/dist/file/manager.d.ts +83 -2
  103. package/dist/file/manager.d.ts.map +1 -1
  104. package/dist/file/manager.js +125 -4
  105. package/dist/file/manager.js.map +1 -1
  106. package/dist/file/r2.d.ts +56 -0
  107. package/dist/file/r2.d.ts.map +1 -0
  108. package/dist/file/r2.js +96 -0
  109. package/dist/file/r2.js.map +1 -0
  110. package/dist/file/s3.d.ts +61 -0
  111. package/dist/file/s3.d.ts.map +1 -0
  112. package/dist/file/s3.js +258 -0
  113. package/dist/file/s3.js.map +1 -0
  114. package/dist/file/types.d.ts +145 -2
  115. package/dist/file/types.d.ts.map +1 -1
  116. package/dist/index.d.ts +3 -0
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +6 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/logs/index.d.ts +1 -0
  121. package/dist/logs/index.d.ts.map +1 -1
  122. package/dist/logs/index.js +3 -1
  123. package/dist/logs/index.js.map +1 -1
  124. package/dist/logs/manager.d.ts +29 -2
  125. package/dist/logs/manager.d.ts.map +1 -1
  126. package/dist/logs/manager.js +48 -7
  127. package/dist/logs/manager.js.map +1 -1
  128. package/dist/logs/type-registry.d.ts +180 -0
  129. package/dist/logs/type-registry.d.ts.map +1 -0
  130. package/dist/logs/type-registry.js +421 -0
  131. package/dist/logs/type-registry.js.map +1 -0
  132. package/dist/logs/type-registry.test.d.ts +5 -0
  133. package/dist/logs/type-registry.test.d.ts.map +1 -0
  134. package/dist/logs/type-registry.test.js +671 -0
  135. package/dist/logs/type-registry.test.js.map +1 -0
  136. package/dist/logs/types.d.ts +2 -0
  137. package/dist/logs/types.d.ts.map +1 -1
  138. package/package.json +76 -8
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/core - Doc Type Registry
4
+ *
5
+ * Manages document type definitions for structured documentation.
6
+ * Loads core types from YAML/Markdown files and custom types from config.
7
+ *
8
+ * Doc types are stored as directories containing:
9
+ * - type.yaml: Type definition (schema, frontmatter rules, file naming)
10
+ * - template.md: Mustache template for document generation
11
+ * - standards.md: Standards and conventions for this type
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.DocTypeRegistry = void 0;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const yaml = __importStar(require("js-yaml"));
51
+ /**
52
+ * Convert raw YAML (snake_case) to DocType (camelCase)
53
+ */
54
+ function convertYamlToDocType(raw, template, standards) {
55
+ return {
56
+ id: raw.id,
57
+ displayName: raw.display_name,
58
+ description: raw.description,
59
+ template,
60
+ outputPath: raw.output_path,
61
+ fileNaming: {
62
+ pattern: raw.file_naming.pattern,
63
+ autoNumber: raw.file_naming.auto_number,
64
+ numberFormat: raw.file_naming.number_format,
65
+ slugSource: raw.file_naming.slug_source,
66
+ slugMaxLength: raw.file_naming.slug_max_length,
67
+ },
68
+ frontmatter: {
69
+ requiredFields: raw.frontmatter.required_fields,
70
+ optionalFields: raw.frontmatter.optional_fields,
71
+ defaults: raw.frontmatter.defaults,
72
+ },
73
+ structure: raw.structure
74
+ ? {
75
+ requiredSections: raw.structure.required_sections,
76
+ optionalSections: raw.structure.optional_sections,
77
+ sectionOrder: raw.structure.section_order,
78
+ }
79
+ : undefined,
80
+ status: raw.status
81
+ ? {
82
+ allowedValues: raw.status.allowed_values,
83
+ default: raw.status.default,
84
+ }
85
+ : undefined,
86
+ indexConfig: raw.index_config
87
+ ? {
88
+ indexFile: raw.index_config.index_file,
89
+ sortBy: raw.index_config.sort_by,
90
+ sortOrder: raw.index_config.sort_order,
91
+ entryTemplate: raw.index_config.entry_template,
92
+ }
93
+ : undefined,
94
+ standards,
95
+ };
96
+ }
97
+ /**
98
+ * Doc Type Registry - Load and manage document type definitions
99
+ */
100
+ class DocTypeRegistry {
101
+ coreTypes;
102
+ customTypes;
103
+ baseDir;
104
+ coreTypesPath;
105
+ constructor(config) {
106
+ this.baseDir = config?.baseDir || process.cwd();
107
+ this.coreTypes = new Map();
108
+ this.customTypes = new Map();
109
+ // Default to looking for templates/docs relative to package root
110
+ // When installed as a package, this should be resolved differently
111
+ this.coreTypesPath =
112
+ config?.coreTypesPath || this.findCoreTypesPath();
113
+ // Load core types unless explicitly skipped
114
+ if (!config?.skipCoreTypes) {
115
+ this.loadCoreTypes();
116
+ }
117
+ // Load custom types from manifest file if provided
118
+ if (config?.customManifestPath) {
119
+ this.loadCustomTypesFromManifest(config.customManifestPath);
120
+ }
121
+ // Load individual custom types if provided (can override manifest types)
122
+ if (config?.customTypes) {
123
+ this.loadCustomTypes(config.customTypes);
124
+ }
125
+ }
126
+ /**
127
+ * Find the core templates/docs directory (templates/docs)
128
+ */
129
+ findCoreTypesPath() {
130
+ // Try common locations
131
+ const candidates = [
132
+ // Development: relative to SDK source
133
+ path.resolve(__dirname, '../../../../templates/docs'),
134
+ // Development: from repo root
135
+ path.resolve(process.cwd(), 'templates/docs'),
136
+ // Installed package: look in parent directories
137
+ path.resolve(__dirname, '../../../../../templates/docs'),
138
+ path.resolve(__dirname, '../../../../../../templates/docs'),
139
+ ];
140
+ for (const candidate of candidates) {
141
+ if (fs.existsSync(path.join(candidate, 'manifest.yaml'))) {
142
+ return candidate;
143
+ }
144
+ }
145
+ // Fallback - will fail later if types not found
146
+ return candidates[0];
147
+ }
148
+ /**
149
+ * Load all core doc types from the templates/docs directory
150
+ */
151
+ loadCoreTypes() {
152
+ const manifestPath = path.join(this.coreTypesPath, 'manifest.yaml');
153
+ if (!fs.existsSync(manifestPath)) {
154
+ console.warn(`Core doc types manifest not found: ${manifestPath}`);
155
+ return;
156
+ }
157
+ try {
158
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
159
+ const manifest = yaml.load(manifestContent);
160
+ for (const entry of manifest.doc_types) {
161
+ const docType = this.loadDocTypeFromDirectory(entry.id, path.join(this.coreTypesPath, entry.path.replace('./', '')));
162
+ if (docType) {
163
+ this.coreTypes.set(docType.id, docType);
164
+ }
165
+ }
166
+ }
167
+ catch (error) {
168
+ console.warn('Failed to load core doc types:', error);
169
+ }
170
+ }
171
+ /**
172
+ * Load custom doc types from a manifest file
173
+ * This is used when docs.custom_templates_path is set in config.yaml
174
+ */
175
+ loadCustomTypesFromManifest(manifestPath) {
176
+ // Resolve path relative to baseDir if not absolute
177
+ const resolvedPath = path.isAbsolute(manifestPath)
178
+ ? manifestPath
179
+ : path.join(this.baseDir, manifestPath);
180
+ if (!fs.existsSync(resolvedPath)) {
181
+ // Custom manifest is optional - don't warn if not found
182
+ return;
183
+ }
184
+ try {
185
+ const manifestContent = fs.readFileSync(resolvedPath, 'utf-8');
186
+ const manifest = yaml.load(manifestContent);
187
+ // Get the directory containing the manifest
188
+ const manifestDir = path.dirname(resolvedPath);
189
+ for (const entry of manifest.doc_types || []) {
190
+ // Resolve type directory relative to manifest location
191
+ const typeDirPath = path.join(manifestDir, entry.path.replace('./', ''));
192
+ const docType = this.loadDocTypeFromDirectory(entry.id, typeDirPath);
193
+ if (docType) {
194
+ this.customTypes.set(docType.id, docType);
195
+ }
196
+ }
197
+ }
198
+ catch (error) {
199
+ console.warn(`Failed to load custom doc types from ${manifestPath}:`, error);
200
+ }
201
+ }
202
+ /**
203
+ * Load a doc type from a directory
204
+ */
205
+ loadDocTypeFromDirectory(id, dirPath) {
206
+ const typeYamlPath = path.join(dirPath, 'type.yaml');
207
+ const templatePath = path.join(dirPath, 'template.md');
208
+ const standardsPath = path.join(dirPath, 'standards.md');
209
+ if (!fs.existsSync(typeYamlPath)) {
210
+ console.warn(`Doc type definition not found: ${typeYamlPath}`);
211
+ return null;
212
+ }
213
+ try {
214
+ // Read type.yaml
215
+ const typeContent = fs.readFileSync(typeYamlPath, 'utf-8');
216
+ const rawType = yaml.load(typeContent);
217
+ // Read template.md
218
+ let template = '';
219
+ if (fs.existsSync(templatePath)) {
220
+ template = fs.readFileSync(templatePath, 'utf-8');
221
+ }
222
+ // Read standards.md
223
+ let standards = '';
224
+ if (fs.existsSync(standardsPath)) {
225
+ standards = fs.readFileSync(standardsPath, 'utf-8');
226
+ }
227
+ // Convert and validate
228
+ const docType = convertYamlToDocType(rawType, template, standards);
229
+ // Ensure ID matches
230
+ if (docType.id !== id) {
231
+ console.warn(`Doc type ID mismatch: expected ${id}, got ${docType.id}`);
232
+ docType.id = id;
233
+ }
234
+ return docType;
235
+ }
236
+ catch (error) {
237
+ console.warn(`Failed to load doc type ${id}:`, error);
238
+ return null;
239
+ }
240
+ }
241
+ /**
242
+ * Load custom types from config paths
243
+ */
244
+ loadCustomTypes(configs) {
245
+ for (const config of configs) {
246
+ try {
247
+ if (config.path) {
248
+ // Load from local directory
249
+ const typePath = path.isAbsolute(config.path)
250
+ ? config.path
251
+ : path.join(this.baseDir, config.path);
252
+ const docType = this.loadDocTypeFromDirectory(config.id, typePath);
253
+ if (docType) {
254
+ this.customTypes.set(docType.id, docType);
255
+ }
256
+ }
257
+ else if (config.url) {
258
+ // URL loading would be async - not supported in constructor
259
+ // Users should use loadCustomTypeFromUrl() method instead
260
+ console.warn(`URL-based doc type loading not supported in constructor. Use loadCustomTypeFromUrl() for ${config.id}`);
261
+ }
262
+ }
263
+ catch (error) {
264
+ console.warn(`Failed to load custom doc type ${config.id}:`, error);
265
+ }
266
+ }
267
+ }
268
+ /**
269
+ * Load a custom doc type from a URL (async)
270
+ * @param id - Type identifier
271
+ * @param baseUrl - Base URL to the type directory (should contain type.yaml, template.md, standards.md)
272
+ */
273
+ async loadCustomTypeFromUrl(id, baseUrl) {
274
+ try {
275
+ // Fetch type.yaml
276
+ const typeUrl = `${baseUrl}/type.yaml`;
277
+ const typeResponse = await fetch(typeUrl);
278
+ if (!typeResponse.ok) {
279
+ console.warn(`Failed to fetch doc type: ${typeUrl}`);
280
+ return null;
281
+ }
282
+ const typeContent = await typeResponse.text();
283
+ const rawType = yaml.load(typeContent);
284
+ // Fetch template.md
285
+ let template = '';
286
+ try {
287
+ const templateUrl = `${baseUrl}/template.md`;
288
+ const templateResponse = await fetch(templateUrl);
289
+ if (templateResponse.ok) {
290
+ template = await templateResponse.text();
291
+ }
292
+ }
293
+ catch {
294
+ // Template is optional
295
+ }
296
+ // Fetch standards.md
297
+ let standards = '';
298
+ try {
299
+ const standardsUrl = `${baseUrl}/standards.md`;
300
+ const standardsResponse = await fetch(standardsUrl);
301
+ if (standardsResponse.ok) {
302
+ standards = await standardsResponse.text();
303
+ }
304
+ }
305
+ catch {
306
+ // Standards is optional
307
+ }
308
+ const docType = convertYamlToDocType(rawType, template, standards);
309
+ docType.id = id;
310
+ this.customTypes.set(id, docType);
311
+ return docType;
312
+ }
313
+ catch (error) {
314
+ console.warn(`Failed to load doc type from URL ${baseUrl}:`, error);
315
+ return null;
316
+ }
317
+ }
318
+ /**
319
+ * Get all available doc types (core + custom)
320
+ */
321
+ getAllTypes() {
322
+ const types = [];
323
+ // Add core types
324
+ for (const docType of this.coreTypes.values()) {
325
+ types.push(docType);
326
+ }
327
+ // Add custom types (may override core types)
328
+ for (const docType of this.customTypes.values()) {
329
+ const existingIndex = types.findIndex((t) => t.id === docType.id);
330
+ if (existingIndex >= 0) {
331
+ types[existingIndex] = docType;
332
+ }
333
+ else {
334
+ types.push(docType);
335
+ }
336
+ }
337
+ return types.sort((a, b) => a.id.localeCompare(b.id));
338
+ }
339
+ /**
340
+ * Get a doc type by ID
341
+ */
342
+ getType(id) {
343
+ // Custom types take precedence
344
+ if (this.customTypes.has(id)) {
345
+ return this.customTypes.get(id);
346
+ }
347
+ return this.coreTypes.get(id) || null;
348
+ }
349
+ /**
350
+ * Check if a doc type exists
351
+ */
352
+ hasType(id) {
353
+ return this.coreTypes.has(id) || this.customTypes.has(id);
354
+ }
355
+ /**
356
+ * Get only core types
357
+ */
358
+ getCoreTypes() {
359
+ return Array.from(this.coreTypes.values()).sort((a, b) => a.id.localeCompare(b.id));
360
+ }
361
+ /**
362
+ * Get only custom types
363
+ */
364
+ getCustomTypes() {
365
+ return Array.from(this.customTypes.values()).sort((a, b) => a.id.localeCompare(b.id));
366
+ }
367
+ /**
368
+ * Register a custom type programmatically
369
+ */
370
+ registerType(docType) {
371
+ this.customTypes.set(docType.id, docType);
372
+ }
373
+ /**
374
+ * Unregister a custom type
375
+ */
376
+ unregisterType(id) {
377
+ return this.customTypes.delete(id);
378
+ }
379
+ /**
380
+ * Get the manifest URL for core types
381
+ */
382
+ static getCoreManifestUrl() {
383
+ return 'https://raw.githubusercontent.com/fractary/core/main/templates/docs/manifest.yaml';
384
+ }
385
+ /**
386
+ * Get the base URL for a specific core type
387
+ */
388
+ static getCoreTypeUrl(typeId) {
389
+ return `https://raw.githubusercontent.com/fractary/core/main/templates/docs/${typeId}`;
390
+ }
391
+ }
392
+ exports.DocTypeRegistry = DocTypeRegistry;
393
+ //# sourceMappingURL=type-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-registry.js","sourceRoot":"","sources":["../../src/docs/type-registry.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -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;CAC3B"}
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;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAErD;;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,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,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,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;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;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;OAEG;IACH,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -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"}