@quolu/aishell 0.4.4 → 0.4.5

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/README.ja.md CHANGED
@@ -90,12 +90,11 @@ flowchart LR
90
90
 
91
91
  ## npmからinstall
92
92
 
93
- global packageは`aishell-mcp`と`aishell-open`を`PATH`へ追加する。`aishell-open`は同梱された管理アプリをLaunchServicesで開く。
93
+ global packageは`aishell-mcp`と`aishell-open`を`PATH`へ追加する。`aishell-open`は同梱された管理アプリをLaunchServicesで開く。install scriptは実行しない。
94
94
 
95
- install scriptは助言専用の`postinstall`検査だけである。今回のinstallで置き換えられるinstallから
96
- 管理アプリの窓がまだ動いている場合に警告する。その窓は削除済みbundleを掴み続け、ファイル選択を
97
- 伴う操作を無言で失うためである。検査はprocess一覧を読んで該当pidを表示するだけで、何も書き込まず、
98
- installを失敗させない。窓を開き直せば新版に移る。窓自身も置換を検知して表示する。
95
+ upgradeは開いたままの管理アプリの足元でapp bundleを置き換えるため、その窓は壊れる。削除済みbundleを
96
+ 掴み続け、ファイル選択を伴う操作を無言で失う。窓自身がこれを検知してbannerで示すので、開き直せば
97
+ 新版へ移る。
99
98
 
100
99
  ```sh
101
100
  npm install -g @quolu/aishell
package/README.md CHANGED
@@ -88,13 +88,11 @@ flowchart LR
88
88
 
89
89
  ## Install from npm
90
90
 
91
- The global package adds `aishell-mcp` and `aishell-open` to `PATH`. `aishell-open` opens the bundled manager app through LaunchServices.
91
+ The global package adds `aishell-mcp` and `aishell-open` to `PATH`. `aishell-open` opens the bundled manager app through LaunchServices. The package runs no install script.
92
92
 
93
- The only install script is an advisory `postinstall` check. It warns when a manager window is still
94
- running from the install this one replaces, because such a window keeps holding a deleted bundle and
95
- silently loses every operation that opens a file panel. The check reads the process list, prints the
96
- affected pids, writes nothing, and never fails the install. Reopen the window to pick up the new
97
- version; the window itself also detects the replacement and says so.
93
+ Upgrading replaces the app bundle underneath any manager window left open, which breaks that window
94
+ it keeps holding a deleted bundle and silently loses every operation that opens a file panel. The
95
+ window detects this itself and says so with a banner; reopen it to pick up the new version.
98
96
 
99
97
  ```sh
100
98
  npm install -g @quolu/aishell
@@ -17,9 +17,9 @@
17
17
  <key>CFBundlePackageType</key>
18
18
  <string>APPL</string>
19
19
  <key>CFBundleShortVersionString</key>
20
- <string>0.4.4</string>
20
+ <string>0.4.5</string>
21
21
  <key>CFBundleVersion</key>
22
- <string>15</string>
22
+ <string>16</string>
23
23
  <key>LSApplicationCategoryType</key>
24
24
  <string>public.app-category.utilities</string>
25
25
  <key>LSMinimumSystemVersion</key>
@@ -10,19 +10,19 @@
10
10
  <dict>
11
11
  <key>cdhash</key>
12
12
  <data>
13
- 62lLj6uPM5cPENNgG2IlBMPjEiQ=
13
+ GEGLZHkdBbt8yddasYejQf7FSL8=
14
14
  </data>
15
15
  <key>requirement</key>
16
- <string>cdhash H"eb694b8fab8f33970f10d3601b622504c3e31224"</string>
16
+ <string>cdhash H"18418b64791d05bb7cc9d75ab187a341fec548bf"</string>
17
17
  </dict>
18
18
  <key>Helpers/aishell-run-supervisor</key>
19
19
  <dict>
20
20
  <key>cdhash</key>
21
21
  <data>
22
- 08JZvJ0KKUPCwBJJHo5i6fR6r68=
22
+ UsUJmoJ+k5ckLoHZA3RWjN52eNc=
23
23
  </data>
24
24
  <key>requirement</key>
25
- <string>cdhash H"d3c259bc9d0a2943c2c012491e8e62e9f47aafaf"</string>
25
+ <string>cdhash H"52c5099a827e9397242e81d90374568cde7678d7"</string>
26
26
  </dict>
27
27
  </dict>
28
28
  <key>rules</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quolu/aishell",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "A native macOS state runtime with high-density MCP tools for AI development",
5
5
  "license": "Apache-2.0",
6
6
  "author": "quolu",
@@ -32,13 +32,11 @@
32
32
  "files": [
33
33
  "dist/AIShell.app",
34
34
  "scripts/aishell-open.mjs",
35
- "scripts/check-running-instances.mjs",
36
35
  "README.md"
37
36
  ],
38
37
  "scripts": {
39
38
  "build:npm": "node scripts/prepare-npm-release.mjs",
40
39
  "prepack": "npm run build:npm",
41
- "postinstall": "node scripts/check-running-instances.mjs",
42
40
  "test": "swift test",
43
41
  "test:package": "npm run build:npm && node scripts/verify-npm-package.mjs",
44
42
  "verify:release-commit": "node scripts/verify-release-commit.mjs",
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // npm global upgradeは既存packageを`@quolu/.aishell-XXXX`へrenameしてから削除する。窓を開いたまま
4
- // upgradeすると、そのprocessは消えた実体を掴み続け、UIは動くのにbundle resourceを要求するAPI
5
- // (NSOpenPanelなど)だけが無反応になる。errorも出ないため「rootを追加できない」と見える。
6
- // install時点でその窓を見つけて再起動を促す。app側の自己検知(AIShellCore/InstallationIntegrity)
7
- // と二重の網であり、どちらもinstall自体は止めない。
8
-
9
- import { spawnSync } from "node:child_process";
10
- import { existsSync } from "node:fs";
11
- import path from "node:path";
12
- import { fileURLToPath } from "node:url";
13
-
14
- const executablePattern = /^(\d+)\s+(\/.*\/AIShell\.app\/Contents\/MacOS\/AIShell)$/;
15
- // renameで退避された旧installのpath。実体が残っていてもそのbundleは削除される途中にある。
16
- const stagingPathPattern = /\/\.aishell-[^/]+\//;
17
-
18
- /// `ps -axo pid=,comm=`の出力から、置換済みの実体を掴んだ窓だけを選ぶ。
19
- /// 生きているinstallのpathから動いている窓は対象にしない(localのnpm installで誤警告しないため)。
20
- export function selectStaleWindows(processListing, { exists = existsSync } = {}) {
21
- return processListing
22
- .split("\n")
23
- .flatMap((line) => {
24
- const matched = line.trim().match(executablePattern);
25
- return matched ? [{ pid: Number(matched[1]), executable: matched[2] }] : [];
26
- })
27
- .filter(({ executable }) => !exists(executable) || stagingPathPattern.test(executable));
28
- }
29
-
30
- export function staleWindowWarning(stale) {
31
- const pidList = stale.map(({ pid }) => `pid ${pid}`).join(", ");
32
- return [
33
- "",
34
- `[AIShell] 起動中の窓(${pidList})が、このinstallで置き換えられた実体を掴んでいます。`,
35
- " そのままではrootの追加などファイル選択を伴う操作が無反応になります。",
36
- " 窓を終了して `aishell-open` で開き直してください。",
37
- ""
38
- ].join("\n");
39
- }
40
-
41
- function main() {
42
- const listing = spawnSync("/bin/ps", ["-axo", "pid=,comm="], { encoding: "utf8" });
43
-
44
- if (listing.error || listing.status !== 0) {
45
- // 確認できなかったことを「問題なし」へ言い換えない。
46
- console.warn(
47
- "[AIShell] 起動中の窓を確認できませんでした(psが利用できません)。" +
48
- "AIShellを開いたままupgradeした場合は、窓を開き直してください。"
49
- );
50
- return;
51
- }
52
-
53
- const stale = selectStaleWindows(listing.stdout);
54
- if (stale.length > 0) {
55
- console.warn(staleWindowWarning(stale));
56
- }
57
- }
58
-
59
- if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
60
- main();
61
- }