DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

GooDAnDReaDY /

GooDAnDReaDY/dsh-gitea

Verified

Gitea/Forgejo toolkit for DeepSeek Harness: issues, PRs, CI, releases, operations

★ 1 Stars1 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@3f9a8307

📦 @goodandready/dsh-gitea

Enterprise Gitea & Forgejo Integration Suite for DeepSeek Harness

npm version license DSH Plugin Node version

All Author Projects

🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明


⚡ Overview & Problem Solved

When autonomous AI coding agents perform complex multi-step development in DeepSeek Harness, they require seamless access to issue trackers, pull request review workflows, branch creation, and isolated workspace worktrees without risking repository corruption or leaking credentials into chat logs.

@goodandready/dsh-gitea bridges DeepSeek Harness to self-hosted Gitea and Forgejo instances. It equips agents with a complete suite of 20+ structured tools, registers a live Git Status Chip directly in the Web UI chat header, and enforces safety rails (confirm: true merge guards and dedicated write wrappers).


🏗️ Architecture

graph LR
    subgraph DSH ["DeepSeek Harness"]
        UI["Web UI Chat Header<br/>(Git Status Chip)"]
        Agent["Autonomous Agent<br/>(20+ Gitea Tools)"]
        Creds["Credentials Store<br/>(GITEA_TOKEN Ref)"]
    end

    subgraph Plugin ["dsh-gitea Plugin"]
        ChipPoller["/git-status API<br/>Branch & Diff Inspector"]
        Client["GiteaClient<br/>(REST API v1)"]
        WorktreeMgr["Worktree Manager<br/>(Isolated Task Trees)"]
    end

    subgraph Server ["Self-Hosted VCS"]
        Gitea["Gitea / Forgejo Server<br/>(Issues, PRs, Labels, Milestones)"]
        GitRepo["Git Repository<br/>(Worktrees & Remotes)"]
    end

    UI -->|Polls Status| ChipPoller
    ChipPoller -->|Reads Status| GitRepo
    Agent -->|Executes Tools| Client
    Agent -->|Manages Branches| WorktreeMgr
    WorktreeMgr -->|git worktree| GitRepo
    Client -->|Authenticated REST| Gitea
    Creds -.->|Resolves In-Memory| Client

✨ Full Feature Breakdown

1. 20+ Agent Tools Suite

All tools infer owner and repo automatically from the active workspace's git remote get-url origin when omitted by the agent.

Tool Name Scope Description Safety Requirements
gitea_labels Labels Consolidated label facade: list, create, delete, set -
gitea_milestones Milestones Consolidated milestone facade: list, create, update, delete ⚠️ Delete requires confirm: true
gitea_releases Releases Consolidated release facade: list, create, update, delete, plan, notes ⚠️ Delete requires confirm: true
gitea_ci CI / Actions Consolidated CI facade: status, jobs, rerun, explain ⚠️ Rerun requires confirm: true
gitea_branches Branches Consolidated branch facade: list, create, delete ⚠️ Delete requires confirm: true
gitea_tags Tags Consolidated tag facade: list, create, delete ⚠️ Delete requires confirm: true
gitea_webhooks Webhooks Consolidated webhook facade: list, create, delete ⚠️ Delete requires confirm: true
gitea_org Org & Teams Consolidated organization facade: list, repos, members, teams, create_repo -
gitea_wiki Wiki Consolidated wiki facade: list, get -
gitea_issue_create Issues Creates a new issue with title, body, labels, and assignees -
gitea_issue_list Issues Lists issues with state (open/closed), milestone, and label filters -
gitea_issue_get Issues Fetches detailed issue data by issue index -
gitea_issue_comment Issues Posts comments, progress updates, and code reviews -
gitea_issue_update Issues Updates issue title, body, or status -
gitea_issue_close Issues Closes an issue -
gitea_issue_search Issues Full-text issue query across the repository/instance -
gitea_issue_set_assignee Team Assigns developers or agents to issues -
gitea_pr_create Pull Requests Opens PR from source branch to base branch -
gitea_pr_list Pull Requests Lists open and closed pull requests -
gitea_pr_get Pull Requests Fetches PR diff summary, reviews, and status -
gitea_pr_comment Pull Requests Adds line comments and general PR feedback -
gitea_pr_merge Pull Requests Merges PR via merge/rebase/squash ⚠️ Requires confirm: true
gitea_pr_rebase Pull Requests Auto-rebase PR branch on fresh main (conflicts reported) ⚠️ Requires confirm: true
gitea_worktree_list Worktrees Lists active git worktrees and branch paths -
gitea_worktree_add Worktrees Creates an isolated worktree for concurrent tasks -
gitea_worktree_use Worktrees Switches session context to a worktree directory -
gitea_worktree_remove Worktrees Prunes and deletes completed worktrees ⚠️ Requires confirm: true
gitea_issue_templates Issues Lists and validates standardized Gitea YAML issue templates from .gitea/ISSUE_TEMPLATE -
gitea_git_graph Git & Graph Visual topological commit graph with monospace lanes, branch/tag refs, and CI statuses -
gitea_code_search Discovery Server-side code search across a repo (Gitea API; prefer local codegraph/fff when cloned) -
gitea_repo_search Discovery Searches repositories across the Gitea instance -
gitea_flavor Discovery Detect gitea/forgejo flavor + feature notes -
gitea_whoami Auth Returns authenticated user details and permissions -

(Note: Legacy individual tool names such as gitea_label_list, gitea_release_now, gitea_ci_explain, etc. remain 100% supported via automatic backward compatibility mapping).


2. Per-branch PR templates

When creating a PR via issue-flow without an explicit body, the plugin fills a template by branch type: feat/, fix/, docs/, chore/, refactor/.

3. Live Git Status Chip & Topological Commit Graph

The client component injects a real-time Git Status Chip into the DSH Web UI chat header:

  • Active Repository & Branch: Displays current branch name (e.g., feature/issue-42-auth).
  • Tree Cleanliness: Color-coded badges indicating clean vs dirty working trees and modified files count.
  • Ahead/Behind Sync Badges: Real-time sync indicator (↑ahead, ↓behind) relative to upstream or origin/<branch>.
  • Topological Commit Graph Modal: Monospace branch/merge lane visualization (●, ◆, │), commit links to Gitea Web UI, branch and tag badges, and live Gitea Actions CI statuses (CI ✓, CI ✗, CI ●).
  • Cross-Tab Synchronization: Efficient multi-tab coordination using navigator.locks leader election and BroadcastChannel, eliminating duplicate network polling.
  • Uncommitted Diff Inspector: 1-click panel showing recent commits and uncommitted diff.

3. Worktree Isolation & Agent Safety Rails

To allow autonomous agents to work on multiple issues without touching the primary branch:

  • Non-destructive Worktrees: Creates worktree paths under .worktrees/issue-<id>/ or custom directories.
  • Confirm Guard Matrix: Destructive operations like gitea_pr_merge and gitea_worktree_remove strictly require explicit boolean confirm: true. Unconfirmed tool calls are automatically rejected.
  • Git Wrapper Enforcement: Write operations can be routed through a dedicated wrapper (gitWrapper, e.g., git-deepseek-harness) to enforce agent author signatures.

4. Gitea Issue Templates Pack

Includes standardized Gitea YAML issue templates under .gitea/ISSUE_TEMPLATE/:

Template File Purpose Recommended Starter Labels
bug.yaml Bug report type/bug, status/ready
feature.yaml Feature proposal type/feature, status/ready
security.yaml Security vulnerability type/security, priority/high, scope/security
research.yaml Architectural research / spike type/research, status/ready
tech-debt.yaml Technical debt & refactoring type/tech-debt, status/ready
incident.yaml Production incident report type/incident, priority/critical
config-change.yaml Infrastructure & config change type/refactor, scope/settings, status/ready

📦 Installation

Install via DeepSeek Harness CLI:

dsh plugin --profile web add @goodandready/dsh-gitea

Restart DSH Web UI and perform a hard-refresh (Ctrl+F5 or Cmd+Shift+R).


⚙️ Configuration

Navigate to Settings -> Plugins -> Gitea:

# config.yaml
dsh-gitea:
  baseUrl: "https://gitea.yourcompany.com"
  tokenEnv: "GITEA_TOKEN"
  gitWrapper: ""
  timeoutMs: 15000

Settings Reference Table

The plugin settings card in Settings -> Plugins -> Gitea organizes all 17 schema options into intuitive Core and Advanced sections:

Key Type Default Section Description
baseUrl string "" Core Base URL of your Gitea or Forgejo instance (e.g. https://gitea.example.com)
tokenEnv string "GITEA_TOKEN" Core Name of the DSH Credential containing the personal access token
defaultOwner string "" Core Default organization or user when tool calls omit owner
defaultRepo string "" Core Default repository name when tool calls omit repo
gitWrapper string "" Advanced (Git) Optional executable wrapper for write operations (e.g. git-dsh)
dodReminder boolean false Advanced (Git) Definition of Done reminder if a tool changes git files without referencing an issue/PR
forceHttpsUrls boolean false Advanced (Git) Rewrite http:// links to https:// behind an HTTPS reverse proxy
timeoutMs number 30000 Advanced (Git) HTTP request timeout in milliseconds (default 30000)
webhookSecretEnv string "" Advanced (Webhooks) DSH Credential name holding secret to verify incoming X-Gitea-Signature
webhookSecret string "" N/A Deprecated: use webhookSecretEnv credential ref. Kept for backwards compatibility
notifyWebhook string "" Advanced (Webhooks) External webhook URL for push notifications on PR and CI failures
bgSchedulerEnabled boolean false Advanced (Scheduler) Enable background triage/health checks and digest event logging
bgSchedulerIntervalMin number 60 Advanced (Scheduler) Background check interval in minutes (default 60)
bgSchedulerOwner string "" Advanced (Scheduler) Target owner for background triage (defaults to defaultOwner if empty)
bgSchedulerRepo string "" Advanced (Scheduler) Target repo for background triage (defaults to defaultRepo if empty)
bgSchedulerWebhook string "" Advanced (Scheduler) Optional webhook URL to deliver triage digests to external channel
instances array [] Advanced (Instances) Additional Gitea instances (name, baseUrl, tokenEnv) configured via profile

[!IMPORTANT] Never put the raw API token in the tokenEnv field. Store the token securely in DSH Credentials and enter only its reference key name.


🔒 HTTPS and mixed content

When DSH is served over HTTPS, embedded Gitea pages must also be HTTPS or the browser blocks them (mixed content). Requirements:

  • Configure Gitea behind HTTPS (or a reverse proxy) and set Instance URL to the HTTPS endpoint — then generated links are already HTTPS.
  • If Gitea only answers HTTP while DSH is HTTPS, the Settings card shows a warning. Optionally enable forceHttpsUrls to rewrite http:// links to https:// in tool results when Gitea sits behind an HTTPS reverse proxy that accepts both schemes.
  • Never disable the browser's mixed-content protections.

🛠️ Reliability, Webhooks & Multi-Platform Support

Added in v0.4.3:

  • Webhook Delivery: gitea_digest_delivery and push notification dispatchers use fully-formed HTTP POST JSON requests with standard headers, ensuring delivery to Slack, Discord, Telegram, or custom webhook endpoints.
  • Cross-Platform Path Resolution: Seamless operation across both POSIX (Linux/macOS) and Windows file systems, normalizing path separators and handling drive letters transparently.
  • Accurate Merge Analytics: gitea_repo_analytics accurately detects merged pull requests matching Gitea's REST API merged: true specifications.
  • Branch & Path Policy Checking: gitea_pr_policy reliably parses requiredChecks rules alongside protected branch paths from YAML configuration files.
  • Autonomous Tool Routing: Non-repository tools (gitea_repo_create_org, gitea_repo_bootstrap, gitea_digest_delivery) execute cleanly without requiring an active local Git repository origin.

🧪 Testing & Verification

Run the comprehensive unit and integration test suite:

npm test

📄 License

MIT © GooDAnDReaDY

—/ 5

No ratings yet

Verified DSH bundle

Commit 3f9a83077643

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout