Commit graph

101 commits

Author SHA1 Message Date
Virgil
94c5870c46 feat(forge): add repo webhook iterator
Some checks failed
Security Scan / security (push) Failing after 13s
Test / test (push) Successful in 2m27s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 07:35:26 +00:00
Virgil
0193bd50ea feat(scm): add issue iterators
Some checks failed
Security Scan / security (push) Failing after 11s
Test / test (push) Successful in 2m18s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 07:23:21 +00:00
Virgil
64042ac8a6 feat(gitea): generalise mirror creation
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m20s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 07:15:44 +00:00
Virgil
f2c9cb39d0 fix(agentci): split path sanitising and validation
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 07:09:27 +00:00
Virgil
ec8149efbe feat(marketplace): index root directories
Some checks failed
Security Scan / security (push) Failing after 12s
Test / test (push) Successful in 2m14s
Include the directories passed to BuildFromDirs before scanning children so scm index . handles a manifest at the root of the scanned directory.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:59:57 +00:00
Virgil
2e188e346a feat(agentci): add context-aware ssh command helper
Some checks failed
Security Scan / security (push) Failing after 11s
Test / test (push) Successful in 2m15s
Thread dispatch SSH subprocesses through the caller context so cancellation applies to ticket transfer, remote cleanup, and existence checks.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:53:33 +00:00
Virgil
8021e5e2cb fix(scm): paginate issue listings
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m13s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:47:34 +00:00
Virgil
6233664c5d fix(pkg/api): combine marketplace query and category filters
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 2m9s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:40:27 +00:00
Virgil
369103f8dc feat(pkg/api): list registry repos in dependency order
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m8s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:32:16 +00:00
Virgil
89925a0e83 feat(marketplace): emit clone URLs in indexes
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 2m8s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:24:22 +00:00
Virgil
2f4d2e5811 feat(jobrunner): add journal replay query
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 5m2s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:14:28 +00:00
Virgil
b2bbc11746 feat(marketplace): propagate signing keys in indexes
Some checks failed
Security Scan / security (push) Failing after 12s
Test / test (push) Successful in 2m11s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:09:07 +00:00
Virgil
1f98d7ab8a feat(marketplace): add category-aware index builder
Some checks failed
Security Scan / security (push) Failing after 11s
Test / test (push) Successful in 2m11s
Propagate category metadata while building marketplace indexes and deduplicate the category list for consumers such as the UI.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:03:23 +00:00
Virgil
82c25469e8 feat(pkg/api): refresh marketplace index
Some checks failed
Security Scan / security (push) Failing after 12s
Test / test (push) Successful in 1m55s
Add marketplace index loading and a provider endpoint to refresh the in-memory catalogue from index.json.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 05:41:05 +00:00
Virgil
5a53d244cc feat(forge): aggregate org labels across repos
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 2m17s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 05:11:34 +00:00
Virgil
976d20c02f feat(jobrunner): resolve dispatch target branch
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m12s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 04:45:40 +00:00
Virgil
a0fac1341b chore(ax): add usage docs to exported APIs
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m11s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-30 14:11:15 +00:00
Virgil
dd59b177c6 chore(ax): normalise test naming and usage annotations
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m2s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-30 06:37:20 +00:00
Claude
a6c15980a3 chore: update dependencies to dappco.re tagged versions
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 2m0s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 06:19:54 +00:00
Virgil
c42cc4a6ce chore(ax): gofmt exported declaration comments
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 2m4s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-30 05:44:09 +00:00
Virgil
305aa0da6f chore(ax): normalize SPDX header identifier
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Successful in 4m12s
2026-03-30 00:54:20 +00:00
Virgil
5f73d41184 chore(ax): add SPDX headers to remaining Go files
Some checks failed
Security Scan / security (push) Failing after 15s
Test / test (push) Failing after 29s
2026-03-30 00:19:43 +00:00
Virgil
d5f98c1341 refactor(ax): align code with AX principles
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Failing after 25s
2026-03-29 23:59:48 +00:00
Claude
2dcb86738a
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>
2026-03-21 23:54:23 +00:00
ea1827284a Merge pull request '[agent/claude] Update all Go files that import forge.lthn.ai/core/go or for...' (#5) from agent/update-all-go-files-that-import-forge-lt into main
Some checks failed
Security Scan / security (push) Failing after 13s
Test / test (push) Successful in 4m30s
2026-03-21 12:04:59 +00:00
Snider
bae46c8393 refactor: migrate core import to dappco.re/go/core
Some checks failed
Security Scan / security (pull_request) Failing after 9s
Test / test (pull_request) Successful in 4m45s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-21 12:04:48 +00:00
Snider
1fce30e3b2 chore: sync dependencies for v0.3.6
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:53:23 +00:00
Snider
9b3308a38f chore: sync dependencies for v0.3.5
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:48:31 +00:00
74f5ee47e2 Merge pull request '[agent/claude:opus] DX audit and fix. 1) Review CLAUDE.md — update any outdate...' (#3) from agent/dx-audit-and-fix--1--review-claude-md into main
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Successful in 1m44s
2026-03-17 08:50:12 +00:00
Snider
10c9e23e04 fix(dx): repair build, update CLAUDE.md, add tests for untested paths
Some checks failed
Security Scan / security (pull_request) Failing after 9s
Test / test (pull_request) Successful in 1m44s
- Fix cmd/forge build failure: remove extra locales.FS arg from
  RegisterCommands (signature takes single CommandRegistration)
- Update CLAUDE.md error handling section to document coreerr.E()
  pattern (was outdated log.E/fmt.Errorf reference)
- Add security_test.go for agentci: SanitizePath, EscapeShellArg,
  SecureSSHCommand, MaskToken (coverage 56% → 68%)
- Add provider_handlers_test.go for pkg/api: category filter, nil
  guards, manifest/verify/sign bad requests (coverage 31% → 52%)
- Audit confirms: no fmt.Errorf or os.ReadFile/WriteFile in production
  code (only in test files)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:49:55 +00:00
Snider
9de597a8b0 refactor: pass locales via RegisterCommands, remove direct i18n import
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 47s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 01:38:51 +00:00
Snider
8367a5323c feat: embed and load locale translations on init
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 39s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 00:45:34 +00:00
Snider
223c41dfdf feat: add en-GB locale file for CLI commands
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Successful in 1m49s
33 translation keys for collect, forge, gitea commands.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 00:32:43 +00:00
Snider
8a65670268 chore: sync dependencies for v0.3.4
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Successful in 4m4s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:18:01 +00:00
Snider
e9fc6902b1 refactor: replace fmt.Errorf/errors.New with coreerr.E()
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Successful in 1m57s
Replace all remaining fmt.Errorf and errors.New calls in production
code with coreerr.E("caller.Method", "message", err) from go-log.
This standardises error handling across 23 files using the structured
error convention already established in the plugin package.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 20:37:25 +00:00
Snider
c2c54f1abb refactor(marketplace,jobrunner): replace os.ReadFile/WriteFile/MkdirAll with go-io Medium
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 1m42s
Replace all os.ReadFile, os.WriteFile, and os.MkdirAll calls in
marketplace/discovery.go, marketplace/builder.go, and jobrunner/journal.go
with coreio.Local equivalents (Read, Write, EnsureDir).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 18:31:35 +00:00
Snider
caaece78e6 chore: sync go.mod dependencies
Some checks failed
Security Scan / security (push) Failing after 7s
Test / test (push) Successful in 4m50s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:37:30 +00:00
Snider
d752da473b chore: bump forge deps (core/go v0.3.1, go-io v0.1.2, config v0.1.2)
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 3m58s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:17:28 +00:00
Snider
871f5583d2 docs: add manifest core.json implementation plan
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Failing after 3m28s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:11:02 +00:00
Snider
c666c2df43 Merge remote-tracking branch 'origin/agent/replace-raw-filepath-join-and-os-readfil'
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Has been cancelled
2026-03-15 15:09:24 +00:00
Snider
cc4b78d38a Merge remote-tracking branch 'origin/agent/implement-manifest-compile-and-marketpla' 2026-03-15 15:09:21 +00:00
Snider
5799bd4338 refactor(marketplace): replace raw os calls with go-io Medium in Installer
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>
2026-03-15 14:50:08 +00:00
Snider
631ddd4887 feat(manifest): add compile step and marketplace index builder
Some checks failed
Security Scan / security (push) Failing after 7s
Test / test (push) Failing after 2m47s
Add manifest compilation (.core/manifest.yaml → core.json) with build
metadata (commit, tag, timestamp, signature) and marketplace index
generation by crawling directories for compiled or source manifests.

New files:
- manifest/compile.go: CompiledManifest, Compile(), ParseCompiled(),
  WriteCompiled(), LoadCompiled(), MarshalJSON()
- marketplace/builder.go: Builder.BuildFromDirs(), BuildFromManifests(),
  WriteIndex()
- cmd/scm/: CLI commands — compile, index, export

Tests: 26 new (12 manifest, 14 marketplace), all passing.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 14:12:52 +00:00
Snider
9806bbeb4c feat(manifest): add compile step and marketplace index builder
Add manifest compilation (.core/manifest.yaml → core.json) with build
metadata (commit, tag, timestamp, signature) and marketplace index
generation by crawling directories for compiled or source manifests.

New files:
- manifest/compile.go: CompiledManifest, Compile(), ParseCompiled(),
  WriteCompiled(), LoadCompiled(), MarshalJSON()
- marketplace/builder.go: Builder.BuildFromDirs(), BuildFromManifests(),
  WriteIndex()
- cmd/scm/: CLI commands — compile, index, export

Tests: 26 new (12 manifest, 14 marketplace), all passing.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 13:45:24 +00:00
Snider
b89228030b chore: add .core/ and .idea/ to .gitignore
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 3m9s
2026-03-15 10:17:50 +00:00
Snider
7c8cd0fe70 fix: update stale import paths and dependency versions from extraction
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Failing after 2m56s
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>
2026-03-14 13:38:59 +00:00
Snider
dc1790f12b feat(marketplace): add provider discovery and registry
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 1m19s
Extend Manifest with provider fields (namespace, port, binary, args, element,
spec) and add IsProvider() helper. New DiscoverProviders() scans directories
for runtime provider manifests. ProviderRegistryFile handles registry.yaml
read/write for tracking installed providers. Includes 20 tests.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 12:22:37 +00:00
Snider
81deee8598 feat(api): add SCM service provider with Lit custom elements
Some checks failed
Security Scan / security (push) Failing after 7s
Test / test (push) Failing after 1m16s
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>
2026-03-14 10:42:37 +00:00
Snider
e7db4b163f refactor: update import path from go-config to core/config
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 1m19s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:26:01 +00:00
Snider
e5f4bbbe80 docs: add CLAUDE.md project instructions
Some checks failed
Security Scan / security (push) Failing after 10s
Test / test (push) Failing after 1m12s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:38:02 +00:00