summaryrefslogtreecommitdiffhomepage
path: root/specs
diff options
context:
space:
mode:
Diffstat (limited to 'specs')
-rw-r--r--specs/project.md65
1 files changed, 65 insertions, 0 deletions
diff --git a/specs/project.md b/specs/project.md
new file mode 100644
index 000000000..dd51f0e7f
--- /dev/null
+++ b/specs/project.md
@@ -0,0 +1,65 @@
+## project
+
+goal is to let a single instance of opencode be able to run sessions for
+multiple projects and different worktrees per project
+
+### api
+
+```
+GET /project -> Project[]
+
+POST /project/init -> Project
+
+
+GET /project/:projectID/session -> Session[]
+
+GET /project/:projectID/session/:sessionID -> Session
+
+POST /project/:projectID/session -> Session
+{
+ id?: string
+ parentID?: string
+ directory: string
+}
+
+DELETE /project/:projectID/session/:sessionID
+
+POST /project/:projectID/session/:sessionID/init
+
+POST /project/:projectID/session/:sessionID/abort
+
+POST /project/:projectID/session/:sessionID/share
+
+DELETE /project/:projectID/session/:sessionID/share
+
+POST /project/:projectID/session/:sessionID/compact
+
+GET /project/:projectID/session/:sessionID/message -> { info: Message, parts: Part[] }[]
+
+GET /project/:projectID/session/:sessionID/message/:messageID -> { info: Message, parts: Part[] }
+
+POST /project/:projectID/session/:sessionID/message -> { info: Message, parts: Part[] }
+
+POST /project/:projectID/session/:sessionID/revert -> Session
+
+POST /project/:projectID/session/:sessionID/unrevert -> Session
+
+POST /project/:projectID/session/:sessionID/permission/:permissionID -> Session
+
+GET /project/:projectID/session/:sessionID/find/file -> string[]
+
+GET /project/:projectID/session/:sessionID/file -> { type: "raw" | "patch", content: string }
+
+GET /project/:projectID/session/:sessionID/file/status -> File[]
+
+POST /log
+
+// These are awkward
+
+GET /provider?directory=<resolve path> -> Provider
+GET /config?directory=<resolve path> -> Config // think only tui uses this?
+
+GET /project/:projectID/agent?directory=<resolve path> -> Agent
+GET /project/:projectID/find/file?directory=<resolve path> -> File
+
+```