@fentaris/cli 0.2.0 → 0.2.1
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.
|
@@ -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,
|
|
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,CAiFjJ;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"}
|
|
@@ -55,8 +55,6 @@ export function renderTemplate(input) {
|
|
|
55
55
|
`FENTARIS_AUTH_KEY=${input.authKey}`,
|
|
56
56
|
`FENTARIS_GUEST_API_KEY=${input.guestApiKey}`,
|
|
57
57
|
`FENTARIS_ADMIN_API_KEY=${input.adminApiKey}`,
|
|
58
|
-
`FENTARIS_PORT=${input.port}`,
|
|
59
|
-
`FENTARIS_PATH=${input.proxyPath}`,
|
|
60
58
|
"",
|
|
61
59
|
].join("\n"),
|
|
62
60
|
".gitignore": [
|
|
@@ -77,22 +75,16 @@ export function renderTemplate(input) {
|
|
|
77
75
|
}
|
|
78
76
|
export function renderEntrypoint(input) {
|
|
79
77
|
return `import {
|
|
80
|
-
MemoryRateLimitStore,
|
|
81
|
-
SlidingWindowRateLimiter,
|
|
82
78
|
credentialJson,
|
|
83
79
|
fentaris,
|
|
84
80
|
group,
|
|
85
|
-
mcp,
|
|
86
81
|
policy,
|
|
87
|
-
|
|
82
|
+
profiler,
|
|
88
83
|
stdio,
|
|
89
84
|
streamableHttp,
|
|
90
85
|
user,
|
|
91
86
|
} from "@fentaris/core";
|
|
92
87
|
|
|
93
|
-
const port = Number(process.env.FENTARIS_PORT ?? ${input.port});
|
|
94
|
-
const proxyPath = process.env.FENTARIS_PATH ?? "${input.proxyPath}";
|
|
95
|
-
|
|
96
88
|
const guest = user("guest", {
|
|
97
89
|
displayName: "Guest Demo User",
|
|
98
90
|
apiKeys: [credentialJson("users.guest.apiKeys.0")],
|
|
@@ -112,50 +104,38 @@ const limitedPolicy = policy("limited-demo")
|
|
|
112
104
|
|
|
113
105
|
const adminPolicy = policy("admin-full-access").mcp("*").allow("*");
|
|
114
106
|
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
});
|
|
107
|
+
const runtimeProfiler = profiler()
|
|
108
|
+
.pretty()
|
|
109
|
+
.on("mcp.call.success", (event) => {
|
|
110
|
+
console.log(\`profile -> \${event.server ?? "unknown"}:\${event.operation} completed in \${event.durationMs ?? 0}ms\`);
|
|
111
|
+
});
|
|
120
112
|
|
|
121
113
|
const app = fentaris({
|
|
122
|
-
port,
|
|
123
|
-
path: proxyPath,
|
|
124
114
|
groups: [
|
|
125
115
|
group({ id: "limited", users: [guest], policy: limitedPolicy }),
|
|
126
116
|
group({ id: "admins", users: [admin], policy: adminPolicy }),
|
|
127
117
|
],
|
|
128
|
-
|
|
129
|
-
mcp("demo-files", {
|
|
130
|
-
transport: stdio({
|
|
131
|
-
command: "npx",
|
|
132
|
-
args: ["-y", "@modelcontextprotocol/server-filesystem", "./demo-files"],
|
|
133
|
-
}),
|
|
134
|
-
}),
|
|
135
|
-
mcp("specification", {
|
|
136
|
-
transport: streamableHttp({
|
|
137
|
-
url: "${remoteMcpUrl}",
|
|
138
|
-
}),
|
|
139
|
-
}),
|
|
140
|
-
],
|
|
118
|
+
profiler: runtimeProfiler,
|
|
141
119
|
});
|
|
142
120
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return next();
|
|
121
|
+
app.mcp("demo-files", {
|
|
122
|
+
transport: stdio({
|
|
123
|
+
command: "npx",
|
|
124
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "./demo-files"],
|
|
125
|
+
}),
|
|
149
126
|
});
|
|
150
127
|
|
|
151
|
-
app.mcp("specification"
|
|
152
|
-
|
|
128
|
+
app.mcp("specification", {
|
|
129
|
+
transport: streamableHttp({
|
|
130
|
+
url: "${remoteMcpUrl}",
|
|
131
|
+
}),
|
|
153
132
|
});
|
|
154
133
|
|
|
155
|
-
|
|
156
|
-
console.log(\`
|
|
157
|
-
console.log("Use x-fentaris-api-key with the generated guest or admin key.");
|
|
134
|
+
app.mcp("specification").on("tool:success", ({ ctx, durationMs }) => {
|
|
135
|
+
console.log(\`specification -> \${ctx.tool?.name ?? ctx.operation} (\${durationMs}ms)\`);
|
|
158
136
|
});
|
|
137
|
+
|
|
138
|
+
await app.start();
|
|
159
139
|
`;
|
|
160
140
|
}
|
|
161
141
|
export async function writeTemplate(targetDir, files) {
|
|
@@ -185,7 +165,7 @@ This project was generated by the Fentaris CLI. It starts a local MCP proxy with
|
|
|
185
165
|
- A limited \`guest\` user and an unrestricted \`admin\` user
|
|
186
166
|
- A local filesystem demo server mounted as \`demo-files\`
|
|
187
167
|
- A remote HTTP MCP server mounted as \`specification\`
|
|
188
|
-
- A
|
|
168
|
+
- A runtime profiler with a simple MCP success event example
|
|
189
169
|
|
|
190
170
|
## Quick start
|
|
191
171
|
|
|
@@ -199,8 +179,8 @@ The proxy listens on \`http://localhost:${input.port}${input.proxyPath}\` by def
|
|
|
199
179
|
|
|
200
180
|
## Project files
|
|
201
181
|
|
|
202
|
-
- \`src/index.ts\` configures the
|
|
203
|
-
- \`fentaris.json\`
|
|
182
|
+
- \`src/index.ts\` configures the app groups, profiler, and upstream MCP servers.
|
|
183
|
+
- \`fentaris.json\` configures the project entrypoint, port, path, and CLI runtime defaults.
|
|
204
184
|
- \`.fentaris/credentials.enc.json\` stores encrypted local credentials and is intentionally ignored by git.
|
|
205
185
|
- \`demo-files\` is the sandboxed directory exposed by the demo filesystem server.
|
|
206
186
|
|
|
@@ -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,cAAc,EAAE;gBACd,qBAAqB,KAAK,CAAC,OAAO,EAAE;gBACpC,0BAA0B,KAAK,CAAC,WAAW,EAAE;gBAC7C,0BAA0B,KAAK,CAAC,WAAW,EAAE;gBAC7C,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/domain/template/template.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.
|
|
3
|
+
"version": "0.2.1",
|
|
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.
|
|
14
|
+
"@fentaris/core": "0.5.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/node": "^25.9.1",
|