gpt-connector 0.2.0 → 0.3.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.
@@ -0,0 +1,137 @@
1
+ # AI installer向けセットアップ契約
2
+
3
+ ## 目的
4
+
5
+ AI installerが`gpt-connector`を安全かつ再現可能に導入し、人間にはChatGPTへの手動ログインだけを依頼するための契約。人間向けの説明は[README](../README.md)を正とし、この文書はAIが実行順、停止条件、完了条件を機械的に判断するために使う。
6
+
7
+ ## 前提
8
+
9
+ - 対象OSはmacOS。
10
+ - Google Chromeがインストール済みである。
11
+ - Node.js 26以上とnpmが利用できる。
12
+ - オーナーがChatGPTへログインできるaccountを持つ。
13
+ - connector用Chrome profileは`$HOME/.gpt-connector/browser-profile`、CDP endpointは`http://127.0.0.1:9223`を既定とする。
14
+
15
+ 前提を満たさない場合、AI installerは不足項目を報告して停止する。依頼されていないsystem packageのinstallやaccount作成へ進まない。
16
+
17
+ ## セットアップ手順
18
+
19
+ ### 1. installとversion確認
20
+
21
+ オーナーがversionを指定した場合はそのversionを使う。指定がない場合はnpmのlatestを使い、解決されたversionを報告する。
22
+
23
+ ```bash
24
+ npm install --global gpt-connector
25
+ gpt-connector --version
26
+ ```
27
+
28
+ version指定時:
29
+
30
+ ```bash
31
+ npm install --global gpt-connector@<version>
32
+ gpt-connector --version
33
+ ```
34
+
35
+ ### 2. 現在状態のread-only診断
36
+
37
+ ```bash
38
+ gpt-connector doctor
39
+ ```
40
+
41
+ `overall`が`ready`なら専用Chromeを重複起動せず、手順4へ進む。`doctor`はuploadやconversationを作らない。
42
+
43
+ ### 3. 専用Chromeの準備
44
+
45
+ `reasonCode`が`cdp_unavailable`の場合だけ、次で専用Chromeを起動する。
46
+
47
+ ```bash
48
+ gpt-connector browser start
49
+ ```
50
+
51
+ 起動後に`gpt-connector doctor`を再実行する。`reasonCode`が`auth_required`なら、AI installerはここで停止し、開いた専用ChromeでChatGPTへログインするよう人間へ依頼する。ログイン完了の申告後、`doctor`を再実行する。
52
+
53
+ `browser start`はcold startでは窓なしChromeのCDP browser endpointからChatGPT targetを最初から最小化状態で作成・確認してからapp readyを待つ。既存endpointではapp ready probeより先に専用ChatGPT windowを最小化する。現行macOS実測では最小化中も送受信を維持する。target作成、最小化または確認に失敗した場合、AI installerは成功扱いせず停止する。
54
+
55
+ `browser start`の成功返却時点では専用ChatGPT windowは最小化済みである。`AUTH_REQUIRED`時だけ同じ専用windowを表示へ戻してから停止する。人間が手動で表示へ戻す必要がある場合は`gpt-connector browser show`を使う。Chrome更新時はrelease smokeとして`browser start`、`models`、最小化中の`chat`、必要時の`browser show`を確認する。
56
+
57
+ window stateのread-backは非同期遷移の収束を有界時間待機して確認する。単発read-backが遷移前stateを返しただけでは失敗にしない。
58
+
59
+ show後もChrome CDPが`minimized`を返す場合があるため、showは`Page.bringToFront`を送り、最終状態を正規PIDのWindowServer layer 0 on-screen window数で確認する。start成功時は0、show成功時は1件以上である。
60
+
61
+ Chromeのhiddenはflashを覆うcold準備状態だけであり、最小化確認後は正規PIDだけをunhideしてからprobeする。hiddenのまま運用せず、Oracleのhide fallbackではない。
62
+
63
+ AI installerはpassword、cookie、tokenを要求・取得・表示・保存しない。ログインformの入力や認証challengeの突破を自動化しない。
64
+
65
+ ### 4. Codex MCP設定
66
+
67
+ 対象projectの既存`.codex/config.toml`を上書きせず、次のserver設定をmergeする。
68
+
69
+ ```toml
70
+ [mcp_servers.gpt_connector]
71
+ command = "gpt-connector-mcp"
72
+ startup_timeout_sec = 20
73
+ tool_timeout_sec = 240
74
+ enabled = true
75
+ required = false
76
+ enabled_tools = ["chatgpt_models", "chatgpt_chat", "chatgpt_close", "consult", "sessions", "diagnostics"]
77
+
78
+ [mcp_servers.gpt_connector.env]
79
+ GPT_CONNECTOR_CDP_ENDPOINT = "http://127.0.0.1:9223"
80
+ ```
81
+
82
+ consumerが明示的に別のstate directoryを必要とする場合だけ、project所有のabsolute pathを`GPT_CONNECTOR_STATE_DIR`へ設定する。他ツールの管理directoryやhookを流用しない。
83
+
84
+ 設定後、そのprojectで新しいCodex taskを開く。既存taskへの動的反映を成功条件にしない。
85
+
86
+ ## 完了条件
87
+
88
+ 次のすべてを満たした時だけセットアップ成功と報告する。
89
+
90
+ - `gpt-connector --version`が解決済みversionを返す。
91
+ - `gpt-connector doctor`がexit code 0で終了する。
92
+ - 診断JSONが少なくとも次の値を持つ。
93
+
94
+ ```json
95
+ {
96
+ "overall": "ready",
97
+ "reasonCode": "ready",
98
+ "cdpConnected": true,
99
+ "officialOrigin": true,
100
+ "authenticated": true
101
+ }
102
+ ```
103
+
104
+ - 対象projectの`.codex/config.toml`にMCP server設定が存在する。
105
+ - 新しいCodex taskから`diagnostics`または`chatgpt_models`を呼び出せる。
106
+
107
+ 最後のMCP確認はread-only toolで行う。セットアップ確認のためにChat、upload、conversationを作成しない。
108
+
109
+ ## reasonCode別の処理
110
+
111
+ | reasonCode | AI installerの処理 |
112
+ | --- | --- |
113
+ | `ready` | Chromeを再起動せず、未完了の設定だけを進める。 |
114
+ | `cdp_unavailable` | 専用Chromeを起動する。cold startでは窓なしChromeのbrowser CDPから最小化済みChatGPT targetを作成し、起動済みならapp probe前に既存ChatGPT windowを最小化する。ChatGPT page targetは1つにする。 |
115
+ | `auth_required` | 人間へ専用Chromeでの手動ログインを依頼し、完了申告まで停止する。 |
116
+ | `runtime_drift` | 非公開runtimeの互換性喪失として停止し、更新または製品側修正が必要と報告する。別方式へfallbackしない。 |
117
+ | `state_unavailable` | state directoryのpath、所有者、permissionを報告して停止する。台帳を無断削除しない。 |
118
+ | `connector_error` | 診断JSONと再現手順を保持して停止する。推測で成功扱いしない。 |
119
+
120
+ ## 再実行と再起動
121
+
122
+ - セットアップ再実行時は最初に`doctor`を実行し、`ready`なら専用Chromeを追加起動しない。
123
+ - 専用Chromeを終了した後は、手順3の同じコマンドで再起動する。通常Chromeのprofileへ切り替えない。
124
+ - MCP設定は既存内容を保ったまま必要なkeyだけをmergeする。同じserver定義を重複追加しない。
125
+ - npm packageを更新した場合はversionと`doctor`を再確認する。
126
+
127
+ ## 禁止事項
128
+
129
+ - 通常Chrome、Oracle、その他製品のbrowser profileをコピー・変更・再利用しない。
130
+ - ChatGPTのpassword、cookie、token、認証headerをpage外へ取り出さない。
131
+ - login、CDP、runtime driftの失敗を別APIやUI操作へ黙ってfallbackしない。
132
+ - セットアップ確認を理由にprompt送信、file upload、conversation作成を行わない。
133
+ - オーナーの依頼なしに既存MCP serverを削除・改名しない。
134
+
135
+ ## AI installerの最終報告
136
+
137
+ 成功時は、install済みversion、専用Chrome profile、CDP endpoint、`doctor`の主要5項目、変更したMCP設定fileを報告する。未完了時は、停止した手順、`reasonCode`、人間または製品側に必要な次の操作を明記する。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gpt-connector",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "UIに依存せず、ログイン済みChatGPT Web runtimeの通常ChatをCodexから呼び出すローカルconnector",
5
5
  "license": "MIT",
6
6
  "author": "kitepon-rgb",
@@ -24,14 +24,16 @@
24
24
  "files": [
25
25
  "dist/src",
26
26
  "README.md",
27
- "LICENSE"
27
+ "CHANGELOG.md",
28
+ "LICENSE",
29
+ "docs/ai-installer-setup-contract.md"
28
30
  ],
29
31
  "bin": {
30
32
  "gpt-connector": "dist/src/cli.js",
31
33
  "gpt-connector-mcp": "dist/src/mcp.js"
32
34
  },
33
35
  "engines": {
34
- "node": ">=26"
36
+ "node": ">=22"
35
37
  },
36
38
  "scripts": {
37
39
  "build": "tsc -p tsconfig.json",