aicodeman 1.42.0 → 1.43.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 (203) hide show
  1. package/README.md +10 -10
  2. package/dist/claude-session-title.d.ts +6 -4
  3. package/dist/claude-session-title.d.ts.map +1 -1
  4. package/dist/claude-session-title.js +6 -4
  5. package/dist/claude-session-title.js.map +1 -1
  6. package/dist/config/cli-registry/patterns.d.ts +1 -1
  7. package/dist/config/cli-registry/patterns.d.ts.map +1 -1
  8. package/dist/config/cli-registry/patterns.js +3 -0
  9. package/dist/config/cli-registry/patterns.js.map +1 -1
  10. package/dist/config/cli-registry/schema.d.ts +1 -0
  11. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  12. package/dist/config/cli-registry/schema.js +5 -3
  13. package/dist/config/cli-registry/schema.js.map +1 -1
  14. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  15. package/dist/config/cli-registry/stock.js +255 -1
  16. package/dist/config/cli-registry/stock.js.map +1 -1
  17. package/dist/config/cli-registry/types.d.ts +11 -3
  18. package/dist/config/cli-registry/types.d.ts.map +1 -1
  19. package/dist/hooks-config.d.ts +9 -0
  20. package/dist/hooks-config.d.ts.map +1 -1
  21. package/dist/hooks-config.js +12 -0
  22. package/dist/hooks-config.js.map +1 -1
  23. package/dist/mcp-sync-targets.d.ts +6 -3
  24. package/dist/mcp-sync-targets.d.ts.map +1 -1
  25. package/dist/mcp-sync-targets.js +6 -3
  26. package/dist/mcp-sync-targets.js.map +1 -1
  27. package/dist/mux-interface.d.ts +7 -3
  28. package/dist/mux-interface.d.ts.map +1 -1
  29. package/dist/session-cli-registry-bridge.d.ts +2 -1
  30. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  31. package/dist/session-cli-registry-bridge.js.map +1 -1
  32. package/dist/session.d.ts +23 -8
  33. package/dist/session.d.ts.map +1 -1
  34. package/dist/session.js +38 -9
  35. package/dist/session.js.map +1 -1
  36. package/dist/tmux-manager.d.ts +3 -2
  37. package/dist/tmux-manager.d.ts.map +1 -1
  38. package/dist/tmux-manager.js +4 -2
  39. package/dist/tmux-manager.js.map +1 -1
  40. package/dist/types/session.d.ts +32 -4
  41. package/dist/types/session.d.ts.map +1 -1
  42. package/dist/types/session.js +2 -1
  43. package/dist/types/session.js.map +1 -1
  44. package/dist/utils/cli-installed-probes.d.ts +1 -1
  45. package/dist/utils/cli-installed-probes.d.ts.map +1 -1
  46. package/dist/utils/cli-installed-probes.js +4 -2
  47. package/dist/utils/cli-installed-probes.js.map +1 -1
  48. package/dist/utils/copilot-cli-resolver.d.ts +48 -0
  49. package/dist/utils/copilot-cli-resolver.d.ts.map +1 -0
  50. package/dist/utils/copilot-cli-resolver.js +112 -0
  51. package/dist/utils/copilot-cli-resolver.js.map +1 -0
  52. package/dist/utils/index.d.ts +1 -0
  53. package/dist/utils/index.d.ts.map +1 -1
  54. package/dist/utils/index.js +1 -0
  55. package/dist/utils/index.js.map +1 -1
  56. package/dist/web/case-path.d.ts +4 -2
  57. package/dist/web/case-path.d.ts.map +1 -1
  58. package/dist/web/case-path.js +13 -4
  59. package/dist/web/case-path.js.map +1 -1
  60. package/dist/web/public/admin-ui.js.gz +0 -0
  61. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  62. package/dist/web/public/{app.f04bb2a5.js → app.ae50029a.js} +7 -7
  63. package/dist/web/public/app.ae50029a.js.br +0 -0
  64. package/dist/web/public/app.ae50029a.js.gz +0 -0
  65. package/dist/web/public/approvals-ui.js.gz +0 -0
  66. package/dist/web/public/{constants.12b0c247.js → constants.e5e588db.js} +156 -2
  67. package/dist/web/public/constants.e5e588db.js.br +0 -0
  68. package/dist/web/public/constants.e5e588db.js.gz +0 -0
  69. package/dist/web/public/cron-ui.js.gz +0 -0
  70. package/dist/web/public/entrance-animations.js.gz +0 -0
  71. package/dist/web/public/git-status-ui.js.gz +0 -0
  72. package/dist/web/public/home-sessions.js.gz +0 -0
  73. package/dist/web/public/host-wake-ui.js.gz +0 -0
  74. package/dist/web/public/i18n.8f291f06.js +2 -0
  75. package/dist/web/public/i18n.8f291f06.js.br +0 -0
  76. package/dist/web/public/i18n.8f291f06.js.gz +0 -0
  77. package/dist/web/public/{image-input.fcdcb46c.js → image-input.941386e7.js} +24 -14
  78. package/dist/web/public/image-input.941386e7.js.br +0 -0
  79. package/dist/web/public/image-input.941386e7.js.gz +0 -0
  80. package/dist/web/public/index.html +23 -14
  81. package/dist/web/public/index.html.br +0 -0
  82. package/dist/web/public/index.html.gz +0 -0
  83. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  84. package/dist/web/public/{keyboard-accessory.b42f539b.js → keyboard-accessory.c283e827.js} +28 -17
  85. package/dist/web/public/keyboard-accessory.c283e827.js.br +0 -0
  86. package/dist/web/public/keyboard-accessory.c283e827.js.gz +0 -0
  87. package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
  88. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  89. package/dist/web/public/mobile-overview.js +1 -0
  90. package/dist/web/public/mobile-overview.js.br +0 -0
  91. package/dist/web/public/mobile-overview.js.gz +0 -0
  92. package/dist/web/public/mobile.13514863.css +1 -0
  93. package/dist/web/public/mobile.13514863.css.br +0 -0
  94. package/dist/web/public/mobile.13514863.css.gz +0 -0
  95. package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
  96. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  97. package/dist/web/public/{panels-ui.73ec0137.js → panels-ui.b7bfb9da.js} +6 -6
  98. package/dist/web/public/panels-ui.b7bfb9da.js.br +0 -0
  99. package/dist/web/public/panels-ui.b7bfb9da.js.gz +0 -0
  100. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  101. package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
  102. package/dist/web/public/readmymind-ui.js.gz +0 -0
  103. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  104. package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
  105. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  106. package/dist/web/public/security-notices.json +21 -0
  107. package/dist/web/public/session-lineage.js.gz +0 -0
  108. package/dist/web/public/{session-ui.d52ff6aa.js → session-ui.be076c88.js} +2 -2
  109. package/dist/web/public/session-ui.be076c88.js.br +0 -0
  110. package/dist/web/public/session-ui.be076c88.js.gz +0 -0
  111. package/dist/web/public/{settings-ui.3a22bd2a.js → settings-ui.fc4cc50a.js} +2 -2
  112. package/dist/web/public/settings-ui.fc4cc50a.js.br +0 -0
  113. package/dist/web/public/settings-ui.fc4cc50a.js.gz +0 -0
  114. package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
  115. package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
  116. package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
  117. package/dist/web/public/styles.dcfa907f.css +1 -0
  118. package/dist/web/public/styles.dcfa907f.css.br +0 -0
  119. package/dist/web/public/styles.dcfa907f.css.gz +0 -0
  120. package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
  121. package/dist/web/public/sw.js +2 -2
  122. package/dist/web/public/sw.js.br +0 -0
  123. package/dist/web/public/sw.js.gz +0 -0
  124. package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
  125. package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
  126. package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
  127. package/dist/web/public/terminal-split.js.gz +0 -0
  128. package/dist/web/public/terminal-tile.js.gz +0 -0
  129. package/dist/web/public/{terminal-ui.0a7ccc29.js → terminal-ui.ae01a7d1.js} +2 -2
  130. package/dist/web/public/terminal-ui.ae01a7d1.js.br +0 -0
  131. package/dist/web/public/terminal-ui.ae01a7d1.js.gz +0 -0
  132. package/dist/web/public/tile-grid.js +3 -6
  133. package/dist/web/public/tile-grid.js.br +0 -0
  134. package/dist/web/public/tile-grid.js.gz +0 -0
  135. package/dist/web/public/ultracode-panel.js.gz +0 -0
  136. package/dist/web/public/ultracode-windows.js.gz +0 -0
  137. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  138. package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
  139. package/dist/web/public/vendor/fflate.min.js.gz +0 -0
  140. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  141. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  142. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  143. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  144. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  145. package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
  146. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
  147. package/dist/web/public/vendor/xterm.css.gz +0 -0
  148. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  149. package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
  150. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  151. package/dist/web/public/webview-tabs.js.gz +0 -0
  152. package/dist/web/public/whats-new.json +9 -9
  153. package/dist/web/response-viewer-transcript.d.ts +6 -0
  154. package/dist/web/response-viewer-transcript.d.ts.map +1 -1
  155. package/dist/web/response-viewer-transcript.js +134 -1
  156. package/dist/web/response-viewer-transcript.js.map +1 -1
  157. package/dist/web/routes/mcp-sync-routes.d.ts +4 -4
  158. package/dist/web/routes/mcp-sync-routes.js +4 -4
  159. package/dist/web/routes/session-routes.d.ts +12 -2
  160. package/dist/web/routes/session-routes.d.ts.map +1 -1
  161. package/dist/web/routes/session-routes.js +45 -15
  162. package/dist/web/routes/session-routes.js.map +1 -1
  163. package/dist/web/routes/system-routes.d.ts.map +1 -1
  164. package/dist/web/routes/system-routes.js +11 -0
  165. package/dist/web/routes/system-routes.js.map +1 -1
  166. package/dist/web/schemas.d.ts +13 -0
  167. package/dist/web/schemas.d.ts.map +1 -1
  168. package/dist/web/schemas.js +33 -2
  169. package/dist/web/schemas.js.map +1 -1
  170. package/dist/web/server.d.ts.map +1 -1
  171. package/dist/web/server.js +11 -1
  172. package/dist/web/server.js.map +1 -1
  173. package/package.json +1 -1
  174. package/skills/codeman/SKILL.md +3 -2
  175. package/skills/codeman/reference/endpoints.md +8 -8
  176. package/skills/codeman/reference/messaging.md +5 -5
  177. package/skills/codeman/reference/recipes.md +1 -1
  178. package/skills/codeman/reference/verbs.md +4 -4
  179. package/dist/web/public/app.f04bb2a5.js.br +0 -0
  180. package/dist/web/public/app.f04bb2a5.js.gz +0 -0
  181. package/dist/web/public/constants.12b0c247.js.br +0 -0
  182. package/dist/web/public/constants.12b0c247.js.gz +0 -0
  183. package/dist/web/public/i18n.06659676.js +0 -2
  184. package/dist/web/public/i18n.06659676.js.br +0 -0
  185. package/dist/web/public/i18n.06659676.js.gz +0 -0
  186. package/dist/web/public/image-input.fcdcb46c.js.br +0 -0
  187. package/dist/web/public/image-input.fcdcb46c.js.gz +0 -0
  188. package/dist/web/public/keyboard-accessory.b42f539b.js.br +0 -0
  189. package/dist/web/public/keyboard-accessory.b42f539b.js.gz +0 -0
  190. package/dist/web/public/mobile.2dff1580.css +0 -1
  191. package/dist/web/public/mobile.2dff1580.css.br +0 -0
  192. package/dist/web/public/mobile.2dff1580.css.gz +0 -0
  193. package/dist/web/public/panels-ui.73ec0137.js.br +0 -0
  194. package/dist/web/public/panels-ui.73ec0137.js.gz +0 -0
  195. package/dist/web/public/session-ui.d52ff6aa.js.br +0 -0
  196. package/dist/web/public/session-ui.d52ff6aa.js.gz +0 -0
  197. package/dist/web/public/settings-ui.3a22bd2a.js.br +0 -0
  198. package/dist/web/public/settings-ui.3a22bd2a.js.gz +0 -0
  199. package/dist/web/public/styles.ba6a9b84.css +0 -1
  200. package/dist/web/public/styles.ba6a9b84.css.br +0 -0
  201. package/dist/web/public/styles.ba6a9b84.css.gz +0 -0
  202. package/dist/web/public/terminal-ui.0a7ccc29.js.br +0 -0
  203. package/dist/web/public/terminal-ui.0a7ccc29.js.gz +0 -0
package/dist/session.js CHANGED
@@ -341,6 +341,8 @@ export class Session extends EventEmitter {
341
341
  _taskCache = new SessionTaskCache();
342
342
  _name;
343
343
  _nameSource;
344
+ /** `pinCliSessionName` as of the last spawn (see {@link _refreshCliNamePin}). */
345
+ _pinEveryCliName = false;
344
346
  /**
345
347
  * Reconstructs the composer draft from USER keystrokes so the first real
346
348
  * prompt can name the tab. Fed only when a write says `fromUser`, and never
@@ -573,6 +575,8 @@ export class Session extends EventEmitter {
573
575
  _piConfig;
574
576
  // Grok configuration (only for mode === 'grok')
575
577
  _grokConfig;
578
+ // GitHub Copilot configuration (only for mode === 'copilot')
579
+ _copilotConfig;
576
580
  // DeepSeek Harness configuration (only for mode === 'deepseek')
577
581
  _deepSeekConfig;
578
582
  // OMP configuration (only for mode === 'omp')
@@ -741,6 +745,10 @@ export class Session extends EventEmitter {
741
745
  if (config.grokConfig) {
742
746
  this._grokConfig = config.grokConfig;
743
747
  }
748
+ // Apply GitHub Copilot configuration
749
+ if (config.copilotConfig) {
750
+ this._copilotConfig = config.copilotConfig;
751
+ }
744
752
  // Apply env overrides (exported at spawn, not persisted to disk).
745
753
  // Legacy migration: pre-0.7.2 carried effort as the CLAUDE_CODE_EFFORT_LEVEL env var,
746
754
  // which hard-locks /effort switching. Extract it into _effort (--settings soft default)
@@ -1434,16 +1442,31 @@ export class Session extends EventEmitter {
1434
1442
  return this._nameSource;
1435
1443
  }
1436
1444
  /**
1437
- * The name to pin on the Claude CLI as `--name`, or undefined to let Claude
1438
- * title the conversation itself. `--name` is the prompt-box label, the
1439
- * `/resume` picker entry and the terminal title all at once, and a pinned
1440
- * title stops Claude generating its own, so only a name the user chose is
1441
- * worth pinning. Pinning the `w1-myapp` placeholder gave every conversation
1442
- * in a case the same `/resume` entry; an auto name is a cut of the first
1443
- * prompt, which Claude's own generated title already beats.
1445
+ * The name to pin on the Claude CLI as `--name`, or undefined to let Claude title the
1446
+ * conversation itself. `--name` is the prompt-box label, the `/resume` picker entry and the
1447
+ * terminal title all at once, and a pinned title stops Claude generating its own.
1448
+ *
1449
+ * By default only a name the user chose is pinned. Pinning the `w1-myapp` placeholder gave
1450
+ * every conversation in a case the same `/resume` entry (the tab number restarts once a
1451
+ * case's tabs are closed), and an auto name is a cut of the first prompt, which Claude's
1452
+ * own generated title already beats.
1453
+ *
1454
+ * With the opt-in `pinCliSessionName` setting every non-blank tab name is pinned, so the
1455
+ * CLI's labels read the same as the tabs, at the cost of those generated titles. A rename
1456
+ * in Codeman then holds only until the next turn: a process started with `--name`
1457
+ * re-appends its in-memory title (see claude-session-title.ts). The setting is re-read
1458
+ * at each spawn and respawn by {@link _refreshCliNamePin}.
1444
1459
  */
1445
1460
  get cliPinnedName() {
1446
- return this._nameSource === 'manual' ? this._name : undefined;
1461
+ if (!this._pinEveryCliName)
1462
+ return this._nameSource === 'manual' ? this._name : undefined;
1463
+ return this._name.trim() ? this._name : undefined;
1464
+ }
1465
+ /** Re-read `pinCliSessionName` so `cliPinnedName` decides per launch, with no server restart. */
1466
+ async _refreshCliNamePin() {
1467
+ // Dynamic: hooks-config -> route-helpers imports Session, so a static import would be a cycle.
1468
+ const { readPinCliSessionNameEnabled } = await import('./hooks-config.js');
1469
+ this._pinEveryCliName = await readPinCliSessionNameEnabled();
1447
1470
  }
1448
1471
  setAutoClear(enabled, threshold) {
1449
1472
  this._autoOps.setAutoClear(enabled, threshold);
@@ -1612,6 +1635,7 @@ export class Session extends EventEmitter {
1612
1635
  antigravityConfig: this._antigravityConfig,
1613
1636
  piConfig: this._piConfig,
1614
1637
  grokConfig: this._grokConfig,
1638
+ copilotConfig: this._copilotConfig,
1615
1639
  deepSeekConfig: this._deepSeekConfig,
1616
1640
  ompConfig: this._ompConfig,
1617
1641
  resumeSessionId: this._resumeSessionId,
@@ -1963,6 +1987,7 @@ export class Session extends EventEmitter {
1963
1987
  antigravityConfig: this._antigravityConfig,
1964
1988
  piConfig: this._piConfig,
1965
1989
  grokConfig: this._grokConfig,
1990
+ copilotConfig: this._copilotConfig,
1966
1991
  deepSeekConfig: this._deepSeekConfig,
1967
1992
  // OMP resolution/pinning does NOT happen here. This object is built
1968
1993
  // EAGERLY — including on every boot-recovery reattach, before anyone
@@ -2056,6 +2081,7 @@ export class Session extends EventEmitter {
2056
2081
  * still inside it and renders no local `--session-id` to collide.
2057
2082
  */
2058
2083
  async _buildRespawnPaneOptionsWithResumePin() {
2084
+ await this._refreshCliNamePin();
2059
2085
  const options = this._buildRespawnPaneOptions();
2060
2086
  if (this._remote || this._docker)
2061
2087
  return options;
@@ -2320,6 +2346,7 @@ export class Session extends EventEmitter {
2320
2346
  if (this._closing) {
2321
2347
  throw new Error('Session is being closed');
2322
2348
  }
2349
+ await this._refreshCliNamePin();
2323
2350
  // Bounds the workspace-trust scan (see _maybeAcceptTrustDialog). Stamped here
2324
2351
  // rather than at PTY spawn so a slow mux attach still counts as startup.
2325
2352
  this._interactiveStartedAt = Date.now();
@@ -2439,6 +2466,7 @@ export class Session extends EventEmitter {
2439
2466
  antigravityConfig: this._antigravityConfig,
2440
2467
  piConfig: this._piConfig,
2441
2468
  grokConfig: this._grokConfig,
2469
+ copilotConfig: this._copilotConfig,
2442
2470
  deepSeekConfig: this._deepSeekConfig,
2443
2471
  ompConfig: this._ompConfig,
2444
2472
  resumeSessionId: this._resumeSessionId,
@@ -2977,6 +3005,7 @@ export class Session extends EventEmitter {
2977
3005
  antigravityConfig: this._antigravityConfig,
2978
3006
  piConfig: this._piConfig,
2979
3007
  grokConfig: this._grokConfig,
3008
+ copilotConfig: this._copilotConfig,
2980
3009
  deepSeekConfig: this._deepSeekConfig,
2981
3010
  ompConfig: this._ompConfig,
2982
3011
  };
@@ -4222,7 +4251,7 @@ export class Session extends EventEmitter {
4222
4251
  : this._mux.capturePaneText?.(this._muxSession.muxName),
4223
4252
  sendEnter: () => this._mux?.sendInput(this.id, '\r'),
4224
4253
  // ⚠ NO fallback glyph here, unlike the screen-reading probe elsewhere in this file.
4225
- // Only claude, codex, pi, opencode, omp and gemini declare a promptGlyph; the other modes would fall back
4254
+ // Only claude, codex, pi, opencode, omp, gemini and antigravity declare a promptGlyph; the other modes would fall back
4226
4255
  // to claude's `❯`, which is ALSO starship's default shell prompt (and pure's, and
4227
4256
  // spaceship's, and p10k lean's). On a shell session the line `❯ npm run build` sits
4228
4257
  // on screen for as long as the command runs, promptStillInComposer() reads that as