alchemylab-opencode 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-B3FN2B2N.js → chunk-3PZZ2D23.js} +7 -3
- package/dist/chunk-3PZZ2D23.js.map +7 -0
- package/dist/{chunk-LU5XVQUD.js → chunk-EGZMJTLE.js} +7 -7
- package/dist/{chunk-LU5XVQUD.js.map → chunk-EGZMJTLE.js.map} +2 -2
- package/dist/{chunk-23UYOGZG.js → chunk-ORHZOVWK.js} +6 -6
- package/dist/{chunk-TASPMBUL.js → chunk-SV5NEV33.js} +5 -5
- package/dist/{chunk-SM6WZDN6.js → chunk-UKQIL5XA.js} +18 -12
- package/dist/chunk-UKQIL5XA.js.map +7 -0
- package/dist/{chunk-GSE2T5UY.js → chunk-ZFHDPNFZ.js} +4 -4
- package/dist/{mcp-XFGN3FWW.js → mcp-66BBNSWA.js} +3 -3
- package/dist/{registry-W4MBVBYD.js → registry-YVL3V6Z6.js} +4 -4
- package/dist/{run-73HUV4H3.js → run-65PIGE2A.js} +7 -7
- package/dist/{run-service-LHEVFBIU.js → run-service-AYATGPA6.js} +2 -2
- package/dist/run.js +1 -1
- package/dist/serve.js +1 -1
- package/dist/{server-2CPOG3LS.js → server-KCG3B4WQ.js} +7 -7
- package/dist/{session-M6HOZ56B.js → session-BR5MTI3X.js} +4 -4
- package/dist/{share-next-QRBVSD37.js → share-next-EPYQDJ32.js} +5 -5
- package/dist/{worktree-3GUHT2P7.js → worktree-PIVTZBUE.js} +6 -6
- package/package.json +2 -15
- package/packages/opencode/migration/20260409000000_add_session_metadata/migration.sql +1 -0
- package/build.mjs +0 -192
- package/dist/chunk-B3FN2B2N.js.map +0 -7
- package/dist/chunk-SM6WZDN6.js.map +0 -7
- package/packages/opencode/package.json +0 -138
- package/packages/opencode/src/account/account.sql.ts +0 -39
- package/packages/opencode/src/account/index.ts +0 -463
- package/packages/opencode/src/account/repo.ts +0 -163
- package/packages/opencode/src/account/schema.ts +0 -91
- package/packages/opencode/src/acp/README.md +0 -174
- package/packages/opencode/src/acp/agent.ts +0 -1847
- package/packages/opencode/src/acp/session.ts +0 -116
- package/packages/opencode/src/acp/types.ts +0 -24
- package/packages/opencode/src/agent/agent.ts +0 -420
- package/packages/opencode/src/agent/generate.txt +0 -75
- package/packages/opencode/src/agent/prompt/compaction.txt +0 -15
- package/packages/opencode/src/agent/prompt/explore.txt +0 -18
- package/packages/opencode/src/agent/prompt/summary.txt +0 -11
- package/packages/opencode/src/agent/prompt/title.txt +0 -44
- package/packages/opencode/src/auth/index.ts +0 -110
- package/packages/opencode/src/bus/bus-event.ts +0 -40
- package/packages/opencode/src/bus/global.ts +0 -10
- package/packages/opencode/src/bus/index.ts +0 -185
- package/packages/opencode/src/cli/bootstrap.ts +0 -17
- package/packages/opencode/src/cli/cmd/cmd.ts +0 -7
- package/packages/opencode/src/cli/cmd/run.ts +0 -689
- package/packages/opencode/src/cli/cmd/serve.ts +0 -24
- package/packages/opencode/src/cli/cmd/tui/event.ts +0 -49
- package/packages/opencode/src/cli/effect/prompt.ts +0 -25
- package/packages/opencode/src/cli/error.ts +0 -46
- package/packages/opencode/src/cli/heap.ts +0 -59
- package/packages/opencode/src/cli/logo.ts +0 -6
- package/packages/opencode/src/cli/network.ts +0 -60
- package/packages/opencode/src/cli/ui.ts +0 -133
- package/packages/opencode/src/cli/upgrade.ts +0 -31
- package/packages/opencode/src/command/index.ts +0 -195
- package/packages/opencode/src/command/template/initialize.txt +0 -66
- package/packages/opencode/src/command/template/review.txt +0 -101
- package/packages/opencode/src/config/config.ts +0 -1599
- package/packages/opencode/src/config/console-state.ts +0 -15
- package/packages/opencode/src/config/markdown.ts +0 -99
- package/packages/opencode/src/config/paths.ts +0 -167
- package/packages/opencode/src/config/tui-migrate.ts +0 -155
- package/packages/opencode/src/config/tui-schema.ts +0 -37
- package/packages/opencode/src/config/tui.ts +0 -179
- package/packages/opencode/src/control-plane/adaptors/index.ts +0 -20
- package/packages/opencode/src/control-plane/adaptors/worktree.ts +0 -42
- package/packages/opencode/src/control-plane/schema.ts +0 -17
- package/packages/opencode/src/control-plane/sse.ts +0 -66
- package/packages/opencode/src/control-plane/types.ts +0 -32
- package/packages/opencode/src/control-plane/workspace.sql.ts +0 -17
- package/packages/opencode/src/control-plane/workspace.ts +0 -168
- package/packages/opencode/src/effect/cross-spawn-spawner.ts +0 -502
- package/packages/opencode/src/effect/instance-ref.ts +0 -6
- package/packages/opencode/src/effect/instance-registry.ts +0 -12
- package/packages/opencode/src/effect/instance-state.ts +0 -82
- package/packages/opencode/src/effect/run-service.ts +0 -33
- package/packages/opencode/src/effect/runner.ts +0 -216
- package/packages/opencode/src/env/index.ts +0 -28
- package/packages/opencode/src/file/ignore.ts +0 -82
- package/packages/opencode/src/file/index.ts +0 -686
- package/packages/opencode/src/file/protected.ts +0 -59
- package/packages/opencode/src/file/ripgrep.ts +0 -376
- package/packages/opencode/src/file/time.ts +0 -133
- package/packages/opencode/src/file/watcher.ts +0 -173
- package/packages/opencode/src/filesystem/index.ts +0 -236
- package/packages/opencode/src/flag/flag.ts +0 -156
- package/packages/opencode/src/format/formatter.ts +0 -413
- package/packages/opencode/src/format/index.ts +0 -203
- package/packages/opencode/src/git/index.ts +0 -303
- package/packages/opencode/src/global/index.ts +0 -56
- package/packages/opencode/src/id/id.ts +0 -85
- package/packages/opencode/src/ide/index.ts +0 -74
- package/packages/opencode/src/installation/index.ts +0 -355
- package/packages/opencode/src/installation/meta.ts +0 -7
- package/packages/opencode/src/lsp/client.ts +0 -252
- package/packages/opencode/src/lsp/index.ts +0 -558
- package/packages/opencode/src/lsp/language.ts +0 -120
- package/packages/opencode/src/lsp/launch.ts +0 -21
- package/packages/opencode/src/lsp/server.ts +0 -1968
- package/packages/opencode/src/mcp/auth.ts +0 -173
- package/packages/opencode/src/mcp/index.ts +0 -931
- package/packages/opencode/src/mcp/oauth-callback.ts +0 -216
- package/packages/opencode/src/mcp/oauth-provider.ts +0 -185
- package/packages/opencode/src/node-loader.mjs +0 -104
- package/packages/opencode/src/node-preload.mjs +0 -39
- package/packages/opencode/src/node.ts +0 -1
- package/packages/opencode/src/npm/index.ts +0 -188
- package/packages/opencode/src/patch/index.ts +0 -680
- package/packages/opencode/src/permission/arity.ts +0 -163
- package/packages/opencode/src/permission/evaluate.ts +0 -15
- package/packages/opencode/src/permission/index.ts +0 -325
- package/packages/opencode/src/permission/schema.ts +0 -17
- package/packages/opencode/src/plugin/cloudflare.ts +0 -67
- package/packages/opencode/src/plugin/codex.ts +0 -608
- package/packages/opencode/src/plugin/github-copilot/copilot.ts +0 -361
- package/packages/opencode/src/plugin/github-copilot/models.ts +0 -144
- package/packages/opencode/src/plugin/index.ts +0 -299
- package/packages/opencode/src/plugin/install.ts +0 -439
- package/packages/opencode/src/plugin/loader.ts +0 -174
- package/packages/opencode/src/plugin/meta.ts +0 -188
- package/packages/opencode/src/plugin/shared.ts +0 -323
- package/packages/opencode/src/project/bootstrap.ts +0 -31
- package/packages/opencode/src/project/instance.ts +0 -175
- package/packages/opencode/src/project/project.sql.ts +0 -16
- package/packages/opencode/src/project/project.ts +0 -519
- package/packages/opencode/src/project/schema.ts +0 -16
- package/packages/opencode/src/project/state.ts +0 -70
- package/packages/opencode/src/project/vcs.ts +0 -240
- package/packages/opencode/src/provider/auth.ts +0 -253
- package/packages/opencode/src/provider/error.ts +0 -197
- package/packages/opencode/src/provider/models.ts +0 -162
- package/packages/opencode/src/provider/provider.ts +0 -1709
- package/packages/opencode/src/provider/schema.ts +0 -38
- package/packages/opencode/src/provider/sdk/copilot/README.md +0 -5
- package/packages/opencode/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
- package/packages/opencode/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
- package/packages/opencode/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
- package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
- package/packages/opencode/src/provider/sdk/copilot/copilot-provider.ts +0 -100
- package/packages/opencode/src/provider/sdk/copilot/index.ts +0 -2
- package/packages/opencode/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
- package/packages/opencode/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
- package/packages/opencode/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1769
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
- package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
- package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
- package/packages/opencode/src/provider/transform.ts +0 -1050
- package/packages/opencode/src/pty/index.ts +0 -397
- package/packages/opencode/src/pty/pty.node.ts +0 -27
- package/packages/opencode/src/pty/pty.ts +0 -25
- package/packages/opencode/src/pty/schema.ts +0 -17
- package/packages/opencode/src/question/index.ts +0 -224
- package/packages/opencode/src/question/schema.ts +0 -17
- package/packages/opencode/src/run.ts +0 -28
- package/packages/opencode/src/serve.ts +0 -45
- package/packages/opencode/src/server/error.ts +0 -36
- package/packages/opencode/src/server/event.ts +0 -7
- package/packages/opencode/src/server/instance.ts +0 -324
- package/packages/opencode/src/server/mdns.ts +0 -60
- package/packages/opencode/src/server/middleware.ts +0 -33
- package/packages/opencode/src/server/projectors.ts +0 -28
- package/packages/opencode/src/server/proxy.ts +0 -131
- package/packages/opencode/src/server/router.ts +0 -105
- package/packages/opencode/src/server/routes/config.ts +0 -92
- package/packages/opencode/src/server/routes/event.ts +0 -83
- package/packages/opencode/src/server/routes/experimental.ts +0 -374
- package/packages/opencode/src/server/routes/file.ts +0 -197
- package/packages/opencode/src/server/routes/global.ts +0 -312
- package/packages/opencode/src/server/routes/mcp.ts +0 -225
- package/packages/opencode/src/server/routes/permission.ts +0 -69
- package/packages/opencode/src/server/routes/project.ts +0 -118
- package/packages/opencode/src/server/routes/provider.ts +0 -171
- package/packages/opencode/src/server/routes/pty.ts +0 -210
- package/packages/opencode/src/server/routes/question.ts +0 -99
- package/packages/opencode/src/server/routes/session.ts +0 -1030
- package/packages/opencode/src/server/routes/tui.ts +0 -379
- package/packages/opencode/src/server/routes/workspace.ts +0 -94
- package/packages/opencode/src/server/server.ts +0 -353
- package/packages/opencode/src/session/compaction.ts +0 -428
- package/packages/opencode/src/session/index.ts +0 -887
- package/packages/opencode/src/session/instruction.ts +0 -258
- package/packages/opencode/src/session/llm.ts +0 -354
- package/packages/opencode/src/session/message-v2.ts +0 -1031
- package/packages/opencode/src/session/message.ts +0 -191
- package/packages/opencode/src/session/overflow.ts +0 -22
- package/packages/opencode/src/session/processor.ts +0 -523
- package/packages/opencode/src/session/projectors.ts +0 -135
- package/packages/opencode/src/session/prompt/anthropic.txt +0 -105
- package/packages/opencode/src/session/prompt/beast.txt +0 -147
- package/packages/opencode/src/session/prompt/build-switch.txt +0 -5
- package/packages/opencode/src/session/prompt/codex.txt +0 -79
- package/packages/opencode/src/session/prompt/copilot-gpt-5.txt +0 -143
- package/packages/opencode/src/session/prompt/default.txt +0 -105
- package/packages/opencode/src/session/prompt/gemini.txt +0 -155
- package/packages/opencode/src/session/prompt/gpt.txt +0 -107
- package/packages/opencode/src/session/prompt/kimi.txt +0 -95
- package/packages/opencode/src/session/prompt/max-steps.txt +0 -16
- package/packages/opencode/src/session/prompt/plan-reminder-anthropic.txt +0 -67
- package/packages/opencode/src/session/prompt/plan.txt +0 -26
- package/packages/opencode/src/session/prompt/trinity.txt +0 -97
- package/packages/opencode/src/session/prompt.ts +0 -1911
- package/packages/opencode/src/session/retry.ts +0 -106
- package/packages/opencode/src/session/revert.ts +0 -176
- package/packages/opencode/src/session/schema.ts +0 -38
- package/packages/opencode/src/session/session.sql.ts +0 -103
- package/packages/opencode/src/session/status.ts +0 -102
- package/packages/opencode/src/session/summary.ts +0 -177
- package/packages/opencode/src/session/system.ts +0 -76
- package/packages/opencode/src/session/todo.ts +0 -95
- package/packages/opencode/src/share/share-next.ts +0 -369
- package/packages/opencode/src/share/share.sql.ts +0 -13
- package/packages/opencode/src/shell/shell.ts +0 -110
- package/packages/opencode/src/skill/discovery.ts +0 -116
- package/packages/opencode/src/skill/index.ts +0 -277
- package/packages/opencode/src/snapshot/index.ts +0 -726
- package/packages/opencode/src/sql.d.ts +0 -4
- package/packages/opencode/src/storage/db.node.ts +0 -8
- package/packages/opencode/src/storage/db.ts +0 -177
- package/packages/opencode/src/storage/json-migration.ts +0 -425
- package/packages/opencode/src/storage/schema.sql.ts +0 -10
- package/packages/opencode/src/storage/schema.ts +0 -5
- package/packages/opencode/src/storage/storage.ts +0 -353
- package/packages/opencode/src/sync/README.md +0 -179
- package/packages/opencode/src/sync/event.sql.ts +0 -16
- package/packages/opencode/src/sync/index.ts +0 -263
- package/packages/opencode/src/sync/schema.ts +0 -14
- package/packages/opencode/src/tool/apply_patch.ts +0 -281
- package/packages/opencode/src/tool/apply_patch.txt +0 -33
- package/packages/opencode/src/tool/bash.ts +0 -496
- package/packages/opencode/src/tool/bash.txt +0 -117
- package/packages/opencode/src/tool/batch.ts +0 -183
- package/packages/opencode/src/tool/batch.txt +0 -24
- package/packages/opencode/src/tool/codesearch.ts +0 -132
- package/packages/opencode/src/tool/codesearch.txt +0 -12
- package/packages/opencode/src/tool/edit.ts +0 -667
- package/packages/opencode/src/tool/edit.txt +0 -10
- package/packages/opencode/src/tool/external-directory.ts +0 -46
- package/packages/opencode/src/tool/glob.ts +0 -78
- package/packages/opencode/src/tool/glob.txt +0 -6
- package/packages/opencode/src/tool/grep.ts +0 -156
- package/packages/opencode/src/tool/grep.txt +0 -8
- package/packages/opencode/src/tool/invalid.ts +0 -17
- package/packages/opencode/src/tool/ls.ts +0 -121
- package/packages/opencode/src/tool/ls.txt +0 -1
- package/packages/opencode/src/tool/lsp.ts +0 -97
- package/packages/opencode/src/tool/lsp.txt +0 -19
- package/packages/opencode/src/tool/multiedit.ts +0 -46
- package/packages/opencode/src/tool/multiedit.txt +0 -41
- package/packages/opencode/src/tool/plan-enter.txt +0 -14
- package/packages/opencode/src/tool/plan-exit.txt +0 -13
- package/packages/opencode/src/tool/plan.ts +0 -131
- package/packages/opencode/src/tool/question.ts +0 -46
- package/packages/opencode/src/tool/question.txt +0 -10
- package/packages/opencode/src/tool/read.ts +0 -332
- package/packages/opencode/src/tool/read.txt +0 -14
- package/packages/opencode/src/tool/registry.ts +0 -265
- package/packages/opencode/src/tool/schema.ts +0 -17
- package/packages/opencode/src/tool/skill.ts +0 -105
- package/packages/opencode/src/tool/task.ts +0 -166
- package/packages/opencode/src/tool/task.txt +0 -60
- package/packages/opencode/src/tool/todo.ts +0 -48
- package/packages/opencode/src/tool/todowrite.txt +0 -167
- package/packages/opencode/src/tool/tool.ts +0 -112
- package/packages/opencode/src/tool/truncate.ts +0 -144
- package/packages/opencode/src/tool/truncation-dir.ts +0 -4
- package/packages/opencode/src/tool/webfetch.ts +0 -206
- package/packages/opencode/src/tool/webfetch.txt +0 -13
- package/packages/opencode/src/tool/websearch.ts +0 -150
- package/packages/opencode/src/tool/websearch.txt +0 -14
- package/packages/opencode/src/tool/write.ts +0 -84
- package/packages/opencode/src/tool/write.txt +0 -8
- package/packages/opencode/src/util/abort.ts +0 -35
- package/packages/opencode/src/util/archive.ts +0 -17
- package/packages/opencode/src/util/color.ts +0 -19
- package/packages/opencode/src/util/context.ts +0 -25
- package/packages/opencode/src/util/data-url.ts +0 -9
- package/packages/opencode/src/util/defer.ts +0 -12
- package/packages/opencode/src/util/effect-http-client.ts +0 -11
- package/packages/opencode/src/util/effect-zod.ts +0 -98
- package/packages/opencode/src/util/error.ts +0 -77
- package/packages/opencode/src/util/filesystem.ts +0 -245
- package/packages/opencode/src/util/flock.ts +0 -333
- package/packages/opencode/src/util/fn.ts +0 -21
- package/packages/opencode/src/util/format.ts +0 -20
- package/packages/opencode/src/util/glob.ts +0 -34
- package/packages/opencode/src/util/hash.ts +0 -7
- package/packages/opencode/src/util/iife.ts +0 -3
- package/packages/opencode/src/util/keybind.ts +0 -103
- package/packages/opencode/src/util/lazy.ts +0 -23
- package/packages/opencode/src/util/locale.ts +0 -81
- package/packages/opencode/src/util/lock.ts +0 -98
- package/packages/opencode/src/util/log.ts +0 -182
- package/packages/opencode/src/util/network.ts +0 -9
- package/packages/opencode/src/util/process.ts +0 -176
- package/packages/opencode/src/util/queue.ts +0 -32
- package/packages/opencode/src/util/record.ts +0 -3
- package/packages/opencode/src/util/rpc.ts +0 -66
- package/packages/opencode/src/util/schema.ts +0 -53
- package/packages/opencode/src/util/scrap.ts +0 -10
- package/packages/opencode/src/util/signal.ts +0 -12
- package/packages/opencode/src/util/timeout.ts +0 -14
- package/packages/opencode/src/util/token.ts +0 -7
- package/packages/opencode/src/util/update-schema.ts +0 -13
- package/packages/opencode/src/util/which.ts +0 -14
- package/packages/opencode/src/util/wildcard.ts +0 -59
- package/packages/opencode/src/worktree/index.ts +0 -612
- package/packages/plugin/package.json +0 -38
- package/packages/plugin/src/example.ts +0 -18
- package/packages/plugin/src/index.ts +0 -282
- package/packages/plugin/src/shell.ts +0 -136
- package/packages/plugin/src/tool.ts +0 -38
- package/packages/plugin/src/tui.ts +0 -508
- package/packages/script/package.json +0 -16
- package/packages/script/src/index.ts +0 -77
- package/packages/sdk/package.json +0 -33
- package/packages/sdk/src/client.ts +0 -55
- package/packages/sdk/src/gen/client/client.gen.ts +0 -212
- package/packages/sdk/src/gen/client/index.ts +0 -25
- package/packages/sdk/src/gen/client/types.gen.ts +0 -222
- package/packages/sdk/src/gen/client/utils.gen.ts +0 -287
- package/packages/sdk/src/gen/client.gen.ts +0 -22
- package/packages/sdk/src/gen/core/auth.gen.ts +0 -41
- package/packages/sdk/src/gen/core/bodySerializer.gen.ts +0 -74
- package/packages/sdk/src/gen/core/params.gen.ts +0 -144
- package/packages/sdk/src/gen/core/pathSerializer.gen.ts +0 -167
- package/packages/sdk/src/gen/core/queryKeySerializer.gen.ts +0 -111
- package/packages/sdk/src/gen/core/serverSentEvents.gen.ts +0 -210
- package/packages/sdk/src/gen/core/types.gen.ts +0 -91
- package/packages/sdk/src/gen/core/utils.gen.ts +0 -109
- package/packages/sdk/src/gen/sdk.gen.ts +0 -1197
- package/packages/sdk/src/gen/types.gen.ts +0 -3904
- package/packages/sdk/src/index.ts +0 -21
- package/packages/sdk/src/process.ts +0 -31
- package/packages/sdk/src/server.ts +0 -134
- package/packages/sdk/src/v2/client.ts +0 -81
- package/packages/sdk/src/v2/gen/client/client.gen.ts +0 -285
- package/packages/sdk/src/v2/gen/client/index.ts +0 -25
- package/packages/sdk/src/v2/gen/client/types.gen.ts +0 -202
- package/packages/sdk/src/v2/gen/client/utils.gen.ts +0 -289
- package/packages/sdk/src/v2/gen/client.gen.ts +0 -18
- package/packages/sdk/src/v2/gen/core/auth.gen.ts +0 -41
- package/packages/sdk/src/v2/gen/core/bodySerializer.gen.ts +0 -82
- package/packages/sdk/src/v2/gen/core/params.gen.ts +0 -169
- package/packages/sdk/src/v2/gen/core/pathSerializer.gen.ts +0 -167
- package/packages/sdk/src/v2/gen/core/queryKeySerializer.gen.ts +0 -111
- package/packages/sdk/src/v2/gen/core/serverSentEvents.gen.ts +0 -239
- package/packages/sdk/src/v2/gen/core/types.gen.ts +0 -86
- package/packages/sdk/src/v2/gen/core/utils.gen.ts +0 -137
- package/packages/sdk/src/v2/gen/sdk.gen.ts +0 -4223
- package/packages/sdk/src/v2/gen/types.gen.ts +0 -5265
- package/packages/sdk/src/v2/index.ts +0 -21
- package/packages/sdk/src/v2/server.ts +0 -134
- package/packages/util/package.json +0 -20
- package/packages/util/src/array.ts +0 -10
- package/packages/util/src/binary.ts +0 -41
- package/packages/util/src/encode.ts +0 -51
- package/packages/util/src/error.ts +0 -54
- package/packages/util/src/fn.ts +0 -11
- package/packages/util/src/identifier.ts +0 -48
- package/packages/util/src/iife.ts +0 -3
- package/packages/util/src/lazy.ts +0 -11
- package/packages/util/src/module.ts +0 -10
- package/packages/util/src/path.ts +0 -37
- package/packages/util/src/retry.ts +0 -41
- package/packages/util/src/slug.ts +0 -74
- package/postinstall.cjs +0 -55
- /package/dist/{chunk-23UYOGZG.js.map → chunk-ORHZOVWK.js.map} +0 -0
- /package/dist/{chunk-TASPMBUL.js.map → chunk-SV5NEV33.js.map} +0 -0
- /package/dist/{chunk-GSE2T5UY.js.map → chunk-ZFHDPNFZ.js.map} +0 -0
- /package/dist/{mcp-XFGN3FWW.js.map → mcp-66BBNSWA.js.map} +0 -0
- /package/dist/{registry-W4MBVBYD.js.map → registry-YVL3V6Z6.js.map} +0 -0
- /package/dist/{run-73HUV4H3.js.map → run-65PIGE2A.js.map} +0 -0
- /package/dist/{run-service-LHEVFBIU.js.map → run-service-AYATGPA6.js.map} +0 -0
- /package/dist/{server-2CPOG3LS.js.map → server-KCG3B4WQ.js.map} +0 -0
- /package/dist/{session-M6HOZ56B.js.map → session-BR5MTI3X.js.map} +0 -0
- /package/dist/{share-next-QRBVSD37.js.map → share-next-EPYQDJ32.js.map} +0 -0
- /package/dist/{worktree-3GUHT2P7.js.map → worktree-PIVTZBUE.js.map} +0 -0
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { eq } from "drizzle-orm"
|
|
2
|
-
import { Effect, Layer, Option, Schema, ServiceMap } from "effect"
|
|
3
|
-
|
|
4
|
-
import { Database } from "@/storage/db"
|
|
5
|
-
import { AccountStateTable, AccountTable } from "./account.sql"
|
|
6
|
-
import { AccessToken, AccountID, AccountRepoError, Info, OrgID, RefreshToken } from "./schema"
|
|
7
|
-
|
|
8
|
-
export type AccountRow = (typeof AccountTable)["$inferSelect"]
|
|
9
|
-
|
|
10
|
-
type DbClient = Parameters<typeof Database.use>[0] extends (db: infer T) => unknown ? T : never
|
|
11
|
-
type DbTransactionCallback<A> = Parameters<typeof Database.transaction<A>>[0]
|
|
12
|
-
|
|
13
|
-
const ACCOUNT_STATE_ID = 1
|
|
14
|
-
|
|
15
|
-
export namespace AccountRepo {
|
|
16
|
-
export interface Service {
|
|
17
|
-
readonly active: () => Effect.Effect<Option.Option<Info>, AccountRepoError>
|
|
18
|
-
readonly list: () => Effect.Effect<Info[], AccountRepoError>
|
|
19
|
-
readonly remove: (accountID: AccountID) => Effect.Effect<void, AccountRepoError>
|
|
20
|
-
readonly use: (accountID: AccountID, orgID: Option.Option<OrgID>) => Effect.Effect<void, AccountRepoError>
|
|
21
|
-
readonly getRow: (accountID: AccountID) => Effect.Effect<Option.Option<AccountRow>, AccountRepoError>
|
|
22
|
-
readonly persistToken: (input: {
|
|
23
|
-
accountID: AccountID
|
|
24
|
-
accessToken: AccessToken
|
|
25
|
-
refreshToken: RefreshToken
|
|
26
|
-
expiry: Option.Option<number>
|
|
27
|
-
}) => Effect.Effect<void, AccountRepoError>
|
|
28
|
-
readonly persistAccount: (input: {
|
|
29
|
-
id: AccountID
|
|
30
|
-
email: string
|
|
31
|
-
url: string
|
|
32
|
-
accessToken: AccessToken
|
|
33
|
-
refreshToken: RefreshToken
|
|
34
|
-
expiry: number
|
|
35
|
-
orgID: Option.Option<OrgID>
|
|
36
|
-
}) => Effect.Effect<void, AccountRepoError>
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export class AccountRepo extends ServiceMap.Service<AccountRepo, AccountRepo.Service>()("@opencode/AccountRepo") {
|
|
41
|
-
static readonly layer: Layer.Layer<AccountRepo> = Layer.effect(
|
|
42
|
-
AccountRepo,
|
|
43
|
-
Effect.gen(function* () {
|
|
44
|
-
const decode = Schema.decodeUnknownSync(Info)
|
|
45
|
-
|
|
46
|
-
const query = <A>(f: DbTransactionCallback<A>) =>
|
|
47
|
-
Effect.try({
|
|
48
|
-
try: () => Database.use(f),
|
|
49
|
-
catch: (cause) => new AccountRepoError({ message: "Database operation failed", cause }),
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
const tx = <A>(f: DbTransactionCallback<A>) =>
|
|
53
|
-
Effect.try({
|
|
54
|
-
try: () => Database.transaction(f),
|
|
55
|
-
catch: (cause) => new AccountRepoError({ message: "Database operation failed", cause }),
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
const current = (db: DbClient) => {
|
|
59
|
-
const state = db.select().from(AccountStateTable).where(eq(AccountStateTable.id, ACCOUNT_STATE_ID)).get()
|
|
60
|
-
if (!state?.active_account_id) return
|
|
61
|
-
const account = db.select().from(AccountTable).where(eq(AccountTable.id, state.active_account_id)).get()
|
|
62
|
-
if (!account) return
|
|
63
|
-
return { ...account, active_org_id: state.active_org_id ?? null }
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const state = (db: DbClient, accountID: AccountID, orgID: Option.Option<OrgID>) => {
|
|
67
|
-
const id = Option.getOrNull(orgID)
|
|
68
|
-
return db
|
|
69
|
-
.insert(AccountStateTable)
|
|
70
|
-
.values({ id: ACCOUNT_STATE_ID, active_account_id: accountID, active_org_id: id })
|
|
71
|
-
.onConflictDoUpdate({
|
|
72
|
-
target: AccountStateTable.id,
|
|
73
|
-
set: { active_account_id: accountID, active_org_id: id },
|
|
74
|
-
})
|
|
75
|
-
.run()
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const active = Effect.fn("AccountRepo.active")(() =>
|
|
79
|
-
query((db) => current(db)).pipe(Effect.map((row) => (row ? Option.some(decode(row)) : Option.none()))),
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
const list = Effect.fn("AccountRepo.list")(() =>
|
|
83
|
-
query((db) =>
|
|
84
|
-
db
|
|
85
|
-
.select()
|
|
86
|
-
.from(AccountTable)
|
|
87
|
-
.all()
|
|
88
|
-
.map((row: AccountRow) => decode({ ...row, active_org_id: null })),
|
|
89
|
-
),
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
const remove = Effect.fn("AccountRepo.remove")((accountID: AccountID) =>
|
|
93
|
-
tx((db) => {
|
|
94
|
-
db.update(AccountStateTable)
|
|
95
|
-
.set({ active_account_id: null, active_org_id: null })
|
|
96
|
-
.where(eq(AccountStateTable.active_account_id, accountID))
|
|
97
|
-
.run()
|
|
98
|
-
db.delete(AccountTable).where(eq(AccountTable.id, accountID)).run()
|
|
99
|
-
}).pipe(Effect.asVoid),
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
const use = Effect.fn("AccountRepo.use")((accountID: AccountID, orgID: Option.Option<OrgID>) =>
|
|
103
|
-
query((db) => state(db, accountID, orgID)).pipe(Effect.asVoid),
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
const getRow = Effect.fn("AccountRepo.getRow")((accountID: AccountID) =>
|
|
107
|
-
query((db) => db.select().from(AccountTable).where(eq(AccountTable.id, accountID)).get()).pipe(
|
|
108
|
-
Effect.map(Option.fromNullishOr),
|
|
109
|
-
),
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
const persistToken = Effect.fn("AccountRepo.persistToken")((input) =>
|
|
113
|
-
query((db) =>
|
|
114
|
-
db
|
|
115
|
-
.update(AccountTable)
|
|
116
|
-
.set({
|
|
117
|
-
access_token: input.accessToken,
|
|
118
|
-
refresh_token: input.refreshToken,
|
|
119
|
-
token_expiry: Option.getOrNull(input.expiry),
|
|
120
|
-
})
|
|
121
|
-
.where(eq(AccountTable.id, input.accountID))
|
|
122
|
-
.run(),
|
|
123
|
-
).pipe(Effect.asVoid),
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
const persistAccount = Effect.fn("AccountRepo.persistAccount")((input) =>
|
|
127
|
-
tx((db) => {
|
|
128
|
-
db.insert(AccountTable)
|
|
129
|
-
.values({
|
|
130
|
-
id: input.id,
|
|
131
|
-
email: input.email,
|
|
132
|
-
url: input.url,
|
|
133
|
-
access_token: input.accessToken,
|
|
134
|
-
refresh_token: input.refreshToken,
|
|
135
|
-
token_expiry: input.expiry,
|
|
136
|
-
})
|
|
137
|
-
.onConflictDoUpdate({
|
|
138
|
-
target: AccountTable.id,
|
|
139
|
-
set: {
|
|
140
|
-
email: input.email,
|
|
141
|
-
url: input.url,
|
|
142
|
-
access_token: input.accessToken,
|
|
143
|
-
refresh_token: input.refreshToken,
|
|
144
|
-
token_expiry: input.expiry,
|
|
145
|
-
},
|
|
146
|
-
})
|
|
147
|
-
.run()
|
|
148
|
-
void state(db, input.id, input.orgID)
|
|
149
|
-
}).pipe(Effect.asVoid),
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
return AccountRepo.of({
|
|
153
|
-
active,
|
|
154
|
-
list,
|
|
155
|
-
remove,
|
|
156
|
-
use,
|
|
157
|
-
getRow,
|
|
158
|
-
persistToken,
|
|
159
|
-
persistAccount,
|
|
160
|
-
})
|
|
161
|
-
}),
|
|
162
|
-
)
|
|
163
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { Schema } from "effect"
|
|
2
|
-
|
|
3
|
-
import { withStatics } from "@/util/schema"
|
|
4
|
-
|
|
5
|
-
export const AccountID = Schema.String.pipe(
|
|
6
|
-
Schema.brand("AccountID"),
|
|
7
|
-
withStatics((s) => ({ make: (id: string) => s.makeUnsafe(id) })),
|
|
8
|
-
)
|
|
9
|
-
export type AccountID = Schema.Schema.Type<typeof AccountID>
|
|
10
|
-
|
|
11
|
-
export const OrgID = Schema.String.pipe(
|
|
12
|
-
Schema.brand("OrgID"),
|
|
13
|
-
withStatics((s) => ({ make: (id: string) => s.makeUnsafe(id) })),
|
|
14
|
-
)
|
|
15
|
-
export type OrgID = Schema.Schema.Type<typeof OrgID>
|
|
16
|
-
|
|
17
|
-
export const AccessToken = Schema.String.pipe(
|
|
18
|
-
Schema.brand("AccessToken"),
|
|
19
|
-
withStatics((s) => ({ make: (token: string) => s.makeUnsafe(token) })),
|
|
20
|
-
)
|
|
21
|
-
export type AccessToken = Schema.Schema.Type<typeof AccessToken>
|
|
22
|
-
|
|
23
|
-
export const RefreshToken = Schema.String.pipe(
|
|
24
|
-
Schema.brand("RefreshToken"),
|
|
25
|
-
withStatics((s) => ({ make: (token: string) => s.makeUnsafe(token) })),
|
|
26
|
-
)
|
|
27
|
-
export type RefreshToken = Schema.Schema.Type<typeof RefreshToken>
|
|
28
|
-
|
|
29
|
-
export const DeviceCode = Schema.String.pipe(
|
|
30
|
-
Schema.brand("DeviceCode"),
|
|
31
|
-
withStatics((s) => ({ make: (code: string) => s.makeUnsafe(code) })),
|
|
32
|
-
)
|
|
33
|
-
export type DeviceCode = Schema.Schema.Type<typeof DeviceCode>
|
|
34
|
-
|
|
35
|
-
export const UserCode = Schema.String.pipe(
|
|
36
|
-
Schema.brand("UserCode"),
|
|
37
|
-
withStatics((s) => ({ make: (code: string) => s.makeUnsafe(code) })),
|
|
38
|
-
)
|
|
39
|
-
export type UserCode = Schema.Schema.Type<typeof UserCode>
|
|
40
|
-
|
|
41
|
-
export class Info extends Schema.Class<Info>("Account")({
|
|
42
|
-
id: AccountID,
|
|
43
|
-
email: Schema.String,
|
|
44
|
-
url: Schema.String,
|
|
45
|
-
active_org_id: Schema.NullOr(OrgID),
|
|
46
|
-
}) {}
|
|
47
|
-
|
|
48
|
-
export class Org extends Schema.Class<Org>("Org")({
|
|
49
|
-
id: OrgID,
|
|
50
|
-
name: Schema.String,
|
|
51
|
-
}) {}
|
|
52
|
-
|
|
53
|
-
export class AccountRepoError extends Schema.TaggedErrorClass<AccountRepoError>()("AccountRepoError", {
|
|
54
|
-
message: Schema.String,
|
|
55
|
-
cause: Schema.optional(Schema.Defect),
|
|
56
|
-
}) {}
|
|
57
|
-
|
|
58
|
-
export class AccountServiceError extends Schema.TaggedErrorClass<AccountServiceError>()("AccountServiceError", {
|
|
59
|
-
message: Schema.String,
|
|
60
|
-
cause: Schema.optional(Schema.Defect),
|
|
61
|
-
}) {}
|
|
62
|
-
|
|
63
|
-
export type AccountError = AccountRepoError | AccountServiceError
|
|
64
|
-
|
|
65
|
-
export class Login extends Schema.Class<Login>("Login")({
|
|
66
|
-
code: DeviceCode,
|
|
67
|
-
user: UserCode,
|
|
68
|
-
url: Schema.String,
|
|
69
|
-
server: Schema.String,
|
|
70
|
-
expiry: Schema.Duration,
|
|
71
|
-
interval: Schema.Duration,
|
|
72
|
-
}) {}
|
|
73
|
-
|
|
74
|
-
export class PollSuccess extends Schema.TaggedClass<PollSuccess>()("PollSuccess", {
|
|
75
|
-
email: Schema.String,
|
|
76
|
-
}) {}
|
|
77
|
-
|
|
78
|
-
export class PollPending extends Schema.TaggedClass<PollPending>()("PollPending", {}) {}
|
|
79
|
-
|
|
80
|
-
export class PollSlow extends Schema.TaggedClass<PollSlow>()("PollSlow", {}) {}
|
|
81
|
-
|
|
82
|
-
export class PollExpired extends Schema.TaggedClass<PollExpired>()("PollExpired", {}) {}
|
|
83
|
-
|
|
84
|
-
export class PollDenied extends Schema.TaggedClass<PollDenied>()("PollDenied", {}) {}
|
|
85
|
-
|
|
86
|
-
export class PollError extends Schema.TaggedClass<PollError>()("PollError", {
|
|
87
|
-
cause: Schema.Defect,
|
|
88
|
-
}) {}
|
|
89
|
-
|
|
90
|
-
export const PollResult = Schema.Union([PollSuccess, PollPending, PollSlow, PollExpired, PollDenied, PollError])
|
|
91
|
-
export type PollResult = Schema.Schema.Type<typeof PollResult>
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# ACP (Agent Client Protocol) Implementation
|
|
2
|
-
|
|
3
|
-
This directory contains a clean, protocol-compliant implementation of the [Agent Client Protocol](https://agentclientprotocol.com/) for opencode.
|
|
4
|
-
|
|
5
|
-
## Architecture
|
|
6
|
-
|
|
7
|
-
The implementation follows a clean separation of concerns:
|
|
8
|
-
|
|
9
|
-
### Core Components
|
|
10
|
-
|
|
11
|
-
- **`agent.ts`** - Implements the `Agent` interface from `@agentclientprotocol/sdk`
|
|
12
|
-
- Handles initialization and capability negotiation
|
|
13
|
-
- Manages session lifecycle (`session/new`, `session/load`)
|
|
14
|
-
- Processes prompts and returns responses
|
|
15
|
-
- Properly implements ACP protocol v1
|
|
16
|
-
|
|
17
|
-
- **`client.ts`** - Implements the `Client` interface for client-side capabilities
|
|
18
|
-
- File operations (`readTextFile`, `writeTextFile`)
|
|
19
|
-
- Permission requests (auto-approves for now)
|
|
20
|
-
- Terminal support (stub implementation)
|
|
21
|
-
|
|
22
|
-
- **`session.ts`** - Session state management
|
|
23
|
-
- Creates and tracks ACP sessions
|
|
24
|
-
- Maps ACP sessions to internal opencode sessions
|
|
25
|
-
- Maintains working directory context
|
|
26
|
-
- Handles MCP server configurations
|
|
27
|
-
|
|
28
|
-
- **`server.ts`** - ACP server startup and lifecycle
|
|
29
|
-
- Sets up JSON-RPC over stdio using the official library
|
|
30
|
-
- Manages graceful shutdown on SIGTERM/SIGINT
|
|
31
|
-
- Provides Instance context for the agent
|
|
32
|
-
|
|
33
|
-
- **`types.ts`** - Type definitions for internal use
|
|
34
|
-
|
|
35
|
-
## Usage
|
|
36
|
-
|
|
37
|
-
### Command Line
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Start the ACP server in the current directory
|
|
41
|
-
opencode acp
|
|
42
|
-
|
|
43
|
-
# Start in a specific directory
|
|
44
|
-
opencode acp --cwd /path/to/project
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Question Tool Opt-In
|
|
48
|
-
|
|
49
|
-
ACP excludes `QuestionTool` by default.
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
OPENCODE_ENABLE_QUESTION_TOOL=1 opencode acp
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Enable this only for ACP clients that support interactive question prompts.
|
|
56
|
-
|
|
57
|
-
### Programmatic
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
import { ACPServer } from "./acp/server"
|
|
61
|
-
|
|
62
|
-
await ACPServer.start()
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Integration with Zed
|
|
66
|
-
|
|
67
|
-
Add to your Zed configuration (`~/.config/zed/settings.json`):
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"agent_servers": {
|
|
72
|
-
"OpenCode": {
|
|
73
|
-
"command": "opencode",
|
|
74
|
-
"args": ["acp"]
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Protocol Compliance
|
|
81
|
-
|
|
82
|
-
This implementation follows the ACP specification v1:
|
|
83
|
-
|
|
84
|
-
✅ **Initialization**
|
|
85
|
-
|
|
86
|
-
- Proper `initialize` request/response with protocol version negotiation
|
|
87
|
-
- Capability advertisement (`agentCapabilities`)
|
|
88
|
-
- Authentication support (stub)
|
|
89
|
-
|
|
90
|
-
✅ **Session Management**
|
|
91
|
-
|
|
92
|
-
- `session/new` - Create new conversation sessions
|
|
93
|
-
- `session/load` - Resume existing sessions (basic support)
|
|
94
|
-
- Working directory context (`cwd`)
|
|
95
|
-
- MCP server configuration support
|
|
96
|
-
|
|
97
|
-
✅ **Prompting**
|
|
98
|
-
|
|
99
|
-
- `session/prompt` - Process user messages
|
|
100
|
-
- Content block handling (text, resources)
|
|
101
|
-
- Response with stop reasons
|
|
102
|
-
|
|
103
|
-
✅ **Client Capabilities**
|
|
104
|
-
|
|
105
|
-
- File read/write operations
|
|
106
|
-
- Permission requests
|
|
107
|
-
- Terminal support (stub for future)
|
|
108
|
-
|
|
109
|
-
## Current Limitations
|
|
110
|
-
|
|
111
|
-
### Not Yet Implemented
|
|
112
|
-
|
|
113
|
-
1. **Streaming Responses** - Currently returns complete responses instead of streaming via `session/update` notifications
|
|
114
|
-
2. **Tool Call Reporting** - Doesn't report tool execution progress
|
|
115
|
-
3. **Session Modes** - No mode switching support yet
|
|
116
|
-
4. **Authentication** - No actual auth implementation
|
|
117
|
-
5. **Terminal Support** - Placeholder only
|
|
118
|
-
6. **Session Persistence** - `session/load` doesn't restore actual conversation history
|
|
119
|
-
|
|
120
|
-
### Future Enhancements
|
|
121
|
-
|
|
122
|
-
- **Real-time Streaming**: Implement `session/update` notifications for progressive responses
|
|
123
|
-
- **Tool Call Visibility**: Report tool executions as they happen
|
|
124
|
-
- **Session Persistence**: Save and restore full conversation history
|
|
125
|
-
- **Mode Support**: Implement different operational modes (ask, code, etc.)
|
|
126
|
-
- **Enhanced Permissions**: More sophisticated permission handling
|
|
127
|
-
- **Terminal Integration**: Full terminal support via opencode's bash tool
|
|
128
|
-
|
|
129
|
-
## Testing
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# Run ACP tests
|
|
133
|
-
bun test test/acp.test.ts
|
|
134
|
-
|
|
135
|
-
# Test manually with stdio
|
|
136
|
-
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1}}' | opencode acp
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## Design Decisions
|
|
140
|
-
|
|
141
|
-
### Why the Official Library?
|
|
142
|
-
|
|
143
|
-
We use `@agentclientprotocol/sdk` instead of implementing JSON-RPC ourselves because:
|
|
144
|
-
|
|
145
|
-
- Ensures protocol compliance
|
|
146
|
-
- Handles edge cases and future protocol versions
|
|
147
|
-
- Reduces maintenance burden
|
|
148
|
-
- Works with other ACP clients automatically
|
|
149
|
-
|
|
150
|
-
### Clean Architecture
|
|
151
|
-
|
|
152
|
-
Each component has a single responsibility:
|
|
153
|
-
|
|
154
|
-
- **Agent** = Protocol interface
|
|
155
|
-
- **Client** = Client-side operations
|
|
156
|
-
- **Session** = State management
|
|
157
|
-
- **Server** = Lifecycle and I/O
|
|
158
|
-
|
|
159
|
-
This makes the codebase maintainable and testable.
|
|
160
|
-
|
|
161
|
-
### Mapping to OpenCode
|
|
162
|
-
|
|
163
|
-
ACP sessions map cleanly to opencode's internal session model:
|
|
164
|
-
|
|
165
|
-
- ACP `session/new` → creates internal Session
|
|
166
|
-
- ACP `session/prompt` → uses SessionPrompt.prompt()
|
|
167
|
-
- Working directory context preserved per-session
|
|
168
|
-
- Tool execution uses existing ToolRegistry
|
|
169
|
-
|
|
170
|
-
## References
|
|
171
|
-
|
|
172
|
-
- [ACP Specification](https://agentclientprotocol.com/)
|
|
173
|
-
- [TypeScript Library](https://github.com/agentclientprotocol/typescript-sdk)
|
|
174
|
-
- [Protocol Examples](https://github.com/agentclientprotocol/typescript-sdk/tree/main/src/examples)
|