OxideTerm 플러그인 호환성
호환성 경계를 할당하기 전에 관련 구현체를 먼저 읽으십시오:
crates/oxideterm-plugin-manifest/src/registry.rs: 카탈로그 릴리스 및 수정 데이터.crates/oxideterm-plugin-registry/src/registry.rs및compatibility.rs: 버전 선택, 캐시된 요구 사항 및 시작 시 검색.crates/oxideterm-plugin-registry/src/install.rs: 패키지 설치 검사.crates/oxideterm-gpui-app/src/workspace/plugin_entity.rs: 새로 고침, 활성화 게이팅 및 작업 소유권.- 변경 사항이 적용된 특정 호스트 API, 런타임 또는 문법 로더.
- 지연된 문법 로딩 및 열린 문서 새로 고침을 위한
crates/oxideterm-editor-syntax/src/plugin.rs및crates/oxideterm-gpui-editor/src/languages.rs.
호스트 측 계약
호스트와 플랫폼이 모두 지원하는 가장 높은 릴리스를 선택하십시오. 해당 호환 릴리스가 설치된 플러그인보다 최신인 경우에만 업데이트를 제안하고, 더 높은 호환되지 않는 버전은 별도로 설명하십시오. 절대 자동으로 다운그레이드하지 마십시오.
앱 업그레이드 및 다운그레이드 후 시작 시 설치된 플러그인을 다시 확인하십시오. 패키지 파일을 다시 쓰지 않고 정확한 플러그인 ID 및 버전에 대한 최신 캐시된 수정 사항을 적용하십시오. 파일, 설정 및 활성화 기본 설정은 유지하되 호환되지 않는 활성화는 차단하십시오. 시작 시 새로 고침은 플러그인 엔티티에 의해 범위가 지정되고 소유되어야 하며, 오프라인 시작 시 마지막 유효한 캐시를 사용합니다.
공식 클라이언트는 v2 요약 카탈로그를 사용하며 설치된 플러그인 및 현재 마켓플레이스 페이지에 대한 체크섬 바인딩 기록을 로드합니다. 기록은 해당 ID, 최신 버전, 유효 호스트 범위, 크기 및 SHA-256과 일치해야 합니다. 고정된 v1 엔드포인트, 정확한 과거 스냅샷, 참조된 자산 및 v1 캐시 리더를 보존하십시오. 모든 후속 플러그인, 릴리스 및 수정 사항은 v2에만 속하며, 기존 클라이언트는 이를 수신하려면 호스트를 업그레이드해야 합니다. 새 클라이언트는 v2만 가져오며, 실패 시 마지막 유효한 캐시를 유지하고 고정된 v1으로 교체하지 마십시오. v2를 요구하는 호스트를 출시하기 전에 v2를 게시하십시오. 압축된 루트 캐시를 교체하기 전에 검증된 원시 기록을 저장하십시오. 시작 및 수동 설치는 정확한 설치된 버전에 대한 수정 사항을 해결해야 합니다. 오래된 페이지 요청을 취소하고 다른 페이지 또는 카탈로그 스냅샷의 결과를 폐기하십시오. 카탈로그 유지 관리 및 생성은 마켓플레이스의 플러그인별 소스 기록 및 릴리스 자동화에 속합니다.
언어 추출의 경우 문법 로더, Tree-sitter ABI 및 실제 기존 클라이언트 동작을 확인하십시오. 호스트 범위는 이러한 검사를 대체할 수 없습니다. 새 플러그인 또는 앱 버전이 출시되었다고 해서 이전 플러그인에 상한을 할당하지 마십시오.
2.2.2부터 언어 매니페스트는 displayName, grammarName, extensions 및 리터럴 fileNames를 선언할 수 있습니다. 새 ID는 동적이므로 레거시 열거형 또는 파일 연결 테이블을 확장하지 마십시오. 게시된 언어 패키지는 폴백 연결을 유지합니다. 카탈로그 선언은 확인된 아카이브에서 가져오며 v2 기록에 바인딩되며, 설치된 매니페스트가 호환 가능한 카탈로그 힌트보다 우선합니다. 새 선언은 >=2.2.2가 필요하며, 레거시 패키지에 대한 일반 쿼리 수정은 기존 호스트 범위를 유지합니다. 열린 문서 재감지, 누락된 플러그인 라우팅 및 오프라인 카탈로그 힌트를 IDE, 로컬 및 SFTP 미리보기에서 일관되게 유지하십시오.
2.2.2부터 언어 패키지는 injections에 임베디드 문법을 번들로 제공할 수 있습니다. 선언된 체크섬으로 각 파서, 하이라이트 쿼리 및 부모 선택기를 확인하십시오. 선택기는 injection.content를 캡처합니다. 문서는 각 임베디드 파서, 취소 및 폐기를 소유합니다. 편집 과정에서 원본 바이트 좌표를 유지하고 포함된 영역으로 하위 하이라이트를 제한하여 템플릿 캡처가 스크립트 토큰을 숨기지 못하도록 부모 캡처를 대체하십시오. 번들로 제공된 문법은 부모 패키지에 비공개이며 별도의 파일 연결을 등록하지 않습니다.
ACP 에이전트 추출의 경우 ACP 클라이언트, 권한 결정 및 프로세스 소유권을 호스트에 유지하십시오. 게시된 acp 매니페스트는 계속 지원되며 공통 헬퍼 계획으로 정규화됩니다. 새 헬퍼 매니페스트는 기능 acp, 프로토콜 acp 및 버전 1을 선언합니다. 에이전트는 ACP stdio를 직접 사용합니다. 일반 플러그인 감독자를 통해 트래픽을 라우팅하지 마십시오. 시작 게이팅, 실행 해결 및 정리를 위해 registry.acp_agents, workspace/acp_plugins.rs 및 workspace/acp_workspace.rs를 확인하십시오. 2.2.1까지의 호스트는 이 런타임을 로드할 수 없습니다. 번들로 제공된 어댑터를 플러그인 바인딩으로 마이그레이션할 때 기존 에이전트 ID 및 사용자 옵션을 유지하십시오.
게시된 Mosh 매니페스트는 terminal-transport를 사용하며, 새 헬퍼 매니페스트는 기능 terminal-transport, 프로토콜 oxideterm-mosh 및 버전 1을 선언합니다. SSH 부트스트랩, 터미널 렌더링 및 로컬 예측은 호스트에 유지하고, UDP, SSP 및 암호화는 엔진 플러그인에 속합니다. 2.2.1까지의 호스트는 로드할 수 없습니다. 패키지 교체 전 실행 게이팅 및 프로세스 종료를 위해 oxideterm-mosh 및 워크스페이스 소유의 MoshPluginSessions를 확인하십시오. 두 파이프 방향은 출력 백프레셔 하에서 독립적으로 유지되어야 합니다. RDP, VNC 및 Mosh는 remote-connections 카탈로그 카테고리를 공유합니다.
게시 조정
게시된 원격 데스크톱 매니페스트는 remote-desktop를 사용하며, 새 헬퍼 매니페스트는 기능 remote-desktop, 프로토콜 oxideterm-remote-desktop 및 버전 1을 선언합니다. 둘 다 일반 플러그인 감독자 외부의 공통 헬퍼 계획으로 정규화됩니다. 네이티브 뷰어, 입력, 자격 증명 및 SSH 터널 소유권을 호스트에 유지하십시오. 지원되는 contributes.remoteDesktop.protocolVersion이 필요하며 신뢰할 수 있고 활성화된 호환 가능한 설치 실행 파일만 확인하십시오. 파일을 업데이트하거나 제거하기 전에 헬퍼 프로세스를 중지하고 종료하십시오. 호환 가능한 제공자가 제공될 때까지 자동 재연결을 비활성화하십시오. 헬퍼를 추출할 때 기존 바이너리 stdio 형식을 변경하지 마십시오. 2.2.1까지의 호스트는 이 런타임을 로드할 수 없습니다.
일반 helper 매니페스트는 호스트가 2.2.2 이상이어야 합니다. 정규화할 때 게시된 매니페스트 종류, 기능 승인 경계 및 프로토콜 페이로드를 유지하십시오. 런타임 계획 통합은 플러그인 감독자에게 하위 소유권을 이전하지 않습니다. FIDO는 기능 ssh-authentication, 프로토콜 oxideterm-security-key 및 버전 1을 선언하며, 인증 작업은 취소 및 종료를 소유합니다.
플러그인 생성, 릴리스 기록 및 호환성 수정 사항은 AnalyseDeCircuit/oxideterm-plugins 저장소에 속합니다. 로컬 디렉터리 이름을 가정하지 말고 리포지토리 ID로 실제 체크아웃을 찾으십시오. 해당 .agents/skills/oxideterm-plugin-release/SKILL.md를 읽고 릴리스 스크립트를 사용하십시오. 정식 스킬은 다음에서도 확인할 수 있습니다:
해당 스킬 또는 스크립트가 아직 게시되지 않은 경우 로컬 체크아웃을 사용하십시오. 필요한 도구가 없을 때 대체 게시 프로세스를 고안하지 마십시오. 호스트 구현 변경만으로는 플러그인 게시가 승인되지 않습니다.
변경된 동작의 경우 해당 경계를 소유하는 기존 레지스트리 및 플러그인 엔티티 테스트를 사용하십시오. 관련 위험을 다루십시오: 호환 가능한 버전 선택, 업그레이드/다운그레이드 거부, 수정 복구 또는 오프라인 시작. 플러그인 호환성 파일이 변경되었다고 해서 관련 없는 테스트 모음을 다시 실행하지 마십시오.