reflectt-node 0.1.15 → 0.1.17
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/README.md +54 -0
- package/defaults/TEAM-ROLES.starter.yaml +87 -0
- package/defaults/lane-templates/ops.json +32 -0
- package/defaults/lane-templates/workflow.json +32 -0
- package/defaults/reviewer-routing.yaml +34 -0
- package/dist/activationEvents.d.ts +7 -1
- package/dist/activationEvents.d.ts.map +1 -1
- package/dist/activationEvents.js +29 -3
- package/dist/activationEvents.js.map +1 -1
- package/dist/activity-stream-normalizer.d.ts +37 -0
- package/dist/activity-stream-normalizer.d.ts.map +1 -0
- package/dist/activity-stream-normalizer.js +101 -0
- package/dist/activity-stream-normalizer.js.map +1 -0
- package/dist/agent-exec-guardrail.d.ts +9 -0
- package/dist/agent-exec-guardrail.d.ts.map +1 -0
- package/dist/agent-exec-guardrail.js +24 -0
- package/dist/agent-exec-guardrail.js.map +1 -0
- package/dist/agent-exec-guardrail.test.d.ts +2 -0
- package/dist/agent-exec-guardrail.test.d.ts.map +1 -0
- package/dist/agent-exec-guardrail.test.js +55 -0
- package/dist/agent-exec-guardrail.test.js.map +1 -0
- package/dist/agent-interface.d.ts +137 -0
- package/dist/agent-interface.d.ts.map +1 -0
- package/dist/agent-interface.js +463 -0
- package/dist/agent-interface.js.map +1 -0
- package/dist/agent-notifications.d.ts +51 -0
- package/dist/agent-notifications.d.ts.map +1 -0
- package/dist/agent-notifications.js +104 -0
- package/dist/agent-notifications.js.map +1 -0
- package/dist/agent-runs.d.ts +29 -2
- package/dist/agent-runs.d.ts.map +1 -1
- package/dist/agent-runs.js +118 -8
- package/dist/agent-runs.js.map +1 -1
- package/dist/artifact-mirror.d.ts.map +1 -1
- package/dist/artifact-mirror.js +4 -1
- package/dist/artifact-mirror.js.map +1 -1
- package/dist/assignment.d.ts.map +1 -1
- package/dist/assignment.js +54 -2
- package/dist/assignment.js.map +1 -1
- package/dist/boardHealthWorker.d.ts.map +1 -1
- package/dist/boardHealthWorker.js +15 -1
- package/dist/boardHealthWorker.js.map +1 -1
- package/dist/canvas-auto-state.d.ts +58 -0
- package/dist/canvas-auto-state.d.ts.map +1 -0
- package/dist/canvas-auto-state.js +89 -0
- package/dist/canvas-auto-state.js.map +1 -0
- package/dist/canvas-routes.d.ts +36 -0
- package/dist/canvas-routes.d.ts.map +1 -0
- package/dist/canvas-routes.js +47 -0
- package/dist/canvas-routes.js.map +1 -0
- package/dist/capability-readiness.d.ts +28 -0
- package/dist/capability-readiness.d.ts.map +1 -0
- package/dist/capability-readiness.js +162 -0
- package/dist/capability-readiness.js.map +1 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +1 -0
- package/dist/channels.js.map +1 -1
- package/dist/cli.js +179 -4
- package/dist/cli.js.map +1 -1
- package/dist/cloud.d.ts +5 -0
- package/dist/cloud.d.ts.map +1 -1
- package/dist/cloud.js +486 -18
- package/dist/cloud.js.map +1 -1
- package/dist/comms-routing-policy.d.ts +31 -0
- package/dist/comms-routing-policy.d.ts.map +1 -0
- package/dist/comms-routing-policy.js +128 -0
- package/dist/comms-routing-policy.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/continuity-loop.d.ts.map +1 -1
- package/dist/continuity-loop.js +26 -0
- package/dist/continuity-loop.js.map +1 -1
- package/dist/cost-enforcement.d.ts.map +1 -1
- package/dist/cost-enforcement.js +22 -0
- package/dist/cost-enforcement.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +56 -5
- package/dist/db.js.map +1 -1
- package/dist/doctor.js +2 -2
- package/dist/events.d.ts +4 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +22 -1
- package/dist/events.js.map +1 -1
- package/dist/executionSweeper.d.ts.map +1 -1
- package/dist/executionSweeper.js +155 -0
- package/dist/executionSweeper.js.map +1 -1
- package/dist/health.d.ts +21 -1
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +164 -19
- package/dist/health.js.map +1 -1
- package/dist/inbox.d.ts +4 -0
- package/dist/inbox.d.ts.map +1 -1
- package/dist/inbox.js +38 -1
- package/dist/inbox.js.map +1 -1
- package/dist/index.js +90 -14
- package/dist/index.js.map +1 -1
- package/dist/insight-auto-tagger.d.ts +58 -0
- package/dist/insight-auto-tagger.d.ts.map +1 -0
- package/dist/insight-auto-tagger.js +331 -0
- package/dist/insight-auto-tagger.js.map +1 -0
- package/dist/insight-task-bridge.d.ts +9 -0
- package/dist/insight-task-bridge.d.ts.map +1 -1
- package/dist/insight-task-bridge.js +43 -7
- package/dist/insight-task-bridge.js.map +1 -1
- package/dist/insights.d.ts +6 -0
- package/dist/insights.d.ts.map +1 -1
- package/dist/insights.js +13 -0
- package/dist/insights.js.map +1 -1
- package/dist/lane-config.d.ts.map +1 -1
- package/dist/lane-config.js +1 -0
- package/dist/lane-config.js.map +1 -1
- package/dist/lane-template-successor.d.ts +13 -0
- package/dist/lane-template-successor.d.ts.map +1 -0
- package/dist/lane-template-successor.js +132 -0
- package/dist/lane-template-successor.js.map +1 -0
- package/dist/local-whisper.d.ts +21 -0
- package/dist/local-whisper.d.ts.map +1 -0
- package/dist/local-whisper.js +137 -0
- package/dist/local-whisper.js.map +1 -0
- package/dist/macos-accessibility.d.ts +50 -0
- package/dist/macos-accessibility.d.ts.map +1 -0
- package/dist/macos-accessibility.js +185 -0
- package/dist/macos-accessibility.js.map +1 -0
- package/dist/manage.d.ts.map +1 -1
- package/dist/manage.js +47 -1
- package/dist/manage.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +123 -0
- package/dist/mcp.js.map +1 -1
- package/dist/notification-worker.d.ts +66 -0
- package/dist/notification-worker.d.ts.map +1 -0
- package/dist/notification-worker.js +232 -0
- package/dist/notification-worker.js.map +1 -0
- package/dist/openclaw-usage-sync.d.ts +28 -0
- package/dist/openclaw-usage-sync.d.ts.map +1 -0
- package/dist/openclaw-usage-sync.js +161 -0
- package/dist/openclaw-usage-sync.js.map +1 -0
- package/dist/policy.js +1 -1
- package/dist/policy.js.map +1 -1
- package/dist/pr-link-reconciler.d.ts +61 -0
- package/dist/pr-link-reconciler.d.ts.map +1 -0
- package/dist/pr-link-reconciler.js +127 -0
- package/dist/pr-link-reconciler.js.map +1 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +9 -2
- package/dist/preflight.js.map +1 -1
- package/dist/presence-narrator.d.ts +52 -0
- package/dist/presence-narrator.d.ts.map +1 -0
- package/dist/presence-narrator.js +193 -0
- package/dist/presence-narrator.js.map +1 -0
- package/dist/presence.d.ts +2 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +23 -3
- package/dist/presence.js.map +1 -1
- package/dist/product-observation-source.d.ts +52 -0
- package/dist/product-observation-source.d.ts.map +1 -0
- package/dist/product-observation-source.js +326 -0
- package/dist/product-observation-source.js.map +1 -0
- package/dist/reflection-automation.d.ts +25 -0
- package/dist/reflection-automation.d.ts.map +1 -1
- package/dist/reflection-automation.js +163 -42
- package/dist/reflection-automation.js.map +1 -1
- package/dist/review-autoclose.d.ts +62 -0
- package/dist/review-autoclose.d.ts.map +1 -0
- package/dist/review-autoclose.js +75 -0
- package/dist/review-autoclose.js.map +1 -0
- package/dist/sentry-webhook.d.ts +69 -0
- package/dist/sentry-webhook.d.ts.map +1 -0
- package/dist/sentry-webhook.js +88 -0
- package/dist/sentry-webhook.js.map +1 -0
- package/dist/sentry.d.ts +29 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +86 -0
- package/dist/sentry.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5146 -223
- package/dist/server.js.map +1 -1
- package/dist/stale-candidate-reconciler.d.ts +69 -0
- package/dist/stale-candidate-reconciler.d.ts.map +1 -0
- package/dist/stale-candidate-reconciler.js +236 -0
- package/dist/stale-candidate-reconciler.js.map +1 -0
- package/dist/system-loop-state.d.ts +1 -1
- package/dist/system-loop-state.d.ts.map +1 -1
- package/dist/system-loop-state.js +1 -0
- package/dist/system-loop-state.js.map +1 -1
- package/dist/taskPrecheck.d.ts.map +1 -1
- package/dist/taskPrecheck.js +47 -2
- package/dist/taskPrecheck.js.map +1 -1
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +130 -0
- package/dist/tasks.js.map +1 -1
- package/dist/trust-events.d.ts +61 -0
- package/dist/trust-events.d.ts.map +1 -0
- package/dist/trust-events.js +148 -0
- package/dist/trust-events.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/usage-tracking.d.ts +6 -0
- package/dist/usage-tracking.d.ts.map +1 -1
- package/dist/usage-tracking.js +14 -0
- package/dist/usage-tracking.js.map +1 -1
- package/dist/voice-sessions.d.ts +51 -0
- package/dist/voice-sessions.d.ts.map +1 -0
- package/dist/voice-sessions.js +143 -0
- package/dist/voice-sessions.js.map +1 -0
- package/dist/workflow-templates.d.ts.map +1 -1
- package/dist/workflow-templates.js +16 -1
- package/dist/workflow-templates.js.map +1 -1
- package/dist/working-contract.d.ts +22 -1
- package/dist/working-contract.d.ts.map +1 -1
- package/dist/working-contract.js +31 -2
- package/dist/working-contract.js.map +1 -1
- package/package.json +4 -4
- package/public/dashboard.js +12 -4
- package/public/docs.md +98 -10
|
@@ -8,6 +8,91 @@ import { policyManager } from './policy.js';
|
|
|
8
8
|
// ── State ──
|
|
9
9
|
const pendingNudges = [];
|
|
10
10
|
const lastNudgeAt = {};
|
|
11
|
+
// Dedup guards for tiered escalation (SIGNAL-ROUTING Change 2)
|
|
12
|
+
// mention fires at most once per 24h per agent; escalate at most once per 48h.
|
|
13
|
+
// task-1773525631162-cjxch4mrz
|
|
14
|
+
const mentionLastAt = {};
|
|
15
|
+
const escalateLastAt = {};
|
|
16
|
+
const MENTION_DEDUP_MS = 24 * 60 * 60 * 1000;
|
|
17
|
+
const ESCALATE_DEDUP_MS = 48 * 60 * 60 * 1000;
|
|
18
|
+
/**
|
|
19
|
+
* 4-tier reflection reminder decision per SIGNAL-ROUTING Change 2 spec.
|
|
20
|
+
*
|
|
21
|
+
* | Overdue | Tier | Channel |
|
|
22
|
+
* |------------|-----------|---------|
|
|
23
|
+
* | < 14h | none | — |
|
|
24
|
+
* | 14h–24h | digest | #ops (batched, no @mention) |
|
|
25
|
+
* | 24h–48h | mention | #ops with @mention, once per 24h |
|
|
26
|
+
* | 48h+ | escalate | #ops with @kai, once per 48h |
|
|
27
|
+
* | post-task | immediate | #general direct to agent |
|
|
28
|
+
*/
|
|
29
|
+
export function getReflectionTier(agent, lastReflectionAt, justCompletedTask, nowMs = Date.now()) {
|
|
30
|
+
if (justCompletedTask)
|
|
31
|
+
return 'immediate';
|
|
32
|
+
const overdueMs = nowMs - lastReflectionAt;
|
|
33
|
+
const overdueHours = overdueMs / (1000 * 60 * 60);
|
|
34
|
+
if (overdueHours < 14)
|
|
35
|
+
return 'none';
|
|
36
|
+
if (overdueHours < 24)
|
|
37
|
+
return 'digest';
|
|
38
|
+
if (overdueHours < 48) {
|
|
39
|
+
// mention: dedup to once per 24h
|
|
40
|
+
const lastMention = mentionLastAt[agent] ?? 0;
|
|
41
|
+
if (nowMs - lastMention < MENTION_DEDUP_MS)
|
|
42
|
+
return 'none';
|
|
43
|
+
mentionLastAt[agent] = nowMs; // record on selection so dispatch doesn't double-set
|
|
44
|
+
return 'mention';
|
|
45
|
+
}
|
|
46
|
+
// escalate: dedup to once per 48h
|
|
47
|
+
const lastEscalate = escalateLastAt[agent] ?? 0;
|
|
48
|
+
if (nowMs - lastEscalate < ESCALATE_DEDUP_MS)
|
|
49
|
+
return 'none';
|
|
50
|
+
escalateLastAt[agent] = nowMs; // record on selection
|
|
51
|
+
return 'escalate';
|
|
52
|
+
}
|
|
53
|
+
/** Exposed for tests — reset dedup state between test runs */
|
|
54
|
+
export function _resetTierDedupForTest() {
|
|
55
|
+
for (const k of Object.keys(mentionLastAt))
|
|
56
|
+
delete mentionLastAt[k];
|
|
57
|
+
for (const k of Object.keys(escalateLastAt))
|
|
58
|
+
delete escalateLastAt[k];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Dispatch a reflection reminder based on the computed tier.
|
|
62
|
+
* digest → batchNag (existing batch-before-post gate, Change 4)
|
|
63
|
+
* mention/escalate → immediate routeMessage to #ops
|
|
64
|
+
* immediate → routeMessage to #general direct to agent
|
|
65
|
+
*/
|
|
66
|
+
export async function dispatchReflectionTier(agent, tier, hoursSince, lastReflectionAt, config) {
|
|
67
|
+
const opsChannel = 'ops';
|
|
68
|
+
const now = Date.now();
|
|
69
|
+
switch (tier) {
|
|
70
|
+
case 'none':
|
|
71
|
+
return;
|
|
72
|
+
case 'digest':
|
|
73
|
+
// Add to ops batch — batchNag handles flush (Change 4)
|
|
74
|
+
batchNag(opsChannel, `@${agent}: reflection ${hoursSince}h overdue — submit when you can`);
|
|
75
|
+
return;
|
|
76
|
+
case 'mention': {
|
|
77
|
+
// mentionLastAt already set in getReflectionTier
|
|
78
|
+
const msg = `🪞 @${agent} reflection overdue ${hoursSince}h — submit when you have a moment. POST /reflections.`;
|
|
79
|
+
await routeMessage({ from: 'system', content: msg, category: 'watchdog-alert', severity: 'warning', forceChannel: opsChannel }).catch(() => { });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
case 'escalate': {
|
|
83
|
+
// escalateLastAt already set in getReflectionTier
|
|
84
|
+
const lastDate = lastReflectionAt > 0 ? new Date(lastReflectionAt).toISOString().slice(0, 10) : 'never';
|
|
85
|
+
const msg = `🚨 @kai @${agent} reflection overdue ${hoursSince}h. Last reflection: ${lastDate}. Needs attention.`;
|
|
86
|
+
await routeMessage({ from: 'system', content: msg, category: 'watchdog-alert', severity: 'critical', forceChannel: opsChannel }).catch(() => { });
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
case 'immediate': {
|
|
90
|
+
const msg = `🪞 @${agent} task complete — good moment to reflect. POST /reflections.`;
|
|
91
|
+
batchNag('ops', msg);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
11
96
|
/** Running guard — prevents concurrent tick calls from firing duplicate nudges */
|
|
12
97
|
let _tickRunning = false;
|
|
13
98
|
/**
|
|
@@ -171,19 +256,32 @@ async function _doTick() {
|
|
|
171
256
|
}
|
|
172
257
|
}
|
|
173
258
|
if (shouldNudge) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
//
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
259
|
+
// Lane-aware suppression: skip nudge if agent has no unblocked todo tasks.
|
|
260
|
+
// Agents whose in-lane queue is genuinely empty cannot take new work —
|
|
261
|
+
// nudging them is a false positive (they're compliant, not idle).
|
|
262
|
+
const unblockedTodo = taskManager.listTasks({
|
|
263
|
+
status: 'todo',
|
|
264
|
+
assigneeIn: [agent],
|
|
265
|
+
}).filter(t => t.status === 'todo');
|
|
266
|
+
if (unblockedTodo.length === 0)
|
|
267
|
+
continue;
|
|
268
|
+
// 4-tier dispatch per SIGNAL-ROUTING Change 2
|
|
269
|
+
const tier = getReflectionTier(agent, lastReflection, false, now);
|
|
270
|
+
if (tier !== 'none') {
|
|
271
|
+
await dispatchReflectionTier(agent, tier, hoursSinceDisplay, lastReflection, config);
|
|
272
|
+
lastNudgeAt[agent] = now;
|
|
273
|
+
// Record nudge in DB
|
|
274
|
+
ensureReflectionTrackingTable();
|
|
275
|
+
const db = getDb();
|
|
276
|
+
db.prepare(`
|
|
277
|
+
INSERT INTO reflection_tracking (agent, last_nudge_at, tasks_done_since_reflection, updated_at)
|
|
278
|
+
VALUES (?, ?, 0, ?)
|
|
279
|
+
ON CONFLICT(agent) DO UPDATE SET
|
|
280
|
+
last_nudge_at = ?,
|
|
281
|
+
updated_at = ?
|
|
282
|
+
`).run(agent, now, now, now, now);
|
|
283
|
+
idleNudges++;
|
|
284
|
+
}
|
|
187
285
|
}
|
|
188
286
|
}
|
|
189
287
|
return { postTaskNudges, idleNudges, total: postTaskNudges + idleNudges };
|
|
@@ -243,41 +341,64 @@ export function getReflectionSLAs() {
|
|
|
243
341
|
return order[a.status] - order[b.status];
|
|
244
342
|
});
|
|
245
343
|
}
|
|
246
|
-
// ──
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
344
|
+
// ── Batch-before-post gate (SIGNAL-ROUTING Change 4) ─────────────────────────
|
|
345
|
+
// All per-agent nags (reflection reminders, idle alerts) go through batchNag()
|
|
346
|
+
// before any channel post. A 5-minute batch window accumulates messages; the
|
|
347
|
+
// flush posts a single Noise Budget Digest instead of N individual posts.
|
|
348
|
+
//
|
|
349
|
+
// Window duration controlled by WATCHDOG_BATCH_WINDOW_MS env var (default 5min).
|
|
350
|
+
// Tests can set WATCHDOG_BATCH_WINDOW_MS to a small value (e.g. 50ms).
|
|
351
|
+
//
|
|
352
|
+
// task-1773525646527-rgpsta72u
|
|
353
|
+
export function getBatchWindowMs() {
|
|
354
|
+
const envVal = process.env.WATCHDOG_BATCH_WINDOW_MS;
|
|
355
|
+
if (envVal)
|
|
356
|
+
return Number(envVal);
|
|
357
|
+
return 5 * 60 * 1000; // 5 minutes (production default)
|
|
358
|
+
}
|
|
359
|
+
// Exported for testing — allows tests to flush the batch manually
|
|
360
|
+
export const _nagBatch = new Map(); // channel → messages
|
|
361
|
+
let _batchTimer = null;
|
|
362
|
+
export function _flushNagBatch() {
|
|
363
|
+
for (const [channel, messages] of _nagBatch.entries()) {
|
|
364
|
+
if (messages.length === 0)
|
|
365
|
+
continue;
|
|
366
|
+
const content = `📋 **Reflection & Idle Digest** (${messages.length} reminder${messages.length !== 1 ? 's' : ''}):\n${messages.map(m => `• ${m}`).join('\n')}`;
|
|
367
|
+
routeMessage({
|
|
258
368
|
from: 'system',
|
|
259
|
-
content
|
|
369
|
+
content,
|
|
260
370
|
category: 'watchdog-alert',
|
|
261
371
|
severity: 'info',
|
|
262
|
-
forceChannel:
|
|
263
|
-
});
|
|
372
|
+
forceChannel: channel,
|
|
373
|
+
}).catch(() => { });
|
|
264
374
|
}
|
|
265
|
-
|
|
375
|
+
_nagBatch.clear();
|
|
376
|
+
_batchTimer = null;
|
|
266
377
|
}
|
|
267
|
-
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
try {
|
|
272
|
-
await routeMessage({
|
|
273
|
-
from: 'system',
|
|
274
|
-
content: msg,
|
|
275
|
-
category: 'watchdog-alert',
|
|
276
|
-
severity: 'warning',
|
|
277
|
-
forceChannel: config.channel || 'general',
|
|
278
|
-
});
|
|
378
|
+
function batchNag(channel, message) {
|
|
379
|
+
const existing = _nagBatch.get(channel);
|
|
380
|
+
if (existing) {
|
|
381
|
+
existing.push(message);
|
|
279
382
|
}
|
|
280
|
-
|
|
383
|
+
else {
|
|
384
|
+
_nagBatch.set(channel, [message]);
|
|
385
|
+
}
|
|
386
|
+
if (!_batchTimer) {
|
|
387
|
+
_batchTimer = setTimeout(_flushNagBatch, getBatchWindowMs());
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// ── Nudge messages ──
|
|
391
|
+
async function sendPostTaskNudge(agent, taskId, taskTitle, config, taskStatus) {
|
|
392
|
+
const isBlocked = taskStatus === 'blocked';
|
|
393
|
+
const msg = isBlocked
|
|
394
|
+
? `🪞 @${agent}: "${taskTitle}" (${taskId}) is blocked — reflect on what's blocking you`
|
|
395
|
+
: `🪞 @${agent}: completed "${taskTitle}" (${taskId}) — what went well, what was painful?`;
|
|
396
|
+
batchNag(config.channel || 'general', msg);
|
|
397
|
+
}
|
|
398
|
+
async function sendIdleNudge(agent, hoursSince, tasksDone, config) {
|
|
399
|
+
const taskNote = tasksDone > 0 ? ` (${tasksDone} task(s) done since last reflection)` : '';
|
|
400
|
+
const msg = `🪞 @${agent}: ${hoursSince}h since last reflection${taskNote} — capture what you've learned`;
|
|
401
|
+
batchNag(config.channel || 'general', msg);
|
|
281
402
|
}
|
|
282
403
|
// ── Helpers ──
|
|
283
404
|
function getConfig() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflection-automation.js","sourceRoot":"","sources":["../src/reflection-automation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reflection-automation.js","sourceRoot":"","sources":["../src/reflection-automation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review auto-close bridge.
|
|
3
|
+
*
|
|
4
|
+
* Parses structured `[review] approved:` / `[review] rejected:` comments
|
|
5
|
+
* posted by the assigned reviewer and auto-fires the review decision,
|
|
6
|
+
* transitioning the task from validating→done or validating→todo.
|
|
7
|
+
*
|
|
8
|
+
* Safety invariants:
|
|
9
|
+
* - Only fires when task.status === 'validating'
|
|
10
|
+
* - Author must match task.reviewer (exact match, case-insensitive)
|
|
11
|
+
* - Parsed via strict regex — no fuzzy matching
|
|
12
|
+
* - Idempotent: ignores if task already past validating
|
|
13
|
+
* - Emits trust event on self-review attempt (reviewer === assignee)
|
|
14
|
+
* - Dry-run safe: `dryRun=true` returns parsed result without mutating
|
|
15
|
+
*
|
|
16
|
+
* Comment format (reviewer posts in task-comments):
|
|
17
|
+
* [review] approved: <comment text>
|
|
18
|
+
* [review] rejected: <comment text>
|
|
19
|
+
*
|
|
20
|
+
* task-1773490646984-eujrozhai
|
|
21
|
+
*/
|
|
22
|
+
/** Result of parsing a comment for a review signal. */
|
|
23
|
+
export interface ReviewSignal {
|
|
24
|
+
detected: boolean;
|
|
25
|
+
decision?: 'approve' | 'reject';
|
|
26
|
+
comment?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a task comment body for a structured review signal.
|
|
30
|
+
*
|
|
31
|
+
* Accepts:
|
|
32
|
+
* [review] approved: <comment>
|
|
33
|
+
* [review] rejected: <comment>
|
|
34
|
+
* [review] approved (no trailing text also accepted)
|
|
35
|
+
*
|
|
36
|
+
* Case-insensitive. Leading/trailing whitespace ignored.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseReviewSignal(content: string): ReviewSignal;
|
|
39
|
+
export interface AutoCloseContext {
|
|
40
|
+
taskId: string;
|
|
41
|
+
taskStatus: string;
|
|
42
|
+
taskReviewer: string | null | undefined;
|
|
43
|
+
taskAssignee: string | null | undefined;
|
|
44
|
+
commentAuthor: string;
|
|
45
|
+
commentContent: string;
|
|
46
|
+
dryRun?: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface AutoCloseResult {
|
|
49
|
+
fired: boolean;
|
|
50
|
+
decision?: 'approve' | 'reject';
|
|
51
|
+
reason?: string;
|
|
52
|
+
dryRun?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Evaluate whether a comment should trigger auto-close, and return the decision.
|
|
56
|
+
* Does NOT mutate — caller is responsible for invoking the review endpoint.
|
|
57
|
+
*
|
|
58
|
+
* Returns fired=true + decision when all safety checks pass.
|
|
59
|
+
* Returns fired=false with reason when skipped.
|
|
60
|
+
*/
|
|
61
|
+
export declare function evaluateAutoClose(ctx: AutoCloseContext): AutoCloseResult;
|
|
62
|
+
//# sourceMappingURL=review-autoclose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-autoclose.d.ts","sourceRoot":"","sources":["../src/review-autoclose.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ/D;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CA6BxE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Review auto-close bridge.
|
|
4
|
+
*
|
|
5
|
+
* Parses structured `[review] approved:` / `[review] rejected:` comments
|
|
6
|
+
* posted by the assigned reviewer and auto-fires the review decision,
|
|
7
|
+
* transitioning the task from validating→done or validating→todo.
|
|
8
|
+
*
|
|
9
|
+
* Safety invariants:
|
|
10
|
+
* - Only fires when task.status === 'validating'
|
|
11
|
+
* - Author must match task.reviewer (exact match, case-insensitive)
|
|
12
|
+
* - Parsed via strict regex — no fuzzy matching
|
|
13
|
+
* - Idempotent: ignores if task already past validating
|
|
14
|
+
* - Emits trust event on self-review attempt (reviewer === assignee)
|
|
15
|
+
* - Dry-run safe: `dryRun=true` returns parsed result without mutating
|
|
16
|
+
*
|
|
17
|
+
* Comment format (reviewer posts in task-comments):
|
|
18
|
+
* [review] approved: <comment text>
|
|
19
|
+
* [review] rejected: <comment text>
|
|
20
|
+
*
|
|
21
|
+
* task-1773490646984-eujrozhai
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Parse a task comment body for a structured review signal.
|
|
25
|
+
*
|
|
26
|
+
* Accepts:
|
|
27
|
+
* [review] approved: <comment>
|
|
28
|
+
* [review] rejected: <comment>
|
|
29
|
+
* [review] approved (no trailing text also accepted)
|
|
30
|
+
*
|
|
31
|
+
* Case-insensitive. Leading/trailing whitespace ignored.
|
|
32
|
+
*/
|
|
33
|
+
export function parseReviewSignal(content) {
|
|
34
|
+
const normalized = content.trim();
|
|
35
|
+
// Match: [review] approved: ... or [review] rejected: ...
|
|
36
|
+
const match = normalized.match(/^\[review\]\s+(approved|rejected)[:\s]*(.*)/i);
|
|
37
|
+
if (!match)
|
|
38
|
+
return { detected: false };
|
|
39
|
+
const decision = match[1].toLowerCase() === 'approved' ? 'approve' : 'reject';
|
|
40
|
+
const comment = (match[2] ?? '').trim() || (decision === 'approve' ? 'Approved via structured review comment' : 'Rejected via structured review comment');
|
|
41
|
+
return { detected: true, decision, comment };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate whether a comment should trigger auto-close, and return the decision.
|
|
45
|
+
* Does NOT mutate — caller is responsible for invoking the review endpoint.
|
|
46
|
+
*
|
|
47
|
+
* Returns fired=true + decision when all safety checks pass.
|
|
48
|
+
* Returns fired=false with reason when skipped.
|
|
49
|
+
*/
|
|
50
|
+
export function evaluateAutoClose(ctx) {
|
|
51
|
+
const { taskStatus, taskReviewer, taskAssignee, commentAuthor, commentContent, dryRun } = ctx;
|
|
52
|
+
// Only act on validating tasks
|
|
53
|
+
if (taskStatus !== 'validating') {
|
|
54
|
+
return { fired: false, reason: `task is ${taskStatus}, not validating` };
|
|
55
|
+
}
|
|
56
|
+
// Must have an assigned reviewer
|
|
57
|
+
if (!taskReviewer) {
|
|
58
|
+
return { fired: false, reason: 'task has no assigned reviewer' };
|
|
59
|
+
}
|
|
60
|
+
// Author must be the assigned reviewer
|
|
61
|
+
if (commentAuthor.trim().toLowerCase() !== taskReviewer.trim().toLowerCase()) {
|
|
62
|
+
return { fired: false, reason: `author "${commentAuthor}" is not the assigned reviewer "${taskReviewer}"` };
|
|
63
|
+
}
|
|
64
|
+
// Parse the comment
|
|
65
|
+
const signal = parseReviewSignal(commentContent);
|
|
66
|
+
if (!signal.detected) {
|
|
67
|
+
return { fired: false, reason: 'no structured [review] signal found in comment' };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
fired: true,
|
|
71
|
+
decision: signal.decision,
|
|
72
|
+
dryRun,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=review-autoclose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-autoclose.js","sourceRoot":"","sources":["../src/review-autoclose.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;GAoBG;AASH;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACjC,0DAA0D;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAC9E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7E,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAA;IACzJ,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC9C,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAE7F,+BAA+B;IAC/B,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,UAAU,kBAAkB,EAAE,CAAA;IAC1E,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAA;IAClE,CAAC;IAED,uCAAuC;IACvC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,aAAa,mCAAmC,YAAY,GAAG,EAAE,CAAA;IAC7G,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAA;IACnF,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentry Webhook → #ops Bridge
|
|
3
|
+
*
|
|
4
|
+
* Parses Sentry webhook payloads (issue alerts, metric alerts, etc.)
|
|
5
|
+
* and formats them as chat messages for the #ops channel.
|
|
6
|
+
*
|
|
7
|
+
* Sentry webhook payload docs:
|
|
8
|
+
* https://docs.sentry.io/organization/integrations/integration-platform/webhooks/
|
|
9
|
+
*/
|
|
10
|
+
interface SentryIssueData {
|
|
11
|
+
id?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
culprit?: string;
|
|
14
|
+
metadata?: {
|
|
15
|
+
type?: string;
|
|
16
|
+
value?: string;
|
|
17
|
+
filename?: string;
|
|
18
|
+
function?: string;
|
|
19
|
+
};
|
|
20
|
+
count?: string | number;
|
|
21
|
+
userCount?: number;
|
|
22
|
+
firstSeen?: string;
|
|
23
|
+
shortId?: string;
|
|
24
|
+
project?: {
|
|
25
|
+
slug?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
id?: string;
|
|
28
|
+
};
|
|
29
|
+
level?: string;
|
|
30
|
+
status?: string;
|
|
31
|
+
}
|
|
32
|
+
interface SentryActor {
|
|
33
|
+
type?: string;
|
|
34
|
+
id?: string;
|
|
35
|
+
name?: string;
|
|
36
|
+
}
|
|
37
|
+
interface SentryWebhookPayload {
|
|
38
|
+
action?: string;
|
|
39
|
+
data?: {
|
|
40
|
+
issue?: SentryIssueData;
|
|
41
|
+
event?: Record<string, unknown>;
|
|
42
|
+
triggered_rule?: string;
|
|
43
|
+
metric_alert?: {
|
|
44
|
+
id?: string | number;
|
|
45
|
+
title?: string;
|
|
46
|
+
alert_rule?: {
|
|
47
|
+
id?: number;
|
|
48
|
+
name?: string;
|
|
49
|
+
};
|
|
50
|
+
status?: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
actor?: SentryActor;
|
|
54
|
+
installation?: {
|
|
55
|
+
uuid?: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Format a Sentry webhook payload as a human-readable chat message.
|
|
60
|
+
* Returns null if the payload isn't actionable (e.g. installation hooks).
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatSentryAlert(payload: SentryWebhookPayload): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Verify Sentry webhook signature (HMAC-SHA256).
|
|
65
|
+
* Returns true if valid or if no secret is configured (permissive mode).
|
|
66
|
+
*/
|
|
67
|
+
export declare function verifySentrySignature(rawBody: string | Buffer, signatureHeader: string | undefined, clientSecret: string | undefined): boolean;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=sentry-webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-webhook.d.ts","sourceRoot":"","sources":["../src/sentry-webhook.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAIH,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,eAAe,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,YAAY,CAAC,EAAE;YACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;YACpB,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,UAAU,CAAC,EAAE;gBAAE,EAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;YAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACjC;AAgBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAkB9E;AA8CD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAkBT"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (c) Reflectt AI
|
|
3
|
+
// ── Severity Emoji ─────────────────────────────────────────────────────────
|
|
4
|
+
function severityEmoji(level) {
|
|
5
|
+
switch (level) {
|
|
6
|
+
case 'fatal': return '💀';
|
|
7
|
+
case 'error': return '🔴';
|
|
8
|
+
case 'warning': return '🟡';
|
|
9
|
+
case 'info': return 'ℹ️';
|
|
10
|
+
default: return '🔴';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// ── Formatters ─────────────────────────────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* Format a Sentry webhook payload as a human-readable chat message.
|
|
16
|
+
* Returns null if the payload isn't actionable (e.g. installation hooks).
|
|
17
|
+
*/
|
|
18
|
+
export function formatSentryAlert(payload) {
|
|
19
|
+
const action = payload.action;
|
|
20
|
+
// Issue alert (most common)
|
|
21
|
+
if (payload.data?.issue) {
|
|
22
|
+
return formatIssueAlert(action, payload.data.issue, payload.data.triggered_rule);
|
|
23
|
+
}
|
|
24
|
+
// Metric alert
|
|
25
|
+
if (payload.data?.metric_alert) {
|
|
26
|
+
const ma = payload.data.metric_alert;
|
|
27
|
+
const ruleName = ma.alert_rule?.name ?? ma.title ?? 'Unknown metric alert';
|
|
28
|
+
const status = ma.status ?? action ?? 'triggered';
|
|
29
|
+
return `📊 **Metric Alert** — ${ruleName}\nStatus: ${status}`;
|
|
30
|
+
}
|
|
31
|
+
// Unrecognized / installation / comment hooks — skip
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function formatIssueAlert(action, issue, triggeredRule) {
|
|
35
|
+
const emoji = severityEmoji(issue.level);
|
|
36
|
+
const title = issue.title ?? 'Unknown error';
|
|
37
|
+
const project = issue.project?.slug ?? issue.project?.name ?? 'unknown';
|
|
38
|
+
const shortId = issue.shortId ?? issue.id ?? '?';
|
|
39
|
+
const count = issue.count ?? '?';
|
|
40
|
+
// Build file/function hint
|
|
41
|
+
const file = issue.metadata?.filename ?? issue.culprit ?? null;
|
|
42
|
+
const fn = issue.metadata?.function ?? null;
|
|
43
|
+
const location = file ? (fn ? `${file} in ${fn}` : file) : null;
|
|
44
|
+
// Action verb
|
|
45
|
+
const verb = action === 'resolved' ? '✅ Resolved'
|
|
46
|
+
: action === 'assigned' ? '👤 Assigned'
|
|
47
|
+
: action === 'archived' ? '📦 Archived'
|
|
48
|
+
: action === 'unresolved' ? '🔄 Reopened'
|
|
49
|
+
: `${emoji} Triggered`;
|
|
50
|
+
const lines = [
|
|
51
|
+
`${verb}: **${title}**`,
|
|
52
|
+
`Project: ${project} · ${shortId} · ${count} event(s)`,
|
|
53
|
+
];
|
|
54
|
+
if (location) {
|
|
55
|
+
lines.push(`📁 ${location}`);
|
|
56
|
+
}
|
|
57
|
+
if (triggeredRule) {
|
|
58
|
+
lines.push(`Rule: ${triggeredRule}`);
|
|
59
|
+
}
|
|
60
|
+
// Sentry issue URL (conventional format)
|
|
61
|
+
if (issue.project?.slug && issue.id) {
|
|
62
|
+
lines.push(`🔗 https://sentry.io/issues/${issue.id}/`);
|
|
63
|
+
}
|
|
64
|
+
return lines.join('\n');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Verify Sentry webhook signature (HMAC-SHA256).
|
|
68
|
+
* Returns true if valid or if no secret is configured (permissive mode).
|
|
69
|
+
*/
|
|
70
|
+
export function verifySentrySignature(rawBody, signatureHeader, clientSecret) {
|
|
71
|
+
// If no secret configured, accept all (permissive mode for initial setup)
|
|
72
|
+
if (!clientSecret)
|
|
73
|
+
return true;
|
|
74
|
+
if (!signatureHeader)
|
|
75
|
+
return false;
|
|
76
|
+
try {
|
|
77
|
+
const crypto = require('crypto');
|
|
78
|
+
const expected = crypto
|
|
79
|
+
.createHmac('sha256', clientSecret)
|
|
80
|
+
.update(rawBody)
|
|
81
|
+
.digest('hex');
|
|
82
|
+
return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected));
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=sentry-webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-webhook.js","sourceRoot":"","sources":["../src/sentry-webhook.ts"],"names":[],"mappings":"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"}
|
package/dist/sentry.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentry Integration
|
|
3
|
+
*
|
|
4
|
+
* Initializes Sentry error tracking for reflectt-node.
|
|
5
|
+
* Only activates when SENTRY_DSN environment variable is set.
|
|
6
|
+
*
|
|
7
|
+
* Setup:
|
|
8
|
+
* 1. Create a Sentry project at sentry.io
|
|
9
|
+
* 2. Set SENTRY_DSN env var to the project's DSN
|
|
10
|
+
* 3. Optionally set SENTRY_ENVIRONMENT (defaults to 'production')
|
|
11
|
+
* 4. Optionally set SENTRY_CLIENT_SECRET for webhook signature verification
|
|
12
|
+
*/
|
|
13
|
+
import * as Sentry from '@sentry/node';
|
|
14
|
+
export declare function initSentry(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Capture an exception and send to Sentry.
|
|
17
|
+
* No-op if Sentry is not initialized.
|
|
18
|
+
*/
|
|
19
|
+
export declare function captureException(error: Error | unknown, context?: Record<string, unknown>): void;
|
|
20
|
+
/**
|
|
21
|
+
* Capture a message and send to Sentry.
|
|
22
|
+
*/
|
|
23
|
+
export declare function captureMessage(message: string, level?: 'info' | 'warning' | 'error'): void;
|
|
24
|
+
/**
|
|
25
|
+
* Flush pending events before shutdown.
|
|
26
|
+
*/
|
|
27
|
+
export declare function flushSentry(timeoutMs?: number): Promise<void>;
|
|
28
|
+
export { Sentry };
|
|
29
|
+
//# sourceMappingURL=sentry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAItC,wBAAgB,UAAU,IAAI,OAAO,CA2CpC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAS,GAAG,OAAgB,GAAG,IAAI,CAGlG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
|