@jonit-dev/night-watch-cli 1.7.17 → 1.7.19
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/bin/night-watch.mjs +1 -1
- package/dist/src/cli.js +13 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +12 -1
- package/dist/src/server/index.js.map +1 -1
- package/package.json +1 -1
- package/web/dist/assets/index-DOzZY27d.js +473 -0
- package/web/dist/assets/index-w6Q6gxCS.css +1 -0
- package/web/dist/index.html +2 -2
- package/dist/board/factory.d.ts +0 -3
- package/dist/board/factory.d.ts.map +0 -1
- package/dist/board/factory.js +0 -10
- package/dist/board/factory.js.map +0 -1
- package/dist/board/providers/github-graphql.d.ts +0 -16
- package/dist/board/providers/github-graphql.d.ts.map +0 -1
- package/dist/board/providers/github-graphql.js +0 -43
- package/dist/board/providers/github-graphql.js.map +0 -1
- package/dist/board/providers/github-projects.d.ts +0 -51
- package/dist/board/providers/github-projects.d.ts.map +0 -1
- package/dist/board/providers/github-projects.js +0 -672
- package/dist/board/providers/github-projects.js.map +0 -1
- package/dist/board/types.d.ts +0 -60
- package/dist/board/types.d.ts.map +0 -1
- package/dist/board/types.js +0 -4
- package/dist/board/types.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -80
- package/dist/cli.js.map +0 -1
- package/dist/commands/board.d.ts +0 -9
- package/dist/commands/board.d.ts.map +0 -1
- package/dist/commands/board.js +0 -294
- package/dist/commands/board.js.map +0 -1
- package/dist/commands/cancel.d.ts +0 -46
- package/dist/commands/cancel.d.ts.map +0 -1
- package/dist/commands/cancel.js +0 -241
- package/dist/commands/cancel.js.map +0 -1
- package/dist/commands/dashboard/tab-actions.d.ts +0 -10
- package/dist/commands/dashboard/tab-actions.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-actions.js +0 -245
- package/dist/commands/dashboard/tab-actions.js.map +0 -1
- package/dist/commands/dashboard/tab-config.d.ts +0 -21
- package/dist/commands/dashboard/tab-config.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-config.js +0 -829
- package/dist/commands/dashboard/tab-config.js.map +0 -1
- package/dist/commands/dashboard/tab-logs.d.ts +0 -10
- package/dist/commands/dashboard/tab-logs.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-logs.js +0 -178
- package/dist/commands/dashboard/tab-logs.js.map +0 -1
- package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
- package/dist/commands/dashboard/tab-schedules.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-schedules.js +0 -304
- package/dist/commands/dashboard/tab-schedules.js.map +0 -1
- package/dist/commands/dashboard/tab-status.d.ts +0 -32
- package/dist/commands/dashboard/tab-status.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-status.js +0 -421
- package/dist/commands/dashboard/tab-status.js.map +0 -1
- package/dist/commands/dashboard/types.d.ts +0 -43
- package/dist/commands/dashboard/types.d.ts.map +0 -1
- package/dist/commands/dashboard/types.js +0 -5
- package/dist/commands/dashboard/types.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -11
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -239
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -16
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -202
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/history.d.ts +0 -7
- package/dist/commands/history.d.ts.map +0 -1
- package/dist/commands/history.js +0 -56
- package/dist/commands/history.js.map +0 -1
- package/dist/commands/init.d.ts +0 -25
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -534
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/install.d.ts +0 -48
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -303
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -15
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -104
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/prd-state.d.ts +0 -12
- package/dist/commands/prd-state.d.ts.map +0 -1
- package/dist/commands/prd-state.js +0 -47
- package/dist/commands/prd-state.js.map +0 -1
- package/dist/commands/prd.d.ts +0 -24
- package/dist/commands/prd.d.ts.map +0 -1
- package/dist/commands/prd.js +0 -283
- package/dist/commands/prd.js.map +0 -1
- package/dist/commands/prds.d.ts +0 -13
- package/dist/commands/prds.d.ts.map +0 -1
- package/dist/commands/prds.js +0 -196
- package/dist/commands/prds.js.map +0 -1
- package/dist/commands/prs.d.ts +0 -14
- package/dist/commands/prs.d.ts.map +0 -1
- package/dist/commands/prs.js +0 -106
- package/dist/commands/prs.js.map +0 -1
- package/dist/commands/qa.d.ts +0 -30
- package/dist/commands/qa.d.ts.map +0 -1
- package/dist/commands/qa.js +0 -159
- package/dist/commands/qa.js.map +0 -1
- package/dist/commands/retry.d.ts +0 -9
- package/dist/commands/retry.d.ts.map +0 -1
- package/dist/commands/retry.js +0 -72
- package/dist/commands/retry.js.map +0 -1
- package/dist/commands/review.d.ts +0 -35
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -252
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/run.d.ts +0 -61
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -364
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -7
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -27
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/slice.d.ts +0 -26
- package/dist/commands/slice.d.ts.map +0 -1
- package/dist/commands/slice.js +0 -175
- package/dist/commands/slice.js.map +0 -1
- package/dist/commands/state.d.ts +0 -8
- package/dist/commands/state.d.ts.map +0 -1
- package/dist/commands/state.js +0 -56
- package/dist/commands/state.js.map +0 -1
- package/dist/commands/status.d.ts +0 -14
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -147
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -25
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -141
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -21
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -87
- package/dist/commands/update.js.map +0 -1
- package/dist/config.d.ts +0 -23
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -601
- package/dist/config.js.map +0 -1
- package/dist/constants.d.ts +0 -59
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -110
- package/dist/constants.js.map +0 -1
- package/dist/server/index.d.ts +0 -23
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -1074
- package/dist/server/index.js.map +0 -1
- package/dist/storage/json-state-migrator.d.ts +0 -24
- package/dist/storage/json-state-migrator.d.ts.map +0 -1
- package/dist/storage/json-state-migrator.js +0 -197
- package/dist/storage/json-state-migrator.js.map +0 -1
- package/dist/storage/repositories/index.d.ts +0 -23
- package/dist/storage/repositories/index.d.ts.map +0 -1
- package/dist/storage/repositories/index.js +0 -37
- package/dist/storage/repositories/index.js.map +0 -1
- package/dist/storage/repositories/interfaces.d.ts +0 -37
- package/dist/storage/repositories/interfaces.d.ts.map +0 -1
- package/dist/storage/repositories/interfaces.js +0 -6
- package/dist/storage/repositories/interfaces.js.map +0 -1
- package/dist/storage/repositories/sqlite/execution-history-repository.d.ts +0 -21
- package/dist/storage/repositories/sqlite/execution-history-repository.d.ts.map +0 -1
- package/dist/storage/repositories/sqlite/execution-history-repository.js +0 -94
- package/dist/storage/repositories/sqlite/execution-history-repository.js.map +0 -1
- package/dist/storage/repositories/sqlite/prd-state-repository.d.ts +0 -17
- package/dist/storage/repositories/sqlite/prd-state-repository.d.ts.map +0 -1
- package/dist/storage/repositories/sqlite/prd-state-repository.js +0 -74
- package/dist/storage/repositories/sqlite/prd-state-repository.js.map +0 -1
- package/dist/storage/repositories/sqlite/project-registry-repository.d.ts +0 -16
- package/dist/storage/repositories/sqlite/project-registry-repository.d.ts.map +0 -1
- package/dist/storage/repositories/sqlite/project-registry-repository.js +0 -34
- package/dist/storage/repositories/sqlite/project-registry-repository.js.map +0 -1
- package/dist/storage/repositories/sqlite/roadmap-state-repository.d.ts +0 -14
- package/dist/storage/repositories/sqlite/roadmap-state-repository.d.ts.map +0 -1
- package/dist/storage/repositories/sqlite/roadmap-state-repository.js +0 -47
- package/dist/storage/repositories/sqlite/roadmap-state-repository.js.map +0 -1
- package/dist/storage/sqlite/client.d.ts +0 -23
- package/dist/storage/sqlite/client.d.ts.map +0 -1
- package/dist/storage/sqlite/client.js +0 -47
- package/dist/storage/sqlite/client.js.map +0 -1
- package/dist/storage/sqlite/migrations.d.ts +0 -11
- package/dist/storage/sqlite/migrations.d.ts.map +0 -1
- package/dist/storage/sqlite/migrations.js +0 -57
- package/dist/storage/sqlite/migrations.js.map +0 -1
- package/dist/templates/prd-template.d.ts +0 -11
- package/dist/templates/prd-template.d.ts.map +0 -1
- package/dist/templates/prd-template.js +0 -166
- package/dist/templates/prd-template.js.map +0 -1
- package/dist/templates/slicer-prompt.d.ts +0 -54
- package/dist/templates/slicer-prompt.d.ts.map +0 -1
- package/dist/templates/slicer-prompt.js +0 -163
- package/dist/templates/slicer-prompt.js.map +0 -1
- package/dist/types.d.ts +0 -123
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/utils/checks.d.ts +0 -55
- package/dist/utils/checks.d.ts.map +0 -1
- package/dist/utils/checks.js +0 -246
- package/dist/utils/checks.js.map +0 -1
- package/dist/utils/config-writer.d.ts +0 -16
- package/dist/utils/config-writer.d.ts.map +0 -1
- package/dist/utils/config-writer.js +0 -45
- package/dist/utils/config-writer.js.map +0 -1
- package/dist/utils/crontab.d.ts +0 -62
- package/dist/utils/crontab.d.ts.map +0 -1
- package/dist/utils/crontab.js +0 -168
- package/dist/utils/crontab.js.map +0 -1
- package/dist/utils/execution-history.d.ts +0 -54
- package/dist/utils/execution-history.d.ts.map +0 -1
- package/dist/utils/execution-history.js +0 -80
- package/dist/utils/execution-history.js.map +0 -1
- package/dist/utils/github.d.ts +0 -40
- package/dist/utils/github.d.ts.map +0 -1
- package/dist/utils/github.js +0 -126
- package/dist/utils/github.js.map +0 -1
- package/dist/utils/notify.d.ts +0 -63
- package/dist/utils/notify.d.ts.map +0 -1
- package/dist/utils/notify.js +0 -264
- package/dist/utils/notify.js.map +0 -1
- package/dist/utils/prd-states.d.ts +0 -16
- package/dist/utils/prd-states.d.ts.map +0 -1
- package/dist/utils/prd-states.js +0 -28
- package/dist/utils/prd-states.js.map +0 -1
- package/dist/utils/registry.d.ts +0 -44
- package/dist/utils/registry.d.ts.map +0 -1
- package/dist/utils/registry.js +0 -86
- package/dist/utils/registry.js.map +0 -1
- package/dist/utils/roadmap-parser.d.ts +0 -45
- package/dist/utils/roadmap-parser.d.ts.map +0 -1
- package/dist/utils/roadmap-parser.js +0 -136
- package/dist/utils/roadmap-parser.js.map +0 -1
- package/dist/utils/roadmap-scanner.d.ts +0 -92
- package/dist/utils/roadmap-scanner.d.ts.map +0 -1
- package/dist/utils/roadmap-scanner.js +0 -349
- package/dist/utils/roadmap-scanner.js.map +0 -1
- package/dist/utils/roadmap-state.d.ts +0 -90
- package/dist/utils/roadmap-state.d.ts.map +0 -1
- package/dist/utils/roadmap-state.js +0 -154
- package/dist/utils/roadmap-state.js.map +0 -1
- package/dist/utils/script-result.d.ts +0 -12
- package/dist/utils/script-result.d.ts.map +0 -1
- package/dist/utils/script-result.js +0 -46
- package/dist/utils/script-result.js.map +0 -1
- package/dist/utils/shell.d.ts +0 -27
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/shell.js +0 -64
- package/dist/utils/shell.js.map +0 -1
- package/dist/utils/status-data.d.ts +0 -148
- package/dist/utils/status-data.d.ts.map +0 -1
- package/dist/utils/status-data.js +0 -593
- package/dist/utils/status-data.js.map +0 -1
- package/dist/utils/ui.d.ts +0 -55
- package/dist/utils/ui.d.ts.map +0 -1
- package/dist/utils/ui.js +0 -121
- package/dist/utils/ui.js.map +0 -1
- package/web/dist/assets/index-BtxQU4oX.css +0 -1
- package/web/dist/assets/index-CzAWcldp.js +0 -473
package/dist/utils/notify.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Notification utilities for Night Watch CLI
|
|
3
|
-
* Sends webhook notifications to Slack, Discord, and Telegram
|
|
4
|
-
*/
|
|
5
|
-
import { INightWatchConfig, IWebhookConfig, NotificationEvent } from "../types.js";
|
|
6
|
-
export interface INotificationContext {
|
|
7
|
-
event: NotificationEvent;
|
|
8
|
-
projectName: string;
|
|
9
|
-
prdName?: string;
|
|
10
|
-
branchName?: string;
|
|
11
|
-
prNumber?: number;
|
|
12
|
-
exitCode: number;
|
|
13
|
-
duration?: number;
|
|
14
|
-
provider: string;
|
|
15
|
-
prUrl?: string;
|
|
16
|
-
prTitle?: string;
|
|
17
|
-
prBody?: string;
|
|
18
|
-
filesChanged?: number;
|
|
19
|
-
additions?: number;
|
|
20
|
-
deletions?: number;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Get the emoji for a notification event
|
|
24
|
-
*/
|
|
25
|
-
export declare function getEventEmoji(event: NotificationEvent): string;
|
|
26
|
-
/**
|
|
27
|
-
* Get a human-readable title for a notification event
|
|
28
|
-
*/
|
|
29
|
-
export declare function getEventTitle(event: NotificationEvent): string;
|
|
30
|
-
/**
|
|
31
|
-
* Get the Discord embed color for a notification event
|
|
32
|
-
*/
|
|
33
|
-
export declare function getEventColor(event: NotificationEvent): number;
|
|
34
|
-
/**
|
|
35
|
-
* Build a description string from notification context
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildDescription(ctx: INotificationContext): string;
|
|
38
|
-
/**
|
|
39
|
-
* Format a notification payload for Slack incoming webhooks
|
|
40
|
-
*/
|
|
41
|
-
export declare function formatSlackPayload(ctx: INotificationContext): object;
|
|
42
|
-
/**
|
|
43
|
-
* Format a notification payload for Discord webhooks
|
|
44
|
-
*/
|
|
45
|
-
export declare function formatDiscordPayload(ctx: INotificationContext): object;
|
|
46
|
-
/**
|
|
47
|
-
* Build a structured Telegram message when PR details are available.
|
|
48
|
-
* Falls back to the basic format when they are not.
|
|
49
|
-
*/
|
|
50
|
-
export declare function formatTelegramPayload(ctx: INotificationContext): {
|
|
51
|
-
text: string;
|
|
52
|
-
parse_mode: string;
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Send a notification to a single webhook endpoint
|
|
56
|
-
* Silently catches errors — never throws
|
|
57
|
-
*/
|
|
58
|
-
export declare function sendWebhook(webhook: IWebhookConfig, ctx: INotificationContext): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* Send notifications to all configured webhooks
|
|
61
|
-
*/
|
|
62
|
-
export declare function sendNotifications(config: INightWatchConfig, ctx: INotificationContext): Promise<void>;
|
|
63
|
-
//# sourceMappingURL=notify.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/utils/notify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAInF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAmB9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAmB9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAmB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAkBlE;AASD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgCpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAetE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,oBAAoB,GAAG;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAqDA;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCnG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
package/dist/utils/notify.js
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Notification utilities for Night Watch CLI
|
|
3
|
-
* Sends webhook notifications to Slack, Discord, and Telegram
|
|
4
|
-
*/
|
|
5
|
-
import { info, warn } from "./ui.js";
|
|
6
|
-
import { extractSummary } from "./github.js";
|
|
7
|
-
/**
|
|
8
|
-
* Get the emoji for a notification event
|
|
9
|
-
*/
|
|
10
|
-
export function getEventEmoji(event) {
|
|
11
|
-
switch (event) {
|
|
12
|
-
case "run_started":
|
|
13
|
-
return "\uD83D\uDE80";
|
|
14
|
-
case "run_succeeded":
|
|
15
|
-
return "\u2705";
|
|
16
|
-
case "run_failed":
|
|
17
|
-
return "\u274C";
|
|
18
|
-
case "run_timeout":
|
|
19
|
-
return "\u23F0";
|
|
20
|
-
case "review_completed":
|
|
21
|
-
return "\uD83D\uDD0D";
|
|
22
|
-
case "rate_limit_fallback":
|
|
23
|
-
return "\u26A0\uFE0F";
|
|
24
|
-
case "pr_auto_merged":
|
|
25
|
-
return "\uD83D\uDD00";
|
|
26
|
-
case "qa_completed":
|
|
27
|
-
return "\uD83E\uDDEA";
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get a human-readable title for a notification event
|
|
32
|
-
*/
|
|
33
|
-
export function getEventTitle(event) {
|
|
34
|
-
switch (event) {
|
|
35
|
-
case "run_started":
|
|
36
|
-
return "PRD Execution Started";
|
|
37
|
-
case "run_succeeded":
|
|
38
|
-
return "PRD Execution Succeeded";
|
|
39
|
-
case "run_failed":
|
|
40
|
-
return "PRD Execution Failed";
|
|
41
|
-
case "run_timeout":
|
|
42
|
-
return "PRD Execution Timed Out";
|
|
43
|
-
case "review_completed":
|
|
44
|
-
return "PR Review Completed";
|
|
45
|
-
case "rate_limit_fallback":
|
|
46
|
-
return "Rate Limit Fallback";
|
|
47
|
-
case "pr_auto_merged":
|
|
48
|
-
return "PR Auto-Merged";
|
|
49
|
-
case "qa_completed":
|
|
50
|
-
return "QA Completed";
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get the Discord embed color for a notification event
|
|
55
|
-
*/
|
|
56
|
-
export function getEventColor(event) {
|
|
57
|
-
switch (event) {
|
|
58
|
-
case "run_started":
|
|
59
|
-
return 0x3498db;
|
|
60
|
-
case "run_succeeded":
|
|
61
|
-
return 0x00ff00;
|
|
62
|
-
case "run_failed":
|
|
63
|
-
return 0xff0000;
|
|
64
|
-
case "run_timeout":
|
|
65
|
-
return 0xff0000;
|
|
66
|
-
case "review_completed":
|
|
67
|
-
return 0x0099ff;
|
|
68
|
-
case "rate_limit_fallback":
|
|
69
|
-
return 0xffa500;
|
|
70
|
-
case "pr_auto_merged":
|
|
71
|
-
return 0x9b59b6;
|
|
72
|
-
case "qa_completed":
|
|
73
|
-
return 0x2ecc71;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Build a description string from notification context
|
|
78
|
-
*/
|
|
79
|
-
export function buildDescription(ctx) {
|
|
80
|
-
const lines = [];
|
|
81
|
-
lines.push(`Project: ${ctx.projectName}`);
|
|
82
|
-
lines.push(`Provider: ${ctx.provider}`);
|
|
83
|
-
lines.push(`Exit code: ${ctx.exitCode}`);
|
|
84
|
-
if (ctx.prdName) {
|
|
85
|
-
lines.push(`PRD: ${ctx.prdName}`);
|
|
86
|
-
}
|
|
87
|
-
if (ctx.branchName) {
|
|
88
|
-
lines.push(`Branch: ${ctx.branchName}`);
|
|
89
|
-
}
|
|
90
|
-
if (ctx.prNumber !== undefined) {
|
|
91
|
-
lines.push(`PR: #${ctx.prNumber}`);
|
|
92
|
-
}
|
|
93
|
-
if (ctx.duration !== undefined) {
|
|
94
|
-
lines.push(`Duration: ${ctx.duration}s`);
|
|
95
|
-
}
|
|
96
|
-
return lines.join("\n");
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Escape special characters for Telegram MarkdownV2 format
|
|
100
|
-
*/
|
|
101
|
-
function escapeMarkdownV2(text) {
|
|
102
|
-
return text.replace(/[_*[\]()~`>#+=|{}.!-]/g, "\\$&");
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Format a notification payload for Slack incoming webhooks
|
|
106
|
-
*/
|
|
107
|
-
export function formatSlackPayload(ctx) {
|
|
108
|
-
const emoji = getEventEmoji(ctx.event);
|
|
109
|
-
const title = getEventTitle(ctx.event);
|
|
110
|
-
const description = buildDescription(ctx);
|
|
111
|
-
let color;
|
|
112
|
-
if (ctx.event === "run_succeeded") {
|
|
113
|
-
color = "#00ff00";
|
|
114
|
-
}
|
|
115
|
-
else if (ctx.event === "run_started") {
|
|
116
|
-
color = "#3498db";
|
|
117
|
-
}
|
|
118
|
-
else if (ctx.event === "review_completed") {
|
|
119
|
-
color = "#0099ff";
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
color = "#ff0000";
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
attachments: [
|
|
126
|
-
{
|
|
127
|
-
color,
|
|
128
|
-
blocks: [
|
|
129
|
-
{
|
|
130
|
-
type: "section",
|
|
131
|
-
text: {
|
|
132
|
-
type: "mrkdwn",
|
|
133
|
-
text: `*${emoji} ${title}*\n${description}`,
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
],
|
|
137
|
-
},
|
|
138
|
-
],
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Format a notification payload for Discord webhooks
|
|
143
|
-
*/
|
|
144
|
-
export function formatDiscordPayload(ctx) {
|
|
145
|
-
const emoji = getEventEmoji(ctx.event);
|
|
146
|
-
const title = getEventTitle(ctx.event);
|
|
147
|
-
const description = buildDescription(ctx);
|
|
148
|
-
return {
|
|
149
|
-
embeds: [
|
|
150
|
-
{
|
|
151
|
-
title: `${emoji} ${title}`,
|
|
152
|
-
description,
|
|
153
|
-
color: getEventColor(ctx.event),
|
|
154
|
-
timestamp: new Date().toISOString(),
|
|
155
|
-
},
|
|
156
|
-
],
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Build a structured Telegram message when PR details are available.
|
|
161
|
-
* Falls back to the basic format when they are not.
|
|
162
|
-
*/
|
|
163
|
-
export function formatTelegramPayload(ctx) {
|
|
164
|
-
const emoji = getEventEmoji(ctx.event);
|
|
165
|
-
const title = getEventTitle(ctx.event);
|
|
166
|
-
// If PR details are present, use the rich structured template
|
|
167
|
-
if (ctx.prUrl && ctx.prTitle) {
|
|
168
|
-
const lines = [];
|
|
169
|
-
lines.push(`*${escapeMarkdownV2(emoji + " " + title)}*`);
|
|
170
|
-
lines.push("");
|
|
171
|
-
lines.push(`${escapeMarkdownV2("📋")} *${escapeMarkdownV2("PR #" + (ctx.prNumber ?? "") + ": " + ctx.prTitle)}*`);
|
|
172
|
-
lines.push(`${escapeMarkdownV2("🔗")} ${escapeMarkdownV2(ctx.prUrl)}`);
|
|
173
|
-
// Summary from PR body
|
|
174
|
-
if (ctx.prBody && ctx.prBody.trim().length > 0) {
|
|
175
|
-
const summary = extractSummary(ctx.prBody);
|
|
176
|
-
if (summary) {
|
|
177
|
-
lines.push("");
|
|
178
|
-
lines.push(`${escapeMarkdownV2("📝 Summary")}`);
|
|
179
|
-
lines.push(escapeMarkdownV2(summary));
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// Stats
|
|
183
|
-
if (ctx.filesChanged !== undefined || ctx.additions !== undefined) {
|
|
184
|
-
lines.push("");
|
|
185
|
-
lines.push(`${escapeMarkdownV2("📊 Stats")}`);
|
|
186
|
-
const stats = [];
|
|
187
|
-
if (ctx.filesChanged !== undefined) {
|
|
188
|
-
stats.push(`Files changed: ${ctx.filesChanged}`);
|
|
189
|
-
}
|
|
190
|
-
if (ctx.additions !== undefined && ctx.deletions !== undefined) {
|
|
191
|
-
stats.push(`+${ctx.additions} / -${ctx.deletions}`);
|
|
192
|
-
}
|
|
193
|
-
lines.push(escapeMarkdownV2(stats.join(" | ")));
|
|
194
|
-
}
|
|
195
|
-
// Footer
|
|
196
|
-
lines.push("");
|
|
197
|
-
lines.push(escapeMarkdownV2(`⚙️ Project: ${ctx.projectName} | Provider: ${ctx.provider}`));
|
|
198
|
-
return {
|
|
199
|
-
text: lines.join("\n"),
|
|
200
|
-
parse_mode: "MarkdownV2",
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
// Fallback: basic format (no PR details)
|
|
204
|
-
const description = buildDescription(ctx);
|
|
205
|
-
return {
|
|
206
|
-
text: `*${escapeMarkdownV2(emoji + " " + title)}*\n\n${escapeMarkdownV2(description)}`,
|
|
207
|
-
parse_mode: "MarkdownV2",
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Send a notification to a single webhook endpoint
|
|
212
|
-
* Silently catches errors — never throws
|
|
213
|
-
*/
|
|
214
|
-
export async function sendWebhook(webhook, ctx) {
|
|
215
|
-
// Skip if this event is not in the webhook's configured events
|
|
216
|
-
if (!webhook.events.includes(ctx.event)) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
try {
|
|
220
|
-
let url;
|
|
221
|
-
let body;
|
|
222
|
-
switch (webhook.type) {
|
|
223
|
-
case "slack": {
|
|
224
|
-
url = webhook.url;
|
|
225
|
-
body = JSON.stringify(formatSlackPayload(ctx));
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
case "discord": {
|
|
229
|
-
url = webhook.url;
|
|
230
|
-
body = JSON.stringify(formatDiscordPayload(ctx));
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
case "telegram": {
|
|
234
|
-
url = `https://api.telegram.org/bot${webhook.botToken}/sendMessage`;
|
|
235
|
-
const telegramPayload = formatTelegramPayload(ctx);
|
|
236
|
-
body = JSON.stringify({ chat_id: webhook.chatId, ...telegramPayload });
|
|
237
|
-
break;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
await fetch(url, {
|
|
241
|
-
method: "POST",
|
|
242
|
-
headers: { "Content-Type": "application/json" },
|
|
243
|
-
body,
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
catch (err) {
|
|
247
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
248
|
-
warn(`Notification failed (${webhook.type}): ${message}`);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Send notifications to all configured webhooks
|
|
253
|
-
*/
|
|
254
|
-
export async function sendNotifications(config, ctx) {
|
|
255
|
-
if (!config.notifications || config.notifications.webhooks.length === 0) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
const webhooks = config.notifications.webhooks;
|
|
259
|
-
const results = await Promise.allSettled(webhooks.map((wh) => sendWebhook(wh, ctx)));
|
|
260
|
-
const sent = results.filter((r) => r.status === "fulfilled").length;
|
|
261
|
-
const total = webhooks.length;
|
|
262
|
-
info(`Sent ${sent}/${total} notifications`);
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=notify.js.map
|
package/dist/utils/notify.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/utils/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PRD state persistence for Night Watch CLI
|
|
3
|
-
* Tracks pending-review (and future) PRD states via the SQLite repository layer.
|
|
4
|
-
*/
|
|
5
|
-
export interface IPrdStateEntry {
|
|
6
|
-
status: "pending-review";
|
|
7
|
-
branch: string;
|
|
8
|
-
timestamp: number;
|
|
9
|
-
}
|
|
10
|
-
export type IPrdStates = Record<string, Record<string, IPrdStateEntry>>;
|
|
11
|
-
export declare function readPrdStates(): IPrdStates;
|
|
12
|
-
export declare function getPrdStatesForProject(projectDir: string): Record<string, IPrdStateEntry>;
|
|
13
|
-
export declare function writePrdState(projectDir: string, prdName: string, entry: IPrdStateEntry): void;
|
|
14
|
-
export declare function clearPrdState(projectDir: string, prdName: string): void;
|
|
15
|
-
export declare function listPrdStatesByStatus(projectDir: string, status: "pending-review"): string[];
|
|
16
|
-
//# sourceMappingURL=prd-states.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prd-states.d.ts","sourceRoot":"","sources":["../../src/utils/prd-states.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAExE,wBAAgB,aAAa,IAAI,UAAU,CAG1C;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAGzF;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,GACpB,IAAI,CAGN;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvE;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,GACvB,MAAM,EAAE,CAKV"}
|
package/dist/utils/prd-states.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PRD state persistence for Night Watch CLI
|
|
3
|
-
* Tracks pending-review (and future) PRD states via the SQLite repository layer.
|
|
4
|
-
*/
|
|
5
|
-
import { getRepositories } from "../storage/repositories/index.js";
|
|
6
|
-
export function readPrdStates() {
|
|
7
|
-
const { prdState } = getRepositories();
|
|
8
|
-
return prdState.readAll();
|
|
9
|
-
}
|
|
10
|
-
export function getPrdStatesForProject(projectDir) {
|
|
11
|
-
const { prdState } = getRepositories();
|
|
12
|
-
return prdState.getAll(projectDir);
|
|
13
|
-
}
|
|
14
|
-
export function writePrdState(projectDir, prdName, entry) {
|
|
15
|
-
const { prdState } = getRepositories();
|
|
16
|
-
prdState.set(projectDir, prdName, entry);
|
|
17
|
-
}
|
|
18
|
-
export function clearPrdState(projectDir, prdName) {
|
|
19
|
-
const { prdState } = getRepositories();
|
|
20
|
-
prdState.delete(projectDir, prdName);
|
|
21
|
-
}
|
|
22
|
-
export function listPrdStatesByStatus(projectDir, status) {
|
|
23
|
-
const states = getPrdStatesForProject(projectDir);
|
|
24
|
-
return Object.entries(states)
|
|
25
|
-
.filter(([, entry]) => entry.status === status)
|
|
26
|
-
.map(([prdName]) => prdName);
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=prd-states.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prd-states.js","sourceRoot":"","sources":["../../src/utils/prd-states.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAUnE,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,OAAe,EACf,KAAqB;IAErB,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAe;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,MAAwB;IAExB,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/utils/registry.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global project registry for Night Watch CLI
|
|
3
|
-
* Manages project entries via the SQLite repository layer.
|
|
4
|
-
*/
|
|
5
|
-
import { resetRepositories } from "../storage/repositories/index.js";
|
|
6
|
-
import { closeDb } from "../storage/sqlite/client.js";
|
|
7
|
-
export interface IRegistryEntry {
|
|
8
|
-
name: string;
|
|
9
|
-
path: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Get the path to the global registry file.
|
|
13
|
-
* Kept for backward compatibility.
|
|
14
|
-
*/
|
|
15
|
-
export declare function getRegistryPath(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Load all registry entries from the SQLite repository.
|
|
18
|
-
*/
|
|
19
|
-
export declare function loadRegistry(): IRegistryEntry[];
|
|
20
|
-
/**
|
|
21
|
-
* Save a full set of registry entries (full replace).
|
|
22
|
-
* Deletes all existing entries then upserts each provided entry in a transaction.
|
|
23
|
-
*/
|
|
24
|
-
export declare function saveRegistry(entries: IRegistryEntry[]): void;
|
|
25
|
-
/**
|
|
26
|
-
* Register a project in the global registry.
|
|
27
|
-
* No-op if already registered by path. Returns the entry.
|
|
28
|
-
*/
|
|
29
|
-
export declare function registerProject(projectDir: string): IRegistryEntry;
|
|
30
|
-
/**
|
|
31
|
-
* Remove a project from the registry by path.
|
|
32
|
-
* Returns true if it was found and removed.
|
|
33
|
-
*/
|
|
34
|
-
export declare function unregisterProject(projectDir: string): boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Validate all registry entries.
|
|
37
|
-
* Returns entries split into valid (path + config exist) and invalid.
|
|
38
|
-
*/
|
|
39
|
-
export declare function validateRegistry(): {
|
|
40
|
-
valid: IRegistryEntry[];
|
|
41
|
-
invalid: IRegistryEntry[];
|
|
42
|
-
};
|
|
43
|
-
export { closeDb, resetRepositories };
|
|
44
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAmB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,cAAc,EAAE,CAG/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAM5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAmBlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAczF;AAED,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/utils/registry.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global project registry for Night Watch CLI
|
|
3
|
-
* Manages project entries via the SQLite repository layer.
|
|
4
|
-
*/
|
|
5
|
-
import * as fs from "fs";
|
|
6
|
-
import * as os from "os";
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
import { CONFIG_FILE_NAME, GLOBAL_CONFIG_DIR, REGISTRY_FILE_NAME } from "../constants.js";
|
|
9
|
-
import { getRepositories, resetRepositories } from "../storage/repositories/index.js";
|
|
10
|
-
import { closeDb } from "../storage/sqlite/client.js";
|
|
11
|
-
import { getProjectName } from "./status-data.js";
|
|
12
|
-
/**
|
|
13
|
-
* Get the path to the global registry file.
|
|
14
|
-
* Kept for backward compatibility.
|
|
15
|
-
*/
|
|
16
|
-
export function getRegistryPath() {
|
|
17
|
-
const base = process.env.NIGHT_WATCH_HOME || path.join(os.homedir(), GLOBAL_CONFIG_DIR);
|
|
18
|
-
return path.join(base, REGISTRY_FILE_NAME);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Load all registry entries from the SQLite repository.
|
|
22
|
-
*/
|
|
23
|
-
export function loadRegistry() {
|
|
24
|
-
const { projectRegistry } = getRepositories();
|
|
25
|
-
return projectRegistry.getAll();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Save a full set of registry entries (full replace).
|
|
29
|
-
* Deletes all existing entries then upserts each provided entry in a transaction.
|
|
30
|
-
*/
|
|
31
|
-
export function saveRegistry(entries) {
|
|
32
|
-
const { projectRegistry } = getRepositories();
|
|
33
|
-
projectRegistry.clear();
|
|
34
|
-
for (const entry of entries) {
|
|
35
|
-
projectRegistry.upsert(entry);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Register a project in the global registry.
|
|
40
|
-
* No-op if already registered by path. Returns the entry.
|
|
41
|
-
*/
|
|
42
|
-
export function registerProject(projectDir) {
|
|
43
|
-
const resolvedPath = path.resolve(projectDir);
|
|
44
|
-
const { projectRegistry } = getRepositories();
|
|
45
|
-
const entries = projectRegistry.getAll();
|
|
46
|
-
const existing = entries.find((e) => e.path === resolvedPath);
|
|
47
|
-
if (existing) {
|
|
48
|
-
return existing;
|
|
49
|
-
}
|
|
50
|
-
const name = getProjectName(resolvedPath);
|
|
51
|
-
// Handle name collisions by appending directory basename
|
|
52
|
-
const nameExists = entries.some((e) => e.name === name);
|
|
53
|
-
const finalName = nameExists ? `${name}-${path.basename(resolvedPath)}` : name;
|
|
54
|
-
const entry = { name: finalName, path: resolvedPath };
|
|
55
|
-
projectRegistry.upsert(entry);
|
|
56
|
-
return entry;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Remove a project from the registry by path.
|
|
60
|
-
* Returns true if it was found and removed.
|
|
61
|
-
*/
|
|
62
|
-
export function unregisterProject(projectDir) {
|
|
63
|
-
const resolvedPath = path.resolve(projectDir);
|
|
64
|
-
const { projectRegistry } = getRepositories();
|
|
65
|
-
return projectRegistry.remove(resolvedPath);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Validate all registry entries.
|
|
69
|
-
* Returns entries split into valid (path + config exist) and invalid.
|
|
70
|
-
*/
|
|
71
|
-
export function validateRegistry() {
|
|
72
|
-
const entries = loadRegistry();
|
|
73
|
-
const valid = [];
|
|
74
|
-
const invalid = [];
|
|
75
|
-
for (const entry of entries) {
|
|
76
|
-
if (fs.existsSync(entry.path) && fs.existsSync(path.join(entry.path, CONFIG_FILE_NAME))) {
|
|
77
|
-
valid.push(entry);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
invalid.push(entry);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return { valid, invalid };
|
|
84
|
-
}
|
|
85
|
-
export { closeDb, resetRepositories };
|
|
86
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Roadmap Parser for Night Watch CLI
|
|
3
|
-
* Parses ROADMAP.md files into structured items
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Represents a single item parsed from ROADMAP.md
|
|
7
|
-
*/
|
|
8
|
-
export interface IRoadmapItem {
|
|
9
|
-
/** First 8 chars of SHA-256 hash of lowercase trimmed title */
|
|
10
|
-
hash: string;
|
|
11
|
-
/** The title/heading of the item */
|
|
12
|
-
title: string;
|
|
13
|
-
/** Optional description text */
|
|
14
|
-
description: string;
|
|
15
|
-
/** Whether the item is checked/completed (from - [x] format) */
|
|
16
|
-
checked: boolean;
|
|
17
|
-
/** Parent section name (from ## heading) */
|
|
18
|
-
section: string;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Generate a hash for an item based on its title
|
|
22
|
-
* Uses first 8 characters of SHA-256 hash of lowercase trimmed title
|
|
23
|
-
*/
|
|
24
|
-
export declare function generateItemHash(title: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* Parse ROADMAP.md content into structured items
|
|
27
|
-
*
|
|
28
|
-
* Supports two formats:
|
|
29
|
-
* 1. Checklist format: Lines matching `- [ ] Title` or `- [x] Title`
|
|
30
|
-
* with optional description on following indented lines
|
|
31
|
-
* 2. Heading format: `### Title` followed by body text (until next heading)
|
|
32
|
-
*
|
|
33
|
-
* @param content - The raw ROADMAP.md content
|
|
34
|
-
* @returns Array of parsed roadmap items
|
|
35
|
-
*/
|
|
36
|
-
export declare function parseRoadmap(content: string): IRoadmapItem[];
|
|
37
|
-
/**
|
|
38
|
-
* Filter roadmap items to only unchecked items (pending work)
|
|
39
|
-
*/
|
|
40
|
-
export declare function getUncheckedItems(items: IRoadmapItem[]): IRoadmapItem[];
|
|
41
|
-
/**
|
|
42
|
-
* Group roadmap items by section
|
|
43
|
-
*/
|
|
44
|
-
export declare function groupBySection(items: IRoadmapItem[]): Record<string, IRoadmapItem[]>;
|
|
45
|
-
//# sourceMappingURL=roadmap-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"roadmap-parser.d.ts","sourceRoot":"","sources":["../../src/utils/roadmap-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAuD5D;AA4DD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAWpF"}
|