CodeNomad/docs/help/ne/opencode.md
Pascal André 39c0fa5833
chore(opencode): qualify and recommend runtime 2.1.4 (#1126)
## Summary

- Qualify OpenCode **2.1.4** (latest stable, 23 October) with the
existing locked **2.1.0 client/plugin** dependencies, and **recommend**
it.
- Keep the technical **minimum at 2.1.2**: no consumed contract changed,
so the minimum has no new reason to move.
- 2.1.2 and 2.1.3 daemons stay ready and get an optional upgrade offer.
2.1.4 is the `tested` version. Newer and custom labels keep
authenticated contract recognition.
- The reviewed-contract fast path lists the 2.1.2 minimum and the 2.1.4
target.
- The recommended version is updated in the help (all ten locales), both
READMEs, `CONTRIBUTING.md`, `dev-docs/OPENCODE_COMPATIBILITY.md` and the
architecture skill.

## Contract review (v2.1.3 → v2.1.4, 72 commits)

- **Authenticated OpenAPI:** 121 → **124 paths**, 146 → **149
operations**. No operation changed. The changes:
  - added `POST /api/experimental/client-mcp/token`;
  - added `GET /api/experimental/client-mcp` (WebSocket);
  - added `POST /api/debug/heap-dump`;
- `Config.InfoEncoded` gains the opt-in
`experimental.background_compaction`.

The session event (`V2EventEncoded`) and message schemas are unchanged.
None of the new routes is on the instance proxy allowlist, and the proxy
relays WebSockets only for SideCars and previews.
- **Published declarations:**
  - the client adds `mcp.client.token` and `debug.heapDump`;
- the schema and plugin changes are type refactors and unused-export
removals, among them `SessionID.descending`, `SessionEvent.Source` and
`PromptInput.FileAttachment.create`; `Session.Message.ID.fromEvent` now
takes any string instead of an event ID. CodeNomad uses none of these,
and every host module its native plugin bundles import
(`@opencode/plugin`, `/effect`, `/promise/adapter`, `/rpc`,
`@opencode/schema/location`, `/session`) still exists.
- **MCP elicitation forms**
([#58184](https://github.com/anomalyco/opencode/pull/58184)): an MCP
server asking for input during a tool call now creates a global-session
Form whose `form.created` event carries the server's location.
CodeNomad's live path requires that location for global Forms and shows
them as a **Project request**. Review found that the live path dropped
the location from the queued Form, so its reply lacked
`x-opencode-directory` and failed for a worktree or subdirectory until a
pending-request rescan. **#1127** fixes that; recovery already kept it.

A native probe (minimal stdio MCP server, a real Code Mode `execute`
call, CodeNomad-style reply) gives:

| Runtime | Form listed for the location | `form.created` carries the
location | Reply completes the tool |
  | --- | --- | --- | --- |
  | 2.1.3 | yes | **no** | yes |
  | 2.1.4 | yes | **yes** | yes (`action: accept`, `channel: stable`) |

On 2.1.3 such a request only appeared after a pending-request rescan; on
2.1.4 it appears live. The probe sends the location header itself, so it
checks the runtime contract; #1127 covers CodeNomad's live reply path.
- **Other changes** are covered by the native suites below:
- compaction (oldest-first shortening, ignored buffers, overflow
detection);
  - the agent's model for sessions without one;
  - V2 agent files;
  - V1 global-session import attribution;
  - MCP lifecycle fixes.
- **Live check:** this machine's shared daemon runs 2.1.4, and the
CodeNomad desktop session works through it.

## Isolated Windows qualification

Base: dev `9ac792fff`; Node **24.20.0**; exact official CLI **2.1.4**;
unchanged locked client/plugin **2.1.0**.

- **Build and checks:** production server/UI/native plugin builds,
server and root typechecks, native bundle guard.
- **Native runtime (9/9):**
  - Code Mode job ordering, plugin runtime, automation;
  - complete pruning, history, ownership, worktree and event relay;
  - loaded-only pending snapshot;
- Missions contract, family control, native and Compare/Wayfinder
trajectory.
- **Sessions (15/15):** environment, fork, aside, interrupt, lifecycle,
blank cleanup, prompt skills, provider usage/accounts/selection, service
usage, web search, plugin packages, output limit, Promise-tool failure.
- **Recurring (5/5):** all **11 recurring Mission journeys**, subagent
depth, **2 MiB** compaction, permission receipts.
- **Migrations (10/10):**
- history from **2.0.3, beta-19271, 2.0.32, 2.1.0, 2.1.1, 2.1.2 and
2.1.3** to 2.1.4;
  - Git degraded/init;
  - temporary workspaces.
- **Installation (3/3), with the 2.1.4 recommendation:**
  - fresh install of the 2.1.2 minimum;
- native **2.0.15 → 2.1.4** upgrade, after which the already-running
daemon keeps its PID and 2.0.15 version;
  - explicit OpenCode **1.18.10 → 2.1.4** replacement.
- **After the recommendation change:**
- admission, transport, update, installation and instance proxy units
**116 passed, 1 POSIX-only skipped**;
  - full server **2,471 passed, 8 skipped**, no failure or cancellation;
  - UI units **1,699/1,699**;
  - focused browser **126/126**;
  - native pruning with the real rendered UI;
  - the exact CI invocation of the Code Mode regression (without tsx);
  - ten-locale help checks (**9/9**).

This is Windows automation evidence. In CI, `latest` resolves to 2.1.4:
the compatibility job runs the native suites against the minimum and
latest on Windows, and the migration and Git-degraded certification runs
them on Ubuntu, Windows and macOS. WSL, packaged desktop,
installers/updater end-to-end and real mobile devices keep their
separate release gates.
2026-10-24 13:34:36 +02:00

71 lines
18 KiB
Markdown

# OpenCode सेटअप
CodeNomad कार्यान्वयन होस्टको साझा OpenCode सेवासँग जोडिन्छ। CLI चयन, त्यसका फाइल अपडेट, सेवा पुनःसुरुवात र कन्फिगरेसन reload फरक कार्य हुन्; कुनै अर्कोको विकल्प होइन।
## CLI चयन वा स्थापना {#select-cli}
1. **सेटिङहरू → OpenCode** खोलेर executable चयन गर्न **OpenCode संस्करण** मुनिको **OpenCode बाइनरी** card प्रयोग गर्नुहोस्।
2. सर्भरको PATH (त्यसमा पुरानो OpenCode भएबाहेक), त्यसपछि त्यसको user npm OpenCode 2 स्थापना प्राथमिकता दिन स्वचालित प्रविष्टि चयनमै राख्नुहोस्; वा **बाइनरीको लागि ब्राउज गर्नुहोस्...** प्रयोग गर्नुहोस् अथवा मार्ग भरी **थप्नुहोस्** रोज्नुहोस्।
3. **स्थिति र अपडेट जाँच गर्नुहोस्** प्रयोग गर्नुहोस्। OpenCode नभए **OpenCode स्थापना गरी सुरु गर्नुहोस्** रोज्नुहोस्; पहिले होस्ट र स्थापना दायरा समीक्षा गर्नुहोस्।
4. सेटअपले **जडान गरी जारी राख्नुहोस्** दिए बताइएको समस्या समाधानपछि प्रयोग गर्नुहोस्।
स्थापनाले अन्य क्लाइन्टसँग साझा हुने सामान्य user स्थापनाका लागि bundled Node/npm प्रयोग गर्छ। **प्रयोगकर्ताका लागि स्थापना गरी PATH मिलाउनुहोस्** ले त्यस प्रयोगकर्ताको terminal सेटअप बदल्छ; त्यसपछि नयाँ terminal खोल्नुहोस्। ब्राउजर CodeNomad सर्भरसँग जोडिन्छ: यसको file picker र executable चयन त्यस सर्भरका हुन्, ब्राउज गर्ने उपकरणका होइनन्।
PATH मा पुरानो OpenCode पहिले आउँदा दिइने कार्य त्यो कसरी स्थापना गरिएको थियो भन्नेमा निर्भर हुन्छ। npm बाट स्थापित OpenCode 1.x का लागि **OpenCode {version} लाई OpenCode 2 ले प्रतिस्थापन गर्नुहोस्** ले पुष्टि माग्छ, त्यो npm package हटाउँछ र उही npm फोल्डरमा OpenCode 2 स्थापना गर्छ; OpenCode डेटा फोल्डर राखिन्छ, र OpenCode 2 ले 1.x कुराकानी आफैं import गर्छ। अर्कै तरिकाले (winget, Homebrew, हातैले) स्थापित पुरानो वा प्रयोग गर्न नमिल्ने OpenCode कहिल्यै बदलिँदैन: **CodeNomad का लागि OpenCode 2 स्थापना गर्नुहोस्** ले त्यसको छेउमा user npm फोल्डरमा OpenCode 2 स्थापना गर्छ, र त्यसपछि CodeNomad ले त्यही प्रतिलिपि प्रयोग गर्छ। यदि त्यो पुरानो आदेश आफैं user npm फोल्डरमा छ (जस्तै `~/.local/bin` मा link), वा त्यो फोल्डरमा लेख्न सकिँदैन भने, setup ले यो कार्य देखाउनुको सट्टा कारण बताउँछ: आदेश सार्नुहोस् वा पुनः नामकरण गर्नुहोस्, वा फोल्डरको अनुमति सच्याउनुहोस्, त्यसपछि **स्थिति र अपडेट जाँच गर्नुहोस्** रोज्नुहोस्। terminal को `opencode` आदेशले अझै पुरानो संस्करण सुरु गर्न सक्छ। स्पष्ट चयन गरिएको custom executable कहिल्यै प्रतिस्थापन हुँदैन।
स्थापित executable र चलिरहेको सेवाका संस्करण फरक हुन सक्छन्। अर्को executable चयनले live daemon बदलियो नभनी **OpenCode संस्करण** card मा **स्थापित संस्करण** र **चलिरहेको सेवा** तुलना गर्नुहोस्; **संस्करणका विवरण** ले न्यूनतम र सिफारिस संस्करण सूचीबद्ध गर्छ। स्थापना व्यस्त वा executable lock भए installer वा प्रक्रियाले छोड्न पर्खेर पुनःप्रयासअघि स्थिति जाँच्नुहोस्; प्रतिस्पर्धी installer नचलाउनुहोस्।
## आवश्यक, सिफारिस र अप्रमाणित संस्करण {#versions}
| वर्ग | हालको आवश्यकता | अर्थ |
| --- | --- | --- |
| न्यूनतम | OpenCode **2.1.2** | Code Mode मा JavaScript कार्यहरूको सही कार्यान्वयन क्रम र 2.1 को मूल रिप्ले तथा कम्प्याक्सन ढाँचा; पुराना संस्करणले सुरक्षित गरेका कुराकानीहरू अद्यावधिक गरेपछि पनि पढ्न सकिन्छ। |
| सिफारिस | OpenCode **2.1.4** | योग्य ठहरिएको लक्ष्य, प्राविधिक न्यूनतमभन्दा फरक। |
| अप्रमाणित | पूर्ण जाँच नभएको नयाँ वा custom संस्करण | परीक्षण नभएकै कारण अस्वीकार हुँदैन; जोडिएको सेवाका वास्तविक API contract जाँचिन्छन्। |
आवश्यक session, permission, Form, inbox र session-environment contract पनि उपलब्ध हुनुपर्छ। executable संस्करणले मात्र जोडिएको सेवाको समर्थन प्रमाणित गर्दैन। सेटअपले चलिरहेको सेवा असमर्थित भने समर्थित CLI चयन/स्थापना गरी तयार हुँदा स्पष्ट साझा-सेवा पुनःसुरुवात प्रयोग गर्नुहोस्।
## होस्ट, WSL र साझा-सेवा दायरा {#execution-host}
Windows मा चयनित WSL executable रोजिएको वितरणभित्र चल्छ। त्यहीं स्थापना/अपडेट गर्नुहोस् र त्यस वितरणभित्र अर्थपूर्ण मार्ग प्रयोग गर्नुहोस्। WSL जडान Windows localhost forwarding मा निर्भर छ। Windows CLI र WSL CLI साट्न मिल्ने कार्यान्वयन वातावरण होइनन्।
OpenCode को global service registration, सत्र, सन्देश र database OpenCode कै हुन्। CodeNomad ले विन्डो वा परियोजनापिच्छे निजी OpenCode database बनाउँदैन। परियोजना ट्याब बन्द गर्दा त्यो परियोजना CodeNomad मा बन्द हुन्छ; सत्र OpenCode मा चलिरहन्छन् र परियोजना फेरि खोल्दा देखिन्छन्। CodeNomad ले नेटिभ Location कहिल्यै unload गर्दैन। पूरै विन्डो बन्द गर्दा, एप बन्द गर्दा वा reload गर्दा परियोजना जडान पुनर्स्थापनाका लागि राखिन्छन्; ती कार्य वा ब्याकएन्ड बन्द हुँदा पनि साझा daemon रोकिँदैन। [परियोजना](projects.md) हेर्नुहोस्।
## अपडेट, पुनःसुरुवात वा reload {#maintenance}
1. **सेटिङहरू → OpenCode** मा **स्थिति र अपडेट जाँच गर्नुहोस्** रोज्नुहोस्।
2. स्थापित CLI फाइल बदल्न उपलब्ध हुँदा **OpenCode {version} मा अद्यावधिक गर्नुहोस्** रोजी सकिन पर्खनुहोस्।
3. चलिरहेको सेवाको स्थिति समीक्षा गर्नुहोस्। हरेक जोडिएको क्लाइन्टका लागि चयनित स्थापना सक्रिय गर्न चाहँदा मात्र **साझा सेवा पुनः सुरु गर्नुहोस्** प्रयोग गर्नुहोस्।
4. केही स्थापना नगरी प्रक्रिया पुनःसुरुवात गर्न **समस्या समाधान** विस्तार गरी **OpenCode सेवा पुनः सुरु गर्नुहोस्** रोजेर पुष्टि गर्नुहोस्।
| कार्य | दायरा र असर | सुरक्षित पुनःप्राप्ति |
| --- | --- | --- |
| CLI अपडेट | समर्थित स्थापित executable बदल्छ; चलिरहेको daemon स्वतः पुनः सुरु गर्दैन। | असफलतापछि स्थापित र चलिरहेको दुवै संस्करण जाँच्नुहोस्; त्रुटि समाधानपछि मात्र स्पष्ट पुनःप्रयास गर्नुहोस्। |
| सेवा पुनःसुरुवात | साझा प्रक्रिया बदल्छ र सबै जोडिएका OpenCode क्लाइन्टको सक्रिय काम रोक्छ; सत्र इतिहास रहन्छ। | पुनःजोडी कुराकानी र निर्धारित Mission जाँच्नुहोस्; restart स्वतः continuation होइन। |
| OpenCode कन्फिगरेसन reload | प्रक्रिया राख्छ तर सबै क्लाइन्टका **लोड भएका हरेक Location** पुनर्निर्माण गर्छ। pending अनुमति/Form रद्द र terminal/background command बन्द गर्छ; सक्रिय काम रोकिन सक्छ। | reload पछि स्रोत र pending काम पुनःजाँच गर्नुहोस्। जवाफ हरायो भन्दै prompt वा परिवर्तन नदोहोर्‍याउनुहोस्। |
सुरक्षित कन्फिगरेसन वा स्थापित plugin अझै अनुपलब्ध हुँदा र अवरोध स्वीकार्य हुँदा **OpenCode कन्फिगरेसन पुनः लोड गर्नुहोस्** (चलिरहेको सेवाले समर्थन गर्दा **समस्या समाधान** अन्तर्गत) स्पष्ट प्रयोग गर्नुहोस्। यो हानिरहित प्रदर्शन refresh होइन। CodeNomad ले पुरानो चयनित CLI बाट नयाँ चलिरहेको daemon downgrade गर्दैन।
## सत्र वातावरण {#session-environment}
1. **सेटिङहरू → उन्नत** खोली **वातावरण चरहरू (Environment Variables)** विस्तार गर्नुहोस्।
2. प्रोफाइल override थप्नुहोस्, बदल्नुहोस् वा हटाउनुहोस्; हरेक परिवर्तन तुरुन्तै सुरक्षित हुन्छ।
3. त्यस कुराकानीमा हालको वातावरण लागू गर्न CodeNomad बाट अर्को prompt, custom command वा session shell अनुरोध पठाउनुहोस्।
यो configuration-profile सेटिङ हो, प्रत्येक पठाइअघि server-side लागू हुन्छ। कुराकानी खोल्नु/पढ्नु वा सेटिङ बचतले नेटिभ सत्र बदल्दैन। override हटाउँदा execution host को inherited मान फर्कन्छ, वा त्यहाँ नभए हट्छ। वातावरण लागू गर्न असफल भए पुरानो मान प्रयोग गर्नुको सट्टा पठाइ रोकिन्छ।
वातावरणले त्यस नेटिभ सत्रका पछिल्ला स्थानीय shell सुरुवात नियन्त्रण गर्छ। चलिरहेका प्रक्रियाले आफ्नै वातावरण राख्छन्। यसले provider, MCP/LSP server, स्वतन्त्र terminal वा Location-मात्र background shell पुनःकन्फिगर **गर्दैन**। queued prompt ले प्रत्येकको आफ्नै वातावरण capture गर्दैनन्, र अर्को OpenCode क्लाइन्टले उही सत्र वातावरण बदल्न सक्छ। पूर्णतः OpenCode भित्र बनेका child सत्रले CodeNomad को send-time update पाउँछन् भनेर नमान्नुहोस्।
रोकिएको सेवा सुरु गर्दा अनुमत variable पनि पठाइन्छन्; विद्यमान daemon मा जोडिँदा यसको process environment बदलिँदैन। WSL मा मान Linux execution environment सँग मिसिन्छन्, Windows PATH/HOME सँग होइन। यी override बदल्दा OpenCode database वा service registration सर्दैन।
## नेटिभ कन्फिगरेसन फाइल सम्पादन {#configuration-files}
1. **सेटिङहरू → कन्फिग फाइलहरू** खोली **फाइल** चयन गर्नुहोस्।
2. देखाइएको मार्ग जाँचेर सम्पादन गरी **बचत गर्नुहोस्** रोज्नुहोस्।
3. फाइल फेरि पढ्न **पुन: लोड गर्नुहोस्** प्रयोग गर्नुहोस्; यो **OpenCode कन्फिगरेसन पुनः लोड गर्नुहोस्** होइन।
यो editor ले सूचीकृत global `opencode.json` र `opencode.jsonc` फाइल मात्र देखाउँछ, जुन **CodeNomad सर्भर प्रयोगकर्ताको** `.config/opencode` डाइरेक्टरीमुनि छन्। यो मनपरी-file editor, Project-config selector वा WSL/custom-discovery daemon ले त्यो फाइल पढ्छ भन्ने प्रत्याभूति होइन। लक्ष्य प्रमाणित गर्न देखाइएको मार्ग प्रयोग गर्नुहोस्; अरू root का लागि daemon कै tooling प्रयोग गर्नुहोस्।
बचतले पाठका रूपमा फाइल लेख्छ; पूर्ण नेटिभ कन्फिगरेसन जाँच वा OpenCode restart/reload गर्दैन। अरू क्लाइन्टसँग सम्पादन समन्वय गर्नुहोस्: यस सतहमा external-change merge छैन। ठूलो कन्फिगरेसन बदल्नुअघि प्रतिलिपि राख्नुहोस्। dirty मस्यौदा हुँदा फाइल बदल्न वा reload गर्नाले खारेज गर्ने हो कि सोध्छ।
कन्फिगरेसन-विशेष प्रक्रियाका लागि [एकीकरण](integrations.md), [प्रदायक](providers.md), [मिसन](missions.md) र [OpenCode दस्तावेज](https://opencode.ai/v2/docs/) हेर्नुहोस्।