@cat-factory/app 0.147.3 → 0.147.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.
@@ -77,6 +77,10 @@ const META: Record<Notification['type'], { icon: string; color: Accent }> = {
77
77
  // Runs were paused by the spend safeguard. Workspace-scoped (no block to reveal); "act" just
78
78
  // marks it read (the human raises the budget then resumes from the spend panel).
79
79
  budget_paused: { icon: 'i-lucide-wallet', color: 'warning' },
80
+ // Stored credentials could not be decrypted (the ENCRYPTION_KEY changed since they were
81
+ // sealed). Not block-scoped; "act" drops the listed stale ciphertexts so they can be re-entered
82
+ // (or restore the previous key to recover them instead).
83
+ key_drift: { icon: 'i-lucide-key-round', color: 'error' },
80
84
  }
81
85
 
82
86
  // Per-type primary-action label. An exhaustive Record keyed off the notification
@@ -100,6 +104,7 @@ const ACTION_KEYS: Record<Notification['type'], string> = {
100
104
  initiative: 'layout.notifications.action.initiative',
101
105
  platform_health: 'layout.notifications.action.platform_health',
102
106
  budget_paused: 'layout.notifications.action.budget_paused',
107
+ key_drift: 'layout.notifications.action.key_drift',
103
108
  }
104
109
 
105
110
  /** The localized primary-action label for a notification (te()-guarded against a
@@ -70,6 +70,8 @@ const routes = reactive<Record<NotificationType, SlackRoute>>({
70
70
  initiative: { enabled: false, channel: '' },
71
71
  platform_health: { enabled: false, channel: '' },
72
72
  budget_paused: { enabled: false, channel: '' },
73
+ // In-app only (not in ROUTABLE), but the map is exhaustive over the type.
74
+ key_drift: { enabled: false, channel: '' },
73
75
  })
74
76
  const mentionsEnabled = ref(false)
75
77
  // Editable member rows carry a client-only stable `uid` (see `slackMemberMapping`) so
@@ -1745,7 +1745,8 @@
1745
1745
  "markRead": "Als gelesen markieren",
1746
1746
  "fork_decision_pending": "Als gelesen markieren",
1747
1747
  "pr_review_ready": "Als gelesen markieren",
1748
- "budget_paused": "Als gelesen markieren"
1748
+ "budget_paused": "Als gelesen markieren",
1749
+ "key_drift": "Veraltete Zugangsdaten entfernen"
1749
1750
  }
1750
1751
  },
1751
1752
  "aiProvidersBanner": {
@@ -1725,7 +1725,8 @@
1725
1725
  "markRead": "Mark read",
1726
1726
  "fork_decision_pending": "Mark read",
1727
1727
  "pr_review_ready": "Mark read",
1728
- "budget_paused": "Mark read"
1728
+ "budget_paused": "Mark read",
1729
+ "key_drift": "Drop stale credentials"
1729
1730
  }
1730
1731
  },
1731
1732
  "aiProvidersBanner": {
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "Marcar como leída",
1657
1657
  "fork_decision_pending": "Marcar como leído",
1658
1658
  "pr_review_ready": "Marcar como leída",
1659
- "budget_paused": "Marcar como leída"
1659
+ "budget_paused": "Marcar como leída",
1660
+ "key_drift": "Descartar credenciales obsoletas"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "Marcado como resuelto",
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "Marquer comme lu",
1657
1657
  "fork_decision_pending": "Marquer comme lu",
1658
1658
  "pr_review_ready": "Marquer comme lu",
1659
- "budget_paused": "Marquer comme lu"
1659
+ "budget_paused": "Marquer comme lu",
1660
+ "key_drift": "Supprimer les identifiants obsolètes"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "Marqué comme traité",
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "סמן כנקרא",
1657
1657
  "fork_decision_pending": "סמן כנקרא",
1658
1658
  "pr_review_ready": "סמן כנקרא",
1659
- "budget_paused": "סמן כנקרא"
1659
+ "budget_paused": "סמן כנקרא",
1660
+ "key_drift": "מחק אישורים מיושנים"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "סומן כטופל",
@@ -1745,7 +1745,8 @@
1745
1745
  "markRead": "Segna come letto",
1746
1746
  "fork_decision_pending": "Segna come letto",
1747
1747
  "pr_review_ready": "Segna come letto",
1748
- "budget_paused": "Segna come letto"
1748
+ "budget_paused": "Segna come letto",
1749
+ "key_drift": "Elimina credenziali obsolete"
1749
1750
  }
1750
1751
  },
1751
1752
  "aiProvidersBanner": {
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "既読にする",
1657
1657
  "fork_decision_pending": "既読にする",
1658
1658
  "pr_review_ready": "既読にする",
1659
- "budget_paused": "既読にする"
1659
+ "budget_paused": "既読にする",
1660
+ "key_drift": "古い認証情報を削除"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "対応済みにしました",
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "Oznacz jako przeczytane",
1657
1657
  "fork_decision_pending": "Oznacz jako przeczytane",
1658
1658
  "pr_review_ready": "Oznacz jako przeczytane",
1659
- "budget_paused": "Oznacz jako przeczytane"
1659
+ "budget_paused": "Oznacz jako przeczytane",
1660
+ "key_drift": "Usuń nieaktualne poświadczenia"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "Oznaczono jako obsłużone",
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "Okundu işaretle",
1657
1657
  "fork_decision_pending": "Okundu olarak işaretle",
1658
1658
  "pr_review_ready": "Okundu işaretle",
1659
- "budget_paused": "Okundu işaretle"
1659
+ "budget_paused": "Okundu işaretle",
1660
+ "key_drift": "Eski kimlik bilgilerini kaldır"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "İşlendi olarak işaretlendi",
@@ -1656,7 +1656,8 @@
1656
1656
  "markRead": "Позначити прочитаним",
1657
1657
  "fork_decision_pending": "Позначити прочитаним",
1658
1658
  "pr_review_ready": "Позначити прочитаним",
1659
- "budget_paused": "Позначити прочитаним"
1659
+ "budget_paused": "Позначити прочитаним",
1660
+ "key_drift": "Видалити застарілі облікові дані"
1660
1661
  },
1661
1662
  "toast": {
1662
1663
  "acted": "Позначено як опрацьоване",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.147.3",
3
+ "version": "0.147.4",
4
4
  "description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.40",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.154.0"
43
+ "@cat-factory/contracts": "0.154.1"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",