@cocorograph/hub-agent 0.8.113 → 0.8.114

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocorograph/hub-agent",
3
- "version": "0.8.113",
3
+ "version": "0.8.114",
4
4
  "description": "Hub Hosted Cockpit のローカル常駐 agent。Hub と outbound WSS で接続し、ローカルの Claude / Codex チャットと tmux セッションを中継する。",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -454,6 +454,7 @@ export class ClaudeStreamSession {
454
454
  cwd,
455
455
  model,
456
456
  permissionMode,
457
+ chromeEnabled,
457
458
  maxTurns,
458
459
  maxThinkingTokens,
459
460
  effort,
@@ -495,6 +496,7 @@ export class ClaudeStreamSession {
495
496
  this._seq = nextSessionSeq()
496
497
  this.cwd = cwd
497
498
  this.model = model || null
499
+ this.chromeEnabled = chromeEnabled === true
498
500
  this.permissionMode = permissionMode || null
499
501
  this.maxTurns = typeof maxTurns === "number" ? maxTurns : null
500
502
  this.maxThinkingTokens =
@@ -1534,6 +1536,7 @@ export class ClaudeStreamSession {
1534
1536
  abortController: this._abortController,
1535
1537
  stderr: (data) => this._stderrHandler(data),
1536
1538
  }
1539
+ if (this.chromeEnabled) options.extraArgs = { ...options.extraArgs, chrome: null }
1537
1540
  if (this.model) options.model = this.model
1538
1541
  if (this.permissionMode) options.permissionMode = this.permissionMode
1539
1542
  // Phase B: チャット SDK に効くオプション (ツール往復上限)。
@@ -2272,6 +2275,7 @@ export class ClaudeStreamSession {
2272
2275
  abortController: this._residentAbortController,
2273
2276
  stderr: (data) => this._stderrHandler(data),
2274
2277
  }
2278
+ if (this.chromeEnabled) options.extraArgs = { ...options.extraArgs, chrome: null }
2275
2279
  if (this.model) options.model = this.model
2276
2280
  if (this.permissionMode) options.permissionMode = this.permissionMode
2277
2281
  if (this.maxTurns != null) options.maxTurns = this.maxTurns
@@ -2985,6 +2989,7 @@ export class ClaudeStreamBridge extends EventEmitter {
2985
2989
  * cwd?: string,
2986
2990
  * model?: string|null,
2987
2991
  * permissionMode?: string|null,
2992
+ * chromeEnabled?: boolean,
2988
2993
  * maxTurns?: number|null,
2989
2994
  * maxThinkingTokens?: number|null,
2990
2995
  * effort?: string|null,
@@ -2997,6 +3002,7 @@ export class ClaudeStreamBridge extends EventEmitter {
2997
3002
  cwd,
2998
3003
  model,
2999
3004
  permissionMode,
3005
+ chromeEnabled,
3000
3006
  maxTurns,
3001
3007
  maxThinkingTokens,
3002
3008
  effort,
@@ -3071,6 +3077,7 @@ export class ClaudeStreamBridge extends EventEmitter {
3071
3077
  cwd: scwd,
3072
3078
  model: model || null,
3073
3079
  permissionMode: permissionMode || null,
3080
+ chromeEnabled,
3074
3081
  maxTurns: typeof maxTurns === "number" ? maxTurns : null,
3075
3082
  maxThinkingTokens:
3076
3083
  typeof maxThinkingTokens === "number" ? maxThinkingTokens : null,
package/src/enroll.mjs CHANGED
@@ -75,6 +75,11 @@ export async function enroll(enrollmentToken, opts = {}) {
75
75
  hub_url: hubUrl,
76
76
  // Hub から取得した Claude CLI 設定 (cockpit 管理画面でユーザーが指定可能)。
77
77
  // backend 未対応時は空文字で保存され、起動時の cmd 組み立てで無視される。
78
+ // Claude in Chrome: boolean で届いたときだけ保存する。古い Hub は値を返さないのでキーを
79
+ // 省略し (= 無効)、既存 agent.json は読み直さない (破損時に --force 再登録を妨げないため)。
80
+ ...(typeof data.claude_chrome_enabled === "boolean"
81
+ ? { claude_chrome_enabled: data.claude_chrome_enabled }
82
+ : {}),
78
83
  claude_model: typeof data.claude_model === "string" ? data.claude_model : "",
79
84
  claude_permission_mode:
80
85
  typeof data.claude_permission_mode === "string" ? data.claude_permission_mode : "",
package/src/main.mjs CHANGED
@@ -166,6 +166,7 @@ const BUNDLE_MANIFEST_PATH =
166
166
  export function resolveClaudeAttachOptions(config, msg = {}) {
167
167
  return {
168
168
  model: msg.model || config?.claude_model || null,
169
+ chromeEnabled: config?.claude_chrome_enabled === true,
169
170
  permissionMode:
170
171
  msg.permission_mode ||
171
172
  config?.claude_permission_mode ||
@@ -2324,13 +2325,17 @@ export function startStateLoop({ client, logger, intervalMs, claudeBridge, codex
2324
2325
  */
2325
2326
  export async function maybeSyncClaudeSettings(msg, ctx) {
2326
2327
  const hasClaudeFields =
2327
- typeof msg?.claude_model === "string" || typeof msg?.claude_permission_mode === "string"
2328
+ typeof msg?.claude_model === "string" || typeof msg?.claude_permission_mode === "string" ||
2329
+ typeof msg?.claude_chrome_enabled === "boolean"
2328
2330
  const hasCodexFields =
2329
2331
  typeof msg?.codex_model === "string" || typeof msg?.codex_effort === "string"
2330
2332
  if (!hasClaudeFields && !hasCodexFields) return
2331
2333
 
2332
2334
  const nextModel = typeof msg.claude_model === "string" ? msg.claude_model : ctx.config.claude_model || ""
2333
2335
  const nextMode = typeof msg.claude_permission_mode === "string" ? msg.claude_permission_mode : ctx.config.claude_permission_mode || ""
2336
+ const nextChromeEnabled = typeof msg.claude_chrome_enabled === "boolean"
2337
+ ? msg.claude_chrome_enabled
2338
+ : ctx.config.claude_chrome_enabled
2334
2339
  const nextCodexModel = typeof msg.codex_model === "string" ? msg.codex_model : ctx.config.codex_model || ""
2335
2340
  const nextCodexEffort = typeof msg.codex_effort === "string" ? msg.codex_effort : ctx.config.codex_effort || ""
2336
2341
  const prevModel = ctx.config.claude_model || ""
@@ -2340,6 +2345,7 @@ export async function maybeSyncClaudeSettings(msg, ctx) {
2340
2345
  if (
2341
2346
  nextModel === prevModel &&
2342
2347
  nextMode === prevMode &&
2348
+ nextChromeEnabled === ctx.config.claude_chrome_enabled &&
2343
2349
  nextCodexModel === prevCodexModel &&
2344
2350
  nextCodexEffort === prevCodexEffort
2345
2351
  ) {
@@ -2347,6 +2353,7 @@ export async function maybeSyncClaudeSettings(msg, ctx) {
2347
2353
  }
2348
2354
  ctx.config.claude_model = nextModel
2349
2355
  ctx.config.claude_permission_mode = nextMode
2356
+ if (typeof nextChromeEnabled === "boolean") ctx.config.claude_chrome_enabled = nextChromeEnabled
2350
2357
  ctx.config.codex_model = nextCodexModel
2351
2358
  ctx.config.codex_effort = nextCodexEffort
2352
2359
  try {
@@ -2356,6 +2363,7 @@ export async function maybeSyncClaudeSettings(msg, ctx) {
2356
2363
  hub_url: ctx.config.hub_url,
2357
2364
  claude_model: nextModel,
2358
2365
  claude_permission_mode: nextMode,
2366
+ claude_chrome_enabled: nextChromeEnabled,
2359
2367
  codex_model: nextCodexModel,
2360
2368
  codex_effort: nextCodexEffort,
2361
2369
  })