dev3000 0.0.174 → 0.0.176

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +0 -4
  2. package/dist/cdp-monitor.d.ts +5 -1
  3. package/dist/cdp-monitor.d.ts.map +1 -1
  4. package/dist/cdp-monitor.js +273 -46
  5. package/dist/cdp-monitor.js.map +1 -1
  6. package/dist/cli.js +154 -217
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/crawl.d.ts.map +1 -1
  9. package/dist/commands/crawl.js +4 -43
  10. package/dist/commands/crawl.js.map +1 -1
  11. package/dist/commands/errors.d.ts.map +1 -1
  12. package/dist/commands/errors.js +4 -53
  13. package/dist/commands/errors.js.map +1 -1
  14. package/dist/commands/fix.d.ts.map +1 -1
  15. package/dist/commands/fix.js +5 -74
  16. package/dist/commands/fix.js.map +1 -1
  17. package/dist/commands/logs.d.ts.map +1 -1
  18. package/dist/commands/logs.js +4 -53
  19. package/dist/commands/logs.js.map +1 -1
  20. package/dist/commands/skill-runner.d.ts +15 -0
  21. package/dist/commands/skill-runner.d.ts.map +1 -0
  22. package/dist/commands/skill-runner.js +615 -0
  23. package/dist/commands/skill-runner.js.map +1 -0
  24. package/dist/dev-environment.d.ts +6 -3
  25. package/dist/dev-environment.d.ts.map +1 -1
  26. package/dist/dev-environment.js +123 -105
  27. package/dist/dev-environment.js.map +1 -1
  28. package/dist/skills/d3k/internal-skill.md +145 -0
  29. package/dist/skills/index.test.ts +28 -1
  30. package/dist/skills/index.ts +58 -7
  31. package/dist/utils/agent-browser.d.ts.map +1 -1
  32. package/dist/utils/agent-browser.js +6 -3
  33. package/dist/utils/agent-browser.js.map +1 -1
  34. package/dist/utils/agent-detection.d.ts +1 -0
  35. package/dist/utils/agent-detection.d.ts.map +1 -1
  36. package/dist/utils/agent-detection.js +11 -0
  37. package/dist/utils/agent-detection.js.map +1 -1
  38. package/dist/utils/agent-selection.js +3 -3
  39. package/dist/utils/agent-selection.js.map +1 -1
  40. package/dist/utils/browser-command-argv.d.ts +1 -1
  41. package/dist/utils/browser-command-argv.d.ts.map +1 -1
  42. package/dist/utils/browser-command-argv.js +1 -1
  43. package/dist/utils/browser-command-argv.js.map +1 -1
  44. package/dist/utils/cli-options.d.ts +5 -0
  45. package/dist/utils/cli-options.d.ts.map +1 -0
  46. package/dist/utils/cli-options.js +36 -0
  47. package/dist/utils/cli-options.js.map +1 -0
  48. package/dist/utils/project-name.d.ts +2 -0
  49. package/dist/utils/project-name.d.ts.map +1 -1
  50. package/dist/utils/project-name.js +6 -0
  51. package/dist/utils/project-name.js.map +1 -1
  52. package/dist/utils/session.d.ts +14 -0
  53. package/dist/utils/session.d.ts.map +1 -0
  54. package/dist/utils/session.js +65 -0
  55. package/dist/utils/session.js.map +1 -0
  56. package/dist/utils/version-check.js +2 -2
  57. package/dist/utils/version-check.js.map +1 -1
  58. package/package.json +10 -19
  59. package/dist/commands/cloud-check-pr.d.ts +0 -9
  60. package/dist/commands/cloud-check-pr.d.ts.map +0 -1
  61. package/dist/commands/cloud-check-pr.js +0 -243
  62. package/dist/commands/cloud-check-pr.js.map +0 -1
  63. package/dist/commands/cloud-fix.d.ts +0 -13
  64. package/dist/commands/cloud-fix.d.ts.map +0 -1
  65. package/dist/commands/cloud-fix.js +0 -79
  66. package/dist/commands/cloud-fix.js.map +0 -1
  67. package/dist/commands/find-component.d.ts +0 -8
  68. package/dist/commands/find-component.d.ts.map +0 -1
  69. package/dist/commands/find-component.js +0 -182
  70. package/dist/commands/find-component.js.map +0 -1
  71. package/dist/skills/d3k/SKILL.md +0 -126
  72. package/dist/skills/index.d.ts +0 -46
  73. package/dist/skills/index.d.ts.map +0 -1
  74. package/dist/skills/index.js +0 -174
  75. package/dist/skills/index.js.map +0 -1
@@ -0,0 +1,615 @@
1
+ import chalk from "chalk";
2
+ import { existsSync, readFileSync } from "fs";
3
+ import ora from "ora";
4
+ import { homedir } from "os";
5
+ import { dirname, join, resolve } from "path";
6
+ const DEFAULT_DEV3000_BASE_URL = "https://dev3000.ai";
7
+ const REMOTE_SKILL_OPTIONS = ["team", "project", "branch", "projectDir", "baseUrl", "wait", "json", "yes"];
8
+ export function shouldUseRemoteSkillRunner(name, options) {
9
+ if (!name?.trim())
10
+ return false;
11
+ const hasExplicitRunOption = REMOTE_SKILL_OPTIONS.some((option) => Boolean(options[option])) ||
12
+ options.install === false;
13
+ if (hasExplicitRunOption) {
14
+ return true;
15
+ }
16
+ try {
17
+ return Boolean(findLinkedVercelProject());
18
+ }
19
+ catch {
20
+ return true;
21
+ }
22
+ }
23
+ export async function runRemoteSkillCommand(name, options) {
24
+ const requestedSkillRunnerId = name?.trim();
25
+ if (!requestedSkillRunnerId) {
26
+ throw new Error("A skill name is required. Example: d3k skill vercel-optimize --team elsigh-pro --project cranio-mom");
27
+ }
28
+ const linkedProject = findLinkedVercelProject();
29
+ const teamInput = options.team?.trim() || linkedProject?.orgId;
30
+ const projectInput = options.project?.trim() || linkedProject?.projectId;
31
+ if (!teamInput || !projectInput) {
32
+ throw new Error("Could not infer the Vercel team/project. Run from a directory linked with `vercel link`, or pass `--team` and `--project`.");
33
+ }
34
+ const token = resolveVercelAccessToken();
35
+ if (!token) {
36
+ throw new Error("No Vercel token found. Run `vercel login`, or set VERCEL_TOKEN to a token that can access the target team.");
37
+ }
38
+ const baseUrl = normalizeBaseUrl(options.baseUrl || process.env.D3K_CLOUD_URL || DEFAULT_DEV3000_BASE_URL);
39
+ log(options, `Preparing ${chalk.bold(requestedSkillRunnerId)} on ${chalk.bold(projectInput)}...`);
40
+ if (linkedProject && (!options.team || !options.project)) {
41
+ log(options, `${chalk.green("✓")} Inferred Vercel project link from ${linkedProject.path}`);
42
+ }
43
+ const [user, teams] = await Promise.all([fetchVercelUser(token), fetchVercelTeams(token)]);
44
+ const team = resolveTeam(teamInput, user, teams);
45
+ const project = await resolveProject(token, team, projectInput);
46
+ const githubRepo = getProjectGitHubRepo(project);
47
+ if (!githubRepo) {
48
+ throw new Error(`Project ${project.name} is not connected to a GitHub repository. Remote skill runs require a GitHub-backed Vercel project.`);
49
+ }
50
+ const latestDeployment = project.latestDeployments?.[0];
51
+ const branch = options.branch?.trim() || latestDeployment?.gitSource?.ref || latestDeployment?.gitSource?.sha || "main";
52
+ const projectDir = options.projectDir?.trim() || project.rootDirectory?.trim() || undefined;
53
+ const productionUrl = latestDeployment?.url ? `https://${latestDeployment.url}` : undefined;
54
+ const teamScope = team.isPersonal ? team.slug : team.id;
55
+ const reportBasePath = `${baseUrl}/${encodeURIComponent(team.slug)}/skill-runner/runs`;
56
+ log(options, `${chalk.green("✓")} Team: ${team.name} (${team.slug})`);
57
+ log(options, `${chalk.green("✓")} Project: ${project.name} (${githubRepo.owner}/${githubRepo.repo})`);
58
+ const skillRunnerId = await resolveSkillRunnerSelection({
59
+ baseUrl,
60
+ token,
61
+ team,
62
+ requestedSkillRunnerId,
63
+ options
64
+ });
65
+ log(options, `${chalk.green("✓")} Skill: ${skillRunnerId}`);
66
+ const startRunSpinner = startSpinner(options, "Starting run...");
67
+ let startResult;
68
+ try {
69
+ startResult = await startSkillRun({
70
+ baseUrl,
71
+ token,
72
+ user,
73
+ skillRunnerId,
74
+ team,
75
+ teamScope,
76
+ project,
77
+ githubRepo,
78
+ branch,
79
+ projectDir,
80
+ productionUrl
81
+ });
82
+ }
83
+ catch (error) {
84
+ startRunSpinner?.fail("Failed to start run");
85
+ throw error;
86
+ }
87
+ if (startResult.code === "runner_setup_required" && options.install !== false) {
88
+ startRunSpinner?.stop();
89
+ log(options, "Team skill runner project needs setup; installing...");
90
+ await installWorkerProject(baseUrl, token, team, options);
91
+ const retryStartRunSpinner = startSpinner(options, "Starting run...");
92
+ try {
93
+ startResult = await startSkillRun({
94
+ baseUrl,
95
+ token,
96
+ user,
97
+ skillRunnerId,
98
+ team,
99
+ teamScope,
100
+ project,
101
+ githubRepo,
102
+ branch,
103
+ projectDir,
104
+ productionUrl
105
+ });
106
+ }
107
+ catch (error) {
108
+ retryStartRunSpinner?.fail("Failed to start run");
109
+ throw error;
110
+ }
111
+ if (startResult.success && startResult.runId) {
112
+ retryStartRunSpinner?.stop();
113
+ }
114
+ else {
115
+ retryStartRunSpinner?.fail("Failed to start run");
116
+ }
117
+ }
118
+ else if (startResult.success && startResult.runId) {
119
+ startRunSpinner?.stop();
120
+ }
121
+ else {
122
+ startRunSpinner?.fail("Failed to start run");
123
+ }
124
+ if (!startResult.success || !startResult.runId) {
125
+ const error = startResult.error || "Failed to start DeepSec run.";
126
+ throw new Error(error);
127
+ }
128
+ const reportUrl = `${reportBasePath}/${encodeURIComponent(startResult.runId)}/report`;
129
+ const output = {
130
+ success: true,
131
+ skill: skillRunnerId,
132
+ runId: startResult.runId,
133
+ reportUrl,
134
+ team: team.slug,
135
+ project: project.name
136
+ };
137
+ if (options.json && !options.wait) {
138
+ console.log(JSON.stringify(output, null, 2));
139
+ return;
140
+ }
141
+ log(options, `${chalk.green("✓")} Started run ${startResult.runId}`);
142
+ log(options, `${chalk.bold("Report:")} ${reportUrl}`);
143
+ if (options.wait) {
144
+ const run = await waitForRun(baseUrl, user.id, startResult.runId, options);
145
+ if (options.json) {
146
+ console.log(JSON.stringify({ ...output, run }, null, 2));
147
+ return;
148
+ }
149
+ log(options, formatRunCompletion(run, reportUrl));
150
+ }
151
+ }
152
+ function resolveVercelAccessToken() {
153
+ const explicitToken = process.env.VERCEL_TOKEN?.trim();
154
+ if (explicitToken) {
155
+ return explicitToken;
156
+ }
157
+ const homeDirectory = homedir();
158
+ const xdgDataHome = process.env.XDG_DATA_HOME || join(homeDirectory, ".local", "share");
159
+ const candidates = [
160
+ join(xdgDataHome, "com.vercel.cli", "auth.json"),
161
+ join(homeDirectory, "Library", "Application Support", "com.vercel.cli", "auth.json"),
162
+ join(homeDirectory, ".now", "auth.json"),
163
+ join(homeDirectory, ".vercel", "auth.json")
164
+ ];
165
+ for (const candidate of candidates) {
166
+ try {
167
+ const parsed = JSON.parse(readFileSync(candidate, "utf8"));
168
+ const token = parsed.token?.trim();
169
+ const expiresAt = typeof parsed.expiresAt === "number" ? parsed.expiresAt : null;
170
+ if (token && (!expiresAt || expiresAt > Math.floor(Date.now() / 1000) + 60)) {
171
+ return token;
172
+ }
173
+ }
174
+ catch {
175
+ // Try the next known Vercel CLI auth location.
176
+ }
177
+ }
178
+ return null;
179
+ }
180
+ function findLinkedVercelProject(startDirectory = process.cwd()) {
181
+ let currentDirectory = resolve(startDirectory);
182
+ for (;;) {
183
+ const candidate = join(currentDirectory, ".vercel", "project.json");
184
+ if (existsSync(candidate)) {
185
+ try {
186
+ const parsed = JSON.parse(readFileSync(candidate, "utf8"));
187
+ const orgId = stringValue(parsed.orgId);
188
+ const projectId = stringValue(parsed.projectId);
189
+ if (orgId || projectId) {
190
+ return { orgId, projectId, path: candidate };
191
+ }
192
+ }
193
+ catch (error) {
194
+ throw new Error(`Could not read ${candidate}. Re-run \`vercel link\` or fix the invalid project.json. ${error instanceof Error ? error.message : String(error)}`);
195
+ }
196
+ }
197
+ const parentDirectory = dirname(currentDirectory);
198
+ if (parentDirectory === currentDirectory) {
199
+ return null;
200
+ }
201
+ currentDirectory = parentDirectory;
202
+ }
203
+ }
204
+ async function fetchVercelUser(token) {
205
+ const data = await fetchJson("https://api.vercel.com/v2/user", {
206
+ headers: authorizationHeaders(token)
207
+ });
208
+ const rawUser = data.user || {};
209
+ const id = stringValue(rawUser.uid) || stringValue(rawUser.id);
210
+ const username = stringValue(rawUser.username);
211
+ if (!id || !username) {
212
+ throw new Error("Could not resolve the signed-in Vercel user from the configured token.");
213
+ }
214
+ return {
215
+ id,
216
+ username,
217
+ email: stringValue(rawUser.email) || "",
218
+ name: stringValue(rawUser.name) || username
219
+ };
220
+ }
221
+ async function fetchVercelTeams(token) {
222
+ const teams = [];
223
+ const seen = new Set();
224
+ let until = null;
225
+ for (let page = 0; page < 20; page++) {
226
+ const apiUrl = new URL("https://api.vercel.com/v2/teams");
227
+ apiUrl.searchParams.set("limit", "100");
228
+ if (until) {
229
+ apiUrl.searchParams.set("until", until);
230
+ }
231
+ const data = await fetchJson(apiUrl.toString(), {
232
+ headers: authorizationHeaders(token)
233
+ });
234
+ const pageTeams = Array.isArray(data.teams) ? data.teams : [];
235
+ for (const rawTeam of pageTeams) {
236
+ const id = stringValue(rawTeam.id);
237
+ const slug = stringValue(rawTeam.slug);
238
+ const name = stringValue(rawTeam.name);
239
+ if (!id || !slug || !name || seen.has(id.toLowerCase())) {
240
+ continue;
241
+ }
242
+ seen.add(id.toLowerCase());
243
+ teams.push({ id, slug, name, isPersonal: false });
244
+ }
245
+ const nextCursor = data.pagination?.next;
246
+ if (!nextCursor || pageTeams.length === 0) {
247
+ break;
248
+ }
249
+ until = String(nextCursor);
250
+ }
251
+ return teams;
252
+ }
253
+ function resolveTeam(input, user, teams) {
254
+ const normalizedInput = input.toLowerCase();
255
+ const personalTeam = {
256
+ id: user.id,
257
+ slug: user.username,
258
+ name: user.name || user.username,
259
+ isPersonal: true
260
+ };
261
+ const allTeams = [personalTeam, ...teams];
262
+ const team = allTeams.find((candidate) => candidate.id.toLowerCase() === normalizedInput) ||
263
+ allTeams.find((candidate) => candidate.slug.toLowerCase() === normalizedInput) ||
264
+ allTeams.find((candidate) => candidate.name.toLowerCase() === normalizedInput);
265
+ if (!team) {
266
+ const available = allTeams.map((candidate) => candidate.slug).join(", ");
267
+ throw new Error(`Could not find Vercel team "${input}". Available teams: ${available}`);
268
+ }
269
+ return team;
270
+ }
271
+ async function resolveProject(token, team, input) {
272
+ const fetchedProjects = await fetchProjects(token, team, input.startsWith("prj_") ? undefined : input);
273
+ const normalizedInput = input.toLowerCase();
274
+ const project = fetchedProjects.find((candidate) => candidate.id?.toLowerCase() === normalizedInput) ||
275
+ fetchedProjects.find((candidate) => candidate.name?.toLowerCase() === normalizedInput);
276
+ if (!project?.id || !project.name) {
277
+ const available = fetchedProjects
278
+ .filter((candidate) => candidate.name && !isSkillRunnerWorkerProject(candidate.name))
279
+ .slice(0, 10)
280
+ .map((candidate) => candidate.name)
281
+ .join(", ");
282
+ throw new Error(`Could not find Vercel project "${input}" in ${team.slug}.${available ? ` Nearby projects: ${available}` : ""}`);
283
+ }
284
+ if (isSkillRunnerWorkerProject(project.name)) {
285
+ throw new Error("The d3k-skill-runner project cannot be used as the scan target.");
286
+ }
287
+ return project;
288
+ }
289
+ async function fetchProjects(token, team, search) {
290
+ const projects = [];
291
+ let until = null;
292
+ for (let page = 0; page < 20; page++) {
293
+ const apiUrl = new URL("https://api.vercel.com/v9/projects");
294
+ if (!team.isPersonal) {
295
+ apiUrl.searchParams.set("teamId", team.id);
296
+ }
297
+ if (search) {
298
+ apiUrl.searchParams.set("search", search);
299
+ }
300
+ apiUrl.searchParams.set("limit", "100");
301
+ if (until) {
302
+ apiUrl.searchParams.set("until", until);
303
+ }
304
+ const data = await fetchJson(apiUrl.toString(), {
305
+ headers: authorizationHeaders(token)
306
+ });
307
+ const pageProjects = Array.isArray(data.projects) ? data.projects : [];
308
+ projects.push(...pageProjects);
309
+ const nextCursor = data.pagination?.next;
310
+ if (!nextCursor || pageProjects.length === 0) {
311
+ break;
312
+ }
313
+ until = String(nextCursor);
314
+ }
315
+ return projects;
316
+ }
317
+ function getProjectGitHubRepo(project) {
318
+ const linkedOwner = project.link?.org?.trim();
319
+ const linkedRepo = project.link?.repo?.trim();
320
+ if (linkedOwner && linkedRepo) {
321
+ return { owner: linkedOwner, repo: linkedRepo };
322
+ }
323
+ const deploymentWithGitHubMeta = project.latestDeployments?.find((deployment) => deployment.meta?.githubOrg?.trim() && deployment.meta?.githubRepo?.trim());
324
+ const metaOwner = deploymentWithGitHubMeta?.meta?.githubOrg?.trim();
325
+ const metaRepo = deploymentWithGitHubMeta?.meta?.githubRepo?.trim();
326
+ return metaOwner && metaRepo ? { owner: metaOwner, repo: metaRepo } : null;
327
+ }
328
+ async function resolveSkillRunnerSelection(input) {
329
+ const url = new URL(`${input.baseUrl}/api/skill-runners/resolve`);
330
+ url.searchParams.set("team", input.team.id);
331
+ url.searchParams.set("q", input.requestedSkillRunnerId);
332
+ const response = await fetchJsonResponse(url.toString(), {
333
+ headers: authorizationHeaders(input.token)
334
+ });
335
+ if (!response.ok || !response.data.success) {
336
+ throw new Error(response.data.error || `Failed to resolve skill runner (${response.status}).`);
337
+ }
338
+ if (response.data.exactMatch?.id) {
339
+ return response.data.exactMatch.id;
340
+ }
341
+ const candidates = response.data.candidates || [];
342
+ if (candidates.length === 0) {
343
+ throw new Error(`No existing skill runner or skills.sh match found for "${input.requestedSkillRunnerId}". Try the full skills.sh path, for example owner/repo/skill-name.`);
344
+ }
345
+ const selected = await confirmSkillRunnerCandidate(input.requestedSkillRunnerId, candidates, input.options);
346
+ return selected.canonicalPath;
347
+ }
348
+ async function confirmSkillRunnerCandidate(requestedSkillRunnerId, candidates, options) {
349
+ if (options.yes) {
350
+ if (candidates.length === 1) {
351
+ const [candidate] = candidates;
352
+ log(options, `${chalk.green("✓")} Matched skills.sh skill: ${candidate.displayName} (${candidate.sourceUrl})`);
353
+ return candidate;
354
+ }
355
+ throw new Error(formatSkillRunnerCandidateRequiredMessage(requestedSkillRunnerId, candidates));
356
+ }
357
+ if (options.json || !process.stdin.isTTY || !process.stdout.isTTY) {
358
+ throw new Error(formatSkillRunnerCandidateRequiredMessage(requestedSkillRunnerId, candidates));
359
+ }
360
+ if (candidates.length === 1) {
361
+ const [candidate] = candidates;
362
+ console.log(`\n${chalk.bold("Found a skills.sh match for")} ${chalk.cyan(requestedSkillRunnerId)}:`);
363
+ printSkillRunnerCandidate(candidate);
364
+ const answer = await promptLine("Run this skill? [y/N] ");
365
+ if (isYesAnswer(answer)) {
366
+ return candidate;
367
+ }
368
+ throw new Error("Cancelled skill run.");
369
+ }
370
+ console.log(`\n${chalk.bold("Found multiple skills.sh matches for")} ${chalk.cyan(requestedSkillRunnerId)}:`);
371
+ candidates.forEach((candidate, index) => {
372
+ printSkillRunnerCandidate(candidate, index + 1);
373
+ });
374
+ for (;;) {
375
+ const answer = await promptLine(`Select a skill to run [1-${candidates.length}] or q: `);
376
+ if (/^(q|quit|cancel)$/i.test(answer)) {
377
+ throw new Error("Cancelled skill run.");
378
+ }
379
+ const selectedIndex = Number(answer);
380
+ if (Number.isInteger(selectedIndex) && selectedIndex >= 1 && selectedIndex <= candidates.length) {
381
+ return candidates[selectedIndex - 1];
382
+ }
383
+ console.log(chalk.yellow(`Enter a number from 1 to ${candidates.length}, or q to cancel.`));
384
+ }
385
+ }
386
+ function printSkillRunnerCandidate(candidate, index) {
387
+ const prefix = typeof index === "number" ? `${index}. ` : " ";
388
+ console.log(`${prefix}${chalk.bold(candidate.displayName)}`);
389
+ console.log(` ${chalk.gray(candidate.sourceUrl)}`);
390
+ console.log(` ${chalk.gray(`install: ${candidate.installArg}`)}`);
391
+ if (candidate.installsLabel) {
392
+ console.log(` ${chalk.gray(candidate.installsLabel)}`);
393
+ }
394
+ }
395
+ function formatSkillRunnerCandidateRequiredMessage(requestedSkillRunnerId, candidates) {
396
+ const choices = candidates
397
+ .slice(0, 5)
398
+ .map((candidate) => `${candidate.displayName} (${candidate.sourceUrl})`)
399
+ .join("; ");
400
+ const suffix = candidates.length === 1
401
+ ? "Re-run with the full skill path or pass --yes to accept this single match."
402
+ : "Re-run with the full skill path for the skill you want.";
403
+ return `Skill "${requestedSkillRunnerId}" does not exactly match an existing team skill runner. Candidate${candidates.length === 1 ? "" : "s"}: ${choices}. ${suffix}`;
404
+ }
405
+ async function promptLine(question) {
406
+ const { createInterface } = await import("readline/promises");
407
+ const readline = createInterface({
408
+ input: process.stdin,
409
+ output: process.stdout
410
+ });
411
+ try {
412
+ return (await readline.question(question)).trim();
413
+ }
414
+ finally {
415
+ readline.close();
416
+ }
417
+ }
418
+ function isYesAnswer(value) {
419
+ return /^(y|yes)$/i.test(value.trim());
420
+ }
421
+ async function installWorkerProject(baseUrl, token, team, options) {
422
+ const installSpinner = startSpinner(options, "Installing team skill runner project...");
423
+ if (!installSpinner) {
424
+ log(options, "Installing team skill runner project...");
425
+ }
426
+ let response;
427
+ try {
428
+ response = await fetchJsonResponse(`${baseUrl}/api/skill-runner-teams/worker`, {
429
+ method: "POST",
430
+ headers: {
431
+ ...authorizationHeaders(token),
432
+ "Content-Type": "application/json"
433
+ },
434
+ body: JSON.stringify({ team: team.id })
435
+ });
436
+ }
437
+ catch (error) {
438
+ installSpinner?.fail("Failed to install team skill runner project");
439
+ throw error;
440
+ }
441
+ if (!response.ok || !response.data?.success) {
442
+ installSpinner?.fail("Failed to install team skill runner project");
443
+ throw new Error(response.data?.error || `Failed to install runner project (${response.status}).`);
444
+ }
445
+ const workerStatus = response.data.settings?.workerStatus;
446
+ const project = response.data.project;
447
+ const isReady = response.data.installed &&
448
+ Boolean(project?.workerBaseUrl || response.data.settings?.workerBaseUrl) &&
449
+ !project?.missingEnvKeys?.length &&
450
+ project?.shellVersionStatus !== "outdated" &&
451
+ workerStatus === "ready";
452
+ if (!isReady) {
453
+ const message = response.data.message ||
454
+ `Runner project is not ready yet${workerStatus ? ` (status: ${workerStatus})` : ""}. Open the report link after setup completes, then retry.`;
455
+ installSpinner?.fail("Team skill runner project is not ready");
456
+ throw new Error(message);
457
+ }
458
+ if (installSpinner) {
459
+ installSpinner.succeed("Team skill runner project is ready");
460
+ }
461
+ else {
462
+ log(options, `${chalk.green("✓")} Team skill runner project is ready`);
463
+ }
464
+ }
465
+ async function startSkillRun(input) {
466
+ const response = await fetchJsonResponse(`${input.baseUrl}/api/cloud/start-fix`, {
467
+ method: "POST",
468
+ headers: {
469
+ ...authorizationHeaders(input.token),
470
+ "Content-Type": "application/json"
471
+ },
472
+ body: JSON.stringify({
473
+ userId: input.user.id,
474
+ skillRunnerId: input.skillRunnerId,
475
+ skillRunnerTeam: {
476
+ id: input.team.id,
477
+ slug: input.team.slug,
478
+ name: input.team.name,
479
+ isPersonal: input.team.isPersonal
480
+ },
481
+ projectName: input.project.name,
482
+ projectId: input.project.id,
483
+ teamId: input.teamScope,
484
+ projectDir: input.projectDir,
485
+ repoUrl: `https://github.com/${input.githubRepo.owner}/${input.githubRepo.repo}`,
486
+ repoOwner: input.githubRepo.owner,
487
+ repoName: input.githubRepo.repo,
488
+ repoBranch: input.branch,
489
+ baseBranch: input.branch,
490
+ submitPullRequest: true,
491
+ productionUrl: input.productionUrl,
492
+ useV0DevAgentRunner: true
493
+ })
494
+ });
495
+ return {
496
+ ...response.data,
497
+ success: response.ok && response.data?.success === true
498
+ };
499
+ }
500
+ async function waitForRun(baseUrl, userId, runId, options) {
501
+ log(options, "Waiting for run to finish...");
502
+ for (let attempt = 0; attempt < 720; attempt++) {
503
+ const run = await fetchRun(baseUrl, userId, runId);
504
+ if (run?.status && run.status !== "running") {
505
+ return run;
506
+ }
507
+ await new Promise((resolve) => setTimeout(resolve, 5000));
508
+ }
509
+ throw new Error("Timed out waiting for DeepSec run to finish.");
510
+ }
511
+ async function fetchRun(baseUrl, userId, runId) {
512
+ const apiUrl = new URL(`${baseUrl}/api/dev-agents/runs`);
513
+ apiUrl.searchParams.set("userId", userId);
514
+ const data = await fetchJson(apiUrl.toString());
515
+ const runs = Array.isArray(data.runs) ? data.runs : [];
516
+ return runs.find((run) => run.id === runId) || null;
517
+ }
518
+ function formatRunCompletion(run, reportUrl) {
519
+ const status = run.status || "unknown";
520
+ const cost = run.formattedCost || formatCost(run.cost ?? run.totalCost);
521
+ const duration = run.duration ? `, ${run.duration}` : "";
522
+ const costText = cost ? `, ${cost}` : "";
523
+ const errorText = run.error ? `\n${chalk.red(run.error)}` : "";
524
+ return `${chalk.bold("Run finished:")} ${status}${duration}${costText}\n${chalk.bold("Report:")} ${reportUrl}${errorText}`;
525
+ }
526
+ async function fetchJson(url, init) {
527
+ const response = await fetchJsonResponse(url, init);
528
+ if (!response.ok) {
529
+ throw new Error(formatFetchError(url, response.status, response.data));
530
+ }
531
+ return response.data;
532
+ }
533
+ async function fetchJsonResponse(url, init) {
534
+ const response = await fetch(url, init);
535
+ const text = await response.text();
536
+ let data = null;
537
+ if (text.trim()) {
538
+ try {
539
+ data = JSON.parse(text);
540
+ }
541
+ catch {
542
+ throw new Error(`${url} returned invalid JSON: ${text.slice(0, 300)}`);
543
+ }
544
+ }
545
+ return {
546
+ ok: response.ok,
547
+ status: response.status,
548
+ data: data
549
+ };
550
+ }
551
+ function formatFetchError(url, status, data) {
552
+ const error = typeof data === "object" && data !== null ? data.error : undefined;
553
+ const message = typeof error === "object" && error !== null
554
+ ? stringValue(error.message)
555
+ : stringValue(error) ||
556
+ (typeof data === "object" && data !== null ? stringValue(data.message) : "");
557
+ let hostname = "";
558
+ try {
559
+ hostname = new URL(url).hostname;
560
+ }
561
+ catch {
562
+ hostname = "";
563
+ }
564
+ if (hostname === "api.vercel.com" && status === 401) {
565
+ return "Vercel authentication failed. Run `vercel login`, or set VERCEL_TOKEN to a token that can access the target team.";
566
+ }
567
+ if (hostname === "api.vercel.com" && status === 403) {
568
+ return `Vercel API access was denied${message ? `: ${message}` : "."} Re-authenticate with \`vercel login\`; for SAML teams, re-authenticate that scope in the Vercel CLI, then retry.`;
569
+ }
570
+ return `${url} failed (${status})${message ? `: ${message}` : ""}`;
571
+ }
572
+ function authorizationHeaders(token) {
573
+ return {
574
+ Authorization: `Bearer ${token}`
575
+ };
576
+ }
577
+ function normalizeBaseUrl(value) {
578
+ return value.replace(/\/+$/, "");
579
+ }
580
+ function stringValue(value) {
581
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
582
+ }
583
+ function isSkillRunnerWorkerProject(name) {
584
+ const normalizedName = name.trim().toLowerCase();
585
+ return normalizedName === "d3k-skill-runner" || normalizedName.startsWith("d3k-skill-runner-");
586
+ }
587
+ function formatCost(value) {
588
+ if (typeof value === "number" && Number.isFinite(value)) {
589
+ return `$${value.toFixed(2)}`;
590
+ }
591
+ if (typeof value !== "string") {
592
+ return null;
593
+ }
594
+ const parsed = Number(value.replace(/[^0-9.]/g, ""));
595
+ if (!Number.isFinite(parsed)) {
596
+ return value;
597
+ }
598
+ return `$${parsed.toFixed(2)}`;
599
+ }
600
+ function log(options, message) {
601
+ if (!options.json) {
602
+ console.log(message);
603
+ }
604
+ }
605
+ function startSpinner(options, message) {
606
+ if (options.json || !process.stderr.isTTY) {
607
+ return null;
608
+ }
609
+ return ora({
610
+ text: message,
611
+ spinner: "dots",
612
+ stream: process.stderr
613
+ }).start();
614
+ }
615
+ //# sourceMappingURL=skill-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-runner.js","sourceRoot":"","sources":["../../src/commands/skill-runner.ts"],"names":[],"mappings":"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"}