@codeyam/codeyam-cli 0.1.29 → 0.1.31
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/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +1 -1
- package/analyzer-template/packages/aws/package.json +1 -1
- package/analyzer-template/packages/database/package.json +1 -1
- package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +39 -3
- package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
- package/codeyam-cli/src/commands/editor.js +133 -0
- package/codeyam-cli/src/commands/editor.js.map +1 -1
- package/codeyam-cli/src/commands/init.js +20 -0
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +98 -1
- package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +712 -2
- package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
- package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
- package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
- package/codeyam-cli/src/utils/editorRoadmap.js +290 -17
- package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -1
- package/codeyam-cli/src/utils/envFile.js +90 -0
- package/codeyam-cli/src/utils/envFile.js.map +1 -0
- package/codeyam-cli/src/utils/handoffContext.js +257 -0
- package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +36 -6
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/techStackConfig.js +38 -0
- package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
- package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
- package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +119 -1
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +115 -0
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{MiniClaudeChat-BusrvT2F.js → MiniClaudeChat-Bs2_Oua4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DOXe0Qx7.js +161 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Ce1s4OQ1.js → entity._sha._-pc-vc6wO.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-30c44d84.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{root-CVjDQwjJ.js → root-CLedrjXQ.js} +7 -7
- package/codeyam-cli/src/webserver/build/server/assets/{analysisRunner-CTJYMVFP.js → analysisRunner-CuR5TvUx.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{index-CCth4Hgw.js → index-D4MWAsqb.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/init-JObA4lXD.js +14 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-i8OXK4oL.js +765 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/editorProxy.js +77 -4
- package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
- package/codeyam-cli/src/webserver/terminalServer.js +81 -11
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
- package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
- package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +1 -0
- package/codeyam-cli/templates/seed-adapters/supabase.ts +185 -84
- package/package.json +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-785deXbZ.js +0 -147
- package/codeyam-cli/src/webserver/build/client/assets/globals-Bt7TsgQz.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-3d8cde80.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/init-UXl-3vVp.js +0 -10
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DSW2mE30.js +0 -741
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'fs';
|
|
8
8
|
import path from 'path';
|
|
9
|
+
import { execSync } from 'child_process';
|
|
9
10
|
// ── Default Predefined Tasks ────────────────────────────────────────────
|
|
10
11
|
const DEFAULT_PLAN_TASKS = [
|
|
11
12
|
{
|
|
@@ -33,15 +34,10 @@ const DEFAULT_PLAN_TASKS = [
|
|
|
33
34
|
autoDetect: 'screen-sizes-configured',
|
|
34
35
|
},
|
|
35
36
|
{
|
|
36
|
-
id: 'plan-
|
|
37
|
-
label: '
|
|
37
|
+
id: 'plan-github',
|
|
38
|
+
label: 'Setup GitHub repository',
|
|
38
39
|
completed: false,
|
|
39
|
-
|
|
40
|
-
{
|
|
41
|
-
id: 'plan-initial-scenarios',
|
|
42
|
-
label: 'Create initial scenarios',
|
|
43
|
-
completed: false,
|
|
44
|
-
autoDetect: 'scenarios-exist',
|
|
40
|
+
autoDetect: 'github-configured',
|
|
45
41
|
},
|
|
46
42
|
];
|
|
47
43
|
const DEFAULT_DEPLOY_TASKS = [
|
|
@@ -49,11 +45,19 @@ const DEFAULT_DEPLOY_TASKS = [
|
|
|
49
45
|
id: 'deploy-hosting',
|
|
50
46
|
label: 'Set up hosting provider',
|
|
51
47
|
completed: false,
|
|
48
|
+
autoDetect: 'hosting-configured',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'deploy-database',
|
|
52
|
+
label: 'Set up hosted database',
|
|
53
|
+
completed: false,
|
|
54
|
+
autoDetect: 'database-configured',
|
|
52
55
|
},
|
|
53
56
|
{
|
|
54
57
|
id: 'deploy-env-vars',
|
|
55
58
|
label: 'Configure environment variables',
|
|
56
59
|
completed: false,
|
|
60
|
+
autoDetect: 'env-vars-configured',
|
|
57
61
|
},
|
|
58
62
|
{
|
|
59
63
|
id: 'deploy-cicd',
|
|
@@ -77,6 +81,59 @@ export function getDefaultRoadmap() {
|
|
|
77
81
|
deploy: DEFAULT_DEPLOY_TASKS.map((t) => ({ ...t })),
|
|
78
82
|
};
|
|
79
83
|
}
|
|
84
|
+
// ── Dynamic Service Tasks ──────────────────────────────────────────────
|
|
85
|
+
const DEPLOY_RELEVANT_CATEGORIES = [
|
|
86
|
+
'databases',
|
|
87
|
+
'services',
|
|
88
|
+
'infrastructure',
|
|
89
|
+
];
|
|
90
|
+
function slugify(name) {
|
|
91
|
+
return name
|
|
92
|
+
.toLowerCase()
|
|
93
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
94
|
+
.replace(/^-|-$/g, '');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generate deploy tasks from tech stack items that have envKeys.
|
|
98
|
+
* These tasks appear dynamically based on what services the project uses.
|
|
99
|
+
*/
|
|
100
|
+
export function generateServiceDeployTasks(projectRoot) {
|
|
101
|
+
try {
|
|
102
|
+
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
103
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
104
|
+
const techStack = config.techStack;
|
|
105
|
+
if (!techStack || typeof techStack !== 'object')
|
|
106
|
+
return [];
|
|
107
|
+
// Services with dedicated predefined deploy tasks are excluded from dynamic generation
|
|
108
|
+
const DEDICATED_TASK_SERVICES = new Set(['supabase']);
|
|
109
|
+
const tasks = [];
|
|
110
|
+
for (const category of DEPLOY_RELEVANT_CATEGORIES) {
|
|
111
|
+
const items = techStack[category];
|
|
112
|
+
if (!Array.isArray(items))
|
|
113
|
+
continue;
|
|
114
|
+
for (const item of items) {
|
|
115
|
+
if (!item.envKeys ||
|
|
116
|
+
!Array.isArray(item.envKeys) ||
|
|
117
|
+
item.envKeys.length === 0)
|
|
118
|
+
continue;
|
|
119
|
+
const slug = slugify(item.name);
|
|
120
|
+
if (DEDICATED_TASK_SERVICES.has(slug))
|
|
121
|
+
continue;
|
|
122
|
+
tasks.push({
|
|
123
|
+
id: `deploy-svc-${slug}`,
|
|
124
|
+
label: `Set up ${item.name}`,
|
|
125
|
+
completed: false,
|
|
126
|
+
autoDetect: `svc-envkeys-${slug}`,
|
|
127
|
+
serviceRef: { name: item.name, category },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return tasks;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
80
137
|
// ── Read / Write ────────────────────────────────────────────────────────
|
|
81
138
|
function roadmapPath(projectRoot) {
|
|
82
139
|
return path.join(projectRoot, '.codeyam', 'roadmap.json');
|
|
@@ -84,15 +141,53 @@ function roadmapPath(projectRoot) {
|
|
|
84
141
|
/**
|
|
85
142
|
* Read roadmap data from `.codeyam/roadmap.json`.
|
|
86
143
|
* Returns default tasks if the file is missing or invalid.
|
|
144
|
+
* Merges dynamic service tasks from the tech stack into the deploy list.
|
|
87
145
|
*/
|
|
88
146
|
export function readRoadmap(projectRoot) {
|
|
147
|
+
let data;
|
|
89
148
|
try {
|
|
90
149
|
const raw = fs.readFileSync(roadmapPath(projectRoot), 'utf8');
|
|
91
|
-
|
|
150
|
+
data = sanitizeRoadmapData(JSON.parse(raw));
|
|
92
151
|
}
|
|
93
152
|
catch {
|
|
94
|
-
|
|
153
|
+
data = getDefaultRoadmap();
|
|
154
|
+
}
|
|
155
|
+
// Merge dynamic service tasks from tech stack
|
|
156
|
+
const serviceTasks = generateServiceDeployTasks(projectRoot);
|
|
157
|
+
if (serviceTasks.length > 0) {
|
|
158
|
+
data.deploy = mergeServiceTasks(data.deploy, serviceTasks);
|
|
159
|
+
}
|
|
160
|
+
return data;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Merge dynamic service tasks into the deploy list.
|
|
164
|
+
* Inserts new tasks after deploy-hosting and before deploy-env-vars.
|
|
165
|
+
* Preserves existing tasks (and their completion status) by ID.
|
|
166
|
+
* Removes stale service tasks no longer generated from tech stack.
|
|
167
|
+
*/
|
|
168
|
+
function mergeServiceTasks(existing, serviceTasks) {
|
|
169
|
+
const serviceIds = new Set(serviceTasks.map((t) => t.id));
|
|
170
|
+
const existingIds = new Set(existing.map((t) => t.id));
|
|
171
|
+
// Remove stale service tasks (deploy-svc-* IDs no longer in tech stack)
|
|
172
|
+
const filtered = existing.filter((t) => !t.id.startsWith('deploy-svc-') || serviceIds.has(t.id));
|
|
173
|
+
// Find insertion point: after deploy-database (or deploy-hosting as fallback)
|
|
174
|
+
const dbIdx = filtered.findIndex((t) => t.id === 'deploy-database');
|
|
175
|
+
const hostingIdx = filtered.findIndex((t) => t.id === 'deploy-hosting');
|
|
176
|
+
const insertAt = dbIdx >= 0 ? dbIdx + 1 : hostingIdx >= 0 ? hostingIdx + 1 : 0;
|
|
177
|
+
// Add only new service tasks (preserve existing ones with their status)
|
|
178
|
+
const newTasks = serviceTasks.filter((t) => !existingIds.has(t.id));
|
|
179
|
+
if (newTasks.length > 0) {
|
|
180
|
+
filtered.splice(insertAt, 0, ...newTasks);
|
|
95
181
|
}
|
|
182
|
+
// Patch serviceRef onto existing service tasks that may lack it (from old roadmap.json)
|
|
183
|
+
const serviceMap = new Map(serviceTasks.map((t) => [t.id, t]));
|
|
184
|
+
return filtered.map((t) => {
|
|
185
|
+
const svc = serviceMap.get(t.id);
|
|
186
|
+
if (svc && !t.serviceRef) {
|
|
187
|
+
return { ...t, serviceRef: svc.serviceRef, autoDetect: svc.autoDetect };
|
|
188
|
+
}
|
|
189
|
+
return t;
|
|
190
|
+
});
|
|
96
191
|
}
|
|
97
192
|
/**
|
|
98
193
|
* Write roadmap data to `.codeyam/roadmap.json`.
|
|
@@ -123,6 +218,18 @@ function sanitizeTodo(raw) {
|
|
|
123
218
|
? { autoDetect: obj.autoDetect }
|
|
124
219
|
: {}),
|
|
125
220
|
...(obj.userCreated === true ? { userCreated: true } : {}),
|
|
221
|
+
...(obj.serviceRef &&
|
|
222
|
+
typeof obj.serviceRef === 'object' &&
|
|
223
|
+
typeof obj.serviceRef.name === 'string' &&
|
|
224
|
+
typeof obj.serviceRef.category === 'string'
|
|
225
|
+
? {
|
|
226
|
+
serviceRef: {
|
|
227
|
+
name: obj.serviceRef.name,
|
|
228
|
+
category: obj.serviceRef
|
|
229
|
+
.category,
|
|
230
|
+
},
|
|
231
|
+
}
|
|
232
|
+
: {}),
|
|
126
233
|
};
|
|
127
234
|
}
|
|
128
235
|
/**
|
|
@@ -150,6 +257,21 @@ function mergeDefaults(existing, defaults) {
|
|
|
150
257
|
}
|
|
151
258
|
return merged;
|
|
152
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Copy autoDetect keys from defaults onto existing tasks that match by ID
|
|
262
|
+
* but are missing the key. Handles migration when autoDetect is added to
|
|
263
|
+
* a previously keyless default task.
|
|
264
|
+
*/
|
|
265
|
+
function patchAutoDetectKeys(existing, defaults) {
|
|
266
|
+
const defaultMap = new Map(defaults.map((d) => [d.id, d]));
|
|
267
|
+
return existing.map((task) => {
|
|
268
|
+
const def = defaultMap.get(task.id);
|
|
269
|
+
if (def?.autoDetect && !task.autoDetect) {
|
|
270
|
+
return { ...task, autoDetect: def.autoDetect };
|
|
271
|
+
}
|
|
272
|
+
return task;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
153
275
|
/**
|
|
154
276
|
* Defensively parse raw JSON into RoadmapData.
|
|
155
277
|
* Invalid entries are dropped; missing sections get defaults.
|
|
@@ -160,12 +282,12 @@ export function sanitizeRoadmapData(raw) {
|
|
|
160
282
|
if (typeof raw !== 'object' || raw === null)
|
|
161
283
|
return defaults;
|
|
162
284
|
const obj = raw;
|
|
163
|
-
const plan = Array.isArray(obj.plan)
|
|
285
|
+
const plan = patchAutoDetectKeys(Array.isArray(obj.plan)
|
|
164
286
|
? mergeDefaults(obj.plan.map(sanitizeTodo).filter(Boolean), defaults.plan)
|
|
165
|
-
: defaults.plan;
|
|
166
|
-
const deploy = Array.isArray(obj.deploy)
|
|
287
|
+
: defaults.plan, defaults.plan);
|
|
288
|
+
const deploy = patchAutoDetectKeys(Array.isArray(obj.deploy)
|
|
167
289
|
? mergeDefaults(obj.deploy.map(sanitizeTodo).filter(Boolean), defaults.deploy)
|
|
168
|
-
: defaults.deploy;
|
|
290
|
+
: defaults.deploy, defaults.deploy);
|
|
169
291
|
return { plan, deploy };
|
|
170
292
|
}
|
|
171
293
|
const AUTO_DETECT_CHECKERS = {
|
|
@@ -220,6 +342,63 @@ const AUTO_DETECT_CHECKERS = {
|
|
|
220
342
|
return false;
|
|
221
343
|
}
|
|
222
344
|
},
|
|
345
|
+
'github-configured': (projectRoot) => {
|
|
346
|
+
try {
|
|
347
|
+
if (!fs.existsSync(path.join(projectRoot, '.git')))
|
|
348
|
+
return false;
|
|
349
|
+
const remote = execSync('git remote get-url origin', {
|
|
350
|
+
cwd: projectRoot,
|
|
351
|
+
encoding: 'utf8',
|
|
352
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
353
|
+
}).trim();
|
|
354
|
+
return remote.includes('github.com');
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
'database-configured': (projectRoot) => {
|
|
361
|
+
try {
|
|
362
|
+
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
363
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
364
|
+
if (!config.database?.provider)
|
|
365
|
+
return false;
|
|
366
|
+
if (config.database.provider === 'supabase') {
|
|
367
|
+
if (!config.database.supabaseProjectRef)
|
|
368
|
+
return false;
|
|
369
|
+
const envVars = config.environmentVariables || [];
|
|
370
|
+
const configured = new Set();
|
|
371
|
+
for (const v of envVars) {
|
|
372
|
+
const k = v.key || v.name;
|
|
373
|
+
if (k && v.value)
|
|
374
|
+
configured.add(k);
|
|
375
|
+
}
|
|
376
|
+
return (configured.has('NEXT_PUBLIC_SUPABASE_URL') &&
|
|
377
|
+
configured.has('NEXT_PUBLIC_SUPABASE_ANON_KEY') &&
|
|
378
|
+
configured.has('DATABASE_URL'));
|
|
379
|
+
}
|
|
380
|
+
return true;
|
|
381
|
+
}
|
|
382
|
+
catch {
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
'hosting-configured': (projectRoot) => {
|
|
387
|
+
try {
|
|
388
|
+
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
389
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
390
|
+
if (!config.hosting?.provider)
|
|
391
|
+
return false;
|
|
392
|
+
// For Vercel: also require a linked project
|
|
393
|
+
if (config.hosting.provider === 'vercel') {
|
|
394
|
+
return !!config.hosting.vercelProjectId;
|
|
395
|
+
}
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
catch {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
},
|
|
223
402
|
'scenarios-exist': (projectRoot) => {
|
|
224
403
|
const scenariosDir = path.join(projectRoot, '.codeyam', 'editor-scenarios');
|
|
225
404
|
try {
|
|
@@ -230,20 +409,107 @@ const AUTO_DETECT_CHECKERS = {
|
|
|
230
409
|
return false;
|
|
231
410
|
}
|
|
232
411
|
},
|
|
412
|
+
'env-vars-configured': (projectRoot) => {
|
|
413
|
+
try {
|
|
414
|
+
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
415
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
416
|
+
const allEnvKeys = collectAllEnvKeys(config.techStack);
|
|
417
|
+
if (allEnvKeys.length === 0)
|
|
418
|
+
return true; // No env vars needed
|
|
419
|
+
const configured = getConfiguredEnvKeys(config.environmentVariables);
|
|
420
|
+
return allEnvKeys.every((key) => configured.has(key));
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
},
|
|
233
426
|
};
|
|
427
|
+
/** Collect all envKeys from deploy-relevant tech stack categories. */
|
|
428
|
+
function collectAllEnvKeys(techStack) {
|
|
429
|
+
if (!techStack || typeof techStack !== 'object')
|
|
430
|
+
return [];
|
|
431
|
+
const keys = [];
|
|
432
|
+
for (const cat of DEPLOY_RELEVANT_CATEGORIES) {
|
|
433
|
+
const items = techStack[cat];
|
|
434
|
+
if (!Array.isArray(items))
|
|
435
|
+
continue;
|
|
436
|
+
for (const item of items) {
|
|
437
|
+
if (item.envKeys && Array.isArray(item.envKeys)) {
|
|
438
|
+
keys.push(...item.envKeys);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return keys;
|
|
443
|
+
}
|
|
444
|
+
/** Get set of configured env var keys (supports both "key" and "name" fields). */
|
|
445
|
+
function getConfiguredEnvKeys(envVars) {
|
|
446
|
+
const configured = new Set();
|
|
447
|
+
if (!Array.isArray(envVars))
|
|
448
|
+
return configured;
|
|
449
|
+
for (const v of envVars) {
|
|
450
|
+
const k = v.key || v.name;
|
|
451
|
+
if (k && v.value)
|
|
452
|
+
configured.add(k);
|
|
453
|
+
}
|
|
454
|
+
return configured;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Dynamic checker for `svc-envkeys-{slug}` auto-detect keys.
|
|
458
|
+
* Finds the matching tech stack item and checks whether all its envKeys
|
|
459
|
+
* have corresponding values in environmentVariables.
|
|
460
|
+
*/
|
|
461
|
+
function checkServiceEnvKeys(projectRoot, autoDetectKey) {
|
|
462
|
+
try {
|
|
463
|
+
const slug = autoDetectKey.replace('svc-envkeys-', '');
|
|
464
|
+
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
465
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
466
|
+
const techStack = config.techStack;
|
|
467
|
+
if (!techStack)
|
|
468
|
+
return false;
|
|
469
|
+
// Find the matching service item by slug
|
|
470
|
+
for (const cat of DEPLOY_RELEVANT_CATEGORIES) {
|
|
471
|
+
const items = techStack[cat];
|
|
472
|
+
if (!Array.isArray(items))
|
|
473
|
+
continue;
|
|
474
|
+
for (const item of items) {
|
|
475
|
+
if (slugify(item.name) === slug) {
|
|
476
|
+
if (!item.envKeys ||
|
|
477
|
+
!Array.isArray(item.envKeys) ||
|
|
478
|
+
item.envKeys.length === 0)
|
|
479
|
+
return false;
|
|
480
|
+
const configured = getConfiguredEnvKeys(config.environmentVariables);
|
|
481
|
+
return item.envKeys.every((k) => configured.has(k));
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
catch {
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
234
491
|
/**
|
|
235
492
|
* Evaluate auto-detect conditions for a list of todos.
|
|
236
493
|
* Returns a new array with updated completion status for auto-detect tasks.
|
|
237
494
|
* Manually completed tasks (no autoDetect key) are left unchanged.
|
|
495
|
+
* Supports dynamic `svc-envkeys-*` keys for service credential checking.
|
|
238
496
|
*/
|
|
239
497
|
export function checkAutoDetections(projectRoot, todos) {
|
|
240
498
|
return todos.map((todo) => {
|
|
241
499
|
if (!todo.autoDetect)
|
|
242
500
|
return todo;
|
|
501
|
+
// Try static checker first, then dynamic svc-envkeys-* checker
|
|
502
|
+
let detected;
|
|
243
503
|
const checker = AUTO_DETECT_CHECKERS[todo.autoDetect];
|
|
244
|
-
if (
|
|
504
|
+
if (checker) {
|
|
505
|
+
detected = checker(projectRoot);
|
|
506
|
+
}
|
|
507
|
+
else if (todo.autoDetect.startsWith('svc-envkeys-')) {
|
|
508
|
+
detected = checkServiceEnvKeys(projectRoot, todo.autoDetect);
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
245
511
|
return todo;
|
|
246
|
-
|
|
512
|
+
}
|
|
247
513
|
if (detected && !todo.completed) {
|
|
248
514
|
return {
|
|
249
515
|
...todo,
|
|
@@ -275,7 +541,7 @@ export function countJournalEntries(projectRoot) {
|
|
|
275
541
|
}
|
|
276
542
|
/**
|
|
277
543
|
* Return the most recent journal entries (newest first).
|
|
278
|
-
*
|
|
544
|
+
* Includes full details for expandable roadmap display.
|
|
279
545
|
*/
|
|
280
546
|
export function getRecentJournalEntries(projectRoot, limit = 3) {
|
|
281
547
|
try {
|
|
@@ -292,6 +558,13 @@ export function getRecentJournalEntries(projectRoot, limit = 3) {
|
|
|
292
558
|
title: e.title,
|
|
293
559
|
time: e.time,
|
|
294
560
|
type: e.type || 'feature',
|
|
561
|
+
description: e.description || undefined,
|
|
562
|
+
userPrompt: e.userPrompt || undefined,
|
|
563
|
+
scenarioScreenshots: e.scenarioScreenshots || undefined,
|
|
564
|
+
modifiedFiles: e.modifiedFiles || undefined,
|
|
565
|
+
entityChangeStatus: e.entityChangeStatus || undefined,
|
|
566
|
+
commitSha: e.commitSha || null,
|
|
567
|
+
commitMessage: e.commitMessage || null,
|
|
295
568
|
}));
|
|
296
569
|
}
|
|
297
570
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorRoadmap.js","sourceRoot":"","sources":["../../../../src/utils/editorRoadmap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editorRoadmap.js","sourceRoot":"","sources":["../../../../src/utils/editorRoadmap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Read a specific env var from .env files following Next.js precedence.
|
|
5
|
+
* Checks: .env.local → .env → .env.development.local → .env.development
|
|
6
|
+
*/
|
|
7
|
+
export function readEnvVar(projectRoot, key) {
|
|
8
|
+
for (const envFile of [
|
|
9
|
+
'.env.local',
|
|
10
|
+
'.env',
|
|
11
|
+
'.env.development.local',
|
|
12
|
+
'.env.development',
|
|
13
|
+
]) {
|
|
14
|
+
try {
|
|
15
|
+
const envPath = path.join(projectRoot, envFile);
|
|
16
|
+
if (!fs.existsSync(envPath))
|
|
17
|
+
continue;
|
|
18
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
19
|
+
for (const line of content.split('\n')) {
|
|
20
|
+
const trimmed = line.trim();
|
|
21
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
22
|
+
continue;
|
|
23
|
+
const eqIdx = trimmed.indexOf('=');
|
|
24
|
+
if (eqIdx === -1)
|
|
25
|
+
continue;
|
|
26
|
+
const k = trimmed.slice(0, eqIdx).trim();
|
|
27
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
28
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
29
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
30
|
+
value = value.slice(1, -1);
|
|
31
|
+
}
|
|
32
|
+
if (k === key && value)
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Skip unreadable files
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Write/update a key=value pair in .env.local (create if missing).
|
|
44
|
+
*/
|
|
45
|
+
export function writeEnvVar(projectRoot, key, value) {
|
|
46
|
+
const envPath = path.join(projectRoot, '.env.local');
|
|
47
|
+
let lines = [];
|
|
48
|
+
try {
|
|
49
|
+
lines = fs.readFileSync(envPath, 'utf-8').split('\n');
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// File doesn't exist yet
|
|
53
|
+
}
|
|
54
|
+
const idx = lines.findIndex((l) => {
|
|
55
|
+
const trimmed = l.trim();
|
|
56
|
+
if (trimmed.startsWith('#'))
|
|
57
|
+
return false;
|
|
58
|
+
const eqIdx = trimmed.indexOf('=');
|
|
59
|
+
if (eqIdx === -1)
|
|
60
|
+
return false;
|
|
61
|
+
return trimmed.slice(0, eqIdx).trim() === key;
|
|
62
|
+
});
|
|
63
|
+
const newLine = `${key}=${value}`;
|
|
64
|
+
if (idx >= 0) {
|
|
65
|
+
lines[idx] = newLine;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (lines.length > 0 && lines[lines.length - 1].trim() !== '') {
|
|
69
|
+
lines.push('');
|
|
70
|
+
}
|
|
71
|
+
lines.push(newLine);
|
|
72
|
+
}
|
|
73
|
+
fs.writeFileSync(envPath, lines.join('\n'));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse GitHub owner/repo from a git remote URL.
|
|
77
|
+
* Handles both HTTPS and SSH formats.
|
|
78
|
+
*/
|
|
79
|
+
export function parseGitHubRepo(remoteUrl) {
|
|
80
|
+
// SSH: git@github.com:owner/repo.git
|
|
81
|
+
const sshMatch = remoteUrl.match(/github\.com[:/]([^/]+)\/([^/.]+)/);
|
|
82
|
+
if (sshMatch)
|
|
83
|
+
return { owner: sshMatch[1], repo: sshMatch[2] };
|
|
84
|
+
// HTTPS: https://github.com/owner/repo.git
|
|
85
|
+
const httpsMatch = remoteUrl.match(/github\.com\/([^/]+)\/([^/.]+)/);
|
|
86
|
+
if (httpsMatch)
|
|
87
|
+
return { owner: httpsMatch[1], repo: httpsMatch[2] };
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=envFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envFile.js","sourceRoot":"","sources":["../../../../src/utils/envFile.ts"],"names":[],"mappings":"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"}
|