@runcore-sh/runcore 0.1.9 → 0.2.0

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 (214) hide show
  1. package/brain-template/agents/cooldowns.json +1 -0
  2. package/brain-template/agents/locks.json +1 -0
  3. package/brain-template/agents/module.json +15 -0
  4. package/brain-template/agents/workflows/examples/conditional-deploy.json +124 -0
  5. package/brain-template/agents/workflows/examples/parallel-analysis.json +81 -0
  6. package/brain-template/agents/workflows/examples/research-and-write.json +71 -0
  7. package/brain-template/agents/workflows/schema.json +236 -0
  8. package/brain-template/contacts/README.md +22 -0
  9. package/brain-template/contacts/module.json +19 -0
  10. package/brain-template/content/CONTENT.md +36 -0
  11. package/brain-template/content/templates/blog.md +26 -0
  12. package/brain-template/knowledge/README.md +11 -0
  13. package/brain-template/library/README.md +29 -0
  14. package/brain-template/library/module.json +29 -0
  15. package/brain-template/memory/README.md +17 -0
  16. package/brain-template/metrics/module.json +7 -0
  17. package/brain-template/operations/OPERATIONS.md +28 -0
  18. package/brain-template/ops/module.json +8 -0
  19. package/brain-template/registry.md +566 -0
  20. package/brain-template/rest_api-integration.md +522 -0
  21. package/brain-template/scheduling/README.md +23 -0
  22. package/brain-template/scheduling/module.json +16 -0
  23. package/brain-template/settings.json +60 -0
  24. package/brain-template/skills/debugging.yml +152 -0
  25. package/brain-template/skills/file-editing.yml +148 -0
  26. package/brain-template/skills/git-operations.yml +131 -0
  27. package/brain-template/skills/schema.yml +286 -0
  28. package/brain-template/skills/testing.yml +170 -0
  29. package/brain-template/skills/web-scraping.yml +178 -0
  30. package/brain-template/templates/instances.yaml +70 -0
  31. package/brain-template/templates/spawn-policy.yaml +36 -0
  32. package/brain-template/templates/vault.policy.yaml +37 -0
  33. package/brain-template/training/module.json +14 -0
  34. package/dictionary.json +38 -0
  35. package/dist/access/manifest.js +2 -2
  36. package/dist/access/manifest.js.map +1 -1
  37. package/dist/activity/log.d.ts.map +1 -1
  38. package/dist/activity/log.js +2 -1
  39. package/dist/activity/log.js.map +1 -1
  40. package/dist/agents/cooldown.d.ts.map +1 -1
  41. package/dist/agents/cooldown.js +2 -1
  42. package/dist/agents/cooldown.js.map +1 -1
  43. package/dist/agents/governance.js +16 -16
  44. package/dist/agents/governance.js.map +1 -1
  45. package/dist/agents/heartbeat.d.ts.map +1 -1
  46. package/dist/agents/heartbeat.js +3 -2
  47. package/dist/agents/heartbeat.js.map +1 -1
  48. package/dist/agents/locks.js +2 -2
  49. package/dist/agents/locks.js.map +1 -1
  50. package/dist/agents/memory.d.ts.map +1 -1
  51. package/dist/agents/memory.js +2 -1
  52. package/dist/agents/memory.js.map +1 -1
  53. package/dist/agents/reflection.d.ts.map +1 -1
  54. package/dist/agents/reflection.js +25 -24
  55. package/dist/agents/reflection.js.map +1 -1
  56. package/dist/agents/runtime/config.d.ts.map +1 -1
  57. package/dist/agents/runtime/config.js +2 -1
  58. package/dist/agents/runtime/config.js.map +1 -1
  59. package/dist/agents/spawn-policy.js +2 -2
  60. package/dist/agents/spawn-policy.js.map +1 -1
  61. package/dist/agents/spawn.d.ts.map +1 -1
  62. package/dist/agents/spawn.js +54 -53
  63. package/dist/agents/spawn.js.map +1 -1
  64. package/dist/agents/store.d.ts.map +1 -1
  65. package/dist/agents/store.js +20 -20
  66. package/dist/agents/store.js.map +1 -1
  67. package/dist/agents/workflow.d.ts.map +1 -1
  68. package/dist/agents/workflow.js +2 -1
  69. package/dist/agents/workflow.js.map +1 -1
  70. package/dist/auth/identity.d.ts.map +1 -1
  71. package/dist/auth/identity.js +2 -1
  72. package/dist/auth/identity.js.map +1 -1
  73. package/dist/browser/sessions.d.ts.map +1 -1
  74. package/dist/browser/sessions.js +2 -1
  75. package/dist/browser/sessions.js.map +1 -1
  76. package/dist/cli.js +274 -53
  77. package/dist/cli.js.map +1 -1
  78. package/dist/distiller.js +2 -2
  79. package/dist/distiller.js.map +1 -1
  80. package/dist/files/deep-index.d.ts +59 -0
  81. package/dist/files/deep-index.d.ts.map +1 -0
  82. package/dist/files/deep-index.js +337 -0
  83. package/dist/files/deep-index.js.map +1 -0
  84. package/dist/files/import.d.ts +44 -0
  85. package/dist/files/import.d.ts.map +1 -0
  86. package/dist/files/import.js +213 -0
  87. package/dist/files/import.js.map +1 -0
  88. package/dist/files/index-local.d.ts +37 -0
  89. package/dist/files/index-local.d.ts.map +1 -0
  90. package/dist/files/index-local.js +198 -0
  91. package/dist/files/index-local.js.map +1 -0
  92. package/dist/goals/loop.js +31 -31
  93. package/dist/goals/loop.js.map +1 -1
  94. package/dist/goals/notifications.d.ts.map +1 -1
  95. package/dist/goals/notifications.js +2 -1
  96. package/dist/goals/notifications.js.map +1 -1
  97. package/dist/instance.d.ts.map +1 -1
  98. package/dist/instance.js +2 -1
  99. package/dist/instance.js.map +1 -1
  100. package/dist/lib/audit.js +1 -1
  101. package/dist/lib/audit.js.map +1 -1
  102. package/dist/lib/locked.js +2 -2
  103. package/dist/lib/locked.js.map +1 -1
  104. package/dist/lib/paths.d.ts +11 -0
  105. package/dist/lib/paths.d.ts.map +1 -0
  106. package/dist/lib/paths.js +13 -0
  107. package/dist/lib/paths.js.map +1 -0
  108. package/dist/mcp-server.js +1 -1
  109. package/dist/mcp-server.js.map +1 -1
  110. package/dist/memory/visual.d.ts.map +1 -1
  111. package/dist/memory/visual.js +2 -1
  112. package/dist/memory/visual.js.map +1 -1
  113. package/dist/metrics/system.d.ts.map +1 -1
  114. package/dist/metrics/system.js +2 -1
  115. package/dist/metrics/system.js.map +1 -1
  116. package/dist/nerve/push.js +2 -2
  117. package/dist/nerve/push.js.map +1 -1
  118. package/dist/nerve/state.d.ts +1 -1
  119. package/dist/nerve/state.d.ts.map +1 -1
  120. package/dist/nerve/state.js +3 -3
  121. package/dist/nerve/state.js.map +1 -1
  122. package/dist/openloop/scanner.d.ts.map +1 -1
  123. package/dist/openloop/scanner.js +11 -10
  124. package/dist/openloop/scanner.js.map +1 -1
  125. package/dist/openloop/store.d.ts.map +1 -1
  126. package/dist/openloop/store.js +3 -2
  127. package/dist/openloop/store.js.map +1 -1
  128. package/dist/posture/engine.d.ts +41 -0
  129. package/dist/posture/engine.d.ts.map +1 -0
  130. package/dist/posture/engine.js +217 -0
  131. package/dist/posture/engine.js.map +1 -0
  132. package/dist/posture/index.d.ts +11 -0
  133. package/dist/posture/index.d.ts.map +1 -0
  134. package/dist/posture/index.js +10 -0
  135. package/dist/posture/index.js.map +1 -0
  136. package/dist/posture/middleware.d.ts +30 -0
  137. package/dist/posture/middleware.d.ts.map +1 -0
  138. package/dist/posture/middleware.js +92 -0
  139. package/dist/posture/middleware.js.map +1 -0
  140. package/dist/posture/types.d.ts +61 -0
  141. package/dist/posture/types.d.ts.map +1 -0
  142. package/dist/posture/types.js +48 -0
  143. package/dist/posture/types.js.map +1 -0
  144. package/dist/pulse/activation-log.js +1 -2
  145. package/dist/pulse/activation-log.js.map +1 -1
  146. package/dist/pulse/pressure.d.ts.map +1 -1
  147. package/dist/pulse/pressure.js +2 -1
  148. package/dist/pulse/pressure.js.map +1 -1
  149. package/dist/queue/grooming.d.ts.map +1 -1
  150. package/dist/queue/grooming.js +2 -2
  151. package/dist/queue/grooming.js.map +1 -1
  152. package/dist/resend/inbox.d.ts.map +1 -1
  153. package/dist/resend/inbox.js +2 -1
  154. package/dist/resend/inbox.js.map +1 -1
  155. package/dist/search/brain-docs.js +1 -2
  156. package/dist/search/brain-docs.js.map +1 -1
  157. package/dist/server.d.ts +3 -1
  158. package/dist/server.d.ts.map +1 -1
  159. package/dist/server.js +221 -75
  160. package/dist/server.js.map +1 -1
  161. package/dist/services/backup.js +1 -1
  162. package/dist/services/backup.js.map +1 -1
  163. package/dist/services/morningBriefing.d.ts.map +1 -1
  164. package/dist/services/morningBriefing.js +46 -45
  165. package/dist/services/morningBriefing.js.map +1 -1
  166. package/dist/services/traceInsights.js +31 -31
  167. package/dist/services/traceInsights.js.map +1 -1
  168. package/dist/services/training.js +1 -1
  169. package/dist/services/training.js.map +1 -1
  170. package/dist/services/whatsapp.js +1 -1
  171. package/dist/services/whatsapp.js.map +1 -1
  172. package/dist/sessions/store.d.ts.map +1 -1
  173. package/dist/sessions/store.js +2 -1
  174. package/dist/sessions/store.js.map +1 -1
  175. package/dist/settings.d.ts.map +1 -1
  176. package/dist/settings.js +2 -1
  177. package/dist/settings.js.map +1 -1
  178. package/dist/tier/bond.d.ts +51 -0
  179. package/dist/tier/bond.d.ts.map +1 -0
  180. package/dist/tier/bond.js +154 -0
  181. package/dist/tier/bond.js.map +1 -0
  182. package/dist/tier/freeze.d.ts +21 -0
  183. package/dist/tier/freeze.d.ts.map +1 -0
  184. package/dist/tier/freeze.js +73 -0
  185. package/dist/tier/freeze.js.map +1 -0
  186. package/dist/tier/gate.d.ts +11 -0
  187. package/dist/tier/gate.d.ts.map +1 -0
  188. package/dist/tier/gate.js +25 -0
  189. package/dist/tier/gate.js.map +1 -0
  190. package/dist/tier/heartbeat.d.ts +22 -0
  191. package/dist/tier/heartbeat.d.ts.map +1 -0
  192. package/dist/tier/heartbeat.js +128 -0
  193. package/dist/tier/heartbeat.js.map +1 -0
  194. package/dist/tier/token.d.ts +22 -0
  195. package/dist/tier/token.d.ts.map +1 -0
  196. package/dist/tier/token.js +100 -0
  197. package/dist/tier/token.js.map +1 -0
  198. package/dist/tier/types.d.ts +44 -0
  199. package/dist/tier/types.d.ts.map +1 -0
  200. package/dist/tier/types.js +61 -0
  201. package/dist/tier/types.js.map +1 -0
  202. package/dist/vault/personal.d.ts.map +1 -1
  203. package/dist/vault/personal.js +2 -1
  204. package/dist/vault/personal.js.map +1 -1
  205. package/dist/vault/policy.js +2 -2
  206. package/dist/vault/policy.js.map +1 -1
  207. package/dist/vault/store.d.ts.map +1 -1
  208. package/dist/vault/store.js +2 -1
  209. package/dist/vault/store.js.map +1 -1
  210. package/dist/vault/transfer.d.ts.map +1 -1
  211. package/dist/vault/transfer.js +4 -3
  212. package/dist/vault/transfer.js.map +1 -1
  213. package/package.json +5 -2
  214. package/public/pulse.html +592 -0
@@ -12,13 +12,13 @@ import { logActivity } from "../activity/log.js";
12
12
  import { pushNotification } from "../goals/notifications.js";
13
13
  import { createLogger } from "../utils/logger.js";
14
14
  import { onGroomingComplete } from "../services/training.js";
15
- import { resolveEnv } from "../instance.js";
15
+ import { BRAIN_DIR } from "../lib/paths.js";
16
16
  const log = createLogger("queue");
17
17
  const DEFAULT_GROOM_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
18
18
  const COMPACT_THRESHOLD = 200;
19
19
  /** Max backlog items to promote per grooming cycle (prevents flood). */
20
20
  const MAX_PROMOTIONS_PER_CYCLE = 3;
21
- const GROOM_STATE_FILE = join(resolveEnv("BRAIN_DIR") ?? join(process.cwd(), "brain"), "operations", ".grooming-last-nudge");
21
+ const GROOM_STATE_FILE = join(BRAIN_DIR, "operations", ".grooming-last-nudge");
22
22
  let timer = null;
23
23
  let activeStore = null;
24
24
  // Dedup: only log/nudge when the set of findings changes
@@ -1 +1 @@
1
- {"version":3,"file":"grooming.js","sourceRoot":"","sources":["../../src/queue/grooming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grooming.js","sourceRoot":"","sources":["../../src/queue/grooming.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/resend/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+FH;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDtD;AAmED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB7D"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/resend/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgGH;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDtD;AAmED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB7D"}
@@ -14,6 +14,7 @@ import { join } from "node:path";
14
14
  import { logActivity } from "../activity/log.js";
15
15
  import { createLogger } from "../utils/logger.js";
16
16
  import { processInboundEmail, sendResendReply } from "./webhooks.js";
17
+ import { BRAIN_DIR } from "../lib/paths.js";
17
18
  const log = createLogger("resend.inbox");
18
19
  /** Minimum interval between inbox checks (ms). */
19
20
  const CHECK_DEBOUNCE_MS = 2 * 60 * 1000; // 2 minutes
@@ -28,7 +29,7 @@ async function loadAgentRegistry() {
28
29
  if (agentRegistryCache)
29
30
  return agentRegistryCache;
30
31
  try {
31
- const raw = await readFile(join(process.cwd(), "brain", "identity", "email-agents.json"), "utf-8");
32
+ const raw = await readFile(join(BRAIN_DIR, "identity", "email-agents.json"), "utf-8");
32
33
  agentRegistryCache = JSON.parse(raw);
33
34
  return agentRegistryCache;
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/resend/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/resend/inbox.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,7 @@
9
9
  import { readdir } from "node:fs/promises";
10
10
  import { join, basename } from "node:path";
11
11
  import { readBrainFile } from "../lib/brain-io.js";
12
- import { resolveEnv } from "../instance.js";
13
- const BRAIN_DIR = resolveEnv("BRAIN_DIR") ?? join(process.cwd(), "brain");
12
+ import { BRAIN_DIR } from "../lib/paths.js";
14
13
  /** Directories to scan for documents the user might reference by description. */
15
14
  const DOC_DIRS = [
16
15
  join(BRAIN_DIR, "content", "drafts"),
@@ -1 +1 @@
1
- {"version":3,"file":"brain-docs.js","sourceRoot":"","sources":["../../src/search/brain-docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain-docs.js","sourceRoot":"","sources":["../../src/search/brain-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,iFAAiF;AACjF,MAAM,QAAQ,GAAG;IACf,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;CAC1C,CAAC;AAEF,6EAA6E;AAC7E,MAAM,eAAe,GACnB,6KAA6K,CAAC;AAQhL;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;QAC1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;QAC3D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO;QACzD,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;KACtD,CAAC,CAAC;IACH,OAAO,OAAO;SACX,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAE,QAAkB;IACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;SACpC,WAAW,EAAE;SACb,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAe;IACrD,qDAAqD;IACrD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,+CAA+C;IAC/C,MAAM,UAAU,GAAwD,EAAE,CAAC;IAE3E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBACpC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACzC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,gDAAgD;IAChD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3B,2DAA2D;IAC3D,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/server.d.ts CHANGED
@@ -3,7 +3,9 @@
3
3
  * Hono app: serves static UI, handles pairing/auth, streams chat via Ollama (local) or OpenRouter (cloud).
4
4
  */
5
5
  export declare function getStartupToken(): string | null;
6
- declare function start(): Promise<void>;
6
+ declare function start(opts?: {
7
+ tier?: import("./tier/types.js").TierName;
8
+ }): Promise<void>;
7
9
  /** Returns the port the server is actually listening on (resolves port 0). */
8
10
  export declare function getActualPort(): number;
9
11
  export { start };
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuTH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AA62JD,iBAAe,KAAK,kBAkgBnB;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuTH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AA2gKD,iBAAe,KAAK,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,iBAAiB,EAAE,QAAQ,CAAA;CAAE,iBAghBxE;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
package/dist/server.js CHANGED
@@ -135,7 +135,7 @@ function pickStreamFn() {
135
135
  const PORT = parseInt(process.env.CORE_PORT ?? resolveEnv("PORT") ?? "0", 10);
136
136
  let actualPort = PORT;
137
137
  const SIDECAR_PORT = resolveEnv("SEARCH_PORT") ?? "3578";
138
- const BRAIN_DIR = join(process.cwd(), "brain");
138
+ import { BRAIN_DIR } from "./lib/paths.js";
139
139
  const SKILLS_DIR = join(process.cwd(), "skills");
140
140
  const MEMORY_DIR = join(BRAIN_DIR, "memory");
141
141
  const PERSONALITY_PATH = join(BRAIN_DIR, "identity", "personality.md");
@@ -406,6 +406,11 @@ app.use("/api/*", async (c, next) => {
406
406
  }
407
407
  return generalLimiter(c, next);
408
408
  });
409
+ // --- Posture middleware (intent accumulation + surface gating) ---
410
+ // Track all API interactions for posture engine
411
+ app.use("/api/*", postureTracker());
412
+ // Attach posture surface header to all responses
413
+ app.use("/api/*", postureHeader());
409
414
  // --- Webhook initialization (batch registration + config + admin routes) ---
410
415
  const webhookInitStart = performance.now();
411
416
  // Phase 1: Batch-register all webhook providers (deferred from module imports to avoid
@@ -474,7 +479,7 @@ app.post("/api/pair", async (c) => {
474
479
  // Save agent name to settings
475
480
  if (agentName) {
476
481
  try {
477
- const settingsPath = join(process.cwd(), "brain", "settings.json");
482
+ const settingsPath = join(BRAIN_DIR, "settings.json");
478
483
  const raw = await readFile(settingsPath, "utf-8");
479
484
  const settings = JSON.parse(raw);
480
485
  settings.agentName = agentName.trim();
@@ -2438,6 +2443,10 @@ function issuesToCardPayload(issues) {
2438
2443
  };
2439
2444
  });
2440
2445
  }
2446
+ // Board API — gated to board posture
2447
+ app.use("/api/board/*", requireSurface("pages"));
2448
+ app.use("/api/ops/*", requireSurface("pages"));
2449
+ app.use("/api/agents/*", requireSurface("agents"));
2441
2450
  // Board status: is a provider configured, and who is the user?
2442
2451
  app.get("/api/board/status", async (c) => {
2443
2452
  const board = getBoardProvider();
@@ -3213,7 +3222,7 @@ app.get("/api/help/context", async (c) => {
3213
3222
  const last20 = activities.slice(-20).reverse();
3214
3223
  let changelog = "";
3215
3224
  try {
3216
- changelog = await readBrainFile(join(process.cwd(), "brain", "operations", "changelog.md"));
3225
+ changelog = await readBrainFile(join(BRAIN_DIR, "operations", "changelog.md"));
3217
3226
  }
3218
3227
  catch {
3219
3228
  // changelog file missing — skip
@@ -3244,33 +3253,29 @@ app.get("/api/help/context", async (c) => {
3244
3253
  changelog,
3245
3254
  });
3246
3255
  });
3247
- // --- Ops dashboard routes (no auth — local-only diagnostics) ---
3248
- // Serve observatory.html
3249
- app.get("/observatory", async (c) => {
3256
+ // --- Ops dashboard routes (posture-gated: board level) ---
3257
+ // Board-level pages — only assembled when user has shown intent for full visibility
3258
+ app.get("/observatory", requireSurface("pages"), async (c) => {
3250
3259
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "observatory.html"));
3251
3260
  return c.html(html);
3252
3261
  });
3253
- // Serve ops.html
3254
- app.get("/ops", async (c) => {
3262
+ app.get("/ops", requireSurface("pages"), async (c) => {
3255
3263
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "ops.html"));
3256
3264
  return c.html(html);
3257
3265
  });
3258
- // Serve board.html (kanban view)
3259
- app.get("/board", async (c) => {
3266
+ app.get("/board", requireSurface("pages"), async (c) => {
3260
3267
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "board.html"));
3261
3268
  return c.html(html);
3262
3269
  });
3263
- // Serve library.html (file explorer)
3264
- app.get("/library", async (c) => {
3270
+ app.get("/library", requireSurface("pages"), async (c) => {
3265
3271
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "library.html"));
3266
3272
  return c.html(html);
3267
3273
  });
3268
- // Serve browser.html (agent's-eye view of web pages)
3269
- app.get("/browser", async (c) => {
3274
+ app.get("/browser", requireSurface("pages"), async (c) => {
3270
3275
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "browser.html"));
3271
3276
  return c.html(html);
3272
3277
  });
3273
- // Serve registry.html (service & capability dashboard)
3278
+ // Registry is always available it's the entry point
3274
3279
  app.get("/registry", async (c) => {
3275
3280
  const html = await serveHtmlTemplate(join(PKG_ROOT, "public", "registry.html"));
3276
3281
  return c.html(html);
@@ -3283,7 +3288,7 @@ app.get("/roadmap", async (c) => {
3283
3288
  // Roadmap API — parse brain/operations/roadmap.yaml and return as JSON
3284
3289
  app.get("/api/roadmap", async (c) => {
3285
3290
  try {
3286
- const raw = await readBrainFile(join(process.cwd(), "brain", "operations", "roadmap.yaml"));
3291
+ const raw = await readBrainFile(join(BRAIN_DIR, "operations", "roadmap.yaml"));
3287
3292
  const parsed = parseRoadmapYaml(raw);
3288
3293
  return c.json(parsed);
3289
3294
  }
@@ -3385,28 +3390,28 @@ app.post("/api/share", async (c) => {
3385
3390
  }
3386
3391
  const { randomBytes } = await import("node:crypto");
3387
3392
  const shareId = `share_${Date.now()}_${randomBytes(4).toString("hex")}`;
3388
- const emailHtml = `
3389
- <div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 560px; margin: 0 auto; padding: 32px 24px; color: #e4e4e7; background: #0e0e10;">
3390
- <h1 style="font-size: 20px; font-weight: 600; margin: 0 0 16px;">You've been invited to try Core</h1>
3391
- <p style="color: #8b8b94; font-size: 14px; line-height: 1.6; margin: 0 0 20px;">
3392
- Core is a file-based personal operating system for an AI agent — your own local brain that learns, remembers, and works for you.
3393
- </p>
3394
- ${note ? `<div style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; margin: 0 0 20px; font-size: 13px; color: #e4e4e7;"><strong>Note from sender:</strong> ${note.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ""}
3395
- <h2 style="font-size: 14px; font-weight: 600; margin: 0 0 10px;">Install</h2>
3396
- <pre style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; font-size: 13px; color: #a78bfa; overflow-x: auto; margin: 0 0 20px;">
3397
- # Clone the repo
3398
- git clone https://github.com/yourusername/core.git
3399
- cd core && npm install && npm run build
3400
- npm run chat</pre>
3401
- <h2 style="font-size: 14px; font-weight: 600; margin: 0 0 10px;">Your Connection Key</h2>
3402
- <p style="color: #8b8b94; font-size: 13px; line-height: 1.5; margin: 0 0 8px;">
3403
- Paste this key during first-run setup to connect with the person who invited you:
3404
- </p>
3405
- <pre style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; font-size: 14px; color: #22c55e; letter-spacing: 0.5px; margin: 0 0 20px;">${shareId}</pre>
3406
- <p style="color: #8b8b94; font-size: 12px; margin: 0;">
3407
- This creates a connection record — it does <strong>not</strong> enable mesh/hive-mind until you explicitly approve it in network settings.
3408
- </p>
3409
- </div>
3393
+ const emailHtml = `
3394
+ <div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 560px; margin: 0 auto; padding: 32px 24px; color: #e4e4e7; background: #0e0e10;">
3395
+ <h1 style="font-size: 20px; font-weight: 600; margin: 0 0 16px;">You've been invited to try Core</h1>
3396
+ <p style="color: #8b8b94; font-size: 14px; line-height: 1.6; margin: 0 0 20px;">
3397
+ Core is a file-based personal operating system for an AI agent — your own local brain that learns, remembers, and works for you.
3398
+ </p>
3399
+ ${note ? `<div style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; margin: 0 0 20px; font-size: 13px; color: #e4e4e7;"><strong>Note from sender:</strong> ${note.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ""}
3400
+ <h2 style="font-size: 14px; font-weight: 600; margin: 0 0 10px;">Install</h2>
3401
+ <pre style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; font-size: 13px; color: #a78bfa; overflow-x: auto; margin: 0 0 20px;">
3402
+ # Clone the repo
3403
+ git clone https://github.com/yourusername/core.git
3404
+ cd core && npm install && npm run build
3405
+ npm run chat</pre>
3406
+ <h2 style="font-size: 14px; font-weight: 600; margin: 0 0 10px;">Your Connection Key</h2>
3407
+ <p style="color: #8b8b94; font-size: 13px; line-height: 1.5; margin: 0 0 8px;">
3408
+ Paste this key during first-run setup to connect with the person who invited you:
3409
+ </p>
3410
+ <pre style="background: #18181b; border: 1px solid #2e2e33; border-radius: 8px; padding: 14px 16px; font-size: 14px; color: #22c55e; letter-spacing: 0.5px; margin: 0 0 20px;">${shareId}</pre>
3411
+ <p style="color: #8b8b94; font-size: 12px; margin: 0;">
3412
+ This creates a connection record — it does <strong>not</strong> enable mesh/hive-mind until you explicitly approve it in network settings.
3413
+ </p>
3414
+ </div>
3410
3415
  `.trim();
3411
3416
  try {
3412
3417
  const res = await fetch("https://api.resend.com/emails", {
@@ -3435,7 +3440,7 @@ npm run chat</pre>
3435
3440
  sharedAt: new Date().toISOString(),
3436
3441
  status: "sent",
3437
3442
  };
3438
- const sharesPath = join(process.cwd(), "brain", "ops", "shares.jsonl");
3443
+ const sharesPath = join(BRAIN_DIR, "ops", "shares.jsonl");
3439
3444
  await appendBrainLine(sharesPath, JSON.stringify(record));
3440
3445
  log.info("Share invite sent", { email, shareId });
3441
3446
  return c.json({ ok: true, shareId });
@@ -3689,6 +3694,30 @@ app.delete("/api/ops/projects/:id", async (c) => {
3689
3694
  return c.json({ error: "Project not found" }, 404);
3690
3695
  return c.json({ ok: true });
3691
3696
  });
3697
+ // --- Posture API (UI surface assembly) ---
3698
+ app.get("/api/posture", (c) => {
3699
+ return c.json({
3700
+ posture: getPosture(),
3701
+ surface: getSurface(),
3702
+ state: getPostureState(),
3703
+ });
3704
+ });
3705
+ app.put("/api/posture", async (c) => {
3706
+ const body = await c.req.json();
3707
+ if (body.posture && ["silent", "pulse", "board"].includes(body.posture)) {
3708
+ if (body.pinned !== false) {
3709
+ pinPosture(body.posture);
3710
+ }
3711
+ else {
3712
+ pinPosture(body.posture);
3713
+ unpinPosture();
3714
+ }
3715
+ }
3716
+ else if (body.pinned === false) {
3717
+ unpinPosture();
3718
+ }
3719
+ return c.json({ posture: getPosture(), surface: getSurface(), state: getPostureState() });
3720
+ });
3692
3721
  // --- Pulse (nervous system) endpoint ---
3693
3722
  app.get("/api/pulse/status", (c) => {
3694
3723
  const integrator = getPressureIntegrator();
@@ -3707,6 +3736,8 @@ app.get("/api/pulse/history", (c) => {
3707
3736
  // --- Nerve API (three-dot goo) ---
3708
3737
  import { getNerveState } from "./nerve/state.js";
3709
3738
  import { initPush, getVapidPublicKey, addSubscription, checkAndNotify, startPushMonitor, stopPushMonitor } from "./nerve/push.js";
3739
+ import { loadPosture, startDecayTimer, getPosture, getPostureState, getSurface, pinPosture, unpinPosture, } from "./posture/engine.js";
3740
+ import { postureTracker, requireSurface, postureHeader } from "./posture/middleware.js";
3710
3741
  // State endpoint — three dots
3711
3742
  app.get("/api/nerve/state", async (c) => {
3712
3743
  const state = await getNerveState();
@@ -4368,7 +4399,7 @@ app.post("/api/chat", async (c) => {
4368
4399
  const changelogKeywords = /\b(what'?s new|changelog|recent changes|what changed|updates?|release notes|new features?|capabilities)\b/i;
4369
4400
  if (changelogKeywords.test(chatMessage)) {
4370
4401
  try {
4371
- const changelogPath = join(process.cwd(), "brain", "operations", "changelog.md");
4402
+ const changelogPath = join(BRAIN_DIR, "operations", "changelog.md");
4372
4403
  const changelogContent = await readBrainFile(changelogPath);
4373
4404
  const changelogMsg = {
4374
4405
  role: "system",
@@ -4781,8 +4812,111 @@ app.post("/api/chat", async (c) => {
4781
4812
  });
4782
4813
  });
4783
4814
  });
4815
+ // --- Freeze endpoint (operator clicks freeze link) ---
4816
+ app.post("/api/freeze", async (c) => {
4817
+ const body = await c.req.json().catch(() => null);
4818
+ if (!body?.signal)
4819
+ return c.json({ error: "Missing freeze signal" }, 400);
4820
+ const { freeze, isFrozen } = await import("./tier/freeze.js");
4821
+ if (isFrozen())
4822
+ return c.json({ error: "Already frozen" }, 409);
4823
+ await freeze(body.signal, process.cwd());
4824
+ return c.json({ status: "frozen", message: "All agents dormant." });
4825
+ });
4826
+ app.post("/api/thaw", async (c) => {
4827
+ const { thaw } = await import("./tier/freeze.js");
4828
+ await thaw(process.cwd());
4829
+ return c.json({ status: "thawed", message: "Operations resuming." });
4830
+ });
4831
+ app.get("/api/freeze/status", async (c) => {
4832
+ const { isFrozen, getFreezeSignal } = await import("./tier/freeze.js");
4833
+ return c.json({ frozen: isFrozen(), signal: getFreezeSignal() });
4834
+ });
4835
+ // --- Brain import API ---
4836
+ app.post("/api/import/folder", async (c) => {
4837
+ const body = await c.req.json();
4838
+ if (!body.paths || !Array.isArray(body.paths) || body.paths.length === 0) {
4839
+ return c.json({ error: "paths[] required" }, 400);
4840
+ }
4841
+ const { resolve } = await import("node:path");
4842
+ const { importToBrain } = await import("./files/import.js");
4843
+ const result = await importToBrain({
4844
+ sources: body.paths.map(p => resolve(p)),
4845
+ brainRoot: process.cwd(),
4846
+ dryRun: body.dryRun ?? false,
4847
+ });
4848
+ // After import: fast pass → deep pass (both background, chained)
4849
+ if (!body.dryRun && result.imported > 0) {
4850
+ import("./files/index-local.js").then(({ indexImportedFiles }) => {
4851
+ indexImportedFiles({ localOnly: true })
4852
+ .then(() => import("./files/deep-index.js"))
4853
+ .then(({ runDeepIndex }) => runDeepIndex())
4854
+ .catch(() => { });
4855
+ });
4856
+ }
4857
+ return c.json(result);
4858
+ });
4859
+ app.post("/api/import/index", async (c) => {
4860
+ const { indexImportedFiles } = await import("./files/index-local.js");
4861
+ const result = await indexImportedFiles({ localOnly: true });
4862
+ // After fast pass, kick off deep index in background
4863
+ import("./files/deep-index.js").then(({ runDeepIndex }) => {
4864
+ runDeepIndex().catch(() => { });
4865
+ });
4866
+ return c.json(result);
4867
+ });
4868
+ app.post("/api/import/deep-index", async (c) => {
4869
+ const { runDeepIndex } = await import("./files/deep-index.js");
4870
+ const result = await runDeepIndex();
4871
+ return c.json(result);
4872
+ });
4873
+ app.get("/api/import/deep-index/progress", async (c) => {
4874
+ const { getDeepIndexProgress } = await import("./files/deep-index.js");
4875
+ return c.json(getDeepIndexProgress());
4876
+ });
4877
+ app.get("/api/import/deep-index/results", async (c) => {
4878
+ const { readFile: rf } = await import("node:fs/promises");
4879
+ const { join: jp } = await import("node:path");
4880
+ try {
4881
+ const raw = await rf(jp(BRAIN_DIR, ".core", "deep-index.json"), "utf-8");
4882
+ return c.json(JSON.parse(raw));
4883
+ }
4884
+ catch {
4885
+ return c.json({ entities: [], themes: [], crossRefs: [], flags: [], deepIndexed: [] });
4886
+ }
4887
+ });
4888
+ app.post("/api/import/files", async (c) => {
4889
+ const formData = await c.req.formData();
4890
+ const files = formData.getAll("files");
4891
+ if (files.length === 0)
4892
+ return c.json({ error: "No files provided" }, 400);
4893
+ const { mkdir: mkdirFs, writeFile: writeFs } = await import("node:fs/promises");
4894
+ const { join: joinPath } = await import("node:path");
4895
+ const ingestDir = joinPath(process.cwd(), "ingest");
4896
+ await mkdirFs(ingestDir, { recursive: true });
4897
+ const saved = [];
4898
+ for (const file of files) {
4899
+ if (!file.name)
4900
+ continue;
4901
+ const buffer = Buffer.from(await file.arrayBuffer());
4902
+ const dest = joinPath(ingestDir, file.name);
4903
+ await writeFs(dest, buffer);
4904
+ saved.push(file.name);
4905
+ }
4906
+ // Process the ingest folder immediately
4907
+ const { processIngestFolder } = await import("./files/ingest-folder.js");
4908
+ const ingestedDir = joinPath(process.cwd(), "ingested");
4909
+ const result = await processIngestFolder(ingestDir, ingestedDir);
4910
+ return c.json({
4911
+ saved: saved.length,
4912
+ files: saved,
4913
+ ingested: result.newFiles,
4914
+ });
4915
+ });
4784
4916
  // --- Startup ---
4785
- async function start() {
4917
+ async function start(opts) {
4918
+ const tier = opts?.tier ?? "byok";
4919
+ const tierGate = await import("./tier/gate.js");
4786
4920
  // Initialize instance name before anything else
4787
4921
  initInstanceName();
4788
4922
  // Initialize OpenTelemetry tracing (must be early, before instrumented code)
@@ -4793,6 +4927,9 @@ async function start() {
4793
4927
  });
4794
4928
  // Load settings (airplane mode, model selection)
4795
4929
  const settings = await loadSettings();
4930
+ // Initialize posture system (UI surface assembly)
4931
+ await loadPosture();
4932
+ startDecayTimer();
4796
4933
  // Install fetch guard before any routes or outbound calls
4797
4934
  installFetchGuard();
4798
4935
  // Initialize PrivacyMembrane for reversible redaction
@@ -4963,17 +5100,24 @@ async function start() {
4963
5100
  logActivity({ source: "agent", summary: `Continuation error: ${msg}` });
4964
5101
  }
4965
5102
  });
4966
- // Initialize instance manager (GC, health checks, load balancing)
4967
- instanceManager = new AgentInstanceManager(runtime);
4968
- await instanceManager.init();
4969
- // Initialize agent pool (circuit breakers, isolation, resource management)
4970
- agentPool = AgentPool.fromExisting(runtime, instanceManager);
4971
- setAgentPool(agentPool);
4972
- // Initialize workflow engine for multi-agent coordination
4973
- workflowEngine = new WorkflowEngine(agentPool);
4974
- await workflowEngine.loadAllDefinitions().catch((err) => {
4975
- log.warn("Failed to load workflow definitions", { error: err instanceof Error ? err.message : String(err) });
4976
- });
5103
+ // Initialize agent spawning tier >= spawn only
5104
+ if (tierGate.canSpawn(tier)) {
5105
+ // Initialize instance manager (GC, health checks, load balancing)
5106
+ instanceManager = new AgentInstanceManager(runtime);
5107
+ await instanceManager.init();
5108
+ // Initialize agent pool (circuit breakers, isolation, resource management)
5109
+ agentPool = AgentPool.fromExisting(runtime, instanceManager);
5110
+ setAgentPool(agentPool);
5111
+ // Initialize workflow engine for multi-agent coordination
5112
+ workflowEngine = new WorkflowEngine(agentPool);
5113
+ await workflowEngine.loadAllDefinitions().catch((err) => {
5114
+ log.warn("Failed to load workflow definitions", { error: err instanceof Error ? err.message : String(err) });
5115
+ });
5116
+ log.info(`Agent spawning enabled (tier: ${tier})`);
5117
+ }
5118
+ else {
5119
+ log.info(`Agent spawning disabled (tier: ${tier} — requires spawn tier)`);
5120
+ }
4977
5121
  // --- Register component health checks (after all systems initialized) ---
4978
5122
  // Queue store: can we read the JSONL file?
4979
5123
  health.register("queue", queueStoreCheck(() => queueProvider.getStore()), { critical: false });
@@ -4997,25 +5141,27 @@ async function start() {
4997
5141
  recovery.start();
4998
5142
  // Start alert evaluation loop (evaluates every 30s)
4999
5143
  alertManager.start();
5000
- // Wire notification channels — email (Resend) and phone (Twilio voice)
5001
- const resendKey = process.env.RESEND_API_KEY;
5002
- if (resendKey) {
5003
- alertDispatcher.add(new EmailChannel({
5004
- endpoint: "https://api.resend.com/emails",
5005
- apiKey: resendKey,
5006
- from: `${getInstanceName()} <${getAlertEmailFrom()}>`,
5007
- to: [resolveEnv("ALERT_EMAIL_TO") ?? ""].filter(Boolean),
5008
- }));
5009
- log.info("Alert channel: email (Resend)");
5010
- }
5011
- if (process.env.TWILIO_ACCOUNT_SID) {
5012
- alertDispatcher.add(new PhoneChannel());
5013
- log.info("Alert channel: phone (Twilio voice)");
5014
- }
5015
- alertManager.updateNotifications([
5016
- { channel: "email", minSeverity: "warning" },
5017
- { channel: "phone", minSeverity: "critical" },
5018
- ]);
5144
+ // Wire notification channels — tier >= byok only (requires BYOK API keys)
5145
+ if (tierGate.canAlert(tier)) {
5146
+ const resendKey = process.env.RESEND_API_KEY;
5147
+ if (resendKey) {
5148
+ alertDispatcher.add(new EmailChannel({
5149
+ endpoint: "https://api.resend.com/emails",
5150
+ apiKey: resendKey,
5151
+ from: `${getInstanceName()} <${getAlertEmailFrom()}>`,
5152
+ to: [resolveEnv("ALERT_EMAIL_TO") ?? ""].filter(Boolean),
5153
+ }));
5154
+ log.info("Alert channel: email (Resend)");
5155
+ }
5156
+ if (process.env.TWILIO_ACCOUNT_SID) {
5157
+ alertDispatcher.add(new PhoneChannel());
5158
+ log.info("Alert channel: phone (Twilio voice)");
5159
+ }
5160
+ alertManager.updateNotifications([
5161
+ { channel: "email", minSeverity: "warning" },
5162
+ { channel: "phone", minSeverity: "critical" },
5163
+ ]);
5164
+ }
5019
5165
  // Start credit monitoring (checks every 5 min, configurable via CORE_CREDIT_CHECK_INTERVAL_MS)
5020
5166
  startCreditMonitor(health, alertManager);
5021
5167
  // Avatar sidecar launches in background — slow (model loading) but non-blocking
@@ -5238,8 +5384,8 @@ async function start() {
5238
5384
  });
5239
5385
  }
5240
5386
  catch { /* ok */ }
5241
- // Announce on LAN if mesh.lanAnnounce is enabled
5242
- if (getMeshConfig().lanAnnounce) {
5387
+ // Announce on LAN if mesh.lanAnnounce is enabled AND tier >= byok
5388
+ if (tierGate.canMesh(tier) && getMeshConfig().lanAnnounce) {
5243
5389
  try {
5244
5390
  startMdns(actualPort);
5245
5391
  }
@@ -5397,7 +5543,7 @@ process.on("SIGTERM", () => { gracefulShutdown("SIGTERM"); });
5397
5543
  process.on("uncaughtException", (err) => {
5398
5544
  const msg = `[${new Date().toISOString()}] UNCAUGHT: ${err.stack ?? err.message}\n`;
5399
5545
  try {
5400
- writeFileSync(join(process.cwd(), "brain", "ops", "crash.log"), msg, { flag: "a" });
5546
+ writeFileSync(join(BRAIN_DIR, "ops", "crash.log"), msg, { flag: "a" });
5401
5547
  }
5402
5548
  catch { }
5403
5549
  // EPIPE = broken pipe from stdout/stderr (e.g. tsx watch restart).
@@ -5412,7 +5558,7 @@ process.on("unhandledRejection", (reason) => {
5412
5558
  const err = reason instanceof Error ? reason : new Error(String(reason));
5413
5559
  const msg = `[${new Date().toISOString()}] UNHANDLED_REJECTION: ${err.stack ?? err.message}\n`;
5414
5560
  try {
5415
- writeFileSync(join(process.cwd(), "brain", "ops", "crash.log"), msg, { flag: "a" });
5561
+ writeFileSync(join(BRAIN_DIR, "ops", "crash.log"), msg, { flag: "a" });
5416
5562
  }
5417
5563
  catch { }
5418
5564
  log.error("Unhandled rejection", { error: err.message, stack: err.stack });