forge-openclaw-plugin 0.3.5 → 0.3.8
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/{action-bar-DBZ38L_6.js → action-bar-BFjWjRIM.js} +1 -1
- package/dist/assets/{activity-page-BJxUR9bD.js → activity-page-D-6yBWuZ.js} +1 -1
- package/dist/assets/{ai-surface-workspace-ehzBjTsW.js → ai-surface-workspace-BEfo9bRO.js} +1 -1
- package/dist/assets/{atlas-panel-BFUeVT69.js → atlas-panel-BfMyJXxQ.js} +1 -1
- package/dist/assets/{board-CLOHbg6t.js → board-CuxQRKPJ.js} +1 -1
- package/dist/assets/{calendar-page-Bg8W-YQ-.js → calendar-page-D4tQNJ2V.js} +1 -1
- package/dist/assets/{calendar-rules-9XQLoI96.js → calendar-rules-C-6O_uGU.js} +1 -1
- package/dist/assets/{calendar-week-toolbar-BeYnx1pE.js → calendar-week-toolbar-_NzeKsYx.js} +1 -1
- package/dist/assets/{charts-DwTguE_x.js → charts-BzT4pUPg.js} +1 -1
- package/dist/assets/{companion-sync-lab-page-BRKYkIrs.js → companion-sync-lab-page-D1Oqsf6M.js} +1 -1
- package/dist/assets/{daily-metrics-dashboard-Jt0nAHU5.js → daily-metrics-dashboard-DtE3pVOl.js} +1 -1
- package/dist/assets/date-keys-BnZV4PNO.js +1 -0
- package/dist/assets/{define-workbench-box-5h-dyvJY.js → define-workbench-box-D-32C8nM.js} +1 -1
- package/dist/assets/{entity-link-multiselect-Bb4De_e3.js → entity-link-multiselect-DcCvkesQ.js} +1 -1
- package/dist/assets/{entity-note-count-link-BzWnsOmI.js → entity-note-count-link-Cjsk5oT2.js} +1 -1
- package/dist/assets/{entity-notes-surface-CagOwdng.js → entity-notes-surface-DQQPLjxd.js} +1 -1
- package/dist/assets/{execution-board-DTmAtmqZ.js → execution-board-agWQbN-y.js} +1 -1
- package/dist/assets/{faceted-token-search-DJPRm9AY.js → faceted-token-search-DldM3-ru.js} +1 -1
- package/dist/assets/{flagship-signal-deck-CJbGZF7I.js → flagship-signal-deck-BlLYW9Kz.js} +1 -1
- package/dist/assets/{floating-action-menu-K77jh8XZ.js → floating-action-menu-D9-psbha.js} +1 -1
- package/dist/assets/{forms-C5d5hTf2.js → forms-D1qJ3oOP.js} +1 -1
- package/dist/assets/{generic-node-view-p5ePSFuG.js → generic-node-view-CcepUVhP.js} +1 -1
- package/dist/assets/{goal-detail-page-DGu_khEK.js → goal-detail-page-DP1n5-Hk.js} +1 -1
- package/dist/assets/{goal-dialog-BWD7cOv9.js → goal-dialog-Oxx8WqbZ.js} +1 -1
- package/dist/assets/{goals-page-Bgj3sj0f.js → goals-page-CUt1a4Y2.js} +1 -1
- package/dist/assets/{graph-Cd5WF3lw.js → graph-BF4IsheG.js} +1 -1
- package/dist/assets/{habits-page-Ctut1tuX.js → habits-page-5REbWAlo.js} +1 -1
- package/dist/assets/{health-boxes-Ie3horXx.js → health-boxes-sHNML3tm.js} +1 -1
- package/dist/assets/index-CQ5r7ZUz.js +2 -0
- package/dist/assets/index-FxgNSuZX.css +1 -0
- package/dist/assets/{inline-note-fields-DE6WM9uM.js → inline-note-fields-Bql_KfR9.js} +1 -1
- package/dist/assets/{insight-flow-dialog-XL8I74eJ.js → insight-flow-dialog-CN-CMSB7.js} +1 -1
- package/dist/assets/{insights-page-Bz1FLbp5.js → insights-page-B1u6ONtQ.js} +1 -1
- package/dist/assets/{kanban-boxes-BBziel7P.js → kanban-boxes-DB1kuUlY.js} +1 -1
- package/dist/assets/{kanban-page-DdQP73I3.js → kanban-page-BBW9_vMu.js} +1 -1
- package/dist/assets/{knowledge-graph-page-DdHWj4Dj.js → knowledge-graph-page-CoJaydZb.js} +1 -1
- package/dist/assets/{life-force-page-BRN-93cI.js → life-force-page-DBYbA1GF.js} +1 -1
- package/dist/assets/{life-force-workspace-BowvP5R4.js → life-force-workspace-BiD9xOEt.js} +1 -1
- package/dist/assets/{maps-D0Mm6WPG.js → maps-BTVHALP8.js} +1 -1
- package/dist/assets/{metric-tile-B6aJueRo.js → metric-tile-CuP9DOYm.js} +1 -1
- package/dist/assets/{motion-DwjmC9aq.js → motion-DcgUnXhY.js} +1 -1
- package/dist/assets/{movement-boxes-5cjWjIdR.js → movement-boxes-DZg_qPPg.js} +1 -1
- package/dist/assets/{movement-page-Dy53RWtB.js → movement-page-CmwsQGR_.js} +1 -1
- package/dist/assets/{note-markdown-CvEQCfoi.js → note-markdown-B82ncnFt.js} +1 -1
- package/dist/assets/{note-tags-input-Cg5zBXos.js → note-tags-input-C_x5WdK5.js} +1 -1
- package/dist/assets/{notes-boxes-CgZyf7mV.js → notes-boxes-BEFlp9yd.js} +1 -1
- package/dist/assets/{notes-page-Cbdcv0Ej.js → notes-page-B6Vl-GPf.js} +1 -1
- package/dist/assets/{open-in-graph-button-D31ZOEhA.js → open-in-graph-button-C-bJekoH.js} +1 -1
- package/dist/assets/{orbit-map-8eNDWek8.js → orbit-map-DHeTM15g.js} +1 -1
- package/dist/assets/{overview-page-CZ6q52Qj.js → overview-page-BRWje1F9.js} +1 -1
- package/dist/assets/{page-hero-C0MpI3MM.js → page-hero-8bITsx_x.js} +1 -1
- package/dist/assets/pill-cluster-XQjm-wPc.js +1 -0
- package/dist/assets/{preference-entity-handoff-button-CJhr5AXl.js → preference-entity-handoff-button-DwYF_5i3.js} +1 -1
- package/dist/assets/{preferences-page-8vszDNFX.js → preferences-page-C7DBPpNb.js} +1 -1
- package/dist/assets/{project-collections-sC7eAAhS.js → project-collections-mtxanSMf.js} +1 -1
- package/dist/assets/{project-detail-page-BKdnMjJy.js → project-detail-page-BT87Goqc.js} +1 -1
- package/dist/assets/{project-dialog-BiHZpOo1.js → project-dialog-DnZe757y.js} +1 -1
- package/dist/assets/{project-management-hierarchy-page-VW-hykAI.js → project-management-hierarchy-page-B3R2lNFI.js} +1 -1
- package/dist/assets/{project-management-section-nav-BEZ5zihs.js → project-management-section-nav-DyBWxHbe.js} +1 -1
- package/dist/assets/{projects-boxes-Ca6rpYeE.js → projects-boxes-CxZj3P29.js} +1 -1
- package/dist/assets/{projects-page-D86pjpTf.js → projects-page-Bec11c0x.js} +1 -1
- package/dist/assets/{psyche-behaviors-page-YLJB6CRU.js → psyche-behaviors-page-DWRpYvl1.js} +1 -1
- package/dist/assets/{psyche-flashcards-page-D3gdHLUw.js → psyche-flashcards-page-CX4rcsXZ.js} +1 -1
- package/dist/assets/{psyche-goal-map-page-DJiqSiCx.js → psyche-goal-map-page-Y6b3lCvV.js} +1 -1
- package/dist/assets/{psyche-graph-Tke0qFdt.js → psyche-graph-CQuCWKIp.js} +1 -1
- package/dist/assets/{psyche-metrics-page-DoLnvmC2.js → psyche-metrics-page-DadDJOnm.js} +1 -1
- package/dist/assets/{psyche-mode-guide-page-_Zbvg_HL.js → psyche-mode-guide-page-B1nz0uCg.js} +1 -1
- package/dist/assets/{psyche-modes-page-eAkaAzJc.js → psyche-modes-page-i3uSuhKA.js} +1 -1
- package/dist/assets/{psyche-page-CwmuBVjA.js → psyche-page-Y_s-BE2m.js} +1 -1
- package/dist/assets/{psyche-patterns-page-D7B4Ykjq.js → psyche-patterns-page-DaaOLIlN.js} +1 -1
- package/dist/assets/{psyche-questionnaire-builder-page-CHJlvCzX.js → psyche-questionnaire-builder-page-CuF7rXOv.js} +1 -1
- package/dist/assets/{psyche-questionnaire-detail-page-Bg3ll-D4.js → psyche-questionnaire-detail-page-BfFEMkRY.js} +1 -1
- package/dist/assets/{psyche-questionnaire-run-detail-page-CIEerczF.js → psyche-questionnaire-run-detail-page-BoQTvd7Q.js} +1 -1
- package/dist/assets/{psyche-questionnaire-run-page-DyxIk6Qx.js → psyche-questionnaire-run-page-C0qKiNZN.js} +1 -1
- package/dist/assets/{psyche-questionnaires-page-ZlqUxuIl.js → psyche-questionnaires-page-B6hfD448.js} +1 -1
- package/dist/assets/{psyche-report-detail-page-B2jgYnQ5.js → psyche-report-detail-page-BlFL8moM.js} +1 -1
- package/dist/assets/{psyche-reports-page-DlXr52yr.js → psyche-reports-page-DAAcYENp.js} +1 -1
- package/dist/assets/{psyche-schemas-Dtskzvv1.js → psyche-schemas-DDol0j-g.js} +1 -1
- package/dist/assets/{psyche-schemas-beliefs-page-BhrTZN9B.js → psyche-schemas-beliefs-page-CsxKSrKM.js} +1 -1
- package/dist/assets/{psyche-screen-time-page-WNGcdusx.js → psyche-screen-time-page-n4b0e58x.js} +1 -1
- package/dist/assets/{psyche-self-observation-page-XsCOglo4.js → psyche-self-observation-page-BaxEQ2-3.js} +1 -1
- package/dist/assets/{psyche-values-page-NvHI6zWK.js → psyche-values-page-DTv5NMSU.js} +1 -1
- package/dist/assets/{question-flow-dialog-Bj4PxpjS.js → question-flow-dialog-CskCt5NZ.js} +1 -1
- package/dist/assets/{report-chain-fields-mWFikZzT.js → report-chain-fields-D132-EMh.js} +1 -1
- package/dist/assets/{rewards-page-DyjwXsQN.js → rewards-page-C533lVP-.js} +1 -1
- package/dist/assets/{scheduling-rules-editor-C6FEYOxd.js → scheduling-rules-editor-CDpontGp.js} +1 -1
- package/dist/assets/{schema-badge-CCe4zkSN.js → schema-badge-B3DiMnjB.js} +1 -1
- package/dist/assets/{schemas-Cjwn6ooR.js → schemas-CH1_ngUX.js} +1 -1
- package/dist/assets/{select-menu-DeJhCsd8.js → select-menu-BOF-k4Ln.js} +1 -1
- package/dist/assets/{settings-agents-page-DYDxyKu-.js → settings-agents-page-B5OQtlZX.js} +1 -1
- package/dist/assets/{settings-bin-page-BWLfKVW1.js → settings-bin-page-D_bk3Kcu.js} +1 -1
- package/dist/assets/{settings-calendar-page-Ci-wXhCv.js → settings-calendar-page-PuSj9_kM.js} +1 -1
- package/dist/assets/{settings-data-page-DxIw-fWn.js → settings-data-page-EwFMaeq6.js} +1 -1
- package/dist/assets/{settings-logs-page-inpyIdu6.js → settings-logs-page-BKkse0DX.js} +1 -1
- package/dist/assets/{settings-mobile-page-BcJGLax8.js → settings-mobile-page-BrIVmdeB.js} +1 -1
- package/dist/assets/{settings-models-page-OWTRhfkj.js → settings-models-page-Mg84D_0K.js} +1 -1
- package/dist/assets/{settings-page-DXxF3qK2.js → settings-page-D-kul92f.js} +1 -1
- package/dist/assets/{settings-rewards-page-CCXin1n_.js → settings-rewards-page-waNyCcX_.js} +1 -1
- package/dist/assets/{settings-section-nav-CwSDNC3W.js → settings-section-nav-BmJWnrYk.js} +1 -1
- package/dist/assets/{settings-users-page-B4NEACwR.js → settings-users-page-DBgC6y56.js} +1 -1
- package/dist/assets/{settings-wiki-page-BNRK1SYc.js → settings-wiki-page-CM0te9dI.js} +1 -1
- package/dist/assets/sleep-page-C_krRE59.js +1 -0
- package/dist/assets/{sports-page-BawekFKD.js → sports-page-eg5Rfc_E.js} +1 -1
- package/dist/assets/{state-BtwEvpO6.js → state-Bpe5dF3T.js} +1 -1
- package/dist/assets/{strategies-page-BEl3NGAU.js → strategies-page-D4AqvFNW.js} +1 -1
- package/dist/assets/{strategy-detail-page-DPPI_8Ub.js → strategy-detail-page-BlYVkXaW.js} +1 -1
- package/dist/assets/{strategy-dialog-DU6wbBkQ.js → strategy-dialog-FO9Oa0dB.js} +1 -1
- package/dist/assets/{surface-BVYp-Wq9.js → surface-MVeeZGKB.js} +1 -1
- package/dist/assets/{table-BuONJH1s.js → table-U7otr5go.js} +1 -1
- package/dist/assets/{task-detail-page-BsMVAsbb.js → task-detail-page-Dy-aRyY6.js} +1 -1
- package/dist/assets/{task-dialog-BGzPc6TW.js → task-dialog-DrA9pba7.js} +1 -1
- package/dist/assets/{timebox-planning-dialog-4_XWuqkw.js → timebox-planning-dialog-C_gnfxFx.js} +1 -1
- package/dist/assets/{today-boxes-5pCvh5zS.js → today-boxes-BFOws_iC.js} +1 -1
- package/dist/assets/{today-page-BGurICpl.js → today-page-BoPj6a6q.js} +1 -1
- package/dist/assets/{training-load-page-BkoYKZ9_.js → training-load-page-DGU40Zfl.js} +1 -1
- package/dist/assets/{ui-B9O-eUim.js → ui-B9TWEtCx.js} +1 -1
- package/dist/assets/{use-anchored-overlay-position-BrQ4cqKn.js → use-anchored-overlay-position-BY4kNzPj.js} +1 -1
- package/dist/assets/{use-psyche-focus-target-Cuxni3SK.js → use-psyche-focus-target-BhNedCZB.js} +1 -1
- package/dist/assets/{user-badge-DfDv87j7.js → user-badge-CZWtYeMw.js} +1 -1
- package/dist/assets/{user-select-field-BNqv8-wd.js → user-select-field-fx129Uh6.js} +1 -1
- package/dist/assets/{utility-widgets-CbYj32he.js → utility-widgets-B3wWGxQc.js} +1 -1
- package/dist/assets/{vendor-Cpmju3nw.js → vendor-BwL6m4SE.js} +216 -211
- package/dist/assets/{vitals-page-DlxMk-L7.js → vitals-page-BXRZEP_8.js} +1 -1
- package/dist/assets/{weekly-review-page-VrEvAl1T.js → weekly-review-page-D5cebA5x.js} +1 -1
- package/dist/assets/weight-loss-page-BuUdFh9z.js +5 -0
- package/dist/assets/{wiki-article-markdown-DxTkiQRy.js → wiki-article-markdown-CvaCjg_t.js} +1 -1
- package/dist/assets/{wiki-editor-page-Beu92YnZ.js → wiki-editor-page-Dco79SLY.js} +1 -1
- package/dist/assets/{wiki-ingest-history-page-Cq_soygm.js → wiki-ingest-history-page-uvKRkRDF.js} +1 -1
- package/dist/assets/{wiki-ingest-modal-D6xs2sEn.js → wiki-ingest-modal-BW6AJPea.js} +1 -1
- package/dist/assets/{wiki-page-yF3Flgtg.js → wiki-page-BIL5zMqv.js} +1 -1
- package/dist/assets/{workbench-flow-page-CZZGg3a8.js → workbench-flow-page-Dx_nq8R_.js} +1 -1
- package/dist/assets/{workbench-page-DKENZ5Nz.js → workbench-page-BJnt_Zzf.js} +1 -1
- package/dist/assets/{workout-detail-page-CeN4QiYQ.js → workout-detail-page-CKgqyB-y.js} +2 -2
- package/dist/index.html +8 -8
- package/dist/server/server/migrations/070_health_mobile_sync_completion_index.sql +16 -0
- package/dist/server/server/src/app.js +139 -13
- package/dist/server/server/src/health-weight-loss.js +48 -6
- package/dist/server/server/src/health.js +345 -96
- package/dist/server/server/src/openapi.js +62 -0
- package/dist/server/server/src/repositories/gamification.js +25 -0
- package/dist/server/server/src/repositories/tasks.js +82 -17
- package/dist/server/server/src/services/dashboard.js +5 -4
- package/dist/server/server/src/services/gamification.js +47 -19
- package/dist/server/server/src/services/life-force.js +99 -0
- package/dist/server/src/lib/api.js +4 -0
- package/dist/server/src/lib/snapshot-normalizer.js +42 -23
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/server/migrations/070_health_mobile_sync_completion_index.sql +16 -0
- package/skills/forge-openclaw/SKILL.md +1 -0
- package/skills/forge-openclaw/psyche_entity_playbooks.md +8 -0
- package/dist/assets/date-keys-Cj1G3TOn.js +0 -1
- package/dist/assets/index-BaiwtAgo.js +0 -2
- package/dist/assets/index-CEgIwgk9.css +0 -1
- package/dist/assets/pill-cluster-DGwKZQKF.js +0 -1
- package/dist/assets/sleep-page-Bara54nB.js +0 -1
- package/dist/assets/weight-loss-page-DJDnjxKF.js +0 -5
|
@@ -10,7 +10,22 @@ const EMPTY_CALENDAR_RULES = {
|
|
|
10
10
|
allowAvailability: [],
|
|
11
11
|
blockAvailability: []
|
|
12
12
|
};
|
|
13
|
-
function
|
|
13
|
+
function findUser(usersById, userId) {
|
|
14
|
+
return userId ? (usersById?.get(userId) ?? null) : null;
|
|
15
|
+
}
|
|
16
|
+
function normalizeTask(task, usersById) {
|
|
17
|
+
const userId = task?.userId ?? null;
|
|
18
|
+
const ownerUserId = task?.ownerUserId ?? task?.userId ?? null;
|
|
19
|
+
const user = task?.user ??
|
|
20
|
+
findUser(usersById, userId);
|
|
21
|
+
const ownerUser = task?.ownerUser ??
|
|
22
|
+
(task?.user ??
|
|
23
|
+
findUser(usersById, ownerUserId));
|
|
24
|
+
const assigneeUserIds = task?.assigneeUserIds ?? [];
|
|
25
|
+
const assignees = task?.assignees ??
|
|
26
|
+
assigneeUserIds
|
|
27
|
+
.map((assigneeUserId) => findUser(usersById, assigneeUserId))
|
|
28
|
+
.filter((assignee) => assignee !== null);
|
|
14
29
|
return {
|
|
15
30
|
id: task?.id ?? "",
|
|
16
31
|
title: task?.title ?? "",
|
|
@@ -41,13 +56,12 @@ function normalizeTask(task) {
|
|
|
41
56
|
createdAt: task?.createdAt ?? new Date(0).toISOString(),
|
|
42
57
|
updatedAt: task?.updatedAt ?? new Date(0).toISOString(),
|
|
43
58
|
tagIds: task?.tagIds ?? [],
|
|
44
|
-
userId
|
|
45
|
-
user
|
|
46
|
-
ownerUserId
|
|
47
|
-
ownerUser
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
assignees: task?.assignees ?? [],
|
|
59
|
+
userId,
|
|
60
|
+
user,
|
|
61
|
+
ownerUserId,
|
|
62
|
+
ownerUser,
|
|
63
|
+
assigneeUserIds,
|
|
64
|
+
assignees,
|
|
51
65
|
time: task?.time ?? {
|
|
52
66
|
totalTrackedSeconds: 0,
|
|
53
67
|
totalCreditedSeconds: 0,
|
|
@@ -258,6 +272,11 @@ function normalizeStrategy(strategy) {
|
|
|
258
272
|
}
|
|
259
273
|
export function normalizeForgeSnapshot(raw) {
|
|
260
274
|
const legacy = raw;
|
|
275
|
+
const rootUsers = (raw.users ?? []).map(normalizeUser);
|
|
276
|
+
const usersById = new Map(rootUsers.map((user) => [user.id, user]));
|
|
277
|
+
const rootTasks = (raw.tasks ?? []).map((task) => normalizeTask(task, usersById));
|
|
278
|
+
const rootTags = (raw.tags ?? []).map(normalizeTag);
|
|
279
|
+
const rootHabits = (raw.habits ?? raw.dashboard?.habits ?? []).map(normalizeHabit);
|
|
261
280
|
const rootProjects = (legacy.projects ?? legacy.campaigns ?? []).map(normalizeProject);
|
|
262
281
|
const dashboardProjects = (legacy.dashboard?.projects ??
|
|
263
282
|
legacy.dashboard?.campaigns ??
|
|
@@ -292,7 +311,7 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
292
311
|
topGoalId: raw.metrics?.topGoalId ?? null,
|
|
293
312
|
topGoalTitle: raw.metrics?.topGoalTitle ?? null
|
|
294
313
|
},
|
|
295
|
-
users:
|
|
314
|
+
users: rootUsers,
|
|
296
315
|
strategies: (raw.strategies ?? []).map(normalizeStrategy),
|
|
297
316
|
userScope: {
|
|
298
317
|
selectedUserIds: raw.userScope?.selectedUserIds ?? [],
|
|
@@ -313,14 +332,14 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
313
332
|
...normalizeGoal(goal)
|
|
314
333
|
})),
|
|
315
334
|
projects: dashboardProjects,
|
|
316
|
-
tasks: (raw.dashboard?.tasks ??
|
|
317
|
-
habits: (raw.dashboard?.habits ??
|
|
318
|
-
tags: (raw.dashboard?.tags ??
|
|
335
|
+
tasks: (raw.dashboard?.tasks ?? rootTasks).map((task) => normalizeTask(task, usersById)),
|
|
336
|
+
habits: (raw.dashboard?.habits ?? rootHabits).map(normalizeHabit),
|
|
337
|
+
tags: (raw.dashboard?.tags ?? rootTags).map(normalizeTag),
|
|
319
338
|
suggestedTags: (raw.dashboard?.suggestedTags ?? []).map(normalizeTag),
|
|
320
339
|
owners: raw.dashboard?.owners ?? [],
|
|
321
340
|
executionBuckets: (raw.dashboard?.executionBuckets ?? []).map((bucket) => ({
|
|
322
341
|
...bucket,
|
|
323
|
-
tasks: (bucket.tasks ?? []).map(normalizeTask)
|
|
342
|
+
tasks: (bucket.tasks ?? []).map((task) => normalizeTask(task, usersById))
|
|
324
343
|
})),
|
|
325
344
|
gamification: raw.dashboard?.gamification ?? {
|
|
326
345
|
totalXp: raw.metrics?.totalXp ?? 0,
|
|
@@ -342,7 +361,7 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
342
361
|
},
|
|
343
362
|
achievements: raw.dashboard?.achievements ?? [],
|
|
344
363
|
milestoneRewards: raw.dashboard?.milestoneRewards ?? [],
|
|
345
|
-
recentActivity: raw.dashboard?.recentActivity ?? [],
|
|
364
|
+
recentActivity: raw.dashboard?.recentActivity ?? raw.activity ?? [],
|
|
346
365
|
notesSummaryByEntity: raw.dashboard?.notesSummaryByEntity ?? {}
|
|
347
366
|
},
|
|
348
367
|
overview: {
|
|
@@ -370,7 +389,7 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
370
389
|
...goal,
|
|
371
390
|
...normalizeGoal(goal)
|
|
372
391
|
})),
|
|
373
|
-
topTasks: (raw.overview?.topTasks ?? []).map(normalizeTask),
|
|
392
|
+
topTasks: (raw.overview?.topTasks ?? []).map((task) => normalizeTask(task, usersById)),
|
|
374
393
|
dueHabits: (raw.overview?.dueHabits ??
|
|
375
394
|
raw.today?.dueHabits ??
|
|
376
395
|
raw.dashboard?.habits ??
|
|
@@ -384,7 +403,7 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
384
403
|
generatedAt: raw.today?.generatedAt ?? new Date().toISOString(),
|
|
385
404
|
directive: {
|
|
386
405
|
task: raw.today?.directive?.task
|
|
387
|
-
? normalizeTask(raw.today.directive.task)
|
|
406
|
+
? normalizeTask(raw.today.directive.task, usersById)
|
|
388
407
|
: null,
|
|
389
408
|
goalTitle: raw.today?.directive?.goalTitle ?? null,
|
|
390
409
|
rewardXp: raw.today?.directive?.rewardXp ?? 0,
|
|
@@ -392,7 +411,7 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
392
411
|
},
|
|
393
412
|
timeline: (raw.today?.timeline ?? []).map((bucket) => ({
|
|
394
413
|
...bucket,
|
|
395
|
-
tasks: (bucket.tasks ?? []).map(normalizeTask)
|
|
414
|
+
tasks: (bucket.tasks ?? []).map((task) => normalizeTask(task, usersById))
|
|
396
415
|
})),
|
|
397
416
|
dueHabits: (raw.today?.dueHabits ??
|
|
398
417
|
raw.overview?.dueHabits ??
|
|
@@ -409,17 +428,17 @@ export function normalizeForgeSnapshot(raw) {
|
|
|
409
428
|
},
|
|
410
429
|
risk: {
|
|
411
430
|
generatedAt: raw.risk?.generatedAt ?? new Date().toISOString(),
|
|
412
|
-
overdueTasks: (raw.risk?.overdueTasks ?? []).map(normalizeTask),
|
|
413
|
-
blockedTasks: (raw.risk?.blockedTasks ?? []).map(normalizeTask),
|
|
431
|
+
overdueTasks: (raw.risk?.overdueTasks ?? []).map((task) => normalizeTask(task, usersById)),
|
|
432
|
+
blockedTasks: (raw.risk?.blockedTasks ?? []).map((task) => normalizeTask(task, usersById)),
|
|
414
433
|
neglectedGoals: raw.risk?.neglectedGoals ?? [],
|
|
415
434
|
summary: raw.risk?.summary ?? ""
|
|
416
435
|
},
|
|
417
436
|
goals: (raw.goals ?? []).map(normalizeGoal),
|
|
418
437
|
projects: rootProjects,
|
|
419
|
-
tags:
|
|
420
|
-
tasks:
|
|
421
|
-
habits:
|
|
422
|
-
activity: raw.activity ?? [],
|
|
438
|
+
tags: rootTags,
|
|
439
|
+
tasks: rootTasks,
|
|
440
|
+
habits: rootHabits,
|
|
441
|
+
activity: raw.activity ?? raw.dashboard?.recentActivity ?? [],
|
|
423
442
|
activeTaskRuns: raw.activeTaskRuns ?? [],
|
|
424
443
|
lifeForce: raw.lifeForce ?? {
|
|
425
444
|
userId: "",
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "forge-openclaw-plugin",
|
|
3
3
|
"name": "Forge",
|
|
4
4
|
"description": "Curated OpenClaw adapter for the Forge collaboration API, UI entrypoint, and localhost auto-start runtime.",
|
|
5
|
-
"version": "0.3.
|
|
5
|
+
"version": "0.3.8",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onStartup": true,
|
|
8
8
|
"onCapabilities": [
|
package/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
CREATE INDEX IF NOT EXISTS idx_health_mobile_sync_chunks_completion_cover
|
|
2
|
+
ON health_mobile_sync_chunks(
|
|
3
|
+
sync_session_id,
|
|
4
|
+
sequence,
|
|
5
|
+
id,
|
|
6
|
+
chunk_id,
|
|
7
|
+
family,
|
|
8
|
+
checksum_sha256,
|
|
9
|
+
record_count,
|
|
10
|
+
byte_count,
|
|
11
|
+
payload_summary_json,
|
|
12
|
+
received_at,
|
|
13
|
+
applied_at,
|
|
14
|
+
created_at,
|
|
15
|
+
updated_at
|
|
16
|
+
);
|
|
@@ -300,6 +300,7 @@ Psyche interview rule:
|
|
|
300
300
|
- After the first real answer, choose one follow-up lane at a time: situation, sequence, meaning, protection, cost, longing/value, or tentative name.
|
|
301
301
|
- Do not minimize functional analysis, trigger chains, behavior patterns, modes, beliefs, or schema themes. Once at least one concrete example is clear, offer one careful interpretive hypothesis when it would help the user understand the function, protection, cost, belief, mode, or schema theme.
|
|
302
302
|
- Phrase interpretive hypotheses as collaborative and testable, not as verdicts. A good hypothesis says what the reaction may be protecting, predicting, relieving, or costing, then asks whether that lands or needs correction.
|
|
303
|
+
- Do not keep asking broad exploratory Psyche questions after the cue, meaning, protection, payoff, or cost is already visible. For `behavior_pattern`, `belief_entry`, `mode_profile`, `mode_guide_session`, and `trigger_report`, the next helpful move is usually one active formulation plus one correction question, not another passive reflection.
|
|
303
304
|
- Use the hypothesis timing checkpoint before asking a second or third deepening question: offer a hypothesis when one concrete episode, body cue, belief sentence, behavior, or mode voice is visible and the hypothesis would change the record shape, wording, links, or next action. Do not hypothesize yet when no concrete moment is visible, the user only wants a direct mechanical save, the user is flooded or unsafe, or the only available interpretation would be diagnosis-like, an origin story, or a certainty claim.
|
|
304
305
|
- If several Psyche containers are plausible, do not ask the user to choose from a taxonomy menu first. Reflect the lived difference, offer one careful hypothesis when a concrete example is visible, then distinguish the options in plain language: one episode as a `trigger_report`, a recurring loop as a `behavior_pattern`, one repeated move as `behavior`, one sentence as `belief_entry`, a part-state as `mode_profile` or `mode_guide_session`, or reusable future-labeling as `event_type` or `emotion_definition`.
|
|
305
306
|
- For Psyche updates, start with what feels newly true, newly visible, or newly inaccurate, then ask what should stay true before changing the formulation.
|
|
@@ -196,6 +196,14 @@ material without a usable formulation.
|
|
|
196
196
|
question that tests or corrects it.
|
|
197
197
|
- Do not make the user supply every interpretation alone. If the sequence is clear
|
|
198
198
|
enough, do the formulation work in plain language and invite correction.
|
|
199
|
+
- Do not keep asking broad exploratory questions after the cue, meaning, protection,
|
|
200
|
+
payoff, or cost is already visible. In those moments, the next helpful move is
|
|
201
|
+
usually one active formulation: "one hypothesis is..." followed by one correction
|
|
202
|
+
question.
|
|
203
|
+
- Active formulation is especially important for `behavior_pattern`, `belief_entry`,
|
|
204
|
+
`mode_profile`, `mode_guide_session`, and `trigger_report`; those records should
|
|
205
|
+
not stop at empathic reflection when the user's example already supports a
|
|
206
|
+
functional interpretation.
|
|
199
207
|
|
|
200
208
|
## Hypothesis Timing Checkpoint
|
|
201
209
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function a(e,n){var t;return((t=e.find(o=>o.type===n))==null?void 0:t.value)??""}function m(){return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}function u(e,n){const t=new Intl.DateTimeFormat("en-CA",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e),o=a(t,"year"),r=a(t,"month"),i=a(t,"day");return`${o}-${r}-${i}`}function c(e=new Date){return u(e,m())}export{c as f};
|