@camstack/addon-post-analysis 0.1.19 → 0.2.0

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 (101) hide show
  1. package/dist/dist-4mTLJ7BJ.mjs +20750 -0
  2. package/dist/dist-CS2K80so.js +20933 -0
  3. package/dist/embedding-encoder/index.js +977 -902
  4. package/dist/embedding-encoder/index.mjs +967 -860
  5. package/dist/enrichment-engine/index.js +834 -833
  6. package/dist/enrichment-engine/index.mjs +828 -832
  7. package/dist/pipeline-analytics/_stub.js +1680 -1397
  8. package/dist/pipeline-analytics/_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DOSUJ-U0.mjs +156 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DJvmVCso.mjs +26 -0
  10. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs +26 -0
  11. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs +26 -0
  12. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs +26 -0
  13. package/dist/pipeline-analytics/dist-CYZr2fwk.mjs +2726 -0
  14. package/dist/pipeline-analytics/hostInit-BazRS2O7.mjs +129 -0
  15. package/dist/pipeline-analytics/index.js +7133 -2558
  16. package/dist/pipeline-analytics/index.mjs +7124 -2557
  17. package/dist/pipeline-analytics/remoteEntry.js +134 -2973
  18. package/dist/pipeline-analytics/remoteEntry.ssr.js +33 -0
  19. package/dist/pipeline-analytics/virtualExposes-BgYzpJZG.mjs +27 -0
  20. package/dist/pipeline-analytics/virtual_mf-exposes-ssr___mfe_internal__addon_pipeline_analytics_widgets__remoteEntry_js-D7qgWCKX.mjs +10 -0
  21. package/dist/resolve-frame-5lMxmeI1.js +57 -0
  22. package/dist/resolve-frame-CT1T1tWy.mjs +44 -0
  23. package/package.json +26 -32
  24. package/dist/embedding-encoder/index.js.map +0 -1
  25. package/dist/embedding-encoder/index.mjs.map +0 -1
  26. package/dist/enrichment-engine/index.js.map +0 -1
  27. package/dist/enrichment-engine/index.mjs.map +0 -1
  28. package/dist/ffmpeg-config-DRONlBsj.mjs +0 -56
  29. package/dist/ffmpeg-config-DRONlBsj.mjs.map +0 -1
  30. package/dist/ffmpeg-config-uANz3sV5.js +0 -73
  31. package/dist/ffmpeg-config-uANz3sV5.js.map +0 -1
  32. package/dist/index-BFbwYH1P.js +0 -14343
  33. package/dist/index-BFbwYH1P.js.map +0 -1
  34. package/dist/index-BrTlzsrE.mjs +0 -14344
  35. package/dist/index-BrTlzsrE.mjs.map +0 -1
  36. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/AudioHistoryChart.d.ts +0 -4
  37. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/AudioMetricsPanel.d.ts +0 -10
  38. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/DetectionHistoryChart.d.ts +0 -4
  39. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/LiveStatsTab.d.ts +0 -5
  40. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/MotionHistoryChart.d.ts +0 -4
  41. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/OccupancyHistoryChart.d.ts +0 -4
  42. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/OccupancyPanel.d.ts +0 -10
  43. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/chart-utils.d.ts +0 -97
  44. package/dist/pipeline-analytics/@mf-types/compiled-types/pipeline-analytics/widgets/index.d.ts +0 -29
  45. package/dist/pipeline-analytics/@mf-types/widgets.d.ts +0 -2
  46. package/dist/pipeline-analytics/@mf-types.d.ts +0 -3
  47. package/dist/pipeline-analytics/@mf-types.zip +0 -0
  48. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_sdk__loadShare__.mjs-h5aXOPSA.mjs +0 -12
  49. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.mjs-NjF4kxzW.mjs +0 -19
  50. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.mjs-7HAAnpQu.mjs +0 -18
  51. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.mjs-DoWbefqS.mjs +0 -104
  52. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_trpc_mf_1_client__loadShare__.mjs-52bfkwC8.mjs +0 -85
  53. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.mjs-CVrnrGED.mjs +0 -62
  54. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.mjs-BZTB2scQ.mjs +0 -88
  55. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.mjs_commonjs-proxy-CJO5YKGV.mjs +0 -29
  56. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.mjs-BsyrX6NO.mjs +0 -36
  57. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_2_dom__loadShare__.mjs-Dp8hqYOB.mjs +0 -45
  58. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-B0h0AGOH.mjs +0 -6
  59. package/dist/pipeline-analytics/__mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs-BZjEt71l.mjs +0 -34
  60. package/dist/pipeline-analytics/_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-kZBmgzMg.mjs +0 -156
  61. package/dist/pipeline-analytics/client-BlxIUpgf.mjs +0 -9836
  62. package/dist/pipeline-analytics/getErrorShape-BPSzUA7W-TlK8ipWe.mjs +0 -211
  63. package/dist/pipeline-analytics/hostInit-qBB1Thhi.mjs +0 -168
  64. package/dist/pipeline-analytics/index-BoL0rgZt.mjs +0 -435
  65. package/dist/pipeline-analytics/index-CR1aiZDH.mjs +0 -185
  66. package/dist/pipeline-analytics/index-CWkKuNLr.mjs +0 -232
  67. package/dist/pipeline-analytics/index-DlhiA9R0.mjs +0 -2603
  68. package/dist/pipeline-analytics/index-DtdgkNgf.mjs +0 -725
  69. package/dist/pipeline-analytics/index-Dw6Q30NI.mjs +0 -1655
  70. package/dist/pipeline-analytics/index-Dy2V7VOm.mjs +0 -14379
  71. package/dist/pipeline-analytics/index-i47purqY.mjs +0 -37880
  72. package/dist/pipeline-analytics/index-xncRG7-x.mjs +0 -2713
  73. package/dist/pipeline-analytics/index.js.map +0 -1
  74. package/dist/pipeline-analytics/index.mjs.map +0 -1
  75. package/dist/pipeline-analytics/jsx-runtime-Dlbl3gpr.mjs +0 -55
  76. package/dist/pipeline-analytics/schemas-ClCuS4qa.mjs +0 -3594
  77. package/dist/pipeline-analytics/virtualExposes-8FzWTdq3.mjs +0 -42
  78. package/dist/playlist-generator-EhPaB7Hn.js +0 -48
  79. package/dist/playlist-generator-EhPaB7Hn.js.map +0 -1
  80. package/dist/playlist-generator-VTkgn53O.mjs +0 -48
  81. package/dist/playlist-generator-VTkgn53O.mjs.map +0 -1
  82. package/dist/recording/index.js +0 -257
  83. package/dist/recording/index.js.map +0 -1
  84. package/dist/recording/index.mjs +0 -235
  85. package/dist/recording/index.mjs.map +0 -1
  86. package/dist/recording-coordinator-BoGr5moz.js +0 -1052
  87. package/dist/recording-coordinator-BoGr5moz.js.map +0 -1
  88. package/dist/recording-coordinator-CsYH9LqF.mjs +0 -1012
  89. package/dist/recording-coordinator-CsYH9LqF.mjs.map +0 -1
  90. package/dist/recording-db-gOgaoQh0.js +0 -348
  91. package/dist/recording-db-gOgaoQh0.js.map +0 -1
  92. package/dist/recording-db-lIkSMTLq.mjs +0 -348
  93. package/dist/recording-db-lIkSMTLq.mjs.map +0 -1
  94. package/dist/recording-service-facade-B9lG6OFn.mjs +0 -123
  95. package/dist/recording-service-facade-B9lG6OFn.mjs.map +0 -1
  96. package/dist/recording-service-facade-Do1PKlAL.js +0 -123
  97. package/dist/recording-service-facade-Do1PKlAL.js.map +0 -1
  98. package/dist/storage-estimator-CRpoQc9j.js +0 -72
  99. package/dist/storage-estimator-CRpoQc9j.js.map +0 -1
  100. package/dist/storage-estimator-DzD8gWJH.mjs +0 -72
  101. package/dist/storage-estimator-DzD8gWJH.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/recording/index.ts"],"sourcesContent":["import type {\n ProviderRegistration,\n FfmpegConfig,\n IStreamingEngine,\n IPipelineManager,\n INetworkQualityTracker,\n} from '@camstack/types'\nimport { BaseAddon, recordingEngineCapability, errMsg } from '@camstack/types'\n\n// Dynamic imports to avoid hard dep on better-sqlite3 at load time\ntype RecordingCoordinator = import('./recording/recording-coordinator.js').RecordingCoordinator\ntype RecordingDb = import('./recording/recording-db.js').RecordingDb\n\nexport interface RecordingEngineDependencies {\n readonly streamingEngine: IStreamingEngine\n readonly pipelineManager: IPipelineManager\n readonly networkTracker: INetworkQualityTracker\n}\n\ninterface RecordingConfig {\n ffmpegPath: string\n hwaccel: string\n threads: number\n segmentDurationSeconds: number\n defaultRetentionDays: number\n storageWarningThreshold: number\n storageCriticalThreshold: number\n storageHighUsageThreshold: number\n retentionCheckIntervalMin: number\n}\n\nexport class RecordingAddon extends BaseAddon<RecordingConfig> {\n private coordinator: RecordingCoordinator | null = null\n private recordingDb: RecordingDb | null = null\n private sqliteDb: import('better-sqlite3').Database | null = null\n private recordingDeps: RecordingEngineDependencies | null = null\n private serviceFacade: import('./recording-service-facade.js').RecordingServiceFacade | null = null\n\n constructor() {\n super({\n ffmpegPath: 'ffmpeg',\n hwaccel: 'none',\n threads: 0,\n segmentDurationSeconds: 4,\n defaultRetentionDays: 30,\n storageWarningThreshold: 80,\n storageCriticalThreshold: 95,\n storageHighUsageThreshold: 90,\n retentionCheckIntervalMin: 5,\n })\n }\n\n setRecordingDependencies(deps: RecordingEngineDependencies): void {\n this.recordingDeps = deps\n }\n\n protected async onInitialize(): Promise<ProviderRegistration[] | void> {\n if (!this.recordingDeps) {\n this.ctx.logger.info('Recording Engine: optional dependencies not wired — skipping init')\n return\n }\n\n try {\n const Database = (await import('better-sqlite3')).default\n const path = await import('node:path')\n const { detectPlatformDefaults } = await import('./recording/ffmpeg-config.js')\n const { RecordingDb: RecDb } = await import('./recording/recording-db.js')\n const { RecordingCoordinator: RecCoord } = await import('./recording/recording-coordinator.js')\n\n const storage = this.ctx.kernel.storage\n const dbPath = path.join(storage?.resolve({ location: 'data', relativePath: '' }) ?? 'camstack-data', 'camstack.db')\n this.sqliteDb = new Database(dbPath)\n this.recordingDb = new RecDb(this.sqliteDb)\n this.recordingDb.initialize()\n\n const ffmpegPath = this.config.ffmpegPath\n const detectedFfmpegConfig = detectPlatformDefaults(ffmpegPath)\n\n const globalFfmpegConfig: Partial<FfmpegConfig> = {\n path: ffmpegPath,\n hwaccel: this.config.hwaccel as FfmpegConfig['hwaccel'],\n threads: this.config.threads,\n }\n\n const segmentDurationSeconds = this.config.segmentDurationSeconds\n\n if (!storage) {\n throw new Error('RecordingAddon: storage capability not available')\n }\n\n this.coordinator = new RecCoord({\n db: this.recordingDb,\n logger: this.ctx.logger,\n eventBus: this.ctx.eventBus,\n streamingEngine: this.recordingDeps.streamingEngine,\n pipelineManager: this.recordingDeps.pipelineManager,\n networkTracker: this.recordingDeps.networkTracker,\n storageProvider: storage,\n globalFfmpegConfig,\n detectedFfmpegConfig,\n segmentDurationSec: segmentDurationSeconds,\n })\n await this.coordinator.start()\n\n // Create service facade wrapping all internal services.\n // The facade is the capability provider — the auto-generated cap router\n // dispatches typed tRPC procedures directly to facade methods.\n const { PlaylistGenerator } = await import('./recording/playlist-generator.js')\n const { StorageEstimator } = await import('./recording/storage-estimator.js')\n const playlistGenerator = new PlaylistGenerator(this.recordingDb)\n const storageEstimator = new StorageEstimator(this.recordingDb, this.recordingDeps.networkTracker)\n\n const { RecordingServiceFacade } = await import('./recording-service-facade.js')\n this.serviceFacade = new RecordingServiceFacade({\n coordinator: this.coordinator,\n db: this.recordingDb,\n playlistGenerator,\n storageEstimator,\n })\n this.ctx.logger.info('Recording Engine initialized')\n return [{ capability: recordingEngineCapability, provider: this.serviceFacade }]\n } catch (error: unknown) {\n const msg = errMsg(error)\n this.ctx.logger.warn('Recording Engine failed to initialize', { meta: { error: msg } })\n }\n }\n\n protected async onShutdown(): Promise<void> {\n if (this.coordinator) {\n this.coordinator.stop()\n this.coordinator = null\n }\n if (this.sqliteDb) {\n this.sqliteDb.close()\n this.sqliteDb = null\n }\n this.recordingDb = null\n }\n\n // --- Recording engine accessors ---\n\n getCoordinator(): RecordingCoordinator {\n if (!this.coordinator) throw new Error('RecordingAddon: recording not initialized')\n return this.coordinator\n }\n\n getRecordingDb(): RecordingDb {\n if (!this.recordingDb) throw new Error('RecordingAddon: recording not initialized')\n return this.recordingDb\n }\n\n // --- Three-level settings API (Phase 3) ---\n //\n // Recording is post-detection infra. Until the dedicated post-detection\n // UI exists, it exposes `getGlobalSettings` so the knobs surface under\n // Cluster → Settings alongside other node-level infra.\n\n protected globalSettingsSchema() {\n return this.schema({\n sections: [\n {\n id: 'recording-general',\n title: 'Recording Settings',\n columns: 2,\n fields: [\n {\n type: 'number',\n key: 'segmentDurationSeconds',\n label: 'Segment Duration',\n description: 'Duration of each recording segment',\n min: 10,\n max: 3600,\n step: 10,\n default: 300,\n unit: 's',\n },\n {\n type: 'number',\n key: 'defaultRetentionDays',\n label: 'Retention',\n description: 'Days to keep recordings before automatic deletion',\n min: 1,\n max: 365,\n step: 1,\n default: 30,\n unit: 'days',\n },\n ],\n },\n {\n id: 'recording-ffmpeg',\n title: 'FFmpeg',\n columns: 3,\n fields: [\n {\n type: 'text',\n key: 'ffmpegPath',\n label: 'FFmpeg Path',\n description: 'Path to ffmpeg binary',\n placeholder: 'ffmpeg',\n default: 'ffmpeg',\n },\n {\n type: 'select',\n key: 'hwaccel',\n label: 'Hardware Acceleration',\n options: [\n { value: 'none', label: 'None (CPU)' },\n { value: 'vaapi', label: 'VAAPI (Intel/AMD)' },\n { value: 'cuda', label: 'CUDA (NVIDIA)' },\n { value: 'videotoolbox', label: 'VideoToolbox (macOS)' },\n ],\n },\n {\n type: 'number',\n key: 'threads',\n label: 'Threads',\n description: 'FFmpeg encoding threads (0 = auto)',\n min: 0,\n max: 32,\n step: 1,\n default: 0,\n },\n ],\n },\n {\n id: 'recording-retention',\n title: 'Storage & Retention',\n description: 'Thresholds for storage usage alerts and retention enforcement frequency.',\n columns: 2,\n fields: [\n {\n type: 'number',\n key: 'storageWarningThreshold',\n label: 'Warning Threshold',\n description: 'Storage usage percentage that triggers a warning event.',\n min: 50, max: 99, step: 1, default: 80, unit: '%',\n },\n {\n type: 'number',\n key: 'storageCriticalThreshold',\n label: 'Critical Threshold',\n description: 'Storage usage percentage that triggers a critical event.',\n min: 50, max: 99, step: 1, default: 95, unit: '%',\n },\n {\n type: 'number',\n key: 'storageHighUsageThreshold',\n label: 'High Usage Threshold',\n description: 'Storage usage percentage that increases retention check frequency.',\n min: 50, max: 99, step: 1, default: 90, unit: '%',\n },\n {\n type: 'number',\n key: 'retentionCheckIntervalMin',\n label: 'Check Interval',\n description: 'Normal interval between retention cleanup cycles.',\n min: 1, max: 60, step: 1, default: 5, unit: 'min',\n },\n ],\n },\n ],\n })\n }\n\n}\n\nexport default RecordingAddon\n"],"names":[],"mappings":"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"}