cortex-tms 4.0.0 ā 4.0.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.
- package/README.md +22 -12
- package/dist/cli.js +45 -37
- package/dist/cli.js.map +1 -1
- package/dist/commands/archive.d.ts +1 -1
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +36 -34
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/auto-tier.d.ts +1 -1
- package/dist/commands/auto-tier.d.ts.map +1 -1
- package/dist/commands/auto-tier.js +77 -76
- package/dist/commands/auto-tier.js.map +1 -1
- package/dist/commands/dashboard.d.ts +1 -1
- package/dist/commands/dashboard.js +8 -8
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +73 -73
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +2 -2
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +147 -136
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/prompt.d.ts +1 -1
- package/dist/commands/prompt.d.ts.map +1 -1
- package/dist/commands/prompt.js +32 -31
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/review.d.ts +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +60 -60
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +51 -45
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tutorial.d.ts +1 -1
- package/dist/commands/tutorial.js +168 -168
- package/dist/commands/tutorial.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +60 -60
- package/dist/commands/validate.js.map +1 -1
- package/dist/types/cli.d.ts +15 -15
- package/dist/types/guardian.d.ts +2 -2
- package/dist/ui/components/Dashboard.d.ts +2 -2
- package/dist/ui/components/Dashboard.d.ts.map +1 -1
- package/dist/ui/components/Dashboard.js +24 -23
- package/dist/ui/components/Dashboard.js.map +1 -1
- package/dist/ui/components/dashboard/ContextReductionCard.d.ts +1 -1
- package/dist/ui/components/dashboard/ContextReductionCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/ContextReductionCard.js +5 -5
- package/dist/ui/components/dashboard/ContextReductionCard.js.map +1 -1
- package/dist/ui/components/dashboard/CostSavingsCard.d.ts +1 -1
- package/dist/ui/components/dashboard/CostSavingsCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/CostSavingsCard.js +7 -7
- package/dist/ui/components/dashboard/CostSavingsCard.js.map +1 -1
- package/dist/ui/components/dashboard/FileDistributionCard.d.ts +1 -1
- package/dist/ui/components/dashboard/FileDistributionCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/FileDistributionCard.js +10 -10
- package/dist/ui/components/dashboard/FileDistributionCard.js.map +1 -1
- package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts +2 -2
- package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/FileSizeHealthCard.js +12 -12
- package/dist/ui/components/dashboard/FileSizeHealthCard.js.map +1 -1
- package/dist/ui/components/dashboard/Footer.d.ts +1 -1
- package/dist/ui/components/dashboard/Footer.d.ts.map +1 -1
- package/dist/ui/components/dashboard/Footer.js +2 -2
- package/dist/ui/components/dashboard/Footer.js.map +1 -1
- package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts +3 -3
- package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/GovernanceHealthCard.js +17 -14
- package/dist/ui/components/dashboard/GovernanceHealthCard.js.map +1 -1
- package/dist/ui/components/dashboard/GuardianStatusCard.d.ts +2 -2
- package/dist/ui/components/dashboard/GuardianStatusCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/GuardianStatusCard.js +29 -16
- package/dist/ui/components/dashboard/GuardianStatusCard.js.map +1 -1
- package/dist/ui/components/dashboard/Header.d.ts +1 -1
- package/dist/ui/components/dashboard/Header.js +2 -2
- package/dist/ui/components/dashboard/HotFilesCard.d.ts +1 -1
- package/dist/ui/components/dashboard/HotFilesCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/HotFilesCard.js +6 -6
- package/dist/ui/components/dashboard/HotFilesCard.js.map +1 -1
- package/dist/ui/components/dashboard/NotConfiguredCard.d.ts +2 -2
- package/dist/ui/components/dashboard/NotConfiguredCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/NotConfiguredCard.js +3 -3
- package/dist/ui/components/dashboard/NotConfiguredCard.js.map +1 -1
- package/dist/ui/components/dashboard/SprintProgressCard.d.ts +1 -1
- package/dist/ui/components/dashboard/SprintProgressCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/SprintProgressCard.js +4 -4
- package/dist/ui/components/dashboard/SprintProgressCard.js.map +1 -1
- package/dist/ui/components/dashboard/StalenessCard.d.ts +1 -1
- package/dist/ui/components/dashboard/StalenessCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/StalenessCard.js +9 -9
- package/dist/ui/components/dashboard/StalenessCard.js.map +1 -1
- package/dist/ui/components/dashboard/TabBar.d.ts +2 -2
- package/dist/ui/components/dashboard/TabBar.js +7 -7
- package/dist/ui/components/dashboard/TabBar.js.map +1 -1
- package/dist/ui/components/dashboard/ValidationCard.d.ts +2 -2
- package/dist/ui/components/dashboard/ValidationCard.d.ts.map +1 -1
- package/dist/ui/components/dashboard/ValidationCard.js +22 -22
- package/dist/ui/components/dashboard/ValidationCard.js.map +1 -1
- package/dist/ui/components/dashboard/ViewContainer.d.ts +3 -3
- package/dist/ui/components/dashboard/ViewContainer.d.ts.map +1 -1
- package/dist/ui/components/dashboard/ViewContainer.js +20 -20
- package/dist/ui/components/dashboard/ViewContainer.js.map +1 -1
- package/dist/ui/components/dashboard/index.d.ts +13 -13
- package/dist/ui/components/dashboard/index.js +13 -13
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +10 -10
- package/dist/ui/index.js.map +1 -1
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +20 -20
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/config.d.ts +1 -1
- package/dist/utils/config.js +68 -68
- package/dist/utils/detection.d.ts +1 -1
- package/dist/utils/detection.js +25 -25
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +4 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/git-history.d.ts.map +1 -1
- package/dist/utils/git-history.js +9 -5
- package/dist/utils/git-history.js.map +1 -1
- package/dist/utils/git-staleness.d.ts.map +1 -1
- package/dist/utils/git-staleness.js +21 -21
- package/dist/utils/git-staleness.js.map +1 -1
- package/dist/utils/guardian-prompt.d.ts.map +1 -1
- package/dist/utils/guardian-prompt.js +1 -1
- package/dist/utils/guardian-prompt.js.map +1 -1
- package/dist/utils/llm-client.d.ts +5 -5
- package/dist/utils/llm-client.d.ts.map +1 -1
- package/dist/utils/llm-client.js +56 -53
- package/dist/utils/llm-client.js.map +1 -1
- package/dist/utils/prompt-parser.d.ts.map +1 -1
- package/dist/utils/prompt-parser.js +13 -17
- package/dist/utils/prompt-parser.js.map +1 -1
- package/dist/utils/prompts.d.ts +1 -1
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +74 -49
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/sanitize.js +6 -6
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/stats-collector.d.ts +3 -9
- package/dist/utils/stats-collector.d.ts.map +1 -1
- package/dist/utils/stats-collector.js +74 -83
- package/dist/utils/stats-collector.js.map +1 -1
- package/dist/utils/status.d.ts +1 -1
- package/dist/utils/status.d.ts.map +1 -1
- package/dist/utils/status.js +16 -16
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/templates.d.ts +3 -3
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +59 -54
- package/dist/utils/templates.js.map +1 -1
- package/dist/utils/tier-tags.d.ts +1 -1
- package/dist/utils/tier-tags.js +2 -2
- package/dist/utils/token-counter.d.ts +1 -43
- package/dist/utils/token-counter.d.ts.map +1 -1
- package/dist/utils/token-counter.js +32 -80
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +25 -24
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/validator.d.ts +1 -1
- package/dist/utils/validator.d.ts.map +1 -1
- package/dist/utils/validator.js +97 -90
- package/dist/utils/validator.js.map +1 -1
- package/package.json +7 -5
- package/templates/CLAUDE.md +1 -1
- package/templates/FUTURE-ENHANCEMENTS.md +1 -1
- package/templates/NEXT-TASKS.md +1 -1
- package/templates/PROMPTS.md +1 -1
- package/templates/README.md +1 -1
- package/templates/docs/archive/v1.0-CHANGELOG.md +1 -1
- package/templates/docs/core/ARCHITECTURE.md +1 -1
- package/templates/docs/core/DECISIONS.md +1 -1
- package/templates/docs/core/DOMAIN-LOGIC.md +1 -1
- package/templates/docs/core/GLOSSARY.md +1 -1
- package/templates/docs/core/PATTERNS.md +1 -1
- package/templates/docs/core/SCHEMA.md +1 -1
- package/templates/docs/core/TROUBLESHOOTING.md +1 -1
package/dist/utils/llm-client.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { sanitizeError } from
|
|
1
|
+
import { sanitizeError } from "./sanitize.js";
|
|
2
2
|
const DEFAULT_API_TIMEOUT_MS = 30000;
|
|
3
3
|
const DEFAULT_MAX_RETRIES = 3;
|
|
4
4
|
const DEFAULT_INITIAL_DELAY_MS = 1000;
|
|
5
5
|
const DEFAULT_MAX_DELAY_MS = 10000;
|
|
6
6
|
const DEFAULT_BACKOFF_MULTIPLIER = 2;
|
|
7
7
|
function sleep(ms) {
|
|
8
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
8
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
9
|
}
|
|
10
10
|
function isRetryableError(error) {
|
|
11
11
|
const errorMessage = error.message.toLowerCase();
|
|
12
|
-
if (errorMessage.includes(
|
|
13
|
-
errorMessage.includes(
|
|
14
|
-
errorMessage.includes(
|
|
15
|
-
errorMessage.includes(
|
|
12
|
+
if (errorMessage.includes("timeout") ||
|
|
13
|
+
errorMessage.includes("network") ||
|
|
14
|
+
errorMessage.includes("econnrefused") ||
|
|
15
|
+
errorMessage.includes("enotfound")) {
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
|
-
if (errorMessage.includes(
|
|
18
|
+
if (errorMessage.includes("429") || errorMessage.includes("rate limit")) {
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
|
-
if (errorMessage.includes(
|
|
22
|
-
errorMessage.includes(
|
|
23
|
-
errorMessage.includes(
|
|
24
|
-
errorMessage.includes(
|
|
21
|
+
if (errorMessage.includes("500") ||
|
|
22
|
+
errorMessage.includes("502") ||
|
|
23
|
+
errorMessage.includes("503") ||
|
|
24
|
+
errorMessage.includes("504")) {
|
|
25
25
|
return true;
|
|
26
26
|
}
|
|
27
|
-
if (errorMessage.includes(
|
|
28
|
-
errorMessage.includes(
|
|
29
|
-
errorMessage.includes(
|
|
30
|
-
errorMessage.includes(
|
|
27
|
+
if (errorMessage.includes("401") ||
|
|
28
|
+
errorMessage.includes("403") ||
|
|
29
|
+
errorMessage.includes("400") ||
|
|
30
|
+
errorMessage.includes("404")) {
|
|
31
31
|
return false;
|
|
32
32
|
}
|
|
33
33
|
return false;
|
|
@@ -40,10 +40,10 @@ export async function callLLM(config, messages) {
|
|
|
40
40
|
let lastError = null;
|
|
41
41
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
42
42
|
try {
|
|
43
|
-
if (config.provider ===
|
|
43
|
+
if (config.provider === "openai") {
|
|
44
44
|
return await callOpenAI(config, messages);
|
|
45
45
|
}
|
|
46
|
-
else if (config.provider ===
|
|
46
|
+
else if (config.provider === "anthropic") {
|
|
47
47
|
return await callAnthropic(config, messages);
|
|
48
48
|
}
|
|
49
49
|
throw new Error(`Unsupported provider: ${config.provider}`);
|
|
@@ -57,10 +57,10 @@ export async function callLLM(config, messages) {
|
|
|
57
57
|
await sleep(delay);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
throw lastError || new Error(
|
|
60
|
+
throw lastError || new Error("Unknown error in LLM API call");
|
|
61
61
|
}
|
|
62
62
|
async function callOpenAI(config, messages) {
|
|
63
|
-
const model = config.model ||
|
|
63
|
+
const model = config.model || "gpt-4-turbo-preview";
|
|
64
64
|
const timeoutMs = config.timeoutMs || DEFAULT_API_TIMEOUT_MS;
|
|
65
65
|
const controller = new AbortController();
|
|
66
66
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
@@ -70,14 +70,14 @@ async function callOpenAI(config, messages) {
|
|
|
70
70
|
messages,
|
|
71
71
|
temperature: 0.1,
|
|
72
72
|
};
|
|
73
|
-
if (config.responseFormat ===
|
|
74
|
-
requestBody.response_format = { type:
|
|
73
|
+
if (config.responseFormat === "json") {
|
|
74
|
+
requestBody.response_format = { type: "json_object" };
|
|
75
75
|
}
|
|
76
|
-
const response = await fetch(
|
|
77
|
-
method:
|
|
76
|
+
const response = await fetch("https://api.openai.com/v1/chat/completions", {
|
|
77
|
+
method: "POST",
|
|
78
78
|
headers: {
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
"Content-Type": "application/json",
|
|
80
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
81
81
|
},
|
|
82
82
|
body: JSON.stringify(requestBody),
|
|
83
83
|
signal: controller.signal,
|
|
@@ -88,9 +88,9 @@ async function callOpenAI(config, messages) {
|
|
|
88
88
|
const sanitizedError = sanitizeError(error);
|
|
89
89
|
throw new Error(`OpenAI API error: ${response.status} ${sanitizedError}`);
|
|
90
90
|
}
|
|
91
|
-
const data = await response.json();
|
|
91
|
+
const data = (await response.json());
|
|
92
92
|
if (!data.choices?.[0]?.message?.content) {
|
|
93
|
-
throw new Error(
|
|
93
|
+
throw new Error("Invalid OpenAI response: missing content");
|
|
94
94
|
}
|
|
95
95
|
return {
|
|
96
96
|
content: data.choices[0].message.content,
|
|
@@ -103,31 +103,32 @@ async function callOpenAI(config, messages) {
|
|
|
103
103
|
}
|
|
104
104
|
catch (error) {
|
|
105
105
|
clearTimeout(timeoutId);
|
|
106
|
-
if (error instanceof Error && error.name ===
|
|
106
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
107
107
|
throw new Error(`OpenAI API request timeout after ${timeoutMs}ms`);
|
|
108
108
|
}
|
|
109
109
|
throw error;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
async function callAnthropic(config, messages) {
|
|
113
|
-
const model = config.model ||
|
|
113
|
+
const model = config.model || "claude-sonnet-4-5-20250929";
|
|
114
114
|
const timeoutMs = config.timeoutMs || DEFAULT_API_TIMEOUT_MS;
|
|
115
|
-
let systemMessage = messages.find(m => m.role ===
|
|
116
|
-
if (config.responseFormat ===
|
|
117
|
-
systemMessage +=
|
|
115
|
+
let systemMessage = messages.find((m) => m.role === "system")?.content || "";
|
|
116
|
+
if (config.responseFormat === "json") {
|
|
117
|
+
systemMessage +=
|
|
118
|
+
"\n\nIMPORTANT: You MUST respond with valid JSON only. Do not include any text before or after the JSON. The response must be parseable by JSON.parse().";
|
|
118
119
|
}
|
|
119
120
|
const conversationMessages = messages
|
|
120
|
-
.filter(m => m.role !==
|
|
121
|
-
.map(m => ({ role: m.role, content: m.content }));
|
|
121
|
+
.filter((m) => m.role !== "system")
|
|
122
|
+
.map((m) => ({ role: m.role, content: m.content }));
|
|
122
123
|
const controller = new AbortController();
|
|
123
124
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
124
125
|
try {
|
|
125
|
-
const response = await fetch(
|
|
126
|
-
method:
|
|
126
|
+
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
127
|
+
method: "POST",
|
|
127
128
|
headers: {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
"Content-Type": "application/json",
|
|
130
|
+
"x-api-key": config.apiKey,
|
|
131
|
+
"anthropic-version": "2023-06-01",
|
|
131
132
|
},
|
|
132
133
|
body: JSON.stringify({
|
|
133
134
|
model,
|
|
@@ -144,9 +145,9 @@ async function callAnthropic(config, messages) {
|
|
|
144
145
|
const sanitizedError = sanitizeError(error);
|
|
145
146
|
throw new Error(`Anthropic API error: ${response.status} ${sanitizedError}`);
|
|
146
147
|
}
|
|
147
|
-
const data = await response.json();
|
|
148
|
+
const data = (await response.json());
|
|
148
149
|
if (!data.content?.[0]?.text) {
|
|
149
|
-
throw new Error(
|
|
150
|
+
throw new Error("Invalid Anthropic response: missing content");
|
|
150
151
|
}
|
|
151
152
|
return {
|
|
152
153
|
content: data.content[0].text,
|
|
@@ -159,7 +160,7 @@ async function callAnthropic(config, messages) {
|
|
|
159
160
|
}
|
|
160
161
|
catch (error) {
|
|
161
162
|
clearTimeout(timeoutId);
|
|
162
|
-
if (error instanceof Error && error.name ===
|
|
163
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
163
164
|
throw new Error(`Anthropic API request timeout after ${timeoutMs}ms`);
|
|
164
165
|
}
|
|
165
166
|
throw error;
|
|
@@ -168,18 +169,18 @@ async function callAnthropic(config, messages) {
|
|
|
168
169
|
export function parseGuardianJSON(content) {
|
|
169
170
|
try {
|
|
170
171
|
let jsonStr = content.trim();
|
|
171
|
-
if (jsonStr.startsWith(
|
|
172
|
+
if (jsonStr.startsWith("```json")) {
|
|
172
173
|
jsonStr = jsonStr.slice(7);
|
|
173
174
|
}
|
|
174
|
-
else if (jsonStr.startsWith(
|
|
175
|
+
else if (jsonStr.startsWith("```")) {
|
|
175
176
|
jsonStr = jsonStr.slice(3);
|
|
176
177
|
}
|
|
177
|
-
if (jsonStr.endsWith(
|
|
178
|
+
if (jsonStr.endsWith("```")) {
|
|
178
179
|
jsonStr = jsonStr.slice(0, -3);
|
|
179
180
|
}
|
|
180
181
|
jsonStr = jsonStr.trim();
|
|
181
182
|
const parsed = JSON.parse(jsonStr);
|
|
182
|
-
if (!parsed.summary?.status || typeof parsed.summary.message !==
|
|
183
|
+
if (!parsed.summary?.status || typeof parsed.summary.message !== "string") {
|
|
183
184
|
return null;
|
|
184
185
|
}
|
|
185
186
|
if (!Array.isArray(parsed.violations)) {
|
|
@@ -188,19 +189,21 @@ export function parseGuardianJSON(content) {
|
|
|
188
189
|
if (!Array.isArray(parsed.positiveObservations)) {
|
|
189
190
|
return null;
|
|
190
191
|
}
|
|
191
|
-
const validStatuses = [
|
|
192
|
+
const validStatuses = ["compliant", "minor_issues", "major_violations"];
|
|
192
193
|
if (!validStatuses.includes(parsed.summary.status)) {
|
|
193
194
|
return null;
|
|
194
195
|
}
|
|
195
196
|
for (const v of parsed.violations) {
|
|
196
|
-
if (typeof v.pattern !==
|
|
197
|
-
typeof v.issue !==
|
|
198
|
-
typeof v.recommendation !==
|
|
199
|
-
(v.severity !==
|
|
197
|
+
if (typeof v.pattern !== "string" ||
|
|
198
|
+
typeof v.issue !== "string" ||
|
|
199
|
+
typeof v.recommendation !== "string" ||
|
|
200
|
+
(v.severity !== "minor" && v.severity !== "major")) {
|
|
200
201
|
return null;
|
|
201
202
|
}
|
|
202
203
|
if (v.confidence !== undefined) {
|
|
203
|
-
if (typeof v.confidence !==
|
|
204
|
+
if (typeof v.confidence !== "number" ||
|
|
205
|
+
v.confidence < 0 ||
|
|
206
|
+
v.confidence > 1) {
|
|
204
207
|
return null;
|
|
205
208
|
}
|
|
206
209
|
}
|
|
@@ -212,7 +215,7 @@ export function parseGuardianJSON(content) {
|
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
217
|
export function getApiKey(provider) {
|
|
215
|
-
const envVar = provider ===
|
|
218
|
+
const envVar = provider === "openai" ? "OPENAI_API_KEY" : "ANTHROPIC_API_KEY";
|
|
216
219
|
return process.env[envVar] || null;
|
|
217
220
|
}
|
|
218
221
|
//# sourceMappingURL=llm-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/utils/llm-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAGrC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAiCrC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/utils/llm-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAGrC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAiCrC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAeD,SAAS,gBAAgB,CAAC,KAAY;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAGjD,IACE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IACE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IACE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAiB,EACjB,QAAsB;IAEtB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,UAAU,IAAI,mBAAmB,CAAC;IACzE,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW,EAAE,cAAc,IAAI,wBAAwB,CAAC;IACjE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,UAAU,IAAI,oBAAoB,CAAC;IAC1E,MAAM,iBAAiB,GACrB,MAAM,CAAC,WAAW,EAAE,iBAAiB,IAAI,0BAA0B,CAAC;IAEtE,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC3C,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAGtE,IAAI,OAAO,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3D,MAAM,SAAS,CAAC;YAClB,CAAC;YAGD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,EACrD,UAAU,CACX,CAAC;YAKF,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAGD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAChE,CAAC;AAkBD,KAAK,UAAU,UAAU,CACvB,MAAiB,EACjB,QAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,sBAAsB,CAAC;IAG7D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,WAAW,GAA4B;YAC3C,KAAK;YACL,QAAQ;YACR,WAAW,EAAE,GAAG;SACjB,CAAC;QAGF,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACrC,WAAW,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;YACzE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YACxC,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACtC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;aACrC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAeD,KAAK,UAAU,aAAa,CAC1B,MAAiB,EACjB,QAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,4BAA4B,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,sBAAsB,CAAC;IAG7D,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IAG7E,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QACrC,aAAa;YACX,yJAAyJ,CAAC;IAC9J,CAAC;IAED,MAAM,oBAAoB,GAAG,QAAQ;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAGtD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,GAAG;gBAChB,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,oBAAoB;aAC/B,CAAC;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,CAAC,MAAM,IAAI,cAAc,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7B,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACrC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC1C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;aAChE;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAUD,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC;QAEH,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAGnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,IACE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;gBAC7B,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAC3B,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;gBACpC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,EAClD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAGD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC/B,IACE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;oBAChC,CAAC,CAAC,UAAU,GAAG,CAAC;oBAChB,CAAC,CAAC,UAAU,GAAG,CAAC,EAChB,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,SAAS,CAAC,QAAgC;IACxD,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC9E,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-parser.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-parser.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,MAAM;IAErB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;CACrB;AAaD,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"prompt-parser.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-parser.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,MAAM;IAErB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;CACrB;AAaD,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkDnB;AAQD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGtE;AASD,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB"}
|
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
import { readFile } from
|
|
2
|
-
import { existsSync } from
|
|
3
|
-
import { join } from
|
|
1
|
+
import { readFile } from "fs/promises";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
4
|
export async function parsePromptsFile(promptsFilePath) {
|
|
5
5
|
if (!existsSync(promptsFilePath)) {
|
|
6
6
|
throw new Error(`PROMPTS.md not found at: ${promptsFilePath}`);
|
|
7
7
|
}
|
|
8
|
-
const content = await readFile(promptsFilePath,
|
|
8
|
+
const content = await readFile(promptsFilePath, "utf-8");
|
|
9
9
|
const prompts = [];
|
|
10
10
|
const sections = content.split(/^## /gm).filter(Boolean);
|
|
11
11
|
for (const section of sections) {
|
|
12
|
-
if (section.includes(
|
|
12
|
+
if (section.includes("# Cortex TMS:")) {
|
|
13
13
|
continue;
|
|
14
14
|
}
|
|
15
|
-
const lines = section.trim().split(
|
|
15
|
+
const lines = section.trim().split("\n");
|
|
16
16
|
const nameMatch = lines[0]?.trim();
|
|
17
|
-
if (!nameMatch ||
|
|
17
|
+
if (!nameMatch ||
|
|
18
|
+
nameMatch.toLowerCase().includes("usage") ||
|
|
19
|
+
nameMatch.toLowerCase().includes("tip")) {
|
|
18
20
|
continue;
|
|
19
21
|
}
|
|
20
22
|
const contentLines = lines.slice(1);
|
|
21
|
-
const promptContent = (contentLines
|
|
22
|
-
.join('\n')
|
|
23
|
-
.split('---')[0] || '')
|
|
23
|
+
const promptContent = (contentLines.join("\n").split("---")[0] || "")
|
|
24
24
|
.trim();
|
|
25
|
-
const description = promptContent
|
|
26
|
-
|
|
27
|
-
.slice(0, 2)
|
|
28
|
-
.join('.')
|
|
29
|
-
.trim()
|
|
30
|
-
.substring(0, 100) + (promptContent.length > 100 ? '...' : '');
|
|
25
|
+
const description = promptContent.split(".").slice(0, 2).join(".").trim().substring(0, 100) +
|
|
26
|
+
(promptContent.length > 100 ? "..." : "");
|
|
31
27
|
if (promptContent) {
|
|
32
28
|
prompts.push({
|
|
33
29
|
name: nameMatch,
|
|
@@ -39,7 +35,7 @@ export async function parsePromptsFile(promptsFilePath) {
|
|
|
39
35
|
return prompts;
|
|
40
36
|
}
|
|
41
37
|
export async function getProjectPrompts(cwd) {
|
|
42
|
-
const promptsPath = join(cwd,
|
|
38
|
+
const promptsPath = join(cwd, "PROMPTS.md");
|
|
43
39
|
return await parsePromptsFile(promptsPath);
|
|
44
40
|
}
|
|
45
41
|
export async function getPrompt(cwd, promptName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-parser.js","sourceRoot":"","sources":["../../src/utils/prompt-parser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAyB5B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAG7B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QAGD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAGnC,
|
|
1
|
+
{"version":3,"file":"prompt-parser.js","sourceRoot":"","sources":["../../src/utils/prompt-parser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAyB5B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAG7B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QAGD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAGnC,IACE,CAAC,SAAS;YACV,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACvC,CAAC;YACD,SAAS;QACX,CAAC;QAGD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClE,IAAI,EAAE,CAAC;QAGV,MAAM,WAAW,GACf,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;YACvE,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,aAAa;gBACtB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC5C,OAAO,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,UAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC"}
|
package/dist/utils/prompts.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InitPromptAnswers, ProjectContext } from
|
|
1
|
+
import type { InitPromptAnswers, ProjectContext } from "../types/cli.js";
|
|
2
2
|
export declare function runInitPrompts(context: ProjectContext, cwd: string): Promise<InitPromptAnswers>;
|
|
3
3
|
export declare function showInitSummary(answers: InitPromptAnswers, context: ProjectContext): void;
|
|
4
4
|
export declare function confirmInit(): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiDzE,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,iBAAiB,CAAC,CAqG5B;AAQD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,cAAc,GACtB,IAAI,CAyCN;AAOD,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAWpD"}
|
package/dist/utils/prompts.js
CHANGED
|
@@ -1,81 +1,106 @@
|
|
|
1
|
-
import inquirer from
|
|
2
|
-
import { getDefaultProjectName } from
|
|
3
|
-
import { SCOPE_PRESETS } from
|
|
1
|
+
import inquirer from "inquirer";
|
|
2
|
+
import { getDefaultProjectName } from "./detection.js";
|
|
3
|
+
import { SCOPE_PRESETS } from "./config.js";
|
|
4
4
|
const AVAILABLE_TEMPLATES = [
|
|
5
|
-
{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
{ value:
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
{
|
|
15
|
-
|
|
5
|
+
{
|
|
6
|
+
value: "NEXT-TASKS.md",
|
|
7
|
+
name: "NEXT-TASKS.md - Active sprint tasks (mandatory)",
|
|
8
|
+
},
|
|
9
|
+
{ value: "CLAUDE.md", name: "CLAUDE.md - Agent workflow config (mandatory)" },
|
|
10
|
+
{
|
|
11
|
+
value: ".github/copilot-instructions.md",
|
|
12
|
+
name: ".github/copilot-instructions.md - AI rules (recommended)",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "FUTURE-ENHANCEMENTS.md",
|
|
16
|
+
name: "FUTURE-ENHANCEMENTS.md - Backlog & ideas",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "docs/core/ARCHITECTURE.md",
|
|
20
|
+
name: "ARCHITECTURE.md - System design",
|
|
21
|
+
},
|
|
22
|
+
{ value: "docs/core/PATTERNS.md", name: "PATTERNS.md - Code conventions" },
|
|
23
|
+
{
|
|
24
|
+
value: "docs/core/DOMAIN-LOGIC.md",
|
|
25
|
+
name: "DOMAIN-LOGIC.md - Business rules",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
value: "docs/core/DECISIONS.md",
|
|
29
|
+
name: "DECISIONS.md - Architecture decisions",
|
|
30
|
+
},
|
|
31
|
+
{ value: "docs/core/GLOSSARY.md", name: "GLOSSARY.md - Project terminology" },
|
|
32
|
+
{ value: "docs/core/SCHEMA.md", name: "SCHEMA.md - Data models" },
|
|
33
|
+
{
|
|
34
|
+
value: "docs/core/TROUBLESHOOTING.md",
|
|
35
|
+
name: "TROUBLESHOOTING.md - Common issues",
|
|
36
|
+
},
|
|
16
37
|
];
|
|
17
38
|
export async function runInitPrompts(context, cwd) {
|
|
18
39
|
const defaultName = getDefaultProjectName(cwd);
|
|
19
40
|
const answers = (await inquirer.prompt([
|
|
20
41
|
{
|
|
21
|
-
type:
|
|
22
|
-
name:
|
|
23
|
-
message:
|
|
42
|
+
type: "input",
|
|
43
|
+
name: "projectName",
|
|
44
|
+
message: "What is your project name?",
|
|
24
45
|
default: defaultName,
|
|
25
46
|
validate: (input) => {
|
|
26
47
|
if (!input || input.trim().length === 0) {
|
|
27
|
-
return
|
|
48
|
+
return "Project name is required";
|
|
28
49
|
}
|
|
29
50
|
if (input.length > 100) {
|
|
30
|
-
return
|
|
51
|
+
return "Project name must be 100 characters or less";
|
|
31
52
|
}
|
|
32
53
|
return true;
|
|
33
54
|
},
|
|
34
55
|
},
|
|
35
56
|
{
|
|
36
|
-
type:
|
|
37
|
-
name:
|
|
38
|
-
message:
|
|
57
|
+
type: "input",
|
|
58
|
+
name: "description",
|
|
59
|
+
message: "Project description (optional):",
|
|
39
60
|
default: undefined,
|
|
40
61
|
},
|
|
41
62
|
{
|
|
42
|
-
type:
|
|
43
|
-
name:
|
|
44
|
-
message:
|
|
63
|
+
type: "list",
|
|
64
|
+
name: "scope",
|
|
65
|
+
message: "What project scope would you like?",
|
|
45
66
|
choices: SCOPE_PRESETS.map((preset) => ({
|
|
46
67
|
name: `${preset.displayName} - ${preset.description}`,
|
|
47
68
|
value: preset.name,
|
|
48
69
|
})),
|
|
49
|
-
default:
|
|
70
|
+
default: "standard",
|
|
50
71
|
},
|
|
51
72
|
]));
|
|
52
|
-
if (answers.scope ===
|
|
73
|
+
if (answers.scope === "custom") {
|
|
53
74
|
const { customFiles } = await inquirer.prompt({
|
|
54
|
-
type:
|
|
55
|
-
name:
|
|
56
|
-
message:
|
|
75
|
+
type: "checkbox",
|
|
76
|
+
name: "customFiles",
|
|
77
|
+
message: "Select files to include (use space to select, enter to confirm):",
|
|
57
78
|
choices: AVAILABLE_TEMPLATES,
|
|
58
|
-
default: [
|
|
79
|
+
default: [
|
|
80
|
+
"NEXT-TASKS.md",
|
|
81
|
+
"CLAUDE.md",
|
|
82
|
+
".github/copilot-instructions.md",
|
|
83
|
+
],
|
|
59
84
|
validate: (input) => {
|
|
60
|
-
if (!input.includes(
|
|
61
|
-
return
|
|
85
|
+
if (!input.includes("NEXT-TASKS.md")) {
|
|
86
|
+
return "You must include NEXT-TASKS.md (mandatory for TMS)";
|
|
62
87
|
}
|
|
63
88
|
if (input.length === 0) {
|
|
64
|
-
return
|
|
89
|
+
return "You must select at least one file";
|
|
65
90
|
}
|
|
66
91
|
return true;
|
|
67
92
|
},
|
|
68
93
|
});
|
|
69
94
|
answers.customFiles = customFiles;
|
|
70
95
|
}
|
|
71
|
-
const shouldOfferSnippets = answers.scope ===
|
|
72
|
-
answers.scope ===
|
|
73
|
-
(answers.scope ===
|
|
96
|
+
const shouldOfferSnippets = answers.scope === "standard" ||
|
|
97
|
+
answers.scope === "enterprise" ||
|
|
98
|
+
(answers.scope === "custom" && (answers.customFiles?.length ?? 0) >= 3);
|
|
74
99
|
if (shouldOfferSnippets) {
|
|
75
100
|
const { installSnippets } = await inquirer.prompt({
|
|
76
|
-
type:
|
|
77
|
-
name:
|
|
78
|
-
message:
|
|
101
|
+
type: "confirm",
|
|
102
|
+
name: "installSnippets",
|
|
103
|
+
message: "Install VS Code snippet library for TMS documentation? (Recommended)",
|
|
79
104
|
default: true,
|
|
80
105
|
});
|
|
81
106
|
answers.installSnippets = installSnippets;
|
|
@@ -83,8 +108,8 @@ export async function runInitPrompts(context, cwd) {
|
|
|
83
108
|
if (context.existingFiles.length > 0) {
|
|
84
109
|
const { overwrite } = await inquirer.prompt([
|
|
85
110
|
{
|
|
86
|
-
type:
|
|
87
|
-
name:
|
|
111
|
+
type: "confirm",
|
|
112
|
+
name: "overwrite",
|
|
88
113
|
message: `Warning: ${context.existingFiles.length} TMS file(s) already exist. Overwrite them?`,
|
|
89
114
|
default: false,
|
|
90
115
|
},
|
|
@@ -95,14 +120,14 @@ export async function runInitPrompts(context, cwd) {
|
|
|
95
120
|
}
|
|
96
121
|
export function showInitSummary(answers, context) {
|
|
97
122
|
const preset = SCOPE_PRESETS.find((p) => p.name === answers.scope);
|
|
98
|
-
console.log(
|
|
123
|
+
console.log("\nš Summary:");
|
|
99
124
|
console.log(` Project: ${answers.projectName}`);
|
|
100
125
|
if (answers.description) {
|
|
101
126
|
console.log(` Description: ${answers.description}`);
|
|
102
127
|
}
|
|
103
|
-
if (answers.scope ===
|
|
128
|
+
if (answers.scope === "custom" && answers.customFiles) {
|
|
104
129
|
console.log(` Scope: ${preset?.displayName || answers.scope} (${answers.customFiles.length} files selected)`);
|
|
105
|
-
console.log(` Files: ${answers.customFiles.join(
|
|
130
|
+
console.log(` Files: ${answers.customFiles.join(", ")}`);
|
|
106
131
|
}
|
|
107
132
|
else {
|
|
108
133
|
console.log(` Scope: ${preset?.displayName || answers.scope} (${(preset?.mandatoryFiles.length || 0) + (preset?.optionalFiles.length || 0)} files)`);
|
|
@@ -111,7 +136,7 @@ export function showInitSummary(answers, context) {
|
|
|
111
136
|
console.log(` Git: Repository detected ā`);
|
|
112
137
|
}
|
|
113
138
|
if (context.hasPackageJson) {
|
|
114
|
-
console.log(` Package Manager: ${context.packageManager !==
|
|
139
|
+
console.log(` Package Manager: ${context.packageManager !== "unknown" ? context.packageManager : "npm (default)"}`);
|
|
115
140
|
}
|
|
116
141
|
if (answers.installSnippets) {
|
|
117
142
|
console.log(` VS Code Snippets: Will install to .vscode/`);
|
|
@@ -124,9 +149,9 @@ export function showInitSummary(answers, context) {
|
|
|
124
149
|
export async function confirmInit() {
|
|
125
150
|
const { confirmed } = await inquirer.prompt([
|
|
126
151
|
{
|
|
127
|
-
type:
|
|
128
|
-
name:
|
|
129
|
-
message:
|
|
152
|
+
type: "confirm",
|
|
153
|
+
name: "confirmed",
|
|
154
|
+
message: "Initialize Cortex TMS with these settings?",
|
|
130
155
|
default: true,
|
|
131
156
|
},
|
|
132
157
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAMA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,mBAAmB,GAAG;IAC1B,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/sanitize.js
CHANGED
|
@@ -5,7 +5,7 @@ const API_KEY_PATTERNS = [
|
|
|
5
5
|
/Authorization:\s*["']?[a-zA-Z0-9_-]{20,}["']?/gi,
|
|
6
6
|
/x-api-key:\s*["']?[a-zA-Z0-9_-]{10,}["']?/gi,
|
|
7
7
|
];
|
|
8
|
-
const REDACTED =
|
|
8
|
+
const REDACTED = "[REDACTED_API_KEY]";
|
|
9
9
|
export function sanitizeApiKey(text) {
|
|
10
10
|
let sanitized = text;
|
|
11
11
|
for (const pattern of API_KEY_PATTERNS) {
|
|
@@ -14,23 +14,23 @@ export function sanitizeApiKey(text) {
|
|
|
14
14
|
return sanitized;
|
|
15
15
|
}
|
|
16
16
|
export function sanitizeError(error) {
|
|
17
|
-
const message = typeof error ===
|
|
17
|
+
const message = typeof error === "string" ? error : error.message;
|
|
18
18
|
return sanitizeApiKey(message);
|
|
19
19
|
}
|
|
20
20
|
export function sanitizeObject(obj) {
|
|
21
21
|
if (obj === null || obj === undefined) {
|
|
22
22
|
return obj;
|
|
23
23
|
}
|
|
24
|
-
if (typeof obj ===
|
|
24
|
+
if (typeof obj === "string") {
|
|
25
25
|
return sanitizeApiKey(obj);
|
|
26
26
|
}
|
|
27
27
|
if (Array.isArray(obj)) {
|
|
28
|
-
return obj.map(item => sanitizeObject(item));
|
|
28
|
+
return obj.map((item) => sanitizeObject(item));
|
|
29
29
|
}
|
|
30
|
-
if (typeof obj ===
|
|
30
|
+
if (typeof obj === "object" && obj.constructor === Object) {
|
|
31
31
|
const sanitized = {};
|
|
32
32
|
for (const [key, value] of Object.entries(obj)) {
|
|
33
|
-
if ([
|
|
33
|
+
if (["apiKey", "api_key", "token", "secret", "password"].includes(key)) {
|
|
34
34
|
sanitized[key] = REDACTED;
|
|
35
35
|
}
|
|
36
36
|
else {
|