@mdfriday/foundry 25.7.0 → 25.7.2

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 (162) hide show
  1. package/README.md +4 -0
  2. package/dist/internal/application/incremental-build-coordinator.d.ts +69 -0
  3. package/dist/internal/application/incremental-build-coordinator.d.ts.map +1 -0
  4. package/dist/internal/application/incremental-build-coordinator.js +184 -0
  5. package/dist/internal/application/incremental-build-coordinator.js.map +1 -0
  6. package/dist/internal/application/incremental-ssg.d.ts +8 -0
  7. package/dist/internal/application/incremental-ssg.d.ts.map +1 -0
  8. package/dist/internal/application/incremental-ssg.js +23 -0
  9. package/dist/internal/application/incremental-ssg.js.map +1 -0
  10. package/dist/internal/application/ssg.d.ts +19 -1
  11. package/dist/internal/application/ssg.d.ts.map +1 -1
  12. package/dist/internal/application/ssg.js +29 -4
  13. package/dist/internal/application/ssg.js.map +1 -1
  14. package/dist/internal/application/test-incremental-ssg.d.ts +9 -0
  15. package/dist/internal/application/test-incremental-ssg.d.ts.map +1 -0
  16. package/dist/internal/application/test-incremental-ssg.js +80 -0
  17. package/dist/internal/application/test-incremental-ssg.js.map +1 -0
  18. package/dist/internal/application/test-ssg.d.ts.map +1 -1
  19. package/dist/internal/application/test-ssg.js +1 -1
  20. package/dist/internal/application/test-ssg.js.map +1 -1
  21. package/dist/internal/domain/config/entity/dir.d.ts +3 -2
  22. package/dist/internal/domain/config/entity/dir.d.ts.map +1 -1
  23. package/dist/internal/domain/config/entity/dir.js +5 -4
  24. package/dist/internal/domain/config/entity/dir.js.map +1 -1
  25. package/dist/internal/domain/config/factory/config.d.ts.map +1 -1
  26. package/dist/internal/domain/config/factory/config.js +5 -2
  27. package/dist/internal/domain/config/factory/config.js.map +1 -1
  28. package/dist/internal/domain/content/entity/content.d.ts +6 -2
  29. package/dist/internal/domain/content/entity/content.d.ts.map +1 -1
  30. package/dist/internal/domain/content/entity/content.js +51 -16
  31. package/dist/internal/domain/content/entity/content.js.map +1 -1
  32. package/dist/internal/domain/content/entity/pagebuilder.d.ts.map +1 -1
  33. package/dist/internal/domain/content/entity/pagebuilder.js +5 -1
  34. package/dist/internal/domain/content/entity/pagebuilder.js.map +1 -1
  35. package/dist/internal/domain/content/entity/pagecollector.d.ts.map +1 -1
  36. package/dist/internal/domain/content/entity/pagecollector.js +10 -8
  37. package/dist/internal/domain/content/entity/pagecollector.js.map +1 -1
  38. package/dist/internal/domain/content/entity/pagesource.d.ts.map +1 -1
  39. package/dist/internal/domain/content/entity/pagesource.js +1 -2
  40. package/dist/internal/domain/content/entity/pagesource.js.map +1 -1
  41. package/dist/internal/domain/content/type.d.ts +3 -0
  42. package/dist/internal/domain/content/type.d.ts.map +1 -1
  43. package/dist/internal/domain/content/type.js.map +1 -1
  44. package/dist/internal/domain/content/vo/identity.d.ts +4 -0
  45. package/dist/internal/domain/content/vo/identity.d.ts.map +1 -1
  46. package/dist/internal/domain/content/vo/identity.js +17 -0
  47. package/dist/internal/domain/content/vo/identity.js.map +1 -1
  48. package/dist/internal/domain/fs/entity/basefs.d.ts.map +1 -1
  49. package/dist/internal/domain/fs/entity/basefs.js +21 -9
  50. package/dist/internal/domain/fs/entity/basefs.js.map +1 -1
  51. package/dist/internal/domain/fs/entity/fs.d.ts +1 -0
  52. package/dist/internal/domain/fs/entity/fs.d.ts.map +1 -1
  53. package/dist/internal/domain/fs/entity/fs.js +4 -0
  54. package/dist/internal/domain/fs/entity/fs.js.map +1 -1
  55. package/dist/internal/domain/fs/factory/fs.d.ts +1 -0
  56. package/dist/internal/domain/fs/factory/fs.d.ts.map +1 -1
  57. package/dist/internal/domain/fs/factory/fs.js.map +1 -1
  58. package/dist/internal/domain/fs/vo/file.d.ts +1 -0
  59. package/dist/internal/domain/fs/vo/file.d.ts.map +1 -1
  60. package/dist/internal/domain/fs/vo/file.js +6 -3
  61. package/dist/internal/domain/fs/vo/file.js.map +1 -1
  62. package/dist/internal/domain/fs/vo/fileinfo.d.ts.map +1 -1
  63. package/dist/internal/domain/fs/vo/fileinfo.js +1 -2
  64. package/dist/internal/domain/fs/vo/fileinfo.js.map +1 -1
  65. package/dist/internal/domain/fs/vo/filemeta.d.ts +0 -4
  66. package/dist/internal/domain/fs/vo/filemeta.d.ts.map +1 -1
  67. package/dist/internal/domain/fs/vo/filemeta.js +0 -9
  68. package/dist/internal/domain/fs/vo/filemeta.js.map +1 -1
  69. package/dist/internal/domain/fs/vo/incremental-file-collector.d.ts +3 -0
  70. package/dist/internal/domain/fs/vo/incremental-file-collector.d.ts.map +1 -0
  71. package/dist/internal/domain/fs/vo/incremental-file-collector.js +37 -0
  72. package/dist/internal/domain/fs/vo/incremental-file-collector.js.map +1 -0
  73. package/dist/internal/domain/fs/vo/overlay-factory.d.ts +1 -0
  74. package/dist/internal/domain/fs/vo/overlay-factory.d.ts.map +1 -1
  75. package/dist/internal/domain/fs/vo/overlay-factory.js +1 -38
  76. package/dist/internal/domain/fs/vo/overlay-factory.js.map +1 -1
  77. package/dist/internal/domain/fs/vo/walkway.d.ts.map +1 -1
  78. package/dist/internal/domain/fs/vo/walkway.js +1 -4
  79. package/dist/internal/domain/fs/vo/walkway.js.map +1 -1
  80. package/dist/internal/domain/markdown/type.d.ts +1 -0
  81. package/dist/internal/domain/markdown/type.d.ts.map +1 -1
  82. package/dist/internal/domain/markdown/type.js.map +1 -1
  83. package/dist/internal/domain/markdown/vo/shortcode.d.ts +1 -0
  84. package/dist/internal/domain/markdown/vo/shortcode.d.ts.map +1 -1
  85. package/dist/internal/domain/markdown/vo/shortcode.js +3 -0
  86. package/dist/internal/domain/markdown/vo/shortcode.js.map +1 -1
  87. package/dist/internal/domain/site/entity/page.d.ts +4 -2
  88. package/dist/internal/domain/site/entity/page.d.ts.map +1 -1
  89. package/dist/internal/domain/site/entity/page.js +13 -2
  90. package/dist/internal/domain/site/entity/page.js.map +1 -1
  91. package/dist/internal/domain/site/entity/site.d.ts +2 -1
  92. package/dist/internal/domain/site/entity/site.d.ts.map +1 -1
  93. package/dist/internal/domain/site/entity/site.js +9 -1
  94. package/dist/internal/domain/site/entity/site.js.map +1 -1
  95. package/dist/internal/domain/template/entity/template.d.ts.map +1 -1
  96. package/dist/internal/domain/template/entity/template.js +3 -0
  97. package/dist/internal/domain/template/entity/template.js.map +1 -1
  98. package/dist/pkg/log/logger.d.ts.map +1 -1
  99. package/dist/pkg/log/logger.js +1 -0
  100. package/dist/pkg/log/logger.js.map +1 -1
  101. package/dist/pkg/log/manager.js +1 -1
  102. package/dist/pkg/web/server/livereload-server.d.ts +23 -0
  103. package/dist/pkg/web/server/livereload-server.d.ts.map +1 -0
  104. package/dist/pkg/web/server/livereload-server.js +370 -0
  105. package/dist/pkg/web/server/livereload-server.js.map +1 -0
  106. package/dist/pkg/web/server/types.d.ts +25 -0
  107. package/dist/pkg/web/server/types.d.ts.map +1 -0
  108. package/dist/pkg/web/server/types.js +3 -0
  109. package/dist/pkg/web/server/types.js.map +1 -0
  110. package/dist/pkg/web/watcher/content-file-watcher.d.ts +20 -0
  111. package/dist/pkg/web/watcher/content-file-watcher.d.ts.map +1 -0
  112. package/dist/pkg/web/watcher/content-file-watcher.js +154 -0
  113. package/dist/pkg/web/watcher/content-file-watcher.js.map +1 -0
  114. package/dist/pkg/web/watcher/types.d.ts +18 -0
  115. package/dist/pkg/web/watcher/types.d.ts.map +1 -0
  116. package/dist/pkg/web/watcher/types.js +3 -0
  117. package/dist/pkg/web/watcher/types.js.map +1 -0
  118. package/package.json +7 -2
  119. package/dist/internal/domain/markdown/examples/obsidian-example.d.ts +0 -79
  120. package/dist/internal/domain/markdown/examples/obsidian-example.d.ts.map +0 -1
  121. package/dist/internal/domain/markdown/examples/obsidian-example.js +0 -302
  122. package/dist/internal/domain/markdown/examples/obsidian-example.js.map +0 -1
  123. package/dist/internal/domain/markdown/examples/shortcode.d.ts +0 -43
  124. package/dist/internal/domain/markdown/examples/shortcode.d.ts.map +0 -1
  125. package/dist/internal/domain/markdown/examples/shortcode.js +0 -99
  126. package/dist/internal/domain/markdown/examples/shortcode.js.map +0 -1
  127. package/dist/internal/domain/prompt/entity/collector.d.ts +0 -88
  128. package/dist/internal/domain/prompt/entity/collector.d.ts.map +0 -1
  129. package/dist/internal/domain/prompt/entity/collector.js +0 -254
  130. package/dist/internal/domain/prompt/entity/collector.js.map +0 -1
  131. package/dist/internal/domain/prompt/entity/finder.d.ts +0 -88
  132. package/dist/internal/domain/prompt/entity/finder.d.ts.map +0 -1
  133. package/dist/internal/domain/prompt/entity/finder.js +0 -293
  134. package/dist/internal/domain/prompt/entity/finder.js.map +0 -1
  135. package/dist/internal/domain/prompt/entity/hub.d.ts +0 -112
  136. package/dist/internal/domain/prompt/entity/hub.d.ts.map +0 -1
  137. package/dist/internal/domain/prompt/entity/hub.js +0 -259
  138. package/dist/internal/domain/prompt/entity/hub.js.map +0 -1
  139. package/dist/internal/domain/prompt/entity/prompt.d.ts +0 -133
  140. package/dist/internal/domain/prompt/entity/prompt.d.ts.map +0 -1
  141. package/dist/internal/domain/prompt/entity/prompt.js +0 -237
  142. package/dist/internal/domain/prompt/entity/prompt.js.map +0 -1
  143. package/dist/internal/domain/prompt/factory/prompt.d.ts +0 -55
  144. package/dist/internal/domain/prompt/factory/prompt.d.ts.map +0 -1
  145. package/dist/internal/domain/prompt/factory/prompt.js +0 -212
  146. package/dist/internal/domain/prompt/factory/prompt.js.map +0 -1
  147. package/dist/internal/domain/prompt/index.d.ts +0 -10
  148. package/dist/internal/domain/prompt/index.d.ts.map +0 -1
  149. package/dist/internal/domain/prompt/index.js +0 -72
  150. package/dist/internal/domain/prompt/index.js.map +0 -1
  151. package/dist/internal/domain/prompt/type.d.ts +0 -180
  152. package/dist/internal/domain/prompt/type.d.ts.map +0 -1
  153. package/dist/internal/domain/prompt/type.js +0 -23
  154. package/dist/internal/domain/prompt/type.js.map +0 -1
  155. package/dist/internal/domain/prompt/vo/file.d.ts +0 -103
  156. package/dist/internal/domain/prompt/vo/file.d.ts.map +0 -1
  157. package/dist/internal/domain/prompt/vo/file.js +0 -265
  158. package/dist/internal/domain/prompt/vo/file.js.map +0 -1
  159. package/dist/internal/domain/prompt/vo/rule.d.ts +0 -139
  160. package/dist/internal/domain/prompt/vo/rule.d.ts.map +0 -1
  161. package/dist/internal/domain/prompt/vo/rule.js +0 -268
  162. package/dist/internal/domain/prompt/vo/rule.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../../../internal/domain/prompt/entity/collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAuB,WAAW,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAW,MAAM,YAAY,CAAC;AAG3C;;;GAGG;AACH,qBAAa,SAAU,YAAW,eAAe;IAC/C,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,KAAK,CAA2B;gBAE5B,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW;IAK1C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B9B;;OAEG;YACW,UAAU;IAgCxB;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C;;OAEG;IACH,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAI7B;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAYrD;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAazD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,WAAW,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;KACpD;IAyBD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;IAoBF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC,EAC/D,GAAG,CAAC,EAAE,WAAW,GAChB,SAAS,CAkDX"}
@@ -1,254 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Collector = void 0;
4
- exports.newCollector = newCollector;
5
- exports.createMockCollector = createMockCollector;
6
- const type_1 = require("../type");
7
- const file_1 = require("../vo/file");
8
- /**
9
- * Collector entity for collecting prompt files
10
- * TypeScript version of Go's Collector struct
11
- */
12
- class Collector {
13
- constructor(fs, log) {
14
- this.files = new Map();
15
- this.fs = fs;
16
- this.log = log;
17
- }
18
- /**
19
- * Collect files from filesystem
20
- */
21
- async collect() {
22
- const startTime = Date.now();
23
- const processLog = this.log.withField('step', 'collect');
24
- try {
25
- const dirPath = "";
26
- const promptFileSystem = this.fs.promptFs();
27
- const root = await promptFileSystem.stat(dirPath);
28
- await this.collectDir(dirPath, root);
29
- const endTime = Date.now();
30
- processLog.info(`Collected ${this.files.size} prompts in ${endTime - startTime}ms`);
31
- }
32
- catch (error) {
33
- // Check if it's a "not exist" error - that's okay, like in Go version
34
- if (error.message?.includes('ENOENT') ||
35
- error.message?.includes('no such file') ||
36
- error.message?.includes('file not found')) {
37
- return; // Return silently like Go version
38
- }
39
- const message = error instanceof Error ? error.message : String(error);
40
- throw new type_1.PromptError(`Failed to collect prompts: ${message}`, 'COLLECTION_FAILED');
41
- }
42
- }
43
- /**
44
- * Collect files from a directory
45
- */
46
- async collectDir(path, root) {
47
- // Walk through the prompts directory
48
- await this.fs.walkPrompts(path, {
49
- walkFn: async (filePath, fi) => {
50
- // The walkFn is called for each file
51
- return;
52
- },
53
- hookPre: async (dir, dirPath, readdir) => {
54
- if (readdir.length === 0) {
55
- return [];
56
- }
57
- for (const fi of readdir) {
58
- if (fi.isDir()) {
59
- continue;
60
- }
61
- try {
62
- const file = (0, file_1.newFile)(fi);
63
- await this.handleFile(file);
64
- }
65
- catch (error) {
66
- const message = error instanceof Error ? error.message : String(error);
67
- this.log.warn(`Failed to handle file ${fi.name()}: ${message}`);
68
- }
69
- }
70
- // Continue walking (keep walking like Go version)
71
- return readdir;
72
- }
73
- }, { info: root }); // Pass root info like Go version
74
- }
75
- /**
76
- * Handle a single file
77
- */
78
- async handleFile(file) {
79
- if (file.isDir()) {
80
- return;
81
- }
82
- try {
83
- const name = file.relativeFilename();
84
- const cleanName = name.startsWith('/') ? name.substring(1) : name;
85
- // Only collect prompt files (based on extension)
86
- if (file.isPromptFile()) {
87
- this.files.set(cleanName, file);
88
- }
89
- }
90
- catch (error) {
91
- const message = error instanceof Error ? error.message : String(error);
92
- throw new type_1.PromptError(`Failed to handle file: ${message}`, 'FILE_HANDLE_FAILED');
93
- }
94
- }
95
- /**
96
- * Get collected files
97
- */
98
- getFiles() {
99
- return new Map(this.files);
100
- }
101
- /**
102
- * Get files by pattern
103
- */
104
- getFilesByPattern(pattern) {
105
- const filtered = new Map();
106
- for (const [path, file] of this.files) {
107
- if (pattern.test(path) || pattern.test(file.name())) {
108
- filtered.set(path, file);
109
- }
110
- }
111
- return filtered;
112
- }
113
- /**
114
- * Get files by extension
115
- */
116
- getFilesByExtension(extension) {
117
- const filtered = new Map();
118
- const normalizedExt = extension.startsWith('.') ? extension : `.${extension}`;
119
- for (const [path, file] of this.files) {
120
- if (file.getExtension().toLowerCase() === normalizedExt.toLowerCase()) {
121
- filtered.set(path, file);
122
- }
123
- }
124
- return filtered;
125
- }
126
- /**
127
- * Clear collected files
128
- */
129
- clear() {
130
- this.files.clear();
131
- }
132
- /**
133
- * Get collection statistics
134
- */
135
- getStats() {
136
- let totalSize = 0;
137
- let largestFile = null;
138
- const fileTypes = new Map();
139
- for (const [path, file] of this.files) {
140
- const size = file.size();
141
- totalSize += size;
142
- if (!largestFile || size > largestFile.size) {
143
- largestFile = { name: path, size };
144
- }
145
- const ext = file.getExtension().toLowerCase() || '.no-extension';
146
- fileTypes.set(ext, (fileTypes.get(ext) || 0) + 1);
147
- }
148
- return {
149
- totalFiles: this.files.size,
150
- totalSize,
151
- fileTypes,
152
- largestFile,
153
- };
154
- }
155
- /**
156
- * Validate collected files
157
- */
158
- async validateFiles() {
159
- let valid = 0;
160
- let invalid = 0;
161
- const errors = [];
162
- for (const [path, file] of this.files) {
163
- try {
164
- // Try to read content to validate file
165
- await file.content();
166
- valid++;
167
- }
168
- catch (error) {
169
- invalid++;
170
- const message = error instanceof Error ? error.message : String(error);
171
- errors.push({ path, error: message });
172
- }
173
- }
174
- return { valid, invalid, errors };
175
- }
176
- /**
177
- * Reload collection
178
- */
179
- async reload() {
180
- this.clear();
181
- await this.collect();
182
- }
183
- /**
184
- * Check if collection is empty
185
- */
186
- isEmpty() {
187
- return this.files.size === 0;
188
- }
189
- /**
190
- * Get file count
191
- */
192
- size() {
193
- return this.files.size;
194
- }
195
- }
196
- exports.Collector = Collector;
197
- /**
198
- * Create a new Collector instance
199
- */
200
- function newCollector(fs, log) {
201
- return new Collector(fs, log);
202
- }
203
- /**
204
- * Create a mock Collector for testing
205
- */
206
- function createMockCollector(files, log) {
207
- // Create a mock file system
208
- const mockFs = {
209
- promptFs: () => ({}),
210
- walkPrompts: async (start, cb, conf) => {
211
- const mockFiles = files.map(f => {
212
- const mockFileInfo = {
213
- name: () => f.name,
214
- size: () => f.content.length,
215
- mode: () => 0o644,
216
- modTime: () => f.modTime || new Date(),
217
- isDir: () => false,
218
- sys: () => null,
219
- open: async () => ({
220
- close: async () => { },
221
- stat: async () => ({
222
- name: () => f.name,
223
- size: () => f.content.length,
224
- mode: () => 0o644,
225
- modTime: () => f.modTime || new Date(),
226
- isDir: () => false,
227
- sys: () => null,
228
- }),
229
- read: async (buffer) => {
230
- const encoder = new TextEncoder();
231
- const encoded = encoder.encode(f.content);
232
- const bytesToCopy = Math.min(buffer.length, encoded.length);
233
- buffer.set(encoded.slice(0, bytesToCopy));
234
- return { bytesRead: bytesToCopy, buffer };
235
- },
236
- }),
237
- };
238
- return mockFileInfo;
239
- });
240
- if (cb.hookPre) {
241
- await cb.hookPre({}, start, mockFiles);
242
- }
243
- }
244
- };
245
- const mockLog = log || {
246
- withField: (key, value) => mockLog,
247
- info: (message) => { },
248
- debug: (message) => { },
249
- warn: (message) => { },
250
- error: (message) => { },
251
- };
252
- return new Collector(mockFs, mockLog);
253
- }
254
- //# sourceMappingURL=collector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../internal/domain/prompt/entity/collector.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- import { PromptFinder, PromptInfo } from '../type';
2
- import { File } from '../vo/file';
3
- /**
4
- * Finder entity for finding and retrieving prompts
5
- * TypeScript version of Go's Finder struct
6
- */
7
- export declare class Finder implements PromptFinder {
8
- private files;
9
- private contentCache;
10
- /**
11
- * Set files map
12
- */
13
- setFiles(files: Map<string, File>): void;
14
- /**
15
- * 预加载所有文件内容到内存缓存(新增方法)
16
- */
17
- preloadAllContent(): Promise<void>;
18
- /**
19
- * 同步获取内容(新增方法)- 依赖预加载
20
- */
21
- getContentSync(name: string): string;
22
- /**
23
- * Get prompt raw content by name
24
- */
25
- promptRawContent(name: string): Promise<string>;
26
- /**
27
- * Check if prompt exists
28
- */
29
- hasPrompt(name: string): boolean;
30
- /**
31
- * Get all prompts
32
- */
33
- getAllPrompts(): PromptInfo[];
34
- /**
35
- * Search prompts by pattern
36
- */
37
- searchPrompts(pattern: RegExp): PromptInfo[];
38
- /**
39
- * Get prompt content with caching
40
- */
41
- getPromptContent(name: string): Promise<{
42
- content: string;
43
- metadata: PromptInfo;
44
- }>;
45
- /**
46
- * Get all prompt names
47
- */
48
- getPromptNames(): string[];
49
- /**
50
- * Get prompts by extension
51
- */
52
- getPromptsByExtension(extension: string): PromptInfo[];
53
- /**
54
- * Get prompts modified after date
55
- */
56
- getPromptsModifiedAfter(date: Date): PromptInfo[];
57
- /**
58
- * Get largest prompts
59
- */
60
- getLargestPrompts(limit?: number): PromptInfo[];
61
- /**
62
- * Get finder statistics
63
- */
64
- getStats(): {
65
- totalPrompts: number;
66
- totalSize: number;
67
- averageSize: number;
68
- fileTypes: Map<string, number>;
69
- lastModified: Date | null;
70
- };
71
- /**
72
- * Clear all files
73
- */
74
- clear(): void;
75
- /**
76
- * Get files count
77
- */
78
- size(): number;
79
- /**
80
- * Check if finder is empty
81
- */
82
- isEmpty(): boolean;
83
- }
84
- /**
85
- * Create a new Finder instance
86
- */
87
- export declare function newFinder(): Finder;
88
- //# sourceMappingURL=finder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finder.d.ts","sourceRoot":"","sources":["../../../../../internal/domain/prompt/entity/finder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAe,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,qBAAa,MAAO,YAAW,YAAY;IACzC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,YAAY,CAA6B;IAEjD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAIxC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAwCpC;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBrD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAwChC;;OAEG;IACH,aAAa,IAAI,UAAU,EAAE;IAgB7B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAkB5C;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAC;KACtB,CAAC;IA0BF;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAmBtD;;OAEG;IACH,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IAkBjD;;OAEG;IACH,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAOnD;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;KAC3B;IAyBD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,OAAO,IAAI,OAAO;CAGnB;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -1,293 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Finder = void 0;
4
- exports.newFinder = newFinder;
5
- const type_1 = require("../type");
6
- /**
7
- * Finder entity for finding and retrieving prompts
8
- * TypeScript version of Go's Finder struct
9
- */
10
- class Finder {
11
- constructor() {
12
- this.files = new Map();
13
- this.contentCache = new Map();
14
- }
15
- /**
16
- * Set files map
17
- */
18
- setFiles(files) {
19
- this.files = files;
20
- }
21
- /**
22
- * 预加载所有文件内容到内存缓存(新增方法)
23
- */
24
- async preloadAllContent() {
25
- const promises = [];
26
- console.log(`[DEBUG] Preloading content for ${this.files.size} files...`);
27
- for (const [path, file] of this.files) {
28
- console.log(`[DEBUG] Found file in collection: "${path}" -> ${file.name()}`);
29
- promises.push(file.contentAsString().then(content => {
30
- this.contentCache.set(path, content);
31
- console.log(`[DEBUG] Cached content for: "${path}"`);
32
- }).catch(error => {
33
- console.error(`Failed to preload content for ${path}:`, error);
34
- this.contentCache.set(path, ''); // 设置空内容避免后续错误
35
- }));
36
- }
37
- await Promise.all(promises);
38
- console.log(`[DEBUG] Content cache keys: [${Array.from(this.contentCache.keys()).join(', ')}]`);
39
- }
40
- /**
41
- * 同步获取内容(新增方法)- 依赖预加载
42
- */
43
- getContentSync(name) {
44
- console.log(`[DEBUG] getContentSync called with: "${name}"`);
45
- if (this.contentCache.has(name)) {
46
- console.log(`[DEBUG] Found direct match for: "${name}"`);
47
- return this.contentCache.get(name) || '';
48
- }
49
- // 尝试多种路径格式匹配
50
- const pathVariants = [
51
- name, // 原始路径
52
- name.startsWith('/') ? name.substring(1) : name, // 移除前导斜杠
53
- name.startsWith('prompts/') ? name.substring(8) : name, // 移除 "prompts/" 前缀
54
- name.startsWith('/prompts/') ? name.substring(9) : name, // 移除 "/prompts/" 前缀
55
- ];
56
- // 同时也尝试为不带前缀的路径添加前缀
57
- if (!name.startsWith('prompts/') && !name.startsWith('/prompts/')) {
58
- pathVariants.push(`prompts/${name}`);
59
- pathVariants.push(`/prompts/${name}`);
60
- }
61
- // 移除重复项
62
- const uniqueVariants = [...new Set(pathVariants)];
63
- console.log(`[DEBUG] Trying path variants: [${uniqueVariants.join(', ')}]`);
64
- for (const variant of uniqueVariants) {
65
- console.log(`[DEBUG] Checking variant: "${variant}"`);
66
- if (this.contentCache.has(variant)) {
67
- console.log(`[DEBUG] Found match for variant: "${variant}"`);
68
- return this.contentCache.get(variant) || '';
69
- }
70
- }
71
- // 如果缓存中没有找到,抛出错误
72
- console.log(`[DEBUG] No match found for any variant of: "${name}"`);
73
- console.log(`[DEBUG] Available cache keys: [${Array.from(this.contentCache.keys()).join(', ')}]`);
74
- throw new Error(`Prompt not found: ${name}. Tried variants: ${uniqueVariants.join(', ')}`);
75
- }
76
- /**
77
- * Get prompt raw content by name
78
- */
79
- async promptRawContent(name) {
80
- if (this.contentCache.has(name)) {
81
- return this.contentCache.get(name) || '';
82
- }
83
- for (const [path, file] of this.files) {
84
- if (path === name) {
85
- try {
86
- const content = await file.contentAsString();
87
- this.contentCache.set(name, content);
88
- return content;
89
- }
90
- catch (error) {
91
- const message = error instanceof Error ? error.message : String(error);
92
- throw new type_1.PromptError(`Failed to read content for prompt ${name}: ${message}`, 'CONTENT_READ_FAILED');
93
- }
94
- }
95
- }
96
- throw new type_1.PromptError(`Prompt not found: ${name}`, 'PROMPT_NOT_FOUND');
97
- }
98
- /**
99
- * Check if prompt exists
100
- */
101
- hasPrompt(name) {
102
- console.log(`[DEBUG] hasPrompt called with: "${name}"`);
103
- // 直接检查
104
- if (this.files.has(name)) {
105
- console.log(`[DEBUG] hasPrompt: Found direct match for: "${name}"`);
106
- return true;
107
- }
108
- // 尝试多种路径格式匹配(与 getContentSync 保持一致)
109
- const pathVariants = [
110
- name, // 原始路径
111
- name.startsWith('/') ? name.substring(1) : name, // 移除前导斜杠
112
- name.startsWith('prompts/') ? name.substring(8) : name, // 移除 "prompts/" 前缀
113
- name.startsWith('/prompts/') ? name.substring(9) : name, // 移除 "/prompts/" 前缀
114
- ];
115
- // 同时也尝试为不带前缀的路径添加前缀
116
- if (!name.startsWith('prompts/') && !name.startsWith('/prompts/')) {
117
- pathVariants.push(`prompts/${name}`);
118
- pathVariants.push(`/prompts/${name}`);
119
- }
120
- // 移除重复项
121
- const uniqueVariants = [...new Set(pathVariants)];
122
- console.log(`[DEBUG] hasPrompt: Trying path variants: [${uniqueVariants.join(', ')}]`);
123
- for (const variant of uniqueVariants) {
124
- console.log(`[DEBUG] hasPrompt: Checking variant: "${variant}"`);
125
- if (this.files.has(variant)) {
126
- console.log(`[DEBUG] hasPrompt: Found match for variant: "${variant}"`);
127
- return true;
128
- }
129
- }
130
- console.log(`[DEBUG] hasPrompt: No match found for any variant of: "${name}"`);
131
- console.log(`[DEBUG] hasPrompt: Available file keys: [${Array.from(this.files.keys()).join(', ')}]`);
132
- return false;
133
- }
134
- /**
135
- * Get all prompts
136
- */
137
- getAllPrompts() {
138
- const prompts = [];
139
- for (const [path, file] of this.files) {
140
- prompts.push({
141
- name: file.name(),
142
- path,
143
- content: '', // Content not loaded for performance
144
- size: file.size(),
145
- modTime: file.modTime(),
146
- });
147
- }
148
- return prompts;
149
- }
150
- /**
151
- * Search prompts by pattern
152
- */
153
- searchPrompts(pattern) {
154
- const results = [];
155
- for (const [path, file] of this.files) {
156
- if (pattern.test(path) || pattern.test(file.name())) {
157
- results.push({
158
- name: file.name(),
159
- path,
160
- content: '', // Content not loaded for performance
161
- size: file.size(),
162
- modTime: file.modTime(),
163
- });
164
- }
165
- }
166
- return results;
167
- }
168
- /**
169
- * Get prompt content with caching
170
- */
171
- async getPromptContent(name) {
172
- const file = this.files.get(name);
173
- if (!file) {
174
- throw new type_1.PromptError(`Prompt not found: ${name}`, 'PROMPT_NOT_FOUND');
175
- }
176
- try {
177
- const content = await file.contentAsString();
178
- const metadata = {
179
- name: file.name(),
180
- path: name,
181
- content,
182
- size: file.size(),
183
- modTime: file.modTime(),
184
- };
185
- return { content, metadata };
186
- }
187
- catch (error) {
188
- const message = error instanceof Error ? error.message : String(error);
189
- throw new type_1.PromptError(`Failed to get prompt content for ${name}: ${message}`, 'CONTENT_RETRIEVAL_FAILED');
190
- }
191
- }
192
- /**
193
- * Get all prompt names
194
- */
195
- getPromptNames() {
196
- return Array.from(this.files.keys());
197
- }
198
- /**
199
- * Get prompts by extension
200
- */
201
- getPromptsByExtension(extension) {
202
- const results = [];
203
- const normalizedExt = extension.startsWith('.') ? extension : `.${extension}`;
204
- for (const [path, file] of this.files) {
205
- if (file.getExtension().toLowerCase() === normalizedExt.toLowerCase()) {
206
- results.push({
207
- name: file.name(),
208
- path,
209
- content: '', // Content not loaded for performance
210
- size: file.size(),
211
- modTime: file.modTime(),
212
- });
213
- }
214
- }
215
- return results;
216
- }
217
- /**
218
- * Get prompts modified after date
219
- */
220
- getPromptsModifiedAfter(date) {
221
- const results = [];
222
- for (const [path, file] of this.files) {
223
- if (file.modTime() > date) {
224
- results.push({
225
- name: file.name(),
226
- path,
227
- content: '', // Content not loaded for performance
228
- size: file.size(),
229
- modTime: file.modTime(),
230
- });
231
- }
232
- }
233
- return results;
234
- }
235
- /**
236
- * Get largest prompts
237
- */
238
- getLargestPrompts(limit = 10) {
239
- const allPrompts = this.getAllPrompts();
240
- return allPrompts
241
- .sort((a, b) => b.size - a.size)
242
- .slice(0, limit);
243
- }
244
- /**
245
- * Get finder statistics
246
- */
247
- getStats() {
248
- let totalSize = 0;
249
- let lastModified = null;
250
- const fileTypes = new Map();
251
- for (const [, file] of this.files) {
252
- totalSize += file.size();
253
- if (!lastModified || file.modTime() > lastModified) {
254
- lastModified = file.modTime();
255
- }
256
- const ext = file.getExtension().toLowerCase();
257
- fileTypes.set(ext, (fileTypes.get(ext) || 0) + 1);
258
- }
259
- return {
260
- totalPrompts: this.files.size,
261
- totalSize,
262
- averageSize: this.files.size > 0 ? totalSize / this.files.size : 0,
263
- fileTypes,
264
- lastModified,
265
- };
266
- }
267
- /**
268
- * Clear all files
269
- */
270
- clear() {
271
- this.files.clear();
272
- }
273
- /**
274
- * Get files count
275
- */
276
- size() {
277
- return this.files.size;
278
- }
279
- /**
280
- * Check if finder is empty
281
- */
282
- isEmpty() {
283
- return this.files.size === 0;
284
- }
285
- }
286
- exports.Finder = Finder;
287
- /**
288
- * Create a new Finder instance
289
- */
290
- function newFinder() {
291
- return new Finder();
292
- }
293
- //# sourceMappingURL=finder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finder.js","sourceRoot":"","sources":["../../../../../internal/domain/prompt/entity/finder.ts"],"names":[],"mappings":"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"}