cmp-standards 2.8.1 → 2.9.1

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 (95) hide show
  1. package/dist/analytics/CrossProjectAnalytics.d.ts +128 -0
  2. package/dist/analytics/CrossProjectAnalytics.d.ts.map +1 -0
  3. package/dist/analytics/CrossProjectAnalytics.js +431 -0
  4. package/dist/analytics/CrossProjectAnalytics.js.map +1 -0
  5. package/dist/analytics/index.d.ts +1 -0
  6. package/dist/analytics/index.d.ts.map +1 -1
  7. package/dist/analytics/index.js +2 -0
  8. package/dist/analytics/index.js.map +1 -1
  9. package/dist/cache/EmbeddingCache.d.ts +6 -4
  10. package/dist/cache/EmbeddingCache.d.ts.map +1 -1
  11. package/dist/cache/EmbeddingCache.js +28 -17
  12. package/dist/cache/EmbeddingCache.js.map +1 -1
  13. package/dist/cli/index.js +247 -141
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/ui.d.ts +134 -0
  16. package/dist/cli/ui.d.ts.map +1 -0
  17. package/dist/cli/ui.js +311 -0
  18. package/dist/cli/ui.js.map +1 -0
  19. package/dist/dashboard/tokens.d.ts +228 -0
  20. package/dist/dashboard/tokens.d.ts.map +1 -0
  21. package/dist/dashboard/tokens.js +450 -0
  22. package/dist/dashboard/tokens.js.map +1 -0
  23. package/dist/dashboard/ui.d.ts +3 -0
  24. package/dist/dashboard/ui.d.ts.map +1 -1
  25. package/dist/dashboard/ui.js +95 -61
  26. package/dist/dashboard/ui.js.map +1 -1
  27. package/dist/db/cloud.d.ts +11 -0
  28. package/dist/db/cloud.d.ts.map +1 -1
  29. package/dist/db/cloud.js +49 -1
  30. package/dist/db/cloud.js.map +1 -1
  31. package/dist/db/migrations.d.ts +1 -0
  32. package/dist/db/migrations.d.ts.map +1 -1
  33. package/dist/db/migrations.js +109 -0
  34. package/dist/db/migrations.js.map +1 -1
  35. package/dist/hooks/index.d.ts +1 -0
  36. package/dist/hooks/index.d.ts.map +1 -1
  37. package/dist/hooks/index.js +2 -0
  38. package/dist/hooks/index.js.map +1 -1
  39. package/dist/hooks/startup-verify.d.ts +31 -0
  40. package/dist/hooks/startup-verify.d.ts.map +1 -0
  41. package/dist/hooks/startup-verify.js +360 -0
  42. package/dist/hooks/startup-verify.js.map +1 -0
  43. package/dist/plugins/PluginManager.d.ts +160 -0
  44. package/dist/plugins/PluginManager.d.ts.map +1 -0
  45. package/dist/plugins/PluginManager.js +417 -0
  46. package/dist/plugins/PluginManager.js.map +1 -0
  47. package/dist/plugins/index.d.ts +7 -0
  48. package/dist/plugins/index.d.ts.map +1 -0
  49. package/dist/plugins/index.js +7 -0
  50. package/dist/plugins/index.js.map +1 -0
  51. package/dist/services/AuditLog.d.ts +205 -0
  52. package/dist/services/AuditLog.d.ts.map +1 -0
  53. package/dist/services/AuditLog.js +352 -0
  54. package/dist/services/AuditLog.js.map +1 -0
  55. package/dist/services/FeedbackCollector.d.ts +8 -0
  56. package/dist/services/FeedbackCollector.d.ts.map +1 -1
  57. package/dist/services/FeedbackCollector.js +19 -2
  58. package/dist/services/FeedbackCollector.js.map +1 -1
  59. package/dist/services/GitIntegration.d.ts +140 -0
  60. package/dist/services/GitIntegration.d.ts.map +1 -0
  61. package/dist/services/GitIntegration.js +423 -0
  62. package/dist/services/GitIntegration.js.map +1 -0
  63. package/dist/services/HookVerifier.d.ts +95 -0
  64. package/dist/services/HookVerifier.d.ts.map +1 -0
  65. package/dist/services/HookVerifier.js +493 -0
  66. package/dist/services/HookVerifier.js.map +1 -0
  67. package/dist/services/MemoryVersioning.d.ts +108 -0
  68. package/dist/services/MemoryVersioning.d.ts.map +1 -0
  69. package/dist/services/MemoryVersioning.js +281 -0
  70. package/dist/services/MemoryVersioning.js.map +1 -0
  71. package/dist/services/context-injector.d.ts +8 -0
  72. package/dist/services/context-injector.d.ts.map +1 -1
  73. package/dist/services/context-injector.js +19 -2
  74. package/dist/services/context-injector.js.map +1 -1
  75. package/dist/services/index.d.ts +4 -0
  76. package/dist/services/index.d.ts.map +1 -1
  77. package/dist/services/index.js +5 -0
  78. package/dist/services/index.js.map +1 -1
  79. package/dist/services/memory-router.d.ts +8 -0
  80. package/dist/services/memory-router.d.ts.map +1 -1
  81. package/dist/services/memory-router.js +19 -2
  82. package/dist/services/memory-router.js.map +1 -1
  83. package/dist/services/pattern-tracker.d.ts +13 -0
  84. package/dist/services/pattern-tracker.d.ts.map +1 -1
  85. package/dist/services/pattern-tracker.js +33 -3
  86. package/dist/services/pattern-tracker.js.map +1 -1
  87. package/dist/services/semantic-search.d.ts +4 -0
  88. package/dist/services/semantic-search.d.ts.map +1 -1
  89. package/dist/services/semantic-search.js +53 -13
  90. package/dist/services/semantic-search.js.map +1 -1
  91. package/dist/types/index.d.ts +1 -0
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/index.js +1 -0
  94. package/dist/types/index.js.map +1 -1
  95. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/dashboard/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,kBAAkB;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,iBAAiB;IACjB,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,kBAAkB;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,cAAc;IACd,GAAG,EAAE;QACH,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,mBAAmB;IACnB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,mBAAmB;IACnB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;IACD,kBAAkB;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;KACf;CACO,CAAA;AAEV,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,oBAAoB;IACpB,EAAE,EAAE;QACF,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KAC1B;IAED,cAAc;IACd,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KAC7B;IAED,gBAAgB;IAChB,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;KACzB;IAED,qBAAqB;IACrB,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QACxB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KACjC;IAED,8BAA8B;IAC9B,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KAC5B;IAED,mBAAmB;IACnB,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;KACxB;IAED,UAAU;IACV,MAAM,EAAE;QACN,EAAE,EAAE,+BAA+B;QACnC,OAAO,EAAE,+DAA+D;QACxE,EAAE,EAAE,kEAAkE;QACtE,EAAE,EAAE,oEAAoE;KACzE;IAED,gBAAgB;IAChB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,QAAQ;QACjB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,QAAQ;KACf;IAED,gBAAgB;IAChB,OAAO,EAAE;QACP,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,MAAM;QACT,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM;KACX;IAED,aAAa;IACb,IAAI,EAAE;QACJ,IAAI,EAAE,8EAA8E;QACpF,IAAI,EAAE,6EAA6E;KACpF;IAED,QAAQ,EAAE;QACR,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,UAAU;KAClB;IAED,UAAU,EAAE;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,KAAK;KACZ;IAED,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO;KACjB;IAED,cAAc;IACd,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,YAAY;KACnB;IAED,gBAAgB;IAChB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;QACb,aAAa,EAAE,MAAM;QACrB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;KAChB;CACO,CAAA;AAEV,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAE,MAAM,GAAG,EAAE,EAAY,EAAE;QAC5E,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAgC,EAAE,OAAO,CAAC,CAAC,CAAA;YACxE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,KAAK,GAAG,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,OAAO,cAAc,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmKR,CAAA;AACD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,GAAG,oBAAoB,EAAE;;;;;;;;;;EAUhC,uBAAuB,EAAE,EAAE,CAAA;AAC7B,CAAC;AAUD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,OAAO,eAAe,KAAK,EAAE,CAAA;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkD;IAC/E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC"}
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Generates a self-contained React dashboard as HTML string.
5
5
  * No build step required - uses CDN for React.
6
+ * Uses semantic design tokens for consistent theming.
7
+ *
8
+ * @version 2.9.0
6
9
  */
7
10
  import type { DevSystem } from '../types/index.js';
8
11
  export declare function generateDashboardHTML(system: DevSystem): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA0gB/D"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAyiB/D"}
@@ -3,8 +3,13 @@
3
3
  *
4
4
  * Generates a self-contained React dashboard as HTML string.
5
5
  * No build step required - uses CDN for React.
6
+ * Uses semantic design tokens for consistent theming.
7
+ *
8
+ * @version 2.9.0
6
9
  */
10
+ import { generateDashboardCSS } from './tokens.js';
7
11
  export function generateDashboardHTML(system) {
12
+ const dashboardCSS = generateDashboardCSS();
8
13
  return `<!DOCTYPE html>
9
14
  <html lang="en">
10
15
  <head>
@@ -16,18 +21,7 @@ export function generateDashboardHTML(system) {
16
21
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
17
22
  <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
18
23
  <style>
19
- body { background: #0f172a; color: #e2e8f0; font-family: system-ui, -apple-system, sans-serif; }
20
- .card { background: #1e293b; border: 1px solid #334155; border-radius: 0.5rem; }
21
- .badge { padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.75rem; font-weight: 500; }
22
- .badge-critical { background: #991b1b; color: #fecaca; }
23
- .badge-high { background: #9a3412; color: #fed7aa; }
24
- .badge-medium { background: #854d0e; color: #fef08a; }
25
- .badge-low { background: #166534; color: #bbf7d0; }
26
- .stat-card { background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); }
27
- .tab-active { border-bottom: 2px solid #3b82f6; color: #3b82f6; }
28
- .scrollbar-thin::-webkit-scrollbar { width: 6px; }
29
- .scrollbar-thin::-webkit-scrollbar-track { background: #1e293b; }
30
- .scrollbar-thin::-webkit-scrollbar-thumb { background: #475569; border-radius: 3px; }
24
+ ${dashboardCSS}
31
25
  </style>
32
26
  </head>
33
27
  <body>
@@ -106,64 +100,71 @@ export function generateDashboardHTML(system) {
106
100
 
107
101
  function MemoryCard({ memory, onFeedback, onDelete }) {
108
102
  const [expanded, setExpanded] = useState(false);
103
+ const cardId = 'memory-' + memory.id;
109
104
 
110
105
  return (
111
- <div className="card p-4 mb-3">
106
+ <article className="card p-4 mb-3" aria-labelledby={cardId + '-title'}>
112
107
  <div className="flex items-start justify-between">
113
108
  <div className="flex-1">
114
- <h3 className="font-semibold text-blue-400">{memory.title}</h3>
115
- <div className="flex items-center gap-2 mt-1">
109
+ <h3 id={cardId + '-title'} className="font-semibold text-blue-400">{memory.title}</h3>
110
+ <div className="flex items-center gap-2 mt-1" role="group" aria-label="Memory metadata">
116
111
  {memory.domain && (
117
- <span className="badge bg-blue-900 text-blue-300">{memory.domain}</span>
112
+ <span className="badge bg-blue-900 text-blue-300" aria-label={'Domain: ' + memory.domain}>{memory.domain}</span>
118
113
  )}
119
114
  {memory.source && (
120
- <span className="badge bg-gray-700 text-gray-300">{memory.source}</span>
115
+ <span className="badge bg-gray-700 text-gray-300" aria-label={'Source: ' + memory.source}>{memory.source}</span>
121
116
  )}
122
117
  </div>
123
118
  </div>
124
119
  <button
125
120
  onClick={() => setExpanded(!expanded)}
126
- className="text-gray-400 hover:text-white"
121
+ className="text-gray-400 hover:text-white p-2"
122
+ aria-expanded={expanded}
123
+ aria-controls={cardId + '-details'}
124
+ aria-label={expanded ? 'Collapse memory details' : 'Expand memory details'}
127
125
  >
128
126
  {expanded ? '▲' : '▼'}
129
127
  </button>
130
128
  </div>
131
129
 
132
130
  {expanded && (
133
- <div className="mt-3 pt-3 border-t border-gray-700">
131
+ <div id={cardId + '-details'} className="mt-3 pt-3 border-t border-gray-700">
134
132
  <p className="text-gray-300 whitespace-pre-wrap text-sm">{memory.body}</p>
135
133
 
136
134
  {memory.tags && memory.tags.length > 0 && (
137
- <div className="flex flex-wrap gap-1 mt-3">
135
+ <div className="flex flex-wrap gap-1 mt-3" role="list" aria-label="Tags">
138
136
  {memory.tags.map((tag, i) => (
139
- <span key={i} className="badge bg-gray-700 text-gray-300">{tag}</span>
137
+ <span key={i} className="badge bg-gray-700 text-gray-300" role="listitem">{tag}</span>
140
138
  ))}
141
139
  </div>
142
140
  )}
143
141
 
144
- <div className="flex items-center gap-2 mt-3">
142
+ <div className="flex items-center gap-2 mt-3" role="group" aria-label="Memory actions">
145
143
  <button
146
144
  onClick={() => onFeedback(memory.id, true)}
147
- className="px-3 py-1 bg-green-900 text-green-300 rounded text-sm hover:bg-green-800"
145
+ className="px-4 py-2 bg-green-900 text-green-300 rounded text-sm hover:bg-green-800"
146
+ aria-label="Mark memory as helpful"
148
147
  >
149
148
  Helpful
150
149
  </button>
151
150
  <button
152
151
  onClick={() => onFeedback(memory.id, false)}
153
- className="px-3 py-1 bg-red-900 text-red-300 rounded text-sm hover:bg-red-800"
152
+ className="px-4 py-2 bg-red-900 text-red-300 rounded text-sm hover:bg-red-800"
153
+ aria-label="Mark memory as not helpful"
154
154
  >
155
155
  Not Helpful
156
156
  </button>
157
157
  <button
158
158
  onClick={() => onDelete(memory.id)}
159
- className="px-3 py-1 bg-gray-700 text-gray-300 rounded text-sm hover:bg-gray-600 ml-auto"
159
+ className="px-4 py-2 bg-gray-700 text-gray-300 rounded text-sm hover:bg-gray-600 ml-auto"
160
+ aria-label={'Delete memory: ' + memory.title}
160
161
  >
161
162
  Delete
162
163
  </button>
163
164
  </div>
164
165
 
165
166
  <p className="text-gray-500 text-xs mt-2">
166
- Created: {new Date(memory.createdAt).toLocaleString()}
167
+ Created: <time dateTime={memory.createdAt}>{new Date(memory.createdAt).toLocaleString()}</time>
167
168
  </p>
168
169
  </div>
169
170
  )}
@@ -249,35 +250,49 @@ export function generateDashboardHTML(system) {
249
250
  };
250
251
 
251
252
  return (
252
- <form onSubmit={handleSubmit} className="card p-4 mb-4">
253
- <h3 className="font-semibold text-blue-400 mb-3">New Memory</h3>
253
+ <form onSubmit={handleSubmit} className="card p-4 mb-4" aria-labelledby="new-memory-heading">
254
+ <h3 id="new-memory-heading" className="font-semibold text-blue-400 mb-3">New Memory</h3>
254
255
 
255
256
  <div className="space-y-3">
256
- <input
257
- type="text"
258
- value={title}
259
- onChange={(e) => setTitle(e.target.value)}
260
- placeholder="Title"
261
- className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
262
- required
263
- />
257
+ <div>
258
+ <label htmlFor="memory-title" className="block text-gray-400 text-sm mb-1">Title</label>
259
+ <input
260
+ id="memory-title"
261
+ type="text"
262
+ value={title}
263
+ onChange={(e) => setTitle(e.target.value)}
264
+ placeholder="Enter memory title"
265
+ className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
266
+ required
267
+ aria-required="true"
268
+ />
269
+ </div>
264
270
 
265
- <textarea
266
- value={body}
267
- onChange={(e) => setBody(e.target.value)}
268
- placeholder="Content..."
269
- rows={4}
270
- className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
271
- required
272
- />
271
+ <div>
272
+ <label htmlFor="memory-body" className="block text-gray-400 text-sm mb-1">Content</label>
273
+ <textarea
274
+ id="memory-body"
275
+ value={body}
276
+ onChange={(e) => setBody(e.target.value)}
277
+ placeholder="Enter memory content..."
278
+ rows={4}
279
+ className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
280
+ required
281
+ aria-required="true"
282
+ />
283
+ </div>
273
284
 
274
- <input
275
- type="text"
276
- value={domain}
277
- onChange={(e) => setDomain(e.target.value)}
278
- placeholder="Domain (optional)"
279
- className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
280
- />
285
+ <div>
286
+ <label htmlFor="memory-domain" className="block text-gray-400 text-sm mb-1">Domain (optional)</label>
287
+ <input
288
+ id="memory-domain"
289
+ type="text"
290
+ value={domain}
291
+ onChange={(e) => setDomain(e.target.value)}
292
+ placeholder="e.g., finances, reserves, infrastructure"
293
+ className="w-full p-2 bg-gray-800 border border-gray-600 rounded text-white"
294
+ />
295
+ </div>
281
296
  </div>
282
297
 
283
298
  <div className="flex gap-2 mt-4">
@@ -404,18 +419,22 @@ export function generateDashboardHTML(system) {
404
419
  )}
405
420
 
406
421
  {/* Search */}
407
- <div className="flex gap-2 mb-6">
422
+ <search className="flex gap-2 mb-6" role="search">
423
+ <label htmlFor="search-memories" className="sr-only">Search memories</label>
408
424
  <input
409
- type="text"
425
+ id="search-memories"
426
+ type="search"
410
427
  value={searchQuery}
411
428
  onChange={(e) => setSearchQuery(e.target.value)}
412
429
  onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
413
430
  placeholder="Search memories..."
414
431
  className="flex-1 p-3 bg-gray-800 border border-gray-600 rounded text-white"
432
+ aria-label="Search memories"
415
433
  />
416
434
  <button
417
435
  onClick={handleSearch}
418
436
  className="px-6 py-3 bg-blue-600 text-white rounded hover:bg-blue-500"
437
+ aria-label="Execute search"
419
438
  >
420
439
  Search
421
440
  </button>
@@ -430,12 +449,23 @@ export function generateDashboardHTML(system) {
430
449
  </div>
431
450
 
432
451
  {/* Tabs */}
433
- <div className="flex border-b border-gray-700 mb-6">
452
+ <div className="flex border-b border-gray-700 mb-6" role="tablist" aria-label="Dashboard sections">
434
453
  {['memories', 'patterns', 'sessions'].map((tab) => (
435
454
  <button
436
455
  key={tab}
456
+ role="tab"
457
+ id={'tab-' + tab}
458
+ aria-selected={activeTab === tab}
459
+ aria-controls={'panel-' + tab}
437
460
  onClick={() => setActiveTab(tab)}
461
+ onKeyDown={(e) => {
462
+ const tabs = ['memories', 'patterns', 'sessions'];
463
+ const idx = tabs.indexOf(tab);
464
+ if (e.key === 'ArrowRight') setActiveTab(tabs[(idx + 1) % tabs.length]);
465
+ if (e.key === 'ArrowLeft') setActiveTab(tabs[(idx - 1 + tabs.length) % tabs.length]);
466
+ }}
438
467
  className={"px-4 py-2 -mb-px capitalize " + (activeTab === tab ? 'tab-active' : 'text-gray-400 hover:text-white')}
468
+ tabIndex={activeTab === tab ? 0 : -1}
439
469
  >
440
470
  {tab}
441
471
  </button>
@@ -445,7 +475,7 @@ export function generateDashboardHTML(system) {
445
475
  {/* Content */}
446
476
  <div className="max-h-[60vh] overflow-y-auto scrollbar-thin">
447
477
  {activeTab === 'memories' && (
448
- <div>
478
+ <div role="tabpanel" id="panel-memories" aria-labelledby="tab-memories">
449
479
  <div className="flex justify-between items-center mb-4">
450
480
  <h2 className="text-lg font-semibold">
451
481
  {searchResults ? 'Search Results' : 'Recent Memories'}
@@ -482,31 +512,35 @@ export function generateDashboardHTML(system) {
482
512
  )}
483
513
 
484
514
  {activeTab === 'patterns' && (
485
- <div>
515
+ <div role="tabpanel" id="panel-patterns" aria-labelledby="tab-patterns">
486
516
  <h2 className="text-lg font-semibold mb-4">
487
517
  Detected Patterns
488
518
  <span className="text-gray-500 text-sm ml-2">({patterns.length})</span>
489
519
  </h2>
490
520
 
491
521
  {patterns.length === 0 ? (
492
- <p className="text-gray-500 text-center py-8">No patterns detected</p>
522
+ <p className="text-gray-500 text-center py-8" role="status">No patterns detected</p>
493
523
  ) : (
494
- patterns.map((p) => <PatternCard key={p.id} pattern={p} />)
524
+ <div role="list" aria-label="Pattern list">
525
+ {patterns.map((p) => <PatternCard key={p.id} pattern={p} />)}
526
+ </div>
495
527
  )}
496
528
  </div>
497
529
  )}
498
530
 
499
531
  {activeTab === 'sessions' && (
500
- <div>
532
+ <div role="tabpanel" id="panel-sessions" aria-labelledby="tab-sessions">
501
533
  <h2 className="text-lg font-semibold mb-4">
502
534
  Recent Sessions
503
535
  <span className="text-gray-500 text-sm ml-2">({sessions.length})</span>
504
536
  </h2>
505
537
 
506
538
  {sessions.length === 0 ? (
507
- <p className="text-gray-500 text-center py-8">No sessions found</p>
539
+ <p className="text-gray-500 text-center py-8" role="status">No sessions found</p>
508
540
  ) : (
509
- sessions.map((s) => <SessionCard key={s.id} session={s} />)
541
+ <div role="list" aria-label="Session list">
542
+ {sessions.map((s) => <SessionCard key={s.id} session={s} />)}
543
+ </div>
510
544
  )}
511
545
  </div>
512
546
  )}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,OAAO;;;;;8BAKqB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAqXyB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8I3D,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,oBAAoB,EAAU,MAAM,aAAa,CAAA;AAE1D,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAE3C,OAAO;;;;;8BAKqB,MAAM;;;;;;EAMlC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAyX+C,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiK3D,CAAC;AACT,CAAC"}
@@ -170,6 +170,17 @@ export declare const cloud: {
170
170
  deleteVectors: typeof import("./upstash-client.js").deleteVectors;
171
171
  vectorHealthCheck: typeof vectorHealthCheck;
172
172
  };
173
+ cleanup: typeof cleanupConnections;
173
174
  };
175
+ /**
176
+ * Cleanup all database connections
177
+ * Call this before process exit to prevent resource leaks
178
+ */
179
+ export declare function cleanupConnections(): Promise<void>;
180
+ /**
181
+ * Register process exit handlers for graceful shutdown
182
+ * Call this once at application startup
183
+ */
184
+ export declare function registerCleanupHandlers(): void;
174
185
  export default cloud;
175
186
  //# sourceMappingURL=cloud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/db/cloud.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAS,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAW,SAAS,EAAE,QAAQ,EAAE,WAAW,IAAI,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAElI,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAkB,MAAM,uBAAuB,CAAA;AAS5F,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,MAAM,CAAC,EAAE;QACP,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,KAAK,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC;AAUD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAe1E;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAiBxD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAqD1E;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GACA,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,CAAA;IACxD,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAC,CAuBD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GACA,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;IACN,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;QAChD,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;KAClD,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,CAAA;IACxD,mBAAmB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAA;IACvE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAC,CAaD;AAMD;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAwCxD;AAMD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBjB,CAAA;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/db/cloud.ts"],"names":[],"mappings":"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"}
package/dist/db/cloud.js CHANGED
@@ -235,7 +235,55 @@ export const cloud = {
235
235
  completeTask,
236
236
  // Direct access
237
237
  turso,
238
- upstash
238
+ upstash,
239
+ // Cleanup
240
+ cleanup: cleanupConnections
239
241
  };
242
+ // =============================================================================
243
+ // Connection Cleanup
244
+ // =============================================================================
245
+ /**
246
+ * Cleanup all database connections
247
+ * Call this before process exit to prevent resource leaks
248
+ */
249
+ export async function cleanupConnections() {
250
+ try {
251
+ // Close Turso connection
252
+ const tursoClient = getTurso();
253
+ if (tursoClient && typeof tursoClient.close === 'function') {
254
+ await tursoClient.close();
255
+ }
256
+ }
257
+ catch (error) {
258
+ console.warn('[Cloud] Turso cleanup error:', error);
259
+ }
260
+ cloudInitialized = false;
261
+ lastInitStatus = null;
262
+ }
263
+ /**
264
+ * Register process exit handlers for graceful shutdown
265
+ * Call this once at application startup
266
+ */
267
+ export function registerCleanupHandlers() {
268
+ const cleanup = async (signal) => {
269
+ console.log(`[Cloud] Received ${signal}, cleaning up connections...`);
270
+ await cleanupConnections();
271
+ process.exit(0);
272
+ };
273
+ // Handle termination signals
274
+ process.on('SIGTERM', () => cleanup('SIGTERM'));
275
+ process.on('SIGINT', () => cleanup('SIGINT'));
276
+ // Handle uncaught errors - cleanup before crashing
277
+ process.on('uncaughtException', async (error) => {
278
+ console.error('[Cloud] Uncaught exception:', error);
279
+ await cleanupConnections();
280
+ process.exit(1);
281
+ });
282
+ process.on('unhandledRejection', async (reason) => {
283
+ console.error('[Cloud] Unhandled rejection:', reason);
284
+ await cleanupConnections();
285
+ process.exit(1);
286
+ });
287
+ }
240
288
  export default cloud;
241
289
  //# sourceMappingURL=cloud.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/db/cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/db/cloud.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export interface MigrationStatus {
19
19
  appliedAt: string;
20
20
  }>;
21
21
  }
22
+ export declare const VALID_ITEM_TYPES: readonly ["task", "improvement", "session", "plan", "plan_checkpoint", "expert_decision", "pattern", "memory", "knowledge", "agent_session", "skill_registry", "auto_improvement", "pattern_stat", "memory_link", "session_summary"];
22
23
  declare const migrations: Migration[];
23
24
  /**
24
25
  * Run all pending migrations
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAA;AAOrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrE;AAMD,QAAA,MAAM,UAAU,EAAE,SAAS,EA+D1B,CAAA;AAMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAwBnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA2BD;AAMD,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAA;AAOrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrE;AAOD,eAAO,MAAM,gBAAgB,sOAKnB,CAAA;AAEV,QAAA,MAAM,UAAU,EAAE,SAAS,EA2K1B,CAAA;AAMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAwBnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA2BD;AAMD,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -7,6 +7,13 @@ import { getTurso, TursoError } from './turso-client.js';
7
7
  // =============================================================================
8
8
  // Migrations
9
9
  // =============================================================================
10
+ // Valid item types - keep in sync with trigger in migration 6
11
+ export const VALID_ITEM_TYPES = [
12
+ 'task', 'improvement', 'session', 'plan', 'plan_checkpoint',
13
+ 'expert_decision', 'pattern', 'memory', 'knowledge', 'agent_session',
14
+ 'skill_registry', 'auto_improvement', 'pattern_stat', 'memory_link',
15
+ 'session_summary' // Added in migration 6
16
+ ];
10
17
  const migrations = [
11
18
  {
12
19
  version: 1,
@@ -68,6 +75,108 @@ const migrations = [
68
75
  down: async (db) => {
69
76
  await db.execute(`DROP INDEX IF EXISTS idx_items_created_at`);
70
77
  }
78
+ },
79
+ {
80
+ version: 5,
81
+ name: 'add_constraints_and_indexes',
82
+ up: async (db) => {
83
+ // Add JSON validation trigger (SQLite 3.37+ supports json_valid)
84
+ await db.execute(`
85
+ CREATE TRIGGER IF NOT EXISTS validate_json_content
86
+ BEFORE INSERT ON items
87
+ FOR EACH ROW
88
+ WHEN json_valid(NEW.content) = 0
89
+ BEGIN
90
+ SELECT RAISE(ABORT, 'Invalid JSON in content field');
91
+ END
92
+ `);
93
+ await db.execute(`
94
+ CREATE TRIGGER IF NOT EXISTS validate_json_content_update
95
+ BEFORE UPDATE ON items
96
+ FOR EACH ROW
97
+ WHEN json_valid(NEW.content) = 0
98
+ BEGIN
99
+ SELECT RAISE(ABORT, 'Invalid JSON in content field');
100
+ END
101
+ `);
102
+ // Add check constraints for type and status via triggers
103
+ await db.execute(`
104
+ CREATE TRIGGER IF NOT EXISTS check_item_type
105
+ BEFORE INSERT ON items
106
+ FOR EACH ROW
107
+ WHEN NEW.type NOT IN ('task', 'improvement', 'session', 'plan', 'plan_checkpoint',
108
+ 'expert_decision', 'pattern', 'memory', 'knowledge', 'agent_session',
109
+ 'skill_registry', 'auto_improvement', 'pattern_stat', 'memory_link')
110
+ BEGIN
111
+ SELECT RAISE(ABORT, 'Invalid item type');
112
+ END
113
+ `);
114
+ await db.execute(`
115
+ CREATE TRIGGER IF NOT EXISTS check_item_status
116
+ BEFORE INSERT ON items
117
+ FOR EACH ROW
118
+ WHEN NEW.status NOT IN ('pending', 'in_progress', 'completed', 'blocked',
119
+ 'active', 'ended', 'archived', 'verified', 'triggered', 'paused',
120
+ 'rejected', 'deferred', 'todo', 'done')
121
+ BEGIN
122
+ SELECT RAISE(ABORT, 'Invalid item status');
123
+ END
124
+ `);
125
+ // Add composite index for common query patterns with JSON
126
+ await db.execute(`
127
+ CREATE INDEX IF NOT EXISTS idx_items_system_type_updated
128
+ ON items(system, type, updated_at DESC)
129
+ `);
130
+ // Add index for parent_id lookups (hierarchical queries)
131
+ await db.execute(`
132
+ CREATE INDEX IF NOT EXISTS idx_items_type_parent
133
+ ON items(type, parent_id) WHERE parent_id IS NOT NULL
134
+ `);
135
+ },
136
+ down: async (db) => {
137
+ await db.execute(`DROP TRIGGER IF EXISTS validate_json_content`);
138
+ await db.execute(`DROP TRIGGER IF EXISTS validate_json_content_update`);
139
+ await db.execute(`DROP TRIGGER IF EXISTS check_item_type`);
140
+ await db.execute(`DROP TRIGGER IF EXISTS check_item_status`);
141
+ await db.execute(`DROP INDEX IF EXISTS idx_items_system_type_updated`);
142
+ await db.execute(`DROP INDEX IF EXISTS idx_items_type_parent`);
143
+ }
144
+ },
145
+ {
146
+ version: 6,
147
+ name: 'add_session_summary_type',
148
+ up: async (db) => {
149
+ // Drop old trigger and recreate with session_summary type
150
+ await db.execute(`DROP TRIGGER IF EXISTS check_item_type`);
151
+ // Recreate trigger with updated type list including session_summary
152
+ await db.execute(`
153
+ CREATE TRIGGER IF NOT EXISTS check_item_type
154
+ BEFORE INSERT ON items
155
+ FOR EACH ROW
156
+ WHEN NEW.type NOT IN ('task', 'improvement', 'session', 'plan', 'plan_checkpoint',
157
+ 'expert_decision', 'pattern', 'memory', 'knowledge', 'agent_session',
158
+ 'skill_registry', 'auto_improvement', 'pattern_stat', 'memory_link',
159
+ 'session_summary')
160
+ BEGIN
161
+ SELECT RAISE(ABORT, 'Invalid item type');
162
+ END
163
+ `);
164
+ },
165
+ down: async (db) => {
166
+ // Revert to old trigger without session_summary
167
+ await db.execute(`DROP TRIGGER IF EXISTS check_item_type`);
168
+ await db.execute(`
169
+ CREATE TRIGGER IF NOT EXISTS check_item_type
170
+ BEFORE INSERT ON items
171
+ FOR EACH ROW
172
+ WHEN NEW.type NOT IN ('task', 'improvement', 'session', 'plan', 'plan_checkpoint',
173
+ 'expert_decision', 'pattern', 'memory', 'knowledge', 'agent_session',
174
+ 'skill_registry', 'auto_improvement', 'pattern_stat', 'memory_link')
175
+ BEGIN
176
+ SELECT RAISE(ABORT, 'Invalid item type');
177
+ END
178
+ `);
179
+ }
71
180
  }
72
181
  ];
73
182
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}