chore: migrate to dappco.re vanity import path
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 22s

Change module path from forge.lthn.ai/core/go-scm to dappco.re/go/core/scm.
Update all Go source imports for migrated packages:
- go-log  -> dappco.re/go/core/log
- go-io   -> dappco.re/go/core/io
- go-i18n -> dappco.re/go/core/i18n
- go-ws   -> dappco.re/go/core/ws
- api     -> dappco.re/go/core/api

Non-migrated packages (cli, config) left on forge.lthn.ai paths.
Replace directives use local paths (../go, ../go-io, etc.) until the
dappco.re vanity URL server resolves these modules.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude 2026-03-21 23:54:23 +00:00
parent ea1827284a
commit 2dcb86738a
No known key found for this signature in database
GPG key ID: AF404715446AEB41
127 changed files with 232 additions and 229 deletions

View file

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## What This Is
SCM integration and data collection library for the Lethean ecosystem (`forge.lthn.ai/core/go-scm`). Provides Forgejo/Gitea API clients, an AgentCI pipeline for automated PR lifecycle, pluggable data collectors, and workspace management (repos registry, manifests with ed25519 signing, marketplace, plugin system).
SCM integration and data collection library for the Lethean ecosystem (`dappco.re/go/core/scm`). Provides Forgejo/Gitea API clients, an AgentCI pipeline for automated PR lifecycle, pluggable data collectors, and workspace management (repos registry, manifests with ed25519 signing, marketplace, plugin system).
Virgil orchestrates tasks via Forgejo issues. Pick up tasks in issue order, mark complete, commit and push.
@ -65,14 +65,14 @@ Each subsystem has different test infrastructure — see `docs/development.md` f
- **UK English**: colour, organisation, centre, licence (noun), authorise, behaviour
- **Tests**: testify assert/require, table-driven preferred, `_Good`/`_Bad`/`_Ugly` suffix naming
- **Imports**: stdlib → `forge.lthn.ai/...` → third-party, each group separated by blank line
- **Errors**: `coreerr.E("package.Func", "context", err)` via `coreerr "forge.lthn.ai/core/go-log"` — no bare `fmt.Errorf` or `errors.New`
- **Imports**: stdlib → `dappco.re/...` → third-party, each group separated by blank line
- **Errors**: `coreerr.E("package.Func", "context", err)` via `coreerr "dappco.re/go/core/log"` — no bare `fmt.Errorf` or `errors.New`
- **Conventional commits**: `feat(forge):`, `fix(gitea):`, `test(collect):`, `docs(agentci):`, `refactor(collect):`, `chore:`
- **Co-Author trailer**: `Co-Authored-By: Virgil <virgil@lethean.io>`
- **Licence**: EUPL-1.2
## Forge
- **Repo**: `forge.lthn.ai/core/go-scm`
- **Repo**: `dappco.re/go/core/scm`
- **Push via SSH**: `git push origin main` (remote: `ssh://git@forge.lthn.ai:2223/core/go-scm.git`)
- **CI**: Forgejo Actions — runs tests with race detector and coverage on push to main/dev and PRs to main

View file

@ -1,4 +1,4 @@
[![Go Reference](https://pkg.go.dev/badge/forge.lthn.ai/core/go-scm.svg)](https://pkg.go.dev/forge.lthn.ai/core/go-scm)
[![Go Reference](https://pkg.go.dev/badge/dappco.re/go/core/scm.svg)](https://pkg.go.dev/dappco.re/go/core/scm)
[![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE.md)
[![Go Version](https://img.shields.io/badge/Go-1.26-00ADD8?style=flat&logo=go)](go.mod)
@ -6,7 +6,7 @@
SCM integration, AgentCI dispatch automation, and data collection for the Lethean ecosystem. Provides a Forgejo API client and a Gitea client for the public mirror, multi-repo git operations with parallel status checks, the Clotho Protocol orchestrator for dual-run agent verification, a PR automation pipeline (poll → dispatch → journal) driven by epic issue task lists, and pluggable data collectors for BitcoinTalk, GitHub, market data, and research papers.
**Module**: `forge.lthn.ai/core/go-scm`
**Module**: `dappco.re/go/core/scm`
**Licence**: EUPL-1.2
**Language**: Go 1.25
@ -14,9 +14,9 @@ SCM integration, AgentCI dispatch automation, and data collection for the Lethea
```go
import (
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/git"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/git"
"dappco.re/go/core/scm/jobrunner"
)
// Forgejo client

View file

@ -4,7 +4,7 @@ import (
"context"
"strings"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
// RunMode determines the execution strategy for a dispatched task.

View file

@ -5,7 +5,7 @@ import (
"fmt"
"forge.lthn.ai/core/config"
coreerr "forge.lthn.ai/core/go-log"
coreerr "dappco.re/go/core/log"
)
// AgentConfig represents a single agent machine in the config file.

View file

@ -4,7 +4,7 @@ import (
"testing"
"forge.lthn.ai/core/config"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -6,7 +6,7 @@ import (
"regexp"
"strings"
coreerr "forge.lthn.ai/core/go-log"
coreerr "dappco.re/go/core/log"
)
var safeNameRegex = regexp.MustCompile(`^[a-zA-Z0-9\-\_\.]+$`)

View file

@ -4,9 +4,9 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
"dappco.re/go/core/io"
)
func init() {

View file

@ -5,8 +5,8 @@ import (
"strings"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// BitcoinTalk command flags

View file

@ -5,8 +5,8 @@ import (
"time"
"forge.lthn.ai/core/cli/pkg/cli"
collectpkg "forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
collectpkg "dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// addDispatchCommand adds the 'dispatch' subcommand to the collect parent.

View file

@ -5,8 +5,8 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// Excavate command flags

View file

@ -5,8 +5,8 @@ import (
"strings"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// GitHub command flags

View file

@ -4,8 +4,8 @@ import (
"context"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// Market command flags

View file

@ -4,8 +4,8 @@ import (
"context"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// Papers command flags

View file

@ -4,8 +4,8 @@ import (
"context"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/collect"
"forge.lthn.ai/core/go-i18n"
"dappco.re/go/core/scm/collect"
"dappco.re/go/core/i18n"
)
// addProcessCommand adds the 'process' subcommand to the collect parent.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Auth command flags.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Config command flags.

View file

@ -7,7 +7,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Issues command flags.

View file

@ -6,7 +6,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Labels command flags.

View file

@ -6,7 +6,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Migrate command flags.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// addOrgsCommand adds the 'orgs' subcommand for listing organisations.

View file

@ -7,7 +7,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// PRs command flags.

View file

@ -6,7 +6,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// Repos command flags.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
fg "forge.lthn.ai/core/go-scm/forge"
fg "dappco.re/go/core/scm/forge"
)
// addStatusCommand adds the 'status' subcommand for instance info.

View file

@ -10,8 +10,8 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/cli/pkg/cli"
coreerr "forge.lthn.ai/core/go-log"
fg "forge.lthn.ai/core/go-scm/forge"
coreerr "dappco.re/go/core/log"
fg "dappco.re/go/core/scm/forge"
)
// Sync command flags.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
gt "forge.lthn.ai/core/go-scm/gitea"
gt "dappco.re/go/core/scm/gitea"
)
// Config command flags.

View file

@ -7,7 +7,7 @@ import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/cli/pkg/cli"
gt "forge.lthn.ai/core/go-scm/gitea"
gt "dappco.re/go/core/scm/gitea"
)
// Issues command flags.

View file

@ -6,7 +6,7 @@ import (
"strings"
"forge.lthn.ai/core/cli/pkg/cli"
gt "forge.lthn.ai/core/go-scm/gitea"
gt "dappco.re/go/core/scm/gitea"
)
// Mirror command flags.

View file

@ -7,7 +7,7 @@ import (
sdk "code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/cli/pkg/cli"
gt "forge.lthn.ai/core/go-scm/gitea"
gt "dappco.re/go/core/scm/gitea"
)
// PRs command flags.

View file

@ -4,7 +4,7 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
gt "forge.lthn.ai/core/go-scm/gitea"
gt "dappco.re/go/core/scm/gitea"
)
// Repos command flags.

View file

@ -10,8 +10,8 @@ import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/cli/pkg/cli"
coreerr "forge.lthn.ai/core/go-log"
gt "forge.lthn.ai/core/go-scm/gitea"
coreerr "dappco.re/go/core/log"
gt "dappco.re/go/core/scm/gitea"
)
// Sync command flags.

View file

@ -7,8 +7,8 @@ import (
"strings"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-io"
"forge.lthn.ai/core/go-scm/manifest"
"dappco.re/go/core/io"
"dappco.re/go/core/scm/manifest"
)
func addCompileCommand(parent *cli.Command) {

View file

@ -4,8 +4,8 @@ import (
"fmt"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-io"
"forge.lthn.ai/core/go-scm/manifest"
"dappco.re/go/core/io"
"dappco.re/go/core/scm/manifest"
)
func addExportCommand(parent *cli.Command) {

View file

@ -5,7 +5,7 @@ import (
"path/filepath"
"forge.lthn.ai/core/cli/pkg/cli"
"forge.lthn.ai/core/go-scm/marketplace"
"dappco.re/go/core/scm/marketplace"
)
func addIndexCommand(parent *cli.Command) {

View file

@ -9,7 +9,7 @@ import (
"strings"
"time"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
"golang.org/x/net/html"
)

View file

@ -8,7 +8,7 @@ import (
"strings"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -4,7 +4,7 @@ import (
"context"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -8,7 +8,7 @@ import (
"context"
"path/filepath"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
)
// Collector is the interface all collection sources implement.

View file

@ -3,7 +3,7 @@ package collect
import (
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -8,7 +8,7 @@ import (
"testing"
"time"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -12,7 +12,7 @@ import (
"testing"
"time"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -5,7 +5,7 @@ import (
"fmt"
"time"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
)
// Excavator runs multiple collectors as a coordinated operation.

View file

@ -5,7 +5,7 @@ import (
"testing"
"time"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -5,7 +5,7 @@ import (
"fmt"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -9,7 +9,7 @@ import (
"strings"
"time"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
)
// ghIssue represents a GitHub issue or pull request as returned by the gh CLI.

View file

@ -5,7 +5,7 @@ import (
"testing"
"time"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -9,7 +9,7 @@ import (
"strings"
"time"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
)
// coinGeckoBaseURL is the base URL for the CoinGecko API.

View file

@ -7,7 +7,7 @@ import (
"net/http/httptest"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -7,7 +7,7 @@ import (
"net/http/httptest"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -10,7 +10,7 @@ import (
"path/filepath"
"strings"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
"golang.org/x/net/html"
)

View file

@ -7,7 +7,7 @@ import (
"strings"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/net/html"

View file

@ -4,7 +4,7 @@ import (
"context"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -9,7 +9,7 @@ import (
"slices"
"strings"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
"golang.org/x/net/html"
)

View file

@ -4,7 +4,7 @@ import (
"context"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -4,7 +4,7 @@ import (
"context"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -10,7 +10,7 @@ import (
"sync"
"time"
core "forge.lthn.ai/core/go-log"
core "dappco.re/go/core/log"
)
// RateLimiter tracks per-source rate limiting to avoid overwhelming APIs.

View file

@ -5,8 +5,8 @@ import (
"sync"
"time"
core "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-io"
core "dappco.re/go/core/log"
"dappco.re/go/core/io"
)
// State tracks collection progress for incremental runs.

View file

@ -3,7 +3,7 @@ package collect
import (
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -4,7 +4,7 @@ import (
"testing"
"time"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
)

View file

@ -21,7 +21,7 @@ description: How to build, test, and contribute to go-scm.
```
go-scm/
+-- go.mod Module definition (forge.lthn.ai/core/go-scm)
+-- go.mod Module definition (dappco.re/go/core/scm)
+-- forge/ Forgejo API client + tests
+-- gitea/ Gitea API client + tests
+-- git/ Multi-repo git operations + tests

View file

@ -7,7 +7,7 @@ description: SCM integration, AgentCI automation, and data collection for the Le
`go-scm` provides source control management integration for the Lethean ecosystem. It wraps the Forgejo and Gitea APIs behind ergonomic Go clients, runs an automated PR pipeline for AI agent workflows, collects data from external sources, and manages multi-repo workspaces via a declarative registry.
**Module path:** `forge.lthn.ai/core/go-scm`
**Module path:** `dappco.re/go/core/scm`
**Go version:** 1.26
**Licence:** EUPL-1.2
@ -16,7 +16,7 @@ description: SCM integration, AgentCI automation, and data collection for the Le
### Forgejo API Client
```go
import "forge.lthn.ai/core/go-scm/forge"
import "dappco.re/go/core/scm/forge"
// Create a client from config file / env / flags
client, err := forge.NewFromConfig("", "")
@ -35,7 +35,7 @@ for repo, err := range client.ListOrgReposIter("core") {
### Multi-Repo Git Status
```go
import "forge.lthn.ai/core/go-scm/git"
import "dappco.re/go/core/scm/git"
statuses := git.Status(ctx, git.StatusOptions{
Paths: []string{"/home/dev/core/go-scm", "/home/dev/core/go-ai"},
@ -53,9 +53,9 @@ for _, s := range statuses {
```go
import (
"forge.lthn.ai/core/go-scm/jobrunner"
"forge.lthn.ai/core/go-scm/jobrunner/forgejo"
"forge.lthn.ai/core/go-scm/jobrunner/handlers"
"dappco.re/go/core/scm/jobrunner"
"dappco.re/go/core/scm/jobrunner/forgejo"
"dappco.re/go/core/scm/jobrunner/handlers"
)
source := forgejo.New(forgejo.Config{Repos: []string{"core/go-scm"}}, forgeClient)
@ -74,7 +74,7 @@ poller.Run(ctx)
### Data Collection
```go
import "forge.lthn.ai/core/go-scm/collect"
import "dappco.re/go/core/scm/collect"
cfg := collect.NewConfig("/tmp/collected")
excavator := &collect.Excavator{
@ -118,9 +118,9 @@ result, err := excavator.Run(ctx, cfg)
| `code.gitea.io/sdk/gitea` | Gitea API SDK |
| `forge.lthn.ai/core/cli` | CLI framework (Cobra, TUI) |
| `forge.lthn.ai/core/config` | Layered config (`~/.core/config.yaml`) |
| `forge.lthn.ai/core/go-io` | Filesystem abstraction (Medium, Sandbox, Store) |
| `forge.lthn.ai/core/go-log` | Structured logging and contextual error helper |
| `forge.lthn.ai/core/go-i18n` | Internationalisation |
| `dappco.re/go/core/io` | Filesystem abstraction (Medium, Sandbox, Store) |
| `dappco.re/go/core/log` | Structured logging and contextual error helper |
| `dappco.re/go/core/i18n` | Internationalisation |
| `github.com/stretchr/testify` | Test assertions |
| `golang.org/x/net` | HTML parsing for collectors |
| `gopkg.in/yaml.v3` | YAML parsing for manifests and registries |

View file

@ -39,7 +39,7 @@ import (
"encoding/json"
"testing"
io "forge.lthn.ai/core/go-io"
io "dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -127,7 +127,7 @@ import (
"path/filepath"
"time"
io "forge.lthn.ai/core/go-io"
io "dappco.re/go/core/io"
)
// CompiledManifest is the core.json distribution format.
@ -217,7 +217,7 @@ package marketplace
import (
"testing"
io "forge.lthn.ai/core/go-io"
io "dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -318,8 +318,8 @@ import (
"fmt"
"sort"
io "forge.lthn.ai/core/go-io"
"forge.lthn.ai/core/go-scm/manifest"
io "dappco.re/go/core/io"
"dappco.re/go/core/scm/manifest"
)
// IndexOptions controls how the index is built.

View file

@ -11,7 +11,7 @@ package forge
import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// Client wraps the Forgejo SDK client with config-based auth.

View file

@ -4,7 +4,7 @@ import (
"os"
"forge.lthn.ai/core/config"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
const (

View file

@ -5,7 +5,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListIssuesOpts configures issue listing.

View file

@ -5,7 +5,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListOrgLabels returns all labels for repos in the given organisation.

View file

@ -5,7 +5,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// PRMeta holds structural signals from a pull request,

View file

@ -3,7 +3,7 @@ package forge
import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListMyOrgs returns all organisations for the authenticated user.

View file

@ -8,7 +8,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// MergePullRequest merges a pull request with the given method ("squash", "rebase", "merge").

View file

@ -5,7 +5,7 @@ import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListOrgRepos returns all repositories for the given organisation.

View file

@ -3,7 +3,7 @@ package forge
import (
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// CreateRepoWebhook creates a webhook on a repository.

View file

@ -11,7 +11,7 @@ package gitea
import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// Client wraps the Gitea SDK client with config-based auth.

View file

@ -4,7 +4,7 @@ import (
"os"
"forge.lthn.ai/core/config"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
const (

View file

@ -5,7 +5,7 @@ import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListIssuesOpts configures issue listing.

View file

@ -5,7 +5,7 @@ import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// PRMeta holds structural signals from a pull request,

View file

@ -5,7 +5,7 @@ import (
"code.gitea.io/sdk/gitea"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// ListOrgRepos returns all repositories for the given organisation.

31
go.mod
View file

@ -1,4 +1,4 @@
module forge.lthn.ai/core/go-scm
module dappco.re/go/core/scm
go 1.26.0
@ -6,13 +6,13 @@ require (
code.gitea.io/sdk/gitea v0.23.2
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0
dappco.re/go/core v0.4.7
forge.lthn.ai/core/api v0.1.5
dappco.re/go/core/api v0.1.5
dappco.re/go/core/i18n v0.1.7
dappco.re/go/core/io v0.1.7
dappco.re/go/core/log v0.0.4
dappco.re/go/core/ws v0.2.5
forge.lthn.ai/core/cli v0.3.7
forge.lthn.ai/core/config v0.1.8
forge.lthn.ai/core/go-i18n v0.1.7
forge.lthn.ai/core/go-io v0.1.7
forge.lthn.ai/core/go-log v0.0.4
forge.lthn.ai/core/go-ws v0.2.5
github.com/gin-gonic/gin v1.12.0
github.com/stretchr/testify v1.11.1
golang.org/x/net v0.52.0
@ -20,8 +20,11 @@ require (
)
require (
forge.lthn.ai/core/go v0.3.3 // indirect
forge.lthn.ai/core/go-inference v0.1.6 // indirect
forge.lthn.ai/core/go v0.3.2 // indirect
forge.lthn.ai/core/go-i18n v0.1.7 // indirect
forge.lthn.ai/core/go-inference v0.1.7 // indirect
forge.lthn.ai/core/go-io v0.1.5 // indirect
forge.lthn.ai/core/go-log v0.0.4 // indirect
github.com/42wim/httpsig v1.2.3 // indirect
github.com/99designs/gqlgen v0.17.88 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
@ -152,3 +155,15 @@ require (
modernc.org/memory v1.11.0 // indirect
modernc.org/sqlite v1.47.0 // indirect
)
replace (
dappco.re/go/core => ../go
dappco.re/go/core/api => ../api
dappco.re/go/core/i18n => ../go-i18n
dappco.re/go/core/io => ../go-io
dappco.re/go/core/log => ../go-log
dappco.re/go/core/ws => ../go-ws
forge.lthn.ai/core/cli => ../cli
forge.lthn.ai/core/config => ../config
forge.lthn.ai/core/go-inference => ../go-inference
)

20
go.sum
View file

@ -2,26 +2,14 @@ code.gitea.io/sdk/gitea v0.23.2 h1:iJB1FDmLegwfwjX8gotBDHdPSbk/ZR8V9VmEJaVsJYg=
code.gitea.io/sdk/gitea v0.23.2/go.mod h1:yyF5+GhljqvA30sRDreoyHILruNiy4ASufugzYg0VHM=
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0 h1:HTCWpzyWQOHDWt3LzI6/d2jvUDsw/vgGRWm/8BTvcqI=
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0/go.mod h1:ZglEEDj+qkxYUb+SQIeqGtFxQrbaMYqIOgahNKb7uxs=
dappco.re/go/core v0.4.7 h1:KmIA/2lo6rl1NMtLrKqCWfMlUqpDZYH3q0/d10dTtGA=
dappco.re/go/core v0.4.7/go.mod h1:f2/tBZ3+3IqDrg2F5F598llv0nmb/4gJVCFzM5geE4A=
forge.lthn.ai/core/api v0.1.5 h1:NwZrcOyBjaiz5/cn0n0tnlMUodi8Or6FHMx59C7Kv2o=
forge.lthn.ai/core/api v0.1.5/go.mod h1:PBnaWyOVXSOGy+0x2XAPUFMYJxQ2CNhppia/D06ZPII=
forge.lthn.ai/core/cli v0.3.7 h1:1GrbaGg0wDGHr6+klSbbGyN/9sSbHvFbdySJznymhwg=
forge.lthn.ai/core/cli v0.3.7/go.mod h1:DBUppJkA9P45ZFGgI2B8VXw1rAZxamHoI/KG7fRvTNs=
forge.lthn.ai/core/config v0.1.8 h1:xP2hys7T94QGVF/OTh84/Zr5Dm/dL/0vzjht8zi+LOg=
forge.lthn.ai/core/config v0.1.8/go.mod h1:8epZrkwoCt+5ayrqdinOUU/+w6UoxOyv9ZrdgVOgYfQ=
forge.lthn.ai/core/go v0.3.3 h1:kYYZ2nRYy0/Be3cyuLJspRjLqTMxpckVyhb/7Sw2gd0=
forge.lthn.ai/core/go v0.3.3/go.mod h1:Cp4ac25pghvO2iqOu59t1GyngTKVOzKB5/VPdhRi9CQ=
forge.lthn.ai/core/go v0.3.2 h1:VB9pW6ggqBhe438cjfE2iSI5Lg+62MmRbaOFglZM+nQ=
forge.lthn.ai/core/go v0.3.2/go.mod h1:f7/zb3Labn4ARfwTq5Bi2AFHY+uxyPHozO+hLb54eFo=
forge.lthn.ai/core/go-i18n v0.1.7 h1:aHkAoc3W8fw3RPNvw/UszQbjyFWXHszzbZgty3SwyAA=
forge.lthn.ai/core/go-i18n v0.1.7/go.mod h1:0VDjwtY99NSj2iqwrI09h5GUsJeM9s48MLkr+/Dn4G8=
forge.lthn.ai/core/go-inference v0.1.6 h1:ce42zC0zO8PuISUyAukAN1NACEdWp5wF1mRgnh5+58E=
forge.lthn.ai/core/go-inference v0.1.6/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw=
forge.lthn.ai/core/go-io v0.1.7 h1:Tdb6sqh+zz1lsGJaNX9RFWM6MJ/RhSAyxfulLXrJsbk=
forge.lthn.ai/core/go-io v0.1.7/go.mod h1:8lRLFk4Dnp5cR/Cyzh9WclD5566TbpdRgwcH7UZLWn4=
forge.lthn.ai/core/go-io v0.1.5 h1:+XJ1YhaGGFLGtcNbPtVlndTjk+pO0Ydi2hRDj5/cHOM=
forge.lthn.ai/core/go-io v0.1.5/go.mod h1:FRtXSsi8W+U9vewCU+LBAqqbIj3wjXA4dBdSv3SAtWI=
forge.lthn.ai/core/go-log v0.0.4 h1:KTuCEPgFmuM8KJfnyQ8vPOU1Jg654W74h8IJvfQMfv0=
forge.lthn.ai/core/go-log v0.0.4/go.mod h1:r14MXKOD3LF/sI8XUJQhRk/SZHBE7jAFVuCfgkXoZPw=
forge.lthn.ai/core/go-ws v0.2.5 h1:ZIV7Yrv01R/xpJUogA5vrfP9yB9li1w7EV3eZFMt8h0=
forge.lthn.ai/core/go-ws v0.2.5/go.mod h1:C3riJyLLcV6QhLvYlq3P/XkGTsN598qQeGBoLdoHBU4=
github.com/42wim/httpsig v1.2.3 h1:xb0YyWhkYj57SPtfSttIobJUPJZB9as1nsfo7KWVcEs=
github.com/42wim/httpsig v1.2.3/go.mod h1:nZq9OlYKDrUBhptd77IHx4/sZZD+IxTBADvAPI9G/EM=
github.com/99designs/gqlgen v0.17.88 h1:neMQDgehMwT1vYIOx/w5ZYPUU/iMNAJzRO44I5Intoc=

View file

@ -6,7 +6,7 @@ import (
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
// epicChildRe matches checklist items: - [ ] #42 or - [x] #42

View file

@ -5,9 +5,9 @@ import (
"fmt"
"strings"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
"dappco.re/go/core/log"
)
// Config configures a ForgejoSource.

View file

@ -11,8 +11,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// withVersion wraps an HTTP handler to serve the Forgejo /api/v1/version

View file

@ -5,9 +5,9 @@ import (
"fmt"
"time"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
const (

View file

@ -8,10 +8,10 @@ import (
"path/filepath"
"time"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-scm/agentci"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/scm/agentci"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
const (

View file

@ -7,8 +7,8 @@ import (
"net/http/httptest"
"testing"
"forge.lthn.ai/core/go-scm/agentci"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/agentci"
"dappco.re/go/core/scm/jobrunner"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -5,8 +5,8 @@ import (
"fmt"
"time"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// EnableAutoMergeHandler merges a PR that is ready using squash strategy.

View file

@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
func TestEnableAutoMerge_Match_Good(t *testing.T) {

View file

@ -5,8 +5,8 @@ import (
"fmt"
"time"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// PublishDraftHandler marks a draft PR as ready for review once its checks pass.

View file

@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
func TestPublishDraft_Match_Good(t *testing.T) {

View file

@ -7,9 +7,9 @@ import (
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// DismissReviewsHandler dismisses stale "request changes" reviews on a PR.

View file

@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
func TestDismissReviews_Match_Good(t *testing.T) {

View file

@ -5,8 +5,8 @@ import (
"fmt"
"time"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// SendFixCommandHandler posts a comment on a PR asking for conflict or

View file

@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
func TestSendFixCommand_Match_Good_Conflicting(t *testing.T) {

View file

@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/forge"
"dappco.re/go/core/scm/forge"
)
// forgejoVersionResponse is the JSON response for /api/v1/version.

View file

@ -8,9 +8,9 @@ import (
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-scm/forge"
"forge.lthn.ai/core/go-scm/jobrunner"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/scm/forge"
"dappco.re/go/core/scm/jobrunner"
)
// TickParentHandler ticks a child checkbox in the parent epic issue body

View file

@ -12,7 +12,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"forge.lthn.ai/core/go-scm/jobrunner"
"dappco.re/go/core/scm/jobrunner"
)
func TestTickParent_Match_Good(t *testing.T) {

View file

@ -8,8 +8,8 @@ import (
"strings"
"sync"
coreerr "forge.lthn.ai/core/go-log"
coreio "forge.lthn.ai/core/go-io"
coreerr "dappco.re/go/core/log"
coreio "dappco.re/go/core/io"
)
// validPathComponent matches safe repo owner/name characters (alphanumeric, hyphen, underscore, dot).

View file

@ -5,7 +5,7 @@ import (
"sync"
"time"
"forge.lthn.ai/core/go-log"
"dappco.re/go/core/log"
)
// PollerConfig configures a Poller.

View file

@ -6,8 +6,8 @@ import (
"path/filepath"
"time"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-io"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/io"
)
// CompiledManifest is the distribution-ready form of a manifest, written as

View file

@ -6,7 +6,7 @@ import (
"encoding/json"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

View file

@ -4,8 +4,8 @@ import (
"crypto/ed25519"
"path/filepath"
coreerr "forge.lthn.ai/core/go-log"
"forge.lthn.ai/core/go-io"
coreerr "dappco.re/go/core/log"
"dappco.re/go/core/io"
"gopkg.in/yaml.v3"
)

View file

@ -4,7 +4,7 @@ import (
"crypto/ed25519"
"testing"
"forge.lthn.ai/core/go-io"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

Some files were not shown because too many files have changed in this diff Show more