@jonit-dev/night-watch-cli 1.7.18 → 1.7.20
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 +14 -22
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/slack/client.d.ts +4 -0
- package/dist/src/slack/client.d.ts.map +1 -1
- package/dist/src/slack/client.js +6 -0
- package/dist/src/slack/client.js.map +1 -1
- package/dist/src/slack/interaction-listener.d.ts +2 -3
- package/dist/src/slack/interaction-listener.d.ts.map +1 -1
- package/dist/src/slack/interaction-listener.js +30 -14
- package/dist/src/slack/interaction-listener.js.map +1 -1
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.js +1 -1
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.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-D3awZ0gS.js +0 -473
package/dist/commands/run.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Run command - executes the PRD cron script
|
|
3
|
-
*/
|
|
4
|
-
import { Command } from "commander";
|
|
5
|
-
import { INightWatchConfig, NotificationEvent } from "../types.js";
|
|
6
|
-
/**
|
|
7
|
-
* Options for the run command
|
|
8
|
-
*/
|
|
9
|
-
export interface IRunOptions {
|
|
10
|
-
dryRun: boolean;
|
|
11
|
-
timeout?: string;
|
|
12
|
-
provider?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Map executor exit/result state to a notification event.
|
|
16
|
-
* Returns null when the run completed with no actionable work (skip/no-op).
|
|
17
|
-
*/
|
|
18
|
-
export declare function resolveRunNotificationEvent(exitCode: number, scriptStatus?: string): NotificationEvent | null;
|
|
19
|
-
/**
|
|
20
|
-
* Return Telegram webhooks that opted in to rate-limit fallback notifications.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getRateLimitFallbackTelegramWebhooks(config: INightWatchConfig): Array<{
|
|
23
|
-
botToken: string;
|
|
24
|
-
chatId: string;
|
|
25
|
-
}>;
|
|
26
|
-
/**
|
|
27
|
-
* Whether the bash execution reported a rate-limit fallback trigger.
|
|
28
|
-
*/
|
|
29
|
-
export declare function isRateLimitFallbackTriggered(resultData?: Record<string, string>): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Build environment variables map from config and CLI options
|
|
32
|
-
*/
|
|
33
|
-
export declare function buildEnvVars(config: INightWatchConfig, options: IRunOptions): Record<string, string>;
|
|
34
|
-
/**
|
|
35
|
-
* Apply CLI flag overrides to the config
|
|
36
|
-
*/
|
|
37
|
-
export declare function applyCliOverrides(config: INightWatchConfig, options: IRunOptions): INightWatchConfig;
|
|
38
|
-
/**
|
|
39
|
-
* Information about a scanned PRD file, including claim status
|
|
40
|
-
*/
|
|
41
|
-
export interface IPrdScanItem {
|
|
42
|
-
name: string;
|
|
43
|
-
claimed: boolean;
|
|
44
|
-
claimInfo: {
|
|
45
|
-
hostname: string;
|
|
46
|
-
pid: number;
|
|
47
|
-
timestamp: number;
|
|
48
|
-
} | null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Scan the PRD directory for eligible PRD files
|
|
52
|
-
*/
|
|
53
|
-
export declare function scanPrdDirectory(projectDir: string, prdDir: string, maxRuntime: number): {
|
|
54
|
-
pending: IPrdScanItem[];
|
|
55
|
-
completed: string[];
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Register the run command with the program
|
|
59
|
-
*/
|
|
60
|
-
export declare function runCommand(program: Command): void;
|
|
61
|
-
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAkB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAiBnF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,GAAG,IAAI,CAW1B;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,iBAAiB,GACxB,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAW7C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAEzF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuEpG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,iBAAiB,CAepG;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA8CzI;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsMjD"}
|
package/dist/commands/run.js
DELETED
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Run command - executes the PRD cron script
|
|
3
|
-
*/
|
|
4
|
-
import { getScriptPath, loadConfig } from "../config.js";
|
|
5
|
-
import { createBoardProvider } from "../board/factory.js";
|
|
6
|
-
import { executeScriptWithOutput } from "../utils/shell.js";
|
|
7
|
-
import { sendNotifications } from "../utils/notify.js";
|
|
8
|
-
import { fetchPrDetails, fetchPrDetailsForBranch } from "../utils/github.js";
|
|
9
|
-
import { CLAIM_FILE_EXTENSION, CLAUDE_MODEL_IDS, PROVIDER_COMMANDS } from "../constants.js";
|
|
10
|
-
import * as fs from "fs";
|
|
11
|
-
import * as path from "path";
|
|
12
|
-
import { parseScriptResult } from "../utils/script-result.js";
|
|
13
|
-
import { createSpinner, createTable, dim, header, info, error as uiError, } from "../utils/ui.js";
|
|
14
|
-
/**
|
|
15
|
-
* Map executor exit/result state to a notification event.
|
|
16
|
-
* Returns null when the run completed with no actionable work (skip/no-op).
|
|
17
|
-
*/
|
|
18
|
-
export function resolveRunNotificationEvent(exitCode, scriptStatus) {
|
|
19
|
-
if (exitCode === 124) {
|
|
20
|
-
return "run_timeout";
|
|
21
|
-
}
|
|
22
|
-
if (exitCode !== 0) {
|
|
23
|
-
return "run_failed";
|
|
24
|
-
}
|
|
25
|
-
if (!scriptStatus || scriptStatus === "success_open_pr") {
|
|
26
|
-
return "run_succeeded";
|
|
27
|
-
}
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Return Telegram webhooks that opted in to rate-limit fallback notifications.
|
|
32
|
-
*/
|
|
33
|
-
export function getRateLimitFallbackTelegramWebhooks(config) {
|
|
34
|
-
return (config.notifications?.webhooks ?? [])
|
|
35
|
-
.filter((wh) => wh.type === "telegram"
|
|
36
|
-
&& typeof wh.botToken === "string"
|
|
37
|
-
&& wh.botToken.trim().length > 0
|
|
38
|
-
&& typeof wh.chatId === "string"
|
|
39
|
-
&& wh.chatId.trim().length > 0
|
|
40
|
-
&& wh.events.includes("rate_limit_fallback"))
|
|
41
|
-
.map((wh) => ({ botToken: wh.botToken, chatId: wh.chatId }));
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Whether the bash execution reported a rate-limit fallback trigger.
|
|
45
|
-
*/
|
|
46
|
-
export function isRateLimitFallbackTriggered(resultData) {
|
|
47
|
-
return resultData?.rate_limit_fallback === "1";
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Build environment variables map from config and CLI options
|
|
51
|
-
*/
|
|
52
|
-
export function buildEnvVars(config, options) {
|
|
53
|
-
const env = {};
|
|
54
|
-
// Provider command - the actual CLI binary to call
|
|
55
|
-
env.NW_PROVIDER_CMD = PROVIDER_COMMANDS[config.provider];
|
|
56
|
-
// Default branch (empty = auto-detect in bash script)
|
|
57
|
-
if (config.defaultBranch) {
|
|
58
|
-
env.NW_DEFAULT_BRANCH = config.defaultBranch;
|
|
59
|
-
}
|
|
60
|
-
// Runtime
|
|
61
|
-
env.NW_MAX_RUNTIME = String(config.maxRuntime);
|
|
62
|
-
env.NW_PRD_DIR = config.prdDir;
|
|
63
|
-
env.NW_BRANCH_PREFIX = config.branchPrefix;
|
|
64
|
-
// Provider environment variables (API keys, base URLs, etc.)
|
|
65
|
-
if (config.providerEnv) {
|
|
66
|
-
Object.assign(env, config.providerEnv);
|
|
67
|
-
}
|
|
68
|
-
// PRD priority order
|
|
69
|
-
if (config.prdPriority && config.prdPriority.length > 0) {
|
|
70
|
-
env.NW_PRD_PRIORITY = config.prdPriority.join(":");
|
|
71
|
-
}
|
|
72
|
-
// Dry run flag
|
|
73
|
-
if (options.dryRun) {
|
|
74
|
-
env.NW_DRY_RUN = "1";
|
|
75
|
-
}
|
|
76
|
-
// Sandbox flag — prevents the agent from modifying crontab during execution
|
|
77
|
-
env.NW_EXECUTION_CONTEXT = "agent";
|
|
78
|
-
// Max retries for rate-limited API calls (minimum 1 attempt)
|
|
79
|
-
const maxRetries = Number.isFinite(config.maxRetries)
|
|
80
|
-
? Math.max(1, Math.floor(config.maxRetries))
|
|
81
|
-
: 3;
|
|
82
|
-
env.NW_MAX_RETRIES = String(maxRetries);
|
|
83
|
-
// Current CLI executable path for nested CLI calls inside bash scripts.
|
|
84
|
-
if (process.argv[1]) {
|
|
85
|
-
env.NW_CLI_BIN = process.argv[1];
|
|
86
|
-
}
|
|
87
|
-
// Board provider — signal to the cron script to use board mode whenever enabled.
|
|
88
|
-
// If projectNumber is missing, `night-watch board next-issue` auto-bootstraps
|
|
89
|
-
// a board and persists it before continuing.
|
|
90
|
-
if (config.boardProvider?.enabled !== false) {
|
|
91
|
-
env.NW_BOARD_ENABLED = "true";
|
|
92
|
-
}
|
|
93
|
-
// Rate-limit fallback: fall back to native Claude when proxy quota is exhausted
|
|
94
|
-
if (config.fallbackOnRateLimit) {
|
|
95
|
-
env.NW_FALLBACK_ON_RATE_LIMIT = "true";
|
|
96
|
-
}
|
|
97
|
-
// Claude model used for native / fallback execution
|
|
98
|
-
env.NW_CLAUDE_MODEL_ID = CLAUDE_MODEL_IDS[config.claudeModel ?? "sonnet"];
|
|
99
|
-
// Telegram credentials for in-script fallback warnings.
|
|
100
|
-
// Export only webhooks that explicitly subscribed to rate_limit_fallback.
|
|
101
|
-
const fallbackTelegramWebhooks = getRateLimitFallbackTelegramWebhooks(config);
|
|
102
|
-
if (fallbackTelegramWebhooks.length > 0) {
|
|
103
|
-
env.NW_TELEGRAM_RATE_LIMIT_WEBHOOKS = JSON.stringify(fallbackTelegramWebhooks);
|
|
104
|
-
// Backward compatibility for older helper implementations.
|
|
105
|
-
env.NW_TELEGRAM_BOT_TOKEN = fallbackTelegramWebhooks[0].botToken;
|
|
106
|
-
env.NW_TELEGRAM_CHAT_ID = fallbackTelegramWebhooks[0].chatId;
|
|
107
|
-
}
|
|
108
|
-
return env;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Apply CLI flag overrides to the config
|
|
112
|
-
*/
|
|
113
|
-
export function applyCliOverrides(config, options) {
|
|
114
|
-
const overridden = { ...config };
|
|
115
|
-
if (options.timeout) {
|
|
116
|
-
const timeout = parseInt(options.timeout, 10);
|
|
117
|
-
if (!isNaN(timeout)) {
|
|
118
|
-
overridden.maxRuntime = timeout;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (options.provider) {
|
|
122
|
-
overridden.provider = options.provider;
|
|
123
|
-
}
|
|
124
|
-
return overridden;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Scan the PRD directory for eligible PRD files
|
|
128
|
-
*/
|
|
129
|
-
export function scanPrdDirectory(projectDir, prdDir, maxRuntime) {
|
|
130
|
-
const absolutePrdDir = path.join(projectDir, prdDir);
|
|
131
|
-
const doneDir = path.join(absolutePrdDir, "done");
|
|
132
|
-
const pending = [];
|
|
133
|
-
const completed = [];
|
|
134
|
-
// Scan main PRD directory for pending PRDs
|
|
135
|
-
if (fs.existsSync(absolutePrdDir)) {
|
|
136
|
-
const entries = fs.readdirSync(absolutePrdDir, { withFileTypes: true });
|
|
137
|
-
for (const entry of entries) {
|
|
138
|
-
if (entry.isFile() && entry.name.endsWith(".md") && entry.name !== "NIGHT-WATCH-SUMMARY.md") {
|
|
139
|
-
const claimPath = path.join(absolutePrdDir, entry.name + CLAIM_FILE_EXTENSION);
|
|
140
|
-
let claimed = false;
|
|
141
|
-
let claimInfo = null;
|
|
142
|
-
if (fs.existsSync(claimPath)) {
|
|
143
|
-
try {
|
|
144
|
-
const content = fs.readFileSync(claimPath, "utf-8");
|
|
145
|
-
const data = JSON.parse(content);
|
|
146
|
-
const age = Math.floor(Date.now() / 1000) - data.timestamp;
|
|
147
|
-
if (age < maxRuntime) {
|
|
148
|
-
claimed = true;
|
|
149
|
-
claimInfo = { hostname: data.hostname, pid: data.pid, timestamp: data.timestamp };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
// Invalid claim file, treat as unclaimed
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
pending.push({ name: entry.name, claimed, claimInfo });
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// Scan done directory for completed PRDs
|
|
161
|
-
if (fs.existsSync(doneDir)) {
|
|
162
|
-
const entries = fs.readdirSync(doneDir, { withFileTypes: true });
|
|
163
|
-
for (const entry of entries) {
|
|
164
|
-
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
165
|
-
completed.push(entry.name);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return { pending, completed };
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Register the run command with the program
|
|
173
|
-
*/
|
|
174
|
-
export function runCommand(program) {
|
|
175
|
-
program
|
|
176
|
-
.command("run")
|
|
177
|
-
.description("Run PRD executor now")
|
|
178
|
-
.option("--dry-run", "Show what would be executed without running")
|
|
179
|
-
.option("--timeout <seconds>", "Override max runtime in seconds")
|
|
180
|
-
.option("--provider <string>", "AI provider to use (claude or codex)")
|
|
181
|
-
.action(async (options) => {
|
|
182
|
-
// Get the project directory (current working directory)
|
|
183
|
-
const projectDir = process.cwd();
|
|
184
|
-
// Load config from file and environment
|
|
185
|
-
let config = loadConfig(projectDir);
|
|
186
|
-
// Apply CLI flag overrides
|
|
187
|
-
config = applyCliOverrides(config, options);
|
|
188
|
-
// Build environment variables
|
|
189
|
-
const envVars = buildEnvVars(config, options);
|
|
190
|
-
// Get the script path
|
|
191
|
-
const scriptPath = getScriptPath("night-watch-cron.sh");
|
|
192
|
-
if (options.dryRun) {
|
|
193
|
-
header("Dry Run: PRD Executor");
|
|
194
|
-
// Configuration section with table
|
|
195
|
-
header("Configuration");
|
|
196
|
-
const configTable = createTable({ head: ["Setting", "Value"] });
|
|
197
|
-
configTable.push(["Provider", config.provider]);
|
|
198
|
-
configTable.push(["Provider CLI", PROVIDER_COMMANDS[config.provider]]);
|
|
199
|
-
configTable.push(["Default Branch", config.defaultBranch || "(auto-detect)"]);
|
|
200
|
-
configTable.push(["PRD Directory", config.prdDir]);
|
|
201
|
-
configTable.push(["Max Runtime", `${config.maxRuntime}s (${Math.floor(config.maxRuntime / 60)}min)`]);
|
|
202
|
-
configTable.push(["Branch Prefix", config.branchPrefix]);
|
|
203
|
-
configTable.push(["Auto-merge", config.autoMerge ? `Enabled (${config.autoMergeMethod})` : "Disabled"]);
|
|
204
|
-
console.log(configTable.toString());
|
|
205
|
-
if (envVars.NW_BOARD_ENABLED === "true") {
|
|
206
|
-
header("Board Status");
|
|
207
|
-
if (config.boardProvider?.projectNumber) {
|
|
208
|
-
try {
|
|
209
|
-
const provider = createBoardProvider(config.boardProvider, projectDir);
|
|
210
|
-
const readyIssues = await provider.getIssuesByColumn("Ready");
|
|
211
|
-
if (readyIssues.length === 0) {
|
|
212
|
-
dim(" Ready: (none)");
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
info(`Ready (${readyIssues.length}):`);
|
|
216
|
-
for (const issue of readyIssues.slice(0, 5)) {
|
|
217
|
-
dim(` - #${issue.number} ${issue.title}`);
|
|
218
|
-
}
|
|
219
|
-
if (readyIssues.length > 5) {
|
|
220
|
-
dim(` ... and ${readyIssues.length - 5} more`);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
catch (err) {
|
|
225
|
-
dim(` Could not query board: ${err instanceof Error ? err.message : String(err)}`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
dim(" No board configured yet. A board will be auto-created on first board-mode run.");
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
// Scan for PRDs in filesystem mode
|
|
234
|
-
header("PRD Status");
|
|
235
|
-
const prdStatus = scanPrdDirectory(projectDir, config.prdDir, config.maxRuntime);
|
|
236
|
-
if (prdStatus.pending.length === 0) {
|
|
237
|
-
dim(" Pending: (none)");
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
const claimedItems = prdStatus.pending.filter(p => p.claimed);
|
|
241
|
-
const unclaimed = prdStatus.pending.filter(p => !p.claimed);
|
|
242
|
-
info(`Pending (${unclaimed.length} pending, ${claimedItems.length} claimed):`);
|
|
243
|
-
for (const prd of prdStatus.pending) {
|
|
244
|
-
if (prd.claimed && prd.claimInfo) {
|
|
245
|
-
dim(` - ${prd.name} [claimed by ${prd.claimInfo.hostname}:${prd.claimInfo.pid}]`);
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
dim(` - ${prd.name}`);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (prdStatus.completed.length === 0) {
|
|
253
|
-
dim(" Completed: (none)");
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
info(`Completed (${prdStatus.completed.length}):`);
|
|
257
|
-
for (const prd of prdStatus.completed.slice(0, 5)) {
|
|
258
|
-
dim(` - ${prd}`);
|
|
259
|
-
}
|
|
260
|
-
if (prdStatus.completed.length > 5) {
|
|
261
|
-
dim(` ... and ${prdStatus.completed.length - 5} more`);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
// Provider invocation command
|
|
266
|
-
header("Provider Invocation");
|
|
267
|
-
const providerCmd = PROVIDER_COMMANDS[config.provider];
|
|
268
|
-
const autoFlag = config.provider === "claude" ? "--dangerously-skip-permissions" : "--yolo";
|
|
269
|
-
dim(` ${providerCmd} ${autoFlag} -p "/night-watch"`);
|
|
270
|
-
// Environment variables
|
|
271
|
-
header("Environment Variables");
|
|
272
|
-
for (const [key, value] of Object.entries(envVars)) {
|
|
273
|
-
dim(` ${key}=${value}`);
|
|
274
|
-
}
|
|
275
|
-
// Full command that would be executed
|
|
276
|
-
header("Command");
|
|
277
|
-
dim(` bash ${scriptPath} ${projectDir}`);
|
|
278
|
-
console.log();
|
|
279
|
-
process.exit(0);
|
|
280
|
-
}
|
|
281
|
-
// Execute the script with spinner
|
|
282
|
-
const spinner = createSpinner("Running PRD executor...");
|
|
283
|
-
spinner.start();
|
|
284
|
-
try {
|
|
285
|
-
const { exitCode, stdout, stderr } = await executeScriptWithOutput(scriptPath, [projectDir], envVars);
|
|
286
|
-
const scriptResult = parseScriptResult(`${stdout}\n${stderr}`);
|
|
287
|
-
if (exitCode === 0) {
|
|
288
|
-
if (scriptResult?.status?.startsWith("skip_")) {
|
|
289
|
-
spinner.succeed("PRD executor completed (no eligible work)");
|
|
290
|
-
}
|
|
291
|
-
else if (scriptResult?.status === "success_already_merged") {
|
|
292
|
-
spinner.succeed("PRD executor completed (PRD already merged)");
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
spinner.succeed("PRD executor completed successfully");
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
spinner.fail(`PRD executor exited with code ${exitCode}`);
|
|
300
|
-
}
|
|
301
|
-
// Send notifications (fire-and-forget, failures do not affect exit code)
|
|
302
|
-
if (!options.dryRun) {
|
|
303
|
-
// Rate-limit fallback notifications are sent immediately to Telegram in bash.
|
|
304
|
-
// Send this event only to non-Telegram webhooks to avoid duplicate alerts.
|
|
305
|
-
if (isRateLimitFallbackTriggered(scriptResult?.data)) {
|
|
306
|
-
const nonTelegramWebhooks = (config.notifications?.webhooks ?? [])
|
|
307
|
-
.filter((wh) => wh.type !== "telegram");
|
|
308
|
-
if (nonTelegramWebhooks.length > 0) {
|
|
309
|
-
await sendNotifications({
|
|
310
|
-
...config,
|
|
311
|
-
notifications: {
|
|
312
|
-
...config.notifications,
|
|
313
|
-
webhooks: nonTelegramWebhooks,
|
|
314
|
-
},
|
|
315
|
-
}, {
|
|
316
|
-
event: "rate_limit_fallback",
|
|
317
|
-
projectName: path.basename(projectDir),
|
|
318
|
-
exitCode,
|
|
319
|
-
provider: config.provider,
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
// Backward-compatible fallback: if no marker is present, preserve previous behavior.
|
|
324
|
-
const event = resolveRunNotificationEvent(exitCode, scriptResult?.status);
|
|
325
|
-
// Enrich with PR details on success (graceful — null if gh fails)
|
|
326
|
-
let prDetails = null;
|
|
327
|
-
if (event === "run_succeeded") {
|
|
328
|
-
const branch = scriptResult?.data.branch;
|
|
329
|
-
if (branch) {
|
|
330
|
-
prDetails = fetchPrDetailsForBranch(branch, projectDir);
|
|
331
|
-
}
|
|
332
|
-
if (!prDetails) {
|
|
333
|
-
prDetails = fetchPrDetails(config.branchPrefix, projectDir);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
if (event) {
|
|
337
|
-
await sendNotifications(config, {
|
|
338
|
-
event,
|
|
339
|
-
projectName: path.basename(projectDir),
|
|
340
|
-
exitCode,
|
|
341
|
-
provider: config.provider,
|
|
342
|
-
prUrl: prDetails?.url,
|
|
343
|
-
prTitle: prDetails?.title,
|
|
344
|
-
prBody: prDetails?.body,
|
|
345
|
-
prNumber: prDetails?.number,
|
|
346
|
-
filesChanged: prDetails?.changedFiles,
|
|
347
|
-
additions: prDetails?.additions,
|
|
348
|
-
deletions: prDetails?.deletions,
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
else {
|
|
352
|
-
info("Skipping completion notification (no actionable run result)");
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
process.exit(exitCode);
|
|
356
|
-
}
|
|
357
|
-
catch (err) {
|
|
358
|
-
spinner.fail("Failed to execute run command");
|
|
359
|
-
uiError(`${err instanceof Error ? err.message : String(err)}`);
|
|
360
|
-
process.exit(1);
|
|
361
|
-
}
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBnD"}
|
package/dist/commands/serve.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Serve command for Night Watch CLI
|
|
3
|
-
* Starts the HTTP API server for the Web UI
|
|
4
|
-
*/
|
|
5
|
-
import { startGlobalServer, startServer } from "../server/index.js";
|
|
6
|
-
export function serveCommand(program) {
|
|
7
|
-
program
|
|
8
|
-
.command("serve")
|
|
9
|
-
.description("Start the Night Watch web UI server")
|
|
10
|
-
.option("-p, --port <number>", "Port to run the server on", "7575")
|
|
11
|
-
.option("-g, --global", "Start in global mode (manage all registered projects)")
|
|
12
|
-
.action((options) => {
|
|
13
|
-
const port = parseInt(options.port, 10);
|
|
14
|
-
if (isNaN(port) || port < 1 || port > 65535) {
|
|
15
|
-
console.error(`Invalid port: ${options.port}. Port must be between 1 and 65535.`);
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
if (options.global) {
|
|
19
|
-
startGlobalServer(port);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
const projectDir = process.cwd();
|
|
23
|
-
startServer(projectDir, port);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,cAAc,EAAE,uDAAuD,CAAC;SAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,qCAAqC,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/slice.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Slice command - executes the roadmap slicer to create PRDs from roadmap items
|
|
3
|
-
*/
|
|
4
|
-
import { Command } from "commander";
|
|
5
|
-
import { INightWatchConfig } from "../types.js";
|
|
6
|
-
/**
|
|
7
|
-
* Options for the slice command
|
|
8
|
-
*/
|
|
9
|
-
export interface ISliceOptions {
|
|
10
|
-
dryRun: boolean;
|
|
11
|
-
timeout?: string;
|
|
12
|
-
provider?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Build environment variables map from config and CLI options for slicer
|
|
16
|
-
*/
|
|
17
|
-
export declare function buildEnvVars(config: INightWatchConfig, options: ISliceOptions): Record<string, string>;
|
|
18
|
-
/**
|
|
19
|
-
* Apply CLI flag overrides to the config for slicer
|
|
20
|
-
*/
|
|
21
|
-
export declare function applyCliOverrides(config: INightWatchConfig, options: ISliceOptions): INightWatchConfig;
|
|
22
|
-
/**
|
|
23
|
-
* Register the slice command with the program
|
|
24
|
-
*/
|
|
25
|
-
export declare function sliceCommand(program: Command): void;
|
|
26
|
-
//# sourceMappingURL=slice.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAkBnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BtG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,GAAG,iBAAiB,CAkBtG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoInD"}
|