catence 0.2.0-beta.13 → 0.2.0-beta.14
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/README.md
CHANGED
|
@@ -24,6 +24,8 @@ Catence helps explore recovery, training load, trends, activity detail, swimming
|
|
|
24
24
|
|
|
25
25
|
Install Catence and create the first athlete. The default catalog home is `~/.catence`; set `CATENCE_HOME` or pass `--home` to use a different location.
|
|
26
26
|
|
|
27
|
+
Every `catence-data` command requires `--athlete <id>`; there is no default athlete. Pair it with `--home <dir>` to select the catalog when not using the default home.
|
|
28
|
+
|
|
27
29
|
```sh
|
|
28
30
|
npm install --global catence@beta # or catence@latest for stable
|
|
29
31
|
catence-data setup --athlete alex --label "Alex"
|
|
@@ -147,9 +149,7 @@ UV_CACHE_DIR=$PWD/.cache/uv uv run --project console --group dev python -m pytes
|
|
|
147
149
|
|
|
148
150
|
## Beta releases
|
|
149
151
|
|
|
150
|
-
Registry betas use distinct npm and
|
|
151
|
-
`catence@0.2.0-beta.1` pairs with `catence-console==0.2.0b1` and
|
|
152
|
-
`catence-chainlit==0.2.0b1`. The protected `beta` branch verifies candidates;
|
|
152
|
+
Registry betas use distinct npm, console, and UI-runtime prerelease formats. Each `catence@0.2.0-beta.N` npm release maps to a `catence-console==0.2.0bN` wheel, but the console depends on a range of `catence-chainlit` (the UI runtime), so the `catence-chainlit` version does not need to match the npm or console version. For example, `catence@0.2.0-beta.1` pairs with `catence-console==0.2.0b1` and can use any compatible `catence-chainlit` (such as `0.2.0b1`). The protected `beta` branch verifies candidates;
|
|
153
153
|
a `v0.2.0-beta.1` tag publishes to npm's `beta` channel and creates a GitHub
|
|
154
154
|
prerelease. Follow [the beta release checklist](release/beta-checklist.md) to
|
|
155
155
|
publish the UI wheel first, deploy the registry artifacts with Compose, and
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Keep these values synchronized with release/manifest.json; release checks
|
|
4
4
|
* deliberately reject drift before a package can be published.
|
|
5
5
|
*/
|
|
6
|
-
export declare const CATENCE_RUNTIME_VERSION = "0.2.0-beta.
|
|
6
|
+
export declare const CATENCE_RUNTIME_VERSION = "0.2.0-beta.14";
|
|
7
7
|
export declare const CATENCE_PROTOCOL_VERSION = 1;
|
|
8
8
|
export type CatenceRuntimeCapabilities = {
|
|
9
9
|
mcp: true;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Keep these values synchronized with release/manifest.json; release checks
|
|
4
4
|
* deliberately reject drift before a package can be published.
|
|
5
5
|
*/
|
|
6
|
-
export const CATENCE_RUNTIME_VERSION = '0.2.0-beta.
|
|
6
|
+
export const CATENCE_RUNTIME_VERSION = '0.2.0-beta.14';
|
|
7
7
|
export const CATENCE_PROTOCOL_VERSION = 1;
|
|
8
8
|
export function catenceRuntimeHealth() {
|
|
9
9
|
return {
|
|
@@ -225,7 +225,7 @@ export async function importSourceEntity(database, entity) {
|
|
|
225
225
|
const rawHash = entity.rawObjectHash;
|
|
226
226
|
await database.run(`INSERT INTO source_entities
|
|
227
227
|
(provider, entity_type, remote_id, parent_remote_id, occurred_on, source_updated_at, raw_object_hash, payload_json, extension_json)
|
|
228
|
-
VALUES ($provider, $entityType, $remoteId, $parentRemoteId, $occurredOn, $sourceUpdatedAt, $rawHash, $payload, $extension)
|
|
228
|
+
VALUES ($provider::VARCHAR, $entityType::VARCHAR, $remoteId::VARCHAR, $parentRemoteId::VARCHAR, $occurredOn::TIMESTAMPTZ, $sourceUpdatedAt::TIMESTAMPTZ, $rawHash::VARCHAR, $payload::JSON, $extension::JSON)
|
|
229
229
|
ON CONFLICT (provider, entity_type, remote_id) DO UPDATE SET
|
|
230
230
|
parent_remote_id = excluded.parent_remote_id, occurred_on = excluded.occurred_on,
|
|
231
231
|
source_updated_at = excluded.source_updated_at, raw_object_hash = excluded.raw_object_hash,
|
|
@@ -236,7 +236,7 @@ export async function importSourceEntity(database, entity) {
|
|
|
236
236
|
});
|
|
237
237
|
await database.run(`INSERT INTO domain_entities
|
|
238
238
|
(provider, entity_type, remote_id, parent_remote_id, occurred_on, payload_json, extension_json, raw_object_hash)
|
|
239
|
-
VALUES ($provider, $entityType, $remoteId, $parentRemoteId, $occurredOn, $payload, $extension, $rawHash)
|
|
239
|
+
VALUES ($provider::VARCHAR, $entityType::VARCHAR, $remoteId::VARCHAR, $parentRemoteId::VARCHAR, $occurredOn::TIMESTAMPTZ, $payload::JSON, $extension::JSON, $rawHash::VARCHAR)
|
|
240
240
|
ON CONFLICT (provider, entity_type, remote_id) DO UPDATE SET
|
|
241
241
|
parent_remote_id = excluded.parent_remote_id, occurred_on = excluded.occurred_on,
|
|
242
242
|
payload_json = excluded.payload_json, extension_json = excluded.extension_json, raw_object_hash = excluded.raw_object_hash`, {
|
|
@@ -878,7 +878,7 @@ async function importNutrition(database, provider, date, remoteId, payload, rawH
|
|
|
878
878
|
const fields = nutritionFields(payload);
|
|
879
879
|
await database.run(`INSERT INTO nutrition_days
|
|
880
880
|
(provider, nutrition_date, energy_kcal, carbohydrates_g, protein_g, fat_g, hydration_ml, metrics_json, raw_object_hash)
|
|
881
|
-
VALUES ($provider, $nutritionDate, $energyKcal, $carbohydratesG, $proteinG, $fatG, $hydrationMl, $metrics, $rawHash)
|
|
881
|
+
VALUES ($provider::VARCHAR, $nutritionDate::DATE, $energyKcal::DOUBLE, $carbohydratesG::DOUBLE, $proteinG::DOUBLE, $fatG::DOUBLE, $hydrationMl::DOUBLE, $metrics::JSON, $rawHash::VARCHAR)
|
|
882
882
|
ON CONFLICT (provider, nutrition_date) DO UPDATE SET
|
|
883
883
|
energy_kcal = COALESCE(excluded.energy_kcal, nutrition_days.energy_kcal),
|
|
884
884
|
carbohydrates_g = COALESCE(excluded.carbohydrates_g, nutrition_days.carbohydrates_g),
|
|
@@ -891,7 +891,11 @@ async function importNutrition(database, provider, date, remoteId, payload, rawH
|
|
|
891
891
|
const itemId = firstString(item, ['id', 'foodId', 'entryId']) ?? `${remoteId}:${index}`;
|
|
892
892
|
await database.run(`INSERT INTO nutrition_items
|
|
893
893
|
(provider, remote_item_id, nutrition_date, meal, consumed_at, food_name, quantity, energy_kcal, carbohydrates_g, protein_g, fat_g, payload_json, raw_object_hash)
|
|
894
|
-
VALUES (
|
|
894
|
+
VALUES (
|
|
895
|
+
CAST(? AS VARCHAR), CAST(? AS VARCHAR), CAST(? AS DATE), CAST(? AS VARCHAR),
|
|
896
|
+
CAST(? AS TIMESTAMP), CAST(? AS VARCHAR), CAST(? AS DOUBLE), CAST(? AS DOUBLE),
|
|
897
|
+
CAST(? AS DOUBLE), CAST(? AS DOUBLE), CAST(? AS DOUBLE), CAST(? AS JSON), CAST(? AS VARCHAR)
|
|
898
|
+
)
|
|
895
899
|
ON CONFLICT (provider, remote_item_id) DO UPDATE SET nutrition_date = excluded.nutrition_date, meal = excluded.meal,
|
|
896
900
|
consumed_at = excluded.consumed_at, food_name = excluded.food_name, quantity = excluded.quantity, energy_kcal = excluded.energy_kcal,
|
|
897
901
|
carbohydrates_g = excluded.carbohydrates_g, protein_g = excluded.protein_g, fat_g = excluded.fat_g, payload_json = excluded.payload_json,
|
package/package.json
CHANGED