2026-02-22 01:03:04 +00:00
|
|
|
import json
|
|
|
|
|
import os
|
|
|
|
|
import urllib.error
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
import urllib.request
|
|
|
|
|
from typing import Dict
|
2026-02-22 01:03:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def structure_to_json(text: str, schema: Dict) -> Dict:
|
|
|
|
|
"""
|
|
|
|
|
Convert structured text to JSON using LOCAL_LLM_API.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
text (str): The structured text to convert
|
|
|
|
|
schema (dict): The JSON schema to use for conversion
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
dict: The parsed JSON object
|
|
|
|
|
"""
|
|
|
|
|
# Get the API URL from environment variable
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
local_llm_api = os.environ.get(
|
|
|
|
|
"LOCAL_LLM_API", "http://host.docker.internal:1248/v1"
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Format the schema as JSON string
|
|
|
|
|
schema_json = json.dumps(schema, indent=2)
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Create the prompt following the pattern from jj-ai-commit.sh
|
|
|
|
|
prompt_text = f"""Analyse this text and respond ONLY with a valid JSON object matching the schema.
|
|
|
|
|
|
|
|
|
|
Text:
|
|
|
|
|
{text}
|
|
|
|
|
|
|
|
|
|
Schema:
|
|
|
|
|
{schema_json}"""
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Build the request body
|
|
|
|
|
request_body = {
|
|
|
|
|
"model": "qwen3-coder",
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
"messages": [{"role": "user", "content": prompt_text}],
|
2026-02-22 01:03:04 +00:00
|
|
|
}
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Build the URL
|
|
|
|
|
url = f"{local_llm_api}/chat/completions"
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Create the request
|
|
|
|
|
data = json.dumps(request_body).encode("utf-8")
|
|
|
|
|
req = urllib.request.Request(
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
url, data=data, headers={"Content-Type": "application/json"}, method="POST"
|
2026-02-22 01:03:04 +00:00
|
|
|
)
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
try:
|
|
|
|
|
# Execute the request
|
|
|
|
|
with urllib.request.urlopen(req) as response:
|
|
|
|
|
result = json.loads(response.read().decode("utf-8"))
|
|
|
|
|
except urllib.error.URLError as e:
|
|
|
|
|
return {"error": f"API request failed: {e}", "raw_response": ""}
|
|
|
|
|
except json.JSONDecodeError as e:
|
|
|
|
|
return {"error": f"Failed to parse response: {e}", "raw_response": ""}
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
try:
|
|
|
|
|
content = result.get("choices", [{}])[0].get("message", {}).get("content", "")
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Clean markdown backticks from response
|
|
|
|
|
clean_content = content.strip()
|
|
|
|
|
while clean_content.startswith("`") or clean_content.startswith("```"):
|
|
|
|
|
clean_content = clean_content[1:].strip()
|
|
|
|
|
while clean_content.endswith("`") or clean_content.endswith("```"):
|
|
|
|
|
clean_content = clean_content[:-1].strip()
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
|
2026-02-22 01:03:04 +00:00
|
|
|
# Parse the JSON content
|
|
|
|
|
return json.loads(clean_content)
|
|
|
|
|
except (json.JSONDecodeError, KeyError, IndexError) as e:
|
Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 16:34:09 +01:00
|
|
|
return {
|
|
|
|
|
"error": f"Failed to parse JSON: {e}",
|
|
|
|
|
"raw_response": json.dumps(result),
|
|
|
|
|
}
|