@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.
Files changed (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -27
  3. package/assets/hero.svg +67 -0
  4. package/package.json +67 -4
  5. package/dist/actions/index.d.ts +0 -20
  6. package/dist/actions/index.d.ts.map +0 -1
  7. package/dist/actions/index.js +0 -5
  8. package/dist/actions/index.js.map +0 -1
  9. package/dist/anchors/index.d.ts +0 -19
  10. package/dist/anchors/index.d.ts.map +0 -1
  11. package/dist/anchors/index.js +0 -9
  12. package/dist/anchors/index.js.map +0 -1
  13. package/dist/connectors/contract-stubs.d.ts +0 -112
  14. package/dist/connectors/contract-stubs.d.ts.map +0 -1
  15. package/dist/connectors/contract-stubs.js +0 -1
  16. package/dist/connectors/contract-stubs.js.map +0 -1
  17. package/dist/connectors/index.d.ts +0 -28
  18. package/dist/connectors/index.d.ts.map +0 -1
  19. package/dist/connectors/index.js +0 -202
  20. package/dist/connectors/index.js.map +0 -1
  21. package/dist/contracts/circadian-default.d.ts +0 -15
  22. package/dist/contracts/circadian-default.d.ts.map +0 -1
  23. package/dist/contracts/circadian-default.js +0 -30
  24. package/dist/contracts/circadian-default.js.map +0 -1
  25. package/dist/contracts/circadian.d.ts +0 -92
  26. package/dist/contracts/circadian.d.ts.map +0 -1
  27. package/dist/contracts/circadian.js +0 -14
  28. package/dist/contracts/circadian.js.map +0 -1
  29. package/dist/contracts/health.d.ts +0 -9
  30. package/dist/contracts/health.d.ts.map +0 -1
  31. package/dist/contracts/health.js +0 -21
  32. package/dist/contracts/health.js.map +0 -1
  33. package/dist/contracts/lifeops-connector-degradation.d.ts +0 -9
  34. package/dist/contracts/lifeops-connector-degradation.d.ts.map +0 -1
  35. package/dist/contracts/lifeops-connector-degradation.js +0 -17
  36. package/dist/contracts/lifeops-connector-degradation.js.map +0 -1
  37. package/dist/contracts/lifeops.d.ts +0 -3123
  38. package/dist/contracts/lifeops.d.ts.map +0 -1
  39. package/dist/contracts/lifeops.js +0 -635
  40. package/dist/contracts/lifeops.js.map +0 -1
  41. package/dist/contracts/permissions.d.ts +0 -39
  42. package/dist/contracts/permissions.d.ts.map +0 -1
  43. package/dist/contracts/permissions.js +0 -1
  44. package/dist/contracts/permissions.js.map +0 -1
  45. package/dist/default-packs/bedtime.d.ts +0 -14
  46. package/dist/default-packs/bedtime.d.ts.map +0 -1
  47. package/dist/default-packs/bedtime.js +0 -48
  48. package/dist/default-packs/bedtime.js.map +0 -1
  49. package/dist/default-packs/contract-stubs.d.ts +0 -161
  50. package/dist/default-packs/contract-stubs.d.ts.map +0 -1
  51. package/dist/default-packs/contract-stubs.js +0 -1
  52. package/dist/default-packs/contract-stubs.js.map +0 -1
  53. package/dist/default-packs/index.d.ts +0 -18
  54. package/dist/default-packs/index.d.ts.map +0 -1
  55. package/dist/default-packs/index.js +0 -39
  56. package/dist/default-packs/index.js.map +0 -1
  57. package/dist/default-packs/sleep-recap.d.ts +0 -14
  58. package/dist/default-packs/sleep-recap.d.ts.map +0 -1
  59. package/dist/default-packs/sleep-recap.js +0 -51
  60. package/dist/default-packs/sleep-recap.js.map +0 -1
  61. package/dist/default-packs/wake-up.d.ts +0 -14
  62. package/dist/default-packs/wake-up.d.ts.map +0 -1
  63. package/dist/default-packs/wake-up.js +0 -61
  64. package/dist/default-packs/wake-up.js.map +0 -1
  65. package/dist/health-bridge/health-bridge.d.ts +0 -57
  66. package/dist/health-bridge/health-bridge.d.ts.map +0 -1
  67. package/dist/health-bridge/health-bridge.js +0 -558
  68. package/dist/health-bridge/health-bridge.js.map +0 -1
  69. package/dist/health-bridge/health-connectors.d.ts +0 -23
  70. package/dist/health-bridge/health-connectors.d.ts.map +0 -1
  71. package/dist/health-bridge/health-connectors.js +0 -1018
  72. package/dist/health-bridge/health-connectors.js.map +0 -1
  73. package/dist/health-bridge/health-oauth.d.ts +0 -62
  74. package/dist/health-bridge/health-oauth.d.ts.map +0 -1
  75. package/dist/health-bridge/health-oauth.js +0 -432
  76. package/dist/health-bridge/health-oauth.js.map +0 -1
  77. package/dist/health-bridge/health-provider-registry.d.ts +0 -89
  78. package/dist/health-bridge/health-provider-registry.d.ts.map +0 -1
  79. package/dist/health-bridge/health-provider-registry.js +0 -141
  80. package/dist/health-bridge/health-provider-registry.js.map +0 -1
  81. package/dist/health-bridge/health-records.d.ts +0 -14
  82. package/dist/health-bridge/health-records.d.ts.map +0 -1
  83. package/dist/health-bridge/health-records.js +0 -45
  84. package/dist/health-bridge/health-records.js.map +0 -1
  85. package/dist/health-bridge/index.d.ts +0 -22
  86. package/dist/health-bridge/index.d.ts.map +0 -1
  87. package/dist/health-bridge/index.js +0 -7
  88. package/dist/health-bridge/index.js.map +0 -1
  89. package/dist/health-bridge/service-normalize-health.d.ts +0 -3
  90. package/dist/health-bridge/service-normalize-health.d.ts.map +0 -1
  91. package/dist/health-bridge/service-normalize-health.js +0 -96
  92. package/dist/health-bridge/service-normalize-health.js.map +0 -1
  93. package/dist/index.d.ts +0 -41
  94. package/dist/index.d.ts.map +0 -1
  95. package/dist/index.js +0 -62
  96. package/dist/index.js.map +0 -1
  97. package/dist/screen-time/index.d.ts +0 -23
  98. package/dist/screen-time/index.d.ts.map +0 -1
  99. package/dist/screen-time/index.js +0 -1
  100. package/dist/screen-time/index.js.map +0 -1
  101. package/dist/sleep/awake-probability.d.ts +0 -11
  102. package/dist/sleep/awake-probability.d.ts.map +0 -1
  103. package/dist/sleep/awake-probability.js +0 -163
  104. package/dist/sleep/awake-probability.js.map +0 -1
  105. package/dist/sleep/circadian-rules.d.ts +0 -45
  106. package/dist/sleep/circadian-rules.d.ts.map +0 -1
  107. package/dist/sleep/circadian-rules.js +0 -258
  108. package/dist/sleep/circadian-rules.js.map +0 -1
  109. package/dist/sleep/index.d.ts +0 -21
  110. package/dist/sleep/index.d.ts.map +0 -1
  111. package/dist/sleep/index.js +0 -11
  112. package/dist/sleep/index.js.map +0 -1
  113. package/dist/sleep/sleep-cycle-dispatch.d.ts +0 -75
  114. package/dist/sleep/sleep-cycle-dispatch.d.ts.map +0 -1
  115. package/dist/sleep/sleep-cycle-dispatch.js +0 -102
  116. package/dist/sleep/sleep-cycle-dispatch.js.map +0 -1
  117. package/dist/sleep/sleep-cycle.d.ts +0 -38
  118. package/dist/sleep/sleep-cycle.d.ts.map +0 -1
  119. package/dist/sleep/sleep-cycle.js +0 -418
  120. package/dist/sleep/sleep-cycle.js.map +0 -1
  121. package/dist/sleep/sleep-episode-store.d.ts +0 -25
  122. package/dist/sleep/sleep-episode-store.d.ts.map +0 -1
  123. package/dist/sleep/sleep-episode-store.js +0 -69
  124. package/dist/sleep/sleep-episode-store.js.map +0 -1
  125. package/dist/sleep/sleep-episode-types.d.ts +0 -38
  126. package/dist/sleep/sleep-episode-types.d.ts.map +0 -1
  127. package/dist/sleep/sleep-episode-types.js +0 -14
  128. package/dist/sleep/sleep-episode-types.js.map +0 -1
  129. package/dist/sleep/sleep-recap.d.ts +0 -19
  130. package/dist/sleep/sleep-recap.d.ts.map +0 -1
  131. package/dist/sleep/sleep-recap.js +0 -1
  132. package/dist/sleep/sleep-recap.js.map +0 -1
  133. package/dist/sleep/sleep-regularity.d.ts +0 -19
  134. package/dist/sleep/sleep-regularity.d.ts.map +0 -1
  135. package/dist/sleep/sleep-regularity.js +0 -242
  136. package/dist/sleep/sleep-regularity.js.map +0 -1
  137. package/dist/sleep/sleep-wake-events.d.ts +0 -58
  138. package/dist/sleep/sleep-wake-events.d.ts.map +0 -1
  139. package/dist/sleep/sleep-wake-events.js +0 -135
  140. package/dist/sleep/sleep-wake-events.js.map +0 -1
  141. package/dist/sleep/source-reliability.d.ts +0 -38
  142. package/dist/sleep/source-reliability.d.ts.map +0 -1
  143. package/dist/sleep/source-reliability.js +0 -62
  144. package/dist/sleep/source-reliability.js.map +0 -1
  145. package/dist/util/index.d.ts +0 -10
  146. package/dist/util/index.d.ts.map +0 -1
  147. package/dist/util/index.js +0 -3
  148. package/dist/util/index.js.map +0 -1
  149. package/dist/util/normalize.d.ts +0 -22
  150. package/dist/util/normalize.d.ts.map +0 -1
  151. package/dist/util/normalize.js +0 -62
  152. package/dist/util/normalize.js.map +0 -1
  153. package/dist/util/time-util.d.ts +0 -10
  154. package/dist/util/time-util.d.ts.map +0 -1
  155. package/dist/util/time-util.js +0 -14
  156. package/dist/util/time-util.js.map +0 -1
  157. package/dist/util/time.d.ts +0 -17
  158. package/dist/util/time.d.ts.map +0 -1
  159. package/dist/util/time.js +0 -152
  160. package/dist/util/time.js.map +0 -1
  161. package/dist/util/token-encryption.d.ts +0 -42
  162. package/dist/util/token-encryption.d.ts.map +0 -1
  163. package/dist/util/token-encryption.js +0 -96
  164. 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"}