Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
2fc66dc
Cleanup constants and helpers
michaelstaib Nov 19, 2025
e133a9b
Copied metadb to the core
michaelstaib Nov 20, 2025
baac8d8
Added metabd
michaelstaib Nov 20, 2025
269436b
Merge Types Fetching and Execution
michaelstaib Nov 26, 2025
2505534
Deprectaion notice
michaelstaib Nov 26, 2025
4067b04
Merge branch 'main' into mst/core-metadb
michaelstaib Nov 26, 2025
a7a87ca
wip
michaelstaib Nov 27, 2025
3fd40c3
wip
michaelstaib Nov 27, 2025
971333f
wip
michaelstaib Nov 27, 2025
0388821
wip
michaelstaib Nov 28, 2025
95ae2c6
wip
michaelstaib Nov 28, 2025
4630aba
wip
michaelstaib Nov 28, 2025
fe8a8e6
wip
michaelstaib Dec 1, 2025
152c43c
wip
michaelstaib Dec 1, 2025
a96af9a
wip
michaelstaib Dec 1, 2025
1d42995
wip
michaelstaib Dec 2, 2025
fbb3ff7
wip
michaelstaib Dec 2, 2025
64f03e3
Merge branch 'main' into mst/core-metadb
michaelstaib Dec 2, 2025
cd27228
wip
michaelstaib Dec 2, 2025
01e4284
wip
michaelstaib Dec 3, 2025
50a3a78
wip
michaelstaib Dec 4, 2025
45ed184
align extension argument validation
michaelstaib Dec 4, 2025
be3c2a5
wip
michaelstaib Dec 4, 2025
76ff6cc
wip
michaelstaib Dec 4, 2025
9d8eeb9
wip
michaelstaib Dec 4, 2025
cdfbd3f
wip
michaelstaib Dec 4, 2025
722e60f
Fixed middleware
michaelstaib Dec 4, 2025
133f694
wip
michaelstaib Dec 5, 2025
1b44d45
wip
michaelstaib Dec 5, 2025
e4180e6
Updated Snapshots
michaelstaib Dec 9, 2025
183bce5
fixed tests
michaelstaib Dec 9, 2025
11075e6
wip
michaelstaib Dec 12, 2025
dbf2ce1
Merge branch 'main' into mst/core-metadb
michaelstaib Dec 12, 2025
f8e619c
wip
michaelstaib Dec 15, 2025
a25b010
wip
michaelstaib Dec 15, 2025
9a79137
wip
michaelstaib Dec 15, 2025
8da86fd
wip
michaelstaib Dec 16, 2025
c0899bd
Merge branch 'main' into mst/core-metadb
michaelstaib Dec 16, 2025
36ac559
wip
michaelstaib Dec 16, 2025
91d3d60
wip
michaelstaib Dec 16, 2025
f7d6975
wip
michaelstaib Dec 16, 2025
3e44243
wip
michaelstaib Dec 16, 2025
b304652
Refactor OperationResult usage in tests and remove obsolete ResultBui…
michaelstaib Dec 16, 2025
3bcb7c8
Enhance ImmutableOrderedDictionary and OperationResult with new Creat…
michaelstaib Dec 16, 2025
a1d18d0
Add Create method to ImmutableOrderedDictionary; refactor OperationRe…
michaelstaib Dec 17, 2025
f3c99bd
Refactor GeoJSON serialization tests to throw LeafCoercionException i…
michaelstaib Dec 19, 2025
99527c8
Refactor scalar type handling and remove deprecated interfaces
michaelstaib Dec 19, 2025
3515727
Refactor scalar types to improve error handling and method naming con…
michaelstaib Dec 19, 2025
e6f233e
Refactor scalar types to enhance coercion methods and improve documen…
michaelstaib Dec 19, 2025
3b7cee5
Enhance scalar type handling by adding RuntimeType to MissingType, up…
michaelstaib Dec 19, 2025
358ccf5
Refactor scalar types to replace IHasRuntimeType with IRuntimeTypePro…
michaelstaib Dec 19, 2025
fae385c
Refactor scalar types to replace IHasRuntimeType with IRuntimeTypePro…
michaelstaib Dec 19, 2025
06d7f21
Refactor type handling to replace IHasRuntimeType with IRuntimeTypePr…
michaelstaib Dec 19, 2025
33bfeac
Refactor JsonType to improve value coercion methods and enhance compa…
michaelstaib Dec 19, 2025
ee97480
Add RuntimeType implementation to various type definitions for improv…
michaelstaib Dec 21, 2025
983c26e
Refactor type handling to replace IHasRuntimeType with IRuntimeTypePr…
michaelstaib Dec 21, 2025
494004f
Refactor input parsing and error handling in HotChocolate
michaelstaib Dec 21, 2025
22b8812
Add snapshot for Utf8GraphQLRequestParser tests with complex query st…
michaelstaib Dec 22, 2025
6fb0c9d
feat: Enhance GraphQL request handling with improved error reporting …
michaelstaib Dec 23, 2025
f3f0190
feat: Refactor GraphQL request handling to use JsonDocumentOwner for …
michaelstaib Dec 23, 2025
b00ed4e
wip
michaelstaib Jan 5, 2026
7b99906
wip
michaelstaib Jan 6, 2026
e928b7c
feat: Introduce IntToStructBaseType for integer-based NodaTime scalars
michaelstaib Jan 6, 2026
11cf079
feat: Refactor scalar types to improve input/output coercion and erro…
michaelstaib Jan 6, 2026
da6b9d3
feat: Replace IHasRuntimeType with IRuntimeTypeProvider in filter and…
michaelstaib Jan 6, 2026
a6b2098
feat: Update ActivityEnricher to use JsonDocument for request extensi…
michaelstaib Jan 6, 2026
5016bdb
refactor: Rename parameter 'literal' to 'valueLiteral' in IsValueComp…
michaelstaib Jan 6, 2026
0012618
Refactor scalar types to improve coercion methods and exception handling
michaelstaib Jan 6, 2026
9e99dfd
fixed
michaelstaib Jan 6, 2026
ff871c5
Refactor scalar types and remove deprecated ones
michaelstaib Jan 7, 2026
062b87e
Refactor scalar types to use new coercion methods
michaelstaib Jan 7, 2026
63ccfb2
refactor: Add conditional compilation for .NET 9.0 or greater in Requ…
michaelstaib Jan 7, 2026
98e3e96
refactor: Improve exception handling and code structure in Fusion exe…
michaelstaib Jan 7, 2026
b9f3cec
refactor: Enhance GraphQL handling with new ResultElement formatter a…
michaelstaib Jan 7, 2026
b2a597b
Add tests for UnsignedLongType and UnsignedShortType; refactor UrlTyp…
michaelstaib Jan 8, 2026
f4c4e79
Refactor RgbaType and UtcOffsetType tests to use new coercion methods…
michaelstaib Jan 8, 2026
960f5f0
Improved example
michaelstaib Jan 8, 2026
17393e4
refactor: Remove obsolete scalar types and related error handling fro…
michaelstaib Jan 8, 2026
9d4fab9
refactor: Update snapshot assertions in scalar type tests for consist…
michaelstaib Jan 8, 2026
28004d0
refactor: Update OperationResult and ResolverTaskFactory for improved…
michaelstaib Jan 8, 2026
3acbe45
refactor: Update error handling in ResolverTaskFactory and ResultDocu…
michaelstaib Jan 8, 2026
2f7cd49
Refactor scalar type tests by removing null coercion and value to lit…
michaelstaib Jan 9, 2026
845350d
feat(json): implement a new JsonWriter for efficient JSON serialization
michaelstaib Jan 9, 2026
e34296c
Refactor scalar type coercion error handling and update tests
michaelstaib Jan 9, 2026
3036496
refactor: Update null handling in IsValueCompatible methods to return…
michaelstaib Jan 9, 2026
305aa21
Merged AnyType and JsonType
michaelstaib Jan 11, 2026
046177b
updated snapshot
michaelstaib Jan 11, 2026
8345a11
Fixed encoding issue
michaelstaib Jan 11, 2026
e645a8b
Improved error behavior on input coercion.
michaelstaib Jan 11, 2026
fea86bd
Fixed enum tests when using custom name- or value-comparers.
michaelstaib Jan 11, 2026
12476e1
Fixed more test issues
michaelstaib Jan 12, 2026
e698876
Test fixes
michaelstaib Jan 12, 2026
2ffe47d
Merge branch 'main' into mst/core-metadb
michaelstaib Jan 12, 2026
ff645eb
Fixed File Name
michaelstaib Jan 12, 2026
adb8b75
Fixed more tests
michaelstaib Jan 12, 2026
7c2c1a8
Refactored more tests
michaelstaib Jan 12, 2026
935be5e
Fixed more tests
michaelstaib Jan 13, 2026
d6674f3
Fixed snapshots
michaelstaib Jan 13, 2026
e254f21
fix tests
michaelstaib Jan 13, 2026
2e02589
Reworked NodaTime Type tests
michaelstaib Jan 13, 2026
d15a885
Fixed more tests
michaelstaib Jan 13, 2026
e060c72
fixed tests
michaelstaib Jan 13, 2026
367a811
update snapshots
michaelstaib Jan 13, 2026
290b70d
fixed more tests
michaelstaib Jan 13, 2026
fc559f1
formatting
michaelstaib Jan 13, 2026
68707c8
Fixed more stuff
michaelstaib Jan 14, 2026
a9145e8
fix
michaelstaib Jan 15, 2026
c2abad5
Spatial Types
michaelstaib Jan 15, 2026
81d7304
docs
michaelstaib Jan 15, 2026
c4535ba
fix
michaelstaib Jan 15, 2026
efcb6e8
minor changes
michaelstaib Jan 15, 2026
8c06988
Fix minor snapshot in OpenAPI tests
tobias-tengler Jan 15, 2026
96b3964
Fixed the json writer and the value handling of the source result doc…
michaelstaib Jan 15, 2026
00951f9
fixed json default options
michaelstaib Jan 15, 2026
aa85db9
Snapshots
michaelstaib Jan 15, 2026
7ea8810
Snapshots
michaelstaib Jan 15, 2026
16ddcff
Merge branch 'main' into mst/core-metadb
michaelstaib Jan 15, 2026
d1a0151
Removed usage of the JSON type from the MCP adapter tests
glen-84 Jan 16, 2026
5ff833e
Fix last failing OpenAPI test
tobias-tengler Jan 16, 2026
30a7304
Added "RRGGBB" to dictionary
glen-84 Jan 16, 2026
16fd523
Merge branch 'mst/core-metadb' of github.com:ChilliCream/graphql-plat…
glen-84 Jan 16, 2026
ba2c6af
Used Assert.Empty for errors
glen-84 Jan 16, 2026
b2b09c2
Fix variables being set as extensions
tobias-tengler Jan 16, 2026
2836df9
JSON -> Any
glen-84 Jan 16, 2026
a02bd7e
Used `IsEmpty` on ContextData in SnapshotExtensions
glen-84 Jan 16, 2026
355a9a7
Fixed variable coercion
michaelstaib Jan 16, 2026
fe99bb6
Reverted incorrect snapshot changes
glen-84 Jan 16, 2026
fe3e84f
Updated snapshot HotChocolate.Language
glen-84 Jan 16, 2026
e299031
Fixed apollo federation
michaelstaib Jan 16, 2026
4796e26
Merge branch 'main' into mst/core-metadb
michaelstaib Jan 16, 2026
4226558
Fixed azure functions
michaelstaib Jan 16, 2026
3411ad4
Fixed More
michaelstaib Jan 16, 2026
86a5651
Fixed caching tests
glen-84 Jan 16, 2026
21840ad
Fixed issue with fusion scalars exposing serializeAs
michaelstaib Jan 16, 2026
5ce8d6c
Added todo
michaelstaib Jan 16, 2026
cf7fa97
Fixed validation test
michaelstaib Jan 16, 2026
6cc0f28
Fixed fusion tests
michaelstaib Jan 16, 2026
a7fbbb8
Fixed StrawberryShake.Transport.InMemory test
glen-84 Jan 16, 2026
3f0b8e4
Fixed PersistedOperations tests
glen-84 Jan 16, 2026
1eda3c1
WIP: FIx most AspNetCore and Fusion tests
tobias-tengler Jan 16, 2026
d44a1f9
Updated snapshots
michaelstaib Jan 16, 2026
b116435
Updated HotChocolate.Language snapshot
glen-84 Jan 17, 2026
5c410d9
Fixed some HotChocolate.Diagnostics tests
glen-84 Jan 19, 2026
e01f82a
Updated snapshots
glen-84 Jan 19, 2026
0468c83
Merge remote-tracking branch 'origin/main' into mst/core-metadb
tobias-tengler Jan 19, 2026
8e67221
Merge branch 'main' into mst/core-metadb
michaelstaib Jan 21, 2026
a52b893
Fixed projection issue.
michaelstaib Jan 27, 2026
133db3c
Merge remote-tracking branch 'origin/main' into mst/core-metadb
tobias-tengler Jan 27, 2026
7ca68c0
Added Agent Infos
michaelstaib Jan 27, 2026
5052717
fixed more issues
michaelstaib Jan 28, 2026
6405c57
Fixed more tests
michaelstaib Jan 28, 2026
931dc63
Fixed operation compiler tests
michaelstaib Jan 28, 2026
3f112d7
Merge branch 'main' into mst/core-metadb
glen-84 Jan 29, 2026
b3b1359
Fixed spelling error
glen-84 Jan 29, 2026
984b12a
Fixed operation compiler ...
michaelstaib Jan 29, 2026
eec4c88
updated devcontainer configuration
michaelstaib Feb 2, 2026
aa0cfc8
Merge branch 'main' into mst/core-metadb
glen-84 Feb 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 27 additions & 8 deletions .devcontainer/backend/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
{
"name": "ChilliCream Backend",
"build": {
"dockerfile": "dockerfile",
"context": "."
"dockerfile": "dockerfile",
"context": "."
},
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"enableNonRootDocker": "true",
"moby": "true"
}
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"enableNonRootDocker": "true",
"moby": "true"
}
},
"postCreateCommand": "./init.sh"
"postCreateCommand": "./init.sh",
"customizations": {
"vscode": {
"extensions": [
"davidanson.vscode-markdownlint",
"ms-dotnettools.csdevkit",
"EditorConfig.EditorConfig",
"dbaeumer.vscode-eslint",
"streetsidesoftware.code-spell-checker",
"graphql.vscode-graphql",
"ms-dotnettools.csharp",
"esbenp.prettier-vscode",
"anthropic.claude-code",
"openai.chatgpt"
],
"settings": {
"dotnet.defaultSolution": "src/All.slnx"
}
}
}
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -327,3 +327,4 @@ packages.lock.json

Directory.Build.user.props
.generated/
.claude/
238 changes: 238 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
# AGENTS.md - OpenAI Codex Configuration

This file provides guidance to OpenAI Codex and other AI coding agents when working with this repository.

## Project Summary

**ChilliCream GraphQL Platform** - A comprehensive GraphQL ecosystem for .NET

| Product | Description |
| --------------- | ------------------------------------------------------ |
| Hot Chocolate | GraphQL server framework |
| Strawberry Shake| Type-safe GraphQL client |
| Green Donut | Data fetching primitives (DataLoader, pagination, etc.)|
| Nitro | GraphQL IDE |

## Setup Instructions

### Using Devcontainer (Recommended)

This repository includes a devcontainer (`.devcontainer/`) with everything pre-installed:

- .NET SDKs 6, 7, 8, 9, 10
- Node.js LTS + Yarn
- GitHub CLI + Azure CLI
- Docker-in-docker support

The devcontainer automatically runs `init.sh` on creation - no manual setup needed.

### Manual Setup

If not using devcontainer, initialize first:

```bash
./init.sh
```

This restores website packages (yarn) and .NET packages.

### Build

```bash
./build.sh compile
```

### Test

```bash
./build.sh test
```

### Single Project Build

```bash
dotnet build src/HotChocolate/Core/src/Types/HotChocolate.Types.csproj
```

## Repository Layout

```text
src/All.slnx # Master solution (244 projects)

src/HotChocolate/ # GraphQL Server
Core/
Abstractions/ # Interfaces, contracts
Execution/ # Query execution
Types/ # Type system
Validation/ # Query validation
Subscriptions/ # Real-time updates
AspNetCore/ # HTTP integration
Language/ # Parser, syntax tree
Fusion-vnext/ # Distributed GraphQL
Data/ # Database integrations

src/GreenDonut/ # Data fetching primitives
src/StrawberryShake/ # GraphQL client
src/CookieCrumble/ # Snapshot testing

website/ # Documentation (Gatsby)
templates/ # Project templates
.build/ # Build scripts (Nuke)
```

## Tech Stack

| Component | Technology |
| --------- | -------------- |
| Runtime | .NET 8/9/10 |
| SDK | 10.0.100 |
| Build | Nuke.Build |
| Tests | xUnit |
| Snapshots | CookieCrumble |
| Docs | Gatsby + React |

## Coding Standards

### C# Conventions

- File-scoped namespaces: `namespace HotChocolate.Types;`
- 4-space indentation
- Use records for immutable types
- Expression-bodied members preferred
- No trailing whitespace

### Naming Conventions

- Projects: `HotChocolate.{Feature}`
- Tests: `HotChocolate.{Feature}.Tests`
- Interfaces: `I{Name}` prefix
- Async methods: `{Name}Async` suffix

### File Organization

- One type per file (generally)
- Test files mirror source structure
- Snapshots in `__snapshots__/` folders

## Testing Guidelines

### Running Tests

```bash
# All tests
./build.sh test

# Specific project
dotnet test src/HotChocolate/Core/test/Types.Tests/

# Specific test
dotnet test --filter "FullyQualifiedName~MyTestName"
```

### Snapshot Testing

- Uses CookieCrumble library
- Snapshots stored in `__snapshots__/`
- Update snapshots by deleting old file and re-running test

### Test Structure

```csharp
[Fact]
public async Task MyFeature_Should_WorkCorrectly()
{
// Arrange
var schema = await new ServiceCollection()
.AddGraphQL()
.AddQueryType<Query>()
.BuildSchemaAsync();

// Act
var result = await schema.ExecuteAsync("{ field }");

// Assert
result.MatchSnapshot();
}
```

## Key Abstractions

### GraphQL Types

```csharp
public class BookType : ObjectType<Book>
{
protected override void Configure(IObjectTypeDescriptor<Book> descriptor)
{
descriptor.Field(b => b.Title).Type<NonNullType<StringType>>();
}
}
```

### DataLoader

```csharp
public class BookByIdDataLoader : BatchDataLoader<int, Book>
{
protected override async Task<IReadOnlyDictionary<int, Book>> LoadBatchAsync(
IReadOnlyList<int> keys, CancellationToken ct)
{
// Batch load implementation
}
}
```

### Resolvers

```csharp
public class Query
{
public Book GetBook([Service] IBookRepository repo, int id)
=> repo.GetById(id);
}
```

## Important Paths

| Path | Purpose |
| -------------------- | -------------------- |
| `src/All.slnx` | Open this in IDE |
| `global.json` | .NET SDK version |
| `.editorconfig` | Code style rules |
| `.build/Build.csproj`| Build configuration |
| `website/` | Documentation source |

## Common Modifications

### Add New Type Extension

1. Create in `src/HotChocolate/Core/src/Types/Types/`
2. Add tests in `src/HotChocolate/Core/test/Types.Tests/`
3. Export from appropriate namespace

### Add Database Integration

1. Create project in `src/HotChocolate/Data/`
2. Reference `HotChocolate.Execution`
3. Implement `IQueryableExecutable` or similar

### Modify Execution Pipeline

1. Changes go in `src/HotChocolate/Core/src/Execution/`
2. Middleware in `Processing/` directory
3. Add tests covering the pipeline stage

## Troubleshooting

| Issue | Solution |
| ----------------- | ------------------------------------------ |
| Build fails | Run `./init.sh` first |
| Missing packages | Run `./build.sh restore` |
| Snapshot mismatch | Check `__snapshots__/` for expected output |
| SDK not found | Install .NET SDK 10.0.100 |

## Links

- Documentation: `website/src/docs/`
- Examples: `templates/`
- Build scripts: `.build/`
Loading
Loading