@fentaris/cli 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ import { printHealthResults, section } from "../ui/format.js";
4
4
  export async function runCheck(command, runtime) {
5
5
  section(runtime, "Project Check");
6
6
  const project = await discoverProject(runtime.cwd);
7
- const results = await getProjectCheckResults(project, command.options.offline === true);
7
+ const results = await getProjectCheckResults(project, command.options.offline === true, runtime);
8
8
  printHealthResults(runtime, results);
9
9
  if (hasFailure(results) || (command.options.strict === true && hasWarning(results))) {
10
10
  throw new Error("Project check reported issues.");
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAmB,EAAE,OAAgB;IAClE,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACxF,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAmB,EAAE,OAAgB;IAClE,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;IACjG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF"}
@@ -1,9 +1,19 @@
1
1
  import { getDoctorResults, hasFailure, hasWarning } from "../domain/health/checks.js";
2
+ import { numberOption } from "../shared/utils.js";
2
3
  import { printHealthResults, section } from "../ui/format.js";
3
4
  export async function runDoctor(command, runtime) {
4
- section(runtime, "Doctor");
5
- const results = await getDoctorResults(runtime, command.options.fix === true);
6
- printHealthResults(runtime, results);
5
+ const results = await getDoctorResults(runtime, {
6
+ fix: command.options.fix === true,
7
+ runtime: command.options.runtime === true,
8
+ timeoutMs: numberOption(command.options, "timeout", 10_000),
9
+ });
10
+ if (command.options.json === true) {
11
+ runtime.out.log(JSON.stringify({ results }, null, 2));
12
+ }
13
+ else {
14
+ section(runtime, "Doctor");
15
+ printHealthResults(runtime, results);
16
+ }
7
17
  if (hasFailure(results) || (command.options.strict === true && hasWarning(results))) {
8
18
  throw new Error("Doctor reported issues.");
9
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAmB,EAAE,OAAgB;IACnE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC9E,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAmB,EAAE,OAAgB;IACnE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;QAC9C,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI;QACzC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;KAC5D,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3B,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import type { HealthResult, ProjectDiscovery, Runtime } from "../../shared/types.js";
2
- export declare function getDoctorResults(runtime: Runtime, shouldFix: boolean): Promise<HealthResult[]>;
3
- export declare function getProjectCheckResults(project: ProjectDiscovery, offline: boolean): Promise<HealthResult[]>;
2
+ export type DoctorOptions = {
3
+ fix?: boolean;
4
+ runtime?: boolean;
5
+ timeoutMs?: number;
6
+ };
7
+ export declare function getDoctorResults(runtime: Runtime, options?: boolean | DoctorOptions): Promise<HealthResult[]>;
8
+ export declare function getProjectCheckResults(project: ProjectDiscovery, offline: boolean, runtime?: Runtime): Promise<HealthResult[]>;
4
9
  export declare function hasFailure(results: HealthResult[]): boolean;
5
10
  export declare function hasWarning(results: HealthResult[]): boolean;
6
11
  //# sourceMappingURL=checks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/domain/health/checks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAwCpG;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAuCjH;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAE3D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAE3D"}
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/domain/health/checks.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAiC,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGpH,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAWF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,OAAO,GAAG,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA0CvH;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgCpI;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAE3D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAE3D"}
@@ -1,39 +1,42 @@
1
+ import { spawn } from "node:child_process";
1
2
  import { constants as fsConstants } from "node:fs";
2
- import { mkdir } from "node:fs/promises";
3
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
4
+ import net from "node:net";
3
5
  import path from "node:path";
6
+ import { FentarisAuth } from "@fentaris/core";
4
7
  import { authDir, supportedPackageManagers } from "../../shared/constants.js";
5
- import { canAccess, exists, numberOption, readJson } from "../../shared/utils.js";
6
- export async function getDoctorResults(runtime, shouldFix) {
8
+ import { canAccess, exists, isNodeError, readJson } from "../../shared/utils.js";
9
+ export async function getDoctorResults(runtime, options = {}) {
10
+ const normalized = normalizeDoctorOptions(options);
7
11
  const results = [
8
- {
9
- group: "Runtime",
10
- label: "Node.js",
11
- status: Number(process.versions.node.split(".")[0]) >= 20 ? "pass" : "fail",
12
- detail: `Detected ${process.versions.node}; Fentaris requires Node 20 or newer.`,
13
- },
14
- ...supportedPackageManagers.map((manager) => ({
15
- group: "Runtime",
16
- label: manager,
17
- status: runtime.probe(manager, ["--version"]) ? "pass" : "warn",
18
- detail: runtime.probe(manager, ["--version"]) ? "Available" : "Not found",
19
- })),
20
- {
21
- group: "Runtime",
22
- label: "git",
23
- status: runtime.probe("git", ["--version"]) ? "pass" : "fail",
24
- detail: runtime.probe("git", ["--version"]) ? "Available" : "Required for project initialization.",
25
- },
26
- {
27
- group: "Runtime",
28
- label: "Docker",
29
- status: runtime.probe("docker", ["--version"]) ? "pass" : "warn",
30
- detail: runtime.probe("docker", ["--version"]) ? "Available" : "Optional for future container workflows.",
31
- },
32
- await cliDirectoryResult(runtime.cwd),
12
+ ...environmentResults(runtime),
33
13
  await writableResult(runtime.cwd),
34
- await portResult(numberOption({}, "port", 4000)),
14
+ await cliDirectoryResult(runtime.cwd),
35
15
  ];
36
- if (shouldFix) {
16
+ const project = await discoverProjectForDoctor(runtime.cwd);
17
+ results.push(project.result);
18
+ results.push(...(project.validationResults ?? []));
19
+ if (project.discovery) {
20
+ results.push(...await projectDiscoveryResults(project.discovery));
21
+ const validation = await configResults(project.discovery);
22
+ results.push(...validation.results);
23
+ results.push(...await packageResults(project.discovery));
24
+ results.push(...await authResults(project.discovery, runtime));
25
+ results.push(await portResult(project.discovery.config.port));
26
+ if (normalized.runtime) {
27
+ results.push(await runtimeEndpointResult(project.discovery, runtime, normalized.timeoutMs));
28
+ }
29
+ }
30
+ else if (normalized.runtime) {
31
+ results.push({
32
+ group: "Runtime",
33
+ label: "runtime probe",
34
+ status: "fail",
35
+ detail: "Skipped because no Fentaris project was discovered.",
36
+ hint: "Run doctor --runtime inside a generated Fentaris project.",
37
+ });
38
+ }
39
+ if (normalized.fix) {
37
40
  for (const result of results.filter((item) => item.fix)) {
38
41
  if (await runtime.prompt.confirm(`Apply fix for ${result.label}?`)) {
39
42
  await result.fix?.();
@@ -42,7 +45,7 @@ export async function getDoctorResults(runtime, shouldFix) {
42
45
  }
43
46
  return results;
44
47
  }
45
- export async function getProjectCheckResults(project, offline) {
48
+ export async function getProjectCheckResults(project, offline, runtime) {
46
49
  const expectedFiles = [
47
50
  "package.json",
48
51
  "tsconfig.json",
@@ -63,19 +66,12 @@ export async function getProjectCheckResults(project, offline) {
63
66
  detail: fileExists ? "Found" : "Missing",
64
67
  });
65
68
  }
66
- const packageJson = await readJson(path.join(project.root, "package.json"));
67
- results.push({
68
- group: "Package",
69
- label: "package metadata",
70
- status: hasPackageMetadata(packageJson) ? "pass" : "fail",
71
- detail: hasPackageMetadata(packageJson) ? "Fentaris scripts and dependency are present." : "Expected @fentaris/core dependency and dev/build scripts.",
72
- });
73
- results.push({
74
- group: "Auth",
75
- label: "local auth references",
76
- status: project.config.authDir === authDir ? "pass" : "warn",
77
- detail: `Using ${project.config.authDir}`,
78
- });
69
+ results.push(...(await configResults(project)).results);
70
+ results.push(...await packageResults(project));
71
+ results.push(...await authResults(project, runtime));
72
+ if (!offline) {
73
+ results.push(await portResult(project.config.port));
74
+ }
79
75
  return results;
80
76
  }
81
77
  export function hasFailure(results) {
@@ -84,18 +80,406 @@ export function hasFailure(results) {
84
80
  export function hasWarning(results) {
85
81
  return results.some((result) => result.status === "warn");
86
82
  }
87
- function hasPackageMetadata(value) {
88
- if (!value || typeof value !== "object") {
89
- return false;
83
+ function normalizeDoctorOptions(options) {
84
+ if (typeof options === "boolean") {
85
+ return { fix: options, runtime: false, timeoutMs: 10_000 };
86
+ }
87
+ return {
88
+ fix: options.fix === true,
89
+ runtime: options.runtime === true,
90
+ timeoutMs: normalizeTimeout(options.timeoutMs),
91
+ };
92
+ }
93
+ function environmentResults(runtime) {
94
+ return [
95
+ {
96
+ group: "Environment",
97
+ label: "Node.js",
98
+ status: Number(process.versions.node.split(".")[0]) >= 20 ? "pass" : "fail",
99
+ detail: `Detected ${process.versions.node}; Fentaris requires Node 20 or newer.`,
100
+ },
101
+ ...supportedPackageManagers.map((manager) => {
102
+ const present = runtime.probe(manager, ["--version"]);
103
+ return {
104
+ group: "Environment",
105
+ label: manager,
106
+ status: present ? "pass" : "warn",
107
+ detail: present ? "Available" : "Not found",
108
+ hint: present ? undefined : `Install ${manager} or use a package manager that is available locally.`,
109
+ };
110
+ }),
111
+ {
112
+ group: "Environment",
113
+ label: "git",
114
+ status: runtime.probe("git", ["--version"]) ? "pass" : "fail",
115
+ detail: runtime.probe("git", ["--version"]) ? "Available" : "Required for project initialization.",
116
+ },
117
+ {
118
+ group: "Environment",
119
+ label: "Docker",
120
+ status: runtime.probe("docker", ["--version"]) ? "pass" : "warn",
121
+ detail: runtime.probe("docker", ["--version"]) ? "Available" : "Optional for future container workflows.",
122
+ },
123
+ ];
124
+ }
125
+ async function discoverProjectForDoctor(fromDir) {
126
+ let current = path.resolve(fromDir);
127
+ while (true) {
128
+ const configPath = path.join(current, "fentaris.json");
129
+ if (await exists(configPath)) {
130
+ const validation = await readAndValidateProjectConfig(configPath, current);
131
+ if (!validation.config) {
132
+ return {
133
+ result: {
134
+ group: "Project",
135
+ label: "project root",
136
+ status: "fail",
137
+ detail: `Found ${configPath}, but it is not valid.`,
138
+ hint: "Fix fentaris.json before running project commands.",
139
+ },
140
+ validationResults: validation.results,
141
+ };
142
+ }
143
+ return {
144
+ result: { group: "Project", label: "project root", status: "pass", detail: current },
145
+ discovery: { root: current, configPath, config: validation.config },
146
+ };
147
+ }
148
+ const legacyConfigPath = path.join(current, "fentaris.config.json");
149
+ if (await exists(legacyConfigPath)) {
150
+ const validation = await readAndValidateProjectConfig(legacyConfigPath, current);
151
+ if (!validation.config) {
152
+ return {
153
+ result: {
154
+ group: "Project",
155
+ label: "project root",
156
+ status: "fail",
157
+ detail: `Found ${legacyConfigPath}, but it is not valid.`,
158
+ hint: "Fix or migrate the legacy config before running project commands.",
159
+ },
160
+ validationResults: validation.results,
161
+ };
162
+ }
163
+ return {
164
+ result: {
165
+ group: "Project",
166
+ label: "project root",
167
+ status: "warn",
168
+ detail: current,
169
+ hint: "Using legacy fentaris.config.json; rename it to fentaris.json before alpha publishing.",
170
+ },
171
+ discovery: { root: current, configPath: legacyConfigPath, config: validation.config },
172
+ };
173
+ }
174
+ const parent = path.dirname(current);
175
+ if (parent === current) {
176
+ return {
177
+ result: {
178
+ group: "Project",
179
+ label: "project root",
180
+ status: "warn",
181
+ detail: "No Fentaris project found from current directory.",
182
+ hint: "Run this command inside a generated Fentaris project for project diagnostics.",
183
+ },
184
+ };
185
+ }
186
+ current = parent;
187
+ }
188
+ }
189
+ async function projectDiscoveryResults(project) {
190
+ const entrypointPath = path.join(project.root, project.config.entrypoint);
191
+ const authPath = path.join(project.root, project.config.authDir);
192
+ const generatedFiles = [
193
+ "package.json",
194
+ "tsconfig.json",
195
+ ".env.example",
196
+ ".gitignore",
197
+ "README.md",
198
+ project.config.entrypoint,
199
+ ];
200
+ const results = [
201
+ {
202
+ group: "Project",
203
+ label: "config file",
204
+ status: path.basename(project.configPath) === "fentaris.json" ? "pass" : "warn",
205
+ detail: project.configPath,
206
+ hint: path.basename(project.configPath) === "fentaris.json" ? undefined : "Rename the legacy config to fentaris.json.",
207
+ },
208
+ {
209
+ group: "Project",
210
+ label: "entrypoint",
211
+ status: await exists(entrypointPath) ? "pass" : "fail",
212
+ detail: project.config.entrypoint,
213
+ hint: await exists(entrypointPath) ? undefined : "Create the configured entrypoint or update fentaris.json.",
214
+ },
215
+ {
216
+ group: "Project",
217
+ label: "auth directory",
218
+ status: await exists(authPath) ? "pass" : "warn",
219
+ detail: project.config.authDir,
220
+ hint: await exists(authPath) ? undefined : "Run doctor --fix to create the configured auth directory.",
221
+ fix: async () => {
222
+ await mkdir(authPath, { recursive: true });
223
+ },
224
+ },
225
+ ];
226
+ for (const file of generatedFiles) {
227
+ const filePath = path.join(project.root, file);
228
+ const present = await exists(filePath);
229
+ results.push({
230
+ group: "Project",
231
+ label: file,
232
+ status: present ? "pass" : "warn",
233
+ detail: present ? "Found" : "Missing",
234
+ hint: present ? undefined : "Generated projects are expected to include this file.",
235
+ });
236
+ }
237
+ return results;
238
+ }
239
+ async function configResults(project) {
240
+ return readAndValidateProjectConfig(project.configPath, project.root);
241
+ }
242
+ async function readAndValidateProjectConfig(configPath, root) {
243
+ const json = await readJsonResult(configPath);
244
+ if (!json.ok) {
245
+ return {
246
+ results: [{
247
+ group: "Config",
248
+ label: path.basename(configPath),
249
+ status: "fail",
250
+ detail: json.message,
251
+ hint: "Fix the JSON syntax before running Fentaris project commands.",
252
+ }],
253
+ };
254
+ }
255
+ if (!json.value || typeof json.value !== "object" || Array.isArray(json.value)) {
256
+ return {
257
+ results: [{
258
+ group: "Config",
259
+ label: path.basename(configPath),
260
+ status: "fail",
261
+ detail: "Config must be a JSON object.",
262
+ }],
263
+ };
264
+ }
265
+ const raw = json.value;
266
+ const results = [];
267
+ const name = stringField(raw, "name", results);
268
+ const packageManager = packageManagerField(raw, results);
269
+ const entrypoint = relativePathField(raw, "entrypoint", root, results);
270
+ const port = portField(raw, results);
271
+ const proxyPath = proxyPathField(raw, results);
272
+ const configuredAuthDir = relativePathField(raw, "authDir", root, results);
273
+ if (results.some((result) => result.status === "fail")) {
274
+ return { results };
275
+ }
276
+ return {
277
+ config: {
278
+ name,
279
+ packageManager,
280
+ entrypoint,
281
+ port,
282
+ path: proxyPath,
283
+ authDir: configuredAuthDir,
284
+ },
285
+ results: [
286
+ {
287
+ group: "Config",
288
+ label: path.basename(configPath),
289
+ status: "pass",
290
+ detail: "JSON shape is valid.",
291
+ },
292
+ ...results,
293
+ ],
294
+ };
295
+ }
296
+ async function packageResults(project) {
297
+ const packagePath = path.join(project.root, "package.json");
298
+ const packageJson = await readJsonResult(packagePath);
299
+ if (!packageJson.ok || !packageJson.value || typeof packageJson.value !== "object" || Array.isArray(packageJson.value)) {
300
+ return [{
301
+ group: "Package",
302
+ label: "package.json",
303
+ status: "fail",
304
+ detail: packageJson.ok ? "package.json must be a JSON object." : packageJson.message,
305
+ hint: "Create a valid package.json before running Fentaris scripts.",
306
+ }];
307
+ }
308
+ const value = packageJson.value;
309
+ const dependencies = { ...value.dependencies, ...value.devDependencies };
310
+ const scripts = value.scripts ?? {};
311
+ const results = [
312
+ {
313
+ group: "Package",
314
+ label: "@fentaris/core",
315
+ status: value.dependencies?.["@fentaris/core"] ? "pass" : "fail",
316
+ detail: value.dependencies?.["@fentaris/core"] ? `Declared as ${value.dependencies["@fentaris/core"]}` : "Missing from dependencies.",
317
+ hint: value.dependencies?.["@fentaris/core"] ? undefined : "Add @fentaris/core to dependencies, not only devDependencies.",
318
+ },
319
+ scriptResult(scripts, "dev"),
320
+ scriptResult(scripts, "build"),
321
+ {
322
+ group: "Package",
323
+ label: "start script",
324
+ status: scripts.start ? "pass" : "warn",
325
+ detail: scripts.start ? scripts.start : "Missing",
326
+ hint: scripts.start ? undefined : "Useful for built runtime smoke checks, but not required for local dev.",
327
+ },
328
+ {
329
+ group: "Package",
330
+ label: "tsx",
331
+ status: scripts.dev?.includes("tsx") && !dependencies.tsx ? "fail" : "pass",
332
+ detail: scripts.dev?.includes("tsx") ? dependencies.tsx ? `Declared as ${dependencies.tsx}` : "dev script uses tsx but dependency is missing." : "Not required by dev script.",
333
+ },
334
+ {
335
+ group: "Package",
336
+ label: "typescript",
337
+ status: scripts.build?.includes("tsc") && !dependencies.typescript ? "fail" : "pass",
338
+ detail: scripts.build?.includes("tsc") ? dependencies.typescript ? `Declared as ${dependencies.typescript}` : "build script uses tsc but dependency is missing." : "Not required by build script.",
339
+ },
340
+ await tsconfigResult(project.root),
341
+ await lockfileResult(project.root, project.config.packageManager),
342
+ ];
343
+ return results;
344
+ }
345
+ async function authResults(project, runtime) {
346
+ const authPath = path.join(project.root, project.config.authDir);
347
+ const credentialsPath = path.join(authPath, "credentials.enc.json");
348
+ const authDirectoryExists = await exists(authPath);
349
+ const credentialsExist = await exists(credentialsPath);
350
+ const key = runtime?.env.FENTARIS_AUTH_KEY;
351
+ const results = [
352
+ {
353
+ group: "Auth",
354
+ label: "local auth directory",
355
+ status: authDirectoryExists ? "pass" : "warn",
356
+ detail: authDirectoryExists ? project.config.authDir : "Missing",
357
+ hint: authDirectoryExists ? undefined : "Run doctor --fix to create the configured auth directory.",
358
+ fix: async () => {
359
+ await mkdir(authPath, { recursive: true });
360
+ },
361
+ },
362
+ {
363
+ group: "Auth",
364
+ label: "credentials.enc.json",
365
+ status: credentialsExist ? "pass" : "warn",
366
+ detail: credentialsExist ? "Found encrypted credential store." : "Missing encrypted credential store.",
367
+ hint: credentialsExist ? undefined : "Run fentaris init or fentaris auth init to create local credentials.",
368
+ },
369
+ {
370
+ group: "Auth",
371
+ label: "FENTARIS_AUTH_KEY",
372
+ status: key?.trim() ? "pass" : "warn",
373
+ detail: key?.trim() ? "Set" : "Not set",
374
+ hint: key?.trim() ? undefined : "Set FENTARIS_AUTH_KEY before decrypting local credentials. The value is never printed by doctor.",
375
+ },
376
+ await gitignoreAuthResult(project.root, project.config.authDir),
377
+ ];
378
+ if (credentialsExist && key?.trim()) {
379
+ results.push(await credentialDecryptResult(credentialsPath, key));
380
+ }
381
+ else if (credentialsExist) {
382
+ results.push({
383
+ group: "Auth",
384
+ label: "credential decrypt",
385
+ status: "warn",
386
+ detail: "Skipped because FENTARIS_AUTH_KEY is not set.",
387
+ hint: "Set FENTARIS_AUTH_KEY to verify encrypted credentials locally.",
388
+ });
389
+ }
390
+ return results;
391
+ }
392
+ async function runtimeEndpointResult(project, runtime, timeoutMs) {
393
+ const command = project.config.packageManager;
394
+ const args = packageScriptArgs(project.config.packageManager, "dev");
395
+ const child = spawn(command, args, {
396
+ cwd: project.root,
397
+ env: { ...process.env, ...runtime.env },
398
+ stdio: "ignore",
399
+ });
400
+ let spawnError;
401
+ child.once("error", (error) => {
402
+ spawnError = error;
403
+ });
404
+ try {
405
+ const portOpen = await waitForPort(project.config.port, timeoutMs);
406
+ if (!portOpen) {
407
+ return {
408
+ group: "Runtime",
409
+ label: "dev server",
410
+ status: "fail",
411
+ detail: spawnError?.message ?? `Port ${project.config.port} did not open within ${timeoutMs}ms.`,
412
+ hint: `${command} ${args.join(" ")} did not expose the configured port in time.`,
413
+ };
414
+ }
415
+ const probe = await probeMcpEndpoint(project, runtime, timeoutMs);
416
+ return probe;
417
+ }
418
+ finally {
419
+ child.kill("SIGTERM");
420
+ }
421
+ }
422
+ async function probeMcpEndpoint(project, runtime, timeoutMs) {
423
+ const url = `http://127.0.0.1:${project.config.port}${project.config.path}`;
424
+ const headers = { "content-type": "application/json", accept: "application/json, text/event-stream" };
425
+ const apiKey = runtime.env.FENTARIS_GUEST_API_KEY ?? runtime.env.FENTARIS_ADMIN_API_KEY ?? runtime.env.FENTARIS_API_KEY;
426
+ if (apiKey?.trim()) {
427
+ headers["x-fentaris-api-key"] = apiKey;
428
+ }
429
+ const controller = new AbortController();
430
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
431
+ try {
432
+ const response = await fetch(url, {
433
+ method: "POST",
434
+ headers,
435
+ body: JSON.stringify({
436
+ jsonrpc: "2.0",
437
+ id: "doctor-initialize",
438
+ method: "initialize",
439
+ params: {
440
+ protocolVersion: "2024-11-05",
441
+ capabilities: {},
442
+ clientInfo: { name: "fentaris-doctor", version: "0.1.0" },
443
+ },
444
+ }),
445
+ signal: controller.signal,
446
+ });
447
+ if (response.ok) {
448
+ return {
449
+ group: "Runtime",
450
+ label: "MCP initialize",
451
+ status: "pass",
452
+ detail: `Endpoint responded at ${url}`,
453
+ };
454
+ }
455
+ return {
456
+ group: "Runtime",
457
+ label: "MCP initialize",
458
+ status: response.status === 401 || response.status === 403 ? "warn" : "fail",
459
+ detail: `Endpoint returned HTTP ${response.status}.`,
460
+ hint: response.status === 401 || response.status === 403
461
+ ? "Runtime is reachable but authentication failed. Provide FENTARIS_GUEST_API_KEY, FENTARIS_ADMIN_API_KEY, or FENTARIS_API_KEY."
462
+ : "Check the configured path and runtime startup logs.",
463
+ };
464
+ }
465
+ catch (error) {
466
+ return {
467
+ group: "Runtime",
468
+ label: "MCP initialize",
469
+ status: "fail",
470
+ detail: error instanceof Error ? error.message : String(error),
471
+ hint: "The runtime port opened, but doctor could not complete an MCP initialize probe.",
472
+ };
473
+ }
474
+ finally {
475
+ clearTimeout(timer);
90
476
  }
91
- const packageJson = value;
92
- return Boolean(packageJson.dependencies?.["@fentaris/core"] && packageJson.scripts?.dev && packageJson.scripts?.build);
93
477
  }
94
478
  async function writableResult(dir) {
95
479
  const writable = await canAccess(dir, fsConstants.W_OK);
96
480
  return {
97
481
  group: "Filesystem",
98
- label: "CLI writable directory",
482
+ label: "current directory",
99
483
  status: writable ? "pass" : "fail",
100
484
  detail: writable ? `Writable: ${dir}` : `Cannot write to ${dir}`,
101
485
  };
@@ -114,11 +498,221 @@ async function cliDirectoryResult(cwd) {
114
498
  };
115
499
  }
116
500
  async function portResult(port) {
501
+ const available = await isPortAvailable(port);
117
502
  return {
118
503
  group: "Network",
119
504
  label: `localhost:${port}`,
120
- status: "pass",
121
- detail: "Port check is deferred to runtime startup.",
505
+ status: available ? "pass" : "warn",
506
+ detail: available ? "Port is available." : "Port is already in use.",
507
+ hint: available ? undefined : "Stop the conflicting process or change port in fentaris.json.",
508
+ };
509
+ }
510
+ function scriptResult(scripts, name) {
511
+ return {
512
+ group: "Package",
513
+ label: `${name} script`,
514
+ status: scripts[name] ? "pass" : "fail",
515
+ detail: scripts[name] ?? "Missing",
516
+ };
517
+ }
518
+ async function tsconfigResult(root) {
519
+ const configPath = path.join(root, "tsconfig.json");
520
+ const present = await exists(configPath);
521
+ if (!present) {
522
+ return {
523
+ group: "Package",
524
+ label: "tsconfig.json",
525
+ status: "fail",
526
+ detail: "Missing",
527
+ };
528
+ }
529
+ const json = await readJsonResult(configPath);
530
+ return {
531
+ group: "Package",
532
+ label: "tsconfig.json",
533
+ status: json.ok ? "pass" : "fail",
534
+ detail: json.ok ? "Valid JSON" : json.message,
535
+ };
536
+ }
537
+ async function lockfileResult(root, packageManager) {
538
+ const expected = packageManager === "pnpm" ? ["pnpm-lock.yaml"] : packageManager === "npm" ? ["package-lock.json"] : ["bun.lockb", "bun.lock"];
539
+ const found = [];
540
+ for (const file of expected) {
541
+ if (await exists(path.join(root, file))) {
542
+ found.push(file);
543
+ }
544
+ }
545
+ return {
546
+ group: "Package",
547
+ label: "lockfile",
548
+ status: found.length > 0 ? "pass" : "warn",
549
+ detail: found.length > 0 ? found.join(", ") : `No ${packageManager} lockfile found.`,
550
+ hint: found.length > 0 ? undefined : `Run ${packageManager} install to create the expected lockfile.`,
122
551
  };
123
552
  }
553
+ async function gitignoreAuthResult(root, configuredAuthDir) {
554
+ const gitignorePath = path.join(root, ".gitignore");
555
+ const gitignoreEntry = `${configuredAuthDir.replace(/\\/g, "/").replace(/\/+$/u, "")}/`;
556
+ const present = await exists(gitignorePath);
557
+ if (!present) {
558
+ return {
559
+ group: "Auth",
560
+ label: ".gitignore auth entry",
561
+ status: "warn",
562
+ detail: ".gitignore is missing.",
563
+ hint: `doctor --fix can create .gitignore with ${gitignoreEntry} ignored.`,
564
+ fix: async () => {
565
+ await writeFile(gitignorePath, `${gitignoreEntry}\n`);
566
+ },
567
+ };
568
+ }
569
+ const contents = await readFile(gitignorePath, "utf8");
570
+ const gitignoreEntryWithoutSlash = gitignoreEntry.slice(0, -1);
571
+ const ignoresAuth = contents
572
+ .split(/\r?\n/)
573
+ .some((line) => line.trim() === gitignoreEntry || line.trim() === gitignoreEntryWithoutSlash);
574
+ return {
575
+ group: "Auth",
576
+ label: ".gitignore auth entry",
577
+ status: ignoresAuth ? "pass" : "warn",
578
+ detail: ignoresAuth ? `${gitignoreEntry} is ignored.` : `${gitignoreEntry} is not ignored.`,
579
+ hint: ignoresAuth ? undefined : `doctor --fix can add ${gitignoreEntry} to .gitignore.`,
580
+ fix: async () => {
581
+ await writeFile(gitignorePath, `${contents.trimEnd()}\n${gitignoreEntry}\n`);
582
+ },
583
+ };
584
+ }
585
+ async function credentialDecryptResult(credentialsPath, key) {
586
+ try {
587
+ const raw = JSON.parse(await readFile(credentialsPath, "utf8"));
588
+ FentarisAuth.decryptCredentials(raw, key);
589
+ return {
590
+ group: "Auth",
591
+ label: "credential decrypt",
592
+ status: "pass",
593
+ detail: "Encrypted credentials can be decrypted.",
594
+ };
595
+ }
596
+ catch (error) {
597
+ return {
598
+ group: "Auth",
599
+ label: "credential decrypt",
600
+ status: "fail",
601
+ detail: error instanceof Error ? error.message : "Credential decrypt failed.",
602
+ hint: "Verify FENTARIS_AUTH_KEY matches the local credential store. Secrets are not printed.",
603
+ };
604
+ }
605
+ }
606
+ async function readJsonResult(filePath) {
607
+ try {
608
+ return { ok: true, value: await readJson(filePath) };
609
+ }
610
+ catch (error) {
611
+ if (isNodeError(error, "ENOENT")) {
612
+ return { ok: false, message: "Missing" };
613
+ }
614
+ return { ok: false, message: error instanceof Error ? error.message : String(error) };
615
+ }
616
+ }
617
+ function stringField(raw, name, results) {
618
+ const value = raw[name];
619
+ const valid = typeof value === "string" && value.trim().length > 0;
620
+ results.push({
621
+ group: "Config",
622
+ label: name,
623
+ status: valid ? "pass" : "fail",
624
+ detail: valid ? value : "Missing or empty",
625
+ });
626
+ return valid ? value : "";
627
+ }
628
+ function packageManagerField(raw, results) {
629
+ const value = raw.packageManager;
630
+ const valid = typeof value === "string" && supportedPackageManagers.includes(value);
631
+ results.push({
632
+ group: "Config",
633
+ label: "packageManager",
634
+ status: valid ? "pass" : "fail",
635
+ detail: valid ? value : `Expected one of: ${supportedPackageManagers.join(", ")}`,
636
+ });
637
+ return valid ? value : "pnpm";
638
+ }
639
+ function relativePathField(raw, name, root, results) {
640
+ const value = raw[name];
641
+ const validString = typeof value === "string" && value.trim().length > 0;
642
+ const absolute = validString ? path.resolve(root, value) : root;
643
+ const insideRoot = absolute === root || absolute.startsWith(`${root}${path.sep}`);
644
+ const relative = validString && !path.isAbsolute(value) && insideRoot && (name !== "authDir" || value !== ".");
645
+ const status = relative ? "pass" : "fail";
646
+ results.push({
647
+ group: "Config",
648
+ label: name,
649
+ status,
650
+ detail: validString ? value : "Missing or empty",
651
+ hint: relative ? undefined : name === "authDir" && value === "." ? "authDir must not point at the project root." : `${name} must be a relative path inside the project root.`,
652
+ });
653
+ return relative ? value : name === "authDir" ? authDir : "";
654
+ }
655
+ function portField(raw, results) {
656
+ const value = raw.port;
657
+ const valid = typeof value === "number" && Number.isInteger(value) && value > 0 && value <= 65_535;
658
+ results.push({
659
+ group: "Config",
660
+ label: "port",
661
+ status: valid ? "pass" : "fail",
662
+ detail: valid ? String(value) : "Expected an integer between 1 and 65535.",
663
+ });
664
+ return valid ? value : 4000;
665
+ }
666
+ function proxyPathField(raw, results) {
667
+ const value = raw.path;
668
+ const valid = typeof value === "string" && /^\/(?!\/)(?!.*\/\/)(?!.*\s).*/.test(value);
669
+ results.push({
670
+ group: "Config",
671
+ label: "path",
672
+ status: valid ? "pass" : "fail",
673
+ detail: valid ? value : "Expected a path like /mcp without spaces or duplicate slashes.",
674
+ });
675
+ return valid ? value : "/mcp";
676
+ }
677
+ function normalizeTimeout(value) {
678
+ return Number.isFinite(value) && value !== undefined && value > 0 ? value : 10_000;
679
+ }
680
+ function packageScriptArgs(packageManager, script) {
681
+ if (packageManager === "npm") {
682
+ return ["run", script];
683
+ }
684
+ return script === "dev" ? ["dev"] : ["run", script];
685
+ }
686
+ function isPortAvailable(port) {
687
+ return new Promise((resolve) => {
688
+ const server = net.createServer();
689
+ server.once("error", () => resolve(false));
690
+ server.once("listening", () => {
691
+ server.close(() => resolve(true));
692
+ });
693
+ server.listen(port, "127.0.0.1");
694
+ });
695
+ }
696
+ function waitForPort(port, timeoutMs) {
697
+ const deadline = Date.now() + timeoutMs;
698
+ return new Promise((resolve) => {
699
+ const attempt = () => {
700
+ const socket = net.connect(port, "127.0.0.1");
701
+ socket.once("connect", () => {
702
+ socket.destroy();
703
+ resolve(true);
704
+ });
705
+ socket.once("error", () => {
706
+ socket.destroy();
707
+ if (Date.now() >= deadline) {
708
+ resolve(false);
709
+ }
710
+ else {
711
+ setTimeout(attempt, 250);
712
+ }
713
+ });
714
+ };
715
+ attempt();
716
+ });
717
+ }
124
718
  //# sourceMappingURL=checks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../src/domain/health/checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../src/domain/health/checks.ts"],"names":[],"mappings":"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"}
@@ -103,14 +103,14 @@ const admin = user("admin", {
103
103
  });
104
104
 
105
105
  const limitedPolicy = policy("limited-demo")
106
- .server("demo-files")
106
+ .mcp("demo-files")
107
107
  .allow("list_allowed_directories")
108
- .server("demo-files")
108
+ .mcp("demo-files")
109
109
  .allow("list_directory")
110
- .server("specification")
110
+ .mcp("specification")
111
111
  .allow("*");
112
112
 
113
- const adminPolicy = policy("admin-full-access").server("*").allow("*");
113
+ const adminPolicy = policy("admin-full-access").mcp("*").allow("*");
114
114
 
115
115
  const limiter = new SlidingWindowRateLimiter({
116
116
  store: new MemoryRateLimitStore(),
@@ -143,12 +143,12 @@ const app = fentaris({
143
143
  // Global middleware runs before requests are forwarded to upstream MCP servers.
144
144
  app.use(rateLimitMiddleware({ limiter }));
145
145
 
146
- app.server("demo-files").use((ctx, next) => {
146
+ app.mcp("demo-files").use((ctx, next) => {
147
147
  console.log(\`demo-files -> \${ctx.operation}\`);
148
148
  return next();
149
149
  });
150
150
 
151
- app.server("specification").on("tool:success", ({ ctx }) => {
151
+ app.mcp("specification").on("tool:success", ({ ctx }) => {
152
152
  console.log(\`specification -> \${ctx.tool?.name ?? ctx.operation}\`);
153
153
  });
154
154
 
@@ -6,7 +6,7 @@ export function defaultRuntime() {
6
6
  env: process.env,
7
7
  out: console,
8
8
  runner: runProcess,
9
- probe: (command, args = ["--version"]) => spawnSync(command, args, { stdio: "ignore" }).status === 0,
9
+ probe: (command, args = ["--version"]) => spawnSync(command, args, { stdio: "ignore", timeout: 2_000 }).status === 0,
10
10
  prompt: createPrompt(),
11
11
  };
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO;QACZ,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;QACpG,MAAM,EAAE,YAAY,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7G,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO;YAC5B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,QAAQ;YACpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;QACtF,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,UAAwB,EAAE;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/platform/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO;QACZ,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;QACpH,MAAM,EAAE,YAAY,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7G,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO;YAC5B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,QAAQ;YACpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;QACtF,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,UAAwB,EAAE;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -43,6 +43,8 @@ export type HealthResult = {
43
43
  label: string;
44
44
  status: HealthStatus;
45
45
  detail: string;
46
+ hint?: string;
47
+ metadata?: Record<string, unknown>;
46
48
  fix?: () => Promise<void>;
47
49
  };
48
50
  export type ProjectConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAEhH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/F,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,IAAI,CAAC,OAAO,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAc9E,eAAO,MAAM,KAAK;mBACD,MAAM;qBACJ,MAAM;mBACR,MAAM;kBACP,MAAM;qBACH,MAAM;kBACT,MAAM;kBACN,MAAM;kBACN,MAAM;CACrB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG7D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAYlF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAehD"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAc9E,eAAO,MAAM,KAAK;mBACD,MAAM;qBACJ,MAAM;mBACR,MAAM;kBACP,MAAM;qBACH,MAAM;kBACT,MAAM;kBACN,MAAM;kBACN,MAAM;CACrB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG7D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAelF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAehD"}
package/dist/ui/format.js CHANGED
@@ -32,6 +32,9 @@ export function printHealthResults(runtime, results) {
32
32
  runtime.out.log(` ${style.label(groupName)}`);
33
33
  for (const result of results.filter((item) => item.group === groupName)) {
34
34
  runtime.out.log(` ${marker(result.status)} ${result.label} ${style.hint(result.detail)}`);
35
+ if (result.hint) {
36
+ runtime.out.log(` ${style.hint(result.hint)}`);
37
+ }
35
38
  }
36
39
  }
37
40
  const failCount = results.filter((result) => result.status === "fail").length;
@@ -47,7 +50,7 @@ export function printHelp(runtime) {
47
50
  ${style.command("fentaris init [project-name] [--skip-install]")}
48
51
  ${style.command("fentaris dev")}
49
52
  ${style.command("fentaris check [--offline] [--strict]")}
50
- ${style.command("fentaris doctor [--fix]")}
53
+ ${style.command("fentaris doctor [--fix] [--strict] [--json] [--runtime] [--timeout <ms>]")}
51
54
  ${style.command("fentaris build")}
52
55
  ${style.command("fentaris secrets set <reference> [--user <id> | --group <id>]")}
53
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IAC/E,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IAC9E,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IAC/D,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IAC9D,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IACjE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IACjE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;IAClE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;CAChE,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,KAAa;IACrD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,OAAuB;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAe;IACvC,OAAO,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,+CAA+C,CAAC;IAC9D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IAC7B,KAAK,CAAC,OAAO,CAAC,uCAAuC,CAAC;IACtD,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAC/B,KAAK,CAAC,OAAO,CAAC,+DAA+D,CAAC;;;IAG9E,KAAK,CAAC,OAAO,CAAC,qDAAqD,CAAC;IACpE,KAAK,CAAC,OAAO,CAAC,2FAA2F,CAAC;IAC1G,KAAK,CAAC,OAAO,CAAC,0HAA0H,CAAC;IACzI,KAAK,CAAC,OAAO,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,MAAM,CAAC,MAAoB;IAClC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;IACvD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fentaris/cli",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Fentaris MCP Proxy - CLI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,7 +11,7 @@
11
11
  "dist"
12
12
  ],
13
13
  "dependencies": {
14
- "@fentaris/core": "0.3.0"
14
+ "@fentaris/core": "0.4.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/node": "^25.9.1",