@askexenow/exe-os 0.9.236 → 0.9.238

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 (235) hide show
  1. package/deploy/stack-manifests/v0.9.json +53 -1
  2. package/dist/{active-agent-JD6BCCFZ.js → active-agent-6WX7GZBH.js} +3 -3
  3. package/dist/{active-agent-RCXBLWQS.js → active-agent-X3GALNAR.js} +3 -3
  4. package/dist/{agentic-ontology-PAYLA3Q6.js → agentic-ontology-NBU3FHEX.js} +1 -1
  5. package/dist/{backfill-metadata-63Y4JVSZ.js → backfill-metadata-NG2L5GUP.js} +4 -4
  6. package/dist/behavior-effectiveness-UP76GMOC.js +344 -0
  7. package/dist/{behaviors-I7JQLV6G.js → behaviors-DH7XFONJ.js} +3 -3
  8. package/dist/bin/agentic-ontology-backfill.js +5 -5
  9. package/dist/bin/agentic-reflection-backfill.js +6 -6
  10. package/dist/bin/agentic-semantic-label.js +5 -5
  11. package/dist/bin/backfill-conversations.js +4 -4
  12. package/dist/bin/backfill-responses.js +4 -4
  13. package/dist/bin/backfill-vectors.js +5 -5
  14. package/dist/bin/bulk-sync-postgres.js +6 -6
  15. package/dist/bin/cleanup-stale-review-tasks.js +9 -9
  16. package/dist/bin/cli.js +14 -14
  17. package/dist/bin/exe-agent-config.js +2 -2
  18. package/dist/bin/exe-agent.js +9 -9
  19. package/dist/bin/exe-assign.js +5 -5
  20. package/dist/bin/exe-boot.js +17 -17
  21. package/dist/bin/exe-call.js +5 -5
  22. package/dist/bin/exe-cloud.js +4 -4
  23. package/dist/bin/exe-dispatch.js +9 -9
  24. package/dist/bin/exe-doctor.js +1 -1
  25. package/dist/bin/exe-export-behaviors.js +7 -7
  26. package/dist/bin/exe-forget.js +6 -6
  27. package/dist/bin/exe-gateway.js +7 -7
  28. package/dist/bin/exe-heartbeat.js +9 -9
  29. package/dist/bin/exe-kill.js +12 -12
  30. package/dist/bin/exe-launch-agent.js +17 -17
  31. package/dist/bin/exe-new-employee.js +7 -7
  32. package/dist/bin/exe-pending-messages.js +10 -10
  33. package/dist/bin/exe-pending-notifications.js +9 -9
  34. package/dist/bin/exe-pending-reviews.js +9 -9
  35. package/dist/bin/exe-rename.js +5 -5
  36. package/dist/bin/exe-review.js +11 -11
  37. package/dist/bin/exe-search.js +5 -5
  38. package/dist/bin/exe-session-cleanup.js +14 -14
  39. package/dist/bin/exe-settings.js +4 -4
  40. package/dist/bin/exe-start-codex.js +11 -11
  41. package/dist/bin/exe-start-opencode.js +8 -8
  42. package/dist/bin/exe-status.js +10 -10
  43. package/dist/bin/exe-team.js +3 -3
  44. package/dist/bin/git-sweep.js +9 -9
  45. package/dist/bin/graph-backfill.js +4 -4
  46. package/dist/bin/graph-export.js +5 -5
  47. package/dist/bin/import-history.js +7 -7
  48. package/dist/bin/install.js +6 -6
  49. package/dist/bin/intercom-check.js +4 -4
  50. package/dist/bin/mcp-sessions.js +2 -2
  51. package/dist/bin/orchestration-metrics.js +4 -4
  52. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  53. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  54. package/dist/bin/pre-publish.js +1 -1
  55. package/dist/bin/scan-tasks.js +9 -9
  56. package/dist/bin/setup.js +1 -1
  57. package/dist/bin/shard-migrate.js +4 -4
  58. package/dist/{capacity-monitor-NVSZABQG.js → capacity-monitor-KAKNWAA4.js} +10 -10
  59. package/dist/{catchup-brief-L76MGN2J.js → catchup-brief-ZB2OR45O.js} +11 -11
  60. package/dist/{chunk-VTLUUTWI.js → chunk-2LYJTK47.js} +40 -1
  61. package/dist/{chunk-MJMJMHFC.js → chunk-2O5GJFYQ.js} +1 -1
  62. package/dist/{chunk-N5VQ3PVS.js → chunk-2VXHPSIJ.js} +1 -1
  63. package/dist/{chunk-Q25V2UO6.js → chunk-3JVO6X4W.js} +1 -1
  64. package/dist/{chunk-Y2PQS2GI.js → chunk-3NYRIK73.js} +2 -2
  65. package/dist/{chunk-QK7R2CUS.js → chunk-4HMKJDPB.js} +3 -3
  66. package/dist/{chunk-5NIUTWV4.js → chunk-5KDROSDV.js} +1 -1
  67. package/dist/{chunk-24KEYEYL.js → chunk-7LIXU3TB.js} +8 -8
  68. package/dist/{chunk-NEXKWAVU.js → chunk-7PVUUC3O.js} +5 -5
  69. package/dist/{chunk-X4AZWJP4.js → chunk-AYBC6AYP.js} +8 -8
  70. package/dist/{chunk-YVN2WG5T.js → chunk-BTPXNV5W.js} +1 -1
  71. package/dist/{chunk-5SYO2FD7.js → chunk-C7BVANSU.js} +65 -12
  72. package/dist/{chunk-Z7A6DTIN.js → chunk-CJEVAKKC.js} +2 -2
  73. package/dist/{chunk-J2QQMTCD.js → chunk-COMWI7SO.js} +1 -1
  74. package/dist/{chunk-PBA32J2M.js → chunk-ENWFSMOS.js} +10 -10
  75. package/dist/{chunk-ENGXTDTJ.js → chunk-EPLBVWIM.js} +479 -149
  76. package/dist/{chunk-CKTFH5RQ.js → chunk-ES5JM6V2.js} +2 -2
  77. package/dist/{chunk-NOQSYYVA.js → chunk-FQJWTRCB.js} +1 -1
  78. package/dist/{chunk-XORJOW4J.js → chunk-G67R75DG.js} +1 -1
  79. package/dist/{chunk-SUQSNH4N.js → chunk-GXU3XRI5.js} +3 -3
  80. package/dist/{chunk-CHFBYRJX.js → chunk-HFYCKIVJ.js} +2 -2
  81. package/dist/{chunk-LX7AMJIX.js → chunk-HUVSY6NF.js} +2 -2
  82. package/dist/{chunk-CNCTKOX2.js → chunk-IDCJNL7C.js} +1 -1
  83. package/dist/{chunk-ZOPLM7G3.js → chunk-IQNT6KAE.js} +1 -1
  84. package/dist/{chunk-XPRYBSMJ.js → chunk-JBMZS5WO.js} +1 -1
  85. package/dist/{chunk-BWHBPDYB.js → chunk-JBUHOWIV.js} +1 -1
  86. package/dist/{chunk-2QRT6G4V.js → chunk-JHFXCYZP.js} +1 -1
  87. package/dist/{chunk-6XOAK64X.js → chunk-JLHSEBNQ.js} +3 -3
  88. package/dist/{chunk-5NFBE376.js → chunk-K77WC6HA.js} +12 -0
  89. package/dist/{chunk-LWQ3PFSR.js → chunk-KRLR26L2.js} +2 -2
  90. package/dist/{chunk-ZAS43I3E.js → chunk-LUCHTCME.js} +1 -1
  91. package/dist/{chunk-VXVI75ED.js → chunk-LXP6VRFH.js} +1 -1
  92. package/dist/{chunk-OMHTKVHC.js → chunk-MPG2FFQS.js} +1 -1
  93. package/dist/{chunk-43AN2SYJ.js → chunk-N4IJWOIS.js} +2 -2
  94. package/dist/{chunk-2EBKU2XN.js → chunk-NBV23TC4.js} +157 -8
  95. package/dist/{chunk-PJPPO6EF.js → chunk-NCJNGQUZ.js} +1 -1
  96. package/dist/{chunk-2UD2P2LO.js → chunk-NJS4GRIR.js} +1 -1
  97. package/dist/{chunk-L3GKFCXW.js → chunk-NQU2RTCP.js} +8 -8
  98. package/dist/{chunk-J2LPDECR.js → chunk-NS7FW3NG.js} +2 -2
  99. package/dist/{chunk-SL7SYDNI.js → chunk-PQBANSH6.js} +2 -2
  100. package/dist/{chunk-M4ERGSIO.js → chunk-Q4MZN62R.js} +3 -3
  101. package/dist/{chunk-MDE2ZNWZ.js → chunk-QQFZID36.js} +1 -1
  102. package/dist/{chunk-Q4GHOMRW.js → chunk-RM6PJ34R.js} +1 -1
  103. package/dist/{chunk-Z2EJ234K.js → chunk-RXGTA6YQ.js} +3 -3
  104. package/dist/{chunk-DEAYJXHL.js → chunk-T3ASODFG.js} +3 -3
  105. package/dist/{chunk-H3UGSTZH.js → chunk-U3XMIHPD.js} +9 -9
  106. package/dist/{chunk-DGZJXYK7.js → chunk-UISUGXJU.js} +1 -1
  107. package/dist/{chunk-4DIB3GXJ.js → chunk-VEU6LVBR.js} +1 -1
  108. package/dist/{chunk-ZPZFR3EN.js → chunk-VK5IBXXT.js} +5 -5
  109. package/dist/{chunk-WJH6IM7Q.js → chunk-WQCSGDRG.js} +1 -1
  110. package/dist/{chunk-CFG73TVV.js → chunk-WQXJIMBO.js} +2 -2
  111. package/dist/{chunk-NFHSUQ2R.js → chunk-XCGJPZ6H.js} +2 -2
  112. package/dist/{chunk-JH7CK57B.js → chunk-YDG343II.js} +4 -3
  113. package/dist/{chunk-L6LDDOYW.js → chunk-YENDNLAD.js} +1 -1
  114. package/dist/{chunk-QUTBXURR.js → chunk-YUQ7GGAL.js} +4 -3
  115. package/dist/{chunk-26JSRH2T.js → chunk-YUS7IS3I.js} +8 -8
  116. package/dist/{chunk-4TKI4VW7.js → chunk-ZZBOV6WA.js} +4 -4
  117. package/dist/{co-activation-XS7CDNIK.js → co-activation-OCQPRJ2I.js} +2 -2
  118. package/dist/{co-occurrence-R5D6WB4A.js → co-occurrence-S62AC2BR.js} +2 -2
  119. package/dist/{crdt-sync-NEINCZF7.js → crdt-sync-VS254UOH.js} +1 -1
  120. package/dist/{crm-webhook-C2LSU33R.js → crm-webhook-CST5WBNY.js} +2 -2
  121. package/dist/{cto-delegation-gate-4DLESYKG.js → cto-delegation-gate-2PY563OA.js} +8 -8
  122. package/dist/{daemon-orchestration-IW3MD56I.js → daemon-orchestration-P34RDHTM.js} +11 -11
  123. package/dist/{db-backup-C44Q44WQ.js → db-backup-JEHRFLYW.js} +1 -1
  124. package/dist/dreaming-UF4LPNLV.js +31 -0
  125. package/dist/{exe-drift-B5ZMICND.js → exe-drift-DOWP33NY.js} +3 -3
  126. package/dist/{exe-export-WPJD5XA3.js → exe-export-QCB5UOXQ.js} +6 -6
  127. package/dist/{exe-import-AIGIF253.js → exe-import-JHFIXRB5.js} +6 -6
  128. package/dist/{exe-key-2C23CONG.js → exe-key-ZVKBTZVI.js} +2 -2
  129. package/dist/{exe-snapshot-2NZ6BL7S.js → exe-snapshot-LBM3LL3I.js} +24 -6
  130. package/dist/{fast-db-init-O6Y4G47U.js → fast-db-init-PTUUO2IO.js} +1 -1
  131. package/dist/gateway/index.js +8 -8
  132. package/dist/{git-staleness-DFHISHY2.js → git-staleness-5SFBUMPC.js} +2 -2
  133. package/dist/{git-task-sweep-6P4YPAIY.js → git-task-sweep-XMK5IQXK.js} +9 -9
  134. package/dist/{global-procedures-45Z53UIF.js → global-procedures-W4U257TI.js} +4 -4
  135. package/dist/{graph-auto-extract-I37N7WQN.js → graph-auto-extract-5ZD4AUSB.js} +2 -2
  136. package/dist/hooks/bug-report-worker.js +10 -10
  137. package/dist/hooks/codex-stop-task-finalizer.js +10 -10
  138. package/dist/hooks/commit-complete.js +11 -11
  139. package/dist/hooks/error-recall.js +6 -6
  140. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  141. package/dist/hooks/ingest.js +6 -6
  142. package/dist/hooks/instructions-loaded.js +4 -4
  143. package/dist/hooks/manifest.json +19 -19
  144. package/dist/hooks/notification.js +4 -4
  145. package/dist/hooks/post-compact.js +10 -10
  146. package/dist/hooks/post-tool-combined.js +21 -4
  147. package/dist/hooks/pre-compact.js +11 -11
  148. package/dist/hooks/pre-tool-use.js +14 -14
  149. package/dist/hooks/prompt-submit.js +20 -20
  150. package/dist/hooks/session-end.js +28 -15
  151. package/dist/hooks/session-start.js +10 -10
  152. package/dist/hooks/stop.js +14 -14
  153. package/dist/hooks/subagent-stop.js +10 -10
  154. package/dist/hooks/summary-worker.js +14 -14
  155. package/dist/index.js +18 -18
  156. package/dist/{installer-SCPRAYJN.js → installer-2HULECDJ.js} +5 -5
  157. package/dist/{installer-OSIEPXXH.js → installer-BCOJG2SE.js} +5 -5
  158. package/dist/{installer-3MSU3GSG.js → installer-N5XZAFE4.js} +5 -5
  159. package/dist/investigation-tracker-WSCY4XBP.js +410 -0
  160. package/dist/lib/cloud-sync.js +6 -4
  161. package/dist/lib/consolidation.js +5 -5
  162. package/dist/lib/database.js +2 -2
  163. package/dist/lib/db.js +2 -2
  164. package/dist/lib/employee-templates.js +5 -5
  165. package/dist/lib/employees.js +2 -2
  166. package/dist/lib/exe-daemon.js +343 -68
  167. package/dist/lib/hybrid-search.js +5 -5
  168. package/dist/lib/identity.js +2 -2
  169. package/dist/lib/messaging.js +9 -9
  170. package/dist/lib/reminders.js +3 -3
  171. package/dist/lib/schedules.js +5 -5
  172. package/dist/lib/session-registry.js +4 -4
  173. package/dist/lib/skill-learning.js +4 -4
  174. package/dist/lib/store.js +4 -4
  175. package/dist/lib/task-router.js +3 -3
  176. package/dist/lib/tasks.js +9 -9
  177. package/dist/lib/tmux-routing.js +8 -8
  178. package/dist/lib/token-spend.js +3 -3
  179. package/dist/mcp/register-tools.js +52 -52
  180. package/dist/mcp/server.js +53 -53
  181. package/dist/mcp/tools/complete-reminder.js +4 -4
  182. package/dist/mcp/tools/create-reminder.js +4 -4
  183. package/dist/mcp/tools/create-task.js +11 -11
  184. package/dist/mcp/tools/deactivate-behavior.js +5 -5
  185. package/dist/mcp/tools/list-reminders.js +4 -4
  186. package/dist/mcp/tools/list-tasks.js +11 -11
  187. package/dist/mcp/tools/send-message.js +11 -11
  188. package/dist/mcp/tools/update-task.js +10 -10
  189. package/dist/{mcp-http-config-KBPJ4QNG.js → mcp-http-config-RTXPLRH5.js} +3 -3
  190. package/dist/{memory-cards-ICBAONHA.js → memory-cards-3FBGRV6J.js} +2 -2
  191. package/dist/{memory-graph-extractor-B33AXVOW.js → memory-graph-extractor-5D3FU5N5.js} +3 -3
  192. package/dist/{memory-poisoning-defense-KNQGXMQ2.js → memory-poisoning-defense-P6GL2RMF.js} +2 -2
  193. package/dist/{memory-reflection-H6WTTBDO.js → memory-reflection-5CVV2M3G.js} +2 -2
  194. package/dist/{notifications-3SVZCDEY.js → notifications-NV54INLG.js} +8 -8
  195. package/dist/{orchestration-events-PCGTHJ67.js → orchestration-events-TEYCD6GO.js} +3 -3
  196. package/dist/{orchestrator-46YDSPQI.js → orchestrator-JCNHGP6M.js} +10 -10
  197. package/dist/{pipeline-router-RCPUSLWO.js → pipeline-router-IX635D3U.js} +3 -3
  198. package/dist/{plan-limits-4JH2GWCP.js → plan-limits-H65VL6LC.js} +3 -3
  199. package/dist/{projection-worker-B4TWS2FX.js → projection-worker-JMGAPKH6.js} +1 -1
  200. package/dist/{reranker-CCAEXD25.js → reranker-T4A2M7K2.js} +1 -1
  201. package/dist/{review-polling-Z7NRBMHV.js → review-polling-SAQ24T6L.js} +9 -9
  202. package/dist/runtime/index.js +15 -15
  203. package/dist/{session-events-TNO5ISQB.js → session-events-JNUK47KH.js} +9 -9
  204. package/dist/{session-kill-telemetry-6FDEUGO5.js → session-kill-telemetry-GLCDARKV.js} +3 -3
  205. package/dist/{session-scope-MGHWXZYK.js → session-scope-UR7OFFOB.js} +8 -8
  206. package/dist/{setup-wizard-5O5OQOXH.js → setup-wizard-GQYG36KS.js} +1 -1
  207. package/dist/{skill-refinement-Y7N2Q25B.js → skill-refinement-WWWFGTUS.js} +2 -2
  208. package/dist/{steward-gate-H2VKZNW2.js → steward-gate-TAD7GEVL.js} +3 -3
  209. package/dist/{task-enforcement-QTVMU2RS.js → task-enforcement-2LI5KWFE.js} +8 -8
  210. package/dist/{task-scope-YQ6O3DIE.js → task-scope-AYK6BVC7.js} +8 -8
  211. package/dist/{tasks-crud-ZGQZPZAM.js → tasks-crud-OD75EH2G.js} +8 -8
  212. package/dist/{tasks-review-EM3YKWOR.js → tasks-review-CC2EGWBL.js} +8 -8
  213. package/dist/{telemetry-upload-QTBI5CFE.js → telemetry-upload-H6BU6QF7.js} +128 -6
  214. package/dist/{token-budget-OQ6XR5EK.js → token-budget-6TK55BBU.js} +2 -2
  215. package/dist/{tool-telemetry-NKCCCPQJ.js → tool-telemetry-E7NWXX5R.js} +1 -1
  216. package/dist/tui/App.js +17 -17
  217. package/dist/{tui-data-MSZKTQDJ.js → tui-data-ROOXTJQ5.js} +8 -8
  218. package/dist/{worker-gate-WQ2BEQTX.js → worker-gate-MOQZ2D34.js} +1 -1
  219. package/dist/{workflow-engine-YB7OOSAT.js → workflow-engine-4MQJI5F2.js} +2 -2
  220. package/dist/{worktree-W6OAHIBE.js → worktree-K2GDO4QX.js} +4 -4
  221. package/package.json +1 -1
  222. package/release-notes.json +105 -202
  223. package/dist/dreaming-YKXGUTVR.js +0 -12
  224. /package/dist/{chunk-MBEF2YKQ.js → chunk-A4TPCHMA.js} +0 -0
  225. /package/dist/{chunk-5O42LXU7.js → chunk-BJOU5MBY.js} +0 -0
  226. /package/dist/{chunk-THNAZQIH.js → chunk-EAIZLNLP.js} +0 -0
  227. /package/dist/{chunk-SDKRRTP6.js → chunk-HFF6YG7R.js} +0 -0
  228. /package/dist/{chunk-N345XXAA.js → chunk-IAPFFVYR.js} +0 -0
  229. /package/dist/{chunk-6HYAEYQ3.js → chunk-M5TK7JET.js} +0 -0
  230. /package/dist/{chunk-VJ6HKJMQ.js → chunk-NNEYTOUS.js} +0 -0
  231. /package/dist/{chunk-CU6CYZOI.js → chunk-P2JDWX67.js} +0 -0
  232. /package/dist/{chunk-FUVINDE3.js → chunk-RX2KGETT.js} +0 -0
  233. /package/dist/{chunk-ARETQ22D.js → chunk-YGJTKLGM.js} +0 -0
  234. /package/dist/{core-memory-NYBNXCKZ.js → core-memory-67AVQ3Z7.js} +0 -0
  235. /package/dist/{wiki-acl-RMP5KXYK.js → wiki-acl-AR7RIMRY.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-FUVINDE3.js";
3
+ } from "./chunk-RX2KGETT.js";
4
4
  import {
5
5
  decryptSyncBlob,
6
6
  encryptSyncBlob,
@@ -12,7 +12,7 @@ import {
12
12
  loadEmployees,
13
13
  registerBinSymlinks,
14
14
  saveEmployees
15
- } from "./chunk-VTLUUTWI.js";
15
+ } from "./chunk-2LYJTK47.js";
16
16
  import {
17
17
  loadDeviceId
18
18
  } from "./chunk-D5C56WO3.js";
@@ -506,7 +506,7 @@ async function cloudSync(config) {
506
506
  let pulled = 0;
507
507
  if (pullResult.records.length > 0) {
508
508
  if (isCrdtSyncEnabled()) {
509
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-NEINCZF7.js");
509
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-VS254UOH.js");
510
510
  initCrdtDoc();
511
511
  importExistingMemories(
512
512
  pullResult.records.map((rec) => ({
@@ -935,7 +935,7 @@ async function cloudSync(config) {
935
935
  }
936
936
  const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
937
937
  try {
938
- const { getLatestBackup } = await import("./db-backup-C44Q44WQ.js");
938
+ const { getLatestBackup } = await import("./db-backup-JEHRFLYW.js");
939
939
  const latestBackup = getLatestBackup();
940
940
  if (latestBackup) {
941
941
  const backupSize = statSync(latestBackup).size;
@@ -1431,9 +1431,14 @@ async function cloudPullGraphRAG(config) {
1431
1431
  );
1432
1432
  if (!data || data.length === 0) return { pulled: 0 };
1433
1433
  const blob = data[0];
1434
- const client = getClient();
1435
1434
  let pulled = 0;
1436
- if (blob.entities.length > 0) {
1435
+ let client = null;
1436
+ try {
1437
+ client = getClient();
1438
+ } catch {
1439
+ process.stderr.write("[cloud-sync] SQLite unavailable for GraphRAG pull \u2014 using PostgreSQL projection only\n");
1440
+ }
1441
+ if (client && blob.entities.length > 0) {
1437
1442
  const stmts = blob.entities.map((e) => ({
1438
1443
  sql: `INSERT OR IGNORE INTO entities (id, name, type, first_seen, last_seen, properties)
1439
1444
  VALUES (?, ?, ?, ?, ?, ?)`,
@@ -1442,7 +1447,7 @@ async function cloudPullGraphRAG(config) {
1442
1447
  await client.batch(stmts, "write");
1443
1448
  pulled += stmts.length;
1444
1449
  }
1445
- if (blob.relationships.length > 0) {
1450
+ if (client && blob.relationships.length > 0) {
1446
1451
  const stmts = blob.relationships.map((r) => ({
1447
1452
  sql: `INSERT OR IGNORE INTO relationships
1448
1453
  (id, source_entity_id, target_entity_id, type, weight, timestamp, properties, confidence, confidence_label)
@@ -1462,7 +1467,7 @@ async function cloudPullGraphRAG(config) {
1462
1467
  await client.batch(stmts, "write");
1463
1468
  pulled += stmts.length;
1464
1469
  }
1465
- if (blob.entity_aliases.length > 0) {
1470
+ if (client && blob.entity_aliases.length > 0) {
1466
1471
  const stmts = blob.entity_aliases.map((a) => ({
1467
1472
  sql: `INSERT OR IGNORE INTO entity_aliases (alias, canonical_entity_id) VALUES (?, ?)`,
1468
1473
  args: [sqlSafe(a.alias), sqlSafe(a.canonical_entity_id)]
@@ -1470,7 +1475,7 @@ async function cloudPullGraphRAG(config) {
1470
1475
  await client.batch(stmts, "write");
1471
1476
  pulled += stmts.length;
1472
1477
  }
1473
- if (blob.entity_memories.length > 0) {
1478
+ if (client && blob.entity_memories.length > 0) {
1474
1479
  const stmts = blob.entity_memories.map((em) => ({
1475
1480
  sql: `INSERT OR IGNORE INTO entity_memories (entity_id, memory_id) VALUES (?, ?)`,
1476
1481
  args: [sqlSafe(em.entity_id), sqlSafe(em.memory_id)]
@@ -1478,7 +1483,7 @@ async function cloudPullGraphRAG(config) {
1478
1483
  await client.batch(stmts, "write");
1479
1484
  pulled += stmts.length;
1480
1485
  }
1481
- if (blob.relationship_memories.length > 0) {
1486
+ if (client && blob.relationship_memories.length > 0) {
1482
1487
  const stmts = blob.relationship_memories.map((rm) => ({
1483
1488
  sql: `INSERT OR IGNORE INTO relationship_memories (relationship_id, memory_id) VALUES (?, ?)`,
1484
1489
  args: [sqlSafe(rm.relationship_id), sqlSafe(rm.memory_id)]
@@ -1486,7 +1491,7 @@ async function cloudPullGraphRAG(config) {
1486
1491
  await client.batch(stmts, "write");
1487
1492
  pulled += stmts.length;
1488
1493
  }
1489
- if (blob.hyperedges.length > 0) {
1494
+ if (client && blob.hyperedges.length > 0) {
1490
1495
  const stmts = blob.hyperedges.map((h) => ({
1491
1496
  sql: `INSERT OR IGNORE INTO hyperedges (id, label, relation, confidence, timestamp)
1492
1497
  VALUES (?, ?, ?, ?, ?)`,
@@ -1495,7 +1500,7 @@ async function cloudPullGraphRAG(config) {
1495
1500
  await client.batch(stmts, "write");
1496
1501
  pulled += stmts.length;
1497
1502
  }
1498
- if (blob.hyperedge_nodes.length > 0) {
1503
+ if (client && blob.hyperedge_nodes.length > 0) {
1499
1504
  const stmts = blob.hyperedge_nodes.map((hn) => ({
1500
1505
  sql: `INSERT OR IGNORE INTO hyperedge_nodes (hyperedge_id, entity_id) VALUES (?, ?)`,
1501
1506
  args: [sqlSafe(hn.hyperedge_id), sqlSafe(hn.entity_id)]
@@ -1503,6 +1508,53 @@ async function cloudPullGraphRAG(config) {
1503
1508
  await client.batch(stmts, "write");
1504
1509
  pulled += stmts.length;
1505
1510
  }
1511
+ const pgPromise = loadPgClient();
1512
+ if (pgPromise) {
1513
+ try {
1514
+ const pg = await pgPromise;
1515
+ const S = "graph";
1516
+ for (const e of blob.entities) {
1517
+ await pg.$executeRawUnsafe(
1518
+ `INSERT INTO ${S}.entities (id, name, type, first_seen, last_seen, properties)
1519
+ VALUES ($1::uuid, $2, $3, $4::timestamptz, $5::timestamptz, $6::jsonb)
1520
+ ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, type = EXCLUDED.type,
1521
+ last_seen = EXCLUDED.last_seen, properties = EXCLUDED.properties`,
1522
+ e.id,
1523
+ e.name ?? "unknown",
1524
+ e.type ?? "unknown",
1525
+ e.first_seen ?? (/* @__PURE__ */ new Date()).toISOString(),
1526
+ e.last_seen ?? (/* @__PURE__ */ new Date()).toISOString(),
1527
+ e.properties ?? "{}"
1528
+ );
1529
+ }
1530
+ for (const r of blob.relationships) {
1531
+ await pg.$executeRawUnsafe(
1532
+ `INSERT INTO ${S}.relationships (id, source_entity_id, target_entity_id, type, confidence, properties)
1533
+ VALUES ($1::uuid, $2::uuid, $3::uuid, $4, $5, $6::jsonb)
1534
+ ON CONFLICT (id) DO NOTHING`,
1535
+ r.id,
1536
+ r.source_entity_id,
1537
+ r.target_entity_id,
1538
+ r.type ?? "related_to",
1539
+ r.confidence ?? 0.8,
1540
+ r.properties ?? "{}"
1541
+ );
1542
+ }
1543
+ for (const em of blob.entity_memories) {
1544
+ await pg.$executeRawUnsafe(
1545
+ `INSERT INTO ${S}.entity_memories (entity_id, memory_id)
1546
+ VALUES ($1::uuid, $2::uuid) ON CONFLICT DO NOTHING`,
1547
+ em.entity_id,
1548
+ em.memory_id
1549
+ );
1550
+ }
1551
+ process.stderr.write(`[cloud-sync] Projected ${blob.entities.length} entities + ${blob.relationships.length} relationships to PostgreSQL graph schema
1552
+ `);
1553
+ } catch (pgErr) {
1554
+ process.stderr.write(`[cloud-sync] PostgreSQL graph projection failed: ${pgErr instanceof Error ? pgErr.message : String(pgErr)}
1555
+ `);
1556
+ }
1557
+ }
1506
1558
  return { pulled };
1507
1559
  }
1508
1560
  async function cloudPushTasks(config) {
@@ -1993,6 +2045,7 @@ async function cloudPullCoreMemory(config) {
1993
2045
  }
1994
2046
 
1995
2047
  export {
2048
+ loadPgClient,
1996
2049
  disposeCloudSync,
1997
2050
  pushToPostgres,
1998
2051
  migrateEndpoint,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  PLATFORM_PROCEDURE_TITLES
3
- } from "./chunk-5NFBE376.js";
3
+ } from "./chunk-K77WC6HA.js";
4
4
  import {
5
5
  getClient,
6
6
  getIdentity,
7
7
  listIdentities,
8
8
  updateIdentity
9
- } from "./chunk-VTLUUTWI.js";
9
+ } from "./chunk-2LYJTK47.js";
10
10
  import {
11
11
  atomicWriteJsonSync
12
12
  } from "./chunk-LYH5HE24.js";
@@ -2,7 +2,7 @@ import {
2
2
  getClient,
3
3
  isCoordinatorName,
4
4
  loadEmployeesSync
5
- } from "./chunk-VTLUUTWI.js";
5
+ } from "./chunk-2LYJTK47.js";
6
6
 
7
7
  // src/lib/steward-gate.ts
8
8
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ensureWorktree
3
- } from "./chunk-XORJOW4J.js";
3
+ } from "./chunk-G67R75DG.js";
4
4
  import {
5
5
  queueIntercom
6
6
  } from "./chunk-QI4IXJN7.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-4JERP7NT.js";
11
11
  import {
12
12
  registerSession
13
- } from "./chunk-2UD2P2LO.js";
13
+ } from "./chunk-NJS4GRIR.js";
14
14
  import {
15
15
  getTransport
16
16
  } from "./chunk-MVW62NIZ.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-CX6GL3ZJ.js";
20
20
  import {
21
21
  recordOrchestrationEventBestEffort
22
- } from "./chunk-MJMJMHFC.js";
22
+ } from "./chunk-2O5GJFYQ.js";
23
23
  import {
24
24
  getAgentRuntime,
25
25
  normalizeCcModelName
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  PlanLimitError,
32
32
  assertEmployeeLimitSync
33
- } from "./chunk-VXVI75ED.js";
33
+ } from "./chunk-LXP6VRFH.js";
34
34
  import {
35
35
  getSessionKey
36
36
  } from "./chunk-CVYC6DUW.js";
@@ -45,7 +45,7 @@ import {
45
45
  } from "./chunk-MP2AFCGL.js";
46
46
  import {
47
47
  ensureAgentSymlink
48
- } from "./chunk-WJH6IM7Q.js";
48
+ } from "./chunk-WQCSGDRG.js";
49
49
  import {
50
50
  expandDualPrefixTools
51
51
  } from "./chunk-HYZV25LY.js";
@@ -57,7 +57,7 @@ import {
57
57
  isCoordinatorName,
58
58
  loadEmployees,
59
59
  loadEmployeesSync
60
- } from "./chunk-VTLUUTWI.js";
60
+ } from "./chunk-2LYJTK47.js";
61
61
  import {
62
62
  loadDeviceId
63
63
  } from "./chunk-D5C56WO3.js";
@@ -527,7 +527,7 @@ async function createTaskCore(input) {
527
527
  if (isCoordinatorSession) {
528
528
  earlySessionScope = resolved;
529
529
  } else {
530
- const { getSessionProject } = await import("./session-scope-MGHWXZYK.js");
530
+ const { getSessionProject } = await import("./session-scope-UR7OFFOB.js");
531
531
  const sessionProject = getSessionProject(resolved);
532
532
  if (sessionProject && sessionProject !== input.projectName) {
533
533
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -985,7 +985,7 @@ async function updateTaskStatus(input) {
985
985
  } catch {
986
986
  }
987
987
  try {
988
- const { writeNotification: writeNotification2 } = await import("./notifications-3SVZCDEY.js");
988
+ const { writeNotification: writeNotification2 } = await import("./notifications-NV54INLG.js");
989
989
  await writeNotification2({
990
990
  agentId: reviewer,
991
991
  agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
@@ -1503,7 +1503,7 @@ ${input.result ?? ""}`;
1503
1503
  }
1504
1504
  if (input.status === "done" || input.status === "needs_review") {
1505
1505
  try {
1506
- const { incrementSkillSuccess } = await import("./skill-refinement-Y7N2Q25B.js");
1506
+ const { incrementSkillSuccess } = await import("./skill-refinement-WWWFGTUS.js");
1507
1507
  await incrementSkillSuccess(
1508
1508
  String(row.assigned_to),
1509
1509
  row.project_name ? String(row.project_name) : null
@@ -2971,7 +2971,7 @@ async function verifyPaneAtCapacity(sessionName) {
2971
2971
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
2972
2972
  };
2973
2973
  }
2974
- const { isAtCapacity } = await import("./capacity-monitor-NVSZABQG.js");
2974
+ const { isAtCapacity } = await import("./capacity-monitor-KAKNWAA4.js");
2975
2975
  if (!isAtCapacity(pane)) {
2976
2976
  return {
2977
2977
  atCapacity: false,