forge-openclaw-plugin 0.2.101 → 0.2.103
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/dist/assets/activity-page-Dv6X5ZCV.js +1 -0
- package/dist/assets/ai-surface-workspace-CutiG6uS.js +1 -0
- package/dist/assets/atlas-panel-jgMRyaHn.js +1 -0
- package/dist/assets/{board-BkDRaMp6.js → board-dIX6etHh.js} +1 -1
- package/dist/assets/calendar-page-q7Nm5E2U.js +1 -0
- package/dist/assets/calendar-rules-DPFsfiRl.js +1 -0
- package/dist/assets/calendar-week-toolbar-nVhgB-0s.js +1 -0
- package/dist/assets/{charts-P7EVhIog.js → charts-DFnEuIMB.js} +8 -8
- package/dist/assets/companion-sync-lab-page-CJ8UTij8.js +1 -0
- package/dist/assets/daily-metrics-dashboard-CiJkkkd1.js +1 -0
- package/dist/assets/entity-note-count-link-RzBB6ujx.js +1 -0
- package/dist/assets/entity-notes-surface-Djz50HvD.js +1 -0
- package/dist/assets/execution-board-CtPhI-58.js +1 -0
- package/dist/assets/faceted-token-search-DEC6ANa9.js +1 -0
- package/dist/assets/flagship-signal-deck-CtHC3mql.js +1 -0
- package/dist/assets/floating-action-menu-CKQRhff9.js +1 -0
- package/dist/assets/{forms-BFlTgZ3W.js → forms-hB0SqEh-.js} +1 -1
- package/dist/assets/goal-detail-page-CF5fNQeR.js +1 -0
- package/dist/assets/goals-page-fsY8NzGB.js +1 -0
- package/dist/assets/{graph-D6JLqDbD.js → graph-DDUZNRsO.js} +14 -14
- package/dist/assets/habits-page-COoGz4kj.js +1 -0
- package/dist/assets/index-BAXYM89v.css +1 -0
- package/dist/assets/index-EqQsXoat.js +19 -0
- package/dist/assets/insight-flow-dialog-DtX_5W7g.js +1 -0
- package/dist/assets/insights-page-cBd74ObU.js +8 -0
- package/dist/assets/kanban-page-CYav9THw.js +1 -0
- package/dist/assets/knowledge-graph-page-D2A-W1jE.js +1 -0
- package/dist/assets/{life-force-page-Dy0JTS2G.js → life-force-page-CACGlNhq.js} +1 -1
- package/dist/assets/life-force-workspace-BJ4N1I78.js +1 -0
- package/dist/assets/{maps-ClgJoCjz.js → maps-C-yOWiDN.js} +1 -1
- package/dist/assets/metric-tile-CMadwnGz.js +1 -0
- package/dist/assets/{motion-BeD44FeG.js → motion-Lt5B1XuE.js} +1 -1
- package/dist/assets/movement-page-D5VqFd2q.js +1 -0
- package/dist/assets/note-markdown-BzK2Qlgr.js +3 -0
- package/dist/assets/note-tags-input-CZzqJMLc.js +1 -0
- package/dist/assets/notes-page-D3Hsh90C.js +1 -0
- package/dist/assets/{open-in-graph-button-IXe9SGth.js → open-in-graph-button-BFPKfyK3.js} +1 -1
- package/dist/assets/orbit-map-CnyfSmOG.js +1 -0
- package/dist/assets/overview-page-CXdWrOV1.js +1 -0
- package/dist/assets/page-hero-ffKzgyW3.js +1 -0
- package/dist/assets/pill-cluster-C2D0h3lx.js +1 -0
- package/dist/assets/{preference-entity-handoff-button-5PzUn42S.js → preference-entity-handoff-button-Dj3V6VxL.js} +1 -1
- package/dist/assets/preferences-page-Jo8Gw386.js +1 -0
- package/dist/assets/project-collections-qSqp90HN.js +1 -0
- package/dist/assets/{project-detail-page-BXK5-4xW.js → project-detail-page-BifhiLQX.js} +1 -1
- package/dist/assets/project-management-hierarchy-page-DZ_9klIc.js +1 -0
- package/dist/assets/project-management-section-nav-BImLCVvf.js +1 -0
- package/dist/assets/projects-page-ptcx6H38.js +1 -0
- package/dist/assets/psyche-behaviors-page-BDwXyDta.js +5 -0
- package/dist/assets/psyche-flashcards-page-DL1BP1jX.js +1 -0
- package/dist/assets/psyche-goal-map-page-ovcpisx1.js +1 -0
- package/dist/assets/psyche-graph-EP5GL612.js +1 -0
- package/dist/assets/{psyche-metrics-page-CuR9oqEy.js → psyche-metrics-page-Bcu813Rg.js} +1 -1
- package/dist/assets/psyche-mode-guide-page-C0g27Xpt.js +1 -0
- package/dist/assets/psyche-modes-page-BjKjX5MR.js +1 -0
- package/dist/assets/psyche-page-F4tF2W70.js +1 -0
- package/dist/assets/psyche-patterns-page-B-14hukK.js +5 -0
- package/dist/assets/psyche-questionnaire-builder-page-BdXmoHvK.js +1 -0
- package/dist/assets/psyche-questionnaire-detail-page-Cu5uwlJu.js +1 -0
- package/dist/assets/psyche-questionnaire-run-detail-page-C3R4PClg.js +1 -0
- package/dist/assets/psyche-questionnaire-run-page-Div3iDdt.js +1 -0
- package/dist/assets/psyche-questionnaires-page-DpqAPQCp.js +1 -0
- package/dist/assets/psyche-report-detail-page-BvWVDKP3.js +3 -0
- package/dist/assets/psyche-reports-page-BrbWUlAq.js +1 -0
- package/dist/assets/{psyche-schemas-HFmg37Wj.js → psyche-schemas-Dxj554nU.js} +1 -1
- package/dist/assets/psyche-schemas-beliefs-page-DYKvAtSD.js +9 -0
- package/dist/assets/psyche-screen-time-page-CAOKCyQw.js +1 -0
- package/dist/assets/psyche-self-observation-page-F0MVA0UH.js +1 -0
- package/dist/assets/psyche-values-page-DyvX-d0o.js +5 -0
- package/dist/assets/report-chain-fields-CeC1cJFS.js +1 -0
- package/dist/assets/rewards-page-C2loyODo.js +1 -0
- package/dist/assets/scheduling-rules-editor-D40AC2jR.js +1 -0
- package/dist/assets/schema-badge-FY7818qB.js +1 -0
- package/dist/assets/schema-visuals-CvC9a3i6.js +1 -0
- package/dist/assets/select-menu-DJsCG6rM.js +1 -0
- package/dist/assets/settings-agents-page-BFkJ5AAD.js +6 -0
- package/dist/assets/settings-bin-page-D3-Ab-iA.js +1 -0
- package/dist/assets/settings-calendar-page-ly_mSTAD.js +5 -0
- package/dist/assets/settings-data-page-D7QOqNf-.js +1 -0
- package/dist/assets/settings-logs-page-Ca87HEUx.js +1 -0
- package/dist/assets/settings-mobile-page-D0jejZot.js +1 -0
- package/dist/assets/settings-models-page-DPDsZjSc.js +1 -0
- package/dist/assets/settings-page-1cArlSPM.js +1 -0
- package/dist/assets/settings-rewards-page-Db4BV1DC.js +1 -0
- package/dist/assets/{settings-section-nav-DSOuht_F.js → settings-section-nav-DP9o4peU.js} +1 -1
- package/dist/assets/settings-users-page-BHFyDSsd.js +1 -0
- package/dist/assets/settings-wiki-page-BNaiupBm.js +1 -0
- package/dist/assets/sleep-page-BmOPF0yD.js +1 -0
- package/dist/assets/sports-page-BldIiclr.js +1 -0
- package/dist/assets/{state-B-4sS1xO.js → state-vCcAT5Hq.js} +1 -1
- package/dist/assets/strategies-page-CaTN99qj.js +1 -0
- package/dist/assets/strategy-detail-page-DsgFTd-U.js +1 -0
- package/dist/assets/strategy-dialog-7X7peRzu.js +1 -0
- package/dist/assets/surface-CJI17F3n.js +1 -0
- package/dist/assets/{table-WfAPUppN.js → table-BNqMG3_S.js} +1 -1
- package/dist/assets/task-detail-page-M1sIIPA8.js +1 -0
- package/dist/assets/timebox-planning-dialog-ByojN0AN.js +1 -0
- package/dist/assets/today-page-BjDijtn8.js +1 -0
- package/dist/assets/training-load-page-BPRmaWmF.js +1 -0
- package/dist/assets/{ui-C13Nbgas.js → ui-C1iwpj2-.js} +4 -4
- package/dist/assets/use-psyche-focus-target-Ct-acS9G.js +1 -0
- package/dist/assets/vendor-Dnkkx2co.js +1067 -0
- package/dist/assets/{vitals-page-qre17Nw8.js → vitals-page-CE9zdGLF.js} +1 -1
- package/dist/assets/weekly-review-page-CzhTv90n.js +1 -0
- package/dist/assets/weight-loss-page-Bp_cIk78.js +5 -0
- package/dist/assets/wiki-article-markdown-Dok2uy2p.js +4 -0
- package/dist/assets/wiki-editor-page-BuW32Y3f.js +26 -0
- package/dist/assets/wiki-ingest-history-page-DZKSBNHV.js +1 -0
- package/dist/assets/wiki-ingest-modal-DyqBEZcC.js +1 -0
- package/dist/assets/wiki-page-DqxlbLKG.js +1 -0
- package/dist/assets/workbench-flow-page-C4nc9jUg.js +5 -0
- package/dist/assets/workbench-page-BnyR7SL0.js +1 -0
- package/dist/assets/workout-detail-page-DT-c5cHL.js +2 -0
- package/dist/index.html +9 -9
- package/dist/openclaw/local-runtime.js +41 -14
- package/dist/server/server/migrations/067_weight_loss_daily_active_overrides.sql +13 -0
- package/dist/server/server/src/app.js +125 -33
- package/dist/server/server/src/health-weight-loss.js +554 -77
- package/dist/server/server/src/health.js +12 -4
- package/dist/server/server/src/movement.js +84 -1
- package/dist/server/server/src/openapi.js +123 -18
- package/dist/server/server/src/repositories/model-settings.js +21 -12
- package/dist/server/server/src/repositories/settings.js +19 -5
- package/dist/server/src/components/ui/info-tooltip.js +6 -6
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -5
- package/dist/server/src/lib/api.js +24 -5
- package/dist/server/src/lib/theme-system.js +8 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -3
- package/server/migrations/067_weight_loss_daily_active_overrides.sql +13 -0
- package/skills/forge-openclaw/SKILL.md +13 -0
- package/skills/forge-openclaw/entity_conversation_playbooks.md +7 -1
- package/dist/assets/activity-page-CpjuNSHw.js +0 -1
- package/dist/assets/ai-surface-workspace-DEAFZruS.js +0 -1
- package/dist/assets/atlas-panel-CdVNPotj.js +0 -1
- package/dist/assets/calendar-page-DNNt6lfz.js +0 -1
- package/dist/assets/calendar-rules-DNJFNsxi.js +0 -1
- package/dist/assets/calendar-week-toolbar-BbPwYeN0.js +0 -1
- package/dist/assets/companion-sync-lab-page-KxEDigM6.js +0 -1
- package/dist/assets/daily-metrics-dashboard-B3cqJgDt.js +0 -1
- package/dist/assets/entity-note-count-link-DrhjJZ4i.js +0 -1
- package/dist/assets/entity-notes-surface-CkcRsKJQ.js +0 -1
- package/dist/assets/execution-board-D07gOocB.js +0 -1
- package/dist/assets/faceted-token-search-BxRRcM3q.js +0 -1
- package/dist/assets/flagship-signal-deck-cmy82b8_.js +0 -1
- package/dist/assets/floating-action-menu-Fs_ZiUMo.js +0 -1
- package/dist/assets/goal-detail-page-CqLiNz4f.js +0 -1
- package/dist/assets/goals-page-BTk7mg_T.js +0 -1
- package/dist/assets/habits-page-BJxagdzx.js +0 -1
- package/dist/assets/index-CF4J4R9L.js +0 -19
- package/dist/assets/index-CZbuZQjw.css +0 -1
- package/dist/assets/insight-flow-dialog-8f3D0GuC.js +0 -1
- package/dist/assets/insights-page-D6rOa7uk.js +0 -8
- package/dist/assets/kanban-page-XQ7Se6dH.js +0 -1
- package/dist/assets/knowledge-graph-page-BtAg8iv3.js +0 -1
- package/dist/assets/life-force-workspace-OfyB9HJM.js +0 -1
- package/dist/assets/metric-tile-DKpo-8xw.js +0 -1
- package/dist/assets/movement-page-Bg_T_Stx.js +0 -1
- package/dist/assets/note-markdown-N-uxD3Xt.js +0 -3
- package/dist/assets/note-tags-input-Cdu7wiw6.js +0 -1
- package/dist/assets/notes-page-CKXnF_KU.js +0 -1
- package/dist/assets/orbit-map-Dzi6KliQ.js +0 -1
- package/dist/assets/overview-page-1miYqaVS.js +0 -1
- package/dist/assets/page-hero-DRy5b2MU.js +0 -1
- package/dist/assets/pill-cluster-C9QczVJ2.js +0 -1
- package/dist/assets/preferences-page-DtNaF5Q3.js +0 -1
- package/dist/assets/project-collections-xPz2mlRr.js +0 -1
- package/dist/assets/project-management-hierarchy-page-DtRpMABw.js +0 -1
- package/dist/assets/project-management-section-nav-P3ixzPa-.js +0 -1
- package/dist/assets/projects-page-C5ViRuf4.js +0 -1
- package/dist/assets/psyche-behaviors-page-Dco46sC4.js +0 -5
- package/dist/assets/psyche-flashcards-page-ZcoEB8gV.js +0 -1
- package/dist/assets/psyche-goal-map-page-CLBAQOI0.js +0 -1
- package/dist/assets/psyche-graph-k4tX2tdp.js +0 -1
- package/dist/assets/psyche-mode-guide-page-hIVXcCnE.js +0 -1
- package/dist/assets/psyche-modes-page-0lYtBlhO.js +0 -1
- package/dist/assets/psyche-page-VZ9k9ISp.js +0 -1
- package/dist/assets/psyche-patterns-page-gx5nmdGq.js +0 -5
- package/dist/assets/psyche-questionnaire-builder-page-Bn0TOISd.js +0 -1
- package/dist/assets/psyche-questionnaire-detail-page-CmVzSd_s.js +0 -1
- package/dist/assets/psyche-questionnaire-run-detail-page-BsMbmXCG.js +0 -1
- package/dist/assets/psyche-questionnaire-run-page-CgkRL2vi.js +0 -1
- package/dist/assets/psyche-questionnaires-page-D7V8uLXM.js +0 -1
- package/dist/assets/psyche-report-detail-page-OlFq57eL.js +0 -3
- package/dist/assets/psyche-reports-page-dVUZjna1.js +0 -1
- package/dist/assets/psyche-schemas-beliefs-page-BCgc8FUd.js +0 -9
- package/dist/assets/psyche-screen-time-page-B_6BT_WN.js +0 -1
- package/dist/assets/psyche-self-observation-page-CEG5mluK.js +0 -1
- package/dist/assets/psyche-values-page-DRbRfEd6.js +0 -5
- package/dist/assets/report-chain-fields-CALCV3V5.js +0 -1
- package/dist/assets/rewards-page-DmC4R_Ps.js +0 -1
- package/dist/assets/scheduling-rules-editor-D02s70hr.js +0 -1
- package/dist/assets/schema-badge-BZO-qNhO.js +0 -1
- package/dist/assets/schema-visuals-D6nxjbYC.js +0 -1
- package/dist/assets/select-menu-fYyreSdQ.js +0 -1
- package/dist/assets/settings-agents-page-C_v_hMJF.js +0 -6
- package/dist/assets/settings-bin-page-DY5bg81n.js +0 -1
- package/dist/assets/settings-calendar-page-D1CzE6cg.js +0 -5
- package/dist/assets/settings-data-page-CHRQFU9H.js +0 -1
- package/dist/assets/settings-logs-page-B04pUwEv.js +0 -1
- package/dist/assets/settings-mobile-page-D9kTlYDS.js +0 -1
- package/dist/assets/settings-models-page-D26270R2.js +0 -1
- package/dist/assets/settings-page-DYDTFlnv.js +0 -1
- package/dist/assets/settings-rewards-page-cl4vqqO_.js +0 -1
- package/dist/assets/settings-users-page-BU79JB_T.js +0 -1
- package/dist/assets/settings-wiki-page-DwAUlyA3.js +0 -1
- package/dist/assets/sleep-page-D8NbdhyS.js +0 -1
- package/dist/assets/sports-page-CV4Cnzwn.js +0 -1
- package/dist/assets/strategies-page-C4qvXnql.js +0 -1
- package/dist/assets/strategy-detail-page-DJLo5rfy.js +0 -1
- package/dist/assets/strategy-dialog-D3AuUlVz.js +0 -1
- package/dist/assets/task-detail-page-z-9u9rF0.js +0 -1
- package/dist/assets/timebox-planning-dialog-DB6FLqmI.js +0 -1
- package/dist/assets/today-page-BKlu6gx5.js +0 -1
- package/dist/assets/training-load-page-CyJQqo_3.js +0 -1
- package/dist/assets/use-psyche-focus-target-C1C_XjYG.js +0 -1
- package/dist/assets/vendor-DHkYh85p.js +0 -1052
- package/dist/assets/weekly-review-page-Cz4vkRcx.js +0 -1
- package/dist/assets/weight-loss-page-BQrnOI0y.js +0 -1
- package/dist/assets/wiki-article-markdown-DdiR2TJE.js +0 -4
- package/dist/assets/wiki-editor-page-DqwoqVFb.js +0 -26
- package/dist/assets/wiki-ingest-history-page--evBLbOw.js +0 -1
- package/dist/assets/wiki-ingest-modal--ohzFnj2.js +0 -1
- package/dist/assets/wiki-page-B_VJFBPA.js +0 -1
- package/dist/assets/workbench-flow-page-Du62mtJU.js +0 -5
- package/dist/assets/workbench-page-4MKr3iRm.js +0 -1
- package/dist/assets/workout-detail-page-DfUbYYw1.js +0 -2
|
@@ -67,7 +67,7 @@ import { createManagerRuntime } from "./managers/runtime.js";
|
|
|
67
67
|
import { isManagerError } from "./managers/type-guards.js";
|
|
68
68
|
import { buildCompanionPairingTransport, getCompanionIrohStatus, stopCompanionIroh } from "./services/companion-iroh.js";
|
|
69
69
|
import { createCompanionPairingSession, createCompanionPairingSessionSchema, createSleepSession, createSleepSessionSchema, createWorkoutSession, createWorkoutSessionSchema, deleteSleepSession, deleteWorkoutSession, getCompanionPairingSessionById, getCompanionOverview, getFitnessViewData, getSleepSessionById, getSleepSessionDetailById, getSleepTimelineOverlaysForRange, getSleepViewData, getTrainingLoadViewData, getVitalsViewData, getHealthZoneProfileForUser, getMobileHealthSyncSessionStatus, getWorkoutSessionById, getWorkoutSessionDetailById, heartbeatCompanionPairing, heartbeatCompanionPairingSchema, healthZoneProfilePatchSchema, abortMobileHealthSyncSession, completeMobileHealthSyncSession, ingestMobileHealthSync, ingestMobileHealthSyncChunk, mobileHealthSyncChunkSchema, mobileHealthSyncSessionCompleteSchema, mobileHealthSyncSessionStartSchema, mobileHealthSyncSchema, patchHealthZoneProfileForUser, patchCompanionPairingSourceState, patchCompanionPairingSourceStateSchema, companionSourceKeySchema, requireValidPairing, startMobileHealthSyncSession, revokeAllCompanionPairingSessions, revokeAllCompanionPairingSessionsSchema, revokeCompanionPairingSession, updateMobileCompanionSourceState, updateMobileCompanionSourceStateSchema, verifyCompanionPairing, verifyCompanionPairingSchema, updateSleepMetadata, updateSleepMetadataSchema, updateWorkoutMetadata, updateWorkoutMetadataSchema } from "./health.js";
|
|
70
|
-
import { createNutritionAppearanceCheckin, createNutritionBodyCheckin, createNutritionExperiment, createNutritionFoodLog, createNutritionGutCheckin, createNutritionSubjectiveCheckin, deleteNutritionFoodLog, getWeightLossViewData, lookupNutritionBarcode, nutritionAppearanceCheckinCreateSchema, nutritionBarcodeLookupSchema, nutritionBodyCheckinCreateSchema, nutritionExperimentCreateSchema, nutritionExperimentPatchSchema, nutritionFoodLogCreateSchema, nutritionFoodLogPatchSchema, nutritionFoodSearchSchema, nutritionGutCheckinCreateSchema, nutritionParseRequestSchema, nutritionSubjectiveCheckinCreateSchema, nutritionTargetUpdateSchema, parseNutritionFoodLogWithChatGpt, patchNutritionExperiment, patchNutritionFoodLog, searchNutritionFoods, updateNutritionTarget } from "./health-weight-loss.js";
|
|
70
|
+
import { createNutritionAppearanceCheckin, createNutritionBodyCheckin, createNutritionExperiment, createNutritionFoodLog, createNutritionGutCheckin, createNutritionSubjectiveCheckin, deleteNutritionFoodLog, getWeightLossViewData, lookupNutritionBarcode, nutritionAppearanceCheckinCreateSchema, nutritionBarcodeLookupSchema, nutritionBodyCheckinCreateSchema, nutritionExperimentCreateSchema, nutritionExperimentPatchSchema, nutritionFoodLogCreateSchema, nutritionFoodLogPatchSchema, nutritionFoodSearchSchema, nutritionGutCheckinCreateSchema, nutritionParseRequestSchema, nutritionSubjectiveCheckinCreateSchema, nutritionDailyActiveCaloriesUpdateSchema, nutritionTargetUpdateSchema, parseNutritionFoodLogWithChatGpt, patchNutritionExperiment, patchNutritionFoodLog, searchNutritionFoods, updateNutritionDailyActiveCalories, updateNutritionTarget } from "./health-weight-loss.js";
|
|
71
71
|
import { analyzeMovementUserBoxPreflight, createMovementUserBox, createMovementPlace, deleteMovementUserBox, getMovementAllTimeSummary, getMovementBoxDetail, getMovementDayDetail, getMovementMobileBootstrap, getMovementTimeline, getMovementSelectionAggregate, getMovementSettings, getMovementTripDetail, getMovementMonthSummary, invalidateAutomaticMovementBox, listMovementPlaces, movementAutomaticBoxInvalidateSchema, movementMobileBootstrapSchema, movementMobilePlaceMutationSchema, movementMobileStayPatchSchema, movementMobileUserBoxCreateSchema, movementMobileUserBoxPreflightSchema, movementMobileUserBoxPatchSchema, movementMobileAutomaticBoxInvalidateSchema, movementMobileTimelineSchema, movementPlaceMutationSchema, movementPlacePatchSchema, movementSelectionAggregateSchema, movementStayPatchSchema, movementTripPatchSchema, movementUserBoxCreateSchema, movementUserBoxPreflightSchema, movementUserBoxPatchSchema, movementSettingsPatchSchema, movementTimelineQuerySchema, movementTripPointPatchSchema, deleteMovementStay, deleteMovementTrip, deleteMovementTripPoint, updateMovementPlace, updateMovementSettings, updateMovementStay, updateMovementTrip, updateMovementUserBox, updateMovementTripPoint, resolveMovementTimelineSegmentForBox } from "./movement.js";
|
|
72
72
|
import { getScreenTimeAllTimeSummary, getScreenTimeDayDetail, getScreenTimeMonthSummary, getScreenTimeSettings, screenTimeSettingsPatchSchema, updateScreenTimeSettings } from "./screen-time.js";
|
|
73
73
|
import { assertWatchReady, buildWatchBootstrap, ingestWatchCommandBatch, ingestWatchCaptureBatch, mobileWatchBootstrapSchema, mobileWatchCommandBatchSchema, mobileWatchCaptureBatchSchema, mobileWatchHabitCheckInSchema } from "./watch-mobile.js";
|
|
@@ -3408,6 +3408,18 @@ const AGENT_ONBOARDING_ENTITY_CONVERSATION_PLAYBOOKS = [
|
|
|
3408
3408
|
"Move to a workout_session write only when one specific workout needs reflective context, tags, notes, or links."
|
|
3409
3409
|
]
|
|
3410
3410
|
},
|
|
3411
|
+
{
|
|
3412
|
+
focus: "weight_loss",
|
|
3413
|
+
openingQuestion: "What food-body link are you trying to test or understand right now?",
|
|
3414
|
+
coachingGoal: "Review nutrition, body-composition, sport-fueling, appearance, gut-comfort, craving, and subjective-energy evidence before logging or changing anything.",
|
|
3415
|
+
askSequence: [
|
|
3416
|
+
"Ask whether the question is fat-loss pace, food intake, protein/fiber sufficiency, sport fuel, visual look, water retention, cravings, gut comfort, energy, or one meal reaction.",
|
|
3417
|
+
"Use forge_get_weight_loss_overview before asking the user to reconstruct recent food, weight, workouts, or subjective state from memory.",
|
|
3418
|
+
"Use forge_parse_food_log_with_chatgpt only for rough meal text or photo descriptions through Forge's configured openai-codex ChatGPT subscription connection, not a metered OpenAI Platform API path.",
|
|
3419
|
+
"Use the dedicated nutrition tools for food logs, body check-ins, appearance check-ins, subjective food effects, gut check-ins, nutrition patterns, and N-of-1 experiments instead of generic batch CRUD.",
|
|
3420
|
+
"Ask for the one outcome metric that would make a nutrition experiment interpretable before turning repeated observations into a hypothesis."
|
|
3421
|
+
]
|
|
3422
|
+
},
|
|
3411
3423
|
{
|
|
3412
3424
|
focus: "preference_catalog",
|
|
3413
3425
|
openingQuestion: "What decision or taste question should this catalog help with?",
|
|
@@ -4021,7 +4033,9 @@ function buildPlaybookRouteInfo(focus) {
|
|
|
4021
4033
|
? `Mutation: ${guide.preferredMutationPath}.`
|
|
4022
4034
|
: null,
|
|
4023
4035
|
guide?.preferredReadPath ? `Read: ${guide.preferredReadPath}.` : null,
|
|
4024
|
-
guide?.preferredMutationTool
|
|
4036
|
+
guide?.preferredMutationTool
|
|
4037
|
+
? `Tool: ${guide.preferredMutationTool}.`
|
|
4038
|
+
: null,
|
|
4025
4039
|
`Entity type: ${focus}.`
|
|
4026
4040
|
]
|
|
4027
4041
|
.filter(Boolean)
|
|
@@ -4696,6 +4710,7 @@ function buildAgentOnboardingPayload(request) {
|
|
|
4696
4710
|
movement: "Forge Movement is the first-class mobility surface. It is a timeline of stays and trips: stays capture time spent in the same place, and trips capture travel between places. Use it for time-in-place questions, travel-history review, specific stay or trip edits, selected-span aggregates, known places, and links to other Forge records rather than pretending stays and trips are normal batch CRUD entities.",
|
|
4697
4711
|
lifeForce: "Life Force is Forge's energy-budget and fatigue model. Read it through the dedicated life-force state and update it through focused profile, weekday-template, and fatigue-signal routes rather than generic entity CRUD.",
|
|
4698
4712
|
workbench: "Workbench is Forge's graph-flow execution system. Treat flows, runs, published outputs, node results, and latest-node-output reads as a dedicated API family instead of a normal entity-batch surface.",
|
|
4713
|
+
weightLoss: "Weight Loss is Forge's nutrition, body-composition, sport-fueling, appearance, gut-comfort, craving, and subjective-energy surface. Read it through the health overview route and use the dedicated nutrition tools for food logs, body check-ins, appearance check-ins, subjective effects, gut check-ins, and N-of-1 experiments instead of inventing batch CRUD records.",
|
|
4699
4714
|
psyche: "Forge Psyche is the reflective domain for values, patterns, behaviors, beliefs, modes, flashcards, and trigger reports. It is sensitive and should be handled deliberately."
|
|
4700
4715
|
},
|
|
4701
4716
|
psycheSubmoduleModel: {
|
|
@@ -4961,7 +4976,12 @@ function buildAgentOnboardingPayload(request) {
|
|
|
4961
4976
|
classification: "specialized_domain_surface",
|
|
4962
4977
|
aliases: ["life_force", "life-force", "Life Force"],
|
|
4963
4978
|
summary: "Dedicated life-force API. Use it to read the current energy budget, drains, recommendations, and warnings, then patch only the parts that are meant to be user-controlled.",
|
|
4964
|
-
routeKeys: [
|
|
4979
|
+
routeKeys: [
|
|
4980
|
+
"overview",
|
|
4981
|
+
"profile",
|
|
4982
|
+
"weekdayTemplate",
|
|
4983
|
+
"fatigueSignal"
|
|
4984
|
+
],
|
|
4965
4985
|
routeSelectionQuestions: [
|
|
4966
4986
|
"Is the user trying to understand the overview, change durable profile assumptions, change a weekday curve, or log a right-now fatigue signal?",
|
|
4967
4987
|
"What planning decision should the overview or correction change: workload, recovery, timeboxes, meetings, or task choice?",
|
|
@@ -4998,7 +5018,12 @@ function buildAgentOnboardingPayload(request) {
|
|
|
4998
5018
|
classification: "specialized_domain_surface",
|
|
4999
5019
|
aliases: ["lifeForce", "life-force", "Life Force"],
|
|
5000
5020
|
summary: "Alias for the dedicated Life Force API keyed to the entity-style name `life_force`. Use the same overview, profile, weekday-template, and fatigue-signal routes as `lifeForce`.",
|
|
5001
|
-
routeKeys: [
|
|
5021
|
+
routeKeys: [
|
|
5022
|
+
"overview",
|
|
5023
|
+
"profile",
|
|
5024
|
+
"weekdayTemplate",
|
|
5025
|
+
"fatigueSignal"
|
|
5026
|
+
],
|
|
5002
5027
|
routeSelectionQuestions: [
|
|
5003
5028
|
"Is the user trying to understand the overview, change durable profile assumptions, change a weekday curve, or log a right-now fatigue signal?",
|
|
5004
5029
|
"What planning decision should the overview or correction change: workload, recovery, timeboxes, meetings, or task choice?",
|
|
@@ -5274,7 +5299,21 @@ function buildAgentOnboardingPayload(request) {
|
|
|
5274
5299
|
psycheSchemaCatalog: "/api/v1/psyche/schema-catalog",
|
|
5275
5300
|
psycheEventTypes: "/api/v1/psyche/event-types",
|
|
5276
5301
|
psycheEmotions: "/api/v1/psyche/emotions",
|
|
5277
|
-
weightLoss: "/api/v1/health/weight-loss"
|
|
5302
|
+
weightLoss: "/api/v1/health/weight-loss",
|
|
5303
|
+
weightLossTarget: "/api/v1/health/weight-loss/target",
|
|
5304
|
+
weightLossDailyActiveCalories: "/api/v1/health/weight-loss/daily-active-calories",
|
|
5305
|
+
weightLossFoodsSearch: "/api/v1/health/weight-loss/foods/search",
|
|
5306
|
+
weightLossFoodsBarcode: "/api/v1/health/weight-loss/foods/barcode",
|
|
5307
|
+
weightLossFoodLogs: "/api/v1/health/weight-loss/food-logs",
|
|
5308
|
+
weightLossFoodLogDetail: "/api/v1/health/weight-loss/food-logs/:id",
|
|
5309
|
+
weightLossParse: "/api/v1/health/weight-loss/parse",
|
|
5310
|
+
weightLossBodyCheckins: "/api/v1/health/weight-loss/body-checkins",
|
|
5311
|
+
weightLossAppearanceCheckins: "/api/v1/health/weight-loss/appearance-checkins",
|
|
5312
|
+
weightLossSubjectiveCheckins: "/api/v1/health/weight-loss/subjective-checkins",
|
|
5313
|
+
weightLossGutCheckins: "/api/v1/health/weight-loss/gut-checkins",
|
|
5314
|
+
weightLossPatterns: "/api/v1/health/weight-loss/patterns",
|
|
5315
|
+
weightLossExperiments: "/api/v1/health/weight-loss/experiments",
|
|
5316
|
+
weightLossExperimentDetail: "/api/v1/health/weight-loss/experiments/:id"
|
|
5278
5317
|
},
|
|
5279
5318
|
recommendedPluginTools: {
|
|
5280
5319
|
bootstrap: ["forge_get_operator_overview"],
|
|
@@ -5643,7 +5682,9 @@ function resolveEffectiveReadScope(query, auth) {
|
|
|
5643
5682
|
: [...tokenUserIds]
|
|
5644
5683
|
: requestedUserIds;
|
|
5645
5684
|
return {
|
|
5646
|
-
userIds: effectiveUserIds !== undefined
|
|
5685
|
+
userIds: effectiveUserIds !== undefined
|
|
5686
|
+
? Array.from(new Set(effectiveUserIds))
|
|
5687
|
+
: undefined,
|
|
5647
5688
|
enforceUserIds: tokenUserIds.length > 0,
|
|
5648
5689
|
projectIds: auth.token?.scopePolicy.projectIds ?? [],
|
|
5649
5690
|
tagIds: auth.token?.scopePolicy.tagIds ?? []
|
|
@@ -5678,8 +5719,7 @@ function applyProjectScope(projects, scope) {
|
|
|
5678
5719
|
return projects;
|
|
5679
5720
|
}
|
|
5680
5721
|
return projects.filter((project) => {
|
|
5681
|
-
if (scope.projectIds.length > 0 &&
|
|
5682
|
-
!scope.projectIds.includes(project.id)) {
|
|
5722
|
+
if (scope.projectIds.length > 0 && !scope.projectIds.includes(project.id)) {
|
|
5683
5723
|
return false;
|
|
5684
5724
|
}
|
|
5685
5725
|
if (scope.tagIds.length > 0 &&
|
|
@@ -5775,8 +5815,10 @@ function buildV1Context(scope = {
|
|
|
5775
5815
|
});
|
|
5776
5816
|
const projects = applyProjectScope(listProjectSummaries({ userIds: scopedUserIdsForReads }), scope);
|
|
5777
5817
|
const tasks = applyTaskScope(filterOwnedEntities("task", listTasks(), scopedUserIdsForReads), scope);
|
|
5778
|
-
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), scopedUserIdsForReads), scope, new Set([
|
|
5779
|
-
.
|
|
5818
|
+
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), scopedUserIdsForReads), scope, new Set([
|
|
5819
|
+
...projects.map((project) => project.goalId),
|
|
5820
|
+
...tasks.map((task) => task.goalId)
|
|
5821
|
+
].filter((value) => typeof value === "string" && value.length > 0)));
|
|
5780
5822
|
const habits = applyHabitScope(filterOwnedEntities("habit", listHabits(), scopedUserIdsForReads), scope, new Set(goals.map((goal) => goal.id)), new Set(tasks.map((task) => task.id)));
|
|
5781
5823
|
const strategies = applyStrategyScope(listStrategies({ userIds: scopedUserIdsForReads }), scope, new Set(goals.map((goal) => goal.id)));
|
|
5782
5824
|
const dashboard = getDashboard({ userIds: scopedUserIdsForReads });
|
|
@@ -5822,7 +5864,11 @@ function buildV1Context(scope = {
|
|
|
5822
5864
|
validScopedUserIds !== undefined &&
|
|
5823
5865
|
validScopedUserIds.length === 0
|
|
5824
5866
|
? []
|
|
5825
|
-
: listTaskRuns({
|
|
5867
|
+
: listTaskRuns({
|
|
5868
|
+
active: true,
|
|
5869
|
+
limit: 25,
|
|
5870
|
+
userIds: scopedUserIdsForReads
|
|
5871
|
+
}),
|
|
5826
5872
|
activity: dashboard.recentActivity,
|
|
5827
5873
|
lifeForce: buildLifeForcePayload(now, scopedUserIdsForReads)
|
|
5828
5874
|
};
|
|
@@ -5897,8 +5943,10 @@ function buildOperatorContext(scope = {
|
|
|
5897
5943
|
status: "active",
|
|
5898
5944
|
userIds: scopedUserIdsForReads
|
|
5899
5945
|
}), scope).filter((project) => project.activeTaskCount > 0 || project.completedTaskCount > 0);
|
|
5900
|
-
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), scopedUserIdsForReads), scope, new Set([
|
|
5901
|
-
.
|
|
5946
|
+
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), scopedUserIdsForReads), scope, new Set([
|
|
5947
|
+
...activeProjects.map((project) => project.goalId),
|
|
5948
|
+
...tasks.map((task) => task.goalId)
|
|
5949
|
+
].filter((value) => typeof value === "string" && value.length > 0)));
|
|
5902
5950
|
const scopedHabits = applyHabitScope(dueHabits, scope, new Set(goals.map((goal) => goal.id)), new Set(tasks.map((task) => task.id))).slice(0, 12);
|
|
5903
5951
|
const focusTasks = tasks.filter((task) => task.status === "focus" || task.status === "in_progress");
|
|
5904
5952
|
const recommendedNextTask = focusTasks[0] ??
|
|
@@ -6283,7 +6331,9 @@ function compactOperatorContext(context) {
|
|
|
6283
6331
|
tasks: tasks.slice(0, 5).map(compactTask)
|
|
6284
6332
|
}
|
|
6285
6333
|
])),
|
|
6286
|
-
recentActivity: context.recentActivity
|
|
6334
|
+
recentActivity: context.recentActivity
|
|
6335
|
+
.slice(0, 10)
|
|
6336
|
+
.map(compactActivityEvent),
|
|
6287
6337
|
recentTaskRuns: context.recentTaskRuns.slice(0, 8).map(compactTaskRun),
|
|
6288
6338
|
recommendedNextTask: context.recommendedNextTask
|
|
6289
6339
|
? compactTask(context.recommendedNextTask)
|
|
@@ -6339,7 +6389,9 @@ function compactFitness(fitness) {
|
|
|
6339
6389
|
typeBreakdown: fitness.typeBreakdown.slice(0, 8),
|
|
6340
6390
|
sessions: fitness.sessions.slice(0, 8).map((session) => ({
|
|
6341
6391
|
id: session.id,
|
|
6342
|
-
title: compactText(session.plannedContext ||
|
|
6392
|
+
title: compactText(session.plannedContext ||
|
|
6393
|
+
session.workoutTypeLabel ||
|
|
6394
|
+
session.workoutType, 100),
|
|
6343
6395
|
workoutType: session.workoutType,
|
|
6344
6396
|
workoutTypeLabel: session.workoutTypeLabel,
|
|
6345
6397
|
activityFamily: session.activityFamily,
|
|
@@ -6494,7 +6546,9 @@ function compactPsyche(psyche) {
|
|
|
6494
6546
|
summaryFields: ["eventSituation", "customEventType"]
|
|
6495
6547
|
})),
|
|
6496
6548
|
schemaPressure: psyche.schemaPressure,
|
|
6497
|
-
committedActions: psyche.committedActions
|
|
6549
|
+
committedActions: psyche.committedActions
|
|
6550
|
+
.slice(0, 12)
|
|
6551
|
+
.map((action) => compactText(action, 120)),
|
|
6498
6552
|
detailRoute: "/api/v1/psyche/overview"
|
|
6499
6553
|
};
|
|
6500
6554
|
}
|
|
@@ -6672,7 +6726,9 @@ function buildOperatorOverview(request) {
|
|
|
6672
6726
|
const canReadPsyche = auth.token
|
|
6673
6727
|
? hasTokenScope(auth.token, "psyche.read")
|
|
6674
6728
|
: true;
|
|
6675
|
-
const requestedDetailMode = typeof request.query?.detail === "string"
|
|
6729
|
+
const requestedDetailMode = typeof request.query?.detail === "string"
|
|
6730
|
+
? request.query.detail
|
|
6731
|
+
: "compact";
|
|
6676
6732
|
const warnings = canReadPsyche
|
|
6677
6733
|
? []
|
|
6678
6734
|
: [
|
|
@@ -6686,8 +6742,10 @@ function buildOperatorOverview(request) {
|
|
|
6686
6742
|
const yesterdayRange = localDayRange(addDays(now, -1));
|
|
6687
6743
|
const projects = applyProjectScope(listProjectSummaries({ userIds }), readScope);
|
|
6688
6744
|
const tasks = applyTaskScope(filterOwnedEntities("task", listTasks(), userIds), readScope);
|
|
6689
|
-
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), userIds), readScope, new Set([
|
|
6690
|
-
.
|
|
6745
|
+
const goals = applyGoalScope(filterOwnedEntities("goal", listGoals(), userIds), readScope, new Set([
|
|
6746
|
+
...projects.map((project) => project.goalId),
|
|
6747
|
+
...tasks.map((task) => task.goalId)
|
|
6748
|
+
].filter((value) => typeof value === "string" && value.length > 0)));
|
|
6691
6749
|
const habits = applyHabitScope(filterOwnedEntities("habit", listHabits(), userIds), readScope, new Set(goals.map((goal) => goal.id)), new Set(tasks.map((task) => task.id)));
|
|
6692
6750
|
const operator = compactOperatorContext(buildOperatorContext(readScope));
|
|
6693
6751
|
const overview = getOverviewContext(now, { userIds });
|
|
@@ -6699,7 +6757,9 @@ function buildOperatorOverview(request) {
|
|
|
6699
6757
|
const vitals = compactVitals(getVitalsViewData(userIds));
|
|
6700
6758
|
const weightLoss = compactWeightLoss(getWeightLossViewData(userIds));
|
|
6701
6759
|
const lifeForce = compactLifeForce(buildLifeForcePayload(now, userIds));
|
|
6702
|
-
const psyche = canReadPsyche
|
|
6760
|
+
const psyche = canReadPsyche
|
|
6761
|
+
? compactPsyche(getPsycheOverview(userIds))
|
|
6762
|
+
: null;
|
|
6703
6763
|
const onboarding = compactOnboardingPayload(buildAgentOnboardingPayload(request));
|
|
6704
6764
|
const calendar = compactCalendarForDays(readCalendarOverview({
|
|
6705
6765
|
from: yesterdayRange.from,
|
|
@@ -6737,8 +6797,7 @@ function buildOperatorOverview(request) {
|
|
|
6737
6797
|
goals: goals.length,
|
|
6738
6798
|
activeGoals: goals.filter((goal) => goal.status === "active").length,
|
|
6739
6799
|
projects: projects.length,
|
|
6740
|
-
activeProjects: projects.filter((project) => project.status === "active")
|
|
6741
|
-
.length,
|
|
6800
|
+
activeProjects: projects.filter((project) => project.status === "active").length,
|
|
6742
6801
|
tasks: tasks.length,
|
|
6743
6802
|
focusTasks: tasks.filter((task) => task.status === "focus" || task.status === "in_progress").length,
|
|
6744
6803
|
habits: habits.length
|
|
@@ -7285,7 +7344,9 @@ export async function buildServer(options = {}) {
|
|
|
7285
7344
|
};
|
|
7286
7345
|
});
|
|
7287
7346
|
app.post("/api/v1/doctor/fixes", async (request) => {
|
|
7288
|
-
requireScopedAccess(request.headers, ["write"], {
|
|
7347
|
+
requireScopedAccess(request.headers, ["write"], {
|
|
7348
|
+
route: "/api/v1/doctor/fixes"
|
|
7349
|
+
});
|
|
7289
7350
|
const parsed = z
|
|
7290
7351
|
.object({
|
|
7291
7352
|
fixIds: z.array(z.string().min(1)).optional(),
|
|
@@ -7464,9 +7525,28 @@ export async function buildServer(options = {}) {
|
|
|
7464
7525
|
app.get("/api/v1/health/vitals", async (request) => ({
|
|
7465
7526
|
vitals: getVitalsViewData(resolveScopedUserIds(request.query))
|
|
7466
7527
|
}));
|
|
7467
|
-
app.get("/api/v1/health/weight-loss", async (request) =>
|
|
7468
|
-
|
|
7469
|
-
|
|
7528
|
+
app.get("/api/v1/health/weight-loss", async (request) => {
|
|
7529
|
+
const query = request.query;
|
|
7530
|
+
const dateKey = typeof query.dateKey === "string" &&
|
|
7531
|
+
/^\d{4}-\d{2}-\d{2}$/.test(query.dateKey)
|
|
7532
|
+
? query.dateKey
|
|
7533
|
+
: undefined;
|
|
7534
|
+
const dayStartAt = typeof query.dayStartAt === "string" &&
|
|
7535
|
+
z.string().datetime().safeParse(query.dayStartAt).success
|
|
7536
|
+
? query.dayStartAt
|
|
7537
|
+
: undefined;
|
|
7538
|
+
const dayEndAt = typeof query.dayEndAt === "string" &&
|
|
7539
|
+
z.string().datetime().safeParse(query.dayEndAt).success
|
|
7540
|
+
? query.dayEndAt
|
|
7541
|
+
: undefined;
|
|
7542
|
+
return {
|
|
7543
|
+
weightLoss: getWeightLossViewData(resolveScopedUserIds(query), {
|
|
7544
|
+
dateKey,
|
|
7545
|
+
dayStartAt,
|
|
7546
|
+
dayEndAt
|
|
7547
|
+
})
|
|
7548
|
+
};
|
|
7549
|
+
});
|
|
7470
7550
|
app.patch("/api/v1/health/weight-loss/target", async (request) => {
|
|
7471
7551
|
requireScopedAccess(request.headers, ["write"], {
|
|
7472
7552
|
route: "/api/v1/health/weight-loss/target"
|
|
@@ -7475,6 +7555,12 @@ export async function buildServer(options = {}) {
|
|
|
7475
7555
|
target: updateNutritionTarget(nutritionTargetUpdateSchema.parse(request.body ?? {}))
|
|
7476
7556
|
};
|
|
7477
7557
|
});
|
|
7558
|
+
app.patch("/api/v1/health/weight-loss/daily-active-calories", async (request) => {
|
|
7559
|
+
requireScopedAccess(request.headers, ["write"], {
|
|
7560
|
+
route: "/api/v1/health/weight-loss/daily-active-calories"
|
|
7561
|
+
});
|
|
7562
|
+
return updateNutritionDailyActiveCalories(nutritionDailyActiveCaloriesUpdateSchema.parse(request.body ?? {}));
|
|
7563
|
+
});
|
|
7478
7564
|
app.post("/api/v1/health/weight-loss/foods/search", async (request) => ({
|
|
7479
7565
|
...(await searchNutritionFoods(nutritionFoodSearchSchema.parse(request.body ?? {})))
|
|
7480
7566
|
}));
|
|
@@ -7675,7 +7761,8 @@ export async function buildServer(options = {}) {
|
|
|
7675
7761
|
const parsed = movementTimelineQuerySchema.parse(request.query ?? {});
|
|
7676
7762
|
const userIds = parsed.userIds.length > 0
|
|
7677
7763
|
? parsed.userIds
|
|
7678
|
-
: (resolveScopedUserIds(request.query) ??
|
|
7764
|
+
: (resolveScopedUserIds(request.query) ??
|
|
7765
|
+
[]);
|
|
7679
7766
|
const movement = getMovementTimeline({
|
|
7680
7767
|
...parsed,
|
|
7681
7768
|
userIds
|
|
@@ -7735,7 +7822,9 @@ export async function buildServer(options = {}) {
|
|
|
7735
7822
|
};
|
|
7736
7823
|
});
|
|
7737
7824
|
app.post("/api/v1/movement/user-boxes/preflight", async (request) => {
|
|
7738
|
-
requireScopedAccess(request.headers, ["write"], {
|
|
7825
|
+
requireScopedAccess(request.headers, ["write"], {
|
|
7826
|
+
route: "/api/v1/movement/user-boxes/preflight"
|
|
7827
|
+
});
|
|
7739
7828
|
const userId = resolveScopedUserIds(request.query)?.[0] ??
|
|
7740
7829
|
getDefaultUser().id;
|
|
7741
7830
|
return {
|
|
@@ -7764,7 +7853,9 @@ export async function buildServer(options = {}) {
|
|
|
7764
7853
|
const userId = resolveScopedUserIds(request.query)?.[0] ??
|
|
7765
7854
|
getDefaultUser().id;
|
|
7766
7855
|
const { id } = request.params;
|
|
7767
|
-
const result = deleteMovementUserBox(id, toActivityContext(auth), {
|
|
7856
|
+
const result = deleteMovementUserBox(id, toActivityContext(auth), {
|
|
7857
|
+
userId
|
|
7858
|
+
});
|
|
7768
7859
|
if (!result) {
|
|
7769
7860
|
reply.code(404);
|
|
7770
7861
|
return { error: "Movement user box not found" };
|
|
@@ -7783,7 +7874,8 @@ export async function buildServer(options = {}) {
|
|
|
7783
7874
|
}
|
|
7784
7875
|
reply.code(201);
|
|
7785
7876
|
return {
|
|
7786
|
-
box: resolveMovementTimelineSegmentForBox(userId, result.box.id) ??
|
|
7877
|
+
box: resolveMovementTimelineSegmentForBox(userId, result.box.id) ??
|
|
7878
|
+
result.box
|
|
7787
7879
|
};
|
|
7788
7880
|
});
|
|
7789
7881
|
app.patch("/api/v1/movement/stays/:id", async (request, reply) => {
|
|
@@ -7998,7 +8090,8 @@ export async function buildServer(options = {}) {
|
|
|
7998
8090
|
source: "system"
|
|
7999
8091
|
});
|
|
8000
8092
|
return {
|
|
8001
|
-
box: resolveMovementTimelineSegmentForBox(pairing.user_id, created.id) ??
|
|
8093
|
+
box: resolveMovementTimelineSegmentForBox(pairing.user_id, created.id) ??
|
|
8094
|
+
created
|
|
8002
8095
|
};
|
|
8003
8096
|
});
|
|
8004
8097
|
app.post("/api/v1/mobile/movement/user-boxes/preflight", async (request) => {
|
|
@@ -8055,8 +8148,7 @@ export async function buildServer(options = {}) {
|
|
|
8055
8148
|
}
|
|
8056
8149
|
reply.code(201);
|
|
8057
8150
|
return {
|
|
8058
|
-
box: resolveMovementTimelineSegmentForBox(pairing.user_id, result.box.id) ??
|
|
8059
|
-
result.box
|
|
8151
|
+
box: resolveMovementTimelineSegmentForBox(pairing.user_id, result.box.id) ?? result.box
|
|
8060
8152
|
};
|
|
8061
8153
|
});
|
|
8062
8154
|
app.patch("/api/v1/mobile/movement/stays/:id", async (request, reply) => {
|