@camstack/types 1.2.339 → 1.2.341

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.
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ /** Fixed cluster node palette ids (maps to `--color-node-*` theme tokens). */
3
+ export declare const NODE_COLOR_IDS: readonly ['node-a', 'node-b', 'node-c', 'node-d', 'node-e', 'node-f', 'node-g', 'node-h'];
4
+ export type NodeColorId = (typeof NODE_COLOR_IDS)[number];
5
+ export declare const NodeColorIdSchema: z.ZodEnum<{
6
+ "node-a": "node-a";
7
+ "node-b": "node-b";
8
+ "node-c": "node-c";
9
+ "node-d": "node-d";
10
+ "node-e": "node-e";
11
+ "node-f": "node-f";
12
+ "node-g": "node-g";
13
+ "node-h": "node-h";
14
+ }>;
15
+ export declare function assignNodeColorId(nodeId: string): NodeColorId;
@@ -0,0 +1,33 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let zod = require("zod");
3
+ //#region src/node-color.ts
4
+ /** Fixed cluster node palette ids (maps to `--color-node-*` theme tokens). */
5
+ var NODE_COLOR_IDS = [
6
+ "node-a",
7
+ "node-b",
8
+ "node-c",
9
+ "node-d",
10
+ "node-e",
11
+ "node-f",
12
+ "node-g",
13
+ "node-h"
14
+ ];
15
+ var NodeColorIdSchema = zod.z.enum(NODE_COLOR_IDS);
16
+ /** Stable FNV-1a hash → one palette slot (same nodeId always gets the same colour). */
17
+ function hashNodeId(nodeId) {
18
+ let h = 2166136261;
19
+ for (let i = 0; i < nodeId.length; i++) {
20
+ h ^= nodeId.charCodeAt(i);
21
+ h = Math.imul(h, 16777619);
22
+ }
23
+ return h >>> 0;
24
+ }
25
+ function assignNodeColorId(nodeId) {
26
+ const id = NODE_COLOR_IDS[hashNodeId(nodeId) % NODE_COLOR_IDS.length];
27
+ if (id !== void 0) return id;
28
+ return "node-a";
29
+ }
30
+ //#endregion
31
+ exports.NODE_COLOR_IDS = NODE_COLOR_IDS;
32
+ exports.NodeColorIdSchema = NodeColorIdSchema;
33
+ exports.assignNodeColorId = assignNodeColorId;
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ //#region src/node-color.ts
3
+ /** Fixed cluster node palette ids (maps to `--color-node-*` theme tokens). */
4
+ var NODE_COLOR_IDS = [
5
+ "node-a",
6
+ "node-b",
7
+ "node-c",
8
+ "node-d",
9
+ "node-e",
10
+ "node-f",
11
+ "node-g",
12
+ "node-h"
13
+ ];
14
+ var NodeColorIdSchema = z.enum(NODE_COLOR_IDS);
15
+ /** Stable FNV-1a hash → one palette slot (same nodeId always gets the same colour). */
16
+ function hashNodeId(nodeId) {
17
+ let h = 2166136261;
18
+ for (let i = 0; i < nodeId.length; i++) {
19
+ h ^= nodeId.charCodeAt(i);
20
+ h = Math.imul(h, 16777619);
21
+ }
22
+ return h >>> 0;
23
+ }
24
+ function assignNodeColorId(nodeId) {
25
+ const id = NODE_COLOR_IDS[hashNodeId(nodeId) % NODE_COLOR_IDS.length];
26
+ if (id !== void 0) return id;
27
+ return "node-a";
28
+ }
29
+ //#endregion
30
+ export { NODE_COLOR_IDS, NodeColorIdSchema, assignNodeColorId };
@@ -5046,6 +5046,8 @@ function createDeviceProxy(api, binding, opts) {
5046
5046
  getTrainingExportSummary: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrainingExportSummary", "query", input),
5047
5047
  getTrainingExportUrl: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrainingExportUrl", "query", input),
5048
5048
  listRetrainStaging: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainStaging", "query", input),
5049
+ listRetrainCorpusPage: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainCorpusPage", "query", input),
5050
+ getRetrainCorpusKpi: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getRetrainCorpusKpi", "query", input),
5049
5051
  listRetrainFrames: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainFrames", "query", input),
5050
5052
  selectRetrainFrames: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "selectRetrainFrames", "mutation", input),
5051
5053
  deselectRetrainFrame: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deselectRetrainFrame", "mutation", input),
@@ -5059,15 +5061,11 @@ function createDeviceProxy(api, binding, opts) {
5059
5061
  setRetrainFrameComplete: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "setRetrainFrameComplete", "mutation", input),
5060
5062
  writeRetrainArchive: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "writeRetrainArchive", "mutation", input),
5061
5063
  offerRetrainArchive: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "offerRetrainArchive", "mutation", input),
5062
- previewRetrainDataset: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "previewRetrainDataset", "query", input),
5063
- createRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "createRetrainDatasetVersion", "mutation", input),
5064
- listRetrainDatasetVersions: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainDatasetVersions", "query", input),
5065
- deleteRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deleteRetrainDatasetVersion", "mutation", input),
5066
- verifyRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "verifyRetrainDatasetVersion", "query", input),
5067
5064
  listRetrainAssistProfiles: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainAssistProfiles", "query", input),
5068
5065
  proposeRetrainAnnotationsWithLlm: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "proposeRetrainAnnotationsWithLlm", "mutation", input),
5069
5066
  createRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "createRetrainCollection", "mutation", input),
5070
5067
  listRetrainCollections: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainCollections", "query", input),
5068
+ resolveRetrainTrainingCorpus: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "resolveRetrainTrainingCorpus", "query", input),
5071
5069
  renameRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "renameRetrainCollection", "mutation", input),
5072
5070
  deleteRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deleteRetrainCollection", "mutation", input),
5073
5071
  addRetrainFrameFromRecording: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "addRetrainFrameFromRecording", "mutation", input),
@@ -5046,6 +5046,8 @@ function createDeviceProxy(api, binding, opts) {
5046
5046
  getTrainingExportSummary: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrainingExportSummary", "query", input),
5047
5047
  getTrainingExportUrl: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrainingExportUrl", "query", input),
5048
5048
  listRetrainStaging: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainStaging", "query", input),
5049
+ listRetrainCorpusPage: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainCorpusPage", "query", input),
5050
+ getRetrainCorpusKpi: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getRetrainCorpusKpi", "query", input),
5049
5051
  listRetrainFrames: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainFrames", "query", input),
5050
5052
  selectRetrainFrames: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "selectRetrainFrames", "mutation", input),
5051
5053
  deselectRetrainFrame: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deselectRetrainFrame", "mutation", input),
@@ -5059,15 +5061,11 @@ function createDeviceProxy(api, binding, opts) {
5059
5061
  setRetrainFrameComplete: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "setRetrainFrameComplete", "mutation", input),
5060
5062
  writeRetrainArchive: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "writeRetrainArchive", "mutation", input),
5061
5063
  offerRetrainArchive: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "offerRetrainArchive", "mutation", input),
5062
- previewRetrainDataset: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "previewRetrainDataset", "query", input),
5063
- createRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "createRetrainDatasetVersion", "mutation", input),
5064
- listRetrainDatasetVersions: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainDatasetVersions", "query", input),
5065
- deleteRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deleteRetrainDatasetVersion", "mutation", input),
5066
- verifyRetrainDatasetVersion: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "verifyRetrainDatasetVersion", "query", input),
5067
5064
  listRetrainAssistProfiles: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainAssistProfiles", "query", input),
5068
5065
  proposeRetrainAnnotationsWithLlm: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "proposeRetrainAnnotationsWithLlm", "mutation", input),
5069
5066
  createRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "createRetrainCollection", "mutation", input),
5070
5067
  listRetrainCollections: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRetrainCollections", "query", input),
5068
+ resolveRetrainTrainingCorpus: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "resolveRetrainTrainingCorpus", "query", input),
5071
5069
  renameRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "renameRetrainCollection", "mutation", input),
5072
5070
  deleteRetrainCollection: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deleteRetrainCollection", "mutation", input),
5073
5071
  addRetrainFrameFromRecording: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "addRetrainFrameFromRecording", "mutation", input),
@@ -18,6 +18,7 @@
18
18
  * required downstream of the orchestrator.
19
19
  */
20
20
  import type { CameraPipelineConfig } from './camera-pipeline.js';
21
+ import type { NodeColorId } from '../node-color.js';
21
22
  /**
22
23
  * LEGACY per-addon configuration (the removed per-node model layer,
23
24
  * `agent.addonDefaults[addonId]`). Retained ONLY for the one-shot boot
@@ -121,6 +122,12 @@ export interface AgentPipelineSettings {
121
122
  * auto-detected address is wrong (multi-homed host, NAT, custom interface).
122
123
  */
123
124
  readonly reachableHost?: string;
125
+ /**
126
+ * Hub-persisted UI colour for this node (Cluster / Nodes). Absent until
127
+ * first `listAgentSettings` ensure or an operator edit; auto-assigned from
128
+ * `assignNodeColorId(nodeId)` when missing.
129
+ */
130
+ readonly color?: NodeColorId;
124
131
  /**
125
132
  * Multi-device inference opt-in (Phase 4 multi-device). Maps a device key
126
133
  * (`openvino:npu`, `openvino:gpu`, `edgetpu:usb`, `edgetpu:usb:1`, `cpu`, …
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.339",
3
+ "version": "1.2.341",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",
@@ -39,6 +39,11 @@
39
39
  "import": "./dist/enums.mjs",
40
40
  "require": "./dist/enums.js"
41
41
  },
42
+ "./node-color": {
43
+ "types": "./dist/node-color.d.ts",
44
+ "import": "./dist/node-color.mjs",
45
+ "require": "./dist/node-color.js"
46
+ },
42
47
  "./client": {
43
48
  "types": "./dist/client.d.ts",
44
49
  "import": "./dist/client.mjs",