API Referansı

icc, programatik kontrol için hem bir CLI aracı hem de bir Unix soketi sağlar. Her komut her iki arayüz aracılığıyla kullanılabilir.

Socket

BuildYol
Release/tmp/icc.sock
Debug/tmp/icc-debug.sock
Etiketli debug build/tmp/icc-debug-<tag>.sock

ICC_SOCKET_PATH ortam değişkeni ile geçersiz kılın. Çağrı başına yeni satırla sonlandırılmış bir JSON isteği gönderin:

{"id":"req-1","method":"workspace.list","params":{}}
// Response:
{"id":"req-1","ok":true,"result":{"workspaces":[...]}}
JSON socket istekleri method ve params kullanmalıdır. {"command":"..."} gibi eski v1 JSON yükleri desteklenmez.

Erişim modları

ModAçıklamaNasıl etkinleştirilir
OffSocket devre dışıAyarlar arayüzü veya ICC_SOCKET_MODE=off
icc processes onlyYalnızca icc terminalleri içinde başlatılan süreçler bağlanabilir.Ayarlar arayüzünde varsayılan mod
allowAllHerhangi bir yerel sürecin bağlanmasına izin ver (köken kontrolü yok).Yalnızca ortam değişkeni geçersiz kılma: ICC_SOCKET_MODE=allowAll
Paylaşılan makinelerde Kapalı veya Yalnızca icc süreçleri kullanın.

CLI seçenekleri

BayrakAçıklama
--socket PATHÖzel socket yolu
--jsonJSON formatında çıktı
--window IDBelirli bir pencereyi hedefle
--workspace IDBelirli bir çalışma alanını hedefle
--surface IDBelirli bir yüzeyi hedefle
--id-format refs|uuids|bothJSON çıktısında tanımlayıcı formatını kontrol et

Çalışma alanı komutları

list-workspaces

Tüm açık çalışma alanlarını listele.

CLI
icc list-workspaces
icc list-workspaces --json
Socket
{"id":"ws-list","method":"workspace.list","params":{}}

new-workspace

Yeni bir çalışma alanı oluştur.

CLI
icc new-workspace
Socket
{"id":"ws-new","method":"workspace.create","params":{}}

select-workspace

Belirli bir çalışma alanına geç.

CLI
icc select-workspace --workspace <id>
Socket
{"id":"ws-select","method":"workspace.select","params":{"workspace_id":"<id>"}}

current-workspace

Şu anda aktif çalışma alanını al.

CLI
icc current-workspace
icc current-workspace --json
Socket
{"id":"ws-current","method":"workspace.current","params":{}}

close-workspace

Bir çalışma alanını kapat.

CLI
icc close-workspace --workspace <id>
Socket
{"id":"ws-close","method":"workspace.close","params":{"workspace_id":"<id>"}}

Bölme komutları

new-split

Yeni bir bölünmüş panel oluştur. Yönler: left, right, up, down.

CLI
icc new-split right
icc new-split down
Socket
{"id":"split-new","method":"surface.split","params":{"direction":"right"}}

list-surfaces

Geçerli çalışma alanındaki tüm yüzeyleri listele.

CLI
icc list-surfaces
icc list-surfaces --json
Socket
{"id":"surface-list","method":"surface.list","params":{}}

focus-surface

Belirli bir yüzeye odaklan.

CLI
icc focus-surface --surface <id>
Socket
{"id":"surface-focus","method":"surface.focus","params":{"surface_id":"<id>"}}

Girdi komutları

send

Odaklanılan terminale metin girdisi gönder.

CLI
icc send "echo hello"
icc send "ls -la\n"
Socket
{"id":"send-text","method":"surface.send_text","params":{"text":"echo hello\n"}}

send-key

Bir tuş vuruşu gönder. Tuşlar: enter, tab, escape, backspace, delete, up, down, left, right.

CLI
icc send-key enter
Socket
{"id":"send-key","method":"surface.send_key","params":{"key":"enter"}}

send-surface

Belirli bir yüzeye metin gönder.

CLI
icc send-surface --surface <id> "command"
Socket
{"id":"send-surface","method":"surface.send_text","params":{"surface_id":"<id>","text":"command"}}

send-key-surface

Belirli bir yüzeye tuş vuruşu gönder.

CLI
icc send-key-surface --surface <id> enter
Socket
{"id":"send-key-surface","method":"surface.send_key","params":{"surface_id":"<id>","key":"enter"}}

Bildirim komutları

notify

Bir bildirim gönder.

CLI
icc notify --title "Title" --body "Body"
icc notify --title "T" --subtitle "S" --body "B"
Socket
{"id":"notify","method":"notification.create","params":{"title":"Title","subtitle":"S","body":"Body"}}

list-notifications

Tüm bildirimleri listele.

CLI
icc list-notifications
icc list-notifications --json
Socket
{"id":"notif-list","method":"notification.list","params":{}}

clear-notifications

Tüm bildirimleri temizle.

CLI
icc clear-notifications
Socket
{"id":"notif-clear","method":"notification.clear","params":{}}

Kenar çubuğu meta veri komutları

Herhangi bir çalışma alanı için kenar çubuğunda durum rozetleri, ilerleme çubukları ve günlük girişleri ayarlayın. Build betikleri, CI entegrasyonları ve durumu bir bakışta göstermek isteyen AI kodlama ajanları için kullanışlıdır.

set-status

Kenar çubuğu durum rozeti ayarlayın. Farklı araçların kendi girişlerini yönetebilmesi için benzersiz bir anahtar kullanın.

CLI
icc set-status build "compiling" --icon hammer --color "#ff9500"
icc set-status deploy "v1.2.3" --workspace workspace:2
Socket
set_status build compiling --icon=hammer --color=#ff9500 --tab=<workspace-uuid>

clear-status

Anahtara göre kenar çubuğu durum girişini kaldırın.

CLI
icc clear-status build
Socket
clear_status build --tab=<workspace-uuid>

list-status

Bir çalışma alanı için tüm kenar çubuğu durum girişlerini listeleyin.

CLI
icc list-status
Socket
list_status --tab=<workspace-uuid>

set-progress

Kenar çubuğunda bir ilerleme çubuğu ayarlayın (0.0 ile 1.0).

CLI
icc set-progress 0.5 --label "Building..."
icc set-progress 1.0 --label "Done"
Socket
set_progress 0.5 --label=Building... --tab=<workspace-uuid>

clear-progress

Kenar çubuğu ilerleme çubuğunu temizleyin.

CLI
icc clear-progress
Socket
clear_progress --tab=<workspace-uuid>

log

Kenar çubuğuna bir günlük girişi ekleyin. Seviyeler: info, progress, success, warning, error.

CLI
icc log "Build started"
icc log --level error --source build "Compilation failed"
icc log --level success -- "All 42 tests passed"
Socket
log --level=error --source=build --tab=<workspace-uuid> -- Compilation failed

clear-log

Tüm kenar çubuğu günlük girişlerini temizleyin.

CLI
icc clear-log
Socket
clear_log --tab=<workspace-uuid>

list-log

Kenar çubuğu günlük girişlerini listeleyin.

CLI
icc list-log
icc list-log --limit 5
Socket
list_log --limit=5 --tab=<workspace-uuid>

sidebar-state

Tüm kenar çubuğu meta verilerini dökün (cwd, git dalı, portlar, durum, ilerleme, günlükler).

CLI
icc sidebar-state
icc sidebar-state --workspace workspace:2
Socket
sidebar_state --tab=<workspace-uuid>

Yardımcı komutlar

ping

icc'un çalışıp çalışmadığını ve yanıt verip vermediğini kontrol edin.

CLI
icc ping
Socket
{"id":"ping","method":"system.ping","params":{}}
// Response: {"id":"ping","ok":true,"result":{"pong":true}}

capabilities

Mevcut socket yöntemlerini ve geçerli erişim modunu listeleyin.

CLI
icc capabilities
icc capabilities --json
Socket
{"id":"caps","method":"system.capabilities","params":{}}

identify

Odaklanılan pencere/çalışma alanı/panel/yüzey bağlamını gösterin.

CLI
icc identify
icc identify --json
Socket
{"id":"identify","method":"system.identify","params":{}}

Ortam değişkenleri

DeğişkenAçıklama
ICC_SOCKET_PATHCLI ve entegrasyonlar tarafından kullanılan socket yolunu geçersiz kılın
ICC_SOCKET_ENABLESoketi zorla etkinleştir/devre dışı bırak (1/0, true/false, on/off)
ICC_SOCKET_MODEErişim modunu geçersiz kılın (iccOnly, allowAll, off). Ayrıca icc-only/icc_only ve allow-all/allow_all kabul eder
ICC_WORKSPACE_IDOtomatik ayarlı: geçerli çalışma alanı ID
ICC_SURFACE_IDOtomatik ayarlı: geçerli yüzey ID
TERM_PROGRAMghostty olarak ayarlı
TERMxterm-ghostty olarak ayarlı
Eski ICC_SOCKET_MODE değerleri full ve notifications uyumluluk için hâlâ kabul edilir.

icc'u algılama

bash
# Prefer explicit socket path if set
SOCK="${ICC_SOCKET_PATH:-/tmp/icc.sock}"
[ -S "$SOCK" ] && echo "Socket available"

# Check for the CLI
command -v icc &>/dev/null && echo "icc available"

# In icc-managed terminals these are auto-set
[ -n "${ICC_WORKSPACE_ID:-}" ] && [ -n "${ICC_SURFACE_ID:-}" ] && echo "Inside icc surface"

# Distinguish from regular Ghostty
[ "$TERM_PROGRAM" = "ghostty" ] && [ -n "${ICC_WORKSPACE_ID:-}" ] && echo "In icc"

Örnekler

Python istemcisi

python
import json
import os
import socket

SOCKET_PATH = os.environ.get("ICC_SOCKET_PATH", "/tmp/icc.sock")

def rpc(method, params=None, req_id=1):
    payload = {"id": req_id, "method": method, "params": params or {}}
    with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
        sock.connect(SOCKET_PATH)
        sock.sendall(json.dumps(payload).encode("utf-8") + b"\n")
        return json.loads(sock.recv(65536).decode("utf-8"))

# List workspaces
print(rpc("workspace.list", req_id="ws"))

# Send notification
print(rpc(
    "notification.create",
    {"title": "Hello", "body": "From Python!"},
    req_id="notify"
))

Shell betiği

bash
#!/bin/bash
SOCK="${ICC_SOCKET_PATH:-/tmp/icc.sock}"

icc_cmd() {
    printf "%s\n" "$1" | nc -U "$SOCK"
}

icc_cmd '{"id":"ws","method":"workspace.list","params":{}}'
icc_cmd '{"id":"notify","method":"notification.create","params":{"title":"Done","body":"Task complete"}}'

Bildirimli build betiği

bash
#!/bin/bash
npm run build
if [ $? -eq 0 ]; then
    icc notify --title "✓ Build Success" --body "Ready to deploy"
else
    icc notify --title "✗ Build Failed" --body "Check the logs"
fi