@askexenow/exe-os 0.9.127 → 0.9.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/active-agent-3FDJYREJ.js +22 -0
- package/dist/active-agent-WC7YK3L5.js +23 -0
- package/dist/agent-context-CDWUZEXY.js +11 -0
- package/dist/agent-loop-G4VUR5ME.js +10 -0
- package/dist/agentic-ontology-2VYNTMNO.js +25 -0
- package/dist/backfill-metadata-OJWOCLSZ.js +601 -0
- package/dist/background-jobs-LGRDXGXC.js +25 -0
- package/dist/bash-Y5PEW5UQ.js +8 -0
- package/dist/behaviors-CSB2YLDT.js +22 -0
- package/dist/bin/age-ontology-load.js +10 -258
- package/dist/bin/agentic-ontology-backfill.js +23 -5296
- package/dist/bin/agentic-reflection-backfill.js +19 -4739
- package/dist/bin/agentic-semantic-label.js +28 -4723
- package/dist/bin/backfill-conversations.js +42 -5543
- package/dist/bin/backfill-responses.js +41 -5542
- package/dist/bin/backfill-vectors.js +43 -4795
- package/dist/bin/bulk-sync-postgres.js +22 -5313
- package/dist/bin/cc-doctor.js +10 -602
- package/dist/bin/cleanup-stale-review-tasks.js +32 -6803
- package/dist/bin/cli.js +169 -38993
- package/dist/bin/exe-agent-config.js +21 -253
- package/dist/bin/exe-agent.js +63 -2429
- package/dist/bin/exe-assign.js +34 -5810
- package/dist/bin/exe-boot.js +180 -12726
- package/dist/bin/exe-call.js +48 -1409
- package/dist/bin/exe-cloud.js +64 -8516
- package/dist/bin/exe-dispatch.js +35 -10818
- package/dist/bin/exe-doctor.js +24 -7537
- package/dist/bin/exe-export-behaviors.js +18 -6122
- package/dist/bin/exe-forget.js +22 -6274
- package/dist/bin/exe-gateway.js +62 -15286
- package/dist/bin/exe-healthcheck.js +9 -602
- package/dist/bin/exe-heartbeat.js +51 -6898
- package/dist/bin/exe-kill.js +30 -5961
- package/dist/bin/exe-launch-agent.js +101 -6788
- package/dist/bin/exe-new-employee.js +42 -3774
- package/dist/bin/exe-pending-messages.js +28 -6833
- package/dist/bin/exe-pending-notifications.js +31 -6869
- package/dist/bin/exe-pending-reviews.js +38 -6910
- package/dist/bin/exe-rename.js +57 -5766
- package/dist/bin/exe-review.js +29 -5948
- package/dist/bin/exe-search.js +22 -7692
- package/dist/bin/exe-session-cleanup.js +52 -11147
- package/dist/bin/exe-settings.js +35 -524
- package/dist/bin/exe-start-codex.js +70 -6641
- package/dist/bin/exe-start-opencode.js +54 -6584
- package/dist/bin/exe-status.js +26 -7081
- package/dist/bin/exe-support.js +10 -546
- package/dist/bin/exe-team.js +18 -5942
- package/dist/bin/git-sweep.js +26 -10909
- package/dist/bin/graph-backfill.js +24 -5979
- package/dist/bin/graph-export.js +31 -6128
- package/dist/bin/graph-layer-benchmark.js +4 -8
- package/dist/bin/install.js +47 -2322
- package/dist/bin/intercom-check.js +25 -11501
- package/dist/bin/list-providers.js +4 -18
- package/dist/bin/postgres-agentic-reflection-backfill.js +14 -357
- package/dist/bin/postgres-agentic-semantic-backfill.js +14 -404
- package/dist/bin/pre-publish.js +4 -298
- package/dist/bin/registry-proxy.js +8 -172
- package/dist/bin/scan-tasks.js +47 -10881
- package/dist/bin/setup.js +6 -9492
- package/dist/bin/shard-migrate.js +30 -5149
- package/dist/bin/stack-update.js +75 -203
- package/dist/bin/update.js +20 -654
- package/dist/capacity-monitor-3GZIHLB4.js +46 -0
- package/dist/catchup-brief-67QDCINS.js +148 -0
- package/dist/chunk-2QD7KBJN.js +664 -0
- package/dist/chunk-2WGSIVI4.js +149 -0
- package/dist/chunk-35TVNLJI.js +57 -0
- package/dist/chunk-3SYV36U5.js +47 -0
- package/dist/chunk-46SQTBQW.js +207 -0
- package/dist/chunk-4CMVLKEI.js +171 -0
- package/dist/chunk-4FLUOZTR.js +116 -0
- package/dist/chunk-4NYQAS33.js +17 -0
- package/dist/chunk-4QNPADWL.js +902 -0
- package/dist/chunk-4Y6QZBEO.js +58 -0
- package/dist/chunk-557C2IGL.js +0 -0
- package/dist/chunk-55S56YDO.js +305 -0
- package/dist/chunk-5BS5ELMC.js +85 -0
- package/dist/chunk-5DHM77JE.js +256 -0
- package/dist/chunk-5QTWQKNF.js +137 -0
- package/dist/chunk-6A7P74QV.js +53 -0
- package/dist/chunk-6BFIFI5F.js +45 -0
- package/dist/chunk-6KFICEAT.js +20 -0
- package/dist/chunk-6LKDJ5WX.js +317 -0
- package/dist/chunk-6M5II4EV.js +148 -0
- package/dist/chunk-6QEFN3DV.js +302 -0
- package/dist/chunk-6WTMJAG3.js +171 -0
- package/dist/chunk-6Y4B3QF6.js +19 -0
- package/dist/chunk-7RK3AYJE.js +163 -0
- package/dist/chunk-7TCP2XTP.js +390 -0
- package/dist/chunk-A2NZP64U.js +2307 -0
- package/dist/chunk-AFYIYM2K.js +322 -0
- package/dist/chunk-AJWFPKQS.js +573 -0
- package/dist/chunk-AVE2B4DQ.js +140 -0
- package/dist/chunk-B4TT2QQA.js +87 -0
- package/dist/chunk-BCMOO4OQ.js +1066 -0
- package/dist/chunk-BU3ID2WT.js +432 -0
- package/dist/chunk-CFIM43JH.js +862 -0
- package/dist/chunk-CURJUF3W.js +66 -0
- package/dist/chunk-DC4ZD76Y.js +288 -0
- package/dist/chunk-DL52JPGF.js +706 -0
- package/dist/chunk-DRSC6ZRA.js +36 -0
- package/dist/chunk-E2Q4Y22A.js +86 -0
- package/dist/chunk-ECGTESAP.js +236 -0
- package/dist/chunk-EHOJUXYG.js +365 -0
- package/dist/chunk-EIT6J37V.js +119 -0
- package/dist/chunk-ELE2C7L4.js +31 -0
- package/dist/chunk-EQSQ4HBW.js +9 -0
- package/dist/chunk-FWFFZGSC.js +94 -0
- package/dist/chunk-GCNWCYJI.js +249 -0
- package/dist/chunk-GGTUUI7J.js +6 -0
- package/dist/chunk-GU56L7OY.js +223 -0
- package/dist/chunk-HF25XPZE.js +83 -0
- package/dist/chunk-HOKOOBDL.js +52 -0
- package/dist/chunk-HP43GLZ6.js +89 -0
- package/dist/chunk-HSRM6PNM.js +682 -0
- package/dist/chunk-HVRTW3OP.js +164 -0
- package/dist/chunk-IHDHL5ML.js +125 -0
- package/dist/chunk-IHF5RXJM.js +168 -0
- package/dist/chunk-IJ73YE73.js +409 -0
- package/dist/chunk-INO4ZD5Y.js +162 -0
- package/dist/chunk-IRQTM7DY.js +475 -0
- package/dist/chunk-JD4FAPYG.js +1208 -0
- package/dist/chunk-JN44LQ53.js +316 -0
- package/dist/chunk-JQ6TLNIV.js +133 -0
- package/dist/chunk-JT76KRZQ.js +35 -0
- package/dist/chunk-K6OEWZTB.js +262 -0
- package/dist/chunk-KCUYRZSX.js +72 -0
- package/dist/chunk-KFQGP6VL.js +33 -0
- package/dist/chunk-KRLOFIPI.js +83 -0
- package/dist/chunk-KVPG5UT6.js +305 -0
- package/dist/chunk-L3TB7CC3.js +170 -0
- package/dist/chunk-L4X5EUHR.js +283 -0
- package/dist/chunk-LAN26C3W.js +655 -0
- package/dist/chunk-LPGBKR4H.js +54 -0
- package/dist/chunk-LVNMOVGD.js +132 -0
- package/dist/chunk-LX5WEEZ7.js +157 -0
- package/dist/chunk-MBH42QNH.js +295 -0
- package/dist/chunk-MFO7MNSD.js +102 -0
- package/dist/chunk-MILTNDZH.js +736 -0
- package/dist/chunk-MJAE4NB7.js +1090 -0
- package/dist/chunk-MLCUPTP7.js +132 -0
- package/dist/chunk-MPURH6JI.js +445 -0
- package/dist/chunk-MVBWW2EO.js +89 -0
- package/dist/chunk-MZIGUUDQ.js +42 -0
- package/dist/chunk-N3DTSVKE.js +157 -0
- package/dist/chunk-N5RRQOAC.js +134 -0
- package/dist/chunk-N7L33TED.js +1664 -0
- package/dist/chunk-NDYSNVI5.js +122 -0
- package/dist/chunk-NEAHEC5G.js +155 -0
- package/dist/chunk-NGVOA6ZQ.js +84 -0
- package/dist/chunk-NHK5KW6Y.js +193 -0
- package/dist/chunk-NMQKGFEP.js +458 -0
- package/dist/chunk-NPT4EHZK.js +352 -0
- package/dist/chunk-NXFJHTED.js +55 -0
- package/dist/chunk-NZLCDI6Y.js +216 -0
- package/dist/chunk-O377P7GM.js +100 -0
- package/dist/chunk-O4VFZRA5.js +33 -0
- package/dist/chunk-O7YD7JYE.js +237 -0
- package/dist/chunk-OFK72LTZ.js +81 -0
- package/dist/chunk-ORCCI2VV.js +140 -0
- package/dist/chunk-OVQR4KMC.js +579 -0
- package/dist/chunk-P3CVUMEH.js +54 -0
- package/dist/chunk-P4HIF72O.js +30 -0
- package/dist/chunk-PEDLSJBL.js +1039 -0
- package/dist/chunk-PFICKZZ5.js +219 -0
- package/dist/chunk-PGW7TIV6.js +142 -0
- package/dist/chunk-PJHHFJAN.js +63 -0
- package/dist/chunk-PP4SNOJ5.js +471 -0
- package/dist/chunk-PRKVT4KN.js +90 -0
- package/dist/chunk-Q2O4VJHH.js +305 -0
- package/dist/chunk-Q36CMZIX.js +38 -0
- package/dist/chunk-Q3V7K4ME.js +149 -0
- package/dist/chunk-QGYPJGHB.js +81 -0
- package/dist/chunk-R23EMFJV.js +198 -0
- package/dist/chunk-R4M6XCMU.js +39 -0
- package/dist/chunk-R4WMF32C.js +81 -0
- package/dist/chunk-RJT7H2KR.js +349 -0
- package/dist/chunk-RJZMRZNV.js +280 -0
- package/dist/chunk-RMFDPCA2.js +72 -0
- package/dist/chunk-RUG3N6P4.js +292 -0
- package/dist/chunk-RWO327FJ.js +84 -0
- package/dist/chunk-SG7EFHQ7.js +108 -0
- package/dist/chunk-SH45SJQW.js +0 -0
- package/dist/chunk-SPKE5ANC.js +42 -0
- package/dist/chunk-SVMFVPBF.js +104 -0
- package/dist/chunk-SVXDCELZ.js +163 -0
- package/dist/chunk-TMEE7AT7.js +72 -0
- package/dist/chunk-TWYEE4FB.js +125 -0
- package/dist/chunk-TYLF4LSW.js +110 -0
- package/dist/chunk-V4TZI6EO.js +60 -0
- package/dist/chunk-VFZTXKQI.js +372 -0
- package/dist/chunk-VQ4K2MLM.js +199 -0
- package/dist/chunk-VU447UAO.js +173 -0
- package/dist/chunk-WMC3TXJF.js +50 -0
- package/dist/chunk-WPOA7XAE.js +84 -0
- package/dist/chunk-WZQ4CPRG.js +64 -0
- package/dist/chunk-X2IMCCM5.js +49 -0
- package/dist/chunk-X2Z5GT3V.js +118 -0
- package/dist/chunk-XEKO37NM.js +43 -0
- package/dist/chunk-XUHFQHGZ.js +505 -0
- package/dist/chunk-YGAAZN3E.js +47 -0
- package/dist/chunk-YKOW7KMK.js +558 -0
- package/dist/chunk-YOQKMB6N.js +145 -0
- package/dist/chunk-YZFZDJWZ.js +107 -0
- package/dist/chunk-ZBY4AUD4.js +10342 -0
- package/dist/chunk-ZOJYPNCM.js +127 -0
- package/dist/chunk-ZS7MGQSD.js +1494 -0
- package/dist/chunk-ZTZQ5A6B.js +191 -0
- package/dist/code-context-index-HXGC4IJL.js +28 -0
- package/dist/content-extractor-UVZXRIPC.js +8 -0
- package/dist/conversation-entity-extractor-HKSNDF4L.js +113 -0
- package/dist/conversation-wiki-populator-NKDAQEZ5.js +105 -0
- package/dist/crdt-sync-T7MHVQCS.js +33 -0
- package/dist/crm-bridge-Q5JBVJ6P.js +19 -0
- package/dist/crm-webhook-OAFTLJYA.js +10 -0
- package/dist/cto-delegation-gate-XWHZCUJH.js +208 -0
- package/dist/daemon-auth-GWUXTUYO.js +15 -0
- package/dist/daemon-orchestration-2C3TVOHO.js +91 -0
- package/dist/daemon-protocol-RLH2XM2K.js +19 -0
- package/dist/db-backup-CH2KG3JY.js +23 -0
- package/dist/devtools-PLJCAU53.js +8 -0
- package/dist/discord-G4BQJ2VX.js +7 -0
- package/dist/email-XMRNMFXR.js +137 -0
- package/dist/entity-boost-IOER4VRR.js +249 -0
- package/dist/exe-drift-2IJFQV43.js +68 -0
- package/dist/exe-export-Y2RFXGNB.js +71 -0
- package/dist/exe-import-LN6PE2YT.js +74 -0
- package/dist/exe-key-DHKBWLIT.js +571 -0
- package/dist/exe-org-F7LZRHFB.js +73 -0
- package/dist/factory-YTD23AW7.js +67 -0
- package/dist/fast-db-init-IIP6EGWT.js +7 -0
- package/dist/file-edit-FJVEO7XZ.js +8 -0
- package/dist/file-read-Q2NH3J35.js +8 -0
- package/dist/file-write-UNSFXNH4.js +8 -0
- package/dist/gateway/index.js +87 -16563
- package/dist/gateway-client-APTYJNCL.js +11 -0
- package/dist/git-staleness-I2BUEDE2.js +111 -0
- package/dist/git-task-sweep-UEOTXRW4.js +35 -0
- package/dist/glob-GRMXLDMB.js +7 -0
- package/dist/global-procedures-MFE5LGRF.js +19 -0
- package/dist/graph-query-657O5JYJ.js +25 -0
- package/dist/graph-rag-ZE5N7C65.js +28 -0
- package/dist/grep-NBV6SKYZ.js +7 -0
- package/dist/hooks/bug-report-worker.js +41 -10823
- package/dist/hooks/codex-stop-task-finalizer.js +38 -9055
- package/dist/hooks/commit-complete.js +32 -10914
- package/dist/hooks/error-recall.js +35 -7955
- package/dist/hooks/exe-heartbeat-hook.js +17 -327
- package/dist/hooks/ingest-worker.js +16 -565
- package/dist/hooks/ingest.js +98 -11436
- package/dist/hooks/instructions-loaded.js +25 -6209
- package/dist/hooks/notification.js +16 -6098
- package/dist/hooks/post-compact.js +34 -7041
- package/dist/hooks/post-tool-combined.js +27 -9751
- package/dist/hooks/pre-compact.js +38 -11130
- package/dist/hooks/pre-tool-use.js +61 -7233
- package/dist/hooks/prompt-submit.js +113 -13358
- package/dist/hooks/session-end.js +57 -11503
- package/dist/hooks/session-start.js +46 -9423
- package/dist/hooks/stop.js +70 -7210
- package/dist/hooks/subagent-stop.js +33 -6897
- package/dist/hooks/summary-worker.js +86 -8629
- package/dist/hooks-KD3N2D7P.js +9 -0
- package/dist/imessage-L7WKA2WD.js +7 -0
- package/dist/index.js +49 -19391
- package/dist/installer-5N24GXFB.js +32 -0
- package/dist/installer-QSD76YRY.js +291 -0
- package/dist/installer-ZPQUKHU5.js +331 -0
- package/dist/intercom-queue-PEEGAJ33.js +19 -0
- package/dist/key-backup-status-57UB74DU.js +41 -0
- package/dist/lib/agent-config.js +19 -224
- package/dist/lib/cloud-sync.js +44 -5398
- package/dist/lib/cloudflare-dns.js +7 -111
- package/dist/lib/config.js +18 -278
- package/dist/lib/consolidation.js +21 -1047
- package/dist/lib/crypto.js +7 -45
- package/dist/lib/database.js +20 -2932
- package/dist/lib/db-daemon-client.js +24 -460
- package/dist/lib/db.js +22 -2932
- package/dist/lib/device-registry.js +20 -2992
- package/dist/lib/embedder.js +14 -822
- package/dist/lib/employee-templates.js +21 -1102
- package/dist/lib/employees.js +30 -497
- package/dist/lib/error-detector.js +9 -149
- package/dist/lib/exe-daemon-client.js +16 -570
- package/dist/lib/exe-daemon.js +509 -18398
- package/dist/lib/file-grep.js +2 -0
- package/dist/lib/hybrid-search.js +18 -7674
- package/dist/lib/identity-templates.js +2 -0
- package/dist/lib/identity.js +13 -309
- package/dist/lib/keychain.js +9 -499
- package/dist/lib/license.js +21 -549
- package/dist/lib/messaging.js +35 -1631
- package/dist/lib/post-tool-memory.js +8 -370
- package/dist/lib/registry-proxy.js +8 -155
- package/dist/lib/reminders.js +11 -231
- package/dist/lib/runtime-table.js +7 -20
- package/dist/lib/schedules.js +16 -4614
- package/dist/lib/session-registry.js +9 -57
- package/dist/lib/session-wrappers.js +3 -127
- package/dist/lib/skill-learning.js +20 -2101
- package/dist/lib/status-brief.js +4 -368
- package/dist/lib/store.js +25 -5593
- package/dist/lib/task-router.js +12 -254
- package/dist/lib/tasks.js +44 -5801
- package/dist/lib/tmux-routing.js +45 -5804
- package/dist/lib/tmux-status.js +16 -248
- package/dist/lib/tmux-transport.js +6 -90
- package/dist/lib/token-spend.js +9 -337
- package/dist/lib/transport.js +8 -134
- package/dist/lib/ws-auth.js +6 -14
- package/dist/lib/ws-client.js +4 -22
- package/dist/license-gate-NXXDOOAQ.js +14 -0
- package/dist/mcp/register-tools.js +90 -32454
- package/dist/mcp/server.js +139 -32625
- package/dist/mcp/tools/complete-reminder.js +10 -237
- package/dist/mcp/tools/create-reminder.js +10 -222
- package/dist/mcp/tools/create-task.js +28 -6730
- package/dist/mcp/tools/deactivate-behavior.js +13 -476
- package/dist/mcp/tools/list-reminders.js +10 -232
- package/dist/mcp/tools/list-tasks.js +28 -1571
- package/dist/mcp/tools/send-message.js +25 -1672
- package/dist/mcp/tools/update-task.js +27 -6123
- package/dist/mcp-diagnostics-OOZ3TDPY.js +200 -0
- package/dist/memory-cards-RIL5BZHK.js +175 -0
- package/dist/memory-queue-JYIJ7TMQ.js +13 -0
- package/dist/memory-queue-client-PE7757HU.js +14 -0
- package/dist/notifications-CJFULBMN.js +42 -0
- package/dist/orchestration-phase-Y2TYNW5H.js +23 -0
- package/dist/orchestrator-RXIPT6PZ.js +29 -0
- package/dist/permission-presets-WI524OSE.js +25 -0
- package/dist/permissions-TYT6YMNZ.js +14 -0
- package/dist/pg-ssl-KFHNJPGO.js +7 -0
- package/dist/plan-limits-5WY5YK6X.js +27 -0
- package/dist/preferences-MW3BYTQ5.js +10 -0
- package/dist/project-name-PL2ZDWNU.js +11 -0
- package/dist/projection-worker-OY4WYZW6.js +661 -0
- package/dist/reranker-LFJ73RRS.js +19 -0
- package/dist/review-gate-E6K7QQE5.js +120 -0
- package/dist/runtime/index.js +82 -13408
- package/dist/self-query-router-IZANO632.js +83 -0
- package/dist/session-events-TQ6S5KQN.js +32 -0
- package/dist/session-kill-telemetry-46YIJWE2.js +30 -0
- package/dist/session-scope-3MYK3YRV.js +34 -0
- package/dist/setup-wizard-ZJ7UCRBP.js +12 -0
- package/dist/shard-manager-RCFZ6RXY.js +29 -0
- package/dist/signal-XN2C7PIG.js +7 -0
- package/dist/slack-Z77TFJCK.js +7 -0
- package/dist/task-enforcement-337DZI3I.js +252 -0
- package/dist/task-scanner-IMIR3T7T.js +11 -0
- package/dist/task-scope-MUU4KXE6.js +32 -0
- package/dist/tasks-crud-PMLK3MM4.js +53 -0
- package/dist/tasks-review-56LVKKNL.js +44 -0
- package/dist/telegram-CRPZO7JT.js +7 -0
- package/dist/telemetry-SPVGPKU7.js +9 -0
- package/dist/tool-capability-index-XNBSDCH3.js +10 -0
- package/dist/tool-gates-LGH6CSY4.js +14 -0
- package/dist/tool-gates-W7SZCYTX.js +13 -0
- package/dist/tool-registry-436LVVLY.js +11 -0
- package/dist/tool-telemetry-L77WNAYT.js +15 -0
- package/dist/tui/App.js +253 -14668
- package/dist/tui-data-SB45REYU.js +161 -0
- package/dist/update-check-LZGZISRJ.js +11 -0
- package/dist/webhook-VVP7KQVC.js +96 -0
- package/dist/whatsapp-J6QNDBGY.js +9 -0
- package/dist/whatsapp-accounts-RTJF3LM6.js +15 -0
- package/dist/wiki-client-EKCIKCVC.js +136 -0
- package/dist/worker-gate-UYNN62GJ.js +19 -0
- package/dist/worktree-4T4BPWPN.js +205 -0
- package/package.json +1 -1
|
@@ -1,240 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"use strict";
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
// src/lib/config.ts
|
|
16
|
-
import { readFile, writeFile } from "fs/promises";
|
|
17
|
-
import { readFileSync, existsSync as existsSync2, renameSync } from "fs";
|
|
18
|
-
import path from "path";
|
|
19
|
-
import os from "os";
|
|
20
|
-
function resolveDataDir() {
|
|
21
|
-
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
22
|
-
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
23
|
-
const newDir = path.join(os.homedir(), ".exe-os");
|
|
24
|
-
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
25
|
-
if (!existsSync2(newDir) && existsSync2(legacyDir)) {
|
|
26
|
-
try {
|
|
27
|
-
renameSync(legacyDir, newDir);
|
|
28
|
-
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
29
|
-
`);
|
|
30
|
-
} catch {
|
|
31
|
-
return legacyDir;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return newDir;
|
|
35
|
-
}
|
|
36
|
-
var EXE_AI_DIR, DB_PATH, MODELS_DIR, CONFIG_PATH, LEGACY_LANCE_PATH, CURRENT_CONFIG_VERSION, DEFAULT_CONFIG;
|
|
37
|
-
var init_config = __esm({
|
|
38
|
-
"src/lib/config.ts"() {
|
|
39
|
-
"use strict";
|
|
40
|
-
init_secure_files();
|
|
41
|
-
EXE_AI_DIR = resolveDataDir();
|
|
42
|
-
DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
43
|
-
MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
44
|
-
CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
45
|
-
LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
46
|
-
CURRENT_CONFIG_VERSION = 1;
|
|
47
|
-
DEFAULT_CONFIG = {
|
|
48
|
-
config_version: CURRENT_CONFIG_VERSION,
|
|
49
|
-
dbPath: DB_PATH,
|
|
50
|
-
modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
51
|
-
embeddingDim: 1024,
|
|
52
|
-
batchSize: 20,
|
|
53
|
-
flushIntervalMs: 1e4,
|
|
54
|
-
autoIngestion: true,
|
|
55
|
-
autoRetrieval: true,
|
|
56
|
-
searchMode: "hybrid",
|
|
57
|
-
hookSearchMode: "hybrid",
|
|
58
|
-
fileGrepEnabled: true,
|
|
59
|
-
splashEffect: true,
|
|
60
|
-
consolidationEnabled: true,
|
|
61
|
-
consolidationIntervalMs: 6 * 60 * 60 * 1e3,
|
|
62
|
-
consolidationModel: "claude-haiku-4-5-20251001",
|
|
63
|
-
consolidationMaxCallsPerRun: 20,
|
|
64
|
-
selfQueryRouter: true,
|
|
65
|
-
selfQueryModel: "claude-haiku-4-5-20251001",
|
|
66
|
-
rerankerEnabled: true,
|
|
67
|
-
scalingRoadmap: {
|
|
68
|
-
rerankerAutoTrigger: {
|
|
69
|
-
enabled: true,
|
|
70
|
-
broadQueryMinCardinality: 5e4,
|
|
71
|
-
fetchTopK: 150,
|
|
72
|
-
returnTopK: 5
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
graphRagEnabled: true,
|
|
76
|
-
wikiEnabled: false,
|
|
77
|
-
wikiUrl: "",
|
|
78
|
-
wikiApiKey: "",
|
|
79
|
-
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
80
|
-
wikiWorkspaceMapping: {},
|
|
81
|
-
wikiAutoUpdate: true,
|
|
82
|
-
wikiAutoUpdateThreshold: 0.5,
|
|
83
|
-
wikiAutoUpdateCreateNew: true,
|
|
84
|
-
skillLearning: true,
|
|
85
|
-
skillThreshold: 3,
|
|
86
|
-
skillModel: "claude-haiku-4-5-20251001",
|
|
87
|
-
exeHeartbeat: {
|
|
88
|
-
enabled: true,
|
|
89
|
-
intervalSeconds: 60,
|
|
90
|
-
staleInProgressThresholdHours: 2
|
|
91
|
-
},
|
|
92
|
-
sessionLifecycle: {
|
|
93
|
-
idleKillEnabled: true,
|
|
94
|
-
idleKillTicksRequired: 3,
|
|
95
|
-
idleKillIntercomAckWindowMs: 1e4,
|
|
96
|
-
maxAutoInstances: 10
|
|
97
|
-
},
|
|
98
|
-
autoUpdate: {
|
|
99
|
-
checkOnBoot: true,
|
|
100
|
-
autoInstall: false,
|
|
101
|
-
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
102
|
-
},
|
|
103
|
-
support: {
|
|
104
|
-
bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
|
|
105
|
-
},
|
|
106
|
-
orchestration: {
|
|
107
|
-
phase: "phase_1_coo",
|
|
108
|
-
phaseSetBy: "default"
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// src/mcp/tools/complete-reminder.ts
|
|
115
|
-
import { z } from "zod";
|
|
116
|
-
|
|
117
|
-
// src/lib/reminders.ts
|
|
118
|
-
import crypto from "crypto";
|
|
119
|
-
|
|
120
|
-
// src/lib/database.ts
|
|
121
|
-
import { chmodSync as chmodSync2, existsSync as existsSync4, statSync, copyFileSync, unlinkSync as unlinkSync2, openSync, closeSync, mkdirSync as mkdirSync2 } from "fs";
|
|
122
|
-
import { createClient } from "@libsql/client";
|
|
123
|
-
import { homedir } from "os";
|
|
124
|
-
import { join } from "path";
|
|
125
|
-
|
|
126
|
-
// src/lib/employees.ts
|
|
127
|
-
init_config();
|
|
128
|
-
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
129
|
-
import { existsSync as existsSync3, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
|
|
130
|
-
import { execSync } from "child_process";
|
|
131
|
-
import path2 from "path";
|
|
132
|
-
import os2 from "os";
|
|
133
|
-
var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
|
|
134
|
-
var IDENTITY_DIR = path2.join(EXE_AI_DIR, "identity");
|
|
135
|
-
|
|
136
|
-
// src/lib/database-adapter.ts
|
|
137
|
-
import os3 from "os";
|
|
138
|
-
import path3 from "path";
|
|
139
|
-
import { createRequire } from "module";
|
|
140
|
-
import { pathToFileURL } from "url";
|
|
141
|
-
var BOOLEAN_COLUMNS_BY_TABLE = {
|
|
142
|
-
memories: /* @__PURE__ */ new Set(["has_error", "draft"]),
|
|
143
|
-
behaviors: /* @__PURE__ */ new Set(["active"]),
|
|
144
|
-
notifications: /* @__PURE__ */ new Set(["read"]),
|
|
145
|
-
users: /* @__PURE__ */ new Set(["has_personal_memory"])
|
|
146
|
-
};
|
|
147
|
-
var BOOLEAN_COLUMN_NAMES = new Set(
|
|
148
|
-
Object.values(BOOLEAN_COLUMNS_BY_TABLE).flatMap((cols) => [...cols])
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
// src/lib/database.ts
|
|
152
|
-
var _debugDb = process.env.EXE_DEBUG === "1";
|
|
153
|
-
var _resilientClient = null;
|
|
154
|
-
var _daemonClient = null;
|
|
155
|
-
var _adapterClient = null;
|
|
156
|
-
var DB_LOCK_PATH = join(homedir(), ".exe-os", "db.lock");
|
|
157
|
-
function getClient() {
|
|
158
|
-
if (!_adapterClient) {
|
|
159
|
-
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
160
|
-
}
|
|
161
|
-
if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
|
|
162
|
-
return _adapterClient;
|
|
163
|
-
}
|
|
164
|
-
if (process.env.EXE_IS_DAEMON === "1") {
|
|
165
|
-
return _resilientClient;
|
|
166
|
-
}
|
|
167
|
-
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
168
|
-
return _daemonClient;
|
|
169
|
-
}
|
|
170
|
-
if (!_resilientClient) {
|
|
171
|
-
return _adapterClient;
|
|
172
|
-
}
|
|
173
|
-
if (process.env.EXE_DB_READONLY === "1" || process.env.EXE_DB_DIRECT === "1") {
|
|
174
|
-
return _resilientClient;
|
|
175
|
-
}
|
|
176
|
-
if (!process.env.EXE_MCP_MODE) {
|
|
177
|
-
process.stderr.write(
|
|
178
|
-
"[database] WARN: Daemon unavailable \u2014 using direct SQLite (single-writer CLI mode).\n"
|
|
179
|
-
);
|
|
180
|
-
return _resilientClient;
|
|
181
|
-
}
|
|
182
|
-
process.stderr.write(
|
|
183
|
-
"[database] ERROR: Daemon is not running \u2014 refusing direct SQLite write access.\n[database] Direct writes from MCP processes bypass the single-writer gate and corrupt FTS5.\n[database] Restart the daemon: kill $(cat ~/.exe-os/exed.pid) && exe-os update\n"
|
|
184
|
-
);
|
|
185
|
-
throw new Error(
|
|
186
|
-
"Daemon not running. Direct SQLite writes from MCP processes are blocked to prevent FTS5 corruption. Restart daemon to restore service."
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// src/lib/reminders.ts
|
|
191
|
-
async function completeReminder(idOrText) {
|
|
192
|
-
const client = getClient();
|
|
193
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
194
|
-
let result = await client.execute({
|
|
195
|
-
sql: `SELECT id, text FROM reminders WHERE id = ? AND completed_at IS NULL`,
|
|
196
|
-
args: [idOrText]
|
|
197
|
-
});
|
|
198
|
-
if (result.rows.length === 0) {
|
|
199
|
-
result = await client.execute({
|
|
200
|
-
sql: `SELECT id, text FROM reminders WHERE completed_at IS NULL AND text LIKE '%' || ? || '%' LIMIT 1`,
|
|
201
|
-
args: [idOrText]
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
if (result.rows.length === 0) return null;
|
|
205
|
-
const row = result.rows[0];
|
|
206
|
-
const id = String(row.id);
|
|
207
|
-
await client.execute({
|
|
208
|
-
sql: `UPDATE reminders SET completed_at = ? WHERE id = ?`,
|
|
209
|
-
args: [now, id]
|
|
210
|
-
});
|
|
211
|
-
return { id, text: String(row.text), createdAt: "", dueDate: null, completedAt: now };
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// src/mcp/tools/complete-reminder.ts
|
|
215
|
-
function registerCompleteReminder(server) {
|
|
216
|
-
server.registerTool(
|
|
217
|
-
"complete_reminder",
|
|
218
|
-
{
|
|
219
|
-
title: "Complete Reminder",
|
|
220
|
-
description: "Mark a reminder as done. Accepts UUID or text substring.",
|
|
221
|
-
inputSchema: {
|
|
222
|
-
reminder_id: z.string().describe("Reminder UUID or text substring to match")
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
async ({ reminder_id }) => {
|
|
226
|
-
const reminder = await completeReminder(reminder_id);
|
|
227
|
-
if (!reminder) {
|
|
228
|
-
return {
|
|
229
|
-
content: [{ type: "text", text: `No active reminder matching "${reminder_id}".` }]
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
return {
|
|
233
|
-
content: [{ type: "text", text: `Reminder completed: "${reminder.text}"` }]
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
);
|
|
237
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
registerCompleteReminder
|
|
3
|
+
} from "../../chunk-O4VFZRA5.js";
|
|
4
|
+
import "../../chunk-4Y6QZBEO.js";
|
|
5
|
+
import "../../chunk-A2NZP64U.js";
|
|
6
|
+
import "../../chunk-4NYQAS33.js";
|
|
7
|
+
import "../../chunk-RUG3N6P4.js";
|
|
8
|
+
import "../../chunk-KVPG5UT6.js";
|
|
9
|
+
import "../../chunk-X2IMCCM5.js";
|
|
10
|
+
import "../../chunk-KFQGP6VL.js";
|
|
238
11
|
export {
|
|
239
12
|
registerCompleteReminder
|
|
240
13
|
};
|
|
@@ -1,225 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"use strict";
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
// src/lib/config.ts
|
|
16
|
-
import { readFile, writeFile } from "fs/promises";
|
|
17
|
-
import { readFileSync, existsSync as existsSync2, renameSync } from "fs";
|
|
18
|
-
import path from "path";
|
|
19
|
-
import os from "os";
|
|
20
|
-
function resolveDataDir() {
|
|
21
|
-
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
22
|
-
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
23
|
-
const newDir = path.join(os.homedir(), ".exe-os");
|
|
24
|
-
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
25
|
-
if (!existsSync2(newDir) && existsSync2(legacyDir)) {
|
|
26
|
-
try {
|
|
27
|
-
renameSync(legacyDir, newDir);
|
|
28
|
-
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
29
|
-
`);
|
|
30
|
-
} catch {
|
|
31
|
-
return legacyDir;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return newDir;
|
|
35
|
-
}
|
|
36
|
-
var EXE_AI_DIR, DB_PATH, MODELS_DIR, CONFIG_PATH, LEGACY_LANCE_PATH, CURRENT_CONFIG_VERSION, DEFAULT_CONFIG;
|
|
37
|
-
var init_config = __esm({
|
|
38
|
-
"src/lib/config.ts"() {
|
|
39
|
-
"use strict";
|
|
40
|
-
init_secure_files();
|
|
41
|
-
EXE_AI_DIR = resolveDataDir();
|
|
42
|
-
DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
43
|
-
MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
44
|
-
CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
45
|
-
LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
46
|
-
CURRENT_CONFIG_VERSION = 1;
|
|
47
|
-
DEFAULT_CONFIG = {
|
|
48
|
-
config_version: CURRENT_CONFIG_VERSION,
|
|
49
|
-
dbPath: DB_PATH,
|
|
50
|
-
modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
51
|
-
embeddingDim: 1024,
|
|
52
|
-
batchSize: 20,
|
|
53
|
-
flushIntervalMs: 1e4,
|
|
54
|
-
autoIngestion: true,
|
|
55
|
-
autoRetrieval: true,
|
|
56
|
-
searchMode: "hybrid",
|
|
57
|
-
hookSearchMode: "hybrid",
|
|
58
|
-
fileGrepEnabled: true,
|
|
59
|
-
splashEffect: true,
|
|
60
|
-
consolidationEnabled: true,
|
|
61
|
-
consolidationIntervalMs: 6 * 60 * 60 * 1e3,
|
|
62
|
-
consolidationModel: "claude-haiku-4-5-20251001",
|
|
63
|
-
consolidationMaxCallsPerRun: 20,
|
|
64
|
-
selfQueryRouter: true,
|
|
65
|
-
selfQueryModel: "claude-haiku-4-5-20251001",
|
|
66
|
-
rerankerEnabled: true,
|
|
67
|
-
scalingRoadmap: {
|
|
68
|
-
rerankerAutoTrigger: {
|
|
69
|
-
enabled: true,
|
|
70
|
-
broadQueryMinCardinality: 5e4,
|
|
71
|
-
fetchTopK: 150,
|
|
72
|
-
returnTopK: 5
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
graphRagEnabled: true,
|
|
76
|
-
wikiEnabled: false,
|
|
77
|
-
wikiUrl: "",
|
|
78
|
-
wikiApiKey: "",
|
|
79
|
-
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
80
|
-
wikiWorkspaceMapping: {},
|
|
81
|
-
wikiAutoUpdate: true,
|
|
82
|
-
wikiAutoUpdateThreshold: 0.5,
|
|
83
|
-
wikiAutoUpdateCreateNew: true,
|
|
84
|
-
skillLearning: true,
|
|
85
|
-
skillThreshold: 3,
|
|
86
|
-
skillModel: "claude-haiku-4-5-20251001",
|
|
87
|
-
exeHeartbeat: {
|
|
88
|
-
enabled: true,
|
|
89
|
-
intervalSeconds: 60,
|
|
90
|
-
staleInProgressThresholdHours: 2
|
|
91
|
-
},
|
|
92
|
-
sessionLifecycle: {
|
|
93
|
-
idleKillEnabled: true,
|
|
94
|
-
idleKillTicksRequired: 3,
|
|
95
|
-
idleKillIntercomAckWindowMs: 1e4,
|
|
96
|
-
maxAutoInstances: 10
|
|
97
|
-
},
|
|
98
|
-
autoUpdate: {
|
|
99
|
-
checkOnBoot: true,
|
|
100
|
-
autoInstall: false,
|
|
101
|
-
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
102
|
-
},
|
|
103
|
-
support: {
|
|
104
|
-
bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
|
|
105
|
-
},
|
|
106
|
-
orchestration: {
|
|
107
|
-
phase: "phase_1_coo",
|
|
108
|
-
phaseSetBy: "default"
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// src/mcp/tools/create-reminder.ts
|
|
115
|
-
import { z } from "zod";
|
|
116
|
-
|
|
117
|
-
// src/lib/reminders.ts
|
|
118
|
-
import crypto from "crypto";
|
|
119
|
-
|
|
120
|
-
// src/lib/database.ts
|
|
121
|
-
import { chmodSync as chmodSync2, existsSync as existsSync4, statSync, copyFileSync, unlinkSync as unlinkSync2, openSync, closeSync, mkdirSync as mkdirSync2 } from "fs";
|
|
122
|
-
import { createClient } from "@libsql/client";
|
|
123
|
-
import { homedir } from "os";
|
|
124
|
-
import { join } from "path";
|
|
125
|
-
|
|
126
|
-
// src/lib/employees.ts
|
|
127
|
-
init_config();
|
|
128
|
-
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
129
|
-
import { existsSync as existsSync3, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
|
|
130
|
-
import { execSync } from "child_process";
|
|
131
|
-
import path2 from "path";
|
|
132
|
-
import os2 from "os";
|
|
133
|
-
var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
|
|
134
|
-
var IDENTITY_DIR = path2.join(EXE_AI_DIR, "identity");
|
|
135
|
-
|
|
136
|
-
// src/lib/database-adapter.ts
|
|
137
|
-
import os3 from "os";
|
|
138
|
-
import path3 from "path";
|
|
139
|
-
import { createRequire } from "module";
|
|
140
|
-
import { pathToFileURL } from "url";
|
|
141
|
-
var BOOLEAN_COLUMNS_BY_TABLE = {
|
|
142
|
-
memories: /* @__PURE__ */ new Set(["has_error", "draft"]),
|
|
143
|
-
behaviors: /* @__PURE__ */ new Set(["active"]),
|
|
144
|
-
notifications: /* @__PURE__ */ new Set(["read"]),
|
|
145
|
-
users: /* @__PURE__ */ new Set(["has_personal_memory"])
|
|
146
|
-
};
|
|
147
|
-
var BOOLEAN_COLUMN_NAMES = new Set(
|
|
148
|
-
Object.values(BOOLEAN_COLUMNS_BY_TABLE).flatMap((cols) => [...cols])
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
// src/lib/database.ts
|
|
152
|
-
var _debugDb = process.env.EXE_DEBUG === "1";
|
|
153
|
-
var _resilientClient = null;
|
|
154
|
-
var _daemonClient = null;
|
|
155
|
-
var _adapterClient = null;
|
|
156
|
-
var DB_LOCK_PATH = join(homedir(), ".exe-os", "db.lock");
|
|
157
|
-
function getClient() {
|
|
158
|
-
if (!_adapterClient) {
|
|
159
|
-
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
160
|
-
}
|
|
161
|
-
if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
|
|
162
|
-
return _adapterClient;
|
|
163
|
-
}
|
|
164
|
-
if (process.env.EXE_IS_DAEMON === "1") {
|
|
165
|
-
return _resilientClient;
|
|
166
|
-
}
|
|
167
|
-
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
168
|
-
return _daemonClient;
|
|
169
|
-
}
|
|
170
|
-
if (!_resilientClient) {
|
|
171
|
-
return _adapterClient;
|
|
172
|
-
}
|
|
173
|
-
if (process.env.EXE_DB_READONLY === "1" || process.env.EXE_DB_DIRECT === "1") {
|
|
174
|
-
return _resilientClient;
|
|
175
|
-
}
|
|
176
|
-
if (!process.env.EXE_MCP_MODE) {
|
|
177
|
-
process.stderr.write(
|
|
178
|
-
"[database] WARN: Daemon unavailable \u2014 using direct SQLite (single-writer CLI mode).\n"
|
|
179
|
-
);
|
|
180
|
-
return _resilientClient;
|
|
181
|
-
}
|
|
182
|
-
process.stderr.write(
|
|
183
|
-
"[database] ERROR: Daemon is not running \u2014 refusing direct SQLite write access.\n[database] Direct writes from MCP processes bypass the single-writer gate and corrupt FTS5.\n[database] Restart the daemon: kill $(cat ~/.exe-os/exed.pid) && exe-os update\n"
|
|
184
|
-
);
|
|
185
|
-
throw new Error(
|
|
186
|
-
"Daemon not running. Direct SQLite writes from MCP processes are blocked to prevent FTS5 corruption. Restart daemon to restore service."
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// src/lib/reminders.ts
|
|
191
|
-
async function createReminder(text, dueDate) {
|
|
192
|
-
const client = getClient();
|
|
193
|
-
const id = crypto.randomUUID();
|
|
194
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
195
|
-
await client.execute({
|
|
196
|
-
sql: `INSERT INTO reminders (id, text, created_at, due_date) VALUES (?, ?, ?, ?)`,
|
|
197
|
-
args: [id, text, now, dueDate ?? null]
|
|
198
|
-
});
|
|
199
|
-
return { id, text, createdAt: now, dueDate: dueDate ?? null, completedAt: null };
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// src/mcp/tools/create-reminder.ts
|
|
203
|
-
function registerCreateReminder(server) {
|
|
204
|
-
server.registerTool(
|
|
205
|
-
"create_reminder",
|
|
206
|
-
{
|
|
207
|
-
title: "Create Reminder",
|
|
208
|
-
description: "Set a reminder for the founder. Shown in the boot brief every session.",
|
|
209
|
-
inputSchema: {
|
|
210
|
-
text: z.string().describe("What to remind about"),
|
|
211
|
-
due_date: z.string().optional().describe("Optional due date \u2014 ISO date (2026-04-01) or null for persistent")
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
async ({ text, due_date }) => {
|
|
215
|
-
const reminder = await createReminder(text, due_date);
|
|
216
|
-
const dueStr = reminder.dueDate ? ` (due: ${reminder.dueDate})` : "";
|
|
217
|
-
return {
|
|
218
|
-
content: [{ type: "text", text: `Reminder set: "${reminder.text}"${dueStr}` }]
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
);
|
|
222
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
registerCreateReminder
|
|
3
|
+
} from "../../chunk-P4HIF72O.js";
|
|
4
|
+
import "../../chunk-4Y6QZBEO.js";
|
|
5
|
+
import "../../chunk-A2NZP64U.js";
|
|
6
|
+
import "../../chunk-4NYQAS33.js";
|
|
7
|
+
import "../../chunk-RUG3N6P4.js";
|
|
8
|
+
import "../../chunk-KVPG5UT6.js";
|
|
9
|
+
import "../../chunk-X2IMCCM5.js";
|
|
10
|
+
import "../../chunk-KFQGP6VL.js";
|
|
223
11
|
export {
|
|
224
12
|
registerCreateReminder
|
|
225
13
|
};
|