|
1 | 1 | using EverythingServer;
|
2 | 2 | using EverythingServer.Prompts;
|
| 3 | +using EverythingServer.Resources; |
3 | 4 | using EverythingServer.Tools;
|
4 | 5 | using Microsoft.Extensions.AI;
|
5 | 6 | using Microsoft.Extensions.DependencyInjection;
|
|
14 | 15 | using OpenTelemetry.Resources;
|
15 | 16 | using OpenTelemetry.Trace;
|
16 | 17 |
|
17 |
| -#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously |
18 |
| - |
19 | 18 | var builder = Host.CreateApplicationBuilder(args);
|
20 | 19 | builder.Logging.AddConsole(consoleLogOptions =>
|
21 | 20 | {
|
|
38 | 37 | .WithTools<TinyImageTool>()
|
39 | 38 | .WithPrompts<ComplexPromptType>()
|
40 | 39 | .WithPrompts<SimplePromptType>()
|
41 |
| - .WithListResourcesHandler(async (ctx, ct) => |
42 |
| - { |
43 |
| - return new ListResourcesResult |
44 |
| - { |
45 |
| - Resources = |
46 |
| - [ |
47 |
| - new ModelContextProtocol.Protocol.Types.Resource { Name = "Direct Text Resource", Description = "A direct text resource", MimeType = "text/plain", Uri = "test://direct/text/resource" }, |
48 |
| - ] |
49 |
| - }; |
50 |
| - }) |
51 |
| - .WithListResourceTemplatesHandler(async (ctx, ct) => |
52 |
| - { |
53 |
| - return new ListResourceTemplatesResult |
54 |
| - { |
55 |
| - ResourceTemplates = |
56 |
| - [ |
57 |
| - new ResourceTemplate { Name = "Template Resource", Description = "A template resource with a numeric ID", UriTemplate = "test://template/resource/{id}" } |
58 |
| - ] |
59 |
| - }; |
60 |
| - }) |
61 |
| - .WithReadResourceHandler(async (ctx, ct) => |
62 |
| - { |
63 |
| - var uri = ctx.Params?.Uri; |
64 |
| - |
65 |
| - if (uri == "test://direct/text/resource") |
66 |
| - { |
67 |
| - return new ReadResourceResult |
68 |
| - { |
69 |
| - Contents = [new TextResourceContents |
70 |
| - { |
71 |
| - Text = "This is a direct resource", |
72 |
| - MimeType = "text/plain", |
73 |
| - Uri = uri, |
74 |
| - }] |
75 |
| - }; |
76 |
| - } |
77 |
| - |
78 |
| - if (uri is null || !uri.StartsWith("test://template/resource/")) |
79 |
| - { |
80 |
| - throw new NotSupportedException($"Unknown resource: {uri}"); |
81 |
| - } |
82 |
| - |
83 |
| - int index = int.Parse(uri["test://template/resource/".Length..]) - 1; |
84 |
| - |
85 |
| - if (index < 0 || index >= ResourceGenerator.Resources.Count) |
86 |
| - { |
87 |
| - throw new NotSupportedException($"Unknown resource: {uri}"); |
88 |
| - } |
89 |
| - |
90 |
| - var resource = ResourceGenerator.Resources[index]; |
91 |
| - |
92 |
| - if (resource.MimeType == "text/plain") |
93 |
| - { |
94 |
| - return new ReadResourceResult |
95 |
| - { |
96 |
| - Contents = [new TextResourceContents |
97 |
| - { |
98 |
| - Text = resource.Description!, |
99 |
| - MimeType = resource.MimeType, |
100 |
| - Uri = resource.Uri, |
101 |
| - }] |
102 |
| - }; |
103 |
| - } |
104 |
| - else |
105 |
| - { |
106 |
| - return new ReadResourceResult |
107 |
| - { |
108 |
| - Contents = [new BlobResourceContents |
109 |
| - { |
110 |
| - Blob = resource.Description!, |
111 |
| - MimeType = resource.MimeType, |
112 |
| - Uri = resource.Uri, |
113 |
| - }] |
114 |
| - }; |
115 |
| - } |
116 |
| - }) |
| 40 | + .WithResources<SimpleResourceType>() |
117 | 41 | .WithSubscribeToResourcesHandler(async (ctx, ct) =>
|
118 | 42 | {
|
119 | 43 | var uri = ctx.Params?.Uri;
|
|
0 commit comments