@andypai/agent-kanban 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andypai/agent-kanban",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "description": "Agent-friendly kanban board CLI. Manage tasks via bash commands, parse structured JSON output.",
5
5
  "homepage": "https://github.com/abpai/agent-kanban#readme",
6
6
  "repository": {
@@ -47,6 +47,7 @@ import type {
47
47
  UpdateTaskInput,
48
48
  } from './types'
49
49
  import { DEFAULT_POLLING_SYNC_INTERVAL_MS } from '../sync-config'
50
+ import { warnOnce } from './warn-once'
50
51
 
51
52
  export const FULL_RECONCILE_INTERVAL_MS = 5 * 60_000
52
53
 
@@ -856,7 +857,8 @@ export class JiraProviderCore implements KanbanProvider {
856
857
  // SQLite calls it directly via the default handleWebhook above.
857
858
  protected async handleWebhookCore(payload: WebhookRequest): Promise<WebhookResult> {
858
859
  if (!process.env['JIRA_WEBHOOK_SECRET']) {
859
- console.warn(
860
+ warnOnce(
861
+ 'jira-webhook-open-dev-mode',
860
862
  '[jira] JIRA_WEBHOOK_SECRET is not set — accepting webhook without signature verification (open dev mode)',
861
863
  )
862
864
  }
@@ -35,6 +35,7 @@ import type {
35
35
  UpdateTaskInput,
36
36
  } from './types'
37
37
  import { DEFAULT_POLLING_SYNC_INTERVAL_MS } from '../sync-config'
38
+ import { warnOnce } from './warn-once'
38
39
 
39
40
  const FULL_RECONCILIATION_INTERVAL_MS = 5 * 60_000
40
41
 
@@ -610,7 +611,8 @@ export class LinearProviderCore implements KanbanProvider {
610
611
  // SQLite calls it directly via the default handleWebhook above.
611
612
  protected async handleWebhookCore(payload: WebhookRequest): Promise<WebhookResult> {
612
613
  if (!process.env['LINEAR_WEBHOOK_SECRET']) {
613
- console.warn(
614
+ warnOnce(
615
+ 'linear-webhook-open-dev-mode',
614
616
  '[linear] LINEAR_WEBHOOK_SECRET is not set — accepting webhook without signature verification (open dev mode)',
615
617
  )
616
618
  }
@@ -0,0 +1,9 @@
1
+ const warnedKeys = new Set<string>()
2
+
3
+ // Emit an informational warning at most once per process for a given key, so
4
+ // repeated hot paths (e.g. inbound webhooks) don't flood the dev console.
5
+ export function warnOnce(key: string, message: string): void {
6
+ if (warnedKeys.has(key)) return
7
+ warnedKeys.add(key)
8
+ console.warn(message)
9
+ }