Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,7 @@
- Apply the matching file-scoped rule in `.github/instructions/` when editing Application, Domain, Infrastructure, Presentation.Web, or Presentation.Api.
- Use `docs/governance/` for detailed architecture, coding, tool, governance, runtime-observability, and administrative UX guidance.
- Use `docs/product/` for product intent, ontology, user flows, feature definitions, and completion criteria.
- Follow existing patterns in the local folder before adding a new abstraction or dependency.
- Follow existing patterns in the local folder before adding a new abstraction or dependency.

## Command and Query Guidelines
- Commands and queries in Core.Application must remain presentation/infrastructure-agnostic; formatting and response shaping for agent/tool interactions belong in Infrastructure.AgentFramework tools/adapters, not in application handlers.
3 changes: 3 additions & 0 deletions docs/governance/coding-standards.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ Define implementation expectations for contributors and AI agents.
## Naming Standards
- Projects and folders: PascalCase.
- Namespaces: align with folder/project structure.
- Use plural folders for feature and collection boundaries, such as `Actors`, `Chats`, `Tools`, `Configurations`, and `Endpoints`.
- Name each source file after its primary type. Use singular or plural type names according to the type's responsibility, not mechanically: `ActorEntity.cs`, `ChatSession.cs`, `ChatSessionsQuery.cs`, and `ActorsTool.cs` are all valid.
- Do not create a file whose name duplicates a folder merely to satisfy a naming rule; use the type's precise responsibility in the filename.
- Classes, records, enums: PascalCase.
- Interfaces: `I` prefix + PascalCase.
- Private fields: `_camelCase`.
Expand Down
3 changes: 2 additions & 1 deletion docs/governance/project-guide-blazor.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Features
├── HomePage.razor
├── Chat
├── Chats
│ ├── ChatPage.razor
│ ├── Components
│ ├── Models
Expand All @@ -101,6 +101,7 @@ Features

## Rules

- Use plural feature folders for collection boundaries, such as `Chats`, `Assets`, and `Attestations`; name files after their primary singular or plural type responsibility.
- Features own their components.
- Features own their models.
- Features own their services.
Expand Down
4 changes: 3 additions & 1 deletion docs/governance/style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ Define repository-wide documentation and collaboration style.
- Update affected docs when behavior or requirements change.

## GitHub Issue Style
- Include business problem, value, acceptance criteria, and out-of-scope items.
- Bug reports require the problem, steps to reproduce, expected behavior, error page URL, and screenshot.
- Feature requests require the problem and requested outcome; contributors may add supporting context when useful.
- Maintainers expand accepted work into feature documentation only when implementation planning needs additional detail.

## Pull Request Style
- Summarize intent, changed layers, testing evidence, and follow-up risks.
4 changes: 2 additions & 2 deletions src/Core.Application/Abstractions/IAgentFrameworkContext.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Goodtocode.AgentFramework.Core.Domain.Actor;
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Actors;
using Goodtocode.AgentFramework.Core.Domain.Chats;
using Microsoft.EntityFrameworkCore.Metadata;

namespace Goodtocode.AgentFramework.Core.Application.Abstractions;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Domain.Actor;
using Goodtocode.AgentFramework.Core.Domain.Actors;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class ActorDto
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public static class ActorGuard
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Domain.Actor;
using Goodtocode.AgentFramework.Core.Domain.Actors;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class CreateOurActorCommand : UserScopedRequest, IRequest<ActorDto>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class CreateOurActorCommandValidator : SecuredValidator<CreateOurActorCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class DeleteActorByOwnerIdCommand : UserScopedRequest, IRequest<CommandResult>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class DeleteOurActorByOwnerIdCommandValidator : SecuredValidator<DeleteActorByOwnerIdCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class DeleteOurActorCommand : UserScopedRequest, IRequest<CommandResult>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class DeleteOurActorCommandValidator : SecuredValidator<DeleteOurActorCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetMyActorQuery : UserScopedRequest, IRequest<ActorDto?>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetMyActorQueryValidator : SecuredValidator<GetMyActorQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Application.Chat;
using Goodtocode.AgentFramework.Core.Application.Chats;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionQuery : UserScopedRequest, IRequest<ChatSessionDto?>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionQueryValidator : SecuredValidator<GetOurActorChatSessionQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Application.Chat;
using Goodtocode.AgentFramework.Core.Application.Chats;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionsPaginatedQuery : UserScopedRequest, IRequest<IPaginatedList<ChatSessionDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionsPaginatedQueryValidator : SecuredValidator<GetOurActorChatSessionsPaginatedQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Application.Chat;
using Goodtocode.AgentFramework.Core.Application.Chats;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionsQuery : UserScopedRequest, IRequest<ICollection<ChatSessionDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorChatSessionsQueryValidator : SecuredValidator<GetOurActorChatSessionsQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorQuery : UserScopedRequest, IRequest<ActorDto?>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorQueryValidator : SecuredValidator<GetOurActorQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorsByNameQuery : UserScopedRequest, IRequest<ICollection<ActorDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class GetOurActorsByNameQueryValidator : SecuredValidator<GetOurActorsByNameQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Domain.Actor;
using Goodtocode.AgentFramework.Core.Domain.Actors;

namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class SaveMyActorCommand : UserScopedRequest, IRequest<ActorDto>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Actor;
namespace Goodtocode.AgentFramework.Core.Application.Actors;

public class SaveMyActorCommandValidator : SecuredValidator<SaveMyActorCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Chats;
using Microsoft.Extensions.AI;

namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public static class ChatGuard
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Chats;

namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class ChatMessageDto
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Chats;

namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class ChatSessionDto
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Chats;
using Goodtocode.AgentFramework.Core.Application.Governance;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class CreateMyChatMessageCommand : UserScopedRequest, IRequest<CommandResult<ChatMessageDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class CreateMyChatMessageCommandValidator : SecuredValidator<CreateMyChatMessageCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Goodtocode.AgentFramework.Core.Domain.Actor;
using Goodtocode.AgentFramework.Core.Domain.Chat;
using Goodtocode.AgentFramework.Core.Domain.Actors;
using Goodtocode.AgentFramework.Core.Domain.Chats;
using Goodtocode.AgentFramework.Core.Application.Governance;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class CreateMyChatSessionCommand : UserScopedRequest, IRequest<ChatSessionDto>
{
Expand Down Expand Up @@ -44,7 +44,7 @@
}

var governed = _governanceGate.Enforce(
request.UserContext,

Check warning on line 47 in src/Core.Application/Chats/CreateMyChatSessionCommand.cs

View workflow job for this annotation

GitHub Actions / Web, API and SQL CI (10.x)

Dereference of a possibly null reference.
Guid.Empty,
request.Message!);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class CreateMyChatSessionCommandValidator : SecuredValidator<CreateMyChatSessionCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class DeleteMyChatSessionCommand : UserScopedRequest, IRequest<CommandResult>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class DeleteMyChatSessionCommandValidator : SecuredValidator<DeleteMyChatSessionCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatMessageQuery : UserScopedRequest, IRequest<ChatMessageDto?>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatMessageQueryValidator : SecuredValidator<GetMyChatMessageQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatMessagesPaginatedQuery : UserScopedRequest, IRequest<IPaginatedList<ChatMessageDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatMessagesPaginatedQueryValidator : SecuredValidator<GetMyChatMessagesPaginatedQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionMessagesQuery : UserScopedRequest, IRequest<ICollection<ChatMessageDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionMessagesQueryValidator : SecuredValidator<GetMyChatSessionMessagesQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionQuery : UserScopedRequest, IRequest<ChatSessionDto?>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionQueryValidator : SecuredValidator<GetMyChatSessionQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionsPaginatedQuery : UserScopedRequest, IRequest<IPaginatedList<ChatSessionDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionsPaginatedQueryValidator : SecuredValidator<GetMyChatSessionsPaginatedQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionsQuery : UserScopedRequest, IRequest<ICollection<ChatSessionDto>>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class GetMyChatSessionsQueryValidator : SecuredValidator<GetMyChatSessionsQuery>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class PatchMyChatSessionCommand : UserScopedRequest, IRequest<CommandResult>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Application.Chat;
namespace Goodtocode.AgentFramework.Core.Application.Chats;

public class PatchMyChatSessionCommandValidator : SecuredValidator<PatchMyChatSessionCommand>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Domain.Actor;
namespace Goodtocode.AgentFramework.Core.Domain.Actors;

public class ActorEntity : SecuredEntity<ActorEntity>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Domain.Chat;
namespace Goodtocode.AgentFramework.Core.Domain.Chats;

public class ChatMessageEntity : SecuredEntity<ChatMessageEntity>, IDomainEntity<ChatMessageEntity>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Domain.Chat;
namespace Goodtocode.AgentFramework.Core.Domain.Chats;

public enum ChatMessageRole
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Goodtocode.AgentFramework.Core.Domain.Chat;
namespace Goodtocode.AgentFramework.Core.Domain.Chats;

public class ChatSessionEntity : SecuredEntity<ChatSessionEntity>
{
Expand Down
2 changes: 1 addition & 1 deletion src/Infrastructure.AgentFramework/Tools/ActorsTool.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.ComponentModel;
using Goodtocode.AgentFramework.Core.Application.Actor;
using Goodtocode.AgentFramework.Core.Application.Actors;

namespace Goodtocode.AgentFramework.Infrastructure.AgentFramework.Tools;

Expand Down
Loading
Loading