codekin 0.6.2 → 0.6.4

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 (103) hide show
  1. package/README.md +3 -2
  2. package/dist/assets/index-BRB_Ksyk.js +182 -0
  3. package/dist/assets/index-Q2WSVlHo.css +1 -0
  4. package/dist/index.html +2 -2
  5. package/package.json +3 -3
  6. package/server/dist/auth-routes.js +6 -0
  7. package/server/dist/auth-routes.js.map +1 -1
  8. package/server/dist/claude-process.js +3 -2
  9. package/server/dist/claude-process.js.map +1 -1
  10. package/server/dist/commit-event-handler.d.ts +2 -1
  11. package/server/dist/commit-event-handler.js +4 -3
  12. package/server/dist/commit-event-handler.js.map +1 -1
  13. package/server/dist/commit-event-hooks.d.ts +11 -0
  14. package/server/dist/commit-event-hooks.js +61 -11
  15. package/server/dist/commit-event-hooks.js.map +1 -1
  16. package/server/dist/config.d.ts +7 -0
  17. package/server/dist/config.js +19 -1
  18. package/server/dist/config.js.map +1 -1
  19. package/server/dist/docs-routes.js +4 -7
  20. package/server/dist/docs-routes.js.map +1 -1
  21. package/server/dist/json-parse.d.ts +8 -0
  22. package/server/dist/json-parse.js +9 -0
  23. package/server/dist/json-parse.js.map +1 -0
  24. package/server/dist/opencode-process.d.ts +8 -0
  25. package/server/dist/opencode-process.js +63 -5
  26. package/server/dist/opencode-process.js.map +1 -1
  27. package/server/dist/orchestrator-learning-router.d.ts +8 -0
  28. package/server/dist/orchestrator-learning-router.js +126 -0
  29. package/server/dist/orchestrator-learning-router.js.map +1 -0
  30. package/server/dist/orchestrator-learning.d.ts +0 -5
  31. package/server/dist/orchestrator-learning.js +2 -9
  32. package/server/dist/orchestrator-learning.js.map +1 -1
  33. package/server/dist/orchestrator-memory-router.d.ts +10 -0
  34. package/server/dist/orchestrator-memory-router.js +148 -0
  35. package/server/dist/orchestrator-memory-router.js.map +1 -0
  36. package/server/dist/orchestrator-memory.js +2 -1
  37. package/server/dist/orchestrator-memory.js.map +1 -1
  38. package/server/dist/orchestrator-monitor.d.ts +6 -0
  39. package/server/dist/orchestrator-monitor.js +14 -0
  40. package/server/dist/orchestrator-monitor.js.map +1 -1
  41. package/server/dist/orchestrator-reports.d.ts +0 -4
  42. package/server/dist/orchestrator-reports.js +8 -10
  43. package/server/dist/orchestrator-reports.js.map +1 -1
  44. package/server/dist/orchestrator-routes.d.ts +2 -2
  45. package/server/dist/orchestrator-routes.js +11 -506
  46. package/server/dist/orchestrator-routes.js.map +1 -1
  47. package/server/dist/orchestrator-session-router.d.ts +13 -0
  48. package/server/dist/orchestrator-session-router.js +312 -0
  49. package/server/dist/orchestrator-session-router.js.map +1 -0
  50. package/server/dist/process-coordinator.d.ts +83 -0
  51. package/server/dist/process-coordinator.js +167 -0
  52. package/server/dist/process-coordinator.js.map +1 -0
  53. package/server/dist/prompt-router.js +2 -1
  54. package/server/dist/prompt-router.js.map +1 -1
  55. package/server/dist/session-archive.js +2 -1
  56. package/server/dist/session-archive.js.map +1 -1
  57. package/server/dist/session-lifecycle.js +21 -37
  58. package/server/dist/session-lifecycle.js.map +1 -1
  59. package/server/dist/session-manager.d.ts +4 -0
  60. package/server/dist/session-manager.js +64 -75
  61. package/server/dist/session-manager.js.map +1 -1
  62. package/server/dist/session-persistence.js +3 -1
  63. package/server/dist/session-persistence.js.map +1 -1
  64. package/server/dist/session-routes.d.ts +18 -0
  65. package/server/dist/session-routes.js +56 -11
  66. package/server/dist/session-routes.js.map +1 -1
  67. package/server/dist/stepflow-handler.js +5 -1
  68. package/server/dist/stepflow-handler.js.map +1 -1
  69. package/server/dist/stepflow-prompt.js +16 -12
  70. package/server/dist/stepflow-prompt.js.map +1 -1
  71. package/server/dist/tsconfig.tsbuildinfo +1 -1
  72. package/server/dist/types.d.ts +6 -0
  73. package/server/dist/types.js +1 -0
  74. package/server/dist/types.js.map +1 -1
  75. package/server/dist/upload-routes.d.ts +5 -0
  76. package/server/dist/upload-routes.js +48 -11
  77. package/server/dist/upload-routes.js.map +1 -1
  78. package/server/dist/version-check.js +3 -2
  79. package/server/dist/version-check.js.map +1 -1
  80. package/server/dist/webhook-rate-limiter.js +9 -1
  81. package/server/dist/webhook-rate-limiter.js.map +1 -1
  82. package/server/dist/webhook-workspace.d.ts +12 -0
  83. package/server/dist/webhook-workspace.js +126 -3
  84. package/server/dist/webhook-workspace.js.map +1 -1
  85. package/server/dist/workflow-engine.d.ts +80 -7
  86. package/server/dist/workflow-engine.js +209 -28
  87. package/server/dist/workflow-engine.js.map +1 -1
  88. package/server/dist/workflow-loader.d.ts +6 -1
  89. package/server/dist/workflow-loader.js +97 -27
  90. package/server/dist/workflow-loader.js.map +1 -1
  91. package/server/dist/workflow-routes.d.ts +13 -0
  92. package/server/dist/workflow-routes.js +106 -4
  93. package/server/dist/workflow-routes.js.map +1 -1
  94. package/server/dist/ws-origin-check.d.ts +11 -0
  95. package/server/dist/ws-origin-check.js +20 -0
  96. package/server/dist/ws-origin-check.js.map +1 -0
  97. package/server/dist/ws-rate-limit.d.ts +19 -0
  98. package/server/dist/ws-rate-limit.js +30 -0
  99. package/server/dist/ws-rate-limit.js.map +1 -0
  100. package/server/dist/ws-server.js +41 -22
  101. package/server/dist/ws-server.js.map +1 -1
  102. package/dist/assets/index-C8GlUCii.js +0 -182
  103. package/dist/assets/index-DgeUVGjz.css +0 -1
@@ -9,7 +9,8 @@
9
9
  * 1. validate_repo — verify path exists, is a git repo, check staleness
10
10
  * 2. create_session — create a Codekin session for the run
11
11
  * 3. run_prompt — start Claude, send the prompt, wait for result
12
- * 4. save_report — write Markdown output to outputDir, commit on codekin/reports branch, push
12
+ * 4. save_report — write Markdown output to outputDir, commit on a fresh
13
+ * audit/<kind>-<YYYY-MM-DD> branch, push
13
14
  *
14
15
  * MD file format — YAML frontmatter followed by the Claude prompt:
15
16
  *
@@ -33,6 +34,7 @@ import { execFileSync } from 'child_process';
33
34
  import { dirname, join, sep } from 'path';
34
35
  import { REPOS_ROOT } from './config.js';
35
36
  import { fileURLToPath } from 'url';
37
+ import { SessionGoneError } from './workflow-engine.js';
36
38
  // ---------------------------------------------------------------------------
37
39
  // MD parser
38
40
  // ---------------------------------------------------------------------------
@@ -115,14 +117,17 @@ function loadRepoOverride(repoPath, kind) {
115
117
  // Shared polling helper
116
118
  // ---------------------------------------------------------------------------
117
119
  async function waitForSessionResult(sessions, sessionId, opts = {}) {
118
- const { timeoutMs = 600_000, pollMs = 2000, abortSignal } = opts;
120
+ const { timeoutMs = 600_000, pollMs = 2000, abortSignal, runId, stepKey } = opts;
119
121
  const deadline = Date.now() + timeoutMs;
122
+ let lastSeen = null;
120
123
  while (Date.now() < deadline) {
121
124
  if (abortSignal?.aborted)
122
125
  throw new Error('Aborted');
123
126
  const session = sessions.get(sessionId);
124
- if (!session)
125
- throw new Error(`Session ${sessionId} not found`);
127
+ if (!session) {
128
+ throw new SessionGoneError(runId ?? 'unknown', stepKey ?? 'run_prompt', sessionId, lastSeen);
129
+ }
130
+ lastSeen = new Date().toISOString();
126
131
  const resultMsg = session.outputHistory.find(m => m.type === 'result');
127
132
  if (resultMsg) {
128
133
  const assistantText = session.outputHistory
@@ -147,6 +152,34 @@ async function waitForSessionResult(sessions, sessionId, opts = {}) {
147
152
  throw new Error(`Timed out waiting for session result after ${timeoutMs}ms`);
148
153
  }
149
154
  // ---------------------------------------------------------------------------
155
+ // Prompt guard
156
+ // ---------------------------------------------------------------------------
157
+ /**
158
+ * Prepended to every workflow prompt so Claude does not duplicate the report.
159
+ * The save_report step writes Claude's response text to the configured outputDir;
160
+ * if Claude also uses the Write tool (per CLAUDE.md guidance), two files appear
161
+ * — one substantive file under whatever category Claude chose, and one stub
162
+ * (the conversational reply) under the configured outputDir.
163
+ */
164
+ const WORKFLOW_PROMPT_GUARD = [
165
+ 'IMPORTANT: You are running as part of an automated Codekin workflow.',
166
+ 'The workflow runner will save your entire response as the report file.',
167
+ 'Do NOT use the Write or Edit tools to create the report yourself — that produces a duplicate file.',
168
+ 'Respond with the report Markdown directly, with no preamble.',
169
+ 'Disregard any conflicting guidance in CLAUDE.md about writing audit reports to disk; the workflow handles saving and committing.',
170
+ ].join(' ');
171
+ /** Branch name for the per-run report commit. Kept short and stable per (kind, date). */
172
+ export function reportBranchName(kind, dateStr) {
173
+ return `audit/${kind}-${dateStr}`;
174
+ }
175
+ /** True when a branch name is one a workflow run produces (or used to produce). */
176
+ export function isWorkflowReportsBranch(branch) {
177
+ // Accept the legacy long-lived branch and the new per-run audit/<kind>-<date> form.
178
+ if (branch === 'codekin/reports')
179
+ return true;
180
+ return /^audit\/[^/]+-\d{4}-\d{2}-\d{2}$/.test(branch);
181
+ }
182
+ // ---------------------------------------------------------------------------
150
183
  // Workflow registration
151
184
  // ---------------------------------------------------------------------------
152
185
  function registerWorkflow(engine, sessions, def) {
@@ -202,6 +235,9 @@ function registerWorkflow(engine, sessions, def) {
202
235
  provider,
203
236
  allowedTools: ['Bash(gh pr:*)'],
204
237
  });
238
+ // Persist the session id on the run BEFORE returning so a server crash
239
+ // between this step and `run_prompt` can still locate the session.
240
+ ctx.recordSessionId?.(session.id);
205
241
  console.log(`[workflow:${def.kind}] Created session ${session.id} for ${repoName} (run ${ctx.runId})`);
206
242
  return { sessionId: session.id, repoPath, repoName, branch: input.branch, lastCommit: input.lastCommit };
207
243
  },
@@ -214,22 +250,40 @@ function registerWorkflow(engine, sessions, def) {
214
250
  const repoName = input.repoName;
215
251
  const repoPath = input.repoPath;
216
252
  const customPrompt = input.customPrompt;
253
+ // If the session is already gone, fail with a typed error before doing any work —
254
+ // gives a much clearer signal than a downstream "Session X not found" stack trace.
255
+ if (!sessions.get(sessionId)) {
256
+ throw new SessionGoneError(ctx.runId, 'run_prompt', sessionId, ctx.run.lastStepAt ?? null);
257
+ }
217
258
  sessions.startClaude(sessionId);
218
259
  await sessions.waitForReady(sessionId);
219
- // Per-repo override: check {repoPath}/.codekin/workflows/{kind}.md
220
- const repoOverride = loadRepoOverride(repoPath, ctx.run.kind);
221
- const basePrompt = repoOverride ? repoOverride.prompt : def.prompt;
222
- const prompt = customPrompt
223
- ? `${basePrompt}\n\nAdditional focus areas:\n${customPrompt}`
224
- : basePrompt;
225
- if (repoOverride) {
226
- console.log(`[workflow:${def.kind}] Using per-repo prompt override from ${repoPath}`);
260
+ if (ctx.resumed) {
261
+ // The prompt was already sent in the original run before the server crashed.
262
+ // Just wait for the result Claude is (still) producing — sending again would
263
+ // duplicate the prompt and fork the conversation.
264
+ console.log(`[workflow:${def.kind}] Resuming run ${ctx.runId}: re-attaching to session ${sessionId} (no re-send)`);
265
+ }
266
+ else {
267
+ // Per-repo override: check {repoPath}/.codekin/workflows/{kind}.md
268
+ const repoOverride = loadRepoOverride(repoPath, ctx.run.kind);
269
+ const basePrompt = repoOverride ? repoOverride.prompt : def.prompt;
270
+ const userPrompt = customPrompt
271
+ ? `${basePrompt}\n\nAdditional focus areas:\n${customPrompt}`
272
+ : basePrompt;
273
+ // Prepend the guard to suppress Claude's CLAUDE.md-driven file-write
274
+ // behavior, which otherwise creates a duplicate report file.
275
+ const prompt = `${WORKFLOW_PROMPT_GUARD}\n\n${userPrompt}`;
276
+ if (repoOverride) {
277
+ console.log(`[workflow:${def.kind}] Using per-repo prompt override from ${repoPath}`);
278
+ }
279
+ sessions.sendInput(sessionId, prompt);
280
+ console.log(`[workflow:${def.kind}] Sent prompt to session ${sessionId} for ${repoName}`);
227
281
  }
228
- sessions.sendInput(sessionId, prompt);
229
- console.log(`[workflow:${def.kind}] Sent prompt to session ${sessionId} for ${repoName}`);
230
282
  const result = await waitForSessionResult(sessions, sessionId, {
231
283
  timeoutMs: 600_000,
232
284
  abortSignal: ctx.abortSignal,
285
+ runId: ctx.runId,
286
+ stepKey: 'run_prompt',
233
287
  });
234
288
  console.log(`[workflow:${def.kind}] Completed for ${repoName} (${result.text.length} chars)`);
235
289
  return {
@@ -274,25 +328,28 @@ function registerWorkflow(engine, sessions, def) {
274
328
  const filePath = join(reportsDir, filename);
275
329
  writeFileSync(filePath, markdown, 'utf-8');
276
330
  console.log(`[workflow:${def.kind}] Saved report to ${filePath}`);
277
- // Commit on a dedicated branch so reports don't pollute the working branch.
278
- // Use a temporary git worktree to avoid stash/checkout races when
279
- // multiple workflow runs target the same repo concurrently.
280
- const REPORTS_BRANCH = 'codekin/reports';
331
+ // Commit on a fresh per-run branch (audit/<kind>-<YYYY-MM-DD>) so each
332
+ // audit gets its own PR and we never append to a stale, long-lived
333
+ // reports branch. Use a temporary git worktree to avoid stash/checkout
334
+ // races when multiple workflow runs target the same repo concurrently.
335
+ const reportsBranch = reportBranchName(def.kind, dateStr);
281
336
  try {
282
337
  const relativePath = `${def.outputDir}/${filename}`;
283
- // Ensure the reports branch exists (create if needed)
338
+ // Ensure the reports branch exists (create if needed). For same-day
339
+ // reruns of the same kind we reuse the existing daily branch and
340
+ // append a new commit.
284
341
  try {
285
- execFileSync('git', ['rev-parse', '--verify', REPORTS_BRANCH], { cwd: repoPath, timeout: 5_000, stdio: 'pipe' });
342
+ execFileSync('git', ['rev-parse', '--verify', reportsBranch], { cwd: repoPath, timeout: 5_000, stdio: 'pipe' });
286
343
  }
287
344
  catch {
288
345
  // Branch doesn't exist yet — create it from the current branch
289
- execFileSync('git', ['branch', REPORTS_BRANCH], { cwd: repoPath, timeout: 5_000 });
290
- console.log(`[workflow:${def.kind}] Created branch ${REPORTS_BRANCH}`);
346
+ execFileSync('git', ['branch', reportsBranch], { cwd: repoPath, timeout: 5_000 });
347
+ console.log(`[workflow:${def.kind}] Created branch ${reportsBranch}`);
291
348
  }
292
349
  // Create a temporary worktree on the reports branch
293
350
  const wtDir = join(repoPath, '..', `.codekin-wt-report-${ctx.runId}`);
294
351
  try {
295
- execFileSync('git', ['worktree', 'add', wtDir, REPORTS_BRANCH], { cwd: repoPath, timeout: 10_000 });
352
+ execFileSync('git', ['worktree', 'add', wtDir, reportsBranch], { cwd: repoPath, timeout: 10_000 });
296
353
  // Write the report file in the worktree
297
354
  const reportsDirInWt = join(wtDir, def.outputDir);
298
355
  if (!existsSync(reportsDirInWt)) {
@@ -301,14 +358,14 @@ function registerWorkflow(engine, sessions, def) {
301
358
  writeFileSync(join(reportsDirInWt, filename), markdown, 'utf-8');
302
359
  execFileSync('git', ['add', relativePath], { cwd: wtDir, timeout: 10_000 });
303
360
  execFileSync('git', ['commit', '-m', `${def.commitMessage} ${dateStr}`], { cwd: wtDir, timeout: 15_000 });
304
- console.log(`[workflow:${def.kind}] Committed ${relativePath} on ${REPORTS_BRANCH}`);
361
+ console.log(`[workflow:${def.kind}] Committed ${relativePath} on ${reportsBranch}`);
305
362
  // Push to remote
306
363
  try {
307
- execFileSync('git', ['push', 'origin', REPORTS_BRANCH], { cwd: wtDir, timeout: 30_000, stdio: 'pipe' });
308
- console.log(`[workflow:${def.kind}] Pushed ${REPORTS_BRANCH} to origin`);
364
+ execFileSync('git', ['push', 'origin', reportsBranch], { cwd: wtDir, timeout: 30_000, stdio: 'pipe' });
365
+ console.log(`[workflow:${def.kind}] Pushed ${reportsBranch} to origin`);
309
366
  }
310
367
  catch (pushErr) {
311
- console.warn(`[workflow:${def.kind}] Could not push ${REPORTS_BRANCH}: ${pushErr}`);
368
+ console.warn(`[workflow:${def.kind}] Could not push ${reportsBranch}: ${pushErr}`);
312
369
  }
313
370
  }
314
371
  finally {
@@ -429,6 +486,19 @@ export function loadMdWorkflows(engine, sessions) {
429
486
  for (const def of defs) {
430
487
  registerWorkflow(engine, sessions, def);
431
488
  }
489
+ // Let the engine consult the session manager when deciding whether an interrupted
490
+ // run is still resumable. Returning null tells the engine the session has gone and
491
+ // the run should fail with a clear, typed reason instead of being skipped silently.
492
+ // (Defensive optional-call so older test doubles without setSessionResolver still pass.)
493
+ engine.setSessionResolver?.((sessionId) => {
494
+ const session = sessions.get(sessionId);
495
+ if (!session)
496
+ return null;
497
+ const lastActivityAt = session._lastActivityAt
498
+ ? new Date(session._lastActivityAt).toISOString()
499
+ : null;
500
+ return { lastActivityAt };
501
+ });
432
502
  console.log(`[workflow-loader] Loaded ${defs.length} workflow(s) from MD definitions`);
433
503
  }
434
504
  //# sourceMappingURL=workflow-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../workflow-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../workflow-loader.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,21 @@ import { Router } from 'express';
8
8
  import type { Request } from 'express';
9
9
  import type { CommitEventHandler } from './commit-event-handler.js';
10
10
  import type { SessionManager } from './session-manager.js';
11
+ /**
12
+ * Parse a GitHub `owner/repo` slug from a git remote URL.
13
+ * Supports SSH (git@github.com:owner/repo.git) and HTTPS (https://github.com/owner/repo.git).
14
+ * Returns null for non-GitHub remotes.
15
+ */
16
+ export declare function parseGitHubSlug(remoteUrl: string): string | null;
17
+ export interface WebhookSetupResult {
18
+ status: 'created' | 'updated' | 'already_configured' | 'failed';
19
+ message: string;
20
+ repo?: string;
21
+ }
11
22
  type VerifyFn = (token: string | undefined) => boolean;
12
23
  type ExtractFn = (req: Request) => string | undefined;
24
+ /** Validate a 5-field cron expression. Returns true if the format is valid. */
25
+ export declare function isValidCron(expr: string): boolean;
13
26
  /**
14
27
  * Sync cron schedules with the current workflow config.
15
28
  * When `sessions` is provided, also registers any standalone repo workflows.
@@ -5,13 +5,82 @@
5
5
  * runs, schedules, and repo config. All routes require auth.
6
6
  */
7
7
  import { Router } from 'express';
8
+ import { execFile } from 'child_process';
9
+ import { promisify } from 'util';
8
10
  import { getWorkflowEngine } from './workflow-engine.js';
9
11
  import { loadWorkflowConfig, addReviewRepo, removeReviewRepo, updateReviewRepo, } from './workflow-config.js';
10
12
  import { listAvailableKinds, ensureRepoWorkflowsRegistered } from './workflow-loader.js';
11
13
  import { syncCommitHooks } from './commit-event-hooks.js';
14
+ import { resolveRepoPathInRoot } from './config.js';
12
15
  import { VALID_PROVIDERS } from './types.js';
16
+ import { previewWebhookSetup, createRepoWebhook, updateRepoWebhook, } from './webhook-github-setup.js';
17
+ import { loadWebhookConfig, generateWebhookSecret, saveWebhookConfig } from './webhook-config.js';
18
+ const execFileAsync = promisify(execFile);
19
+ /**
20
+ * Parse a GitHub `owner/repo` slug from a git remote URL.
21
+ * Supports SSH (git@github.com:owner/repo.git) and HTTPS (https://github.com/owner/repo.git).
22
+ * Returns null for non-GitHub remotes.
23
+ */
24
+ export function parseGitHubSlug(remoteUrl) {
25
+ const match = remoteUrl.trim().match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);
26
+ return match?.[1] ?? null;
27
+ }
28
+ /**
29
+ * Derive the GitHub `owner/repo` slug from a local repo path
30
+ * by parsing the git remote origin URL.
31
+ */
32
+ async function getGitHubSlug(repoPath) {
33
+ try {
34
+ const { stdout } = await execFileAsync('git', ['-C', repoPath, 'remote', 'get-url', 'origin'], { timeout: 5000 });
35
+ return parseGitHubSlug(stdout);
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Auto-setup the GitHub webhook for a PR review workflow.
43
+ * Ensures the webhook config has a secret and is enabled, then
44
+ * creates/updates the webhook on the GitHub repo.
45
+ */
46
+ async function autoSetupPrWebhook(repoPath, webhookUrl) {
47
+ const slug = await getGitHubSlug(repoPath);
48
+ if (!slug) {
49
+ return {
50
+ status: 'failed',
51
+ message: `Could not determine GitHub repository from ${repoPath}. Please set up the webhook manually in Settings.`,
52
+ };
53
+ }
54
+ const preview = await previewWebhookSetup(slug, webhookUrl);
55
+ if (preview.action === 'none') {
56
+ return { status: 'already_configured', message: 'GitHub webhook is already configured.', repo: slug };
57
+ }
58
+ // Ensure server webhook config has a secret and is enabled
59
+ let config = loadWebhookConfig();
60
+ const configUpdates = {};
61
+ if (!config.secret)
62
+ configUpdates.secret = generateWebhookSecret();
63
+ if (!config.enabled)
64
+ configUpdates.enabled = true;
65
+ if (Object.keys(configUpdates).length > 0) {
66
+ saveWebhookConfig(configUpdates);
67
+ config = loadWebhookConfig();
68
+ }
69
+ if (preview.action === 'create') {
70
+ await createRepoWebhook(slug, webhookUrl, config.secret, preview.proposed.events);
71
+ return { status: 'created', message: `GitHub webhook created on ${slug}.`, repo: slug };
72
+ }
73
+ else {
74
+ await updateRepoWebhook(slug, preview.existing.id, {
75
+ events: preview.proposed.events,
76
+ active: true,
77
+ secret: config.secret,
78
+ });
79
+ return { status: 'updated', message: `GitHub webhook updated on ${slug}.`, repo: slug };
80
+ }
81
+ }
13
82
  /** Validate a 5-field cron expression. Returns true if the format is valid. */
14
- function isValidCron(expr) {
83
+ export function isValidCron(expr) {
15
84
  const parts = expr.trim().split(/\s+/);
16
85
  if (parts.length !== 5)
17
86
  return false;
@@ -26,6 +95,11 @@ function isValidCron(expr) {
26
95
  const [min, max] = ranges[i];
27
96
  return part.split(',').every(segment => {
28
97
  const stepMatch = segment.match(/^(.+)\/(\d+)$/);
98
+ if (stepMatch) {
99
+ const step = parseInt(stepMatch[2], 10);
100
+ if (isNaN(step) || step < 1)
101
+ return false;
102
+ }
29
103
  const range = stepMatch ? stepMatch[1] : segment;
30
104
  if (range === '*')
31
105
  return true;
@@ -220,6 +294,9 @@ export function createWorkflowRouter(verifyToken, extractToken, sessions, commit
220
294
  const existing = engine.getSchedule(req.params.id);
221
295
  if (!existing)
222
296
  return res.status(404).json({ error: 'Schedule not found' });
297
+ if (req.body.cronExpression !== undefined && !isValidCron(req.body.cronExpression)) {
298
+ return res.status(400).json({ error: 'Invalid cron expression' });
299
+ }
223
300
  const schedule = engine.upsertSchedule({
224
301
  id: existing.id,
225
302
  kind: existing.kind,
@@ -256,14 +333,17 @@ export function createWorkflowRouter(verifyToken, extractToken, sessions, commit
256
333
  router.get('/config', (_req, res) => {
257
334
  res.json({ config: loadWorkflowConfig() });
258
335
  });
259
- router.post('/config/repos', (req, res) => {
260
- const { id, name, repoPath, cronExpression, enabled, customPrompt, kind, model, provider } = req.body;
336
+ router.post('/config/repos', async (req, res) => {
337
+ const { id, name, repoPath, cronExpression, enabled, customPrompt, kind, model, provider, webhookUrl } = req.body;
261
338
  if (!id || !name || !repoPath || !cronExpression) {
262
339
  return res.status(400).json({ error: 'Missing required fields: id, name, repoPath, cronExpression' });
263
340
  }
264
341
  if (provider && !VALID_PROVIDERS.has(provider)) {
265
342
  return res.status(400).json({ error: `Invalid provider: ${provider}` });
266
343
  }
344
+ if (!resolveRepoPathInRoot(repoPath)) {
345
+ return res.status(400).json({ error: 'Invalid repoPath: must be an existing directory under the configured repos root' });
346
+ }
267
347
  // Register any standalone repo workflows before saving config
268
348
  if (sessions) {
269
349
  try {
@@ -290,9 +370,31 @@ export function createWorkflowRouter(verifyToken, extractToken, sessions, commit
290
370
  catch {
291
371
  // Engine might not be ready yet
292
372
  }
293
- res.json({ config });
373
+ // Auto-setup GitHub webhook for pr-review workflows
374
+ let webhookSetup;
375
+ if (kind === 'pr-review' && webhookUrl) {
376
+ try {
377
+ webhookSetup = await autoSetupPrWebhook(repoPath, webhookUrl);
378
+ }
379
+ catch (err) {
380
+ webhookSetup = {
381
+ status: 'failed',
382
+ message: err instanceof Error ? err.message : 'Webhook setup failed. Please configure it manually in Settings.',
383
+ };
384
+ }
385
+ }
386
+ else if (kind === 'pr-review' && !webhookUrl) {
387
+ webhookSetup = {
388
+ status: 'failed',
389
+ message: 'Webhook URL not provided. Please configure the GitHub webhook manually in Settings.',
390
+ };
391
+ }
392
+ res.json({ config, webhookSetup });
294
393
  });
295
394
  router.patch('/config/repos/:id', (req, res) => {
395
+ if (req.body.repoPath !== undefined && !resolveRepoPathInRoot(req.body.repoPath)) {
396
+ return res.status(400).json({ error: 'Invalid repoPath: must be an existing directory under the configured repos root' });
397
+ }
296
398
  try {
297
399
  const config = updateReviewRepo(req.params.id, req.body);
298
400
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-routes.js","sourceRoot":"","sources":["../workflow-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-routes.js","sourceRoot":"","sources":["../workflow-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Origin-header validation for incoming WebSocket connections.
3
+ *
4
+ * Browsers always send an Origin header on WebSocket handshakes, so a
5
+ * missing Origin in production indicates a non-browser client (curl,
6
+ * proxies, or attackers attempting to bypass the cross-site WebSocket
7
+ * hijacking check). In production we reject those.
8
+ *
9
+ * Dev mode stays relaxed so CLI tools and local scripts continue to work.
10
+ */
11
+ export declare function isWsOriginAllowed(origin: string | undefined, corsOrigin: string, isProduction: boolean): boolean;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Origin-header validation for incoming WebSocket connections.
3
+ *
4
+ * Browsers always send an Origin header on WebSocket handshakes, so a
5
+ * missing Origin in production indicates a non-browser client (curl,
6
+ * proxies, or attackers attempting to bypass the cross-site WebSocket
7
+ * hijacking check). In production we reject those.
8
+ *
9
+ * Dev mode stays relaxed so CLI tools and local scripts continue to work.
10
+ */
11
+ export function isWsOriginAllowed(origin, corsOrigin, isProduction) {
12
+ if (isProduction) {
13
+ return typeof origin === 'string' && origin === corsOrigin;
14
+ }
15
+ // Dev: accept missing Origin (CLI tools); reject only mismatched non-empty Origin.
16
+ if (!origin)
17
+ return true;
18
+ return origin === corsOrigin;
19
+ }
20
+ //# sourceMappingURL=ws-origin-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-origin-check.js","sourceRoot":"","sources":["../ws-origin-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA0B,EAC1B,UAAkB,EAClB,YAAqB;IAErB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAA;IAC5D,CAAC;IACD,mFAAmF;IACnF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,MAAM,KAAK,UAAU,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Per-connection message rate limiter for the WebSocket server.
3
+ *
4
+ * The counter is incremented for *every* observed frame, before any
5
+ * JSON parsing. This prevents a flood of malformed (unparseable) frames
6
+ * from bypassing the limit.
7
+ */
8
+ export interface RateLimitDecision {
9
+ /** True if the frame is within the limit and may be processed. */
10
+ allowed: boolean;
11
+ /** True only on the first frame that exceeds the limit (used to send a single warning). */
12
+ firstOverflow: boolean;
13
+ /** True once the client is sustaining traffic well beyond the limit and should be disconnected. */
14
+ shouldDisconnect: boolean;
15
+ }
16
+ export interface MessageRateLimiter {
17
+ observe(): RateLimitDecision;
18
+ }
19
+ export declare function createMessageRateLimiter(limit?: number, windowMs?: number, now?: () => number): MessageRateLimiter;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Per-connection message rate limiter for the WebSocket server.
3
+ *
4
+ * The counter is incremented for *every* observed frame, before any
5
+ * JSON parsing. This prevents a flood of malformed (unparseable) frames
6
+ * from bypassing the limit.
7
+ */
8
+ export function createMessageRateLimiter(limit = 60, windowMs = 1000, now = () => Date.now()) {
9
+ let count = 0;
10
+ let windowStart = now();
11
+ return {
12
+ observe() {
13
+ const t = now();
14
+ if (t - windowStart >= windowMs) {
15
+ count = 0;
16
+ windowStart = t;
17
+ }
18
+ count++;
19
+ if (count > limit) {
20
+ return {
21
+ allowed: false,
22
+ firstOverflow: count === limit + 1,
23
+ shouldDisconnect: count > limit * 2,
24
+ };
25
+ }
26
+ return { allowed: true, firstOverflow: false, shouldDisconnect: false };
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=ws-rate-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-rate-limit.js","sourceRoot":"","sources":["../ws-rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,MAAM,UAAU,wBAAwB,CACtC,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,IAAI,EACf,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAEpC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,WAAW,GAAG,GAAG,EAAE,CAAA;IACvB,OAAO;QACL,OAAO;YACL,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;gBAChC,KAAK,GAAG,CAAC,CAAA;gBACT,WAAW,GAAG,CAAC,CAAA;YACjB,CAAC;YACD,KAAK,EAAE,CAAA;YACP,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,KAAK,KAAK,KAAK,GAAG,CAAC;oBAClC,gBAAgB,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC;iBACpC,CAAA;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAA;QACzE,CAAC;KACF,CAAA;AACH,CAAC"}