@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,548 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Status data layer for Night Watch CLI
|
|
3
|
-
* Provides data-fetching functions used by both the status command and the dashboard TUI.
|
|
4
|
-
*/
|
|
5
|
-
import { createHash } from "crypto";
|
|
6
|
-
import { execSync } from "child_process";
|
|
7
|
-
import * as fs from "fs";
|
|
8
|
-
import * as path from "path";
|
|
9
|
-
import { CLAIM_FILE_EXTENSION, LOCK_FILE_PREFIX, LOG_DIR, QA_LOG_NAME } from "../constants.js";
|
|
10
|
-
import { getPrdStatesForProject } from "./prd-states.js";
|
|
11
|
-
import { generateMarker, getEntries, getProjectEntries } from "./crontab.js";
|
|
12
|
-
/**
|
|
13
|
-
* Get the project name from directory or package.json
|
|
14
|
-
*/
|
|
15
|
-
export function getProjectName(projectDir) {
|
|
16
|
-
const packageJsonPath = path.join(projectDir, "package.json");
|
|
17
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
18
|
-
try {
|
|
19
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
20
|
-
if (packageJson.name) {
|
|
21
|
-
return packageJson.name;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// Ignore parse errors
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return path.basename(projectDir);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Compute the runtime key for a project directory.
|
|
32
|
-
* Must stay in sync with project_runtime_key() in night-watch-helpers.sh.
|
|
33
|
-
*/
|
|
34
|
-
export function projectRuntimeKey(projectDir) {
|
|
35
|
-
const projectName = path.basename(projectDir);
|
|
36
|
-
const hash = createHash("sha1").update(projectDir).digest("hex").slice(0, 12);
|
|
37
|
-
return `${projectName}-${hash}`;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Compute the lock file path for the executor of a given project directory.
|
|
41
|
-
*/
|
|
42
|
-
export function executorLockPath(projectDir) {
|
|
43
|
-
return `${LOCK_FILE_PREFIX}${projectRuntimeKey(projectDir)}.lock`;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Compute the lock file path for the reviewer of a given project directory.
|
|
47
|
-
*/
|
|
48
|
-
export function reviewerLockPath(projectDir) {
|
|
49
|
-
return `${LOCK_FILE_PREFIX}pr-reviewer-${projectRuntimeKey(projectDir)}.lock`;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Compute the lock file path for the code auditor of a given project directory.
|
|
53
|
-
*/
|
|
54
|
-
export function auditLockPath(projectDir) {
|
|
55
|
-
return `${LOCK_FILE_PREFIX}audit-${projectRuntimeKey(projectDir)}.lock`;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Check if a process with the given PID is running
|
|
59
|
-
*/
|
|
60
|
-
export function isProcessRunning(pid) {
|
|
61
|
-
try {
|
|
62
|
-
process.kill(pid, 0);
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Read PID from lock file and check if process is running
|
|
71
|
-
*/
|
|
72
|
-
export function checkLockFile(lockPath) {
|
|
73
|
-
if (!fs.existsSync(lockPath)) {
|
|
74
|
-
return { running: false, pid: null };
|
|
75
|
-
}
|
|
76
|
-
try {
|
|
77
|
-
const pidStr = fs.readFileSync(lockPath, "utf-8").trim();
|
|
78
|
-
const pid = parseInt(pidStr, 10);
|
|
79
|
-
if (isNaN(pid)) {
|
|
80
|
-
return { running: false, pid: null };
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
running: isProcessRunning(pid),
|
|
84
|
-
pid,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return { running: false, pid: null };
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Count PRDs in the PRD directory and return counts
|
|
93
|
-
*/
|
|
94
|
-
export function countPRDs(projectDir, prdDir, maxRuntime) {
|
|
95
|
-
const fullPrdPath = path.join(projectDir, prdDir);
|
|
96
|
-
if (!fs.existsSync(fullPrdPath)) {
|
|
97
|
-
return { pending: 0, claimed: 0, done: 0 };
|
|
98
|
-
}
|
|
99
|
-
let pending = 0;
|
|
100
|
-
let claimed = 0;
|
|
101
|
-
let done = 0;
|
|
102
|
-
const countInDir = (dir) => {
|
|
103
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
104
|
-
for (const entry of entries) {
|
|
105
|
-
const fullPath = path.join(dir, entry.name);
|
|
106
|
-
if (entry.isDirectory()) {
|
|
107
|
-
if (entry.name === "done") {
|
|
108
|
-
try {
|
|
109
|
-
const doneEntries = fs.readdirSync(fullPath);
|
|
110
|
-
done += doneEntries.filter((e) => e.endsWith(".md")).length;
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
// Ignore errors
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
countInDir(fullPath);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else if (entry.name.endsWith(".md")) {
|
|
121
|
-
const claimPath = path.join(dir, entry.name + CLAIM_FILE_EXTENSION);
|
|
122
|
-
if (fs.existsSync(claimPath)) {
|
|
123
|
-
try {
|
|
124
|
-
const content = fs.readFileSync(claimPath, "utf-8");
|
|
125
|
-
const claimData = JSON.parse(content);
|
|
126
|
-
const age = Math.floor(Date.now() / 1000) - claimData.timestamp;
|
|
127
|
-
if (age < maxRuntime) {
|
|
128
|
-
claimed++;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
pending++;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
pending++;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
pending++;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
try {
|
|
145
|
-
countInDir(fullPrdPath);
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
// Ignore errors
|
|
149
|
-
}
|
|
150
|
-
return { pending, claimed, done };
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Parse dependency references from a PRD file.
|
|
154
|
-
* Looks for a line matching "depends on: `name1`, `name2`" (case-insensitive).
|
|
155
|
-
*/
|
|
156
|
-
export function parsePrdDependencies(prdPath) {
|
|
157
|
-
try {
|
|
158
|
-
const content = fs.readFileSync(prdPath, "utf-8");
|
|
159
|
-
// Match "Depends on:" with optional bold markdown, capture rest of line
|
|
160
|
-
const match = content.match(/(?:\*\*)?Depends on:(?:\*\*)?[^\S\n]*([^\n]*)/i);
|
|
161
|
-
if (!match)
|
|
162
|
-
return [];
|
|
163
|
-
return match[1]
|
|
164
|
-
.split(",")
|
|
165
|
-
.map((d) => d.replace(/`/g, "").replace(/\*\*/g, "").replace(/\|/g, "").trim())
|
|
166
|
-
.filter((d) => d.length > 0);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
return [];
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Collect PRD info items from the PRD directory
|
|
174
|
-
* Cross-validates claim files with executor lock to avoid stale "in-progress" status
|
|
175
|
-
*/
|
|
176
|
-
export function collectPrdInfo(projectDir, prdDir, maxRuntime) {
|
|
177
|
-
const fullPrdPath = path.join(projectDir, prdDir);
|
|
178
|
-
const prds = [];
|
|
179
|
-
if (!fs.existsSync(fullPrdPath)) {
|
|
180
|
-
return prds;
|
|
181
|
-
}
|
|
182
|
-
// Pre-check executor lock for cross-validation
|
|
183
|
-
const lockPath = executorLockPath(projectDir);
|
|
184
|
-
const executorLock = checkLockFile(lockPath);
|
|
185
|
-
// Track orphaned claim files to clean up
|
|
186
|
-
const orphanedClaimFiles = [];
|
|
187
|
-
const collectInDir = (dir) => {
|
|
188
|
-
let entries;
|
|
189
|
-
try {
|
|
190
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
for (const entry of entries) {
|
|
196
|
-
const fullPath = path.join(dir, entry.name);
|
|
197
|
-
if (entry.isDirectory()) {
|
|
198
|
-
if (entry.name === "done") {
|
|
199
|
-
try {
|
|
200
|
-
const doneEntries = fs.readdirSync(fullPath);
|
|
201
|
-
for (const doneEntry of doneEntries) {
|
|
202
|
-
if (doneEntry.endsWith(".md")) {
|
|
203
|
-
prds.push({
|
|
204
|
-
name: doneEntry.replace(/\.md$/, ""),
|
|
205
|
-
status: "done",
|
|
206
|
-
dependencies: [],
|
|
207
|
-
unmetDependencies: [],
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
catch {
|
|
213
|
-
// Ignore errors
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
collectInDir(fullPath);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
else if (entry.name.endsWith(".md")) {
|
|
221
|
-
const claimPath = path.join(dir, entry.name + CLAIM_FILE_EXTENSION);
|
|
222
|
-
let status = "ready";
|
|
223
|
-
if (fs.existsSync(claimPath)) {
|
|
224
|
-
try {
|
|
225
|
-
const content = fs.readFileSync(claimPath, "utf-8");
|
|
226
|
-
const claimData = JSON.parse(content);
|
|
227
|
-
const age = Math.floor(Date.now() / 1000) - claimData.timestamp;
|
|
228
|
-
if (age < maxRuntime) {
|
|
229
|
-
// Cross-check: verify executor lock exists and is running
|
|
230
|
-
if (executorLock.running) {
|
|
231
|
-
status = "in-progress";
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
// Claim is fresh but executor is not running - stale/orphaned claim
|
|
235
|
-
status = "ready";
|
|
236
|
-
orphanedClaimFiles.push(claimPath);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
// else: stale claim (too old) — status stays "ready"
|
|
240
|
-
}
|
|
241
|
-
catch {
|
|
242
|
-
status = "ready";
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
const dependencies = parsePrdDependencies(fullPath);
|
|
246
|
-
prds.push({
|
|
247
|
-
name: entry.name.replace(/\.md$/, ""),
|
|
248
|
-
status,
|
|
249
|
-
dependencies,
|
|
250
|
-
unmetDependencies: [],
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
collectInDir(fullPrdPath);
|
|
256
|
-
// Clean up orphaned claim files
|
|
257
|
-
for (const claimFile of orphanedClaimFiles) {
|
|
258
|
-
try {
|
|
259
|
-
fs.unlinkSync(claimFile);
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
// Ignore errors during cleanup
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
// Overlay pending-review state from ~/.night-watch/prd-states.json
|
|
266
|
-
// PRD files stay in place; state is tracked separately
|
|
267
|
-
const prdStates = getPrdStatesForProject(projectDir);
|
|
268
|
-
for (const prd of prds) {
|
|
269
|
-
if (prdStates[prd.name]?.status === "pending-review" && prd.status !== "done" && prd.status !== "in-progress") {
|
|
270
|
-
prd.status = "pending-review";
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
// Compute unmet dependencies: a dependency is unmet if there's no "done" PRD with that name
|
|
274
|
-
const doneNames = new Set(prds.filter((p) => p.status === "done").map((p) => p.name));
|
|
275
|
-
for (const prd of prds) {
|
|
276
|
-
if (prd.dependencies.length > 0) {
|
|
277
|
-
prd.unmetDependencies = prd.dependencies.filter((dep) => !doneNames.has(dep) && !doneNames.has(dep.replace(/\.md$/, "")));
|
|
278
|
-
// Mark PRDs with unmet dependencies as blocked (unless already done or in-progress)
|
|
279
|
-
if (prd.unmetDependencies.length > 0 && prd.status === "ready") {
|
|
280
|
-
prd.status = "blocked";
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return prds;
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Count open PRs on night-watch/ or feat/ branches using gh CLI
|
|
288
|
-
*/
|
|
289
|
-
export function countOpenPRs(projectDir, branchPatterns) {
|
|
290
|
-
try {
|
|
291
|
-
execSync("git rev-parse --git-dir", {
|
|
292
|
-
cwd: projectDir,
|
|
293
|
-
encoding: "utf-8",
|
|
294
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
295
|
-
});
|
|
296
|
-
try {
|
|
297
|
-
execSync("which gh", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
return 0;
|
|
301
|
-
}
|
|
302
|
-
const output = execSync("gh pr list --state open --json headRefName,number", {
|
|
303
|
-
cwd: projectDir,
|
|
304
|
-
encoding: "utf-8",
|
|
305
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
306
|
-
});
|
|
307
|
-
const prs = JSON.parse(output);
|
|
308
|
-
const matchingPRs = prs.filter((pr) => branchPatterns.some((pattern) => pr.headRefName.startsWith(pattern)));
|
|
309
|
-
return matchingPRs.length;
|
|
310
|
-
}
|
|
311
|
-
catch {
|
|
312
|
-
return 0;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Derive CI status from gh statusCheckRollup data
|
|
317
|
-
* Supports both CheckRun (status: "COMPLETED", "IN_PROGRESS", etc.)
|
|
318
|
-
* and StatusContext (state: "SUCCESS", "FAILURE", "PENDING", etc.) types
|
|
319
|
-
* Also handles nested contexts array structures from some GitHub API versions
|
|
320
|
-
*/
|
|
321
|
-
function deriveCiStatus(checks) {
|
|
322
|
-
if (!checks || checks.length === 0)
|
|
323
|
-
return "unknown";
|
|
324
|
-
// Flatten any nested contexts arrays (GitHub may wrap checks in a contexts array)
|
|
325
|
-
const flattenedChecks = [];
|
|
326
|
-
for (const check of checks) {
|
|
327
|
-
// Check if this is a wrapper with nested contexts
|
|
328
|
-
if (check.contexts && Array.isArray(check.contexts) && check.contexts.length > 0) {
|
|
329
|
-
// Extract checks from nested contexts
|
|
330
|
-
for (const ctx of check.contexts) {
|
|
331
|
-
if (typeof ctx === "object" && ctx !== null) {
|
|
332
|
-
flattenedChecks.push(ctx);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
// Regular check, use as-is
|
|
338
|
-
flattenedChecks.push(check);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
if (flattenedChecks.length === 0)
|
|
342
|
-
return "unknown";
|
|
343
|
-
// Debug logging when DEBUG_PR_DATA is set
|
|
344
|
-
if (process.env.DEBUG_PR_DATA === "1") {
|
|
345
|
-
console.error("[DEBUG] deriveCiStatus input checks:", JSON.stringify(checks, null, 2));
|
|
346
|
-
console.error("[DEBUG] deriveCiStatus flattened checks:", JSON.stringify(flattenedChecks, null, 2));
|
|
347
|
-
}
|
|
348
|
-
// Check for failures in CheckRun conclusion or StatusContext state
|
|
349
|
-
const hasFailure = flattenedChecks.some((c) => {
|
|
350
|
-
const conclusion = c.conclusion?.toUpperCase();
|
|
351
|
-
const state = c.state?.toUpperCase();
|
|
352
|
-
return (conclusion === "FAILURE" ||
|
|
353
|
-
conclusion === "ERROR" ||
|
|
354
|
-
conclusion === "CANCELLED" ||
|
|
355
|
-
conclusion === "TIMED_OUT" ||
|
|
356
|
-
state === "FAILURE" ||
|
|
357
|
-
state === "ERROR");
|
|
358
|
-
});
|
|
359
|
-
if (hasFailure)
|
|
360
|
-
return "fail";
|
|
361
|
-
// Check if all checks are complete (CheckRun uses status, StatusContext uses state)
|
|
362
|
-
const allComplete = flattenedChecks.every((c) => {
|
|
363
|
-
const status = c.status?.toUpperCase();
|
|
364
|
-
const state = c.state?.toUpperCase();
|
|
365
|
-
const conclusion = c.conclusion?.toUpperCase();
|
|
366
|
-
// CheckRun: status === "COMPLETED" or conclusion === "SUCCESS"/"FAILURE"
|
|
367
|
-
// StatusContext: state === "SUCCESS" or "FAILURE" (not PENDING)
|
|
368
|
-
return (status === "COMPLETED" ||
|
|
369
|
-
state === "SUCCESS" ||
|
|
370
|
-
state === "FAILURE" ||
|
|
371
|
-
conclusion === "SUCCESS" ||
|
|
372
|
-
conclusion === "FAILURE" ||
|
|
373
|
-
conclusion === "NEUTRAL" ||
|
|
374
|
-
conclusion === "SKIPPED");
|
|
375
|
-
});
|
|
376
|
-
if (allComplete)
|
|
377
|
-
return "pass";
|
|
378
|
-
return "pending";
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Derive review score from gh reviewDecision field
|
|
382
|
-
* Maps GitHub review decisions to a numeric score (0-100)
|
|
383
|
-
* Returns null if no review has been submitted or review is required
|
|
384
|
-
*/
|
|
385
|
-
function deriveReviewScore(reviewDecision) {
|
|
386
|
-
// Debug logging when DEBUG_PR_DATA is set
|
|
387
|
-
if (process.env.DEBUG_PR_DATA === "1") {
|
|
388
|
-
console.error("[DEBUG] deriveReviewScore input:", JSON.stringify(reviewDecision));
|
|
389
|
-
}
|
|
390
|
-
// reviewDecision can be null, undefined, or empty string (meaning no review yet)
|
|
391
|
-
if (!reviewDecision || reviewDecision === "")
|
|
392
|
-
return null;
|
|
393
|
-
const decision = String(reviewDecision).toUpperCase();
|
|
394
|
-
switch (decision) {
|
|
395
|
-
case "APPROVED":
|
|
396
|
-
return 100;
|
|
397
|
-
case "CHANGES_REQUESTED":
|
|
398
|
-
return 0;
|
|
399
|
-
case "REVIEW_REQUIRED":
|
|
400
|
-
return null;
|
|
401
|
-
default:
|
|
402
|
-
// Log unexpected values for debugging
|
|
403
|
-
if (process.env.DEBUG_PR_DATA === "1") {
|
|
404
|
-
console.error(`[DEBUG] deriveReviewScore: unexpected value '${reviewDecision}'`);
|
|
405
|
-
}
|
|
406
|
-
return null;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* Collect open PR info using gh CLI
|
|
411
|
-
*/
|
|
412
|
-
export function collectPrInfo(projectDir, branchPatterns) {
|
|
413
|
-
try {
|
|
414
|
-
execSync("git rev-parse --git-dir", {
|
|
415
|
-
cwd: projectDir,
|
|
416
|
-
encoding: "utf-8",
|
|
417
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
418
|
-
});
|
|
419
|
-
try {
|
|
420
|
-
execSync("which gh", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
|
|
421
|
-
}
|
|
422
|
-
catch {
|
|
423
|
-
return [];
|
|
424
|
-
}
|
|
425
|
-
const output = execSync("gh pr list --state open --json headRefName,number,title,url,statusCheckRollup,reviewDecision", {
|
|
426
|
-
cwd: projectDir,
|
|
427
|
-
encoding: "utf-8",
|
|
428
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
429
|
-
});
|
|
430
|
-
// Debug logging when DEBUG_PR_DATA is set
|
|
431
|
-
if (process.env.DEBUG_PR_DATA === "1") {
|
|
432
|
-
console.error("[DEBUG] Raw gh pr list output:", output);
|
|
433
|
-
}
|
|
434
|
-
const prs = JSON.parse(output);
|
|
435
|
-
return prs
|
|
436
|
-
.filter((pr) => branchPatterns.some((pattern) => pr.headRefName.startsWith(pattern)))
|
|
437
|
-
.map((pr) => {
|
|
438
|
-
// Debug log each PR's statusCheckRollup and reviewDecision
|
|
439
|
-
if (process.env.DEBUG_PR_DATA === "1") {
|
|
440
|
-
console.error(`[DEBUG] PR #${pr.number}:`);
|
|
441
|
-
console.error(`[DEBUG] statusCheckRollup:`, JSON.stringify(pr.statusCheckRollup, null, 2));
|
|
442
|
-
console.error(`[DEBUG] reviewDecision:`, JSON.stringify(pr.reviewDecision));
|
|
443
|
-
}
|
|
444
|
-
return {
|
|
445
|
-
number: pr.number,
|
|
446
|
-
title: pr.title,
|
|
447
|
-
branch: pr.headRefName,
|
|
448
|
-
url: pr.url,
|
|
449
|
-
ciStatus: deriveCiStatus(pr.statusCheckRollup),
|
|
450
|
-
reviewScore: deriveReviewScore(pr.reviewDecision),
|
|
451
|
-
};
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
catch {
|
|
455
|
-
return [];
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Get last N lines from a log file
|
|
460
|
-
*/
|
|
461
|
-
export function getLastLogLines(logPath, lines) {
|
|
462
|
-
if (!fs.existsSync(logPath)) {
|
|
463
|
-
return [];
|
|
464
|
-
}
|
|
465
|
-
try {
|
|
466
|
-
const content = fs.readFileSync(logPath, "utf-8");
|
|
467
|
-
const allLines = content.trim().split("\n");
|
|
468
|
-
return allLines.slice(-lines);
|
|
469
|
-
}
|
|
470
|
-
catch {
|
|
471
|
-
return [];
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
/**
|
|
475
|
-
* Get log file info
|
|
476
|
-
*/
|
|
477
|
-
export function getLogInfo(logPath, lastLines = 5) {
|
|
478
|
-
const exists = fs.existsSync(logPath);
|
|
479
|
-
return {
|
|
480
|
-
path: logPath,
|
|
481
|
-
lastLines: exists ? getLastLogLines(logPath, lastLines) : [],
|
|
482
|
-
exists,
|
|
483
|
-
size: exists ? fs.statSync(logPath).size : 0,
|
|
484
|
-
};
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Collect log info as ILogInfo items
|
|
488
|
-
*/
|
|
489
|
-
export function collectLogInfo(projectDir) {
|
|
490
|
-
const logEntries = [
|
|
491
|
-
{ name: "executor", fileName: "executor.log" },
|
|
492
|
-
{ name: "reviewer", fileName: "reviewer.log" },
|
|
493
|
-
{ name: "qa", fileName: `${QA_LOG_NAME}.log` },
|
|
494
|
-
];
|
|
495
|
-
return logEntries.map(({ name, fileName }) => {
|
|
496
|
-
const logPath = path.join(projectDir, LOG_DIR, fileName);
|
|
497
|
-
const exists = fs.existsSync(logPath);
|
|
498
|
-
return {
|
|
499
|
-
name,
|
|
500
|
-
path: logPath,
|
|
501
|
-
exists,
|
|
502
|
-
size: exists ? fs.statSync(logPath).size : 0,
|
|
503
|
-
lastLines: exists ? getLastLogLines(logPath, 5) : [],
|
|
504
|
-
};
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
/**
|
|
508
|
-
* Get crontab information for a project
|
|
509
|
-
*/
|
|
510
|
-
export function getCrontabInfo(projectName, projectDir) {
|
|
511
|
-
const marker = generateMarker(projectName);
|
|
512
|
-
const crontabEntries = Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)]));
|
|
513
|
-
return {
|
|
514
|
-
installed: crontabEntries.length > 0,
|
|
515
|
-
entries: crontabEntries,
|
|
516
|
-
};
|
|
517
|
-
}
|
|
518
|
-
/**
|
|
519
|
-
* Fetch a complete status snapshot for the given project
|
|
520
|
-
*/
|
|
521
|
-
export function fetchStatusSnapshot(projectDir, config) {
|
|
522
|
-
const projectName = getProjectName(projectDir);
|
|
523
|
-
const executorLock = checkLockFile(executorLockPath(projectDir));
|
|
524
|
-
const reviewerLock = checkLockFile(reviewerLockPath(projectDir));
|
|
525
|
-
const processes = [
|
|
526
|
-
{ name: "executor", running: executorLock.running, pid: executorLock.pid },
|
|
527
|
-
{ name: "reviewer", running: reviewerLock.running, pid: reviewerLock.pid },
|
|
528
|
-
];
|
|
529
|
-
const prds = collectPrdInfo(projectDir, config.prdDir, config.maxRuntime);
|
|
530
|
-
const prs = collectPrInfo(projectDir, config.branchPatterns);
|
|
531
|
-
const logs = collectLogInfo(projectDir);
|
|
532
|
-
const crontab = getCrontabInfo(projectName, projectDir);
|
|
533
|
-
// Find any PRD with a fresh, lock-corroborated in-progress status
|
|
534
|
-
const activePrd = prds.find((p) => p.status === "in-progress")?.name ?? null;
|
|
535
|
-
return {
|
|
536
|
-
projectName,
|
|
537
|
-
projectDir,
|
|
538
|
-
config,
|
|
539
|
-
prds,
|
|
540
|
-
processes,
|
|
541
|
-
prs,
|
|
542
|
-
logs,
|
|
543
|
-
crontab,
|
|
544
|
-
activePrd,
|
|
545
|
-
timestamp: new Date(),
|
|
546
|
-
};
|
|
547
|
-
}
|
|
548
|
-
//# sourceMappingURL=status-data.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status-data.js","sourceRoot":"","sources":["../../../src/utils/status-data.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils/ui.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UI utilities for Night Watch CLI
|
|
3
|
-
* Provides colored output, spinners, and table formatting
|
|
4
|
-
*/
|
|
5
|
-
import { type Ora } from "ora";
|
|
6
|
-
import Table from "cli-table3";
|
|
7
|
-
/**
|
|
8
|
-
* Print a success message with green check prefix
|
|
9
|
-
*/
|
|
10
|
-
export declare function success(msg: string): void;
|
|
11
|
-
/**
|
|
12
|
-
* Print an error message with red cross prefix
|
|
13
|
-
*/
|
|
14
|
-
export declare function error(msg: string): void;
|
|
15
|
-
/**
|
|
16
|
-
* Print a warning message with yellow warning prefix
|
|
17
|
-
*/
|
|
18
|
-
export declare function warn(msg: string): void;
|
|
19
|
-
/**
|
|
20
|
-
* Print an info message with cyan info prefix
|
|
21
|
-
*/
|
|
22
|
-
export declare function info(msg: string): void;
|
|
23
|
-
/**
|
|
24
|
-
* Print a bold section header with underline
|
|
25
|
-
*/
|
|
26
|
-
export declare function header(title: string): void;
|
|
27
|
-
/**
|
|
28
|
-
* Print dimmed text for secondary information
|
|
29
|
-
*/
|
|
30
|
-
export declare function dim(msg: string): void;
|
|
31
|
-
/**
|
|
32
|
-
* Format and print a key-value pair with consistent alignment
|
|
33
|
-
*/
|
|
34
|
-
export declare function label(key: string, value: string): void;
|
|
35
|
-
/**
|
|
36
|
-
* Create an ora spinner instance
|
|
37
|
-
*/
|
|
38
|
-
export declare function createSpinner(text: string): Ora;
|
|
39
|
-
/**
|
|
40
|
-
* Create a configured cli-table3 instance with sensible defaults
|
|
41
|
-
*/
|
|
42
|
-
export declare function createTable(options?: Table.TableConstructorOptions): Table.Table;
|
|
43
|
-
/**
|
|
44
|
-
* Format status indicator: green running or dim not running
|
|
45
|
-
*/
|
|
46
|
-
export declare function formatRunningStatus(running: boolean, pid: number | null): string;
|
|
47
|
-
/**
|
|
48
|
-
* Format installed status: green installed or yellow not installed
|
|
49
|
-
*/
|
|
50
|
-
export declare function formatInstalledStatus(installed: boolean): string;
|
|
51
|
-
/**
|
|
52
|
-
* Print a step message with step number
|
|
53
|
-
*/
|
|
54
|
-
export declare function step(current: number, total: number, msg: string): void;
|
|
55
|
-
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/utils/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1C;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAK/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,KAAK,CA4BhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAKhE;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtE"}
|