|
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