Commit graph

239 commits

Author SHA1 Message Date
forgejo-actions[bot]
75b5eb8d45 chore(release): bump version to v0.1.40-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
91d06339e0 chore(release): bump version to v0.1.39-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
2536c0cd99 chore(release): bump version to v0.1.38-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
032cd96024 chore(release): bump version to v0.1.37-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
2fa6b1b9ec chore(release): bump version to v0.1.36-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
cf2b16e9e0 chore(release): bump version to v0.1.35-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
f3fd33e4ba chore(release): bump version to v0.1.34-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
3d5d630b02 chore(release): bump version to v0.1.33-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
9ff1be23d1 chore(release): bump version to v0.1.32-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
414d578277 chore(release): bump version to v0.1.31-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
c7af96203b chore(release): bump version to v0.1.30-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
12acdaa8a6 chore(release): bump version to v0.1.29-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
8fdc891fdc chore(release): bump version to v0.1.28-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
817a891625 chore(release): bump version to v0.1.27-alpha 2026-08-03 11:51:09 -07:00
forgejo-actions[bot]
c2f458bd0e chore(release): bump version to v0.1.26-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
4f6a20cd7b chore(release): bump version to v0.1.25-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
b26803a01f chore(release): bump version to v0.1.24-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
0751eb7a57 chore(release): bump version to v0.1.23-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
76107f128a chore(release): bump version to v0.1.22-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
ac6b743c69 chore(release): bump version to v0.1.21-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
1cfe830275 chore(release): bump version to v0.1.20-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
4e51277733 chore(release): bump version to v0.1.19-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
3b2de69d22 chore(release): bump version to v0.1.18-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
2ccf266f24 chore(release): bump version to v0.1.17-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
8413c7a3d6 chore(release): bump version to v0.1.16-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
047e847770 chore(release): bump version to v0.1.15-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
b2d76babf8 chore(release): bump version to v0.1.14-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
08f6eab623 chore(release): bump version to v0.1.13-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
37eed0d434 chore(release): bump version to v0.1.12-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
8704b14ea0 chore(release): bump version to v0.1.11-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
8721c4be3a chore(release): bump version to v0.1.10-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
56fc427d9e chore(release): bump version to v0.1.9-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
9d7560ceac chore(release): bump version to v0.1.8-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
89446f1495 chore(release): bump version to v0.1.7-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
5e90ca798c chore(release): bump version to v0.1.6-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
623f5184b8 chore(release): bump version to v0.1.5-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
95ed8b2621 chore(release): bump version to v0.1.4-alpha 2026-08-03 11:51:08 -07:00
forgejo-actions[bot]
ca58fc3e41 chore(release): bump version to v0.1.3-alpha 2026-08-03 11:51:08 -07:00
github-actions[bot]
9373bd0a84 chore(release): bump version to v0.1.2-alpha 2026-08-03 06:43:46 +00:00
595a9c0c61 ci: bump actions/setup-go to v7, use public Forgejo host 2026-08-02 23:42:48 -07:00
732be4384a fix(ci): use git clone instead of actions/checkout for Forgejo runner 2026-08-02 23:42:48 -07:00
github-actions[bot]
64cc569044 chore(release): bump version to v0.1.1-alpha 2026-08-03 06:08:29 +00:00
ed2b8b675c fix(ci): quote pattern in release-commit check
Some checks failed
bump-version / bump (push) Failing after 2s
2026-08-02 23:07:35 -07:00
6e9211b5a0 ci: automatic version + releases tag
Some checks failed
bump-version / bump (push) Has been cancelled
2026-08-02 18:25:14 -07:00
cde9ac3544
Merge pull request #10 from VictorVargas/feat/multimodal-content-parts
Add multimodal (image/video) content support
2026-07-17 00:11:09 -07:00
49353485e5 feat(agent): thread the new turn through Loop as llm.Message
Run/RunStream took the new turn as a bare string, which had nowhere
to carry ContentPart attachments. Both now take an llm.Message
(Role is forced to RoleUser regardless of what the caller sets), so a
caller building a multimodal turn just fills in Content/Parts on it
instead of the loop needing a second, parallel parameter.
subagent.go and every test call site are updated to wrap their string
prompt as llm.Message{Role: llm.RoleUser, Content: ...} — SubAgent.Run
itself is untouched, it still takes a plain task string.
2026-07-16 22:24:03 -07:00
2f6f5fab1c feat(llm): add multimodal ContentPart/Parts + per-provider serialization
Message gains an optional Parts []ContentPart alongside the existing
plain-text Content, so a turn can carry text plus image/video
attachments. Content stays the single source of truth for every
existing text-only caller (sidebar.go, memory_tools.go, etc. are
untouched); Parts only matters to a provider client when non-empty.

openai and llamacpp (both OpenAI-compatible) serialize Parts into the
standard text/image_url content-array shape; llamacpp additionally
passes video through as a best-effort video_url part, since llama.cpp
itself has no video support but the whole point of this client is the
user's own OpenAI-compatible server sitting in front of a
video-capable model — the server decides whether it understands it,
not this client. anthropic converts image parts to its base64 image
content block, and rejects a video part outright with a clear error:
the Messages API has no video block type at all, so sending one would
just produce a confusing 400 instead.

ProviderCapabilities gains SupportsVideo, true only for llamacpp.
2026-07-16 22:23:54 -07:00
42a415fb7d
Merge pull request #9 from VictorVargas/feat/rag-sandbox-agent-recovery
Taxonomía RAG + auto-captura, sandbox avanzado y recuperación de turnos muertos
2026-07-15 14:58:39 -07:00
8e887c8c78 fix(agent,llamacpp): recover turns killed by unparsed tool calls and reasoning spirals
Two failure modes seen live with Qwen3.6 on llama.cpp ended turns silently
mid-task:

- The model writes its tool call as plain text inside its reasoning, the
  server never parses it, and the round ends with nothing executed. The
  loop now detects the markers and nudges the model to re-issue the call
  for real (max 2 per turn).

- llama.cpp silently ignores the max_thinking_tokens field, so a model in
  a reasoning spiral ran until max_tokens (seen live: 25k+ tokens of
  nonstop thinking, ~20 min). The llamacpp client now enforces the budget
  client-side during Stream: once exceeded while the round is still pure
  reasoning, it cuts with FinishThinkingBudget and aborts the request
  (freeing the server slot); the loop answers with its own corrective
  nudge, on a separate counter.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:50:45 -07:00
07d1840e7e feat(sandbox): network egress policy, secret redaction, untrusted-content fencing
NetworkPolicy validates scheme/host and re-validates resolved IPs at dial
time and on redirects (DNS-rebinding defense), with cloud metadata
endpoints always blocked. Redact masks known credential shapes (OpenAI/
Anthropic/GitHub/AWS/Slack/Google keys, PEM blocks, JWTs) in tool output.
WrapUntrusted fences fetched web content against prompt injection, paired
with UntrustedContentInstruction for the system prompt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:50:45 -07:00