tabby-agentdeck 1.1.2 → 1.2.0
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/CHANGELOG.md +150 -0
- package/README.ko.md +42 -0
- package/README.md +34 -545
- package/dist/agents.d.ts +15 -0
- package/dist/codexHooks.d.ts +29 -0
- package/dist/codexMeta.d.ts +87 -0
- package/dist/codexWheel.d.ts +6 -0
- package/dist/config.d.ts +120 -2
- package/dist/cursorVisibility.d.ts +41 -0
- package/dist/deck.service.d.ts +185 -19
- package/dist/devReload.service.d.ts +48 -0
- package/dist/devReload.stub.d.ts +19 -0
- package/dist/dock.d.ts +15 -0
- package/dist/gitDiff.d.ts +11 -0
- package/dist/i18n/af.d.ts +83 -0
- package/dist/i18n/bg.d.ts +83 -0
- package/dist/i18n/cs.d.ts +83 -0
- package/dist/i18n/da.d.ts +83 -0
- package/dist/i18n/de.d.ts +83 -0
- package/dist/i18n/en.d.ts +83 -0
- package/dist/i18n/es.d.ts +83 -0
- package/dist/i18n/fr.d.ts +83 -0
- package/dist/i18n/hr.d.ts +83 -0
- package/dist/i18n/id.d.ts +83 -0
- package/dist/i18n/it.d.ts +83 -0
- package/dist/i18n/ja.d.ts +83 -0
- package/dist/i18n/ko.d.ts +83 -0
- package/dist/i18n/pl.d.ts +83 -0
- package/dist/i18n/pt.d.ts +83 -0
- package/dist/i18n/ru.d.ts +83 -0
- package/dist/i18n/sr.d.ts +83 -0
- package/dist/i18n/sv.d.ts +83 -0
- package/dist/i18n/tr.d.ts +83 -0
- package/dist/i18n/uk.d.ts +83 -0
- package/dist/i18n/zh-CN.d.ts +83 -0
- package/dist/i18n/zh-TW.d.ts +83 -0
- package/dist/i18n.d.ts +3618 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -19591
- package/dist/keybind.d.ts +121 -0
- package/dist/meta.d.ts +83 -0
- package/dist/nav.d.ts +29 -0
- package/dist/notify.service.d.ts +196 -0
- package/dist/project-root.d.ts +1 -1
- package/dist/reload.service.d.ts +57 -0
- package/dist/screenAgent.d.ts +24 -0
- package/dist/sessionLedger.d.ts +15 -7
- package/dist/settings.component.d.ts +136 -8
- package/dist/status.service.d.ts +30 -2
- package/dist/statusLine.d.ts +27 -0
- package/dist/subagents.d.ts +31 -0
- package/dist/synchronizedOutput.d.ts +10 -0
- package/dist/terminalInput.d.ts +6 -0
- package/dist/update.d.ts +19 -5
- package/dist/update.service.d.ts +29 -20
- package/dist/viewPanel.d.ts +62 -2
- package/dist/viewer.d.ts +4 -0
- package/hooks/agentdeck-codex-notify.ps1 +28 -0
- package/hooks/agentdeck-label.js +1 -1
- package/hooks/agentdeck-notify.ps1 +112 -12
- package/hooks/agentdeck-statusline.mjs +351 -0
- package/package.json +22 -5
- package/updater/agentdeck-update.ps1 +50 -27
- package/dist/index.js.map +0 -1
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
# AgentDeck 자동 업데이트 —
|
|
1
|
+
# AgentDeck 자동 업데이트 — 플러그인 폴더에 새 버전을 깐다.
|
|
2
2
|
#
|
|
3
3
|
# powershell -NoProfile -ExecutionPolicy Bypass -File agentdeck-update.ps1 `
|
|
4
|
-
# -Version 1.1.1 -PluginsDir "<APPDATA>\tabby\plugins" -TabbyExe "<...>\Tabby.exe"
|
|
4
|
+
# -Version 1.1.1 -PluginsDir "<APPDATA>\tabby\plugins" -TabbyExe "<...>\Tabby.exe" -InPlace
|
|
5
5
|
#
|
|
6
|
-
#
|
|
7
|
-
# 1. **돌고 있는 플러그인은 자기를 갈아끼울 수 없다.** Tabby 는 기동할 때 `dist/index.js` 를 한 번
|
|
8
|
-
# 읽어 메모리에 올린다. 그 뒤 디스크를 바꿔도 돌고 있는 코드는 옛것 그대로다.
|
|
9
|
-
# 2. **Windows 는 로드된 파일을 잡고 있다.** Tabby 가 떠 있는 동안 npm 이 그 폴더를 지우려 들면
|
|
10
|
-
# EPERM/EBUSY 로 반쯤 지운 채 실패할 수 있다 — 플러그인이 깨진 상태로 남는 것이 가장 나쁘다.
|
|
6
|
+
# 모드가 둘이다.
|
|
11
7
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
8
|
+
# **-InPlace (지금 쓰는 길)** — Tabby 가 **떠 있는 채로** 깐다. 기다리지도, 다시 띄우지도 않는다.
|
|
9
|
+
# 적용은 플러그인이 창(renderer)만 리로드해서 한다(`src/reload.service.ts`) — 탭과 세션이 산다.
|
|
10
|
+
# 로드된 `.js` 는 Windows 가 잡고 있지 않으므로(require 는 읽고 바로 닫는다) 폴더를 갈아끼워도 된다.
|
|
11
|
+
# 이 모드에서는 부른 쪽이 **종료 코드를 기다린다** — 끝나야 리로드할 수 있기 때문이다.
|
|
12
|
+
#
|
|
13
|
+
# **기본(옛 길)** — Tabby 종료를 기다린다 → 설치한다 → 다시 띄운다. 옛 버전이 띄운 스크립트나
|
|
14
|
+
# 손으로 돌릴 때를 위해 남겨 둔다.
|
|
15
|
+
#
|
|
16
|
+
# 어느 쪽이든 이 스크립트는 **패키지 밖(임시 폴더)에서** 실행돼야 한다. 자기가 사는 폴더를
|
|
17
|
+
# npm 이 통째로 갈아엎기 때문이다 (`update.service.ts` 가 임시 폴더로 복사해 띄운다).
|
|
15
18
|
param(
|
|
16
19
|
[Parameter(Mandatory = $true)][string]$Version,
|
|
17
20
|
[Parameter(Mandatory = $true)][string]$PluginsDir,
|
|
@@ -22,7 +25,12 @@ param(
|
|
|
22
25
|
[string]$LogFile = '',
|
|
23
26
|
# Tabby 가 꺼지기를 기다리는 최대 시간(초). 넘으면 설치하지 않고 그냥 끝낸다 —
|
|
24
27
|
# 떠 있는 상태로 설치하면 반쯤 지워진 플러그인이 남는다
|
|
25
|
-
[int]$WaitSeconds = 60
|
|
28
|
+
[int]$WaitSeconds = 60,
|
|
29
|
+
# Tabby 를 껐다 켜지 않는다 — 기다리지도 않고 다시 띄우지도 않는다
|
|
30
|
+
[switch]$InPlace,
|
|
31
|
+
# npm 에 건넬 대상. 기본은 `tabby-agentdeck@<Version>`(레지스트리)이고,
|
|
32
|
+
# **회귀는 지금 소스로 만든 tgz 경로를 준다** — 이미 배포된 버전에는 검증할 코드가 없다
|
|
33
|
+
[string]$Spec = ''
|
|
26
34
|
)
|
|
27
35
|
|
|
28
36
|
$ErrorActionPreference = 'Stop'
|
|
@@ -71,41 +79,49 @@ function Test-TabbyAlive ([int]$mainPid) {
|
|
|
71
79
|
return $n
|
|
72
80
|
}
|
|
73
81
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
$
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
if ($InPlace) {
|
|
83
|
+
Write-Log 'InPlace — Tabby 종료를 기다리지 않는다 (적용은 플러그인이 창 리로드로 한다)'
|
|
84
|
+
} else {
|
|
85
|
+
Write-Log "대기 대상: $(if ($TabbyPid -gt 0) { "pid=$TabbyPid (+자식)" } else { '이름으로 전부 (옛 방식)' })"
|
|
86
|
+
$waited = 0
|
|
87
|
+
while ($true) {
|
|
88
|
+
$alive = Test-TabbyAlive $TabbyPid
|
|
89
|
+
if ($alive -eq 0) { break }
|
|
90
|
+
if ($waited -ge $WaitSeconds) {
|
|
91
|
+
Write-Log "FAIL Tabby 가 ${WaitSeconds}초 안에 꺼지지 않았다 (남은 프로세스 ${alive}개) — 설치하지 않는다"
|
|
92
|
+
exit 2
|
|
93
|
+
}
|
|
94
|
+
Start-Sleep -Milliseconds 500
|
|
95
|
+
$waited += 0.5
|
|
82
96
|
}
|
|
83
|
-
|
|
84
|
-
|
|
97
|
+
Write-Log "Tabby 종료 확인 (${waited}초 대기)"
|
|
98
|
+
# 핸들이 완전히 풀릴 여유를 조금 더 준다
|
|
99
|
+
Start-Sleep -Milliseconds 800
|
|
85
100
|
}
|
|
86
|
-
Write-Log "Tabby 종료 확인 (${waited}초 대기)"
|
|
87
|
-
# 핸들이 완전히 풀릴 여유를 조금 더 준다
|
|
88
|
-
Start-Sleep -Milliseconds 800
|
|
89
101
|
|
|
90
102
|
# ── 2) 설치 ─────────────────────────────────────────────────────────────────
|
|
91
103
|
# Tabby 의 플러그인 설치와 같은 방식이다 — `plugins/package.json` 에 의존성으로 적히고
|
|
92
104
|
# `plugins/node_modules` 아래로 풀린다. `--prefix` 로 그 폴더를 가리킨다.
|
|
105
|
+
$installed = $false
|
|
93
106
|
$npm = (Get-Command npm.cmd -ErrorAction SilentlyContinue)
|
|
94
107
|
if (-not $npm) { $npm = (Get-Command npm -ErrorAction SilentlyContinue) }
|
|
95
108
|
if (-not $npm) {
|
|
96
109
|
Write-Log 'FAIL npm 을 찾지 못했다 (PATH 에 node/npm 이 없다)'
|
|
97
110
|
# npm 이 없어도 Tabby 는 다시 띄워 준다 — 사람의 창을 빼앗은 채 끝내면 안 된다
|
|
98
|
-
Write-Log '설치를
|
|
111
|
+
Write-Log '설치를 건너뛴다'
|
|
99
112
|
} else {
|
|
100
113
|
Write-Log "npm=$($npm.Source)"
|
|
101
114
|
# `$args` 는 PowerShell 자동 변수다 — 이름을 겹치면 조용히 이상하게 돈다
|
|
102
|
-
$
|
|
115
|
+
$target = if ($Spec) { $Spec } else { "$pkg@$Version" }
|
|
116
|
+
Write-Log "설치 대상: $target"
|
|
117
|
+
$npmArgs = @('install', '--prefix', $PluginsDir, '--no-audit', '--no-fund', $target)
|
|
103
118
|
try {
|
|
104
119
|
$out = & $npm.Source @npmArgs 2>&1
|
|
105
120
|
$code = $LASTEXITCODE
|
|
106
121
|
foreach ($line in $out) { Write-Log "npm| $line" }
|
|
107
122
|
if ($code -eq 0) {
|
|
108
123
|
Write-Log "OK 설치 완료 $pkg@$Version"
|
|
124
|
+
$installed = $true
|
|
109
125
|
} else {
|
|
110
126
|
Write-Log "FAIL npm exit=$code — 옛 버전이 그대로 남아 있을 수 있다"
|
|
111
127
|
}
|
|
@@ -115,7 +131,14 @@ if (-not $npm) {
|
|
|
115
131
|
}
|
|
116
132
|
|
|
117
133
|
# ── 3) 다시 띄운다 ──────────────────────────────────────────────────────────
|
|
118
|
-
#
|
|
134
|
+
# InPlace 면 애초에 닫지 않았으므로 띄울 것이 없다 — 부른 쪽이 창만 새로 고친다.
|
|
135
|
+
# 옛 길에서는 **설치가 실패했어도 반드시 띄운다**. 업데이트를 고르느라 터미널을 잃는 일은 없어야 한다.
|
|
136
|
+
if ($InPlace) {
|
|
137
|
+
Write-Log '=== update 끝 (InPlace — 적용은 플러그인이 창 리로드로 한다)'
|
|
138
|
+
# 부른 쪽이 이 코드를 본다. 다만 최종 판정은 디스크의 버전이다 (`installedVersion`)
|
|
139
|
+
exit $(if ($installed) { 0 } else { 1 })
|
|
140
|
+
}
|
|
141
|
+
|
|
119
142
|
try {
|
|
120
143
|
if (Test-Path $TabbyExe) {
|
|
121
144
|
Start-Process -FilePath $TabbyExe
|