sessionlog 0.0.3 → 0.0.5

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 (55) hide show
  1. package/README.md +65 -0
  2. package/dist/agent/agents/claude-code.d.ts.map +1 -1
  3. package/dist/agent/agents/claude-code.js +91 -0
  4. package/dist/agent/agents/claude-code.js.map +1 -1
  5. package/dist/cli.js +124 -10
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/enable.d.ts.map +1 -1
  8. package/dist/commands/enable.js +6 -5
  9. package/dist/commands/enable.js.map +1 -1
  10. package/dist/commands/setup-ccweb.d.ts +37 -0
  11. package/dist/commands/setup-ccweb.d.ts.map +1 -0
  12. package/dist/commands/setup-ccweb.js +192 -0
  13. package/dist/commands/setup-ccweb.js.map +1 -0
  14. package/dist/config.d.ts +7 -2
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +24 -9
  17. package/dist/config.js.map +1 -1
  18. package/dist/events/event-log.d.ts +43 -0
  19. package/dist/events/event-log.d.ts.map +1 -0
  20. package/dist/events/event-log.js +91 -0
  21. package/dist/events/event-log.js.map +1 -0
  22. package/dist/hooks/lifecycle.d.ts.map +1 -1
  23. package/dist/hooks/lifecycle.js +163 -1
  24. package/dist/hooks/lifecycle.js.map +1 -1
  25. package/dist/index.d.ts +6 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/store/checkpoint-store.d.ts.map +1 -1
  30. package/dist/store/checkpoint-store.js +5 -0
  31. package/dist/store/checkpoint-store.js.map +1 -1
  32. package/dist/store/session-store.d.ts.map +1 -1
  33. package/dist/store/session-store.js +26 -0
  34. package/dist/store/session-store.js.map +1 -1
  35. package/dist/strategy/content-overlap.d.ts.map +1 -1
  36. package/dist/strategy/content-overlap.js +6 -2
  37. package/dist/strategy/content-overlap.js.map +1 -1
  38. package/dist/strategy/manual-commit.d.ts +7 -0
  39. package/dist/strategy/manual-commit.d.ts.map +1 -1
  40. package/dist/strategy/manual-commit.js +73 -0
  41. package/dist/strategy/manual-commit.js.map +1 -1
  42. package/dist/types.d.ts +96 -1
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +6 -0
  45. package/dist/types.js.map +1 -1
  46. package/dist/utils/paths.d.ts +11 -1
  47. package/dist/utils/paths.d.ts.map +1 -1
  48. package/dist/utils/paths.js +21 -3
  49. package/dist/utils/paths.js.map +1 -1
  50. package/dist/wire-types.d.ts +56 -0
  51. package/dist/wire-types.d.ts.map +1 -0
  52. package/dist/wire-types.js +11 -0
  53. package/dist/wire-types.js.map +1 -0
  54. package/package.json +3 -2
  55. package/templates/setup-env.sh +153 -0
@@ -1 +1 @@
1
- {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Setup ccweb Command
3
+ *
4
+ * Configures a repository for Sessionlog integration with Claude Code Web.
5
+ * Creates .claude/settings.json SessionStart hook and .claude/scripts/setup-env.sh
6
+ * so that sessionlog is automatically installed and enabled on every ccweb session.
7
+ *
8
+ * Inspired by the entire-setup-ccweb pattern:
9
+ * https://github.com/aromarious/entire-setup-ccweb
10
+ */
11
+ export interface SetupCcwebOptions {
12
+ /** Working directory */
13
+ cwd?: string;
14
+ /** Allowed push prefixes (space-separated, overrides template default) */
15
+ pushPrefixes?: string;
16
+ /** Force overwrite existing setup */
17
+ force?: boolean;
18
+ }
19
+ export interface SetupCcwebResult {
20
+ success: boolean;
21
+ settingsCreated: boolean;
22
+ scriptCreated: boolean;
23
+ errors: string[];
24
+ }
25
+ /**
26
+ * Set up a repository for Sessionlog on Claude Code Web.
27
+ *
28
+ * This creates:
29
+ * 1. `.claude/settings.json` — adds a SessionStart hook that runs the setup script
30
+ * 2. `.claude/scripts/setup-env.sh` — installs sessionlog, enables it, configures push access
31
+ *
32
+ * After running this command, commit the `.claude/` directory and push. When the
33
+ * repository is opened in ccweb, sessionlog will be automatically installed and
34
+ * configured on every session start.
35
+ */
36
+ export declare function setupCcweb(options?: SetupCcwebOptions): Promise<SetupCcwebResult>;
37
+ //# sourceMappingURL=setup-ccweb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ccweb.d.ts","sourceRoot":"","sources":["../../src/commands/setup-ccweb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgCD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0C3F"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Setup ccweb Command
3
+ *
4
+ * Configures a repository for Sessionlog integration with Claude Code Web.
5
+ * Creates .claude/settings.json SessionStart hook and .claude/scripts/setup-env.sh
6
+ * so that sessionlog is automatically installed and enabled on every ccweb session.
7
+ *
8
+ * Inspired by the entire-setup-ccweb pattern:
9
+ * https://github.com/aromarious/entire-setup-ccweb
10
+ */
11
+ import * as fs from 'node:fs';
12
+ import * as path from 'node:path';
13
+ import { createRequire } from 'node:module';
14
+ import { isGitRepository, getWorktreeRoot } from '../git-operations.js';
15
+ // ============================================================================
16
+ // Constants
17
+ // ============================================================================
18
+ const CLAUDE_SCRIPTS_DIR = '.claude/scripts';
19
+ const CLAUDE_SETTINGS_FILE = '.claude/settings.json';
20
+ const SETUP_SCRIPT_FILE = '.claude/scripts/setup-env.sh';
21
+ const SETUP_HOOK_COMMAND = 'sh .claude/scripts/setup-env.sh';
22
+ // ============================================================================
23
+ // Implementation
24
+ // ============================================================================
25
+ /**
26
+ * Set up a repository for Sessionlog on Claude Code Web.
27
+ *
28
+ * This creates:
29
+ * 1. `.claude/settings.json` — adds a SessionStart hook that runs the setup script
30
+ * 2. `.claude/scripts/setup-env.sh` — installs sessionlog, enables it, configures push access
31
+ *
32
+ * After running this command, commit the `.claude/` directory and push. When the
33
+ * repository is opened in ccweb, sessionlog will be automatically installed and
34
+ * configured on every session start.
35
+ */
36
+ export async function setupCcweb(options = {}) {
37
+ const cwd = options.cwd ?? process.cwd();
38
+ const errors = [];
39
+ // Validate git repository
40
+ if (!(await isGitRepository(cwd))) {
41
+ return {
42
+ success: false,
43
+ settingsCreated: false,
44
+ scriptCreated: false,
45
+ errors: ['Not a git repository'],
46
+ };
47
+ }
48
+ const root = await getWorktreeRoot(cwd);
49
+ // Create directories
50
+ const scriptsDir = path.join(root, CLAUDE_SCRIPTS_DIR);
51
+ await fs.promises.mkdir(scriptsDir, { recursive: true });
52
+ // Update .claude/settings.json
53
+ let settingsCreated = false;
54
+ try {
55
+ settingsCreated = await updateClaudeSettings(root, options.force);
56
+ }
57
+ catch (e) {
58
+ errors.push(`Failed to update settings: ${e instanceof Error ? e.message : String(e)}`);
59
+ }
60
+ // Create/update setup script
61
+ let scriptCreated = false;
62
+ try {
63
+ scriptCreated = await writeSetupScript(root, options);
64
+ }
65
+ catch (e) {
66
+ errors.push(`Failed to write setup script: ${e instanceof Error ? e.message : String(e)}`);
67
+ }
68
+ return {
69
+ success: errors.length === 0,
70
+ settingsCreated,
71
+ scriptCreated,
72
+ errors,
73
+ };
74
+ }
75
+ // ============================================================================
76
+ // Settings Management
77
+ // ============================================================================
78
+ /**
79
+ * Add the SessionStart hook to .claude/settings.json
80
+ */
81
+ async function updateClaudeSettings(root, force = false) {
82
+ const settingsPath = path.join(root, CLAUDE_SETTINGS_FILE);
83
+ let settings = {};
84
+ // Read existing settings
85
+ try {
86
+ const content = await fs.promises.readFile(settingsPath, 'utf-8');
87
+ settings = JSON.parse(content);
88
+ }
89
+ catch {
90
+ // No existing settings — start fresh
91
+ }
92
+ if (!settings.hooks)
93
+ settings.hooks = {};
94
+ // Check if our hook is already installed
95
+ const sessionStartHooks = settings.hooks.SessionStart ?? [];
96
+ const hasOurHook = sessionStartHooks.some((m) => m.hooks.some((h) => h.command.includes('setup-env.sh')));
97
+ if (hasOurHook && !force) {
98
+ return false; // Already installed
99
+ }
100
+ if (hasOurHook && force) {
101
+ // Remove existing hook for reinstall
102
+ settings.hooks.SessionStart = sessionStartHooks.filter((m) => !m.hooks.some((h) => h.command.includes('setup-env.sh')));
103
+ }
104
+ // Add SessionStart hook
105
+ const matchers = settings.hooks.SessionStart ?? [];
106
+ matchers.push({
107
+ matcher: '',
108
+ hooks: [
109
+ {
110
+ type: 'command',
111
+ command: SETUP_HOOK_COMMAND,
112
+ },
113
+ ],
114
+ });
115
+ settings.hooks.SessionStart = matchers;
116
+ // Add bash permission for the setup script
117
+ if (!settings.permissions)
118
+ settings.permissions = {};
119
+ if (!settings.permissions.allow)
120
+ settings.permissions.allow = [];
121
+ const allowEntry = `Bash(sh .claude/scripts/setup-env.sh)`;
122
+ if (!settings.permissions.allow.includes(allowEntry)) {
123
+ settings.permissions.allow.push(allowEntry);
124
+ }
125
+ // Write settings
126
+ const dir = path.dirname(settingsPath);
127
+ await fs.promises.mkdir(dir, { recursive: true });
128
+ await fs.promises.writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n');
129
+ return true;
130
+ }
131
+ // ============================================================================
132
+ // Setup Script
133
+ // ============================================================================
134
+ /**
135
+ * Write the setup-env.sh script from the bundled template.
136
+ * Preserves user-customized ALLOWED_PUSH_PREFIXES on update.
137
+ */
138
+ async function writeSetupScript(root, options) {
139
+ const scriptPath = path.join(root, SETUP_SCRIPT_FILE);
140
+ // Check if script already exists
141
+ let existingContent = '';
142
+ try {
143
+ existingContent = await fs.promises.readFile(scriptPath, 'utf-8');
144
+ }
145
+ catch {
146
+ // File doesn't exist
147
+ }
148
+ if (existingContent && !options.force) {
149
+ // Preserve existing script unless --force
150
+ return false;
151
+ }
152
+ // Preserve user-customized ALLOWED_PUSH_PREFIXES from existing script
153
+ let pushPrefixes = options.pushPrefixes ?? 'sessionlog/ claude/';
154
+ if (existingContent && !options.pushPrefixes) {
155
+ const match = existingContent.match(/^ALLOWED_PUSH_PREFIXES="([^"]*)"$/m);
156
+ if (match) {
157
+ pushPrefixes = match[1];
158
+ }
159
+ }
160
+ // Load the template
161
+ const template = loadTemplate();
162
+ // Apply push prefixes customization
163
+ const content = template.replace(/^ALLOWED_PUSH_PREFIXES="[^"]*"$/m, `ALLOWED_PUSH_PREFIXES="${pushPrefixes}"`);
164
+ await fs.promises.writeFile(scriptPath, content, { mode: 0o755 });
165
+ return true;
166
+ }
167
+ /**
168
+ * Load the setup-env.sh template.
169
+ * Tries the bundled template first (from package dist), then falls back to
170
+ * the source template for development.
171
+ */
172
+ function loadTemplate() {
173
+ const require = createRequire(import.meta.url);
174
+ // Try relative paths from the compiled output location (dist/commands/)
175
+ const thisDir = path.dirname(new URL(import.meta.url).pathname);
176
+ const candidates = [
177
+ // Installed via npm: template is in templates/ relative to package root
178
+ path.resolve(path.dirname(require.resolve('../../package.json')), 'templates', 'setup-env.sh'),
179
+ // Development: template is in templates/ at repo root (from dist/commands/ or src/commands/)
180
+ path.resolve(thisDir, '..', '..', 'templates', 'setup-env.sh'),
181
+ ];
182
+ for (const candidate of candidates) {
183
+ try {
184
+ return fs.readFileSync(candidate, 'utf-8');
185
+ }
186
+ catch {
187
+ // Try next candidate
188
+ }
189
+ }
190
+ throw new Error('Could not find setup-env.sh template. Ensure the templates/ directory is included in the package.');
191
+ }
192
+ //# sourceMappingURL=setup-ccweb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ccweb.js","sourceRoot":"","sources":["../../src/commands/setup-ccweb.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -5,16 +5,21 @@
5
5
  * and .sessionlog/settings.local.json (local overrides).
6
6
  */
7
7
  import { type SessionlogSettings } from './types.js';
8
+ /**
9
+ * Resolve the sessionlog directory for a given repo root.
10
+ * Priority: SESSIONLOG_PROJECT_DIR env var > .swarm/sessionlog exists > .sessionlog
11
+ */
12
+ export declare function resolveSessionlogDir(root: string): string;
8
13
  /**
9
14
  * Load effective settings (project merged with local overrides)
10
15
  */
11
16
  export declare function loadSettings(cwd?: string): Promise<SessionlogSettings>;
12
17
  /**
13
- * Load project-level settings (.sessionlog/settings.json)
18
+ * Load project-level settings (settings.json inside resolved sessionlog dir)
14
19
  */
15
20
  export declare function loadProjectSettings(cwd?: string): Promise<SessionlogSettings>;
16
21
  /**
17
- * Load local settings (.sessionlog/settings.local.json)
22
+ * Load local settings (settings.local.json inside resolved sessionlog dir)
18
23
  */
19
24
  export declare function loadLocalSettings(cwd?: string): Promise<SessionlogSettings>;
20
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAInF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAIjF;AA4BD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/D;AAWD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD;AAMD;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAInF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAIjF;AA4BD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/D;AAWD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjE"}
package/dist/config.js CHANGED
@@ -6,9 +6,22 @@
6
6
  */
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
- import { DEFAULT_SETTINGS, SESSIONLOG_SETTINGS_FILE, SESSIONLOG_SETTINGS_LOCAL_FILE, SESSIONLOG_DIR, } from './types.js';
9
+ import { DEFAULT_SETTINGS, } from './types.js';
10
10
  import { getWorktreeRoot } from './git-operations.js';
11
11
  import { atomicWriteFile } from './git-operations.js';
12
+ /**
13
+ * Resolve the sessionlog directory for a given repo root.
14
+ * Priority: SESSIONLOG_PROJECT_DIR env var > .swarm/sessionlog exists > .sessionlog
15
+ */
16
+ export function resolveSessionlogDir(root) {
17
+ const envDir = process.env.SESSIONLOG_PROJECT_DIR;
18
+ if (envDir)
19
+ return path.join(root, envDir);
20
+ const swarmDir = path.join(root, '.swarm', 'sessionlog');
21
+ if (fs.existsSync(swarmDir))
22
+ return swarmDir;
23
+ return path.join(root, '.sessionlog');
24
+ }
12
25
  // ============================================================================
13
26
  // Load Settings
14
27
  // ============================================================================
@@ -21,19 +34,19 @@ export async function loadSettings(cwd) {
21
34
  return mergeSettings(project, local);
22
35
  }
23
36
  /**
24
- * Load project-level settings (.sessionlog/settings.json)
37
+ * Load project-level settings (settings.json inside resolved sessionlog dir)
25
38
  */
26
39
  export async function loadProjectSettings(cwd) {
27
40
  const root = cwd ?? (await getWorktreeRoot());
28
- const settingsPath = path.join(root, SESSIONLOG_SETTINGS_FILE);
41
+ const settingsPath = path.join(resolveSessionlogDir(root), 'settings.json');
29
42
  return loadSettingsFile(settingsPath);
30
43
  }
31
44
  /**
32
- * Load local settings (.sessionlog/settings.local.json)
45
+ * Load local settings (settings.local.json inside resolved sessionlog dir)
33
46
  */
34
47
  export async function loadLocalSettings(cwd) {
35
48
  const root = cwd ?? (await getWorktreeRoot());
36
- const settingsPath = path.join(root, SESSIONLOG_SETTINGS_LOCAL_FILE);
49
+ const settingsPath = path.join(resolveSessionlogDir(root), 'settings.local.json');
37
50
  return loadSettingsFile(settingsPath);
38
51
  }
39
52
  function loadSettingsFile(filePath) {
@@ -65,7 +78,8 @@ function mergeSettings(project, local) {
65
78
  */
66
79
  export async function saveProjectSettings(settings, cwd) {
67
80
  const root = cwd ?? (await getWorktreeRoot());
68
- const settingsPath = path.join(root, SESSIONLOG_SETTINGS_FILE);
81
+ const sessionlogDir = resolveSessionlogDir(root);
82
+ const settingsPath = path.join(sessionlogDir, 'settings.json');
69
83
  await ensureSessionlogDir(root);
70
84
  await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
71
85
  }
@@ -74,7 +88,8 @@ export async function saveProjectSettings(settings, cwd) {
74
88
  */
75
89
  export async function saveLocalSettings(settings, cwd) {
76
90
  const root = cwd ?? (await getWorktreeRoot());
77
- const settingsPath = path.join(root, SESSIONLOG_SETTINGS_LOCAL_FILE);
91
+ const sessionlogDir = resolveSessionlogDir(root);
92
+ const settingsPath = path.join(sessionlogDir, 'settings.local.json');
78
93
  await ensureSessionlogDir(root);
79
94
  await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
80
95
  }
@@ -99,7 +114,7 @@ export async function getStrategy(cwd) {
99
114
  // Helpers
100
115
  // ============================================================================
101
116
  async function ensureSessionlogDir(root) {
102
- const dir = path.join(root, SESSIONLOG_DIR);
117
+ const dir = resolveSessionlogDir(root);
103
118
  await fs.promises.mkdir(dir, { recursive: true });
104
119
  }
105
120
  /**
@@ -107,7 +122,7 @@ async function ensureSessionlogDir(root) {
107
122
  */
108
123
  export async function ensureGitignore(cwd) {
109
124
  const root = cwd ?? (await getWorktreeRoot());
110
- const gitignorePath = path.join(root, SESSIONLOG_DIR, '.gitignore');
125
+ const gitignorePath = path.join(resolveSessionlogDir(root), '.gitignore');
111
126
  const content = [
112
127
  '# Sessionlog local files (not committed)',
113
128
  'settings.local.json',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAEL,gBAAgB,EAChB,wBAAwB,EACxB,8BAA8B,EAC9B,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY;IAC7C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAY;IACpD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IAC/D,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAY;IAClD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IACrE,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgC,CAAC;QAChE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA2B,EAAE,KAAyB;IAC3E,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;QACrF,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;QAC1F,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;QAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACpE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACpE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,OAAO,CAAC,oBAAoB;QAChF,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe;KAClE,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAqC,EACrC,GAAY;IAEZ,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IAC/D,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAqC,EACrC,GAAY;IAEZ,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IACrE,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY;IAC1C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAY;IAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG;QACd,0CAA0C;QAC1C,qBAAqB;QACrB,MAAM;QACN,OAAO;QACP,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACxC,iBAAiB;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Event Log
3
+ *
4
+ * Appends checkpoint events to a JSONL file (.sessionlog/events.jsonl)
5
+ * for consumption by external systems (e.g., MAP session sync).
6
+ *
7
+ * Sessionlog runs as standalone git hooks (separate processes), so
8
+ * in-process callbacks don't work across process boundaries. This
9
+ * file-based event log bridges that gap.
10
+ */
11
+ import type { TokenUsage } from '../types.js';
12
+ /** Event written to the JSONL log after a checkpoint is committed. */
13
+ export interface CheckpointEvent {
14
+ type: 'checkpoint_committed';
15
+ timestamp: string;
16
+ checkpointID: string;
17
+ sessionID: string;
18
+ agent: string;
19
+ branch?: string;
20
+ filesTouched: string[];
21
+ checkpointsCount: number;
22
+ tokenUsage?: TokenUsage;
23
+ }
24
+ export interface EventLogOptions {
25
+ /** Keep only the last N events. 0 or undefined means keep all. */
26
+ maxEvents?: number;
27
+ }
28
+ /**
29
+ * Append a checkpoint event to the event log file and optionally prune.
30
+ *
31
+ * @param cwd - Repository root directory
32
+ * @param event - The checkpoint event to record
33
+ * @param opts - Optional retention settings
34
+ */
35
+ export declare function appendCheckpointEvent(cwd: string, event: CheckpointEvent, opts?: EventLogOptions): Promise<void>;
36
+ /**
37
+ * Read all checkpoint events from the event log file.
38
+ *
39
+ * @param cwd - Repository root directory
40
+ * @returns Array of events in chronological order (oldest first)
41
+ */
42
+ export declare function readCheckpointEvents(cwd: string): CheckpointEvent[];
43
+ //# sourceMappingURL=event-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-log.d.ts","sourceRoot":"","sources":["../../src/events/event-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9C,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAqBnE"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Event Log
3
+ *
4
+ * Appends checkpoint events to a JSONL file (.sessionlog/events.jsonl)
5
+ * for consumption by external systems (e.g., MAP session sync).
6
+ *
7
+ * Sessionlog runs as standalone git hooks (separate processes), so
8
+ * in-process callbacks don't work across process boundaries. This
9
+ * file-based event log bridges that gap.
10
+ */
11
+ import * as fs from 'node:fs';
12
+ import * as path from 'node:path';
13
+ import { SESSIONLOG_EVENTS_FILE } from '../types.js';
14
+ import { atomicWriteFile } from '../git-operations.js';
15
+ // ============================================================================
16
+ // Write
17
+ // ============================================================================
18
+ /**
19
+ * Append a checkpoint event to the event log file and optionally prune.
20
+ *
21
+ * @param cwd - Repository root directory
22
+ * @param event - The checkpoint event to record
23
+ * @param opts - Optional retention settings
24
+ */
25
+ export async function appendCheckpointEvent(cwd, event, opts) {
26
+ const filePath = path.join(cwd, SESSIONLOG_EVENTS_FILE);
27
+ const line = JSON.stringify(event) + '\n';
28
+ // Ensure directory exists
29
+ const dir = path.dirname(filePath);
30
+ await fs.promises.mkdir(dir, { recursive: true });
31
+ // Append the new event
32
+ await fs.promises.appendFile(filePath, line, 'utf-8');
33
+ // Prune if maxEvents is configured
34
+ const maxEvents = opts?.maxEvents;
35
+ if (maxEvents && maxEvents > 0) {
36
+ await pruneEventLog(filePath, maxEvents);
37
+ }
38
+ }
39
+ // ============================================================================
40
+ // Read
41
+ // ============================================================================
42
+ /**
43
+ * Read all checkpoint events from the event log file.
44
+ *
45
+ * @param cwd - Repository root directory
46
+ * @returns Array of events in chronological order (oldest first)
47
+ */
48
+ export function readCheckpointEvents(cwd) {
49
+ const filePath = path.join(cwd, SESSIONLOG_EVENTS_FILE);
50
+ let content;
51
+ try {
52
+ content = fs.readFileSync(filePath, 'utf-8');
53
+ }
54
+ catch {
55
+ return [];
56
+ }
57
+ const events = [];
58
+ for (const line of content.split('\n')) {
59
+ const trimmed = line.trim();
60
+ if (!trimmed)
61
+ continue;
62
+ try {
63
+ events.push(JSON.parse(trimmed));
64
+ }
65
+ catch {
66
+ // Skip malformed lines
67
+ }
68
+ }
69
+ return events;
70
+ }
71
+ // ============================================================================
72
+ // Prune
73
+ // ============================================================================
74
+ /**
75
+ * Trim the event log to the last N entries.
76
+ */
77
+ async function pruneEventLog(filePath, maxEvents) {
78
+ let content;
79
+ try {
80
+ content = await fs.promises.readFile(filePath, 'utf-8');
81
+ }
82
+ catch {
83
+ return;
84
+ }
85
+ const lines = content.split('\n').filter((l) => l.trim().length > 0);
86
+ if (lines.length <= maxEvents)
87
+ return;
88
+ const kept = lines.slice(-maxEvents);
89
+ await atomicWriteFile(filePath, kept.join('\n') + '\n');
90
+ }
91
+ //# sourceMappingURL=event-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-log.js","sourceRoot":"","sources":["../../src/events/event-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAwBvD,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,KAAsB,EACtB,IAAsB;IAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAE1C,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,uBAAuB;IACvB,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEtD,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;IAClC,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAExD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,SAAiB;IAC9D,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO;IAEtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQ/C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAuLhF"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAS/C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAgWhF"}