Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
7029ca7
moved all files into EventStore.Client project
RagingKore Dec 16, 2024
2cdf1f0
moved files into main project and deleted remaining empty projects
RagingKore Dec 18, 2024
bd6b10f
Remove unused target frameworks and pass certificate in healthcheck
w1am Dec 20, 2024
0c2d0e3
Tests
w1am Jan 6, 2025
ebc6e60
Rename test symbols
w1am Jan 7, 2025
a0dd296
Merge branch 'master' of github.com:EventStore/EventStore-Client-Dotn…
w1am Jan 7, 2025
740872b
Test workflow
w1am Jan 7, 2025
f68cec0
Testing something
w1am Jan 7, 2025
7699152
More tests
w1am Jan 7, 2025
4c238c7
Improve CI
w1am Jan 8, 2025
9c693e6
Merge branch 'master' of github.com:EventStore/EventStore-Client-Dotn…
w1am Jan 8, 2025
b278f7d
Improve CI
w1am Jan 8, 2025
fd0b009
Fixup
w1am Jan 8, 2025
d613ba3
Publish actions
w1am Jan 8, 2025
d98910a
Temporarily disable Public actions
w1am Jan 8, 2025
d62b558
Fixup
w1am Jan 8, 2025
55d1547
Test warmup
w1am Jan 9, 2025
faf35ef
Rename namespaces and samples
w1am Apr 30, 2025
34f3112
refactor: move ExpectedRevision to StreamState. (#337)
w1am May 1, 2025
45e43fa
Rename some overloads
w1am May 1, 2025
236eeaf
Update README
w1am May 1, 2025
7689e0c
Move and reorganize streams and protocol files into new modules.
RagingKore May 1, 2025
81b3d05
Refactor project structure to improve modularity.
RagingKore May 1, 2025
dbb9e57
Remove `DefaultRequestVersionHandler` and apply namespace style updates
RagingKore May 1, 2025
77057bc
Refactor client code and add connection string parsing
RagingKore May 1, 2025
07b6ead
Introduce schema serialization framework with support for JSON and Pr…
RagingKore May 1, 2025
1c52e9f
Refactor stream handling and implement new append model
RagingKore May 2, 2025
8f20744
checkpoint
RagingKore May 7, 2025
faad752
Remove obsolete gRPC and schema serialization components
RagingKore May 16, 2025
5ef49f8
Refactor schema serialization and enhance validation logic
RagingKore May 19, 2025
9f10571
Refactor schema serialization and client structure
RagingKore May 21, 2025
f7e9e2c
Remove unused schema registry and message type resolution code
RagingKore May 22, 2025
a528a51
Refactor schema management and serializer dependencies
RagingKore May 22, 2025
60ef7dc
Remove unused backup schema serializers
RagingKore May 22, 2025
0db6ac5
Remove NET48, unused dependencies and conditional compilation blocks
RagingKore May 22, 2025
c91ff18
Completed core read, append. subscribe wrappers and removed unused in…
RagingKore Jun 2, 2025
e89cffc
Refactor project structure and update namespaces for Kurrent.Client
RagingKore Jun 2, 2025
422f64a
Moved all new things to new namespace `Kurrent.Client`
RagingKore Jun 2, 2025
54de86d
Remove legacy schema-related models and refactor schema name strategies
RagingKore Jun 3, 2025
afedcf0
moved the cheese.
RagingKore Jun 3, 2025
72e0150
Remove `Kurrent.Grpc` project and refactor namespaces
RagingKore Jun 3, 2025
b3d38b1
Game changing legacy call invoker implementation.
RagingKore Jun 5, 2025
e71077a
before new client options
RagingKore Jun 5, 2025
933f505
Checkpoint
RagingKore Jun 9, 2025
54bd7a0
Created Result and removed failed `Kurrent.Client` and associated files
RagingKore Jun 9, 2025
4df387a
Added `Kurrent.Client.SourceGenerators` project with a source generat…
RagingKore Jun 9, 2025
1e5068e
Schema Name Strategies Tests (#351)
w1am Jun 10, 2025
a23c030
Refactor Kurrent.Client and KurrentDB.Client namespaces; remove unuse…
RagingKore Jun 10, 2025
0149b8f
Add Kurrent.Grpc and Kurrent.Whatever projects with initial interface…
RagingKore Jun 10, 2025
10dc56b
Refactor project structure by renaming files and updating project ref…
RagingKore Jun 10, 2025
6905e81
Refactor file structure by renaming files and updating namespaces for…
RagingKore Jun 11, 2025
3e3f04d
Remove `.clinerules` and update `.gitignore` to exclude `.clinerules/…
RagingKore Jun 11, 2025
e04d69c
Remove legacy `KurrentDB` extensions, resolver, and related code; ref…
RagingKore Jun 11, 2025
216bf22
Refactor Kurrent client schema options and enhance error handling; in…
RagingKore Jun 12, 2025
032f01f
Refactor file structure by renaming Result and Grpc directories; upda…
RagingKore Jun 12, 2025
9180f6a
Refactor namespaces and file structure for consistency; update error …
RagingKore Jun 12, 2025
9bd1fd6
Add GamesAvailable enum and refactor game simulation methods; enhance…
RagingKore Jun 13, 2025
384f1a7
Remove legacy dynamic values, Result static methods, test utilities; …
RagingKore Jun 15, 2025
502761f
Refactor IWhatever implementations to use readonly record structs; en…
RagingKore Jun 16, 2025
4aa3fd5
Refactor metadata handling and error reporting; update MetadataDecode…
RagingKore Jun 17, 2025
d21d46a
Refactor IWhatever to IVariant; update related classes and namespaces…
RagingKore Jun 17, 2025
06fe60f
Rename files and update namespaces for IVariant integration; adjust p…
RagingKore Jun 17, 2025
d93c586
Implemented IVariantResultError
RagingKore Jun 17, 2025
24f6c72
Implemented IVariantResultError; update related classes and interface…
RagingKore Jun 17, 2025
5878d81
not sure yet about the errors ffs.
RagingKore Jun 17, 2025
29e7284
Refactor and replace `ResultMethodsGenerator` with `KurrentOperationE…
RagingKore Jun 19, 2025
b91671e
Refactor KurrentOperationErrorGenerator; improve error reporting and …
RagingKore Jun 23, 2025
f09cbb6
Implement error handling in registry client using Result type (#352)
w1am Jun 30, 2025
cf0eff7
Implement schema registry reloaded features with subscription enhance…
RagingKore Jun 30, 2025
222622a
Merge remote-tracking branch 'origin/schema-registry-reloaded' into s…
RagingKore Jun 30, 2025
18df95b
Refactor stream handling and improve test cases; rename mappers and u…
RagingKore Jun 30, 2025
dcadd18
Refactor test file names for consistency; update method signatures in…
RagingKore Jul 1, 2025
a8d32b0
refactor: rename files and update project references
RagingKore Jul 3, 2025
ac673b2
feat(schema): add xunit runner configuration and improve validation m…
RagingKore Jul 7, 2025
086acbb
Persistent subscription, Projection and User Management Mappings (#355)
w1am Jul 16, 2025
d3e8db6
Merge branch 'master' into schema-registry-reloaded
w1am Jul 16, 2025
d028eb1
Fixup
w1am Jul 16, 2025
2635e79
Fix workflow reference
w1am Jul 16, 2025
ee8a92c
Merge branch 'master' of github.com:kurrent-io/KurrentDB-Client-Dotne…
w1am Jul 16, 2025
ceceb28
Add Kurrent.Client.Integration.Tests
w1am Jul 17, 2025
abbd002
Use secure container and add more shouldly extensions
w1am Jul 18, 2025
c5cca65
Add Kurrent Operations client
w1am Jul 25, 2025
ef8a07b
Move PersistentSubscriptions and ProjectionManagement to Model
w1am Jul 25, 2025
1833006
[DEV-774] Admin and Scavenge operation tests (#360)
w1am Jul 28, 2025
eed8de3
Merge branch 'master' of github.com:kurrent-io/KurrentDB-Client-Dotne…
w1am Jul 28, 2025
dc51890
Print image on container start
w1am Jul 28, 2025
6cf4581
Skip tests that interferes with other tests
w1am Jul 28, 2025
efa2430
Add missing delete projection operation (#361)
w1am Jul 29, 2025
ad47bdf
Move persistent subscription mapper
w1am Jul 29, 2025
ca0cd8a
Add error handling for persistent subscriptions and introduce new err…
w1am Jul 29, 2025
29a4afe
fix: stream state is now correctly reporteddeleted/tombstoned and str…
RagingKore Jul 29, 2025
26db656
Merge remote-tracking branch 'origin/schema-registry-reloaded' into s…
RagingKore Jul 29, 2025
aa1ad66
THE PURGE HAS BEGUN
RagingKore Jul 30, 2025
c9894f3
The purge continues with huge deletes, moving deps closer and all thi…
RagingKore Jul 30, 2025
be2efb1
chore: reorganize documentation and test files
RagingKore Jul 31, 2025
9d45c44
refactor(connection): rename and restructure Kurrent client classes
RagingKore Jul 31, 2025
acc8cf6
chore: reorganize ProjectionManagement and Services structure
RagingKore Jul 31, 2025
185aa0e
chore: rename and reorganize model files for clarity
RagingKore Jul 31, 2025
e051513
chore: reorganize model files for clarity and consistency
RagingKore Jul 31, 2025
1608657
chore: move Kurrent client files for consistency
RagingKore Jul 31, 2025
85d7356
chore: rename and reorganize namespaces and files for improved struct…
RagingKore Aug 1, 2025
89f8e24
chore: reorganize Kurrent client namespaces and files for clarity
RagingKore Aug 1, 2025
0523cb5
refactor: update error handling structures for consistency
RagingKore Aug 1, 2025
e848543
refactor(streams): reorganize Kurrent client model namespaces
RagingKore Aug 1, 2025
2c667f8
chore: rename KurrentPersistentSubscriptionsClient to PersistentSubsc…
RagingKore Aug 1, 2025
ecd3b82
refactor(persistent-subscriptions): reorganize namespaces for clarity
RagingKore Aug 1, 2025
abd367a
refactor(persistent-subscriptions): reorganize namespaces for clarity
RagingKore Aug 1, 2025
fa2d0c7
refactor(proto): rename services for consistency and clarity
RagingKore Aug 1, 2025
86f2dba
refactor(proto): update namespaces for persistent subscriptions and p…
RagingKore Aug 1, 2025
4f45df2
refactor(proto): rename ServerFeatures to ServerFeaturesService for c…
RagingKore Aug 1, 2025
0eaeda0
feat(connectors): add ConnectorsService for managing connectors
RagingKore Aug 4, 2025
5c201f4
refactor(connectors): rename models and update error handling
RagingKore Aug 4, 2025
1c074c5
refactor(errors): rename model files and update exception handling
RagingKore Aug 5, 2025
1917fef
refactor(massive): fix error model and delete zombie code
RagingKore Aug 7, 2025
ee9ac40
refactor(persistent-subscriptions): reorganize and rename classes for…
RagingKore Aug 7, 2025
0628c35
refactor(persistent-subscriptions): rename exceptions and update name…
RagingKore Aug 8, 2025
92e3651
refactor: rename Shutdown method and related error types, and also re…
RagingKore Aug 8, 2025
88dc806
refactor(projections): enhance projection options and details structure
RagingKore Aug 11, 2025
0b2fe27
refactor(projections): enhance error handling and projection options
RagingKore Aug 11, 2025
25d3c40
feat(projections): introduce projection definitions and types and pol…
RagingKore Aug 13, 2025
9cf61cb
refactor: update client structure and enhance resilience handling
RagingKore Aug 15, 2025
a760684
refactor: rename SubClientBase to ModuleClientBase and update constru…
RagingKore Aug 15, 2025
c574e90
refactor: rename ModuleClientBase to ClientModuleBase and update rela…
RagingKore Aug 15, 2025
8eb44b3
refactor users and registry api plus a big number of tests...
RagingKore Aug 18, 2025
ef04084
feat(streams): introduce StreamState enum and related classes
RagingKore Aug 19, 2025
ffb1ae0
refactor(client): remove unused exception classes and streamline erro…
RagingKore Aug 20, 2025
8f6d046
MesageSchemaNameStrategy should ignore namespace if not provided
w1am Aug 25, 2025
8af1346
[DEV-853] Include Authorization in Empty instance
w1am Aug 26, 2025
9b12481
[DEV-793] Add tracing instrumentation (#366)
w1am Sep 16, 2025
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
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
Language: Proto
BasedOnStyle: Google

AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignTrailingComments: true
ColumnLimit: 160
AllowShortBlocksOnASingleLine: Never
...
380 changes: 380 additions & 0 deletions .claude/commands/context-analyze.md

Large diffs are not rendered by default.

68 changes: 68 additions & 0 deletions .claude/commands/context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
allowed-tools:
- Agent
- Bash(git:*)
- Bash(find:*)
- Glob
- Grep
- LS
- Read
- Write
- WebSearch
- Context7:*
- mcp__microsoft_*

description: Intelligent repository analysis
version: 2.0.0
---

## Context
- Directory: !`pwd`
- Git info: !`git remote -v 2>/dev/null || echo "Not a git repository"`
- Quick size: !`if git rev-parse --git-dir >/dev/null 2>&1; then echo "$(git ls-files | wc -l) files tracked"; else echo "$(find . -type f | wc -l) files found"; fi`

## Your task

Deeply analyze this codebase and create a comprehensive understanding document.

**Performance tip:** Use `git ls-files` instead of `find` when possible - it's 10-100x faster.

### Phase 1: Understand
- What is this? What problem does it solve? Who uses it?
- Search the repo for existing documentation, ADRs, and design decisions
- If this is a business/product, search the web for their website and public information

### Phase 2: Analyze with the right tools
- **Context7**: Get current documentation for all libraries and frameworks you find
- **Microsoft MCP**: For .NET/Azure/TypeScript projects, use official Microsoft docs
- Understand the technology choices and architecture

### Phase 3: Extract insights
- Identify patterns, conventions, and team practices
- Find what makes this codebase unique or interesting
- Assess code quality and technical debt areas

**Output:** Save your findings to `.claude/docs/project-context.md` (or path specified with --output).

### Output Template

```markdown
# Project Context

## Overview
[What is this project? What problem does it solve? Who uses it?]

## Technology & Architecture
[Key technologies, architectural patterns, and design decisions]

## Domain & Business Logic
[Core concepts, workflows, and domain-specific knowledge]

## Development Patterns
[Conventions, practices, and things to know when working here]

## Key Insights
[What's interesting, unique, or important about this codebase?]
```

Adapt the analysis depth based on the repository's complexity. Think deeply about what you discover.
276 changes: 276 additions & 0 deletions .claude/commands/create-command.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,276 @@
---
allowed-tools: [Read, Write, Bash, artifacts]
description: Create custom Claude Code commands through guided interactive process using ultrathink mode
version: 1.0.0
created: 2025-07-06
last-updated: 2025-07-06
---

## Arguments
$ARGUMENTS

## Context
- Available Claude Code tools: !`echo "Detecting available tools and MCP servers..."`
- Existing commands: @.claude/commands/
- Current directory: !`pwd`
- Available command examples: !`find .claude/commands -name "*.md" 2>/dev/null | head -5`
- MCP configuration: !`if [ -f .mcp.json ]; then cat .mcp.json; else echo "No local MCP config found"; fi`
- Settings: !`if [ -f .claude/settings.json ]; then cat .claude/settings.json; else echo "No local settings found"; fi`

## Your task

Help users create custom Claude Code commands efficiently and safely using ultrathink mode for enhanced reasoning.

**Think deeply about this command creation task. Use extended thinking to analyze the user's needs, available tools, and optimal command design patterns.**

### Argument Processing

**Parse arguments first:**
```
--help: Show usage information and exit
--dry-run: Preview what would be created without creating it
--simple: Skip detailed questions, create basic command quickly
--output PATH: Specify output location (default: .claude/commands/)
--type TYPE: Command category (analyze|docs|review|optimize|other)
```

**Handle --help:**
```
Command Creator - Create custom Claude Code commands

USAGE:
/project:create-command [OPTIONS]

OPTIONS:
--help Show this help and exit
--dry-run Preview what would be created
--simple Quick command creation (skip detailed questions)
--output PATH Output location (default: .claude/commands/)
--type TYPE Command type: analyze, docs, review, optimize, other

AVAILABLE CLAUDE CODE TOOLS:
Core Tools (no permission needed):
- Agent: Runs sub-agents for complex tasks
- Glob: Finds files by pattern
- Grep: Searches file contents
- LS: Lists directories
- Read: Reads file contents
- TodoRead: Reads task lists
- NotebookRead: Reads Jupyter notebooks

Tools requiring permission:
- Bash: Execute shell commands
- Edit: Make targeted file edits
- MultiEdit: Multiple atomic edits
- Write: Create/overwrite files
- WebFetch: Fetch web content
- WebSearch: Search the web
- NotebookEdit: Edit Jupyter notebooks
- TodoWrite: Manage task lists

EXAMPLES:
/project:create-command
→ Interactive guided creation with tool detection

/project:create-command --simple
→ Quick command creation with minimal questions

/project:create-command --type analyze --output .claude/commands/analyze/
→ Create analysis command in specific location

/project:create-command --dry-run
→ Preview the creation process and available tools
```

**Handle --dry-run:**
```
DRY RUN MODE - Preview of command creation process:

1. TOOL DETECTION PHASE:
- Scan available Claude Code core tools
- Check for configured MCP servers in .mcp.json
- Identify available permissions in .claude/settings.json
- Report which tools would be suggested for different command types

2. COMMAND CREATION PROCESS:
I would ask you 3 key questions:
- What task should this command help with?
- What specific output/analysis do you need?
- Any existing tools/processes to enhance?

3. ULTRATHINK ANALYSIS:
Using extended thinking, I would:
- Analyze optimal command structure for your task
- Select appropriate tools from available options
- Design arguments based on command type and complexity
- Consider error handling and edge cases

4. GENERATE ADAPTIVE COMMAND:
Create a command file with:
- Dynamic tool list based on what's actually available
- Proper frontmatter with detected tools
- Context section referencing relevant files
- Clear task instructions with error handling

5. SAVE LOCATION: [detected optimal path based on command type]

No files would be created in dry-run mode.
```

### Command Creation Process

**First, analyze the environment using ultrathink mode:**

Think deeply about the current setup:
- What Claude Code tools are available by default
- What MCP servers are configured
- What permissions are already granted
- What type of command would be most useful given the context

**If --simple flag provided:**
Ask only essential questions:
1. "What should this command do?"
2. "What should it be called?"
Create basic command with detected tools and save it.

**Default Interactive Process with Tool-Aware Creation:**

#### Step 1: Environment Analysis (Ultrathink)
Before asking user questions, think deeply about:
- Available tools from the context gathered above
- Optimal command patterns for this environment
- What types of commands would be most useful
- How to suggest tools intelligently based on task type

#### Step 2: Understand the Goal
Ask: **"What task do you want this command to help with?"**

Provide examples tailored to available tools:
- If Bash + Git available: "Analyze git history and commit patterns"
- If WebSearch available: "Research best practices and generate reports"
- If Edit/Write available: "Refactor code and update documentation"
- If Agent available: "Orchestrate complex multi-step workflows"
- If MCP tools detected: "Leverage [specific MCP tools] for enhanced analysis"

#### Step 3: Define the Output
Ask: **"What specific output or result should this command produce?"**

Examples based on detected capabilities:
- "A markdown report with actionable recommendations"
- "Modified files with improvements applied"
- "A structured analysis using available MCP data"
- "Generated documentation and code examples"

#### Step 4: Tool-Aware Context Gathering
Ask: **"Are there specific files, directories, or data sources this command should work with?"**

Suggest context based on available tools:
- If Read/Grep available: Source code analysis (`@src/`, `@lib/`)
- If WebFetch available: External documentation and APIs
- If Bash available: Dynamic system information (`!git status`, `!ls -la`)
- If MCP tools available: External system integration

#### Step 5: Intelligent Tool Selection (Ultrathink)
Think deeply about optimal tool combinations:
- Match user's task to available Claude Code tools
- Consider permission requirements and suggest appropriate tools
- Design tool list that's minimal but sufficient
- Account for MCP tools if they enhance the command's capabilities

#### Step 6: Adaptive Argument Design
Based on task complexity and available tools, suggest:
- Always include `--dry-run` for safety
- Task-specific arguments that leverage available tools
- Permission-aware options (e.g., only suggest --modify if Edit/Write available)
- MCP-enhanced options if relevant tools are configured

#### Step 7: Generate Adaptive Command
Create command file with:
- Dynamic tool list based on actual availability
- Context that uses available tools optimally
- Instructions that adapt to the tool ecosystem
- Error handling for missing optional tools

### Dynamic Command Template Structure

When creating the command file, use this adaptive template:

```markdown
---
allowed-tools: [Dynamically selected based on availability and task needs]
description: [Brief description of what the command does]
version: 1.0.0
created: 2025-07-06
last-updated: 2025-07-06
---

## Arguments
$ARGUMENTS

## Context
[Include tool-appropriate context:]
[File references using @filename if Read tool available]
[Dynamic commands using !command if Bash tool available]
[MCP data sources if relevant MCP tools configured]

## Your task
[Clear, step-by-step instructions adapted to available tools]

Handle arguments:
- If $ARGUMENTS contains "--dry-run", explain what would be done without doing it
- [Include other argument handling based on suggested arguments]

Tool availability handling:
[Only include tool-specific instructions if tools are available]
[Graceful degradation if optional tools are missing]
[Clear error messages if required tools are unavailable]

Then proceed with the main task using available tools optimally.
```

### Tool Selection Intelligence

**Core Claude Code Tools (always available):**
- `Read`, `Grep`, `LS`, `Glob` for analysis tasks
- `Agent` for complex multi-step workflows
- `TodoRead` for task management integration

**Permission-Based Tools (suggest based on task):**
- `Write`, `Edit`, `MultiEdit` for file modification tasks
- `Bash` for system integration and dynamic analysis
- `WebSearch`, `WebFetch` for research and external data
- `NotebookEdit` for Jupyter notebook tasks

**MCP Tools (suggest if configured):**
- Include specific MCP tools found in environment
- Design fallback behavior if MCP tools unavailable
- Leverage MCP capabilities for enhanced functionality

### Error Handling & Validation

**Tool Availability Checks:**
- Verify required tools are available before suggesting them
- Provide clear errors if essential tools are missing
- Graceful degradation for optional tool dependencies

**Environment Validation:**
- Check MCP configuration is valid if used
- Verify permissions for tools that require them
- Ensure output directory is writable

**Command Quality Assurance:**
- Ensure commands have clear, specific purposes
- Validate that suggested tools match the task requirements
- Check that argument design is consistent with tool capabilities

### Success Criteria

A well-created command should:
- **Adapt to environment**: Use only available tools intelligently
- **Handle missing tools gracefully**: Provide fallbacks or clear error messages
- **Follow permissions model**: Respect Claude Code's permission system
- **Leverage MCP when appropriate**: Make use of configured external tools
- **Include proper error handling**: Handle edge cases and tool failures
- **Be team-friendly**: Work consistently across different environments

**Final Step**: Create the command file, save it to the appropriate location, and test that it handles tool availability correctly.
Loading