feat: deep-agent canvas, live observability, and multi-environment tooling
Self-hosted platform for building, testing, and shipping LangChain/LangGraph agents. Deep-agent sub-agents on the canvas, a live tracing/observability timeline, auto-provisioned built-in tools with import/export, per-environment tool variables, streamed evaluations, and per-user auth token forwarding.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Report something that isn't working as expected
|
||||
title: "[bug] "
|
||||
labels: bug
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what's wrong.
|
||||
|
||||
**To reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '…'
|
||||
2. Configure '…'
|
||||
3. Run '…'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
What you expected to happen.
|
||||
|
||||
**Screenshots / logs**
|
||||
If applicable, add screenshots or relevant log output. **Redact any secrets, tokens, or
|
||||
customer data.**
|
||||
|
||||
**Environment**
|
||||
- Forge version / commit SHA:
|
||||
- Deployment: local (SQLite) / Docker (Postgres) / other
|
||||
- OS & browser (for console issues):
|
||||
- Python / Node version (for local dev):
|
||||
|
||||
**Additional context**
|
||||
Anything else that might help — workflow/tool config (redacted), provider, etc.
|
||||
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 🔒 Report a security vulnerability
|
||||
url: https://github.com/nihalashetty/Forge/security/advisories/new
|
||||
about: Please report vulnerabilities privately via a GitHub Security Advisory, not a public issue.
|
||||
- name: 💬 Questions & discussion
|
||||
url: https://github.com/nihalashetty/Forge/discussions
|
||||
about: Ask questions and share ideas with the community.
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea or improvement
|
||||
title: "[feat] "
|
||||
labels: enhancement
|
||||
---
|
||||
|
||||
**What problem are you trying to solve?**
|
||||
A clear description of the use case or pain point. "I'm always frustrated when …"
|
||||
|
||||
**Proposed solution**
|
||||
What you'd like Forge to do.
|
||||
|
||||
**Alternatives considered**
|
||||
Other approaches or workarounds you've thought about.
|
||||
|
||||
**Additional context**
|
||||
Mockups, links, related nodes/tools, or examples. Check the
|
||||
[roadmap](../../docs/ROADMAP.md) first — it may already be planned.
|
||||
@@ -0,0 +1,27 @@
|
||||
<!-- Thanks for contributing to Forge! Please fill this out to speed up review. -->
|
||||
|
||||
## What & why
|
||||
|
||||
<!-- What does this change do, and what problem does it solve? Link the issue: Closes #123 -->
|
||||
|
||||
## Type of change
|
||||
|
||||
- [ ] Bug fix
|
||||
- [ ] New feature
|
||||
- [ ] Performance
|
||||
- [ ] Refactor (no behavior change)
|
||||
- [ ] Docs / chore
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Backend: `ruff check forge migrations` is clean and `pytest -q` passes (from `apps/api`)
|
||||
- [ ] New/changed backend code is `mypy`-clean
|
||||
- [ ] Frontend: `pnpm --filter web build` passes (from repo root)
|
||||
- [ ] Shared schemas (`packages/schemas`) updated if node/tool config changed
|
||||
- [ ] Tests added/updated for the change (characterization test for behavior-preserving refactors)
|
||||
- [ ] `CHANGELOG.md` updated under **Unreleased** (for user-facing changes)
|
||||
- [ ] No secrets, tokens, or customer data in the diff
|
||||
|
||||
## Notes for reviewers
|
||||
|
||||
<!-- Anything that needs special attention, screenshots for UI changes, migration notes, etc. -->
|
||||
@@ -0,0 +1,30 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Backend Python dependencies (PEP 621 pyproject.toml).
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/apps/api"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 5
|
||||
groups:
|
||||
python:
|
||||
patterns: ["*"]
|
||||
|
||||
# Frontend / workspace JS dependencies (pnpm workspace at the repo root).
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 5
|
||||
groups:
|
||||
javascript:
|
||||
patterns: ["*"]
|
||||
|
||||
# GitHub Actions used by the workflows.
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
actions:
|
||||
patterns: ["*"]
|
||||
@@ -0,0 +1,51 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
# Least privilege: CI only reads the checked-out code; it never writes back to the repo.
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
api:
|
||||
name: API - lint + tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: apps/api
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
- name: Install
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -e ".[dev,all]"
|
||||
- name: Ruff
|
||||
run: ruff check forge migrations
|
||||
- name: Mypy (advisory — gradual typing, see CONTRIBUTING.md)
|
||||
continue-on-error: true
|
||||
run: mypy forge
|
||||
- name: Pytest
|
||||
run: pytest -q
|
||||
|
||||
web:
|
||||
name: Web - typecheck + build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- uses: pnpm/action-setup@v6
|
||||
with:
|
||||
version: 9
|
||||
- uses: actions/setup-node@v7
|
||||
with:
|
||||
node-version: "22"
|
||||
cache: pnpm
|
||||
- name: Install
|
||||
run: pnpm install --frozen-lockfile || pnpm install
|
||||
- name: Build
|
||||
run: pnpm --filter web build
|
||||
@@ -0,0 +1,34 @@
|
||||
name: CodeQL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
schedule:
|
||||
- cron: "0 6 * * 1" # weekly, Monday 06:00 UTC
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
contents: read
|
||||
actions: read
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [python, javascript-typescript]
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
language: ${{ matrix.language }}
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v4
|
||||
- name: Analyze
|
||||
uses: github/codeql-action/analyze@v4
|
||||
with:
|
||||
category: "/language:${{ matrix.language }}"
|
||||
Reference in New Issue
Block a user