@askexenow/exe-os 0.9.227 → 0.9.229
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-GJDG4CAW.js +24 -0
- package/dist/active-agent-WOP3ZHLN.js +25 -0
- package/dist/agent-context-ZPDQOAD2.js +9 -0
- package/dist/agent-heartbeat-AWTVGE4C.js +60 -0
- package/dist/agent-loop-7UM2ENGU.js +10 -0
- package/dist/agentic-ontology-ASORFII6.js +25 -0
- package/dist/asana-JN2UF47A.js +129 -0
- package/dist/assets/ghostty.conf +83 -0
- package/dist/assets/statusline-command.sh +44 -0
- package/dist/assets/tmux.conf +56 -0
- package/dist/assets/wezterm.lua +68 -0
- package/dist/backfill-metadata-JRWUECUS.js +596 -0
- package/dist/background-jobs-VTOMOTNA.js +25 -0
- package/dist/bash-XA65M6T6.js +8 -0
- package/dist/behaviors-36T3O2DC.js +24 -0
- package/dist/bin/age-ontology-load.js +85 -0
- package/dist/bin/agentic-ontology-backfill.js +84 -0
- package/dist/bin/agentic-reflection-backfill.js +45 -0
- package/dist/bin/agentic-semantic-label.js +193 -0
- package/dist/bin/backfill-conversations.js +399 -0
- package/dist/bin/backfill-responses.js +227 -0
- package/dist/bin/backfill-vectors.js +149 -0
- package/dist/bin/bulk-sync-postgres.js +92 -0
- package/dist/bin/cc-doctor.js +51 -0
- package/dist/bin/cleanup-stale-review-tasks.js +139 -0
- package/dist/bin/cli.js +1076 -0
- package/dist/bin/customer-readiness.js +389 -0
- package/dist/bin/deferred-daemon-restart.js +123 -0
- package/dist/bin/exe-agent-config.js +87 -0
- package/dist/bin/exe-agent.js +190 -0
- package/dist/bin/exe-assign.js +93 -0
- package/dist/bin/exe-boot.js +1114 -0
- package/dist/bin/exe-call.js +127 -0
- package/dist/bin/exe-cloud.js +484 -0
- package/dist/bin/exe-dispatch.js +72 -0
- package/dist/bin/exe-doctor.js +48 -0
- package/dist/bin/exe-export-behaviors.js +48 -0
- package/dist/bin/exe-forget.js +204 -0
- package/dist/bin/exe-gateway.js +1137 -0
- package/dist/bin/exe-healthcheck.js +14 -0
- package/dist/bin/exe-heartbeat.js +233 -0
- package/dist/bin/exe-kill.js +126 -0
- package/dist/bin/exe-launch-agent.js +678 -0
- package/dist/bin/exe-new-employee.js +160 -0
- package/dist/bin/exe-pending-messages.js +60 -0
- package/dist/bin/exe-pending-notifications.js +107 -0
- package/dist/bin/exe-pending-reviews.js +81 -0
- package/dist/bin/exe-rename.js +219 -0
- package/dist/bin/exe-repo-drift.js +95 -0
- package/dist/bin/exe-review.js +251 -0
- package/dist/bin/exe-search.js +65 -0
- package/dist/bin/exe-session-cleanup.js +331 -0
- package/dist/bin/exe-settings.js +364 -0
- package/dist/bin/exe-start-codex.js +404 -0
- package/dist/bin/exe-start-opencode.js +233 -0
- package/dist/bin/exe-start.sh +194 -0
- package/dist/bin/exe-status.js +34 -0
- package/dist/bin/exe-support.js +17 -0
- package/dist/bin/exe-team.js +83 -0
- package/dist/bin/generate-hook-manifest.js +30 -0
- package/dist/bin/git-sweep.js +74 -0
- package/dist/bin/graph-backfill.js +78 -0
- package/dist/bin/graph-export.js +66 -0
- package/dist/bin/graph-layer-benchmark.js +113 -0
- package/dist/bin/import-history.js +84 -0
- package/dist/bin/install-launchd.js +41 -0
- package/dist/bin/install.js +422 -0
- package/dist/bin/intercom-check.js +137 -0
- package/dist/bin/list-providers.js +128 -0
- package/dist/bin/mcp-sessions.js +194 -0
- package/dist/bin/orchestration-metrics.js +61 -0
- package/dist/bin/postgres-agentic-reflection-backfill.js +123 -0
- package/dist/bin/postgres-agentic-semantic-backfill.js +126 -0
- package/dist/bin/pre-build-guard.js +98 -0
- package/dist/bin/pre-publish.js +224 -0
- package/dist/bin/registry-proxy.js +44 -0
- package/dist/bin/scan-tasks.js +265 -0
- package/dist/bin/setup.js +19 -0
- package/dist/bin/shard-migrate.js +162 -0
- package/dist/bin/stack-update.js +372 -0
- package/dist/bin/update.js +354 -0
- package/dist/bin/verify-stack.js +389 -0
- package/dist/bin/vps-backup.js +170 -0
- package/dist/bin/vps-health-gate.js +232 -0
- package/dist/branding-I2TDZFUH.js +97 -0
- package/dist/browser-sanitizer-MRSSEJZE.js +229 -0
- package/dist/browser-session-store-RF45DSJR.js +232 -0
- package/dist/capacity-monitor-HZPAFQZH.js +48 -0
- package/dist/catchup-brief-CDG4KD5Y.js +150 -0
- package/dist/chunk-26PUEPOY.js +290 -0
- package/dist/chunk-2VZ6SY2R.js +142 -0
- package/dist/chunk-36DAY227.js +297 -0
- package/dist/chunk-3A5BZETG.js +463 -0
- package/dist/chunk-3DQ3IPPO.js +50 -0
- package/dist/chunk-3JP3FY33.js +258 -0
- package/dist/chunk-3MK3R5E6.js +85 -0
- package/dist/chunk-46SQTBQW.js +207 -0
- package/dist/chunk-4JERP7NT.js +132 -0
- package/dist/chunk-557C2IGL.js +0 -0
- package/dist/chunk-5BS5ELMC.js +85 -0
- package/dist/chunk-5NFBE376.js +391 -0
- package/dist/chunk-6A7P74QV.js +53 -0
- package/dist/chunk-6KFICEAT.js +20 -0
- package/dist/chunk-6MP5NOOR.js +151 -0
- package/dist/chunk-6Y4B3QF6.js +19 -0
- package/dist/chunk-7BPKHR4O.js +171 -0
- package/dist/chunk-7DNX45WB.js +244 -0
- package/dist/chunk-7EZCYO76.js +128 -0
- package/dist/chunk-7NNXBDOO.js +541 -0
- package/dist/chunk-ADJXHBEU.js +667 -0
- package/dist/chunk-AHMUF6RO.js +147 -0
- package/dist/chunk-AJWFPKQS.js +573 -0
- package/dist/chunk-AVE2B4DQ.js +140 -0
- package/dist/chunk-AZSCW64F.js +190 -0
- package/dist/chunk-BZAQ4UG7.js +614 -0
- package/dist/chunk-CHCA3ZM2.js +167 -0
- package/dist/chunk-CHT3THVG.js +240 -0
- package/dist/chunk-CLGB3FGL.js +48 -0
- package/dist/chunk-CQDSTBKT.js +1919 -0
- package/dist/chunk-CTFKTUYN.js +627 -0
- package/dist/chunk-CVYC6DUW.js +78 -0
- package/dist/chunk-CX6GL3ZJ.js +274 -0
- package/dist/chunk-D4IVTUNN.js +377 -0
- package/dist/chunk-DGOGCPYU.js +390 -0
- package/dist/chunk-DKRTWILB.js +81 -0
- package/dist/chunk-DLXTKVBO.js +183 -0
- package/dist/chunk-E6ORBQHP.js +225 -0
- package/dist/chunk-ECGTESAP.js +236 -0
- package/dist/chunk-ECQBG62Y.js +363 -0
- package/dist/chunk-ECSNSHZ7.js +431 -0
- package/dist/chunk-EEAKFEEA.js +221 -0
- package/dist/chunk-EGWPJQRQ.js +159 -0
- package/dist/chunk-EHKIJPVX.js +30 -0
- package/dist/chunk-EIT6J37V.js +119 -0
- package/dist/chunk-EQSQ4HBW.js +9 -0
- package/dist/chunk-ETSREHYC.js +55 -0
- package/dist/chunk-F2GUJW5O.js +1090 -0
- package/dist/chunk-F7LU65PQ.js +33 -0
- package/dist/chunk-FF62UWIJ.js +90 -0
- package/dist/chunk-FIPU4BDF.js +123 -0
- package/dist/chunk-FLSASUV3.js +177 -0
- package/dist/chunk-FWFFZGSC.js +94 -0
- package/dist/chunk-FXU7JOXK.js +6 -0
- package/dist/chunk-G4LLKD4Z.js +147 -0
- package/dist/chunk-GFCQJZTO.js +1051 -0
- package/dist/chunk-GGV3PFUW.js +41 -0
- package/dist/chunk-GJV3WDWM.js +14 -0
- package/dist/chunk-GKM7RYN3.js +1020 -0
- package/dist/chunk-GNHN5HRQ.js +40 -0
- package/dist/chunk-GP6G6EQI.js +632 -0
- package/dist/chunk-GUMRIUI5.js +63 -0
- package/dist/chunk-GVP5U4WL.js +113 -0
- package/dist/chunk-HF25XPZE.js +83 -0
- package/dist/chunk-HFJNYSTQ.js +1088 -0
- package/dist/chunk-HO5SBL4B.js +97 -0
- package/dist/chunk-HOKOOBDL.js +52 -0
- package/dist/chunk-HQMEOIUJ.js +69 -0
- package/dist/chunk-HTCBLSIB.js +813 -0
- package/dist/chunk-HYZV25LY.js +34 -0
- package/dist/chunk-I2CDSGQW.js +280 -0
- package/dist/chunk-I7AW4237.js +251 -0
- package/dist/chunk-IKTMX6N7.js +495 -0
- package/dist/chunk-IQT43SDJ.js +357 -0
- package/dist/chunk-IW53DAYO.js +210 -0
- package/dist/chunk-JBKA7F5V.js +2017 -0
- package/dist/chunk-JJNXFW7M.js +330 -0
- package/dist/chunk-JKGAJAM7.js +214 -0
- package/dist/chunk-JQ6TLNIV.js +133 -0
- package/dist/chunk-JSH5MAMM.js +284 -0
- package/dist/chunk-KCUYRZSX.js +72 -0
- package/dist/chunk-KH5Y6RR4.js +360 -0
- package/dist/chunk-L24HYX62.js +498 -0
- package/dist/chunk-L3TB7CC3.js +170 -0
- package/dist/chunk-LHOIY5LQ.js +58 -0
- package/dist/chunk-LWVZLTMD.js +412 -0
- package/dist/chunk-LYH5HE24.js +73 -0
- package/dist/chunk-M37HYGAG.js +346 -0
- package/dist/chunk-MJXEOKIW.js +54 -0
- package/dist/chunk-MKVFPQH2.js +1051 -0
- package/dist/chunk-MLXJ5EZG.js +90 -0
- package/dist/chunk-MP2AFCGL.js +53 -0
- package/dist/chunk-MSCB4ACU.js +356 -0
- package/dist/chunk-MVW62NIZ.js +20 -0
- package/dist/chunk-MZIGUUDQ.js +42 -0
- package/dist/chunk-N5RRQOAC.js +134 -0
- package/dist/chunk-NFB4N53K.js +159 -0
- package/dist/chunk-NGP6LSV2.js +25 -0
- package/dist/chunk-NGVOA6ZQ.js +84 -0
- package/dist/chunk-NRFVWJHP.js +575 -0
- package/dist/chunk-NUVDSQNY.js +1345 -0
- package/dist/chunk-O377P7GM.js +100 -0
- package/dist/chunk-OE6SYHTC.js +157 -0
- package/dist/chunk-OHPRXEUA.js +75 -0
- package/dist/chunk-OI6MVDSY.js +33 -0
- package/dist/chunk-ONKIWA3R.js +249 -0
- package/dist/chunk-OPU3NYOO.js +55 -0
- package/dist/chunk-ORCCI2VV.js +140 -0
- package/dist/chunk-OSMMWGJ2.js +204 -0
- package/dist/chunk-OYNKIAVW.js +181 -0
- package/dist/chunk-PRKVT4KN.js +90 -0
- package/dist/chunk-PW2YH2ZR.js +403 -0
- package/dist/chunk-PWMMIGVQ.js +332 -0
- package/dist/chunk-Q3V7K4ME.js +149 -0
- package/dist/chunk-Q5GUJUDW.js +348 -0
- package/dist/chunk-Q7RGLXQO.js +574 -0
- package/dist/chunk-Q7XA3SQ4.js +13097 -0
- package/dist/chunk-QGGH7LOU.js +93 -0
- package/dist/chunk-QHIGMP2M.js +237 -0
- package/dist/chunk-QI4IXJN7.js +132 -0
- package/dist/chunk-R2E4TV5V.js +56 -0
- package/dist/chunk-R4WMF32C.js +81 -0
- package/dist/chunk-R5U7XKVJ.js +16 -0
- package/dist/chunk-RJT7H2KR.js +349 -0
- package/dist/chunk-RMPAMMYW.js +70 -0
- package/dist/chunk-RTXGUKY3.js +731 -0
- package/dist/chunk-SH45SJQW.js +0 -0
- package/dist/chunk-SUNYJ6YE.js +204 -0
- package/dist/chunk-SVXDCELZ.js +163 -0
- package/dist/chunk-TMEE7AT7.js +72 -0
- package/dist/chunk-TNTFEWU5.js +361 -0
- package/dist/chunk-TOQZO2XX.js +76 -0
- package/dist/chunk-UBMGUX6T.js +3753 -0
- package/dist/chunk-UJOSFVWG.js +3511 -0
- package/dist/chunk-UPSZ2VKV.js +197 -0
- package/dist/chunk-UV4ZHXUP.js +38 -0
- package/dist/chunk-UWISNP4U.js +1073 -0
- package/dist/chunk-V3QAAU2U.js +129 -0
- package/dist/chunk-V4TZI6EO.js +60 -0
- package/dist/chunk-W6TC6A73.js +77 -0
- package/dist/chunk-WA67SFFZ.js +227 -0
- package/dist/chunk-WWPX2LLP.js +262 -0
- package/dist/chunk-WZ2RVKRO.js +121 -0
- package/dist/chunk-X2Z5GT3V.js +118 -0
- package/dist/chunk-X3AVWFWW.js +294 -0
- package/dist/chunk-XEKO37NM.js +43 -0
- package/dist/chunk-YADYM2DE.js +42 -0
- package/dist/chunk-YCTCKUZE.js +128 -0
- package/dist/chunk-YGAAZN3E.js +47 -0
- package/dist/chunk-YKIPAQZG.js +333 -0
- package/dist/chunk-YSU7JB7H.js +0 -0
- package/dist/chunk-YZFZDJWZ.js +107 -0
- package/dist/chunk-YZKJLGWL.js +169 -0
- package/dist/chunk-Z3TT2SVJ.js +135 -0
- package/dist/chunk-Z3ZCLTP7.js +382 -0
- package/dist/chunk-ZVSG2KKG.js +106 -0
- package/dist/co-activation-AJZTQHI3.js +71 -0
- package/dist/co-occurrence-FGEJIMMV.js +73 -0
- package/dist/code-context-index-KHUYATRB.js +29 -0
- package/dist/content-extractor-CUJOBFBU.js +9 -0
- package/dist/conversation-entity-extractor-TW4W57K4.js +114 -0
- package/dist/conversation-wiki-populator-GNFRTS7X.js +105 -0
- package/dist/core-memory-R7QBLN4C.js +110 -0
- package/dist/crdt-sync-K25AKQAD.js +33 -0
- package/dist/crm-bridge-NG5WJMGF.js +19 -0
- package/dist/crm-webhook-3ODT32F7.js +10 -0
- package/dist/cto-delegation-gate-4XDMTK6H.js +205 -0
- package/dist/daemon-auth-WFQMMNSD.js +13 -0
- package/dist/daemon-orchestration-5I7RLXCP.js +133 -0
- package/dist/daemon-protocol-4FUHT5NH.js +17 -0
- package/dist/db-backup-MSQKO6M5.js +25 -0
- package/dist/devtools-J4QYYO7U.js +8 -0
- package/dist/discord-7UHIZNJ3.js +7 -0
- package/dist/dispatch-ack-RMVFHO4I.js +13 -0
- package/dist/dreaming-UL7T5ZXA.js +12 -0
- package/dist/email-T6PQUUY6.js +137 -0
- package/dist/entity-boost-7MB2IYAE.js +332 -0
- package/dist/exe-drift-2KHRPBUK.js +67 -0
- package/dist/exe-export-UZN6EFOR.js +72 -0
- package/dist/exe-import-OSM3U36A.js +75 -0
- package/dist/exe-key-OG35WPBA.js +573 -0
- package/dist/exe-org-JRBBON5H.js +73 -0
- package/dist/exe-snapshot-7TQIN7XI.js +145 -0
- package/dist/factory-UQSRMKJW.js +67 -0
- package/dist/fast-db-init-4VXDSFUY.js +7 -0
- package/dist/file-edit-YORRFENG.js +8 -0
- package/dist/file-read-RMQFDE5L.js +8 -0
- package/dist/file-write-VO4MQW5Y.js +8 -0
- package/dist/founder-context-3N6BMG7B.js +96 -0
- package/dist/gateway/index.js +148 -0
- package/dist/gateway-client-V7NH35Q2.js +11 -0
- package/dist/git-staleness-JW57ZGEJ.js +109 -0
- package/dist/git-task-sweep-HYAPIM44.js +39 -0
- package/dist/glob-2LXRC3F5.js +7 -0
- package/dist/global-procedures-NY3W7L5Q.js +19 -0
- package/dist/graph-auto-extract-5GZ34NXS.js +161 -0
- package/dist/graph-query-YZ4RZEIL.js +26 -0
- package/dist/graph-rag-S5SBJW5J.js +29 -0
- package/dist/grep-OY7KCRLQ.js +7 -0
- package/dist/hook-integrity-OKSYTGVP.js +89 -0
- package/dist/hooks/bug-report-worker.js +179 -0
- package/dist/hooks/codex-stop-task-finalizer.js +258 -0
- package/dist/hooks/commit-complete.js +162 -0
- package/dist/hooks/error-recall.js +129 -0
- package/dist/hooks/exe-heartbeat-hook.js +78 -0
- package/dist/hooks/ingest-worker.js +51 -0
- package/dist/hooks/ingest.js +491 -0
- package/dist/hooks/instructions-loaded.js +119 -0
- package/dist/hooks/manifest.json +25 -0
- package/dist/hooks/notification.js +67 -0
- package/dist/hooks/post-compact.js +138 -0
- package/dist/hooks/post-tool-combined.js +152 -0
- package/dist/hooks/pre-compact.js +159 -0
- package/dist/hooks/pre-tool-use.js +512 -0
- package/dist/hooks/prompt-submit.js +699 -0
- package/dist/hooks/session-end.js +482 -0
- package/dist/hooks/session-start.js +362 -0
- package/dist/hooks/stop.js +332 -0
- package/dist/hooks/subagent-stop.js +85 -0
- package/dist/hooks/summary-worker.js +298 -0
- package/dist/hooks-RPTZV5KX.js +9 -0
- package/dist/imessage-CE5USLTI.js +7 -0
- package/dist/index.js +60 -0
- package/dist/installer-GMIVB2JS.js +341 -0
- package/dist/installer-OBYQ6O3C.js +295 -0
- package/dist/installer-UAMA6ZVH.js +37 -0
- package/dist/intercom-queue-USIXVVJQ.js +17 -0
- package/dist/key-backup-status-TVFMMWTT.js +39 -0
- package/dist/keyword-extractor-OGQRRVTB.js +11 -0
- package/dist/lib/agent-config.js +30 -0
- package/dist/lib/cloud-sync.js +103 -0
- package/dist/lib/cloudflare-dns.js +13 -0
- package/dist/lib/config.js +32 -0
- package/dist/lib/consolidation.js +38 -0
- package/dist/lib/crypto.js +13 -0
- package/dist/lib/database.js +31 -0
- package/dist/lib/db-daemon-client.js +141 -0
- package/dist/lib/db.js +31 -0
- package/dist/lib/device-registry.js +70 -0
- package/dist/lib/embed-worker.js +165 -0
- package/dist/lib/embedder.js +19 -0
- package/dist/lib/employee-templates.js +34 -0
- package/dist/lib/employees.js +63 -0
- package/dist/lib/error-detector.js +16 -0
- package/dist/lib/exe-daemon-client.js +25 -0
- package/dist/lib/exe-daemon.js +4454 -0
- package/dist/lib/file-grep.js +242 -0
- package/dist/lib/hybrid-search.js +28 -0
- package/dist/lib/identity-templates.js +650 -0
- package/dist/lib/identity.js +19 -0
- package/dist/lib/keychain.js +17 -0
- package/dist/lib/license.js +35 -0
- package/dist/lib/messaging.js +59 -0
- package/dist/lib/post-tool-memory.js +13 -0
- package/dist/lib/registry-proxy.js +15 -0
- package/dist/lib/reminders.js +16 -0
- package/dist/lib/runtime-table.js +9 -0
- package/dist/lib/schedules.js +24 -0
- package/dist/lib/session-registry.js +21 -0
- package/dist/lib/session-wrappers.js +7 -0
- package/dist/lib/skill-learning.js +29 -0
- package/dist/lib/status-brief.js +7 -0
- package/dist/lib/store.js +43 -0
- package/dist/lib/task-router.js +22 -0
- package/dist/lib/tasks.js +66 -0
- package/dist/lib/tmux-routing.js +70 -0
- package/dist/lib/tmux-status.js +29 -0
- package/dist/lib/tmux-transport.js +7 -0
- package/dist/lib/token-spend.js +12 -0
- package/dist/lib/transport.js +10 -0
- package/dist/lib/ws-auth.js +11 -0
- package/dist/lib/ws-client.js +190 -0
- package/dist/license-gate-7QVCYARF.js +14 -0
- package/dist/mcp/register-tools.js +102 -0
- package/dist/mcp/server.js +370 -0
- package/dist/mcp/tools/complete-reminder.js +13 -0
- package/dist/mcp/tools/create-reminder.js +13 -0
- package/dist/mcp/tools/create-task.js +34 -0
- package/dist/mcp/tools/deactivate-behavior.js +16 -0
- package/dist/mcp/tools/list-reminders.js +13 -0
- package/dist/mcp/tools/list-tasks.js +33 -0
- package/dist/mcp/tools/send-message.js +33 -0
- package/dist/mcp/tools/update-task.js +32 -0
- package/dist/mcp-diagnostics-5T5OZ52S.js +200 -0
- package/dist/mcp-disconnect-tracker-VINUVEZJ.js +79 -0
- package/dist/mcp-http-config-YPF4WGU5.js +26 -0
- package/dist/memory-cards-XHZEOX7Q.js +173 -0
- package/dist/memory-graph-extractor-J3K7B4GC.js +16 -0
- package/dist/memory-poisoning-defense-I76FGNHK.js +224 -0
- package/dist/memory-queue-WEVFXPZO.js +19 -0
- package/dist/memory-queue-client-5XBHYAQR.js +15 -0
- package/dist/memory-reflection-YJGI6IDI.js +237 -0
- package/dist/message-queue-client-FUKX43JD.js +92 -0
- package/dist/notifications-H4F77BYT.js +44 -0
- package/dist/oauth-server-CCZPDTZJ.js +437 -0
- package/dist/orchestration-events-LXVPJL6S.js +24 -0
- package/dist/orchestration-phase-HXRKMZXM.js +23 -0
- package/dist/orchestrator-HXUZ6LYM.js +32 -0
- package/dist/permission-presets-UPVLJWZD.js +25 -0
- package/dist/permissions-C4EMHPDD.js +14 -0
- package/dist/pg-ssl-GD3332YS.js +7 -0
- package/dist/pipeline-router-QRJQWMFF.js +12 -0
- package/dist/plan-limits-NFQVRHS5.js +25 -0
- package/dist/prediction-log-C2BD3AHR.js +120 -0
- package/dist/preferences-5ARPMYE7.js +10 -0
- package/dist/preflight-TZOGLBZU.js +287 -0
- package/dist/project-boot-JIGOSGCN.js +254 -0
- package/dist/project-name-4SKOH2UO.js +10 -0
- package/dist/projection-worker-JZQTL4NU.js +877 -0
- package/dist/push-notifications-3GNJ5SZS.js +15 -0
- package/dist/reranker-U6DEAT4S.js +19 -0
- package/dist/review-gate-I66GDXNR.js +120 -0
- package/dist/review-polling-W2S3XAAU.js +123 -0
- package/dist/runtime/index.js +129 -0
- package/dist/self-query-router-QMK5ZSZR.js +188 -0
- package/dist/session-events-MNWHGZY5.js +35 -0
- package/dist/session-kill-telemetry-JHSI7D3F.js +28 -0
- package/dist/session-scope-SMT225X3.js +85 -0
- package/dist/setup-wizard-RBUTEZB2.js +12 -0
- package/dist/shard-manager-ON2WWCRM.js +29 -0
- package/dist/signal-KF2LIO7Y.js +7 -0
- package/dist/signal-paths-5ZTWCBUX.js +19 -0
- package/dist/skill-refinement-LKJHUW2U.js +156 -0
- package/dist/slack-JRDUD5Z7.js +7 -0
- package/dist/stack-update-ZIMV4OEQ.js +50 -0
- package/dist/steward-gate-6IKH335D.js +12 -0
- package/dist/support-outbox-HIJVUDA2.js +206 -0
- package/dist/task-enforcement-UIEWTA6H.js +292 -0
- package/dist/task-scanner-5OQBNC2N.js +11 -0
- package/dist/task-scope-DNQURKOQ.js +34 -0
- package/dist/tasks-crud-CLAYZZ4O.js +76 -0
- package/dist/tasks-review-OHR2P4QE.js +46 -0
- package/dist/telegram-COCYUCT7.js +7 -0
- package/dist/telemetry-QKWQKAUC.js +9 -0
- package/dist/telemetry-upload-APVDPCEV.js +609 -0
- package/dist/token-budget-6IQNYKLR.js +83 -0
- package/dist/tool-capability-index-UUNF7VPA.js +10 -0
- package/dist/tool-gates-6A6LE4DZ.js +14 -0
- package/dist/tool-gates-RNWEH5IK.js +13 -0
- package/dist/tool-registry-KL24CAFR.js +11 -0
- package/dist/tool-telemetry-SJSIL5M5.js +17 -0
- package/dist/tui/App.js +10223 -0
- package/dist/tui-data-L6XG4Z52.js +161 -0
- package/dist/typed-messages-53Q7L3LB.js +17 -0
- package/dist/update-check-5IL5I3E2.js +11 -0
- package/dist/webhook-VXGIH7PN.js +96 -0
- package/dist/webhook-pipe-4WPFGGFD.js +114 -0
- package/dist/whatsapp-PSMKCDS7.js +9 -0
- package/dist/whatsapp-accounts-4OKWFRWL.js +15 -0
- package/dist/whatsapp-config-ZG5LX4O4.js +125 -0
- package/dist/wiki-acl-XCT6QQGP.js +111 -0
- package/dist/wiki-client-KE622HKY.js +157 -0
- package/dist/worker-gate-GFKXZ6V5.js +21 -0
- package/dist/workflow-engine-6HTKI2ZE.js +28 -0
- package/dist/working-memory-Z3EB3FW6.js +77 -0
- package/dist/worktree-BO7QQ32T.js +25 -0
- package/package.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
inferSemanticLabel,
|
|
4
|
+
stableId
|
|
5
|
+
} from "../chunk-WWPX2LLP.js";
|
|
6
|
+
import {
|
|
7
|
+
pgSslConfig
|
|
8
|
+
} from "../chunk-EQSQ4HBW.js";
|
|
9
|
+
import {
|
|
10
|
+
politeBatchPause,
|
|
11
|
+
startManagedJob
|
|
12
|
+
} from "../chunk-X3AVWFWW.js";
|
|
13
|
+
import "../chunk-TNTFEWU5.js";
|
|
14
|
+
import "../chunk-LYH5HE24.js";
|
|
15
|
+
import "../chunk-R5U7XKVJ.js";
|
|
16
|
+
|
|
17
|
+
// src/bin/postgres-agentic-semantic-backfill.ts
|
|
18
|
+
import { Client } from "pg";
|
|
19
|
+
function arg(name) {
|
|
20
|
+
const i = process.argv.indexOf(name);
|
|
21
|
+
return i >= 0 ? process.argv[i + 1] : void 0;
|
|
22
|
+
}
|
|
23
|
+
async function ensureSchema(client) {
|
|
24
|
+
await client.query(`CREATE TABLE IF NOT EXISTS memory.agent_semantic_labels (
|
|
25
|
+
id text PRIMARY KEY,
|
|
26
|
+
source_memory_id text NOT NULL,
|
|
27
|
+
event_id text,
|
|
28
|
+
labeler text NOT NULL,
|
|
29
|
+
schema_version integer NOT NULL DEFAULT 1,
|
|
30
|
+
confidence double precision NOT NULL DEFAULT 0,
|
|
31
|
+
labels jsonb NOT NULL,
|
|
32
|
+
created_at timestamp(3) NOT NULL,
|
|
33
|
+
updated_at timestamp(3) NOT NULL
|
|
34
|
+
)`);
|
|
35
|
+
await client.query(`CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_memory ON memory.agent_semantic_labels (source_memory_id, labeler)`);
|
|
36
|
+
await client.query(`CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_event ON memory.agent_semantic_labels (event_id)`);
|
|
37
|
+
}
|
|
38
|
+
function scrubJson(value) {
|
|
39
|
+
return JSON.stringify(value).replace(/\u0000/g, "").replace(/\\u0000/gi, "").replace(/\\\\u0000/gi, "").replace(/\\u00[0-1][0-9a-f]/gi, " ");
|
|
40
|
+
}
|
|
41
|
+
async function main() {
|
|
42
|
+
const job = startManagedJob({ type: "postgres-agentic-semantic-backfill", name: "Postgres semantic label backfill", lowPriority: true });
|
|
43
|
+
if (!job) {
|
|
44
|
+
process.stderr.write("[postgres-agentic-semantic-backfill] Another Postgres semantic backfill is already running.\n");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const url = process.env.DATABASE_URL || process.env.EXED_DATABASE_URL;
|
|
48
|
+
if (!url) throw new Error("DATABASE_URL or EXED_DATABASE_URL is required");
|
|
49
|
+
const limit = Number(arg("--limit") ?? "20000");
|
|
50
|
+
const project = arg("--project");
|
|
51
|
+
const client = new Client({ connectionString: url, ...pgSslConfig() });
|
|
52
|
+
await client.connect();
|
|
53
|
+
try {
|
|
54
|
+
await ensureSchema(client);
|
|
55
|
+
const params = project ? [limit, project] : [limit];
|
|
56
|
+
const where = project ? "WHERE project_name = $2" : "";
|
|
57
|
+
const result = await client.query(`SELECT id, agent_id, agent_role, session_id, timestamp::text, tool_name,
|
|
58
|
+
project_name, has_error, raw_text, version, task_id, intent, null::text as outcome, domain, null::text as trajectory
|
|
59
|
+
FROM memory.memory_records ${where}
|
|
60
|
+
ORDER BY timestamp DESC LIMIT $1`, params);
|
|
61
|
+
let count = 0;
|
|
62
|
+
for (const row of result.rows) {
|
|
63
|
+
const label = inferSemanticLabel({ ...row, has_error: row.has_error ? 1 : 0 });
|
|
64
|
+
const eventId = stableId(`event:${row.id}`);
|
|
65
|
+
const labelJson = scrubJson(label);
|
|
66
|
+
try {
|
|
67
|
+
await client.query(`INSERT INTO memory.agent_semantic_labels
|
|
68
|
+
(id, source_memory_id, event_id, labeler, schema_version, confidence, labels, created_at, updated_at)
|
|
69
|
+
VALUES ($1,$2,$3,$4,$5,$6,to_jsonb($7::text),now(),now())
|
|
70
|
+
ON CONFLICT (id) DO UPDATE SET confidence = excluded.confidence, labels = excluded.labels,
|
|
71
|
+
updated_at = excluded.updated_at`, [
|
|
72
|
+
stableId(`semantic:${row.id}:${label.labeler}:${label.schemaVersion}`),
|
|
73
|
+
row.id,
|
|
74
|
+
eventId,
|
|
75
|
+
label.labeler,
|
|
76
|
+
label.schemaVersion,
|
|
77
|
+
label.confidence,
|
|
78
|
+
labelJson
|
|
79
|
+
]);
|
|
80
|
+
} catch {
|
|
81
|
+
const minimal = scrubJson({
|
|
82
|
+
labeler: label.labeler,
|
|
83
|
+
schemaVersion: label.schemaVersion,
|
|
84
|
+
eventType: label.eventType,
|
|
85
|
+
intention: label.intention,
|
|
86
|
+
outcome: label.outcome,
|
|
87
|
+
impact: label.impact,
|
|
88
|
+
confidence: label.confidence,
|
|
89
|
+
goals: label.goals,
|
|
90
|
+
summary: label.summary,
|
|
91
|
+
sanitized: true
|
|
92
|
+
});
|
|
93
|
+
await client.query(`INSERT INTO memory.agent_semantic_labels
|
|
94
|
+
(id, source_memory_id, event_id, labeler, schema_version, confidence, labels, created_at, updated_at)
|
|
95
|
+
VALUES ($1,$2,$3,$4,$5,$6,$7::jsonb,now(),now())
|
|
96
|
+
ON CONFLICT (id) DO UPDATE SET confidence = excluded.confidence, labels = excluded.labels,
|
|
97
|
+
updated_at = excluded.updated_at`, [
|
|
98
|
+
stableId(`semantic:${row.id}:${label.labeler}:${label.schemaVersion}`),
|
|
99
|
+
row.id,
|
|
100
|
+
eventId,
|
|
101
|
+
label.labeler,
|
|
102
|
+
label.schemaVersion,
|
|
103
|
+
label.confidence,
|
|
104
|
+
minimal
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
count++;
|
|
108
|
+
if (count % 5e3 === 0) {
|
|
109
|
+
process.stderr.write(`[postgres-agentic-semantic-backfill] labeled ${count}
|
|
110
|
+
`);
|
|
111
|
+
job.update({ current: count, total: limit, label: `Labeled ${count}/${limit}` });
|
|
112
|
+
await politeBatchPause(1e3);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
process.stderr.write(`[postgres-agentic-semantic-backfill] Complete: ${count} semantic labels.
|
|
116
|
+
`);
|
|
117
|
+
job.complete();
|
|
118
|
+
} finally {
|
|
119
|
+
await client.end();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
main().catch((err) => {
|
|
123
|
+
process.stderr.write(`[postgres-agentic-semantic-backfill] FATAL: ${err instanceof Error ? err.message : String(err)}
|
|
124
|
+
`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/bin/pre-build-guard.ts
|
|
4
|
+
import { execSync } from "child_process";
|
|
5
|
+
import { lstatSync } from "fs";
|
|
6
|
+
import path from "path";
|
|
7
|
+
function isSymlinked() {
|
|
8
|
+
try {
|
|
9
|
+
const npmRoot = execSync("npm root -g", { encoding: "utf8" }).trim();
|
|
10
|
+
const exeOsPath = path.join(npmRoot, "exe-os");
|
|
11
|
+
const stat = lstatSync(exeOsPath);
|
|
12
|
+
return stat.isSymbolicLink();
|
|
13
|
+
} catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function countMcpProcesses() {
|
|
18
|
+
try {
|
|
19
|
+
const result = execSync("pgrep -f 'node.*mcp/server.js' || true", {
|
|
20
|
+
encoding: "utf8"
|
|
21
|
+
});
|
|
22
|
+
return result.trim().split("\n").filter(Boolean).length;
|
|
23
|
+
} catch {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function isWorktree() {
|
|
28
|
+
try {
|
|
29
|
+
const gitDir = execSync("git rev-parse --git-dir 2>/dev/null", {
|
|
30
|
+
encoding: "utf8"
|
|
31
|
+
}).trim();
|
|
32
|
+
return gitDir.includes(".git/worktrees/");
|
|
33
|
+
} catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isBlockedAgent() {
|
|
38
|
+
const agentId = process.env.AGENT_ID?.toLowerCase();
|
|
39
|
+
if (!agentId) return null;
|
|
40
|
+
const agentRole = process.env.AGENT_ROLE?.toLowerCase();
|
|
41
|
+
if (agentRole === "coo" || agentRole === "cto") return null;
|
|
42
|
+
return agentId;
|
|
43
|
+
}
|
|
44
|
+
function main() {
|
|
45
|
+
if (isWorktree()) {
|
|
46
|
+
console.error(
|
|
47
|
+
"\n\u{1F6AB} [exe-os] BLOCKED: Cannot run deploy from a git worktree."
|
|
48
|
+
);
|
|
49
|
+
console.error(
|
|
50
|
+
" Deploying from a worktree re-registers all CC hooks pointing at the"
|
|
51
|
+
);
|
|
52
|
+
console.error(
|
|
53
|
+
" worktree dist/. When the worktree is deleted, every hook breaks."
|
|
54
|
+
);
|
|
55
|
+
console.error(
|
|
56
|
+
" Use `npm run build` only. Deploy runs from the main repo root.\n"
|
|
57
|
+
);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const blockedAgent = isBlockedAgent();
|
|
61
|
+
if (blockedAgent) {
|
|
62
|
+
console.error(
|
|
63
|
+
`
|
|
64
|
+
\u{1F6AB} [exe-os] BLOCKED: Agent "${blockedAgent}" cannot run deploy.`
|
|
65
|
+
);
|
|
66
|
+
console.error(
|
|
67
|
+
" Only the coordinator (COO) and CTO may deploy. Engineers and"
|
|
68
|
+
);
|
|
69
|
+
console.error(
|
|
70
|
+
" specialists use `npm run build` only.\n"
|
|
71
|
+
);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
if (!isSymlinked()) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const mcpCount = countMcpProcesses();
|
|
78
|
+
if (mcpCount === 0) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
console.error(
|
|
82
|
+
`
|
|
83
|
+
\u26A0\uFE0F [exe-os] DEV MODE: ${mcpCount} active MCP server process(es) detected.`
|
|
84
|
+
);
|
|
85
|
+
console.error(
|
|
86
|
+
" Rebuilding will overwrite dist/ files they reference, causing disconnections."
|
|
87
|
+
);
|
|
88
|
+
console.error(
|
|
89
|
+
" MCP servers will auto-reconnect on the next tool call, but in-flight"
|
|
90
|
+
);
|
|
91
|
+
console.error(
|
|
92
|
+
" operations may fail with SQLITE_BUSY during the reconnect storm."
|
|
93
|
+
);
|
|
94
|
+
console.error(
|
|
95
|
+
" Consider: wait for idle agents, or restart the MCP server after build.\n"
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
main();
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
PLATFORM_PROCEDURES
|
|
4
|
+
} from "../chunk-5NFBE376.js";
|
|
5
|
+
import "../chunk-R5U7XKVJ.js";
|
|
6
|
+
|
|
7
|
+
// src/bin/pre-publish.ts
|
|
8
|
+
import { readFileSync as readFileSync2 } from "fs";
|
|
9
|
+
import path2 from "path";
|
|
10
|
+
import { fileURLToPath } from "url";
|
|
11
|
+
|
|
12
|
+
// src/lib/release-notes.ts
|
|
13
|
+
import { spawnSync } from "child_process";
|
|
14
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
15
|
+
import path from "path";
|
|
16
|
+
var MAX_RELEASE_NOTE_VERSIONS = 5;
|
|
17
|
+
var MAX_RELEASE_NOTE_ITEMS_PER_CATEGORY = 25;
|
|
18
|
+
function trimList(items) {
|
|
19
|
+
return [...new Set(items)].slice(0, MAX_RELEASE_NOTE_ITEMS_PER_CATEGORY);
|
|
20
|
+
}
|
|
21
|
+
function trimReleaseNote(note) {
|
|
22
|
+
return {
|
|
23
|
+
...note,
|
|
24
|
+
features: trimList(note.features),
|
|
25
|
+
fixes: trimList(note.fixes),
|
|
26
|
+
security: trimList(note.security),
|
|
27
|
+
other: trimList(note.other),
|
|
28
|
+
migration_notes: trimList(note.migration_notes)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function compareVersionsDesc(a, b) {
|
|
32
|
+
const parse = (version2) => version2.split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
33
|
+
const av = parse(a);
|
|
34
|
+
const bv = parse(b);
|
|
35
|
+
const max = Math.max(av.length, bv.length);
|
|
36
|
+
for (let i = 0; i < max; i++) {
|
|
37
|
+
const diff = (bv[i] ?? 0) - (av[i] ?? 0);
|
|
38
|
+
if (diff !== 0) return diff;
|
|
39
|
+
}
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
function compactReleaseNotes(data) {
|
|
43
|
+
const versions = Object.keys(data.notes).sort(compareVersionsDesc).slice(0, MAX_RELEASE_NOTE_VERSIONS);
|
|
44
|
+
const notes2 = {};
|
|
45
|
+
for (const version2 of versions) {
|
|
46
|
+
notes2[version2] = trimReleaseNote(data.notes[version2]);
|
|
47
|
+
}
|
|
48
|
+
return { current: data.current, notes: notes2 };
|
|
49
|
+
}
|
|
50
|
+
function git(args, cwd) {
|
|
51
|
+
const result = spawnSync("git", args, { cwd, encoding: "utf8", timeout: 1e4 });
|
|
52
|
+
return result.status === 0 ? result.stdout.trim() : "";
|
|
53
|
+
}
|
|
54
|
+
function categorizeCommit(message) {
|
|
55
|
+
const firstLine = message.split("\n")[0].trim();
|
|
56
|
+
const summary = firstLine.replace(/^(feat|fix|security|chore|refactor|test|docs|perf|ci|build)(\(.+?\))?:\s*/, "");
|
|
57
|
+
if (/^feat/i.test(firstLine)) return { category: "features", summary };
|
|
58
|
+
if (/^fix/i.test(firstLine)) return { category: "fixes", summary };
|
|
59
|
+
if (/^security/i.test(firstLine) || /security/i.test(summary)) return { category: "security", summary };
|
|
60
|
+
if (/^(chore|refactor|test|docs|perf|ci|build)/i.test(firstLine)) return { category: "other", summary };
|
|
61
|
+
return { category: "other", summary };
|
|
62
|
+
}
|
|
63
|
+
function generateReleaseNotes(repoRoot2, currentVersion) {
|
|
64
|
+
const tags = git(["tag", "--sort=-v:refname", "--list", "v*"], repoRoot2).split("\n").filter(Boolean);
|
|
65
|
+
const currentTag = `v${currentVersion}`;
|
|
66
|
+
const prevTag = tags.find((t) => t !== currentTag) ?? "";
|
|
67
|
+
const range = prevTag ? `${prevTag}..HEAD` : "HEAD~50..HEAD";
|
|
68
|
+
const log = git(["log", range, "--oneline", "--no-merges", "--format=%s"], repoRoot2);
|
|
69
|
+
const commits = log.split("\n").filter(Boolean);
|
|
70
|
+
const note = {
|
|
71
|
+
version: currentVersion,
|
|
72
|
+
date: (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
|
|
73
|
+
features: [],
|
|
74
|
+
fixes: [],
|
|
75
|
+
security: [],
|
|
76
|
+
other: [],
|
|
77
|
+
migration_notes: []
|
|
78
|
+
};
|
|
79
|
+
for (const msg of commits) {
|
|
80
|
+
const { category, summary } = categorizeCommit(msg);
|
|
81
|
+
if (summary && !note[category].includes(summary)) {
|
|
82
|
+
note[category].push(summary);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const fullLog = git(["log", range, "--no-merges", "--format=%B---END---"], repoRoot2);
|
|
86
|
+
const fullMessages = fullLog.split("---END---").filter(Boolean);
|
|
87
|
+
for (const body of fullMessages) {
|
|
88
|
+
const lines = body.split("\n");
|
|
89
|
+
for (const line of lines) {
|
|
90
|
+
const trimmed = line.trim();
|
|
91
|
+
const migMatch = trimmed.match(/^(?:MIGRATION|BREAKING|ACTION):\s*(.+)/i);
|
|
92
|
+
if (migMatch?.[1] && !note.migration_notes.includes(migMatch[1])) {
|
|
93
|
+
note.migration_notes.push(migMatch[1]);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return note;
|
|
98
|
+
}
|
|
99
|
+
function loadReleaseNotes(repoRoot2) {
|
|
100
|
+
const filePath = path.join(repoRoot2, "release-notes.json");
|
|
101
|
+
if (existsSync(filePath)) {
|
|
102
|
+
try {
|
|
103
|
+
return JSON.parse(readFileSync(filePath, "utf8"));
|
|
104
|
+
} catch {
|
|
105
|
+
return { current: "", notes: {} };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { current: "", notes: {} };
|
|
109
|
+
}
|
|
110
|
+
function saveReleaseNotes(repoRoot2, data) {
|
|
111
|
+
const filePath = path.join(repoRoot2, "release-notes.json");
|
|
112
|
+
writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
|
|
113
|
+
}
|
|
114
|
+
function updateReleaseNotes(repoRoot2, currentVersion) {
|
|
115
|
+
const data = loadReleaseNotes(repoRoot2);
|
|
116
|
+
const note = generateReleaseNotes(repoRoot2, currentVersion);
|
|
117
|
+
data.current = currentVersion;
|
|
118
|
+
data.notes[currentVersion] = trimReleaseNote(note);
|
|
119
|
+
saveReleaseNotes(repoRoot2, compactReleaseNotes(data));
|
|
120
|
+
return data.notes[currentVersion];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/lib/platform-audit.ts
|
|
124
|
+
function extractToolMeta() {
|
|
125
|
+
return [
|
|
126
|
+
{ name: "memory", description: "Recall, store, commit, search, consolidate memories", actions: ["recall", "ask_team", "store", "commit", "search", "session_context", "consolidate", "cardinality", "supersede"] },
|
|
127
|
+
{ name: "task", description: "Create, list, get, update, close, checkpoint tasks", actions: ["create", "list", "get", "update", "close", "checkpoint", "resume"] },
|
|
128
|
+
{ name: "behavior", description: "Store, list, deactivate behavioral patterns", actions: ["store", "list", "deactivate"] },
|
|
129
|
+
{ name: "identity", description: "Get, update agent identities", actions: ["get", "update", "list"] },
|
|
130
|
+
{ name: "message", description: "Send messages between agents", actions: ["send", "acknowledge"] },
|
|
131
|
+
{ name: "reminder", description: "Create, list, complete reminders", actions: ["create", "list", "complete"] },
|
|
132
|
+
{ name: "document", description: "Ingest, list, purge, rerank documents", actions: ["ingest", "list", "purge", "rerank", "set_importance"] },
|
|
133
|
+
{ name: "graph", description: "Query relationships, entity neighbors, hot entities, export graph", actions: ["query_relationships", "entity_neighbors", "hot_entities", "stats", "export", "merge_entities"] },
|
|
134
|
+
{ name: "wiki", description: "List and get wiki pages from exe-wiki", actions: ["list", "get"] },
|
|
135
|
+
{ name: "gateway", description: "Send WhatsApp messages, query conversations", actions: ["send_whatsapp", "query_conversations"] },
|
|
136
|
+
{ name: "config", description: "Manage triggers, starter packs, orchestration, skills", actions: ["create_trigger", "list_triggers", "apply_starter_pack", "load_skill", "deploy_client", "export_orchestration", "import_orchestration"] },
|
|
137
|
+
{ name: "crm", description: "Read-only CRM access from exe-db", actions: ["list_people", "get_person", "list_tables", "describe_table"] },
|
|
138
|
+
{ name: "raw_data", description: "Read-only access to exe-db raw events landing pad", actions: ["list_sources", "query", "get"] },
|
|
139
|
+
{ name: "code_context", description: "Codebase search, trace, blast_radius with semantic vector search", actions: ["index", "index_embed", "search", "trace", "blast_radius", "stats"] },
|
|
140
|
+
{ name: "decision", description: "Store and retrieve authoritative decisions by domain", actions: ["store", "get"] },
|
|
141
|
+
{ name: "support", description: "File bug reports and feature requests to AskExe", actions: ["create_bug", "create_feature", "list_my_bugs", "list_my_features"] },
|
|
142
|
+
{ name: "diagnostics", description: "Health checks, update status, cloud status, key management", actions: ["healthcheck", "doctor", "status_brief", "check_update", "stack_update_check", "cloud_status", "tool_search"] },
|
|
143
|
+
{ name: "query_company_brain", description: "Search across VPS Company Brain: raw events, CRM, wiki, gateway conversations", actions: ["search", "list_sources", "sql"] },
|
|
144
|
+
{ name: "company_actions", description: "Execute company actions through gateway connectors" },
|
|
145
|
+
{ name: "company_procedure", description: "Store and manage organization-wide procedures", actions: ["store", "list", "deactivate"] }
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
function isCovered(toolName, action, procedures) {
|
|
149
|
+
const searchTerms = [toolName.toLowerCase()];
|
|
150
|
+
if (action) searchTerms.push(action.toLowerCase());
|
|
151
|
+
return procedures.some((proc) => {
|
|
152
|
+
const text = (proc.title + " " + proc.content).toLowerCase();
|
|
153
|
+
return searchTerms.every((term) => text.includes(term));
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function generateProcedure(tool, action) {
|
|
157
|
+
const toolLabel = action ? `${tool.name}:${action}` : tool.name;
|
|
158
|
+
const actionList = tool.actions?.join(", ") ?? "";
|
|
159
|
+
let content;
|
|
160
|
+
if (action) {
|
|
161
|
+
content = `The ${tool.name} tool supports action="${action}". ${tool.description}. Use this when you need to ${action.replace(/_/g, " ")} within the ${tool.name} domain. Available actions: ${actionList}. Call via MCP: ${tool.name}(action="${action}", ...).`;
|
|
162
|
+
} else {
|
|
163
|
+
content = `${tool.description}. ` + (actionList ? `Available actions: ${actionList}. ` : "") + `This tool is available via MCP. Use it when the task requires ${tool.name.replace(/_/g, " ")} operations.`;
|
|
164
|
+
}
|
|
165
|
+
if (content.length > 500) content = content.slice(0, 497) + "...";
|
|
166
|
+
return {
|
|
167
|
+
title: `How to use ${toolLabel}`,
|
|
168
|
+
content,
|
|
169
|
+
priority: "p2",
|
|
170
|
+
domain: "tools"
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function auditPlatformProcedures() {
|
|
174
|
+
const tools = extractToolMeta();
|
|
175
|
+
const gaps2 = [];
|
|
176
|
+
for (const tool of tools) {
|
|
177
|
+
if (!isCovered(tool.name, void 0, PLATFORM_PROCEDURES)) {
|
|
178
|
+
gaps2.push({
|
|
179
|
+
toolName: tool.name,
|
|
180
|
+
description: tool.description,
|
|
181
|
+
generatedProcedure: generateProcedure(tool)
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return gaps2;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// src/bin/pre-publish.ts
|
|
189
|
+
var __dirname = path2.dirname(fileURLToPath(import.meta.url));
|
|
190
|
+
var repoRoot = path2.resolve(__dirname, "../..");
|
|
191
|
+
var pkg = JSON.parse(readFileSync2(path2.join(repoRoot, "package.json"), "utf8"));
|
|
192
|
+
var version = pkg.version;
|
|
193
|
+
console.log(`
|
|
194
|
+
[pre-publish] exe-os v${version}
|
|
195
|
+
`);
|
|
196
|
+
console.log("[pre-publish] Generating release notes...");
|
|
197
|
+
var notes = updateReleaseNotes(repoRoot, version);
|
|
198
|
+
console.log(` Features: ${notes.features.length}`);
|
|
199
|
+
console.log(` Fixes: ${notes.fixes.length}`);
|
|
200
|
+
console.log(` Security: ${notes.security.length}`);
|
|
201
|
+
if (notes.features.length > 0) {
|
|
202
|
+
for (const f of notes.features.slice(0, 5)) console.log(` + ${f}`);
|
|
203
|
+
if (notes.features.length > 5) console.log(` ... and ${notes.features.length - 5} more`);
|
|
204
|
+
}
|
|
205
|
+
console.log("\n[pre-publish] Auditing platform procedures...");
|
|
206
|
+
var gaps = auditPlatformProcedures();
|
|
207
|
+
if (gaps.length === 0) {
|
|
208
|
+
console.log(" \u2713 All MCP tools have matching platform procedures.");
|
|
209
|
+
} else {
|
|
210
|
+
console.log(` \u2717 ${gaps.length} tool(s) without platform procedures:`);
|
|
211
|
+
for (const gap of gaps) {
|
|
212
|
+
console.log(` - ${gap.toolName}: ${gap.description}`);
|
|
213
|
+
console.log(` Suggested: "${gap.generatedProcedure.title}"`);
|
|
214
|
+
}
|
|
215
|
+
console.log("\n These tools ship without COO instructions.");
|
|
216
|
+
console.log(" Add procedures to platform-procedures.ts before publish.");
|
|
217
|
+
}
|
|
218
|
+
console.log("\n[pre-publish] Release summary:");
|
|
219
|
+
console.log(` Features: ${notes.features.length}, Fixes: ${notes.fixes.length}, Security: ${notes.security.length}`);
|
|
220
|
+
if (notes.migration_notes.length > 0) {
|
|
221
|
+
console.log(` \u26A0 Migration notes: ${notes.migration_notes.length}`);
|
|
222
|
+
for (const m of notes.migration_notes) console.log(` \u2192 ${m}`);
|
|
223
|
+
}
|
|
224
|
+
console.log("\n[pre-publish] Done.\n");
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
registryProxyOptionsFromEnv,
|
|
4
|
+
runRegistryProxy
|
|
5
|
+
} from "../chunk-SVXDCELZ.js";
|
|
6
|
+
import {
|
|
7
|
+
isMainModule
|
|
8
|
+
} from "../chunk-6Y4B3QF6.js";
|
|
9
|
+
import "../chunk-R5U7XKVJ.js";
|
|
10
|
+
|
|
11
|
+
// src/bin/registry-proxy.ts
|
|
12
|
+
function printHelp() {
|
|
13
|
+
console.log(`exe-os registry-proxy \u2014 authenticated pull-through proxy for AskExe customer images
|
|
14
|
+
|
|
15
|
+
Environment:
|
|
16
|
+
EXE_REGISTRY_PROXY_PORT=3201
|
|
17
|
+
EXE_REGISTRY_PROXY_HOST=0.0.0.0
|
|
18
|
+
EXE_REGISTRY_PROXY_UPSTREAM=https://ghcr.io
|
|
19
|
+
EXE_REGISTRY_PROXY_UPSTREAM_USERNAME=<github-user>
|
|
20
|
+
EXE_REGISTRY_PROXY_UPSTREAM_TOKEN=<askexe-ghcr-read-token>
|
|
21
|
+
EXE_REGISTRY_PROXY_PULL_TOKENS=<customer-token-1,customer-token-2>
|
|
22
|
+
EXE_REGISTRY_PROXY_ALLOWED_NAMESPACE=askexe
|
|
23
|
+
|
|
24
|
+
Docker image shape for clients:
|
|
25
|
+
update.askexe.com/askexe/exe-os:v0.9.3
|
|
26
|
+
update.askexe.com/askexe/exe-crm:v0.9.3
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
async function main(args = process.argv.slice(2)) {
|
|
30
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
31
|
+
printHelp();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
await runRegistryProxy(registryProxyOptionsFromEnv());
|
|
35
|
+
}
|
|
36
|
+
if (isMainModule(import.meta.url) && (process.argv[1] ?? "").includes("registry-proxy")) {
|
|
37
|
+
main().catch((err) => {
|
|
38
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
main
|
|
44
|
+
};
|