@jonit-dev/night-watch-cli 1.7.29 → 1.7.31
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/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/{src/cli.js → cli.js} +1 -0
- package/dist/cli.js.map +1 -0
- package/dist/{src/commands → commands}/audit.d.ts +2 -2
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +105 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/{src/commands → commands}/board.d.ts +1 -1
- package/dist/commands/board.d.ts.map +1 -0
- package/dist/commands/board.js +664 -0
- package/dist/commands/board.js.map +1 -0
- package/dist/{src/commands → commands}/cancel.d.ts +3 -3
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/{src/commands → commands}/cancel.js +18 -20
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/dashboard/tab-actions.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-actions.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-config.d.ts +3 -3
- package/dist/commands/dashboard/tab-config.d.ts.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-config.js +250 -187
- package/dist/commands/dashboard/tab-config.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-logs.d.ts +1 -1
- package/dist/commands/dashboard/tab-logs.d.ts.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-logs.js +62 -38
- package/dist/commands/dashboard/tab-logs.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-schedules.d.ts +1 -1
- package/dist/commands/dashboard/tab-schedules.d.ts.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-schedules.js +85 -76
- package/dist/commands/dashboard/tab-schedules.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-status.d.ts +7 -7
- package/dist/commands/dashboard/tab-status.d.ts.map +1 -0
- package/dist/{src/commands → commands}/dashboard/tab-status.js +98 -95
- package/dist/commands/dashboard/tab-status.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard/types.d.ts +3 -4
- package/dist/commands/dashboard/types.d.ts.map +1 -0
- package/dist/commands/dashboard/types.js.map +1 -0
- package/dist/{src/commands → commands}/dashboard.d.ts +2 -2
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/{src/commands → commands}/dashboard.js +32 -33
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/{src/commands → commands}/doctor.d.ts +2 -2
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/{src/commands → commands}/doctor.js +40 -43
- package/dist/commands/doctor.js.map +1 -0
- package/dist/{src/commands → commands}/history.d.ts +1 -1
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/{src/commands → commands}/history.js +11 -18
- package/dist/commands/history.js.map +1 -0
- package/dist/{src/commands → commands}/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/{src/commands → commands}/init.js +62 -36
- package/dist/commands/init.js.map +1 -0
- package/dist/{src/commands → commands}/install.d.ts +2 -2
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/{src/commands → commands}/install.js +48 -50
- package/dist/commands/install.js.map +1 -0
- package/dist/{src/commands → commands}/logs.d.ts +1 -1
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/{src/commands → commands}/logs.js +29 -30
- package/dist/commands/logs.js.map +1 -0
- package/dist/{src/commands → commands}/prd-state.d.ts +1 -1
- package/dist/commands/prd-state.d.ts.map +1 -0
- package/dist/{src/commands → commands}/prd-state.js +14 -14
- package/dist/commands/prd-state.js.map +1 -0
- package/dist/{src/commands → commands}/prd.d.ts +1 -1
- package/dist/commands/prd.d.ts.map +1 -0
- package/dist/{src/commands → commands}/prd.js +57 -66
- package/dist/commands/prd.js.map +1 -0
- package/dist/{src/commands → commands}/prds.d.ts +1 -1
- package/dist/commands/prds.d.ts.map +1 -0
- package/dist/{src/commands → commands}/prds.js +51 -53
- package/dist/commands/prds.js.map +1 -0
- package/dist/{src/commands → commands}/prs.d.ts +1 -1
- package/dist/commands/prs.d.ts.map +1 -0
- package/dist/{src/commands → commands}/prs.js +22 -24
- package/dist/commands/prs.js.map +1 -0
- package/dist/{src/commands → commands}/qa.d.ts +2 -2
- package/dist/commands/qa.d.ts.map +1 -0
- package/dist/{src/commands → commands}/qa.js +50 -51
- package/dist/commands/qa.js.map +1 -0
- package/dist/{src/commands → commands}/retry.d.ts +1 -1
- package/dist/commands/retry.d.ts.map +1 -0
- package/dist/{src/commands → commands}/retry.js +9 -10
- package/dist/commands/retry.js.map +1 -0
- package/dist/{src/commands → commands}/review.d.ts +2 -2
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/{src/commands → commands}/review.js +68 -59
- package/dist/commands/review.js.map +1 -0
- package/dist/{src/commands → commands}/run.d.ts +2 -2
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/{src/commands → commands}/run.js +87 -83
- package/dist/commands/run.js.map +1 -0
- package/dist/{src/commands → commands}/serve.d.ts +2 -2
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/{src/commands → commands}/serve.js +18 -18
- package/dist/commands/serve.js.map +1 -0
- package/dist/{src/commands → commands}/slice.d.ts +2 -2
- package/dist/commands/slice.d.ts.map +1 -0
- package/dist/{src/commands → commands}/slice.js +50 -46
- package/dist/commands/slice.js.map +1 -0
- package/dist/{src/commands → commands}/state.d.ts +1 -1
- package/dist/commands/state.d.ts.map +1 -0
- package/dist/{src/commands → commands}/state.js +20 -22
- package/dist/commands/state.js.map +1 -0
- package/dist/{src/commands → commands}/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/{src/commands → commands}/status.js +75 -54
- package/dist/commands/status.js.map +1 -0
- package/dist/{src/commands → commands}/uninstall.d.ts +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/{src/commands → commands}/uninstall.js +12 -14
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/{src/commands → commands}/update.d.ts +1 -1
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/{src/commands → commands}/update.js +23 -23
- package/dist/commands/update.js.map +1 -0
- package/package.json +18 -42
- package/LICENSE +0 -21
- package/README.md +0 -132
- package/dist/shared/types.d.ts +0 -226
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/shared/types.js +0 -7
- package/dist/shared/types.js.map +0 -1
- package/dist/src/agents/soul-compiler.d.ts +0 -11
- package/dist/src/agents/soul-compiler.d.ts.map +0 -1
- package/dist/src/agents/soul-compiler.js +0 -157
- package/dist/src/agents/soul-compiler.js.map +0 -1
- package/dist/src/board/factory.d.ts +0 -3
- package/dist/src/board/factory.d.ts.map +0 -1
- package/dist/src/board/factory.js +0 -10
- package/dist/src/board/factory.js.map +0 -1
- package/dist/src/board/providers/github-graphql.d.ts +0 -16
- package/dist/src/board/providers/github-graphql.d.ts.map +0 -1
- package/dist/src/board/providers/github-graphql.js +0 -43
- package/dist/src/board/providers/github-graphql.js.map +0 -1
- package/dist/src/board/providers/github-projects.d.ts +0 -51
- package/dist/src/board/providers/github-projects.d.ts.map +0 -1
- package/dist/src/board/providers/github-projects.js +0 -672
- package/dist/src/board/providers/github-projects.js.map +0 -1
- package/dist/src/board/types.d.ts +0 -60
- package/dist/src/board/types.d.ts.map +0 -1
- package/dist/src/board/types.js +0 -4
- package/dist/src/board/types.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js.map +0 -1
- package/dist/src/commands/audit.d.ts.map +0 -1
- package/dist/src/commands/audit.js +0 -98
- package/dist/src/commands/audit.js.map +0 -1
- package/dist/src/commands/board.d.ts.map +0 -1
- package/dist/src/commands/board.js +0 -294
- package/dist/src/commands/board.js.map +0 -1
- package/dist/src/commands/cancel.d.ts.map +0 -1
- package/dist/src/commands/cancel.js.map +0 -1
- package/dist/src/commands/dashboard/tab-actions.d.ts.map +0 -1
- package/dist/src/commands/dashboard/tab-actions.js.map +0 -1
- package/dist/src/commands/dashboard/tab-config.d.ts.map +0 -1
- package/dist/src/commands/dashboard/tab-config.js.map +0 -1
- package/dist/src/commands/dashboard/tab-logs.d.ts.map +0 -1
- package/dist/src/commands/dashboard/tab-logs.js.map +0 -1
- package/dist/src/commands/dashboard/tab-schedules.d.ts.map +0 -1
- package/dist/src/commands/dashboard/tab-schedules.js.map +0 -1
- package/dist/src/commands/dashboard/tab-status.d.ts.map +0 -1
- package/dist/src/commands/dashboard/tab-status.js.map +0 -1
- package/dist/src/commands/dashboard/types.d.ts.map +0 -1
- package/dist/src/commands/dashboard/types.js.map +0 -1
- package/dist/src/commands/dashboard.d.ts.map +0 -1
- package/dist/src/commands/dashboard.js.map +0 -1
- package/dist/src/commands/doctor.d.ts.map +0 -1
- package/dist/src/commands/doctor.js.map +0 -1
- package/dist/src/commands/history.d.ts.map +0 -1
- package/dist/src/commands/history.js.map +0 -1
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/install.d.ts.map +0 -1
- package/dist/src/commands/install.js.map +0 -1
- package/dist/src/commands/logs.d.ts.map +0 -1
- package/dist/src/commands/logs.js.map +0 -1
- package/dist/src/commands/prd-state.d.ts.map +0 -1
- package/dist/src/commands/prd-state.js.map +0 -1
- package/dist/src/commands/prd.d.ts.map +0 -1
- package/dist/src/commands/prd.js.map +0 -1
- package/dist/src/commands/prds.d.ts.map +0 -1
- package/dist/src/commands/prds.js.map +0 -1
- package/dist/src/commands/prs.d.ts.map +0 -1
- package/dist/src/commands/prs.js.map +0 -1
- package/dist/src/commands/qa.d.ts.map +0 -1
- package/dist/src/commands/qa.js.map +0 -1
- package/dist/src/commands/retry.d.ts.map +0 -1
- package/dist/src/commands/retry.js.map +0 -1
- package/dist/src/commands/review.d.ts.map +0 -1
- package/dist/src/commands/review.js.map +0 -1
- package/dist/src/commands/run.d.ts.map +0 -1
- package/dist/src/commands/run.js.map +0 -1
- package/dist/src/commands/serve.d.ts.map +0 -1
- package/dist/src/commands/serve.js.map +0 -1
- package/dist/src/commands/slice.d.ts.map +0 -1
- package/dist/src/commands/slice.js.map +0 -1
- package/dist/src/commands/state.d.ts.map +0 -1
- package/dist/src/commands/state.js.map +0 -1
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/commands/uninstall.d.ts.map +0 -1
- package/dist/src/commands/uninstall.js.map +0 -1
- package/dist/src/commands/update.d.ts.map +0 -1
- package/dist/src/commands/update.js.map +0 -1
- package/dist/src/config.d.ts +0 -23
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -671
- package/dist/src/config.js.map +0 -1
- package/dist/src/constants.d.ts +0 -67
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -131
- package/dist/src/constants.js.map +0 -1
- package/dist/src/server/index.d.ts +0 -23
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -1704
- package/dist/src/server/index.js.map +0 -1
- package/dist/src/slack/channel-manager.d.ts +0 -32
- package/dist/src/slack/channel-manager.d.ts.map +0 -1
- package/dist/src/slack/channel-manager.js +0 -128
- package/dist/src/slack/channel-manager.js.map +0 -1
- package/dist/src/slack/client.d.ts +0 -76
- package/dist/src/slack/client.d.ts.map +0 -1
- package/dist/src/slack/client.js +0 -193
- package/dist/src/slack/client.js.map +0 -1
- package/dist/src/slack/deliberation.d.ts +0 -87
- package/dist/src/slack/deliberation.d.ts.map +0 -1
- package/dist/src/slack/deliberation.js +0 -1354
- package/dist/src/slack/deliberation.js.map +0 -1
- package/dist/src/slack/index.d.ts +0 -6
- package/dist/src/slack/index.d.ts.map +0 -1
- package/dist/src/slack/index.js +0 -5
- package/dist/src/slack/index.js.map +0 -1
- package/dist/src/slack/interaction-listener.d.ts +0 -130
- package/dist/src/slack/interaction-listener.d.ts.map +0 -1
- package/dist/src/slack/interaction-listener.js +0 -1329
- package/dist/src/slack/interaction-listener.js.map +0 -1
- package/dist/src/storage/json-state-migrator.d.ts +0 -24
- package/dist/src/storage/json-state-migrator.d.ts.map +0 -1
- package/dist/src/storage/json-state-migrator.js +0 -197
- package/dist/src/storage/json-state-migrator.js.map +0 -1
- package/dist/src/storage/repositories/index.d.ts +0 -25
- package/dist/src/storage/repositories/index.d.ts.map +0 -1
- package/dist/src/storage/repositories/index.js +0 -45
- package/dist/src/storage/repositories/index.js.map +0 -1
- package/dist/src/storage/repositories/interfaces.d.ts +0 -60
- package/dist/src/storage/repositories/interfaces.d.ts.map +0 -1
- package/dist/src/storage/repositories/interfaces.js +0 -6
- package/dist/src/storage/repositories/interfaces.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts +0 -33
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.js +0 -715
- package/dist/src/storage/repositories/sqlite/agent-persona-repository.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/execution-history-repository.d.ts +0 -21
- package/dist/src/storage/repositories/sqlite/execution-history-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/execution-history-repository.js +0 -94
- package/dist/src/storage/repositories/sqlite/execution-history-repository.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/prd-state-repository.d.ts +0 -17
- package/dist/src/storage/repositories/sqlite/prd-state-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/prd-state-repository.js +0 -74
- package/dist/src/storage/repositories/sqlite/prd-state-repository.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/project-registry-repository.d.ts +0 -17
- package/dist/src/storage/repositories/sqlite/project-registry-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/project-registry-repository.js +0 -43
- package/dist/src/storage/repositories/sqlite/project-registry-repository.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/roadmap-state-repository.d.ts +0 -14
- package/dist/src/storage/repositories/sqlite/roadmap-state-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/roadmap-state-repository.js +0 -47
- package/dist/src/storage/repositories/sqlite/roadmap-state-repository.js.map +0 -1
- package/dist/src/storage/repositories/sqlite/slack-discussion-repository.d.ts +0 -20
- package/dist/src/storage/repositories/sqlite/slack-discussion-repository.d.ts.map +0 -1
- package/dist/src/storage/repositories/sqlite/slack-discussion-repository.js +0 -88
- package/dist/src/storage/repositories/sqlite/slack-discussion-repository.js.map +0 -1
- package/dist/src/storage/sqlite/client.d.ts +0 -23
- package/dist/src/storage/sqlite/client.d.ts.map +0 -1
- package/dist/src/storage/sqlite/client.js +0 -47
- package/dist/src/storage/sqlite/client.js.map +0 -1
- package/dist/src/storage/sqlite/migrations.d.ts +0 -11
- package/dist/src/storage/sqlite/migrations.d.ts.map +0 -1
- package/dist/src/storage/sqlite/migrations.js +0 -94
- package/dist/src/storage/sqlite/migrations.js.map +0 -1
- package/dist/src/templates/prd-template.d.ts +0 -11
- package/dist/src/templates/prd-template.d.ts.map +0 -1
- package/dist/src/templates/prd-template.js +0 -166
- package/dist/src/templates/prd-template.js.map +0 -1
- package/dist/src/templates/slicer-prompt.d.ts +0 -54
- package/dist/src/templates/slicer-prompt.d.ts.map +0 -1
- package/dist/src/templates/slicer-prompt.js +0 -163
- package/dist/src/templates/slicer-prompt.js.map +0 -1
- package/dist/src/types.d.ts +0 -140
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/avatar-generator.d.ts +0 -6
- package/dist/src/utils/avatar-generator.d.ts.map +0 -1
- package/dist/src/utils/avatar-generator.js +0 -133
- package/dist/src/utils/avatar-generator.js.map +0 -1
- package/dist/src/utils/checks.d.ts +0 -55
- package/dist/src/utils/checks.d.ts.map +0 -1
- package/dist/src/utils/checks.js +0 -246
- package/dist/src/utils/checks.js.map +0 -1
- package/dist/src/utils/config-writer.d.ts +0 -16
- package/dist/src/utils/config-writer.d.ts.map +0 -1
- package/dist/src/utils/config-writer.js +0 -45
- package/dist/src/utils/config-writer.js.map +0 -1
- package/dist/src/utils/crontab.d.ts +0 -62
- package/dist/src/utils/crontab.d.ts.map +0 -1
- package/dist/src/utils/crontab.js +0 -168
- package/dist/src/utils/crontab.js.map +0 -1
- package/dist/src/utils/execution-history.d.ts +0 -54
- package/dist/src/utils/execution-history.d.ts.map +0 -1
- package/dist/src/utils/execution-history.js +0 -80
- package/dist/src/utils/execution-history.js.map +0 -1
- package/dist/src/utils/github.d.ts +0 -40
- package/dist/src/utils/github.d.ts.map +0 -1
- package/dist/src/utils/github.js +0 -126
- package/dist/src/utils/github.js.map +0 -1
- package/dist/src/utils/notify.d.ts +0 -64
- package/dist/src/utils/notify.d.ts.map +0 -1
- package/dist/src/utils/notify.js +0 -405
- package/dist/src/utils/notify.js.map +0 -1
- package/dist/src/utils/prd-states.d.ts +0 -16
- package/dist/src/utils/prd-states.d.ts.map +0 -1
- package/dist/src/utils/prd-states.js +0 -28
- package/dist/src/utils/prd-states.js.map +0 -1
- package/dist/src/utils/registry.d.ts +0 -45
- package/dist/src/utils/registry.d.ts.map +0 -1
- package/dist/src/utils/registry.js +0 -86
- package/dist/src/utils/registry.js.map +0 -1
- package/dist/src/utils/roadmap-parser.d.ts +0 -45
- package/dist/src/utils/roadmap-parser.d.ts.map +0 -1
- package/dist/src/utils/roadmap-parser.js +0 -136
- package/dist/src/utils/roadmap-parser.js.map +0 -1
- package/dist/src/utils/roadmap-scanner.d.ts +0 -92
- package/dist/src/utils/roadmap-scanner.d.ts.map +0 -1
- package/dist/src/utils/roadmap-scanner.js +0 -349
- package/dist/src/utils/roadmap-scanner.js.map +0 -1
- package/dist/src/utils/roadmap-state.d.ts +0 -90
- package/dist/src/utils/roadmap-state.d.ts.map +0 -1
- package/dist/src/utils/roadmap-state.js +0 -154
- package/dist/src/utils/roadmap-state.js.map +0 -1
- package/dist/src/utils/script-result.d.ts +0 -12
- package/dist/src/utils/script-result.d.ts.map +0 -1
- package/dist/src/utils/script-result.js +0 -46
- package/dist/src/utils/script-result.js.map +0 -1
- package/dist/src/utils/shell.d.ts +0 -27
- package/dist/src/utils/shell.d.ts.map +0 -1
- package/dist/src/utils/shell.js +0 -64
- package/dist/src/utils/shell.js.map +0 -1
- package/dist/src/utils/status-data.d.ts +0 -148
- package/dist/src/utils/status-data.d.ts.map +0 -1
- package/dist/src/utils/status-data.js +0 -548
- package/dist/src/utils/status-data.js.map +0 -1
- package/dist/src/utils/ui.d.ts +0 -55
- package/dist/src/utils/ui.d.ts.map +0 -1
- package/dist/src/utils/ui.js +0 -121
- package/dist/src/utils/ui.js.map +0 -1
- package/scripts/night-watch-audit-cron.sh +0 -149
- package/scripts/night-watch-cron.sh +0 -484
- package/scripts/night-watch-helpers.sh +0 -499
- package/scripts/night-watch-pr-reviewer-cron.sh +0 -528
- package/scripts/night-watch-qa-cron.sh +0 -281
- package/scripts/night-watch-slicer-cron.sh +0 -90
- package/scripts/test-helpers.bats +0 -77
- package/templates/night-watch-pr-reviewer.md +0 -174
- package/templates/night-watch-qa.md +0 -157
- package/templates/night-watch-slicer.md +0 -219
- package/templates/night-watch.config.json +0 -30
- package/templates/night-watch.md +0 -94
- package/templates/prd-executor.md +0 -235
- package/templates/prd.md +0 -26
- package/web/dist/assets/index-BiJf9LFT.js +0 -458
- package/web/dist/assets/index-OpSgvsYu.css +0 -1
- package/web/dist/avatars/carlos.webp +0 -0
- package/web/dist/avatars/dev.webp +0 -0
- package/web/dist/avatars/maya.webp +0 -0
- package/web/dist/avatars/priya.webp +0 -0
- package/web/dist/index.html +0 -82
- /package/dist/{src/commands → commands}/dashboard/tab-actions.d.ts +0 -0
- /package/dist/{src/commands → commands}/dashboard/tab-actions.js +0 -0
- /package/dist/{src/commands → commands}/dashboard/types.js +0 -0
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slice command - executes the roadmap slicer to create PRDs from roadmap items
|
|
3
3
|
*/
|
|
4
|
-
import { loadConfig } from
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
import { createSpinner, createTable, dim, header, info, error as uiError, } from "../utils/ui.js";
|
|
9
|
-
import { getRoadmapStatus, sliceNextItem, } from "../utils/roadmap-scanner.js";
|
|
4
|
+
import { PROVIDER_COMMANDS, createSpinner, createTable, dim, getRoadmapStatus, header, info, loadConfig, sendNotifications, sliceNextItem, error as uiError, } from '@night-watch/core';
|
|
5
|
+
import { sendSlackBotNotification } from '@night-watch/slack/notify.js';
|
|
6
|
+
import * as path from 'path';
|
|
10
7
|
/**
|
|
11
8
|
* Build environment variables map from config and CLI options for slicer
|
|
12
9
|
*/
|
|
@@ -26,10 +23,10 @@ export function buildEnvVars(config, options) {
|
|
|
26
23
|
}
|
|
27
24
|
// Dry run flag
|
|
28
25
|
if (options.dryRun) {
|
|
29
|
-
env.NW_DRY_RUN =
|
|
26
|
+
env.NW_DRY_RUN = '1';
|
|
30
27
|
}
|
|
31
28
|
// Sandbox flag - prevents the agent from modifying crontab during execution
|
|
32
|
-
env.NW_EXECUTION_CONTEXT =
|
|
29
|
+
env.NW_EXECUTION_CONTEXT = 'agent';
|
|
33
30
|
return env;
|
|
34
31
|
}
|
|
35
32
|
/**
|
|
@@ -56,11 +53,11 @@ export function applyCliOverrides(config, options) {
|
|
|
56
53
|
*/
|
|
57
54
|
export function sliceCommand(program) {
|
|
58
55
|
program
|
|
59
|
-
.command(
|
|
60
|
-
.description(
|
|
61
|
-
.option(
|
|
62
|
-
.option(
|
|
63
|
-
.option(
|
|
56
|
+
.command('slice')
|
|
57
|
+
.description('Run roadmap slicer to create PRD from next roadmap item')
|
|
58
|
+
.option('--dry-run', 'Show what would be executed without running')
|
|
59
|
+
.option('--timeout <seconds>', 'Override max runtime in seconds for slicer')
|
|
60
|
+
.option('--provider <string>', 'AI provider to use (claude or codex)')
|
|
64
61
|
.action(async (options) => {
|
|
65
62
|
// Get the project directory (current working directory)
|
|
66
63
|
const projectDir = process.cwd();
|
|
@@ -71,37 +68,40 @@ export function sliceCommand(program) {
|
|
|
71
68
|
// Build environment variables
|
|
72
69
|
const envVars = buildEnvVars(config, options);
|
|
73
70
|
if (options.dryRun) {
|
|
74
|
-
header(
|
|
71
|
+
header('Dry Run: Roadmap Slicer');
|
|
75
72
|
// Configuration section with table
|
|
76
|
-
header(
|
|
77
|
-
const configTable = createTable({ head: [
|
|
78
|
-
configTable.push([
|
|
79
|
-
configTable.push([
|
|
80
|
-
configTable.push([
|
|
81
|
-
configTable.push([
|
|
82
|
-
configTable.push([
|
|
83
|
-
|
|
84
|
-
|
|
73
|
+
header('Configuration');
|
|
74
|
+
const configTable = createTable({ head: ['Setting', 'Value'] });
|
|
75
|
+
configTable.push(['Provider', config.provider]);
|
|
76
|
+
configTable.push(['Provider CLI', PROVIDER_COMMANDS[config.provider]]);
|
|
77
|
+
configTable.push(['PRD Directory', config.prdDir]);
|
|
78
|
+
configTable.push(['Roadmap Path', config.roadmapScanner.roadmapPath]);
|
|
79
|
+
configTable.push([
|
|
80
|
+
'Slicer Max Runtime',
|
|
81
|
+
`${config.roadmapScanner.slicerMaxRuntime}s (${Math.floor(config.roadmapScanner.slicerMaxRuntime / 60)}min)`,
|
|
82
|
+
]);
|
|
83
|
+
configTable.push(['Slicer Schedule', config.roadmapScanner.slicerSchedule]);
|
|
84
|
+
configTable.push(['Scanner Enabled', config.roadmapScanner.enabled ? 'Yes' : 'No']);
|
|
85
85
|
console.log(configTable.toString());
|
|
86
86
|
// Get roadmap status
|
|
87
|
-
header(
|
|
87
|
+
header('Roadmap Status');
|
|
88
88
|
const roadmapStatus = getRoadmapStatus(projectDir, config);
|
|
89
89
|
if (!config.roadmapScanner.enabled) {
|
|
90
|
-
dim(
|
|
90
|
+
dim(' Roadmap scanner is disabled');
|
|
91
91
|
}
|
|
92
|
-
else if (roadmapStatus.status ===
|
|
92
|
+
else if (roadmapStatus.status === 'no-roadmap') {
|
|
93
93
|
dim(` ROADMAP.md not found at ${config.roadmapScanner.roadmapPath}`);
|
|
94
94
|
}
|
|
95
95
|
else {
|
|
96
|
-
const statusTable = createTable({ head: [
|
|
97
|
-
statusTable.push([
|
|
98
|
-
statusTable.push([
|
|
99
|
-
statusTable.push([
|
|
100
|
-
statusTable.push([
|
|
96
|
+
const statusTable = createTable({ head: ['Metric', 'Count'] });
|
|
97
|
+
statusTable.push(['Total Items', roadmapStatus.totalItems]);
|
|
98
|
+
statusTable.push(['Processed', roadmapStatus.processedItems]);
|
|
99
|
+
statusTable.push(['Pending', roadmapStatus.pendingItems]);
|
|
100
|
+
statusTable.push(['Status', roadmapStatus.status]);
|
|
101
101
|
console.log(statusTable.toString());
|
|
102
102
|
// Show pending items
|
|
103
103
|
if (roadmapStatus.pendingItems > 0) {
|
|
104
|
-
header(
|
|
104
|
+
header('Pending Items');
|
|
105
105
|
const pendingItems = roadmapStatus.items.filter((item) => !item.processed && !item.checked);
|
|
106
106
|
for (const item of pendingItems.slice(0, 10)) {
|
|
107
107
|
info(` - ${item.title}`);
|
|
@@ -115,28 +115,28 @@ export function sliceCommand(program) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
// Provider invocation command
|
|
118
|
-
header(
|
|
118
|
+
header('Provider Invocation');
|
|
119
119
|
const providerCmd = PROVIDER_COMMANDS[config.provider];
|
|
120
|
-
const autoFlag = config.provider ===
|
|
120
|
+
const autoFlag = config.provider === 'claude' ? '--dangerously-skip-permissions' : '--yolo';
|
|
121
121
|
dim(` ${providerCmd} ${autoFlag} -p "/night-watch-slicer"`);
|
|
122
122
|
// Environment variables
|
|
123
|
-
header(
|
|
123
|
+
header('Environment Variables');
|
|
124
124
|
for (const [key, value] of Object.entries(envVars)) {
|
|
125
125
|
dim(` ${key}=${value}`);
|
|
126
126
|
}
|
|
127
127
|
// Full command that would be executed
|
|
128
|
-
header(
|
|
129
|
-
dim(
|
|
128
|
+
header('Action');
|
|
129
|
+
dim(' Would invoke sliceNextItem() to process one roadmap item');
|
|
130
130
|
console.log();
|
|
131
131
|
process.exit(0);
|
|
132
132
|
}
|
|
133
133
|
// Check if roadmap scanner is enabled
|
|
134
134
|
if (!config.roadmapScanner.enabled) {
|
|
135
|
-
uiError(
|
|
135
|
+
uiError('Roadmap scanner is disabled. Enable it in night-watch.config.json to use the slicer.');
|
|
136
136
|
process.exit(1);
|
|
137
137
|
}
|
|
138
138
|
// Execute the slicer with spinner
|
|
139
|
-
const spinner = createSpinner(
|
|
139
|
+
const spinner = createSpinner('Running roadmap slicer...');
|
|
140
140
|
spinner.start();
|
|
141
141
|
try {
|
|
142
142
|
const result = await sliceNextItem(projectDir, config);
|
|
@@ -144,29 +144,33 @@ export function sliceCommand(program) {
|
|
|
144
144
|
spinner.succeed(`Slicer completed successfully: Created ${result.file}`);
|
|
145
145
|
}
|
|
146
146
|
else if (result.error) {
|
|
147
|
-
if (result.error ===
|
|
148
|
-
spinner.succeed(
|
|
147
|
+
if (result.error === 'No pending items to process') {
|
|
148
|
+
spinner.succeed('No pending items to process');
|
|
149
149
|
}
|
|
150
150
|
else {
|
|
151
151
|
spinner.fail(`Slicer failed: ${result.error}`);
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
// Send notifications (fire-and-forget, failures do not affect exit code)
|
|
155
|
-
const exitCode = result.sliced ? 0 :
|
|
155
|
+
const exitCode = result.sliced ? 0 : result.error === 'No pending items to process' ? 0 : 1;
|
|
156
156
|
if (!options.dryRun && result.sliced) {
|
|
157
|
-
const event =
|
|
158
|
-
|
|
157
|
+
const event = 'run_succeeded';
|
|
158
|
+
const _sliceCtx = {
|
|
159
159
|
event,
|
|
160
160
|
projectName: path.basename(projectDir),
|
|
161
161
|
exitCode,
|
|
162
162
|
provider: config.provider,
|
|
163
163
|
prTitle: result.item?.title,
|
|
164
|
-
}
|
|
164
|
+
};
|
|
165
|
+
await Promise.allSettled([
|
|
166
|
+
sendNotifications(config, _sliceCtx),
|
|
167
|
+
sendSlackBotNotification(config, _sliceCtx),
|
|
168
|
+
]);
|
|
165
169
|
}
|
|
166
170
|
process.exit(exitCode);
|
|
167
171
|
}
|
|
168
172
|
catch (err) {
|
|
169
|
-
spinner.fail(
|
|
173
|
+
spinner.fail('Failed to execute slice command');
|
|
170
174
|
uiError(`${err instanceof Error ? err.message : String(err)}`);
|
|
171
175
|
process.exit(1);
|
|
172
176
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAGL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,GAAG,EACH,gBAAgB,EAChB,MAAM,EACN,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,KAAK,IAAI,OAAO,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAW7B;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,OAAsB;IAEtB,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,mDAAmD;IACnD,GAAG,CAAC,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEzD,iBAAiB;IACjB,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAE3E,kCAAkC;IAClC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,eAAe;IACf,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;IAExD,6DAA6D;IAC7D,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IACvB,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC;IAEnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,OAAsB;IAEtB,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,cAAc,GAAG;gBAC1B,GAAG,UAAU,CAAC,cAAc;gBAC5B,gBAAgB,EAAE,OAAO;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAyC,CAAC;IAC1E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;SAC3E,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QACvC,wDAAwD;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,wCAAwC;QACxC,IAAI,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,8BAA8B;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAElC,mCAAmC;YACnC,MAAM,CAAC,eAAe,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;YACtE,WAAW,CAAC,IAAI,CAAC;gBACf,oBAAoB;gBACpB,GAAG,MAAM,CAAC,cAAc,CAAC,gBAAgB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,GAAG,EAAE,CAAC,MAAM;aAC7G,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;YAC5E,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpC,qBAAqB;YACrB,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBACnC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,aAAa,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjD,GAAG,CAAC,6BAA6B,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC/D,WAAW,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC5D,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9D,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1D,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEpC,qBAAqB;gBACrB,IAAI,aAAa,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,eAAe,CAAC,CAAC;oBACxB,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAC7C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAC3C,CAAC;oBACF,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACjB,GAAG,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;oBACD,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBAC7B,GAAG,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,8BAA8B;YAC9B,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5F,GAAG,CAAC,KAAK,WAAW,IAAI,QAAQ,2BAA2B,CAAC,CAAC;YAE7D,wBAAwB;YACxB,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC3B,CAAC;YAED,sCAAsC;YACtC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjB,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,CACL,sFAAsF,CACvF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,MAAM,GAAiB,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAErE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,OAAO,CAAC,0CAA0C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;iBAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,KAAK,KAAK,6BAA6B,EAAE,CAAC;oBACnD,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,yEAAyE;YACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5F,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAsB,eAAe,CAAC;gBAEjD,MAAM,SAAS,GAAG;oBAChB,KAAK;oBACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACtC,QAAQ;oBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK;iBAC5B,CAAC;gBACF,MAAM,OAAO,CAAC,UAAU,CAAC;oBACvB,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC;oBACpC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* Provides the `night-watch state migrate` subcommand for migrating
|
|
4
4
|
* legacy JSON state files into the SQLite backend.
|
|
5
5
|
*/
|
|
6
|
-
import { Command } from
|
|
6
|
+
import { Command } from 'commander';
|
|
7
7
|
export declare function createStateCommand(): Command;
|
|
8
8
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/commands/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqD5C"}
|
|
@@ -3,33 +3,31 @@
|
|
|
3
3
|
* Provides the `night-watch state migrate` subcommand for migrating
|
|
4
4
|
* legacy JSON state files into the SQLite backend.
|
|
5
5
|
*/
|
|
6
|
-
import * as os from
|
|
7
|
-
import * as path from
|
|
8
|
-
import chalk from
|
|
9
|
-
import { Command } from
|
|
10
|
-
import { GLOBAL_CONFIG_DIR } from
|
|
11
|
-
import { migrateJsonToSqlite } from "../storage/json-state-migrator.js";
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
import { GLOBAL_CONFIG_DIR, migrateJsonToSqlite } from '@night-watch/core';
|
|
12
11
|
export function createStateCommand() {
|
|
13
|
-
const state = new Command(
|
|
14
|
-
state.description(
|
|
12
|
+
const state = new Command('state');
|
|
13
|
+
state.description('Manage Night Watch state');
|
|
15
14
|
state
|
|
16
|
-
.command(
|
|
17
|
-
.description(
|
|
18
|
-
.option(
|
|
15
|
+
.command('migrate')
|
|
16
|
+
.description('Migrate legacy JSON state files to SQLite')
|
|
17
|
+
.option('--dry-run', 'Show what would be migrated without making changes')
|
|
19
18
|
.action((opts) => {
|
|
20
|
-
const nightWatchHome = process.env.NIGHT_WATCH_HOME ||
|
|
21
|
-
path.join(os.homedir(), GLOBAL_CONFIG_DIR);
|
|
19
|
+
const nightWatchHome = process.env.NIGHT_WATCH_HOME || path.join(os.homedir(), GLOBAL_CONFIG_DIR);
|
|
22
20
|
if (opts.dryRun) {
|
|
23
|
-
console.log(chalk.cyan(
|
|
21
|
+
console.log(chalk.cyan('Dry-run mode: no changes will be made.\n'));
|
|
24
22
|
console.log(`Legacy JSON files that would be migrated from: ${chalk.bold(nightWatchHome)}`);
|
|
25
|
-
console.log(` ${path.join(nightWatchHome,
|
|
26
|
-
console.log(` ${path.join(nightWatchHome,
|
|
27
|
-
console.log(` ${path.join(nightWatchHome,
|
|
23
|
+
console.log(` ${path.join(nightWatchHome, 'projects.json')}`);
|
|
24
|
+
console.log(` ${path.join(nightWatchHome, 'history.json')}`);
|
|
25
|
+
console.log(` ${path.join(nightWatchHome, 'prd-states.json')}`);
|
|
28
26
|
console.log(` <project>/<prdDir>/.roadmap-state.json (per project)`);
|
|
29
|
-
console.log(chalk.dim(
|
|
27
|
+
console.log(chalk.dim('\nRun without --dry-run to apply the migration.'));
|
|
30
28
|
return;
|
|
31
29
|
}
|
|
32
|
-
console.log(chalk.cyan(
|
|
30
|
+
console.log(chalk.cyan('Migrating legacy JSON state to SQLite...\n'));
|
|
33
31
|
let result;
|
|
34
32
|
try {
|
|
35
33
|
result = migrateJsonToSqlite(nightWatchHome);
|
|
@@ -40,11 +38,11 @@ export function createStateCommand() {
|
|
|
40
38
|
process.exit(1);
|
|
41
39
|
}
|
|
42
40
|
if (result.alreadyMigrated) {
|
|
43
|
-
console.log(chalk.yellow(
|
|
41
|
+
console.log(chalk.yellow('Migration already completed previously. Nothing to do.'));
|
|
44
42
|
return;
|
|
45
43
|
}
|
|
46
|
-
console.log(chalk.green(
|
|
47
|
-
console.log(chalk.bold(
|
|
44
|
+
console.log(chalk.green('Migration complete.\n'));
|
|
45
|
+
console.log(chalk.bold('Summary:'));
|
|
48
46
|
console.log(` Projects migrated: ${chalk.cyan(String(result.projectsMigrated))}`);
|
|
49
47
|
console.log(` History records migrated: ${chalk.cyan(String(result.historyRecordsMigrated))}`);
|
|
50
48
|
console.log(` PRD states migrated: ${chalk.cyan(String(result.prdStatesMigrated))}`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/commands/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkKpD"}
|
|
@@ -2,18 +2,16 @@
|
|
|
2
2
|
* Status command for Night Watch CLI
|
|
3
3
|
* Shows current status including lock files, PRDs, PRs, and logs
|
|
4
4
|
*/
|
|
5
|
-
import chalk from
|
|
6
|
-
import { loadConfig } from
|
|
7
|
-
import { fetchStatusSnapshot, } from "../utils/status-data.js";
|
|
8
|
-
import { createTable, dim, formatInstalledStatus, formatRunningStatus, header, } from "../utils/ui.js";
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { createTable, dim, fetchStatusSnapshot, formatInstalledStatus, formatRunningStatus, header, loadConfig, } from '@night-watch/core';
|
|
9
7
|
/**
|
|
10
8
|
* Format bytes to human-readable size
|
|
11
9
|
*/
|
|
12
10
|
function formatBytes(bytes) {
|
|
13
11
|
if (bytes === 0)
|
|
14
|
-
return
|
|
12
|
+
return '0 B';
|
|
15
13
|
const k = 1024;
|
|
16
|
-
const sizes = [
|
|
14
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
17
15
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
18
16
|
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;
|
|
19
17
|
}
|
|
@@ -22,23 +20,23 @@ function formatBytes(bytes) {
|
|
|
22
20
|
*/
|
|
23
21
|
export function statusCommand(program) {
|
|
24
22
|
program
|
|
25
|
-
.command(
|
|
26
|
-
.description(
|
|
27
|
-
.option(
|
|
28
|
-
.option(
|
|
23
|
+
.command('status')
|
|
24
|
+
.description('Show current night-watch status')
|
|
25
|
+
.option('-v, --verbose', 'Show detailed status information')
|
|
26
|
+
.option('--json', 'Output status as JSON')
|
|
29
27
|
.action(async (options) => {
|
|
30
28
|
try {
|
|
31
29
|
const projectDir = process.cwd();
|
|
32
30
|
const config = loadConfig(projectDir);
|
|
33
31
|
const snapshot = fetchStatusSnapshot(projectDir, config);
|
|
34
32
|
// Derive legacy status shape from snapshot for backward-compatible JSON output
|
|
35
|
-
const executorProc = snapshot.processes.find((p) => p.name ===
|
|
36
|
-
const reviewerProc = snapshot.processes.find((p) => p.name ===
|
|
37
|
-
const executorLog = snapshot.logs.find((l) => l.name ===
|
|
38
|
-
const reviewerLog = snapshot.logs.find((l) => l.name ===
|
|
39
|
-
const pendingPrds = snapshot.prds.filter((p) => p.status ===
|
|
40
|
-
const claimedPrds = snapshot.prds.filter((p) => p.status ===
|
|
41
|
-
const donePrds = snapshot.prds.filter((p) => p.status ===
|
|
33
|
+
const executorProc = snapshot.processes.find((p) => p.name === 'executor');
|
|
34
|
+
const reviewerProc = snapshot.processes.find((p) => p.name === 'reviewer');
|
|
35
|
+
const executorLog = snapshot.logs.find((l) => l.name === 'executor');
|
|
36
|
+
const reviewerLog = snapshot.logs.find((l) => l.name === 'reviewer');
|
|
37
|
+
const pendingPrds = snapshot.prds.filter((p) => p.status === 'ready' || p.status === 'blocked').length;
|
|
38
|
+
const claimedPrds = snapshot.prds.filter((p) => p.status === 'in-progress').length;
|
|
39
|
+
const donePrds = snapshot.prds.filter((p) => p.status === 'done').length;
|
|
42
40
|
const status = {
|
|
43
41
|
projectName: snapshot.projectName,
|
|
44
42
|
projectDir: snapshot.projectDir,
|
|
@@ -52,8 +50,22 @@ export function statusCommand(program) {
|
|
|
52
50
|
prs: { open: snapshot.prs.length },
|
|
53
51
|
crontab: snapshot.crontab,
|
|
54
52
|
logs: {
|
|
55
|
-
executor: executorLog
|
|
56
|
-
|
|
53
|
+
executor: executorLog
|
|
54
|
+
? {
|
|
55
|
+
path: executorLog.path,
|
|
56
|
+
lastLines: executorLog.lastLines,
|
|
57
|
+
exists: executorLog.exists,
|
|
58
|
+
size: executorLog.size,
|
|
59
|
+
}
|
|
60
|
+
: undefined,
|
|
61
|
+
reviewer: reviewerLog
|
|
62
|
+
? {
|
|
63
|
+
path: reviewerLog.path,
|
|
64
|
+
lastLines: reviewerLog.lastLines,
|
|
65
|
+
exists: reviewerLog.exists,
|
|
66
|
+
size: reviewerLog.size,
|
|
67
|
+
}
|
|
68
|
+
: undefined,
|
|
57
69
|
},
|
|
58
70
|
};
|
|
59
71
|
// Output as JSON if requested
|
|
@@ -64,78 +76,87 @@ export function statusCommand(program) {
|
|
|
64
76
|
// Print formatted status dashboard
|
|
65
77
|
console.log();
|
|
66
78
|
console.log(chalk.bold.cyan(`Night Watch Status: ${status.projectName}`));
|
|
67
|
-
console.log(chalk.dim(
|
|
79
|
+
console.log(chalk.dim('─'.repeat(40)));
|
|
68
80
|
console.log();
|
|
69
81
|
dim(`Project Directory: ${status.projectDir}`);
|
|
70
82
|
// Configuration section with table
|
|
71
|
-
header(
|
|
72
|
-
const configTable = createTable({ head: [
|
|
73
|
-
configTable.push([
|
|
74
|
-
configTable.push([
|
|
75
|
-
configTable.push([
|
|
83
|
+
header('Configuration');
|
|
84
|
+
const configTable = createTable({ head: ['Setting', 'Value'] });
|
|
85
|
+
configTable.push(['Provider', status.provider]);
|
|
86
|
+
configTable.push(['Reviewer', status.reviewerEnabled ? 'Enabled' : 'Disabled']);
|
|
87
|
+
configTable.push([
|
|
88
|
+
'Auto-merge',
|
|
89
|
+
status.autoMerge ? `Enabled (${status.autoMergeMethod})` : 'Disabled',
|
|
90
|
+
]);
|
|
76
91
|
console.log(configTable.toString());
|
|
77
92
|
// Process status section with colored indicators
|
|
78
|
-
header(
|
|
79
|
-
const processTable = createTable({ head: [
|
|
80
|
-
processTable.push([
|
|
81
|
-
|
|
93
|
+
header('Process Status');
|
|
94
|
+
const processTable = createTable({ head: ['Process', 'Status'] });
|
|
95
|
+
processTable.push([
|
|
96
|
+
'Executor',
|
|
97
|
+
formatRunningStatus(status.executor.running, status.executor.pid),
|
|
98
|
+
]);
|
|
99
|
+
processTable.push([
|
|
100
|
+
'Reviewer',
|
|
101
|
+
formatRunningStatus(status.reviewer.running, status.reviewer.pid),
|
|
102
|
+
]);
|
|
82
103
|
console.log(processTable.toString());
|
|
83
104
|
// PRD status section with table
|
|
84
|
-
header(
|
|
85
|
-
const prdTable = createTable({ head: [
|
|
86
|
-
prdTable.push([
|
|
87
|
-
prdTable.push([
|
|
88
|
-
prdTable.push([
|
|
105
|
+
header('PRD Status');
|
|
106
|
+
const prdTable = createTable({ head: ['Status', 'Count'] });
|
|
107
|
+
prdTable.push(['Pending', String(status.prds.pending)]);
|
|
108
|
+
prdTable.push(['Claimed', String(status.prds.claimed)]);
|
|
109
|
+
prdTable.push(['Completed', String(status.prds.done)]);
|
|
89
110
|
console.log(prdTable.toString());
|
|
90
111
|
// PR status section with table
|
|
91
|
-
header(
|
|
92
|
-
const prTable = createTable({ head: [
|
|
93
|
-
prTable.push([
|
|
112
|
+
header('PR Status');
|
|
113
|
+
const prTable = createTable({ head: ['Type', 'Count'] });
|
|
114
|
+
prTable.push(['Open PRs (night-watch/feat branches)', String(status.prs.open)]);
|
|
94
115
|
console.log(prTable.toString());
|
|
95
116
|
// Crontab status section with colored output
|
|
96
|
-
header(
|
|
117
|
+
header('Crontab Status');
|
|
97
118
|
console.log(` ${formatInstalledStatus(status.crontab.installed)}`);
|
|
98
119
|
if (status.crontab.installed && options.verbose) {
|
|
99
120
|
console.log();
|
|
100
|
-
dim(
|
|
121
|
+
dim(' Entries:');
|
|
101
122
|
status.crontab.entries.forEach((entry) => dim(` ${entry}`));
|
|
102
123
|
}
|
|
103
124
|
console.log();
|
|
104
125
|
// Log status section with table
|
|
105
|
-
header(
|
|
106
|
-
const logTable = createTable({ head: [
|
|
126
|
+
header('Log Files');
|
|
127
|
+
const logTable = createTable({ head: ['Log', 'Size', 'Status'] });
|
|
107
128
|
if (status.logs.executor) {
|
|
108
129
|
logTable.push([
|
|
109
|
-
|
|
110
|
-
status.logs.executor.exists ? formatBytes(status.logs.executor.size) :
|
|
111
|
-
status.logs.executor.exists ?
|
|
130
|
+
'Executor',
|
|
131
|
+
status.logs.executor.exists ? formatBytes(status.logs.executor.size) : '-',
|
|
132
|
+
status.logs.executor.exists ? 'Exists' : 'Not found',
|
|
112
133
|
]);
|
|
113
134
|
}
|
|
114
135
|
if (status.logs.reviewer) {
|
|
115
136
|
logTable.push([
|
|
116
|
-
|
|
117
|
-
status.logs.reviewer.exists ? formatBytes(status.logs.reviewer.size) :
|
|
118
|
-
status.logs.reviewer.exists ?
|
|
137
|
+
'Reviewer',
|
|
138
|
+
status.logs.reviewer.exists ? formatBytes(status.logs.reviewer.size) : '-',
|
|
139
|
+
status.logs.reviewer.exists ? 'Exists' : 'Not found',
|
|
119
140
|
]);
|
|
120
141
|
}
|
|
121
142
|
console.log(logTable.toString());
|
|
122
143
|
// Show last lines in verbose mode
|
|
123
144
|
if (options.verbose) {
|
|
124
145
|
if (status.logs.executor?.exists && status.logs.executor.lastLines.length > 0) {
|
|
125
|
-
dim(
|
|
146
|
+
dim(' Executor last 5 lines:');
|
|
126
147
|
status.logs.executor.lastLines.forEach((line) => dim(` ${line}`));
|
|
127
148
|
}
|
|
128
149
|
if (status.logs.reviewer?.exists && status.logs.reviewer.lastLines.length > 0) {
|
|
129
|
-
dim(
|
|
150
|
+
dim(' Reviewer last 5 lines:');
|
|
130
151
|
status.logs.reviewer.lastLines.forEach((line) => dim(` ${line}`));
|
|
131
152
|
}
|
|
132
153
|
}
|
|
133
154
|
// Tips section with dim styling
|
|
134
|
-
header(
|
|
135
|
-
dim(
|
|
136
|
-
dim(
|
|
137
|
-
dim(
|
|
138
|
-
dim(
|
|
155
|
+
header('Commands');
|
|
156
|
+
dim(' night-watch install - Install crontab entries');
|
|
157
|
+
dim(' night-watch logs - View logs');
|
|
158
|
+
dim(' night-watch run - Run executor now');
|
|
159
|
+
dim(' night-watch review - Run reviewer now');
|
|
139
160
|
console.log();
|
|
140
161
|
}
|
|
141
162
|
catch (error) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,gBAAgB,CA4ClB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0EvD"}
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
* Uninstall command for Night Watch CLI
|
|
3
3
|
* Removes crontab entries for the current project
|
|
4
4
|
*/
|
|
5
|
-
import * as path from
|
|
6
|
-
import * as fs from
|
|
7
|
-
import { generateMarker, getEntries, getProjectEntries, removeEntriesForProject, } from
|
|
8
|
-
import { dim, success, error as uiError, warn, } from "../utils/ui.js";
|
|
9
|
-
import { getProjectName } from "../utils/status-data.js";
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import { dim, generateMarker, getEntries, getProjectEntries, getProjectName, removeEntriesForProject, success, error as uiError, warn, } from '@night-watch/core';
|
|
10
8
|
/**
|
|
11
9
|
* Core uninstall logic, reusable from dashboard.
|
|
12
10
|
* Returns result without printing to console.
|
|
@@ -21,9 +19,9 @@ export function performUninstall(projectDir, options) {
|
|
|
21
19
|
}
|
|
22
20
|
const removedCount = removeEntriesForProject(projectDir, marker);
|
|
23
21
|
if (!options?.keepLogs) {
|
|
24
|
-
const logDir = path.join(projectDir,
|
|
22
|
+
const logDir = path.join(projectDir, 'logs');
|
|
25
23
|
if (fs.existsSync(logDir)) {
|
|
26
|
-
const logFiles = [
|
|
24
|
+
const logFiles = ['executor.log', 'reviewer.log', 'slicer.log', 'audit.log'];
|
|
27
25
|
logFiles.forEach((logFile) => {
|
|
28
26
|
const logPath = path.join(logDir, logFile);
|
|
29
27
|
if (fs.existsSync(logPath)) {
|
|
@@ -56,9 +54,9 @@ export function performUninstall(projectDir, options) {
|
|
|
56
54
|
*/
|
|
57
55
|
export function uninstallCommand(program) {
|
|
58
56
|
program
|
|
59
|
-
.command(
|
|
60
|
-
.description(
|
|
61
|
-
.option(
|
|
57
|
+
.command('uninstall')
|
|
58
|
+
.description('Remove crontab entries')
|
|
59
|
+
.option('--keep-logs', 'Preserve log files')
|
|
62
60
|
.action(async (options) => {
|
|
63
61
|
try {
|
|
64
62
|
// Get project directory
|
|
@@ -70,7 +68,7 @@ export function uninstallCommand(program) {
|
|
|
70
68
|
const existingEntries = Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)]));
|
|
71
69
|
if (existingEntries.length === 0) {
|
|
72
70
|
warn(`No Night Watch crontab entries found for ${projectName}.`);
|
|
73
|
-
dim(
|
|
71
|
+
dim('Nothing to uninstall.');
|
|
74
72
|
return;
|
|
75
73
|
}
|
|
76
74
|
// Show entries that will be removed
|
|
@@ -80,9 +78,9 @@ export function uninstallCommand(program) {
|
|
|
80
78
|
const removedCount = removeEntriesForProject(projectDir, marker);
|
|
81
79
|
// Handle log files
|
|
82
80
|
if (!options.keepLogs) {
|
|
83
|
-
const logDir = path.join(projectDir,
|
|
81
|
+
const logDir = path.join(projectDir, 'logs');
|
|
84
82
|
if (fs.existsSync(logDir)) {
|
|
85
|
-
const logFiles = [
|
|
83
|
+
const logFiles = ['executor.log', 'reviewer.log', 'slicer.log', 'audit.log'];
|
|
86
84
|
let logsRemoved = 0;
|
|
87
85
|
logFiles.forEach((logFile) => {
|
|
88
86
|
const logPath = path.join(logDir, logFile);
|
|
@@ -109,7 +107,7 @@ export function uninstallCommand(program) {
|
|
|
109
107
|
}
|
|
110
108
|
else {
|
|
111
109
|
console.log();
|
|
112
|
-
dim(
|
|
110
|
+
dim('Log files preserved.');
|
|
113
111
|
}
|
|
114
112
|
success(`Successfully removed ${removedCount} crontab entry/entries.`);
|
|
115
113
|
}
|