@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,258 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/core - S3 Storage Implementation
4
+ *
5
+ * AWS S3 storage backend for file operations.
6
+ * Uses AWS SDK v3 with lazy loading to avoid hard dependencies.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.S3Storage = void 0;
43
+ /**
44
+ * AWS S3 storage implementation
45
+ */
46
+ class S3Storage {
47
+ config;
48
+ s3Client = null;
49
+ constructor(config) {
50
+ this.config = config;
51
+ }
52
+ /**
53
+ * Get or create the S3 client (lazy loaded)
54
+ */
55
+ async getClient() {
56
+ if (this.s3Client) {
57
+ return this.s3Client;
58
+ }
59
+ try {
60
+ // Dynamic import to avoid hard dependency
61
+ const { S3Client } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
62
+ const { fromIni } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/credential-providers')));
63
+ const clientConfig = {
64
+ region: this.config.region,
65
+ };
66
+ // Configure endpoint for S3-compatible services
67
+ if (this.config.endpoint) {
68
+ clientConfig.endpoint = this.config.endpoint;
69
+ clientConfig.forcePathStyle = true;
70
+ }
71
+ // Configure credentials
72
+ if (this.config.auth?.accessKeyId && this.config.auth?.secretAccessKey) {
73
+ clientConfig.credentials = {
74
+ accessKeyId: this.config.auth.accessKeyId,
75
+ secretAccessKey: this.config.auth.secretAccessKey,
76
+ };
77
+ }
78
+ else if (this.config.auth?.profile) {
79
+ clientConfig.credentials = fromIni({ profile: this.config.auth.profile });
80
+ }
81
+ // Otherwise, use default credential chain (IAM role, env vars, etc.)
82
+ this.s3Client = new S3Client(clientConfig);
83
+ return this.s3Client;
84
+ }
85
+ catch (error) {
86
+ throw new Error('AWS SDK not available. Install with: npm install @aws-sdk/client-s3 @aws-sdk/credential-providers');
87
+ }
88
+ }
89
+ /**
90
+ * Get the full S3 key with optional prefix
91
+ */
92
+ getKey(id) {
93
+ if (this.config.prefix) {
94
+ return `${this.config.prefix.replace(/\/$/, '')}/${id}`;
95
+ }
96
+ return id;
97
+ }
98
+ /**
99
+ * Check if an error is a "not found" error
100
+ * AWS SDK v3 uses error.name and error.$metadata.httpStatusCode
101
+ */
102
+ isNotFoundError(error) {
103
+ return (error.name === 'NoSuchKey' ||
104
+ error.name === 'NotFound' ||
105
+ error.$metadata?.httpStatusCode === 404);
106
+ }
107
+ /**
108
+ * Write content to S3
109
+ */
110
+ async write(id, content) {
111
+ const client = await this.getClient();
112
+ const { PutObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
113
+ const key = this.getKey(id);
114
+ const command = new PutObjectCommand({
115
+ Bucket: this.config.bucket,
116
+ Key: key,
117
+ Body: content,
118
+ ContentType: 'text/plain; charset=utf-8',
119
+ });
120
+ await client.send(command);
121
+ return `s3://${this.config.bucket}/${key}`;
122
+ }
123
+ /**
124
+ * Read content from S3
125
+ */
126
+ async read(id) {
127
+ const client = await this.getClient();
128
+ const { GetObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
129
+ const key = this.getKey(id);
130
+ try {
131
+ const command = new GetObjectCommand({
132
+ Bucket: this.config.bucket,
133
+ Key: key,
134
+ });
135
+ const response = await client.send(command);
136
+ // Convert stream to string
137
+ if (response.Body) {
138
+ const bodyContents = await response.Body.transformToString();
139
+ return bodyContents;
140
+ }
141
+ return null;
142
+ }
143
+ catch (error) {
144
+ if (this.isNotFoundError(error)) {
145
+ return null;
146
+ }
147
+ throw error;
148
+ }
149
+ }
150
+ /**
151
+ * Check if object exists in S3
152
+ */
153
+ async exists(id) {
154
+ const client = await this.getClient();
155
+ const { HeadObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
156
+ const key = this.getKey(id);
157
+ try {
158
+ const command = new HeadObjectCommand({
159
+ Bucket: this.config.bucket,
160
+ Key: key,
161
+ });
162
+ await client.send(command);
163
+ return true;
164
+ }
165
+ catch (error) {
166
+ if (this.isNotFoundError(error)) {
167
+ return false;
168
+ }
169
+ throw error;
170
+ }
171
+ }
172
+ /**
173
+ * List objects in S3 with optional prefix
174
+ */
175
+ async list(prefix) {
176
+ const client = await this.getClient();
177
+ const { ListObjectsV2Command } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
178
+ const fullPrefix = prefix ? this.getKey(prefix) : this.config.prefix || '';
179
+ const results = [];
180
+ let continuationToken;
181
+ do {
182
+ const command = new ListObjectsV2Command({
183
+ Bucket: this.config.bucket,
184
+ Prefix: fullPrefix,
185
+ ContinuationToken: continuationToken,
186
+ });
187
+ const response = await client.send(command);
188
+ if (response.Contents) {
189
+ for (const item of response.Contents) {
190
+ if (item.Key) {
191
+ // Remove the configured prefix from the key for consistency
192
+ let key = item.Key;
193
+ if (this.config.prefix && key.startsWith(this.config.prefix)) {
194
+ key = key.slice(this.config.prefix.length).replace(/^\//, '');
195
+ }
196
+ results.push(key);
197
+ }
198
+ }
199
+ }
200
+ continuationToken = response.IsTruncated ? response.NextContinuationToken : undefined;
201
+ } while (continuationToken);
202
+ return results;
203
+ }
204
+ /**
205
+ * Delete object from S3
206
+ */
207
+ async delete(id) {
208
+ const client = await this.getClient();
209
+ const { DeleteObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
210
+ const key = this.getKey(id);
211
+ const command = new DeleteObjectCommand({
212
+ Bucket: this.config.bucket,
213
+ Key: key,
214
+ });
215
+ await client.send(command);
216
+ }
217
+ /**
218
+ * Get a presigned URL for the object
219
+ */
220
+ async getUrl(id, expiresIn = 86400) {
221
+ // If a public URL is configured, use it
222
+ if (this.config.publicUrl) {
223
+ const key = this.getKey(id);
224
+ return `${this.config.publicUrl.replace(/\/$/, '')}/${key}`;
225
+ }
226
+ const client = await this.getClient();
227
+ try {
228
+ const { getSignedUrl } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/s3-request-presigner')));
229
+ const { GetObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
230
+ const key = this.getKey(id);
231
+ const command = new GetObjectCommand({
232
+ Bucket: this.config.bucket,
233
+ Key: key,
234
+ });
235
+ const url = await getSignedUrl(client, command, { expiresIn });
236
+ return url;
237
+ }
238
+ catch (error) {
239
+ // Fall back to S3 URI if presigner not available
240
+ const key = this.getKey(id);
241
+ return `s3://${this.config.bucket}/${key}`;
242
+ }
243
+ }
244
+ /**
245
+ * Get the bucket name
246
+ */
247
+ getBucket() {
248
+ return this.config.bucket;
249
+ }
250
+ /**
251
+ * Get the configured prefix
252
+ */
253
+ getPrefix() {
254
+ return this.config.prefix;
255
+ }
256
+ }
257
+ exports.S3Storage = S3Storage;
258
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/file/s3.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOH;;GAEG;AACH,MAAa,SAAS;IACZ,MAAM,CAAkB;IACxB,QAAQ,GAAoB,IAAI,CAAC;IAEzC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;YACxD,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;YAElE,MAAM,YAAY,GAAQ;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;aAC3B,CAAC;YAEF,gDAAgD;YAChD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzB,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;YACrC,CAAC;YAED,wBAAwB;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;gBACvE,YAAY,CAAC,WAAW,GAAG;oBACzB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW;oBACzC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe;iBAClD,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;gBACrC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,qEAAqE;YAErE,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,EAAU;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,KAAU;QAChC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,WAAW;YAC1B,KAAK,CAAC,IAAI,KAAK,UAAU;YACzB,KAAK,CAAC,SAAS,EAAE,cAAc,KAAK,GAAG,CACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,OAAe;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2BAA2B;SACzC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,GAAG,EAAE,GAAG;aACT,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,2BAA2B;YAC3B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC7D,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;gBACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,GAAG,EAAE,GAAG;aACT,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAEpE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,iBAAqC,CAAC;QAE1C,GAAG,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,MAAM,EAAE,UAAU;gBAClB,iBAAiB,EAAE,iBAAiB;aACrC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;wBACb,4DAA4D;wBAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBACnB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC7D,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAChE,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,CAAC,QAAQ,iBAAiB,EAAE;QAE5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAEnE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,YAAoB,KAAK;QAChD,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;YACvE,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;YAEhE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,GAAG,EAAE,GAAG;aACT,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iDAAiD;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAvPD,8BAuPC"}
@@ -35,18 +35,161 @@ export interface Storage {
35
35
  * @param id - Unique identifier for the content
36
36
  */
37
37
  delete(id: string): Promise<void>;
38
+ /**
39
+ * Get a URL for the content (optional)
40
+ * @param id - Unique identifier for the content
41
+ * @param expiresIn - Expiration time in seconds (for presigned URLs)
42
+ * @returns URL or null if not supported
43
+ */
44
+ getUrl?(id: string, expiresIn?: number): Promise<string | null>;
45
+ }
46
+ /**
47
+ * Storage type identifiers
48
+ */
49
+ export type StorageType = 'local' | 's3' | 'r2' | 'gcs' | 'gdrive';
50
+ /**
51
+ * Base configuration for all storage types
52
+ */
53
+ export interface BaseStorageConfig {
54
+ type: StorageType;
55
+ }
56
+ /**
57
+ * Local filesystem storage configuration
58
+ */
59
+ export interface LocalStorageConfig extends BaseStorageConfig {
60
+ type: 'local';
61
+ basePath: string;
62
+ createDirectories?: boolean;
63
+ permissions?: string;
64
+ }
65
+ /**
66
+ * AWS S3 storage configuration
67
+ */
68
+ export interface S3StorageConfig extends BaseStorageConfig {
69
+ type: 's3';
70
+ bucket: string;
71
+ region: string;
72
+ prefix?: string;
73
+ auth?: {
74
+ profile?: string;
75
+ accessKeyId?: string;
76
+ secretAccessKey?: string;
77
+ };
78
+ endpoint?: string;
79
+ publicUrl?: string;
80
+ }
81
+ /**
82
+ * Cloudflare R2 storage configuration
83
+ */
84
+ export interface R2StorageConfig extends BaseStorageConfig {
85
+ type: 'r2';
86
+ bucket: string;
87
+ accountId: string;
88
+ accessKeyId: string;
89
+ secretAccessKey: string;
90
+ prefix?: string;
91
+ publicUrl?: string;
92
+ }
93
+ /**
94
+ * Google Cloud Storage configuration
95
+ */
96
+ export interface GCSStorageConfig extends BaseStorageConfig {
97
+ type: 'gcs';
98
+ bucket: string;
99
+ projectId: string;
100
+ prefix?: string;
101
+ keyFilePath?: string;
102
+ region?: string;
103
+ }
104
+ /**
105
+ * Google Drive storage configuration
106
+ */
107
+ export interface GDriveStorageConfig extends BaseStorageConfig {
108
+ type: 'gdrive';
109
+ folderId?: string;
110
+ clientId?: string;
111
+ clientSecret?: string;
112
+ refreshToken?: string;
113
+ rcloneRemote?: string;
38
114
  }
115
+ /**
116
+ * Union type for all storage configurations
117
+ */
118
+ export type StorageConfig = LocalStorageConfig | S3StorageConfig | R2StorageConfig | GCSStorageConfig | GDriveStorageConfig;
39
119
  /**
40
120
  * Configuration for file manager
41
121
  */
42
122
  export interface FileManagerConfig {
43
123
  /**
44
- * Base path for file storage
124
+ * Base path for file storage (used when no storage is provided)
45
125
  */
46
- basePath: string;
126
+ basePath?: string;
47
127
  /**
48
128
  * Optional storage backend (defaults to LocalStorage)
49
129
  */
50
130
  storage?: Storage;
51
131
  }
132
+ /**
133
+ * Extended file manager config with type-safe storage configuration
134
+ */
135
+ export interface FileManagerStorageConfig {
136
+ /**
137
+ * Storage configuration for automatic backend selection
138
+ */
139
+ storageConfig: StorageConfig;
140
+ }
141
+ /**
142
+ * File operation result with metadata
143
+ */
144
+ export interface FileOperationResult {
145
+ success: boolean;
146
+ message: string;
147
+ url?: string;
148
+ sizeBytes?: number;
149
+ checksum?: string;
150
+ }
151
+ /**
152
+ * Global settings for file operations
153
+ */
154
+ export interface FileGlobalSettings {
155
+ retryAttempts?: number;
156
+ retryDelayMs?: number;
157
+ timeoutSeconds?: number;
158
+ verifyChecksums?: boolean;
159
+ parallelUploads?: number;
160
+ }
161
+ /**
162
+ * Complete file plugin configuration (v2.0 sources format)
163
+ */
164
+ export interface FilePluginConfig {
165
+ schemaVersion: string;
166
+ sources?: Record<string, SourceConfig>;
167
+ globalSettings?: FileGlobalSettings;
168
+ }
169
+ /**
170
+ * Individual source configuration (from config.yaml)
171
+ */
172
+ export interface SourceConfig {
173
+ type: StorageType;
174
+ bucket?: string;
175
+ prefix?: string;
176
+ region?: string;
177
+ projectId?: string;
178
+ accountId?: string;
179
+ folderId?: string;
180
+ local?: {
181
+ basePath: string;
182
+ };
183
+ push?: {
184
+ compress?: boolean;
185
+ keepLocal?: boolean;
186
+ };
187
+ auth?: {
188
+ profile?: string;
189
+ accessKeyId?: string;
190
+ secretAccessKey?: string;
191
+ keyFilePath?: string;
192
+ };
193
+ publicUrl?: string;
194
+ }
52
195
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;;OAGG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,9 @@
12
12
  * - File storage operations
13
13
  * - Documentation management
14
14
  */
15
+ export * from './auth';
16
+ export * from './config';
17
+ export * from './factories';
15
18
  export * from './work';
16
19
  export * from './repo';
17
20
  export * from './spec';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -28,6 +28,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
28
28
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
+ // Authentication primitives
32
+ __exportStar(require("./auth"), exports);
33
+ // Configuration loading
34
+ __exportStar(require("./config"), exports);
35
+ // Manager factories
36
+ __exportStar(require("./factories"), exports);
31
37
  // Work tracking primitives
32
38
  __exportStar(require("./work"), exports);
33
39
  // Repository management primitives
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,yCAAuB;AAEvB,mCAAmC;AACnC,yCAAuB;AAEvB,sCAAsC;AACtC,yCAAuB;AAEvB,qBAAqB;AACrB,yCAAuB;AAEvB,0BAA0B;AAC1B,yCAAuB;AAEvB,2BAA2B;AAC3B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;AAEH,4BAA4B;AAC5B,yCAAuB;AAEvB,wBAAwB;AACxB,2CAAyB;AAEzB,oBAAoB;AACpB,8CAA4B;AAE5B,2BAA2B;AAC3B,yCAAuB;AAEvB,mCAAmC;AACnC,yCAAuB;AAEvB,sCAAsC;AACtC,yCAAuB;AAEvB,qBAAqB;AACrB,yCAAuB;AAEvB,0BAA0B;AAC1B,yCAAuB;AAEvB,2BAA2B;AAC3B,yCAAuB"}
@@ -4,5 +4,6 @@
4
4
  * Session and operational logging.
5
5
  */
6
6
  export { LogManager } from './manager';
7
+ export { LogTypeRegistry } from './type-registry';
7
8
  export * from './types';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,cAAc,SAAS,CAAC"}
@@ -19,8 +19,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.LogManager = void 0;
22
+ exports.LogTypeRegistry = exports.LogManager = void 0;
23
23
  var manager_1 = require("./manager");
24
24
  Object.defineProperty(exports, "LogManager", { enumerable: true, get: function () { return manager_1.LogManager; } });
25
+ var type_registry_1 = require("./type-registry");
26
+ Object.defineProperty(exports, "LogTypeRegistry", { enumerable: true, get: function () { return type_registry_1.LogTypeRegistry; } });
25
27
  __exportStar(require("./types"), exports);
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,iDAAkD;AAAzC,gHAAA,eAAe,OAAA;AACxB,0CAAwB"}
@@ -3,7 +3,17 @@
3
3
  *
4
4
  * Session and operational logging for FABER workflows.
5
5
  */
6
- import { LogConfig, LogEntry, LogStatus, LogWriteOptions, LogListOptions, LogSearchOptions, LogSearchResult, CaptureStartOptions, CaptureResult, CaptureSession, LogAppendOptions, ArchiveResult } from './types';
6
+ import { LogConfig, LogEntry, LogStatus, LogWriteOptions, LogListOptions, LogSearchOptions, LogSearchResult, CaptureStartOptions, CaptureResult, CaptureSession, LogAppendOptions, ArchiveResult, LogTypeDefinition } from './types';
7
+ import { LogTypeRegistry, LogTypeRegistryConfig } from './type-registry';
8
+ /**
9
+ * Extended config for LogManager that includes type registry options
10
+ */
11
+ export interface LogManagerConfig extends LogConfig {
12
+ /** Custom templates path for log types */
13
+ customTemplatesPath?: string;
14
+ /** Type registry configuration */
15
+ typeRegistry?: LogTypeRegistryConfig;
16
+ }
7
17
  /**
8
18
  * Log Manager
9
19
  *
@@ -13,7 +23,24 @@ export declare class LogManager {
13
23
  private config;
14
24
  private logsDir;
15
25
  private activeSession;
16
- constructor(config?: LogConfig);
26
+ private typeRegistry;
27
+ constructor(config?: LogManagerConfig);
28
+ /**
29
+ * Get the type registry instance
30
+ */
31
+ getTypeRegistry(): LogTypeRegistry;
32
+ /**
33
+ * Get all available log types
34
+ */
35
+ getLogTypes(): LogTypeDefinition[];
36
+ /**
37
+ * Get a specific log type by ID
38
+ */
39
+ getLogType(id: string): LogTypeDefinition | null;
40
+ /**
41
+ * Check if a log type exists
42
+ */
43
+ hasLogType(id: string): boolean;
17
44
  /**
18
45
  * Ensure logs directory exists
19
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/logs/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,SAAS,EACT,QAAQ,EAER,SAAS,EACT,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,SAAS,CAAC;AA6EjB;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAA+B;gBAExC,MAAM,CAAC,EAAE,SAAS;IAS9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAyD5C;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAsC1C;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ;IA4BlE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ;IAc9D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,QAAQ,EAAE;IAwB9C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAAE;IAkCxD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYpC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa;IAqDzD;;OAEG;IACH,WAAW,IAAI,aAAa,GAAG,IAAI;IAsCnC;;OAEG;IACH,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAIzC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA0BxE;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa;IAkCjF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/logs/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,SAAS,EACT,QAAQ,EAER,SAAS,EACT,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA2EzE;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,CAAC,EAAE,gBAAgB;IAgBrC;;OAEG;IACH,eAAe,IAAI,eAAe;IAIlC;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAIlC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIhD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAyD5C;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAsC1C;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ;IA4BlE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ;IAc9D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,QAAQ,EAAE;IA+B9C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAAE;IAkCxD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYpC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa;IAqDzD;;OAEG;IACH,WAAW,IAAI,aAAa,GAAG,IAAI;IAsCnC;;OAEG;IACH,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAIzC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA0BxE;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa;IAkCjF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
@@ -43,6 +43,7 @@ const fs = __importStar(require("fs"));
43
43
  const path = __importStar(require("path"));
44
44
  const config_1 = require("../common/config");
45
45
  const errors_1 = require("../common/errors");
46
+ const type_registry_1 = require("./type-registry");
46
47
  /**
47
48
  * Generate a unique log ID
48
49
  */
@@ -119,6 +120,7 @@ class LogManager {
119
120
  config;
120
121
  logsDir;
121
122
  activeSession = null;
123
+ typeRegistry;
122
124
  constructor(config) {
123
125
  const projectRoot = (0, config_1.findProjectRoot)();
124
126
  const defaultConfig = {
@@ -126,6 +128,36 @@ class LogManager {
126
128
  };
127
129
  this.config = config || (0, config_1.loadLogConfig)() || defaultConfig;
128
130
  this.logsDir = this.config.localPath || path.join(projectRoot, 'logs');
131
+ // Initialize type registry
132
+ this.typeRegistry = new type_registry_1.LogTypeRegistry({
133
+ baseDir: projectRoot,
134
+ customManifestPath: this.config.customTemplatesPath,
135
+ ...this.config.typeRegistry,
136
+ });
137
+ }
138
+ /**
139
+ * Get the type registry instance
140
+ */
141
+ getTypeRegistry() {
142
+ return this.typeRegistry;
143
+ }
144
+ /**
145
+ * Get all available log types
146
+ */
147
+ getLogTypes() {
148
+ return this.typeRegistry.getAllTypes();
149
+ }
150
+ /**
151
+ * Get a specific log type by ID
152
+ */
153
+ getLogType(id) {
154
+ return this.typeRegistry.getType(id);
155
+ }
156
+ /**
157
+ * Check if a log type exists
158
+ */
159
+ hasLogType(id) {
160
+ return this.typeRegistry.hasType(id);
129
161
  }
130
162
  /**
131
163
  * Ensure logs directory exists
@@ -241,9 +273,11 @@ class LogManager {
241
273
  * Find a log by ID
242
274
  */
243
275
  findLogById(id) {
244
- // Search through all type directories
245
- const types = ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
246
- for (const type of types) {
276
+ // Search through all type directories (from registry + legacy types)
277
+ const registryTypes = this.typeRegistry.getTypeIds();
278
+ const legacyTypes = ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
279
+ const allTypes = new Set([...registryTypes, ...legacyTypes]);
280
+ for (const type of allTypes) {
247
281
  const typeDir = this.getTypeDir(type);
248
282
  if (!fs.existsSync(typeDir))
249
283
  continue;
@@ -315,10 +349,17 @@ class LogManager {
315
349
  */
316
350
  listLogs(options) {
317
351
  const logs = [];
318
- const types = options?.type
319
- ? [options.type]
320
- : ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
321
- for (const type of types) {
352
+ // Get types from registry + legacy types
353
+ let typesToSearch;
354
+ if (options?.type) {
355
+ typesToSearch = [options.type];
356
+ }
357
+ else {
358
+ const registryTypes = this.typeRegistry.getTypeIds();
359
+ const legacyTypes = ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
360
+ typesToSearch = [...new Set([...registryTypes, ...legacyTypes])];
361
+ }
362
+ for (const type of typesToSearch) {
322
363
  const typeDir = this.getTypeDir(type);
323
364
  if (!fs.existsSync(typeDir))
324
365
  continue;