@elizaos/plugin-health 2.0.0-beta.1 → 2.0.3-beta.2
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/LICENSE +21 -0
- package/README.md +33 -27
- package/assets/hero.svg +67 -0
- package/package.json +67 -4
- package/dist/actions/index.d.ts +0 -20
- package/dist/actions/index.d.ts.map +0 -1
- package/dist/actions/index.js +0 -5
- package/dist/actions/index.js.map +0 -1
- package/dist/anchors/index.d.ts +0 -19
- package/dist/anchors/index.d.ts.map +0 -1
- package/dist/anchors/index.js +0 -9
- package/dist/anchors/index.js.map +0 -1
- package/dist/connectors/contract-stubs.d.ts +0 -112
- package/dist/connectors/contract-stubs.d.ts.map +0 -1
- package/dist/connectors/contract-stubs.js +0 -1
- package/dist/connectors/contract-stubs.js.map +0 -1
- package/dist/connectors/index.d.ts +0 -28
- package/dist/connectors/index.d.ts.map +0 -1
- package/dist/connectors/index.js +0 -202
- package/dist/connectors/index.js.map +0 -1
- package/dist/contracts/circadian-default.d.ts +0 -15
- package/dist/contracts/circadian-default.d.ts.map +0 -1
- package/dist/contracts/circadian-default.js +0 -30
- package/dist/contracts/circadian-default.js.map +0 -1
- package/dist/contracts/circadian.d.ts +0 -92
- package/dist/contracts/circadian.d.ts.map +0 -1
- package/dist/contracts/circadian.js +0 -14
- package/dist/contracts/circadian.js.map +0 -1
- package/dist/contracts/health.d.ts +0 -9
- package/dist/contracts/health.d.ts.map +0 -1
- package/dist/contracts/health.js +0 -21
- package/dist/contracts/health.js.map +0 -1
- package/dist/contracts/lifeops-connector-degradation.d.ts +0 -9
- package/dist/contracts/lifeops-connector-degradation.d.ts.map +0 -1
- package/dist/contracts/lifeops-connector-degradation.js +0 -17
- package/dist/contracts/lifeops-connector-degradation.js.map +0 -1
- package/dist/contracts/lifeops.d.ts +0 -3123
- package/dist/contracts/lifeops.d.ts.map +0 -1
- package/dist/contracts/lifeops.js +0 -635
- package/dist/contracts/lifeops.js.map +0 -1
- package/dist/contracts/permissions.d.ts +0 -39
- package/dist/contracts/permissions.d.ts.map +0 -1
- package/dist/contracts/permissions.js +0 -1
- package/dist/contracts/permissions.js.map +0 -1
- package/dist/default-packs/bedtime.d.ts +0 -14
- package/dist/default-packs/bedtime.d.ts.map +0 -1
- package/dist/default-packs/bedtime.js +0 -48
- package/dist/default-packs/bedtime.js.map +0 -1
- package/dist/default-packs/contract-stubs.d.ts +0 -161
- package/dist/default-packs/contract-stubs.d.ts.map +0 -1
- package/dist/default-packs/contract-stubs.js +0 -1
- package/dist/default-packs/contract-stubs.js.map +0 -1
- package/dist/default-packs/index.d.ts +0 -18
- package/dist/default-packs/index.d.ts.map +0 -1
- package/dist/default-packs/index.js +0 -39
- package/dist/default-packs/index.js.map +0 -1
- package/dist/default-packs/sleep-recap.d.ts +0 -14
- package/dist/default-packs/sleep-recap.d.ts.map +0 -1
- package/dist/default-packs/sleep-recap.js +0 -51
- package/dist/default-packs/sleep-recap.js.map +0 -1
- package/dist/default-packs/wake-up.d.ts +0 -14
- package/dist/default-packs/wake-up.d.ts.map +0 -1
- package/dist/default-packs/wake-up.js +0 -61
- package/dist/default-packs/wake-up.js.map +0 -1
- package/dist/health-bridge/health-bridge.d.ts +0 -57
- package/dist/health-bridge/health-bridge.d.ts.map +0 -1
- package/dist/health-bridge/health-bridge.js +0 -558
- package/dist/health-bridge/health-bridge.js.map +0 -1
- package/dist/health-bridge/health-connectors.d.ts +0 -23
- package/dist/health-bridge/health-connectors.d.ts.map +0 -1
- package/dist/health-bridge/health-connectors.js +0 -1018
- package/dist/health-bridge/health-connectors.js.map +0 -1
- package/dist/health-bridge/health-oauth.d.ts +0 -62
- package/dist/health-bridge/health-oauth.d.ts.map +0 -1
- package/dist/health-bridge/health-oauth.js +0 -432
- package/dist/health-bridge/health-oauth.js.map +0 -1
- package/dist/health-bridge/health-provider-registry.d.ts +0 -89
- package/dist/health-bridge/health-provider-registry.d.ts.map +0 -1
- package/dist/health-bridge/health-provider-registry.js +0 -141
- package/dist/health-bridge/health-provider-registry.js.map +0 -1
- package/dist/health-bridge/health-records.d.ts +0 -14
- package/dist/health-bridge/health-records.d.ts.map +0 -1
- package/dist/health-bridge/health-records.js +0 -45
- package/dist/health-bridge/health-records.js.map +0 -1
- package/dist/health-bridge/index.d.ts +0 -22
- package/dist/health-bridge/index.d.ts.map +0 -1
- package/dist/health-bridge/index.js +0 -7
- package/dist/health-bridge/index.js.map +0 -1
- package/dist/health-bridge/service-normalize-health.d.ts +0 -3
- package/dist/health-bridge/service-normalize-health.d.ts.map +0 -1
- package/dist/health-bridge/service-normalize-health.js +0 -96
- package/dist/health-bridge/service-normalize-health.js.map +0 -1
- package/dist/index.d.ts +0 -41
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -62
- package/dist/index.js.map +0 -1
- package/dist/screen-time/index.d.ts +0 -23
- package/dist/screen-time/index.d.ts.map +0 -1
- package/dist/screen-time/index.js +0 -1
- package/dist/screen-time/index.js.map +0 -1
- package/dist/sleep/awake-probability.d.ts +0 -11
- package/dist/sleep/awake-probability.d.ts.map +0 -1
- package/dist/sleep/awake-probability.js +0 -163
- package/dist/sleep/awake-probability.js.map +0 -1
- package/dist/sleep/circadian-rules.d.ts +0 -45
- package/dist/sleep/circadian-rules.d.ts.map +0 -1
- package/dist/sleep/circadian-rules.js +0 -258
- package/dist/sleep/circadian-rules.js.map +0 -1
- package/dist/sleep/index.d.ts +0 -21
- package/dist/sleep/index.d.ts.map +0 -1
- package/dist/sleep/index.js +0 -11
- package/dist/sleep/index.js.map +0 -1
- package/dist/sleep/sleep-cycle-dispatch.d.ts +0 -75
- package/dist/sleep/sleep-cycle-dispatch.d.ts.map +0 -1
- package/dist/sleep/sleep-cycle-dispatch.js +0 -102
- package/dist/sleep/sleep-cycle-dispatch.js.map +0 -1
- package/dist/sleep/sleep-cycle.d.ts +0 -38
- package/dist/sleep/sleep-cycle.d.ts.map +0 -1
- package/dist/sleep/sleep-cycle.js +0 -418
- package/dist/sleep/sleep-cycle.js.map +0 -1
- package/dist/sleep/sleep-episode-store.d.ts +0 -25
- package/dist/sleep/sleep-episode-store.d.ts.map +0 -1
- package/dist/sleep/sleep-episode-store.js +0 -69
- package/dist/sleep/sleep-episode-store.js.map +0 -1
- package/dist/sleep/sleep-episode-types.d.ts +0 -38
- package/dist/sleep/sleep-episode-types.d.ts.map +0 -1
- package/dist/sleep/sleep-episode-types.js +0 -14
- package/dist/sleep/sleep-episode-types.js.map +0 -1
- package/dist/sleep/sleep-recap.d.ts +0 -19
- package/dist/sleep/sleep-recap.d.ts.map +0 -1
- package/dist/sleep/sleep-recap.js +0 -1
- package/dist/sleep/sleep-recap.js.map +0 -1
- package/dist/sleep/sleep-regularity.d.ts +0 -19
- package/dist/sleep/sleep-regularity.d.ts.map +0 -1
- package/dist/sleep/sleep-regularity.js +0 -242
- package/dist/sleep/sleep-regularity.js.map +0 -1
- package/dist/sleep/sleep-wake-events.d.ts +0 -58
- package/dist/sleep/sleep-wake-events.d.ts.map +0 -1
- package/dist/sleep/sleep-wake-events.js +0 -135
- package/dist/sleep/sleep-wake-events.js.map +0 -1
- package/dist/sleep/source-reliability.d.ts +0 -38
- package/dist/sleep/source-reliability.d.ts.map +0 -1
- package/dist/sleep/source-reliability.js +0 -62
- package/dist/sleep/source-reliability.js.map +0 -1
- package/dist/util/index.d.ts +0 -10
- package/dist/util/index.d.ts.map +0 -1
- package/dist/util/index.js +0 -3
- package/dist/util/index.js.map +0 -1
- package/dist/util/normalize.d.ts +0 -22
- package/dist/util/normalize.d.ts.map +0 -1
- package/dist/util/normalize.js +0 -62
- package/dist/util/normalize.js.map +0 -1
- package/dist/util/time-util.d.ts +0 -10
- package/dist/util/time-util.d.ts.map +0 -1
- package/dist/util/time-util.js +0 -14
- package/dist/util/time-util.js.map +0 -1
- package/dist/util/time.d.ts +0 -17
- package/dist/util/time.d.ts.map +0 -1
- package/dist/util/time.js +0 -152
- package/dist/util/time.js.map +0 -1
- package/dist/util/token-encryption.d.ts +0 -42
- package/dist/util/token-encryption.d.ts.map +0 -1
- package/dist/util/token-encryption.js +0 -96
- package/dist/util/token-encryption.js.map +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default-pack registration for plugin-health.
|
|
3
|
-
*
|
|
4
|
-
* Per `wave1-interfaces.md` §5.4: plugin-health ships `bedtime`, `wake-up`,
|
|
5
|
-
* and `sleep-recap` packs. The pack records consume the W1-A `ScheduledTask`
|
|
6
|
-
* schema. Until W1-D's `DefaultPackRegistry` is wired into `IAgentRuntime`,
|
|
7
|
-
* `registerHealthDefaultPacks` logs a one-line skip and continues.
|
|
8
|
-
*/
|
|
9
|
-
import type { IAgentRuntime } from "@elizaos/core";
|
|
10
|
-
import { bedtimeDefaultPack } from "./bedtime.js";
|
|
11
|
-
import type { DefaultPack } from "./contract-stubs.js";
|
|
12
|
-
import { sleepRecapDefaultPack } from "./sleep-recap.js";
|
|
13
|
-
import { wakeUpDefaultPack } from "./wake-up.js";
|
|
14
|
-
export * from "./contract-stubs.js";
|
|
15
|
-
export { bedtimeDefaultPack, sleepRecapDefaultPack, wakeUpDefaultPack };
|
|
16
|
-
export declare const HEALTH_DEFAULT_PACKS: readonly DefaultPack[];
|
|
17
|
-
export declare function registerHealthDefaultPacks(runtime: IAgentRuntime): void;
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default-packs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;AAExE,eAAO,MAAM,oBAAoB,EAAE,SAAS,WAAW,EAItD,CAAC;AAMF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAqBvE"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { logger } from "@elizaos/core";
|
|
2
|
-
import { bedtimeDefaultPack } from "./bedtime.js";
|
|
3
|
-
import { sleepRecapDefaultPack } from "./sleep-recap.js";
|
|
4
|
-
import { wakeUpDefaultPack } from "./wake-up.js";
|
|
5
|
-
export * from "./contract-stubs.js";
|
|
6
|
-
const HEALTH_DEFAULT_PACKS = [
|
|
7
|
-
bedtimeDefaultPack,
|
|
8
|
-
wakeUpDefaultPack,
|
|
9
|
-
sleepRecapDefaultPack
|
|
10
|
-
];
|
|
11
|
-
function registerHealthDefaultPacks(runtime) {
|
|
12
|
-
const registry = runtime.defaultPackRegistry;
|
|
13
|
-
if (!registry) {
|
|
14
|
-
logger.info(
|
|
15
|
-
{ src: "plugin:health", waiting_on: "W1-D defaultPackRegistry" },
|
|
16
|
-
"Skipping plugin-health default-pack registration (registry not yet available)"
|
|
17
|
-
);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
for (const pack of HEALTH_DEFAULT_PACKS) {
|
|
21
|
-
registry.register(pack);
|
|
22
|
-
}
|
|
23
|
-
logger.info(
|
|
24
|
-
{
|
|
25
|
-
src: "plugin:health",
|
|
26
|
-
registered: HEALTH_DEFAULT_PACKS.length,
|
|
27
|
-
keys: HEALTH_DEFAULT_PACKS.map((p) => p.key)
|
|
28
|
-
},
|
|
29
|
-
"Registered plugin-health default packs"
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
export {
|
|
33
|
-
HEALTH_DEFAULT_PACKS,
|
|
34
|
-
bedtimeDefaultPack,
|
|
35
|
-
registerHealthDefaultPacks,
|
|
36
|
-
sleepRecapDefaultPack,
|
|
37
|
-
wakeUpDefaultPack
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/default-packs/index.ts"],"sourcesContent":["/**\n * Default-pack registration for plugin-health.\n *\n * Per `wave1-interfaces.md` §5.4: plugin-health ships `bedtime`, `wake-up`,\n * and `sleep-recap` packs. The pack records consume the W1-A `ScheduledTask`\n * schema. Until W1-D's `DefaultPackRegistry` is wired into `IAgentRuntime`,\n * `registerHealthDefaultPacks` logs a one-line skip and continues.\n */\n\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { bedtimeDefaultPack } from \"./bedtime.js\";\nimport type { DefaultPack, DefaultPackRegistry } from \"./contract-stubs.js\";\nimport { sleepRecapDefaultPack } from \"./sleep-recap.js\";\nimport { wakeUpDefaultPack } from \"./wake-up.js\";\n\nexport * from \"./contract-stubs.js\";\nexport { bedtimeDefaultPack, sleepRecapDefaultPack, wakeUpDefaultPack };\n\nexport const HEALTH_DEFAULT_PACKS: readonly DefaultPack[] = [\n bedtimeDefaultPack,\n wakeUpDefaultPack,\n sleepRecapDefaultPack,\n];\n\ninterface RuntimeWithDefaultPackRegistry {\n defaultPackRegistry?: DefaultPackRegistry;\n}\n\nexport function registerHealthDefaultPacks(runtime: IAgentRuntime): void {\n const registry = (runtime as IAgentRuntime & RuntimeWithDefaultPackRegistry)\n .defaultPackRegistry;\n if (!registry) {\n logger.info(\n { src: \"plugin:health\", waiting_on: \"W1-D defaultPackRegistry\" },\n \"Skipping plugin-health default-pack registration (registry not yet available)\",\n );\n return;\n }\n for (const pack of HEALTH_DEFAULT_PACKS) {\n registry.register(pack);\n }\n logger.info(\n {\n src: \"plugin:health\",\n registered: HEALTH_DEFAULT_PACKS.length,\n keys: HEALTH_DEFAULT_PACKS.map((p) => p.key),\n },\n \"Registered plugin-health default packs\",\n );\n}\n"],"mappings":"AAUA,SAAS,cAAc;AACvB,SAAS,0BAA0B;AAEnC,SAAS,6BAA6B;AACtC,SAAS,yBAAyB;AAElC,cAAc;AAGP,MAAM,uBAA+C;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AACF;AAMO,SAAS,2BAA2B,SAA8B;AACvE,QAAM,WAAY,QACf;AACH,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,MACL,EAAE,KAAK,iBAAiB,YAAY,2BAA2B;AAAA,MAC/D;AAAA,IACF;AACA;AAAA,EACF;AACA,aAAW,QAAQ,sBAAsB;AACvC,aAAS,SAAS,IAAI;AAAA,EACxB;AACA,SAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,YAAY,qBAAqB;AAAA,MACjC,MAAM,qBAAqB,IAAI,CAAC,MAAM,EAAE,GAAG;AAAA,IAC7C;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `sleep-recap` default pack — fires a one-shot summary of last night's
|
|
3
|
-
* sleep about 240 minutes (4 hours) after wake.confirmed, when the
|
|
4
|
-
* personal baseline has enough samples to produce a meaningful recap.
|
|
5
|
-
*
|
|
6
|
-
* Trigger: `relative_to_anchor("wake.confirmed", 240)`. The 4-hour offset
|
|
7
|
-
* gives the morning brief time to land first and avoids interrupting the
|
|
8
|
-
* user's first wake hour.
|
|
9
|
-
*
|
|
10
|
-
* Per `wave1-interfaces.md` §5.4 / `GAP_ASSESSMENT.md` §4.4.
|
|
11
|
-
*/
|
|
12
|
-
import type { DefaultPack } from "./contract-stubs.js";
|
|
13
|
-
export declare const sleepRecapDefaultPack: DefaultPack;
|
|
14
|
-
//# sourceMappingURL=sleep-recap.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sleep-recap.d.ts","sourceRoot":"","sources":["../../src/default-packs/sleep-recap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,qBAAqB,EAAE,WAiDnC,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
const sleepRecapDefaultPack = {
|
|
2
|
-
key: "sleep-recap",
|
|
3
|
-
label: "Last-night sleep recap",
|
|
4
|
-
description: "Surfaces a one-line recap of last night's sleep duration, regularity, and any anomalies. Quiet on days where the personal baseline has fewer than 5 sealed episodes (insufficient_data).",
|
|
5
|
-
defaultEnabled: false,
|
|
6
|
-
records: [
|
|
7
|
-
{
|
|
8
|
-
kind: "recap",
|
|
9
|
-
promptInstructions: "Summarize last night's sleep in one sentence. Mention duration vs the user's median, and any regularity-class change. Do not surface raw biometric numbers; speak in normal-language terms.",
|
|
10
|
-
contextRequest: {
|
|
11
|
-
includeOwnerFacts: ["preferredName", "timezone"]
|
|
12
|
-
},
|
|
13
|
-
trigger: {
|
|
14
|
-
kind: "relative_to_anchor",
|
|
15
|
-
anchorKey: "wake.confirmed",
|
|
16
|
-
offsetMinutes: 240
|
|
17
|
-
},
|
|
18
|
-
priority: "low",
|
|
19
|
-
shouldFire: {
|
|
20
|
-
compose: "all",
|
|
21
|
-
gates: [
|
|
22
|
-
{ kind: "personal_baseline_sufficient", params: { minSamples: 5 } },
|
|
23
|
-
{ kind: "circadian_state_in", params: { states: ["awake"] } }
|
|
24
|
-
]
|
|
25
|
-
},
|
|
26
|
-
completionCheck: {
|
|
27
|
-
kind: "user_acknowledged",
|
|
28
|
-
followupAfterMinutes: 240
|
|
29
|
-
},
|
|
30
|
-
output: {
|
|
31
|
-
destination: "in_app_card",
|
|
32
|
-
persistAs: "task_metadata"
|
|
33
|
-
},
|
|
34
|
-
respectsGlobalPause: true,
|
|
35
|
-
source: "default_pack",
|
|
36
|
-
createdBy: "plugin-health",
|
|
37
|
-
ownerVisible: true,
|
|
38
|
-
metadata: {
|
|
39
|
-
defaultPackKey: "sleep-recap"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
uiHints: {
|
|
44
|
-
summaryOnDayOne: "After 5 nights of sleep data, you'll get a one-line recap each morning.",
|
|
45
|
-
expectedFireCountPerDay: 1
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
export {
|
|
49
|
-
sleepRecapDefaultPack
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=sleep-recap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/default-packs/sleep-recap.ts"],"sourcesContent":["/**\n * `sleep-recap` default pack — fires a one-shot summary of last night's\n * sleep about 240 minutes (4 hours) after wake.confirmed, when the\n * personal baseline has enough samples to produce a meaningful recap.\n *\n * Trigger: `relative_to_anchor(\"wake.confirmed\", 240)`. The 4-hour offset\n * gives the morning brief time to land first and avoids interrupting the\n * user's first wake hour.\n *\n * Per `wave1-interfaces.md` §5.4 / `GAP_ASSESSMENT.md` §4.4.\n */\n\nimport type { DefaultPack } from \"./contract-stubs.js\";\n\nexport const sleepRecapDefaultPack: DefaultPack = {\n key: \"sleep-recap\",\n label: \"Last-night sleep recap\",\n description:\n \"Surfaces a one-line recap of last night's sleep duration, regularity, and any anomalies. Quiet on days where the personal baseline has fewer than 5 sealed episodes (insufficient_data).\",\n defaultEnabled: false,\n records: [\n {\n kind: \"recap\",\n promptInstructions:\n \"Summarize last night's sleep in one sentence. Mention duration vs the user's median, and any regularity-class change. Do not surface raw biometric numbers; speak in normal-language terms.\",\n contextRequest: {\n includeOwnerFacts: [\"preferredName\", \"timezone\"],\n },\n trigger: {\n kind: \"relative_to_anchor\",\n anchorKey: \"wake.confirmed\",\n offsetMinutes: 240,\n },\n priority: \"low\",\n shouldFire: {\n compose: \"all\",\n gates: [\n { kind: \"personal_baseline_sufficient\", params: { minSamples: 5 } },\n { kind: \"circadian_state_in\", params: { states: [\"awake\"] } },\n ],\n },\n completionCheck: {\n kind: \"user_acknowledged\",\n followupAfterMinutes: 240,\n },\n output: {\n destination: \"in_app_card\",\n persistAs: \"task_metadata\",\n },\n respectsGlobalPause: true,\n source: \"default_pack\",\n createdBy: \"plugin-health\",\n ownerVisible: true,\n metadata: {\n defaultPackKey: \"sleep-recap\",\n },\n },\n ],\n uiHints: {\n summaryOnDayOne:\n \"After 5 nights of sleep data, you'll get a one-line recap each morning.\",\n expectedFireCountPerDay: 1,\n },\n};\n"],"mappings":"AAcO,MAAM,wBAAqC;AAAA,EAChD,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aACE;AAAA,EACF,gBAAgB;AAAA,EAChB,SAAS;AAAA,IACP;AAAA,MACE,MAAM;AAAA,MACN,oBACE;AAAA,MACF,gBAAgB;AAAA,QACd,mBAAmB,CAAC,iBAAiB,UAAU;AAAA,MACjD;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,UACL,EAAE,MAAM,gCAAgC,QAAQ,EAAE,YAAY,EAAE,EAAE;AAAA,UAClE,EAAE,MAAM,sBAAsB,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE;AAAA,QAC9D;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,sBAAsB;AAAA,MACxB;AAAA,MACA,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AAAA,MACA,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,cAAc;AAAA,MACd,UAAU;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,iBACE;AAAA,IACF,yBAAyB;AAAA,EAC3B;AACF;","names":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `wake-up` default pack — surfaces a one-line "good morning" check-in when
|
|
3
|
-
* the wake state is confirmed (sustained signal).
|
|
4
|
-
*
|
|
5
|
-
* Trigger: `relative_to_anchor("wake.confirmed", 0)` — at the moment the
|
|
6
|
-
* circadian-rules scorer confirms a sustained-awake transition. Uses the
|
|
7
|
-
* `wake.confirmed` anchor (sustained signal) and not `wake.observed` (first
|
|
8
|
-
* signal) to avoid double-firing on micro-wakes.
|
|
9
|
-
*
|
|
10
|
-
* Per `IMPLEMENTATION_PLAN.md` §3.2 and `wave1-interfaces.md` §5.4.
|
|
11
|
-
*/
|
|
12
|
-
import type { DefaultPack } from "./contract-stubs.js";
|
|
13
|
-
export declare const wakeUpDefaultPack: DefaultPack;
|
|
14
|
-
//# sourceMappingURL=wake-up.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wake-up.d.ts","sourceRoot":"","sources":["../../src/default-packs/wake-up.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,WA2D/B,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
const wakeUpDefaultPack = {
|
|
2
|
-
key: "wake-up",
|
|
3
|
-
label: "Morning gm reminder",
|
|
4
|
-
description: "Fires a single low-pressure 'good morning' check-in at the wake.confirmed anchor (sustained-awake transition). Skips when the user has already started a chat session this morning.",
|
|
5
|
-
defaultEnabled: true,
|
|
6
|
-
records: [
|
|
7
|
-
{
|
|
8
|
-
kind: "checkin",
|
|
9
|
-
promptInstructions: "Greet the user briefly (one sentence). If you have a non-trivial morning brief queued, surface it; otherwise leave space for them to lead.",
|
|
10
|
-
contextRequest: {
|
|
11
|
-
includeOwnerFacts: ["preferredName", "timezone", "morningWindow"],
|
|
12
|
-
includeRecentTaskStates: { kind: "checkin", lookbackHours: 18 }
|
|
13
|
-
},
|
|
14
|
-
trigger: {
|
|
15
|
-
kind: "relative_to_anchor",
|
|
16
|
-
anchorKey: "wake.confirmed",
|
|
17
|
-
offsetMinutes: 0
|
|
18
|
-
},
|
|
19
|
-
priority: "low",
|
|
20
|
-
shouldFire: {
|
|
21
|
-
compose: "all",
|
|
22
|
-
gates: [
|
|
23
|
-
{ kind: "circadian_state_in", params: { states: ["awake"] } },
|
|
24
|
-
{ kind: "no_recent_user_message_in", params: { minutes: 30 } }
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
completionCheck: {
|
|
28
|
-
kind: "user_replied_within",
|
|
29
|
-
params: { minutes: 60 },
|
|
30
|
-
followupAfterMinutes: 90
|
|
31
|
-
},
|
|
32
|
-
output: {
|
|
33
|
-
destination: "in_app_card",
|
|
34
|
-
persistAs: "task_metadata"
|
|
35
|
-
},
|
|
36
|
-
respectsGlobalPause: true,
|
|
37
|
-
source: "default_pack",
|
|
38
|
-
createdBy: "plugin-health",
|
|
39
|
-
ownerVisible: true,
|
|
40
|
-
metadata: {
|
|
41
|
-
defaultPackKey: "wake-up"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
],
|
|
45
|
-
consolidationPolicies: [
|
|
46
|
-
{
|
|
47
|
-
anchorKey: "wake.confirmed",
|
|
48
|
-
mode: "merge",
|
|
49
|
-
sortBy: "priority_desc",
|
|
50
|
-
maxBatchSize: 5
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
uiHints: {
|
|
54
|
-
summaryOnDayOne: "Your morning gm fires once when your wake-up is confirmed.",
|
|
55
|
-
expectedFireCountPerDay: 1
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
export {
|
|
59
|
-
wakeUpDefaultPack
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=wake-up.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/default-packs/wake-up.ts"],"sourcesContent":["/**\n * `wake-up` default pack — surfaces a one-line \"good morning\" check-in when\n * the wake state is confirmed (sustained signal).\n *\n * Trigger: `relative_to_anchor(\"wake.confirmed\", 0)` — at the moment the\n * circadian-rules scorer confirms a sustained-awake transition. Uses the\n * `wake.confirmed` anchor (sustained signal) and not `wake.observed` (first\n * signal) to avoid double-firing on micro-wakes.\n *\n * Per `IMPLEMENTATION_PLAN.md` §3.2 and `wave1-interfaces.md` §5.4.\n */\n\nimport type { DefaultPack } from \"./contract-stubs.js\";\n\nexport const wakeUpDefaultPack: DefaultPack = {\n key: \"wake-up\",\n label: \"Morning gm reminder\",\n description:\n \"Fires a single low-pressure 'good morning' check-in at the wake.confirmed anchor (sustained-awake transition). Skips when the user has already started a chat session this morning.\",\n defaultEnabled: true,\n records: [\n {\n kind: \"checkin\",\n promptInstructions:\n \"Greet the user briefly (one sentence). If you have a non-trivial morning brief queued, surface it; otherwise leave space for them to lead.\",\n contextRequest: {\n includeOwnerFacts: [\"preferredName\", \"timezone\", \"morningWindow\"],\n includeRecentTaskStates: { kind: \"checkin\", lookbackHours: 18 },\n },\n trigger: {\n kind: \"relative_to_anchor\",\n anchorKey: \"wake.confirmed\",\n offsetMinutes: 0,\n },\n priority: \"low\",\n shouldFire: {\n compose: \"all\",\n gates: [\n { kind: \"circadian_state_in\", params: { states: [\"awake\"] } },\n { kind: \"no_recent_user_message_in\", params: { minutes: 30 } },\n ],\n },\n completionCheck: {\n kind: \"user_replied_within\",\n params: { minutes: 60 },\n followupAfterMinutes: 90,\n },\n output: {\n destination: \"in_app_card\",\n persistAs: \"task_metadata\",\n },\n respectsGlobalPause: true,\n source: \"default_pack\",\n createdBy: \"plugin-health\",\n ownerVisible: true,\n metadata: {\n defaultPackKey: \"wake-up\",\n },\n },\n ],\n consolidationPolicies: [\n {\n anchorKey: \"wake.confirmed\",\n mode: \"merge\",\n sortBy: \"priority_desc\",\n maxBatchSize: 5,\n },\n ],\n uiHints: {\n summaryOnDayOne:\n \"Your morning gm fires once when your wake-up is confirmed.\",\n expectedFireCountPerDay: 1,\n },\n};\n"],"mappings":"AAcO,MAAM,oBAAiC;AAAA,EAC5C,KAAK;AAAA,EACL,OAAO;AAAA,EACP,aACE;AAAA,EACF,gBAAgB;AAAA,EAChB,SAAS;AAAA,IACP;AAAA,MACE,MAAM;AAAA,MACN,oBACE;AAAA,MACF,gBAAgB;AAAA,QACd,mBAAmB,CAAC,iBAAiB,YAAY,eAAe;AAAA,QAChE,yBAAyB,EAAE,MAAM,WAAW,eAAe,GAAG;AAAA,MAChE;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,UACL,EAAE,MAAM,sBAAsB,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE;AAAA,UAC5D,EAAE,MAAM,6BAA6B,QAAQ,EAAE,SAAS,GAAG,EAAE;AAAA,QAC/D;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,QAAQ,EAAE,SAAS,GAAG;AAAA,QACtB,sBAAsB;AAAA,MACxB;AAAA,MACA,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AAAA,MACA,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,cAAc;AAAA,MACd,UAAU;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,uBAAuB;AAAA,IACrB;AAAA,MACE,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,iBACE;AAAA,IACF,yBAAyB;AAAA,EAC3B;AACF;","names":[]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Health / fitness bridge for LifeOps.
|
|
3
|
-
*
|
|
4
|
-
* Provides a uniform read-only surface over:
|
|
5
|
-
* - HealthKit (macOS) via an external native helper binary invoked through
|
|
6
|
-
* `execFile`. The helper is expected to emit JSON. The helper is not
|
|
7
|
-
* shipped in this repo; until it is installed the bridge reports
|
|
8
|
-
* `backend: "none"` for detection, but `getDailySummary` without any
|
|
9
|
-
* configured backend throws `HealthBridgeError("no health backend
|
|
10
|
-
* available", "none")` so the caller can surface a clear status.
|
|
11
|
-
* - Google Fit REST API as a cross-platform fallback, authenticated via an
|
|
12
|
-
* OAuth access token supplied through config.
|
|
13
|
-
*
|
|
14
|
-
* Never log raw health values in plaintext.
|
|
15
|
-
*/
|
|
16
|
-
export type HealthBackend = "healthkit" | "google-fit" | "fixture" | "none";
|
|
17
|
-
export interface HealthDataPoint {
|
|
18
|
-
metric: "steps" | "active_minutes" | "sleep_hours" | "heart_rate" | "calories" | "distance_meters";
|
|
19
|
-
value: number;
|
|
20
|
-
unit: string;
|
|
21
|
-
/** ISO-8601 timestamp. */
|
|
22
|
-
startAt: string;
|
|
23
|
-
/** ISO-8601 timestamp. */
|
|
24
|
-
endAt: string;
|
|
25
|
-
source: HealthBackend;
|
|
26
|
-
}
|
|
27
|
-
export interface HealthDailySummary {
|
|
28
|
-
/** Local day key, YYYY-MM-DD. */
|
|
29
|
-
date: string;
|
|
30
|
-
steps: number;
|
|
31
|
-
activeMinutes: number;
|
|
32
|
-
sleepHours: number;
|
|
33
|
-
heartRateAvg?: number;
|
|
34
|
-
calories?: number;
|
|
35
|
-
distanceMeters?: number;
|
|
36
|
-
source: HealthBackend;
|
|
37
|
-
}
|
|
38
|
-
export interface HealthBridgeConfig {
|
|
39
|
-
preferredBackend?: HealthBackend;
|
|
40
|
-
/** Path to a native HealthKit helper binary that emits JSON on stdout. */
|
|
41
|
-
healthKitCliPath?: string;
|
|
42
|
-
/** OAuth2 access token for Google Fit. */
|
|
43
|
-
googleFitAccessToken?: string;
|
|
44
|
-
}
|
|
45
|
-
export declare class HealthBridgeError extends Error {
|
|
46
|
-
readonly backend: HealthBackend;
|
|
47
|
-
constructor(message: string, backend: HealthBackend);
|
|
48
|
-
}
|
|
49
|
-
export declare function detectHealthBackend(config?: HealthBridgeConfig): Promise<HealthBackend>;
|
|
50
|
-
export declare function getDailySummary(date: string, config?: HealthBridgeConfig): Promise<HealthDailySummary>;
|
|
51
|
-
export declare function getDataPoints(opts: {
|
|
52
|
-
metric: HealthDataPoint["metric"];
|
|
53
|
-
startAt: string;
|
|
54
|
-
endAt: string;
|
|
55
|
-
}, config?: HealthBridgeConfig): Promise<HealthDataPoint[]>;
|
|
56
|
-
export declare function getRecentSummaries(days: number, config?: HealthBridgeConfig): Promise<HealthDailySummary[]>;
|
|
57
|
-
//# sourceMappingURL=health-bridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health-bridge.d.ts","sourceRoot":"","sources":["../../src/health-bridge/health-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0BH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B,MAAM,EACF,OAAO,GACP,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,UAAU,GACV,iBAAiB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,OAAO,EAAE,aAAa;gBADtC,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,aAAa;CAKzC;AAgND,wBAAsB,mBAAmB,CACvC,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAyZD,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CA0B7B;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC3E,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CA0B5B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAc/B"}
|