Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
"""OrgMyLife API client for creating tasks from extracted action items.
|
||||
|
||||
POST to /api/tasks with title, source_url, description.
|
||||
Handles unreachable API gracefully (log warning, continue).
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
import httpx
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class OrgMyLifeClient:
|
||||
"""HTTP client for OrgMyLife task creation."""
|
||||
|
||||
def __init__(self, base_url: str, api_key: str):
|
||||
self.base_url = base_url.rstrip("/")
|
||||
self.api_key = api_key
|
||||
|
||||
def create_task(
|
||||
self,
|
||||
title: str,
|
||||
source_url: str,
|
||||
description: str = "",
|
||||
priority: int = 4,
|
||||
) -> dict:
|
||||
"""Create a task in OrgMyLife.
|
||||
|
||||
Args:
|
||||
title: Task title (action item description).
|
||||
source_url: Reference back to the source note.
|
||||
description: Optional additional description.
|
||||
priority: Task priority (1-5, default 4).
|
||||
|
||||
Returns:
|
||||
Response data dict, or empty dict on failure.
|
||||
"""
|
||||
url = f"{self.base_url}/api/tasks"
|
||||
payload = {
|
||||
"title": title,
|
||||
"source_url": source_url,
|
||||
"description": description,
|
||||
"priority": priority,
|
||||
}
|
||||
headers = {
|
||||
"Authorization": f"Bearer {self.api_key}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
|
||||
try:
|
||||
response = httpx.post(
|
||||
url,
|
||||
json=payload,
|
||||
headers=headers,
|
||||
timeout=10.0,
|
||||
)
|
||||
response.raise_for_status()
|
||||
logger.info("Created OrgMyLife task: %s", title[:50])
|
||||
return response.json()
|
||||
|
||||
except httpx.ConnectError:
|
||||
logger.warning(
|
||||
"OrgMyLife API unreachable at %s — skipping task creation", self.base_url
|
||||
)
|
||||
return {}
|
||||
except httpx.HTTPStatusError as e:
|
||||
logger.warning(
|
||||
"OrgMyLife API error %d: %s", e.response.status_code, e.response.text[:200]
|
||||
)
|
||||
return {}
|
||||
except Exception as e:
|
||||
logger.warning("OrgMyLife task creation failed: %s", e)
|
||||
return {}
|
||||
Reference in New Issue
Block a user