3415 Commits

Author SHA1 Message Date
github-actions[bot]
8c9c3135ab chore(release): Update version to v1.4.381 v1.4.381 2026-01-17 14:50:18 +00:00
Kayvan Sylvan
42392b0717 Merge pull request #1940 from ksylvan/kayvan/fix-ollama-serve-flow
Rewrite Ollama chat handler to support proper streaming responses
2026-01-17 06:47:56 -08:00
Kayvan Sylvan
2cb2a76200 feat: add support for pattern variables in Ollama API requests
## CHANGES

- Add `Variables` field to `OllamaRequestBody` struct for direct variable passing
- Change `Options` field from empty struct to flexible `map[string]any` type
- Extract variables from top-level `Variables` field or nested `Options.variables`
- Support parsing variables as JSON string or map format
- Pass extracted variables to `PromptRequest` for single message chats
- Pass extracted variables to `PromptRequest` for multi-message chats
- Add `omitempty` JSON tags to optional fields
2026-01-17 06:35:41 -08:00
Kayvan Sylvan
0f466a32bc chore: incoming 1940 changelog entry 2026-01-17 05:35:54 -08:00
Kayvan Sylvan
c7c9d73c01 fix: return string error payloads and fail non-stream empty upstream
## CHANGES
- Serialize JSON error field as `err.Error()` string
- Treat non-stream upstream empty content as 502 error
- Keep streaming mode tolerant when upstream returns no content
2026-01-17 05:34:38 -08:00
Kayvan Sylvan
61e8871396 fix: set NDJSON header only after successful upstream response
## CHANGES
- Move NDJSON `Content-Type` header after status validation
- Avoid setting stream headers on upstream error responses
- Log warning when upstream returns no streamed content
- Keep duration timing consistent across response paths
- Preserve existing streaming and non-streaming response behavior
2026-01-17 05:03:03 -08:00
Kayvan Sylvan
04fef11e17 fix: harden Ollama streaming flush and align metric counters with int64
## CHANGES
- Use int64 for prompt and eval count fields
- Skip sending secondary error message on stream write failure
- Allow non-http schemes and validate host only for address
- Flush response only when writer implements http.Flusher
2026-01-17 04:55:49 -08:00
Kayvan Sylvan
c50b9a61de fix: propagate request context and close Ollama stream on errors
## CHANGES
- Use Gin request context for outbound HTTP calls
- Send final stream chunk when response write fails
- Capture timing duration once for consistent metrics
- Build final Ollama response via shared helper function
- Validate Fabric base URL scheme is http/https only
- Add clarifying documentation comments for URL and writers
2026-01-17 04:21:41 -08:00
Kayvan Sylvan
665267842f fix: align Ollama duration fields to int64 nanosecond precision
## CHANGES
- Use int64 for `load_duration` JSON field values
- Use int64 for `prompt_eval_duration` JSON field values
- Remove lossy int casts when assigning nanosecond durations
- Keep duration payloads consistent with `total_duration` precision
- Prevent potential overflow on long-running request timing
2026-01-17 04:01:26 -08:00
Kayvan Sylvan
e2b63ddc2f fix: improve SSE scan errors and validate bare Fabric address inputs
## CHANGES
- Send detailed SSE stream scan errors in responses
- Detect token-too-long and return clear buffer-limit message
- Unify streaming and JSON error messaging for scan failures
- Validate bare Fabric address using URL parsing
- Reject bare addresses missing host or hostname
- Disallow path components in bare Fabric addresses
- Trim trailing slash from validated Fabric chat URL
- Add tests covering invalid bare addresses with paths
2026-01-17 03:32:07 -08:00
Kayvan Sylvan
97b6b76dd2 fix: reject hostless Fabric chat URLs like https://:8080
## CHANGES
- Validate parsed URL host not start with colon
- Return explicit error for missing hostname in URL
- Update unit test to expect error on port-only host
- Prevent accidental acceptance of malformed `https://:port` addresses
2026-01-17 03:06:17 -08:00
Kayvan Sylvan
f3eed4593f chore: incoming 1940 changelog entry 2026-01-17 02:32:12 -08:00
Kayvan Sylvan
29a32a8439 fix: validate Fabric chat URL host and tidy Ollama responses
## CHANGES
- Set NDJSON content type before checking upstream errors
- Reject parsed URLs that omit a hostname
- Remove hardcoded eval count placeholders from responses
- Add unit tests for Fabric chat URL builder
- Cover colon-port, host:port, and IP address inputs
2026-01-17 02:31:46 -08:00
Kayvan Sylvan
ae6d4d1fb3 fix: handle upstream non-2xx and return stringified error payloads
## CHANGES
- Convert JSON error responses to use err.Error()
- Detect upstream Fabric non-2xx status before scanning
- Read and log upstream error body when possible
- Return upstream status error message for non-stream mode
- Stream error message via NDJSON when streaming enabled
- Set NDJSON Content-Type header before first streaming write
- Remove per-chunk header setting during streaming output
2026-01-17 01:37:20 -08:00
Kayvan Sylvan
8310695e1a fix(ollama): address Copilot review feedback for error handling
Addresses all 8 Copilot review comments on PR #1940:

Critical fixes:
- Replace log.Fatal with proper HTTP error response to prevent
  server crashes on request failures
- Add streaming-aware error handling to maintain consistent
  response format (prevents mixing JSON with NDJSON)

Error messaging improvements:
- Replace "testing endpoint" placeholders with descriptive
  error messages
- Add clear context for unmarshal and scanning failures

Protocol compliance:
- Set Content-Type: application/x-ndjson for streaming responses
- Ensure all error paths respect stream vs non-stream mode

Code cleanup:
- Remove commented-out dead code

Tested both streaming and non-streaming modes successfully.
2026-01-17 01:19:37 -08:00
Kayvan Sylvan
4fa6abf0df chore: incoming 1940 changelog entry 2026-01-17 00:58:40 -08:00
Kayvan Sylvan
e318a939aa refactor: rewrite Ollama chat handler to support proper streaming responses
- Add `json:"-"` tag to exclude UpdateChan from JSON serialization
- Extract URL building logic into dedicated `buildFabricChatURL` helper function
- Replace single-read body parsing with streaming `bufio.Scanner` approach
- Add proper SSE data prefix parsing for fabric response format
- Implement real-time streaming with `writeOllamaResponse` helper function
- Add `writeOllamaResponseStruct` for consistent JSON response writing
- Handle both streaming and non-streaming response modes separately
- Add proper error handling for fabric error response types
- Ensure response body is properly closed with defer statement
2026-01-17 00:52:29 -08:00
github-actions[bot]
e3c2723988 chore(release): Update version to v1.4.380 v1.4.380 2026-01-16 01:05:53 +00:00
Kayvan Sylvan
198b5af12c Merge pull request #1936 from ksylvan/kayvan/msft_copilot_vendor_by_claude_opus_4_5
New Vendor: Microsoft Copilot
2026-01-15 17:03:30 -08:00
Kayvan Sylvan
c66aad556b chore: incoming 1936 changelog entry 2026-01-15 16:59:51 -08:00
Kayvan Sylvan
9f8a2531ca docs: README update for Microsoft Copilot vendor integration 2026-01-15 16:59:28 -08:00
Kayvan Sylvan
a2370a0e3b chore: Note in the guide about restricted env + modernize fixes 2026-01-15 15:16:40 -08:00
Kayvan Sylvan
1af6418486 chore: incoming 1936 changelog entry 2026-01-15 15:04:40 -08:00
Kayvan Sylvan
f50a7568d1 Merge branch 'main' into kayvan/msft_copilot_vendor_by_claude_opus_4_5 2026-01-15 15:00:42 -08:00
Kayvan Sylvan
83d9d0b336 Merge pull request #2 from tomstetson/fix/copilot-sendstream-interface
fix: update Copilot SendStream to use domain.StreamUpdate
2026-01-15 14:54:51 -08:00
github-actions[bot]
52db4f1961 chore(release): Update version to v1.4.379 v1.4.379 2026-01-15 22:27:14 +00:00
Kayvan Sylvan
36a22aa432 Merge pull request #1935 from danielmiessler/dependabot/npm_and_yarn/web/npm_and_yarn-0463113060
chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates
2026-01-15 14:23:31 -08:00
Kayvan Sylvan
487199394b chore: fis dependabot attribution 2026-01-15 14:15:43 -08:00
Kayvan Sylvan
3a1d7757fb chore: incoming 1935 changelog entry 2026-01-15 14:12:59 -08:00
Tom Stetson
d98ad5290c fix: update Copilot SendStream to use domain.StreamUpdate
Update the SendStream interface to match the current Vendor interface
which now uses chan domain.StreamUpdate instead of chan string.

Changes:
- Update SendStream signature to use chan domain.StreamUpdate
- Update sendChatMessageStream signature accordingly
- Update parseSSEStream signature accordingly
- Wrap all channel sends with domain.StreamUpdate{Type: StreamTypeContent}

This fixes the build error introduced when the streaming interface was
updated to support metadata like token usage alongside content.
2026-01-15 14:50:59 -05:00
dependabot[bot]
a6fc9a0ef0 chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates
Bumps the npm_and_yarn group with 1 update in the /web directory: [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit).


Updates `@sveltejs/kit` from 2.21.1 to 2.49.5
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.49.5/packages/kit)

Updates `devalue` from 5.3.2 to 5.6.2
- [Release notes](https://github.com/sveltejs/devalue/releases)
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/devalue/compare/v5.3.2...v5.6.2)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-version: 2.49.5
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: devalue
  dependency-version: 5.6.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 18:15:29 +00:00
github-actions[bot]
fd5530d38b chore(release): Update version to v1.4.378 v1.4.378 2026-01-14 19:11:24 +00:00
Kayvan Sylvan
8ec09be550 Merge pull request #1933 from ksylvan/kayvan/digital-ocean-provider
Add DigitalOcean Gradient AI support
2026-01-14 11:08:58 -08:00
Kayvan Sylvan
6bac79703e chore: Add Digital Oceam vendor to Updates section. 2026-01-14 11:03:15 -08:00
Kayvan Sylvan
24afe127f1 chore: incoming 1933 changelog entry 2026-01-13 22:56:36 -08:00
Kayvan Sylvan
c26a56a368 feat: add DigitalOcean Gradient AI Agents as a new vendor
## CHANGES

- Add DigitalOcean as a new AI provider in plugin registry
- Implement DigitalOcean client with OpenAI-compatible inference endpoint
- Support model access key authentication for inference requests
- Add optional control plane token for model discovery
- Create DigitalOcean setup documentation with environment variables
- Update README to list DigitalOcean in supported providers
- Handle model listing via control plane API with fallback
2026-01-13 22:52:13 -08:00
Kayvan Sylvan
84470eac3f chore: Update README with a links to other docs 2026-01-13 13:58:14 -08:00
Kayvan Sylvan
a2058ae26e Merge branch 'main' into kayvan/msft_copilot_vendor_by_claude_opus_4_5 2026-01-13 10:35:24 -08:00
github-actions[bot]
74250bbcbd chore(release): Update version to v1.4.377 v1.4.377 2026-01-12 17:39:02 +00:00
Kayvan Sylvan
a593e83d9f Merge pull request #1929 from ksylvan/kayvan/add-mammouth-ai-provider
Add Mammouth as new OpenAI-compatible AI provider
2026-01-12 09:36:05 -08:00
Kayvan Sylvan
62e6812c7f chore: incoming 1929 changelog entry 2026-01-12 09:33:38 -08:00
Kayvan Sylvan
7e7ab9e5f2 feat: add Mammouth as new OpenAI-compatible AI provider
## CHANGES

- Add Mammouth provider configuration with API base URL
- Configure Mammouth to use standard OpenAI-compatible interface
- Disable Responses API implementation for Mammouth provider
- Add "Mammouth" to VSCode spell check dictionary
2026-01-12 09:27:28 -08:00
github-actions[bot]
df2938a7ee chore(release): Update version to v1.4.376 v1.4.376 2026-01-12 05:22:38 +00:00
Kayvan Sylvan
014985c407 Merge pull request #1928 from ksylvan/kayvan/refactor-new-plugin-base
Eliminate repetitive boilerplate across eight vendor implementations
2026-01-11 21:20:07 -08:00
Kayvan Sylvan
a3d9bec537 chore: incoming 1928 changelog entry 2026-01-11 21:18:06 -08:00
Kayvan Sylvan
febae215f3 chore: exempt json files from VSCode format-on-save 2026-01-11 20:56:13 -08:00
Kayvan Sylvan
cf55be784f refactor: add NewVendorPluginBase factory function to reduce duplication
Add centralized factory function for AI vendor plugin initialization:
- Add NewVendorPluginBase(name, configure) to internal/plugins/plugin.go
- Update 8 vendor files (anthropic, bedrock, gemini, lmstudio, ollama,
  openai, perplexity, vertexai) to use the factory function
- Add 3 test cases for the new factory function

This removes ~40 lines of duplicated boilerplate code and ensures
consistent plugin initialization across all vendors.

MAESTRO: Loop 00001 refactoring implementation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 20:12:58 -08:00
Daniel Miessler
6d2180e69a docs: Add GitHub sponsor section to README
I spend hundreds of hours a year on open source. If you'd like to help support this project, you can sponsor me here.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 12:40:13 -08:00
github-actions[bot]
678db0c43e chore(release): Update version to v1.4.375 v1.4.375 2026-01-08 19:35:56 +00:00
Kayvan Sylvan
765977cd42 Merge pull request #1926 from henricook/feature/vertexai-dynamic-model-listing
feat(vertexai): add dynamic model listing and multi-model support
2026-01-08 11:33:33 -08:00