claude-code-session-manager 0.111.0 → 0.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/dist/assets/{AgentLibrary-rBO1daqM.js → AgentLibrary-wvrcLGGS.js} +2 -2
  3. package/dist/assets/{Button-DsEYRZg0.js → Button-B6h0F0XT.js} +1 -1
  4. package/dist/assets/{DataModel-D8sbvvBC.js → DataModel-C5pW9E3u.js} +1 -1
  5. package/dist/assets/{History-BEHLtxia.js → History-BV4e8YOM.js} +2 -2
  6. package/dist/assets/{Hooks-CKpvlXrg.js → Hooks-CrFSv4x1.js} +3 -3
  7. package/dist/assets/{Library-CeF4qh9d.js → Library-D-GIt3EY.js} +5 -5
  8. package/dist/assets/{ListDetail-DcfmxPFk.js → ListDetail-Bco_wfs6.js} +1 -1
  9. package/dist/assets/{MarkdownEditor-CvK1pyto.js → MarkdownEditor-C-yHSXNV.js} +1 -1
  10. package/dist/assets/{McpServers-D-h2ihzJ.js → McpServers-CfDekadG.js} +2 -2
  11. package/dist/assets/{Memory-BnF89x8v.js → Memory-CGGLexkR.js} +4 -4
  12. package/dist/assets/{Panel-CQY5zano.js → Panel-DGMEuYYG.js} +1 -1
  13. package/dist/assets/{Permissions-DLukmmsz.js → Permissions-Cx2zjtYZ.js} +3 -3
  14. package/dist/assets/{Plugins-0Pf0OZ4l.js → Plugins-Bc_W3IyR.js} +2 -2
  15. package/dist/assets/ProvenanceBadge-DiKAUR1u.js +1 -0
  16. package/dist/assets/RemoteMachines-8_77-WPD.js +3 -0
  17. package/dist/assets/{SaveBar-DjijiUb0.js → SaveBar-Blpzdq1R.js} +1 -1
  18. package/dist/assets/{Scheduler-Cm3EXZvE.js → Scheduler-Bd70AM4X.js} +9 -9
  19. package/dist/assets/{ScopeSwitcher-B-P-kSfq.js → ScopeSwitcher-wxN0h4YW.js} +1 -1
  20. package/dist/assets/Settings-CQ7DA3zW.js +4 -0
  21. package/dist/assets/{SkillReferenceGraph-Epv2GJmj.js → SkillReferenceGraph-DH1NLOiS.js} +1 -1
  22. package/dist/assets/Skills-CmyRyu4_.js +2 -0
  23. package/dist/assets/SystemPrompt-KAc3UMCd.js +1 -0
  24. package/dist/assets/TagLibrary-C8EvHnpg.js +1 -0
  25. package/dist/assets/{TiptapBody-DAMO3DhO.js → TiptapBody-d423mH6D.js} +1 -1
  26. package/dist/assets/{Toggle-Ba_f7q_m.js → Toggle-D1wsGE9S.js} +1 -1
  27. package/dist/assets/{ViewTabs-CGX6MAhc.js → ViewTabs-CjHw3kGY.js} +1 -1
  28. package/dist/assets/{historyTotals-vgfk8EOL.js → historyTotals-DFHzqLt7.js} +1 -1
  29. package/dist/assets/{index-CPieAFsl.js → index-Ci1u018F.js} +266 -266
  30. package/dist/assets/{settingsSchema-D0FxNrTy.js → settingsSchema-Ctf3pZVI.js} +1 -1
  31. package/dist/assets/{useAgentsDirWatch-DCu6BNYN.js → useAgentsDirWatch-B1NBmOAe.js} +1 -1
  32. package/dist/assets/{useRemotePeers-D4cdJDyh.js → useRemotePeers-BHjSJs9D.js} +1 -1
  33. package/dist/index.html +1 -1
  34. package/package.json +3 -2
  35. package/plugins/CLAUDE.md +5 -8
  36. package/plugins/session-manager-dev/.claude-plugin/plugin.json +3 -6
  37. package/plugins/session-manager-dev/skills/builder/1-classify-and-bump/SKILL.md +2 -2
  38. package/plugins/session-manager-dev/skills/builder/SKILL.md +2 -3
  39. package/plugins/session-manager-dev/skills/develop/SKILL.md +1 -1
  40. package/plugins/session-manager-dev/skills/develop/standards.md +3 -3
  41. package/plugins/session-manager-dev/skills/send-feedback/SKILL.md +13 -0
  42. package/scripts/README.md +3 -3
  43. package/scripts/audit-ops-hygiene.cjs +4 -4
  44. package/scripts/hooks/guard-destructive-git.cjs +4 -4
  45. package/scripts/hooks/guard-inline-implementation.cjs +1 -1
  46. package/scripts/hooks/guard-prd-writes.cjs +2 -2
  47. package/scripts/hooks/lib/guard-destructive-git-policy.cjs +1 -1
  48. package/scripts/mint-epic.cjs +2 -2
  49. package/scripts/scheduler-mcp-server.cjs +27 -9
  50. package/src/main/agentLibrary.cjs +5 -5
  51. package/src/main/agentsIpc.cjs +76 -0
  52. package/src/main/build-info.json +4 -4
  53. package/src/main/chatRunner.cjs +30 -13
  54. package/src/main/config.cjs +20 -3
  55. package/src/main/crashDiagnostics.cjs +2 -2
  56. package/src/main/docEdit.cjs +5 -5
  57. package/src/main/files.cjs +2 -2
  58. package/src/main/git.cjs +1 -1
  59. package/src/main/health.cjs +20 -18
  60. package/src/main/heapSnapshot.cjs +1 -1
  61. package/src/main/historyAggregator.cjs +2 -2
  62. package/src/main/index.cjs +50 -132
  63. package/src/main/ipcSchemas.cjs +13 -10
  64. package/src/main/lib/CLAUDE.md +48 -0
  65. package/src/main/lib/activeSessions.cjs +14 -1
  66. package/src/main/lib/classifyPromptTicket.cjs +2 -2
  67. package/src/main/lib/{agentModelResolve.cjs → claude/agentModelResolve.cjs} +7 -7
  68. package/src/main/lib/{claudeBin.cjs → claude/claudeBin.cjs} +4 -4
  69. package/src/main/lib/{effectiveModelInfo.cjs → claude/effectiveModelInfo.cjs} +9 -9
  70. package/src/main/lib/{modelCatalog.cjs → claude/modelCatalog.cjs} +3 -3
  71. package/src/main/lib/claude/rateLimitDetect.cjs +54 -0
  72. package/src/main/lib/{rateLimitWindow.cjs → claude/rateLimitWindow.cjs} +24 -12
  73. package/src/main/lib/{runClaudeP.cjs → claude/runClaudeP.cjs} +1 -1
  74. package/src/main/lib/credentials.cjs +18 -92
  75. package/src/main/lib/cwdClassify.cjs +1 -1
  76. package/src/main/lib/{activeIndexMerge.cjs → epic/activeIndexMerge.cjs} +3 -3
  77. package/src/main/lib/{activeIndexRebuild.cjs → epic/activeIndexRebuild.cjs} +1 -1
  78. package/src/main/lib/{delegationReadiness.cjs → epic/delegationReadiness.cjs} +21 -29
  79. package/src/main/lib/{epicContextDigest.cjs → epic/epicContextDigest.cjs} +1 -1
  80. package/src/main/lib/{epicDelegationStats.cjs → epic/epicDelegationStats.cjs} +2 -2
  81. package/src/main/lib/{epicMint.cjs → epic/epicMint.cjs} +11 -11
  82. package/src/main/lib/{epicSpawnPlan.cjs → epic/epicSpawnPlan.cjs} +3 -3
  83. package/src/main/lib/{epicStatusMirror.cjs → epic/epicStatusMirror.cjs} +2 -2
  84. package/src/main/lib/{epicTranscriptDiagnostic.cjs → epic/epicTranscriptDiagnostic.cjs} +2 -2
  85. package/src/main/lib/{epicTranscriptPath.cjs → epic/epicTranscriptPath.cjs} +2 -2
  86. package/src/main/lib/{epicValidationHook.cjs → epic/epicValidationHook.cjs} +3 -3
  87. package/src/main/lib/{epicWorktreeBoot.cjs → epic/epicWorktreeBoot.cjs} +1 -1
  88. package/src/main/lib/{epicWorktreeMerge.cjs → epic/epicWorktreeMerge.cjs} +3 -3
  89. package/src/main/lib/{epicWorktreeMint.cjs → epic/epicWorktreeMint.cjs} +3 -3
  90. package/src/main/lib/{epicWorktreeProjectConfig.cjs → epic/epicWorktreeProjectConfig.cjs} +4 -4
  91. package/src/main/lib/{promptSessionsCreateEpic.cjs → epic/promptSessionsCreateEpic.cjs} +4 -4
  92. package/src/main/lib/{crossProjectFeedback.cjs → feedback-remote/crossProjectFeedback.cjs} +114 -16
  93. package/src/main/lib/{customerFeedbackClient.cjs → feedback-remote/customerFeedbackClient.cjs} +3 -3
  94. package/src/main/lib/{customerFeedbackInbox.cjs → feedback-remote/customerFeedbackInbox.cjs} +2 -2
  95. package/src/main/lib/{customerFeedbackIpc.cjs → feedback-remote/customerFeedbackIpc.cjs} +1 -1
  96. package/src/main/lib/feedback-remote/humanPromptLedger.cjs +93 -0
  97. package/src/main/lib/{localAdminHttp.cjs → feedback-remote/localAdminHttp.cjs} +2 -2
  98. package/src/main/lib/{macroAdminRoutes.cjs → feedback-remote/macroAdminRoutes.cjs} +1 -1
  99. package/src/main/lib/{projectHomeAdminRoutes.cjs → feedback-remote/projectHomeAdminRoutes.cjs} +4 -4
  100. package/src/main/lib/{relayClientAuth.cjs → feedback-remote/relayClientAuth.cjs} +2 -2
  101. package/src/main/lib/{remoteClientSessions.cjs → feedback-remote/remoteClientSessions.cjs} +1 -1
  102. package/src/main/lib/{gitWorktree.cjs → git/gitWorktree.cjs} +7 -7
  103. package/src/main/lib/historyRollup.cjs +1 -1
  104. package/src/main/lib/importReferences.cjs +1 -1
  105. package/src/main/lib/machineProfile.cjs +1 -1
  106. package/src/main/lib/mcpToolCatalog.cjs +9 -3
  107. package/src/main/lib/openExternalApp.cjs +1 -1
  108. package/src/main/lib/opsOwnership.cjs +3 -3
  109. package/src/main/lib/{agentPersonaSchema.cjs → persona-macro/agentPersonaSchema.cjs} +2 -2
  110. package/src/main/lib/{macroLibrary.cjs → persona-macro/macroLibrary.cjs} +5 -5
  111. package/src/main/lib/{personaMerge.cjs → persona-macro/personaMerge.cjs} +4 -4
  112. package/src/main/lib/{depSlugResolve.cjs → prd/depSlugResolve.cjs} +16 -1
  113. package/src/main/lib/{prdAdminRoutes.cjs → prd/prdAdminRoutes.cjs} +7 -7
  114. package/src/main/lib/{prdAgentType.cjs → prd/prdAgentType.cjs} +3 -3
  115. package/src/main/lib/{prdCreate.cjs → prd/prdCreate.cjs} +12 -12
  116. package/src/main/lib/{prdDeclaredPaths.cjs → prd/prdDeclaredPaths.cjs} +1 -1
  117. package/src/main/lib/{prdGateFiles.cjs → prd/prdGateFiles.cjs} +1 -1
  118. package/src/main/lib/{prdLocations.cjs → prd/prdLocations.cjs} +2 -2
  119. package/src/main/lib/{prdMigration.cjs → prd/prdMigration.cjs} +3 -3
  120. package/src/main/lib/prereqs.cjs +2 -2
  121. package/src/main/lib/{instanceLock.cjs → process/instanceLock.cjs} +4 -11
  122. package/src/main/lib/{pidAlive.cjs → process/pidAlive.cjs} +1 -1
  123. package/src/main/lib/{procName.cjs → process/procName.cjs} +2 -2
  124. package/src/main/lib/{timeoutShim.cjs → process/timeoutShim.cjs} +1 -1
  125. package/src/main/lib/projectRootResolve.cjs +1 -1
  126. package/src/main/lib/promptSessionSchema.cjs +1 -1
  127. package/src/main/lib/{definitionOfDone.cjs → scheduler/definitionOfDone.cjs} +6 -12
  128. package/src/main/lib/scheduler/finalizeReason.cjs +30 -0
  129. package/src/main/lib/{fixChainDepth.cjs → scheduler/fixChainDepth.cjs} +1 -1
  130. package/src/main/lib/scheduler/flatSweepThrottle.cjs +17 -0
  131. package/src/main/lib/{jobDirtFilter.cjs → scheduler/jobDirtFilter.cjs} +1 -1
  132. package/src/main/lib/{jobSupervisorRecord.cjs → scheduler/jobSupervisorRecord.cjs} +1 -1
  133. package/src/main/lib/{launchFailure.cjs → scheduler/launchFailure.cjs} +2 -2
  134. package/src/main/lib/{queueStore.cjs → scheduler/queueStore.cjs} +6 -6
  135. package/src/main/lib/{quietMachineLease.cjs → scheduler/quietMachineLease.cjs} +1 -1
  136. package/src/main/lib/{rcaReport.cjs → scheduler/rcaReport.cjs} +4 -4
  137. package/src/main/lib/{reaperHelpers.cjs → scheduler/reaperHelpers.cjs} +3 -3
  138. package/src/main/lib/{reservationExpiry.cjs → scheduler/reservationExpiry.cjs} +4 -11
  139. package/src/main/lib/{reviewNotice.cjs → scheduler/reviewNotice.cjs} +1 -1
  140. package/src/main/lib/{runLogRetention.cjs → scheduler/runLogRetention.cjs} +34 -13
  141. package/src/main/lib/{scheduleJobTransitions.cjs → scheduler/scheduleJobTransitions.cjs} +3 -3
  142. package/src/main/lib/{schedulerBatch.cjs → scheduler/schedulerBatch.cjs} +9 -13
  143. package/src/main/lib/{schedulerConfig.cjs → scheduler/schedulerConfig.cjs} +1 -1
  144. package/src/main/lib/{schedulerRuntimeState.cjs → scheduler/schedulerRuntimeState.cjs} +1 -1
  145. package/src/main/lib/{sessionSlots.cjs → scheduler/sessionSlots.cjs} +2 -2
  146. package/src/main/lib/{upgradeDrain.cjs → scheduler/upgradeDrain.cjs} +8 -11
  147. package/src/main/lib/{watchdogHelpers.cjs → scheduler/watchdogHelpers.cjs} +5 -19
  148. package/src/main/lib/{auditLog.cjs → telemetry/auditLog.cjs} +1 -1
  149. package/src/main/lib/{opsErrorLog.cjs → telemetry/opsErrorLog.cjs} +4 -4
  150. package/src/main/lib/{telemetryBacklog.cjs → telemetry/telemetryBacklog.cjs} +4 -4
  151. package/src/main/lib/{telemetryBoot.cjs → telemetry/telemetryBoot.cjs} +1 -1
  152. package/src/main/lib/{telemetryClient.cjs → telemetry/telemetryClient.cjs} +12 -8
  153. package/src/main/lib/{telemetrySettings.cjs → telemetry/telemetrySettings.cjs} +1 -1
  154. package/src/main/lib/{atomicFs.cjs → util/atomicFs.cjs} +42 -0
  155. package/src/main/lib/{loopDelay.cjs → util/loopDelay.cjs} +1 -1
  156. package/src/main/logs.cjs +1 -1
  157. package/src/main/mcpStatus.cjs +2 -2
  158. package/src/main/memoryAggregate.cjs +3 -3
  159. package/src/main/memoryTool.cjs +1 -1
  160. package/src/main/otel.cjs +2 -2
  161. package/src/main/pluginInstall.cjs +29 -3
  162. package/src/main/projectBrief.cjs +6 -6
  163. package/src/main/projectPages.cjs +1 -1
  164. package/src/main/promptSessionEvents.cjs +2 -2
  165. package/src/main/pty.cjs +7 -7
  166. package/src/main/queueOps.cjs +6 -6
  167. package/src/main/remoteClient.cjs +4 -4
  168. package/src/main/remoteClientIpc.cjs +1 -1
  169. package/src/main/runVerify.cjs +6 -3
  170. package/src/main/scheduler/CLAUDE.md +26 -0
  171. package/src/main/scheduler/budget.cjs +576 -0
  172. package/src/main/scheduler/gitTreeGuard.cjs +672 -0
  173. package/src/main/scheduler/prdParser.cjs +4 -4
  174. package/src/main/scheduler/prdPaths.cjs +487 -0
  175. package/src/main/scheduler/reviewLadder.cjs +1011 -0
  176. package/src/main/scheduler/starvation.cjs +390 -0
  177. package/src/main/scheduler.cjs +331 -3320
  178. package/src/main/seedAgentPersonas.cjs +5 -5
  179. package/src/main/seedDevPlugin.cjs +70 -3
  180. package/src/main/seedSchedulerMcp.cjs +2 -2
  181. package/src/main/supervisor.cjs +50 -27
  182. package/src/main/telemetryIpc.cjs +51 -0
  183. package/src/main/transcripts.cjs +3 -3
  184. package/src/main/updaterIpc.cjs +1 -1
  185. package/src/main/usage.cjs +1 -1
  186. package/src/main/watchers.cjs +1 -1
  187. package/src/main/webRemote.cjs +22 -7
  188. package/src/preload/api.d.ts +14 -8
  189. package/src/preload/index.cjs +9 -3
  190. package/dist/assets/ProvenanceBadge-vC7Tj-JP.js +0 -1
  191. package/dist/assets/RemoteMachines-CWnKbFHc.js +0 -3
  192. package/dist/assets/Settings-DYDlp2m_.js +0 -4
  193. package/dist/assets/Skills-DHO0N0C2.js +0 -2
  194. package/dist/assets/SystemPrompt-DxeNofL9.js +0 -1
  195. package/dist/assets/TagLibrary-QOAs7ISO.js +0 -1
  196. package/plugins/session-manager-dev/skills/blog-for-project-feature/0-select/SKILL.md +0 -39
  197. package/plugins/session-manager-dev/skills/blog-for-project-feature/1-research/SKILL.md +0 -37
  198. package/plugins/session-manager-dev/skills/blog-for-project-feature/2-storyboard/SKILL.md +0 -64
  199. package/plugins/session-manager-dev/skills/blog-for-project-feature/3-capture/SKILL.md +0 -52
  200. package/plugins/session-manager-dev/skills/blog-for-project-feature/4-draft-copy/SKILL.md +0 -37
  201. package/plugins/session-manager-dev/skills/blog-for-project-feature/5-illustrate/SKILL.md +0 -50
  202. package/plugins/session-manager-dev/skills/blog-for-project-feature/6-compose/SKILL.md +0 -51
  203. package/plugins/session-manager-dev/skills/blog-for-project-feature/7-review/SKILL.md +0 -54
  204. package/plugins/session-manager-dev/skills/blog-for-project-feature/SKILL.md +0 -144
  205. package/plugins/session-manager-dev/skills/blog-for-project-feature/feature.config.yaml +0 -90
  206. package/plugins/session-manager-dev/skills/discover-features/SKILL.md +0 -95
  207. package/plugins/session-manager-dev/skills/explain-to-me/SKILL.md +0 -205
  208. package/plugins/session-manager-dev/skills/explain-to-me/assets/style-reference.html +0 -163
  209. package/plugins/session-manager-dev/skills/find-opportunity/SKILL.md +0 -83
  210. package/plugins/session-manager-dev/skills/issue-address/0-select/0-fetch-pool/SKILL.md +0 -38
  211. package/plugins/session-manager-dev/skills/issue-address/0-select/1-reject-fixed/SKILL.md +0 -64
  212. package/plugins/session-manager-dev/skills/issue-address/0-select/2-reject-claimed/SKILL.md +0 -71
  213. package/plugins/session-manager-dev/skills/issue-address/0-select/3-rank-impact/SKILL.md +0 -39
  214. package/plugins/session-manager-dev/skills/issue-address/0-select/SKILL.md +0 -75
  215. package/plugins/session-manager-dev/skills/issue-address/1-confirm-open/SKILL.md +0 -39
  216. package/plugins/session-manager-dev/skills/issue-address/2-claim/SKILL.md +0 -57
  217. package/plugins/session-manager-dev/skills/issue-address/3-reproduce/SKILL.md +0 -40
  218. package/plugins/session-manager-dev/skills/issue-address/4-fix/SKILL.md +0 -33
  219. package/plugins/session-manager-dev/skills/issue-address/5-verify/SKILL.md +0 -40
  220. package/plugins/session-manager-dev/skills/issue-address/SKILL.md +0 -120
  221. package/plugins/session-manager-dev/skills/local-project-health/SKILL.md +0 -58
  222. package/plugins/session-manager-dev/skills/memory-sanitation/SKILL.md +0 -147
  223. package/plugins/session-manager-dev/skills/ops-sweep/SKILL.md +0 -137
  224. package/plugins/session-manager-dev/skills/pr-review-sweep/0-fetch/SKILL.md +0 -41
  225. package/plugins/session-manager-dev/skills/pr-review-sweep/1-classify/SKILL.md +0 -56
  226. package/plugins/session-manager-dev/skills/pr-review-sweep/2-check-fixed/SKILL.md +0 -49
  227. package/plugins/session-manager-dev/skills/pr-review-sweep/3-queue/SKILL.md +0 -57
  228. package/plugins/session-manager-dev/skills/pr-review-sweep/4-land-and-resolve/SKILL.md +0 -60
  229. package/plugins/session-manager-dev/skills/pr-review-sweep/SKILL.md +0 -124
  230. package/plugins/session-manager-dev/skills/pr-signal/SKILL.md +0 -67
  231. package/plugins/session-manager-dev/skills/project-status/SKILL.md +0 -243
  232. package/plugins/session-manager-dev/skills/requesting-code-review/SKILL.md +0 -98
  233. package/plugins/session-manager-dev/skills/requesting-code-review/code-reviewer.md +0 -146
  234. package/src/main/lib/rateLimitDetect.cjs +0 -35
  235. /package/src/main/lib/{agentEffortResolve.cjs → claude/agentEffortResolve.cjs} +0 -0
  236. /package/src/main/lib/{claudeCliCaps.cjs → claude/claudeCliCaps.cjs} +0 -0
  237. /package/src/main/lib/{usageCircuit.cjs → claude/usageCircuit.cjs} +0 -0
  238. /package/src/main/lib/{epicSpawnCwd.cjs → epic/epicSpawnCwd.cjs} +0 -0
  239. /package/src/main/lib/{customerFeedbackAdminRoutes.cjs → feedback-remote/customerFeedbackAdminRoutes.cjs} +0 -0
  240. /package/src/main/lib/{remoteE2eCrypto.cjs → feedback-remote/remoteE2eCrypto.cjs} +0 -0
  241. /package/src/main/lib/{branchSweep.cjs → git/branchSweep.cjs} +0 -0
  242. /package/src/main/lib/{gitExec.cjs → git/gitExec.cjs} +0 -0
  243. /package/src/main/lib/{jobWorktree.cjs → git/jobWorktree.cjs} +0 -0
  244. /package/src/main/lib/{jobWorktreeBootLive.cjs → git/jobWorktreeBootLive.cjs} +0 -0
  245. /package/src/main/lib/{jobWorktreeTerminalOrphanLive.cjs → git/jobWorktreeTerminalOrphanLive.cjs} +0 -0
  246. /package/src/main/lib/{builtinMacros.cjs → persona-macro/builtinMacros.cjs} +0 -0
  247. /package/src/main/lib/{personaImportHealth.cjs → persona-macro/personaImportHealth.cjs} +0 -0
  248. /package/src/main/lib/{shippedPersonaSeeds.cjs → persona-macro/shippedPersonaSeeds.cjs} +0 -0
  249. /package/src/main/lib/{planValidator.cjs → prd/planValidator.cjs} +0 -0
  250. /package/src/main/lib/{prdAuthoringSeed.cjs → prd/prdAuthoringSeed.cjs} +0 -0
  251. /package/src/main/lib/{prdDisposition.cjs → prd/prdDisposition.cjs} +0 -0
  252. /package/src/main/lib/{prdFrontmatter.cjs → prd/prdFrontmatter.cjs} +0 -0
  253. /package/src/main/lib/{prdSizing.cjs → prd/prdSizing.cjs} +0 -0
  254. /package/src/main/lib/{workTypeLibrary.cjs → prd/workTypeLibrary.cjs} +0 -0
  255. /package/src/main/lib/{childWithLog.cjs → process/childWithLog.cjs} +0 -0
  256. /package/src/main/lib/{cleanEnv.cjs → process/cleanEnv.cjs} +0 -0
  257. /package/src/main/lib/{defaultShell.cjs → process/defaultShell.cjs} +0 -0
  258. /package/src/main/lib/{killTree.cjs → process/killTree.cjs} +0 -0
  259. /package/src/main/lib/{loginShellPath.cjs → process/loginShellPath.cjs} +0 -0
  260. /package/src/main/lib/{procIdentity.cjs → process/procIdentity.cjs} +0 -0
  261. /package/src/main/lib/{singleInstanceGuard.cjs → process/singleInstanceGuard.cjs} +0 -0
  262. /package/src/main/lib/{smProcNames.cjs → process/smProcNames.cjs} +0 -0
  263. /package/src/main/lib/{timeoutShimScript.cjs → process/timeoutShimScript.cjs} +0 -0
  264. /package/src/main/lib/{winSpawn.cjs → process/winSpawn.cjs} +0 -0
  265. /package/src/main/lib/{adoptedRunSupervisor.cjs → scheduler/adoptedRunSupervisor.cjs} +0 -0
  266. /package/src/main/lib/{dispatchLoop.cjs → scheduler/dispatchLoop.cjs} +0 -0
  267. /package/src/main/lib/{dodDrainHook.cjs → scheduler/dodDrainHook.cjs} +0 -0
  268. /package/src/main/lib/{fixPlanSlug.cjs → scheduler/fixPlanSlug.cjs} +0 -0
  269. /package/src/main/lib/{gateAuthority.cjs → scheduler/gateAuthority.cjs} +0 -0
  270. /package/src/main/lib/{landedSinceRun.cjs → scheduler/landedSinceRun.cjs} +0 -0
  271. /package/src/main/lib/{loadGate.cjs → scheduler/loadGate.cjs} +0 -0
  272. /package/src/main/lib/{needsReviewLedger.cjs → scheduler/needsReviewLedger.cjs} +0 -0
  273. /package/src/main/lib/{queueHealth.cjs → scheduler/queueHealth.cjs} +0 -0
  274. /package/src/main/lib/{queueHistory.cjs → scheduler/queueHistory.cjs} +0 -0
  275. /package/src/main/lib/{scheduleJobSchema.cjs → scheduler/scheduleJobSchema.cjs} +0 -0
  276. /package/src/main/lib/{schedulerPaths.cjs → scheduler/schedulerPaths.cjs} +0 -0
  277. /package/src/main/lib/{terminalRunOutcome.cjs → scheduler/terminalRunOutcome.cjs} +0 -0
  278. /package/src/main/lib/{validationSentinels.cjs → scheduler/validationSentinels.cjs} +0 -0
  279. /package/src/main/lib/{crashTelemetry.cjs → telemetry/crashTelemetry.cjs} +0 -0
  280. /package/src/main/lib/{otlpTraceExporter.cjs → telemetry/otlpTraceExporter.cjs} +0 -0
  281. /package/src/main/lib/{telemetryConsent.cjs → telemetry/telemetryConsent.cjs} +0 -0
  282. /package/src/main/lib/{telemetryCounters.cjs → telemetry/telemetryCounters.cjs} +0 -0
  283. /package/src/main/lib/{encodeCwd.cjs → util/encodeCwd.cjs} +0 -0
  284. /package/src/main/lib/{expandHome.cjs → util/expandHome.cjs} +0 -0
  285. /package/src/main/lib/{extractJson.cjs → util/extractJson.cjs} +0 -0
  286. /package/src/main/lib/{fileTail.cjs → util/fileTail.cjs} +0 -0
  287. /package/src/main/lib/{headTailBuffer.cjs → util/headTailBuffer.cjs} +0 -0
  288. /package/src/main/lib/{kebabCase.cjs → util/kebabCase.cjs} +0 -0
  289. /package/src/main/lib/{lruCache.cjs → util/lruCache.cjs} +0 -0
  290. /package/src/main/lib/{withTimeout.cjs → util/withTimeout.cjs} +0 -0
@@ -1,243 +0,0 @@
1
- ---
2
- name: project-status
3
- model: opus
4
- description: >-
5
- GLOBAL FRAMEWORK for one operational status rollup of the project in the
6
- current working directory — defines the contract (what a status report must
7
- contain, in what order, on which model) and DELEGATES the project-specific
8
- measurement to that project's own `project-status-local` skill. Use whenever
9
- the user asks "what's the project status", "/project-status", "how is this
10
- project doing", "are the jobs healthy", or wants a one-shot status rollup for
11
- the repo they're in. Keywords: project status, KPI, north-star, crons, jobs,
12
- last run, health, rollup, ops.
13
- ---
14
-
15
- # project-status — global framework
16
-
17
- This is the **global framework**, not an implementation. It owns the *contract*
18
- (what a status rollup must contain, the order, the presentation, the model
19
- expectation) and **delegates** the project-specific *how* to the project's own
20
- `project-status-local` skill.
21
-
22
- > **Two skills, no name collision (by design).**
23
- > `project-status` (this, global) = the framework/expectations.
24
- > `project-status-local` (per project) = the implementation.
25
- > They have **different names on purpose** — a project must NOT ship a second
26
- > skill also named `project-status`, because a same-name skill silently shadows
27
- > this one and drops everything it defines (that is exactly how the model
28
- > fallback got lost once). Each project ships exactly one `project-status-local`.
29
-
30
- ## What to do when invoked
31
-
32
- First decide **scope**: one project (the current repo) or several (the user named
33
- multiple repos, said "all my projects", or wants a cross-project board).
34
-
35
- ### Single project (the cwd)
36
-
37
- 1. **Delegate if a local exists.** If a `project-status-local` skill is available
38
- in the current project (it appears in the available-skills list), **invoke it**
39
- (Skill tool, `skill: project-status-local`). It owns the specifics — which KPI
40
- command to run, which crons are this project's, which health entrypoint to
41
- call. Present its output; if it omits an element of the contract below, fill
42
- the gap or note it.
43
- 2. **Otherwise run the generic fallback inline** (the flow at the bottom) and, at
44
- the end, **offer to scaffold a `project-status-local`** for this repo so the
45
- next run is project-aware.
46
-
47
- Do not re-implement a project's specifics here — that belongs in its
48
- `project-status-local`.
49
-
50
- ### Multiple projects (parallel fan-out)
51
-
52
- The whole point of the framework/`-local` split: the per-project work is
53
- **independent**, so run it **concurrently** — one project's KPI/crons/health
54
- never depends on another's.
55
-
56
- 1. **Resolve the project list.** Use the repos the user named; for "all", or to
57
- discover them, enumerate every repo that ships a local skill:
58
- ```bash
59
- for d in ~/Projects/*/.claude/skills/project-status-local/SKILL.md; do
60
- [ -f "$d" ] && echo "${d%/.claude/skills/project-status-local/SKILL.md}"
61
- done
62
- ```
63
- 2. **Fan out one agent per project — in a SINGLE message with multiple `Agent`
64
- tool calls** so they run in parallel (sequential calls would defeat the
65
- purpose). Each agent (`subagent_type: general-purpose`) gets a prompt like:
66
- > `cd <ABS_REPO_PATH>`. Produce this repo's status rollup by executing its
67
- > own `project-status-local`: **read** `.claude/skills/project-status-local/SKILL.md`
68
- > and run its steps (they are deterministic — a `brief.py`/analyzer call, a
69
- > `crontab -l | grep` for its crons, its `scripts/health.sh`). If the repo has
70
- > no `project-status-local`, follow the generic contract (KPI→chores→health)
71
- > using its `CLAUDE.md` + crontab + health entrypoint. Return a **compact**
72
- > rollup (≤12 lines): the project name, the 7d North-Star line (KPI vs
73
- > benchmark → alpha), the health color, and the single worst ❌/⚠️ chore.
74
- Let each agent **inherit the model** (omit `model`) — it just runs the repo's
75
- commands; this framework's `model: opus` governs *this* turn.
76
- 3. **Aggregate** the returned rollups into one board: a lead table
77
- (Project · 7d KPI · Health · Worst signal), RED/❌ projects first, then each
78
- project's detail block beneath. Note any agent that failed to produce a rollup
79
- (missing repo, broken local) rather than dropping it silently.
80
-
81
- Why agents, not the Skill tool, for the others: skill availability is bound to
82
- the launch repo, so `project-status-local` is only directly invokable for the
83
- **current** project. For other repos the agent reproduces the local by reading +
84
- running it (it is deterministic bash), which works from any cwd.
85
-
86
- ## The contract (what every report must satisfy)
87
-
88
- Order — **1. North-Star KPI (last 7d) → 2. Chores (crons) → 3. Logs & usage
89
- patterns → 4. Health verdict.** Lead with the KPI line and the single worst
90
- ❌/⚠️ chore or health signal; detail after. Keep it tight; relay engine/analyzer
91
- output rather than re-deriving numbers by hand.
92
-
93
- A status check is an **audit**, not just a liveness ping — it reads the project's
94
- *operational logs* (are the runs clean or throwing?) and its *usage/consumption
95
- patterns* (who consumes the product's outputs, how often, which surfaces are hot
96
- vs dead) alongside the KPI and crons. The KPI says "is the output valuable," the
97
- logs+usage say "is the machine actually being used, and is it healthy under that
98
- use." Both dimensions belong in every report.
99
-
100
- - **KPI (the intro):** the metric the project's `CLAUDE.md` mission statement
101
- names as optimized (a `## North-Star KPI` / `## Objective` section, usually
102
- linking a definition doc or a measurement command). Measure it over a trailing
103
- 7-day window with the project's own command; state it with the
104
- benchmark/target the section defines. If `CLAUDE.md` declares no KPI, say so
105
- plainly (it belongs in the mission statement) and use a git/activity summary
106
- for the intro — never invent a metric.
107
- - **Chores:** only THIS project's cron jobs (match by repo name / absolute path),
108
- each with last-run time, recent result, and an error count, in a table:
109
- Job · Schedule · Purpose · Last run · Errors · Last result. Staleness: newest
110
- log line older than ~2× cadence ⇒ ⚠️ overdue; an installed cron with an
111
- empty/missing log ⇒ ❌ (often a Vixie-cron `TZ=` inline-prefix drop — fix with a
112
- standalone `TZ=` line). Market-hours-only jobs stale overnight is expected.
113
- - **Logs & usage patterns:** two sub-parts, both delegated to the `-local` for
114
- *where the data lives*, but expected in every report:
115
- - **Logs** — scan the recent operational logs for error/warning rates,
116
- tracebacks, timeouts, and silent-stall signatures (a job that "ran ok" but
117
- did no work). Surface counts + the worst recent line, not just last-exit.
118
- - **Usage / consumption** — how the project's *outputs* are actually consumed:
119
- per-endpoint/-tool invocation counts, the consumer/tenant breakdown, and
120
- hot-vs-cold surfaces over a trailing window. This answers "is what we built
121
- being used, and by whom" — the dimension a KPI alone misses. The `-local`
122
- names the source (a usage/metering store, an access log, or a proxy like a
123
- panel/history table); if no usage source exists yet, say so and recommend
124
- standing one up rather than inventing numbers.
125
- - **Health verdict:** run the project's own health entrypoint (first hit wins:
126
- `scripts/health.sh` · `.claude/health.sh` · `bin/health.sh` · a `health`
127
- Make/just target) and relay its GREEN/YELLOW/RED rollup. A non-zero exit for
128
- YELLOW/RED is expected, not a skill failure; only a crash is.
129
-
130
- ## After the audit — route findings, then improve (the loop)
131
-
132
- A status check shouldn't dead-end at a report. Once the four dimensions are in,
133
- **act on what the audit surfaced** — this is what makes `/project-status` a
134
- self-contained *bootstrap → evaluate → improve* loop, usable even on a brand-new
135
- project.
136
-
137
- **First, work the pending proposals — decide before generating new work.** Right
138
- after the audit, look at the project's **proposed Epics** (status `proposed` in
139
- `session-manager-operations/prompt-sessions/active-index.json`): these are the
140
- items agents filed for a human decision. Report them so the user can approve
141
- or discard; do not
142
- approve them yourself, and do not stack new levers on top of an undecided
143
- backlog. (If there are none, say so and move on.)
144
-
145
- There is no inbox to reconcile and no archive convention to keep in step: an
146
- approved proposal becomes an active Epic whose PRDs and runs are already visible
147
- in the Scheduler, so its status is read from the queue directly rather than
148
- tracked in a parallel status log.
149
-
150
- Then route **this audit's own findings**, by ownership:
151
-
152
- 1. **A finding that belongs to another project** (an upstream/downstream service
153
- in the stack — e.g. the data source is stale, a contract drifted): do NOT
154
- reach across the boundary and do NOT open an Epic there — nothing but a human
155
- pressing New Epic creates one. Report it, clearly enough that the human can
156
- act on it. (Same rule as everywhere: service boundaries outrank convenience.)
157
- 2. **A finding that belongs to THIS project** (a real bug, a missing guard, an
158
- enhancement the audit revealed — a cold sold-surface, a recurring error in the
159
- logs, a usage gap): queue it as a scheduled PRD via **`/develop`** — never
160
- implement it inline here. Record the queued PRD id in the report.
161
- 3. **Nothing actionable** — just report.
162
-
163
- Then stop. There is no automatic improvement gate: findings are routed as
164
- PRDs or reported above, and the user decides what gets worked on next.
165
-
166
- This sequence — audit → route findings (develop / report) — is enough to
167
- bootstrap and evaluate a project from a single `/project-status` invocation. The `-local` owns the *specifics* of each
168
- step; this framework owns the *loop*.
169
-
170
- ## Model expectation (every local must mirror this)
171
-
172
- This framework runs on **`model: opus`** (Opus 4.8) — a status check is reasoning
173
- work that should run on the strongest model. **Every `project-status-local` MUST
174
- carry the same single-value `model: opus` frontmatter line**, so a direct
175
- `/project-status-local` invocation runs on Opus too. A local that omits it loses
176
- the override and runs on whatever the session model happens to be.
177
-
178
- > **Syntax matters — this is a real, documented field.** Skill frontmatter
179
- > `model:` takes a **single** value (the same aliases as `/model`: `opus`,
180
- > `sonnet`, `haiku`, `fable`, or a full id like `claude-opus-4-8`). It does NOT
181
- > accept a comma-separated fallback chain — `model: opus,sonnet` is an invalid
182
- > value and silently fails to apply (the skill then runs on the session model,
183
- > not Opus). Graceful failover to Sonnet is configured **at the session level**,
184
- > not per-skill, via `fallbackModel` in settings:
185
- > `"fallbackModel": ["opus", "sonnet"]` in `~/.claude/settings.json`. Per the
186
- > Claude Code docs, a skill's `model:` override applies for the rest of the
187
- > current turn and reverts to the session model on the next prompt.
188
-
189
- ## Scaffolding a new `project-status-local` — establish the framework with the user
190
-
191
- When a project has none, **do not silently guess the implementation.** The whole
192
- point of the framework/`-local` split is that every project's report covers the
193
- **same four dimensions** (KPI · chores · logs+usage · health) — so the parent's job
194
- on a missing `-local` is to *establish those expectations with the user*, then
195
- write a complete local. Run a short **Q&A** (use `AskUserQuestion`, batching the
196
- gaps you couldn't auto-detect) to pin down each contract dimension:
197
-
198
- 1. **Probe first, ask only the gaps.** Read `CLAUDE.md` (KPI section?), the
199
- crontab (this repo's jobs + their log paths?), the repo for a health entrypoint
200
- (`scripts/health.sh` etc.), and for a usage source (a metering/access-log store,
201
- or a proxy table). Auto-fill what you can find.
202
- 2. **Ask the user to confirm/supply the rest**, one question per unresolved
203
- dimension:
204
- - **KPI** — what is this project's North-Star metric + the command that measures
205
- it over 7d? (If `CLAUDE.md` has no `## North-Star KPI` section, offer to add
206
- one — the KPI belongs in the mission statement, not only the skill.)
207
- - **Chores** — which crons are this project's, and where do their logs live?
208
- - **Logs & usage** — which logs carry the operational signal, and **what is the
209
- usage/consumption source** (a metering store / access log / proxy)? If none
210
- exists, flag it and offer to stand one up — a project with no usage telemetry
211
- can't answer "is what we built being used."
212
- - **Health** — the health entrypoint + how to read its verdict.
213
- 3. **Write the local** `<repo>/.claude/skills/project-status-local/SKILL.md` with
214
- frontmatter `name: project-status-local`, `model: opus` (single value — see the
215
- syntax note above; `fallbackModel` owns failover), a project-specific
216
- `description`, and a body implementing **all four** contract dimensions against
217
- the answers — so the next `/project-status` here is project-aware and consistent
218
- with every other project's report.
219
-
220
- This Q&A is the deliberate "pain" that makes cross-project reports comparable:
221
- each `-local` is the *same contract*, filled with that project's specifics.
222
-
223
- ## Generic fallback flow (no local present)
224
-
225
- Run inline only when the project ships no `project-status-local`:
226
-
227
- 1. **Current time:** `date '+%Y-%m-%d %H:%M %Z'` (for staleness judgment).
228
- 2. **KPI:** read `./CLAUDE.md`, find the North-Star section, run its measurement
229
- command over 7 days, and state the headline. No KPI section ⇒ say so + git
230
- summary.
231
- 3. **Chores:** `crontab -l | grep -F "$(basename "$PWD")" | grep -v '^\s*#'`
232
- (widen/narrow if the cron path differs from the dir name); for each job
233
- `ls -la <log>` + `tail -n 8 <log>` + an `ERROR|Traceback|failed|exception`
234
- count; render the chores table.
235
- 4. **Logs & usage:** scan recent logs for error/warning rates + silent stalls;
236
- look for a usage/consumption source (a metering store, an access log, or a
237
- request/history table) and summarize per-surface invocation + consumer
238
- patterns over a trailing window. If none exists, say so and recommend standing
239
- one up — don't invent usage numbers.
240
- 5. **Health:** run the project's health entrypoint and relay the rollup; if none
241
- exists, infer from KPI + chores and offer to create `scripts/health.sh`.
242
- 6. Lead with the 7d KPI line and the worst chore/health/usage signal. Then offer
243
- to scaffold a `project-status-local` (Q&A above) so the next run is consistent.
@@ -1,98 +0,0 @@
1
- ---
2
- name: requesting-code-review
3
- description: Use when completing tasks, implementing major features, or before merging to verify work meets requirements
4
- ---
5
-
6
- # Requesting Code Review
7
-
8
- Dispatch the native `code-reviewer` subagent (via the Agent tool, `subagent_type: "code-reviewer"`) to catch issues before they cascade.
9
-
10
- **Core principle:** Review early, review often.
11
-
12
- ## When to Request Review
13
-
14
- **Mandatory:**
15
- - After each task in subagent-driven development
16
- - After completing major feature
17
- - Before merge to main
18
-
19
- **Optional but valuable:**
20
- - When stuck (fresh perspective)
21
- - Before refactoring (baseline check)
22
- - After fixing complex bug
23
-
24
- ## How to Request
25
-
26
- **1. Get git SHAs:**
27
- ```bash
28
- BASE_SHA=$(git rev-parse HEAD~1) # or origin/main
29
- HEAD_SHA=$(git rev-parse HEAD)
30
- ```
31
-
32
- **2. Dispatch code-reviewer subagent:**
33
-
34
- Use the Agent tool with `subagent_type: "code-reviewer"`, filling the template at `code-reviewer.md`
35
-
36
- **Placeholders:**
37
- - `{WHAT_WAS_IMPLEMENTED}` - What you just built
38
- - `{PLAN_OR_REQUIREMENTS}` - What it should do
39
- - `{BASE_SHA}` - Starting commit
40
- - `{HEAD_SHA}` - Ending commit
41
- - `{DESCRIPTION}` - Brief summary
42
-
43
- **3. Act on feedback:**
44
- - Fix Critical issues immediately
45
- - Fix Important issues before proceeding
46
- - Note Minor issues for later
47
- - Push back if reviewer is wrong (with reasoning)
48
-
49
- ## Example
50
-
51
- ```
52
- [Just completed Task 2: Add verification function]
53
-
54
- You: Let me request code review before proceeding.
55
-
56
- BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
57
- HEAD_SHA=$(git rev-parse HEAD)
58
-
59
- [Dispatch code-reviewer subagent via the Agent tool]
60
- WHAT_WAS_IMPLEMENTED: Verification and repair functions for conversation index
61
- PLAN_OR_REQUIREMENTS: Task 2 from docs/plans/deployment-plan.md
62
- BASE_SHA: a7981ec
63
- HEAD_SHA: 3df7661
64
- DESCRIPTION: Added verifyIndex() and repairIndex() with 4 issue types
65
-
66
- [Subagent returns]:
67
- Strengths: Clean architecture, real tests
68
- Issues:
69
- Important: Missing progress indicators
70
- Minor: Magic number (100) for reporting interval
71
- Assessment: Ready to proceed
72
-
73
- You: [Fix progress indicators]
74
- [Continue to Task 3]
75
- ```
76
-
77
- ## Integration with /develop
78
-
79
- For scheduled work, review happens once per plan in the trailing `validate` PRD (persona
80
- `validator`), which runs `/code-review` and `/security-review` over the plan's combined diff and
81
- reports per-PRD VERIFIED/REFUTED verdicts. This skill is for an interactive session reviewing its
82
- own inline work. Never dispatch a `code-reviewer` subagent from a headless run — it has no next
83
- turn to collect the result.
84
-
85
- ## Red Flags
86
-
87
- **Never:**
88
- - Skip review because "it's simple"
89
- - Ignore Critical issues
90
- - Proceed with unfixed Important issues
91
- - Argue with valid technical feedback
92
-
93
- **If reviewer wrong:**
94
- - Push back with technical reasoning
95
- - Show code/tests that prove it works
96
- - Request clarification
97
-
98
- See template at: requesting-code-review/code-reviewer.md
@@ -1,146 +0,0 @@
1
- # Code Review Agent
2
-
3
- You are reviewing code changes for production readiness.
4
-
5
- **Your task:**
6
- 1. Review {WHAT_WAS_IMPLEMENTED}
7
- 2. Compare against {PLAN_OR_REQUIREMENTS}
8
- 3. Check code quality, architecture, testing
9
- 4. Categorize issues by severity
10
- 5. Assess production readiness
11
-
12
- ## What Was Implemented
13
-
14
- {DESCRIPTION}
15
-
16
- ## Requirements/Plan
17
-
18
- {PLAN_REFERENCE}
19
-
20
- ## Git Range to Review
21
-
22
- **Base:** {BASE_SHA}
23
- **Head:** {HEAD_SHA}
24
-
25
- ```bash
26
- git diff --stat {BASE_SHA}..{HEAD_SHA}
27
- git diff {BASE_SHA}..{HEAD_SHA}
28
- ```
29
-
30
- ## Review Checklist
31
-
32
- **Code Quality:**
33
- - Clean separation of concerns?
34
- - Proper error handling?
35
- - Type safety (if applicable)?
36
- - DRY principle followed?
37
- - Edge cases handled?
38
-
39
- **Architecture:**
40
- - Sound design decisions?
41
- - Scalability considerations?
42
- - Performance implications?
43
- - Security concerns?
44
-
45
- **Testing:**
46
- - Tests actually test logic (not mocks)?
47
- - Edge cases covered?
48
- - Integration tests where needed?
49
- - All tests passing?
50
-
51
- **Requirements:**
52
- - All plan requirements met?
53
- - Implementation matches spec?
54
- - No scope creep?
55
- - Breaking changes documented?
56
-
57
- **Production Readiness:**
58
- - Migration strategy (if schema changes)?
59
- - Backward compatibility considered?
60
- - Documentation complete?
61
- - No obvious bugs?
62
-
63
- ## Output Format
64
-
65
- ### Strengths
66
- [What's well done? Be specific.]
67
-
68
- ### Issues
69
-
70
- #### Critical (Must Fix)
71
- [Bugs, security issues, data loss risks, broken functionality]
72
-
73
- #### Important (Should Fix)
74
- [Architecture problems, missing features, poor error handling, test gaps]
75
-
76
- #### Minor (Nice to Have)
77
- [Code style, optimization opportunities, documentation improvements]
78
-
79
- **For each issue:**
80
- - File:line reference
81
- - What's wrong
82
- - Why it matters
83
- - How to fix (if not obvious)
84
-
85
- ### Recommendations
86
- [Improvements for code quality, architecture, or process]
87
-
88
- ### Assessment
89
-
90
- **Ready to merge?** [Yes/No/With fixes]
91
-
92
- **Reasoning:** [Technical assessment in 1-2 sentences]
93
-
94
- ## Critical Rules
95
-
96
- **DO:**
97
- - Categorize by actual severity (not everything is Critical)
98
- - Be specific (file:line, not vague)
99
- - Explain WHY issues matter
100
- - Acknowledge strengths
101
- - Give clear verdict
102
-
103
- **DON'T:**
104
- - Say "looks good" without checking
105
- - Mark nitpicks as Critical
106
- - Give feedback on code you didn't review
107
- - Be vague ("improve error handling")
108
- - Avoid giving a clear verdict
109
-
110
- ## Example Output
111
-
112
- ```
113
- ### Strengths
114
- - Clean database schema with proper migrations (db.ts:15-42)
115
- - Comprehensive test coverage (18 tests, all edge cases)
116
- - Good error handling with fallbacks (summarizer.ts:85-92)
117
-
118
- ### Issues
119
-
120
- #### Important
121
- 1. **Missing help text in CLI wrapper**
122
- - File: index-conversations:1-31
123
- - Issue: No --help flag, users won't discover --concurrency
124
- - Fix: Add --help case with usage examples
125
-
126
- 2. **Date validation missing**
127
- - File: search.ts:25-27
128
- - Issue: Invalid dates silently return no results
129
- - Fix: Validate ISO format, throw error with example
130
-
131
- #### Minor
132
- 1. **Progress indicators**
133
- - File: indexer.ts:130
134
- - Issue: No "X of Y" counter for long operations
135
- - Impact: Users don't know how long to wait
136
-
137
- ### Recommendations
138
- - Add progress reporting for user experience
139
- - Consider config file for excluded projects (portability)
140
-
141
- ### Assessment
142
-
143
- **Ready to merge: With fixes**
144
-
145
- **Reasoning:** Core implementation is solid with good architecture and tests. Important issues (help text, date validation) are easily fixed and don't affect core functionality.
146
- ```
@@ -1,35 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * rateLimitDetect.cjs — the single source of truth for "did this claude -p
5
- * log tail show a rate-limit death". Shared by spawnJob() (a still-running
6
- * process that just exited) and reapDeadRunningJobs()/classifyRunOutcome()
7
- * (a process the reaper found already dead) — see PRD 1117. Before this,
8
- * only spawnJob checked this; the reaper had no rate-limit branch at all,
9
- * so a rate-limited exit that the reaper won the race to finalize got
10
- * stamped terminal 'failed' instead of retryable 'pending'. There must
11
- * never be a second, independently-drifting regex set at either call site.
12
- */
13
-
14
- const { readTail } = require('./fileTail.cjs');
15
-
16
- /** Scan the tail of a job's log for the canonical rate-limit signal. We look
17
- * at the last 16 KB — final result event always lands at the end. Covers
18
- * both unified-window rate-limit types (five_hour, seven_day), the raw
19
- * 429 status, and the two human-readable limit-message phrasings the CLI
20
- * emits ("You've hit your limit" / "You've reached your <model> limit"). */
21
- function detectRateLimitInLog(logPath) {
22
- try {
23
- const text = readTail(logPath, 16384);
24
- if (!text) return false;
25
- return /"rateLimitType":"five_hour"/.test(text)
26
- || /"rateLimitType":"seven_day"/.test(text)
27
- || /"api_error_status":429/.test(text)
28
- || /You'?ve hit your limit/.test(text)
29
- || /You'?ve reached your .* limit/.test(text);
30
- } catch {
31
- return false;
32
- }
33
- }
34
-
35
- module.exports = { detectRateLimitInLog };
File without changes