feat: add enterprise CLI follow-through and docs parity#6
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an enterprise/embedded-host runtime surface with tenant-aware storage, plus parity updates across CLI/ACP/docs and additional telemetry, indexing, memory, and provider catalog capabilities.
Changes:
- Introduces an embeddable host SDK (
SharpClaw.Code) with host/tenant context plumbed through runtime/CLI flows. - Adds tenant-aware durable storage (filesystem + SQLite session/event stores, usage metering store) and new admin/telemetry sinks (in-process stream + outbound webhooks).
- Adds workspace knowledge indexing + hybrid search + durable memory recall, surfacing new CLI commands/tools and updating docs/tests/examples/CI accordingly.
Reviewed changes
Copilot reviewed 181 out of 181 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/SharpClaw.Code.UnitTests/Telemetry/WebhookRuntimeEventSinkTests.cs | Adds unit coverage for webhook delivery retries/backoff behavior. |
| tests/SharpClaw.Code.UnitTests/Support/TestRuntimeStorageResolver.cs | Test helper for deterministic runtime storage path resolution. |
| tests/SharpClaw.Code.UnitTests/Sessions/SessionStorageTests.cs | Updates session storage tests to use runtime storage path resolver. |
| tests/SharpClaw.Code.UnitTests/Runtime/WorkspaceInsightsAndTodoServiceTests.cs | Wires todo/insights tests to new storage path resolver + updated TodoService ctor. |
| tests/SharpClaw.Code.UnitTests/Runtime/ShareAndCompactionServicesTests.cs | Updates wiring for storage resolver + compaction memory persistence. |
| tests/SharpClaw.Code.UnitTests/Runtime/LocalRuntimeCatalogCheckTests.cs | Adds coverage for local runtime health check output. |
| tests/SharpClaw.Code.UnitTests/Runtime/ConfiguredApprovalIdentityServiceTests.cs | Adds coverage for trusted-header approval identity resolution. |
| tests/SharpClaw.Code.UnitTests/Providers/ProviderConfigurationBindingTests.cs | Extends provider options binding for local runtimes/embedding/auth mode. |
| tests/SharpClaw.Code.UnitTests/Providers/ProviderCatalogServiceTests.cs | Adds coverage for provider catalog including local runtime model discovery. |
| tests/SharpClaw.Code.UnitTests/Permissions/PermissionPolicyEngineTests.cs | Updates approval decision test data for new fields. |
| tests/SharpClaw.Code.UnitTests/MemorySkillsGit/WorkspaceKnowledgeServicesTests.cs | Adds end-to-end test for indexing/search/memory recall via knowledge store. |
| tests/SharpClaw.Code.UnitTests/McpPlugins/McpAndPluginLifecycleTests.cs | Updates plugin manager creation to accept storage resolver. |
| tests/SharpClaw.Code.UnitTests/Commands/ModeAndCliOptionsTests.cs | Adds coverage for parsing embedded host context from global CLI options. |
| tests/SharpClaw.Code.IntegrationTests/Smoke/CliCommandSurfaceTests.cs | Updates expected CLI command surface (index/memory/tool-packages + new globals). |
| tests/SharpClaw.Code.IntegrationTests/SharpClaw.Code.IntegrationTests.csproj | Adds reference to new embeddable SDK project. |
| tests/SharpClaw.Code.IntegrationTests/Runtime/PromptContextAssemblyTests.cs | Updates event store construction to use storage resolver in integration coverage. |
| tests/SharpClaw.Code.IntegrationTests/Runtime/EmbeddedRuntimeHostTests.cs | Adds tenant isolation test for embedded host + SQLite session store. |
| src/SharpClaw.Code/SharpClawRuntimeHostBuilder.cs | New embeddable host builder (runtime + ACP without CLI). |
| src/SharpClaw.Code/SharpClaw.Code.csproj | New SDK project packaging runtime/ACP/protocol/infrastructure dependencies. |
| src/SharpClaw.Code.Tools/ToolsServiceCollectionExtensions.cs | Adds memory + search tools + tool package service; passes host context accessor into executor. |
| src/SharpClaw.Code.Tools/SharpClaw.Code.Tools.csproj | Adds reference to memory project for new tools/services. |
| src/SharpClaw.Code.Tools/Models/ToolContracts.cs | Adds argument contracts for workspace_search and symbol_search tools. |
| src/SharpClaw.Code.Tools/Execution/ToolExecutor.cs | Adds tenant id propagation into permission evaluation context. |
| src/SharpClaw.Code.Tools/BuiltIn/WorkspaceSearchTool.cs | New tool for hybrid workspace search via knowledge index. |
| src/SharpClaw.Code.Tools/BuiltIn/SymbolSearchTool.cs | New tool for symbol-only search via knowledge store. |
| src/SharpClaw.Code.Tools/Abstractions/IToolPackageService.cs | New abstraction for packaged tool manifest install/list operations. |
| src/SharpClaw.Code.Telemetry/TelemetryServiceCollectionExtensions.cs | Adds webhook HTTP client, delay strategy, in-process stream, webhook sink, and sink fan-out publisher wiring. |
| src/SharpClaw.Code.Telemetry/TelemetryOptions.cs | Adds webhook destination and retry/backoff options. |
| src/SharpClaw.Code.Telemetry/SharpClaw.Code.Telemetry.csproj | Adds Microsoft.Extensions.Http and tightens warnings-as-errors. |
| src/SharpClaw.Code.Telemetry/Services/WebhookRuntimeEventSink.cs | New webhook sink with retry/backoff for runtime event envelopes. |
| src/SharpClaw.Code.Telemetry/Services/WebhookDelayStrategy.cs | New delay abstraction implementation for webhook retries. |
| src/SharpClaw.Code.Telemetry/Services/RuntimeEventPublisher.cs | Adds host context + sink fan-out with envelope publishing. |
| src/SharpClaw.Code.Telemetry/Services/InProcessRuntimeEventStream.cs | New in-process runtime event stream + recent buffer snapshot. |
| src/SharpClaw.Code.Telemetry/RuntimeEventPublishOptions.cs | Adds HostContext routing option for downstream sinks. |
| src/SharpClaw.Code.Telemetry/Metrics/SharpClawMeterSource.cs | Adds documentation for stable meter name. |
| src/SharpClaw.Code.Telemetry/Diagnostics/TurnActivityScope.cs | Adds XML docs around activity span lifecycle methods. |
| src/SharpClaw.Code.Telemetry/Diagnostics/ProviderActivityScope.cs | Adds XML docs around provider activity span lifecycle methods. |
| src/SharpClaw.Code.Telemetry/Abstractions/IWebhookDelayStrategy.cs | New abstraction to make webhook delay testable. |
| src/SharpClaw.Code.Telemetry/Abstractions/IUsageMeteringStore.cs | New persistence abstraction for normalized usage metering. |
| src/SharpClaw.Code.Telemetry/Abstractions/IUsageMeteringService.cs | New query surface for usage metering reporting. |
| src/SharpClaw.Code.Telemetry/Abstractions/IRuntimeEventStream.cs | New abstraction for streaming runtime event envelopes. |
| src/SharpClaw.Code.Telemetry/Abstractions/IRuntimeEventSink.cs | New sink abstraction for external/runtime event consumers. |
| src/SharpClaw.Code.Sessions/Storage/SqliteSessionStoreDatabase.cs | New SQLite schema + connection helper for session/event tables. |
| src/SharpClaw.Code.Sessions/Storage/SqliteSessionStore.cs | New SQLite-backed session snapshot store. |
| src/SharpClaw.Code.Sessions/Storage/SqliteEventStore.cs | New SQLite-backed runtime event store. |
| src/SharpClaw.Code.Sessions/Storage/NdjsonEventStore.cs | Migrates NDJSON store to use runtime storage resolver paths. |
| src/SharpClaw.Code.Sessions/Storage/HostAwareSessionStore.cs | New store selector based on current host context (filesystem vs sqlite). |
| src/SharpClaw.Code.Sessions/Storage/HostAwareEventStore.cs | New event store selector based on current host context (ndjson vs sqlite). |
| src/SharpClaw.Code.Sessions/Storage/FileWorkspaceSessionAttachmentStore.cs | Migrates workspace attachment store to use storage resolver paths. |
| src/SharpClaw.Code.Sessions/Storage/FileSessionStore.cs | Migrates filesystem session snapshots to use storage resolver paths. |
| src/SharpClaw.Code.Sessions/Storage/FileMutationSetStore.cs | Migrates mutation set storage to use storage resolver paths. |
| src/SharpClaw.Code.Sessions/Storage/FileCheckpointStore.cs | Migrates checkpoint storage to use storage resolver paths. |
| src/SharpClaw.Code.Sessions/SharpClaw.Code.Sessions.csproj | Adds Microsoft.Data.Sqlite dependency for new stores. |
| src/SharpClaw.Code.Runtime/Workflow/TodoService.cs | Switches workspace/session todo paths/locks to storage resolver. |
| src/SharpClaw.Code.Runtime/Workflow/ShareSessionService.cs | Switches share snapshot paths to storage resolver. |
| src/SharpClaw.Code.Runtime/Workflow/ConversationCompactionService.cs | Persists compaction summary into durable memory store. |
| src/SharpClaw.Code.Runtime/Turns/DefaultTurnRunner.cs | Removes metrics recording here; ensures non-null UsageSnapshot in results. |
| src/SharpClaw.Code.Runtime/SharpClaw.Code.Runtime.csproj | Adds sqlite + identity model dependencies for enterprise auth/storage. |
| src/SharpClaw.Code.Runtime/Prompts/PromptReferenceResolver.cs | Tags ACP-origin requests in permission evaluation + includes tenant id. |
| src/SharpClaw.Code.Runtime/Export/PortableSessionBundleService.cs | Uses storage resolver for session roots and export directory. |
| src/SharpClaw.Code.Runtime/Diagnostics/OperationalDiagnosticsCoordinator.cs | Adds approval auth to status quick checks. |
| src/SharpClaw.Code.Runtime/Diagnostics/Checks/LocalRuntimeCatalogCheck.cs | New operational check for local runtime health/model discovery. |
| src/SharpClaw.Code.Runtime/Diagnostics/Checks/ApprovalAuthCheck.cs | New operational check for approval-auth configuration/health. |
| src/SharpClaw.Code.Runtime/Context/PromptContextAssembler.cs | Adds memory recall + workspace index status metadata/sections to prompt context. |
| src/SharpClaw.Code.Runtime/Composition/RuntimeServiceCollectionExtensions.cs | Adds usage metering, host-aware stores, approval identity service, and new operational checks. |
| src/SharpClaw.Code.Runtime/Abstractions/IRuntimeCommandService.cs | Adds HostContext to runtime command context shape. |
| src/SharpClaw.Code.Providers/Services/ProviderRequestPreflight.cs | Adds local-runtime-qualified model parsing + profile metadata. |
| src/SharpClaw.Code.Providers/ProvidersServiceCollectionExtensions.cs | Registers provider catalog service and updates docs params. |
| src/SharpClaw.Code.Providers/OpenAiCompatibleProvider.cs | Adds per-profile endpoint/model selection + updated auth status calculation. |
| src/SharpClaw.Code.Providers/Internal/ProviderAuthStatusFactory.cs | Replaces api-key-only auth status with auth-mode-aware computation. |
| src/SharpClaw.Code.Providers/Configuration/ProviderOptionsValidators.cs | Validates local runtime profiles (name/baseUrl/default model). |
| src/SharpClaw.Code.Providers/Configuration/OpenAiCompatibleProviderOptions.cs | Adds auth mode, embedding defaults/capabilities, and local runtime profiles. |
| src/SharpClaw.Code.Providers/Configuration/LocalRuntimeProfileOptions.cs | New configuration type for named local runtime profiles. |
| src/SharpClaw.Code.Providers/AnthropicProvider.cs | Uses new auth status factory method signature. |
| src/SharpClaw.Code.Providers/Abstractions/IProviderCatalogService.cs | New abstraction for centralized provider catalog reporting. |
| src/SharpClaw.Code.Protocol/Serialization/ProtocolJsonContext.cs | Expands STJ source-gen registrations for new enterprise/runtime/memory/tooling models. |
| src/SharpClaw.Code.Protocol/Models/Phase2Models.cs | Adds host context, runtime event envelope, and tool package models. |
| src/SharpClaw.Code.Protocol/Models/OpenCodeParityModels.cs | Extends server/provider catalog request/response models for enterprise surfaces. |
| src/SharpClaw.Code.Protocol/Models/EnterpriseRuntimeModels.cs | Adds approval-auth, metering, and admin request models. |
| src/SharpClaw.Code.Protocol/Models/ApprovalDecision.cs | Adds remember-for-session and principal identity fields. |
| src/SharpClaw.Code.Protocol/Commands/RunPromptRequest.cs | Adds HostContext to prompt command request shape. |
| src/SharpClaw.Code.Protocol/Abstractions/IRuntimeHostContextAccessor.cs | New ambient accessor for runtime host context scoping. |
| src/SharpClaw.Code.Plugins/Services/PluginManager.cs | Switches plugin root resolution to storage resolver. |
| src/SharpClaw.Code.Permissions/Services/PermissionPolicyEngine.cs | Adds tenant-aware approval keying and opt-in remember-for-session storage. |
| src/SharpClaw.Code.Permissions/Services/NonInteractiveApprovalService.cs | Populates new approval decision fields. |
| src/SharpClaw.Code.Permissions/Services/ConsoleApprovalService.cs | Only remembers when allowed + approved; populates new decision fields. |
| src/SharpClaw.Code.Permissions/Services/AuthenticatedApprovalTransport.cs | New transport for principal-based approvals with tenant matching. |
| src/SharpClaw.Code.Permissions/Services/ApprovalService.cs | Adds transport selection + enforcement when authenticated approvals are required. |
| src/SharpClaw.Code.Permissions/Services/ApprovalPrincipalAccessor.cs | New async-local principal/status scope accessor. |
| src/SharpClaw.Code.Permissions/PermissionsServiceCollectionExtensions.cs | Registers principal accessor and authenticated transport. |
| src/SharpClaw.Code.Permissions/Models/PermissionEvaluationContext.cs | Adds TenantId field for evaluation and approval memory scoping. |
| src/SharpClaw.Code.Permissions/Abstractions/IApprovalTransport.cs | New abstraction for pluggable approval transports. |
| src/SharpClaw.Code.Permissions/Abstractions/IApprovalPrincipalAccessor.cs | New abstraction to access scoped approval identity/status. |
| src/SharpClaw.Code.Permissions/Abstractions/IApprovalIdentityService.cs | New abstraction for resolving approval identity/configuration. |
| src/SharpClaw.Code.Memory/SharpClaw.Code.Memory.csproj | Adds Roslyn + sqlite dependencies for indexing/knowledge store. |
| src/SharpClaw.Code.Memory/Services/WorkspaceSearchService.cs | New hybrid search service combining lexical/symbol/semantic ranking. |
| src/SharpClaw.Code.Memory/Services/PersistentMemoryStore.cs | New adapter to store structured memory via knowledge store. |
| src/SharpClaw.Code.Memory/Services/MemoryRecallService.cs | New recall service to score/select most relevant memory entries for prompt context. |
| src/SharpClaw.Code.Memory/Services/HashTextEmbeddingService.cs | New deterministic embedding approach for semantic ranking. |
| src/SharpClaw.Code.Memory/Models/WorkspaceKnowledgeRecords.cs | New records for chunks/symbols/edges and persisted index document. |
| src/SharpClaw.Code.Memory/MemoryServiceCollectionExtensions.cs | Registers knowledge store, index/search, persistent memory, and recall services. |
| src/SharpClaw.Code.Memory/Abstractions/IWorkspaceSearchService.cs | New abstraction for workspace hybrid search. |
| src/SharpClaw.Code.Memory/Abstractions/IWorkspaceKnowledgeStore.cs | New abstraction for knowledge store persistence/search/memory operations. |
| src/SharpClaw.Code.Memory/Abstractions/IWorkspaceIndexService.cs | New abstraction for index refresh/status. |
| src/SharpClaw.Code.Memory/Abstractions/IPersistentMemoryStore.cs | New abstraction for structured durable memory storage. |
| src/SharpClaw.Code.Memory/Abstractions/IMemoryRecallService.cs | New abstraction for memory recall. |
| src/SharpClaw.Code.Infrastructure/Services/RuntimeHostContextAccessor.cs | New async-local runtime host context accessor implementation. |
| src/SharpClaw.Code.Infrastructure/InfrastructureServiceCollectionExtensions.cs | Registers host context accessor and runtime storage resolver. |
| src/SharpClaw.Code.Infrastructure/Abstractions/IRuntimeStoragePathResolver.cs | New abstraction for tenant-aware storage path resolution. |
| src/SharpClaw.Code.Commands/SharpClaw.Code.Commands.csproj | Adds project refs needed for new CLI surfaces (memory/tools/telemetry). |
| src/SharpClaw.Code.Commands/Repl/ReplHost.cs | Centralizes runtime context creation via CommandExecutionContext.ToRuntimeCommandContext(). |
| src/SharpClaw.Code.Commands/Options/GlobalCliOptions.cs | Adds global options for host/tenant/storage root and session-store selection. |
| src/SharpClaw.Code.Commands/Models/CommandExecutionContext.cs | Adds HostContext + helper to convert to RuntimeCommandContext. |
| src/SharpClaw.Code.Commands/Handlers/UnshareCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/UndoCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/ToolPackagesCommandHandler.cs | New CLI command to list/install packaged tool bundles. |
| src/SharpClaw.Code.Commands/Handlers/StatusCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/ShareCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/ServeCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/RedoCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/PromptCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/ModelsCommandHandler.cs | Refactors to use provider catalog service rather than assembling catalog locally. |
| src/SharpClaw.Code.Commands/Handlers/IndexCommandHandler.cs | New CLI command for indexing/searching workspace knowledge store. |
| src/SharpClaw.Code.Commands/Handlers/ExportSlashCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/EditorSlashCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/DoctorCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/Handlers/CompactCommandHandler.cs | Uses new runtime context conversion helper. |
| src/SharpClaw.Code.Commands/CliCommandFactory.cs | Uses new runtime context conversion helper for discovered commands. |
| src/SharpClaw.Code.Cli/Composition/CliServiceCollectionExtensions.cs | Adds ACP registration + new index/memory/tool-packages commands. |
| src/SharpClaw.Code.Agents/Services/AgentFrameworkBridge.cs | Tags ACP-origin requests for permission evaluation. |
| src/SharpClaw.Code.Agents/Internal/ProviderBackedAgentKernel.cs | Removes provider duration metric recording here. |
| src/SharpClaw.Code.Acp/SharpClaw.Code.Acp.csproj | Adds needed project references for ACP host surfaces. |
| src/SharpClaw.Code.Acp/AcpServiceCollectionExtensions.cs | New ACP DI extension registering approval transport + stdio host. |
| src/SharpClaw.Code.Acp/AcpApprovalTransport.cs | New transport for routing approvals over ACP callbacks. |
| src/SharpClaw.Code.Acp/AcpApprovalCoordinator.cs | New coordinator for ACP approval request/response correlation. |
| extensions/vscode/tsconfig.json | Adds TS build config for VS Code extension. |
| extensions/vscode/package.json | Adds VS Code extension manifest/commands/config. |
| extensions/vscode/README.md | Documents VS Code extension capabilities and configuration. |
| examples/WorkerServiceHost/appsettings.json | Adds worker-service example configuration. |
| examples/WorkerServiceHost/WorkerServiceHost.csproj | New worker-service example project targeting embeddable SDK. |
| examples/WorkerServiceHost/PromptWorker.cs | Implements example worker prompt execution with embedded host context. |
| examples/WorkerServiceHost/Program.cs | Wires SharpClawRuntimeHost into worker service DI/lifecycle. |
| examples/WorkerServiceHost/EmbeddedRuntimeLifecycleService.cs | Starts/stops embedded runtime host in background. |
| examples/WebApiAgent/WebApiAgent.csproj | Updates example to reference embeddable SDK project. |
| examples/WebApiAgent/Program.cs | Updates example API to use SharpClawRuntimeHost + tenant host context. |
| examples/MinimalConsoleAgent/Program.cs | Updates console example to use SharpClawRuntimeHost + host context. |
| examples/MinimalConsoleAgent/MinimalConsoleAgent.csproj | Updates example to reference embeddable SDK project. |
| docs/testing.md | Updates validation instructions to include building all example hosts. |
| docs/superpowers/plans/2026-04-10-phase1-gaps.md | Adjusts doc header formatting. |
| docs/runtime.md | Updates runtime docs for memory/index/admin/telemetry and new checks. |
| docs/providers.md | Updates provider docs for catalog service + local runtime profiles. |
| docs/permissions.md | Documents authenticated approval transports and tenant-scoped remembered approvals. |
| docs/architecture.md | Updates architecture docs to include new embeddable SDK project and example hosts. |
| docs/acp.md | Updates ACP docs for new methods/capabilities incl. approvals/search/memory/models. |
| Directory.Packages.props | Adds identity model, Roslyn, and sqlite package versions. |
| .github/workflows/ci.yml | Builds example host projects in CI in addition to solution build/test. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation