Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
202 commits
Select commit Hold shift + click to select a range
9f7ecd6
feat(httpapi): bridge file read endpoints (#24098)
kitlangton Apr 24, 2026
a8c8d2d
sync release versions for v1.14.23
Apr 24, 2026
011c237
feat(httpapi): bridge mcp status endpoint (#24100)
kitlangton Apr 24, 2026
d89bfc3
chore: generate
opencode-agent[bot] Apr 24, 2026
3062d3e
fix: use existingModel as fallback for interleaved field (#24172)
07akioni Apr 24, 2026
86715fe
fix: ensure assistant messages always have reasoning on them for deep…
rekram1-node Apr 24, 2026
3a5507d
Use OpenTUI theme detection for initial TUI mode, again (#23846)
kommander Apr 24, 2026
66936b0
chore: update nix node_modules hashes
opencode-agent[bot] Apr 24, 2026
28f7d31
zen: deepseek v4 pro
fwang Apr 24, 2026
1220f78
chore: generate
opencode-agent[bot] Apr 24, 2026
28025a0
sync release versions for v1.14.24
Apr 24, 2026
d01ad4c
zen: gpt-5.5
fwang Apr 24, 2026
3776d85
zen: gpt-5.5
fwang Apr 24, 2026
4dab2a8
zen: gpt-5.5
fwang Apr 24, 2026
0405bc7
zen: gpt-5.5
fwang Apr 24, 2026
435becb
Refactor HttpApi auth middleware wiring (#24168)
kitlangton Apr 24, 2026
cf45a8d
refactor(schema): decode effect schemas directly (#24169)
kitlangton Apr 24, 2026
7a02eee
chore: generate
opencode-agent[bot] Apr 24, 2026
361d700
Clarify HttpApi migration plan (#24211)
kitlangton Apr 24, 2026
872cdff
ignore: denounce ai spammer
rekram1-node Apr 24, 2026
c4e33d3
chore: generate
opencode-agent[bot] Apr 24, 2026
4a67905
fix: ensure gpt-5.5 compacts at correct context size when using opena…
rekram1-node Apr 24, 2026
bb3509b
fix(opencode): clarify git amend condition to require verifying commi…
altendky Apr 24, 2026
5a04de2
refactor(ripgrep): migrate result schemas to effect (#24213)
kitlangton Apr 24, 2026
97eb9fd
test(httpapi): cover hono bridge middleware (#24216)
kitlangton Apr 24, 2026
5cd178b
chore: generate
opencode-agent[bot] Apr 24, 2026
1e4b7b5
Add Roslyn support for Razor and C# scripts (#24228)
Hona Apr 25, 2026
386091b
fix: validate beta before pushing (#24230)
Hona Apr 25, 2026
ec20162
chore: generate
opencode-agent[bot] Apr 25, 2026
cdc7d5f
chore: group beta PR logs (#24236)
Hona Apr 25, 2026
4989433
fix(build): add prettier to devDependencies (#23255)
b0o Apr 25, 2026
e29058c
chore: update nix node_modules hashes
opencode-agent[bot] Apr 25, 2026
f7d527c
ci: adjust auto close issue script to use not planned instead of comp…
rekram1-node Apr 25, 2026
4877ecc
Fix shell cwd after login startup (#24215)
kitlangton Apr 25, 2026
9ff999c
tool/lsp: include request details in permission metadata (#24139)
simonklee Apr 25, 2026
66f9303
fix permission config order (#24222)
thdxr Apr 25, 2026
fc88ed1
chore: generate
opencode-agent[bot] Apr 25, 2026
d748c71
ci: centralize opentui dependencies in workspace catalog
thdxr Apr 25, 2026
1b92c95
core: permission config schema now provides full IntelliSense for all…
thdxr Apr 25, 2026
bad732c
sync release versions for v1.14.25
Apr 25, 2026
d5bfaef
feat(httpapi): bridge instance read endpoints (#24258)
kitlangton Apr 25, 2026
5b0e828
chore: generate
opencode-agent[bot] Apr 25, 2026
37aa844
refactor: remove lazy cross-spawn runtime (#24305)
thdxr Apr 25, 2026
62ef2a2
refactor: rename shared package to core (#24309)
thdxr Apr 25, 2026
1d728fc
feat: add startup debug command (#24310)
thdxr Apr 25, 2026
62651c7
chore: update nix node_modules hashes
opencode-agent[bot] Apr 25, 2026
a9740b9
fix(config): preserve permission order with Effect decode (#24308)
kitlangton Apr 25, 2026
1a734ad
core: consolidate shared infrastructure into core package
thdxr Apr 25, 2026
27353df
chore: generate
opencode-agent[bot] Apr 25, 2026
fc8dae2
chore: update nix node_modules hashes
opencode-agent[bot] Apr 25, 2026
716cf74
ci: adjust review flow (#24355)
rekram1-node Apr 25, 2026
705f792
core: move Global module to @opencode-ai/core for centralized path ma…
thdxr Apr 25, 2026
eb02199
feat(httpapi): bridge catalog read endpoints (#24353)
kitlangton Apr 25, 2026
3bc0c36
chore: generate
opencode-agent[bot] Apr 25, 2026
625aca4
feat(tui): read Zed editor context from state db (#24352)
kitlangton Apr 25, 2026
05661c6
feat(httpapi): bridge file search endpoints (#24356)
kitlangton Apr 25, 2026
f91b73b
ci: fix model name
rekram1-node Apr 25, 2026
ff4b60e
chore: generate
opencode-agent[bot] Apr 25, 2026
3eee2f6
core: move cross-spawn-spawner from opencode to core package
thdxr Apr 25, 2026
1e98167
core: move cross-spawn-spawner to root and remove unused types
thdxr Apr 25, 2026
f5dce6d
core: move npm service to core package for shared dependency management
thdxr Apr 25, 2026
95d4bb2
feat(httpapi): bridge experimental read endpoints (#24365)
kitlangton Apr 25, 2026
3b74077
chore: generate
opencode-agent[bot] Apr 25, 2026
60fa708
chore: update nix node_modules hashes
opencode-agent[bot] Apr 25, 2026
b749866
feat(httpapi): bridge worktree read endpoint (#24366)
kitlangton Apr 25, 2026
9af46df
chore: generate
opencode-agent[bot] Apr 25, 2026
cd64b67
feat(tui): show /connect tip when user has no models configured (#24014)
kitlangton Apr 25, 2026
b4f4134
feat(httpapi): bridge instance dispose endpoint (#24368)
kitlangton Apr 25, 2026
474024f
chore: generate
opencode-agent[bot] Apr 25, 2026
a369130
feat(httpapi): bridge worktree mutations (#24371)
kitlangton Apr 25, 2026
75a22f8
chore: generate
opencode-agent[bot] Apr 25, 2026
df9e1d9
feat(httpapi): bridge config update endpoint (#24387)
kitlangton Apr 25, 2026
5904f59
feat(httpapi): bridge project git init endpoint (#24394)
kitlangton Apr 25, 2026
27b0877
chore: generate
opencode-agent[bot] Apr 25, 2026
58c6587
feat(httpapi): bridge project update endpoint (#24398)
kitlangton Apr 25, 2026
a14c22d
feat(httpapi): bridge mcp control endpoints (#24403)
kitlangton Apr 25, 2026
3e35c97
chore: generate
opencode-agent[bot] Apr 25, 2026
450128f
feat(httpapi): bridge mcp oauth endpoints (#24405)
kitlangton Apr 25, 2026
f77277a
chore: generate
opencode-agent[bot] Apr 25, 2026
7cab682
feat(httpapi): bridge experimental tool routes (#24407)
kitlangton Apr 26, 2026
097d930
chore: generate
opencode-agent[bot] Apr 26, 2026
f2d4d81
test(provider): avoid plugin dependency install timeout (#24416)
kitlangton Apr 26, 2026
2893588
sync
fwang Apr 26, 2026
fc6d4b4
core: Add User-Agent header to identify client version in HTTP requests
thdxr Apr 26, 2026
e7053c4
fix: bump openrouter sdk version to resolve deepseek reasoning issue …
rekram1-node Apr 26, 2026
95c43fc
chore: update nix node_modules hashes
opencode-agent[bot] Apr 26, 2026
5a5a2e5
fix: correct typo in comment (#24420)
ariane-emory Apr 26, 2026
6daa2b9
feat(httpapi): bridge experimental session list (#24478)
kitlangton Apr 26, 2026
37c5eab
chore: generate
opencode-agent[bot] Apr 26, 2026
aa5999b
feat(httpapi): bridge workspace mutations (#24483)
kitlangton Apr 26, 2026
854d4b7
chore: generate
opencode-agent[bot] Apr 26, 2026
7feb6ab
fix(docs): correct OpenCode Go DeepSeek endpoints (#24500)
MrMushrooooom Apr 26, 2026
d03e6ce
ci: update team assignments in github-triage
thdxr Apr 26, 2026
da61b02
feat(httpapi): bridge sync routes (#24484)
kitlangton Apr 26, 2026
de413c5
chore: generate
opencode-agent[bot] Apr 26, 2026
e0d1ff4
feat(httpapi): bridge session read routes (#24485)
kitlangton Apr 26, 2026
daff119
chore: generate
opencode-agent[bot] Apr 26, 2026
daaa2e5
feat(httpapi): bridge session lifecycle routes (#24486)
kitlangton Apr 26, 2026
55adcdf
chore: generate
opencode-agent[bot] Apr 26, 2026
151df05
feat(httpapi): bridge session message mutations (#24487)
kitlangton Apr 26, 2026
301ecb1
chore: generate
opencode-agent[bot] Apr 26, 2026
c5b6792
feat(httpapi): bridge remaining session routes (#24510)
kitlangton Apr 26, 2026
41f5e8a
chore: generate
opencode-agent[bot] Apr 26, 2026
79c66e3
sync
fwang Apr 26, 2026
5186c69
sync
fwang Apr 26, 2026
bbb56c2
chore: generate
opencode-agent[bot] Apr 26, 2026
00d1a7e
chore: rm empty file
rekram1-node Apr 26, 2026
dcee1c3
fix(editor): reject lock files with no workspace match for cwd (#24323)
jjjermiah Apr 26, 2026
3beadee
feat(go): add Go model listing endpoint (#24304)
MrMushrooooom Apr 26, 2026
21e01db
upgrade opentui to 0.1.104 (#24531)
kommander Apr 26, 2026
fad2618
chore: update nix node_modules hashes
opencode-agent[bot] Apr 26, 2026
af3998c
sync release versions for v1.14.26
Apr 26, 2026
c68907e
fix(tui): update toast duration handling to use default value (#23395)
OpeOginni Apr 26, 2026
e9071b0
tui: remove excessive debug logging from workspace creation flow to r…
thdxr Apr 26, 2026
58244eb
feat(httpapi): bridge event stream (#24518)
kitlangton Apr 26, 2026
c4d8a81
chore: generate
opencode-agent[bot] Apr 26, 2026
141f33d
feat: configurable shell selection + desktop settings UI (#20602)
Hona Apr 27, 2026
216dd36
feat(httpapi): bridge pty routes (#24547)
kitlangton Apr 27, 2026
60ebd07
core: refactor Installation service to use a single consolidated resu…
thdxr Apr 27, 2026
418a1cf
feat(httpapi): bridge tui routes (#24548)
kitlangton Apr 27, 2026
5f8a72b
fix(tui): hide provider checks before onboarding (#24551)
thdxr Apr 27, 2026
a3128e3
upgrade opentui to 0.1.105 (#24555)
kommander Apr 27, 2026
35734b4
chore: update nix node_modules hashes
opencode-agent[bot] Apr 27, 2026
244d1de
sync release versions for v1.14.27
Apr 27, 2026
5cf195e
go: models endpoint
fwang Apr 27, 2026
059e6c4
Update VOUCHED list
github-actions[bot] Apr 27, 2026
3525e61
fix: ignore GitHub Actions changelog contributor (#24567)
Hona Apr 27, 2026
a9b62d6
Refactor npm config handling (#24565)
thdxr Apr 27, 2026
5d8971c
go: add deepseek icon
fwang Apr 27, 2026
0cecb1b
chore: generate
opencode-agent[bot] Apr 27, 2026
e578c44
sync release versions for v1.14.28
Apr 27, 2026
025a639
fix: default tool call streaming to false for google vertex (#24573)
rekram1-node Apr 27, 2026
4a1ef32
sync
fwang Apr 27, 2026
f19d863
ignore: split up reasoning transforms (#24574)
rekram1-node Apr 27, 2026
1e191ba
update Go DeepSeek request estimates for cache pricing changes (#24575)
MrMushrooooom Apr 27, 2026
0efc616
fix(opencode): agent create generates permissions field with deny ins…
21pounder Apr 27, 2026
1770162
chore: generate
opencode-agent[bot] Apr 27, 2026
e8c2023
zen: coupons
fwang Apr 27, 2026
52b55b8
Merge branch 'fix/usage-chart' into dev
fwang Apr 27, 2026
c8b2f98
chore: generate
opencode-agent[bot] Apr 27, 2026
8718b98
fix: pass workspace symbol query to experimental LSP tool (#24576)
Hona Apr 27, 2026
2789b77
chore: generate
opencode-agent[bot] Apr 27, 2026
61eabfc
update Go DeepSeek flash limits for cache pricing drop (#24592)
MrMushrooooom Apr 27, 2026
ede354b
docs: fix duplicated word in CLI env var table (#24614)
SeashoreShi Apr 27, 2026
26cc537
chore: generate
opencode-agent[bot] Apr 27, 2026
738b306
tweak: make interleaved reasoning_content default to true for openai …
rekram1-node Apr 27, 2026
dc6991e
fix(httpapi): mount workspace bridge routes (#24626)
kitlangton Apr 27, 2026
55ecb06
fix(httpapi): accept empty session create body (#24640)
kitlangton Apr 27, 2026
f25f148
refactor: remove module barrels (#24554)
thdxr Apr 27, 2026
ccb7669
chore: generate
opencode-agent[bot] Apr 27, 2026
c361c29
fix: ensure toolStreaming is set to off by default when using non ant…
rekram1-node Apr 27, 2026
5290e9c
fix(tui): stabilize Zed editor context polling (#24656)
kitlangton Apr 27, 2026
7a1c846
chore: generate
opencode-agent[bot] Apr 27, 2026
51fc10e
fix(httpapi): enforce instance route parity (#24660)
kitlangton Apr 27, 2026
fab1768
feat(core): file context improvements and option to disable (#24661)
jlongster Apr 27, 2026
45eac58
fix(tui): preserve Zed context on terminal focus (#24662)
kitlangton Apr 27, 2026
f584f80
test(httpapi): verify reflected route mounts (#24663)
kitlangton Apr 27, 2026
9cd2e3a
chore: generate
opencode-agent[bot] Apr 27, 2026
e0f3df8
fix(tui): consume Enter in dialog useKeyboard handlers (#23390)
CasualDeveloper Apr 27, 2026
139c4fd
fix(session): harden shell cancellation (#24553)
kitlangton Apr 27, 2026
acd15dc
test(httpapi): cover full OpenAPI route inventory (#24667)
kitlangton Apr 27, 2026
dfc0075
chore: generate
opencode-agent[bot] Apr 27, 2026
576efed
fix(httpapi): preserve optional session fields (#24671)
kitlangton Apr 27, 2026
c4a2353
fix(session): omit undefined optional fields (#24676)
kitlangton Apr 27, 2026
ce78a42
fix(session): remove compaction summary dividers (#24677)
kitlangton Apr 27, 2026
c103202
test(httpapi): cover session json parity (#24682)
kitlangton Apr 27, 2026
faca24d
fix(httpapi): align session boolean query parsing (#24693)
kitlangton Apr 28, 2026
0eaa47d
chore: generate
opencode-agent[bot] Apr 28, 2026
892fd85
fix(httpapi): preserve provider oauth authorize parity (#24703)
kitlangton Apr 28, 2026
bad4599
chore: generate
opencode-agent[bot] Apr 28, 2026
704eb00
chore: bump effect beta (#24705)
kitlangton Apr 28, 2026
937a7c4
chore: update nix node_modules hashes
opencode-agent[bot] Apr 28, 2026
4d74849
fix(tui): keep Zed context polling responsive (#24711)
kitlangton Apr 28, 2026
796b652
fix(httpapi): preserve mcp oauth error parity (#24706)
kitlangton Apr 28, 2026
cd7ec93
chore: generate
opencode-agent[bot] Apr 28, 2026
c8d9f7a
refactor(app): load sync state through TanStack Query (#23792)
Brendonovich Apr 28, 2026
528fb1d
fix: sanitize tools for moonshot (#24730)
rekram1-node Apr 28, 2026
bb9e445
chore: generate
opencode-agent[bot] Apr 28, 2026
b420952
Update VOUCHED list
github-actions[bot] Apr 28, 2026
9d1f17d
fix(ui): remove redundant flex overrides in tool components (#24749)
Brendonovich Apr 28, 2026
aa07f38
fix(app): preserve per-workspace icon override from localStorage (#24…
Brendonovich Apr 28, 2026
2a4f2bf
fix(httpapi): align sync seq validation
kitlangton Apr 28, 2026
e57d0c2
fix(httpapi): document tui bad request responses
kitlangton Apr 28, 2026
3fa78a8
docs: bump GitHub stars count to 150K (#24792)
iamdavidhill Apr 28, 2026
7739cc5
refactor(httpapi): fork server startup by flag (#24799)
kitlangton Apr 28, 2026
9b68b71
chore: generate
opencode-agent[bot] Apr 28, 2026
ea3c6c3
fix(httpapi): document instance query parameters (#24809)
kitlangton Apr 28, 2026
2c2fc34
feat(core): store relative path for sessions (#24704)
jlongster Apr 28, 2026
c00058e
fix(httpapi): align request body openapi shape (#24811)
kitlangton Apr 28, 2026
5e67efc
release: v1.14.29
Apr 28, 2026
7d375b9
refactor: kilo compat for v1.14.29
Apr 29, 2026
3f70375
resolve merge conflicts
Apr 30, 2026
5d5fab3
fix(cli): repair broken imports and typecheck after opencode v1.14.29…
Apr 30, 2026
a16e056
Merge remote-tracking branch 'origin/main' into markijbema/kilo-openc…
May 4, 2026
1732628
fix md
May 4, 2026
fcd232f
fix semantic merge conflicts
May 4, 2026
2f424ec
update links
May 4, 2026
75dfebc
fix semantic merge conflicts
May 4, 2026
bccc27c
Merge remote-tracking branch 'origin/main' into markijbema/kilo-openc…
May 4, 2026
0cd2524
remove unused imports
May 4, 2026
a8af251
temporarily disable tests
May 4, 2026
4899b21
temporarily disable tests
May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/disabled/review.yml.disabled
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ jobs:

- name: Check PR guidelines compliance
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: '{ "bash": { "*": "deny", "gh*": "allow", "gh pr review*": "deny" } }'
PR_TITLE: ${{ steps.pr-details.outputs.title }}
run: |
PR_BODY=$(jq -r .body pr_data.json)
opencode run -m anthropic/claude-opus-4-5 "A new pull request has been created: '${PR_TITLE}'
opencode run -m opencode/gpt-5.5 --variant medium "A new pull request has been created: '${PR_TITLE}'

<pr-number>
${{ steps.pr-number.outputs.number }}
Expand Down
29 changes: 19 additions & 10 deletions .opencode/skills/effect/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
---
name: effect
description: Answer questions about the Effect framework
description: Work with Effect v4 / effect-smol TypeScript code in this repo
---

# Effect

This codebase uses Effect, a framework for writing typescript.
This codebase uses Effect for typed, composable TypeScript services, schemas, and workflows.

## How to Answer Effect Questions
## Source Of Truth

1. Clone the Effect repository: `https://github.com/Effect-TS/effect-smol` to
`.opencode/references/effect-smol` in this project NOT the skill folder.
2. Use the explore agent to search the codebase for answers about Effect patterns, APIs, and concepts
3. Provide responses based on the actual Effect source code and documentation
Use the current Effect v4 / effect-smol source, not memory or older Effect v2/v3 examples.

1. If `.opencode/references/effect-smol` is missing, clone `https://github.com/Effect-TS/effect-smol` there. Do this in the project, not in the skill folder.
2. Search `.opencode/references/effect-smol` for exact APIs, examples, tests, and naming patterns before answering or implementing Effect-specific code.
3. Also inspect existing repo code for local house style before introducing new patterns.
4. Prefer answers and implementations backed by specific source files or nearby repo examples.

## Guidelines

- Always use the explore agent with the cloned repository when answering Effect-related questions
- Reference specific files and patterns found in the Effect codebase
- Do not answer from memory - always verify against the source
- Prefer current Effect v4 APIs and project-local patterns over old blog posts, examples, or package-memory guesses.
- Use `Effect.gen(function* () { ... })` for multi-step workflows.
- Use `Effect.fn("Name")` or `Effect.fnUntraced(...)` for named effects when adding reusable service methods or important workflows.
- Prefer Effect `Schema` for API and domain data shapes. Use branded schemas for IDs and `Schema.TaggedErrorClass` for typed domain errors when modeling new error surfaces.
- Keep HTTP handlers thin: decode input, read request context, call services, and map transport errors. Put business rules in services.
- In Effect service code, prefer Effect-aware platform abstractions and dependencies over ad hoc promises where the surrounding code already does so.
- Keep layer composition explicit. Avoid broad hidden provisioning that makes missing dependencies hard to see.
- In tests, prefer the repo's existing Effect test helpers and live tests for filesystem, git, child process, locks, or timing behavior.
- Do not introduce `any`, non-null assertions, unchecked casts, or older Effect APIs just to satisfy types.
- Do not answer from memory. Verify against `.opencode/references/effect-smol` or nearby code first.
4 changes: 2 additions & 2 deletions .opencode/tool/github-triage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { tool } from "@kilocode/plugin"
const TEAM = {
desktop: ["adamdotdevin", "iamdavidhill", "Brendonovich", "nexxeln"],
zen: ["fwang", "MrMushrooooom"],
tui: ["thdxr", "kommander", "rekram1-node"],
core: ["thdxr", "rekram1-node", "jlongster"],
tui: ["kommander", "rekram1-node", "simonklee"],
core: ["kitlangton", "rekram1-node", "jlongster"],
docs: ["R44VC0RP"],
windows: ["Hona"],
} as const
Expand Down
119 changes: 66 additions & 53 deletions bun.lock

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions kilocode-2.code-workspace
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"folders": [
{
"path": ".",
},
],
"settings": {
"window.title": "[main] Fix QuestionDock clickable options",
"peacock.color": "#ff3d00",
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#ff6433",
"activityBar.background": "#ff6433",
"activityBar.foreground": "#15202b",
"activityBar.inactiveForeground": "#15202b99",
"activityBarBadge.background": "#00ff3d",
"activityBarBadge.foreground": "#15202b",
"commandCenter.border": "#e7e7e799",
"sash.hoverBorder": "#ff6433",
"statusBar.background": "#ff3d00",
"statusBar.foreground": "#e7e7e7",
"statusBarItem.hoverBackground": "#ff6433",
"statusBarItem.remoteBackground": "#ff3d00",
"statusBarItem.remoteForeground": "#e7e7e7",
"titleBar.activeBackground": "#ff3d00",
"titleBar.activeForeground": "#e7e7e7",
"titleBar.inactiveBackground": "#ff3d0099",
"titleBar.inactiveForeground": "#e7e7e799"
},
},
}
2 changes: 1 addition & 1 deletion nix/kilo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
[
ripgrep
]
# bun runs sysctl to detect if dunning on rosetta2
# bun runs sysctl to detect if running on rosetta2
++ lib.optional stdenvNoCC.hostPlatform.isDarwin sysctl
)
}
Expand Down
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@
"packages/sdk/js"
],
"catalog": {
"@effect/opentelemetry": "4.0.0-beta.48",
"@effect/platform-node": "4.0.0-beta.48",
"@effect/opentelemetry": "4.0.0-beta.57",
"@effect/platform-node": "4.0.0-beta.57",
"@npmcli/arborist": "9.4.0",
"@types/bun": "1.3.12",
"@types/cross-spawn": "6.0.6",
"@octokit/rest": "22.0.0",
"@hono/zod-validator": "0.4.2",
"@opentui/core": "0.1.99",
"@opentui/solid": "0.1.99",
"@opentui/core": "0.1.105",
"@opentui/solid": "0.1.105",
"ulid": "3.0.1",
"@kobalte/core": "0.13.11",
"@types/luxon": "3.7.1",
Expand All @@ -46,13 +46,14 @@
"@cloudflare/workers-types": "4.20251008.0",
"@openauthjs/openauth": "0.0.0-20250322224806",
"@pierre/diffs": "1.1.0-beta.18",
"opentui-spinner": "0.0.6",
"@solid-primitives/storage": "4.3.3",
"@tailwindcss/vite": "4.1.11",
"diff": "8.0.4",
"dompurify": "3.3.3",
"drizzle-kit": "1.0.0-beta.19-d95b7a4",
"drizzle-orm": "1.0.0-beta.19-d95b7a4",
"effect": "4.0.0-beta.48",
"effect": "4.0.0-beta.57",
"ai": "6.0.168",
"cross-spawn": "7.0.6",
"hono": "4.12.12",
Expand Down
4 changes: 2 additions & 2 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
"@kobalte/core": "catalog:",
"@kilocode/sdk": "workspace:*",
"@opencode-ai/ui": "workspace:*",
"@opencode-ai/shared": "workspace:*",
"@shikijs/transformers": "3.9.2",
"@solid-primitives/active-element": "2.1.3",
"@solid-primitives/audio": "1.4.2",
Expand Down Expand Up @@ -74,7 +73,8 @@
"virtua": "catalog:",
"zod": "catalog:",
"@kilocode/kilo-ui": "workspace:*",
"@kilocode/kilo-i18n": "workspace:*"
"@kilocode/kilo-i18n": "workspace:*",
"@opencode-ai/core": "workspace:*"
},
"peerDependencies": {}
}
10 changes: 9 additions & 1 deletion packages/app/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,15 @@ declare global {
}

function QueryProvider(props: ParentProps) {
const client = new QueryClient()
const client = new QueryClient({
defaultOptions: {
queries: {
refetchOnReconnect: false,
refetchOnMount: false,
refetchOnWindowFocus: false,
},
},
})
return <QueryClientProvider client={client}>{props.children}</QueryClientProvider>
}

Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/dialog-edit-project.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { createStore } from "solid-js/store"
import { useGlobalSDK } from "@/context/global-sdk"
import { useGlobalSync } from "@/context/global-sync"
import { type LocalProject, getAvatarColors } from "@/context/layout"
import { getFilename } from "@opencode-ai/shared/util/path"
import { getFilename } from "@opencode-ai/core/util/path"
import { Avatar } from "@opencode-ai/ui/avatar"
import { useLanguage } from "@/context/language"
import { getProjectAvatarSource } from "@/pages/layout/sidebar-items"
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/dialog-fork.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { List } from "@opencode-ai/ui/list"
import { showToast } from "@opencode-ai/ui/toast"
import { extractPromptFromParts } from "@/utils/prompt"
import type { TextPart as SDKTextPart } from "@kilocode/sdk/v2/client"
import { base64Encode } from "@opencode-ai/shared/util/encode"
import { base64Encode } from "@opencode-ai/core/util/encode"
import { useLanguage } from "@/context/language"

interface ForkableMessage {
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/dialog-select-directory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Dialog } from "@opencode-ai/ui/dialog"
import { FileIcon } from "@opencode-ai/ui/file-icon"
import { List } from "@opencode-ai/ui/list"
import type { ListRef } from "@opencode-ai/ui/list"
import { getDirectory, getFilename } from "@opencode-ai/shared/util/path"
import { getDirectory, getFilename } from "@opencode-ai/core/util/path"
import fuzzysort from "fuzzysort"
import { createMemo, createResource, createSignal } from "solid-js"
import { useGlobalSDK } from "@/context/global-sdk"
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/components/dialog-select-file.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { FileIcon } from "@opencode-ai/ui/file-icon"
import { Icon } from "@opencode-ai/ui/icon"
import { Keybind } from "@opencode-ai/ui/keybind"
import { List } from "@opencode-ai/ui/list"
import { base64Encode } from "@opencode-ai/shared/util/encode"
import { getDirectory, getFilename } from "@opencode-ai/shared/util/path"
import { base64Encode } from "@opencode-ai/core/util/encode"
import { getDirectory, getFilename } from "@opencode-ai/core/util/path"
import { useNavigate } from "@solidjs/router"
import { createMemo, createSignal, Match, onCleanup, Show, Switch } from "solid-js"
import { formatKeybind, useCommand, type CommandOption } from "@/context/command"
Expand Down
62 changes: 7 additions & 55 deletions packages/app/src/components/dialog-select-mcp.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { useMutation } from "@tanstack/solid-query"
import { Component, createEffect, createMemo, on, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { useMutation, useQueryClient } from "@tanstack/solid-query"
import { Component, createMemo, Show } from "solid-js"
import { useSync } from "@/context/sync"
import { useSDK } from "@/context/sdk"
import { Dialog } from "@opencode-ai/ui/dialog"
import { List } from "@opencode-ai/ui/list"
import { Switch } from "@opencode-ai/ui/switch"
import { showToast } from "@opencode-ai/ui/toast"
import { useLanguage } from "@/context/language"
import { loadMcpQuery } from "@/context/global-sync"

const statusLabels = {
connected: "mcp.status.connected",
Expand All @@ -20,48 +19,7 @@ export const DialogSelectMcp: Component = () => {
const sync = useSync()
const sdk = useSDK()
const language = useLanguage()
const [state, setState] = createStore({
done: false,
loading: false,
})

createEffect(
on(
() => sync.data.mcp_ready,
(ready, prev) => {
if (!ready && prev) setState("done", false)
},
{ defer: true },
),
)

createEffect(() => {
if (state.done || state.loading) return
if (sync.data.mcp_ready) {
setState("done", true)
return
}

setState("loading", true)
void sdk.client.mcp
.status()
.then((result) => {
sync.set("mcp", result.data ?? {})
sync.set("mcp_ready", true)
setState("done", true)
})
.catch((err) => {
setState("done", true)
showToast({
variant: "error",
title: language.t("common.requestFailed"),
description: err instanceof Error ? err.message : String(err),
})
})
.finally(() => {
setState("loading", false)
})
})
const queryClient = useQueryClient()

const items = createMemo(() =>
Object.entries(sync.data.mcp ?? {})
Expand All @@ -71,16 +29,10 @@ export const DialogSelectMcp: Component = () => {

const toggle = useMutation(() => ({
mutationFn: async (name: string) => {
const status = sync.data.mcp[name]
if (status?.status === "connected") {
await sdk.client.mcp.disconnect({ name })
} else {
await sdk.client.mcp.connect({ name })
}

const result = await sdk.client.mcp.status()
if (result.data) sync.set("mcp", result.data)
if (sync.data.mcp[name]?.status === "connected") await sdk.client.mcp.disconnect({ name })
else await sdk.client.mcp.connect({ name })
},
onSuccess: () => queryClient.refetchQueries({ queryKey: loadMcpQuery(sync.directory).queryKey }),
}))

const enabledCount = createMemo(() => items().filter((i) => i.status === "connected").length)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getFilename } from "@opencode-ai/shared/util/path"
import { getFilename } from "@opencode-ai/core/util/path"
import { type AgentPartInput, type FilePartInput, type Part, type TextPartInput } from "@kilocode/sdk/v2/client"
import type { FileSelection } from "@/context/file"
import { encodeFilePath } from "@/context/file/path"
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/prompt-input/context-items.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Component, For, Show } from "solid-js"
import { FileIcon } from "@opencode-ai/ui/file-icon"
import { IconButton } from "@opencode-ai/ui/icon-button"
import { Tooltip } from "@opencode-ai/ui/tooltip"
import { getDirectory, getFilename, getFilenameTruncated } from "@opencode-ai/shared/util/path"
import { getDirectory, getFilename, getFilenameTruncated } from "@opencode-ai/core/util/path"
import type { ContextItem } from "@/context/prompt"

type PromptContextItem = ContextItem & { key: string }
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/prompt-input/slash-popover.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Component, For, Match, Show, Switch } from "solid-js"
import { FileIcon } from "@opencode-ai/ui/file-icon"
import { Icon } from "@opencode-ai/ui/icon"
import { getDirectory, getFilename } from "@opencode-ai/shared/util/path"
import { getDirectory, getFilename } from "@opencode-ai/core/util/path"

export type AtOption =
| { type: "agent"; name: string; display: string }
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/prompt-input/submit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ beforeAll(async () => {
showToast: () => 0,
}))

mock.module("@opencode-ai/shared/util/encode", () => ({
mock.module("@opencode-ai/core/util/encode", () => ({
base64Encode: (value: string) => value,
}))

Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/components/prompt-input/submit.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Message, Session } from "@kilocode/sdk/v2/client"
import { showToast } from "@opencode-ai/ui/toast"
import { base64Encode } from "@opencode-ai/shared/util/encode"
import { Binary } from "@opencode-ai/shared/util/binary"
import { base64Encode } from "@opencode-ai/core/util/encode"
import { Binary } from "@opencode-ai/core/util/binary"
import { useNavigate, useParams } from "@solidjs/router"
import { batch, type Accessor } from "solid-js"
import type { FileSelection } from "@/context/file"
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/components/session/session-context-tab.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createMemo, createEffect, on, onCleanup, For, Show } from "solid-js"
import type { JSX } from "solid-js"
import { useSync } from "@/context/sync"
import { checksum } from "@opencode-ai/shared/util/encode"
import { findLast } from "@opencode-ai/shared/util/array"
import { checksum } from "@opencode-ai/core/util/encode"
import { findLast } from "@opencode-ai/core/util/array"
import { same } from "@/utils/same"
import { Icon } from "@opencode-ai/ui/icon"
import { Accordion } from "@opencode-ai/ui/accordion"
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/session/session-header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Keybind } from "@opencode-ai/ui/keybind"
import { Spinner } from "@opencode-ai/ui/spinner"
import { showToast } from "@opencode-ai/ui/toast"
import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
import { getFilename } from "@opencode-ai/shared/util/path"
import { getFilename } from "@opencode-ai/core/util/path"
import { createEffect, createMemo, createSignal, For, onMount, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { Portal } from "solid-js/web"
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/components/session/session-new-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useSDK } from "@/context/sdk"
import { useLanguage } from "@/context/language"
import { Icon } from "@opencode-ai/ui/icon"
import { Mark } from "@opencode-ai/ui/logo"
import { getDirectory, getFilename } from "@opencode-ai/shared/util/path"
import { getDirectory, getFilename } from "@opencode-ai/core/util/path"

const MAIN_WORKTREE = "main"
const CREATE_WORKTREE = "create"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { FileIcon } from "@opencode-ai/ui/file-icon"
import { IconButton } from "@opencode-ai/ui/icon-button"
import { TooltipKeybind } from "@opencode-ai/ui/tooltip"
import { Tabs } from "@opencode-ai/ui/tabs"
import { getFilename } from "@opencode-ai/shared/util/path"
import { getFilename } from "@opencode-ai/core/util/path"
import { useFile } from "@/context/file"
import { useLanguage } from "@/context/language"
import { useCommand } from "@/context/command"
Expand Down
Loading
Loading