claude-pager 0.1.7 → 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.
- package/README.md +26 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +8 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +70 -0
- package/dist/cli/setup.js.map +1 -1
- package/dist/daemon/handlers.d.ts.map +1 -1
- package/dist/daemon/handlers.js +10 -2
- package/dist/daemon/handlers.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +94 -6
- package/dist/daemon/server.js.map +1 -1
- package/dist/dashboard/ci-provider.d.ts +20 -0
- package/dist/dashboard/ci-provider.d.ts.map +1 -0
- package/dist/dashboard/ci-provider.js +194 -0
- package/dist/dashboard/ci-provider.js.map +1 -0
- package/dist/dashboard/enricher.d.ts +34 -0
- package/dist/dashboard/enricher.d.ts.map +1 -0
- package/dist/dashboard/enricher.js +143 -0
- package/dist/dashboard/enricher.js.map +1 -0
- package/dist/dashboard/git-status.d.ts +7 -0
- package/dist/dashboard/git-status.d.ts.map +1 -0
- package/dist/dashboard/git-status.js +33 -0
- package/dist/dashboard/git-status.js.map +1 -0
- package/dist/dashboard/html.d.ts +2 -0
- package/dist/dashboard/html.d.ts.map +1 -0
- package/dist/dashboard/html.js +878 -0
- package/dist/dashboard/html.js.map +1 -0
- package/dist/dashboard/routes.d.ts +3 -0
- package/dist/dashboard/routes.d.ts.map +1 -0
- package/dist/dashboard/routes.js +14 -0
- package/dist/dashboard/routes.js.map +1 -0
- package/dist/dashboard/transcript.d.ts +10 -0
- package/dist/dashboard/transcript.d.ts.map +1 -0
- package/dist/dashboard/transcript.js +217 -0
- package/dist/dashboard/transcript.js.map +1 -0
- package/dist/sessions/events.d.ts +1 -0
- package/dist/sessions/events.d.ts.map +1 -1
- package/dist/sessions/events.js +13 -0
- package/dist/sessions/events.js.map +1 -1
- package/dist/sessions/tracker.d.ts +1 -0
- package/dist/sessions/tracker.d.ts.map +1 -1
- package/dist/sessions/tracker.js +15 -0
- package/dist/sessions/tracker.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/dashboard/html.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAy2BtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAQlE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerDashboardRoutes = registerDashboardRoutes;
|
|
4
|
+
const enricher_js_1 = require("./enricher.js");
|
|
5
|
+
const html_js_1 = require("./html.js");
|
|
6
|
+
function registerDashboardRoutes(app) {
|
|
7
|
+
app.get('/api/v1/dashboard', async () => {
|
|
8
|
+
return (0, enricher_js_1.getDashboardData)();
|
|
9
|
+
});
|
|
10
|
+
app.get('/dashboard', async (_request, reply) => {
|
|
11
|
+
reply.type('text/html').send(html_js_1.DASHBOARD_HTML);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":";;AAIA,0DAQC;AAXD,+CAAiD;AACjD,uCAA2C;AAE3C,SAAgB,uBAAuB,CAAC,GAAoB;IAC1D,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACtC,OAAO,IAAA,8BAAgB,GAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC9C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,wBAAc,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface TranscriptInfo {
|
|
2
|
+
title: string;
|
|
3
|
+
state: 'working' | 'waiting_input' | 'idle' | 'unknown';
|
|
4
|
+
lastTimestamp: number;
|
|
5
|
+
gitBranch: string;
|
|
6
|
+
recentCommit: boolean;
|
|
7
|
+
recentPush: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function readTranscriptInfo(sessionId: string, cwd: string): TranscriptInfo;
|
|
10
|
+
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/dashboard/transcript.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AA4MD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAoBjF"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readTranscriptInfo = readTranscriptInfo;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const cache = new Map();
|
|
8
|
+
function projectDir(cwd) {
|
|
9
|
+
// ~/.claude/projects/-home-seb-dev-myoffice/
|
|
10
|
+
const encoded = cwd.replace(/\//g, '-');
|
|
11
|
+
return (0, node_path_1.join)((0, node_os_1.homedir)(), '.claude', 'projects', encoded);
|
|
12
|
+
}
|
|
13
|
+
function findTranscriptPath(cwd, sessionId) {
|
|
14
|
+
const dir = projectDir(cwd);
|
|
15
|
+
const file = (0, node_path_1.join)(dir, `${sessionId}.jsonl`);
|
|
16
|
+
return (0, node_fs_1.existsSync)(file) ? file : null;
|
|
17
|
+
}
|
|
18
|
+
function humanizeSlug(slug) {
|
|
19
|
+
return slug
|
|
20
|
+
.replace(/[-_]/g, ' ')
|
|
21
|
+
.replace(/\b\w/g, c => c.toUpperCase());
|
|
22
|
+
}
|
|
23
|
+
function extractTextFromContent(content) {
|
|
24
|
+
if (typeof content === 'string')
|
|
25
|
+
return content;
|
|
26
|
+
if (Array.isArray(content)) {
|
|
27
|
+
return content
|
|
28
|
+
.filter((b) => b.type === 'text' && b.text)
|
|
29
|
+
.map((b) => b.text)
|
|
30
|
+
.join(' ');
|
|
31
|
+
}
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
function extractRecentActivity(lines) {
|
|
35
|
+
// Scan backwards for recent meaningful activity
|
|
36
|
+
const tailLimit = Math.max(0, lines.length - 50);
|
|
37
|
+
for (let i = lines.length - 1; i >= tailLimit; i--) {
|
|
38
|
+
try {
|
|
39
|
+
const entry = JSON.parse(lines[i]);
|
|
40
|
+
// Last custom-title is the best — Claude updates these
|
|
41
|
+
if (entry.type === 'custom-title' && entry.title) {
|
|
42
|
+
return humanizeSlug(entry.title);
|
|
43
|
+
}
|
|
44
|
+
// Last assistant text gives context about current work
|
|
45
|
+
if (entry.type === 'assistant' && Array.isArray(entry.message?.content)) {
|
|
46
|
+
// Check for tool_use — shows what Claude is doing
|
|
47
|
+
for (const block of entry.message.content) {
|
|
48
|
+
if (block.type === 'tool_use' && block.name) {
|
|
49
|
+
const input = block.input;
|
|
50
|
+
if (input?.command) {
|
|
51
|
+
return `${block.name}: ${input.command.slice(0, 60)}`;
|
|
52
|
+
}
|
|
53
|
+
if (input?.file_path) {
|
|
54
|
+
const file = input.file_path.split('/').pop() || input.file_path;
|
|
55
|
+
return `${block.name}: ${file}`;
|
|
56
|
+
}
|
|
57
|
+
return block.name;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Otherwise, first line of assistant text
|
|
61
|
+
const text = extractTextFromContent(entry.message.content);
|
|
62
|
+
if (text.length > 15) {
|
|
63
|
+
// Take first meaningful lines, up to 300 chars
|
|
64
|
+
const lines = text.split('\n').filter((l) => l.trim().length > 0);
|
|
65
|
+
let result = '';
|
|
66
|
+
for (const line of lines) {
|
|
67
|
+
if (result.length + line.length > 300)
|
|
68
|
+
break;
|
|
69
|
+
result += (result ? '\n' : '') + line.trim();
|
|
70
|
+
}
|
|
71
|
+
if (result)
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// skip
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const COMMIT_PATTERNS = /\b(committed|commité|commit\s+(réussi|ok|done|fait|success)|git commit.*\b[0-9a-f]{7}|commited|\bpoussé.*commit|\[\w+\s+[0-9a-f]{7}\])/i;
|
|
83
|
+
const PUSH_PATTERNS = /\b(pushed|poussé|git push.*(done|ok|success|fait)|push.*origin|push.*main|push.*master|→\s*(origin|main|master)|poussé sur)/i;
|
|
84
|
+
const COMMIT_TOOL_PATTERNS = /git\s+(commit|add\s+-A.*&&.*commit)/;
|
|
85
|
+
const PUSH_TOOL_PATTERNS = /git\s+push/;
|
|
86
|
+
function detectCommitPush(lines) {
|
|
87
|
+
let recentCommit = false;
|
|
88
|
+
let recentPush = false;
|
|
89
|
+
const tailLimit = Math.max(0, lines.length - 40);
|
|
90
|
+
for (let i = lines.length - 1; i >= tailLimit; i--) {
|
|
91
|
+
try {
|
|
92
|
+
const entry = JSON.parse(lines[i]);
|
|
93
|
+
if (entry.type === 'assistant' && Array.isArray(entry.message?.content)) {
|
|
94
|
+
for (const block of entry.message.content) {
|
|
95
|
+
// Check tool_use for git commit/push commands
|
|
96
|
+
if (block.type === 'tool_use' && block.input?.command) {
|
|
97
|
+
if (COMMIT_TOOL_PATTERNS.test(block.input.command))
|
|
98
|
+
recentCommit = true;
|
|
99
|
+
if (PUSH_TOOL_PATTERNS.test(block.input.command))
|
|
100
|
+
recentPush = true;
|
|
101
|
+
}
|
|
102
|
+
// Check text for commit/push confirmations
|
|
103
|
+
if (block.type === 'text' && block.text) {
|
|
104
|
+
if (COMMIT_PATTERNS.test(block.text))
|
|
105
|
+
recentCommit = true;
|
|
106
|
+
if (PUSH_PATTERNS.test(block.text))
|
|
107
|
+
recentPush = true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (recentCommit && recentPush)
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// skip
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { recentCommit, recentPush };
|
|
119
|
+
}
|
|
120
|
+
function parseTranscript(filePath) {
|
|
121
|
+
const content = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
|
|
122
|
+
const lines = content.trim().split('\n').filter(Boolean);
|
|
123
|
+
if (lines.length === 0)
|
|
124
|
+
return { title: 'Empty session', state: 'unknown', lastTimestamp: 0, gitBranch: 'unknown', recentCommit: false, recentPush: false };
|
|
125
|
+
let gitBranch = 'unknown';
|
|
126
|
+
let slug = null;
|
|
127
|
+
// Forward scan: find slug and git branch
|
|
128
|
+
const headLimit = Math.min(lines.length, 30);
|
|
129
|
+
for (let i = 0; i < headLimit; i++) {
|
|
130
|
+
try {
|
|
131
|
+
const entry = JSON.parse(lines[i]);
|
|
132
|
+
if (!slug && entry.slug)
|
|
133
|
+
slug = entry.slug;
|
|
134
|
+
if (entry.gitBranch && gitBranch === 'unknown')
|
|
135
|
+
gitBranch = entry.gitBranch;
|
|
136
|
+
if (slug && gitBranch !== 'unknown')
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// skip
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Title: recent activity first, then fallbacks
|
|
144
|
+
let title = extractRecentActivity(lines);
|
|
145
|
+
if (!title && slug) {
|
|
146
|
+
title = humanizeSlug(slug);
|
|
147
|
+
}
|
|
148
|
+
if (!title) {
|
|
149
|
+
title = 'Untitled session';
|
|
150
|
+
}
|
|
151
|
+
// Backward scan: determine state and last timestamp
|
|
152
|
+
let state = 'unknown';
|
|
153
|
+
let lastTimestamp = 0;
|
|
154
|
+
const tailLimit = Math.max(0, lines.length - 30);
|
|
155
|
+
for (let i = lines.length - 1; i >= tailLimit; i--) {
|
|
156
|
+
try {
|
|
157
|
+
const entry = JSON.parse(lines[i]);
|
|
158
|
+
if (entry.timestamp && lastTimestamp === 0) {
|
|
159
|
+
lastTimestamp = new Date(entry.timestamp).getTime() || 0;
|
|
160
|
+
}
|
|
161
|
+
if (entry.gitBranch) {
|
|
162
|
+
gitBranch = entry.gitBranch;
|
|
163
|
+
}
|
|
164
|
+
if (state === 'unknown') {
|
|
165
|
+
// Use the entry's own timestamp for age, not a potentially mismatched lastTimestamp
|
|
166
|
+
const entryTs = entry.timestamp ? new Date(entry.timestamp).getTime() || 0 : 0;
|
|
167
|
+
const age = entryTs > 0 ? Date.now() - entryTs : Date.now() - lastTimestamp;
|
|
168
|
+
if (entry.type === 'assistant') {
|
|
169
|
+
// If last assistant message is text (no tool_use), Claude finished and awaits input
|
|
170
|
+
const content = entry.message?.content;
|
|
171
|
+
const hasToolUse = Array.isArray(content) && content.some((b) => b.type === 'tool_use');
|
|
172
|
+
if (hasToolUse) {
|
|
173
|
+
state = age < 60_000 ? 'working' : 'idle';
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Claude spoke last with text only — waiting for user
|
|
177
|
+
state = age < 60_000 ? 'waiting_input' : 'idle';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else if (entry.type === 'progress') {
|
|
181
|
+
state = age < 60_000 ? 'working' : 'idle';
|
|
182
|
+
}
|
|
183
|
+
else if (entry.type === 'user') {
|
|
184
|
+
state = age < 60_000 ? 'working' : 'idle';
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (lastTimestamp > 0 && state !== 'unknown')
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// skip
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const { recentCommit, recentPush } = detectCommitPush(lines);
|
|
195
|
+
return { title, state, lastTimestamp, gitBranch, recentCommit, recentPush };
|
|
196
|
+
}
|
|
197
|
+
function readTranscriptInfo(sessionId, cwd) {
|
|
198
|
+
const filePath = findTranscriptPath(cwd, sessionId);
|
|
199
|
+
if (!filePath) {
|
|
200
|
+
return { title: 'No transcript', state: 'unknown', lastTimestamp: 0, gitBranch: 'unknown', recentCommit: false, recentPush: false };
|
|
201
|
+
}
|
|
202
|
+
// Check cache
|
|
203
|
+
try {
|
|
204
|
+
const mtime = (0, node_fs_1.statSync)(filePath).mtimeMs;
|
|
205
|
+
const cached = cache.get(sessionId);
|
|
206
|
+
if (cached && cached.mtime === mtime) {
|
|
207
|
+
return cached.info;
|
|
208
|
+
}
|
|
209
|
+
const info = parseTranscript(filePath);
|
|
210
|
+
cache.set(sessionId, { mtime, info });
|
|
211
|
+
return info;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return { title: 'Read error', state: 'unknown', lastTimestamp: 0, gitBranch: 'unknown', recentCommit: false, recentPush: false };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/dashboard/transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { PendingQuestion, RelayEvent } from '../types.js';
|
|
|
2
2
|
export declare function addPending(event: RelayEvent, channelMessageId?: string): string;
|
|
3
3
|
export declare function getPending(eventId: string): PendingQuestion | undefined;
|
|
4
4
|
export declare function removePending(eventId: string): void;
|
|
5
|
+
export declare function isResolved(eventId: string): boolean;
|
|
5
6
|
export declare function listPending(): PendingQuestion[];
|
|
6
7
|
export interface ResolvedResponse {
|
|
7
8
|
question: PendingQuestion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/sessions/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/sessions/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ/D,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAU/E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEvE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD,wBAAgB,WAAW,IAAI,eAAe,EAAE,CAS/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAsCxE"}
|
package/dist/sessions/events.js
CHANGED
|
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.addPending = addPending;
|
|
4
4
|
exports.getPending = getPending;
|
|
5
5
|
exports.removePending = removePending;
|
|
6
|
+
exports.isResolved = isResolved;
|
|
6
7
|
exports.listPending = listPending;
|
|
7
8
|
exports.resolveResponse = resolveResponse;
|
|
8
9
|
const pending = new Map();
|
|
10
|
+
const resolved = new Map(); // eventId → timestamp of resolution
|
|
11
|
+
const RESOLVED_TTL_MS = 5 * 60 * 1000; // keep resolved events for 5 minutes
|
|
9
12
|
let nextShortId = (Date.now() % 10000) + 1;
|
|
10
13
|
let insertionOrder = 0;
|
|
11
14
|
function addPending(event, channelMessageId) {
|
|
@@ -24,6 +27,16 @@ function getPending(eventId) {
|
|
|
24
27
|
}
|
|
25
28
|
function removePending(eventId) {
|
|
26
29
|
pending.delete(eventId);
|
|
30
|
+
resolved.set(eventId, Date.now());
|
|
31
|
+
// Cleanup old resolved entries
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
for (const [id, ts] of resolved) {
|
|
34
|
+
if (now - ts > RESOLVED_TTL_MS)
|
|
35
|
+
resolved.delete(id);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function isResolved(eventId) {
|
|
39
|
+
return resolved.has(eventId);
|
|
27
40
|
}
|
|
28
41
|
const PENDING_TTL_MS = 30 * 60 * 1000; // 30 minutes
|
|
29
42
|
function listPending() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sessions/events.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sessions/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SessionInfo } from '../types.js';
|
|
2
2
|
export declare function registerSession(info: SessionInfo): void;
|
|
3
|
+
export declare function removeSession(sessionId: string): boolean;
|
|
3
4
|
export declare function getSession(sessionId: string): SessionInfo | null;
|
|
4
5
|
export declare function listSessions(): SessionInfo[];
|
|
5
6
|
export declare function isProcessAlive(pid: number): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/sessions/tracker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAQvD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKhE;AAED,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAO5C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAmBD,wBAAgB,iBAAiB,IAAI,MAAM,CAc1C"}
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/sessions/tracker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAQvD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKhE;AAED,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAO5C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAmBD,wBAAgB,iBAAiB,IAAI,MAAM,CAc1C"}
|
package/dist/sessions/tracker.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerSession = registerSession;
|
|
4
|
+
exports.removeSession = removeSession;
|
|
4
5
|
exports.getSession = getSession;
|
|
5
6
|
exports.listSessions = listSessions;
|
|
6
7
|
exports.isProcessAlive = isProcessAlive;
|
|
@@ -23,6 +24,20 @@ function registerSession(info) {
|
|
|
23
24
|
const file = (0, node_path_1.join)(sessionsDir(), `${info.sessionId}.json`);
|
|
24
25
|
(0, node_fs_1.writeFileSync)(file, JSON.stringify(info, null, 2) + '\n');
|
|
25
26
|
}
|
|
27
|
+
function removeSession(sessionId) {
|
|
28
|
+
if (!(0, validation_js_1.isValidSessionId)(sessionId))
|
|
29
|
+
return false;
|
|
30
|
+
const file = (0, node_path_1.join)(sessionsDir(), `${sessionId}.json`);
|
|
31
|
+
if (!(0, node_fs_1.existsSync)(file))
|
|
32
|
+
return false;
|
|
33
|
+
try {
|
|
34
|
+
(0, node_fs_1.unlinkSync)(file);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
26
41
|
function getSession(sessionId) {
|
|
27
42
|
if (!(0, validation_js_1.isValidSessionId)(sessionId))
|
|
28
43
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/sessions/tracker.ts"],"names":[],"mappings":";;AAYA,0CAQC;AAED,gCAKC;AAED,oCAOC;AAED,wCAOC;AAmBD,8CAcC;
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/sessions/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
export interface CIConfig {
|
|
2
|
+
type: 'gitlab' | 'github';
|
|
3
|
+
gitlab?: {
|
|
4
|
+
url: string;
|
|
5
|
+
token: string;
|
|
6
|
+
};
|
|
7
|
+
github?: {
|
|
8
|
+
token: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
1
11
|
export interface RelayConfig {
|
|
2
12
|
port: number;
|
|
3
13
|
channel: ChannelConfig;
|
|
4
14
|
injector: 'auto' | 'tmux' | 'xdotool' | 'applescript';
|
|
5
15
|
dataDir: string;
|
|
16
|
+
ci?: CIConfig;
|
|
6
17
|
}
|
|
7
18
|
export interface ChannelConfig {
|
|
8
19
|
type: 'ntfy' | 'telegram';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAE5D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|