veryfront 0.1.142 → 0.1.144

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 (45) hide show
  1. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  2. package/esm/cli/commands/knowledge/command.js +3 -3
  3. package/esm/cli/mcp/server.d.ts +1 -0
  4. package/esm/cli/mcp/server.d.ts.map +1 -1
  5. package/esm/cli/mcp/server.js +11 -6
  6. package/esm/cli/mcp/standalone.d.ts +1 -0
  7. package/esm/cli/mcp/standalone.d.ts.map +1 -1
  8. package/esm/cli/mcp/standalone.js +14 -11
  9. package/esm/cli/shared/config.d.ts.map +1 -1
  10. package/esm/cli/shared/config.js +13 -2
  11. package/esm/cli/templates/manifest.d.ts +484 -484
  12. package/esm/cli/templates/manifest.js +534 -534
  13. package/esm/deno.js +1 -1
  14. package/esm/src/build/embedded/preset.d.ts +10 -0
  15. package/esm/src/build/embedded/preset.d.ts.map +1 -1
  16. package/esm/src/build/embedded/preset.js +23 -11
  17. package/esm/src/mcp/server.d.ts +2 -0
  18. package/esm/src/mcp/server.d.ts.map +1 -1
  19. package/esm/src/mcp/server.js +42 -8
  20. package/esm/src/resource/factory.d.ts.map +1 -1
  21. package/esm/src/resource/factory.js +1 -0
  22. package/esm/src/resource/types.d.ts +2 -0
  23. package/esm/src/resource/types.d.ts.map +1 -1
  24. package/esm/src/server/dev-ui/manifest.d.ts +11 -11
  25. package/esm/src/server/dev-ui/manifest.js +12 -12
  26. package/esm/src/server/services/rsc/endpoints/action-parser.js +1 -1
  27. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  28. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  29. package/esm/src/utils/version-constant.d.ts +1 -1
  30. package/esm/src/utils/version-constant.js +1 -1
  31. package/package.json +1 -1
  32. package/src/cli/commands/knowledge/command.ts +5 -3
  33. package/src/cli/mcp/server.ts +12 -6
  34. package/src/cli/mcp/standalone.ts +15 -11
  35. package/src/cli/shared/config.ts +14 -2
  36. package/src/cli/templates/manifest.js +534 -534
  37. package/src/deno.js +1 -1
  38. package/src/src/build/embedded/preset.ts +26 -10
  39. package/src/src/mcp/server.ts +52 -8
  40. package/src/src/resource/factory.ts +1 -0
  41. package/src/src/resource/types.ts +2 -0
  42. package/src/src/server/dev-ui/manifest.js +12 -12
  43. package/src/src/server/services/rsc/endpoints/action-parser.ts +1 -1
  44. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  45. package/src/src/utils/version-constant.ts +1 -1
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.142",
3
+ "version": "0.1.144",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -14,5 +14,15 @@ interface BuildEmbeddedOptions {
14
14
  export declare function buildEmbeddedPreset(options: BuildEmbeddedOptions): Promise<{
15
15
  manifest: EmbeddedBundleManifest;
16
16
  }>;
17
+ /** @internal — exported for testing */
18
+ export declare function presetDirname(path: string): string;
19
+ /** @internal — exported for testing */
20
+ export declare function presetBasename(path: string): string;
21
+ /** @internal — exported for testing */
22
+ export declare function normalizeAppRoutePath(rel: string): string;
23
+ /** @internal — exported for testing */
24
+ export declare function normalizePageRoutePath(relPath: string): string;
25
+ /** @internal — exported for testing */
26
+ export declare function isPageFile(name: string): boolean;
17
27
  export {};
18
28
  //# sourceMappingURL=preset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../../src/src/build/embedded/preset.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAGjF,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAoH/C"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../../src/src/build/embedded/preset.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAGjF,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAoH/C;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,uCAAuC;AACvC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,uCAAuC;AACvC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -42,7 +42,7 @@ export async function buildEmbeddedPreset(options) {
42
42
  mode: "production",
43
43
  adapter,
44
44
  });
45
- await fs.mkdir(dirname(r.filePath), { recursive: true });
45
+ await fs.mkdir(presetDirname(r.filePath), { recursive: true });
46
46
  await fs.writeTextFile(r.filePath, compiled.code);
47
47
  const fileRel = r.filePath.slice(embeddedDir.length + 1).replace(/\\/g, "/");
48
48
  routes.push({
@@ -73,7 +73,7 @@ export async function buildEmbeddedPreset(options) {
73
73
  target: "es2020",
74
74
  format: "esm",
75
75
  });
76
- const name = basename(srcPath).replace(/\.tsx?$/, ".js");
76
+ const name = presetBasename(srcPath).replace(/\.tsx?$/, ".js");
77
77
  await fs.writeTextFile(join(embeddedDir, "rsc", name), res.code);
78
78
  }
79
79
  catch (e) {
@@ -114,14 +114,30 @@ export async function buildEmbeddedPreset(options) {
114
114
  }
115
115
  return { manifest };
116
116
  }
117
- function dirname(path) {
117
+ /** @internal — exported for testing */
118
+ export function presetDirname(path) {
118
119
  const idx = path.lastIndexOf("/");
119
120
  return idx === -1 ? "" : path.slice(0, idx);
120
121
  }
121
- function basename(path) {
122
+ /** @internal — exported for testing */
123
+ export function presetBasename(path) {
122
124
  const idx = path.lastIndexOf("/");
123
125
  return idx === -1 ? path : path.slice(idx + 1);
124
126
  }
127
+ /** @internal — exported for testing */
128
+ export function normalizeAppRoutePath(rel) {
129
+ return rel === "" ? "/" : rel.startsWith("/") ? rel : `/${rel}`;
130
+ }
131
+ /** @internal — exported for testing */
132
+ export function normalizePageRoutePath(relPath) {
133
+ const withoutExt = relPath.replace(/\.(mdx|md)$/, "");
134
+ const norm = `/${withoutExt}`;
135
+ return norm.replace(/\/+/g, "/") || "/";
136
+ }
137
+ /** @internal — exported for testing */
138
+ export function isPageFile(name) {
139
+ return (name.endsWith(".mdx") || name.endsWith(".md")) && !name.startsWith("_");
140
+ }
125
141
  async function findOrCreateEntryPath(fs, projectDir) {
126
142
  const candidates = [
127
143
  join(projectDir, "app", "page.mdx"),
@@ -202,7 +218,7 @@ async function discoverAppRoutes(fs, projectDir, embeddedDir) {
202
218
  if (!ent.isFile || (ent.name !== "page.mdx" && ent.name !== "page.md"))
203
219
  continue;
204
220
  const routePath = rel.replace(/\/page\.(mdx|md)$/, "").replace(/(^$)/, "/");
205
- const norm = routePath === "" ? "/" : routePath.startsWith("/") ? routePath : `/${routePath}`;
221
+ const norm = normalizeAppRoutePath(routePath);
206
222
  const filePath = join(embeddedDir, routePath === "" ? "app.js" : `app${norm}.js`);
207
223
  results.push({ routePath: norm, filePath, sourcePath: abs });
208
224
  }
@@ -228,13 +244,9 @@ async function discoverPagesRoutes(fs, projectDir, embeddedDir) {
228
244
  }
229
245
  if (!ent.isFile)
230
246
  continue;
231
- if (!ent.name.endsWith(".mdx") && !ent.name.endsWith(".md"))
232
- continue;
233
- if (ent.name.startsWith("_"))
247
+ if (!isPageFile(ent.name))
234
248
  continue;
235
- const withoutExt = relNext.replace(/\.(mdx|md)$/, "");
236
- const norm = `/${withoutExt}`;
237
- const routePath = norm.replace(/\/+/g, "/") ? norm.replace(/\/+/g, "/") : "/";
249
+ const routePath = normalizePageRoutePath(relNext);
238
250
  const filePath = join(embeddedDir, `pages${routePath}.js`.replace(/\/+/g, "/"));
239
251
  results.push({ routePath, filePath, sourcePath: abs });
240
252
  }
@@ -42,10 +42,12 @@ export declare class MCPServer {
42
42
  private initialize;
43
43
  private listTools;
44
44
  private callTool;
45
+ private listResourceTemplates;
45
46
  private listResources;
46
47
  private readResource;
47
48
  private listPrompts;
48
49
  private getPrompt;
50
+ private complete;
49
51
  createHTTPHandler(): (request: dntShim.Request) => Promise<dntShim.Response>;
50
52
  private extractRequestContext;
51
53
  private validateAuth;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAMjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAWzE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;AA4DzD,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,eAAe;IAQnC;;;;;;OAMG;IACH,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAK3D,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAmBhG,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,UAAU;YA0BJ,SAAS;IA6BvB,OAAO,CAAC,QAAQ;IAgDhB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAuCjB,iBAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAuD5E,OAAO,CAAC,qBAAqB;YAgBf,YAAY;IAsB1B,OAAO,CAAC,cAAc;YAqBR,0BAA0B;CAqBzC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAMjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAWzE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;AA4DzD,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,eAAe;IAQnC;;;;;;OAMG;IACH,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAK3D,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAmBhG,OAAO,CAAC,QAAQ;IAoChB,OAAO,CAAC,UAAU;YA2BJ,SAAS;IA6BvB,OAAO,CAAC,QAAQ;IAgDhB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAuCjB,OAAO,CAAC,QAAQ;IAUhB,iBAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAuD5E,OAAO,CAAC,qBAAqB;YAgBf,YAAY;IAsB1B,OAAO,CAAC,cAAc;YAqBR,0BAA0B;CAqBzC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
@@ -103,21 +103,25 @@ export class MCPServer {
103
103
  dispatch(method, params, context) {
104
104
  switch (method) {
105
105
  case "tools/list":
106
- return this.listTools();
106
+ return this.listTools(params);
107
107
  case "tools/call":
108
108
  return this.callTool(params, context);
109
109
  case "resources/list":
110
- return this.listResources();
110
+ return this.listResources(params);
111
111
  case "resources/read":
112
112
  return this.readResource(params);
113
+ case "resources/templates/list":
114
+ return this.listResourceTemplates(params);
113
115
  case "prompts/list":
114
- return this.listPrompts();
116
+ return this.listPrompts(params);
115
117
  case "prompts/get":
116
118
  return this.getPrompt(params);
117
119
  case "initialize":
118
120
  return this.initialize(params);
119
121
  case "notifications/initialized":
120
122
  return Promise.resolve({});
123
+ case "completion/complete":
124
+ return this.complete(params);
121
125
  default:
122
126
  throw toError(createError({
123
127
  type: "agent",
@@ -143,11 +147,12 @@ export class MCPServer {
143
147
  tools: { listChanged: true },
144
148
  resources: { subscribe: true, listChanged: true },
145
149
  prompts: { listChanged: true },
150
+ completions: {},
146
151
  },
147
152
  instructions: "Veryfront MCP server provides development tools. Use vf_get_errors to check for code errors, vf_get_logs for server logs, vf_scaffold for code generation, and vf_get_project_context for project structure.",
148
153
  });
149
154
  }
150
- async listTools() {
155
+ async listTools(_params) {
151
156
  // Sync integration config to API on first tools/list call
152
157
  if (this.integrationLoader && !this.integrationsLoaded) {
153
158
  try {
@@ -212,16 +217,38 @@ export class MCPServer {
212
217
  }
213
218
  }, { "mcp.tool.name": toolName });
214
219
  }
215
- listResources() {
220
+ listResourceTemplates(_params) {
221
+ const registry = getMCPRegistry();
222
+ const templates = [];
223
+ for (const [id, resource] of registry.resources.entries()) {
224
+ if (/:(\w+)/.test(resource.pattern)) {
225
+ const uriTemplate = resource.pattern.replace(/:(\w+)/g, "{$1}");
226
+ const entry = {
227
+ uriTemplate,
228
+ name: id,
229
+ description: resource.description,
230
+ mimeType: "application/json",
231
+ };
232
+ if (resource.title)
233
+ entry.title = resource.title;
234
+ templates.push(entry);
235
+ }
236
+ }
237
+ return Promise.resolve({ resourceTemplates: templates });
238
+ }
239
+ listResources(_params) {
216
240
  const registry = getMCPRegistry();
217
241
  const resources = [];
218
242
  for (const [id, resource] of registry.resources.entries()) {
219
- resources.push({
243
+ const entry = {
220
244
  uri: resource.pattern,
221
245
  name: id,
222
246
  description: resource.description,
223
247
  mimeType: "application/json",
224
- });
248
+ };
249
+ if (resource.title)
250
+ entry.title = resource.title;
251
+ resources.push(entry);
225
252
  }
226
253
  return Promise.resolve({ resources });
227
254
  }
@@ -255,7 +282,7 @@ export class MCPServer {
255
282
  };
256
283
  }, { "mcp.resource.uri": resourceUri });
257
284
  }
258
- listPrompts() {
285
+ listPrompts(_params) {
259
286
  const registry = getMCPRegistry();
260
287
  const prompts = [];
261
288
  for (const [id, promptInstance] of registry.prompts.entries()) {
@@ -291,6 +318,13 @@ export class MCPServer {
291
318
  };
292
319
  }, { "mcp.prompt.name": promptName });
293
320
  }
321
+ complete(_params) {
322
+ // Stub: returns empty completions for all refs.
323
+ // Real logic will resolve values from resource templates and prompts.
324
+ return Promise.resolve({
325
+ completion: { values: [], total: 0, hasMore: false },
326
+ });
327
+ }
294
328
  createHTTPHandler() {
295
329
  return async (request) => {
296
330
  const requestOrigin = request.headers.get("Origin");
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/resource/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3D,wBAAgB,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EACzD,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,GACrC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAqB1B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/resource/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3D,wBAAgB,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EACzD,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,GACrC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAsB1B"}
@@ -13,6 +13,7 @@ export function resource(config) {
13
13
  id,
14
14
  pattern,
15
15
  description: config.description,
16
+ title: config.title,
16
17
  paramsSchema: config.paramsSchema,
17
18
  load: async (params) => {
18
19
  try {
@@ -11,6 +11,7 @@ import type { McpConfig } from "./schemas/index.js";
11
11
  export interface ResourceConfig<TParams = unknown, TData = unknown> {
12
12
  pattern?: string;
13
13
  description: string;
14
+ title?: string;
14
15
  paramsSchema: z.ZodSchema<TParams>;
15
16
  load: (params: TParams) => Promise<TData> | TData;
16
17
  subscribe?: (params: TParams) => AsyncIterable<TData>;
@@ -20,6 +21,7 @@ export interface Resource<TParams = unknown, TData = unknown> {
20
21
  id: string;
21
22
  pattern: string;
22
23
  description: string;
24
+ title?: string;
23
25
  paramsSchema: z.ZodSchema<TParams>;
24
26
  load: (params: TParams) => Promise<TData>;
25
27
  subscribe?: (params: TParams) => AsyncIterable<TData>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/resource/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/resource/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB"}
@@ -1,30 +1,30 @@
1
1
  declare namespace _default {
2
2
  let version: number;
3
3
  let files: {
4
+ "projects/App.tsx": string;
4
5
  "projects/components/ProjectCard.tsx": string;
5
- "projects/components/EmptyState.tsx": string;
6
6
  "projects/components/SearchInput.tsx": string;
7
+ "projects/components/EmptyState.tsx": string;
7
8
  "projects/components/Header.tsx": string;
8
9
  "projects/index.tsx": string;
9
- "projects/App.tsx": string;
10
10
  "shared/mount-react-app.tsx": string;
11
+ "dashboard/App.tsx": string;
12
+ "dashboard/components/AgentsTab.tsx": string;
11
13
  "dashboard/components/Sidebar.tsx": string;
12
14
  "dashboard/components/WorkflowsTab.tsx": string;
13
- "dashboard/components/RuntimeTab.tsx": string;
15
+ "dashboard/components/shared.tsx": string;
16
+ "dashboard/components/Card.tsx": string;
14
17
  "dashboard/components/TabNav.tsx": string;
15
- "dashboard/components/ConfigTab.tsx": string;
16
- "dashboard/components/MCPTab.tsx": string;
17
- "dashboard/components/FilesTab.tsx": string;
18
18
  "dashboard/components/AITab.tsx": string;
19
- "dashboard/components/Card.tsx": string;
19
+ "dashboard/components/MCPTab.tsx": string;
20
20
  "dashboard/components/ServerTab.tsx": string;
21
- "dashboard/components/shared.tsx": string;
22
- "dashboard/components/Header.tsx": string;
23
- "dashboard/components/AgentsTab.tsx": string;
21
+ "dashboard/components/ConfigTab.tsx": string;
22
+ "dashboard/components/RuntimeTab.tsx": string;
24
23
  "dashboard/components/ErrorsTab.tsx": string;
24
+ "dashboard/components/FilesTab.tsx": string;
25
25
  "dashboard/components/APITab.tsx": string;
26
+ "dashboard/components/Header.tsx": string;
26
27
  "dashboard/index.tsx": string;
27
- "dashboard/App.tsx": string;
28
28
  };
29
29
  }
30
30
  export default _default;