@askexenow/exe-os 0.9.255 → 0.9.259
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 +13 -13
- package/deploy/compose/.env.example +8 -8
- package/deploy/compose/docker-compose.yml +18 -18
- package/deploy/compose/generate-env.ts +22 -18
- package/deploy/compose/init-db.sql +221 -20
- package/deploy/stack-manifests/v0.9.json +1207 -1136
- package/dist/{active-agent-DTZ6VJIR.js → active-agent-IGZXTTV4.js} +3 -3
- package/dist/{active-agent-7QNK5CJZ.js → active-agent-OYUXMTHS.js} +3 -3
- package/dist/{agentic-ontology-UZK33N6I.js → agentic-ontology-5WT23SLZ.js} +1 -1
- package/dist/{backfill-metadata-R7PNZ5TX.js → backfill-metadata-EG52U3GF.js} +4 -4
- package/dist/{behaviors-G6QHSQBN.js → behaviors-2TZCFJLU.js} +3 -3
- package/dist/bin/age-ontology-load.js +2 -2
- 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 -5
- package/dist/bin/backfill-responses.js +6 -5
- package/dist/bin/backfill-vectors.js +7 -6
- package/dist/bin/bulk-sync-postgres.js +6 -6
- package/dist/bin/cleanup-stale-review-tasks.js +9 -9
- package/dist/bin/cli.js +17 -17
- package/dist/bin/deferred-daemon-restart.js +4 -1
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +4 -4
- package/dist/bin/exe-assign.js +8 -7
- package/dist/bin/exe-boot.js +16 -16
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +4 -4
- package/dist/bin/exe-dispatch.js +9 -9
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-heartbeat.js +9 -9
- package/dist/bin/exe-kill.js +12 -12
- package/dist/bin/exe-launch-agent.js +16 -16
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +11 -10
- package/dist/bin/exe-pending-notifications.js +9 -9
- package/dist/bin/exe-pending-reviews.js +11 -9
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +11 -11
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +14 -14
- package/dist/bin/exe-settings.js +4 -4
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +10 -10
- package/dist/bin/exe-support.js +3 -1
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +71 -11
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/graph-layer-benchmark.js +7 -7
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install.js +12 -9
- 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 +7 -7
- package/dist/bin/postgres-agentic-semantic-backfill.js +7 -7
- package/dist/bin/scan-tasks.js +9 -9
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +20 -3
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{capacity-monitor-QMKII67L.js → capacity-monitor-CTFWWTCR.js} +10 -10
- package/dist/{catchup-brief-CNISNLV7.js → catchup-brief-UML47LXI.js} +11 -11
- package/dist/{chunk-QP4FHME2.js → chunk-235ZCOYB.js} +18 -6
- package/dist/{chunk-2NEQQCRC.js → chunk-25JAXHON.js} +1 -1
- package/dist/{chunk-MU6ESLYL.js → chunk-2PFNATXD.js} +1 -1
- package/dist/chunk-2XZ6X3PJ.js +13 -0
- package/dist/chunk-3XX3CDKF.js +9 -0
- package/dist/{chunk-ZTB6E2ZL.js → chunk-4FGTT26Q.js} +1 -1
- package/dist/{chunk-YYSQAM4W.js → chunk-4TYAHVDI.js} +8 -8
- package/dist/{chunk-2QKNXGII.js → chunk-4VECWOUO.js} +2 -2
- package/dist/{chunk-YXMXP45V.js → chunk-57C3MZPQ.js} +2 -2
- package/dist/{chunk-FTNNNAMH.js → chunk-5JYCTIQD.js} +1 -1
- package/dist/{chunk-CS267UMH.js → chunk-5LDTCWYX.js} +79 -19
- package/dist/{chunk-FQVITYVF.js → chunk-6D2IZ5MB.js} +2 -2
- package/dist/{chunk-ZG3HADWE.js → chunk-7UJRF4WF.js} +1 -1
- package/dist/{chunk-JFVITKXI.js → chunk-A2UPDE3J.js} +1 -1
- package/dist/{chunk-KOCQAMAM.js → chunk-ANYOAZCZ.js} +238 -5
- package/dist/{chunk-PSQNT5DS.js → chunk-AQS2B3HC.js} +8 -8
- package/dist/{chunk-ABNALOLM.js → chunk-BGEXTWGR.js} +3 -3
- package/dist/{chunk-LPK5JPME.js → chunk-BPZL5YOM.js} +1 -1
- package/dist/{chunk-RLDOG7DI.js → chunk-C6SSCNOC.js} +2516 -2289
- package/dist/{chunk-JGEGEOVP.js → chunk-COKTAJUZ.js} +1 -1
- package/dist/{chunk-MRZE5IOP.js → chunk-CXOX7TRG.js} +1 -1
- package/dist/{chunk-6LFFIEDM.js → chunk-DU64OESH.js} +1 -1
- package/dist/{chunk-LYIUESG2.js → chunk-DYURFBPS.js} +10 -10
- package/dist/{chunk-X3SS45PO.js → chunk-FPXZY3FY.js} +1 -1
- package/dist/{chunk-TVTRMINO.js → chunk-FUGZF7VR.js} +1 -1
- package/dist/{chunk-O7SFCX5B.js → chunk-GB4FI66P.js} +2 -2
- package/dist/{chunk-VGWQBI76.js → chunk-GBR4MAAK.js} +1 -1
- package/dist/chunk-GH4LVBQM.js +371 -0
- package/dist/{chunk-AIXZ5O7U.js → chunk-GIHMDOSK.js} +1 -1
- package/dist/{chunk-RDCE652I.js → chunk-HDWVXSGO.js} +1 -1
- package/dist/{chunk-RF54NGPJ.js → chunk-IJ7R3MXE.js} +3 -5
- package/dist/{chunk-R7FBOZT5.js → chunk-ISL3NSVX.js} +1 -1
- package/dist/{chunk-5B2AEXVA.js → chunk-IVSRRIRG.js} +1 -1
- package/dist/{chunk-SD2R3SEA.js → chunk-J3YNCJ4A.js} +1 -1
- package/dist/{chunk-5IZYSS3M.js → chunk-JE4C74EE.js} +4 -4
- package/dist/{chunk-VRVHIVUE.js → chunk-KSR2PNRW.js} +2 -2
- package/dist/{chunk-LL2ARYTZ.js → chunk-L3PY4NFQ.js} +1 -1
- package/dist/{chunk-VFATLVRX.js → chunk-L5VPUOB6.js} +1 -1
- package/dist/{chunk-3VLFVOM7.js → chunk-LRKJGSNH.js} +2 -2
- package/dist/{chunk-4FT3SQAS.js → chunk-LVY74L2J.js} +2 -2
- package/dist/{chunk-X4T7LR2X.js → chunk-M7PZFYHE.js} +2 -2
- package/dist/{chunk-CIX64N7D.js → chunk-MGTVPIEZ.js} +1 -1
- package/dist/{chunk-MXCBORCC.js → chunk-MKTEGZ37.js} +3 -3
- package/dist/chunk-MMRUBN3I.js +36 -0
- package/dist/{chunk-4MONXPWR.js → chunk-MPXLF7TA.js} +1 -1
- package/dist/{chunk-6QMXKKFD.js → chunk-N27CTUFU.js} +1 -1
- package/dist/{chunk-YDHPC4PX.js → chunk-N4ES27RI.js} +3 -3
- package/dist/{chunk-WIRJ574R.js → chunk-NGQQRGLP.js} +2 -2
- package/dist/{chunk-AQOCHSIR.js → chunk-OCJ5GZKV.js} +4 -4
- package/dist/{chunk-O477L4LV.js → chunk-OSPS5N2I.js} +1 -1
- package/dist/{chunk-5WEH43HH.js → chunk-PQHA6X6Y.js} +1 -1
- package/dist/{chunk-DJYIBHN5.js → chunk-PQQTSNXS.js} +3 -3
- package/dist/{chunk-LGFB67MY.js → chunk-Q3GLQDZI.js} +1 -1
- package/dist/{chunk-7GR7VBBW.js → chunk-QUC27OCW.js} +1 -1
- package/dist/{chunk-5NBOFYJG.js → chunk-QYNFWFFH.js} +4 -4
- package/dist/{chunk-X7I6NLIA.js → chunk-T2EUNNUX.js} +5 -5
- package/dist/{chunk-VRWOLLKN.js → chunk-T4NFOOPB.js} +2 -2
- package/dist/{chunk-2YJSDJEH.js → chunk-TZPHTI5Q.js} +1 -1
- package/dist/{chunk-CQSFIQGN.js → chunk-UOZ5KUNN.js} +1 -1
- package/dist/{chunk-5R4R743Q.js → chunk-V2UVWYHO.js} +17 -15
- package/dist/{chunk-VKCZ3OGM.js → chunk-VD676VIC.js} +4 -4
- package/dist/{chunk-USLVSLQ5.js → chunk-VDCPKJUQ.js} +1 -1
- package/dist/{chunk-Y7NMPQXZ.js → chunk-VLX6AHTD.js} +8 -8
- package/dist/{chunk-ITPIBVSG.js → chunk-WMZTSHNX.js} +83 -1
- package/dist/{chunk-5U7WB4YG.js → chunk-WVBZ3QBR.js} +2 -2
- package/dist/{chunk-3EMZZZNU.js → chunk-X2RKYKTP.js} +1 -1
- package/dist/{chunk-XTIHYH64.js → chunk-YY2BCIAP.js} +2 -2
- package/dist/{chunk-Z6GHDYQI.js → chunk-Z2AEOVEZ.js} +30 -6
- package/dist/{chunk-PHTRZQR4.js → chunk-ZBDAFYDD.js} +4 -4
- package/dist/{chunk-E4CCKWZN.js → chunk-ZKFTDL4M.js} +1 -1
- package/dist/{co-activation-AIVMI5U2.js → co-activation-UNVL5JCP.js} +2 -2
- package/dist/{co-occurrence-L6QOQTJB.js → co-occurrence-ETAVWYVE.js} +2 -2
- package/dist/{code-context-index-DYHYVJHX.js → code-context-index-DCQYAYA2.js} +3 -2
- package/dist/{crdt-sync-YBMDPFNT.js → crdt-sync-AH7N6QOE.js} +1 -1
- package/dist/{crm-webhook-QO3ZESKR.js → crm-webhook-R6546T3Y.js} +2 -2
- package/dist/{cto-delegation-gate-UFPVFLIW.js → cto-delegation-gate-VB4TMZ3I.js} +8 -8
- package/dist/{daemon-orchestration-6XAISQ7B.js → daemon-orchestration-YAJKIL6Q.js} +12 -12
- package/dist/{db-backup-7UMCTS44.js → db-backup-2RG6VHT7.js} +11 -3
- package/dist/{dreaming-FJ75QVGZ.js → dreaming-WMBTSXGD.js} +9 -9
- package/dist/{exe-drift-OH3WV2ZQ.js → exe-drift-MQZGYHEN.js} +3 -3
- package/dist/{exe-export-UYKYNVBU.js → exe-export-E4BDIHOC.js} +5 -5
- package/dist/{exe-import-Q4FNSMLJ.js → exe-import-IWAD4HN6.js} +5 -5
- package/dist/{exe-key-22LOIIUX.js → exe-key-L2RV7XJX.js} +2 -2
- package/dist/{exe-snapshot-J7CL6QEL.js → exe-snapshot-IOGN4ARV.js} +12 -12
- package/dist/{fast-db-init-QXGL2PKQ.js → fast-db-init-GCY3F74H.js} +1 -1
- package/dist/gateway/index.js +8 -8
- package/dist/{git-staleness-YVWDCFIE.js → git-staleness-BQIFNZIU.js} +2 -2
- package/dist/{git-task-sweep-RRCOTTIS.js → git-task-sweep-GSKS6WKR.js} +9 -9
- package/dist/{global-procedures-FCGWAFES.js → global-procedures-3DJUA5OX.js} +3 -3
- package/dist/{graph-auto-extract-RUQC5IIS.js → graph-auto-extract-2I44WRDY.js} +2 -2
- package/dist/hooks/bug-report-worker.js +11 -11
- package/dist/hooks/codex-stop-task-finalizer.js +11 -11
- package/dist/hooks/commit-complete.js +11 -11
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +3 -2
- 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 +10 -10
- package/dist/hooks/post-tool-combined.js +6 -6
- package/dist/hooks/pre-compact.js +14 -13
- package/dist/hooks/pre-tool-use.js +14 -14
- package/dist/hooks/prompt-submit.js +22 -22
- package/dist/hooks/session-end.js +19 -18
- package/dist/hooks/session-start.js +11 -11
- package/dist/hooks/stop.js +70 -17
- package/dist/hooks/subagent-stop.js +10 -10
- package/dist/hooks/summary-worker.js +17 -16
- package/dist/index.js +17 -17
- package/dist/{installer-7SMJC3SX.js → installer-6MQCAHUG.js} +5 -5
- package/dist/{installer-GFZVC43I.js → installer-TCMPFSSP.js} +5 -5
- package/dist/{installer-34DCTB5B.js → installer-ZY2BKTEO.js} +5 -5
- package/dist/lib/cloud-sync.js +4 -4
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-daemon-client.js +58 -13
- package/dist/lib/db.js +2 -2
- package/dist/lib/embedder.js +3 -2
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -1
- package/dist/lib/exe-daemon.js +255 -104
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +9 -9
- 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 +4 -4
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +10 -10
- package/dist/lib/tmux-routing.js +8 -8
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +59 -56
- package/dist/mcp/server.js +60 -57
- 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 +12 -12
- package/dist/mcp/tools/deactivate-behavior.js +5 -5
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +12 -12
- package/dist/mcp/tools/send-message.js +11 -11
- package/dist/mcp/tools/update-task.js +11 -11
- package/dist/{mcp-http-config-MZMHKMJC.js → mcp-http-config-VUDZ3D5D.js} +3 -3
- package/dist/{memory-cards-3SFXU6IP.js → memory-cards-ZOOPC2WF.js} +2 -2
- package/dist/{memory-graph-extractor-T57YQQCW.js → memory-graph-extractor-RRQMUBMI.js} +3 -3
- package/dist/{memory-poisoning-defense-O53AHMTZ.js → memory-poisoning-defense-UQMNLG6H.js} +2 -2
- package/dist/{memory-queue-client-ITWQIFSD.js → memory-queue-client-TPQDAA4D.js} +3 -2
- package/dist/{memory-reflection-YPP2JC2S.js → memory-reflection-GSGXAGXV.js} +2 -2
- package/dist/{notifications-BETWD6EK.js → notifications-ZKGLZVCU.js} +8 -8
- package/dist/{orchestration-events-A5D52NXX.js → orchestration-events-7RMWC5SS.js} +3 -3
- package/dist/{orchestrator-X564XCWC.js → orchestrator-A6MX2OHA.js} +10 -10
- package/dist/{pipeline-router-RVHLL7UA.js → pipeline-router-6ZBYJD2U.js} +3 -3
- package/dist/{plan-limits-ANAVC6PM.js → plan-limits-4XH4A7IA.js} +3 -3
- package/dist/{project-boot-ENMCAL7G.js → project-boot-7ZEIDWUG.js} +3 -2
- package/dist/{projection-worker-O3HBG5QK.js → projection-worker-YKKBNQZT.js} +130 -51
- package/dist/{reranker-SRJL4IWB.js → reranker-DN2A3H6O.js} +1 -1
- package/dist/{review-polling-5JTTHHEO.js → review-polling-PK3CY4NI.js} +9 -9
- package/dist/runtime/index.js +11 -11
- package/dist/{session-events-RCSYHQQ2.js → session-events-IYU6FYHH.js} +9 -9
- package/dist/{session-kill-telemetry-AL3H4ELS.js → session-kill-telemetry-G2VV4CAH.js} +3 -3
- package/dist/{session-scope-ZB4SR3AX.js → session-scope-DHTVH3D4.js} +8 -8
- package/dist/{setup-wizard-HXTADFXI.js → setup-wizard-IA5ISHQ2.js} +1 -1
- package/dist/{skill-refinement-TT4VDYYW.js → skill-refinement-6PBAFLWP.js} +2 -2
- package/dist/{stack-release-7WDKQOCO.js → stack-release-NW7MV3WV.js} +41 -11
- package/dist/{stack-update-F4CQWMGV.js → stack-update-5SM62R3O.js} +3 -1
- package/dist/{steward-gate-HSV67KLF.js → steward-gate-EQV6CZKY.js} +3 -3
- package/dist/support-outbox-SZVLHHZG.js +295 -0
- package/dist/{task-enforcement-A6AZTYAN.js → task-enforcement-2LS5DOXK.js} +8 -8
- package/dist/{task-scope-XKNAY5S7.js → task-scope-AKF3CSWO.js} +8 -8
- package/dist/{tasks-crud-F732BVOE.js → tasks-crud-KOIA5SAH.js} +8 -8
- package/dist/{tasks-notify-LJ65U7DF.js → tasks-notify-7ZTE4ZQM.js} +9 -9
- package/dist/{tasks-review-Y5F4HRAR.js → tasks-review-VMMMAK2Y.js} +8 -8
- package/dist/{telemetry-upload-HVYO6FL3.js → telemetry-upload-YLW4NAUF.js} +15 -8
- package/dist/{token-budget-VODGJYKX.js → token-budget-NA4OLFNP.js} +2 -2
- package/dist/{tool-capability-index-PZWWVABO.js → tool-capability-index-C73KVY5O.js} +1 -1
- package/dist/{tool-telemetry-5BSTF3P6.js → tool-telemetry-OVI5KL4S.js} +1 -1
- package/dist/tui/App.js +16 -16
- package/dist/{tui-data-EHJWRNRZ.js → tui-data-5NT24CC5.js} +8 -8
- package/dist/{worker-gate-4AS4K7G4.js → worker-gate-AQLJUQ5G.js} +1 -1
- package/dist/{workflow-engine-BXGNFNUW.js → workflow-engine-TRGGUNIZ.js} +2 -2
- package/dist/{worktree-3N5BPITS.js → worktree-NK7GZNEA.js} +4 -4
- package/dist/worktree-sweep-5XVZCH6A.js +18 -0
- package/package.json +3 -2
- package/release-notes.json +32 -33
- package/stack.release.json +48 -48
- package/dist/prediction-log-DOEOHDHS.js +0 -120
- package/dist/support-outbox-KEJ73I3F.js +0 -206
- /package/dist/{chunk-AWVDA2FL.js → chunk-2H3FVAN3.js} +0 -0
- /package/dist/{chunk-VPHOOQLR.js → chunk-3GHTBVZO.js} +0 -0
- /package/dist/{chunk-CCPCIW4Z.js → chunk-BBPRL2MP.js} +0 -0
- /package/dist/{chunk-X2E6W3DB.js → chunk-BRSI3FD6.js} +0 -0
- /package/dist/{chunk-Y2FVN7CX.js → chunk-EYLQRPHF.js} +0 -0
- /package/dist/{chunk-4S5TEBXD.js → chunk-H6QJT5O5.js} +0 -0
- /package/dist/{chunk-FCII2MMI.js → chunk-J5CAYOJU.js} +0 -0
- /package/dist/{chunk-LY2DYTDL.js → chunk-RFJESVEL.js} +0 -0
- /package/dist/{chunk-GBHQ5TXO.js → chunk-UOOCGJUE.js} +0 -0
- /package/dist/{core-memory-WFP2L52F.js → core-memory-VZFTGOFE.js} +0 -0
- /package/dist/{entity-boost-RTYXAOWV.js → entity-boost-OAB2PZQP.js} +0 -0
- /package/dist/{message-queue-client-2CACBUA4.js → message-queue-client-YTKTHAYO.js} +0 -0
- /package/dist/{wiki-acl-MS7QLQCR.js → wiki-acl-UCPOROPR.js} +0 -0
package/dist/tui/App.js
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getSessionPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-FPXZY3FY.js";
|
|
5
|
+
import "../chunk-5JYCTIQD.js";
|
|
6
6
|
import "../chunk-K77WC6HA.js";
|
|
7
7
|
import {
|
|
8
8
|
sessionScopeFilter
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-5LDTCWYX.js";
|
|
10
|
+
import "../chunk-DU64OESH.js";
|
|
11
11
|
import "../chunk-5CHYEKMH.js";
|
|
12
12
|
import "../chunk-4JERP7NT.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-J3YNCJ4A.js";
|
|
14
14
|
import "../chunk-MVW62NIZ.js";
|
|
15
15
|
import "../chunk-OYNKIAVW.js";
|
|
16
16
|
import "../chunk-CX6GL3ZJ.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-VDCPKJUQ.js";
|
|
18
18
|
import "../chunk-XJUUWHVN.js";
|
|
19
19
|
import "../chunk-NGP6LSV2.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-L5VPUOB6.js";
|
|
21
21
|
import "../chunk-CVYC6DUW.js";
|
|
22
22
|
import "../chunk-OPU3NYOO.js";
|
|
23
23
|
import "../chunk-GJV3WDWM.js";
|
|
24
24
|
import {
|
|
25
25
|
orgBus
|
|
26
26
|
} from "../chunk-MP2AFCGL.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-ISL3NSVX.js";
|
|
28
28
|
import "../chunk-HYZV25LY.js";
|
|
29
29
|
import {
|
|
30
30
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
31
31
|
isCoordinatorName
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
32
|
+
} from "../chunk-WVBZ3QBR.js";
|
|
33
|
+
import "../chunk-WMZTSHNX.js";
|
|
34
34
|
import "../chunk-FXU7JOXK.js";
|
|
35
35
|
import "../chunk-MOZ2YQ54.js";
|
|
36
36
|
import "../chunk-VXIMSRTO.js";
|
|
@@ -7402,7 +7402,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7402
7402
|
let cancelled = false;
|
|
7403
7403
|
async function init() {
|
|
7404
7404
|
try {
|
|
7405
|
-
const { MultiAgentOrchestrator } = await import("../orchestrator-
|
|
7405
|
+
const { MultiAgentOrchestrator } = await import("../orchestrator-A6MX2OHA.js");
|
|
7406
7406
|
const { getCoordinatorName, isCoordinatorRole, loadEmployees } = await import("../lib/employees.js");
|
|
7407
7407
|
const { isExeSession } = await import("../lib/tmux-routing.js");
|
|
7408
7408
|
const { listTmuxSessions, inTmux } = await import("../lib/tmux-status.js");
|
|
@@ -7443,7 +7443,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7443
7443
|
setTotalInProgress(health.totalInProgress);
|
|
7444
7444
|
try {
|
|
7445
7445
|
const { getClient } = await import("../lib/database.js");
|
|
7446
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-
|
|
7446
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-AKF3CSWO.js");
|
|
7447
7447
|
const client = getClient();
|
|
7448
7448
|
const uoScope = sessionScopeFilter2();
|
|
7449
7449
|
const result = await client.execute({
|
|
@@ -7475,7 +7475,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7475
7475
|
const spawnSession = useCallback5(
|
|
7476
7476
|
async (agentId) => {
|
|
7477
7477
|
try {
|
|
7478
|
-
const { createTaskCore } = await import("../tasks-crud-
|
|
7478
|
+
const { createTaskCore } = await import("../tasks-crud-KOIA5SAH.js");
|
|
7479
7479
|
const { ensureEmployee } = await import("../lib/tmux-routing.js");
|
|
7480
7480
|
const { getCoordinatorName } = await import("../lib/employees.js");
|
|
7481
7481
|
await createTaskCore({
|
|
@@ -8097,7 +8097,7 @@ function TasksView({ onBack }) {
|
|
|
8097
8097
|
const { withTrace } = await import("../telemetry-43X3GT3R.js");
|
|
8098
8098
|
return withTrace("tui.tasks.loadTasks", async () => {
|
|
8099
8099
|
try {
|
|
8100
|
-
const { loadTaskList } = await import("../tui-data-
|
|
8100
|
+
const { loadTaskList } = await import("../tui-data-5NT24CC5.js");
|
|
8101
8101
|
const tasks = await loadTaskList();
|
|
8102
8102
|
setAllTasks(
|
|
8103
8103
|
tasks.map((task) => ({
|
|
@@ -8930,7 +8930,7 @@ function TeamView({ onBack, onViewSessions }) {
|
|
|
8930
8930
|
let projectsByEmployee = /* @__PURE__ */ new Map();
|
|
8931
8931
|
let currentTaskByEmployee = /* @__PURE__ */ new Map();
|
|
8932
8932
|
try {
|
|
8933
|
-
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-
|
|
8933
|
+
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-5NT24CC5.js");
|
|
8934
8934
|
setBadgeInFlight(true);
|
|
8935
8935
|
const badgeCountsPromise = loadTeamBadgeCounts();
|
|
8936
8936
|
const detailsPromise = loadTeamDetailMetrics(roster.map((emp) => emp.name));
|
|
@@ -9296,7 +9296,7 @@ function WikiView({ onBack }) {
|
|
|
9296
9296
|
}
|
|
9297
9297
|
setSearchLoading(true);
|
|
9298
9298
|
try {
|
|
9299
|
-
const { searchWikiMemoryRows } = await import("../tui-data-
|
|
9299
|
+
const { searchWikiMemoryRows } = await import("../tui-data-5NT24CC5.js");
|
|
9300
9300
|
setSearchResults(await searchWikiMemoryRows(query));
|
|
9301
9301
|
} catch {
|
|
9302
9302
|
setSearchResults([]);
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-5LDTCWYX.js";
|
|
4
|
+
import "./chunk-DU64OESH.js";
|
|
5
5
|
import "./chunk-5CHYEKMH.js";
|
|
6
6
|
import "./chunk-4JERP7NT.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-J3YNCJ4A.js";
|
|
8
8
|
import "./chunk-MVW62NIZ.js";
|
|
9
9
|
import "./chunk-OYNKIAVW.js";
|
|
10
10
|
import "./chunk-CX6GL3ZJ.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-VDCPKJUQ.js";
|
|
12
12
|
import "./chunk-XJUUWHVN.js";
|
|
13
13
|
import "./chunk-NGP6LSV2.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-L5VPUOB6.js";
|
|
15
15
|
import "./chunk-CVYC6DUW.js";
|
|
16
16
|
import "./chunk-OPU3NYOO.js";
|
|
17
17
|
import "./chunk-GJV3WDWM.js";
|
|
18
18
|
import "./chunk-MP2AFCGL.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-ISL3NSVX.js";
|
|
20
20
|
import "./chunk-HYZV25LY.js";
|
|
21
21
|
import {
|
|
22
22
|
getClient
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-WVBZ3QBR.js";
|
|
24
|
+
import "./chunk-WMZTSHNX.js";
|
|
25
25
|
import "./chunk-FXU7JOXK.js";
|
|
26
26
|
import "./chunk-MOZ2YQ54.js";
|
|
27
27
|
import "./chunk-VXIMSRTO.js";
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
persistWorkflows,
|
|
11
11
|
runWorkflow,
|
|
12
12
|
startWorkflow
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-2PFNATXD.js";
|
|
14
|
+
import "./chunk-3GHTBVZO.js";
|
|
15
15
|
import "./chunk-MLKGABMK.js";
|
|
16
16
|
export {
|
|
17
17
|
advanceWorkflow,
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
isWorktreeDirty,
|
|
7
7
|
worktreeBranch,
|
|
8
8
|
worktreePath
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-DU64OESH.js";
|
|
10
|
+
import "./chunk-VDCPKJUQ.js";
|
|
11
|
+
import "./chunk-WVBZ3QBR.js";
|
|
12
|
+
import "./chunk-WMZTSHNX.js";
|
|
13
13
|
import "./chunk-FXU7JOXK.js";
|
|
14
14
|
import "./chunk-VXIMSRTO.js";
|
|
15
15
|
import "./chunk-LYH5HE24.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cleanupAgentWorktree,
|
|
3
|
+
discoverRepoPaths,
|
|
4
|
+
sweepWorktrees
|
|
5
|
+
} from "./chunk-GH4LVBQM.js";
|
|
6
|
+
import "./chunk-DU64OESH.js";
|
|
7
|
+
import "./chunk-VDCPKJUQ.js";
|
|
8
|
+
import "./chunk-WVBZ3QBR.js";
|
|
9
|
+
import "./chunk-WMZTSHNX.js";
|
|
10
|
+
import "./chunk-FXU7JOXK.js";
|
|
11
|
+
import "./chunk-VXIMSRTO.js";
|
|
12
|
+
import "./chunk-LYH5HE24.js";
|
|
13
|
+
import "./chunk-MLKGABMK.js";
|
|
14
|
+
export {
|
|
15
|
+
cleanupAgentWorktree,
|
|
16
|
+
discoverRepoPaths,
|
|
17
|
+
sweepWorktrees
|
|
18
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.259",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -92,7 +92,8 @@
|
|
|
92
92
|
"prepublishOnly": "npm run typecheck && npm run build && npm run guard:esm-require && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
|
|
93
93
|
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/installer/setup-wizard.test.ts' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts'",
|
|
94
94
|
"benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts",
|
|
95
|
-
"guard:esm-require": "node scripts/check-no-runtime-require.mjs"
|
|
95
|
+
"guard:esm-require": "node scripts/check-no-runtime-require.mjs",
|
|
96
|
+
"test:stack-sim": "node scripts/stack-sim.mjs"
|
|
96
97
|
},
|
|
97
98
|
"dependencies": {
|
|
98
99
|
"@anthropic-ai/sdk": "^0.95.2",
|
package/release-notes.json
CHANGED
|
@@ -1,65 +1,64 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.259",
|
|
3
3
|
"notes": {
|
|
4
|
-
"0.9.
|
|
5
|
-
"version": "0.9.
|
|
6
|
-
"date": "2026-06-
|
|
7
|
-
"features": [
|
|
8
|
-
|
|
9
|
-
"image verification trusts CI success when GHCR returns 401/403"
|
|
4
|
+
"0.9.259": {
|
|
5
|
+
"version": "0.9.259",
|
|
6
|
+
"date": "2026-06-10",
|
|
7
|
+
"features": [
|
|
8
|
+
"GoTrue JWT auth for dashboard (Gap #32)"
|
|
10
9
|
],
|
|
10
|
+
"fixes": [],
|
|
11
11
|
"security": [],
|
|
12
|
-
"other": [
|
|
12
|
+
"other": [
|
|
13
|
+
"release exe-os 0.9.259"
|
|
14
|
+
],
|
|
13
15
|
"migration_notes": []
|
|
14
16
|
},
|
|
15
|
-
"0.9.
|
|
16
|
-
"version": "0.9.
|
|
17
|
-
"date": "2026-06-
|
|
17
|
+
"0.9.258": {
|
|
18
|
+
"version": "0.9.258",
|
|
19
|
+
"date": "2026-06-10",
|
|
18
20
|
"features": [],
|
|
19
21
|
"fixes": [
|
|
20
|
-
"
|
|
22
|
+
"align filtered.conversations init schema with projection-worker source_ref dedup",
|
|
23
|
+
"keep projection-worker empty-queue test compatible with startup schema self-heal"
|
|
21
24
|
],
|
|
22
25
|
"security": [],
|
|
23
26
|
"other": [],
|
|
24
|
-
"migration_notes": [
|
|
27
|
+
"migration_notes": [
|
|
28
|
+
"Fresh stack DBs now create filtered.conversations.source_ref with UNIQUE(platform, source_ref); existing stacks self-heal on projection-worker startup."
|
|
29
|
+
]
|
|
25
30
|
},
|
|
26
|
-
"0.9.
|
|
27
|
-
"version": "0.9.
|
|
31
|
+
"0.9.256": {
|
|
32
|
+
"version": "0.9.256",
|
|
28
33
|
"date": "2026-06-09",
|
|
29
34
|
"features": [],
|
|
30
|
-
"fixes": [
|
|
31
|
-
"create schema in daemon polling init",
|
|
32
|
-
"keep release-note generation idempotent"
|
|
33
|
-
],
|
|
35
|
+
"fixes": [],
|
|
34
36
|
"security": [],
|
|
35
|
-
"other": [
|
|
37
|
+
"other": [
|
|
38
|
+
"bump v0.9.256 — all images verified on GHCR"
|
|
39
|
+
],
|
|
36
40
|
"migration_notes": []
|
|
37
41
|
},
|
|
38
|
-
"0.9.
|
|
39
|
-
"version": "0.9.
|
|
42
|
+
"0.9.255": {
|
|
43
|
+
"version": "0.9.255",
|
|
40
44
|
"date": "2026-06-09",
|
|
41
45
|
"features": [],
|
|
42
46
|
"fixes": [
|
|
43
|
-
"
|
|
47
|
+
"image verification trusts CI success when GHCR returns 401/403"
|
|
44
48
|
],
|
|
45
49
|
"security": [],
|
|
46
|
-
"other": [
|
|
47
|
-
"bump v0.9.249 release notes",
|
|
48
|
-
"cover gateway config bootstrap in setup"
|
|
49
|
-
],
|
|
50
|
+
"other": [],
|
|
50
51
|
"migration_notes": []
|
|
51
52
|
},
|
|
52
|
-
"0.9.
|
|
53
|
-
"version": "0.9.
|
|
53
|
+
"0.9.252": {
|
|
54
|
+
"version": "0.9.252",
|
|
54
55
|
"date": "2026-06-09",
|
|
55
56
|
"features": [],
|
|
56
57
|
"fixes": [
|
|
57
|
-
"
|
|
58
|
+
"filter stack-release chores from release notes"
|
|
58
59
|
],
|
|
59
60
|
"security": [],
|
|
60
|
-
"other": [
|
|
61
|
-
"cover MCP autoreconnect warning suppression"
|
|
62
|
-
],
|
|
61
|
+
"other": [],
|
|
63
62
|
"migration_notes": []
|
|
64
63
|
}
|
|
65
64
|
}
|
package/stack.release.json
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
"config": {
|
|
35
|
-
"envExample": "deploy/compose/.env.example",
|
|
36
|
-
"requiredEnv": [
|
|
37
|
-
"EXE_OS_IMAGE_TAG",
|
|
38
|
-
"EXED_MCP_TOKEN",
|
|
39
|
-
"EXED_DEVICE_ID"
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"breakingChanges": [],
|
|
43
|
-
"dataSovereignty": "Customer-local memory/tasks/behaviors stay in SQLCipher/local storage. Updates must not overwrite roster, identity, behavior, or local memory files.",
|
|
44
|
-
"releaseLine": "v0.9 private/customer pilot; v1.0 is public-beta stable.",
|
|
45
|
-
"highGhostStack": "0.9.9",
|
|
46
|
-
"deploymentScope": "customer"
|
|
2
|
+
"$schema": "https://updates.askexe.com/schemas/stack.release.schema.json",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"repo": "AskExe/exe-os",
|
|
5
|
+
"service": "exe-os",
|
|
6
|
+
"packageName": "@askexenow/exe-os",
|
|
7
|
+
"version": "0.9.258",
|
|
8
|
+
"image": "ghcr.io/askexe/exe-os:v0.9.258",
|
|
9
|
+
"imageEnv": "EXE_OS_IMAGE_TAG",
|
|
10
|
+
"stackParticipation": {
|
|
11
|
+
"required": true,
|
|
12
|
+
"compatibleStack": ">=0.9.0 <1.0.0",
|
|
13
|
+
"health": [
|
|
14
|
+
{
|
|
15
|
+
"type": "http",
|
|
16
|
+
"url": "http://127.0.0.1:8765/health"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"smokeTests": [
|
|
20
|
+
{
|
|
21
|
+
"name": "exe healthcheck",
|
|
22
|
+
"command": "exe-os healthcheck"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "mcp startup",
|
|
26
|
+
"command": "node dist/mcp/server.js --help",
|
|
27
|
+
"optional": true
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"migrations": {
|
|
31
|
+
"command": "npm run build",
|
|
32
|
+
"rollback": "Restore previous EXE_OS_IMAGE_TAG and restart exe-os; local SQLCipher memory data is not overwritten by updates."
|
|
47
33
|
},
|
|
48
|
-
"
|
|
34
|
+
"config": {
|
|
35
|
+
"envExample": "deploy/compose/.env.example",
|
|
36
|
+
"requiredEnv": [
|
|
37
|
+
"EXE_OS_IMAGE_TAG",
|
|
38
|
+
"EXED_MCP_TOKEN",
|
|
39
|
+
"EXED_DEVICE_ID"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"breakingChanges": [],
|
|
43
|
+
"dataSovereignty": "Customer-local memory/tasks/behaviors stay in SQLCipher/local storage. Updates must not overwrite roster, identity, behavior, or local memory files.",
|
|
44
|
+
"releaseLine": "v0.9 private/customer pilot; v1.0 is public-beta stable.",
|
|
49
45
|
"highGhostStack": "0.9.9",
|
|
50
|
-
"
|
|
51
|
-
}
|
|
46
|
+
"deploymentScope": "customer"
|
|
47
|
+
},
|
|
48
|
+
"deploymentScope": "customer",
|
|
49
|
+
"highGhostStack": "0.9.9",
|
|
50
|
+
"sourceVersion": "0.9.258"
|
|
51
|
+
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EXE_AI_DIR
|
|
3
|
-
} from "./chunk-VXIMSRTO.js";
|
|
4
|
-
import "./chunk-LYH5HE24.js";
|
|
5
|
-
import "./chunk-MLKGABMK.js";
|
|
6
|
-
|
|
7
|
-
// src/lib/prediction-log.ts
|
|
8
|
-
import { randomUUID } from "crypto";
|
|
9
|
-
import { appendFileSync, readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
10
|
-
import path from "path";
|
|
11
|
-
var LOG_PATH = path.join(EXE_AI_DIR, "prediction-log.jsonl");
|
|
12
|
-
function ensureDir() {
|
|
13
|
-
const dir = path.dirname(LOG_PATH);
|
|
14
|
-
if (!existsSync(dir)) {
|
|
15
|
-
mkdirSync(dir, { recursive: true });
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function logPrediction(agentId, prediction, confidence) {
|
|
19
|
-
if (confidence < 0 || confidence > 1) {
|
|
20
|
-
throw new Error(`Confidence must be between 0 and 1, got ${confidence}`);
|
|
21
|
-
}
|
|
22
|
-
const entry = {
|
|
23
|
-
id: randomUUID(),
|
|
24
|
-
agent_id: agentId,
|
|
25
|
-
prediction,
|
|
26
|
-
confidence: Math.round(confidence * 100) / 100,
|
|
27
|
-
// 2 decimal places
|
|
28
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
29
|
-
};
|
|
30
|
-
ensureDir();
|
|
31
|
-
appendFileSync(LOG_PATH, JSON.stringify(entry) + "\n", "utf-8");
|
|
32
|
-
return entry;
|
|
33
|
-
}
|
|
34
|
-
function resolvePrediction(id, outcome, note) {
|
|
35
|
-
const predictions = readAllPredictions();
|
|
36
|
-
const idx = predictions.findIndex((p) => p.id === id);
|
|
37
|
-
if (idx === -1) {
|
|
38
|
-
throw new Error(`Prediction not found: ${id}`);
|
|
39
|
-
}
|
|
40
|
-
const existing = predictions[idx];
|
|
41
|
-
const updated = {
|
|
42
|
-
...existing,
|
|
43
|
-
resolved_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
44
|
-
outcome,
|
|
45
|
-
resolution_note: note
|
|
46
|
-
};
|
|
47
|
-
predictions[idx] = updated;
|
|
48
|
-
ensureDir();
|
|
49
|
-
const content = predictions.map((p) => JSON.stringify(p)).join("\n") + "\n";
|
|
50
|
-
writeFileSync(LOG_PATH, content, "utf-8");
|
|
51
|
-
return updated;
|
|
52
|
-
}
|
|
53
|
-
function getPredictions(opts) {
|
|
54
|
-
let predictions = readAllPredictions();
|
|
55
|
-
if (opts?.agentId) {
|
|
56
|
-
predictions = predictions.filter((p) => p.agent_id === opts.agentId);
|
|
57
|
-
}
|
|
58
|
-
if (opts?.unresolved) {
|
|
59
|
-
predictions = predictions.filter((p) => !p.outcome);
|
|
60
|
-
}
|
|
61
|
-
predictions.reverse();
|
|
62
|
-
if (opts?.limit && opts.limit > 0) {
|
|
63
|
-
predictions = predictions.slice(0, opts.limit);
|
|
64
|
-
}
|
|
65
|
-
return predictions;
|
|
66
|
-
}
|
|
67
|
-
function getCalibrationStats(agentId) {
|
|
68
|
-
let predictions = readAllPredictions();
|
|
69
|
-
if (agentId) {
|
|
70
|
-
predictions = predictions.filter((p) => p.agent_id === agentId);
|
|
71
|
-
}
|
|
72
|
-
const resolved = predictions.filter((p) => p.outcome != null);
|
|
73
|
-
const bucketRanges = [
|
|
74
|
-
[0, 0.2],
|
|
75
|
-
[0.2, 0.4],
|
|
76
|
-
[0.4, 0.6],
|
|
77
|
-
[0.6, 0.8],
|
|
78
|
-
[0.8, 1]
|
|
79
|
-
];
|
|
80
|
-
const buckets = bucketRanges.map(([lo, hi]) => {
|
|
81
|
-
const inBucket = resolved.filter((p) => {
|
|
82
|
-
if (lo === 0) return p.confidence >= lo && p.confidence <= hi;
|
|
83
|
-
return p.confidence > lo && p.confidence <= hi;
|
|
84
|
-
});
|
|
85
|
-
const correct = inBucket.filter((p) => p.outcome === "correct").length;
|
|
86
|
-
const partial = inBucket.filter((p) => p.outcome === "partial").length;
|
|
87
|
-
const actual = correct + partial * 0.5;
|
|
88
|
-
return {
|
|
89
|
-
confidenceRange: [lo, hi],
|
|
90
|
-
predicted: inBucket.length,
|
|
91
|
-
actual,
|
|
92
|
-
accuracy: inBucket.length > 0 ? Math.round(actual / inBucket.length * 100) / 100 : 0
|
|
93
|
-
};
|
|
94
|
-
});
|
|
95
|
-
const totalCorrect = resolved.filter((p) => p.outcome === "correct").length + resolved.filter((p) => p.outcome === "partial").length * 0.5;
|
|
96
|
-
return {
|
|
97
|
-
buckets,
|
|
98
|
-
totalPredictions: predictions.length,
|
|
99
|
-
resolvedPredictions: resolved.length,
|
|
100
|
-
overallAccuracy: resolved.length > 0 ? Math.round(totalCorrect / resolved.length * 100) / 100 : 0
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
function readAllPredictions() {
|
|
104
|
-
if (!existsSync(LOG_PATH)) return [];
|
|
105
|
-
const content = readFileSync(LOG_PATH, "utf-8").trim();
|
|
106
|
-
if (!content) return [];
|
|
107
|
-
return content.split("\n").filter((line) => line.trim()).map((line) => {
|
|
108
|
-
try {
|
|
109
|
-
return JSON.parse(line);
|
|
110
|
-
} catch {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
}).filter((p) => p !== null);
|
|
114
|
-
}
|
|
115
|
-
export {
|
|
116
|
-
getCalibrationStats,
|
|
117
|
-
getPredictions,
|
|
118
|
-
logPrediction,
|
|
119
|
-
resolvePrediction
|
|
120
|
-
};
|