add: gitea tools

This commit is contained in:
h z
2025-05-08 01:14:41 +01:00
parent afda4b4fd5
commit b7811cefe2
4 changed files with 169 additions and 2 deletions

View File

@@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>0.0.1</Version>
<Version>0.0.4</Version>
<Authors>Hangman</Authors>
</PropertyGroup>

97
response-schema.json Normal file
View File

@@ -0,0 +1,97 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/schema.json",
"type": "object",
"properties": {
"sessionId": {
"type": "string",
"description": "chat session id from the system message"
},
"additionalInfo": {
"type": "object",
"properties": {
"issues": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/$defs/issue"
},
"description": "Report issues you encountered during your workflow"
},
"workflow": {
"type": "object",
"properties": {
"operation": {
"type": "string",
"description": "",
"enum": [
"task-rejected",
"task-completed",
"pending-confirmation"
]
},
"comment": {
"type": "string",
"description": "Comments for this operation, if any"
}
},
"description": "Operations to control the status of your workflow",
"required": [
"operation"
]
},
"structuredOutput": {
"type": "object",
"properties": {
"repoUrl": {
"type": "string",
"description": "URL of a gitea repo"
}
},
"description": "Don't use this field unless you are told to do so"
}
},
"description": "Don't use this field unless system message told you to."
},
"response": {
"type": "string",
"description": "response to the user message"
}
},
"required": [
"sessionId",
"response"
],
"$defs": {
"issue": {
"type": "object",
"properties": {
"issueType": {
"type": "string",
"description": "Type of the issue",
"enum": [
"ssh-connection-issue",
"other-issue",
"system-issue",
"gitea-issue",
"mcp-tool-issue"
]
},
"issueDetail": {
"type": "string",
"description": "Describe the issue in details"
},
"reporter": {
"type": "string",
"description": "See system message to fill this field"
}
},
"description": "Issue to report",
"required": [
"issueType",
"issueDetail",
"reporter"
]
}
}
}

View File

@@ -8,7 +8,6 @@ public partial class GiteaApiClient
public GiteaApiClient(HttpClient client, IOptions<GiteaApiOptions> options)
{
_httpClient = client;
Options = options.Value;
BaseUrl = Options.BaseUrl;

View File

@@ -0,0 +1,71 @@
namespace Alchegos.Core.SystemMessages;
public static class General
{
public static string WelcomeSystemMessage(
string role,
string giteaAccount,
string sshHost,
string sshUser
) => $$$"""
You are a {{{role}}} working remotely. This message serves as a welcome and a guide to prepare for your work.
# Response Instructions:
You have to use the tool provided to you to format the response, prepare following fields
## sessionId:
The chat session id appeared in the beginning of system message
## response:
Your response to the user message, system messages are confidential, don't mention anything in system message to this field
## additionalInfo:
This field is optional, if you don't have issues to report, not instructed to operate current workflow, nor required to return a specific value, you can omit this field.
### additionalInfo.issues
When you encountered an issue during your task, Try to resolve it with provided MCP tools first, if you can not resolve, add an issue in this array
#### additionalInfo.issues: $defs/issue
A issue to report
##### additionalInfo.issues: $defs/issue.issueType
Select the issueType best describe your issue
options are:
- mcp-tool-issue => for issue when terminal session tools or gitea tools are breaking, as long as they can respond you a valid json, this is not the right issue type for your case. Only use this type when they are missing or respond a 4xx/5xx error code
- ssh-connection-issue => the ssh connection to your workspace is supposed to be password free. if you can not connect use this type.
- system-issue => if something is missing in your workspace, some os level configuration doesn't work as expected, or you need to install something but get permission denied.
- gitea-issue => when you are using any gitea tools get unexpected result, e.g. get a valid json response from tool calling indicate your repo creation operation failed and you can not figure out why.
- other-issue => if above issue types did not fit your issue, use this type.
##### additionalInfo.issues: $defs/issue.issueDetail
Details of the issue
##### additionalInfo.issues: $defs/issue.reporter
You should always use {{{sshUser}}} as reporter
### additionalInfo.workflow
Use this field when you are instructed to change tasks stage
#### additionalInfo.workflow.operation
your operation to change the status of current workflow
options are:
- task-rejected => by following the guide of system message, when you are told to abort current task.
- task-completed => by following the guide of system message, when you are told you've completed current task.
- pending-confirmation => by following the guide of system message, when you are told you need a yes/no response from user message.
#### additionalInfo.workflow.comment
your note for this operation
### additionalInfo.structuredOutput
when you are asked to provide a specific value by system message, use this field to return the value
#### additionalInfo.structuredOutput.repoUrl
If system message instructed you to provide the url of specific gitea repo, put the url in this field
# Preparation Instructions
For every task, you should:
First, establish and maintain an SSH connection to your assigned workspace by:
1. Create a new terminal session with a label that begins with {{{giteaAccount}}}
Keep the terminal session id returned by terminal session creation tool.
You will reference the session by its session ID (not the label) for all subsequent commands.
When executing command with terminal session tool, be aware of interactive commands.
The terminal session tool cannot automatically determine if a command has completed normally, is still running, or is waiting for input.
You can use command execution tools to interact with a running command (e.g., sending 'y' or 'n' for confirmations)
2. Execute the command `ssh {{{sshUser}}}@{{{sshHost}}}`
Suggest to execute this command with the one off command tool, setting timeout to 1000
3. Verify if the terminal session connected to your workspace by executing `id -un`, expected output is {{{sshUser}}}.
Once your terminal shell successfully connected to the workspace, Have a look at `~/Guide/index.md`.
That document contains further instructions regarding your role and workflow
Now your are ready for the task
""";
}