Initial commit: Jarvis Memory system
This commit is contained in:
91
skills/task-queue/scripts/add_task.py
Executable file
91
skills/task-queue/scripts/add_task.py
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Add a task to the queue.
|
||||
Usage: python3 add_task.py "Task description" [options]
|
||||
"""
|
||||
|
||||
import redis
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import argparse
|
||||
|
||||
REDIS_HOST = os.environ.get("REDIS_HOST", "10.0.0.36")
|
||||
REDIS_PORT = int(os.environ.get("REDIS_PORT", 6379))
|
||||
REDIS_PASSWORD = os.environ.get("REDIS_PASSWORD", None)
|
||||
|
||||
def get_redis():
|
||||
return redis.Redis(
|
||||
host=REDIS_HOST,
|
||||
port=REDIS_PORT,
|
||||
password=REDIS_PASSWORD,
|
||||
decode_responses=True
|
||||
)
|
||||
|
||||
def generate_task_id():
|
||||
return f"task_{int(time.time())}_{os.urandom(4).hex()[:8]}"
|
||||
|
||||
def add_task(description, task_type="default", priority="medium", created_by="Kimi", message=None, command=None):
|
||||
r = get_redis()
|
||||
|
||||
task_id = generate_task_id()
|
||||
timestamp = str(int(time.time()))
|
||||
|
||||
# Build task data
|
||||
task_data = {
|
||||
"id": task_id,
|
||||
"description": description,
|
||||
"type": task_type,
|
||||
"status": "pending",
|
||||
"created_at": timestamp,
|
||||
"created_by": created_by,
|
||||
"priority": priority,
|
||||
"started_at": "",
|
||||
"completed_at": "",
|
||||
"result": ""
|
||||
}
|
||||
|
||||
# Add type-specific fields
|
||||
if task_type == "notify" and message:
|
||||
task_data["message"] = message
|
||||
elif task_type == "command" and command:
|
||||
task_data["command"] = command
|
||||
|
||||
# Store task details
|
||||
r.hset(f"task:{task_id}", mapping=task_data)
|
||||
|
||||
# Add to pending queue
|
||||
# For priority: high=lpush (front), others=rpush (back)
|
||||
if priority == "high":
|
||||
r.lpush("tasks:pending", task_id)
|
||||
else:
|
||||
r.rpush("tasks:pending", task_id)
|
||||
|
||||
print(f"[ADDED] {task_id}: {description} ({priority}, {task_type})")
|
||||
return task_id
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Add a task to the queue")
|
||||
parser.add_argument("description", help="Task description")
|
||||
parser.add_argument("--type", choices=["default", "notify", "command"],
|
||||
default="default", help="Task type")
|
||||
parser.add_argument("--priority", choices=["high", "medium", "low"],
|
||||
default="medium", help="Task priority")
|
||||
parser.add_argument("--by", default="Kimi", help="Who created the task")
|
||||
parser.add_argument("--message", help="Message to send (for notify type)")
|
||||
parser.add_argument("--command", help="Shell command to run (for command type)")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
task_id = add_task(
|
||||
args.description,
|
||||
args.type,
|
||||
args.priority,
|
||||
args.by,
|
||||
args.message,
|
||||
args.command
|
||||
)
|
||||
print(f"Task ID: {task_id}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user