project-logbook 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/answer.d.ts +1 -0
- package/dist/commands/answer.js +41 -0
- package/dist/commands/answer.js.map +1 -0
- package/dist/commands/answers.d.ts +6 -0
- package/dist/commands/answers.js +37 -0
- package/dist/commands/answers.js.map +1 -0
- package/dist/commands/ask.d.ts +1 -0
- package/dist/commands/ask.js +30 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/build.js +18 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/deprecate-qna.d.ts +1 -0
- package/dist/commands/deprecate-qna.js +33 -0
- package/dist/commands/deprecate-qna.js.map +1 -0
- package/dist/commands/status.js +3 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unanswered.d.ts +1 -0
- package/dist/commands/unanswered.js +25 -0
- package/dist/commands/unanswered.js.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +8 -0
- package/dist/lib/config.js +10 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/template-helpers.d.ts +2 -1
- package/dist/lib/template-helpers.js +29 -0
- package/dist/lib/template-helpers.js.map +1 -1
- package/dist/lib/template-types.d.ts +12 -0
- package/dist/lib/templates.js +9 -1
- package/dist/lib/templates.js.map +1 -1
- package/dist/linters/index.js +2 -0
- package/dist/linters/index.js.map +1 -1
- package/dist/linters/qna.d.ts +3 -0
- package/dist/linters/qna.js +120 -0
- package/dist/linters/qna.js.map +1 -0
- package/dist/templates/hub.js +123 -8
- package/dist/templates/qna.md +11 -0
- package/dist/templates/steer.txt +2 -0
- package/dist/templates/styles.css +53 -0
- package/dist/utils/qna.d.ts +46 -0
- package/dist/utils/qna.js +157 -0
- package/dist/utils/qna.js.map +1 -0
- package/dist/watch/__tests__/git-utils.test.d.ts +1 -0
- package/dist/watch/__tests__/git-utils.test.js +17 -0
- package/dist/watch/__tests__/git-utils.test.js.map +1 -0
- package/dist/watch/collectors/acli.js +2 -2
- package/dist/watch/collectors/acli.js.map +1 -1
- package/dist/watch/collectors/entries.js +3 -3
- package/dist/watch/collectors/entries.js.map +1 -1
- package/dist/watch/collectors/glab.js +126 -37
- package/dist/watch/collectors/glab.js.map +1 -1
- package/dist/watch/collectors/jira.js +3 -2
- package/dist/watch/collectors/jira.js.map +1 -1
- package/dist/watch/dashboard-html.js +8 -0
- package/dist/watch/dashboard-html.js.map +1 -1
- package/dist/watch/git-utils.d.ts +10 -4
- package/dist/watch/git-utils.js +22 -6
- package/dist/watch/git-utils.js.map +1 -1
- package/dist/watch/hub-state.d.ts +3 -1
- package/dist/watch/hub-state.js +2 -0
- package/dist/watch/hub-state.js.map +1 -1
- package/dist/watch/hub.js +35 -2
- package/dist/watch/hub.js.map +1 -1
- package/dist/watch/state.d.ts +5 -1
- package/dist/watch/state.js.map +1 -1
- package/dist/watch/types.d.ts +21 -0
- package/dist/watch/types.js.map +1 -1
- package/dist/watch/watcher.js +13 -2
- package/dist/watch/watcher.js.map +1 -1
- package/package.json +7 -2
- package/src/templates/hub.js +123 -8
- package/src/templates/qna.md +11 -0
- package/src/templates/steer.txt +2 -0
- package/src/templates/styles.css +53 -0
|
@@ -19,12 +19,18 @@ export declare function commitsAheadOfRemote(cwd: string): number;
|
|
|
19
19
|
* Count commits on the current branch vs the default branch.
|
|
20
20
|
*/
|
|
21
21
|
export declare function commitsVsDefault(cwd: string, defaultBranch: string): number;
|
|
22
|
-
/**
|
|
23
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Extract a ticket ID from a branch name.
|
|
24
|
+
*
|
|
25
|
+
* Prefers the configured Jira prefix (e.g. "LB-34"), then falls back to a
|
|
26
|
+
* bare numeric GitLab work item segment when a gitlab prefix is configured
|
|
27
|
+
* (e.g. "feat/36-content-api" -> "#36").
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractTicketFromBranch(branch: string | undefined, jiraPrefix: string | undefined, gitlabPrefix?: string): string | undefined;
|
|
24
30
|
/**
|
|
25
31
|
* Resolve the active ticket ID. Checks lockfile first, then falls back to
|
|
26
|
-
* extracting it from the git branch name.
|
|
32
|
+
* extracting it from the git branch name (Jira prefix or GitLab work item).
|
|
27
33
|
*/
|
|
28
|
-
export declare function resolveActiveTicketId(cwd: string, branch: string | undefined, jiraPrefix: string | undefined): string | undefined;
|
|
34
|
+
export declare function resolveActiveTicketId(cwd: string, branch: string | undefined, jiraPrefix: string | undefined, gitlabPrefix?: string): string | undefined;
|
|
29
35
|
/** Read the full active ticket slug from the lockfile (folder name). */
|
|
30
36
|
export declare function readActiveTicketSlug(cwd: string): string | undefined;
|
package/dist/watch/git-utils.js
CHANGED
|
@@ -77,22 +77,38 @@ function ticketIdFromSlug(slug) {
|
|
|
77
77
|
const parts = slug.split('-');
|
|
78
78
|
return parts.length >= 2 ? `${parts[0]}-${parts[1]}` : slug;
|
|
79
79
|
}
|
|
80
|
-
/**
|
|
81
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Extract a ticket ID from a branch name.
|
|
82
|
+
*
|
|
83
|
+
* Prefers the configured Jira prefix (e.g. "LB-34"), then falls back to a
|
|
84
|
+
* bare numeric GitLab work item segment when a gitlab prefix is configured
|
|
85
|
+
* (e.g. "feat/36-content-api" -> "#36").
|
|
86
|
+
*/
|
|
87
|
+
export function extractTicketFromBranch(branch, jiraPrefix, gitlabPrefix) {
|
|
82
88
|
if (!branch)
|
|
83
89
|
return undefined;
|
|
84
90
|
const regex = jiraPrefix ? new RegExp(`\\b${jiraPrefix}-\\d+\\b`, 'i') : /\b[A-Z]+-\d+\b/;
|
|
85
|
-
|
|
91
|
+
const jira = branch.match(regex)?.[0]?.toUpperCase();
|
|
92
|
+
if (jira)
|
|
93
|
+
return jira;
|
|
94
|
+
// GitLab work items appear as a bare numeric branch segment after a slash or
|
|
95
|
+
// dash, e.g. "feat/36-content-api-garbage-endpoints" -> "#36".
|
|
96
|
+
if (gitlabPrefix) {
|
|
97
|
+
const gl = branch.match(/(?:^|[\/\\_#-])(\d+)(?:-|$)/);
|
|
98
|
+
if (gl)
|
|
99
|
+
return `${gitlabPrefix}${gl[1]}`;
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
86
102
|
}
|
|
87
103
|
/**
|
|
88
104
|
* Resolve the active ticket ID. Checks lockfile first, then falls back to
|
|
89
|
-
* extracting it from the git branch name.
|
|
105
|
+
* extracting it from the git branch name (Jira prefix or GitLab work item).
|
|
90
106
|
*/
|
|
91
|
-
export function resolveActiveTicketId(cwd, branch, jiraPrefix) {
|
|
107
|
+
export function resolveActiveTicketId(cwd, branch, jiraPrefix, gitlabPrefix) {
|
|
92
108
|
const slug = readLockfileSlug(cwd);
|
|
93
109
|
if (slug)
|
|
94
110
|
return ticketIdFromSlug(slug);
|
|
95
|
-
return extractTicketFromBranch(branch, jiraPrefix);
|
|
111
|
+
return extractTicketFromBranch(branch, jiraPrefix, gitlabPrefix);
|
|
96
112
|
}
|
|
97
113
|
/** Read the full active ticket slug from the lockfile (folder name). */
|
|
98
114
|
export function readActiveTicketSlug(cwd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/watch/git-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/watch/git-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* MRs, plus HTTP helper functions used by the route handler.
|
|
6
6
|
*/
|
|
7
7
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
8
|
-
import type { ActivityEvent, GitLabMr, JiraIssue, ProjectStatus } from './types.js';
|
|
8
|
+
import type { ActivityEvent, GitLabMr, GitLabWorkItem, JiraIssue, ProjectStatus } from './types.js';
|
|
9
9
|
/** Connected SSE clients. */
|
|
10
10
|
export declare const sseClients: Set<ServerResponse>;
|
|
11
11
|
/** Current state of all registered projects. */
|
|
@@ -16,6 +16,8 @@ export declare const projectEvents: Map<string, ActivityEvent[]>;
|
|
|
16
16
|
export declare const jiraIssues: Map<string, JiraIssue>;
|
|
17
17
|
/** GitLab open MRs, deduplicated by projectUrl+iid. */
|
|
18
18
|
export declare const gitlabMrs: Map<string, GitLabMr>;
|
|
19
|
+
/** GitLab open work items, deduplicated by projectUrl+iid. */
|
|
20
|
+
export declare const gitlabWorkItems: Map<string, GitLabWorkItem>;
|
|
19
21
|
/** Maximum number of events to keep per project. */
|
|
20
22
|
export declare const MAX_EVENTS_PER_PROJECT = 50;
|
|
21
23
|
/**
|
package/dist/watch/hub-state.js
CHANGED
|
@@ -14,6 +14,8 @@ export const projectEvents = new Map();
|
|
|
14
14
|
export const jiraIssues = new Map();
|
|
15
15
|
/** GitLab open MRs, deduplicated by projectUrl+iid. */
|
|
16
16
|
export const gitlabMrs = new Map();
|
|
17
|
+
/** GitLab open work items, deduplicated by projectUrl+iid. */
|
|
18
|
+
export const gitlabWorkItems = new Map();
|
|
17
19
|
/** Maximum number of events to keep per project. */
|
|
18
20
|
export const MAX_EVENTS_PER_PROJECT = 50;
|
|
19
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-state.js","sourceRoot":"","sources":["../../src/watch/hub-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAwB,IAAI,GAAG,EAAE,CAAC;AAEzD,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAA+B,IAAI,GAAG,EAAE,CAAC;AAEnE,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAiC,IAAI,GAAG,EAAE,CAAC;AAErE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAA2B,IAAI,GAAG,EAAE,CAAC;AAE5D,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;AAE1D,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,kBAAkB;QAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"hub-state.js","sourceRoot":"","sources":["../../src/watch/hub-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAwB,IAAI,GAAG,EAAE,CAAC;AAEzD,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAA+B,IAAI,GAAG,EAAE,CAAC;AAEnE,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAiC,IAAI,GAAG,EAAE,CAAC;AAErE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAA2B,IAAI,GAAG,EAAE,CAAC;AAE5D,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;AAE1D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAgC,IAAI,GAAG,EAAE,CAAC;AAEtE,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,kBAAkB;QAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/watch/hub.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
1
2
|
/** Hub server — serves the dashboard UI and bridges watchers ↔ SSE. */
|
|
2
3
|
import { createServer } from 'node:http';
|
|
3
4
|
import { getPackageVersion } from '../lib/package-version.js';
|
|
4
5
|
import { generateDashboardHtml } from './dashboard.js';
|
|
5
6
|
import { getStrategyMetadata } from './strategies/index.js';
|
|
6
|
-
import { broadcast, gitlabMrs, jiraIssues, jsonResponse, MAX_EVENTS_PER_PROJECT, projectEvents, projectStates, readBody, sseClients, } from './hub-state.js';
|
|
7
|
+
import { broadcast, gitlabMrs, gitlabWorkItems, jiraIssues, jsonResponse, MAX_EVENTS_PER_PROJECT, projectEvents, projectStates, readBody, sseClients, } from './hub-state.js';
|
|
8
|
+
import { logTime } from './watcher-http.js';
|
|
7
9
|
async function handleRequest(req, res) {
|
|
8
10
|
const url = req.url ?? '/';
|
|
9
11
|
const method = req.method ?? 'GET';
|
|
@@ -76,6 +78,32 @@ async function handleRequest(req, res) {
|
|
|
76
78
|
}
|
|
77
79
|
return;
|
|
78
80
|
}
|
|
81
|
+
if (url === '/_logbook/gitlab-work-items' && method === 'GET') {
|
|
82
|
+
jsonResponse(res, 200, [...gitlabWorkItems.values()]);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (url === '/_logbook/gitlab-work-items' && method === 'POST') {
|
|
86
|
+
const body = await readBody(req);
|
|
87
|
+
try {
|
|
88
|
+
const payload = JSON.parse(body);
|
|
89
|
+
if (Array.isArray(payload.workItems)) {
|
|
90
|
+
const projUrl = payload.workItems[0]?.projectUrl;
|
|
91
|
+
if (projUrl) {
|
|
92
|
+
for (const [key] of gitlabWorkItems) {
|
|
93
|
+
if (key.startsWith(`${projUrl}::`))
|
|
94
|
+
gitlabWorkItems.delete(key);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (const wi of payload.workItems)
|
|
98
|
+
gitlabWorkItems.set(`${wi.projectUrl}::${wi.iid}`, wi);
|
|
99
|
+
}
|
|
100
|
+
jsonResponse(res, 200, { ok: true });
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
jsonResponse(res, 400, { error: 'Invalid JSON' });
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
79
107
|
if (url === '/_logbook/events' && method === 'GET') {
|
|
80
108
|
res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', Connection: 'keep-alive' });
|
|
81
109
|
res.write('\n');
|
|
@@ -95,7 +123,10 @@ async function handleRequest(req, res) {
|
|
|
95
123
|
jsonResponse(res, 400, { error: 'projectPath and projectName required' });
|
|
96
124
|
return;
|
|
97
125
|
}
|
|
98
|
-
if (
|
|
126
|
+
if (projectStates.has(payload.projectPath)) {
|
|
127
|
+
console.log(`[${logTime()}] WARNING: another watcher already registered for ${payload.projectPath} — its status updates will overwrite this one. Kill stale 'logbook watch' processes.`);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
99
130
|
projectStates.set(payload.projectPath, {
|
|
100
131
|
projectPath: payload.projectPath,
|
|
101
132
|
projectName: payload.projectName,
|
|
@@ -109,8 +140,10 @@ async function handleRequest(req, res) {
|
|
|
109
140
|
renderedLog: undefined,
|
|
110
141
|
renderedTicket: undefined,
|
|
111
142
|
mrUrl: undefined,
|
|
143
|
+
mrStatus: undefined,
|
|
112
144
|
jiraStatus: undefined,
|
|
113
145
|
jiraBaseUrl: undefined,
|
|
146
|
+
gitlabBaseUrl: undefined,
|
|
114
147
|
repositoryUrl: undefined,
|
|
115
148
|
primaryColor: undefined,
|
|
116
149
|
agentName: undefined,
|
package/dist/watch/hub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/watch/hub.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/watch/hub.ts"],"names":[],"mappings":"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"}
|
package/dist/watch/state.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* After any collector runs, strategies are re-evaluated against the current
|
|
10
10
|
* snapshot.
|
|
11
11
|
*/
|
|
12
|
-
import type { GitLabMr, JiraIssue, WatcherMetrics } from './types.js';
|
|
12
|
+
import type { GitLabMr, GitLabWorkItem, JiraIssue, WatcherMetrics } from './types.js';
|
|
13
13
|
/**
|
|
14
14
|
* The mutable watcher state. Extends WatcherMetrics with fields for future
|
|
15
15
|
* collectors (glab, acli, etc.).
|
|
@@ -19,12 +19,16 @@ export interface WatcherState extends WatcherMetrics {
|
|
|
19
19
|
mrTitle?: string;
|
|
20
20
|
/** All open MRs for the project (for GitLab tab). */
|
|
21
21
|
glabOpenMrs?: GitLabMr[];
|
|
22
|
+
/** All open work items for the project (for GitLab Work Items tab). */
|
|
23
|
+
glabWorkItems?: GitLabWorkItem[];
|
|
22
24
|
/** Jira ticket assignee. */
|
|
23
25
|
jiraAssignee?: string;
|
|
24
26
|
/** All Jira issues assigned to the current user (for Jira tab). */
|
|
25
27
|
jiraAssignedIssues?: JiraIssue[];
|
|
26
28
|
/** ISO timestamp of last successful GitLab collector run. */
|
|
27
29
|
glabLastUpdated?: string;
|
|
30
|
+
/** ISO timestamp of last successful GitLab work items run. */
|
|
31
|
+
glabWorkItemsLastUpdated?: string;
|
|
28
32
|
/** ISO timestamp of last successful Jira collector run. */
|
|
29
33
|
jiraLastUpdated?: string;
|
|
30
34
|
}
|
package/dist/watch/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/watch/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/watch/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgCH;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,MAAM;QACrB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,SAAS;QAC3B,SAAS,EAAE,SAAS;QACpB,kBAAkB,EAAE,SAAS;QAC7B,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,KAAK;QACtB,wBAAwB,EAAE,KAAK;QAC/B,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,CAAC;QACvB,qBAAqB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAChD,CAAC;AACJ,CAAC"}
|
package/dist/watch/types.d.ts
CHANGED
|
@@ -92,10 +92,14 @@ export interface ProjectStatus {
|
|
|
92
92
|
renderedTicket: string | undefined;
|
|
93
93
|
/** MR web URL for linking in the dashboard. */
|
|
94
94
|
mrUrl: string | undefined;
|
|
95
|
+
/** MR status for the current branch (e.g., "approval-optional", "none"). */
|
|
96
|
+
mrStatus: string | undefined;
|
|
95
97
|
/** Jira ticket status (e.g., "In Progress", "Done"). */
|
|
96
98
|
jiraStatus: string | undefined;
|
|
97
99
|
/** Jira base URL for constructing ticket links. */
|
|
98
100
|
jiraBaseUrl: string | undefined;
|
|
101
|
+
/** GitLab base URL for constructing work item links. */
|
|
102
|
+
gitlabBaseUrl: string | undefined;
|
|
99
103
|
/** Repository web URL for constructing branch links. */
|
|
100
104
|
repositoryUrl: string | undefined;
|
|
101
105
|
/** Primary accent color from the project's .project-logbook config. */
|
|
@@ -169,6 +173,23 @@ export interface JiraIssue {
|
|
|
169
173
|
/** ISO timestamp of the last update in Jira. */
|
|
170
174
|
updated: string;
|
|
171
175
|
}
|
|
176
|
+
/** A GitLab work item (issue) for the GitLab Work Items tab. */
|
|
177
|
+
export interface GitLabWorkItem {
|
|
178
|
+
/** Work item IID (project-scoped). */
|
|
179
|
+
iid: number;
|
|
180
|
+
/** Work item title. */
|
|
181
|
+
title: string;
|
|
182
|
+
/** Current state (e.g. "opened"). */
|
|
183
|
+
status: string;
|
|
184
|
+
/** Web URL to open the work item. */
|
|
185
|
+
url: string;
|
|
186
|
+
/** Project web URL (for grouping/dedup). */
|
|
187
|
+
projectUrl: string;
|
|
188
|
+
/** Project name (human-readable). */
|
|
189
|
+
projectName: string;
|
|
190
|
+
/** ISO timestamp of the last update. */
|
|
191
|
+
updated: string;
|
|
192
|
+
}
|
|
172
193
|
/** A GitLab merge request for the GitLab tab. */
|
|
173
194
|
export interface GitLabMr {
|
|
174
195
|
/** MR IID (project-scoped). */
|
package/dist/watch/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/watch/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/watch/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8JH,kDAAkD;AAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC/C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK;YAAE,OAAO,MAAM,CAAC;IACpE,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
|
package/dist/watch/watcher.js
CHANGED
|
@@ -17,7 +17,7 @@ const LOCKFILE_NAME = '.logbook-active';
|
|
|
17
17
|
/**
|
|
18
18
|
* Build and push a full status snapshot to the hub.
|
|
19
19
|
*/
|
|
20
|
-
async function pushStatus(cwd, port, projectName, state, reason, jiraBaseUrl, repositoryUrl, primaryColor, agentName) {
|
|
20
|
+
async function pushStatus(cwd, port, projectName, state, reason, jiraBaseUrl, gitlabBaseUrl, repositoryUrl, primaryColor, agentName) {
|
|
21
21
|
const statuses = evaluateStatuses(state);
|
|
22
22
|
const details = await collectDetails(cwd);
|
|
23
23
|
// Render previews: read entry files, strip frontmatter, render to HTML.
|
|
@@ -63,14 +63,18 @@ async function pushStatus(cwd, port, projectName, state, reason, jiraBaseUrl, re
|
|
|
63
63
|
renderedLog,
|
|
64
64
|
renderedTicket,
|
|
65
65
|
mrUrl: state.mrUrl,
|
|
66
|
+
mrStatus: state.mrStatus ?? undefined,
|
|
66
67
|
jiraStatus: state.jiraStatus,
|
|
67
68
|
jiraBaseUrl,
|
|
69
|
+
gitlabBaseUrl,
|
|
68
70
|
repositoryUrl,
|
|
69
71
|
primaryColor,
|
|
70
72
|
agentName,
|
|
71
73
|
glabLastUpdated: state.glabLastUpdated,
|
|
72
74
|
jiraLastUpdated: state.jiraLastUpdated,
|
|
73
75
|
};
|
|
76
|
+
// Debug: correlate what the watcher actually pushes for the MR badge.
|
|
77
|
+
console.log(`[${logTime()}] ${reason}: PUSH branch='${state.branch}' mrStatus='${state.mrStatus ?? 'none'}' mrUrl=${state.mrUrl ?? '(none)'} statuses=[${statuses.map((s) => s.id).join(',')}]`);
|
|
74
78
|
await postToHub(port, '/_logbook/status', status);
|
|
75
79
|
if (state.jiraAssignedIssues) {
|
|
76
80
|
await postToHub(port, '/_logbook/jira-issues', {
|
|
@@ -84,6 +88,12 @@ async function pushStatus(cwd, port, projectName, state, reason, jiraBaseUrl, re
|
|
|
84
88
|
mrs: state.glabOpenMrs,
|
|
85
89
|
});
|
|
86
90
|
}
|
|
91
|
+
if (state.glabWorkItems) {
|
|
92
|
+
await postToHub(port, '/_logbook/gitlab-work-items', {
|
|
93
|
+
projectPath: cwd,
|
|
94
|
+
workItems: state.glabWorkItems,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
87
97
|
console.log(info(`[${logTime()}] ${reason}`));
|
|
88
98
|
}
|
|
89
99
|
/**
|
|
@@ -116,11 +126,12 @@ export async function startWatcher(cwd, port) {
|
|
|
116
126
|
const agentName = undefined;
|
|
117
127
|
const pushCfg = {
|
|
118
128
|
jiraBaseUrl: config.jiraBaseUrl ?? '',
|
|
129
|
+
gitlabBaseUrl: config.gitlabBaseUrl ?? '',
|
|
119
130
|
repositoryUrl: config.repositoryUrl,
|
|
120
131
|
primaryColor: config.primaryColor,
|
|
121
132
|
agentName,
|
|
122
133
|
};
|
|
123
|
-
const ps = (reason) => pushStatus(cwd, port, projectName, state, reason, pushCfg.jiraBaseUrl, pushCfg.repositoryUrl, pushCfg.primaryColor, pushCfg.agentName);
|
|
134
|
+
const ps = (reason) => pushStatus(cwd, port, projectName, state, reason, pushCfg.jiraBaseUrl, pushCfg.gitlabBaseUrl, pushCfg.repositoryUrl, pushCfg.primaryColor, pushCfg.agentName);
|
|
124
135
|
await ps('Initial status collected');
|
|
125
136
|
const runAndPush = async (collector, reason) => {
|
|
126
137
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/watch/watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/watch/watcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "project-logbook",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "A command-line tool for project logbooks.",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
"demo-app"
|
|
@@ -31,7 +31,12 @@
|
|
|
31
31
|
"pre": "npm run format && npm run lint && npm run test && npm run build && npm run knip && npm run madge && npm run jscpd && npm run dev build && npm run dev lint && npm audit --audit-level=high",
|
|
32
32
|
"next": "node scripts/create-ticket-from-backlog.js",
|
|
33
33
|
"link": "npm run build && npm link",
|
|
34
|
-
"open": "npm run dev build && node scripts/open-and-view-dist.js"
|
|
34
|
+
"open": "npm run dev build && node scripts/open-and-view-dist.js",
|
|
35
|
+
"agent": "node scripts/pi/run.js",
|
|
36
|
+
"agent:build": "docker compose build agent",
|
|
37
|
+
"agent:shell": "node scripts/pi/run.js shell",
|
|
38
|
+
"watch": "node scripts/watch.js",
|
|
39
|
+
"watch:terminal": "node scripts/watch.js --terminal"
|
|
35
40
|
},
|
|
36
41
|
"keywords": [
|
|
37
42
|
"logbook",
|
package/src/templates/hub.js
CHANGED
|
@@ -176,8 +176,12 @@
|
|
|
176
176
|
|
|
177
177
|
function renderTicketMeta(p) {
|
|
178
178
|
var ticket = p.activeTicket || 'none';
|
|
179
|
-
var
|
|
180
|
-
|
|
179
|
+
var isGl = ticket.charAt(0) === '#' && p.gitlabBaseUrl;
|
|
180
|
+
var ticketUrl = isGl
|
|
181
|
+
? p.gitlabBaseUrl.replace(/\/+$/, '') +
|
|
182
|
+
'/' +
|
|
183
|
+
encodeURIComponent(ticket.replace(/^#/, '').match(/^\d+/)?.[0] || ticket)
|
|
184
|
+
: p.jiraBaseUrl && p.activeTicket
|
|
181
185
|
? p.jiraBaseUrl.replace(/\/+$/, '') + '/browse/' + encodeURIComponent(p.activeTicket)
|
|
182
186
|
: null;
|
|
183
187
|
var value = ticketUrl
|
|
@@ -187,7 +191,7 @@
|
|
|
187
191
|
escapeHtml(ticket) +
|
|
188
192
|
'<span class="link-icon">\u00A0↗</span></a>'
|
|
189
193
|
: escapeHtml(ticket);
|
|
190
|
-
var jiraLabel = p.jiraStatus ? ' <span class="jira-status">' + escapeHtml(p.jiraStatus) + '</span>' : '';
|
|
194
|
+
var jiraLabel = !isGl && p.jiraStatus ? ' <span class="jira-status">' + escapeHtml(p.jiraStatus) + '</span>' : '';
|
|
191
195
|
return (
|
|
192
196
|
'<div class="meta-item"><span class="meta-label">ticket:</span> <span class="meta-value">' +
|
|
193
197
|
value +
|
|
@@ -506,10 +510,16 @@
|
|
|
506
510
|
html +=
|
|
507
511
|
'<table class="help-table"><thead><tr><th>Title</th><th>Status</th><th>Comments</th><th>Branch</th></tr></thead><tbody>';
|
|
508
512
|
items.forEach(function (m) {
|
|
509
|
-
var statusBadge
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
+
var statusBadge;
|
|
514
|
+
if (m.status === 'draft') {
|
|
515
|
+
statusBadge = '<span class="badge badge-info">Draft</span>';
|
|
516
|
+
} else if (m.status === 'merged') {
|
|
517
|
+
statusBadge = '<span class="badge badge-success">Merged</span>';
|
|
518
|
+
} else if (m.status === 'closed') {
|
|
519
|
+
statusBadge = '<span class="badge badge-warning">Closed</span>';
|
|
520
|
+
} else {
|
|
521
|
+
statusBadge = '<span class="badge badge-info">Open</span>';
|
|
522
|
+
}
|
|
513
523
|
var branchUrl = projUrl ? projUrl.replace(/\/$/, '') + '/-/tree/' + encodeURIComponent(m.sourceBranch) : '';
|
|
514
524
|
var branchCell = branchUrl
|
|
515
525
|
? '<a class="meta-link" href="' +
|
|
@@ -553,6 +563,87 @@
|
|
|
553
563
|
loadGitLabMrs();
|
|
554
564
|
setInterval(loadGitLabMrs, 5 * 60 * 1000);
|
|
555
565
|
|
|
566
|
+
// --- GitLab Work Items tab ---
|
|
567
|
+
function loadWorkItems() {
|
|
568
|
+
fetch('/_logbook/gitlab-work-items')
|
|
569
|
+
.then(function (r) {
|
|
570
|
+
return r.json();
|
|
571
|
+
})
|
|
572
|
+
.then(function (items) {
|
|
573
|
+
var container = document.getElementById('workitems-content');
|
|
574
|
+
var countEl4 = document.getElementById('workitems-count');
|
|
575
|
+
var count = items ? items.length : 0;
|
|
576
|
+
countEl4.textContent = count;
|
|
577
|
+
countEl4.style.display = count > 0 ? '' : 'none';
|
|
578
|
+
if (!items || items.length === 0) {
|
|
579
|
+
container.innerHTML =
|
|
580
|
+
'<div class="placeholder-msg">No open work items found.<br>Install the <code>glab</code> CLI and run <code>glab auth login</code> to connect.</div>';
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
var grouped = {};
|
|
584
|
+
items.forEach(function (w) {
|
|
585
|
+
if (!grouped[w.projectUrl]) grouped[w.projectUrl] = [];
|
|
586
|
+
grouped[w.projectUrl].push(w);
|
|
587
|
+
});
|
|
588
|
+
var html = '';
|
|
589
|
+
for (var projUrl in grouped) {
|
|
590
|
+
if (!grouped.hasOwnProperty(projUrl)) continue;
|
|
591
|
+
var wis = grouped[projUrl];
|
|
592
|
+
var fullName = wis[0].projectName || projUrl;
|
|
593
|
+
var projName = fullName.includes(' / ') ? fullName.split(' / ').pop() : fullName;
|
|
594
|
+
html +=
|
|
595
|
+
'<h3 class="group-heading">' +
|
|
596
|
+
'<a href="' +
|
|
597
|
+
escapeHtml(projUrl) +
|
|
598
|
+
'" target="_blank" rel="noopener">' +
|
|
599
|
+
escapeHtml(projName) +
|
|
600
|
+
'<span class="group-link-icon"> ↗</span></a></h3>';
|
|
601
|
+
html +=
|
|
602
|
+
'<table class="help-table"><thead><tr><th>#</th><th>Summary</th><th>State</th><th>Last Update</th></tr></thead><tbody>';
|
|
603
|
+
wis.forEach(function (w) {
|
|
604
|
+
var titleCell = w.url
|
|
605
|
+
? '<a class="meta-link" href="' +
|
|
606
|
+
escapeHtml(w.url) +
|
|
607
|
+
'" target="_blank" rel="noopener">' +
|
|
608
|
+
escapeHtml(w.title) +
|
|
609
|
+
'<span class="link-icon">\u00A0↗</span></a>'
|
|
610
|
+
: escapeHtml(w.title);
|
|
611
|
+
var stateBadge =
|
|
612
|
+
w.status === 'opened'
|
|
613
|
+
? '<span class="badge badge-info">Open</span>'
|
|
614
|
+
: '<span class="badge badge-' +
|
|
615
|
+
(w.status === 'closed' ? 'success' : 'warning') +
|
|
616
|
+
'">' +
|
|
617
|
+
escapeHtml(w.status) +
|
|
618
|
+
'</span>';
|
|
619
|
+
html +=
|
|
620
|
+
'<tr>' +
|
|
621
|
+
'<td class="cell-mono">#' +
|
|
622
|
+
w.iid +
|
|
623
|
+
'</td>' +
|
|
624
|
+
'<td>' +
|
|
625
|
+
titleCell +
|
|
626
|
+
'</td>' +
|
|
627
|
+
'<td>' +
|
|
628
|
+
stateBadge +
|
|
629
|
+
'</td>' +
|
|
630
|
+
'<td class="cell-time">' +
|
|
631
|
+
relativeTime(w.updated) +
|
|
632
|
+
'</td>' +
|
|
633
|
+
'</tr>';
|
|
634
|
+
});
|
|
635
|
+
html += '</tbody></table>';
|
|
636
|
+
}
|
|
637
|
+
container.innerHTML = html;
|
|
638
|
+
})
|
|
639
|
+
.catch(function () {
|
|
640
|
+
document.getElementById('workitems-content').innerHTML =
|
|
641
|
+
'<div class="placeholder-msg">Failed to load work items.</div>';
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
loadWorkItems();
|
|
645
|
+
setInterval(loadWorkItems, 5 * 60 * 1000);
|
|
646
|
+
|
|
556
647
|
// --- SSE connection ---
|
|
557
648
|
function connect() {
|
|
558
649
|
var es = new EventSource('/_logbook/events');
|
|
@@ -565,6 +656,20 @@
|
|
|
565
656
|
var data = JSON.parse(e.data);
|
|
566
657
|
if (data.type === 'status-update') {
|
|
567
658
|
projects[data.project.projectPath] = data.project;
|
|
659
|
+
console.log(
|
|
660
|
+
'[logbook-debug] status-update',
|
|
661
|
+
data.project.projectPath,
|
|
662
|
+
'mrStatus=',
|
|
663
|
+
data.project.mrStatus,
|
|
664
|
+
'mrUrl=',
|
|
665
|
+
data.project.mrUrl,
|
|
666
|
+
'statuses=',
|
|
667
|
+
(data.project.statuses || [])
|
|
668
|
+
.map(function (s) {
|
|
669
|
+
return s.id;
|
|
670
|
+
})
|
|
671
|
+
.join(','),
|
|
672
|
+
);
|
|
568
673
|
renderProjects();
|
|
569
674
|
updateTabFooters();
|
|
570
675
|
} else if (data.type === 'project-removed') {
|
|
@@ -572,7 +677,17 @@
|
|
|
572
677
|
delete projectEvents[data.projectPath];
|
|
573
678
|
renderProjects();
|
|
574
679
|
} else if (data.type === 'full-state') {
|
|
575
|
-
for (var i = 0; i < data.projects.length; i++)
|
|
680
|
+
for (var i = 0; i < data.projects.length; i++) {
|
|
681
|
+
projects[data.projects[i].projectPath] = data.projects[i];
|
|
682
|
+
console.log(
|
|
683
|
+
'[logbook-debug] full-state',
|
|
684
|
+
data.projects[i].projectPath,
|
|
685
|
+
'mrStatus=',
|
|
686
|
+
data.projects[i].mrStatus,
|
|
687
|
+
'mrUrl=',
|
|
688
|
+
data.projects[i].mrUrl,
|
|
689
|
+
);
|
|
690
|
+
}
|
|
576
691
|
if (data.events)
|
|
577
692
|
for (var path in data.events) {
|
|
578
693
|
if (data.events.hasOwnProperty(path)) projectEvents[path] = data.events[path];
|
package/src/templates/steer.txt
CHANGED
|
@@ -6,6 +6,7 @@ Do NOT run `logbook new` or `logbook release` — these are prompter responsibil
|
|
|
6
6
|
Phase 1: Understand
|
|
7
7
|
1. Read `ticket.md` in the active entry. This is your source of truth for requirements.
|
|
8
8
|
2. Review `AGENTS.md` and `CONTRIBUTING.md` if you need architectural or workflow context.
|
|
9
|
+
3. Check existing QnAs with `logbook answers` or check open questions with `logbook unanswered`.
|
|
9
10
|
|
|
10
11
|
Phase 2: Execute & Trace
|
|
11
12
|
|
|
@@ -29,6 +30,7 @@ You MUST log your work continuously using `logbook log "<message>"`. This is not
|
|
|
29
30
|
3. **One message per command call.** For multiple entries, call the command multiple times.
|
|
30
31
|
4. Do NOT reconstruct the log at the end. If the log is empty when you finish, you did it wrong.
|
|
31
32
|
5. Stick to the active entry; never modify past entries in the logbook folder.
|
|
33
|
+
6. For short technical questions and findings, record them via `logbook ask "<question>"` and resolve them with `logbook answer <id> "<answer>"`.
|
|
32
34
|
|
|
33
35
|
Phase 3: Synthesize
|
|
34
36
|
1. When implementation is finished, write the narrative in `index.md`.
|