reflectt-node 0.1.4 → 0.1.6

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 (160) hide show
  1. package/README.md +63 -146
  2. package/defaults/TEAM-ROLES.yaml +221 -31
  3. package/dist/activationEvents.d.ts +13 -2
  4. package/dist/activationEvents.d.ts.map +1 -1
  5. package/dist/activationEvents.js +172 -38
  6. package/dist/activationEvents.js.map +1 -1
  7. package/dist/activity.d.ts +72 -0
  8. package/dist/activity.d.ts.map +1 -0
  9. package/dist/activity.js +510 -0
  10. package/dist/activity.js.map +1 -0
  11. package/dist/alert-preflight.d.ts +33 -0
  12. package/dist/alert-preflight.d.ts.map +1 -1
  13. package/dist/alert-preflight.js +218 -2
  14. package/dist/alert-preflight.js.map +1 -1
  15. package/dist/assignment.d.ts.map +1 -1
  16. package/dist/assignment.js +11 -6
  17. package/dist/assignment.js.map +1 -1
  18. package/dist/boardHealthWorker.d.ts.map +1 -1
  19. package/dist/boardHealthWorker.js +25 -12
  20. package/dist/boardHealthWorker.js.map +1 -1
  21. package/dist/canvas-slots.d.ts +1 -1
  22. package/dist/channels.d.ts +1 -1
  23. package/dist/chat-approval-detector.d.ts.map +1 -1
  24. package/dist/chat-approval-detector.js +29 -11
  25. package/dist/chat-approval-detector.js.map +1 -1
  26. package/dist/chat.d.ts +14 -0
  27. package/dist/chat.d.ts.map +1 -1
  28. package/dist/chat.js +68 -4
  29. package/dist/chat.js.map +1 -1
  30. package/dist/cli.js +349 -28
  31. package/dist/cli.js.map +1 -1
  32. package/dist/cloud.d.ts +28 -1
  33. package/dist/cloud.d.ts.map +1 -1
  34. package/dist/cloud.js +62 -25
  35. package/dist/cloud.js.map +1 -1
  36. package/dist/compliance-detector.d.ts +42 -0
  37. package/dist/compliance-detector.d.ts.map +1 -0
  38. package/dist/compliance-detector.js +286 -0
  39. package/dist/compliance-detector.js.map +1 -0
  40. package/dist/continuity-loop.d.ts.map +1 -1
  41. package/dist/continuity-loop.js +7 -3
  42. package/dist/continuity-loop.js.map +1 -1
  43. package/dist/dashboard.d.ts +6 -2
  44. package/dist/dashboard.d.ts.map +1 -1
  45. package/dist/dashboard.js +84 -28
  46. package/dist/dashboard.js.map +1 -1
  47. package/dist/db.d.ts.map +1 -1
  48. package/dist/db.js +24 -1
  49. package/dist/db.js.map +1 -1
  50. package/dist/doctor.d.ts.map +1 -1
  51. package/dist/doctor.js +17 -6
  52. package/dist/doctor.js.map +1 -1
  53. package/dist/executionSweeper.d.ts +2 -0
  54. package/dist/executionSweeper.d.ts.map +1 -1
  55. package/dist/executionSweeper.js +60 -4
  56. package/dist/executionSweeper.js.map +1 -1
  57. package/dist/focus.d.ts +20 -0
  58. package/dist/focus.d.ts.map +1 -0
  59. package/dist/focus.js +57 -0
  60. package/dist/focus.js.map +1 -0
  61. package/dist/health.d.ts +1 -0
  62. package/dist/health.d.ts.map +1 -1
  63. package/dist/health.js +47 -15
  64. package/dist/health.js.map +1 -1
  65. package/dist/hostConnectGuard.d.ts +25 -0
  66. package/dist/hostConnectGuard.d.ts.map +1 -0
  67. package/dist/hostConnectGuard.js +27 -0
  68. package/dist/hostConnectGuard.js.map +1 -0
  69. package/dist/index.js +257 -39
  70. package/dist/index.js.map +1 -1
  71. package/dist/insight-mutation.d.ts +26 -0
  72. package/dist/insight-mutation.d.ts.map +1 -1
  73. package/dist/insight-mutation.js +103 -12
  74. package/dist/insight-mutation.js.map +1 -1
  75. package/dist/insight-task-bridge.d.ts +1 -1
  76. package/dist/insight-task-bridge.d.ts.map +1 -1
  77. package/dist/insight-task-bridge.js +6 -3
  78. package/dist/insight-task-bridge.js.map +1 -1
  79. package/dist/insights.d.ts +20 -0
  80. package/dist/insights.d.ts.map +1 -1
  81. package/dist/insights.js +129 -4
  82. package/dist/insights.js.map +1 -1
  83. package/dist/mcp.d.ts.map +1 -1
  84. package/dist/mcp.js +9 -8
  85. package/dist/mcp.js.map +1 -1
  86. package/dist/notificationDedupeGuard.d.ts +33 -0
  87. package/dist/notificationDedupeGuard.d.ts.map +1 -0
  88. package/dist/notificationDedupeGuard.js +88 -0
  89. package/dist/notificationDedupeGuard.js.map +1 -0
  90. package/dist/openclaw.d.ts.map +1 -1
  91. package/dist/openclaw.js +3 -2
  92. package/dist/openclaw.js.map +1 -1
  93. package/dist/policy.d.ts +1 -1
  94. package/dist/policy.d.ts.map +1 -1
  95. package/dist/policy.js +3 -1
  96. package/dist/policy.js.map +1 -1
  97. package/dist/prAutoMerge.d.ts.map +1 -1
  98. package/dist/prAutoMerge.js +23 -0
  99. package/dist/prAutoMerge.js.map +1 -1
  100. package/dist/presence.d.ts +16 -1
  101. package/dist/presence.d.ts.map +1 -1
  102. package/dist/presence.js +97 -9
  103. package/dist/presence.js.map +1 -1
  104. package/dist/pulse.d.ts +60 -0
  105. package/dist/pulse.d.ts.map +1 -0
  106. package/dist/pulse.js +139 -0
  107. package/dist/pulse.js.map +1 -0
  108. package/dist/reflection-automation.d.ts.map +1 -1
  109. package/dist/reflection-automation.js +38 -0
  110. package/dist/reflection-automation.js.map +1 -1
  111. package/dist/release.d.ts +2 -0
  112. package/dist/release.d.ts.map +1 -1
  113. package/dist/release.js +14 -1
  114. package/dist/release.js.map +1 -1
  115. package/dist/request-tracker.d.ts +6 -0
  116. package/dist/request-tracker.d.ts.map +1 -1
  117. package/dist/request-tracker.js +31 -12
  118. package/dist/request-tracker.js.map +1 -1
  119. package/dist/scopeOverlap.d.ts +32 -0
  120. package/dist/scopeOverlap.d.ts.map +1 -0
  121. package/dist/scopeOverlap.js +219 -0
  122. package/dist/scopeOverlap.js.map +1 -0
  123. package/dist/server.d.ts.map +1 -1
  124. package/dist/server.js +736 -117
  125. package/dist/server.js.map +1 -1
  126. package/dist/service-probe.d.ts.map +1 -1
  127. package/dist/service-probe.js +39 -2
  128. package/dist/service-probe.js.map +1 -1
  129. package/dist/shipped-heartbeat.d.ts +1 -1
  130. package/dist/shipped-heartbeat.js +1 -1
  131. package/dist/taskPrecheck.js +6 -6
  132. package/dist/taskPrecheck.js.map +1 -1
  133. package/dist/tasks-next-diagnostics.d.ts +15 -0
  134. package/dist/tasks-next-diagnostics.d.ts.map +1 -0
  135. package/dist/tasks-next-diagnostics.js +33 -0
  136. package/dist/tasks-next-diagnostics.js.map +1 -0
  137. package/dist/tasks.d.ts +3 -2
  138. package/dist/tasks.d.ts.map +1 -1
  139. package/dist/tasks.js +41 -16
  140. package/dist/tasks.js.map +1 -1
  141. package/dist/team-config.d.ts.map +1 -1
  142. package/dist/team-config.js +20 -0
  143. package/dist/team-config.js.map +1 -1
  144. package/dist/todoHoardingGuard.d.ts +35 -0
  145. package/dist/todoHoardingGuard.d.ts.map +1 -0
  146. package/dist/todoHoardingGuard.js +150 -0
  147. package/dist/todoHoardingGuard.js.map +1 -0
  148. package/dist/types.d.ts +4 -2
  149. package/dist/types.d.ts.map +1 -1
  150. package/dist/version.d.ts +2 -0
  151. package/dist/version.d.ts.map +1 -0
  152. package/dist/version.js +16 -0
  153. package/dist/version.js.map +1 -0
  154. package/dist/working-contract.d.ts.map +1 -1
  155. package/dist/working-contract.js +59 -3
  156. package/dist/working-contract.js.map +1 -1
  157. package/package.json +5 -1
  158. package/public/dashboard.js +161 -20
  159. package/public/docs.md +68 -8
  160. package/public/polls-mock.html +1 -1
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * Entry point
7
7
  */
8
8
  import { createServer } from './server.js';
9
- import { serverConfig, isDev, openclawConfig, DATA_DIR } from './config.js';
9
+ import { serverConfig, isDev, openclawConfig, DATA_DIR, REFLECTT_HOME } from './config.js';
10
10
  import { acquirePidLock, releasePidLock, getPidPath } from './pidlock.js';
11
11
  import { startCloudIntegration, stopCloudIntegration, isCloudConfigured, watchConfigForCloudChanges, stopConfigWatcher } from './cloud.js';
12
12
  import { stopConfigWatch } from './assignment.js';
@@ -17,10 +17,10 @@ import { startTeamConfigLinter, stopTeamConfigLinter } from './team-config.js';
17
17
  * Build-freshness check: warn if dist/ is older than src/
18
18
  * Prevents silently running stale compiled code after source changes.
19
19
  */
20
- import { statSync, readdirSync, existsSync, readFileSync } from 'fs';
20
+ import { statSync, readdirSync, existsSync, readFileSync, writeFileSync } from 'fs';
21
21
  import { join, dirname } from 'path';
22
22
  import { fileURLToPath } from 'url';
23
- import { hostname as osHostname } from 'os';
23
+ import { hostname as osHostname, homedir } from 'os';
24
24
  import { randomBytes } from 'crypto';
25
25
  function checkBuildFreshness() {
26
26
  try {
@@ -149,7 +149,7 @@ function checkDockerBootstrap() {
149
149
  console.log('│ 2. Restart: docker-compose up -d │');
150
150
  console.log('│ │');
151
151
  console.log('│ Get your token: openclaw gateway token │');
152
- console.log('│ Full guide: https://reflectt.ai/bootstrap │');
152
+ console.log('│ Full guide: https://app.reflectt.ai │');
153
153
  console.log('└──────────────────────────────────────────────────────────┘');
154
154
  console.log('');
155
155
  }
@@ -169,6 +169,31 @@ async function main() {
169
169
  checkBuildFreshness();
170
170
  // Docker identity isolation (must run before bootstrap)
171
171
  checkDockerIdentity();
172
+ // Branch guard: refuse to run non-main branch against production DB
173
+ // unless REFLECTT_ALLOW_BRANCH_DB=1 is set
174
+ try {
175
+ const { getBuildInfo } = await import('./buildInfo.js');
176
+ const build = getBuildInfo();
177
+ const branch = build.gitBranch || '';
178
+ const isMainBranch = branch === 'main' || branch === 'master' || branch === '';
179
+ const isProdDb = DATA_DIR === join(homedir(), '.reflectt', 'data');
180
+ const allowOverride = process.env.REFLECTT_ALLOW_BRANCH_DB === '1';
181
+ if (!isMainBranch && isProdDb && !allowOverride) {
182
+ console.error('');
183
+ console.error(`🚫 [BRANCH GUARD] Refusing to start: branch "${branch}" is using production DB path`);
184
+ console.error(` DB path: ${DATA_DIR}`);
185
+ console.error(` Only "main" branch should run against the production database.`);
186
+ console.error(` To override: set REFLECTT_ALLOW_BRANCH_DB=1`);
187
+ console.error('');
188
+ process.exit(1);
189
+ }
190
+ else if (!isMainBranch && isProdDb && allowOverride) {
191
+ console.warn(`⚠️ [BRANCH GUARD] Running branch "${branch}" against production DB (override active)`);
192
+ }
193
+ }
194
+ catch {
195
+ // Non-fatal — skip if build-info not available
196
+ }
172
197
  // Docker bootstrap guidance (non-blocking)
173
198
  checkDockerBootstrap();
174
199
  // Dev-mode port guard: prevent dev servers from hijacking production port
@@ -199,7 +224,10 @@ async function main() {
199
224
  initVectorSearch();
200
225
  }
201
226
  catch {
202
- console.warn('⚠️ Vector search not available (sqlite-vec not installed)');
227
+ // Vector search is optional silent unless debug mode
228
+ if (process.env.DEBUG || process.env.REFLECTT_DEBUG) {
229
+ console.warn('⚠️ Vector search not available (sqlite-vec not installed)');
230
+ }
203
231
  }
204
232
  // Team config linter (TEAM.md + TEAM-ROLES.yaml + TEAM-STANDARDS.md)
205
233
  startTeamConfigLinter();
@@ -209,6 +237,38 @@ async function main() {
209
237
  host: serverConfig.host,
210
238
  });
211
239
  const baseUrl = `http://${serverConfig.host}:${serverConfig.port}`;
240
+ // ── Startup task count guard ──────────────────────────────────────
241
+ // Detect unexpected task count drops that indicate DB wipe/corruption.
242
+ try {
243
+ const db = getDb();
244
+ const currentCount = db.prepare('SELECT COUNT(*) as count FROM tasks').get()?.count ?? 0;
245
+ const lastKnown = db.prepare("SELECT value FROM kv WHERE key = 'startup_task_count'").get();
246
+ const lastCount = lastKnown ? parseInt(lastKnown.value, 10) : 0;
247
+ // Save current count for next startup
248
+ db.prepare("INSERT OR REPLACE INTO kv (key, value) VALUES ('startup_task_count', ?)").run(String(currentCount));
249
+ if (lastCount > 0 && currentCount < lastCount * 0.5) {
250
+ const dropPct = Math.round((1 - currentCount / lastCount) * 100);
251
+ console.error(`🚨 [STARTUP GUARD] Task count dropped ${dropPct}%: ${lastCount} → ${currentCount}. Possible DB wipe/corruption!`);
252
+ console.error(` Data dir: ${DATA_DIR}`);
253
+ console.error(` DB path: ${join(DATA_DIR, 'reflectt.db')}`);
254
+ // Post to chat if possible (best-effort)
255
+ try {
256
+ const { chatManager } = await import('./chat.js');
257
+ await chatManager.sendMessage({
258
+ from: 'system',
259
+ content: `🚨 **STARTUP GUARD ALERT**: Task count dropped ${dropPct}% (${lastCount} → ${currentCount}). Possible DB wipe or corruption. Data dir: \`${DATA_DIR}\``,
260
+ channel: 'ops',
261
+ });
262
+ }
263
+ catch { /* non-critical */ }
264
+ }
265
+ else if (currentCount > 0) {
266
+ console.log(`📊 Startup guard: ${currentCount} tasks (previous: ${lastCount || 'first run'})`);
267
+ }
268
+ }
269
+ catch (err) {
270
+ console.warn('[STARTUP GUARD] Could not run task count check:', err);
271
+ }
212
272
  console.log(`✅ Server running at ${baseUrl}`);
213
273
  console.log(` - Dashboard: ${baseUrl}/dashboard`);
214
274
  console.log(` - REST API: ${baseUrl}`);
@@ -219,12 +279,7 @@ async function main() {
219
279
  if (openclawConfig.gatewayToken) {
220
280
  console.log(`🔗 OpenClaw gateway: configured (${openclawConfig.gatewayUrl})`);
221
281
  }
222
- else {
223
- console.log('⚠️ OpenClaw gateway: not configured');
224
- console.log(' To connect agents, set OPENCLAW_GATEWAY_URL and OPENCLAW_GATEWAY_TOKEN');
225
- console.log(' Get your token: openclaw gateway token');
226
- console.log(' Guide: https://reflectt.ai/bootstrap');
227
- }
282
+ // Note: OpenClaw gateway is optional — suppress the warning for users connecting via Reflectt Cloud
228
283
  // Cloud integration (checks env vars + config.json for credentials)
229
284
  if (isCloudConfigured()) {
230
285
  // Non-blocking: don't prevent server from starting if cloud is down
@@ -233,7 +288,12 @@ async function main() {
233
288
  });
234
289
  }
235
290
  else {
236
- console.log('☁️ Cloud integration: disabled (run `reflectt host connect` to enable)');
291
+ console.log('');
292
+ console.log('☁️ Connect to Reflectt Cloud (optional but recommended):');
293
+ console.log(' 1. Get a join token at: https://app.reflectt.ai → Hosts → Add Host');
294
+ console.log(' 2. Run: npx reflectt host connect --join-token <token>');
295
+ console.log(' (or: reflectt host connect --join-token <token> if installed globally)');
296
+ console.log('');
237
297
  // Watch config.json so we auto-connect when agent enrolls
238
298
  watchConfigForCloudChanges();
239
299
  }
@@ -241,46 +301,204 @@ async function main() {
241
301
  try {
242
302
  const { taskManager } = await import('./tasks.js');
243
303
  const { createStarterTeam } = await import('./starter-team.js');
304
+ // Seed TEAM.md if missing (every new node needs one)
305
+ const teamMdPath = join(REFLECTT_HOME, 'TEAM.md');
306
+ if (!existsSync(teamMdPath)) {
307
+ const teamName = process.env.TEAM_NAME || 'My Team';
308
+ const teamIntent = process.env.TEAM_INTENT || '';
309
+ const teamMdContent = [
310
+ `# ${teamName}`,
311
+ '',
312
+ teamIntent ? `> ${teamIntent}` : '> A team of AI agents working together.',
313
+ '',
314
+ '## How We Work',
315
+ '',
316
+ '- **Reflect → Tasks → Improve** — every insight becomes an actionable task',
317
+ '- **Quality over quantity** — ship fewer things that actually work',
318
+ '- **Read before writing** — understand what exists before changing it',
319
+ '- **Small changes, shipped often** — easier to review, revert, and understand',
320
+ '',
321
+ '## Communication',
322
+ '',
323
+ '- Status updates → task comments first',
324
+ '- Ship announcements → #shipping',
325
+ '- Blockers → #blockers with assignee + task ID',
326
+ '- #general is for decisions and coordination',
327
+ ].join('\n');
328
+ writeFileSync(teamMdPath, teamMdContent, 'utf-8');
329
+ console.log(`🌱 Seeded TEAM.md at ${teamMdPath}`);
330
+ }
244
331
  const allTasks = taskManager.listTasks({});
245
332
  const agentsDir = join(DATA_DIR, 'agents');
246
333
  const hasAgents = existsSync(agentsDir) && readdirSync(agentsDir).filter(f => !f.startsWith('.')).length > 0;
247
334
  if (allTasks.length === 0 && !hasAgents) {
248
- console.log('🌱 First boot detected seeding starter team…');
249
- const result = await createStarterTeam();
250
- console.log(` Created agents: ${result.created.join(', ') || 'none (already exist)'}`);
251
- // Create a welcome task so the dashboard isn't empty
252
- taskManager.createTask({
253
- status: 'todo',
254
- createdBy: 'system',
255
- title: 'Welcome to reflectt-node — explore the dashboard and connect your agents',
256
- description: [
257
- '## Getting Started',
335
+ const teamIntent = process.env.TEAM_INTENT || '';
336
+ if (teamIntent) {
337
+ // ── Intent-driven bootstrap: save intent + create bootstrap task ──
338
+ console.log('🌱 First boot detected with TEAM_INTENT creating bootstrap task…');
339
+ // Save intent to a file the main agent can read
340
+ const intentPath = join(DATA_DIR, 'TEAM_INTENT.md');
341
+ const { writeFileSync, mkdirSync } = await import('node:fs');
342
+ mkdirSync(DATA_DIR, { recursive: true });
343
+ writeFileSync(intentPath, [
344
+ '# Team Intent',
258
345
  '',
259
- 'Your reflectt-node is running! Here\'s what to do next:',
346
+ '> This was provided by the user during onboarding.',
260
347
  '',
261
- '1. **Connect OpenClaw agents** — set `OPENCLAW_GATEWAY_URL` and `OPENCLAW_GATEWAY_TOKEN`',
262
- '2. **Explore the dashboard** — visit `/dashboard` to see tasks, agents, and chat',
263
- '3. **Try the API** — `GET /capabilities` lists every endpoint',
264
- '4. **Connect to the cloud** — `reflectt host connect --join-token <token>`',
348
+ teamIntent,
265
349
  '',
266
- 'When done, move this task to `done`. Your first task cycle is complete!',
267
- ].join('\n'),
268
- priority: 'P2',
269
- assignee: 'builder',
270
- reviewer: 'ops',
271
- done_criteria: [
272
- 'Dashboard loads and shows this task',
273
- 'At least one agent connected via OpenClaw',
274
- ],
275
- metadata: { source: 'first-boot', reflection_exempt: true, reflection_exempt_reason: 'Auto-created welcome task' },
276
- });
277
- console.log(' Created welcome task');
350
+ '---',
351
+ '',
352
+ 'Use `POST /bootstrap/team` to get the TEAM-ROLES.yaml schema,',
353
+ 'then `PUT /config/team-roles` to save your team configuration.',
354
+ ].join('\n'), 'utf-8');
355
+ console.log(` Saved team intent to ${intentPath}`);
356
+ // Create a single "main" agent so the gateway has someone to talk to
357
+ const result = await createStarterTeam({
358
+ agents: [{
359
+ name: 'main',
360
+ role: 'team-lead',
361
+ description: 'Bootstrap agent — reads TEAM_INTENT and creates the rest of the team.',
362
+ soulMd: [
363
+ '# Main Agent',
364
+ '',
365
+ 'You are the first agent on a new team. Your job:',
366
+ '',
367
+ '1. Read TEAM_INTENT.md (in your data directory) — this is what the user wants',
368
+ '2. Call `GET /bootstrap/team` to get the team schema and examples',
369
+ '3. Design a team that fulfills the user\'s intent',
370
+ '4. Save it via `PUT /config/team-roles` with the YAML config',
371
+ '5. Post an intro message to #general explaining the team you built',
372
+ '6. Create initial tasks for each agent',
373
+ '',
374
+ '## The User Said:',
375
+ '',
376
+ teamIntent,
377
+ '',
378
+ '## Rules',
379
+ '- Build the right team for their needs, not a generic template',
380
+ '- Give agents specific names and personalities, not "agent-1"',
381
+ '- Start small (2-4 agents) — they can add more later',
382
+ '- Post to #general when done so the user sees activity immediately',
383
+ ].join('\n'),
384
+ }],
385
+ });
386
+ console.log(` Created bootstrap agent: ${result.created.join(', ') || 'main (already exists)'}`);
387
+ // Create the bootstrap task
388
+ taskManager.createTask({
389
+ status: 'todo',
390
+ createdBy: 'system',
391
+ title: 'Bootstrap your team from the user\'s intent',
392
+ description: [
393
+ '## Your First Task',
394
+ '',
395
+ 'The user described what they need:',
396
+ '',
397
+ `> ${teamIntent}`,
398
+ '',
399
+ '### Steps:',
400
+ '1. Read `TEAM_INTENT.md` for the full intent',
401
+ '2. Call `GET /bootstrap/team` for the TEAM-ROLES.yaml schema',
402
+ '3. Design agents that match what the user needs',
403
+ '4. Save the team config via `PUT /config/team-roles`',
404
+ '5. Post an intro to #general: "Hi! I\'m [name], your team lead. Here\'s the team I\'ve set up..."',
405
+ '6. Create starter tasks for each agent',
406
+ '',
407
+ 'The user should see a working team with named agents when they check the dashboard.',
408
+ ].join('\n'),
409
+ priority: 'P0',
410
+ assignee: 'main',
411
+ done_criteria: [
412
+ 'TEAM-ROLES.yaml saved with agents matching user intent',
413
+ 'Intro message posted to #general',
414
+ 'At least one task created per agent',
415
+ ],
416
+ metadata: { source: 'first-boot-intent', reflection_exempt: true, reflection_exempt_reason: 'Auto-created bootstrap task' },
417
+ });
418
+ console.log(' Created bootstrap task for main agent');
419
+ }
420
+ else {
421
+ // ── Default bootstrap: no intent, create starter team ──
422
+ console.log('🌱 First boot detected — seeding starter team…');
423
+ const result = await createStarterTeam();
424
+ console.log(` Created agents: ${result.created.join(', ') || 'none (already exist)'}`);
425
+ // Create a welcome task so the dashboard isn't empty
426
+ taskManager.createTask({
427
+ status: 'todo',
428
+ createdBy: 'system',
429
+ title: 'Welcome to reflectt-node — explore the dashboard and connect your agents',
430
+ description: [
431
+ '## Getting Started',
432
+ '',
433
+ 'Your reflectt-node is running! Here\'s what to do next:',
434
+ '',
435
+ '1. **Connect OpenClaw agents** — set `OPENCLAW_GATEWAY_URL` and `OPENCLAW_GATEWAY_TOKEN`',
436
+ '2. **Explore the dashboard** — visit `/dashboard` to see tasks, agents, and chat',
437
+ '3. **Try the API** — `GET /capabilities` lists every endpoint',
438
+ '4. **Connect to the cloud** — `reflectt host connect --join-token <token>`',
439
+ '',
440
+ 'When done, move this task to `done`. Your first task cycle is complete!',
441
+ ].join('\n'),
442
+ priority: 'P2',
443
+ assignee: 'builder',
444
+ reviewer: 'ops',
445
+ done_criteria: [
446
+ 'Dashboard loads and shows this task',
447
+ 'At least one agent connected via OpenClaw',
448
+ ],
449
+ metadata: { source: 'first-boot', reflection_exempt: true, reflection_exempt_reason: 'Auto-created welcome task' },
450
+ });
451
+ console.log(' Created welcome task');
452
+ }
453
+ }
454
+ // Print clear next-steps for first-time users
455
+ if (allTasks.length === 0) {
456
+ const cloudConfigured = isCloudConfigured();
457
+ console.log('');
458
+ console.log('┌──────────────────────────────────────────────┐');
459
+ console.log('│ 🎉 reflectt-node is running! │');
460
+ console.log('│ │');
461
+ console.log(`│ Dashboard: ${baseUrl}/dashboard`);
462
+ console.log(`│ API docs: ${baseUrl}/docs`);
463
+ if (!cloudConfigured) {
464
+ console.log('│ │');
465
+ console.log('│ Connect to Reflectt Cloud: │');
466
+ console.log('│ npx reflectt host connect │');
467
+ console.log('│ --join-token <your-token> │');
468
+ }
469
+ console.log('│ │');
470
+ console.log('│ Your agents are ready. Send them a task! │');
471
+ console.log('└──────────────────────────────────────────────┘');
472
+ console.log('');
278
473
  }
279
474
  }
280
475
  catch (err) {
281
476
  // Non-blocking — don't prevent server from starting
282
477
  console.warn(`⚠️ First-boot seeding: ${err?.message || err}`);
283
478
  }
479
+ // Post-restart auto-wake: seed presence + @mention all agents
480
+ try {
481
+ const { getAgentRoles } = await import('./assignment.js');
482
+ const { chatManager } = await import('./chat.js');
483
+ const { presenceManager } = await import('./presence.js');
484
+ const agents = getAgentRoles();
485
+ if (agents.length > 0) {
486
+ // Seed presence so idle-nudge system has agents to evaluate
487
+ for (const agent of agents) {
488
+ presenceManager.updatePresence(agent.name, 'idle');
489
+ }
490
+ const mentions = agents.map(a => `@${a.name}`).join(' ');
491
+ await chatManager.sendMessage({
492
+ from: 'system',
493
+ content: `${mentions} Server restarted. Resume your work.`,
494
+ channel: 'general',
495
+ });
496
+ console.log(`🔔 Auto-wake: seeded presence + pinged ${agents.length} agents`);
497
+ }
498
+ }
499
+ catch (err) {
500
+ console.warn(`⚠️ Auto-wake failed: ${err?.message || err}`);
501
+ }
284
502
  // Graceful shutdown
285
503
  const shutdown = async (signal) => {
286
504
  console.log(`\n${signal} received, shutting down...`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4BAA4B;AAE5B;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1I,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,2EAA2E;AAE3E;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,IAAI,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAEzC,uBAAuB;QACvB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACnE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC/C,IAAI,KAAK,GAAG,SAAS;oBAAE,SAAS,GAAG,KAAK,CAAA;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,OAAM;QAAC,CAAC,CAAC,+BAA+B;QAElD,8BAA8B;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAA;QAE5C,IAAI,SAAS,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,eAAe;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;YACzD,OAAO,CAAC,IAAI,CAAC,mCAAmC,MAAM,yDAAyD,CAAC,CAAA;QAClH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,OAAO,CAAA;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAA;IAEzD,sCAAsC;IACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;IAC3E,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAA;YACjE,MAAM,YAAY,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAA;YAC9C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAA;YAE5B,8DAA8D;YAC9D,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAA;gBACvC,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;gBAC5E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;gBAC3C,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;gBACnF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;IACzD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;YAC9D,MAAM,QAAQ,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAA;YACrC,MAAM,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAA;YACjC,MAAM,UAAU,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAA;YAEzC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;gBACnD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAChB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;oBAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,IAAI,SAAS,KAAK,MAAM,GAAG,CAAC,CAAA;oBAC7D,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;oBAC/F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAChB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;oBAC7C,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;oBACnF,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;oBACxE,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;oBACjF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,UAAU,EAAE,IAAI,OAAO,EAAE,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,sCAAsC,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,OAAO,CAAA;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACxD,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAA;IAE5D,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;SAAM,IAAI,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACzD,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAE3C,uCAAuC;IACvC,mBAAmB,EAAE,CAAA;IAErB,wDAAwD;IACxD,mBAAmB,EAAE,CAAA;IAErB,2CAA2C;IAC3C,oBAAoB,EAAE,CAAA;IAEtB,0EAA0E;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAA;IAC5B,IAAI,KAAK,IAAI,YAAY,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,+CAA+C,eAAe,gCAAgC,CAAC,CAAA;QAC7G,OAAO,CAAC,KAAK,CAAC,iCAAiC,eAAe,GAAG,CAAC,cAAc,CAAC,CAAA;QACjF,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,6EAA6E;IAC7E,2DAA2D;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,gBAAgB,CAAC,MAAM,mBAAmB,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;QAExD,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YACpD,gBAAgB,EAAE,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;QAC5E,CAAC;QAED,qEAAqE;QACrE,qBAAqB,EAAE,CAAA;QAEvB,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAA;QAGhC,MAAM,GAAG,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,IAAI,EAAE,YAAY,CAAC,IAAI;SACxB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,UAAU,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,YAAY,CAAC,CAAA;QACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,UAAU,CAAC,CAAA;QACrF,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,SAAS,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEvC,0BAA0B;QAC1B,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,oCAAoC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAA;QAC/E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;YACnD,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAA;YACxF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;YACxD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;QACxD,CAAC;QAED,oEAAoE;QACpE,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACxB,oEAAoE;YACpE,qBAAqB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClC,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAA;YACtF,0DAA0D;YAC1D,0BAA0B,EAAE,CAAA;QAC9B,CAAC;QAED,oFAAoF;QACpF,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;YAC5G,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;gBAC7D,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAA;gBACxC,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAA;gBAExF,qDAAqD;gBACrD,WAAW,CAAC,UAAU,CAAC;oBACrB,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,0EAA0E;oBACjF,WAAW,EAAE;wBACX,oBAAoB;wBACpB,EAAE;wBACF,yDAAyD;wBACzD,EAAE;wBACF,0FAA0F;wBAC1F,kFAAkF;wBAClF,+DAA+D;wBAC/D,4EAA4E;wBAC5E,EAAE;wBACF,yEAAyE;qBAC1E,CAAC,IAAI,CAAC,IAAI,CAAC;oBACZ,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE;wBACb,qCAAqC;wBACrC,2CAA2C;qBAC5C;oBACD,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE,2BAA2B,EAAE;iBACnH,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oDAAoD;YACpD,OAAO,CAAC,IAAI,CAAC,2BAA4B,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,6BAA6B,CAAC,CAAA;YACrD,eAAe,EAAE,CAAA;YACjB,iBAAiB,EAAE,CAAA;YACnB,oBAAoB,EAAE,CAAA;YACtB,oBAAoB,EAAE,CAAA;YACtB,OAAO,EAAE,CAAA;YACT,cAAc,CAAC,OAAO,CAAC,CAAA;YACvB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,cAAc,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4BAA4B;AAE5B;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1I,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,2EAA2E;AAE3E;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAEzC,uBAAuB;QACvB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACnE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC/C,IAAI,KAAK,GAAG,SAAS;oBAAE,SAAS,GAAG,KAAK,CAAA;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,OAAM;QAAC,CAAC,CAAC,+BAA+B;QAElD,8BAA8B;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAA;QAE5C,IAAI,SAAS,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,eAAe;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;YACzD,OAAO,CAAC,IAAI,CAAC,mCAAmC,MAAM,yDAAyD,CAAC,CAAA;QAClH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,OAAO,CAAA;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAA;IAEzD,sCAAsC;IACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;IAC3E,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAA;YACjE,MAAM,YAAY,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAA;YAC9C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAA;YAE5B,8DAA8D;YAC9D,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAA;gBACvC,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;gBAC5E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;gBAC3C,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;gBACnF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;IACzD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;YAC9D,MAAM,QAAQ,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAA;YACrC,MAAM,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAA;YACjC,MAAM,UAAU,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAA;YAEzC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;gBACnD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAChB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;oBAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,IAAI,SAAS,KAAK,MAAM,GAAG,CAAC,CAAA;oBAC7D,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;oBAC/F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAChB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;oBAC7C,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;oBACnF,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;oBACxE,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;oBACjF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,UAAU,EAAE,IAAI,OAAO,EAAE,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,sCAAsC,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,OAAO,CAAA;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACxD,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAA;IAE5D,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;SAAM,IAAI,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACzD,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAE3C,uCAAuC;IACvC,mBAAmB,EAAE,CAAA;IAErB,wDAAwD;IACxD,mBAAmB,EAAE,CAAA;IAErB,oEAAoE;IACpE,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAA;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QACpC,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,CAAA;QAC9E,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAA;QAElE,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjB,OAAO,CAAC,KAAK,CAAC,gDAAgD,MAAM,+BAA+B,CAAC,CAAA;YACpG,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAA;YACxC,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;YAClF,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;YAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;aAAM,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,sCAAsC,MAAM,2CAA2C,CAAC,CAAA;QACvG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IAED,2CAA2C;IAC3C,oBAAoB,EAAE,CAAA;IAEtB,0EAA0E;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAA;IAC5B,IAAI,KAAK,IAAI,YAAY,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,+CAA+C,eAAe,gCAAgC,CAAC,CAAA;QAC7G,OAAO,CAAC,KAAK,CAAC,iCAAiC,eAAe,GAAG,CAAC,cAAc,CAAC,CAAA;QACjF,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,6EAA6E;IAC7E,2DAA2D;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,gBAAgB,CAAC,MAAM,mBAAmB,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;QAExD,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YACpD,gBAAgB,EAAE,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,qBAAqB,EAAE,CAAA;QAEvB,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAA;QAGhC,MAAM,GAAG,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,IAAI,EAAE,YAAY,CAAC,IAAI;SACxB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,UAAU,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,CAAA;QAElE,qEAAqE;QACrE,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;YAClB,MAAM,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAwB,EAAE,KAAK,IAAI,CAAC,CAAA;YAC/G,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAmC,CAAA;YAC5H,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAE/D,sCAAsC;YACtC,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;YAE/G,IAAI,SAAS,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAA;gBAChE,OAAO,CAAC,KAAK,CAAC,yCAAyC,OAAO,MAAM,SAAS,MAAM,YAAY,gCAAgC,CAAC,CAAA;gBAChI,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;gBACzC,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,CAAA;gBAC7D,yCAAyC;gBACzC,IAAI,CAAC;oBACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;oBACjD,MAAM,WAAW,CAAC,WAAW,CAAC;wBAC5B,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,kDAAkD,OAAO,MAAM,SAAS,MAAM,YAAY,kDAAkD,QAAQ,IAAI;wBACjK,OAAO,EAAE,KAAK;qBACf,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,qBAAqB,SAAS,IAAI,WAAW,GAAG,CAAC,CAAA;YAChG,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;QACtE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,YAAY,CAAC,CAAA;QACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,UAAU,CAAC,CAAA;QACrF,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,SAAS,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEvC,0BAA0B;QAC1B,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,oCAAoC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAA;QAC/E,CAAC;QACD,oGAAoG;QAEpG,oEAAoE;QACpE,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACxB,oEAAoE;YACpE,qBAAqB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClC,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;YACpF,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAA;YACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,0DAA0D;YAC1D,0BAA0B,EAAE,CAAA;QAC9B,CAAC;QAED,oFAAoF;QACpF,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAE/D,qDAAqD;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;YACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAA;gBACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;gBAChD,MAAM,aAAa,GAAG;oBACpB,KAAK,QAAQ,EAAE;oBACf,EAAE;oBACF,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,yCAAyC;oBAC1E,EAAE;oBACF,gBAAgB;oBAChB,EAAE;oBACF,4EAA4E;oBAC5E,oEAAoE;oBACpE,uEAAuE;oBACvE,+EAA+E;oBAC/E,EAAE;oBACF,kBAAkB;oBAClB,EAAE;oBACF,wCAAwC;oBACxC,kCAAkC;oBAClC,gDAAgD;oBAChD,8CAA8C;iBAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACZ,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;gBACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAA;YACnD,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;YAC5G,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;gBAEhD,IAAI,UAAU,EAAE,CAAC;oBACf,qEAAqE;oBACrE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;oBAEjF,gDAAgD;oBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;oBACnD,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;oBAC5D,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;oBACxC,aAAa,CAAC,UAAU,EAAE;wBACxB,eAAe;wBACf,EAAE;wBACF,oDAAoD;wBACpD,EAAE;wBACF,UAAU;wBACV,EAAE;wBACF,KAAK;wBACL,EAAE;wBACF,+DAA+D;wBAC/D,gEAAgE;qBACjE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;oBACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAA;oBAEpD,qEAAqE;oBACrE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;wBACrC,MAAM,EAAE,CAAC;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,uEAAuE;gCACpF,MAAM,EAAE;oCACN,cAAc;oCACd,EAAE;oCACF,kDAAkD;oCAClD,EAAE;oCACF,+EAA+E;oCAC/E,mEAAmE;oCACnE,mDAAmD;oCACnD,8DAA8D;oCAC9D,oEAAoE;oCACpE,wCAAwC;oCACxC,EAAE;oCACF,mBAAmB;oCACnB,EAAE;oCACF,UAAU;oCACV,EAAE;oCACF,UAAU;oCACV,gEAAgE;oCAChE,+DAA+D;oCAC/D,sDAAsD;oCACtD,oEAAoE;iCACrE,CAAC,IAAI,CAAC,IAAI,CAAC;6BACb,CAAC;qBACH,CAAC,CAAA;oBACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAA;oBAElG,4BAA4B;oBAC5B,WAAW,CAAC,UAAU,CAAC;wBACrB,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,QAAQ;wBACnB,KAAK,EAAE,6CAA6C;wBACpD,WAAW,EAAE;4BACX,oBAAoB;4BACpB,EAAE;4BACF,oCAAoC;4BACpC,EAAE;4BACF,KAAK,UAAU,EAAE;4BACjB,EAAE;4BACF,YAAY;4BACZ,8CAA8C;4BAC9C,8DAA8D;4BAC9D,iDAAiD;4BACjD,sDAAsD;4BACtD,mGAAmG;4BACnG,wCAAwC;4BACxC,EAAE;4BACF,qFAAqF;yBACtF,CAAC,IAAI,CAAC,IAAI,CAAC;wBACZ,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,MAAM;wBAChB,aAAa,EAAE;4BACb,wDAAwD;4BACxD,kCAAkC;4BAClC,qCAAqC;yBACtC;wBACD,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE,6BAA6B,EAAE;qBAC5H,CAAC,CAAA;oBACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;gBACzD,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;oBAC7D,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAA;oBACxC,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAA;oBAExF,qDAAqD;oBACrD,WAAW,CAAC,UAAU,CAAC;wBACrB,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,QAAQ;wBACnB,KAAK,EAAE,0EAA0E;wBACjF,WAAW,EAAE;4BACX,oBAAoB;4BACpB,EAAE;4BACF,yDAAyD;4BACzD,EAAE;4BACF,0FAA0F;4BAC1F,kFAAkF;4BAClF,+DAA+D;4BAC/D,4EAA4E;4BAC5E,EAAE;4BACF,yEAAyE;yBAC1E,CAAC,IAAI,CAAC,IAAI,CAAC;wBACZ,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,KAAK;wBACf,aAAa,EAAE;4BACb,qCAAqC;4BACrC,2CAA2C;yBAC5C;wBACD,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE,2BAA2B,EAAE;qBACnH,CAAC,CAAA;oBACF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC;YACD,8CAA8C;YAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAA;gBAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACf,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAA;gBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,OAAO,CAAC,CAAA;gBAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;oBAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;oBAC/D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;oBAC1D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBACjE,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oDAAoD;YACpD,OAAO,CAAC,IAAI,CAAC,2BAA4B,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,8DAA8D;QAC9D,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;YACzD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACjD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,4DAA4D;gBAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBACpD,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxD,MAAM,WAAW,CAAC,WAAW,CAAC;oBAC5B,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,GAAG,QAAQ,sCAAsC;oBAC1D,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,MAAM,CAAC,MAAM,SAAS,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,yBAA0B,GAAa,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,6BAA6B,CAAC,CAAA;YACrD,eAAe,EAAE,CAAA;YACjB,iBAAiB,EAAE,CAAA;YACnB,oBAAoB,EAAE,CAAA;YACtB,oBAAoB,EAAE,CAAA;YACtB,OAAO,EAAE,CAAA;YACT,cAAc,CAAC,OAAO,CAAC,CAAA;YACvB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,cAAc,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
@@ -24,9 +24,35 @@ export interface InsightPatchRequest {
24
24
  cluster_key_override?: string;
25
25
  };
26
26
  }
27
+ export interface InsightCooldownRequest {
28
+ actor: string;
29
+ reason: string;
30
+ /** Absolute ms timestamp; defaults to now+14d */
31
+ cooldown_until?: number;
32
+ /** Stored in cooldown_reason; defaults to reason */
33
+ cooldown_reason?: string;
34
+ /** Optional operator notes (merged into metadata.notes) */
35
+ notes?: string;
36
+ }
37
+ export interface InsightCloseRequest {
38
+ actor: string;
39
+ reason: string;
40
+ /** Optional operator notes (merged into metadata.notes) */
41
+ notes?: string;
42
+ }
27
43
  export declare function patchInsightById(insightId: string, patch: InsightPatchRequest): {
28
44
  success: boolean;
29
45
  insight?: Insight;
30
46
  error?: string;
31
47
  };
48
+ export declare function cooldownInsightById(insightId: string, req: InsightCooldownRequest): {
49
+ success: boolean;
50
+ insight?: Insight;
51
+ error?: string;
52
+ };
53
+ export declare function closeInsightById(insightId: string, req: InsightCloseRequest): {
54
+ success: boolean;
55
+ insight?: Insight;
56
+ error?: string;
57
+ };
32
58
  //# sourceMappingURL=insight-mutation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insight-mutation.d.ts","sourceRoot":"","sources":["../src/insight-mutation.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAMlF,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAClE,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3F;AAED,wBAAgB,8BAA8B,CAAC,KAAK,SAAK,GAAG,yBAAyB,EAAE,CAEtF;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAID,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAC9B,CAAA;CACF;AA6BD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgHvI"}
1
+ {"version":3,"file":"insight-mutation.d.ts","sourceRoot":"","sources":["../src/insight-mutation.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAQlF,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAClE,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3F;AAED,wBAAgB,8BAA8B,CAAC,KAAK,SAAK,GAAG,yBAAyB,EAAE,CAEtF;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAID,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAC9B,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAiED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAwFvI;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,sBAAsB,GAC1B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgDzD;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,mBAAmB,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAwCzD"}
@@ -5,6 +5,7 @@ import path from 'node:path';
5
5
  import { getDb, safeJsonParse, safeJsonStringify } from './db.js';
6
6
  import { DATA_DIR } from './config.js';
7
7
  import { INSIGHT_STATUSES } from './insights.js';
8
+ const DEFAULT_COOLDOWN_14D_MS = 14 * 24 * 60 * 60 * 1000;
8
9
  // ── Audit log ─────────────────────────────────────────────────────────────
9
10
  const AUDIT_FILE = process.env.REFLECTT_INSIGHT_MUTATION_AUDIT_FILE || path.join(DATA_DIR, 'insight-mutation-audit.jsonl');
10
11
  const auditEntries = [];
@@ -47,6 +48,8 @@ function diff(before, after) {
47
48
  'workflow_stage',
48
49
  'failure_family',
49
50
  'impacted_unit',
51
+ 'cooldown_until',
52
+ 'cooldown_reason',
50
53
  'metadata',
51
54
  'updated_at',
52
55
  ];
@@ -58,18 +61,8 @@ function diff(before, after) {
58
61
  }
59
62
  return changes;
60
63
  }
61
- export function patchInsightById(insightId, patch) {
62
- const db = getDb();
63
- if (!patch.actor?.trim())
64
- return { success: false, error: 'actor is required' };
65
- if (!patch.reason?.trim())
66
- return { success: false, error: 'reason is required' };
67
- const row = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
68
- if (!row)
69
- return { success: false, error: 'Insight not found' };
70
- // Defer to rowToInsight mapping via getInsight to keep consistent shapes.
71
- const current = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
72
- const before = {
64
+ function rowToInsightShape(current) {
65
+ return {
73
66
  id: current.id,
74
67
  cluster_key: current.cluster_key,
75
68
  workflow_stage: current.workflow_stage,
@@ -93,6 +86,26 @@ export function patchInsightById(insightId, patch) {
93
86
  created_at: current.created_at,
94
87
  updated_at: current.updated_at,
95
88
  };
89
+ }
90
+ function mergeAllowedMetadata(beforeMeta, notes, cluster_key_override) {
91
+ const next = { ...(beforeMeta ?? {}) };
92
+ if (typeof notes === 'string')
93
+ next.notes = notes;
94
+ if (typeof cluster_key_override === 'string')
95
+ next.cluster_key_override = cluster_key_override;
96
+ return next;
97
+ }
98
+ export function patchInsightById(insightId, patch) {
99
+ const db = getDb();
100
+ if (!patch.actor?.trim())
101
+ return { success: false, error: 'actor is required' };
102
+ if (!patch.reason?.trim())
103
+ return { success: false, error: 'reason is required' };
104
+ const row = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
105
+ if (!row)
106
+ return { success: false, error: 'Insight not found' };
107
+ const current = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
108
+ const before = rowToInsightShape(current);
96
109
  // Validate status
97
110
  if (patch.status !== undefined) {
98
111
  if (!INSIGHT_STATUSES.includes(patch.status)) {
@@ -157,4 +170,82 @@ export function patchInsightById(insightId, patch) {
157
170
  });
158
171
  return { success: true, insight: after };
159
172
  }
173
+ export function cooldownInsightById(insightId, req) {
174
+ const db = getDb();
175
+ if (!req.actor?.trim())
176
+ return { success: false, error: 'actor is required' };
177
+ if (!req.reason?.trim())
178
+ return { success: false, error: 'reason is required' };
179
+ const current = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
180
+ if (!current)
181
+ return { success: false, error: 'Insight not found' };
182
+ const before = rowToInsightShape(current);
183
+ const now = Date.now();
184
+ const until = typeof req.cooldown_until === 'number' && Number.isFinite(req.cooldown_until)
185
+ ? req.cooldown_until
186
+ : now + DEFAULT_COOLDOWN_14D_MS;
187
+ const cooldownReason = (req.cooldown_reason && String(req.cooldown_reason).trim())
188
+ ? String(req.cooldown_reason).trim()
189
+ : req.reason;
190
+ // Merge metadata (allowlist only)
191
+ const beforeMetaStr = (current.metadata ?? null);
192
+ const nextMeta = mergeAllowedMetadata(before.metadata, req.notes);
193
+ const nextMetaStr = safeJsonStringify(nextMeta);
194
+ db.prepare(`
195
+ UPDATE insights SET
196
+ status = 'cooldown',
197
+ cooldown_until = ?,
198
+ cooldown_reason = ?,
199
+ metadata = ?,
200
+ updated_at = ?
201
+ WHERE id = ?
202
+ `).run(until, cooldownReason, nextMetaStr ?? beforeMetaStr, now, insightId);
203
+ const updated = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
204
+ const after = rowToInsightShape(updated);
205
+ void recordInsightMutation({
206
+ timestamp: now,
207
+ insightId,
208
+ actor: req.actor,
209
+ reason: req.reason,
210
+ changes: diff(before, after),
211
+ context: 'POST /insights/:id/cooldown',
212
+ });
213
+ return { success: true, insight: after };
214
+ }
215
+ export function closeInsightById(insightId, req) {
216
+ const db = getDb();
217
+ if (!req.actor?.trim())
218
+ return { success: false, error: 'actor is required' };
219
+ if (!req.reason?.trim())
220
+ return { success: false, error: 'reason is required' };
221
+ const current = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
222
+ if (!current)
223
+ return { success: false, error: 'Insight not found' };
224
+ const before = rowToInsightShape(current);
225
+ const now = Date.now();
226
+ // Merge metadata (allowlist only)
227
+ const beforeMetaStr = (current.metadata ?? null);
228
+ const nextMeta = mergeAllowedMetadata(before.metadata, req.notes);
229
+ const nextMetaStr = safeJsonStringify(nextMeta);
230
+ db.prepare(`
231
+ UPDATE insights SET
232
+ status = 'closed',
233
+ cooldown_until = NULL,
234
+ cooldown_reason = NULL,
235
+ metadata = ?,
236
+ updated_at = ?
237
+ WHERE id = ?
238
+ `).run(nextMetaStr ?? beforeMetaStr, now, insightId);
239
+ const updated = db.prepare('SELECT * FROM insights WHERE id = ?').get(insightId);
240
+ const after = rowToInsightShape(updated);
241
+ void recordInsightMutation({
242
+ timestamp: now,
243
+ insightId,
244
+ actor: req.actor,
245
+ reason: req.reason,
246
+ changes: diff(before, after),
247
+ context: 'POST /insights/:id/close',
248
+ });
249
+ return { success: true, insight: after };
250
+ }
160
251
  //# sourceMappingURL=insight-mutation.js.map