NewInstaller now takes an io.Medium parameter for filesystem operations,
replacing direct os.MkdirAll and os.RemoveAll calls. Also fixes installer
tests to use correct manifest path (.core/manifest.yaml) and force-add
.core/ directory past .gitignore.
Co-Authored-By: Virgil <virgil@lethean.io>
Resolve stale forge.lthn.ai/core/cli v0.1.0 references (tag never existed,
earliest is v0.0.1) and regenerate go.sum via workspace-aware go mod tidy.
Co-Authored-By: Virgil <virgil@lethean.io>
ScmProvider implements Provider + Streamable + Describable + Renderable,
wrapping marketplace, manifest, installed, and registry endpoints as REST
API with WS event streaming. Includes Lit custom element bundle with
panel, marketplace browser, manifest viewer, installed manager, and
registry status display. All 14 tests pass.
Co-Authored-By: Virgil <virgil@lethean.io>
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
KBConfig (.core/kb.yaml, checked in):
- Wiki mirror: enabled flag, local dir, remote SSH base URL
- Search: Qdrant host/port, collection (openbrain), Ollama URL,
embed model (embeddinggemma), default top_k
- Helpers: WikiRepoURL(name), WikiLocalPath(root, name)
Data already lives in Qdrant (homelab-embedded) — this just
configures the search client and local wiki clone paths.
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update imports from forge.lthn.ai/core/go/pkg/cli to
forge.lthn.ai/core/cli/pkg/cli following CLI package split.
Co-Authored-By: Virgil <virgil@lethean.io>
Go 1.26 rejects non-semver version strings (like 'main') in go.mod.
Tags v0.0.1 now exist on all forge repos — workspace still overrides
for local development.
Co-Authored-By: Virgil <virgil@lethean.io>
Forge module versions now use main branch resolution via ~/Code/go.work
workspace. Removes local replace directives — the central go.work handles
all cross-repo resolution during development.
Co-Authored-By: Virgil <virgil@lethean.io>
These packages are still imported by the CLI. Reverting the premature
extraction so forge consumers can resolve them.
Co-Authored-By: Virgil <virgil@lethean.io>
The git/ package was extracted to the standalone core/go-git repo.
No remaining packages import it. Three packages remain: forge/,
gitea/, collect/.
Co-Authored-By: Virgil <virgil@lethean.io>
Both packages now live in forge.lthn.ai/core/go-agent as a unified
agent orchestration repo. go-scm retains collect/, forge/, git/, gitea/.
Co-Authored-By: Virgil <virgil@lethean.io>
Replace hardcoded "new" target branch with a lookup against the
Forgejo API for the repository's default branch, falling back to
"main" if the API call fails.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace internal task tracking (TODO.md, FINDINGS.md) with structured
documentation in docs/. Trim CLAUDE.md to agent instructions only.
Co-Authored-By: Virgil <virgil@lethean.io>
Extends Phase 3 forgejo source tests with 9 additional scenarios:
multi-epic with multiple children, combined status fetch error
fallback to PENDING, mixed repos with partial failure, Report
comment body format (table-driven), Report posting to correct
epic issue, signal field completeness, all-children-checked
producing zero signals, and NeedsCoding signal field population.
Co-Authored-By: Charon <developers@lethean.io>
- Standardise all fmt.Errorf calls to "package.Func: context" pattern
across jobrunner/journal.go, agentci/config.go, agentci/security.go,
handlers/dispatch.go, and forge/labels.go (15 bare errors fixed)
- Add SecureSSHCommandContext with context propagation for cancellable
SSH operations; update dispatch handler to use it
- Add CheckGitHubRateLimitCtx for context-aware rate limit checking
- Document Forgejo/Gitea SDK v2 context limitation in FINDINGS.md
(SDKs do not accept context.Context — adding ctx to 66 wrappers
would be ceremony without real propagation)
- Review and document rate limiter: handles all edge cases, adaptive
throttling at 75% GitHub usage, SDK header parsing not feasible
Co-Authored-By: Virgil <virgil@lethean.io>