@berthdev/berth 0.2.1-rc.0 → 0.2.2

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,21 @@
1
+ import type { Adapter, HookTarget } from './registry.js';
2
+ /**
3
+ * Where and how each agent reads its hooks (spec §8). Every format marks
4
+ * Berth's entries with MARKER so install is idempotent and uninstall removes
5
+ * only Berth's own entries.
6
+ */
7
+ export declare const MARKER = "BERTH_HOOK=1";
8
+ type Env = Record<string, string | undefined>;
9
+ /** Builds the command an agent runs for one event. */
10
+ export type CommandFor = (event: string) => string;
11
+ interface HookFormat {
12
+ file(env: Env): string;
13
+ install(file: string, events: string[], commandFor: CommandFor, adapter: Adapter): void;
14
+ uninstall(file: string): void;
15
+ }
16
+ /** OpenCode loads every module in its plugins folder; this one forwards session events to `berth hook`. */
17
+ export declare function opencodePlugin(node: string, cli: string, events: string[]): string;
18
+ export declare function hookFormat(target: HookTarget, cli?: string): HookFormat;
19
+ /** Whether the target file holds Berth's entries. */
20
+ export declare function containsBerth(file: string): boolean;
21
+ export {};
@@ -0,0 +1,199 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { BerthError, ExitCode } from '../errors.js';
5
+ /**
6
+ * Where and how each agent reads its hooks (spec §8). Every format marks
7
+ * Berth's entries with MARKER so install is idempotent and uninstall removes
8
+ * only Berth's own entries.
9
+ */
10
+ export const MARKER = 'BERTH_HOOK=1';
11
+ const home = (env) => env.HOME || homedir();
12
+ function readJson(file) {
13
+ if (!existsSync(file))
14
+ return {};
15
+ try {
16
+ return JSON.parse(readFileSync(file, 'utf8'));
17
+ }
18
+ catch (error) {
19
+ throw new BerthError(`cannot parse ${file}: ${error.message}`);
20
+ }
21
+ }
22
+ function writeText(file, text) {
23
+ mkdirSync(dirname(file), { recursive: true });
24
+ writeFileSync(file, text);
25
+ }
26
+ const writeJson = (file, data) => writeText(file, `${JSON.stringify(data, null, 2)}\n`);
27
+ function withoutBerthNested(groups = []) {
28
+ return groups
29
+ .map((g) => ({ ...g, hooks: (g.hooks ?? []).filter((h) => !h.command?.includes(MARKER)) }))
30
+ .filter((g) => g.hooks.length > 0);
31
+ }
32
+ function mapEvents(data, keep) {
33
+ const hooks = {};
34
+ for (const [event, groups] of Object.entries((data.hooks ?? {}))) {
35
+ const kept = keep(groups);
36
+ if (kept.length > 0)
37
+ hooks[event] = kept;
38
+ }
39
+ return hooks;
40
+ }
41
+ function nestedJson(file) {
42
+ return {
43
+ file,
44
+ install(path, events, commandFor) {
45
+ const data = readJson(path);
46
+ const hooks = mapEvents(data, withoutBerthNested);
47
+ for (const event of events) {
48
+ hooks[event] = [...(hooks[event] ?? []), { hooks: [{ type: 'command', command: commandFor(event) }] }];
49
+ }
50
+ writeJson(path, { ...data, hooks });
51
+ },
52
+ uninstall(path) {
53
+ if (!existsSync(path))
54
+ return;
55
+ const data = readJson(path);
56
+ writeJson(path, { ...data, hooks: mapEvents(data, withoutBerthNested) });
57
+ },
58
+ };
59
+ }
60
+ const withoutBerthFlat = (entries = []) => entries.filter((e) => !e.command?.includes(MARKER));
61
+ function flatJson(file, ownFile) {
62
+ return {
63
+ file,
64
+ install(path, events, commandFor) {
65
+ const data = ownFile ? {} : readJson(path);
66
+ const hooks = mapEvents(data, withoutBerthFlat);
67
+ for (const event of events)
68
+ hooks[event] = [...(hooks[event] ?? []), { type: 'command', command: commandFor(event) }];
69
+ writeJson(path, { ...data, version: 1, hooks });
70
+ },
71
+ uninstall(path) {
72
+ if (!existsSync(path))
73
+ return;
74
+ if (ownFile) {
75
+ rmSync(path, { force: true });
76
+ return;
77
+ }
78
+ const data = readJson(path);
79
+ writeJson(path, { ...data, hooks: mapEvents(data, withoutBerthFlat) });
80
+ },
81
+ };
82
+ }
83
+ // ---- Kimi Code: TOML array tables ---------------------------------------
84
+ const TOML_BEGIN = `# >>> berth hooks (${MARKER}; remove with: berth hooks uninstall kimi)`;
85
+ const TOML_END = '# <<< berth hooks';
86
+ function stripTomlBlock(text) {
87
+ const start = text.indexOf(TOML_BEGIN);
88
+ if (start < 0)
89
+ return text;
90
+ const end = text.indexOf(TOML_END, start);
91
+ const after = end < 0 ? text.length : end + TOML_END.length;
92
+ return `${text.slice(0, start).replace(/\n+$/, '\n')}${text.slice(after).replace(/^\n+/, '')}`.replace(/^\n$/, '');
93
+ }
94
+ /**
95
+ * Kimi Code rejects the whole config on an unknown field or event, so the
96
+ * block holds only `event` and `command`. It goes last: `[[hooks]]` tables
97
+ * at the end of the file cannot capture keys meant for another table.
98
+ */
99
+ const tomlConfig = {
100
+ file(env) {
101
+ if (env.KIMI_CODE_HOME)
102
+ return join(env.KIMI_CODE_HOME, 'config.toml');
103
+ const legacy = join(home(env), '.kimi');
104
+ const current = join(home(env), '.kimi-code');
105
+ return existsSync(legacy) && !existsSync(current) ? join(legacy, 'config.toml') : join(current, 'config.toml');
106
+ },
107
+ install(path, events, commandFor) {
108
+ const base = stripTomlBlock(existsSync(path) ? readFileSync(path, 'utf8') : '');
109
+ const tables = events.map((event) => `[[hooks]]\nevent = ${JSON.stringify(event)}\ncommand = ${JSON.stringify(commandFor(event))}\n`);
110
+ const sep = base && !base.endsWith('\n') ? '\n\n' : base ? '\n' : '';
111
+ writeText(path, `${base}${sep}${TOML_BEGIN}\n${tables.join('\n')}${TOML_END}\n`);
112
+ },
113
+ uninstall(path) {
114
+ if (existsSync(path))
115
+ writeText(path, stripTomlBlock(readFileSync(path, 'utf8')));
116
+ },
117
+ };
118
+ // ---- OpenCode: a plugin module ------------------------------------------
119
+ /** OpenCode loads every module in its plugins folder; this one forwards session events to `berth hook`. */
120
+ export function opencodePlugin(node, cli, events) {
121
+ return `// ${MARKER}: written by \`berth hooks install opencode\`; remove with \`berth hooks uninstall opencode\`.
122
+ import { spawn } from 'node:child_process';
123
+
124
+ const EVENTS = new Set(${JSON.stringify(events)});
125
+ const children = new Set();
126
+
127
+ function send(event, id) {
128
+ if (!process.env.TMUX_PANE) return;
129
+ try {
130
+ const child = spawn(${JSON.stringify(node)}, [${JSON.stringify(cli)}, 'hook', 'opencode', event], {
131
+ stdio: ['pipe', 'ignore', 'ignore'],
132
+ env: { ...process.env, BERTH_HOOK: '1' },
133
+ });
134
+ child.on('error', () => {});
135
+ child.stdin.end(JSON.stringify({ session_id: id ?? '' }));
136
+ } catch {
137
+ // Never disturb the agent.
138
+ }
139
+ }
140
+
141
+ export const BerthPlugin = async () => ({
142
+ event: async ({ event }) => {
143
+ if (!EVENTS.has(event.type)) return;
144
+ const props = event.properties ?? event.data ?? {};
145
+ const id = props.sessionID ?? props.info?.id;
146
+ // Subagent sessions are children of the conversation the user resumes.
147
+ if (props.info?.parentID) {
148
+ if (id) children.add(id);
149
+ return;
150
+ }
151
+ if (id && children.has(id)) return;
152
+ send(event.type, id);
153
+ },
154
+ });
155
+ `;
156
+ }
157
+ function opencodeFormat(node, cli) {
158
+ return {
159
+ file(env) {
160
+ const config = env.XDG_CONFIG_HOME || join(home(env), '.config');
161
+ return join(config, 'opencode', 'plugins', 'berth.js');
162
+ },
163
+ install(path, events) {
164
+ writeText(path, opencodePlugin(node, cli, events));
165
+ },
166
+ uninstall(path) {
167
+ if (existsSync(path) && readFileSync(path, 'utf8').includes(MARKER))
168
+ rmSync(path, { force: true });
169
+ },
170
+ };
171
+ }
172
+ // ---- Registry -----------------------------------------------------------
173
+ export function hookFormat(target, cli = '') {
174
+ switch (target) {
175
+ case 'claude-settings':
176
+ return nestedJson((env) => join(home(env), '.claude', 'settings.json'));
177
+ case 'codex-hooks':
178
+ return nestedJson((env) => join(home(env), '.codex', 'hooks.json'));
179
+ case 'gemini-settings':
180
+ return nestedJson((env) => join(home(env), '.gemini', 'settings.json'));
181
+ case 'qoder-settings':
182
+ return nestedJson((env) => join(env.QODER_CONFIG_DIR || join(home(env), '.qoder'), 'settings.json'));
183
+ case 'cursor-hooks':
184
+ return flatJson((env) => join(home(env), '.cursor', 'hooks.json'), false);
185
+ case 'copilot-hooks':
186
+ return flatJson((env) => join(env.COPILOT_HOME || join(home(env), '.copilot'), 'hooks', 'berth.json'), true);
187
+ case 'kimi-config':
188
+ return tomlConfig;
189
+ case 'opencode-plugin':
190
+ return opencodeFormat(process.execPath, cli);
191
+ default:
192
+ throw new BerthError(`unknown hook target ${String(target)}`, ExitCode.usage);
193
+ }
194
+ }
195
+ /** Whether the target file holds Berth's entries. */
196
+ export function containsBerth(file) {
197
+ return existsSync(file) && readFileSync(file, 'utf8').includes(MARKER);
198
+ }
199
+ //# sourceMappingURL=hook-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-files.js","sourceRoot":"","sources":["../../../src/agents/hook-files.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,11 @@ export declare function hookCommand(cliPath: string, agent: string, event: strin
4
4
  export declare function installHooks(agentId: string, cliPath: string, env?: NodeJS.ProcessEnv): string;
5
5
  export declare function uninstallHooks(agentId: string, env?: NodeJS.ProcessEnv): string;
6
6
  export declare function hooksInstalled(agentId: string, env?: NodeJS.ProcessEnv): boolean;
7
+ export type HookStatus = 'installed' | 'missing' | 'none';
8
+ /** Whether an agent's hooks are installed; `none` when Berth has no hooks for it. */
9
+ export declare function hookStatus(agentId: string, env?: NodeJS.ProcessEnv): HookStatus;
10
+ /** What a user is told when an agent in use has no hooks (spec §4.2). */
11
+ export declare function hookHint(agentId: string): string;
7
12
  /** What a hook event changes on the session, or nothing when the event does not matter. */
8
13
  export declare function metaForEvent(adapter: Adapter, event: string, payload: Record<string, unknown>): Record<string, string>;
9
14
  /**
@@ -1,6 +1,3 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { dirname, join } from 'node:path';
3
- import { homedir } from 'node:os';
4
1
  import { BerthError, ExitCode } from '../errors.js';
5
2
  import { shellQuote } from '../shell.js';
6
3
  import { Tmux } from '../tmux/client.js';
@@ -8,42 +5,16 @@ import { presentState } from '../present/state.js';
8
5
  import { createContext } from '../context.js';
9
6
  import { snapshotQuietly } from '../snapshot/take.js';
10
7
  import { requireAdapter } from './commands.js';
11
- import { stateForEvent } from './registry.js';
12
- /** Marker that identifies hook entries written by Berth. */
13
- const MARKER = 'BERTH_HOOK=1';
14
- function hookFile(adapter, env) {
15
- const home = env.HOME || homedir();
16
- switch (adapter.hookTarget) {
17
- case 'claude-settings':
18
- return join(home, '.claude', 'settings.json');
19
- case 'codex-hooks':
20
- return join(home, '.codex', 'hooks.json');
21
- default:
22
- throw new BerthError(`${adapter.displayName} has no hook integration in Berth yet`, ExitCode.usage);
23
- }
24
- }
8
+ import { getAdapter, stateForEvent } from './registry.js';
9
+ import { containsBerth, hookFormat, MARKER } from './hook-files.js';
25
10
  function hookEvents(adapter) {
26
11
  const { start, working, waiting, done } = adapter.events;
27
12
  return [...new Set([...start, ...working, ...waiting, ...done])];
28
13
  }
29
- function readHooks(file) {
30
- if (!existsSync(file))
31
- return {};
32
- try {
33
- return JSON.parse(readFileSync(file, 'utf8'));
34
- }
35
- catch (error) {
36
- throw new BerthError(`cannot parse ${file}: ${error.message}`);
37
- }
38
- }
39
- function withoutBerth(groups = []) {
40
- return groups
41
- .map((g) => ({ ...g, hooks: (g.hooks ?? []).filter((h) => !h.command?.includes(MARKER)) }))
42
- .filter((g) => g.hooks.length > 0);
43
- }
44
- function writeHooks(file, data) {
45
- mkdirSync(dirname(file), { recursive: true });
46
- writeFileSync(file, `${JSON.stringify(data, null, 2)}\n`);
14
+ function targetOf(adapter) {
15
+ if (!adapter.hookTarget)
16
+ throw new BerthError(`${adapter.displayName} has no hook integration`, ExitCode.usage);
17
+ return adapter.hookTarget;
47
18
  }
48
19
  /** Command an agent runs for an event: `BERTH_HOOK=1 <node> <cli> hook <agent> <event>`. */
49
20
  export function hookCommand(cliPath, agent, event) {
@@ -51,46 +22,49 @@ export function hookCommand(cliPath, agent, event) {
51
22
  }
52
23
  export function installHooks(agentId, cliPath, env = process.env) {
53
24
  const adapter = requireAdapter(agentId);
54
- const file = hookFile(adapter, env);
55
- const data = readHooks(file);
56
- const hooks = { ...(data.hooks ?? {}) };
57
- for (const event of hookEvents(adapter)) {
58
- hooks[event] = [...withoutBerth(hooks[event]), { hooks: [{ type: 'command', command: hookCommand(cliPath, adapter.id, event) }] }];
59
- }
60
- writeHooks(file, { ...data, hooks });
25
+ const format = hookFormat(targetOf(adapter), cliPath);
26
+ const file = format.file(env);
27
+ format.install(file, hookEvents(adapter), (event) => hookCommand(cliPath, adapter.id, event), adapter);
61
28
  return file;
62
29
  }
63
30
  export function uninstallHooks(agentId, env = process.env) {
64
- const adapter = requireAdapter(agentId);
65
- const file = hookFile(adapter, env);
66
- if (!existsSync(file))
67
- return file;
68
- const data = readHooks(file);
69
- const hooks = {};
70
- for (const [event, groups] of Object.entries(data.hooks ?? {})) {
71
- const kept = withoutBerth(groups);
72
- if (kept.length > 0)
73
- hooks[event] = kept;
74
- }
75
- writeHooks(file, { ...data, hooks });
31
+ const format = hookFormat(targetOf(requireAdapter(agentId)));
32
+ const file = format.file(env);
33
+ format.uninstall(file);
76
34
  return file;
77
35
  }
78
36
  export function hooksInstalled(agentId, env = process.env) {
79
37
  const adapter = requireAdapter(agentId);
80
38
  if (!adapter.hookTarget)
81
39
  return false;
82
- const data = readHooks(hookFile(adapter, env));
83
- return Object.values(data.hooks ?? {}).some((groups) => groups.some((g) => g.hooks?.some((h) => h.command?.includes(MARKER))));
40
+ return containsBerth(hookFormat(adapter.hookTarget).file(env));
41
+ }
42
+ /** Whether an agent's hooks are installed; `none` when Berth has no hooks for it. */
43
+ export function hookStatus(agentId, env = process.env) {
44
+ const adapter = getAdapter(agentId);
45
+ if (!adapter?.hookTarget)
46
+ return 'none';
47
+ try {
48
+ return hooksInstalled(agentId, env) ? 'installed' : 'missing';
49
+ }
50
+ catch {
51
+ return 'missing';
52
+ }
53
+ }
54
+ /** What a user is told when an agent in use has no hooks (spec §4.2). */
55
+ export function hookHint(agentId) {
56
+ const name = getAdapter(agentId)?.displayName ?? agentId;
57
+ return `Berth: ${name} hooks are not installed, so after a restart this session starts a new conversation. Run: berth hooks install ${agentId}`;
84
58
  }
85
59
  /** What a hook event changes on the session, or nothing when the event does not matter. */
86
60
  export function metaForEvent(adapter, event, payload) {
87
61
  const meta = {};
88
- const id = payload.session_id ?? payload.sessionID ?? payload.conversation_id;
62
+ const id = payload.session_id ?? payload.sessionId ?? payload.sessionID ?? payload.conversation_id;
89
63
  if (adapter.events.start.includes(event) && typeof id === 'string' && id)
90
64
  meta.conversation = id;
91
65
  let state = stateForEvent(adapter, event);
92
- // Claude Code also sends Notification for an idle reminder; only a permission request means waiting.
93
- if (adapter.id === 'claude' && event === 'Notification' && !/permission/i.test(String(payload.message ?? '')))
66
+ // Some agents also notify for idle reminders; only a permission request means waiting.
67
+ if (state === 'waiting' && adapter.waitingWhen && !adapter.waitingWhen(payload))
94
68
  state = undefined;
95
69
  if (state)
96
70
  meta.state = state;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/agents/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAgB,MAAM,eAAe,CAAC;AAE5D,4DAA4D;AAC5D,MAAM,MAAM,GAAG,cAAc,CAAC;AAM9B,SAAS,QAAQ,CAAC,OAAgB,EAAE,GAAuC;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACnC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3B,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5C;YACE,MAAM,IAAI,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,uCAAuC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAgB;IAClC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACzD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAa,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,gBAAgB,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,SAAsB,EAAE;IAC5C,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAc;IAC9C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,KAAa;IACvE,OAAO,GAAG,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IAC9E,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAgC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IACrE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrI,CAAC;IACD,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3C,CAAC;IACD,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjI,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,KAAa,EAAE,OAAgC;IAC5F,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAC9E,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE;QAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACjG,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,qGAAqG;IACrG,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,KAAK,cAAc,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAAE,KAAK,GAAG,SAAS,CAAC;IACjI,IAAI,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,8DAA8D;IAC9D,IAAI,KAAK,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7H,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,KAAa,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IACzF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,GAA4B,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,mEAAmE;QACnE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1E,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/agents/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function conversationByName(agent: string, cwd: string, name: string, env?: NodeJS.ProcessEnv): string | undefined;
@@ -2,25 +2,31 @@ import { closeSync, existsSync, openSync, readdirSync, readSync, realpathSync, s
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  /**
5
- * Name key (spec §4.2): a Claude Code session started with `--name X` records
6
- * X as a `custom-title` entry near the top of its transcript. The newest
7
- * transcript in the session's directory carrying that title is the session's
8
- * conversation. Claude keeps a directory's transcripts under
9
- * ~/.claude/projects/<cwd with every non-alphanumeric character as '-'>.
5
+ * Name key (spec §4.2): an agent started with `--name X` records X as a
6
+ * `custom-title` entry near the top of its transcript. The newest transcript
7
+ * in the session's directory carrying that title is the session's
8
+ * conversation. Claude Code and Qoder CLI keep a directory's transcripts as
9
+ * <root>/projects/<encoded cwd>/<id>.jsonl; Claude encodes every
10
+ * non-alphanumeric character as '-', Qoder documents '/' as '-'.
10
11
  */
11
12
  const HEADER_LINES = 40;
12
- function projectDirs(cwd, home) {
13
- const encode = (p) => join(home, '.claude', 'projects', p.replace(/[^A-Za-z0-9]/g, '-'));
14
- const dirs = [encode(cwd)];
13
+ const ROOTS = {
14
+ claude: (env) => join(env.HOME || homedir(), '.claude'),
15
+ qoder: (env) => env.QODER_CONFIG_DIR || join(env.HOME || homedir(), '.qoder'),
16
+ };
17
+ const ENCODINGS = [(p) => p.replace(/[^A-Za-z0-9]/g, '-'), (p) => p.replace(/\//g, '-')];
18
+ function projectDirs(root, cwd) {
19
+ const paths = [cwd];
15
20
  try {
16
21
  const real = realpathSync(cwd);
17
22
  if (real !== cwd)
18
- dirs.push(encode(real));
23
+ paths.push(real);
19
24
  }
20
25
  catch {
21
26
  // The directory may be gone; the recorded path still names its transcripts.
22
27
  }
23
- return dirs.filter((d) => existsSync(d));
28
+ const dirs = paths.flatMap((p) => ENCODINGS.map((encode) => join(root, 'projects', encode(p))));
29
+ return [...new Set(dirs)].filter((d) => existsSync(d));
24
30
  }
25
31
  function titleOf(file) {
26
32
  const fd = openSync(file, 'r');
@@ -43,8 +49,11 @@ function titleOf(file) {
43
49
  closeSync(fd);
44
50
  }
45
51
  }
46
- export function claudeConversationByName(cwd, name, home = process.env.HOME || homedir()) {
47
- const files = projectDirs(cwd, home)
52
+ export function conversationByName(agent, cwd, name, env = process.env) {
53
+ const root = ROOTS[agent];
54
+ if (!root)
55
+ return undefined;
56
+ const files = projectDirs(root(env), cwd)
48
57
  .flatMap((dir) => readdirSync(dir).filter((f) => f.endsWith('.jsonl')).map((f) => join(dir, f)))
49
58
  .map((file) => ({ file, mtime: statSync(file).mtimeMs }))
50
59
  .sort((a, b) => b.mtime - a.mtime);
@@ -54,4 +63,4 @@ export function claudeConversationByName(cwd, name, home = process.env.HOME || h
54
63
  }
55
64
  return undefined;
56
65
  }
57
- //# sourceMappingURL=claude-name.js.map
66
+ //# sourceMappingURL=name-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-key.js","sourceRoot":"","sources":["../../../src/agents/name-key.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * `source` records where each row's commands and events come from:
5
5
  * - `help <version>`: checked against the CLI's own --help on that version;
6
- * - `cmux`: follows cmux's handling of that agent (reference commit in spec §8).
6
+ * - `cmux`: follows cmux's handling of that agent (reference commit in spec §8);
7
+ * - `docs`: the CLI's official documentation (links in spec §8).
7
8
  * No code is taken from other projects; facts about the CLIs are restated here.
8
9
  */
9
10
  export type AgentState = 'working' | 'waiting' | 'done';
@@ -14,6 +15,8 @@ export interface HookEvents {
14
15
  waiting: string[];
15
16
  done: string[];
16
17
  }
18
+ /** Hook file formats Berth can write (see hook-files.ts). */
19
+ export type HookTarget = 'claude-settings' | 'codex-hooks' | 'gemini-settings' | 'qoder-settings' | 'cursor-hooks' | 'copilot-hooks' | 'kimi-config' | 'opencode-plugin';
17
20
  export interface Adapter {
18
21
  id: string;
19
22
  displayName: string;
@@ -24,8 +27,10 @@ export interface Adapter {
24
27
  /** Options kept on resume; value says whether the option takes an argument. */
25
28
  keep: Record<string, boolean>;
26
29
  /** Where Berth writes hooks for this agent, when it supports them. */
27
- hookTarget?: 'claude-settings' | 'codex-hooks';
30
+ hookTarget?: HookTarget;
28
31
  events: HookEvents;
32
+ /** For a waiting event that also fires for other reasons: whether this payload asks for the user. */
33
+ waitingWhen?: (payload: Record<string, unknown>) => boolean;
29
34
  source: string;
30
35
  }
31
36
  export declare const ADAPTERS: Adapter[];
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * `source` records where each row's commands and events come from:
5
5
  * - `help <version>`: checked against the CLI's own --help on that version;
6
- * - `cmux`: follows cmux's handling of that agent (reference commit in spec §8).
6
+ * - `cmux`: follows cmux's handling of that agent (reference commit in spec §8);
7
+ * - `docs`: the CLI's official documentation (links in spec §8).
7
8
  * No code is taken from other projects; facts about the CLIs are restated here.
8
9
  */
9
10
  const noEvents = { start: [], working: [], waiting: [], done: [] };
@@ -31,6 +32,7 @@ export const ADAPTERS = [
31
32
  },
32
33
  hookTarget: 'claude-settings',
33
34
  events: claudeEvents,
35
+ waitingWhen: (p) => /permission/i.test(String(p.message ?? '')),
34
36
  source: 'help 2.1.310',
35
37
  },
36
38
  {
@@ -63,8 +65,10 @@ export const ADAPTERS = [
63
65
  launch: 'gemini {args}',
64
66
  resume: 'gemini --resume {conversation} {args}',
65
67
  keep: { '--model': true, '-m': true, '--yolo': false, '--approval-mode': true },
66
- events: noEvents,
67
- source: 'cmux',
68
+ hookTarget: 'gemini-settings',
69
+ events: { start: ['SessionStart'], working: ['BeforeAgent'], waiting: ['Notification'], done: ['AfterAgent'] },
70
+ waitingWhen: (p) => p.notification_type === 'ToolPermission',
71
+ source: 'docs (hooks, hooks on by default since 0.27); cmux',
68
72
  },
69
73
  {
70
74
  id: 'opencode',
@@ -73,18 +77,21 @@ export const ADAPTERS = [
73
77
  launch: 'opencode {args}',
74
78
  resume: 'opencode --session {conversation} {args}',
75
79
  keep: { '--model': true, '-m': true, '--agent': true },
80
+ hookTarget: 'opencode-plugin',
76
81
  events: { start: ['session.created'], working: [], waiting: [], done: ['session.idle'] },
77
- source: 'cmux',
82
+ source: 'docs (plugins); cmux',
78
83
  },
79
84
  {
80
85
  id: 'copilot',
81
86
  displayName: 'GitHub Copilot CLI',
82
87
  binary: 'copilot',
83
88
  launch: 'copilot {args}',
84
- resume: 'copilot --resume {conversation} {args}',
89
+ resume: 'copilot --resume={conversation} {args}',
85
90
  keep: { '--model': true, '--allow-all-tools': false, '--add-dir': true },
86
- events: { start: [], working: [], waiting: [], done: ['Notification'] },
87
- source: 'cmux',
91
+ hookTarget: 'copilot-hooks',
92
+ events: { start: ['sessionStart'], working: ['userPromptSubmitted'], waiting: ['notification'], done: ['agentStop'] },
93
+ waitingWhen: (p) => /permission/i.test(String(p.notification_type ?? p.notificationType ?? '')),
94
+ source: 'docs (hooks, CLI 1.0.21+); cmux',
88
95
  },
89
96
  {
90
97
  id: 'cursor',
@@ -93,8 +100,9 @@ export const ADAPTERS = [
93
100
  launch: 'cursor-agent {args}',
94
101
  resume: 'cursor-agent --resume {conversation} {args}',
95
102
  keep: { '--model': true, '--force': false },
96
- events: noEvents,
97
- source: 'help 2025.09.12 (commands); cmux',
103
+ hookTarget: 'cursor-hooks',
104
+ events: { start: ['sessionStart'], working: ['beforeSubmitPrompt'], waiting: [], done: ['stop'] },
105
+ source: 'help 2025.09.12 (commands); docs (hooks, CLI 2026.01+); cmux',
98
106
  },
99
107
  {
100
108
  id: 'kimi',
@@ -103,8 +111,9 @@ export const ADAPTERS = [
103
111
  launch: 'kimi {args}',
104
112
  resume: 'kimi --session {conversation} {args}',
105
113
  keep: { '--agent': true, '--add-dir': true, '--model': true, '-m': true },
106
- events: noEvents,
107
- source: 'help 0.31.1',
114
+ hookTarget: 'kimi-config',
115
+ events: { start: ['SessionStart'], working: ['UserPromptSubmit'], waiting: ['PermissionRequest'], done: ['Stop'] },
116
+ source: 'help 0.31.1 (commands); docs (hooks); cmux',
108
117
  },
109
118
  {
110
119
  id: 'qoder',
@@ -113,8 +122,9 @@ export const ADAPTERS = [
113
122
  launch: 'qodercli --name {name} {args}',
114
123
  resume: 'qodercli --resume {conversation} {args}',
115
124
  keep: { '--model': true, '--yolo': false },
116
- events: noEvents,
117
- source: 'help 1.0.48 (commands); cmux',
125
+ hookTarget: 'qoder-settings',
126
+ events: { start: ['SessionStart'], working: ['UserPromptSubmit'], waiting: ['PermissionRequest'], done: ['Stop'] },
127
+ source: 'help 1.0.48 (commands); docs (hooks); cmux',
118
128
  },
119
129
  {
120
130
  id: 'shell',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { fileURLToPath } from 'node:url';
6
6
  import { parseArgs } from 'node:util';
7
7
  import { createContext } from '../context.js';
8
8
  import { BerthError, ExitCode } from '../errors.js';
9
- import { handleHook, installHooks, uninstallHooks } from '../agents/hooks.js';
9
+ import { handleHook, hookHint, hookStatus, installHooks, uninstallHooks } from '../agents/hooks.js';
10
10
  import { adopt, bellRang, checkOrigin, create, list, requireLive, stamp } from '../registry/sessions.js';
11
11
  import { doctor } from '../registry/doctor.js';
12
12
  import { takeSnapshot } from '../snapshot/take.js';
@@ -60,6 +60,11 @@ function formatResults(results) {
60
60
  return 'nothing to restore';
61
61
  return results.map((r) => `${r.name}\t${r.outcome}${r.detail ? `\t${r.detail}` : ''}`).join('\n');
62
62
  }
63
+ /** Tell the user, on stderr, when the agent just started has no hooks. */
64
+ function hintHooks(agent) {
65
+ if (agent && hookStatus(agent) === 'missing')
66
+ process.stderr.write(`${hookHint(agent)}\n`);
67
+ }
63
68
  function cliPath() {
64
69
  return realpathSync(fileURLToPath(import.meta.url));
65
70
  }
@@ -92,11 +97,14 @@ function run(ctx, command, rest, out) {
92
97
  extraArgs,
93
98
  });
94
99
  out(name);
100
+ hintHooks(positionals[0]);
95
101
  return ExitCode.ok;
96
102
  }
97
103
  case 'adopt': {
98
104
  const { values, positionals } = parse(rest, { agent: { type: 'string' }, origin: { type: 'string' } });
99
- adopt(ctx, need(positionals[0], 'session'), need(values.agent, '--agent'), values.origin);
105
+ const agent = need(values.agent, '--agent');
106
+ adopt(ctx, need(positionals[0], 'session'), agent, values.origin);
107
+ hintHooks(agent);
100
108
  return ExitCode.ok;
101
109
  }
102
110
  case 'attach': {
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,7 @@ export interface Context {
5
5
  config: BerthConfig;
6
6
  tmux: Tmux;
7
7
  store: SnapshotStore;
8
+ /** Environment the context was made from; locates agent configuration. */
9
+ env: Record<string, string | undefined>;
8
10
  }
9
11
  export declare function createContext(env?: Record<string, string | undefined>): Context;
@@ -7,6 +7,7 @@ export function createContext(env = process.env) {
7
7
  config,
8
8
  tmux: new Tmux({ bin: config.tmuxBin, socket: config.tmuxSocket, socketPath: config.tmuxSocketPath }),
9
9
  store: new SnapshotStore(config.snapshotRoot),
10
+ env,
10
11
  };
11
12
  }
12
13
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQxC,MAAM,UAAU,aAAa,CAAC,MAA0C,OAAO,CAAC,GAAG;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;QACrG,KAAK,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;KAC9C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAUxC,MAAM,UAAU,aAAa,CAAC,MAA0C,OAAO,CAAC,GAAG;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;QACrG,KAAK,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;QAC7C,GAAG;KACJ,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ export { BerthError, ExitCode } from './errors.js';
4
4
  export { Tmux, type LiveSession, type SessionMeta } from './tmux/client.js';
5
5
  export { ADAPTERS, getAdapter, type Adapter } from './agents/registry.js';
6
6
  export { keptArgs, launchCommand, resumeCommand } from './agents/commands.js';
7
- export { installHooks, uninstallHooks, handleHook, metaForEvent } from './agents/hooks.js';
7
+ export { installHooks, uninstallHooks, handleHook, metaForEvent, hookStatus, hookHint, type HookStatus } from './agents/hooks.js';
8
8
  export { list, create, adopt, stamp, bellRang, clearBell, BELL_NOTE, type SessionRow } from './registry/sessions.js';
9
9
  export { doctor } from './registry/doctor.js';
10
10
  export { SnapshotStore, type Snapshot, type SnapshotSession } from './snapshot/store.js';
package/dist/src/index.js CHANGED
@@ -4,7 +4,7 @@ export { BerthError, ExitCode } from './errors.js';
4
4
  export { Tmux } from './tmux/client.js';
5
5
  export { ADAPTERS, getAdapter } from './agents/registry.js';
6
6
  export { keptArgs, launchCommand, resumeCommand } from './agents/commands.js';
7
- export { installHooks, uninstallHooks, handleHook, metaForEvent } from './agents/hooks.js';
7
+ export { installHooks, uninstallHooks, handleHook, metaForEvent, hookStatus, hookHint } from './agents/hooks.js';
8
8
  export { list, create, adopt, stamp, bellRang, clearBell, BELL_NOTE } from './registry/sessions.js';
9
9
  export { doctor } from './registry/doctor.js';
10
10
  export { SnapshotStore } from './snapshot/store.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,IAAI,EAAsC,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAmB,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAuC,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAc,MAAM,qBAAqB,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,IAAI,EAAsC,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAClI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAmB,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAuC,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAc,MAAM,qBAAqB,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { appendFileSync } from 'node:fs';
2
2
  import { stamp } from '../registry/sessions.js';
3
3
  import { isIterm2, presentState } from './state.js';
4
+ import { hookHint, hookStatus } from '../agents/hooks.js';
4
5
  /** iTerm2 user variable naming the session a pane shows (spec §7.3). */
5
6
  export const PANE_VARIABLE = 'berthSession';
6
7
  export function setUserVar(name, value) {
@@ -27,5 +28,21 @@ export function clientAttached(ctx, client) {
27
28
  stamp(ctx, client.session, { origin: 'iterm2' });
28
29
  }
29
30
  presentState(ctx.tmux, client.session, live.meta.state ?? '', { note: live.meta.note, clients: [{ tty: client.tty, termtype: client.termtype }] });
31
+ if (live.meta.origin !== 'vscode')
32
+ hintHooksOnce(ctx, live.meta.agent, client.tty);
33
+ }
34
+ const HINT_SECONDS = 10;
35
+ /**
36
+ * Terminals other than VS Code (which asks in its own UI) get the hooks hint
37
+ * in tmux's status line, once per agent per tmux server.
38
+ */
39
+ function hintHooksOnce(ctx, agent, tty) {
40
+ if (hookStatus(agent, ctx.env) !== 'missing')
41
+ return;
42
+ const flag = `@berth_hinted_${agent}`;
43
+ if (ctx.tmux.run(['show-option', '-gqv', flag], true).stdout.trim())
44
+ return;
45
+ ctx.tmux.run(['set-option', '-g', flag, '1'], true);
46
+ ctx.tmux.run(['display-message', '-c', tty, '-d', String(HINT_SECONDS * 1000), hookHint(agent)], true);
30
47
  }
31
48
  //# sourceMappingURL=attach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/present/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpD,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,wBAAwB,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrF,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,MAAsB;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;QAAE,OAAO;IAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AACrJ,CAAC"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/present/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,wBAAwB,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrF,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,MAAsB;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;QAAE,OAAO;IAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACnJ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAY,EAAE,KAAa,EAAE,GAAW;IAC7D,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO;IACrD,MAAM,IAAI,GAAG,iBAAiB,KAAK,EAAE,CAAC;IACtC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO;IAC5E,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACzG,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Context } from '../context.js';
2
+ import { type HookStatus } from '../agents/hooks.js';
2
3
  /** One row of `berth ls` (implementation §2.2). */
3
4
  export interface SessionRow {
4
5
  name: string;
@@ -11,6 +12,8 @@ export interface SessionRow {
11
12
  note: string;
12
13
  attachedClients: number;
13
14
  live: boolean;
15
+ /** Whether the agent's Berth hooks are installed (spec §4.2). */
16
+ hooks: HookStatus;
14
17
  }
15
18
  export declare const ORIGINS: readonly ["vscode", "iterm2", "none"];
16
19
  export declare function list(ctx: Context): SessionRow[];
@@ -39,8 +42,8 @@ export declare const BELL_NOTE = "bell";
39
42
  /**
40
43
  * A terminal bell from a managed session (tmux alert-bell). Agents without
41
44
  * Berth hooks get state `waiting`, so every agent can ask for attention; for
42
- * agents whose hooks are installed the hooks are more precise and the bell
43
- * is ignored. Returns whether the state changed.
45
+ * agents whose installed hooks report waiting the hooks are more precise and
46
+ * the bell is ignored. Returns whether the state changed.
44
47
  */
45
48
  export declare function bellRang(ctx: Context, name: string, env?: NodeJS.ProcessEnv): boolean;
46
49
  /** Seeing a session answers its bell: clear a bell-raised waiting state. */
@@ -1,13 +1,21 @@
1
1
  import { basename } from 'node:path';
2
2
  import { BerthError, ExitCode } from '../errors.js';
3
3
  import { launchCommand, requireAdapter } from '../agents/commands.js';
4
- import { hooksInstalled } from '../agents/hooks.js';
4
+ import { hooksInstalled, hookStatus } from '../agents/hooks.js';
5
5
  import { getAdapter } from '../agents/registry.js';
6
6
  import { snapshotQuietly } from '../snapshot/take.js';
7
7
  import { presentState } from '../present/state.js';
8
8
  export const ORIGINS = ['vscode', 'iterm2', 'none'];
9
9
  export function list(ctx) {
10
10
  const live = ctx.tmux.listSessions();
11
+ const statuses = new Map();
12
+ const hooks = (agent) => {
13
+ if (!agent)
14
+ return 'none';
15
+ if (!statuses.has(agent))
16
+ statuses.set(agent, hookStatus(agent, ctx.env));
17
+ return statuses.get(agent);
18
+ };
11
19
  const rows = live.map((s) => ({
12
20
  name: s.name,
13
21
  managed: Boolean(s.meta.agent),
@@ -19,12 +27,13 @@ export function list(ctx) {
19
27
  note: s.meta.note ?? '',
20
28
  attachedClients: s.attachedClients,
21
29
  live: true,
30
+ hooks: hooks(s.meta.agent ?? ''),
22
31
  }));
23
32
  const liveNames = new Set(live.map((s) => s.name));
24
33
  for (const s of ctx.store.newest()?.sessions ?? []) {
25
34
  if (liveNames.has(s.name))
26
35
  continue;
27
- rows.push({ ...s, managed: true, state: '', note: '', attachedClients: 0, live: false });
36
+ rows.push({ ...s, managed: true, state: '', note: '', attachedClients: 0, live: false, hooks: hooks(s.agent) });
28
37
  }
29
38
  return rows;
30
39
  }
@@ -115,8 +124,8 @@ export const BELL_NOTE = 'bell';
115
124
  /**
116
125
  * A terminal bell from a managed session (tmux alert-bell). Agents without
117
126
  * Berth hooks get state `waiting`, so every agent can ask for attention; for
118
- * agents whose hooks are installed the hooks are more precise and the bell
119
- * is ignored. Returns whether the state changed.
127
+ * agents whose installed hooks report waiting the hooks are more precise and
128
+ * the bell is ignored. Returns whether the state changed.
120
129
  */
121
130
  export function bellRang(ctx, name, env = process.env) {
122
131
  const live = ctx.tmux.listSessions().find((s) => s.name === name);
@@ -124,7 +133,7 @@ export function bellRang(ctx, name, env = process.env) {
124
133
  if (!agent)
125
134
  return false;
126
135
  const adapter = getAdapter(agent);
127
- if (adapter?.hookTarget && hooksInstalled(agent, env))
136
+ if (adapter?.events.waiting.length && hooksInstalled(agent, env))
128
137
  return false;
129
138
  stamp(ctx, name, { state: 'waiting', note: BELL_NOTE });
130
139
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/registry/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAgBnD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE7D,MAAM,UAAU,IAAI,CAAC,GAAY;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACrC,MAAM,IAAI,GAAiB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACzB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI;QACzB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;QACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;QACvB,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,IAAI,EAAE,IAAI;KACX,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QACnD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,IAAY;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE;QAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,UAAU,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAUD,MAAM,UAAU,MAAM,CAAC,GAAY,EAAE,OAAmB;IACtD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/H,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,KAAK,EAAE,OAAO,CAAC,EAAE;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;KAC9C,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,IAAY;IACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,IAAY,EAAE,KAAa,EAAE,MAAe;IAC9E,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,KAAK,EAAE,OAAO,CAAC,EAAE;QACjB,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;QACzE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;QACtE,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;KAC3D,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,eAAe,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/F,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,IAAY,EAAE,MAA8B;IAC9E,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,gBAAgB,GAAG,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,GAAG,KAAK,QAAQ;YAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,OAAO;YAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAwB,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,+EAA+E;IAC/E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;QAC1F,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,8EAA8E;IAC9E,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;QAAE,eAAe,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,IAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IACpE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAAO,EAAE,UAAU,IAAI,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,GAAY,EAAE,IAAY;IAClD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAChH,CAAC"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/registry/sessions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { claudeConversationByName } from '../agents/claude-name.js';
1
+ import { conversationByName } from '../agents/name-key.js';
2
2
  /** Record every managed live session; returns the snapshot directory. */
3
3
  /** Snapshot, never throwing: for callers whose own work must not fail on it. */
4
4
  export function snapshotQuietly(ctx) {
@@ -18,8 +18,8 @@ export function takeSnapshot(ctx, now = new Date()) {
18
18
  const cwd = s.meta.cwd ?? s.path;
19
19
  let conversation = s.meta.conversation ?? '';
20
20
  // No hook-reported id: fall back to the name key (spec §4.2).
21
- if (!conversation && s.meta.agent === 'claude') {
22
- conversation = claudeConversationByName(cwd, s.name) ?? '';
21
+ if (!conversation) {
22
+ conversation = conversationByName(s.meta.agent, cwd, s.name) ?? '';
23
23
  if (conversation)
24
24
  ctx.tmux.setMeta(s.name, { conversation });
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"take.js","sourceRoot":"","sources":["../../../src/snapshot/take.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,yEAAyE;AACzE,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACzD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,SAAS;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7C,8DAA8D;QAC9D,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/C,YAAY,GAAG,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,YAAY;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAClI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACvD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"take.js","sourceRoot":"","sources":["../../../src/snapshot/take.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,yEAAyE;AACzE,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACzD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,SAAS;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7C,8DAA8D;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,YAAY;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAClI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACvD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@berthdev/berth",
3
- "version": "0.2.1-rc.0",
3
+ "version": "0.2.2",
4
4
  "description": "Keep terminal-based coding agents running in tmux and bring each back, conversation included.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -1 +0,0 @@
1
- export declare function claudeConversationByName(cwd: string, name: string, home?: string): string | undefined;
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-name.js","sourceRoot":"","sources":["../../../src/agents/claude-name.ts"],"names":[],"mappings":"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"}