docs: catch up README + design docs through the PR #36-#44 chain #45

Merged
jasoncouture merged 1 commit from docs/post-pr44-sweep into main 2026-05-07 21:10:36 -04:00
jasoncouture commented 2026-05-07 21:10:21 -04:00 (Migrated from github.com)

Summary

  • README scope + status table cover OpenAI-compatible chat provider, the slash command system (/clear, /archive, /compact, /restart, /interrupt), and the cron stub.
  • docs/design/architecture.md gains rows/sections for Provider.OpenAI, Abstractions.Commands, IHostRestarter, the <DataRoot>/appsettings.json overlay, and new cross-cutting Slash commands + Cron subsystem sections.
  • docs/design/paths.md adds OpenAIProviderOptions to the configuration knobs and documents the <DataRoot>/appsettings.json overlay precedence chain.
  • docs/quickstart.md mentions OpenAI-compatible backends in the prerequisites and the OPENAI/<model> prefix in the agent-config snippet.

Test plan

  • Documentation only — no code changes, no tests required.

🤖 Generated with Claude Code

## Summary - README scope + status table cover OpenAI-compatible chat provider, the slash command system (`/clear`, `/archive`, `/compact`, `/restart`, `/interrupt`), and the cron stub. - `docs/design/architecture.md` gains rows/sections for `Provider.OpenAI`, `Abstractions.Commands`, `IHostRestarter`, the `<DataRoot>/appsettings.json` overlay, and new cross-cutting **Slash commands** + **Cron** subsystem sections. - `docs/design/paths.md` adds `OpenAIProviderOptions` to the configuration knobs and documents the `<DataRoot>/appsettings.json` overlay precedence chain. - `docs/quickstart.md` mentions OpenAI-compatible backends in the prerequisites and the `OPENAI/<model>` prefix in the agent-config snippet. ## Test plan - [x] Documentation only — no code changes, no tests required. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
github-actions[bot] commented 2026-05-07 21:11:52 -04:00 (Migrated from github.com)
Package Line Rate Branch Rate Complexity Health
LlamaShears.Core.Abstractions.Context 100% 100% 4
LlamaShears.Provider.Ollama 3% 1% 166
LlamaShears.IntegrationTests 87% 73% 71
LlamaShears.Core 46% 31% 879
LlamaShears.Core.Abstractions.Content 0% 100% 1
LlamaShears.Core.Abstractions.Caching 100% 100% 1
LlamaShears.Core.Eventing 90% 73% 53
StrangeSoft.Plugins.Host 20% 21% 87
LlamaShears.Core.Abstractions.Commands 64% 100% 3
LlamaShears.Core.Abstractions.Provider 32% 20% 66
LlamaShears.Core.Abstractions.Memory 0% 100% 3
LlamaShears.Api.Web 37% 20% 348
LlamaShears.Hosting 26% 8% 27
LlamaShears.Core.Abstractions.Events 21% 6% 79
LlamaShears.Core.Abstractions.SystemPrompt 100% 100% 2
LlamaShears 76% 57% 16
LlamaShears.Core.Abstractions.PromptContext 89% 100% 2
LlamaShears.Provider.Onnx.Embeddings 4% 0% 68
LlamaShears.Plugins.Host 34% 24% 36
LlamaShears.Core.Abstractions.Agent 73% 100% 11
LlamaShears.Api 11% 3% 344
LlamaShears.Plugins 0% 100% 1
LlamaShears.Provider.OpenAI 2% 0% 209
LlamaShears.Core.Eventing.Extensions 100% 100% 1
LlamaShears.Core.Abstractions.Context 100% 100% 4
LlamaShears.Provider.Ollama 3% 1% 166
LlamaShears.Core 45% 31% 879
LlamaShears.Core.Abstractions.Content 0% 100% 1
LlamaShears.Core.Abstractions.Caching 100% 100% 1
LlamaShears.Core.Eventing 90% 73% 53
StrangeSoft.Plugins.Host 20% 21% 87
LlamaShears.Core.Abstractions.Commands 64% 100% 3
LlamaShears.Core.Abstractions.Provider 32% 20% 66
LlamaShears.Core.Abstractions.Memory 0% 100% 3
LlamaShears.Api.Web 25% 12% 348
LlamaShears.Hosting 26% 8% 27
LlamaShears.Core.Abstractions.Events 21% 6% 79
LlamaShears.Core.Abstractions.SystemPrompt 100% 100% 2
LlamaShears 76% 57% 16
LlamaShears.Core.Abstractions.PromptContext 89% 100% 2
LlamaShears.Provider.Onnx.Embeddings 4% 0% 68
LlamaShears.Plugins.Host 34% 24% 36
LlamaShears.Core.Abstractions.Agent 73% 100% 11
LlamaShears.Api 9% 1% 344
LlamaShears.Plugins 0% 100% 1
LlamaShears.Provider.OpenAI 2% 0% 209
LlamaShears.Core.Eventing.Extensions 100% 100% 1
LlamaShears.Core.Abstractions.Context 100% 100% 4
LlamaShears.Provider.Ollama 44% 24% 166
LlamaShears.Core 47% 44% 879
LlamaShears.Core.Abstractions.Content 0% 100% 1
LlamaShears.Core.Abstractions.Caching 100% 100% 1
LlamaShears.Core.Eventing 91% 84% 53
LlamaShears.Core.Abstractions.Commands 0% 100% 3
LlamaShears.Core.Abstractions.Provider 78% 64% 66
LlamaShears.Core.Abstractions.Memory 100% 100% 3
LlamaShears.Api.Web 1% 1% 348
LlamaShears.Hosting 33% 21% 27
LlamaShears.Core.Abstractions.Events 15% 3% 79
LlamaShears.Core.Abstractions.SystemPrompt 100% 100% 2
LlamaShears.Core.Abstractions.PromptContext 89% 100% 2
LlamaShears.Provider.Onnx.Embeddings 33% 36% 68
LlamaShears.Core.Abstractions.Agent 86% 100% 11
LlamaShears.Api 27% 29% 344
LlamaShears.Provider.OpenAI 60% 57% 209
LlamaShears.Core.Eventing.Extensions 100% 100% 1
LlamaShears.Analyzers 89% 76% 199
LlamaShears.Analyzers.CodeFixes 85% 69% 60
Summary 48% (8772 / 24103) 37% (1741 / 6802) 7411
Package | Line Rate | Branch Rate | Complexity | Health -------- | --------- | ----------- | ---------- | ------ LlamaShears.Core.Abstractions.Context | 100% | 100% | 4 | ✔ LlamaShears.Provider.Ollama | 3% | 1% | 166 | ❌ LlamaShears.IntegrationTests | 87% | 73% | 71 | ✔ LlamaShears.Core | 46% | 31% | 879 | ❌ LlamaShears.Core.Abstractions.Content | 0% | 100% | 1 | ❌ LlamaShears.Core.Abstractions.Caching | 100% | 100% | 1 | ✔ LlamaShears.Core.Eventing | 90% | 73% | 53 | ✔ StrangeSoft.Plugins.Host | 20% | 21% | 87 | ❌ LlamaShears.Core.Abstractions.Commands | 64% | 100% | 3 | ➖ LlamaShears.Core.Abstractions.Provider | 32% | 20% | 66 | ❌ LlamaShears.Core.Abstractions.Memory | 0% | 100% | 3 | ❌ LlamaShears.Api.Web | 37% | 20% | 348 | ❌ LlamaShears.Hosting | 26% | 8% | 27 | ❌ LlamaShears.Core.Abstractions.Events | 21% | 6% | 79 | ❌ LlamaShears.Core.Abstractions.SystemPrompt | 100% | 100% | 2 | ✔ LlamaShears | 76% | 57% | 16 | ✔ LlamaShears.Core.Abstractions.PromptContext | 89% | 100% | 2 | ✔ LlamaShears.Provider.Onnx.Embeddings | 4% | 0% | 68 | ❌ LlamaShears.Plugins.Host | 34% | 24% | 36 | ❌ LlamaShears.Core.Abstractions.Agent | 73% | 100% | 11 | ➖ LlamaShears.Api | 11% | 3% | 344 | ❌ LlamaShears.Plugins | 0% | 100% | 1 | ❌ LlamaShears.Provider.OpenAI | 2% | 0% | 209 | ❌ LlamaShears.Core.Eventing.Extensions | 100% | 100% | 1 | ✔ LlamaShears.Core.Abstractions.Context | 100% | 100% | 4 | ✔ LlamaShears.Provider.Ollama | 3% | 1% | 166 | ❌ LlamaShears.Core | 45% | 31% | 879 | ❌ LlamaShears.Core.Abstractions.Content | 0% | 100% | 1 | ❌ LlamaShears.Core.Abstractions.Caching | 100% | 100% | 1 | ✔ LlamaShears.Core.Eventing | 90% | 73% | 53 | ✔ StrangeSoft.Plugins.Host | 20% | 21% | 87 | ❌ LlamaShears.Core.Abstractions.Commands | 64% | 100% | 3 | ➖ LlamaShears.Core.Abstractions.Provider | 32% | 20% | 66 | ❌ LlamaShears.Core.Abstractions.Memory | 0% | 100% | 3 | ❌ LlamaShears.Api.Web | 25% | 12% | 348 | ❌ LlamaShears.Hosting | 26% | 8% | 27 | ❌ LlamaShears.Core.Abstractions.Events | 21% | 6% | 79 | ❌ LlamaShears.Core.Abstractions.SystemPrompt | 100% | 100% | 2 | ✔ LlamaShears | 76% | 57% | 16 | ✔ LlamaShears.Core.Abstractions.PromptContext | 89% | 100% | 2 | ✔ LlamaShears.Provider.Onnx.Embeddings | 4% | 0% | 68 | ❌ LlamaShears.Plugins.Host | 34% | 24% | 36 | ❌ LlamaShears.Core.Abstractions.Agent | 73% | 100% | 11 | ➖ LlamaShears.Api | 9% | 1% | 344 | ❌ LlamaShears.Plugins | 0% | 100% | 1 | ❌ LlamaShears.Provider.OpenAI | 2% | 0% | 209 | ❌ LlamaShears.Core.Eventing.Extensions | 100% | 100% | 1 | ✔ LlamaShears.Core.Abstractions.Context | 100% | 100% | 4 | ✔ LlamaShears.Provider.Ollama | 44% | 24% | 166 | ❌ LlamaShears.Core | 47% | 44% | 879 | ❌ LlamaShears.Core.Abstractions.Content | 0% | 100% | 1 | ❌ LlamaShears.Core.Abstractions.Caching | 100% | 100% | 1 | ✔ LlamaShears.Core.Eventing | 91% | 84% | 53 | ✔ LlamaShears.Core.Abstractions.Commands | 0% | 100% | 3 | ❌ LlamaShears.Core.Abstractions.Provider | 78% | 64% | 66 | ✔ LlamaShears.Core.Abstractions.Memory | 100% | 100% | 3 | ✔ LlamaShears.Api.Web | 1% | 1% | 348 | ❌ LlamaShears.Hosting | 33% | 21% | 27 | ❌ LlamaShears.Core.Abstractions.Events | 15% | 3% | 79 | ❌ LlamaShears.Core.Abstractions.SystemPrompt | 100% | 100% | 2 | ✔ LlamaShears.Core.Abstractions.PromptContext | 89% | 100% | 2 | ✔ LlamaShears.Provider.Onnx.Embeddings | 33% | 36% | 68 | ❌ LlamaShears.Core.Abstractions.Agent | 86% | 100% | 11 | ✔ LlamaShears.Api | 27% | 29% | 344 | ❌ LlamaShears.Provider.OpenAI | 60% | 57% | 209 | ➖ LlamaShears.Core.Eventing.Extensions | 100% | 100% | 1 | ✔ LlamaShears.Analyzers | 89% | 76% | 199 | ✔ LlamaShears.Analyzers.CodeFixes | 85% | 69% | 60 | ✔ **Summary** | **48%** (8772 / 24103) | **37%** (1741 / 6802) | **7411** | ❌ <!-- Sticky Pull Request Commentcoverage -->
copilot-pull-request-reviewer[bot] (Migrated from github.com) reviewed 2026-05-07 21:16:38 -04:00
copilot-pull-request-reviewer[bot] (Migrated from github.com) left a comment

Pull request overview

Documentation update to reflect recent feature additions across the PR #36–#44 chain (OpenAI-compatible provider, slash command system, and cron stub) and to clarify configuration/paths behavior.

Changes:

  • Expanded README scope + status table to include OpenAI-compatible chat provider, slash commands, and cron stub.
  • Updated design docs (architecture.md, paths.md) with new subsystem sections and configuration overlay details.
  • Updated quickstart to mention OpenAI-compatible backends and the OpenAI model id prefix format.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
README.md Updates scope/status to include OpenAI provider, slash commands, and cron subsystem.
docs/quickstart.md Adds OpenAI-compatible backend prerequisites and model id prefix guidance.
docs/design/paths.md Documents OpenAIProviderOptions and <DataRoot>/appsettings.json overlay + precedence.
docs/design/architecture.md Adds OpenAI provider + commands abstractions and new slash command/cron sections; expands composition-root notes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

## Pull request overview Documentation update to reflect recent feature additions across the PR #36–#44 chain (OpenAI-compatible provider, slash command system, and cron stub) and to clarify configuration/paths behavior. **Changes:** - Expanded README scope + status table to include OpenAI-compatible chat provider, slash commands, and cron stub. - Updated design docs (`architecture.md`, `paths.md`) with new subsystem sections and configuration overlay details. - Updated quickstart to mention OpenAI-compatible backends and the OpenAI model id prefix format. ### Reviewed changes Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments. | File | Description | | ---- | ----------- | | README.md | Updates scope/status to include OpenAI provider, slash commands, and cron subsystem. | | docs/quickstart.md | Adds OpenAI-compatible backend prerequisites and model id prefix guidance. | | docs/design/paths.md | Documents `OpenAIProviderOptions` and `<DataRoot>/appsettings.json` overlay + precedence. | | docs/design/architecture.md | Adds OpenAI provider + commands abstractions and new slash command/cron sections; expands composition-root notes. | --- 💡 <a href="/jasoncouture/llama-shears/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-07 21:16:37 -04:00

The Cron tool names are inconsistent with the MCP tool attributes in src/LlamaShears.Api/Tools/ModelContextProtocol/Cron/*: the tools are cron_list, cron_edit, cron_cancel, and cron_trigger (not list/edit/cancel/trigger). Update the documentation to use the full tool names so users can actually invoke them.

The Cron tool names are inconsistent with the MCP tool attributes in `src/LlamaShears.Api/Tools/ModelContextProtocol/Cron/*`: the tools are `cron_list`, `cron_edit`, `cron_cancel`, and `cron_trigger` (not `list`/`edit`/`cancel`/`trigger`). Update the documentation to use the full tool names so users can actually invoke them.
@ -12,3 +12,3 @@
|---------|------|
| [src/LlamaShears](../../src/LlamaShears/) | ASP.NET Core entry point. `Program.cs`, `appsettings.json`, bundled workspace templates under `content/templates/workspace/`, the `TemplateSeedingStartupTask` that copies them into `<Templates>` on first boot, and the in-host plugin wire-up (`PathPluginLoader` + `LoadPluginsAsync`/`UsePluginsAsync`). |
| [src/LlamaShears](../../src/LlamaShears/) | ASP.NET Core entry point. `Program.cs`, `appsettings.json`, bundled workspace templates under `content/templates/workspace/`, the `TemplateSeedingStartupTask` that copies them into `<Templates>` on first boot, and the in-host plugin wire-up (`PathPluginLoader` + `LoadPluginsAsync`/`UsePluginsAsync`). `Program.cs` resolves `<DataRoot>` (defaulting to `~/.llama-shears`, with `~` expansion) before any service registration and inserts a reload-on-change `JsonConfigurationSource` for `<DataRoot>/appsettings.json` immediately after the bundled JSON sources — i.e. it overrides `appsettings.json` / `appsettings.{Env}.json` / user-secrets, but environment variables and command-line args still win. |
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-07 21:16:38 -04:00

Program.cs inserts the <DataRoot>/appsettings.json source after the last JsonConfigurationSource. That means it overrides appsettings*.json, but it does not override later non-JSON sources (and this repo doesn't configure user-secrets at all). The sentence claiming it overrides user-secrets should be corrected to match the actual configuration precedence.

`Program.cs` inserts the `<DataRoot>/appsettings.json` source after the last `JsonConfigurationSource`. That means it overrides `appsettings*.json`, but it does **not** override later non-JSON sources (and this repo doesn't configure user-secrets at all). The sentence claiming it overrides user-secrets should be corrected to match the actual configuration precedence.
@ -36,3 +36,4 @@
| [src/LlamaShears.Provider.OpenAI](../../src/LlamaShears.Provider.OpenAI/) | OpenAI-compatible chat provider. Speaks `/v1/chat/completions` (streaming) and `/v1/models`, so it covers any OpenAI-API-compatible backend — `llama-server`, vLLM, LM Studio, TabbyAPI, the real OpenAI endpoint. `OpenAIProviderOptions.ExtraRequestParams` is a free-form `JsonObject` merged into every request body so vendor knobs round-trip without forking the provider; per-agent options deep-merge over host defaults. Single `IHttpClientFactory` named client (`nameof(OpenAILanguageModel)`) is shared between the language model and the listing call. |
| [src/LlamaShears.Provider.Onnx.Embeddings](../../src/LlamaShears.Provider.Onnx.Embeddings/) | In-process embeddings provider for sentence-transformers-style ONNX models (currently scoped to all-MiniLM family). Convention-based per-model layout under `<Templates>`/configured paths; pooling strategy + max-sequence-length per model. |
### Public abstractions (`src/public/`)
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-07 21:16:38 -04:00

This row reads as though IHostRestarter is used by TemplateSeedingStartupTask and AgentManager, but those types only use IHostStartupTask/HostStartupTaskRunner. Consider rewording to separate the two concerns (startup tasks vs. restarter) so the dependency/usage claims stay accurate.

This row reads as though `IHostRestarter` is used by `TemplateSeedingStartupTask` and `AgentManager`, but those types only use `IHostStartupTask`/`HostStartupTaskRunner`. Consider rewording to separate the two concerns (startup tasks vs. restarter) so the dependency/usage claims stay accurate.
@ -97,0 +106,4 @@
4. user-secrets
5. `appsettings.{Environment}.json`
6. `appsettings.json`
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-07 21:16:38 -04:00

The <DataRoot>/appsettings.json precedence list doesn't match the actual insertion logic in src/LlamaShears/Program.cs: the overlay is inserted after the last JsonConfigurationSource, which places it before any non-JSON sources (and there is no UserSecretsId in this repo, so user-secrets aren't configured by default). Please adjust the precedence list/wording (and remove or reposition the user-secrets bullet) so it reflects the real override order.

The `<DataRoot>/appsettings.json` precedence list doesn't match the actual insertion logic in `src/LlamaShears/Program.cs`: the overlay is inserted after the last `JsonConfigurationSource`, which places it *before* any non-JSON sources (and there is no `UserSecretsId` in this repo, so user-secrets aren't configured by default). Please adjust the precedence list/wording (and remove or reposition the user-secrets bullet) so it reflects the real override order.
Sign in to join this conversation.
No description provided.