@askexenow/exe-os 0.9.299 → 0.9.301
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/deploy/compose/.env.customer.example +1 -1
- package/deploy/compose/.env.example +1 -1
- package/deploy/compose/docker-compose.yml +31 -5
- package/deploy/compose/erp-nginx/nginx.conf +6 -3
- package/deploy/compose/generate-env.ts +1 -1
- package/deploy/compose/observability/otel-collector-config.yaml +10 -1
- package/deploy/compose/setup.sh +1 -1
- package/dist/active-agent-56J56WW5.js +27 -0
- package/dist/active-agent-UNJO6AJ2.js +27 -0
- package/dist/active-agent-VDWK7TES.js +28 -0
- package/dist/active-agent-Y5LSIMVC.js +28 -0
- package/dist/agentic-ontology-MZ4WHFDE.js +25 -0
- package/dist/agentic-ontology-QEV7GI3T.js +25 -0
- package/dist/assets/com.askexe.exed.plist +6 -5
- package/dist/backfill-metadata-IHKI5GXV.js +600 -0
- package/dist/backfill-metadata-RQZ4BN7G.js +600 -0
- package/dist/backfill-metadata-ZU3SZNBD.js +600 -0
- package/dist/behaviors-A3L5CWMK.js +46 -0
- package/dist/behaviors-G4KWGS24.js +46 -0
- package/dist/behaviors-WO67R6C4.js +46 -0
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +6 -6
- package/dist/bin/backfill-responses.js +6 -6
- package/dist/bin/backfill-vectors.js +8 -8
- package/dist/bin/bulk-sync-postgres.js +13 -7
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +10 -10
- package/dist/bin/cli.js +16 -16
- package/dist/bin/deferred-daemon-restart.js +1 -1
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +10 -10
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +36 -21
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +13 -7
- package/dist/bin/exe-dispatch.js +10 -10
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +5 -5
- package/dist/bin/exe-heartbeat.js +10 -10
- package/dist/bin/exe-kill.js +13 -13
- package/dist/bin/exe-launch-agent.js +29 -19
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +11 -11
- package/dist/bin/exe-pending-notifications.js +10 -10
- package/dist/bin/exe-pending-reviews.js +10 -10
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +12 -12
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +15 -15
- package/dist/bin/exe-settings.js +13 -7
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +11 -11
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/exe-watchdog.js +3 -3
- package/dist/bin/git-sweep.js +11 -11
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install-launchd.js +7 -3
- package/dist/bin/install.js +19 -15
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/pre-publish.js +24 -1
- package/dist/bin/scan-tasks.js +10 -10
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +123 -3
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/capability-cards-VTGDTOZ4.js +89 -0
- package/dist/capability-cards-XAQSL26B.js +89 -0
- package/dist/capacity-monitor-6MQLFFQT.js +51 -0
- package/dist/capacity-monitor-BB3LKJLE.js +51 -0
- package/dist/capacity-monitor-G2MAJPRP.js +51 -0
- package/dist/catchup-brief-BQSL5M5S.js +175 -0
- package/dist/catchup-brief-COALBX6L.js +175 -0
- package/dist/catchup-brief-VBGEJQRS.js +175 -0
- package/dist/cc-binary-detect-B5JDCJ5J.js +19 -0
- package/dist/chunk-22LDUTY7.js +14597 -0
- package/dist/chunk-24JVDLQJ.js +345 -0
- package/dist/chunk-24M4AJPG.js +128 -0
- package/dist/chunk-2B7RCTPT.js +85 -0
- package/dist/chunk-2QBA6YE6.js +127 -0
- package/dist/chunk-2RGDEBZC.js +731 -0
- package/dist/chunk-2T3OYZMR.js +1158 -0
- package/dist/chunk-32DBQWR5.js +333 -0
- package/dist/chunk-3ABY3QDX.js +199 -0
- package/dist/chunk-3EOPMTG2.js +128 -0
- package/dist/chunk-3G3ECFB5.js +668 -0
- package/dist/chunk-3LHOFGHT.js +280 -0
- package/dist/chunk-3NS4V4JW.js +382 -0
- package/dist/chunk-3NYY2NZ3.js +836 -0
- package/dist/chunk-3RA62PNQ.js +58 -0
- package/dist/chunk-3ROUD5WA.js +97 -0
- package/dist/chunk-3RY2ARDN.js +129 -0
- package/dist/chunk-3XRS5AVV.js +567 -0
- package/dist/chunk-3Y5IRIRU.js +290 -0
- package/dist/chunk-3YK7X5FD.js +1186 -0
- package/dist/chunk-3ZWWUKBI.js +210 -0
- package/dist/chunk-463G3VAH.js +122 -0
- package/dist/chunk-4L6PVYFE.js +54 -0
- package/dist/chunk-4LC7BFI2.js +76 -0
- package/dist/chunk-4O67LBMK.js +377 -0
- package/dist/chunk-4OIU3N6U.js +167 -0
- package/dist/chunk-4Z3FWLOE.js +836 -0
- package/dist/chunk-5BAU4T5G.js +208 -0
- package/dist/chunk-5FP7YHCG.js +1158 -0
- package/dist/chunk-5SYYMNPE.js +30 -0
- package/dist/chunk-5TO5PH7O.js +304 -0
- package/dist/chunk-5U3JZP62.js +1352 -0
- package/dist/chunk-5VNFXIGF.js +85 -0
- package/dist/chunk-5XD2Y463.js +402 -0
- package/dist/chunk-63AENHJC.js +123 -0
- package/dist/chunk-673IFJYB.js +731 -0
- package/dist/chunk-6UVUJNLY.js +1186 -0
- package/dist/chunk-7AWH47AR.js +448 -0
- package/dist/chunk-7KPWYWYL.js +290 -0
- package/dist/chunk-7P4B6AEP.js +227 -0
- package/dist/chunk-7URNGDEY.js +2145 -0
- package/dist/chunk-7VHOALNC.js +244 -0
- package/dist/chunk-ADZQBZOX.js +122 -0
- package/dist/chunk-APSZAEDO.js +1186 -0
- package/dist/chunk-ASHF6VO4.js +2265 -0
- package/dist/chunk-ASJHCAVL.js +38 -0
- package/dist/chunk-BT2LEHIW.js +448 -0
- package/dist/chunk-BTS5QUWB.js +50 -0
- package/dist/chunk-BWJDJ3BS.js +604 -0
- package/dist/chunk-CME46VWP.js +150 -0
- package/dist/chunk-D3ICCKXY.js +54 -0
- package/dist/chunk-D3IOU3NO.js +377 -0
- package/dist/chunk-DFGXRKI2.js +221 -0
- package/dist/chunk-DICIFTCS.js +150 -0
- package/dist/chunk-DIFI5JDC.js +76 -0
- package/dist/chunk-DO65VHQZ.js +128 -0
- package/dist/chunk-DPOIJ5SM.js +284 -0
- package/dist/chunk-E2OMUBXQ.js +567 -0
- package/dist/chunk-ECMXIV6N.js +97 -0
- package/dist/chunk-EDMVA3PT.js +727 -0
- package/dist/chunk-F5OSXH4A.js +4388 -0
- package/dist/chunk-F5OWHPRG.js +236 -0
- package/dist/chunk-F7MZA3QP.js +199 -0
- package/dist/chunk-FAZNXNA5.js +33 -0
- package/dist/chunk-FCHG5RC4.js +197 -0
- package/dist/chunk-FFKSPZO2.js +157 -0
- package/dist/chunk-FNHYH5U6.js +331 -0
- package/dist/chunk-FRNXQSB4.js +134 -0
- package/dist/chunk-FTAASABV.js +362 -0
- package/dist/chunk-FWPDAQ6Q.js +1350 -0
- package/dist/chunk-FZB73QOI.js +210 -0
- package/dist/chunk-GBL5QSTM.js +197 -0
- package/dist/chunk-GJBR6QLD.js +630 -0
- package/dist/chunk-GRSYAHKI.js +535 -0
- package/dist/chunk-GRXWINOW.js +244 -0
- package/dist/chunk-GUPNVUG5.js +348 -0
- package/dist/chunk-GY66UPMX.js +167 -0
- package/dist/chunk-HCCG67BY.js +43 -0
- package/dist/chunk-HCSZZXZZ.js +197 -0
- package/dist/chunk-HNGNZU62.js +240 -0
- package/dist/chunk-HP2D5LIE.js +214 -0
- package/dist/chunk-HUABQHDC.js +1352 -0
- package/dist/chunk-HYKO2LNW.js +157 -0
- package/dist/chunk-IFL6DG2K.js +181 -0
- package/dist/chunk-IKPQRHVQ.js +304 -0
- package/dist/chunk-J5HFRVNW.js +362 -0
- package/dist/chunk-J6SD7LT2.js +171 -0
- package/dist/chunk-JCWA3X6A.js +402 -0
- package/dist/chunk-JHPK33IP.js +2162 -0
- package/dist/chunk-JURL2S27.js +128 -0
- package/dist/chunk-JWGDH5I2.js +127 -0
- package/dist/chunk-KBXQFXYM.js +567 -0
- package/dist/chunk-KGY5QIOJ.js +1350 -0
- package/dist/chunk-KLES22FB.js +1094 -0
- package/dist/chunk-KPUYYOFS.js +122 -0
- package/dist/chunk-KY43UELJ.js +331 -0
- package/dist/chunk-L32V4O5Z.js +58 -0
- package/dist/chunk-LAFARYU5.js +456 -0
- package/dist/chunk-LC7ETNTJ.js +1350 -0
- package/dist/chunk-LEJ5FKIK.js +55 -0
- package/dist/chunk-LNLLCAI4.js +377 -0
- package/dist/chunk-LQWZYMNU.js +448 -0
- package/dist/chunk-LSDXEHKL.js +381 -0
- package/dist/chunk-LY3SOO73.js +76 -0
- package/dist/chunk-M6CIHXXB.js +159 -0
- package/dist/chunk-MJOQ35DX.js +427 -0
- package/dist/chunk-MO5HER5Y.js +345 -0
- package/dist/chunk-MS2EOZJQ.js +290 -0
- package/dist/chunk-MUIMJGSQ.js +128 -0
- package/dist/chunk-MY4TGLT6.js +284 -0
- package/dist/chunk-N3ARGCVG.js +345 -0
- package/dist/chunk-N4XG2M2U.js +735 -0
- package/dist/chunk-N72JNFJ4.js +535 -0
- package/dist/chunk-NJMPNYBS.js +427 -0
- package/dist/chunk-NM3AUMFE.js +2145 -0
- package/dist/chunk-NPPQ3TR4.js +735 -0
- package/dist/chunk-NTWF4DAF.js +581 -0
- package/dist/chunk-NXL3VKXM.js +331 -0
- package/dist/chunk-OJACH2JF.js +128 -0
- package/dist/chunk-OMSLHEEF.js +456 -0
- package/dist/chunk-OO4IFABD.js +382 -0
- package/dist/chunk-OYIP3QVN.js +167 -0
- package/dist/chunk-P2IOW54H.js +668 -0
- package/dist/chunk-P5KXQ3RN.js +731 -0
- package/dist/chunk-P5UXP53T.js +81 -0
- package/dist/chunk-PH6VRRFR.js +395 -0
- package/dist/chunk-Q3GKOF7Z.js +85 -0
- package/dist/chunk-Q65NCNL4.js +1352 -0
- package/dist/chunk-QIGS2LRT.js +735 -0
- package/dist/chunk-QKBN3CY2.js +381 -0
- package/dist/chunk-QNNAVMQH.js +1094 -0
- package/dist/chunk-QODDW4YI.js +171 -0
- package/dist/chunk-QPAYPTSH.js +2162 -0
- package/dist/chunk-QRWDJ5RI.js +381 -0
- package/dist/chunk-RBFZCHVB.js +105 -0
- package/dist/chunk-RCEULTPF.js +185 -0
- package/dist/chunk-RCGHXBCX.js +630 -0
- package/dist/chunk-ROSCLRTH.js +204 -0
- package/dist/chunk-RYAOSGUW.js +227 -0
- package/dist/chunk-S2SPGHPY.js +38 -0
- package/dist/chunk-S73ZAJ2S.js +262 -0
- package/dist/chunk-SBPEWD7Z.js +171 -0
- package/dist/chunk-SDPUWZP5.js +333 -0
- package/dist/chunk-SJ4UF7YK.js +1094 -0
- package/dist/chunk-SOZ7D77I.js +204 -0
- package/dist/chunk-SVLSHDNL.js +54 -0
- package/dist/chunk-SVUYBT5N.js +262 -0
- package/dist/chunk-T7PTLVJV.js +284 -0
- package/dist/chunk-TDX2LK2M.js +240 -0
- package/dist/chunk-TGUSLO4B.js +50 -0
- package/dist/chunk-TPJH6PE6.js +1158 -0
- package/dist/chunk-TVW7EDOJ.js +382 -0
- package/dist/chunk-TYRUIE6P.js +58 -0
- package/dist/chunk-U5RKGLV6.js +50 -0
- package/dist/chunk-UFGTHBHP.js +127 -0
- package/dist/chunk-ULCYWCPI.js +1079 -0
- package/dist/chunk-UN5EPVBN.js +14597 -0
- package/dist/chunk-URLH7ZVR.js +70 -0
- package/dist/chunk-USYRTGR7.js +402 -0
- package/dist/chunk-V4ABCEHM.js +30 -0
- package/dist/chunk-V6LOEOXG.js +3372 -0
- package/dist/chunk-VAZOVAW4.js +2162 -0
- package/dist/chunk-VEUQVKKT.js +185 -0
- package/dist/chunk-VIDDJ5RF.js +214 -0
- package/dist/chunk-VKCNXOQ6.js +214 -0
- package/dist/chunk-VNB4ROYG.js +348 -0
- package/dist/chunk-VWUQFZFB.js +395 -0
- package/dist/chunk-W77GRCNA.js +85 -0
- package/dist/chunk-WB2B25UM.js +230 -0
- package/dist/chunk-WCUZX7F7.js +204 -0
- package/dist/chunk-WL5RMOZQ.js +362 -0
- package/dist/chunk-WPAXAOHD.js +1079 -0
- package/dist/chunk-WVMG4ZRH.js +14597 -0
- package/dist/chunk-WYVOTRRZ.js +129 -0
- package/dist/chunk-XABJRAUW.js +3346 -0
- package/dist/chunk-XQQ7D4I4.js +85 -0
- package/dist/chunk-YDFY6YCH.js +280 -0
- package/dist/chunk-YGUMRYCN.js +33 -0
- package/dist/chunk-YHJPTIPR.js +836 -0
- package/dist/chunk-YJSP5PPG.js +128 -0
- package/dist/chunk-YLKS7KKC.js +2145 -0
- package/dist/chunk-YOMETWOJ.js +4388 -0
- package/dist/chunk-YU3KEVCO.js +333 -0
- package/dist/chunk-Z4FVFSE3.js +81 -0
- package/dist/chunk-Z4TLSNUW.js +244 -0
- package/dist/chunk-ZDPU3JTF.js +221 -0
- package/dist/chunk-ZDY4LYAJ.js +81 -0
- package/dist/chunk-ZG33AACD.js +70 -0
- package/dist/chunk-ZKHPZ6KN.js +181 -0
- package/dist/chunk-ZO2TM5N5.js +97 -0
- package/dist/chunk-ZP6T5K6I.js +535 -0
- package/dist/chunk-ZR6ZJT32.js +123 -0
- package/dist/chunk-ZSUACDQC.js +4388 -0
- package/dist/co-activation-JGF5YIDU.js +74 -0
- package/dist/co-activation-XM25BLZM.js +74 -0
- package/dist/co-occurrence-CKEMDPWO.js +95 -0
- package/dist/co-occurrence-HLLC6GT2.js +95 -0
- package/dist/co-occurrence-W2LIAPHI.js +95 -0
- package/dist/code-context-index-FCL47WKE.js +30 -0
- package/dist/conversation-entity-extractor-WC2RU6RS.js +114 -0
- package/dist/core-memory-CRSR2PSL.js +110 -0
- package/dist/core-memory-VSKFRMEV.js +110 -0
- package/dist/core-memory-ZDA76EU3.js +110 -0
- package/dist/crdt-sync-6VH2YDVY.js +33 -0
- package/dist/crdt-sync-BJKZB6T6.js +33 -0
- package/dist/crm-webhook-E5PAFAUN.js +10 -0
- package/dist/crm-webhook-RXFPZJXP.js +10 -0
- package/dist/crm-webhook-Z26LEFKG.js +10 -0
- package/dist/cto-delegation-gate-45IBLPTK.js +280 -0
- package/dist/cto-delegation-gate-EMY6ZZ2F.js +280 -0
- package/dist/cto-delegation-gate-SF4EUB2Q.js +280 -0
- package/dist/daemon-orchestration-VB3BLYIT.js +143 -0
- package/dist/daemon-orchestration-W66UYGUD.js +143 -0
- package/dist/daemon-orchestration-Y5Y6YNE3.js +143 -0
- package/dist/db-backup-HFJ53IBU.js +43 -0
- package/dist/db-backup-NVUTS7L5.js +43 -0
- package/dist/doc-graph-extractor-ID45AQ2P.js +133 -0
- package/dist/doc-graph-extractor-MLYQYT4B.js +133 -0
- package/dist/doc-graph-extractor-SVFSXKL6.js +133 -0
- package/dist/dreaming-AZYRAGKA.js +34 -0
- package/dist/dreaming-N6B7KBIE.js +34 -0
- package/dist/dreaming-WG5CDUHX.js +34 -0
- package/dist/entity-boost-XAFCDDB6.js +375 -0
- package/dist/exe-drift-3SGA53CL.js +70 -0
- package/dist/exe-drift-CPUEAPIU.js +70 -0
- package/dist/exe-export-4RTGDV53.js +77 -0
- package/dist/exe-export-APUNLKWF.js +77 -0
- package/dist/exe-export-NM4SXB3P.js +77 -0
- package/dist/exe-import-6GLNCP62.js +80 -0
- package/dist/exe-import-AZMIF34Z.js +80 -0
- package/dist/exe-import-U4H4ES3Z.js +80 -0
- package/dist/exe-key-FIPXUTMF.js +673 -0
- package/dist/exe-key-LJV23AJI.js +673 -0
- package/dist/exe-key-WTLCMOYJ.js +673 -0
- package/dist/exe-snapshot-ILO3WSEC.js +338 -0
- package/dist/exe-snapshot-IODRQLBX.js +338 -0
- package/dist/exe-snapshot-ZOZBW7V6.js +338 -0
- package/dist/fast-db-init-7LYYUCSJ.js +7 -0
- package/dist/fast-db-init-ATRZGHOL.js +7 -0
- package/dist/fast-db-init-IU7GYFWB.js +7 -0
- package/dist/gateway/index.js +11 -11
- package/dist/git-staleness-GGCFPHQ5.js +112 -0
- package/dist/git-staleness-XNOKI4D3.js +112 -0
- package/dist/git-task-sweep-3MO4OVND.js +42 -0
- package/dist/git-task-sweep-M3SWXFKJ.js +42 -0
- package/dist/git-task-sweep-Y6KNWB67.js +42 -0
- package/dist/global-procedures-626WAU3I.js +22 -0
- package/dist/global-procedures-EBAPPWGZ.js +22 -0
- package/dist/graph-auto-extract-TKHQ4OR3.js +183 -0
- package/dist/graph-auto-extract-VGFEWFZX.js +183 -0
- package/dist/graph-auto-extract-VJOUQBPK.js +183 -0
- package/dist/graph-rag-KECA5TE4.js +35 -0
- package/dist/hooks/bug-report-worker.js +12 -12
- package/dist/hooks/codex-stop-task-finalizer.js +12 -12
- package/dist/hooks/commit-complete.js +12 -12
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +12 -12
- package/dist/hooks/post-tool-combined.js +6 -6
- package/dist/hooks/pre-compact.js +16 -16
- package/dist/hooks/pre-tool-use.js +15 -15
- package/dist/hooks/prompt-submit.js +28 -26
- package/dist/hooks/session-end.js +20 -20
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +18 -18
- package/dist/hooks/subagent-stop.js +11 -11
- package/dist/hooks/summary-worker.js +18 -18
- package/dist/index.js +20 -20
- package/dist/installer-37KFNAWE.js +344 -0
- package/dist/installer-3FB5EMPB.js +40 -0
- package/dist/installer-BRQ42CPB.js +344 -0
- package/dist/installer-F55NR4E2.js +298 -0
- package/dist/installer-KOYBUS4J.js +40 -0
- package/dist/installer-PXZJG256.js +298 -0
- package/dist/lib/cloud-sync.js +13 -7
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/database.js +6 -4
- package/dist/lib/db-daemon-client.js +11 -202
- package/dist/lib/db.js +6 -4
- package/dist/lib/embedder.js +3 -3
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -2
- package/dist/lib/exe-daemon.js +53 -51
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +10 -10
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +11 -11
- package/dist/lib/tmux-routing.js +9 -9
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +65 -63
- package/dist/mcp/server.js +66 -64
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +13 -13
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +13 -13
- package/dist/mcp/tools/send-message.js +12 -12
- package/dist/mcp/tools/update-task.js +12 -12
- package/dist/mcp-http-config-7KJZI7UD.js +31 -0
- package/dist/mcp-http-config-OF3MB7M5.js +31 -0
- package/dist/memory-cards-CPIZVXWI.js +180 -0
- package/dist/memory-cards-ZIT7ZKL5.js +180 -0
- package/dist/memory-graph-extractor-JIYWLBFF.js +22 -0
- package/dist/memory-graph-extractor-LY2VORZT.js +22 -0
- package/dist/memory-graph-extractor-MDPSLZDM.js +22 -0
- package/dist/memory-poisoning-defense-5UZT3WWA.js +224 -0
- package/dist/memory-poisoning-defense-SEM25TY5.js +224 -0
- package/dist/memory-queue-client-WKWRFERJ.js +16 -0
- package/dist/memory-reflection-J2W7CJ7C.js +244 -0
- package/dist/memory-reflection-TA2VQYPH.js +244 -0
- package/dist/message-queue-client-IFQQ2HI7.js +92 -0
- package/dist/notifications-CZBQ3H5T.js +47 -0
- package/dist/notifications-EIIL2EQV.js +47 -0
- package/dist/notifications-RLMSI4YE.js +47 -0
- package/dist/orchestration-events-TGQYA72K.js +27 -0
- package/dist/orchestration-events-VUYR6MXE.js +27 -0
- package/dist/orchestrator-JQD5G3CW.js +35 -0
- package/dist/orchestrator-MAMR4C37.js +35 -0
- package/dist/orchestrator-VE5WHEJH.js +35 -0
- package/dist/pipeline-router-3Q3YBYSM.js +15 -0
- package/dist/pipeline-router-DKXD6DJO.js +15 -0
- package/dist/pipeline-router-YNW63BY5.js +15 -0
- package/dist/plan-limits-YGXTYCW4.js +28 -0
- package/dist/plan-limits-ZM4MNZKY.js +28 -0
- package/dist/project-boot-E2TWYTAC.js +299 -0
- package/dist/project-boot-TDOZKKDR.js +299 -0
- package/dist/projection-worker-TMKUSVGD.js +1084 -0
- package/dist/projection-worker-WFPRM4AI.js +1084 -0
- package/dist/projection-worker-YKV3PFCV.js +1084 -0
- package/dist/prospective-memory-CNJDBNWF.js +232 -0
- package/dist/prospective-memory-OAFZUODU.js +232 -0
- package/dist/reranker-AFU75HEX.js +19 -0
- package/dist/reranker-RYNSJNDF.js +19 -0
- package/dist/reranker-YQIRNGDM.js +19 -0
- package/dist/retrieval-health-M5BVB7EV.js +12 -0
- package/dist/retrieval-health-RSQEIYIB.js +12 -0
- package/dist/review-polling-LGX7DUNT.js +126 -0
- package/dist/review-polling-MJBCYV4I.js +126 -0
- package/dist/review-polling-ZMB3OBPC.js +126 -0
- package/dist/runtime/index.js +16 -16
- package/dist/services/codex-reviewd/index.js +855 -0
- package/dist/session-events-5N47BRFK.js +38 -0
- package/dist/session-events-PT6SVS2P.js +38 -0
- package/dist/session-events-UTMCKDIN.js +38 -0
- package/dist/session-kill-telemetry-FRQA5MVD.js +31 -0
- package/dist/session-kill-telemetry-HKL2NQMR.js +31 -0
- package/dist/session-scope-2BD6QLNI.js +88 -0
- package/dist/session-scope-GQNCM6UQ.js +88 -0
- package/dist/session-scope-MMGM232A.js +88 -0
- package/dist/setup-wizard-SELXXVLD.js +12 -0
- package/dist/setup-wizard-W64I6SHC.js +12 -0
- package/dist/setup-wizard-X7YSRDNQ.js +12 -0
- package/dist/skill-refinement-CCP4ULZ3.js +159 -0
- package/dist/skill-refinement-FXCXTUS2.js +159 -0
- package/dist/skill-refinement-WCPDNHZ5.js +159 -0
- package/dist/stack-update-5VSGG36W.js +84 -0
- package/dist/steward-gate-JDR3SLH3.js +15 -0
- package/dist/steward-gate-PIXNK4BK.js +15 -0
- package/dist/task-enforcement-LEBWCYZT.js +506 -0
- package/dist/task-enforcement-VOSQRAQB.js +506 -0
- package/dist/task-enforcement-WCEA4FZI.js +506 -0
- package/dist/task-scope-CQZ33PRU.js +37 -0
- package/dist/task-scope-JTTEZKDU.js +37 -0
- package/dist/task-scope-L5GDL2AV.js +37 -0
- package/dist/tasks-crud-DC4GCXQQ.js +79 -0
- package/dist/tasks-crud-S36AFYYM.js +79 -0
- package/dist/tasks-crud-T32IRPXF.js +79 -0
- package/dist/tasks-notify-OBFVHJDP.js +40 -0
- package/dist/tasks-notify-OUQWUM6W.js +40 -0
- package/dist/tasks-notify-W2W2BJRB.js +40 -0
- package/dist/tasks-review-34WV7BX2.js +49 -0
- package/dist/tasks-review-N33MTHWJ.js +49 -0
- package/dist/tasks-review-OSBG2YN2.js +49 -0
- package/dist/telemetry-upload-3CSVO3J7.js +741 -0
- package/dist/telemetry-upload-EYHEWTKG.js +741 -0
- package/dist/telemetry-upload-XLBW4DRP.js +741 -0
- package/dist/token-budget-I6FMMDFX.js +86 -0
- package/dist/token-budget-ZG2MQ5GD.js +86 -0
- package/dist/tool-capability-index-IWQBQKM7.js +10 -0
- package/dist/tool-telemetry-2E3Z7CRV.js +17 -0
- package/dist/tool-telemetry-ODL4F2CW.js +17 -0
- package/dist/tui/App.js +17 -17
- package/dist/tui-data-VWT4Q5UT.js +260 -0
- package/dist/tui-data-XFBFBSBE.js +260 -0
- package/dist/tui-data-Z5UF7KEI.js +260 -0
- package/dist/wiki-acl-EUOPNUIQ.js +111 -0
- package/dist/wiki-acl-SZFHCEC4.js +111 -0
- package/dist/worker-gate-OOO6BWZ6.js +21 -0
- package/dist/worker-gate-OQMKAMP7.js +21 -0
- package/dist/worker-gate-ZPP3SZK6.js +21 -0
- package/dist/workflow-engine-P7WYJP2B.js +28 -0
- package/dist/workflow-engine-QY3IFFR2.js +28 -0
- package/dist/workflow-engine-UYNB5RTB.js +28 -0
- package/dist/worktree-CNOQZBNT.js +28 -0
- package/dist/worktree-H5C4LMQR.js +28 -0
- package/dist/worktree-sweep-KFWF3XZD.js +21 -0
- package/dist/worktree-sweep-SE7ITXC4.js +21 -0
- package/package.json +1 -1
- package/release-notes.json +117 -191
- package/src/commands/exe.md +18 -1
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PLATFORM_PROCEDURE_TITLES
|
|
3
|
+
} from "./chunk-VUH67PT4.js";
|
|
4
|
+
import {
|
|
5
|
+
isGhostBehaviorRow
|
|
6
|
+
} from "./chunk-NXL3VKXM.js";
|
|
7
|
+
import {
|
|
8
|
+
getClient,
|
|
9
|
+
getIdentity,
|
|
10
|
+
listIdentities,
|
|
11
|
+
updateIdentity
|
|
12
|
+
} from "./chunk-XABJRAUW.js";
|
|
13
|
+
import {
|
|
14
|
+
atomicWriteJsonSync
|
|
15
|
+
} from "./chunk-LYH5HE24.js";
|
|
16
|
+
|
|
17
|
+
// src/lib/orchestration-package.ts
|
|
18
|
+
import { randomUUID } from "crypto";
|
|
19
|
+
import { copyFileSync, existsSync, mkdirSync, readFileSync } from "fs";
|
|
20
|
+
import os from "os";
|
|
21
|
+
import path from "path";
|
|
22
|
+
var PACKAGE_VERSION = "1.0";
|
|
23
|
+
var ROSTER_FILENAME = "exe-employees.json";
|
|
24
|
+
var ROSTER_BACKUP_FILENAME = "exe-employees.json.bak";
|
|
25
|
+
var EXE_OS_DIRNAME = ".exe-os";
|
|
26
|
+
var DEFAULT_BEHAVIOR_PRIORITY = "p1";
|
|
27
|
+
var DEFAULT_PROCEDURE_PRIORITY = "p0";
|
|
28
|
+
var DEFAULT_IDENTITY_UPDATED_BY = "orchestration-import";
|
|
29
|
+
function ensureObject(value, label) {
|
|
30
|
+
if (value == null || Array.isArray(value) || typeof value !== "object") {
|
|
31
|
+
throw new Error(`${label} must be an object`);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function ensureString(value, label) {
|
|
36
|
+
if (typeof value !== "string") {
|
|
37
|
+
throw new Error(`${label} must be a string`);
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
function ensureOptionalString(value, label) {
|
|
42
|
+
if (value == null) return void 0;
|
|
43
|
+
return ensureString(value, label);
|
|
44
|
+
}
|
|
45
|
+
function ensureNullableString(value, label) {
|
|
46
|
+
if (value == null) return null;
|
|
47
|
+
return ensureString(value, label);
|
|
48
|
+
}
|
|
49
|
+
function ensurePriority(value, label, fallback) {
|
|
50
|
+
if (value == null) return fallback;
|
|
51
|
+
if (value === "p0" || value === "p1" || value === "p2") {
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
throw new Error(`${label} must be one of: p0, p1, p2`);
|
|
55
|
+
}
|
|
56
|
+
function validateRosterEntry(value, index) {
|
|
57
|
+
const record = ensureObject(value, `roster[${index}]`);
|
|
58
|
+
return {
|
|
59
|
+
name: ensureString(record.name, `roster[${index}].name`),
|
|
60
|
+
role: ensureString(record.role, `roster[${index}].role`),
|
|
61
|
+
systemPrompt: ensureString(record.systemPrompt, `roster[${index}].systemPrompt`),
|
|
62
|
+
createdAt: typeof record.createdAt === "string" ? record.createdAt : "",
|
|
63
|
+
templateName: ensureOptionalString(record.templateName, `roster[${index}].templateName`),
|
|
64
|
+
templateVersion: typeof record.templateVersion === "number" ? record.templateVersion : void 0
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function validateBehaviorEntry(value, index) {
|
|
68
|
+
const record = ensureObject(value, `behaviors[${index}]`);
|
|
69
|
+
return {
|
|
70
|
+
agent_id: ensureString(record.agent_id, `behaviors[${index}].agent_id`),
|
|
71
|
+
project_name: ensureNullableString(record.project_name, `behaviors[${index}].project_name`),
|
|
72
|
+
domain: ensureNullableString(record.domain, `behaviors[${index}].domain`),
|
|
73
|
+
content: ensureString(record.content, `behaviors[${index}].content`),
|
|
74
|
+
priority: ensurePriority(record.priority, `behaviors[${index}].priority`, DEFAULT_BEHAVIOR_PRIORITY)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function validateProcedureEntry(value, index) {
|
|
78
|
+
const record = ensureObject(value, `procedures[${index}]`);
|
|
79
|
+
return {
|
|
80
|
+
title: ensureString(record.title, `procedures[${index}].title`),
|
|
81
|
+
content: ensureString(record.content, `procedures[${index}].content`),
|
|
82
|
+
priority: ensurePriority(record.priority, `procedures[${index}].priority`, DEFAULT_PROCEDURE_PRIORITY),
|
|
83
|
+
domain: ensureNullableString(record.domain, `procedures[${index}].domain`)
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function getRosterPath() {
|
|
87
|
+
return path.join(os.homedir(), EXE_OS_DIRNAME, ROSTER_FILENAME);
|
|
88
|
+
}
|
|
89
|
+
function getBackupPath() {
|
|
90
|
+
return path.join(os.homedir(), EXE_OS_DIRNAME, ROSTER_BACKUP_FILENAME);
|
|
91
|
+
}
|
|
92
|
+
function readRosterFile() {
|
|
93
|
+
const rosterPath = getRosterPath();
|
|
94
|
+
if (!existsSync(rosterPath)) return [];
|
|
95
|
+
const raw = readFileSync(rosterPath, "utf-8");
|
|
96
|
+
const parsed = JSON.parse(raw);
|
|
97
|
+
if (!Array.isArray(parsed)) {
|
|
98
|
+
throw new Error("Roster file must contain a JSON array");
|
|
99
|
+
}
|
|
100
|
+
return parsed.map((entry, index) => validateRosterEntry(entry, index));
|
|
101
|
+
}
|
|
102
|
+
function writeRosterFile(roster) {
|
|
103
|
+
if (roster.length === 0) {
|
|
104
|
+
throw new Error("Refusing to write empty roster \u2014 this would delete all employees");
|
|
105
|
+
}
|
|
106
|
+
const rosterPath = getRosterPath();
|
|
107
|
+
mkdirSync(path.dirname(rosterPath), { recursive: true });
|
|
108
|
+
if (existsSync(rosterPath)) {
|
|
109
|
+
const currentRoster = readRosterFile();
|
|
110
|
+
if (roster.length < currentRoster.length) {
|
|
111
|
+
throw new Error(
|
|
112
|
+
`Refusing to write roster with ${roster.length} entries \u2014 current roster has ${currentRoster.length}. Import would delete ${currentRoster.length - roster.length} employee(s). Use merge strategy instead, or add the missing entries to the package.`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
copyFileSync(rosterPath, getBackupPath());
|
|
116
|
+
}
|
|
117
|
+
atomicWriteJsonSync(rosterPath, roster);
|
|
118
|
+
}
|
|
119
|
+
function buildImportedRosterEntries(roster, timestamp) {
|
|
120
|
+
return roster.map((entry) => ({
|
|
121
|
+
name: entry.name,
|
|
122
|
+
role: entry.role,
|
|
123
|
+
systemPrompt: entry.systemPrompt,
|
|
124
|
+
createdAt: timestamp,
|
|
125
|
+
...entry.templateName != null ? { templateName: entry.templateName } : {},
|
|
126
|
+
...entry.templateVersion != null ? { templateVersion: entry.templateVersion } : {}
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
async function insertBehaviors(behaviors, timestamp) {
|
|
130
|
+
const client = getClient();
|
|
131
|
+
let inserted = 0;
|
|
132
|
+
for (const behavior of behaviors) {
|
|
133
|
+
if (isGhostBehaviorRow({ id: "import", content: behavior.content, agent_id: behavior.agent_id })) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
await client.execute({
|
|
137
|
+
sql: `INSERT INTO behaviors (id, agent_id, project_name, domain, priority, content, active, created_at, updated_at)
|
|
138
|
+
VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
|
|
139
|
+
args: [
|
|
140
|
+
randomUUID(),
|
|
141
|
+
behavior.agent_id,
|
|
142
|
+
behavior.project_name,
|
|
143
|
+
behavior.domain,
|
|
144
|
+
behavior.priority,
|
|
145
|
+
behavior.content,
|
|
146
|
+
timestamp,
|
|
147
|
+
timestamp
|
|
148
|
+
]
|
|
149
|
+
});
|
|
150
|
+
inserted++;
|
|
151
|
+
}
|
|
152
|
+
return inserted;
|
|
153
|
+
}
|
|
154
|
+
async function insertProcedures(procedures, timestamp, options) {
|
|
155
|
+
const client = getClient();
|
|
156
|
+
const skipTitles = options?.skipTitles ?? /* @__PURE__ */ new Set();
|
|
157
|
+
let inserted = 0;
|
|
158
|
+
try {
|
|
159
|
+
const existing = await client.execute("SELECT title FROM company_procedures WHERE active = 1");
|
|
160
|
+
for (const r of existing.rows) {
|
|
161
|
+
if (r.title) skipTitles.add(r.title);
|
|
162
|
+
}
|
|
163
|
+
} catch {
|
|
164
|
+
}
|
|
165
|
+
for (const procedure of procedures) {
|
|
166
|
+
if (!procedure.title?.trim() || !procedure.content?.trim()) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (skipTitles.has(procedure.title) || PLATFORM_PROCEDURE_TITLES.has(procedure.title)) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
await client.execute({
|
|
173
|
+
sql: `INSERT INTO company_procedures (id, title, content, priority, domain, active, created_at, updated_at)
|
|
174
|
+
VALUES (?, ?, ?, ?, ?, 1, ?, ?)`,
|
|
175
|
+
args: [
|
|
176
|
+
randomUUID(),
|
|
177
|
+
procedure.title,
|
|
178
|
+
procedure.content,
|
|
179
|
+
procedure.priority,
|
|
180
|
+
procedure.domain,
|
|
181
|
+
timestamp,
|
|
182
|
+
timestamp
|
|
183
|
+
]
|
|
184
|
+
});
|
|
185
|
+
skipTitles.add(procedure.title);
|
|
186
|
+
inserted += 1;
|
|
187
|
+
}
|
|
188
|
+
return inserted;
|
|
189
|
+
}
|
|
190
|
+
async function replaceBehaviorsAndProcedures(behaviors, procedures, timestamp) {
|
|
191
|
+
const client = getClient();
|
|
192
|
+
const existingBehaviors = await client.execute({
|
|
193
|
+
sql: "SELECT agent_id, content FROM behaviors WHERE active = 1",
|
|
194
|
+
args: []
|
|
195
|
+
});
|
|
196
|
+
const existingBehaviorKeys = new Set(
|
|
197
|
+
existingBehaviors.rows.map((row) => `${String(row.agent_id)}::${String(row.content)}`)
|
|
198
|
+
);
|
|
199
|
+
const newBehaviors = behaviors.filter(
|
|
200
|
+
(b) => !existingBehaviorKeys.has(`${b.agent_id}::${b.content}`)
|
|
201
|
+
);
|
|
202
|
+
const existingProcedureTitles = await getActiveProcedureTitles();
|
|
203
|
+
return {
|
|
204
|
+
behaviors: await insertBehaviors(newBehaviors, timestamp),
|
|
205
|
+
procedures: await insertProcedures(procedures, timestamp, { skipTitles: existingProcedureTitles })
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
async function mergeRosterEntries(importedRoster, timestamp) {
|
|
209
|
+
const currentRoster = readRosterFile();
|
|
210
|
+
const existingNames = new Set(currentRoster.map((entry) => entry.name.toLowerCase()));
|
|
211
|
+
const additions = buildImportedRosterEntries(
|
|
212
|
+
importedRoster.filter((entry) => !existingNames.has(entry.name.toLowerCase())),
|
|
213
|
+
timestamp
|
|
214
|
+
);
|
|
215
|
+
if (additions.length > 0) {
|
|
216
|
+
writeRosterFile([...currentRoster, ...additions]);
|
|
217
|
+
}
|
|
218
|
+
return additions.length;
|
|
219
|
+
}
|
|
220
|
+
async function replaceRosterEntries(importedRoster, timestamp) {
|
|
221
|
+
const currentRoster = readRosterFile();
|
|
222
|
+
const importedByName = new Map(
|
|
223
|
+
buildImportedRosterEntries(importedRoster, timestamp).map((entry) => [entry.name.toLowerCase(), entry])
|
|
224
|
+
);
|
|
225
|
+
const merged = currentRoster.map((existing) => {
|
|
226
|
+
const imported = importedByName.get(existing.name.toLowerCase());
|
|
227
|
+
if (imported) {
|
|
228
|
+
importedByName.delete(existing.name.toLowerCase());
|
|
229
|
+
return imported;
|
|
230
|
+
}
|
|
231
|
+
return existing;
|
|
232
|
+
});
|
|
233
|
+
for (const newEntry of importedByName.values()) {
|
|
234
|
+
merged.push(newEntry);
|
|
235
|
+
}
|
|
236
|
+
writeRosterFile(merged);
|
|
237
|
+
return importedRoster.length;
|
|
238
|
+
}
|
|
239
|
+
async function importIdentities(identities, updatedBy) {
|
|
240
|
+
const entries = Object.entries(identities);
|
|
241
|
+
let imported = 0;
|
|
242
|
+
for (const [agentId, content] of entries) {
|
|
243
|
+
const existing = getIdentity(agentId);
|
|
244
|
+
if (existing?.raw) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
await updateIdentity(agentId, content, updatedBy);
|
|
248
|
+
imported += 1;
|
|
249
|
+
}
|
|
250
|
+
return imported;
|
|
251
|
+
}
|
|
252
|
+
async function getActiveProcedureTitles() {
|
|
253
|
+
const client = getClient();
|
|
254
|
+
const result = await client.execute({
|
|
255
|
+
sql: "SELECT title FROM company_procedures WHERE active = 1",
|
|
256
|
+
args: []
|
|
257
|
+
});
|
|
258
|
+
return new Set(result.rows.map((row) => String(row.title)));
|
|
259
|
+
}
|
|
260
|
+
async function exportOrchestration(createdBy) {
|
|
261
|
+
const client = getClient();
|
|
262
|
+
const roster = readRosterFile().map((entry) => ({
|
|
263
|
+
...entry,
|
|
264
|
+
createdAt: ""
|
|
265
|
+
}));
|
|
266
|
+
const identities = {};
|
|
267
|
+
for (const identitySummary of listIdentities()) {
|
|
268
|
+
const identity = getIdentity(identitySummary.agentId);
|
|
269
|
+
if (identity?.raw) {
|
|
270
|
+
identities[identitySummary.agentId] = identity.raw;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const behaviorResult = await client.execute({
|
|
274
|
+
sql: "SELECT agent_id, project_name, domain, content, priority FROM behaviors WHERE active = 1",
|
|
275
|
+
args: []
|
|
276
|
+
});
|
|
277
|
+
const procedureResult = await client.execute({
|
|
278
|
+
sql: "SELECT title, content, priority, domain FROM company_procedures WHERE active = 1",
|
|
279
|
+
args: []
|
|
280
|
+
});
|
|
281
|
+
const behaviors = behaviorResult.rows.map((row) => ({
|
|
282
|
+
agent_id: String(row.agent_id),
|
|
283
|
+
project_name: row.project_name == null ? null : String(row.project_name),
|
|
284
|
+
domain: row.domain == null ? null : String(row.domain),
|
|
285
|
+
content: String(row.content),
|
|
286
|
+
priority: ensurePriority(row.priority, "behaviors.priority", DEFAULT_BEHAVIOR_PRIORITY)
|
|
287
|
+
}));
|
|
288
|
+
const procedures = procedureResult.rows.map((row) => ({
|
|
289
|
+
title: String(row.title),
|
|
290
|
+
content: String(row.content),
|
|
291
|
+
priority: ensurePriority(row.priority, "procedures.priority", DEFAULT_PROCEDURE_PRIORITY),
|
|
292
|
+
domain: row.domain == null ? null : String(row.domain)
|
|
293
|
+
})).filter((procedure) => !PLATFORM_PROCEDURE_TITLES.has(procedure.title));
|
|
294
|
+
return {
|
|
295
|
+
version: PACKAGE_VERSION,
|
|
296
|
+
created_by: createdBy,
|
|
297
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
298
|
+
roster,
|
|
299
|
+
identities,
|
|
300
|
+
behaviors,
|
|
301
|
+
procedures
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
async function importOrchestration(pkg, strategy) {
|
|
305
|
+
const validated = validatePackage(pkg);
|
|
306
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
307
|
+
const updatedBy = validated.created_by || DEFAULT_IDENTITY_UPDATED_BY;
|
|
308
|
+
const rosterCount = strategy === "replace" ? await replaceRosterEntries(validated.roster, timestamp) : await mergeRosterEntries(validated.roster, timestamp);
|
|
309
|
+
const identityCount = await importIdentities(validated.identities, updatedBy);
|
|
310
|
+
if (strategy === "replace") {
|
|
311
|
+
const replaced = await replaceBehaviorsAndProcedures(
|
|
312
|
+
validated.behaviors,
|
|
313
|
+
validated.procedures,
|
|
314
|
+
timestamp
|
|
315
|
+
);
|
|
316
|
+
return {
|
|
317
|
+
imported: {
|
|
318
|
+
roster: rosterCount,
|
|
319
|
+
identities: identityCount,
|
|
320
|
+
behaviors: replaced.behaviors,
|
|
321
|
+
procedures: replaced.procedures
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const existingProcedureTitles = await getActiveProcedureTitles();
|
|
326
|
+
const behaviorCount = await insertBehaviors(validated.behaviors, timestamp);
|
|
327
|
+
const procedureCount = await insertProcedures(
|
|
328
|
+
validated.procedures,
|
|
329
|
+
timestamp,
|
|
330
|
+
{ skipTitles: existingProcedureTitles }
|
|
331
|
+
);
|
|
332
|
+
return {
|
|
333
|
+
imported: {
|
|
334
|
+
roster: rosterCount,
|
|
335
|
+
identities: identityCount,
|
|
336
|
+
behaviors: behaviorCount,
|
|
337
|
+
procedures: procedureCount
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
function validatePackage(data) {
|
|
342
|
+
const record = ensureObject(data, "package");
|
|
343
|
+
const version = ensureString(record.version, "version");
|
|
344
|
+
if (version !== PACKAGE_VERSION) {
|
|
345
|
+
throw new Error(`Unsupported orchestration package version: ${version}`);
|
|
346
|
+
}
|
|
347
|
+
if (!Array.isArray(record.roster)) {
|
|
348
|
+
throw new Error("roster is required and must be an array");
|
|
349
|
+
}
|
|
350
|
+
if (record.identities == null || Array.isArray(record.identities) || typeof record.identities !== "object") {
|
|
351
|
+
throw new Error("identities is required and must be an object");
|
|
352
|
+
}
|
|
353
|
+
if (!Array.isArray(record.behaviors)) {
|
|
354
|
+
throw new Error("behaviors is required and must be an array");
|
|
355
|
+
}
|
|
356
|
+
if (!Array.isArray(record.procedures)) {
|
|
357
|
+
throw new Error("procedures is required and must be an array");
|
|
358
|
+
}
|
|
359
|
+
const identities = Object.entries(record.identities).reduce(
|
|
360
|
+
(acc, [agentId, content]) => {
|
|
361
|
+
acc[agentId] = ensureString(content, `identities.${agentId}`);
|
|
362
|
+
return acc;
|
|
363
|
+
},
|
|
364
|
+
{}
|
|
365
|
+
);
|
|
366
|
+
return {
|
|
367
|
+
version: PACKAGE_VERSION,
|
|
368
|
+
created_by: ensureString(record.created_by, "created_by"),
|
|
369
|
+
created_at: ensureString(record.created_at, "created_at"),
|
|
370
|
+
roster: record.roster.map((entry, index) => validateRosterEntry(entry, index)),
|
|
371
|
+
identities,
|
|
372
|
+
behaviors: record.behaviors.map((entry, index) => validateBehaviorEntry(entry, index)),
|
|
373
|
+
procedures: record.procedures.map((entry, index) => validateProcedureEntry(entry, index))
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export {
|
|
378
|
+
exportOrchestration,
|
|
379
|
+
importOrchestration,
|
|
380
|
+
validatePackage
|
|
381
|
+
};
|