Skip to content

Commit 87e5d39

Browse files
committed
Improve developments docs
1 parent d3de275 commit 87e5d39

File tree

3 files changed

+36
-15
lines changed

3 files changed

+36
-15
lines changed

bb.edn

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,5 @@
99

1010
test make/unit-test
1111

12-
run-file make/run-file
13-
1412
tag make/tag
1513
get-last-changelog-entry make/get-last-changelog-entry}}

docs/development.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,42 @@
55
There are several ways of finding and fixing a bug or implementing a new feature:
66

77
- Create a test for your bug/feature, then implement the code following the test (TDD).
8-
- Build `eca` binary using `bb debug-cli` (requires `babashka`) each time you have made changes, and test it manually in your client. This is the slowest option.
8+
- Build a local `eca` JVM embedded binary using `bb debug-cli` (requires `babashka`), and test it manually in your client pointing to it. After started, you can connect to the nrepl port mentioned in eca stderr buffer, do you changes, evaluate and it will be affected on the running eca.
99
- Using a debug binary you can check eca's stderr buffer and look for a nrepl port, and connect to the REPL, make changes to the running eca process (really handy).
10-
- Run `bb run <path-to-json>` which will start the server and simulate a jsonrpc communication, check `test/flows` folder for built-in json files. (or `(cat <path-to-json>; cat) | clj -M:dev -m eca.main server`)
1110

11+
## Supporting a new editor
1212

13+
When supporting a new editor, it's important to keep UX consistency across editors, check how other editors done or ask for help.
14+
15+
This step-by-step feature implementation help track progress and next steps:
16+
17+
- [ ] Create the plugin/extension repo (editor-code-assistant/eca-<editor> would be ideal), ask maintainers for permission.
18+
- Server
19+
- Manage ECA server process.
20+
- [ ] Automatic download of latest server.
21+
- [ ] Allow user specify server path/args.
22+
- [ ] Commands for Start/stop server from editor.
23+
- [ ] Show server status (modeline, bottom of editor, etc).
24+
- [ ] JSONRPC communication with eca server process via stdin/stdout sending/receiving requests and notifications, check [protocol](./protocol.md).
25+
- [ ] Allow check eca server process stderr for debugging/logs.
26+
- [ ] Support `initialize` and `initialized` methods.
27+
- [ ] Support `exit` and `shutdown` methods.
28+
- Chat
29+
- [ ] Oepn chat window
30+
- [ ] Send user messages via `chat/prompt` request.
31+
- [ ] Clear chat and Reset chat.
32+
- [ ] Support receive chat contents via `chat/contentReceived` notification.
33+
- [ ] Present and allow user change behaviors and models returned from `initialize` request.
34+
- [ ] Present and add contexts via `chat/queryContext` request
35+
- [ ] Support tools contents: run/approval/reject via `chat/toolCallApprove` or `chat/toolCallReject`.
36+
- [ ] Support reason/thoughts content blocks.
37+
- [ ] Show MCPs summary (running, failed, pending).
38+
- [ ] Support chat commands (`/`) auto completion, querying via `chat/queryCommands`.
39+
- [ ] Show usage (costs/tokens) from usage content blocks.
40+
- [ ] keybindings: navigate through chat blocks/messages, clear chat.
41+
- MCP
42+
- [ ] Open MCP details window
43+
- [ ] Receive MCP server updates and update chat and mcp-details ux.
44+
- [ ] Basic plugin/extension documentation
45+
46+
Create a issue to help track the effort copying and pasting these check box to help track progress.

scripts/make.clj

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,6 @@
8282
(extract-text-between (str "## " version) "## ")
8383
string/trim)))
8484

85-
(defn run-file
86-
"Starts the server process and send the content of given path as stdin"
87-
[& [path]]
88-
(-> (p/process {:cmd ["clojure" "-M:dev" "-m" "eca.main" "server"]
89-
:in (slurp path)
90-
:out :string
91-
:err :string})
92-
p/check
93-
:err
94-
println))
95-
9685
(defn unit-test []
9786
(println :running-unit-tests...)
9887
(clj! ["-M:test"])

0 commit comments

Comments
 (0)