@quolu/aishell 0.4.4 → 0.4.6
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 +5 -5
- package/README.md +6 -6
- package/dist/AIShell.app/Contents/Helpers/aishell-mcp +0 -0
- package/dist/AIShell.app/Contents/Helpers/aishell-run-supervisor +0 -0
- package/dist/AIShell.app/Contents/Info.plist +2 -2
- package/dist/AIShell.app/Contents/MacOS/AIShell +0 -0
- package/dist/AIShell.app/Contents/_CodeSignature/CodeResources +4 -4
- package/package.json +1 -3
- package/scripts/check-running-instances.mjs +0 -61
package/README.ja.md
CHANGED
|
@@ -90,12 +90,12 @@ 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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
install
|
|
95
|
+
upgradeは開いたままの管理アプリの足元でapp bundleを置き換えるため、その窓は壊れる。削除済みbundleを
|
|
96
|
+
掴み続け、ファイル選択を伴う操作を無言で失う。窓自身がこれを検知してbannerで示す。新版が同じpathに
|
|
97
|
+
在る場合はbannerの再起動1回で新版の窓へ移り、pathごと消えている場合は終了と`aishell-open`での開き直しを
|
|
98
|
+
促す。実際の`npm install -g` upgradeで検証済みである。
|
|
99
99
|
|
|
100
100
|
```sh
|
|
101
101
|
npm install -g @quolu/aishell
|
package/README.md
CHANGED
|
@@ -88,13 +88,13 @@ 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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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. When the new version sits at the same path, the
|
|
96
|
+
banner restarts the window into it in one click; otherwise it asks for a quit and a fresh
|
|
97
|
+
`aishell-open`. Verified against real `npm install -g` upgrades, not only simulated ones.
|
|
98
98
|
|
|
99
99
|
```sh
|
|
100
100
|
npm install -g @quolu/aishell
|
|
Binary file
|
|
Binary file
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
<key>CFBundlePackageType</key>
|
|
18
18
|
<string>APPL</string>
|
|
19
19
|
<key>CFBundleShortVersionString</key>
|
|
20
|
-
<string>0.4.
|
|
20
|
+
<string>0.4.6</string>
|
|
21
21
|
<key>CFBundleVersion</key>
|
|
22
|
-
<string>
|
|
22
|
+
<string>17</string>
|
|
23
23
|
<key>LSApplicationCategoryType</key>
|
|
24
24
|
<string>public.app-category.utilities</string>
|
|
25
25
|
<key>LSMinimumSystemVersion</key>
|
|
Binary file
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
<dict>
|
|
11
11
|
<key>cdhash</key>
|
|
12
12
|
<data>
|
|
13
|
-
|
|
13
|
+
HoHzgYUGrhrhbnDd/Qodjg5hvj4=
|
|
14
14
|
</data>
|
|
15
15
|
<key>requirement</key>
|
|
16
|
-
<string>cdhash H"
|
|
16
|
+
<string>cdhash H"1e81f3818506ae1ae16e70ddfd0a1d8e0e61be3e"</string>
|
|
17
17
|
</dict>
|
|
18
18
|
<key>Helpers/aishell-run-supervisor</key>
|
|
19
19
|
<dict>
|
|
20
20
|
<key>cdhash</key>
|
|
21
21
|
<data>
|
|
22
|
-
|
|
22
|
+
0X12donwxa/jr22+9QkWUdR0iDk=
|
|
23
23
|
</data>
|
|
24
24
|
<key>requirement</key>
|
|
25
|
-
<string>cdhash H"
|
|
25
|
+
<string>cdhash H"d17d767689f0c5afe3af6dbef5091651d4748839"</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.
|
|
3
|
+
"version": "0.4.6",
|
|
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
|
-
}
|