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.
Files changed (64) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.ko.md +42 -0
  3. package/README.md +34 -545
  4. package/dist/agents.d.ts +15 -0
  5. package/dist/codexHooks.d.ts +29 -0
  6. package/dist/codexMeta.d.ts +87 -0
  7. package/dist/codexWheel.d.ts +6 -0
  8. package/dist/config.d.ts +120 -2
  9. package/dist/cursorVisibility.d.ts +41 -0
  10. package/dist/deck.service.d.ts +185 -19
  11. package/dist/devReload.service.d.ts +48 -0
  12. package/dist/devReload.stub.d.ts +19 -0
  13. package/dist/dock.d.ts +15 -0
  14. package/dist/gitDiff.d.ts +11 -0
  15. package/dist/i18n/af.d.ts +83 -0
  16. package/dist/i18n/bg.d.ts +83 -0
  17. package/dist/i18n/cs.d.ts +83 -0
  18. package/dist/i18n/da.d.ts +83 -0
  19. package/dist/i18n/de.d.ts +83 -0
  20. package/dist/i18n/en.d.ts +83 -0
  21. package/dist/i18n/es.d.ts +83 -0
  22. package/dist/i18n/fr.d.ts +83 -0
  23. package/dist/i18n/hr.d.ts +83 -0
  24. package/dist/i18n/id.d.ts +83 -0
  25. package/dist/i18n/it.d.ts +83 -0
  26. package/dist/i18n/ja.d.ts +83 -0
  27. package/dist/i18n/ko.d.ts +83 -0
  28. package/dist/i18n/pl.d.ts +83 -0
  29. package/dist/i18n/pt.d.ts +83 -0
  30. package/dist/i18n/ru.d.ts +83 -0
  31. package/dist/i18n/sr.d.ts +83 -0
  32. package/dist/i18n/sv.d.ts +83 -0
  33. package/dist/i18n/tr.d.ts +83 -0
  34. package/dist/i18n/uk.d.ts +83 -0
  35. package/dist/i18n/zh-CN.d.ts +83 -0
  36. package/dist/i18n/zh-TW.d.ts +83 -0
  37. package/dist/i18n.d.ts +3618 -0
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.js +1 -19591
  40. package/dist/keybind.d.ts +121 -0
  41. package/dist/meta.d.ts +83 -0
  42. package/dist/nav.d.ts +29 -0
  43. package/dist/notify.service.d.ts +196 -0
  44. package/dist/project-root.d.ts +1 -1
  45. package/dist/reload.service.d.ts +57 -0
  46. package/dist/screenAgent.d.ts +24 -0
  47. package/dist/sessionLedger.d.ts +15 -7
  48. package/dist/settings.component.d.ts +136 -8
  49. package/dist/status.service.d.ts +30 -2
  50. package/dist/statusLine.d.ts +27 -0
  51. package/dist/subagents.d.ts +31 -0
  52. package/dist/synchronizedOutput.d.ts +10 -0
  53. package/dist/terminalInput.d.ts +6 -0
  54. package/dist/update.d.ts +19 -5
  55. package/dist/update.service.d.ts +29 -20
  56. package/dist/viewPanel.d.ts +62 -2
  57. package/dist/viewer.d.ts +4 -0
  58. package/hooks/agentdeck-codex-notify.ps1 +28 -0
  59. package/hooks/agentdeck-label.js +1 -1
  60. package/hooks/agentdeck-notify.ps1 +112 -12
  61. package/hooks/agentdeck-statusline.mjs +351 -0
  62. package/package.json +22 -5
  63. package/updater/agentdeck-update.ps1 +50 -27
  64. package/dist/index.js.map +0 -1
@@ -1,17 +1,20 @@
1
- # AgentDeck 자동 업데이트 — Tabby 가 **꺼진 뒤에** 설치하고 다시 띄운다.
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
- # 그래서 순서가 이렇다: Tabby 종료를 기다린다 → 설치한다 → 다시 띄운다.
13
- # 이 스크립트는 **패키지 밖(임시 폴더)에서** 실행돼야 한다. 자기가 사는 폴더를 npm 이
14
- # 통째로 갈아엎기 때문이다 (`update.service.ts` 가 임시 폴더로 복사해 띄운다).
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
- Write-Log "대기 대상: $(if ($TabbyPid -gt 0) { "pid=$TabbyPid (+자식)" } else { '이름으로 전부 (옛 방식)' })"
75
- $waited = 0
76
- while ($true) {
77
- $alive = Test-TabbyAlive $TabbyPid
78
- if ($alive -eq 0) { break }
79
- if ($waited -ge $WaitSeconds) {
80
- Write-Log "FAIL Tabby 가 ${WaitSeconds}초 안에 꺼지지 않았다 (남은 프로세스 ${alive}개) — 설치하지 않는다"
81
- exit 2
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
- Start-Sleep -Milliseconds 500
84
- $waited += 0.5
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 '설치를 건너뛰고 Tabby 를 다시 띄운다'
111
+ Write-Log '설치를 건너뛴다'
99
112
  } else {
100
113
  Write-Log "npm=$($npm.Source)"
101
114
  # `$args` 는 PowerShell 자동 변수다 — 이름을 겹치면 조용히 이상하게 돈다
102
- $npmArgs = @('install', '--prefix', $PluginsDir, '--no-audit', '--no-fund', "$pkg@$Version")
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