mirror of
https://github.com/andrewyng/openworker.git
synced 2026-09-11 06:30:25 +00:00
OpenWorker: initial import
Imported from andrewyng/aisuite@1b4bbf303e (contents of its platform/ directory, hoisted to the repo root). Development history prior to this commit lives in that repository. Co-authored-by: Devika <devikaverma11@gmail.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
"""CLI entry point. `coworker` launches the TUI; `coworker code` boots the code skill."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from .config import load_config
|
||||
from .conversations import ConversationStore
|
||||
from .memory import SQLiteMemoryStore
|
||||
from .permissions import Mode
|
||||
from .secrets import state_dir
|
||||
|
||||
|
||||
def main(argv: Optional[list[str]] = None) -> None:
|
||||
cfg = load_config()
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="coworker", description="Agent coworker (TUI)."
|
||||
)
|
||||
parser.add_argument(
|
||||
"skill", nargs="?", default="code", help="skill to launch (default: code)"
|
||||
)
|
||||
parser.add_argument("--cwd", default=".", help="workspace directory")
|
||||
parser.add_argument(
|
||||
"--model", default=cfg.model, help="model id, e.g. openai gpt-5.5"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--mode",
|
||||
default=cfg.mode,
|
||||
choices=["plan", "interactive", "auto"],
|
||||
help="permission mode",
|
||||
)
|
||||
parser.add_argument("--resume", default=None, help="resume a session id")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
workspace = Path(args.cwd).expanduser().resolve()
|
||||
# Unified global store shared with the GUI/server (one place for all conversations).
|
||||
data_dir = state_dir()
|
||||
memory_store = SQLiteMemoryStore(data_dir / "coworker.db")
|
||||
session_store = ConversationStore(data_dir)
|
||||
session_store.touch_workspace(os.path.realpath(str(workspace)))
|
||||
|
||||
resume_messages = None
|
||||
session_id = args.resume or uuid.uuid4().hex[:12]
|
||||
model, mode = args.model, args.mode
|
||||
if args.resume:
|
||||
record = session_store.load(args.resume)
|
||||
if record is not None:
|
||||
resume_messages = record.messages
|
||||
model, mode = record.model, record.mode
|
||||
|
||||
from .tui.app import CoworkerApp
|
||||
|
||||
app = CoworkerApp(
|
||||
workspace=workspace,
|
||||
model=model,
|
||||
mode=Mode(mode),
|
||||
memory_store=memory_store,
|
||||
session_store=session_store,
|
||||
session_id=session_id,
|
||||
resume_messages=resume_messages,
|
||||
)
|
||||
app.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user