generated from coulomb/repo-seed
feat: rename to issue-core and add task ingestion endpoint
Renames the package, distribution, CLI alias, Makefile targets, and working directory from issue-facade to issue-core, signalling its role as the authoritative task lifecycle manager for the Coulomb org (peer to activity-core, rules-core, project-core). Adds POST /issues/ ingestion endpoint for activity-core's IssueSink, under a new optional [api] extra. The endpoint is served by `issue serve`, authenticates via the ISSUE_CORE_API_KEY env var (Bearer or X-API-Key header), and routes the TaskSpec payload to the configured default backend with full traceability metadata embedded in sync_metadata. - T01: Python package issue_tracker -> issue_core, dir rename - T02: registered in state hub under custodian domain - T03: INTENT.md (what it is, what it isn't, how it fits) - T04: SCOPE.md (in/out-of-scope, integration boundaries) - T05: POST /issues/ via FastAPI + Uvicorn, 9 unit tests - T06: docs/nats-task-ingestion.md design stub Closes ISSC-WP-0001. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
# Agent Integration Guide
|
||||
|
||||
**Issue Facade for Autonomous Coding Agent Coordination**
|
||||
**Issue Core for Autonomous Coding Agent Coordination**
|
||||
|
||||
## Purpose
|
||||
|
||||
The **Issue Facade** capability provides a standardized interface for autonomous coding agents to coordinate project implementation through issue tracking. Instead of agents directly interfacing with platform-specific APIs (GitHub, GitLab, Gitea), they use a unified abstraction that works consistently across backends.
|
||||
The **Issue Core** capability provides a standardized interface for autonomous coding agents to coordinate project implementation through issue tracking. Instead of agents directly interfacing with platform-specific APIs (GitHub, GitLab, Gitea), they use a unified abstraction that works consistently across backends.
|
||||
|
||||
### Why Issue Tracking for Agent Coordination?
|
||||
|
||||
@@ -67,7 +67,7 @@ Issue tracking provides a natural coordination mechanism for multi-agent softwar
|
||||
### 1. Installation
|
||||
|
||||
```bash
|
||||
cd capabilities/issue-facade
|
||||
cd capabilities/issue-core
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
@@ -99,7 +99,7 @@ issue backend set-default my-project
|
||||
# Configure local SQLite backend
|
||||
issue backend add local-work local
|
||||
# Prompts for:
|
||||
# - Database path: .issue-facade/issues.db
|
||||
# - Database path: .issue-core/issues.db
|
||||
|
||||
issue backend set-default local-work
|
||||
```
|
||||
@@ -178,8 +178,8 @@ issue list --label=reviewed --state=closed --format=json | \
|
||||
|
||||
```python
|
||||
# Agent creates implementation issues from requirements
|
||||
from issue_tracker.backends.gitea import GiteaBackend
|
||||
from issue_tracker.core.models import Issue, Label, IssueState
|
||||
from issue_core.backends.gitea import GiteaBackend
|
||||
from issue_core.core.models import Issue, Label, IssueState
|
||||
from datetime import datetime, timezone
|
||||
|
||||
backend = GiteaBackend()
|
||||
@@ -224,9 +224,9 @@ for task in subtasks:
|
||||
### Python Integration
|
||||
|
||||
```python
|
||||
from issue_tracker.backends.gitea import GiteaBackend
|
||||
from issue_tracker.core.models import Issue, Label, IssueState, User
|
||||
from issue_tracker.core.interfaces import IssueFilter
|
||||
from issue_core.backends.gitea import GiteaBackend
|
||||
from issue_core.core.models import Issue, Label, IssueState, User
|
||||
from issue_core.core.interfaces import IssueFilter
|
||||
from datetime import datetime, timezone
|
||||
import os
|
||||
|
||||
@@ -271,7 +271,7 @@ created.state = IssueState.IN_PROGRESS
|
||||
backend.update_issue(created)
|
||||
|
||||
# Add comment
|
||||
from issue_tracker.core.models import Comment
|
||||
from issue_core.core.models import Comment
|
||||
comment = Comment(
|
||||
id=None,
|
||||
body="Analysis complete. Root cause: unclosed file handles in line 234",
|
||||
@@ -432,7 +432,7 @@ issue sync push backup gitea-remote
|
||||
|
||||
```python
|
||||
# Check for conflicts before sync
|
||||
from issue_tracker.cli.sync_commands import sync_pull
|
||||
from issue_core.cli.sync_commands import sync_pull
|
||||
|
||||
try:
|
||||
sync_pull(source='remote', target='local', dry_run=True)
|
||||
@@ -505,7 +505,7 @@ Create a setup script for each project:
|
||||
#!/bin/bash
|
||||
# setup-issue-tracking.sh
|
||||
|
||||
cat > .issue-facade-config << EOF
|
||||
cat > .issue-core-config << EOF
|
||||
GITEA_URL=https://gitea.example.com
|
||||
GITEA_OWNER=myorg
|
||||
GITEA_REPO=myproject
|
||||
@@ -513,7 +513,7 @@ GITEA_TOKEN_FILE=~/.secrets/gitea-token
|
||||
EOF
|
||||
|
||||
# Load config and configure backend
|
||||
source .issue-facade-config
|
||||
source .issue-core-config
|
||||
export GITEA_API_TOKEN=$(cat $GITEA_TOKEN_FILE)
|
||||
|
||||
issue backend add $(basename $(pwd)) gitea <<INPUT
|
||||
@@ -551,7 +551,7 @@ for issue_number in [1, 2, 3, 4, 5]:
|
||||
backend.update_issue(issue)
|
||||
|
||||
# GOOD: Use local backend for bulk operations
|
||||
from issue_tracker.backends.local import LocalSQLiteBackend
|
||||
from issue_core.backends.local import LocalSQLiteBackend
|
||||
|
||||
local = LocalSQLiteBackend()
|
||||
local.connect({'db_path': '/tmp/batch.db'})
|
||||
@@ -595,7 +595,7 @@ if time.time() - last_fetch > 60:
|
||||
### Phase 1: Auto-Configuration (v1.1)
|
||||
- Automatic git remote detection
|
||||
- Environment-variable-only setup
|
||||
- Per-repository `.issue-facade/config.json` support
|
||||
- Per-repository `.issue-core/config.json` support
|
||||
- `issue config detect` command
|
||||
|
||||
### Phase 2: Agent Features (v1.2)
|
||||
|
||||
Reference in New Issue
Block a user