pupt 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +94 -58
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +4 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +60 -11
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/cache.d.ts +9 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +31 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/config.d.ts +1 -2
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +30 -57
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/edit.d.ts.map +1 -1
- package/dist/commands/edit.js +5 -2
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/init-refactored.d.ts.map +1 -1
- package/dist/commands/init-refactored.js +0 -3
- package/dist/commands/init-refactored.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +59 -68
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +9 -9
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +76 -178
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +3 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +13 -9
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/uninstall.d.ts +2 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +45 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +113 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/config-manager.d.ts +3 -10
- package/dist/config/config-manager.d.ts.map +1 -1
- package/dist/config/config-manager.js +23 -140
- package/dist/config/config-manager.js.map +1 -1
- package/dist/config/global-paths.d.ts +5 -0
- package/dist/config/global-paths.d.ts.map +1 -0
- package/dist/config/global-paths.js +16 -0
- package/dist/config/global-paths.js.map +1 -0
- package/dist/config/migration.d.ts.map +1 -1
- package/dist/config/migration.js +69 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/schemas/config-schema.d.ts +863 -196
- package/dist/schemas/config-schema.d.ts.map +1 -1
- package/dist/schemas/config-schema.js +51 -27
- package/dist/schemas/config-schema.js.map +1 -1
- package/dist/services/input-collector.d.ts.map +1 -1
- package/dist/services/input-collector.js +7 -1
- package/dist/services/input-collector.js.map +1 -1
- package/dist/services/module-cache.d.ts +42 -0
- package/dist/services/module-cache.d.ts.map +1 -0
- package/dist/services/module-cache.js +205 -0
- package/dist/services/module-cache.js.map +1 -0
- package/dist/services/module-entry-builder.d.ts +20 -0
- package/dist/services/module-entry-builder.d.ts.map +1 -0
- package/dist/services/module-entry-builder.js +67 -0
- package/dist/services/module-entry-builder.js.map +1 -0
- package/dist/services/output-capture-service.d.ts.map +1 -1
- package/dist/services/output-capture-service.js +2 -1
- package/dist/services/output-capture-service.js.map +1 -1
- package/dist/services/package-manager.d.ts +18 -0
- package/dist/services/package-manager.d.ts.map +1 -0
- package/dist/services/package-manager.js +141 -0
- package/dist/services/package-manager.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +2 -2
- package/dist/services/prompt-resolver.d.ts.map +1 -1
- package/dist/services/prompt-resolver.js +9 -10
- package/dist/services/prompt-resolver.js.map +1 -1
- package/dist/services/pupt-prompt-source.d.ts +16 -0
- package/dist/services/pupt-prompt-source.d.ts.map +1 -0
- package/dist/services/pupt-prompt-source.js +73 -0
- package/dist/services/pupt-prompt-source.js.map +1 -0
- package/dist/services/pupt-service.d.ts +11 -25
- package/dist/services/pupt-service.d.ts.map +1 -1
- package/dist/services/pupt-service.js +31 -179
- package/dist/services/pupt-service.js.map +1 -1
- package/dist/services/review-data-builder.d.ts +4 -1
- package/dist/services/review-data-builder.d.ts.map +1 -1
- package/dist/services/review-data-builder.js +4 -2
- package/dist/services/review-data-builder.js.map +1 -1
- package/dist/types/config.d.ts +35 -19
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +3 -4
- package/dist/types/config.js.map +1 -1
- package/dist/utils/prompt-dir-resolver.d.ts +5 -0
- package/dist/utils/prompt-dir-resolver.d.ts.map +1 -0
- package/dist/utils/prompt-dir-resolver.js +24 -0
- package/dist/utils/prompt-dir-resolver.js.map +1 -0
- package/package.json +3 -2
- package/dist/utils/path-utils.d.ts +0 -42
- package/dist/utils/path-utils.d.ts.map +0 -1
- package/dist/utils/path-utils.js +0 -139
- package/dist/utils/path-utils.js.map +0 -1
- package/dist/utils/prompt-format.d.ts +0 -27
- package/dist/utils/prompt-format.d.ts.map +0 -1
- package/dist/utils/prompt-format.js +0 -28
- package/dist/utils/prompt-format.js.map +0 -1
- package/prompts/ad-hoc-long.prompt +0 -60
- package/prompts/ad-hoc.prompt +0 -29
- package/prompts/code-review.prompt +0 -99
- package/prompts/debugging-error-message.prompt +0 -81
- package/prompts/fix-github-actions.prompt +0 -62
- package/prompts/fix-test-errors.prompt +0 -73
- package/prompts/git-commit-comment.prompt +0 -61
- package/prompts/implementation-phase.prompt +0 -53
- package/prompts/implementation-plan.prompt +0 -101
- package/prompts/new-feature.prompt +0 -89
- package/prompts/new-project.prompt +0 -9
- package/prompts/one-shot-change.prompt +0 -79
- package/prompts/pupt-prompt-improvement.prompt +0 -270
- package/prompts/simple-test.prompt +0 -8
- package/prompts/update-design.prompt +0 -71
- package/prompts/update-documentation.prompt +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAC;
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAC;AAoEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAeT,CAAC;AA0CjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAG3B,CAAC"}
|
|
@@ -54,7 +54,29 @@ const EnvironmentConfigSchema = z.object({
|
|
|
54
54
|
code: CodeConfigSchema.optional(),
|
|
55
55
|
user: UserContextConfigSchema.optional(),
|
|
56
56
|
});
|
|
57
|
-
//
|
|
57
|
+
// Git library entry schema
|
|
58
|
+
const GitLibraryEntrySchema = z.object({
|
|
59
|
+
name: z.string(),
|
|
60
|
+
type: z.literal('git'),
|
|
61
|
+
source: z.string(),
|
|
62
|
+
promptDirs: z.array(z.string()),
|
|
63
|
+
installedAt: z.string(),
|
|
64
|
+
version: z.string().optional(),
|
|
65
|
+
});
|
|
66
|
+
// npm library entry schema
|
|
67
|
+
const NpmLibraryEntrySchema = z.object({
|
|
68
|
+
name: z.string(),
|
|
69
|
+
type: z.literal('npm'),
|
|
70
|
+
source: z.string(),
|
|
71
|
+
promptDirs: z.array(z.string()),
|
|
72
|
+
installedAt: z.string(),
|
|
73
|
+
version: z.string(),
|
|
74
|
+
});
|
|
75
|
+
const LibraryEntrySchema = z.discriminatedUnion('type', [
|
|
76
|
+
GitLibraryEntrySchema,
|
|
77
|
+
NpmLibraryEntrySchema,
|
|
78
|
+
]);
|
|
79
|
+
// Main config schema (v8)
|
|
58
80
|
export const ConfigSchema = z.object({
|
|
59
81
|
promptDirs: z.array(z.string()).min(1, 'At least one prompt directory is required'),
|
|
60
82
|
historyDir: z.string().optional(),
|
|
@@ -64,47 +86,49 @@ export const ConfigSchema = z.object({
|
|
|
64
86
|
defaultCmdOptions: z.record(z.string()).optional(),
|
|
65
87
|
autoReview: z.boolean().optional(),
|
|
66
88
|
autoRun: z.boolean().optional(),
|
|
67
|
-
gitPromptDir: z.string().optional(),
|
|
68
89
|
version: z.string().regex(/^\d+\.\d+\.\d+$/, 'Version must be in semver format (x.y.z)').optional(),
|
|
69
90
|
helpers: z.record(HelperConfigSchema).optional(),
|
|
70
91
|
outputCapture: OutputCaptureConfigSchema.optional(),
|
|
71
92
|
logLevel: z.string().optional(),
|
|
72
|
-
|
|
73
|
-
libraries: z.array(z.string()).optional(),
|
|
93
|
+
libraries: z.array(LibraryEntrySchema).optional(),
|
|
74
94
|
environment: EnvironmentConfigSchema.optional(),
|
|
75
|
-
// Legacy fields (deprecated)
|
|
76
|
-
codingTool: z.string().optional(),
|
|
77
|
-
codingToolArgs: z.array(z.string()).optional(),
|
|
78
|
-
codingToolOptions: z.record(z.string()).optional(),
|
|
79
|
-
targetLlm: z.string().optional(), // Deprecated: use environment.llm.provider
|
|
80
95
|
}).passthrough();
|
|
81
96
|
// Partial config for updates
|
|
82
97
|
const _PartialConfigSchema = ConfigSchema.partial();
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
export const ConfigV2Schema = z.object({
|
|
93
|
-
promptDirs: z.array(z.string()),
|
|
98
|
+
// Pre-v8 schema (v1-v7) - allows all deprecated fields that migration will remove.
|
|
99
|
+
// Covers v1 (promptDirectory), v2 (codingTool), and v3-v7 configs.
|
|
100
|
+
// Note: Global config is always created at v8+, but this schema is still needed
|
|
101
|
+
// for migration validation when loading older configs.
|
|
102
|
+
const ConfigPreV8Schema = z.object({
|
|
103
|
+
// v2+ uses promptDirs; v1 uses promptDirectory (handled by migration)
|
|
104
|
+
promptDirs: z.array(z.string()).min(1).optional(),
|
|
105
|
+
promptDirectory: z.union([z.string(), z.array(z.string())]).optional(),
|
|
94
106
|
historyDir: z.string().optional(),
|
|
107
|
+
historyDirectory: z.string().optional(), // v1 field name
|
|
95
108
|
annotationDir: z.string().optional(),
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
annotationDirectory: z.string().optional(), // v1 field name
|
|
110
|
+
defaultCmd: z.string().optional(),
|
|
111
|
+
defaultCmdArgs: z.array(z.string()).optional(),
|
|
112
|
+
defaultCmdOptions: z.record(z.string()).optional(),
|
|
99
113
|
autoReview: z.boolean().optional(),
|
|
100
114
|
autoRun: z.boolean().optional(),
|
|
101
115
|
gitPromptDir: z.string().optional(),
|
|
102
|
-
version: z.string().optional()
|
|
103
|
-
|
|
116
|
+
version: z.string().optional(),
|
|
117
|
+
helpers: z.record(HelperConfigSchema).optional(),
|
|
118
|
+
outputCapture: OutputCaptureConfigSchema.optional(),
|
|
119
|
+
logLevel: z.string().optional(),
|
|
120
|
+
libraries: z.union([z.array(z.string()), z.array(LibraryEntrySchema)]).optional(),
|
|
121
|
+
environment: EnvironmentConfigSchema.optional(),
|
|
122
|
+
codingTool: z.string().optional(),
|
|
123
|
+
codingToolArgs: z.array(z.string()).optional(),
|
|
124
|
+
codingToolOptions: z.record(z.string()).optional(),
|
|
125
|
+
targetLlm: z.string().optional(),
|
|
126
|
+
}).passthrough();
|
|
104
127
|
// Config file schemas (what's actually in the file)
|
|
128
|
+
// Only includes pre-v8 (for migration from v3-v7) and current v8 schema.
|
|
129
|
+
// Old v1/v2 schemas removed — global config is always created at v8+.
|
|
105
130
|
export const ConfigFileSchema = z.union([
|
|
106
|
-
|
|
107
|
-
ConfigV2Schema,
|
|
131
|
+
ConfigPreV8Schema,
|
|
108
132
|
ConfigSchema
|
|
109
133
|
]);
|
|
110
134
|
//# sourceMappingURL=config-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/schemas/config-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/schemas/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-collector.d.ts","sourceRoot":"","sources":["../../src/services/input-collector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAEhE;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"input-collector.d.ts","sourceRoot":"","sources":["../../src/services/input-collector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAEhE;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqC/B"}
|
|
@@ -31,7 +31,13 @@ export async function collectInputs(iterator, noInteractive) {
|
|
|
31
31
|
if (result.valid) {
|
|
32
32
|
await iterator.advance();
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
else if (noInteractive) {
|
|
35
|
+
// In non-interactive mode, retrying with the same default will always
|
|
36
|
+
// produce the same validation failure, so throw instead of looping forever.
|
|
37
|
+
const errorMessages = result.errors.map(e => e.message).join('; ');
|
|
38
|
+
throw new Error(`Validation failed for '${req.name}' in non-interactive mode: ${errorMessages}`);
|
|
39
|
+
}
|
|
40
|
+
// If invalid in interactive mode, the loop re-prompts the current requirement
|
|
35
41
|
}
|
|
36
42
|
return iterator.getValues();
|
|
37
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-collector.js","sourceRoot":"","sources":["../../src/services/input-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAuB,EACvB,aAAuB;IAEvB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG;YAAE,MAAM;QAEhB,IAAI,KAAc,CAAC;QACnB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACzB,KAAK,GAAG,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,CAAC,IAAI,wCAAwC,CAC1E,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"input-collector.js","sourceRoot":"","sources":["../../src/services/input-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAuB,EACvB,aAAuB;IAEvB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG;YAAE,MAAM;QAEhB,IAAI,KAAc,CAAC;QACnB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACzB,KAAK,GAAG,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,CAAC,IAAI,wCAAwC,CAC1E,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,sEAAsE;YACtE,4EAA4E;YAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,0BAA0B,GAAG,CAAC,IAAI,8BAA8B,aAAa,EAAE,CAChF,CAAC;QACJ,CAAC;QACD,8EAA8E;IAChF,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,GAAqB;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEnD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,iEAAiE;YACjE,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC;oBACZ,OAAO;oBACP,OAAO,EAAE,GAAG,CAAC,OAA6B;iBAC3C,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;gBACX,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;QAEL,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC;gBACtB,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE;oBACxB,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;wBAAE,OAAO,IAAI,CAAC;oBAC7C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,6BAA6B,CAAC;gBAC9D,CAAC;aACF,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;gBACb,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,OAA8B;aAC5C,CAAC,CAAC;QAEL,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;gBACZ,OAAO;gBACP,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,KAAK;iBACd,CAAC,CAAC;gBACH,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;QAEL,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC;gBACd,OAAO;gBACP,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,KAAK;iBACd,CAAC,CAAC;aACJ,CAAC,CAAC;QAEL,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAE/B,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;gBACtB,OAAO;gBACP,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM;oBAC5B,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;oBACnC,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;QAEL,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;gBACtB,OAAO;gBACP,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;QAEL,KAAK,MAAM;YACT,OAAO,KAAK,CAAC;gBACX,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;QAEL,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;oBAChB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,wCAAwC;YACxC,OAAO,MAAM,CAAC;gBACZ,OAAO,EAAE,GAAG,OAAO,SAAS;gBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS;oBAChC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtC,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QAEL;YACE,wCAAwC;YACxC,OAAO,KAAK,CAAC;gBACX,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,OAA6B;aAC3C,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,SAAS,GAAG,IAAI;SACnB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface ModuleCacheResolveOptions {
|
|
2
|
+
noCache?: boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Caches fetched URL and GitHub module content to disk so prompts
|
|
6
|
+
* work offline after the first fetch.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ModuleCache {
|
|
9
|
+
private cacheDir;
|
|
10
|
+
private modulesDir;
|
|
11
|
+
private manifestPath;
|
|
12
|
+
constructor(cacheDir: string);
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a URL or GitHub shorthand to its content, using cache when possible.
|
|
15
|
+
*/
|
|
16
|
+
resolve(url: string, options?: ModuleCacheResolveOptions): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Clear cached modules. If url is provided, clear only that entry.
|
|
19
|
+
*/
|
|
20
|
+
clear(url?: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get cache statistics.
|
|
23
|
+
*/
|
|
24
|
+
getStats(): Promise<{
|
|
25
|
+
entryCount: number;
|
|
26
|
+
totalSizeMB: number;
|
|
27
|
+
}>;
|
|
28
|
+
private fetchWithConditional;
|
|
29
|
+
private computeHash;
|
|
30
|
+
private computeTtl;
|
|
31
|
+
private isVersionedUrl;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve GitHub shorthand notation to a raw.githubusercontent.com URL.
|
|
34
|
+
* Supports:
|
|
35
|
+
* github:user/repo/path/to/file.js → main branch
|
|
36
|
+
* github:user/repo@branch/path/to/file.js → specific branch/tag
|
|
37
|
+
*/
|
|
38
|
+
private resolveGitHubShorthand;
|
|
39
|
+
private loadManifest;
|
|
40
|
+
private saveManifest;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=module-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-cache.d.ts","sourceRoot":"","sources":["../../src/services/module-cache.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;gBAEjB,QAAQ,EAAE,MAAM;IAM5B;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkChF;;OAEG;IACG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;YAqBxD,oBAAoB;IAwDlC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;YA2ChB,YAAY;YAQZ,YAAY;CAI3B"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
const SEVEN_DAYS_SECONDS = 7 * 24 * 60 * 60;
|
|
5
|
+
const ONE_HOUR_SECONDS = 60 * 60;
|
|
6
|
+
/**
|
|
7
|
+
* Caches fetched URL and GitHub module content to disk so prompts
|
|
8
|
+
* work offline after the first fetch.
|
|
9
|
+
*/
|
|
10
|
+
export class ModuleCache {
|
|
11
|
+
cacheDir;
|
|
12
|
+
modulesDir;
|
|
13
|
+
manifestPath;
|
|
14
|
+
constructor(cacheDir) {
|
|
15
|
+
this.cacheDir = cacheDir;
|
|
16
|
+
this.modulesDir = path.join(cacheDir, 'modules');
|
|
17
|
+
this.manifestPath = path.join(cacheDir, 'manifest.json');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a URL or GitHub shorthand to its content, using cache when possible.
|
|
21
|
+
*/
|
|
22
|
+
async resolve(url, options) {
|
|
23
|
+
const resolvedUrl = this.resolveGitHubShorthand(url);
|
|
24
|
+
const hash = this.computeHash(resolvedUrl);
|
|
25
|
+
const cachedFilePath = path.join(this.modulesDir, hash);
|
|
26
|
+
const manifest = await this.loadManifest();
|
|
27
|
+
const entry = manifest.entries[url];
|
|
28
|
+
// Check if we have a valid cached entry and noCache is not set
|
|
29
|
+
if (entry && !options?.noCache) {
|
|
30
|
+
const fetchedAt = new Date(entry.fetchedAt).getTime();
|
|
31
|
+
const expiresAt = fetchedAt + entry.ttl * 1000;
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
if (now < expiresAt) {
|
|
34
|
+
// Cache is still valid
|
|
35
|
+
const content = await fs.readFile(cachedFilePath, 'utf-8');
|
|
36
|
+
return content;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Need to fetch (or re-fetch)
|
|
40
|
+
try {
|
|
41
|
+
const content = await this.fetchWithConditional(resolvedUrl, url, entry, cachedFilePath);
|
|
42
|
+
return content;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
// If fetch fails but we have cached content, return it
|
|
46
|
+
if (entry && await fs.pathExists(cachedFilePath)) {
|
|
47
|
+
return await fs.readFile(cachedFilePath, 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clear cached modules. If url is provided, clear only that entry.
|
|
54
|
+
*/
|
|
55
|
+
async clear(url) {
|
|
56
|
+
const manifest = await this.loadManifest();
|
|
57
|
+
if (url) {
|
|
58
|
+
const entry = manifest.entries[url];
|
|
59
|
+
if (entry) {
|
|
60
|
+
const cachedFilePath = path.join(this.modulesDir, entry.hash);
|
|
61
|
+
await fs.remove(cachedFilePath);
|
|
62
|
+
delete manifest.entries[url];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Clear all
|
|
67
|
+
for (const entry of Object.values(manifest.entries)) {
|
|
68
|
+
const cachedFilePath = path.join(this.modulesDir, entry.hash);
|
|
69
|
+
await fs.remove(cachedFilePath);
|
|
70
|
+
}
|
|
71
|
+
manifest.entries = {};
|
|
72
|
+
}
|
|
73
|
+
await this.saveManifest(manifest);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get cache statistics.
|
|
77
|
+
*/
|
|
78
|
+
async getStats() {
|
|
79
|
+
const manifest = await this.loadManifest();
|
|
80
|
+
const entryCount = Object.keys(manifest.entries).length;
|
|
81
|
+
let totalSize = 0;
|
|
82
|
+
for (const entry of Object.values(manifest.entries)) {
|
|
83
|
+
const filePath = path.join(this.modulesDir, entry.hash);
|
|
84
|
+
try {
|
|
85
|
+
const stat = await fs.stat(filePath);
|
|
86
|
+
totalSize += stat.size;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// File might not exist
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
entryCount,
|
|
94
|
+
totalSizeMB: totalSize / (1024 * 1024),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
async fetchWithConditional(resolvedUrl, originalUrl, existingEntry, cachedFilePath) {
|
|
98
|
+
const headers = {};
|
|
99
|
+
// Add conditional headers if we have cached data
|
|
100
|
+
if (existingEntry) {
|
|
101
|
+
if (existingEntry.etag) {
|
|
102
|
+
headers['If-None-Match'] = existingEntry.etag;
|
|
103
|
+
}
|
|
104
|
+
if (existingEntry.lastModified) {
|
|
105
|
+
headers['If-Modified-Since'] = existingEntry.lastModified;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const response = await fetch(resolvedUrl, { headers });
|
|
109
|
+
if (response.status === 304 && existingEntry) {
|
|
110
|
+
// Not modified - update fetchedAt and return cached content
|
|
111
|
+
const manifest = await this.loadManifest();
|
|
112
|
+
manifest.entries[originalUrl] = {
|
|
113
|
+
...existingEntry,
|
|
114
|
+
fetchedAt: new Date().toISOString(),
|
|
115
|
+
};
|
|
116
|
+
await this.saveManifest(manifest);
|
|
117
|
+
return await fs.readFile(cachedFilePath, 'utf-8');
|
|
118
|
+
}
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw new Error(`Failed to fetch ${resolvedUrl}: ${response.status} ${response.statusText}`);
|
|
121
|
+
}
|
|
122
|
+
const content = await response.text();
|
|
123
|
+
const hash = this.computeHash(resolvedUrl);
|
|
124
|
+
// Save content to disk
|
|
125
|
+
await fs.ensureDir(this.modulesDir);
|
|
126
|
+
await fs.writeFile(cachedFilePath, content, 'utf-8');
|
|
127
|
+
// Update manifest
|
|
128
|
+
const manifest = await this.loadManifest();
|
|
129
|
+
manifest.entries[originalUrl] = {
|
|
130
|
+
hash,
|
|
131
|
+
fetchedAt: new Date().toISOString(),
|
|
132
|
+
etag: response.headers.get('ETag') || undefined,
|
|
133
|
+
lastModified: response.headers.get('Last-Modified') || undefined,
|
|
134
|
+
ttl: this.computeTtl(originalUrl),
|
|
135
|
+
};
|
|
136
|
+
await this.saveManifest(manifest);
|
|
137
|
+
return content;
|
|
138
|
+
}
|
|
139
|
+
computeHash(url) {
|
|
140
|
+
return crypto.createHash('sha256').update(url).digest('hex');
|
|
141
|
+
}
|
|
142
|
+
computeTtl(url) {
|
|
143
|
+
return this.isVersionedUrl(url) ? SEVEN_DAYS_SECONDS : ONE_HOUR_SECONDS;
|
|
144
|
+
}
|
|
145
|
+
isVersionedUrl(url) {
|
|
146
|
+
// Check for semver patterns in URL path or query params
|
|
147
|
+
// e.g., /v1.2.3/, @1.2.3, ?v=1.2.3
|
|
148
|
+
const semverPattern = /(?:\/v?\d+\.\d+\.\d+(?:[-+][\w.]+)?[\/]?)|(?:[?&]v(?:ersion)?=\d+\.\d+\.\d+)/;
|
|
149
|
+
return semverPattern.test(url);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Resolve GitHub shorthand notation to a raw.githubusercontent.com URL.
|
|
153
|
+
* Supports:
|
|
154
|
+
* github:user/repo/path/to/file.js → main branch
|
|
155
|
+
* github:user/repo@branch/path/to/file.js → specific branch/tag
|
|
156
|
+
*/
|
|
157
|
+
resolveGitHubShorthand(specifier) {
|
|
158
|
+
if (!specifier.startsWith('github:')) {
|
|
159
|
+
return specifier;
|
|
160
|
+
}
|
|
161
|
+
const rest = specifier.slice('github:'.length);
|
|
162
|
+
// Parse user/repo[@branch]/path
|
|
163
|
+
const slashIndex = rest.indexOf('/');
|
|
164
|
+
if (slashIndex === -1) {
|
|
165
|
+
return specifier; // Invalid format, return as-is
|
|
166
|
+
}
|
|
167
|
+
const secondSlashIndex = rest.indexOf('/', slashIndex + 1);
|
|
168
|
+
if (secondSlashIndex === -1) {
|
|
169
|
+
return specifier;
|
|
170
|
+
}
|
|
171
|
+
const userRepo = rest.substring(0, secondSlashIndex);
|
|
172
|
+
const filePath = rest.substring(secondSlashIndex + 1);
|
|
173
|
+
// Check for @branch syntax
|
|
174
|
+
let user;
|
|
175
|
+
let repo;
|
|
176
|
+
let branch = 'main';
|
|
177
|
+
if (userRepo.includes('@')) {
|
|
178
|
+
const atIndex = userRepo.indexOf('@');
|
|
179
|
+
const beforeAt = userRepo.substring(0, atIndex);
|
|
180
|
+
branch = userRepo.substring(atIndex + 1);
|
|
181
|
+
const parts = beforeAt.split('/');
|
|
182
|
+
user = parts[0];
|
|
183
|
+
repo = parts[1];
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
const parts = userRepo.split('/');
|
|
187
|
+
user = parts[0];
|
|
188
|
+
repo = parts[1];
|
|
189
|
+
}
|
|
190
|
+
return `https://raw.githubusercontent.com/${user}/${repo}/${branch}/${filePath}`;
|
|
191
|
+
}
|
|
192
|
+
async loadManifest() {
|
|
193
|
+
try {
|
|
194
|
+
return await fs.readJson(this.manifestPath);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return { entries: {} };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async saveManifest(manifest) {
|
|
201
|
+
await fs.ensureDir(this.cacheDir);
|
|
202
|
+
await fs.writeJson(this.manifestPath, manifest, { spaces: 2 });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=module-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-cache.js","sourceRoot":"","sources":["../../src/services/module-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ModuleEntry } from 'pupt-lib';
|
|
2
|
+
import type { Config } from '../types/config.js';
|
|
3
|
+
export interface BuildModuleEntriesOptions {
|
|
4
|
+
config: Config;
|
|
5
|
+
/** CLI --prompt-dir overrides (highest priority) */
|
|
6
|
+
cliPromptDirs?: string[];
|
|
7
|
+
/** Starting directory for auto-discovering .prompts/ */
|
|
8
|
+
startDir?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Build a ModuleEntry[] from pupt's existing config fields.
|
|
12
|
+
*
|
|
13
|
+
* Priority order:
|
|
14
|
+
* 1. CLI --prompt-dir overrides
|
|
15
|
+
* 2. Auto-discovered {projectRoot}/.prompts/
|
|
16
|
+
* 3. Config promptDirs (local directories)
|
|
17
|
+
* 4. Config libraries → ResolvedModuleEntry
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildModuleEntries(options: BuildModuleEntriesOptions): Promise<ModuleEntry[]>;
|
|
20
|
+
//# sourceMappingURL=module-entry-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-entry-builder.d.ts","sourceRoot":"","sources":["../../src/services/module-entry-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAK/D,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoCnG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { findLocalPromptsDir } from '../utils/prompt-dir-resolver.js';
|
|
3
|
+
import { getDataDir } from '../config/global-paths.js';
|
|
4
|
+
import { scanLocalPromptDir } from './pupt-prompt-source.js';
|
|
5
|
+
/**
|
|
6
|
+
* Build a ModuleEntry[] from pupt's existing config fields.
|
|
7
|
+
*
|
|
8
|
+
* Priority order:
|
|
9
|
+
* 1. CLI --prompt-dir overrides
|
|
10
|
+
* 2. Auto-discovered {projectRoot}/.prompts/
|
|
11
|
+
* 3. Config promptDirs (local directories)
|
|
12
|
+
* 4. Config libraries → ResolvedModuleEntry
|
|
13
|
+
*/
|
|
14
|
+
export async function buildModuleEntries(options) {
|
|
15
|
+
const { config, cliPromptDirs, startDir } = options;
|
|
16
|
+
const seen = new Set();
|
|
17
|
+
const entries = [];
|
|
18
|
+
async function addLocalDir(dir) {
|
|
19
|
+
const resolved = path.resolve(dir);
|
|
20
|
+
if (!seen.has(resolved)) {
|
|
21
|
+
seen.add(resolved);
|
|
22
|
+
const sources = await scanLocalPromptDir(resolved);
|
|
23
|
+
entries.push(...sources);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// 1. CLI --prompt-dir overrides (highest priority)
|
|
27
|
+
if (cliPromptDirs) {
|
|
28
|
+
for (const dir of cliPromptDirs)
|
|
29
|
+
await addLocalDir(dir);
|
|
30
|
+
}
|
|
31
|
+
// 2. Auto-discovered {projectRoot}/.prompts/
|
|
32
|
+
const localDir = await findLocalPromptsDir(startDir);
|
|
33
|
+
if (localDir)
|
|
34
|
+
await addLocalDir(localDir);
|
|
35
|
+
// 3. Config promptDirs (local directories)
|
|
36
|
+
for (const dir of config.promptDirs)
|
|
37
|
+
await addLocalDir(dir);
|
|
38
|
+
// 4. Libraries → scan each library's promptDirs for .prompt files
|
|
39
|
+
if (config.libraries) {
|
|
40
|
+
const dataDir = getDataDir();
|
|
41
|
+
for (const lib of config.libraries) {
|
|
42
|
+
const libDirs = getLibraryPromptDirs(lib, dataDir);
|
|
43
|
+
for (const dir of libDirs)
|
|
44
|
+
await addLocalDir(dir);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return entries;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the absolute prompt directories for a library entry.
|
|
51
|
+
*/
|
|
52
|
+
function getLibraryPromptDirs(lib, dataDir) {
|
|
53
|
+
let basePath;
|
|
54
|
+
if (lib.type === 'git') {
|
|
55
|
+
basePath = path.join(dataDir, 'libraries', lib.name);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// npm: resolved from the local packages directory
|
|
59
|
+
basePath = path.join(dataDir, 'packages', 'node_modules', lib.name);
|
|
60
|
+
}
|
|
61
|
+
if (lib.promptDirs && lib.promptDirs.length > 0) {
|
|
62
|
+
return lib.promptDirs.map(dir => path.join(basePath, dir));
|
|
63
|
+
}
|
|
64
|
+
// Default: scan the library root
|
|
65
|
+
return [basePath];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=module-entry-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-entry-builder.js","sourceRoot":"","sources":["../../src/services/module-entry-builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAU7D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAkC;IACzE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,UAAU,WAAW,CAAC,GAAW;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,aAAa;YAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,QAAQ;QAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1C,2CAA2C;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU;QAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IAE5D,kEAAkE;IAClE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,MAAM,GAAG,IAAI,OAAO;gBAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAAiB,EAAE,OAAe;IAC9D,IAAI,QAAgB,CAAC;IACrB,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-capture-service.d.ts","sourceRoot":"","sources":["../../src/services/output-capture-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output-capture-service.d.ts","sourceRoot":"","sources":["../../src/services/output-capture-service.ts"],"names":[],"mappings":"AAyBA,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOzE;AAGD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,SAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BjH;AAQD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,UAAU,oBAAoB;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAoB;gBAE9B,OAAO,GAAE,oBAAyB;IAO9C,wBAAwB,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa;IAqBV,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;YAIX,uBAAuB;IA4Q/B,iBAAiB,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBnE"}
|
|
@@ -3,6 +3,7 @@ import stripAnsi from 'strip-ansi';
|
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { getDataDir } from '../config/global-paths.js';
|
|
6
7
|
// Helper to get high-precision timestamp
|
|
7
8
|
function getHighPrecisionTimestamp() {
|
|
8
9
|
// Use process.hrtime.bigint() for nanosecond precision on all platforms
|
|
@@ -59,7 +60,7 @@ export class OutputCaptureService {
|
|
|
59
60
|
defaultMaxSize = 10 * 1024 * 1024; // 10MB default
|
|
60
61
|
constructor(options = {}) {
|
|
61
62
|
this.options = {
|
|
62
|
-
outputDirectory: options.outputDirectory || '
|
|
63
|
+
outputDirectory: options.outputDirectory || path.join(getDataDir(), 'output'),
|
|
63
64
|
maxOutputSize: options.maxOutputSize || this.defaultMaxSize
|
|
64
65
|
};
|
|
65
66
|
}
|