@camstack/addon-training 0.1.93 → 0.1.94

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/CHANGELOG.md CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.94] - 2026-10-27
11
+
12
+ ### Changed
13
+
14
+ - The cloud trainer is shown as "Modal" (was "Modal (training cloud)").
15
+
16
+ ## [0.1.93] - 2026-10-27
17
+
10
18
  ### Added
11
19
 
12
- - Package README and changelog, included in the published files list.
20
+ - Cloud Training: Cloud training for CamStack: fine-tune the root detector on your own frames, on your own GPU-cloud account.
21
+ - Provides the addons Training, Modal.
package/README.md CHANGED
@@ -1,22 +1,28 @@
1
- # @camstack/addon-training
1
+ # Cloud Training
2
2
 
3
- Cloud training for CamStack: fine-tune the root detector on your own frames, on your own GPU-cloud account
3
+ Cloud training for CamStack: fine-tune the root detector on your own frames, on your own GPU-cloud account.
4
4
 
5
- ## What it does
5
+ <!-- readme:generated:start (derived from the manifest; edit outside this block) -->
6
6
 
7
- - **Training** (`training`): Fine-tune the root detector on your own annotated frames in a GPU cloud you choose, compare it with the model you run, and register it in Model Studio only when you say so
8
- - Node placement: `hub-only`.
7
+ Package `@camstack/addon-training` on npm.
8
+
9
+ ## What it provides
10
+
11
+ - **Training** (`training`): Fine-tune the root detector on your own annotated frames in a GPU cloud you choose, compare it with the model you run, and register it in Model Studio only when you say so. Category: system.
9
12
  - Capabilities: `training`, `addon-pages-source`.
10
- - **Modal (training cloud)** (`training-modal`): Runs CamStack training jobs on your Modal account (modal.com, $30 of free credit a month on the Starter plan). Inert until you enter a Modal token
11
- - Node placement: `hub-only`.
13
+ - **Modal** (`training-modal`): Runs CamStack training jobs on your Modal account (modal.com, $30 of free credit a month on the Starter plan). Inert until you enter a Modal token. Category: system.
12
14
  - Capabilities: `training-provider`.
13
15
 
14
- ## Settings
16
+ ## Requirements
15
17
 
16
- Settings this addon exposes are edited from System → Addons → this addon → Settings when they apply to the whole cluster, and from the device page when they belong to one device. A password field is stored in the keychain.
18
+ - Placement: hub-only.
19
+ - A CamStack hub. An agent is used only where the placement above allows it.
17
20
 
18
- ## Requirements
21
+ ## Documentation
22
+
23
+ - [docs/architecture/cloud-training.md](https://github.com/camstack/server/blob/main/docs/architecture/cloud-training.md)
24
+ - [packages/addon-training/AGENTS.md](https://github.com/camstack/server/blob/main/packages/addon-training/AGENTS.md)
19
25
 
20
- - Peer packages already on the node: `@camstack/types`.
21
- - A CamStack hub. An agent is used only when the placement above allows it.
26
+ See [CHANGELOG.md](./CHANGELOG.md) for what changed in each version.
22
27
 
28
+ <!-- readme:generated:end -->
package/dist/_stub.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./virtualExposes-0m8NqEDE.mjs";
2
- import { a as e, i as t, o as n, r } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-C-gbqU_M.mjs";
2
+ import { a as e, i as t, o as n, r } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-Ch6HQCmx.mjs";
3
3
  import { C as i, S as a, _ as o, a as s, b as c, d as l, f as u, g as d, h as f, i as p, l as m, m as h, n as g, p as _, r as v, t as y, u as b, v as x, w as S, x as C, y as w } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
4
4
  import { i as T, n as E, r as D, t as O } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
5
5
  import { n as k, r as A, t as ee } from "./ui-text-CqJgUCKX.mjs";
@@ -1,9 +1,9 @@
1
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-C-gbqU_M.mjs";
1
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-Ch6HQCmx.mjs";
2
2
  //#region \0virtual:mf-localSharedImportMap:__mfe_internal__addon_training_page
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.153",
6
+ version: "1.2.154",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_training_page",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.427",
21
+ version: "1.2.428",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_training_page",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.336",
36
+ version: "1.2.337",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_training_page",
@@ -44085,7 +44085,7 @@ var NetworkAccessStatusSchema = object({
44085
44085
  });
44086
44086
  /**
44087
44087
  * Optional, richer endpoint shape returned by providers that expose
44088
- * MORE than one ingress concurrently (Tailscale Ingress with mixed
44088
+ * MORE than one ingress concurrently (Tailscale Funnel with mixed
44089
44089
  * serve+funnel rules, future ngrok multi-tunnel, …). Each entry carries
44090
44090
  * the originating provider config (mode + sourcePort) so the
44091
44091
  * orchestrator UI can label rows distinctly. Providers that expose only
@@ -44052,7 +44052,7 @@ var NetworkAccessStatusSchema = object({
44052
44052
  });
44053
44053
  /**
44054
44054
  * Optional, richer endpoint shape returned by providers that expose
44055
- * MORE than one ingress concurrently (Tailscale Ingress with mixed
44055
+ * MORE than one ingress concurrently (Tailscale Funnel with mixed
44056
44056
  * serve+funnel rules, future ngrok multi-tunnel, …). Each entry carries
44057
44057
  * the originating provider config (mode + sourcePort) so the
44058
44058
  * orchestrator UI can label rows distinctly. Providers that expose only
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.427",
39
+ version: "1.2.428",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.153",
48
+ version: "1.2.154",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.336",
84
+ version: "1.2.337",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("./dist-Cv8pFcIo.js");
2
+ require("./dist-C_f7s2st.js");
3
3
  const require_orchestrator_training_addon = require("./orchestrator/training.addon.js");
4
4
  const require_providers_modal_training_modal_addon = require("./providers/modal/training-modal.addon.js");
5
5
  //#region src/providers/fake/fake-provider.ts
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../dist-Cv8pFcIo.js");
2
+ const require_dist = require("../dist-C_f7s2st.js");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path);
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, m as defineRecordKinds, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA, u as RECORD_MAX_DATA_BYTES } from "../dist-Bna6QSX9.mjs";
1
+ import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, m as defineRecordKinds, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA, u as RECORD_MAX_DATA_BYTES } from "../dist-mC0XNhcx.mjs";
2
2
  import path from "node:path";
3
3
  import { createHash } from "node:crypto";
4
4
  import { createReadStream } from "node:fs";
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../../dist-Cv8pFcIo.js");
2
+ const require_dist = require("../../dist-C_f7s2st.js");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path, 1);
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { C as record, S as object, _ as isSecretClear, b as boolean, c as trainingProviderCapability, d as SECRET_CLEAR, f as arrayItemFieldPath, g as globalSecretScope, h as entryBody, l as BaseAddon, p as defineEntryKind, v as isSecretMarker, w as string, x as number, y as toSecretFieldView } from "../../dist-Bna6QSX9.mjs";
1
+ import { C as record, S as object, _ as isSecretClear, b as boolean, c as trainingProviderCapability, d as SECRET_CLEAR, f as arrayItemFieldPath, g as globalSecretScope, h as entryBody, l as BaseAddon, p as defineEntryKind, v as isSecretMarker, w as string, x as number, y as toSecretFieldView } from "../../dist-mC0XNhcx.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import path, { dirname, posix } from "node:path";
4
4
  import { createHash, createPrivateKey, createPublicKey, createSign, randomBytes, randomUUID } from "node:crypto";
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-C-gbqU_M.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-Ch6HQCmx.mjs";
2
2
  export { t as get, e as init };
@@ -2762,7 +2762,7 @@ async function or(e) {
2762
2762
  }
2763
2763
  }
2764
2764
  async function sr() {
2765
- return ir ||= or(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BZNWvnmy.mjs")).catch((e) => {
2765
+ return ir ||= or(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-DcGxW0BQ.mjs")).catch((e) => {
2766
2766
  throw ir = void 0, e;
2767
2767
  }), ir;
2768
2768
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-training",
3
- "version": "0.1.93",
3
+ "version": "0.1.94",
4
4
  "description": "Cloud training for CamStack: fine-tune the root detector on your own frames, on your own GPU-cloud account",
5
5
  "keywords": [
6
6
  "camstack",
@@ -68,7 +68,7 @@
68
68
  {
69
69
  "id": "training-modal",
70
70
  "category": "system",
71
- "name": "Modal (training cloud)",
71
+ "name": "Modal",
72
72
  "description": "Runs CamStack training jobs on your Modal account (modal.com, $30 of free credit a month on the Starter plan). Inert until you enter a Modal token",
73
73
  "version": "1.0.0",
74
74
  "entry": "./dist/providers/modal/training-modal.addon.js",