@fentaris/cli 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/commands/dev.d.ts.map +1 -1
  2. package/dist/commands/dev.js +2 -1
  3. package/dist/commands/dev.js.map +1 -1
  4. package/dist/commands/doctor.d.ts.map +1 -1
  5. package/dist/commands/doctor.js +1 -0
  6. package/dist/commands/doctor.js.map +1 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +2 -9
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/secrets.d.ts.map +1 -1
  11. package/dist/commands/secrets.js +139 -7
  12. package/dist/commands/secrets.js.map +1 -1
  13. package/dist/domain/auth/local-store.d.ts +10 -3
  14. package/dist/domain/auth/local-store.d.ts.map +1 -1
  15. package/dist/domain/auth/local-store.js +47 -11
  16. package/dist/domain/auth/local-store.js.map +1 -1
  17. package/dist/domain/health/checks.d.ts +1 -0
  18. package/dist/domain/health/checks.d.ts.map +1 -1
  19. package/dist/domain/health/checks.js +29 -35
  20. package/dist/domain/health/checks.js.map +1 -1
  21. package/dist/domain/project/env.d.ts +3 -0
  22. package/dist/domain/project/env.d.ts.map +1 -0
  23. package/dist/domain/project/env.js +41 -0
  24. package/dist/domain/project/env.js.map +1 -0
  25. package/dist/domain/project/project.d.ts +1 -1
  26. package/dist/domain/project/project.d.ts.map +1 -1
  27. package/dist/domain/project/project.js +4 -2
  28. package/dist/domain/project/project.js.map +1 -1
  29. package/dist/domain/secrets/backend.d.ts +9 -0
  30. package/dist/domain/secrets/backend.d.ts.map +1 -0
  31. package/dist/domain/secrets/backend.js +38 -0
  32. package/dist/domain/secrets/backend.js.map +1 -0
  33. package/dist/domain/secrets/doctor.d.ts +22 -0
  34. package/dist/domain/secrets/doctor.d.ts.map +1 -0
  35. package/dist/domain/secrets/doctor.js +216 -0
  36. package/dist/domain/secrets/doctor.js.map +1 -0
  37. package/dist/domain/secrets/manifest-scan.d.ts +16 -0
  38. package/dist/domain/secrets/manifest-scan.d.ts.map +1 -0
  39. package/dist/domain/secrets/manifest-scan.js +38 -0
  40. package/dist/domain/secrets/manifest-scan.js.map +1 -0
  41. package/dist/domain/template/template.d.ts +0 -4
  42. package/dist/domain/template/template.d.ts.map +1 -1
  43. package/dist/domain/template/template.js +18 -81
  44. package/dist/domain/template/template.js.map +1 -1
  45. package/dist/shared/types.d.ts +7 -3
  46. package/dist/shared/types.d.ts.map +1 -1
  47. package/dist/ui/format.d.ts.map +1 -1
  48. package/dist/ui/format.js +4 -0
  49. package/dist/ui/format.js.map +1 -1
  50. package/package.json +2 -2
@@ -0,0 +1,216 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { spawn } from "node:child_process";
4
+ import { diffManifest, encodeSecretScope, parseManifest, secretRefKey, } from "@fentaris/core";
5
+ import { exists } from "../../shared/utils.js";
6
+ import { credentialsPath, formatScopeLabel, manifestPath, openLocalSecretsBackend } from "./backend.js";
7
+ import { scanEntrypointForSecrets } from "./manifest-scan.js";
8
+ export async function getSecretsDoctorIssues(project, runtime, options = {}) {
9
+ const issues = [];
10
+ const required = await loadRequiredReferences(project);
11
+ const key = runtime.env.FENTARIS_AUTH_KEY;
12
+ const storeExists = await exists(credentialsPath(project));
13
+ let stored = [];
14
+ if (storeExists && key?.trim()) {
15
+ try {
16
+ const backend = await openLocalSecretsBackend(project, runtime, { key });
17
+ stored = await backend.listRefs();
18
+ }
19
+ catch (error) {
20
+ issues.push({
21
+ status: "fail",
22
+ ref: "credentials.enc.json",
23
+ scope: "local",
24
+ detail: error instanceof Error ? error.message : "Unable to decrypt local credentials.",
25
+ hint: "Verify FENTARIS_AUTH_KEY matches the local credential store.",
26
+ });
27
+ }
28
+ }
29
+ else if (storeExists) {
30
+ issues.push({
31
+ status: "warn",
32
+ ref: "credentials.enc.json",
33
+ scope: "local",
34
+ detail: "Encrypted store found but FENTARIS_AUTH_KEY is not set.",
35
+ hint: "Set FENTARIS_AUTH_KEY to verify stored secrets.",
36
+ });
37
+ }
38
+ const diff = diffManifest(required, stored);
39
+ for (const entry of diff.missing) {
40
+ issues.push({
41
+ status: options.strict ? "fail" : "warn",
42
+ ref: entry.ref,
43
+ scope: entry.scope,
44
+ detail: "Required secret is missing from the local store.",
45
+ hint: hintForSet(entry),
46
+ });
47
+ }
48
+ for (const entry of diff.extra) {
49
+ issues.push({
50
+ status: "warn",
51
+ ref: entry.ref,
52
+ scope: encodeSecretScope(entry.scope),
53
+ detail: "Stored secret is not listed in the secrets manifest.",
54
+ hint: "Run fentaris secrets manifest to update the committed schema.",
55
+ });
56
+ }
57
+ for (const tracked of await gitTrackedSecretFiles(project)) {
58
+ issues.push({
59
+ status: "fail",
60
+ ref: tracked,
61
+ scope: "git",
62
+ detail: "Sensitive file is tracked by git.",
63
+ hint: `Remove it from git tracking and add it to .gitignore.`,
64
+ });
65
+ }
66
+ if (project.config.panther?.projectId) {
67
+ issues.push({
68
+ status: "warn",
69
+ ref: "panther.cloud",
70
+ scope: "cloud",
71
+ detail: "Panther Cloud project is configured but cloud sync is not available yet.",
72
+ hint: "Use the local encrypted store for now. Cloud sync arrives in a later release.",
73
+ });
74
+ }
75
+ if (project.config.authDir !== ".fentaris") {
76
+ issues.push({
77
+ status: "warn",
78
+ ref: "authDir",
79
+ scope: "config",
80
+ detail: `Custom authDir (${project.config.authDir}) may not match credentialJson() defaults.`,
81
+ hint: "Prefer authDir \".fentaris\" unless you have aligned all credential paths.",
82
+ });
83
+ }
84
+ return issues;
85
+ }
86
+ export async function secretsDoctorHealthResults(project, runtime, options = {}) {
87
+ if (!runtime) {
88
+ return [];
89
+ }
90
+ const issues = await getSecretsDoctorIssues(project, runtime, options);
91
+ const manifestExists = await exists(manifestPath(project));
92
+ const entrypoint = path.join(project.root, project.config.entrypoint);
93
+ const scanned = await exists(entrypoint) ? await scanEntrypointForSecrets(entrypoint) : { references: [], envVars: [] };
94
+ const shouldHaveManifest = manifestExists || scanned.references.length > 0;
95
+ const results = shouldHaveManifest
96
+ ? [
97
+ {
98
+ group: "Auth",
99
+ label: "secrets manifest",
100
+ status: manifestExists ? "pass" : "warn",
101
+ detail: manifestExists ? "Found committed secrets schema." : "Missing secrets.manifest.json.",
102
+ hint: manifestExists ? undefined : "Run fentaris secrets manifest to generate the committed schema.",
103
+ },
104
+ ]
105
+ : [];
106
+ for (const issue of issues) {
107
+ results.push({
108
+ group: "Auth",
109
+ label: issue.ref === issue.scope ? issue.ref : `${issue.ref} (${issue.scope})`,
110
+ status: issue.status,
111
+ detail: issue.detail,
112
+ hint: issue.hint,
113
+ });
114
+ }
115
+ return results;
116
+ }
117
+ export async function loadRequiredReferences(project) {
118
+ const manifestFile = manifestPath(project);
119
+ if (await exists(manifestFile)) {
120
+ const manifest = parseManifest(JSON.parse(await readFile(manifestFile, "utf8")));
121
+ return manifest.references;
122
+ }
123
+ const entrypoint = path.join(project.root, project.config.entrypoint);
124
+ if (await exists(entrypoint)) {
125
+ return (await scanEntrypointForSecrets(entrypoint)).references;
126
+ }
127
+ return [];
128
+ }
129
+ export function buildListRows(required, stored) {
130
+ const storedByKey = new Map(stored.map((entry) => [secretRefKey(entry.ref, entry.scope), entry]));
131
+ const rows = [];
132
+ const seen = new Set();
133
+ for (const entry of required) {
134
+ const scope = decodeScope(entry.scope);
135
+ const key = secretRefKey(entry.ref, scope);
136
+ seen.add(key);
137
+ const storedEntry = storedByKey.get(key);
138
+ rows.push({
139
+ ref: entry.ref,
140
+ scope: entry.scope,
141
+ kind: "credential",
142
+ status: storedEntry ? "set" : "missing",
143
+ });
144
+ }
145
+ for (const entry of stored) {
146
+ const key = secretRefKey(entry.ref, entry.scope);
147
+ if (seen.has(key)) {
148
+ continue;
149
+ }
150
+ rows.push({
151
+ ref: entry.ref,
152
+ scope: formatScopeLabel(entry.scope),
153
+ kind: entry.kind,
154
+ status: entry.kind === "apiKey" ? `${entry.count} key${entry.count === 1 ? "" : "s"}` : "set",
155
+ });
156
+ }
157
+ return rows;
158
+ }
159
+ async function gitTrackedSecretFiles(project) {
160
+ if (!(await isGitRepository(project.root))) {
161
+ return [];
162
+ }
163
+ const candidates = [
164
+ path.relative(project.root, credentialsPath(project)),
165
+ ".env",
166
+ ];
167
+ const tracked = [];
168
+ for (const candidate of candidates) {
169
+ if (await gitTracksFile(project.root, candidate)) {
170
+ tracked.push(candidate);
171
+ }
172
+ }
173
+ return tracked;
174
+ }
175
+ function hintForSet(entry) {
176
+ if (entry.scope === "default") {
177
+ return `fentaris secrets set ${entry.ref}`;
178
+ }
179
+ if (entry.scope.startsWith("user:")) {
180
+ return `fentaris secrets set ${entry.ref} --user ${entry.scope.slice("user:".length)}`;
181
+ }
182
+ if (entry.scope.startsWith("group:")) {
183
+ return `fentaris secrets set ${entry.ref} --group ${entry.scope.slice("group:".length)}`;
184
+ }
185
+ return `fentaris secrets set ${entry.ref}`;
186
+ }
187
+ function decodeScope(scope) {
188
+ if (scope === "default") {
189
+ return { kind: "default" };
190
+ }
191
+ if (scope.startsWith("user:")) {
192
+ return { kind: "user", id: scope.slice("user:".length) };
193
+ }
194
+ if (scope.startsWith("group:")) {
195
+ return { kind: "group", id: scope.slice("group:".length) };
196
+ }
197
+ return { kind: "default" };
198
+ }
199
+ async function isGitRepository(root) {
200
+ return new Promise((resolve) => {
201
+ const child = spawn("git", ["rev-parse", "--is-inside-work-tree"], { cwd: root, stdio: ["ignore", "pipe", "ignore"] });
202
+ child.on("error", () => resolve(false));
203
+ child.on("close", (code) => resolve(code === 0));
204
+ });
205
+ }
206
+ async function gitTracksFile(root, relativePath) {
207
+ if (!(await exists(path.join(root, relativePath)))) {
208
+ return false;
209
+ }
210
+ return new Promise((resolve) => {
211
+ const child = spawn("git", ["ls-files", "--error-unmatch", relativePath], { cwd: root, stdio: "ignore" });
212
+ child.on("error", () => resolve(false));
213
+ child.on("close", (code) => resolve(code === 0));
214
+ });
215
+ }
216
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/domain/secrets/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type ManifestScanResult = {
2
+ references: Array<{
3
+ ref: string;
4
+ scope: string;
5
+ }>;
6
+ envVars: string[];
7
+ };
8
+ /**
9
+ * Scan a TypeScript entrypoint for credential references.
10
+ */
11
+ export declare function scanEntrypointForSecrets(entrypointPath: string): Promise<ManifestScanResult>;
12
+ /**
13
+ * Scan TypeScript source for credential references.
14
+ */
15
+ export declare function scanSourceForSecrets(source: string): ManifestScanResult;
16
+ //# sourceMappingURL=manifest-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-scan.d.ts","sourceRoot":"","sources":["../../../src/domain/secrets/manifest-scan.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGlG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA0BvE"}
@@ -0,0 +1,38 @@
1
+ import { readFile } from "node:fs/promises";
2
+ const credentialPattern = /\bcredential\s*\(\s*["']([^"']+)["']\s*\)/gu;
3
+ const credentialEnvPattern = /\bcredentialEnv\s*\(\s*["']([^"']+)["']\s*\)/gu;
4
+ /**
5
+ * Scan a TypeScript entrypoint for credential references.
6
+ */
7
+ export async function scanEntrypointForSecrets(entrypointPath) {
8
+ const source = await readFile(entrypointPath, "utf8");
9
+ return scanSourceForSecrets(source);
10
+ }
11
+ /**
12
+ * Scan TypeScript source for credential references.
13
+ */
14
+ export function scanSourceForSecrets(source) {
15
+ const refs = new Set();
16
+ const envVars = new Set();
17
+ for (const pattern of [credentialPattern, /credential\s*\(\s*`([^`]+)`\s*\)/gu]) {
18
+ pattern.lastIndex = 0;
19
+ for (const match of source.matchAll(pattern)) {
20
+ const ref = match[1]?.trim();
21
+ if (ref) {
22
+ refs.add(ref);
23
+ }
24
+ }
25
+ }
26
+ credentialEnvPattern.lastIndex = 0;
27
+ for (const match of source.matchAll(credentialEnvPattern)) {
28
+ const envVar = match[1]?.trim();
29
+ if (envVar) {
30
+ envVars.add(envVar);
31
+ }
32
+ }
33
+ return {
34
+ references: [...refs].sort().map((ref) => ({ ref, scope: "default" })),
35
+ envVars: [...envVars].sort(),
36
+ };
37
+ }
38
+ //# sourceMappingURL=manifest-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-scan.js","sourceRoot":"","sources":["../../../src/domain/secrets/manifest-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;AACxE,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAO9E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,cAAsB;IACnE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,CAAC,iBAAiB,EAAE,oCAAoC,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,SAAS,GAAG,CAAC,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;KAC7B,CAAC;AACJ,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import type { TemplateInput } from "../../shared/types.js";
2
2
  export declare function renderTemplate(input: TemplateInput): {
3
3
  files: Record<string, string>;
4
- authKey: string;
5
- guestApiKey: string;
6
- adminApiKey: string;
7
4
  };
8
5
  export declare function renderEntrypoint(input: TemplateInput): string;
9
6
  export declare function writeTemplate(targetDir: string, files: Record<string, string>): Promise<void>;
10
- export declare function initTemplateAuth(dir: string, key: string, guestApiKey: string, adminApiKey: string): Promise<void>;
11
7
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/domain/template/template.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAgFjJ;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAgE7D;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnG;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxH"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/domain/template/template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAuEtF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAmB7D;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnG"}
@@ -1,13 +1,8 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { FentarisAuth } from "@fentaris/core";
4
3
  import { authDir, remoteMcpUrl } from "../../shared/constants.js";
5
- import { writeCredentials } from "../auth/local-store.js";
6
4
  export function renderTemplate(input) {
7
5
  return {
8
- authKey: input.authKey,
9
- guestApiKey: input.guestApiKey,
10
- adminApiKey: input.adminApiKey,
11
6
  files: {
12
7
  "README.md": renderReadme(input),
13
8
  "package.json": JSON.stringify({
@@ -21,7 +16,6 @@ export function renderTemplate(input) {
21
16
  start: "node dist/index.js",
22
17
  },
23
18
  dependencies: {
24
- "@modelcontextprotocol/server-filesystem": "latest",
25
19
  "@fentaris/core": "latest",
26
20
  tsx: "latest",
27
21
  },
@@ -51,77 +45,27 @@ export function renderTemplate(input) {
51
45
  path: input.proxyPath,
52
46
  authDir,
53
47
  }, null, 2),
54
- ".env": [
55
- `FENTARIS_AUTH_KEY=${input.authKey}`,
56
- `FENTARIS_GUEST_API_KEY=${input.guestApiKey}`,
57
- `FENTARIS_ADMIN_API_KEY=${input.adminApiKey}`,
58
- "",
59
- ].join("\n"),
60
48
  ".gitignore": [
61
49
  "node_modules/",
62
50
  "dist/",
63
51
  ".env",
64
52
  ".env.*",
65
- ".fentaris/",
53
+ ".fentaris/*",
54
+ "!.fentaris/secrets.manifest.json",
66
55
  ".fentaris/build/",
67
56
  "*.log",
68
57
  "",
69
58
  ].join("\n"),
59
+ ".fentaris/secrets.manifest.json": JSON.stringify({ version: 1, references: [] }, null, 2),
70
60
  "src/index.ts": renderEntrypoint(input),
71
- "demo-files/README.md": "# Fentaris demo files\n\nThis directory is intentionally scoped for the demo filesystem MCP server.\n",
72
61
  },
73
62
  };
74
63
  }
75
64
  export function renderEntrypoint(input) {
76
- return `import {
77
- credentialJson,
78
- fentaris,
79
- group,
80
- policy,
81
- profiler,
82
- stdio,
83
- streamableHttp,
84
- user,
85
- } from "@fentaris/core";
86
-
87
- const guest = user("guest", {
88
- displayName: "Guest Demo User",
89
- apiKeys: [credentialJson("users.guest.apiKeys.0")],
90
- });
91
- const admin = user("admin", {
92
- displayName: "Admin Demo User",
93
- apiKeys: [credentialJson("users.admin.apiKeys.0")],
94
- });
95
-
96
- const limitedPolicy = policy("limited-demo")
97
- .mcp("demo-files")
98
- .allow("list_allowed_directories")
99
- .mcp("demo-files")
100
- .allow("list_directory")
101
- .mcp("specification")
102
- .allow("*");
103
-
104
- const adminPolicy = policy("admin-full-access").mcp("*").allow("*");
105
-
106
- const runtimeProfiler = profiler()
107
- .pretty()
108
- .on("mcp.call.success", (event) => {
109
- console.log(\`profile -> \${event.server ?? "unknown"}:\${event.operation} completed in \${event.durationMs ?? 0}ms\`);
110
- });
65
+ return `import { fentaris, streamableHttp } from "@fentaris/core";
111
66
 
112
67
  const app = fentaris({
113
- groups: [
114
- group({ id: "limited", users: [guest], policy: limitedPolicy }),
115
- group({ id: "admins", users: [admin], policy: adminPolicy }),
116
- ],
117
- profiler: runtimeProfiler,
118
- });
119
-
120
- app.mcp("demo-files", {
121
- transport: stdio({
122
- command: "npx",
123
- args: ["-y", "@modelcontextprotocol/server-filesystem", "./demo-files"],
124
- }),
68
+ user: { id: "demo" },
125
69
  });
126
70
 
127
71
  app.mcp("specification", {
@@ -144,27 +88,13 @@ export async function writeTemplate(targetDir, files) {
144
88
  await writeFile(filePath, contents);
145
89
  }
146
90
  }
147
- export async function initTemplateAuth(dir, key, guestApiKey, adminApiKey) {
148
- await mkdir(dir, { recursive: true });
149
- await writeCredentials(dir, key, {
150
- users: {
151
- guest: { apiKeys: [FentarisAuth.hashApiKey(guestApiKey)], credentials: {} },
152
- admin: { apiKeys: [FentarisAuth.hashApiKey(adminApiKey)], credentials: {} },
153
- },
154
- groups: { limited: {} },
155
- defaults: {},
156
- });
157
- }
158
91
  function renderReadme(input) {
159
92
  return `# ${input.projectName}
160
93
 
161
94
  This project was generated by the Fentaris CLI. It starts a local MCP proxy with:
162
95
 
163
- - API-key authentication backed by encrypted credentials in \`.fentaris/credentials.enc.json\`
164
- - A limited \`guest\` user and an unrestricted \`admin\` user
165
- - A local filesystem demo server mounted as \`demo-files\`
166
96
  - A remote HTTP MCP server mounted as \`specification\`
167
- - A runtime profiler with a simple MCP success event example
97
+ - One local demo user and no authentication or policy configuration
168
98
 
169
99
  ## Quick start
170
100
 
@@ -173,20 +103,27 @@ ${input.packageManager} install
173
103
  ${input.packageManager} dev
174
104
  \`\`\`
175
105
 
176
- The proxy listens on \`http://localhost:${input.port}${input.proxyPath}\` by default. Send requests with the \`x-fentaris-api-key\` header using one of the keys printed by \`fentaris init\`.
106
+ \`fentaris dev\` starts the project. The proxy listens on \`http://localhost:${input.port}${input.proxyPath}\` by default.
177
107
 
178
108
  ## Project files
179
109
 
180
- - \`src/index.ts\` configures the app groups, profiler, and upstream MCP servers.
110
+ - \`src/index.ts\` configures the app user and upstream MCP server.
181
111
  - \`fentaris.json\` configures the project entrypoint, port, path, and CLI runtime defaults.
182
- - \`.fentaris/credentials.enc.json\` stores encrypted local credentials and is intentionally ignored by git.
183
- - \`demo-files\` is the sandboxed directory exposed by the demo filesystem server.
112
+ - \`.fentaris/secrets.manifest.json\` lists required credential references (schema only, safe to commit).
113
+
114
+ ## Secrets workflow
115
+
116
+ \`\`\`sh
117
+ fentaris secrets set github.token
118
+ fentaris secrets list
119
+ fentaris secrets manifest
120
+ fentaris doctor
121
+ \`\`\`
184
122
 
185
123
  ## Useful commands
186
124
 
187
125
  \`\`\`sh
188
126
  fentaris check --offline
189
- fentaris secrets set github.token --user admin
190
127
  fentaris build
191
128
  \`\`\`
192
129
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/domain/template/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE;YACL,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;gBACE,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,GAAG,EAAE,kBAAkB;oBACvB,KAAK,EAAE,sBAAsB;oBAC7B,KAAK,EAAE,oBAAoB;iBAC5B;gBACD,YAAY,EAAE;oBACZ,yCAAyC,EAAE,QAAQ;oBACnD,gBAAgB,EAAE,QAAQ;oBAC1B,GAAG,EAAE,QAAQ;iBACd;gBACD,eAAe,EAAE;oBACf,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAE,QAAQ;iBACrB;aACF,EACD,IAAI,EACJ,CAAC,CACF;YACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;gBACE,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,UAAU;oBAClB,gBAAgB,EAAE,UAAU;oBAC5B,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,KAAK;iBACf;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC;aACjB,EACD,IAAI,EACJ,CAAC,CACF;YACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;gBACE,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,SAAS;gBACrB,OAAO;aACR,EACD,IAAI,EACJ,CAAC,CACF;YACD,MAAM,EAAE;gBACN,qBAAqB,KAAK,CAAC,OAAO,EAAE;gBACpC,0BAA0B,KAAK,CAAC,WAAW,EAAE;gBAC7C,0BAA0B,KAAK,CAAC,WAAW,EAAE;gBAC7C,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,YAAY,EAAE;gBACZ,eAAe;gBACf,OAAO;gBACP,MAAM;gBACN,QAAQ;gBACR,YAAY;gBACZ,kBAAkB;gBAClB,OAAO;gBACP,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,cAAc,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACvC,sBAAsB,EAAE,uGAAuG;SAChI;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqDG,YAAY;;;;;;;;;CASvB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,KAA6B;IAClF,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,WAAmB,EAAE,WAAmB;IACvG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;QAC/B,KAAK,EAAE;YACL,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;YAC3E,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;SAC5E;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACvB,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACxC,OAAO,KAAK,KAAK,CAAC,WAAW;;;;;;;;;;;;;EAa7B,KAAK,CAAC,cAAc;EACpB,KAAK,CAAC,cAAc;;;0CAGoB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS;;;;;;;;;;;;;;;;CAgBrE,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/domain/template/template.ts"],"names":[],"mappings":"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"}
@@ -33,9 +33,6 @@ export type TemplateInput = {
33
33
  packageManager: PackageManager;
34
34
  port: number;
35
35
  proxyPath: string;
36
- authKey: string;
37
- guestApiKey: string;
38
- adminApiKey: string;
39
36
  };
40
37
  export type HealthStatus = "pass" | "warn" | "fail";
41
38
  export type HealthResult = {
@@ -54,6 +51,13 @@ export type ProjectConfig = {
54
51
  port: number;
55
52
  path: string;
56
53
  authDir: string;
54
+ secrets?: {
55
+ provider?: "local";
56
+ };
57
+ panther?: {
58
+ projectId?: string;
59
+ environment?: string;
60
+ };
57
61
  };
58
62
  export type ProjectDiscovery = {
59
63
  root: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
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,CAelF;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,CAmBhD"}
package/dist/ui/format.js CHANGED
@@ -53,6 +53,10 @@ export function printHelp(runtime) {
53
53
  ${style.command("fentaris doctor [--fix] [--strict] [--json] [--runtime] [--timeout <ms>]")}
54
54
  ${style.command("fentaris build")}
55
55
  ${style.command("fentaris secrets set <reference> [--user <id> | --group <id>]")}
56
+ ${style.command("fentaris secrets list [--json]")}
57
+ ${style.command("fentaris secrets unset <reference> [--user <id> | --group <id>]")}
58
+ ${style.command("fentaris secrets manifest [--check]")}
59
+ ${style.command("fentaris secrets doctor [--strict] [--json]")}
56
60
 
57
61
  Legacy local auth:
58
62
  ${style.command("fentaris auth init --dir .fentaris/auth --key <key>")}
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"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"}
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.2.2",
3
+ "version": "0.3.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.5.0"
14
+ "@fentaris/core": "0.6.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/node": "^25.9.1",