openpond 0.2.55 → 0.2.57
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/app-server.d.ts +10545 -10254
- package/dist/app-server.js +1 -1
- package/dist/chunks/actions-command-QU4H53OG.js +2 -0
- package/dist/chunks/{app-layer-Y2UERCPY.js → app-layer-NSTE5HIT.js} +1 -1
- package/dist/chunks/app-server-connected-apps-JHGWLBXT.js +2 -0
- package/dist/chunks/app-server-evaluations-GJPFWIDA.js +2 -0
- package/dist/chunks/app-server-harness-services-IH4G6POY.js +2 -0
- package/dist/chunks/app-server-runtime-VCRNCNX2.js +2 -0
- package/dist/chunks/apps-BKTOR4F7.js +2 -0
- package/dist/chunks/chunk-25MBPJVY.js +2 -0
- package/dist/chunks/chunk-2D4Y3HNW.js +2 -0
- package/dist/chunks/chunk-2IHO4GDJ.js +2 -0
- package/dist/chunks/chunk-2QUCCP6Z.js +2 -0
- package/dist/chunks/chunk-3K4VVB7S.js +6 -0
- package/dist/chunks/chunk-3QIB5FXI.js +10 -0
- package/dist/chunks/chunk-3RCRSMWZ.js +17 -0
- package/dist/chunks/chunk-3VUATFZD.js +2 -0
- package/dist/chunks/chunk-3Z47M3YY.js +2 -0
- package/dist/chunks/{chunk-UA5DA5I2.js → chunk-4D7HWVWD.js} +1 -1
- package/dist/chunks/chunk-4EPSHPZL.js +2 -0
- package/dist/chunks/chunk-4NESNOK5.js +2 -0
- package/dist/chunks/chunk-523TE4BI.js +2 -0
- package/dist/chunks/{chunk-B7QDZPNX.js → chunk-5MCNZCVQ.js} +1 -1
- package/dist/chunks/chunk-6FDWRG55.js +2 -0
- package/dist/chunks/{chunk-DLVPSCTB.js → chunk-6QSSIT62.js} +1 -1
- package/dist/chunks/chunk-6ZFPQYHG.js +2 -0
- package/dist/chunks/chunk-74IIXVAE.js +2 -0
- package/dist/chunks/chunk-74ZXXBGN.js +6 -0
- package/dist/chunks/chunk-773TH7FN.js +2 -0
- package/dist/chunks/chunk-7E6T7GP5.js +2 -0
- package/dist/chunks/chunk-7ED24PP6.js +2 -0
- package/dist/chunks/chunk-7HPDGZOR.js +86 -0
- package/dist/chunks/chunk-7KWD2I6W.js +2 -0
- package/dist/chunks/chunk-7PXZ4X4P.js +2 -0
- package/dist/chunks/chunk-A6USMRWK.js +2 -0
- package/dist/chunks/chunk-ABD5M2D2.js +2 -0
- package/dist/chunks/chunk-ACYFMLWG.js +10 -0
- package/dist/chunks/chunk-AN525SPP.js +6 -0
- package/dist/chunks/chunk-APB2STJK.js +2 -0
- package/dist/chunks/chunk-AY64VY4E.js +2 -0
- package/dist/chunks/{chunk-G6JMQGX7.js → chunk-B7RFL4N2.js} +1 -1
- package/dist/chunks/chunk-BLXEAZCQ.js +12 -0
- package/dist/chunks/chunk-D74JEERO.js +5 -0
- package/dist/chunks/{chunk-U2YMBCX7.js → chunk-DARVPBZ4.js} +1 -1
- package/dist/chunks/chunk-DBK66CJP.js +8 -0
- package/dist/chunks/chunk-DDMZSZFL.js +1 -0
- package/dist/chunks/chunk-DIO5CB6U.js +2 -0
- package/dist/chunks/chunk-DMFUEUAZ.js +5 -0
- package/dist/chunks/chunk-DMVD2RFZ.js +2 -0
- package/dist/chunks/chunk-DUURYZOI.js +2 -0
- package/dist/chunks/chunk-DZUAT3TP.js +1 -0
- package/dist/chunks/chunk-EIEZHFIW.js +6 -0
- package/dist/chunks/chunk-EIRYMSEG.js +19 -0
- package/dist/chunks/{chunk-R27YGT77.js → chunk-EKM2D7JU.js} +1 -1
- package/dist/chunks/chunk-EQFGBL3O.js +2 -0
- package/dist/chunks/chunk-EYPCBBMS.js +2 -0
- package/dist/chunks/chunk-F4KOGISR.js +10 -0
- package/dist/chunks/chunk-F74GBN6K.js +2 -0
- package/dist/chunks/chunk-FEAKTSRS.js +2 -0
- package/dist/chunks/chunk-FFRFSDBM.js +2 -0
- package/dist/chunks/chunk-FTEOCCPB.js +23 -0
- package/dist/chunks/chunk-FUOEIDMA.js +8 -0
- package/dist/chunks/{chunk-BQAF5P7K.js → chunk-FV2R5RUN.js} +2 -2
- package/dist/chunks/chunk-FWIPHEVA.js +12 -0
- package/dist/chunks/chunk-FY5KHLMW.js +2 -0
- package/dist/chunks/chunk-G3RXYI2L.js +6 -0
- package/dist/chunks/chunk-GJ2ZJFDD.js +2 -0
- package/dist/chunks/chunk-GLDYJM7O.js +1 -0
- package/dist/chunks/chunk-GPVCOEUH.js +2 -0
- package/dist/chunks/chunk-GW766ZSO.js +5 -0
- package/dist/chunks/chunk-GWCHDF2C.js +4 -0
- package/dist/chunks/chunk-GZ7M5XBP.js +2 -0
- package/dist/chunks/chunk-H6IW2R22.js +140 -0
- package/dist/chunks/chunk-HCYX6RHP.js +2 -0
- package/dist/chunks/chunk-HDL5YSAA.js +2 -0
- package/dist/chunks/chunk-HIOKCIL7.js +2 -0
- package/dist/chunks/{chunk-IODUCRBA.js → chunk-HY3GOBFJ.js} +1 -1
- package/dist/chunks/chunk-HZEIRHEB.js +2 -0
- package/dist/chunks/chunk-I2NXNMRZ.js +2 -0
- package/dist/chunks/chunk-I7AQMAQI.js +33 -0
- package/dist/chunks/chunk-IZ6DLEVY.js +2 -0
- package/dist/chunks/chunk-J2TWKFML.js +1871 -0
- package/dist/chunks/chunk-JDEEWOD7.js +2 -0
- package/dist/chunks/chunk-JFXWI3EN.js +6 -0
- package/dist/chunks/chunk-JYKRR7E5.js +5 -0
- package/dist/chunks/chunk-KCJVFLBB.js +2 -0
- package/dist/chunks/{chunk-5CMKGD43.js → chunk-KG325WTN.js} +1 -1
- package/dist/chunks/chunk-KUERKVEU.js +3 -0
- package/dist/chunks/chunk-KVTBX2UP.js +2 -0
- package/dist/chunks/chunk-L3KS6MOV.js +2 -0
- package/dist/chunks/chunk-L6K7ERG5.js +2 -0
- package/dist/chunks/{chunk-MH3LHSGX.js → chunk-LQQNBVEB.js} +1 -1
- package/dist/chunks/{chunk-BTI4N7YO.js → chunk-M4JWQSV7.js} +1 -1
- package/dist/chunks/chunk-MQULU465.js +2 -0
- package/dist/chunks/chunk-MULXCKG7.js +10 -0
- package/dist/chunks/chunk-N4FFQPLR.js +2 -0
- package/dist/chunks/chunk-N73MU2C3.js +2 -0
- package/dist/chunks/chunk-NHQ36THU.js +3 -0
- package/dist/chunks/chunk-O6ULLQJ6.js +2 -0
- package/dist/chunks/chunk-O72BSKSO.js +2 -0
- package/dist/chunks/chunk-OGDADQGH.js +143 -0
- package/dist/chunks/chunk-OIUTWU6K.js +2 -0
- package/dist/chunks/chunk-OLLLZVHF.js +2 -0
- package/dist/chunks/chunk-OPNRWESL.js +3 -0
- package/dist/chunks/chunk-OQKJGTTO.js +4 -0
- package/dist/chunks/chunk-OQPJ7FJF.js +9 -0
- package/dist/chunks/{chunk-TERVLCRG.js → chunk-OS3LO5J3.js} +1 -1
- package/dist/chunks/chunk-OUVIWDL2.js +2 -0
- package/dist/chunks/chunk-PCSIOUHF.js +7 -0
- package/dist/chunks/chunk-PF5R6CMP.js +21 -0
- package/dist/chunks/chunk-PPAPVGJP.js +3 -0
- package/dist/chunks/chunk-PRGBLQVH.js +2 -0
- package/dist/chunks/chunk-PSGGOZFM.js +2 -0
- package/dist/chunks/chunk-PUZQU66L.js +2 -0
- package/dist/chunks/{chunk-NOTXPD2T.js → chunk-Q2QL6UWN.js} +1 -1
- package/dist/chunks/chunk-Q4TBTRIG.js +2 -0
- package/dist/chunks/chunk-Q5LEXXJG.js +16 -0
- package/dist/chunks/chunk-QDC4OW3S.js +2 -0
- package/dist/chunks/chunk-QEFHOJFE.js +7 -0
- package/dist/chunks/chunk-QHWGQ3A4.js +5 -0
- package/dist/chunks/chunk-QIKWJ2AA.js +11 -0
- package/dist/chunks/chunk-QNG27G3T.js +6 -0
- package/dist/chunks/chunk-QOGJAQDO.js +3 -0
- package/dist/chunks/chunk-QOTVNQDI.js +4 -0
- package/dist/chunks/{chunk-NNIRIUSY.js → chunk-RAXOSUSW.js} +1 -1
- package/dist/chunks/chunk-RNIAFXMB.js +50 -0
- package/dist/chunks/{chunk-SHQOIROR.js → chunk-S5ESN275.js} +3 -3
- package/dist/chunks/chunk-SDAUS5PY.js +2 -0
- package/dist/chunks/chunk-SDXFLO7J.js +5 -0
- package/dist/chunks/chunk-SH5CBAFC.js +2 -0
- package/dist/chunks/chunk-SWUEFLOH.js +2 -0
- package/dist/chunks/chunk-SYUKES6H.js +3 -0
- package/dist/chunks/chunk-T5AACNJI.js +2 -0
- package/dist/chunks/chunk-TRQQNFMO.js +4 -0
- package/dist/chunks/chunk-TVQAPBLZ.js +2 -0
- package/dist/chunks/chunk-UCPGRPWY.js +2 -0
- package/dist/chunks/chunk-UGL7WF3W.js +2 -0
- package/dist/chunks/{chunk-C6D4WAYN.js → chunk-UKMA4R6X.js} +2 -2
- package/dist/chunks/{chunk-4WEUCGJ3.js → chunk-VRIEKBBH.js} +1 -1
- package/dist/chunks/chunk-VYLGI3IH.js +13 -0
- package/dist/chunks/chunk-W45RKGM6.js +1 -0
- package/dist/chunks/chunk-WJ43MJ3F.js +2 -0
- package/dist/chunks/chunk-WMKYHXVM.js +3 -0
- package/dist/chunks/chunk-WN3V6KDN.js +3 -0
- package/dist/chunks/chunk-X4OSOOSU.js +3 -0
- package/dist/chunks/chunk-XDQMGUWL.js +2 -0
- package/dist/chunks/chunk-XTFPDQMH.js +3 -0
- package/dist/chunks/chunk-XVDFJ3ZF.js +2 -0
- package/dist/chunks/chunk-XW6HGSIT.js +8 -0
- package/dist/chunks/chunk-XXYGGNVM.js +2 -0
- package/dist/chunks/chunk-Y4OWBBDD.js +184 -0
- package/dist/chunks/chunk-YBT2NB32.js +2 -0
- package/dist/chunks/{chunk-QRAKXZOC.js → chunk-YOBN7KTF.js} +6 -6
- package/dist/chunks/chunk-YOQRYNLP.js +2 -0
- package/dist/chunks/chunk-YY7LEQGP.js +2 -0
- package/dist/chunks/chunk-Z4Z5UOZM.js +22 -0
- package/dist/chunks/chunk-Z54O534A.js +3 -0
- package/dist/chunks/chunk-ZCHXGRRU.js +2 -0
- package/dist/chunks/chunk-ZFSHBFG5.js +40 -0
- package/dist/chunks/chunk-ZGTOK7ZK.js +12 -0
- package/dist/chunks/{chunk-Q7AXHFZV.js → chunk-ZRDGQDZL.js} +1 -1
- package/dist/chunks/chunk-ZUJ3XUCP.js +2 -0
- package/dist/chunks/chunk-ZZWAQBA2.js +2 -0
- package/dist/chunks/cli-X25RSO2X.js +2 -0
- package/dist/chunks/configuration-command-6C5UO7GE.js +2 -0
- package/dist/chunks/connected-app-executor-IVLGQP65.js +2 -0
- package/dist/chunks/connected-evidence-GH2ATNEX.js +2 -0
- package/dist/chunks/connection-HTF6CC7M.js +2 -0
- package/dist/chunks/{continual-TTGJ6YTR.js → continual-6CQAMTTR.js} +3 -3
- package/dist/chunks/core-commands-A2DGGIPS.js +2 -0
- package/dist/chunks/datasets-7BNMVJOY.js +2 -0
- package/dist/chunks/desktop-test-3CUHVLXV.js +3 -0
- package/dist/chunks/dist-OMGUJYPD.js +2 -0
- package/dist/chunks/dist-VYC5VMQB.js +2 -0
- package/dist/chunks/{dist-FAJX2UBW.js → dist-ZVJPJLXR.js} +1 -1
- package/dist/chunks/enclave-QS4BUNDU.js +2 -0
- package/dist/chunks/evaluation-coordination-XEF5L7KZ.js +2 -0
- package/dist/chunks/experiment-improvements-KRX2DP27.js +2 -0
- package/dist/chunks/experiments-DFGQYA4O.js +2 -0
- package/dist/chunks/experiments-VFQGE4HC.js +2 -0
- package/dist/chunks/{extension-DWMY6D2R.js → extension-XKXXOP5N.js} +1 -1
- package/dist/chunks/{help-A72QDRNG.js → help-S7THC6IE.js} +1 -1
- package/dist/chunks/host-profile-evaluation-tools-NRLXL2S5.js +2 -0
- package/dist/chunks/host-profile-external-dataset-K3ICDHIP.js +2 -0
- package/dist/chunks/hosted-app-server-composition-HPL3CRXN.js +2 -0
- package/dist/chunks/hosted-experiment-improvement-NFSVS5TU.js +3 -0
- package/dist/chunks/hosted-harness-runtime-723S5ZSH.js +2 -0
- package/dist/chunks/hosted-profile-candidate-2S5LFUWD.js +3 -0
- package/dist/chunks/hosted-profile-compiler-2DQIFSXW.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-control-76BTRTYD.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-inspection-V6Z3A5XJ.js +3 -0
- package/dist/chunks/hosted-profile-evaluation-preparation-IDJYREW3.js +3 -0
- package/dist/chunks/hosted-tasksets-ANAE2PIW.js +2 -0
- package/dist/chunks/human-review-WR777ODH.js +2 -0
- package/dist/chunks/import-MLZUHITH.js +4 -0
- package/dist/chunks/learning-ACEVFL5M.js +2 -0
- package/dist/chunks/local-harness-improvement-runtime-JIQ6ZVDW.js +2 -0
- package/dist/chunks/local-harness-taskset-review-XVYTGAGK.js +2 -0
- package/dist/chunks/local-scope-HVF2GZ5W.js +2 -0
- package/dist/chunks/model-projects-QPO22JPA.js +2 -0
- package/dist/chunks/opchat-T4QTNEIY.js +3 -0
- package/dist/chunks/organizations-75L5DZDV.js +2 -0
- package/dist/chunks/{profile-NOZ6TVXL.js → profile-TFZMUEDR.js} +1 -1
- package/dist/chunks/profile-training-source-6GOT7AHM.js +2 -0
- package/dist/chunks/project-action-payload-7VGL7OER.js +2 -0
- package/dist/chunks/project-agent-6RRO233B.js +2 -0
- package/dist/chunks/published-experiment-source-DZFENAQA.js +2 -0
- package/dist/chunks/refiner-profile-service-UUIWFJVT.js +2 -0
- package/dist/chunks/runtime-A7OZXM43.js +6 -0
- package/dist/chunks/sandbox-command-IU5XFTJP.js +2 -0
- package/dist/chunks/{sandbox-template-LKGBDVJ4.js → sandbox-template-C4V6T36U.js} +1 -1
- package/dist/chunks/saved-work-6BMBFP43.js +2 -0
- package/dist/chunks/send-turn-XTAIS2JN.js +2 -0
- package/dist/chunks/src-INHPJ63Z.js +326 -0
- package/dist/chunks/{src-ZWJ5IO7A.js → src-LMC3K6LH.js} +1 -1
- package/dist/chunks/standalone-experiment-turn-owner-JCY5LL5R.js +2 -0
- package/dist/chunks/store-chat-workflows-S72HZXQR.js +18 -0
- package/dist/chunks/store-continual-support-reviews-HHA6NX7K.js +7 -0
- package/dist/chunks/store-conversation-serving-KPC62UEY.js +2 -0
- package/dist/chunks/store-create-improve-QV54XIZW.js +40 -0
- package/dist/chunks/store-datasets-RXJ33SUN.js +86 -0
- package/dist/chunks/store-evaluation-results-3F3P527G.js +7 -0
- package/dist/chunks/store-harness-evaluation-review-settings-I2R3HPO3.js +29 -0
- package/dist/chunks/store-harness-memory-VINCZ4GK.js +17 -0
- package/dist/chunks/store-harness-refinement-candidates-EA5KFQPH.js +21 -0
- package/dist/chunks/store-harness-workspaces-XUM4Z66X.js +2 -0
- package/dist/chunks/store-human-review-RAH7WMIP.js +7 -0
- package/dist/chunks/store-learned-preference-migration-validation-4CI2IRUF.js +2 -0
- package/dist/chunks/store-learning-WLG6KFIO.js +2 -0
- package/dist/chunks/store-learning-credentials-WZQJ4HPJ.js +2 -0
- package/dist/chunks/store-local-experiments-5LUJR7GI.js +97 -0
- package/dist/chunks/store-model-batch-review-YEGX327M.js +2 -0
- package/dist/chunks/store-model-configuration-5ZURQATB.js +3 -0
- package/dist/chunks/store-preference-comparison-LV32MHVL.js +6 -0
- package/dist/chunks/store-schedules-VGTEQVKH.js +53 -0
- package/dist/chunks/store-sidebar-file-bookmarks-VB5GTLFY.js +18 -0
- package/dist/chunks/store-sidebar-preferences-GWIOG2NH.js +16 -0
- package/dist/chunks/store-subagents-T7R2Z6TB.js +67 -0
- package/dist/chunks/store-task-inbox-JJTBW76C.js +33 -0
- package/dist/chunks/store-task-inventory-OB3F2APC.js +10 -0
- package/dist/chunks/store-taskset-drafts-EKQWWFYQ.js +9 -0
- package/dist/chunks/store-training-G6YLFSIR.js +70 -0
- package/dist/chunks/store-training-jobs-RC46YBF6.js +19 -0
- package/dist/chunks/store-training-models-6BA43IPP.js +49 -0
- package/dist/chunks/store-usage-IE2U2FD3.js +63 -0
- package/dist/chunks/store-work-evidence-QQDKM5AQ.js +8 -0
- package/dist/chunks/taskset-EQRFQBYM.js +2 -0
- package/dist/chunks/taskset-packages-XC6HEE3K.js +2 -0
- package/dist/chunks/{teams-bot-H7XT23XB.js → teams-bot-EAPGPTHZ.js} +1 -1
- package/dist/chunks/training-UF6RPI4T.js +2 -0
- package/dist/chunks/web-search-CZ3NCLPY.js +2 -0
- package/dist/chunks/workspaces-EKKE5NAC.js +2 -0
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/web/assets/{App-CTlAPuCY.css → App-CaRMZoxo.css} +1 -1
- package/dist/web/assets/App-s-CJswyt.js +154 -0
- package/dist/web/assets/{AppDialog-CPHTPqrx.js → AppDialog-t2Fx5tK3.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-BVj5Tj93.js → AppTerminalPanel-Dj1Y32oI.js} +2 -2
- package/dist/web/assets/{AppsView-O69zEBY3.js → AppsView-BYE5EBDJ.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-Pr_Kpe8p.js → BrowserSidebar-jhWi4rVm.js} +1 -1
- package/dist/web/assets/{CartesianChart-JPqo6YOf.js → CartesianChart-C1DIx0Ia.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-CAJcQFn2.js → CollaborationTabs-Bdr-HmOL.js} +1 -1
- package/dist/web/assets/{CommandMenu-B-w53n9A.js → CommandMenu-Ux2yOHAc.js} +1 -1
- package/dist/web/assets/{CommunityView-DbZKK8_P.js → CommunityView-DPEeVKFn.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-3_083PF4.js → ComposerCreateImproveStrip-CEgh4OtN.js} +1 -1
- package/dist/web/assets/{GetStartedView-D7JGm_6c.js → GetStartedView-CFHP0AaI.js} +1 -1
- package/dist/web/assets/{HostedModelLearningReview-DwgMfZ7_.js → HostedModelLearningReview-D8BGTPVN.js} +1 -1
- package/dist/web/assets/{HostedModelLearningSettings-JRfQadRl.js → HostedModelLearningSettings-JS1S7vNO.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-BUYflJY_.js → LabModelVersionDetailPage-Dx5Q3xV2.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-BBiqk7Rf.js → LabSkillSidebar-BxffN-pN.js} +1 -1
- package/dist/web/assets/{LabsRoute-Ci6vUnSd.js → LabsRoute-CyYF8-dw.js} +4 -4
- package/dist/web/assets/{MainChatThread-BQK3oI2N.js → MainChatThread-DZpcFRFl.js} +2 -2
- package/dist/web/assets/MainPane-5DTtwVCk.js +65 -0
- package/dist/web/assets/MainPane-BIM_UJ3q.css +1 -0
- package/dist/web/assets/{MarkdownText-DOdOVFXL.js → MarkdownText-BR4V6lNO.js} +21 -21
- package/dist/web/assets/{NativeSkillSidebar-CRI_ri8z.js → NativeSkillSidebar-DU9IEgIO.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-DhYtfE68.js → NewExperienceSwitcher-mIy6FzCj.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-D8sy1gOz.js → NewProjectDialog-RfTZTHxl.js} +1 -1
- package/dist/web/assets/{OutputsPage-CbWgrhXA.js → OutputsPage-Cr1Spf7S.js} +1 -1
- package/dist/web/assets/{ProjectsPage-DLB67lyA.js → ProjectsPage-CE6QUB-b.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-ozSKnDyX.js → RightChatPanelStack-T6VRWuHo.js} +1 -1
- package/dist/web/assets/RightSidebarHomePanel-CK0rP3WT.js +1 -0
- package/dist/web/assets/{ScheduledWorkPage-Cafv_QnR.js → ScheduledWorkPage-vOrYv8pp.js} +1 -1
- package/dist/web/assets/SettingsView-DCKVrfjj.js +5 -0
- package/dist/web/assets/SettingsView-Dulr_xlq.css +1 -0
- package/dist/web/assets/{TeamChatView-vIrmXOY_.js → TeamChatView-Bwrjr-vk.js} +2 -2
- package/dist/web/assets/{TerminalOverlay-CAmF__Dq.js → TerminalOverlay-DhPoKZAq.js} +1 -1
- package/dist/web/assets/TrainingCreationPanel-BXHfohNm.js +1 -0
- package/dist/web/assets/{TrainingDraftPanel-D7XZePAk.js → TrainingDraftPanel-C9cRX5qf.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-CYTmp7PG.js → UsageSettingsSection-CrdcSGeW.js} +1 -1
- package/dist/web/assets/WorkSidebarPanel-DSSikNFQ.js +1 -0
- package/dist/web/assets/{WorkspaceDiffPanel-DQGoIjH9.js → WorkspaceDiffPanel-BAFo0CPN.js} +6 -6
- package/dist/web/assets/{WorkspaceEnvironmentMenu-c1pHDskn.js → WorkspaceEnvironmentMenu-BVHAhwnJ.js} +1 -1
- package/dist/web/assets/WorkspaceGitDialogs-CwVoiDQ2.js +1 -0
- package/dist/web/assets/{WorkspaceMonacoEditor-BCKzvSj2.js → WorkspaceMonacoEditor-TxLyhzNp.js} +3 -3
- package/dist/web/assets/{arrow-up-right-CP4hZdrJ.js → arrow-up-right-C9aE8Mfz.js} +1 -1
- package/dist/web/assets/{chunk-NOJECMB7-Bhcms-w5.js → chunk-P3BRSSRD-DUGfuKA8.js} +1 -1
- package/dist/web/assets/{clipboard-BgrXorn-.js → clipboard-Dk158Qp4.js} +1 -1
- package/dist/web/assets/{cloud-upload-B_zYztb6.js → cloud-upload-k9eqBsHr.js} +1 -1
- package/dist/web/assets/{cssMode-DanjGgA8.js → cssMode-CO35ARZp.js} +1 -1
- package/dist/web/assets/{folder-open-CdVKbtGq.js → folder-open-sYgceW_f.js} +1 -1
- package/dist/web/assets/{folder-plus-Cc5KElB6.js → folder-plus-CS0R49m9.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-CjGIIgRi.js → git-commit-horizontal-DrGxH2h4.js} +1 -1
- package/dist/web/assets/{htmlMode-DRGDF_UL.js → htmlMode-REMmzdfq.js} +1 -1
- package/dist/web/assets/index-3iPNbbER.css +1 -0
- package/dist/web/assets/{index-BE-wXZ5R.js → index-C8aCGagb.js} +2 -2
- package/dist/web/assets/{info-BLj0RvhA.js → info-DLdbiUrh.js} +1 -1
- package/dist/web/assets/{jsonMode-CCu0j2GD.js → jsonMode-KEdMfkIf.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-s_Lhm7P6.js → lspLanguageFeatures-5KZwEoxW.js} +1 -1
- package/dist/web/assets/{minimize-2-Cyg_zD9z.js → minimize-2-CqcI4zcM.js} +1 -1
- package/dist/web/assets/{monaco.contribution-CY7mRgOB.js → monaco.contribution-BJGj65F9.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CAzXvYkn.js → monaco.contribution-Cly9Wt7L.js} +2 -2
- package/dist/web/assets/{monaco.contribution-mUPNK9ra.js → monaco.contribution-DO10L0zW.js} +2 -2
- package/dist/web/assets/{monaco.contribution-aUeLcBEg.js → monaco.contribution-omszXBEj.js} +2 -2
- package/dist/web/assets/{monitor-DZvOs_wC.js → monitor-BFVCcbxp.js} +1 -1
- package/dist/web/assets/{play-BJPzemuY.js → play-C469pVZq.js} +1 -1
- package/dist/web/assets/{python-B_qnnVaG.js → python-Dw0YcVy9.js} +1 -1
- package/dist/web/assets/{save-BDy9tA3E.js → save-CtSjPydi.js} +1 -1
- package/dist/web/assets/{square-Cb2c5td4.js → square-BuImvLhT.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-MhO1JLyR.js → toggleHighContrast-DjCO9lIP.js} +1 -1
- package/dist/web/assets/{tsMode-DfBXJb9V.js → tsMode-BAOnxKd6.js} +1 -1
- package/dist/web/assets/{upload-D56kThRh.js → upload-2JkFZo3h.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-DMnGfswi.js → useLocalAgentSchedules-BNqAisfS.js} +1 -1
- package/dist/web/assets/useProviderSettings-C4L4wDoh.js +5 -0
- package/dist/web/assets/{useProviderSettings-Bw-csWbH.css → useProviderSettings-CmL_BaxP.css} +1 -1
- package/dist/web/assets/{useSessionTurnCache-ClAY8gze.js → useSessionTurnCache-BHU2-Jmz.js} +1 -1
- package/dist/web/assets/{wifi-off-C9lWJmVm.js → wifi-off-CpOAH62M.js} +1 -1
- package/dist/web/assets/{workers-BYzrH8by.js → workers-0QvlA2T5.js} +1 -1
- package/dist/web/assets/{yaml-D3T8UkT3.js → yaml-BK3qxo7D.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunks/actions-command-WTFZA7LF.js +0 -2
- package/dist/chunks/app-server-runtime-2RM3N4I6.js +0 -2
- package/dist/chunks/apps-KDNWYO3G.js +0 -2
- package/dist/chunks/chunk-2DFR7PJ4.js +0 -2460
- package/dist/chunks/chunk-4CRM2ADK.js +0 -2
- package/dist/chunks/chunk-55G6B54U.js +0 -6
- package/dist/chunks/chunk-73G5UYBB.js +0 -12
- package/dist/chunks/chunk-ARQEJOEK.js +0 -33
- package/dist/chunks/chunk-CGBI2VYJ.js +0 -2
- package/dist/chunks/chunk-GGIG3XU7.js +0 -3
- package/dist/chunks/chunk-JIMU3KDA.js +0 -24
- package/dist/chunks/chunk-JUJSA7KI.js +0 -22
- package/dist/chunks/chunk-K5SBVO3B.js +0 -195
- package/dist/chunks/chunk-KD3QVRIJ.js +0 -21
- package/dist/chunks/chunk-L4235TRQ.js +0 -140
- package/dist/chunks/chunk-MVF3F5QS.js +0 -2
- package/dist/chunks/chunk-OULAKUIN.js +0 -2
- package/dist/chunks/chunk-OWNLDB2O.js +0 -2
- package/dist/chunks/chunk-QDHMP5FS.js +0 -2
- package/dist/chunks/chunk-QKD5OMDI.js +0 -2
- package/dist/chunks/chunk-R2BSIRYL.js +0 -3
- package/dist/chunks/chunk-STDMBJOQ.js +0 -9
- package/dist/chunks/chunk-T4QGDQHP.js +0 -4
- package/dist/chunks/chunk-USMZT5FZ.js +0 -18
- package/dist/chunks/chunk-VJEZPDBS.js +0 -5
- package/dist/chunks/chunk-WDFLCNRC.js +0 -8
- package/dist/chunks/chunk-WZYRAR7X.js +0 -16
- package/dist/chunks/chunk-YDT7L3VZ.js +0 -24
- package/dist/chunks/chunk-YUPBAWBJ.js +0 -554
- package/dist/chunks/cli-465VC2WP.js +0 -2
- package/dist/chunks/configuration-command-LAAP2EXT.js +0 -2
- package/dist/chunks/connected-evidence-XM626247.js +0 -2
- package/dist/chunks/core-commands-W7EK552V.js +0 -2
- package/dist/chunks/datasets-QJWYTTQL.js +0 -2
- package/dist/chunks/desktop-test-3B2D34NF.js +0 -3
- package/dist/chunks/dist-HUAE2KFZ.js +0 -2
- package/dist/chunks/evaluation-coordination-2MONR4AX.js +0 -2
- package/dist/chunks/experiment-improvements-WVQ5FK46.js +0 -2
- package/dist/chunks/experiments-S5UQ32QB.js +0 -2
- package/dist/chunks/hosted-experiment-improvement-2OWOQLHC.js +0 -3
- package/dist/chunks/hosted-harness-runtime-TGFMAV7W.js +0 -2
- package/dist/chunks/hosted-profile-candidate-WQSI6HZO.js +0 -3
- package/dist/chunks/hosted-profile-compiler-Z2A4TEA6.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-control-FKGARUEE.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-inspection-QOY2JKV4.js +0 -3
- package/dist/chunks/hosted-profile-evaluation-preparation-WVP6CALP.js +0 -3
- package/dist/chunks/human-review-TGHQKXFZ.js +0 -2
- package/dist/chunks/import-4UE5XNSG.js +0 -4
- package/dist/chunks/learning-R2XBMMEM.js +0 -2
- package/dist/chunks/opchat-WULL6CUP.js +0 -3
- package/dist/chunks/organizations-I37HISVX.js +0 -2
- package/dist/chunks/project-agent-T6XKC54C.js +0 -2
- package/dist/chunks/sandbox-command-STB47FRY.js +0 -2
- package/dist/chunks/src-T3KWWCAH.js +0 -322
- package/dist/chunks/taskset-RNYDR4GS.js +0 -2
- package/dist/chunks/training-M6FAPRSJ.js +0 -2
- package/dist/chunks/workspaces-MFZ3OO6O.js +0 -2
- package/dist/web/assets/App-CLFfy_Av.js +0 -154
- package/dist/web/assets/MainPane-D3ojiN-p.js +0 -18
- package/dist/web/assets/MainPane-DOWsSew1.css +0 -1
- package/dist/web/assets/RightSidebarHomePanel-CKs3OwhD.js +0 -1
- package/dist/web/assets/SettingsView-BnANbPLS.css +0 -1
- package/dist/web/assets/SettingsView-T1vYDPjh.js +0 -5
- package/dist/web/assets/TrainingCreationPanel-D75K0yk5.js +0 -1
- package/dist/web/assets/WorkSidebarPanel-CODMjVHY.js +0 -1
- package/dist/web/assets/WorkspaceGitDialogs-DrVtapQQ.js +0 -1
- package/dist/web/assets/index-B5re-RJy.css +0 -1
- package/dist/web/assets/useProviderSettings-Bv5B9eNk.js +0 -5
|
@@ -0,0 +1,1871 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{a as S,b as V,c as $}from"./chunk-OLLLZVHF.js";import{a as O}from"./chunk-7PXZ4X4P.js";import{d as L}from"./chunk-KG325WTN.js";import{E as W,t as h,v as G}from"./chunk-3RCRSMWZ.js";import{k as J,l as p,m as g,n as k}from"./chunk-UGL7WF3W.js";import{a as Q}from"./chunk-DMFUEUAZ.js";import{a as K,c as H}from"./chunk-PSGGOZFM.js";import{p as q}from"./chunk-WJ43MJ3F.js";import{E as Y,F as B,G as j}from"./chunk-I7AQMAQI.js";import{c as x,n as M}from"./chunk-H7IWJN7L.js";import{a as r}from"./chunk-FTQLQJQV.js";function z(t,e){e.assertCurrent?.();let a=K.parse(e.owner),s=t.get("SELECT payload FROM sessions WHERE id = ?",[e.sessionId]);if(!s)throw new Error("ponder_desktop_attach_session_unavailable");let i=q.parse(JSON.parse(s.payload));if(H(i,a))return i;if(!G(i))throw new Error("ponder_desktop_attach_session_not_eligible");let o=t.get("SELECT id FROM turns WHERE session_id = ? ORDER BY sort_index DESC LIMIT 1",[i.id]);if(h(i,o?.id??null)!==e.expectedRevision)throw new Error("ponder_desktop_attach_session_changed");let T={...i,updatedAt:new Date().toISOString(),metadata:{...i.metadata,ponderLocalOwner:a}};return t.run("UPDATE sessions SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(T),T.updatedAt,i.id]),T}r(z,"attachLocalSessionOwner");function A(t){let e=new Map;for(let a of t){let s=Date.parse(a.startedAt);if(!Number.isFinite(s))continue;let i=e.get(a.sessionId)??{completedRuntimeMs:0,runningSinceMs:null},o=a.completedAt?Date.parse(a.completedAt):Number.NaN;Number.isFinite(o)?i.completedRuntimeMs+=Math.max(0,o-s):a.status==="in_progress"&&(i.runningSinceMs===null||s<i.runningSinceMs)&&(i.runningSinceMs=s),e.set(a.sessionId,i)}return new Map([...e].map(([a,s])=>[a,{runtimeSeconds:Math.max(0,Math.floor(s.completedRuntimeMs/1e3)),runtimeRunningSince:s.runningSinceMs===null?null:new Date(s.runningSinceMs).toISOString()}]))}r(A,"sessionRuntimeSummaries");function I(t,e){return{...t,runtimeSeconds:e?.runtimeSeconds??0,runtimeRunningSince:e?.runtimeRunningSince??null}}r(I,"sessionWithRuntimeSummary");var Fe=new Set(["turn.started","turn.completed","turn.failed","turn.interrupted","approval.requested","approval.resolved","task.input","task.wait"]);function Z(t,e){if(!Fe.has(e.name)||e.sessionId!==t.id)return t;let a=Date.parse(e.timestamp),s=Date.parse(typeof t.metadata?.sidebarActivityAt=="string"?t.metadata.sidebarActivityAt:t.createdAt);return!Number.isFinite(a)||a<=(Number.isFinite(s)?s:0)?t:{...t,metadata:{...t.metadata,sidebarActivityAt:e.timestamp}}}r(Z,"sessionWithSidebarActivity");import{backup as qe}from"node:sqlite";import{promises as F}from"node:fs";import m from"node:path";var ee=`
|
|
3
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
4
|
+
id TEXT PRIMARY KEY,
|
|
5
|
+
sort_index INTEGER NOT NULL,
|
|
6
|
+
payload TEXT NOT NULL,
|
|
7
|
+
updated_at TEXT NOT NULL
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
CREATE TABLE IF NOT EXISTS turns (
|
|
11
|
+
id TEXT PRIMARY KEY,
|
|
12
|
+
session_id TEXT NOT NULL,
|
|
13
|
+
sort_index INTEGER NOT NULL,
|
|
14
|
+
payload TEXT NOT NULL,
|
|
15
|
+
updated_at TEXT NOT NULL
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
19
|
+
id TEXT PRIMARY KEY,
|
|
20
|
+
session_id TEXT,
|
|
21
|
+
turn_id TEXT,
|
|
22
|
+
name TEXT NOT NULL,
|
|
23
|
+
timestamp TEXT NOT NULL,
|
|
24
|
+
sequence INTEGER NOT NULL,
|
|
25
|
+
sort_index INTEGER NOT NULL,
|
|
26
|
+
payload TEXT NOT NULL
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE UNIQUE INDEX IF NOT EXISTS events_sequence_idx ON events(sequence);
|
|
30
|
+
CREATE INDEX IF NOT EXISTS events_session_id_idx ON events(session_id);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS events_session_sequence_idx ON events(session_id, sequence);
|
|
32
|
+
CREATE INDEX IF NOT EXISTS events_timestamp_idx ON events(timestamp);
|
|
33
|
+
|
|
34
|
+
CREATE TABLE IF NOT EXISTS approvals (
|
|
35
|
+
id TEXT PRIMARY KEY,
|
|
36
|
+
session_id TEXT NOT NULL,
|
|
37
|
+
status TEXT NOT NULL,
|
|
38
|
+
sort_index INTEGER NOT NULL,
|
|
39
|
+
payload TEXT NOT NULL,
|
|
40
|
+
updated_at TEXT NOT NULL
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS approvals_status_idx ON approvals(status);
|
|
44
|
+
|
|
45
|
+
CREATE TABLE IF NOT EXISTS create_improve_runs (
|
|
46
|
+
id TEXT PRIMARY KEY,
|
|
47
|
+
profile_id TEXT NOT NULL,
|
|
48
|
+
conversation_id TEXT,
|
|
49
|
+
origin_turn_id TEXT,
|
|
50
|
+
target_kind TEXT NOT NULL,
|
|
51
|
+
target_id TEXT,
|
|
52
|
+
state TEXT NOT NULL,
|
|
53
|
+
revision INTEGER NOT NULL,
|
|
54
|
+
payload TEXT NOT NULL,
|
|
55
|
+
created_at TEXT NOT NULL,
|
|
56
|
+
updated_at TEXT NOT NULL
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_profile_state_updated_idx
|
|
60
|
+
ON create_improve_runs(profile_id, state, updated_at DESC);
|
|
61
|
+
|
|
62
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_conversation_updated_idx
|
|
63
|
+
ON create_improve_runs(conversation_id, updated_at DESC);
|
|
64
|
+
|
|
65
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_target_updated_idx
|
|
66
|
+
ON create_improve_runs(profile_id, target_kind, target_id, updated_at DESC);
|
|
67
|
+
|
|
68
|
+
CREATE TABLE IF NOT EXISTS create_improve_run_actions (
|
|
69
|
+
action_id TEXT PRIMARY KEY,
|
|
70
|
+
run_id TEXT NOT NULL,
|
|
71
|
+
expected_revision INTEGER NOT NULL,
|
|
72
|
+
resulting_revision INTEGER NOT NULL,
|
|
73
|
+
payload TEXT NOT NULL,
|
|
74
|
+
created_at TEXT NOT NULL,
|
|
75
|
+
FOREIGN KEY(run_id) REFERENCES create_improve_runs(id) ON DELETE CASCADE
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
CREATE INDEX IF NOT EXISTS create_improve_run_actions_run_revision_idx
|
|
79
|
+
ON create_improve_run_actions(run_id, resulting_revision);
|
|
80
|
+
|
|
81
|
+
CREATE TABLE IF NOT EXISTS cache_entries (
|
|
82
|
+
type TEXT NOT NULL,
|
|
83
|
+
cache_key TEXT NOT NULL,
|
|
84
|
+
payload TEXT NOT NULL,
|
|
85
|
+
updated_at TEXT NOT NULL,
|
|
86
|
+
error TEXT,
|
|
87
|
+
PRIMARY KEY (type, cache_key)
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
CREATE INDEX IF NOT EXISTS cache_entries_type_idx ON cache_entries(type);
|
|
91
|
+
|
|
92
|
+
CREATE TABLE IF NOT EXISTS sidebar_app_preferences (
|
|
93
|
+
scope TEXT NOT NULL,
|
|
94
|
+
app_id TEXT NOT NULL,
|
|
95
|
+
pinned INTEGER NOT NULL DEFAULT 0,
|
|
96
|
+
archived INTEGER NOT NULL DEFAULT 0,
|
|
97
|
+
sort_order INTEGER,
|
|
98
|
+
updated_at TEXT NOT NULL,
|
|
99
|
+
PRIMARY KEY (scope, app_id)
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
CREATE INDEX IF NOT EXISTS sidebar_app_preferences_scope_idx ON sidebar_app_preferences(scope);
|
|
103
|
+
|
|
104
|
+
CREATE TABLE IF NOT EXISTS sidebar_file_bookmarks (
|
|
105
|
+
scope TEXT NOT NULL,
|
|
106
|
+
workspace_kind TEXT NOT NULL,
|
|
107
|
+
workspace_id TEXT NOT NULL,
|
|
108
|
+
workspace_name TEXT NOT NULL,
|
|
109
|
+
file_path TEXT NOT NULL,
|
|
110
|
+
status TEXT NOT NULL,
|
|
111
|
+
sort_order INTEGER,
|
|
112
|
+
source_session_id TEXT,
|
|
113
|
+
created_at TEXT NOT NULL,
|
|
114
|
+
updated_at TEXT NOT NULL,
|
|
115
|
+
PRIMARY KEY (scope, workspace_kind, workspace_id, file_path)
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
CREATE INDEX IF NOT EXISTS sidebar_file_bookmarks_scope_status_order_idx
|
|
119
|
+
ON sidebar_file_bookmarks(scope, status, sort_order, updated_at);
|
|
120
|
+
|
|
121
|
+
CREATE TABLE IF NOT EXISTS model_usage_records (
|
|
122
|
+
id TEXT PRIMARY KEY,
|
|
123
|
+
request_id TEXT NOT NULL UNIQUE,
|
|
124
|
+
request_ordinal INTEGER NOT NULL,
|
|
125
|
+
session_id TEXT,
|
|
126
|
+
turn_id TEXT,
|
|
127
|
+
provider TEXT NOT NULL,
|
|
128
|
+
model TEXT NOT NULL,
|
|
129
|
+
route TEXT NOT NULL,
|
|
130
|
+
source TEXT NOT NULL,
|
|
131
|
+
request_kind TEXT NOT NULL,
|
|
132
|
+
visibility TEXT NOT NULL,
|
|
133
|
+
status TEXT NOT NULL,
|
|
134
|
+
started_at TEXT NOT NULL,
|
|
135
|
+
completed_at TEXT,
|
|
136
|
+
duration_ms INTEGER,
|
|
137
|
+
first_token_ms INTEGER,
|
|
138
|
+
prompt_tokens INTEGER,
|
|
139
|
+
cached_prompt_tokens INTEGER,
|
|
140
|
+
uncached_prompt_tokens INTEGER,
|
|
141
|
+
cache_write_prompt_tokens INTEGER,
|
|
142
|
+
cache_telemetry_source TEXT,
|
|
143
|
+
completion_tokens INTEGER,
|
|
144
|
+
total_tokens INTEGER,
|
|
145
|
+
error_type TEXT,
|
|
146
|
+
error_message TEXT,
|
|
147
|
+
attribution_json TEXT NOT NULL
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
CREATE INDEX IF NOT EXISTS model_usage_started_at_idx
|
|
151
|
+
ON model_usage_records(started_at);
|
|
152
|
+
|
|
153
|
+
CREATE INDEX IF NOT EXISTS model_usage_provider_model_started_idx
|
|
154
|
+
ON model_usage_records(provider, model, started_at);
|
|
155
|
+
|
|
156
|
+
CREATE INDEX IF NOT EXISTS model_usage_session_turn_ordinal_idx
|
|
157
|
+
ON model_usage_records(session_id, turn_id, request_ordinal);
|
|
158
|
+
|
|
159
|
+
CREATE INDEX IF NOT EXISTS model_usage_request_kind_started_idx
|
|
160
|
+
ON model_usage_records(request_kind, started_at);
|
|
161
|
+
|
|
162
|
+
CREATE INDEX IF NOT EXISTS model_usage_visibility_started_idx
|
|
163
|
+
ON model_usage_records(visibility, started_at);
|
|
164
|
+
|
|
165
|
+
CREATE INDEX IF NOT EXISTS model_usage_status_started_idx
|
|
166
|
+
ON model_usage_records(status, started_at);
|
|
167
|
+
|
|
168
|
+
CREATE TABLE IF NOT EXISTS projection_session_shells (
|
|
169
|
+
id TEXT PRIMARY KEY,
|
|
170
|
+
sort_index INTEGER NOT NULL,
|
|
171
|
+
payload TEXT NOT NULL,
|
|
172
|
+
updated_at TEXT NOT NULL
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
CREATE TABLE IF NOT EXISTS projection_thread_details (
|
|
176
|
+
session_id TEXT PRIMARY KEY,
|
|
177
|
+
event_count INTEGER NOT NULL,
|
|
178
|
+
latest_event_sequence INTEGER NOT NULL,
|
|
179
|
+
latest_event_at TEXT,
|
|
180
|
+
latest_turn_id TEXT,
|
|
181
|
+
latest_turn_status TEXT,
|
|
182
|
+
pending_approval_count INTEGER NOT NULL,
|
|
183
|
+
payload TEXT NOT NULL,
|
|
184
|
+
updated_at TEXT NOT NULL
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
CREATE TABLE IF NOT EXISTS projection_approvals (
|
|
188
|
+
id TEXT PRIMARY KEY,
|
|
189
|
+
session_id TEXT NOT NULL,
|
|
190
|
+
status TEXT NOT NULL,
|
|
191
|
+
sort_index INTEGER NOT NULL,
|
|
192
|
+
payload TEXT NOT NULL,
|
|
193
|
+
updated_at TEXT NOT NULL
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
CREATE INDEX IF NOT EXISTS projection_approvals_status_sort_idx
|
|
197
|
+
ON projection_approvals(status, sort_index);
|
|
198
|
+
|
|
199
|
+
CREATE TABLE IF NOT EXISTS projection_latest_turns (
|
|
200
|
+
session_id TEXT PRIMARY KEY,
|
|
201
|
+
turn_id TEXT NOT NULL,
|
|
202
|
+
status TEXT NOT NULL,
|
|
203
|
+
sort_index INTEGER NOT NULL,
|
|
204
|
+
payload TEXT NOT NULL,
|
|
205
|
+
updated_at TEXT NOT NULL
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
CREATE TABLE IF NOT EXISTS local_agent_schedules (
|
|
209
|
+
id TEXT PRIMARY KEY,
|
|
210
|
+
local_project_id TEXT NOT NULL,
|
|
211
|
+
schedule_name TEXT NOT NULL,
|
|
212
|
+
enabled INTEGER NOT NULL,
|
|
213
|
+
next_run_at TEXT,
|
|
214
|
+
payload TEXT NOT NULL,
|
|
215
|
+
created_at TEXT NOT NULL,
|
|
216
|
+
updated_at TEXT NOT NULL
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedules_project_name_idx
|
|
220
|
+
ON local_agent_schedules(local_project_id, schedule_name);
|
|
221
|
+
|
|
222
|
+
CREATE INDEX IF NOT EXISTS local_agent_schedules_due_idx
|
|
223
|
+
ON local_agent_schedules(enabled, next_run_at);
|
|
224
|
+
|
|
225
|
+
CREATE TABLE IF NOT EXISTS local_agent_schedule_runs (
|
|
226
|
+
id TEXT PRIMARY KEY,
|
|
227
|
+
schedule_id TEXT NOT NULL,
|
|
228
|
+
local_project_id TEXT NOT NULL,
|
|
229
|
+
schedule_name TEXT NOT NULL,
|
|
230
|
+
scheduled_for TEXT NOT NULL,
|
|
231
|
+
trigger TEXT NOT NULL,
|
|
232
|
+
status TEXT NOT NULL,
|
|
233
|
+
payload TEXT NOT NULL,
|
|
234
|
+
created_at TEXT NOT NULL,
|
|
235
|
+
updated_at TEXT NOT NULL
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_time_idx
|
|
239
|
+
ON local_agent_schedule_runs(schedule_id, scheduled_for, trigger);
|
|
240
|
+
|
|
241
|
+
CREATE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_idx
|
|
242
|
+
ON local_agent_schedule_runs(schedule_id, created_at DESC);
|
|
243
|
+
|
|
244
|
+
CREATE TABLE IF NOT EXISTS subagent_runs (
|
|
245
|
+
id TEXT PRIMARY KEY,
|
|
246
|
+
parent_session_id TEXT NOT NULL,
|
|
247
|
+
parent_turn_id TEXT,
|
|
248
|
+
child_session_id TEXT,
|
|
249
|
+
role_id TEXT NOT NULL,
|
|
250
|
+
status TEXT NOT NULL,
|
|
251
|
+
payload TEXT NOT NULL,
|
|
252
|
+
created_at TEXT NOT NULL,
|
|
253
|
+
updated_at TEXT NOT NULL
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
CREATE INDEX IF NOT EXISTS subagent_runs_parent_session_status_idx
|
|
257
|
+
ON subagent_runs(parent_session_id, status, updated_at DESC);
|
|
258
|
+
|
|
259
|
+
CREATE INDEX IF NOT EXISTS subagent_runs_child_session_idx
|
|
260
|
+
ON subagent_runs(child_session_id);
|
|
261
|
+
|
|
262
|
+
CREATE TABLE IF NOT EXISTS subagent_messages (
|
|
263
|
+
id TEXT PRIMARY KEY,
|
|
264
|
+
from_run_id TEXT NOT NULL,
|
|
265
|
+
to_run_id TEXT,
|
|
266
|
+
to_role TEXT,
|
|
267
|
+
kind TEXT NOT NULL,
|
|
268
|
+
payload TEXT NOT NULL,
|
|
269
|
+
created_at TEXT NOT NULL
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
CREATE INDEX IF NOT EXISTS subagent_messages_receiver_created_idx
|
|
273
|
+
ON subagent_messages(to_run_id, to_role, created_at);
|
|
274
|
+
|
|
275
|
+
CREATE TABLE IF NOT EXISTS training_sources (
|
|
276
|
+
id TEXT PRIMARY KEY,
|
|
277
|
+
profile_id TEXT NOT NULL,
|
|
278
|
+
source_kind TEXT NOT NULL,
|
|
279
|
+
session_id TEXT,
|
|
280
|
+
source_hash TEXT NOT NULL,
|
|
281
|
+
repository_id TEXT,
|
|
282
|
+
revision TEXT,
|
|
283
|
+
payload TEXT NOT NULL,
|
|
284
|
+
created_at TEXT NOT NULL,
|
|
285
|
+
updated_at TEXT NOT NULL
|
|
286
|
+
);
|
|
287
|
+
CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
|
|
288
|
+
CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
|
|
289
|
+
CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
|
|
290
|
+
CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
|
|
291
|
+
CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
|
|
292
|
+
|
|
293
|
+
CREATE TABLE IF NOT EXISTS dataset_import_jobs (
|
|
294
|
+
id TEXT PRIMARY KEY,
|
|
295
|
+
profile_id TEXT NOT NULL,
|
|
296
|
+
source_kind TEXT NOT NULL,
|
|
297
|
+
status TEXT NOT NULL,
|
|
298
|
+
repository_id TEXT,
|
|
299
|
+
revision TEXT,
|
|
300
|
+
taskset_id TEXT,
|
|
301
|
+
payload TEXT NOT NULL,
|
|
302
|
+
created_at TEXT NOT NULL,
|
|
303
|
+
updated_at TEXT NOT NULL
|
|
304
|
+
);
|
|
305
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
|
|
306
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
|
|
307
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
|
|
308
|
+
|
|
309
|
+
CREATE TABLE IF NOT EXISTS dataset_artifacts (
|
|
310
|
+
id TEXT PRIMARY KEY,
|
|
311
|
+
profile_id TEXT NOT NULL,
|
|
312
|
+
taskset_id TEXT NOT NULL,
|
|
313
|
+
taskset_revision INTEGER NOT NULL,
|
|
314
|
+
content_hash TEXT NOT NULL,
|
|
315
|
+
format TEXT NOT NULL,
|
|
316
|
+
row_count INTEGER NOT NULL,
|
|
317
|
+
storage_root TEXT NOT NULL,
|
|
318
|
+
payload TEXT NOT NULL,
|
|
319
|
+
created_at TEXT NOT NULL,
|
|
320
|
+
updated_at TEXT NOT NULL
|
|
321
|
+
);
|
|
322
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
|
|
323
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
|
|
324
|
+
CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
|
|
325
|
+
|
|
326
|
+
CREATE TABLE IF NOT EXISTS training_chat_search_documents (
|
|
327
|
+
session_id TEXT PRIMARY KEY,
|
|
328
|
+
source TEXT NOT NULL,
|
|
329
|
+
signature TEXT NOT NULL,
|
|
330
|
+
title TEXT NOT NULL,
|
|
331
|
+
updated_at TEXT NOT NULL,
|
|
332
|
+
eligible INTEGER NOT NULL,
|
|
333
|
+
body_indexed INTEGER NOT NULL DEFAULT 1
|
|
334
|
+
);
|
|
335
|
+
|
|
336
|
+
CREATE INDEX IF NOT EXISTS training_chat_search_documents_source_idx
|
|
337
|
+
ON training_chat_search_documents(source);
|
|
338
|
+
|
|
339
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS training_chat_search_fts USING fts5(
|
|
340
|
+
session_id UNINDEXED,
|
|
341
|
+
title,
|
|
342
|
+
body,
|
|
343
|
+
tokenize = 'unicode61 remove_diacritics 2'
|
|
344
|
+
);
|
|
345
|
+
|
|
346
|
+
CREATE TABLE IF NOT EXISTS task_creation_snapshots (
|
|
347
|
+
id TEXT PRIMARY KEY,
|
|
348
|
+
profile_id TEXT NOT NULL,
|
|
349
|
+
state TEXT NOT NULL,
|
|
350
|
+
payload TEXT NOT NULL,
|
|
351
|
+
created_at TEXT NOT NULL,
|
|
352
|
+
updated_at TEXT NOT NULL
|
|
353
|
+
);
|
|
354
|
+
CREATE INDEX IF NOT EXISTS task_creation_profile_updated_idx ON task_creation_snapshots(profile_id, updated_at DESC);
|
|
355
|
+
|
|
356
|
+
CREATE TABLE IF NOT EXISTS task_creation_transcripts (
|
|
357
|
+
creation_id TEXT PRIMARY KEY,
|
|
358
|
+
profile_id TEXT NOT NULL,
|
|
359
|
+
payload TEXT NOT NULL,
|
|
360
|
+
updated_at TEXT NOT NULL
|
|
361
|
+
);
|
|
362
|
+
CREATE INDEX IF NOT EXISTS task_creation_transcript_profile_idx ON task_creation_transcripts(profile_id, updated_at DESC);
|
|
363
|
+
|
|
364
|
+
CREATE TABLE IF NOT EXISTS task_design_proposals (
|
|
365
|
+
creation_id TEXT PRIMARY KEY,
|
|
366
|
+
proposal_id TEXT NOT NULL,
|
|
367
|
+
profile_id TEXT NOT NULL,
|
|
368
|
+
state TEXT NOT NULL,
|
|
369
|
+
payload TEXT NOT NULL,
|
|
370
|
+
updated_at TEXT NOT NULL
|
|
371
|
+
);
|
|
372
|
+
CREATE UNIQUE INDEX IF NOT EXISTS task_design_proposal_id_idx ON task_design_proposals(proposal_id);
|
|
373
|
+
|
|
374
|
+
CREATE TABLE IF NOT EXISTS tasksets (
|
|
375
|
+
id TEXT PRIMARY KEY,
|
|
376
|
+
profile_id TEXT NOT NULL,
|
|
377
|
+
status TEXT NOT NULL,
|
|
378
|
+
payload TEXT NOT NULL,
|
|
379
|
+
created_at TEXT NOT NULL,
|
|
380
|
+
updated_at TEXT NOT NULL
|
|
381
|
+
);
|
|
382
|
+
CREATE INDEX IF NOT EXISTS tasksets_profile_status_updated_idx ON tasksets(profile_id, status, updated_at DESC);
|
|
383
|
+
|
|
384
|
+
CREATE TABLE IF NOT EXISTS taskset_drafts (
|
|
385
|
+
id TEXT PRIMARY KEY,
|
|
386
|
+
profile_id TEXT NOT NULL,
|
|
387
|
+
status TEXT NOT NULL,
|
|
388
|
+
revision INTEGER NOT NULL,
|
|
389
|
+
payload TEXT NOT NULL,
|
|
390
|
+
created_at TEXT NOT NULL,
|
|
391
|
+
updated_at TEXT NOT NULL
|
|
392
|
+
);
|
|
393
|
+
CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx ON taskset_drafts(profile_id, updated_at DESC);
|
|
394
|
+
|
|
395
|
+
CREATE TABLE IF NOT EXISTS taskset_revisions (
|
|
396
|
+
taskset_id TEXT NOT NULL,
|
|
397
|
+
revision INTEGER NOT NULL,
|
|
398
|
+
content_hash TEXT NOT NULL,
|
|
399
|
+
profile_id TEXT NOT NULL,
|
|
400
|
+
status TEXT NOT NULL,
|
|
401
|
+
payload TEXT NOT NULL,
|
|
402
|
+
created_at TEXT NOT NULL,
|
|
403
|
+
updated_at TEXT NOT NULL,
|
|
404
|
+
PRIMARY KEY(taskset_id, revision)
|
|
405
|
+
);
|
|
406
|
+
CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx ON taskset_revisions(taskset_id, content_hash);
|
|
407
|
+
|
|
408
|
+
CREATE TABLE IF NOT EXISTS task_candidates (
|
|
409
|
+
id TEXT PRIMARY KEY,
|
|
410
|
+
profile_id TEXT NOT NULL,
|
|
411
|
+
status TEXT NOT NULL,
|
|
412
|
+
fingerprint TEXT NOT NULL,
|
|
413
|
+
payload TEXT NOT NULL,
|
|
414
|
+
created_at TEXT NOT NULL,
|
|
415
|
+
updated_at TEXT NOT NULL
|
|
416
|
+
);
|
|
417
|
+
CREATE UNIQUE INDEX IF NOT EXISTS task_candidates_profile_fingerprint_idx ON task_candidates(profile_id, fingerprint);
|
|
418
|
+
CREATE INDEX IF NOT EXISTS task_candidates_profile_status_updated_idx ON task_candidates(profile_id, status, updated_at DESC);
|
|
419
|
+
|
|
420
|
+
CREATE TABLE IF NOT EXISTS task_attempts (
|
|
421
|
+
id TEXT PRIMARY KEY,
|
|
422
|
+
taskset_id TEXT NOT NULL,
|
|
423
|
+
split TEXT NOT NULL,
|
|
424
|
+
payload TEXT NOT NULL,
|
|
425
|
+
created_at TEXT NOT NULL
|
|
426
|
+
);
|
|
427
|
+
CREATE INDEX IF NOT EXISTS task_attempts_taskset_split_idx ON task_attempts(taskset_id, split, created_at DESC);
|
|
428
|
+
|
|
429
|
+
CREATE TABLE IF NOT EXISTS task_attempt_artifacts (
|
|
430
|
+
id TEXT PRIMARY KEY,
|
|
431
|
+
taskset_id TEXT NOT NULL,
|
|
432
|
+
attempt_id TEXT NOT NULL,
|
|
433
|
+
kind TEXT NOT NULL,
|
|
434
|
+
payload TEXT NOT NULL,
|
|
435
|
+
created_at TEXT NOT NULL
|
|
436
|
+
);
|
|
437
|
+
CREATE INDEX IF NOT EXISTS task_attempt_artifacts_attempt_idx ON task_attempt_artifacts(attempt_id, created_at);
|
|
438
|
+
CREATE INDEX IF NOT EXISTS task_attempt_artifacts_taskset_idx ON task_attempt_artifacts(taskset_id, created_at);
|
|
439
|
+
|
|
440
|
+
CREATE TABLE IF NOT EXISTS grade_results (
|
|
441
|
+
id TEXT PRIMARY KEY,
|
|
442
|
+
attempt_id TEXT NOT NULL,
|
|
443
|
+
payload TEXT NOT NULL,
|
|
444
|
+
created_at TEXT NOT NULL
|
|
445
|
+
);
|
|
446
|
+
CREATE INDEX IF NOT EXISTS grade_results_attempt_idx ON grade_results(attempt_id, created_at DESC);
|
|
447
|
+
|
|
448
|
+
CREATE TABLE IF NOT EXISTS evaluation_results (
|
|
449
|
+
id TEXT PRIMARY KEY,
|
|
450
|
+
taskset_id TEXT NOT NULL,
|
|
451
|
+
kind TEXT NOT NULL,
|
|
452
|
+
payload TEXT NOT NULL,
|
|
453
|
+
created_at TEXT NOT NULL
|
|
454
|
+
);
|
|
455
|
+
CREATE INDEX IF NOT EXISTS evaluation_results_taskset_kind_idx ON evaluation_results(taskset_id, kind, created_at DESC);
|
|
456
|
+
|
|
457
|
+
CREATE TABLE IF NOT EXISTS benchmark_runs (
|
|
458
|
+
id TEXT PRIMARY KEY,
|
|
459
|
+
taskset_id TEXT NOT NULL,
|
|
460
|
+
phase TEXT NOT NULL,
|
|
461
|
+
payload TEXT NOT NULL,
|
|
462
|
+
created_at TEXT NOT NULL
|
|
463
|
+
);
|
|
464
|
+
CREATE INDEX IF NOT EXISTS benchmark_runs_taskset_created_idx ON benchmark_runs(taskset_id, created_at DESC);
|
|
465
|
+
|
|
466
|
+
CREATE TABLE IF NOT EXISTS benchmark_comparisons (
|
|
467
|
+
id TEXT PRIMARY KEY,
|
|
468
|
+
taskset_id TEXT NOT NULL,
|
|
469
|
+
payload TEXT NOT NULL,
|
|
470
|
+
created_at TEXT NOT NULL
|
|
471
|
+
);
|
|
472
|
+
CREATE INDEX IF NOT EXISTS benchmark_comparisons_taskset_created_idx ON benchmark_comparisons(taskset_id, created_at DESC);
|
|
473
|
+
|
|
474
|
+
CREATE TABLE IF NOT EXISTS grader_audit_reports (
|
|
475
|
+
id TEXT PRIMARY KEY,
|
|
476
|
+
taskset_id TEXT NOT NULL,
|
|
477
|
+
payload TEXT NOT NULL,
|
|
478
|
+
created_at TEXT NOT NULL
|
|
479
|
+
);
|
|
480
|
+
CREATE INDEX IF NOT EXISTS grader_audit_taskset_idx ON grader_audit_reports(taskset_id, created_at DESC);
|
|
481
|
+
|
|
482
|
+
CREATE TABLE IF NOT EXISTS readiness_reports (
|
|
483
|
+
taskset_id TEXT PRIMARY KEY,
|
|
484
|
+
payload TEXT NOT NULL,
|
|
485
|
+
updated_at TEXT NOT NULL
|
|
486
|
+
);
|
|
487
|
+
|
|
488
|
+
CREATE TABLE IF NOT EXISTS task_miner_configs (
|
|
489
|
+
profile_id TEXT PRIMARY KEY,
|
|
490
|
+
payload TEXT NOT NULL,
|
|
491
|
+
updated_at TEXT NOT NULL
|
|
492
|
+
);
|
|
493
|
+
|
|
494
|
+
CREATE TABLE IF NOT EXISTS task_miner_runs (
|
|
495
|
+
id TEXT PRIMARY KEY,
|
|
496
|
+
profile_id TEXT NOT NULL,
|
|
497
|
+
status TEXT NOT NULL,
|
|
498
|
+
payload TEXT NOT NULL,
|
|
499
|
+
created_at TEXT NOT NULL,
|
|
500
|
+
updated_at TEXT NOT NULL
|
|
501
|
+
);
|
|
502
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
|
|
503
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
|
|
504
|
+
|
|
505
|
+
CREATE TABLE IF NOT EXISTS model_projects (
|
|
506
|
+
id TEXT PRIMARY KEY,
|
|
507
|
+
profile_id TEXT NOT NULL,
|
|
508
|
+
payload TEXT NOT NULL,
|
|
509
|
+
created_at TEXT NOT NULL,
|
|
510
|
+
updated_at TEXT NOT NULL
|
|
511
|
+
);
|
|
512
|
+
CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx ON model_projects(profile_id, updated_at DESC);
|
|
513
|
+
CREATE TABLE IF NOT EXISTS model_versions (
|
|
514
|
+
id TEXT PRIMARY KEY,
|
|
515
|
+
model_id TEXT NOT NULL,
|
|
516
|
+
profile_id TEXT NOT NULL,
|
|
517
|
+
version_number INTEGER NOT NULL,
|
|
518
|
+
kind TEXT NOT NULL,
|
|
519
|
+
payload TEXT NOT NULL,
|
|
520
|
+
created_at TEXT NOT NULL,
|
|
521
|
+
UNIQUE(model_id, version_number)
|
|
522
|
+
);
|
|
523
|
+
CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx ON model_versions(profile_id, created_at DESC);
|
|
524
|
+
CREATE INDEX IF NOT EXISTS model_versions_model_idx ON model_versions(model_id, version_number DESC);
|
|
525
|
+
CREATE TABLE IF NOT EXISTS model_runs (
|
|
526
|
+
id TEXT PRIMARY KEY,
|
|
527
|
+
model_id TEXT NOT NULL,
|
|
528
|
+
model_version_id TEXT,
|
|
529
|
+
profile_id TEXT NOT NULL,
|
|
530
|
+
taskset_id TEXT NOT NULL,
|
|
531
|
+
status TEXT NOT NULL,
|
|
532
|
+
payload TEXT NOT NULL,
|
|
533
|
+
created_at TEXT NOT NULL,
|
|
534
|
+
updated_at TEXT NOT NULL
|
|
535
|
+
);
|
|
536
|
+
CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
|
|
537
|
+
CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
|
|
538
|
+
CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
|
|
539
|
+
|
|
540
|
+
CREATE TABLE IF NOT EXISTS model_comparison_series (
|
|
541
|
+
id TEXT PRIMARY KEY,
|
|
542
|
+
profile_id TEXT NOT NULL,
|
|
543
|
+
model_project_id TEXT NOT NULL,
|
|
544
|
+
status TEXT NOT NULL,
|
|
545
|
+
payload TEXT NOT NULL,
|
|
546
|
+
created_at TEXT NOT NULL,
|
|
547
|
+
updated_at TEXT NOT NULL
|
|
548
|
+
);
|
|
549
|
+
CREATE INDEX IF NOT EXISTS model_comparison_series_profile_updated_idx ON model_comparison_series(profile_id, updated_at DESC);
|
|
550
|
+
CREATE INDEX IF NOT EXISTS model_comparison_series_project_updated_idx ON model_comparison_series(model_project_id, updated_at DESC);
|
|
551
|
+
|
|
552
|
+
CREATE TABLE IF NOT EXISTS model_comparison_series_entries (
|
|
553
|
+
id TEXT PRIMARY KEY,
|
|
554
|
+
series_id TEXT NOT NULL,
|
|
555
|
+
profile_id TEXT NOT NULL,
|
|
556
|
+
model_project_id TEXT NOT NULL,
|
|
557
|
+
ordinal INTEGER NOT NULL,
|
|
558
|
+
status TEXT NOT NULL,
|
|
559
|
+
payload TEXT NOT NULL,
|
|
560
|
+
created_at TEXT NOT NULL,
|
|
561
|
+
updated_at TEXT NOT NULL,
|
|
562
|
+
UNIQUE(series_id, ordinal)
|
|
563
|
+
);
|
|
564
|
+
CREATE INDEX IF NOT EXISTS model_comparison_entries_series_ordinal_idx ON model_comparison_series_entries(series_id, ordinal ASC);
|
|
565
|
+
CREATE INDEX IF NOT EXISTS model_comparison_entries_project_updated_idx ON model_comparison_series_entries(model_project_id, updated_at DESC);
|
|
566
|
+
|
|
567
|
+
CREATE TABLE IF NOT EXISTS reward_model_versions (
|
|
568
|
+
id TEXT PRIMARY KEY,
|
|
569
|
+
model_id TEXT NOT NULL,
|
|
570
|
+
profile_id TEXT NOT NULL,
|
|
571
|
+
version_number INTEGER NOT NULL,
|
|
572
|
+
taskset_id TEXT NOT NULL,
|
|
573
|
+
status TEXT NOT NULL,
|
|
574
|
+
payload TEXT NOT NULL,
|
|
575
|
+
created_at TEXT NOT NULL,
|
|
576
|
+
UNIQUE(model_id, version_number)
|
|
577
|
+
);
|
|
578
|
+
CREATE INDEX IF NOT EXISTS reward_model_versions_profile_created_idx ON reward_model_versions(profile_id, created_at DESC);
|
|
579
|
+
CREATE INDEX IF NOT EXISTS reward_model_versions_taskset_created_idx ON reward_model_versions(taskset_id, created_at DESC);
|
|
580
|
+
CREATE TABLE IF NOT EXISTS reward_model_runs (
|
|
581
|
+
id TEXT PRIMARY KEY,
|
|
582
|
+
reward_model_id TEXT NOT NULL,
|
|
583
|
+
profile_id TEXT NOT NULL,
|
|
584
|
+
taskset_id TEXT NOT NULL,
|
|
585
|
+
status TEXT NOT NULL,
|
|
586
|
+
payload TEXT NOT NULL,
|
|
587
|
+
created_at TEXT NOT NULL,
|
|
588
|
+
updated_at TEXT NOT NULL
|
|
589
|
+
);
|
|
590
|
+
CREATE INDEX IF NOT EXISTS reward_model_runs_profile_updated_idx ON reward_model_runs(profile_id, updated_at DESC);
|
|
591
|
+
CREATE INDEX IF NOT EXISTS reward_model_runs_taskset_updated_idx ON reward_model_runs(taskset_id, updated_at DESC);
|
|
592
|
+
|
|
593
|
+
CREATE TABLE IF NOT EXISTS training_plans (
|
|
594
|
+
id TEXT PRIMARY KEY,
|
|
595
|
+
taskset_id TEXT NOT NULL,
|
|
596
|
+
destination_id TEXT NOT NULL,
|
|
597
|
+
payload TEXT NOT NULL,
|
|
598
|
+
created_at TEXT NOT NULL
|
|
599
|
+
);
|
|
600
|
+
CREATE INDEX IF NOT EXISTS training_plans_taskset_idx ON training_plans(taskset_id, created_at DESC);
|
|
601
|
+
|
|
602
|
+
CREATE TABLE IF NOT EXISTS training_bundles (
|
|
603
|
+
id TEXT PRIMARY KEY,
|
|
604
|
+
plan_id TEXT NOT NULL,
|
|
605
|
+
content_hash TEXT NOT NULL,
|
|
606
|
+
payload TEXT NOT NULL,
|
|
607
|
+
created_at TEXT NOT NULL
|
|
608
|
+
);
|
|
609
|
+
CREATE UNIQUE INDEX IF NOT EXISTS training_bundles_content_hash_idx ON training_bundles(content_hash);
|
|
610
|
+
|
|
611
|
+
CREATE TABLE IF NOT EXISTS training_jobs (
|
|
612
|
+
id TEXT PRIMARY KEY,
|
|
613
|
+
plan_id TEXT NOT NULL,
|
|
614
|
+
destination_id TEXT NOT NULL,
|
|
615
|
+
status TEXT NOT NULL,
|
|
616
|
+
payload TEXT NOT NULL,
|
|
617
|
+
created_at TEXT NOT NULL,
|
|
618
|
+
updated_at TEXT NOT NULL
|
|
619
|
+
);
|
|
620
|
+
CREATE INDEX IF NOT EXISTS training_jobs_status_updated_idx ON training_jobs(status, updated_at DESC);
|
|
621
|
+
CREATE INDEX IF NOT EXISTS training_jobs_plan_idx ON training_jobs(plan_id, created_at DESC);
|
|
622
|
+
|
|
623
|
+
CREATE TABLE IF NOT EXISTS training_approvals (
|
|
624
|
+
id TEXT PRIMARY KEY,
|
|
625
|
+
plan_id TEXT NOT NULL,
|
|
626
|
+
bundle_hash TEXT NOT NULL,
|
|
627
|
+
payload TEXT NOT NULL,
|
|
628
|
+
created_at TEXT NOT NULL
|
|
629
|
+
);
|
|
630
|
+
CREATE INDEX IF NOT EXISTS training_approvals_plan_idx ON training_approvals(plan_id, created_at DESC);
|
|
631
|
+
|
|
632
|
+
CREATE TABLE IF NOT EXISTS training_job_events (
|
|
633
|
+
id TEXT PRIMARY KEY,
|
|
634
|
+
job_id TEXT NOT NULL,
|
|
635
|
+
sequence INTEGER NOT NULL,
|
|
636
|
+
payload TEXT NOT NULL,
|
|
637
|
+
created_at TEXT NOT NULL,
|
|
638
|
+
UNIQUE(job_id, sequence)
|
|
639
|
+
);
|
|
640
|
+
CREATE INDEX IF NOT EXISTS training_job_events_job_sequence_idx ON training_job_events(job_id, sequence);
|
|
641
|
+
|
|
642
|
+
CREATE TABLE IF NOT EXISTS training_artifacts (
|
|
643
|
+
id TEXT PRIMARY KEY,
|
|
644
|
+
job_id TEXT NOT NULL,
|
|
645
|
+
kind TEXT NOT NULL,
|
|
646
|
+
payload TEXT NOT NULL,
|
|
647
|
+
created_at TEXT NOT NULL
|
|
648
|
+
);
|
|
649
|
+
CREATE INDEX IF NOT EXISTS training_artifacts_job_kind_idx ON training_artifacts(job_id, kind, created_at DESC);
|
|
650
|
+
|
|
651
|
+
CREATE TABLE IF NOT EXISTS model_artifact_lineage (
|
|
652
|
+
id TEXT PRIMARY KEY,
|
|
653
|
+
artifact_id TEXT NOT NULL,
|
|
654
|
+
taskset_id TEXT NOT NULL,
|
|
655
|
+
payload TEXT NOT NULL,
|
|
656
|
+
created_at TEXT NOT NULL
|
|
657
|
+
);
|
|
658
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_lineage_artifact_idx ON model_artifact_lineage(artifact_id);
|
|
659
|
+
CREATE INDEX IF NOT EXISTS model_lineage_taskset_idx ON model_artifact_lineage(taskset_id, created_at DESC);
|
|
660
|
+
|
|
661
|
+
CREATE TABLE IF NOT EXISTS training_rollout_receipts (
|
|
662
|
+
id TEXT PRIMARY KEY,
|
|
663
|
+
job_id TEXT NOT NULL,
|
|
664
|
+
taskset_id TEXT NOT NULL,
|
|
665
|
+
provider_rollout_id TEXT NOT NULL UNIQUE,
|
|
666
|
+
status TEXT NOT NULL,
|
|
667
|
+
payload TEXT NOT NULL,
|
|
668
|
+
created_at TEXT NOT NULL,
|
|
669
|
+
updated_at TEXT NOT NULL
|
|
670
|
+
);
|
|
671
|
+
|
|
672
|
+
CREATE INDEX IF NOT EXISTS training_rollout_receipts_job_updated_idx
|
|
673
|
+
ON training_rollout_receipts(job_id, updated_at DESC);
|
|
674
|
+
|
|
675
|
+
CREATE INDEX IF NOT EXISTS training_rollout_receipts_taskset_updated_idx
|
|
676
|
+
ON training_rollout_receipts(taskset_id, updated_at DESC);
|
|
677
|
+
|
|
678
|
+
CREATE TABLE IF NOT EXISTS model_bindings (
|
|
679
|
+
id TEXT PRIMARY KEY,
|
|
680
|
+
profile_id TEXT NOT NULL,
|
|
681
|
+
role TEXT NOT NULL,
|
|
682
|
+
role_target_id TEXT NOT NULL,
|
|
683
|
+
model_artifact_lineage_id TEXT NOT NULL,
|
|
684
|
+
status TEXT NOT NULL,
|
|
685
|
+
payload TEXT NOT NULL,
|
|
686
|
+
created_at TEXT NOT NULL,
|
|
687
|
+
updated_at TEXT NOT NULL
|
|
688
|
+
);
|
|
689
|
+
|
|
690
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_bindings_active_role_idx
|
|
691
|
+
ON model_bindings(profile_id, role, role_target_id)
|
|
692
|
+
WHERE status = 'active';
|
|
693
|
+
|
|
694
|
+
CREATE INDEX IF NOT EXISTS model_bindings_model_idx
|
|
695
|
+
ON model_bindings(model_artifact_lineage_id, updated_at DESC);
|
|
696
|
+
|
|
697
|
+
`;async function te(t){await t(`
|
|
698
|
+
CREATE TABLE IF NOT EXISTS create_improve_runs (
|
|
699
|
+
id TEXT PRIMARY KEY,
|
|
700
|
+
profile_id TEXT NOT NULL,
|
|
701
|
+
conversation_id TEXT,
|
|
702
|
+
origin_turn_id TEXT,
|
|
703
|
+
target_kind TEXT NOT NULL,
|
|
704
|
+
target_id TEXT,
|
|
705
|
+
state TEXT NOT NULL,
|
|
706
|
+
revision INTEGER NOT NULL,
|
|
707
|
+
payload TEXT NOT NULL,
|
|
708
|
+
created_at TEXT NOT NULL,
|
|
709
|
+
updated_at TEXT NOT NULL
|
|
710
|
+
);
|
|
711
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_profile_state_updated_idx
|
|
712
|
+
ON create_improve_runs(profile_id, state, updated_at DESC);
|
|
713
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_conversation_updated_idx
|
|
714
|
+
ON create_improve_runs(conversation_id, updated_at DESC);
|
|
715
|
+
CREATE INDEX IF NOT EXISTS create_improve_runs_target_updated_idx
|
|
716
|
+
ON create_improve_runs(profile_id, target_kind, target_id, updated_at DESC);
|
|
717
|
+
CREATE TABLE IF NOT EXISTS create_improve_run_actions (
|
|
718
|
+
action_id TEXT PRIMARY KEY,
|
|
719
|
+
run_id TEXT NOT NULL,
|
|
720
|
+
expected_revision INTEGER NOT NULL,
|
|
721
|
+
resulting_revision INTEGER NOT NULL,
|
|
722
|
+
payload TEXT NOT NULL,
|
|
723
|
+
created_at TEXT NOT NULL,
|
|
724
|
+
FOREIGN KEY(run_id) REFERENCES create_improve_runs(id) ON DELETE CASCADE
|
|
725
|
+
);
|
|
726
|
+
CREATE INDEX IF NOT EXISTS create_improve_run_actions_run_revision_idx
|
|
727
|
+
ON create_improve_run_actions(run_id, resulting_revision);
|
|
728
|
+
`)}r(te,"createCreateImproveRunTables");async function ae(t){await t(`
|
|
729
|
+
CREATE TABLE IF NOT EXISTS taskset_revisions (
|
|
730
|
+
taskset_id TEXT NOT NULL,
|
|
731
|
+
revision INTEGER NOT NULL,
|
|
732
|
+
content_hash TEXT NOT NULL,
|
|
733
|
+
profile_id TEXT NOT NULL,
|
|
734
|
+
status TEXT NOT NULL,
|
|
735
|
+
payload TEXT NOT NULL,
|
|
736
|
+
created_at TEXT NOT NULL,
|
|
737
|
+
updated_at TEXT NOT NULL,
|
|
738
|
+
PRIMARY KEY(taskset_id, revision)
|
|
739
|
+
);
|
|
740
|
+
CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx
|
|
741
|
+
ON taskset_revisions(taskset_id, content_hash);
|
|
742
|
+
`)}r(ae,"createTasksetRevisionTables");async function se(t){await t(`
|
|
743
|
+
CREATE TABLE IF NOT EXISTS task_creation_transcripts (creation_id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
744
|
+
CREATE INDEX IF NOT EXISTS task_creation_transcript_profile_idx ON task_creation_transcripts(profile_id, updated_at DESC);
|
|
745
|
+
CREATE TABLE IF NOT EXISTS task_design_proposals (creation_id TEXT PRIMARY KEY, proposal_id TEXT NOT NULL, profile_id TEXT NOT NULL, state TEXT NOT NULL, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
746
|
+
CREATE UNIQUE INDEX IF NOT EXISTS task_design_proposal_id_idx ON task_design_proposals(proposal_id);
|
|
747
|
+
`)}r(se,"createTaskCreationProjectionTables");async function ie(t){await t(`
|
|
748
|
+
CREATE TABLE IF NOT EXISTS grader_audit_reports (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
749
|
+
CREATE INDEX IF NOT EXISTS grader_audit_taskset_idx ON grader_audit_reports(taskset_id, created_at DESC);
|
|
750
|
+
`)}r(ie,"createGraderAuditTables");async function re(t){await t(`
|
|
751
|
+
CREATE TABLE IF NOT EXISTS task_attempt_artifacts (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, attempt_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
752
|
+
CREATE INDEX IF NOT EXISTS task_attempt_artifacts_attempt_idx ON task_attempt_artifacts(attempt_id, created_at);
|
|
753
|
+
CREATE INDEX IF NOT EXISTS task_attempt_artifacts_taskset_idx ON task_attempt_artifacts(taskset_id, created_at);
|
|
754
|
+
`)}r(re,"createTaskAttemptArtifactTables");async function ne(t){await t(`
|
|
755
|
+
CREATE TABLE IF NOT EXISTS training_rollout_receipts (
|
|
756
|
+
id TEXT PRIMARY KEY,
|
|
757
|
+
job_id TEXT NOT NULL,
|
|
758
|
+
taskset_id TEXT NOT NULL,
|
|
759
|
+
provider_rollout_id TEXT NOT NULL UNIQUE,
|
|
760
|
+
status TEXT NOT NULL,
|
|
761
|
+
payload TEXT NOT NULL,
|
|
762
|
+
created_at TEXT NOT NULL,
|
|
763
|
+
updated_at TEXT NOT NULL
|
|
764
|
+
);
|
|
765
|
+
CREATE INDEX IF NOT EXISTS training_rollout_receipts_job_updated_idx
|
|
766
|
+
ON training_rollout_receipts(job_id, updated_at DESC);
|
|
767
|
+
CREATE INDEX IF NOT EXISTS training_rollout_receipts_taskset_updated_idx
|
|
768
|
+
ON training_rollout_receipts(taskset_id, updated_at DESC);
|
|
769
|
+
CREATE TABLE IF NOT EXISTS model_bindings (
|
|
770
|
+
id TEXT PRIMARY KEY,
|
|
771
|
+
profile_id TEXT NOT NULL,
|
|
772
|
+
role TEXT NOT NULL,
|
|
773
|
+
role_target_id TEXT NOT NULL,
|
|
774
|
+
model_artifact_lineage_id TEXT NOT NULL,
|
|
775
|
+
status TEXT NOT NULL,
|
|
776
|
+
payload TEXT NOT NULL,
|
|
777
|
+
created_at TEXT NOT NULL,
|
|
778
|
+
updated_at TEXT NOT NULL
|
|
779
|
+
);
|
|
780
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_bindings_active_role_idx
|
|
781
|
+
ON model_bindings(profile_id, role, role_target_id)
|
|
782
|
+
WHERE status = 'active';
|
|
783
|
+
CREATE INDEX IF NOT EXISTS model_bindings_model_idx
|
|
784
|
+
ON model_bindings(model_artifact_lineage_id, updated_at DESC);
|
|
785
|
+
`)}r(ne,"createTrainingReceiptAndModelBindingTables");async function oe(t){await t(`
|
|
786
|
+
CREATE TABLE IF NOT EXISTS preference_comparison_releases (
|
|
787
|
+
id TEXT PRIMARY KEY,
|
|
788
|
+
taskset_id TEXT NOT NULL,
|
|
789
|
+
content_hash TEXT NOT NULL,
|
|
790
|
+
source_consent TEXT NOT NULL,
|
|
791
|
+
payload TEXT NOT NULL,
|
|
792
|
+
created_at TEXT NOT NULL
|
|
793
|
+
);
|
|
794
|
+
CREATE UNIQUE INDEX IF NOT EXISTS preference_comparison_release_identity_idx
|
|
795
|
+
ON preference_comparison_releases(taskset_id, content_hash);
|
|
796
|
+
CREATE INDEX IF NOT EXISTS preference_comparison_release_taskset_idx
|
|
797
|
+
ON preference_comparison_releases(taskset_id, created_at DESC);
|
|
798
|
+
|
|
799
|
+
CREATE TABLE IF NOT EXISTS preference_comparison_assignments (
|
|
800
|
+
id TEXT PRIMARY KEY,
|
|
801
|
+
taskset_id TEXT NOT NULL,
|
|
802
|
+
release_id TEXT NOT NULL,
|
|
803
|
+
purpose TEXT NOT NULL,
|
|
804
|
+
state TEXT NOT NULL,
|
|
805
|
+
reviewer_key TEXT,
|
|
806
|
+
payload TEXT NOT NULL,
|
|
807
|
+
created_at TEXT NOT NULL,
|
|
808
|
+
updated_at TEXT NOT NULL
|
|
809
|
+
);
|
|
810
|
+
CREATE INDEX IF NOT EXISTS preference_comparison_assignment_queue_idx
|
|
811
|
+
ON preference_comparison_assignments(taskset_id, state, created_at ASC);
|
|
812
|
+
CREATE INDEX IF NOT EXISTS preference_comparison_assignment_reviewer_idx
|
|
813
|
+
ON preference_comparison_assignments(reviewer_key, state, updated_at DESC);
|
|
814
|
+
|
|
815
|
+
CREATE TABLE IF NOT EXISTS preference_comparison_submissions (
|
|
816
|
+
id TEXT PRIMARY KEY,
|
|
817
|
+
taskset_id TEXT NOT NULL,
|
|
818
|
+
assignment_id TEXT NOT NULL,
|
|
819
|
+
reviewer_key TEXT NOT NULL,
|
|
820
|
+
receipt_hash TEXT NOT NULL,
|
|
821
|
+
payload TEXT NOT NULL,
|
|
822
|
+
submitted_at TEXT NOT NULL,
|
|
823
|
+
UNIQUE(assignment_id, reviewer_key)
|
|
824
|
+
);
|
|
825
|
+
CREATE INDEX IF NOT EXISTS preference_comparison_submission_taskset_idx
|
|
826
|
+
ON preference_comparison_submissions(taskset_id, submitted_at DESC);
|
|
827
|
+
|
|
828
|
+
CREATE TABLE IF NOT EXISTS preference_comparison_calibrations (
|
|
829
|
+
id TEXT PRIMARY KEY,
|
|
830
|
+
taskset_id TEXT NOT NULL,
|
|
831
|
+
release_id TEXT NOT NULL,
|
|
832
|
+
report_hash TEXT NOT NULL,
|
|
833
|
+
passed INTEGER NOT NULL,
|
|
834
|
+
payload TEXT NOT NULL,
|
|
835
|
+
created_at TEXT NOT NULL
|
|
836
|
+
);
|
|
837
|
+
CREATE UNIQUE INDEX IF NOT EXISTS preference_comparison_calibration_identity_idx
|
|
838
|
+
ON preference_comparison_calibrations(release_id, report_hash);
|
|
839
|
+
CREATE INDEX IF NOT EXISTS preference_comparison_calibration_taskset_idx
|
|
840
|
+
ON preference_comparison_calibrations(taskset_id, created_at DESC);
|
|
841
|
+
`)}r(oe,"createPreferenceComparisonTables");async function Te(t){(await t.all("PRAGMA table_info(training_sources)",[])).some(a=>a.name==="source_kind")||await t.exec(`
|
|
842
|
+
DROP INDEX IF EXISTS training_sources_profile_updated_idx;
|
|
843
|
+
DROP INDEX IF EXISTS training_sources_session_idx;
|
|
844
|
+
ALTER TABLE training_sources RENAME TO training_sources_legacy;
|
|
845
|
+
CREATE TABLE training_sources (
|
|
846
|
+
id TEXT PRIMARY KEY,
|
|
847
|
+
profile_id TEXT NOT NULL,
|
|
848
|
+
source_kind TEXT NOT NULL,
|
|
849
|
+
session_id TEXT,
|
|
850
|
+
source_hash TEXT NOT NULL,
|
|
851
|
+
repository_id TEXT,
|
|
852
|
+
revision TEXT,
|
|
853
|
+
payload TEXT NOT NULL,
|
|
854
|
+
created_at TEXT NOT NULL,
|
|
855
|
+
updated_at TEXT NOT NULL
|
|
856
|
+
);
|
|
857
|
+
INSERT INTO training_sources (
|
|
858
|
+
id, profile_id, source_kind, session_id, source_hash,
|
|
859
|
+
repository_id, revision, payload, created_at, updated_at
|
|
860
|
+
)
|
|
861
|
+
SELECT
|
|
862
|
+
id,
|
|
863
|
+
profile_id,
|
|
864
|
+
'conversation',
|
|
865
|
+
session_id,
|
|
866
|
+
COALESCE(json_extract(payload, '$.sourceHash'), id),
|
|
867
|
+
NULL,
|
|
868
|
+
NULL,
|
|
869
|
+
payload,
|
|
870
|
+
created_at,
|
|
871
|
+
updated_at
|
|
872
|
+
FROM training_sources_legacy;
|
|
873
|
+
DROP TABLE training_sources_legacy;
|
|
874
|
+
`),await t.exec(`
|
|
875
|
+
CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
|
|
876
|
+
CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
|
|
877
|
+
CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
|
|
878
|
+
CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
|
|
879
|
+
CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
|
|
880
|
+
|
|
881
|
+
CREATE TABLE IF NOT EXISTS dataset_import_jobs (
|
|
882
|
+
id TEXT PRIMARY KEY,
|
|
883
|
+
profile_id TEXT NOT NULL,
|
|
884
|
+
source_kind TEXT NOT NULL,
|
|
885
|
+
status TEXT NOT NULL,
|
|
886
|
+
repository_id TEXT,
|
|
887
|
+
revision TEXT,
|
|
888
|
+
taskset_id TEXT,
|
|
889
|
+
payload TEXT NOT NULL,
|
|
890
|
+
created_at TEXT NOT NULL,
|
|
891
|
+
updated_at TEXT NOT NULL
|
|
892
|
+
);
|
|
893
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
|
|
894
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
|
|
895
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
|
|
896
|
+
|
|
897
|
+
CREATE TABLE IF NOT EXISTS dataset_artifacts (
|
|
898
|
+
id TEXT PRIMARY KEY,
|
|
899
|
+
profile_id TEXT NOT NULL,
|
|
900
|
+
taskset_id TEXT NOT NULL,
|
|
901
|
+
taskset_revision INTEGER NOT NULL,
|
|
902
|
+
content_hash TEXT NOT NULL,
|
|
903
|
+
format TEXT NOT NULL,
|
|
904
|
+
row_count INTEGER NOT NULL,
|
|
905
|
+
storage_root TEXT NOT NULL,
|
|
906
|
+
payload TEXT NOT NULL,
|
|
907
|
+
created_at TEXT NOT NULL,
|
|
908
|
+
updated_at TEXT NOT NULL
|
|
909
|
+
);
|
|
910
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
|
|
911
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
|
|
912
|
+
CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
|
|
913
|
+
`)}r(Te,"createDatasetImportTables");async function de(t){await t(`
|
|
914
|
+
CREATE TABLE IF NOT EXISTS sidebar_file_bookmarks (
|
|
915
|
+
scope TEXT NOT NULL,
|
|
916
|
+
workspace_kind TEXT NOT NULL,
|
|
917
|
+
workspace_id TEXT NOT NULL,
|
|
918
|
+
workspace_name TEXT NOT NULL,
|
|
919
|
+
file_path TEXT NOT NULL,
|
|
920
|
+
status TEXT NOT NULL,
|
|
921
|
+
sort_order INTEGER,
|
|
922
|
+
source_session_id TEXT,
|
|
923
|
+
created_at TEXT NOT NULL,
|
|
924
|
+
updated_at TEXT NOT NULL,
|
|
925
|
+
PRIMARY KEY (scope, workspace_kind, workspace_id, file_path)
|
|
926
|
+
);
|
|
927
|
+
|
|
928
|
+
CREATE INDEX IF NOT EXISTS sidebar_file_bookmarks_scope_status_order_idx
|
|
929
|
+
ON sidebar_file_bookmarks(scope, status, sort_order, updated_at);
|
|
930
|
+
`)}r(de,"createSidebarFileBookmarkTables");async function Ee(t){await t(`
|
|
931
|
+
CREATE TABLE IF NOT EXISTS chat_workflows (
|
|
932
|
+
id TEXT PRIMARY KEY,
|
|
933
|
+
session_id TEXT NOT NULL,
|
|
934
|
+
enabled INTEGER NOT NULL,
|
|
935
|
+
next_run_at TEXT,
|
|
936
|
+
payload TEXT NOT NULL,
|
|
937
|
+
created_at TEXT NOT NULL,
|
|
938
|
+
updated_at TEXT NOT NULL
|
|
939
|
+
);
|
|
940
|
+
|
|
941
|
+
CREATE INDEX IF NOT EXISTS chat_workflows_session_idx
|
|
942
|
+
ON chat_workflows(session_id, created_at DESC);
|
|
943
|
+
CREATE INDEX IF NOT EXISTS chat_workflows_due_idx
|
|
944
|
+
ON chat_workflows(enabled, next_run_at);
|
|
945
|
+
|
|
946
|
+
CREATE TABLE IF NOT EXISTS chat_workflow_runs (
|
|
947
|
+
id TEXT PRIMARY KEY,
|
|
948
|
+
workflow_id TEXT NOT NULL,
|
|
949
|
+
session_id TEXT NOT NULL,
|
|
950
|
+
scheduled_for TEXT NOT NULL,
|
|
951
|
+
trigger TEXT NOT NULL,
|
|
952
|
+
status TEXT NOT NULL,
|
|
953
|
+
payload TEXT NOT NULL,
|
|
954
|
+
created_at TEXT NOT NULL,
|
|
955
|
+
updated_at TEXT NOT NULL
|
|
956
|
+
);
|
|
957
|
+
|
|
958
|
+
CREATE UNIQUE INDEX IF NOT EXISTS chat_workflow_runs_occurrence_idx
|
|
959
|
+
ON chat_workflow_runs(workflow_id, scheduled_for, trigger);
|
|
960
|
+
CREATE INDEX IF NOT EXISTS chat_workflow_runs_workflow_idx
|
|
961
|
+
ON chat_workflow_runs(workflow_id, created_at DESC);
|
|
962
|
+
`)}r(Ee,"createChatWorkflowTables");async function _e(t){await t(`
|
|
963
|
+
CREATE TABLE IF NOT EXISTS harness_workspaces (
|
|
964
|
+
id TEXT PRIMARY KEY,
|
|
965
|
+
owner_kind TEXT NOT NULL,
|
|
966
|
+
owner_id TEXT NOT NULL,
|
|
967
|
+
location TEXT NOT NULL,
|
|
968
|
+
revision INTEGER NOT NULL,
|
|
969
|
+
source_revision TEXT NOT NULL,
|
|
970
|
+
channel_revision INTEGER NOT NULL,
|
|
971
|
+
current_release_hash TEXT,
|
|
972
|
+
payload TEXT NOT NULL,
|
|
973
|
+
created_at TEXT NOT NULL,
|
|
974
|
+
updated_at TEXT NOT NULL
|
|
975
|
+
);
|
|
976
|
+
|
|
977
|
+
CREATE INDEX IF NOT EXISTS harness_workspaces_owner_updated_idx
|
|
978
|
+
ON harness_workspaces(owner_kind, owner_id, updated_at DESC);
|
|
979
|
+
|
|
980
|
+
CREATE TABLE IF NOT EXISTS harness_workspace_selections (
|
|
981
|
+
owner_kind TEXT NOT NULL,
|
|
982
|
+
owner_id TEXT NOT NULL,
|
|
983
|
+
workspace_id TEXT NOT NULL,
|
|
984
|
+
updated_at TEXT NOT NULL,
|
|
985
|
+
PRIMARY KEY(owner_kind, owner_id),
|
|
986
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
987
|
+
);
|
|
988
|
+
|
|
989
|
+
CREATE INDEX IF NOT EXISTS harness_workspace_selections_workspace_idx
|
|
990
|
+
ON harness_workspace_selections(workspace_id);
|
|
991
|
+
|
|
992
|
+
CREATE TABLE IF NOT EXISTS harness_workspace_settings (
|
|
993
|
+
workspace_id TEXT PRIMARY KEY,
|
|
994
|
+
background_review_enabled INTEGER NOT NULL DEFAULT 1,
|
|
995
|
+
updated_at TEXT NOT NULL,
|
|
996
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
997
|
+
);
|
|
998
|
+
|
|
999
|
+
CREATE TABLE IF NOT EXISTS harness_evaluation_review_settings (
|
|
1000
|
+
workspace_id TEXT PRIMARY KEY,
|
|
1001
|
+
enabled INTEGER NOT NULL DEFAULT 0,
|
|
1002
|
+
activity_enabled INTEGER NOT NULL DEFAULT 0,
|
|
1003
|
+
activity_batch_size INTEGER NOT NULL DEFAULT 10,
|
|
1004
|
+
cadence TEXT NOT NULL DEFAULT 'manual',
|
|
1005
|
+
max_estimated_cost_usd REAL NOT NULL DEFAULT 0,
|
|
1006
|
+
next_run_at TEXT,
|
|
1007
|
+
last_run_at TEXT,
|
|
1008
|
+
last_review_id TEXT,
|
|
1009
|
+
last_review_hash TEXT,
|
|
1010
|
+
last_classification TEXT,
|
|
1011
|
+
last_error TEXT,
|
|
1012
|
+
updated_at TEXT NOT NULL,
|
|
1013
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1014
|
+
);
|
|
1015
|
+
|
|
1016
|
+
CREATE INDEX IF NOT EXISTS harness_evaluation_review_settings_due_idx
|
|
1017
|
+
ON harness_evaluation_review_settings(enabled, next_run_at);
|
|
1018
|
+
|
|
1019
|
+
CREATE TABLE IF NOT EXISTS harness_release_records (
|
|
1020
|
+
content_hash TEXT PRIMARY KEY,
|
|
1021
|
+
id TEXT NOT NULL,
|
|
1022
|
+
workspace_id TEXT NOT NULL,
|
|
1023
|
+
source_revision TEXT NOT NULL,
|
|
1024
|
+
bundle_path TEXT NOT NULL,
|
|
1025
|
+
payload TEXT NOT NULL,
|
|
1026
|
+
created_at TEXT NOT NULL,
|
|
1027
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1028
|
+
);
|
|
1029
|
+
|
|
1030
|
+
CREATE UNIQUE INDEX IF NOT EXISTS harness_release_records_id_hash_idx
|
|
1031
|
+
ON harness_release_records(id, content_hash);
|
|
1032
|
+
CREATE INDEX IF NOT EXISTS harness_release_records_workspace_created_idx
|
|
1033
|
+
ON harness_release_records(workspace_id, created_at DESC);
|
|
1034
|
+
|
|
1035
|
+
CREATE TABLE IF NOT EXISTS harness_improvement_artifacts (
|
|
1036
|
+
content_hash TEXT PRIMARY KEY,
|
|
1037
|
+
id TEXT NOT NULL,
|
|
1038
|
+
workspace_id TEXT NOT NULL,
|
|
1039
|
+
kind TEXT NOT NULL,
|
|
1040
|
+
payload TEXT NOT NULL,
|
|
1041
|
+
created_at TEXT NOT NULL,
|
|
1042
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1043
|
+
);
|
|
1044
|
+
|
|
1045
|
+
DROP INDEX IF EXISTS harness_improvement_artifacts_id_kind_idx;
|
|
1046
|
+
CREATE INDEX IF NOT EXISTS harness_improvement_artifacts_id_kind_idx
|
|
1047
|
+
ON harness_improvement_artifacts(id, kind);
|
|
1048
|
+
CREATE INDEX IF NOT EXISTS harness_improvement_artifacts_workspace_kind_created_idx
|
|
1049
|
+
ON harness_improvement_artifacts(workspace_id, kind, created_at DESC);
|
|
1050
|
+
|
|
1051
|
+
CREATE TABLE IF NOT EXISTS harness_refinement_candidates (
|
|
1052
|
+
candidate_id TEXT PRIMARY KEY,
|
|
1053
|
+
workspace_id TEXT NOT NULL,
|
|
1054
|
+
fingerprint TEXT NOT NULL,
|
|
1055
|
+
status TEXT NOT NULL,
|
|
1056
|
+
content_hash TEXT NOT NULL,
|
|
1057
|
+
payload TEXT NOT NULL,
|
|
1058
|
+
created_at TEXT NOT NULL,
|
|
1059
|
+
updated_at TEXT NOT NULL,
|
|
1060
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1061
|
+
);
|
|
1062
|
+
|
|
1063
|
+
CREATE UNIQUE INDEX IF NOT EXISTS harness_refinement_candidates_workspace_fingerprint_idx
|
|
1064
|
+
ON harness_refinement_candidates(workspace_id, fingerprint);
|
|
1065
|
+
CREATE INDEX IF NOT EXISTS harness_refinement_candidates_workspace_status_updated_idx
|
|
1066
|
+
ON harness_refinement_candidates(workspace_id, status, updated_at DESC);
|
|
1067
|
+
|
|
1068
|
+
CREATE TABLE IF NOT EXISTS harness_cross_run_refinement_requests (
|
|
1069
|
+
deduplication_key TEXT PRIMARY KEY,
|
|
1070
|
+
workspace_id TEXT NOT NULL,
|
|
1071
|
+
candidate_id TEXT NOT NULL,
|
|
1072
|
+
admitted_release_hash TEXT NOT NULL,
|
|
1073
|
+
content_hash TEXT NOT NULL,
|
|
1074
|
+
payload TEXT NOT NULL,
|
|
1075
|
+
created_at TEXT NOT NULL,
|
|
1076
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1077
|
+
);
|
|
1078
|
+
|
|
1079
|
+
CREATE INDEX IF NOT EXISTS harness_cross_run_refinement_requests_workspace_created_idx
|
|
1080
|
+
ON harness_cross_run_refinement_requests(workspace_id, created_at DESC);
|
|
1081
|
+
|
|
1082
|
+
CREATE TABLE IF NOT EXISTS harness_advance_receipts (
|
|
1083
|
+
content_hash TEXT PRIMARY KEY,
|
|
1084
|
+
id TEXT NOT NULL UNIQUE,
|
|
1085
|
+
workspace_id TEXT NOT NULL,
|
|
1086
|
+
decision TEXT NOT NULL,
|
|
1087
|
+
payload TEXT NOT NULL,
|
|
1088
|
+
created_at TEXT NOT NULL,
|
|
1089
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1090
|
+
);
|
|
1091
|
+
|
|
1092
|
+
CREATE INDEX IF NOT EXISTS harness_advance_receipts_workspace_created_idx
|
|
1093
|
+
ON harness_advance_receipts(workspace_id, created_at DESC);
|
|
1094
|
+
|
|
1095
|
+
CREATE TABLE IF NOT EXISTS harness_run_overlays (
|
|
1096
|
+
run_id TEXT PRIMARY KEY,
|
|
1097
|
+
overlay_id TEXT NOT NULL UNIQUE,
|
|
1098
|
+
workspace_id TEXT NOT NULL,
|
|
1099
|
+
revision INTEGER NOT NULL,
|
|
1100
|
+
status TEXT NOT NULL,
|
|
1101
|
+
payload TEXT NOT NULL,
|
|
1102
|
+
created_at TEXT NOT NULL,
|
|
1103
|
+
updated_at TEXT NOT NULL,
|
|
1104
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1105
|
+
);
|
|
1106
|
+
|
|
1107
|
+
CREATE INDEX IF NOT EXISTS harness_run_overlays_workspace_updated_idx
|
|
1108
|
+
ON harness_run_overlays(workspace_id, updated_at DESC);
|
|
1109
|
+
|
|
1110
|
+
CREATE TABLE IF NOT EXISTS harness_memory_revisions (
|
|
1111
|
+
workspace_id TEXT NOT NULL,
|
|
1112
|
+
key TEXT NOT NULL,
|
|
1113
|
+
revision INTEGER NOT NULL,
|
|
1114
|
+
status TEXT NOT NULL,
|
|
1115
|
+
payload TEXT NOT NULL,
|
|
1116
|
+
created_at TEXT NOT NULL,
|
|
1117
|
+
PRIMARY KEY(workspace_id, key, revision),
|
|
1118
|
+
FOREIGN KEY(workspace_id) REFERENCES harness_workspaces(id) ON DELETE RESTRICT
|
|
1119
|
+
);
|
|
1120
|
+
|
|
1121
|
+
CREATE INDEX IF NOT EXISTS harness_memory_revisions_workspace_created_idx
|
|
1122
|
+
ON harness_memory_revisions(workspace_id, created_at DESC);
|
|
1123
|
+
`)}r(_e,"createHarnessWorkspaceTables");var xe=[50,100,200,400,800],X=class extends Error{static{r(this,"SqliteIntegrityError")}constructor(e){super(e),this.name="SqliteIntegrityError"}};function Ne(t){if(t instanceof X)return!0;let e=ue(t);if(e==="SQLITE_CORRUPT"||e==="SQLITE_NOTADB")return!0;let a=ce(t);return a.includes("database disk image is malformed")||a.includes("file is not a database")||a.includes("file is encrypted or is not a database")}r(Ne,"isConfirmedSqliteCorruption");async function le(t){for(let e=0;;e+=1)try{await t.check();return}catch(a){let s=xe[e];if(!Me(a)||s===void 0)throw a;t.onRetry?.({attempt:e+1,retryDelayMs:s,error:a}),await new Promise(i=>setTimeout(i,s))}}r(le,"retrySqliteHealthCheck");function ue(t){return!t||typeof t!="object"||!("code"in t)?null:typeof t.code=="string"?t.code.toUpperCase():null}r(ue,"sqliteErrorCode");function ce(t){return t instanceof Error?t.message.toLowerCase():String(t).toLowerCase()}r(ce,"sqliteErrorMessage");function Me(t){let e=ue(t);if(e==="SQLITE_BUSY"||e==="SQLITE_LOCKED")return!0;let a=ce(t);return a.includes("database is locked")||a.includes("database is busy")}r(Me,"isTransientSqliteAvailabilityError");var pe=[{version:1,run:r(t=>t.createSchema(),"run")},{version:2,run:r(t=>t.createHotQueryIndexes(),"run")},{version:3,run:r(t=>t.createReadModelTables(),"run")},{version:4,run:r(async()=>{},"run")},{version:5,run:r(async()=>{},"run")},{version:6,run:r(async()=>{},"run")},{version:7,run:r(t=>t.createModelUsageTables(),"run")},{version:8,run:r(t=>t.createLocalAgentScheduleTables(),"run")},{version:9,run:r(t=>t.createSubagentTables(),"run")},{version:10,run:r(async()=>{},"run")},{version:11,run:r(t=>t.createTrainingTables(),"run")},{version:12,run:r(t=>t.createTaskCreationProjectionTables(),"run")},{version:13,run:r(t=>t.createGraderAuditTables(),"run")},{version:14,run:r(t=>t.createTaskAttemptArtifactTables(),"run")},{version:15,run:r(t=>t.createTrainingChatSearchTables(),"run")},{version:16,run:r(t=>t.resetTrainingChatSearchForProgressiveIndexing(),"run")},{version:17,run:r(t=>t.createTaskMinerRunTables(),"run")},{version:19,run:r(t=>t.createCreateImproveRunTables(),"run")},{version:20,run:r(t=>t.createTrainingReceiptAndModelBindingTables(),"run")},{version:21,run:r(t=>t.createTasksetRevisionTables(),"run")},{version:24,run:r(t=>t.resetLegacySubagentTransportState(),"run")},{version:25,run:r(t=>t.resetLegacySubagentRuntimeEvents(),"run")},{version:26,run:r(t=>t.createDatasetImportTables(),"run")},{version:28,run:r(t=>t.createSidebarFileBookmarkTables(),"run")},{version:29,run:r(t=>t.createModelBuildDraftTables(),"run")},{version:30,run:r(t=>t.createModelProjectTables(),"run")},{version:31,run:r(t=>t.createModelLifecycleTables(),"run")},{version:32,run:r(t=>t.createTrainingTables(),"run")},{version:33,run:r(t=>t.retireGoalAndInsightsStorage(),"run")},{version:34,run:r(async()=>{},"run")},{version:35,run:r(t=>t.createWorkEvidenceTables(),"run")},{version:36,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:37,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:38,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:39,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:40,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:41,run:r(t=>t.createTrainingTables(),"run")},{version:43,run:r(t=>t.createHarnessWorkspaceTables(),"run")},{version:44,run:r(t=>t.createModelUsageTables(),"run")},{version:45,run:r(t=>t.createPreferenceComparisonTables(),"run")},{version:46,run:r(t=>t.createTasksetDraftTables(),"run")},{version:47,run:r(t=>t.createTrainingTables(),"run")},{version:48,run:r(t=>t.createTrainingTables(),"run")},{version:49,run:r(t=>t.consolidateModelProjectTrainingSetup(),"run")},{version:50,run:r(t=>t.repairUnverifiableLearnedPreferenceBindings(),"run")},{version:51,run:r(t=>t.createTrainingTables(),"run")},{version:52,run:r(t=>t.allowModelRunsWithoutVersion(),"run")},{version:53,run:r(t=>t.createTrainingTables(),"run")},{version:54,run:r(t=>t.createTrainingTables(),"run")},{version:55,run:r(t=>t.createTrainingTables(),"run")},{version:56,run:r(t=>t.createChatWorkflowTables(),"run")},{version:57,run:r(t=>t.createLearningTables(),"run")},{version:58,run:r(t=>t.createModelProjectAuthoringTables(),"run")},{version:59,run:r(t=>t.createLearningTables(),"run")},{version:60,run:r(t=>t.createModelProjectAuthoringTables(),"run")},{version:61,run:r(t=>t.createModelProjectAuthoringTables(),"run")},{version:62,run:r(t=>t.createModelProjectAuthoringTables(),"run")},{version:63,run:r(t=>t.createModelProjectAuthoringTables(),"run")},{version:64,run:r(t=>t.createTaskInboxTables(),"run")},{version:65,run:r(t=>t.createTrainingTables(),"run")},{version:66,run:r(t=>t.createTrainingTables(),"run")},{version:67,run:r(t=>t.createTaskInboxTables(),"run")}];async function Le(t){await t(`
|
|
1124
|
+
DELETE FROM subagent_messages;
|
|
1125
|
+
DELETE FROM subagent_runs;
|
|
1126
|
+
`)}r(Le,"resetLegacySubagentTransportState");async function Oe(t,e){await t("DELETE FROM events WHERE name LIKE 'subagent.%'",[]),await e()}r(Oe,"resetLegacySubagentRuntimeEvents");async function Se(t){await t.exec(`
|
|
1127
|
+
CREATE TABLE IF NOT EXISTS model_projects (
|
|
1128
|
+
id TEXT PRIMARY KEY,
|
|
1129
|
+
profile_id TEXT NOT NULL,
|
|
1130
|
+
payload TEXT NOT NULL,
|
|
1131
|
+
created_at TEXT NOT NULL,
|
|
1132
|
+
updated_at TEXT NOT NULL
|
|
1133
|
+
);
|
|
1134
|
+
CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx
|
|
1135
|
+
ON model_projects(profile_id, updated_at DESC);
|
|
1136
|
+
`);let e=await t.all("SELECT payload FROM model_build_drafts ORDER BY updated_at ASC");for(let a of e){let s=JSON.parse(a.payload),i=String(s.createdAt),o=String(s.updatedAt),T=String(s.modelId),d=String(s.profileId),n={schemaVersion:"openpond.modelProject.v2",id:T,profileId:d,revision:1,name:String(s.name??"Untitled Model"),objective:typeof s.objective=="string"?s.objective:null,defaultBaseModel:s.baseModel??null,defaultDestinationId:s.destinationId??null,trainingSetup:{tasksetRef:s.tasksetRef??null,harnessRelease:null,tasksetRelease:null,baseModel:s.baseModel??null,method:s.method??null,destinationId:s.destinationId??null,managedRolloutPlacement:s.managedRolloutPlacement??"remote",runPreset:s.runPreset??null,recipe:s.recipe??null,preferredMaximumSpendUsd:null,preferredRetentionDays:null},hosted:null,tasksetSyncs:[],createdAt:i,updatedAt:o};await t.run(`INSERT INTO model_projects (id, profile_id, payload, created_at, updated_at)
|
|
1137
|
+
VALUES (?, ?, ?, ?, ?)
|
|
1138
|
+
ON CONFLICT(id) DO UPDATE SET payload = excluded.payload, updated_at = excluded.updated_at`,[T,d,JSON.stringify(n),i,o])}await t.exec(`
|
|
1139
|
+
DROP INDEX IF EXISTS model_build_drafts_profile_updated_idx;
|
|
1140
|
+
DROP INDEX IF EXISTS model_build_drafts_model_idx;
|
|
1141
|
+
DROP TABLE IF EXISTS model_build_drafts;
|
|
1142
|
+
`)}r(Se,"createModelProjectTables");async function Ie(t){await t.exec(`
|
|
1143
|
+
ALTER TABLE model_runs RENAME TO model_runs_before_nullable_version;
|
|
1144
|
+
CREATE TABLE model_runs (
|
|
1145
|
+
id TEXT PRIMARY KEY,
|
|
1146
|
+
model_id TEXT NOT NULL,
|
|
1147
|
+
model_version_id TEXT,
|
|
1148
|
+
profile_id TEXT NOT NULL,
|
|
1149
|
+
taskset_id TEXT NOT NULL,
|
|
1150
|
+
status TEXT NOT NULL,
|
|
1151
|
+
payload TEXT NOT NULL,
|
|
1152
|
+
created_at TEXT NOT NULL,
|
|
1153
|
+
updated_at TEXT NOT NULL
|
|
1154
|
+
);
|
|
1155
|
+
INSERT INTO model_runs (
|
|
1156
|
+
id, model_id, model_version_id, profile_id, taskset_id, status, payload,
|
|
1157
|
+
created_at, updated_at
|
|
1158
|
+
)
|
|
1159
|
+
SELECT id, model_id, model_version_id, profile_id, taskset_id, status,
|
|
1160
|
+
payload, created_at, updated_at
|
|
1161
|
+
FROM model_runs_before_nullable_version;
|
|
1162
|
+
DROP TABLE model_runs_before_nullable_version;
|
|
1163
|
+
CREATE INDEX model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
|
|
1164
|
+
CREATE INDEX model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
|
|
1165
|
+
CREATE INDEX model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
|
|
1166
|
+
`)}r(Ie,"allowModelRunsWithoutVersion");var D={tasksetRef:null,harnessRelease:null,tasksetRelease:null,baseModel:null,method:null,destinationId:null,managedRolloutPlacement:"remote",runPreset:null,recipe:null,preferredMaximumSpendUsd:null,preferredRetentionDays:null};async function Xe(t){let e="model_run_drafts",a=await t.all("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[e]),s=new Map;if(a.length>0){let o=await t.all(`SELECT payload, updated_at FROM ${e} ORDER BY updated_at DESC`);for(let T of o){let d=JSON.parse(T.payload),n=typeof d.modelId=="string"?d.modelId:null;n&&!s.has(n)&&s.set(n,d)}}let i=await t.all("SELECT payload, updated_at FROM model_projects ORDER BY updated_at ASC");for(let o of i){let{ModelProjectSchema:T}=await import("./model-projects-QPO22JPA.js"),{sanitizeUnverifiableLearnedPreferenceBindings:d}=await import("./store-learned-preference-migration-validation-4CI2IRUF.js"),n=JSON.parse(o.payload),E=String(n.id),N=s.get(E),c=Ye(n.trainingSetup)?n.trainingSetup:D,u=N&&typeof N.updatedAt=="string"?N.updatedAt:null,R=!!(N&&u&&u>=o.updated_at),y=R&&N?{...D,...c,tasksetRef:N.tasksetRef??c.tasksetRef??null,harnessRelease:N.harnessRelease??c.harnessRelease??null,tasksetRelease:N.tasksetRelease??c.tasksetRelease??null,baseModel:N.baseModel??c.baseModel??null,method:N.method??c.method??null,destinationId:N.destinationId??c.destinationId??null,managedRolloutPlacement:N.managedRolloutPlacement??c.managedRolloutPlacement??"remote",runPreset:N.runPreset??c.runPreset??null,recipe:N.recipe??c.recipe??null}:{...D,...c},l=d(y).value,Pe=typeof n.revision=="number"&&Number.isInteger(n.revision)?n.revision:1,be=R&&u?u:String(n.updatedAt??o.updated_at),w=T.parse({...n,schemaVersion:"openpond.modelProject.v2",revision:Pe+1,trainingSetup:l,hosted:n.hosted??null,tasksetSyncs:n.tasksetSyncs??[],updatedAt:be});await t.run("UPDATE model_projects SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(w),w.updatedAt,w.id])}await t.exec(`
|
|
1167
|
+
DROP INDEX IF EXISTS model_run_drafts_profile_updated_idx;
|
|
1168
|
+
DROP INDEX IF EXISTS model_run_drafts_model_idx;
|
|
1169
|
+
DROP TABLE IF EXISTS model_run_drafts;
|
|
1170
|
+
`)}r(Xe,"consolidateModelProjectTrainingSetup");async function me(t){for(let e of["model_projects","model_runs","training_plans"]){if((await t.all("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[e])).length===0)continue;let s=await t.all(`SELECT id, payload FROM ${e} WHERE payload LIKE '%learnedPreference%'`);for(let i of s){let{sanitizeUnverifiableLearnedPreferenceBindings:o}=await import("./store-learned-preference-migration-validation-4CI2IRUF.js"),T=o(JSON.parse(i.payload));T.changed&&await t.run(`UPDATE ${e} SET payload = ? WHERE id = ?`,[JSON.stringify(T.value),i.id])}}}r(me,"repairUnverifiableLearnedPreferenceBindings");function Ye(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}r(Ye,"isRecord");async function Re(t){await t.exec(`
|
|
1171
|
+
CREATE TABLE IF NOT EXISTS model_versions (
|
|
1172
|
+
id TEXT PRIMARY KEY,
|
|
1173
|
+
model_id TEXT NOT NULL,
|
|
1174
|
+
profile_id TEXT NOT NULL,
|
|
1175
|
+
version_number INTEGER NOT NULL,
|
|
1176
|
+
kind TEXT NOT NULL,
|
|
1177
|
+
payload TEXT NOT NULL,
|
|
1178
|
+
created_at TEXT NOT NULL,
|
|
1179
|
+
UNIQUE(model_id, version_number)
|
|
1180
|
+
);
|
|
1181
|
+
CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx
|
|
1182
|
+
ON model_versions(profile_id, created_at DESC);
|
|
1183
|
+
CREATE INDEX IF NOT EXISTS model_versions_model_idx
|
|
1184
|
+
ON model_versions(model_id, version_number DESC);
|
|
1185
|
+
|
|
1186
|
+
CREATE TABLE IF NOT EXISTS model_runs (
|
|
1187
|
+
id TEXT PRIMARY KEY,
|
|
1188
|
+
model_id TEXT NOT NULL,
|
|
1189
|
+
model_version_id TEXT,
|
|
1190
|
+
profile_id TEXT NOT NULL,
|
|
1191
|
+
taskset_id TEXT NOT NULL,
|
|
1192
|
+
status TEXT NOT NULL,
|
|
1193
|
+
payload TEXT NOT NULL,
|
|
1194
|
+
created_at TEXT NOT NULL,
|
|
1195
|
+
updated_at TEXT NOT NULL
|
|
1196
|
+
);
|
|
1197
|
+
CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx
|
|
1198
|
+
ON model_runs(profile_id, updated_at DESC);
|
|
1199
|
+
CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx
|
|
1200
|
+
ON model_runs(model_id, updated_at DESC);
|
|
1201
|
+
CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx
|
|
1202
|
+
ON model_runs(taskset_id, updated_at DESC);
|
|
1203
|
+
`)}r(Re,"createModelLifecycleTables");async function he(t){let a=(await t.all("SELECT id, payload FROM sessions")).flatMap(n=>JSON.parse(n.payload).systemKind==="openpond.insights"?[n.id]:[]),s=new Set(a),i=(await t.all("SELECT * FROM subagent_runs")).filter(n=>!s.has(n.parent_session_id)&&(!n.child_session_id||!s.has(n.child_session_id))),o=new Set(i.map(n=>n.id)),T=(await t.all("SELECT * FROM subagent_messages")).filter(n=>o.has(n.from_run_id)&&(!n.to_run_id||o.has(n.to_run_id)));for(let n of a)await t.run("DELETE FROM model_usage_records WHERE session_id = ?",[n]),await t.run("DELETE FROM projection_thread_details WHERE session_id = ?",[n]),await t.run("DELETE FROM projection_session_shells WHERE id = ?",[n]),await t.run("DELETE FROM projection_approvals WHERE session_id = ?",[n]),await t.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[n]),await t.run("DELETE FROM approvals WHERE session_id = ?",[n]),await t.run("DELETE FROM events WHERE session_id = ?",[n]),await t.run("DELETE FROM turns WHERE session_id = ?",[n]),await t.run("DELETE FROM sessions WHERE id = ?",[n]);await t.run(`DELETE FROM model_usage_records
|
|
1204
|
+
WHERE request_kind IN ('insights_scan', 'insights_question', 'goal_control')`,[]);let d=await t.get(`SELECT payload FROM cache_entries
|
|
1205
|
+
WHERE type = 'local.projects' AND cache_key = 'v1'`,[]);if(d){let n=JSON.parse(d.payload);if(Array.isArray(n)){let E=n.filter(N=>{if(!N||typeof N!="object"||Array.isArray(N))return!0;let c=N;return c.id!=="system_openpond_insights"&&c.systemKind!=="openpond.insights"});await t.run(`UPDATE cache_entries SET payload = ?
|
|
1206
|
+
WHERE type = 'local.projects' AND cache_key = 'v1'`,[JSON.stringify(E)])}}await t.exec(`
|
|
1207
|
+
DROP TABLE IF EXISTS insight_items;
|
|
1208
|
+
DROP TABLE IF EXISTS openpond_thread_goals;
|
|
1209
|
+
DROP TABLE IF EXISTS subagent_messages;
|
|
1210
|
+
DROP TABLE IF EXISTS subagent_runs;
|
|
1211
|
+
`),await t.createSubagentTables();for(let n of i){let E=JSON.parse(n.payload);delete E.parentGoalId,E.peerMessages==="goal_scoped"&&(E.peerMessages="parent_scoped"),await t.run(`INSERT INTO subagent_runs (
|
|
1212
|
+
id, parent_session_id, parent_turn_id, child_session_id, role_id,
|
|
1213
|
+
status, payload, created_at, updated_at
|
|
1214
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[n.id,n.parent_session_id,n.parent_turn_id,n.child_session_id,n.role_id,n.status,JSON.stringify(E),n.created_at,n.updated_at])}for(let n of T){let E=JSON.parse(n.payload);delete E.parentGoalId,await t.run(`INSERT INTO subagent_messages (
|
|
1215
|
+
id, from_run_id, to_run_id, to_role, kind, payload, created_at
|
|
1216
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)`,[n.id,n.from_run_id,n.to_run_id,n.to_role,n.kind,JSON.stringify(E),n.created_at])}await t.run(`UPDATE cache_entries
|
|
1217
|
+
SET payload = replace(payload, '"goal_scoped"', '"parent_scoped"')
|
|
1218
|
+
WHERE instr(payload, '"goal_scoped"') > 0`,[])}r(he,"retireGoalAndInsightsStorageState");var ge=`
|
|
1219
|
+
CREATE TABLE IF NOT EXISTS training_sources (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, source_kind TEXT NOT NULL, session_id TEXT, source_hash TEXT NOT NULL, repository_id TEXT, revision TEXT, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1220
|
+
CREATE INDEX IF NOT EXISTS training_sources_profile_updated_idx ON training_sources(profile_id, updated_at DESC);
|
|
1221
|
+
CREATE INDEX IF NOT EXISTS training_sources_session_idx ON training_sources(session_id);
|
|
1222
|
+
CREATE INDEX IF NOT EXISTS training_sources_kind_updated_idx ON training_sources(profile_id, source_kind, updated_at DESC);
|
|
1223
|
+
CREATE INDEX IF NOT EXISTS training_sources_hash_idx ON training_sources(profile_id, source_hash);
|
|
1224
|
+
CREATE INDEX IF NOT EXISTS training_sources_repository_revision_idx ON training_sources(repository_id, revision);
|
|
1225
|
+
CREATE TABLE IF NOT EXISTS dataset_import_jobs (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, source_kind TEXT NOT NULL, status TEXT NOT NULL, repository_id TEXT, revision TEXT, taskset_id TEXT, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1226
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_profile_updated_idx ON dataset_import_jobs(profile_id, updated_at DESC);
|
|
1227
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_status_updated_idx ON dataset_import_jobs(status, updated_at DESC);
|
|
1228
|
+
CREATE INDEX IF NOT EXISTS dataset_import_jobs_repository_revision_idx ON dataset_import_jobs(repository_id, revision);
|
|
1229
|
+
CREATE TABLE IF NOT EXISTS dataset_artifacts (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, taskset_revision INTEGER NOT NULL, content_hash TEXT NOT NULL, format TEXT NOT NULL, row_count INTEGER NOT NULL, storage_root TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1230
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_taskset_revision_idx ON dataset_artifacts(taskset_id, taskset_revision);
|
|
1231
|
+
CREATE UNIQUE INDEX IF NOT EXISTS dataset_artifacts_content_hash_idx ON dataset_artifacts(content_hash);
|
|
1232
|
+
CREATE INDEX IF NOT EXISTS dataset_artifacts_profile_updated_idx ON dataset_artifacts(profile_id, updated_at DESC);
|
|
1233
|
+
CREATE TABLE IF NOT EXISTS task_creation_snapshots (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, state TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1234
|
+
CREATE INDEX IF NOT EXISTS task_creation_profile_updated_idx ON task_creation_snapshots(profile_id, updated_at DESC);
|
|
1235
|
+
CREATE TABLE IF NOT EXISTS tasksets (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1236
|
+
CREATE INDEX IF NOT EXISTS tasksets_profile_status_updated_idx ON tasksets(profile_id, status, updated_at DESC);
|
|
1237
|
+
CREATE TABLE IF NOT EXISTS taskset_drafts (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1238
|
+
CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx ON taskset_drafts(profile_id, updated_at DESC);
|
|
1239
|
+
CREATE TABLE IF NOT EXISTS taskset_revisions (taskset_id TEXT NOT NULL, revision INTEGER NOT NULL, content_hash TEXT NOT NULL, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, PRIMARY KEY(taskset_id, revision));
|
|
1240
|
+
CREATE UNIQUE INDEX IF NOT EXISTS taskset_revisions_hash_idx ON taskset_revisions(taskset_id, content_hash);
|
|
1241
|
+
CREATE TABLE IF NOT EXISTS task_candidates (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, fingerprint TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1242
|
+
CREATE UNIQUE INDEX IF NOT EXISTS task_candidates_profile_fingerprint_idx ON task_candidates(profile_id, fingerprint);
|
|
1243
|
+
CREATE INDEX IF NOT EXISTS task_candidates_profile_status_updated_idx ON task_candidates(profile_id, status, updated_at DESC);
|
|
1244
|
+
CREATE TABLE IF NOT EXISTS task_attempts (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, split TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1245
|
+
CREATE INDEX IF NOT EXISTS task_attempts_taskset_split_idx ON task_attempts(taskset_id, split, created_at DESC);
|
|
1246
|
+
CREATE TABLE IF NOT EXISTS grade_results (id TEXT PRIMARY KEY, attempt_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1247
|
+
CREATE INDEX IF NOT EXISTS grade_results_attempt_idx ON grade_results(attempt_id, created_at DESC);
|
|
1248
|
+
CREATE TABLE IF NOT EXISTS evaluation_results (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1249
|
+
CREATE INDEX IF NOT EXISTS evaluation_results_taskset_kind_idx ON evaluation_results(taskset_id, kind, created_at DESC);
|
|
1250
|
+
CREATE TABLE IF NOT EXISTS profile_evaluation_runs (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1251
|
+
CREATE INDEX IF NOT EXISTS profile_evaluation_runs_profile_created_idx ON profile_evaluation_runs(profile_key, created_at DESC);
|
|
1252
|
+
CREATE INDEX IF NOT EXISTS profile_evaluation_runs_taskset_created_idx ON profile_evaluation_runs(taskset_id, created_at DESC);
|
|
1253
|
+
CREATE TABLE IF NOT EXISTS profile_evaluation_grades (content_hash TEXT PRIMARY KEY, payload TEXT NOT NULL);
|
|
1254
|
+
CREATE TABLE IF NOT EXISTS profile_evaluation_receipts (id TEXT PRIMARY KEY, run_id TEXT NOT NULL, payload TEXT NOT NULL);
|
|
1255
|
+
CREATE INDEX IF NOT EXISTS profile_evaluation_receipts_run_idx ON profile_evaluation_receipts(run_id);
|
|
1256
|
+
CREATE TABLE IF NOT EXISTS profile_evaluation_comparisons (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1257
|
+
CREATE INDEX IF NOT EXISTS profile_evaluation_comparisons_profile_created_idx ON profile_evaluation_comparisons(profile_key, created_at DESC);
|
|
1258
|
+
CREATE TABLE IF NOT EXISTS profile_evaluation_suite_runs (id TEXT PRIMARY KEY, profile_key TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1259
|
+
CREATE INDEX IF NOT EXISTS profile_evaluation_suite_runs_profile_created_idx ON profile_evaluation_suite_runs(profile_key, created_at DESC);
|
|
1260
|
+
CREATE TABLE IF NOT EXISTS benchmark_runs (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, phase TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1261
|
+
CREATE INDEX IF NOT EXISTS benchmark_runs_taskset_created_idx ON benchmark_runs(taskset_id, created_at DESC);
|
|
1262
|
+
CREATE TABLE IF NOT EXISTS benchmark_comparisons (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1263
|
+
CREATE INDEX IF NOT EXISTS benchmark_comparisons_taskset_created_idx ON benchmark_comparisons(taskset_id, created_at DESC);
|
|
1264
|
+
CREATE TABLE IF NOT EXISTS readiness_reports (taskset_id TEXT PRIMARY KEY, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1265
|
+
CREATE TABLE IF NOT EXISTS task_miner_configs (profile_id TEXT PRIMARY KEY, payload TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1266
|
+
CREATE TABLE IF NOT EXISTS task_miner_runs (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1267
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
|
|
1268
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
|
|
1269
|
+
CREATE TABLE IF NOT EXISTS model_projects (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1270
|
+
CREATE INDEX IF NOT EXISTS model_projects_profile_updated_idx ON model_projects(profile_id, updated_at DESC);
|
|
1271
|
+
CREATE TABLE IF NOT EXISTS model_versions (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, profile_id TEXT NOT NULL, version_number INTEGER NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(model_id, version_number));
|
|
1272
|
+
CREATE INDEX IF NOT EXISTS model_versions_profile_created_idx ON model_versions(profile_id, created_at DESC);
|
|
1273
|
+
CREATE INDEX IF NOT EXISTS model_versions_model_idx ON model_versions(model_id, version_number DESC);
|
|
1274
|
+
CREATE TABLE IF NOT EXISTS model_runs (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, model_version_id TEXT, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1275
|
+
CREATE INDEX IF NOT EXISTS model_runs_profile_updated_idx ON model_runs(profile_id, updated_at DESC);
|
|
1276
|
+
CREATE INDEX IF NOT EXISTS model_runs_model_updated_idx ON model_runs(model_id, updated_at DESC);
|
|
1277
|
+
CREATE INDEX IF NOT EXISTS model_runs_taskset_updated_idx ON model_runs(taskset_id, updated_at DESC);
|
|
1278
|
+
CREATE TABLE IF NOT EXISTS model_comparison_series (id TEXT PRIMARY KEY, profile_id TEXT NOT NULL, model_project_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1279
|
+
CREATE INDEX IF NOT EXISTS model_comparison_series_profile_updated_idx ON model_comparison_series(profile_id, updated_at DESC);
|
|
1280
|
+
CREATE INDEX IF NOT EXISTS model_comparison_series_project_updated_idx ON model_comparison_series(model_project_id, updated_at DESC);
|
|
1281
|
+
CREATE TABLE IF NOT EXISTS model_comparison_series_entries (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, profile_id TEXT NOT NULL, model_project_id TEXT NOT NULL, ordinal INTEGER NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, ordinal));
|
|
1282
|
+
CREATE INDEX IF NOT EXISTS model_comparison_entries_series_ordinal_idx ON model_comparison_series_entries(series_id, ordinal ASC);
|
|
1283
|
+
CREATE INDEX IF NOT EXISTS model_comparison_entries_project_updated_idx ON model_comparison_series_entries(model_project_id, updated_at DESC);
|
|
1284
|
+
CREATE TABLE IF NOT EXISTS model_currency_snapshots (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, entry_id TEXT NOT NULL, evidence_state TEXT NOT NULL, content_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(entry_id, content_hash));
|
|
1285
|
+
CREATE INDEX IF NOT EXISTS model_currency_snapshots_series_created_idx ON model_currency_snapshots(series_id, created_at DESC);
|
|
1286
|
+
CREATE INDEX IF NOT EXISTS model_currency_snapshots_entry_created_idx ON model_currency_snapshots(entry_id, created_at DESC);
|
|
1287
|
+
CREATE TABLE IF NOT EXISTS continual_bench_issue_reviews (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, pass_label TEXT NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, pass_label));
|
|
1288
|
+
CREATE INDEX IF NOT EXISTS continual_bench_issue_reviews_series_updated_idx ON continual_bench_issue_reviews(series_id, updated_at DESC);
|
|
1289
|
+
CREATE TABLE IF NOT EXISTS continual_learning_daily_batches (id TEXT PRIMARY KEY, series_id TEXT NOT NULL, schedule_entry_id TEXT NOT NULL, day_ordinal INTEGER NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(series_id, day_ordinal), UNIQUE(series_id, schedule_entry_id));
|
|
1290
|
+
CREATE INDEX IF NOT EXISTS continual_learning_daily_batches_series_ordinal_idx ON continual_learning_daily_batches(series_id, day_ordinal ASC);
|
|
1291
|
+
CREATE TABLE IF NOT EXISTS reward_model_versions (id TEXT PRIMARY KEY, model_id TEXT NOT NULL, profile_id TEXT NOT NULL, version_number INTEGER NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(model_id, version_number));
|
|
1292
|
+
CREATE INDEX IF NOT EXISTS reward_model_versions_profile_created_idx ON reward_model_versions(profile_id, created_at DESC);
|
|
1293
|
+
CREATE INDEX IF NOT EXISTS reward_model_versions_taskset_created_idx ON reward_model_versions(taskset_id, created_at DESC);
|
|
1294
|
+
CREATE TABLE IF NOT EXISTS reward_model_runs (id TEXT PRIMARY KEY, reward_model_id TEXT NOT NULL, profile_id TEXT NOT NULL, taskset_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1295
|
+
CREATE INDEX IF NOT EXISTS reward_model_runs_profile_updated_idx ON reward_model_runs(profile_id, updated_at DESC);
|
|
1296
|
+
CREATE INDEX IF NOT EXISTS reward_model_runs_taskset_updated_idx ON reward_model_runs(taskset_id, updated_at DESC);
|
|
1297
|
+
CREATE TABLE IF NOT EXISTS training_plans (id TEXT PRIMARY KEY, taskset_id TEXT NOT NULL, destination_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1298
|
+
CREATE INDEX IF NOT EXISTS training_plans_taskset_idx ON training_plans(taskset_id, created_at DESC);
|
|
1299
|
+
CREATE TABLE IF NOT EXISTS training_bundles (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, content_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1300
|
+
CREATE UNIQUE INDEX IF NOT EXISTS training_bundles_content_hash_idx ON training_bundles(content_hash);
|
|
1301
|
+
CREATE TABLE IF NOT EXISTS training_jobs (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, destination_id TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
|
|
1302
|
+
CREATE INDEX IF NOT EXISTS training_jobs_status_updated_idx ON training_jobs(status, updated_at DESC);
|
|
1303
|
+
CREATE INDEX IF NOT EXISTS training_jobs_plan_idx ON training_jobs(plan_id, created_at DESC);
|
|
1304
|
+
CREATE TABLE IF NOT EXISTS training_approvals (id TEXT PRIMARY KEY, plan_id TEXT NOT NULL, bundle_hash TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1305
|
+
CREATE INDEX IF NOT EXISTS training_approvals_plan_idx ON training_approvals(plan_id, created_at DESC);
|
|
1306
|
+
CREATE TABLE IF NOT EXISTS training_job_events (id TEXT PRIMARY KEY, job_id TEXT NOT NULL, sequence INTEGER NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL, UNIQUE(job_id, sequence));
|
|
1307
|
+
CREATE INDEX IF NOT EXISTS training_job_events_job_sequence_idx ON training_job_events(job_id, sequence);
|
|
1308
|
+
CREATE TABLE IF NOT EXISTS training_artifacts (id TEXT PRIMARY KEY, job_id TEXT NOT NULL, kind TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1309
|
+
CREATE INDEX IF NOT EXISTS training_artifacts_job_kind_idx ON training_artifacts(job_id, kind, created_at DESC);
|
|
1310
|
+
CREATE TABLE IF NOT EXISTS model_artifact_lineage (id TEXT PRIMARY KEY, artifact_id TEXT NOT NULL, taskset_id TEXT NOT NULL, payload TEXT NOT NULL, created_at TEXT NOT NULL);
|
|
1311
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_lineage_artifact_idx ON model_artifact_lineage(artifact_id);
|
|
1312
|
+
CREATE INDEX IF NOT EXISTS model_lineage_taskset_idx ON model_artifact_lineage(taskset_id, created_at DESC);
|
|
1313
|
+
`;var Ae=`
|
|
1314
|
+
CREATE TABLE IF NOT EXISTS learning_revisions (
|
|
1315
|
+
scope TEXT NOT NULL,
|
|
1316
|
+
kind TEXT NOT NULL,
|
|
1317
|
+
id TEXT NOT NULL,
|
|
1318
|
+
revision INTEGER NOT NULL CHECK (revision > 0),
|
|
1319
|
+
payload TEXT NOT NULL,
|
|
1320
|
+
PRIMARY KEY (scope, kind, id, revision)
|
|
1321
|
+
);
|
|
1322
|
+
CREATE TABLE IF NOT EXISTS learning_resources (
|
|
1323
|
+
scope TEXT NOT NULL,
|
|
1324
|
+
kind TEXT NOT NULL,
|
|
1325
|
+
id TEXT NOT NULL,
|
|
1326
|
+
revision INTEGER NOT NULL,
|
|
1327
|
+
parent_id TEXT,
|
|
1328
|
+
status TEXT,
|
|
1329
|
+
PRIMARY KEY (scope, kind, id),
|
|
1330
|
+
FOREIGN KEY (scope, kind, id, revision) REFERENCES learning_revisions (scope, kind, id, revision)
|
|
1331
|
+
);
|
|
1332
|
+
CREATE INDEX IF NOT EXISTS learning_parent_idx ON learning_resources (scope, kind, parent_id, id);
|
|
1333
|
+
CREATE INDEX IF NOT EXISTS learning_status_idx ON learning_resources (scope, kind, status, id);
|
|
1334
|
+
CREATE TABLE IF NOT EXISTS learning_operations (
|
|
1335
|
+
scope TEXT NOT NULL,
|
|
1336
|
+
id TEXT NOT NULL,
|
|
1337
|
+
payload TEXT NOT NULL,
|
|
1338
|
+
PRIMARY KEY (scope, id)
|
|
1339
|
+
);
|
|
1340
|
+
CREATE TABLE IF NOT EXISTS learning_family_splits (
|
|
1341
|
+
scope TEXT NOT NULL,
|
|
1342
|
+
namespace TEXT NOT NULL,
|
|
1343
|
+
kind TEXT NOT NULL,
|
|
1344
|
+
key TEXT NOT NULL,
|
|
1345
|
+
split TEXT NOT NULL,
|
|
1346
|
+
PRIMARY KEY (scope, namespace, kind, key)
|
|
1347
|
+
);
|
|
1348
|
+
CREATE TABLE IF NOT EXISTS learning_source_credentials (
|
|
1349
|
+
id TEXT PRIMARY KEY,
|
|
1350
|
+
scope TEXT NOT NULL,
|
|
1351
|
+
source_id TEXT NOT NULL,
|
|
1352
|
+
key_hash TEXT NOT NULL UNIQUE,
|
|
1353
|
+
request_hash TEXT NOT NULL,
|
|
1354
|
+
payload TEXT NOT NULL
|
|
1355
|
+
);
|
|
1356
|
+
CREATE INDEX IF NOT EXISTS learning_source_credentials_scope_idx ON learning_source_credentials (scope, source_id, id);
|
|
1357
|
+
`;var Ue=`
|
|
1358
|
+
CREATE TABLE IF NOT EXISTS model_taskset_draft_operations (
|
|
1359
|
+
profile_id TEXT NOT NULL,
|
|
1360
|
+
operation_id TEXT NOT NULL,
|
|
1361
|
+
request_hash TEXT NOT NULL,
|
|
1362
|
+
draft_id TEXT NOT NULL,
|
|
1363
|
+
state TEXT NOT NULL CHECK (state IN ('prepared', 'ready', 'deleted')),
|
|
1364
|
+
payload TEXT NOT NULL,
|
|
1365
|
+
PRIMARY KEY (profile_id, operation_id)
|
|
1366
|
+
);
|
|
1367
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_taskset_draft_operation_identity ON model_taskset_draft_operations(draft_id);
|
|
1368
|
+
CREATE TABLE IF NOT EXISTS model_project_package_operations (
|
|
1369
|
+
operation_id TEXT PRIMARY KEY,
|
|
1370
|
+
profile_id TEXT NOT NULL,
|
|
1371
|
+
model_id TEXT NOT NULL,
|
|
1372
|
+
api_origin TEXT NOT NULL,
|
|
1373
|
+
team_id TEXT NOT NULL,
|
|
1374
|
+
state TEXT NOT NULL CHECK (state IN ('pending', 'committed', 'rejected')),
|
|
1375
|
+
payload TEXT NOT NULL,
|
|
1376
|
+
receipt TEXT,
|
|
1377
|
+
created_at TEXT NOT NULL
|
|
1378
|
+
);
|
|
1379
|
+
CREATE UNIQUE INDEX IF NOT EXISTS model_project_package_pending
|
|
1380
|
+
ON model_project_package_operations (profile_id, model_id) WHERE state = 'pending';
|
|
1381
|
+
CREATE TABLE IF NOT EXISTS model_project_save_operations (
|
|
1382
|
+
profile_id TEXT NOT NULL,
|
|
1383
|
+
operation_id TEXT NOT NULL,
|
|
1384
|
+
request_hash TEXT NOT NULL,
|
|
1385
|
+
payload TEXT NOT NULL,
|
|
1386
|
+
PRIMARY KEY (profile_id, operation_id)
|
|
1387
|
+
);
|
|
1388
|
+
CREATE TABLE IF NOT EXISTS model_starter_creation_operations (
|
|
1389
|
+
profile_id TEXT NOT NULL,
|
|
1390
|
+
operation_id TEXT NOT NULL,
|
|
1391
|
+
request_hash TEXT NOT NULL,
|
|
1392
|
+
payload TEXT NOT NULL,
|
|
1393
|
+
PRIMARY KEY (profile_id, operation_id)
|
|
1394
|
+
);
|
|
1395
|
+
CREATE TABLE IF NOT EXISTS model_project_taskset_preparations (
|
|
1396
|
+
profile_id TEXT NOT NULL,
|
|
1397
|
+
operation_id TEXT NOT NULL,
|
|
1398
|
+
request_hash TEXT NOT NULL,
|
|
1399
|
+
created_at TEXT NOT NULL,
|
|
1400
|
+
state TEXT NOT NULL CHECK (state IN ('preparing', 'materialized', 'committed')),
|
|
1401
|
+
PRIMARY KEY (profile_id, operation_id)
|
|
1402
|
+
);
|
|
1403
|
+
`;import{promises as P}from"node:fs";import b from"node:path";var Be=2,je=/^state-(\d{14})-before-v(\d+)$/;async function ve(t,e=Be){let a=b.join(t,"backups"),i=(await P.readdir(a,{withFileTypes:!0}).catch(n=>{if(n.code==="ENOENT")return[];throw n})).filter(n=>n.isDirectory()&&je.test(n.name)).map(n=>n.name).sort((n,E)=>E.localeCompare(n)),o=Math.max(2,Math.trunc(e)),T=i.slice(0,o),d=[];for(let n of i.slice(o))(await P.stat(b.join(a,n))).mtimeMs>=Date.now()-30*864e5?T.push(n):d.push(n);for(let n of d)await P.rm(b.join(a,n),{recursive:!0,force:!0});return{removed:d,retained:T}}r(ve,"pruneMigrationBackups");var Ce=`
|
|
1404
|
+
CREATE TABLE IF NOT EXISTS ponder_desktop_inspections (
|
|
1405
|
+
operation_id TEXT PRIMARY KEY,
|
|
1406
|
+
payload_hash TEXT NOT NULL,
|
|
1407
|
+
snapshot_hash TEXT NOT NULL,
|
|
1408
|
+
payload TEXT NOT NULL
|
|
1409
|
+
);
|
|
1410
|
+
CREATE TABLE IF NOT EXISTS ponder_project_sharing (
|
|
1411
|
+
owner_key TEXT NOT NULL,
|
|
1412
|
+
project_id TEXT NOT NULL,
|
|
1413
|
+
payload TEXT NOT NULL,
|
|
1414
|
+
PRIMARY KEY(owner_key, project_id)
|
|
1415
|
+
);
|
|
1416
|
+
CREATE TABLE IF NOT EXISTS ponder_desktop_observations (
|
|
1417
|
+
operation_id TEXT PRIMARY KEY,
|
|
1418
|
+
payload_hash TEXT NOT NULL,
|
|
1419
|
+
payload TEXT NOT NULL
|
|
1420
|
+
);
|
|
1421
|
+
CREATE TABLE IF NOT EXISTS ponder_desktop_results (
|
|
1422
|
+
operation_id TEXT NOT NULL,
|
|
1423
|
+
turn_id TEXT NOT NULL,
|
|
1424
|
+
payload_hash TEXT NOT NULL,
|
|
1425
|
+
payload TEXT NOT NULL,
|
|
1426
|
+
PRIMARY KEY(operation_id, turn_id)
|
|
1427
|
+
);
|
|
1428
|
+
CREATE TABLE IF NOT EXISTS ponder_desktop_authority (
|
|
1429
|
+
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
1430
|
+
runtime_id TEXT NOT NULL,
|
|
1431
|
+
payload TEXT NOT NULL
|
|
1432
|
+
);
|
|
1433
|
+
CREATE TABLE IF NOT EXISTS ponder_desktop_stops (
|
|
1434
|
+
operation_id TEXT PRIMARY KEY,
|
|
1435
|
+
payload_hash TEXT NOT NULL,
|
|
1436
|
+
payload TEXT NOT NULL
|
|
1437
|
+
);
|
|
1438
|
+
CREATE TABLE IF NOT EXISTS task_inputs (
|
|
1439
|
+
sequence INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1440
|
+
id TEXT NOT NULL UNIQUE,
|
|
1441
|
+
session_id TEXT NOT NULL,
|
|
1442
|
+
sender_key TEXT NOT NULL,
|
|
1443
|
+
idempotency_key TEXT NOT NULL,
|
|
1444
|
+
kind TEXT NOT NULL,
|
|
1445
|
+
state TEXT NOT NULL,
|
|
1446
|
+
turn_id TEXT,
|
|
1447
|
+
payload TEXT NOT NULL,
|
|
1448
|
+
admission TEXT NOT NULL,
|
|
1449
|
+
UNIQUE(session_id, sender_key, idempotency_key)
|
|
1450
|
+
);
|
|
1451
|
+
CREATE INDEX IF NOT EXISTS task_inputs_pending_idx ON task_inputs(session_id, state, sequence);
|
|
1452
|
+
CREATE INDEX IF NOT EXISTS task_inputs_turn_idx ON task_inputs(turn_id, state);
|
|
1453
|
+
|
|
1454
|
+
CREATE TABLE IF NOT EXISTS task_input_requests (
|
|
1455
|
+
request_id TEXT PRIMARY KEY,
|
|
1456
|
+
session_id TEXT NOT NULL,
|
|
1457
|
+
turn_id TEXT NOT NULL,
|
|
1458
|
+
input_ids TEXT NOT NULL,
|
|
1459
|
+
state TEXT NOT NULL,
|
|
1460
|
+
created_at TEXT NOT NULL
|
|
1461
|
+
);
|
|
1462
|
+
CREATE INDEX IF NOT EXISTS task_input_requests_turn_idx ON task_input_requests(turn_id);
|
|
1463
|
+
|
|
1464
|
+
CREATE TABLE IF NOT EXISTS task_inbox_turns (
|
|
1465
|
+
session_id TEXT PRIMARY KEY,
|
|
1466
|
+
turn_id TEXT NOT NULL,
|
|
1467
|
+
owner_id TEXT NOT NULL,
|
|
1468
|
+
generation INTEGER NOT NULL,
|
|
1469
|
+
accepting INTEGER NOT NULL,
|
|
1470
|
+
paused INTEGER NOT NULL DEFAULT 0,
|
|
1471
|
+
lease_until INTEGER NOT NULL
|
|
1472
|
+
);
|
|
1473
|
+
|
|
1474
|
+
CREATE TABLE IF NOT EXISTS task_work_claims (
|
|
1475
|
+
session_id TEXT PRIMARY KEY,
|
|
1476
|
+
turn_id TEXT NOT NULL,
|
|
1477
|
+
work_areas TEXT NOT NULL
|
|
1478
|
+
);
|
|
1479
|
+
|
|
1480
|
+
CREATE TABLE IF NOT EXISTS task_waits (
|
|
1481
|
+
id TEXT PRIMARY KEY,
|
|
1482
|
+
session_id TEXT NOT NULL,
|
|
1483
|
+
turn_id TEXT NOT NULL,
|
|
1484
|
+
target_session_id TEXT,
|
|
1485
|
+
target_turn_id TEXT,
|
|
1486
|
+
state TEXT NOT NULL,
|
|
1487
|
+
deadline TEXT NOT NULL,
|
|
1488
|
+
payload TEXT NOT NULL
|
|
1489
|
+
);
|
|
1490
|
+
CREATE INDEX IF NOT EXISTS task_waits_session_idx ON task_waits(session_id, state);
|
|
1491
|
+
CREATE INDEX IF NOT EXISTS task_waits_target_idx ON task_waits(target_session_id, target_turn_id, state);
|
|
1492
|
+
|
|
1493
|
+
CREATE TABLE IF NOT EXISTS task_completion_outbox (
|
|
1494
|
+
turn_id TEXT PRIMARY KEY,
|
|
1495
|
+
run_id TEXT NOT NULL,
|
|
1496
|
+
payload TEXT NOT NULL,
|
|
1497
|
+
input_id TEXT,
|
|
1498
|
+
created_at TEXT NOT NULL
|
|
1499
|
+
);
|
|
1500
|
+
CREATE INDEX IF NOT EXISTS task_completion_pending_idx ON task_completion_outbox(created_at) WHERE input_id IS NULL;
|
|
1501
|
+
`;var fe=[0,100,250,500],v=class{static{r(this,"SqliteStoreCore")}async createTaskInboxTables(){await this.exec(Ce)}async createLearningTables(){await this.exec(Ae)}async createModelProjectAuthoringTables(){await this.exec(Ue)}storePath;home;data={sessions:[],turns:[],events:[],approvals:[]};ready;db=null;writeQueue=Promise.resolve();logger;constructor(e,a={}){this.home=m.resolve(e),this.storePath=m.join(this.home,"state","state.sqlite"),this.logger=a.logger,this.ready=this.load(e)}domainContext(){let e=this;return{get home(){return e.home},get storePath(){return e.storePath},get logger(){return e.logger},get ready(){return e.ready},get db(){return e.db},get database(){return e.database},get writeQueue(){return e.writeQueue},set writeQueue(a){e.writeQueue=a}}}async recentTurns(e=2e3){await this.ready,await this.writeQueue;let a=Math.max(1,Math.min(1e4,Math.trunc(e)));return(await this.all("SELECT payload FROM turns ORDER BY sort_index DESC LIMIT ?",[a])).map(i=>JSON.parse(i.payload)).reverse()}async load(e){await F.mkdir(m.dirname(this.storePath),{recursive:!0,mode:448});let a=await this.fileExists(this.storePath);await this.openDatabaseWithRecovery(),await this.runMigrations(e,a),this.data=await V({allPayloadRows:r((s,i)=>this.all(s,i),"allPayloadRows")}),await ve(e).then(({removed:s,retained:i})=>{s.length!==0&&this.logger?.info("sqlite migration backups pruned",{removed:s,retained:i,storePath:this.storePath})}).catch(s=>{this.logger?.warn("sqlite migration backup pruning failed",{error:s,storePath:this.storePath})})}async configureDatabase(){await this.exec(`
|
|
1502
|
+
PRAGMA journal_mode = WAL;
|
|
1503
|
+
PRAGMA foreign_keys = ON;
|
|
1504
|
+
PRAGMA synchronous = FULL;
|
|
1505
|
+
`)}async assertHealthyDatabase(){let a=(await this.all("PRAGMA quick_check")).map(s=>s.quick_check).filter(s=>s!=="ok");if(a.length>0)throw new X(`SQLite quick_check failed: ${a.join("; ")}`)}async assertHealthyDatabaseWithRetry(){await le({check:r(()=>this.assertHealthyDatabase(),"check"),onRetry:r(({attempt:e,retryDelayMs:a,error:s})=>{this.logger?.warn("sqlite health check temporarily unavailable; retrying",{storePath:this.storePath,attempt:e,retryDelayMs:a,error:s})},"onRetry")})}async runMigrations(e,a){let s=await this.userVersion();if(s>67)throw new Error(`SQLite schema version ${s} is newer than this app supports (${67})`);if(s!==67){a&&await this.backupDatabaseFiles(e,`before-v${s+1}`);for(let i of pe.filter(o=>o.version>s)){await this.exec("BEGIN IMMEDIATE");try{await i.run(this),await this.exec(`PRAGMA user_version = ${i.version}`),await this.exec("COMMIT"),this.logger?.info("sqlite migration completed",{version:i.version,storePath:this.storePath})}catch(o){throw await this.exec("ROLLBACK").catch(()=>{}),this.logger?.error("sqlite migration failed",{version:i.version,error:o}),o}}}}async userVersion(){return(await this.get("PRAGMA user_version",[]))?.user_version??0}async openDatabaseWithRecovery(){try{this.db=await this.openDatabaseWithRetry(),await this.configureDatabase(),await this.assertHealthyDatabaseWithRetry()}catch(e){throw await this.closeDatabaseHandle(),Ne(e)?new x({code:"DATABASE_RECOVERY_REQUIRED",path:this.storePath,message:"The authoritative database failed its integrity check.",action:"Restore a verified backup into a separate home. Existing history has been preserved."},{cause:e}):e}}async openDatabaseWithRetry(){let e=null;for(let a of fe){a>0&&await new Promise(s=>setTimeout(s,a));try{return await this.openDatabase(this.storePath)}catch(s){e=s}}throw this.logger?.error("sqlite open failed; preserving database files",{storePath:this.storePath,attempts:fe.length,error:e}),e}async backupDatabaseFiles(e,a){let s=m.join(e,"backups",`state-${J()}-${a}`);await F.mkdir(s,{recursive:!0,mode:448});let i=M(this.storePath,!0);try{await qe(i,m.join(s,"state.sqlite"))}finally{i.close()}this.logger?.info("sqlite backup created",{backupDir:s,copied:1})}databaseFiles(){return[this.storePath,`${this.storePath}-wal`,`${this.storePath}-shm`]}async fileExists(e){try{return await F.access(e),!0}catch{return!1}}async createSchema(){await this.exec(ee)}async createWorkEvidenceTables(){await this.exec(`
|
|
1506
|
+
CREATE TABLE IF NOT EXISTS work_evidence_receipts (
|
|
1507
|
+
id TEXT PRIMARY KEY,
|
|
1508
|
+
source_revision_hash TEXT NOT NULL UNIQUE,
|
|
1509
|
+
source_session_id TEXT NOT NULL,
|
|
1510
|
+
source_turn_id TEXT NOT NULL,
|
|
1511
|
+
payload TEXT NOT NULL,
|
|
1512
|
+
created_at TEXT NOT NULL
|
|
1513
|
+
);
|
|
1514
|
+
CREATE INDEX IF NOT EXISTS work_evidence_source_idx
|
|
1515
|
+
ON work_evidence_receipts(source_session_id, source_turn_id, created_at DESC);
|
|
1516
|
+
|
|
1517
|
+
CREATE TABLE IF NOT EXISTS work_feedback_receipts (
|
|
1518
|
+
id TEXT PRIMARY KEY,
|
|
1519
|
+
evidence_receipt_id TEXT NOT NULL,
|
|
1520
|
+
output_revision_hash TEXT,
|
|
1521
|
+
payload TEXT NOT NULL,
|
|
1522
|
+
created_at TEXT NOT NULL
|
|
1523
|
+
);
|
|
1524
|
+
CREATE INDEX IF NOT EXISTS work_feedback_evidence_idx
|
|
1525
|
+
ON work_feedback_receipts(evidence_receipt_id, created_at ASC);
|
|
1526
|
+
CREATE INDEX IF NOT EXISTS work_feedback_output_idx
|
|
1527
|
+
ON work_feedback_receipts(output_revision_hash, created_at ASC);
|
|
1528
|
+
`)}async createHarnessWorkspaceTables(){await _e(e=>this.exec(e)),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_enabled","INTEGER NOT NULL DEFAULT 0"),await this.addColumnIfMissing("harness_evaluation_review_settings","activity_batch_size","INTEGER NOT NULL DEFAULT 10")}async createSidebarFileBookmarkTables(){await de(e=>this.exec(e))}async createHotQueryIndexes(){await this.addColumnIfMissing("turns","provider_turn_id","TEXT"),await this.addColumnIfMissing("turns","status","TEXT"),await this.backfillTurnQueryColumns(),await this.exec(`
|
|
1529
|
+
CREATE INDEX IF NOT EXISTS turns_session_sort_idx ON turns(session_id, sort_index DESC);
|
|
1530
|
+
CREATE INDEX IF NOT EXISTS turns_session_status_sort_idx ON turns(session_id, status, sort_index DESC);
|
|
1531
|
+
CREATE INDEX IF NOT EXISTS turns_provider_turn_id_idx ON turns(provider_turn_id);
|
|
1532
|
+
CREATE INDEX IF NOT EXISTS events_session_sort_idx ON events(session_id, sort_index);
|
|
1533
|
+
CREATE INDEX IF NOT EXISTS approvals_status_sort_idx ON approvals(status, sort_index);
|
|
1534
|
+
`)}async createReadModelTables(){await this.addColumnIfMissing("events","sequence","INTEGER"),await this.run("UPDATE events SET sequence = sort_index + 1 WHERE sequence IS NULL",[]),await this.exec(`
|
|
1535
|
+
CREATE UNIQUE INDEX IF NOT EXISTS events_sequence_idx ON events(sequence);
|
|
1536
|
+
CREATE INDEX IF NOT EXISTS events_session_sequence_idx ON events(session_id, sequence);
|
|
1537
|
+
|
|
1538
|
+
CREATE TABLE IF NOT EXISTS projection_session_shells (
|
|
1539
|
+
id TEXT PRIMARY KEY,
|
|
1540
|
+
sort_index INTEGER NOT NULL,
|
|
1541
|
+
payload TEXT NOT NULL,
|
|
1542
|
+
updated_at TEXT NOT NULL
|
|
1543
|
+
);
|
|
1544
|
+
|
|
1545
|
+
CREATE TABLE IF NOT EXISTS projection_thread_details (
|
|
1546
|
+
session_id TEXT PRIMARY KEY,
|
|
1547
|
+
event_count INTEGER NOT NULL,
|
|
1548
|
+
latest_event_sequence INTEGER NOT NULL,
|
|
1549
|
+
latest_event_at TEXT,
|
|
1550
|
+
latest_turn_id TEXT,
|
|
1551
|
+
latest_turn_status TEXT,
|
|
1552
|
+
pending_approval_count INTEGER NOT NULL,
|
|
1553
|
+
payload TEXT NOT NULL,
|
|
1554
|
+
updated_at TEXT NOT NULL
|
|
1555
|
+
);
|
|
1556
|
+
|
|
1557
|
+
CREATE TABLE IF NOT EXISTS projection_approvals (
|
|
1558
|
+
id TEXT PRIMARY KEY,
|
|
1559
|
+
session_id TEXT NOT NULL,
|
|
1560
|
+
status TEXT NOT NULL,
|
|
1561
|
+
sort_index INTEGER NOT NULL,
|
|
1562
|
+
payload TEXT NOT NULL,
|
|
1563
|
+
updated_at TEXT NOT NULL
|
|
1564
|
+
);
|
|
1565
|
+
|
|
1566
|
+
CREATE INDEX IF NOT EXISTS projection_approvals_status_sort_idx
|
|
1567
|
+
ON projection_approvals(status, sort_index);
|
|
1568
|
+
|
|
1569
|
+
CREATE TABLE IF NOT EXISTS projection_latest_turns (
|
|
1570
|
+
session_id TEXT PRIMARY KEY,
|
|
1571
|
+
turn_id TEXT NOT NULL,
|
|
1572
|
+
status TEXT NOT NULL,
|
|
1573
|
+
sort_index INTEGER NOT NULL,
|
|
1574
|
+
payload TEXT NOT NULL,
|
|
1575
|
+
updated_at TEXT NOT NULL
|
|
1576
|
+
);
|
|
1577
|
+
`),await this.rebuildReadModels()}async createModelUsageTables(){await this.exec(`
|
|
1578
|
+
CREATE TABLE IF NOT EXISTS model_usage_records (
|
|
1579
|
+
id TEXT PRIMARY KEY,
|
|
1580
|
+
request_id TEXT NOT NULL UNIQUE,
|
|
1581
|
+
request_ordinal INTEGER NOT NULL,
|
|
1582
|
+
session_id TEXT,
|
|
1583
|
+
turn_id TEXT,
|
|
1584
|
+
provider TEXT NOT NULL,
|
|
1585
|
+
model TEXT NOT NULL,
|
|
1586
|
+
route TEXT NOT NULL,
|
|
1587
|
+
source TEXT NOT NULL,
|
|
1588
|
+
request_kind TEXT NOT NULL,
|
|
1589
|
+
visibility TEXT NOT NULL,
|
|
1590
|
+
status TEXT NOT NULL,
|
|
1591
|
+
started_at TEXT NOT NULL,
|
|
1592
|
+
completed_at TEXT,
|
|
1593
|
+
duration_ms INTEGER,
|
|
1594
|
+
first_token_ms INTEGER,
|
|
1595
|
+
prompt_tokens INTEGER,
|
|
1596
|
+
cached_prompt_tokens INTEGER,
|
|
1597
|
+
uncached_prompt_tokens INTEGER,
|
|
1598
|
+
cache_write_prompt_tokens INTEGER,
|
|
1599
|
+
cache_telemetry_source TEXT,
|
|
1600
|
+
completion_tokens INTEGER,
|
|
1601
|
+
total_tokens INTEGER,
|
|
1602
|
+
error_type TEXT,
|
|
1603
|
+
error_message TEXT,
|
|
1604
|
+
attribution_json TEXT NOT NULL
|
|
1605
|
+
);
|
|
1606
|
+
|
|
1607
|
+
CREATE INDEX IF NOT EXISTS model_usage_started_at_idx
|
|
1608
|
+
ON model_usage_records(started_at);
|
|
1609
|
+
|
|
1610
|
+
CREATE INDEX IF NOT EXISTS model_usage_provider_model_started_idx
|
|
1611
|
+
ON model_usage_records(provider, model, started_at);
|
|
1612
|
+
|
|
1613
|
+
CREATE INDEX IF NOT EXISTS model_usage_session_turn_ordinal_idx
|
|
1614
|
+
ON model_usage_records(session_id, turn_id, request_ordinal);
|
|
1615
|
+
|
|
1616
|
+
CREATE INDEX IF NOT EXISTS model_usage_request_kind_started_idx
|
|
1617
|
+
ON model_usage_records(request_kind, started_at);
|
|
1618
|
+
|
|
1619
|
+
CREATE INDEX IF NOT EXISTS model_usage_visibility_started_idx
|
|
1620
|
+
ON model_usage_records(visibility, started_at);
|
|
1621
|
+
|
|
1622
|
+
CREATE INDEX IF NOT EXISTS model_usage_status_started_idx
|
|
1623
|
+
ON model_usage_records(status, started_at);
|
|
1624
|
+
`),await this.addColumnIfMissing("model_usage_records","cached_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","uncached_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","cache_write_prompt_tokens","INTEGER"),await this.addColumnIfMissing("model_usage_records","cache_telemetry_source","TEXT")}async createLocalAgentScheduleTables(){await this.exec(`
|
|
1625
|
+
CREATE TABLE IF NOT EXISTS local_agent_schedules (
|
|
1626
|
+
id TEXT PRIMARY KEY,
|
|
1627
|
+
local_project_id TEXT NOT NULL,
|
|
1628
|
+
schedule_name TEXT NOT NULL,
|
|
1629
|
+
enabled INTEGER NOT NULL,
|
|
1630
|
+
next_run_at TEXT,
|
|
1631
|
+
payload TEXT NOT NULL,
|
|
1632
|
+
created_at TEXT NOT NULL,
|
|
1633
|
+
updated_at TEXT NOT NULL
|
|
1634
|
+
);
|
|
1635
|
+
|
|
1636
|
+
CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedules_project_name_idx
|
|
1637
|
+
ON local_agent_schedules(local_project_id, schedule_name);
|
|
1638
|
+
|
|
1639
|
+
CREATE INDEX IF NOT EXISTS local_agent_schedules_due_idx
|
|
1640
|
+
ON local_agent_schedules(enabled, next_run_at);
|
|
1641
|
+
|
|
1642
|
+
CREATE TABLE IF NOT EXISTS local_agent_schedule_runs (
|
|
1643
|
+
id TEXT PRIMARY KEY,
|
|
1644
|
+
schedule_id TEXT NOT NULL,
|
|
1645
|
+
local_project_id TEXT NOT NULL,
|
|
1646
|
+
schedule_name TEXT NOT NULL,
|
|
1647
|
+
scheduled_for TEXT NOT NULL,
|
|
1648
|
+
trigger TEXT NOT NULL,
|
|
1649
|
+
status TEXT NOT NULL,
|
|
1650
|
+
payload TEXT NOT NULL,
|
|
1651
|
+
created_at TEXT NOT NULL,
|
|
1652
|
+
updated_at TEXT NOT NULL
|
|
1653
|
+
);
|
|
1654
|
+
|
|
1655
|
+
CREATE UNIQUE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_time_idx
|
|
1656
|
+
ON local_agent_schedule_runs(schedule_id, scheduled_for, trigger);
|
|
1657
|
+
|
|
1658
|
+
CREATE INDEX IF NOT EXISTS local_agent_schedule_runs_schedule_idx
|
|
1659
|
+
ON local_agent_schedule_runs(schedule_id, created_at DESC);
|
|
1660
|
+
`)}async createChatWorkflowTables(){return Ee(e=>this.exec(e))}async createSubagentTables(){await this.exec(`
|
|
1661
|
+
CREATE TABLE IF NOT EXISTS subagent_runs (
|
|
1662
|
+
id TEXT PRIMARY KEY,
|
|
1663
|
+
parent_session_id TEXT NOT NULL,
|
|
1664
|
+
parent_turn_id TEXT,
|
|
1665
|
+
child_session_id TEXT,
|
|
1666
|
+
role_id TEXT NOT NULL,
|
|
1667
|
+
status TEXT NOT NULL,
|
|
1668
|
+
payload TEXT NOT NULL,
|
|
1669
|
+
created_at TEXT NOT NULL,
|
|
1670
|
+
updated_at TEXT NOT NULL
|
|
1671
|
+
);
|
|
1672
|
+
|
|
1673
|
+
CREATE INDEX IF NOT EXISTS subagent_runs_parent_session_status_idx
|
|
1674
|
+
ON subagent_runs(parent_session_id, status, updated_at DESC);
|
|
1675
|
+
|
|
1676
|
+
CREATE INDEX IF NOT EXISTS subagent_runs_child_session_idx
|
|
1677
|
+
ON subagent_runs(child_session_id);
|
|
1678
|
+
|
|
1679
|
+
CREATE TABLE IF NOT EXISTS subagent_messages (
|
|
1680
|
+
id TEXT PRIMARY KEY,
|
|
1681
|
+
from_run_id TEXT NOT NULL,
|
|
1682
|
+
to_run_id TEXT,
|
|
1683
|
+
to_role TEXT,
|
|
1684
|
+
kind TEXT NOT NULL,
|
|
1685
|
+
payload TEXT NOT NULL,
|
|
1686
|
+
created_at TEXT NOT NULL
|
|
1687
|
+
);
|
|
1688
|
+
|
|
1689
|
+
CREATE INDEX IF NOT EXISTS subagent_messages_receiver_created_idx
|
|
1690
|
+
ON subagent_messages(to_run_id, to_role, created_at);
|
|
1691
|
+
`)}async retireGoalAndInsightsStorage(){await he({all:r((e,a)=>this.all(e,a),"all"),get:r((e,a=[])=>this.get(e,a),"get"),run:r((e,a=[])=>this.run(e,a),"run"),exec:r(e=>this.exec(e),"exec"),createSubagentTables:r(()=>this.createSubagentTables(),"createSubagentTables")})}async resetLegacySubagentTransportState(){await Le(e=>this.exec(e))}async resetLegacySubagentRuntimeEvents(){await Oe((e,a)=>this.run(e,a),()=>this.rebuildReadModels())}async createCreateImproveRunTables(){await te(e=>this.exec(e))}async createTrainingTables(){await this.exec(ge)}async createTasksetDraftTables(){await this.exec(`
|
|
1692
|
+
CREATE TABLE IF NOT EXISTS taskset_drafts (
|
|
1693
|
+
id TEXT PRIMARY KEY,
|
|
1694
|
+
profile_id TEXT NOT NULL,
|
|
1695
|
+
status TEXT NOT NULL,
|
|
1696
|
+
revision INTEGER NOT NULL,
|
|
1697
|
+
payload TEXT NOT NULL,
|
|
1698
|
+
created_at TEXT NOT NULL,
|
|
1699
|
+
updated_at TEXT NOT NULL
|
|
1700
|
+
);
|
|
1701
|
+
CREATE INDEX IF NOT EXISTS taskset_drafts_profile_updated_idx
|
|
1702
|
+
ON taskset_drafts(profile_id, updated_at DESC);
|
|
1703
|
+
`)}async createModelBuildDraftTables(){await this.exec(`
|
|
1704
|
+
CREATE TABLE IF NOT EXISTS model_build_drafts (
|
|
1705
|
+
id TEXT PRIMARY KEY,
|
|
1706
|
+
profile_id TEXT NOT NULL,
|
|
1707
|
+
model_id TEXT NOT NULL,
|
|
1708
|
+
status TEXT NOT NULL,
|
|
1709
|
+
payload TEXT NOT NULL,
|
|
1710
|
+
created_at TEXT NOT NULL,
|
|
1711
|
+
updated_at TEXT NOT NULL
|
|
1712
|
+
);
|
|
1713
|
+
CREATE INDEX IF NOT EXISTS model_build_drafts_profile_updated_idx
|
|
1714
|
+
ON model_build_drafts(profile_id, updated_at DESC);
|
|
1715
|
+
CREATE INDEX IF NOT EXISTS model_build_drafts_model_idx
|
|
1716
|
+
ON model_build_drafts(model_id, updated_at DESC);
|
|
1717
|
+
`)}async createModelProjectTables(){await Se(this.modelProjectMigrationStore())}async allowModelRunsWithoutVersion(){await Ie(this.modelProjectMigrationStore())}async consolidateModelProjectTrainingSetup(){await Xe(this.modelProjectMigrationStore())}modelProjectMigrationStore(){return{all:r((e,a=[])=>this.all(e,a),"all"),exec:r(e=>this.exec(e),"exec"),run:r((e,a=[])=>this.run(e,a),"run")}}async repairUnverifiableLearnedPreferenceBindings(){await me({all:r((e,a)=>this.all(e,a??[]),"all"),exec:r(e=>this.exec(e),"exec"),run:r((e,a)=>this.run(e,a??[]),"run")})}async createModelLifecycleTables(){await Re({exec:r(e=>this.exec(e),"exec")})}async createDatasetImportTables(){await Te({all:r((e,a=[])=>this.all(e,a),"all"),exec:r(e=>this.exec(e),"exec")})}async createTasksetRevisionTables(){await ae(e=>this.exec(e))}async createTrainingReceiptAndModelBindingTables(){await ne(e=>this.exec(e))}async createPreferenceComparisonTables(){await oe(e=>this.exec(e))}async createTaskCreationProjectionTables(){await se(e=>this.exec(e))}async createGraderAuditTables(){await ie(e=>this.exec(e))}async createTaskAttemptArtifactTables(){await re(e=>this.exec(e))}async createTrainingChatSearchTables(){await this.exec(`
|
|
1718
|
+
CREATE TABLE IF NOT EXISTS training_chat_search_documents (
|
|
1719
|
+
session_id TEXT PRIMARY KEY,
|
|
1720
|
+
source TEXT NOT NULL,
|
|
1721
|
+
signature TEXT NOT NULL,
|
|
1722
|
+
title TEXT NOT NULL,
|
|
1723
|
+
updated_at TEXT NOT NULL,
|
|
1724
|
+
eligible INTEGER NOT NULL,
|
|
1725
|
+
body_indexed INTEGER NOT NULL DEFAULT 1
|
|
1726
|
+
);
|
|
1727
|
+
CREATE INDEX IF NOT EXISTS training_chat_search_documents_source_idx
|
|
1728
|
+
ON training_chat_search_documents(source);
|
|
1729
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS training_chat_search_fts USING fts5(
|
|
1730
|
+
session_id UNINDEXED,
|
|
1731
|
+
title,
|
|
1732
|
+
body,
|
|
1733
|
+
tokenize = 'unicode61 remove_diacritics 2'
|
|
1734
|
+
);
|
|
1735
|
+
`)}async resetTrainingChatSearchForProgressiveIndexing(){await this.addColumnIfMissing("training_chat_search_documents","body_indexed","INTEGER NOT NULL DEFAULT 1"),await this.exec(`
|
|
1736
|
+
DROP TABLE IF EXISTS training_chat_search_fts;
|
|
1737
|
+
CREATE VIRTUAL TABLE training_chat_search_fts USING fts5(
|
|
1738
|
+
session_id UNINDEXED,
|
|
1739
|
+
title,
|
|
1740
|
+
body,
|
|
1741
|
+
tokenize = 'unicode61 remove_diacritics 2'
|
|
1742
|
+
);
|
|
1743
|
+
`),await this.run("DELETE FROM training_chat_search_documents",[])}async createTaskMinerRunTables(){await this.exec(`
|
|
1744
|
+
CREATE TABLE IF NOT EXISTS task_miner_runs (
|
|
1745
|
+
id TEXT PRIMARY KEY,
|
|
1746
|
+
profile_id TEXT NOT NULL,
|
|
1747
|
+
status TEXT NOT NULL,
|
|
1748
|
+
payload TEXT NOT NULL,
|
|
1749
|
+
created_at TEXT NOT NULL,
|
|
1750
|
+
updated_at TEXT NOT NULL
|
|
1751
|
+
);
|
|
1752
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_profile_updated_idx ON task_miner_runs(profile_id, updated_at DESC);
|
|
1753
|
+
CREATE INDEX IF NOT EXISTS task_miner_runs_status_updated_idx ON task_miner_runs(status, updated_at DESC);
|
|
1754
|
+
`)}async addColumnIfMissing(e,a,s){(await this.all(`PRAGMA table_info(${e})`)).some(o=>o.name===a)||await this.exec(`ALTER TABLE ${e} ADD COLUMN ${a} ${s}`)}async backfillTurnQueryColumns(){let e=await this.all("SELECT id, payload FROM turns");for(let a of e){let s=JSON.parse(a.payload);await this.run("UPDATE turns SET provider_turn_id = ?, status = ? WHERE id = ?",[s.providerTurnId??null,s.status??null,a.id])}}async nextEventSequence(){return((await this.get("SELECT MAX(sequence) AS sequence FROM events",[]))?.sequence??0)+1}async upsertSessionShellProjection(e,a){await this.run(`INSERT INTO projection_session_shells (id, sort_index, payload, updated_at)
|
|
1755
|
+
VALUES (?, ?, ?, ?)
|
|
1756
|
+
ON CONFLICT(id)
|
|
1757
|
+
DO UPDATE SET
|
|
1758
|
+
sort_index = excluded.sort_index,
|
|
1759
|
+
payload = excluded.payload,
|
|
1760
|
+
updated_at = excluded.updated_at`,[e.id,a,JSON.stringify(e),e.updatedAt])}async upsertApprovalProjection(e,a){await this.run(`INSERT INTO projection_approvals (id, session_id, status, sort_index, payload, updated_at)
|
|
1761
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
1762
|
+
ON CONFLICT(id)
|
|
1763
|
+
DO UPDATE SET
|
|
1764
|
+
session_id = excluded.session_id,
|
|
1765
|
+
status = excluded.status,
|
|
1766
|
+
sort_index = excluded.sort_index,
|
|
1767
|
+
payload = excluded.payload,
|
|
1768
|
+
updated_at = excluded.updated_at`,[e.id,e.sessionId,e.status,a,JSON.stringify(e),L()])}async rebuildLatestTurnProjectionForSession(e){let a=await this.get(`SELECT id, status, sort_index, payload, updated_at
|
|
1769
|
+
FROM turns
|
|
1770
|
+
WHERE session_id = ?
|
|
1771
|
+
ORDER BY sort_index DESC
|
|
1772
|
+
LIMIT 1`,[e]);if(!a){await this.run("DELETE FROM projection_latest_turns WHERE session_id = ?",[e]);return}await this.run(`INSERT INTO projection_latest_turns (session_id, turn_id, status, sort_index, payload, updated_at)
|
|
1773
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
1774
|
+
ON CONFLICT(session_id)
|
|
1775
|
+
DO UPDATE SET
|
|
1776
|
+
turn_id = excluded.turn_id,
|
|
1777
|
+
status = excluded.status,
|
|
1778
|
+
sort_index = excluded.sort_index,
|
|
1779
|
+
payload = excluded.payload,
|
|
1780
|
+
updated_at = excluded.updated_at`,[e,a.id,a.status,a.sort_index,a.payload,a.updated_at])}async rebuildThreadDetailProjectionForSession(e){let a=await this.get(`SELECT
|
|
1781
|
+
COUNT(*) AS event_count,
|
|
1782
|
+
MAX(sequence) AS latest_event_sequence,
|
|
1783
|
+
MAX(timestamp) AS latest_event_at
|
|
1784
|
+
FROM events
|
|
1785
|
+
WHERE session_id = ?`,[e]),s=await this.get("SELECT turn_id, status FROM projection_latest_turns WHERE session_id = ?",[e]),i=await this.get("SELECT COUNT(*) AS count FROM projection_approvals WHERE session_id = ? AND status = ?",[e,"pending"]),o=k({sessionId:e,eventCount:a?.event_count??0,latestEventSequence:a?.latest_event_sequence??0,latestEventAt:a?.latest_event_at??null,latestTurnId:s?.turn_id??null,latestTurnStatus:s?.status??null,pendingApprovalCount:i?.count??0,updatedAt:L()});await this.run(`INSERT INTO projection_thread_details (
|
|
1786
|
+
session_id,
|
|
1787
|
+
event_count,
|
|
1788
|
+
latest_event_sequence,
|
|
1789
|
+
latest_event_at,
|
|
1790
|
+
latest_turn_id,
|
|
1791
|
+
latest_turn_status,
|
|
1792
|
+
pending_approval_count,
|
|
1793
|
+
payload,
|
|
1794
|
+
updated_at
|
|
1795
|
+
)
|
|
1796
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
1797
|
+
ON CONFLICT(session_id)
|
|
1798
|
+
DO UPDATE SET
|
|
1799
|
+
event_count = excluded.event_count,
|
|
1800
|
+
latest_event_sequence = excluded.latest_event_sequence,
|
|
1801
|
+
latest_event_at = excluded.latest_event_at,
|
|
1802
|
+
latest_turn_id = excluded.latest_turn_id,
|
|
1803
|
+
latest_turn_status = excluded.latest_turn_status,
|
|
1804
|
+
pending_approval_count = excluded.pending_approval_count,
|
|
1805
|
+
payload = excluded.payload,
|
|
1806
|
+
updated_at = excluded.updated_at`,[o.sessionId,o.eventCount,o.latestEventSequence,o.latestEventAt,o.latestTurnId,o.latestTurnStatus,o.pendingApprovalCount,JSON.stringify(o),o.updatedAt])}async updateThreadDetailProjectionForEvent(e,a){if(!e.sessionId)return;let s=await this.threadDetailProjectionFromDb(e.sessionId),i=k({sessionId:e.sessionId,eventCount:(s?.eventCount??0)+1,latestEventSequence:a,latestEventAt:e.timestamp,latestTurnId:s?.latestTurnId??null,latestTurnStatus:s?.latestTurnStatus??null,pendingApprovalCount:s?.pendingApprovalCount??0,updatedAt:e.timestamp});await this.run(`INSERT INTO projection_thread_details (
|
|
1807
|
+
session_id,
|
|
1808
|
+
event_count,
|
|
1809
|
+
latest_event_sequence,
|
|
1810
|
+
latest_event_at,
|
|
1811
|
+
latest_turn_id,
|
|
1812
|
+
latest_turn_status,
|
|
1813
|
+
pending_approval_count,
|
|
1814
|
+
payload,
|
|
1815
|
+
updated_at
|
|
1816
|
+
)
|
|
1817
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
1818
|
+
ON CONFLICT(session_id)
|
|
1819
|
+
DO UPDATE SET
|
|
1820
|
+
event_count = excluded.event_count,
|
|
1821
|
+
latest_event_sequence = excluded.latest_event_sequence,
|
|
1822
|
+
latest_event_at = excluded.latest_event_at,
|
|
1823
|
+
payload = excluded.payload,
|
|
1824
|
+
updated_at = excluded.updated_at`,[i.sessionId,i.eventCount,i.latestEventSequence,i.latestEventAt,i.latestTurnId,i.latestTurnStatus,i.pendingApprovalCount,JSON.stringify(i),i.updatedAt])}async threadDetailProjectionFromDb(e){let a=await this.get("SELECT * FROM projection_thread_details WHERE session_id = ?",[e]);return a?g(a):null}async rebuildReadModels(){await this.exec(`
|
|
1825
|
+
DELETE FROM projection_latest_turns;
|
|
1826
|
+
DELETE FROM projection_approvals;
|
|
1827
|
+
DELETE FROM projection_thread_details;
|
|
1828
|
+
DELETE FROM projection_session_shells;
|
|
1829
|
+
`);let e=await this.all("SELECT sort_index, payload FROM sessions ORDER BY sort_index ASC"),a=new Set;for(let T of e){let d=S(JSON.parse(T.payload));a.add(d.id),await this.upsertSessionShellProjection(d,T.sort_index)}let s=await this.all("SELECT sort_index, payload FROM approvals ORDER BY sort_index ASC");for(let T of s){let d=JSON.parse(T.payload);a.add(d.sessionId),await this.upsertApprovalProjection(d,T.sort_index)}let i=await this.all("SELECT DISTINCT session_id FROM turns",[]),o=await this.all("SELECT DISTINCT session_id FROM events WHERE session_id IS NOT NULL",[]);for(let T of i)a.add(T.session_id);for(let T of o)T.session_id&&a.add(T.session_id);for(let T of a)await this.rebuildLatestTurnProjectionForSession(T),await this.rebuildThreadDetailProjectionForSession(T)}async persist(){await $(this.data,{exec:r(e=>this.exec(e),"exec"),run:r((e,a)=>this.run(e,a),"run")})}async close(){await this.ready,await this.writeQueue,await this.closeDatabaseHandle()}async closeDatabaseHandle(){let e=this.db;this.db=null,e&&e.close()}async openDatabase(e){return O(e)}async exec(e){this.database.exec(e)}async run(e,a){this.database.run(e,a)}async all(e,a=[]){return this.database.all(e,a)}async get(e,a){return this.database.get(e,a)}get database(){if(!this.db)throw new Error("SQLite store is not ready");return this.db}};var C=class extends v{static{r(this,"SqliteChatStore")}async attachLocalSessionOwner(e){await this.ready;let a=this.writeQueue.then(()=>{let s=this.database;s.exec("BEGIN IMMEDIATE");try{let i=z(s,e);s.run("UPDATE projection_session_shells SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(i),i.updatedAt,i.id]),s.exec("COMMIT");let o=this.data.sessions.findIndex(T=>T.id===i.id);return o>=0&&(this.data.sessions[o]=i),i}catch(i){throw s.exec("ROLLBACK"),i}});return this.writeQueue=a.then(()=>{},()=>{}),a}harnessStoragePlacement="local";async snapshot(){return await this.ready,await this.writeQueue,structuredClone(this.data)}async sessionShells(){await this.ready,await this.writeQueue;let e=await this.all("SELECT payload FROM projection_session_shells ORDER BY sort_index ASC"),a=A(this.data.turns);return e.map(s=>{let i=S(JSON.parse(s.payload));return I(i,a.get(i.id))})}async getSession(e){await this.ready,await this.writeQueue;let a=await this.get("SELECT payload FROM projection_session_shells WHERE id = ?",[e]);if(!a)return null;let s=S(JSON.parse(a.payload));return I(s,A(this.data.turns).get(e))}async pendingApprovals(){return await this.ready,await this.writeQueue,(await this.all("SELECT payload FROM projection_approvals WHERE status = ? ORDER BY sort_index ASC",["pending"])).map(a=>JSON.parse(a.payload))}async turnByProviderTurnId(e){await this.ready,await this.writeQueue;let a=await this.get("SELECT payload FROM turns WHERE provider_turn_id = ? ORDER BY sort_index DESC LIMIT 1",[e]);return a?JSON.parse(a.payload):null}async latestTurnForSession(e,a){if(await this.ready,await this.writeQueue,!a){let i=await this.get("SELECT payload FROM projection_latest_turns WHERE session_id = ?",[e]);return i?JSON.parse(i.payload):null}let s=a?await this.get("SELECT payload FROM turns WHERE session_id = ? AND status = ? ORDER BY sort_index DESC LIMIT 1",[e,a]):null;return s?JSON.parse(s.payload):null}async latestPersistedTurnForSession(e,a){await this.ready;let s=a?"SELECT payload FROM turns WHERE session_id = ? AND status = ? ORDER BY sort_index DESC LIMIT 1":"SELECT payload FROM turns WHERE session_id = ? ORDER BY sort_index DESC LIMIT 1",i=await this.persistedLifecycleRow(s,a?[e,a]:[e]);return i?JSON.parse(i.payload):null}async persistedLifecycleRow(e,a){let s=O(this.storePath);try{return s.get(e,a)}finally{s.close()}}async persistedLifecycleRows(e,a){let s=O(this.storePath);try{return s.all(e,a)}finally{s.close()}}async turnsForSession(e,a=50){await this.ready,await this.writeQueue;let s=Math.max(1,Math.min(500,Math.trunc(a)));return(await this.all(`SELECT payload FROM turns
|
|
1830
|
+
WHERE session_id = ?
|
|
1831
|
+
ORDER BY sort_index DESC
|
|
1832
|
+
LIMIT ?`,[e,s])).map(o=>JSON.parse(o.payload))}async turnPageForSession(e){await this.ready,await this.writeQueue;let a=Math.max(1,Math.min(200,Math.trunc(e.limit??50))),s=e.beforeSortIndex,i=await this.all(`SELECT sort_index, payload FROM turns
|
|
1833
|
+
WHERE session_id = ? ${s==null?"":"AND sort_index < ?"}
|
|
1834
|
+
ORDER BY sort_index DESC LIMIT ?`,s==null?[e.sessionId,a+1]:[e.sessionId,Math.max(0,Math.trunc(s)),a+1]),o=i.length>a,T=i.slice(0,a);return{turns:T.map(d=>JSON.parse(d.payload)),nextBeforeSortIndex:o?T[T.length-1].sort_index:null}}async countTurnsForSession(e){return await this.ready,await this.writeQueue,(await this.get("SELECT COUNT(*) AS count FROM turns WHERE session_id = ?",[e]))?.count??0}async hasSubagentParentWakeTurn(e,a){return await this.ready,await this.writeQueue,((await this.get(`SELECT COUNT(*) AS count FROM turns
|
|
1835
|
+
WHERE session_id = ?
|
|
1836
|
+
AND json_extract(payload, '$.metadata.subagentParentWake.messageId') = ?`,[e,a]))?.count??0)>0}async countSubagentParentWakeTurns(e,a){return await this.ready,await this.writeQueue,(await this.get(`SELECT COUNT(*) AS count FROM turns
|
|
1837
|
+
WHERE session_id = ?
|
|
1838
|
+
AND json_extract(payload, '$.metadata.subagentParentWake.fromRunId') = ?`,[e,a]))?.count??0}async latestEventSequence(){return await this.ready,await this.writeQueue,(await this.get("SELECT MAX(sequence) AS sequence FROM events",[]))?.sequence??0}async threadDetailProjection(e){await this.ready,await this.writeQueue;let a=await this.get("SELECT * FROM projection_thread_details WHERE session_id = ?",[e]);return a?g(a):null}async runtimeEventPageRows(e){await this.ready,await this.writeQueue;let a=e.sessionId?"session_id = ?":"1 = 1",s=e.sessionId?[e.sessionId]:[],i=await this.get(`SELECT COUNT(*) AS count FROM events WHERE ${a}`,s);if(e.beforeSequence!==null){let n=[...s,e.beforeSequence],E=await this.get(`SELECT COUNT(*) AS count FROM events WHERE ${a} AND sequence < ?`,n);return{entries:(await this.all(`SELECT sequence, payload FROM events
|
|
1839
|
+
WHERE ${a} AND sequence < ?
|
|
1840
|
+
ORDER BY sequence DESC
|
|
1841
|
+
LIMIT ?`,[...n,e.limit])).map(c=>({sequence:c.sequence,event:p(c.payload,c.sequence)})).reverse(),totalMatchingEvents:i?.count??0,remainingMatchingEvents:E?.count??0}}let o=[...s,e.afterSequence],T=await this.get(`SELECT COUNT(*) AS count FROM events WHERE ${a} AND sequence > ?`,o);return{entries:(await this.all(`SELECT sequence, payload FROM events
|
|
1842
|
+
WHERE ${a} AND sequence > ?
|
|
1843
|
+
ORDER BY sequence ASC
|
|
1844
|
+
LIMIT ?`,[...o,e.limit])).map(n=>({sequence:n.sequence,event:p(n.payload,n.sequence)})),totalMatchingEvents:i?.count??0,remainingMatchingEvents:T?.count??0}}async runtimeEventsForSession(e,a={}){await this.ready,await this.writeQueue;let s=["session_id = ?"],i=[e];a.afterSequence!==void 0&&a.afterSequence!==null&&(s.push("sequence > ?"),i.push(Math.max(0,Math.trunc(a.afterSequence)))),a.names&&a.names.length>0&&(s.push(`name IN (${a.names.map(()=>"?").join(", ")})`),i.push(...a.names)),a.excludeReasoningDeltas&&s.push("name <> 'assistant.reasoning.delta'");let o=a.limit===void 0||a.limit===null?null:Math.max(1,Math.min(1e5,Math.trunc(a.limit)));return o!==null&&i.push(o),(await this.all(`SELECT sequence, payload FROM events
|
|
1845
|
+
WHERE ${s.join(" AND ")}
|
|
1846
|
+
ORDER BY sequence ASC
|
|
1847
|
+
${o===null?"":"LIMIT ?"}`,i)).map(d=>p(d.payload,d.sequence))}async runtimeEventsForTurn(e,a={}){await this.ready,await this.writeQueue;let s=["turn_id = ?"],i=[e];a.names&&a.names.length>0&&(s.push(`name IN (${a.names.map(()=>"?").join(", ")})`),i.push(...a.names));let o=a.limit===void 0||a.limit===null?null:Math.max(1,Math.min(1e5,Math.trunc(a.limit)));return o!==null&&i.push(o),(await this.all(`SELECT sequence, payload FROM events
|
|
1848
|
+
WHERE ${s.join(" AND ")}
|
|
1849
|
+
ORDER BY sequence ASC
|
|
1850
|
+
${o===null?"":"LIMIT ?"}`,i)).map(d=>p(d.payload,d.sequence))}async persistedRuntimeEventsForSession(e,a={}){await this.ready;let s=["session_id = ?"],i=[e];a.afterSequence!==void 0&&a.afterSequence!==null&&(s.push("sequence > ?"),i.push(Math.max(0,Math.trunc(a.afterSequence)))),a.names&&a.names.length>0&&(s.push(`name IN (${a.names.map(()=>"?").join(", ")})`),i.push(...a.names));let o=a.limit===void 0||a.limit===null?null:Math.max(1,Math.min(1e5,Math.trunc(a.limit)));return o!==null&&i.push(o),(await this.persistedLifecycleRows(`SELECT sequence, payload FROM events
|
|
1851
|
+
WHERE ${s.join(" AND ")}
|
|
1852
|
+
ORDER BY sequence ASC
|
|
1853
|
+
${o===null?"":"LIMIT ?"}`,i)).map(d=>p(d.payload,d.sequence))}async latestAssistantTextForSession(e){await this.ready,await this.writeQueue;let a=await this.all(`SELECT sequence, payload FROM events
|
|
1854
|
+
WHERE session_id = ? AND name = ?
|
|
1855
|
+
ORDER BY sequence DESC
|
|
1856
|
+
LIMIT 25`,[e,"assistant.delta"]);for(let s of a){let i=p(s.payload,s.sequence).output?.trim();if(i)return i}return null}async recentRuntimeEventWindow(e){await this.ready,await this.writeQueue;let a=Math.max(0,Math.trunc(e)),s=await this.get("SELECT COUNT(*) AS count FROM events",[]),i=await this.latestEventSequence();if(a===0)return{entries:[],latestSequence:i,oldestSequence:i,totalEvents:s?.count??0,hasMoreBefore:(s?.count??0)>0,limit:a};let T=(await this.all(`SELECT sequence, payload FROM events
|
|
1857
|
+
ORDER BY sequence DESC
|
|
1858
|
+
LIMIT ?`,[a])).map(n=>({sequence:n.sequence,event:p(n.payload,n.sequence)})).reverse(),d=T[0]?.sequence??i;return{entries:T,latestSequence:i,oldestSequence:d,totalEvents:s?.count??0,hasMoreBefore:d>1,limit:a}}async recentDiagnostics(e){return await this.ready,await this.writeQueue,(await this.all(`SELECT sequence, payload FROM events
|
|
1859
|
+
WHERE name = ?
|
|
1860
|
+
ORDER BY sequence DESC
|
|
1861
|
+
LIMIT ?`,["diagnostic",Math.max(0,Math.trunc(e))])).map(s=>p(s.payload,s.sequence)).reverse()}async latestRuntimeEventSequenceByName(e){return await this.ready,await this.writeQueue,(await this.get("SELECT MAX(sequence) AS sequence FROM events WHERE name = ?",[e]))?.sequence??0}async runtimeEventRowsByNameAfter(e,a){return await this.ready,await this.writeQueue,(await this.all(`SELECT sequence, payload FROM events
|
|
1862
|
+
WHERE name = ? AND sequence > ?
|
|
1863
|
+
ORDER BY sequence ASC`,[e,Math.max(0,Math.trunc(a))])).map(i=>({sequence:i.sequence,event:p(i.payload,i.sequence)}))}async sessionCount(){return await this.ready,await this.writeQueue,(await this.get("SELECT COUNT(*) AS count FROM sessions",[]))?.count??0}async insertSessionAtFront(e,a){await this.ready;let s=this.writeQueue.then(()=>{let i=this.database;i.exec("BEGIN IMMEDIATE");try{a&&W(i,a,e,null,h(e,null)),i.run("UPDATE sessions SET sort_index = sort_index + 1",[]),i.run("UPDATE projection_session_shells SET sort_index = sort_index + 1",[]),i.run("INSERT INTO sessions (id, sort_index, payload, updated_at) VALUES (?, ?, ?, ?)",[e.id,0,JSON.stringify(e),e.updatedAt]),i.run("INSERT INTO projection_session_shells (id, sort_index, payload, updated_at) VALUES (?, 0, ?, ?)",[e.id,JSON.stringify(e),e.updatedAt]);let o={sessionId:e.id,eventCount:0,latestEventSequence:0,latestEventAt:null,latestTurnId:null,latestTurnStatus:null,pendingApprovalCount:0,updatedAt:e.updatedAt};i.run(`INSERT INTO projection_thread_details (session_id, event_count, latest_event_sequence, latest_event_at,
|
|
1864
|
+
latest_turn_id, latest_turn_status, pending_approval_count, payload, updated_at) VALUES (?, 0, 0, NULL, NULL, NULL, 0, ?, ?)`,[e.id,JSON.stringify(o),e.updatedAt]),i.exec("COMMIT")}catch(o){throw i.exec("ROLLBACK"),o}this.data.sessions.unshift(e)});this.writeQueue=s.catch(()=>{}),await s}async updateSession(e,a){await this.ready;let s=null,i=this.writeQueue.then(async()=>{let o=this.data.sessions.findIndex(d=>d.id===e);if(o===-1)return;let T=A(this.data.turns).get(e);s=I(a(I(this.data.sessions[o],T)),T),await this.run("UPDATE sessions SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(s),s.updatedAt,e]),await this.upsertSessionShellProjection(s,o),await this.rebuildThreadDetailProjectionForSession(e),this.data.sessions[o]=s});return this.writeQueue=i.catch(()=>{}),await i,s}async updateSessionsWhere(e,a){await this.ready;let s=[],i=this.writeQueue.then(async()=>{let o=this.data.sessions.map((T,d)=>({session:T,index:d})).filter(({session:T})=>e(T)).map(({session:T,index:d})=>({index:d,session:a(T)}));if(o.length!==0){await this.exec("BEGIN IMMEDIATE");try{for(let T of o)await this.run("UPDATE sessions SET payload = ?, updated_at = ? WHERE id = ?",[JSON.stringify(T.session),T.session.updatedAt,T.session.id]),await this.upsertSessionShellProjection(T.session,T.index),await this.rebuildThreadDetailProjectionForSession(T.session.id);await this.exec("COMMIT")}catch(T){throw await this.exec("ROLLBACK").catch(()=>{}),T}for(let T of o)this.data.sessions[T.index]=T.session,s.push(T.session)}});return this.writeQueue=i.catch(()=>{}),await i,s}async getTurn(e){await this.ready,await this.writeQueue;let a=await this.get("SELECT payload FROM turns WHERE id = ?",[e]);return a?JSON.parse(a.payload):null}async insertTurn(e){await this.ready;let a=this.writeQueue.then(async()=>{let s=this.data.turns.length;await this.run("INSERT INTO turns (id, session_id, provider_turn_id, status, sort_index, payload, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)",[e.id,e.sessionId,e.providerTurnId,e.status,s,JSON.stringify(e),e.completedAt??e.startedAt]),this.data.turns.push(e),await this.rebuildLatestTurnProjectionForSession(e.sessionId),await this.rebuildThreadDetailProjectionForSession(e.sessionId)});this.writeQueue=a.catch(()=>{}),await a}async updateTurn(e,a){await this.ready;let s=null,i=this.writeQueue.then(async()=>{let o=this.data.turns.findIndex(d=>d.id===e);if(o===-1)return;let T=this.data.turns[o].sessionId;if(s=a(this.data.turns[o]),await this.run("UPDATE turns SET session_id = ?, provider_turn_id = ?, status = ?, payload = ?, updated_at = ? WHERE id = ?",[s.sessionId,s.providerTurnId,s.status,JSON.stringify(s),s.completedAt??s.startedAt,e]),this.data.turns[o]=s,s.status!=="in_progress")for(let d=0;d<this.data.approvals.length;d++){let n=this.data.approvals[d];if(n.status!=="pending"||n.sessionId!==s.sessionId||!n.turnId||n.turnId!==s.id&&n.turnId!==s.providerTurnId)continue;let E={...n,status:"cancelled"};await this.run("UPDATE approvals SET status=?,payload=?,updated_at=? WHERE id=?",[E.status,JSON.stringify(E),L(),E.id]),await this.upsertApprovalProjection(E,d),this.data.approvals[d]=E}await this.rebuildLatestTurnProjectionForSession(T),s.sessionId!==T&&await this.rebuildLatestTurnProjectionForSession(s.sessionId),await this.rebuildThreadDetailProjectionForSession(T),s.sessionId!==T&&await this.rebuildThreadDetailProjectionForSession(s.sessionId)});return this.writeQueue=i.catch(()=>{}),await i,s}async getApproval(e){await this.ready,await this.writeQueue;let a=await this.get("SELECT payload FROM approvals WHERE id = ?",[e]);return a?JSON.parse(a.payload):null}async upsertApproval(e){await this.ready;let a=this.writeQueue.then(async()=>{if(e.status==="pending"&&e.turnId){let T=this.data.turns.find(d=>d.sessionId===e.sessionId&&(d.id===e.turnId||d.providerTurnId===e.turnId));T&&T.status!=="in_progress"&&(e={...e,status:"cancelled"})}let s=this.data.approvals.findIndex(T=>T.id===e.id),i=s===-1?null:this.data.approvals[s].sessionId,o=s===-1?this.data.approvals.length:s;await this.run(`INSERT INTO approvals (id, session_id, status, sort_index, payload, updated_at)
|
|
1865
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
1866
|
+
ON CONFLICT(id)
|
|
1867
|
+
DO UPDATE SET
|
|
1868
|
+
session_id = excluded.session_id,
|
|
1869
|
+
status = excluded.status,
|
|
1870
|
+
payload = excluded.payload,
|
|
1871
|
+
updated_at = excluded.updated_at`,[e.id,e.sessionId,e.status,o,JSON.stringify(e),L()]),await this.upsertApprovalProjection(e,o),await this.rebuildThreadDetailProjectionForSession(e.sessionId),i&&i!==e.sessionId&&await this.rebuildThreadDetailProjectionForSession(i),s===-1?this.data.approvals.push(e):this.data.approvals[s]=e});this.writeQueue=a.catch(()=>{}),await a}async getCacheEntry(e,a){return await this.ready,Y(this.home,e,a,{allowStale:!0})}async getCacheEntriesByType(e){return await this.ready,j(this.home,e)}async setCacheEntry(e,a,s,i=null){return await this.ready,B(this.home,e,a,s,{error:i})}async setCacheError(e,a,s,i){let o=await this.getCacheEntry(e,a);await this.setCacheEntry(e,a,o?.payload??s,i)}async mutate(e){await this.ready;let a={sessions:[],turns:[],events:[],approvals:[]},s=this.writeQueue.then(async()=>{e(this.data),await this.persist(),await this.rebuildReadModels(),a=structuredClone(this.data)});return this.writeQueue=s.catch(()=>{}),await s,a}async appendRuntimeEvent(e){await this.ready;let a=this.writeQueue.then(async()=>{let s=Q(e);await this.exec("BEGIN IMMEDIATE");try{let i=await this.insertRuntimeEventRecord(s),o=this.data.sessions.findIndex(n=>n.id===i.sessionId),T=this.data.sessions[o],d=T?Z(T,i):null;return d&&d!==T&&(await this.run("UPDATE sessions SET payload = ? WHERE id = ?",[JSON.stringify(d),d.id]),await this.upsertSessionShellProjection(d,o)),await this.exec("COMMIT"),this.data.events.push(i),d&&d!==T&&(this.data.sessions[o]=d),i}catch(i){throw await this.exec("ROLLBACK").catch(()=>{}),i}});return this.writeQueue=a.then(()=>{},()=>{}),await a}async insertRuntimeEventRecord(e){let a=this.data.events.length,s=await this.nextEventSequence(),i={...e,sequence:s};return await this.run("INSERT INTO events (id, session_id, turn_id, name, timestamp, sequence, sort_index, payload) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",[e.id,e.sessionId??null,e.turnId??null,e.name,e.timestamp,s,a,JSON.stringify(i)]),e.sessionId&&await this.updateThreadDetailProjectionForEvent(i,s),i}async runtimeEventContext(e,a){await this.ready,await this.writeQueue;let s=a?await this.turnByProviderTurnId(a):await this.latestTurnForSession(e,"in_progress");return{appId:(await this.getSession(e))?.appId,turnId:s?.id}}};import{AsyncLocalStorage as Ke}from"node:async_hooks";var f=class{static{r(this,"StoreDomainLifecycle")}closing=!1;admission=new Ke;pending=new Set;run(e){let a=this.admission.getStore();if(this.closing&&!a?.active)return Promise.reject(new Error("SQLite store is closing"));let s={active:!0},i=Promise.resolve().then(()=>this.admission.run(s,e)).finally(()=>{s.active=!1});return this.pending.add(i),i.then(()=>this.pending.delete(i),()=>this.pending.delete(i)),i}async close(){for(this.closing=!0;this.pending.size;)await Promise.allSettled([...this.pending])}};function _(t,e){let a,s=r(()=>a??=e(),"get"),i=r(o=>t.run(async()=>o(await s())),"call");return{call:i,methods(o,...T){return Object.fromEntries(o.map(d=>[d,(...n)=>i(E=>E[d].apply(E,n))]))}}}r(_,"lazyStoreDomain");function ye(t,e){let a=_(e,()=>import("./store-task-inbox-JJTBW76C.js").then(l=>new l.SqliteTaskInboxStore(t))),s=_(e,()=>import("./store-harness-workspaces-XUM4Z66X.js").then(l=>new l.SqliteHarnessWorkspaceStore(t))),i=_(e,()=>import("./store-harness-refinement-candidates-EA5KFQPH.js").then(l=>new l.SqliteHarnessRefinementCandidateStore(t))),o=_(e,()=>import("./store-harness-evaluation-review-settings-I2R3HPO3.js").then(l=>new l.SqliteHarnessEvaluationReviewSettingsStore(t))),T=_(e,()=>import("./store-harness-memory-VINCZ4GK.js").then(l=>new l.SqliteHarnessMemoryStore(t))),d=_(e,()=>import("./store-sidebar-file-bookmarks-VB5GTLFY.js").then(l=>new l.SqliteSidebarFileBookmarkStore(t))),n=_(e,()=>import("./store-work-evidence-QQDKM5AQ.js").then(l=>new l.SqliteWorkEvidenceStore(t))),E=_(e,()=>import("./store-chat-workflows-S72HZXQR.js").then(l=>new l.SqliteChatWorkflowStore(t))),N=_(e,()=>import("./store-conversation-serving-KPC62UEY.js").then(l=>new l.SqliteConversationServingStore(t))),c=_(e,()=>import("./store-schedules-VGTEQVKH.js").then(l=>new l.SqliteScheduleStore(t))),u=_(e,()=>import("./store-subagents-T7R2Z6TB.js").then(l=>new l.SqliteSubagentStore(t))),R=_(e,()=>import("./store-usage-IE2U2FD3.js").then(l=>new l.SqliteUsageStore(t))),y=_(e,()=>import("./store-sidebar-preferences-GWIOG2NH.js").then(l=>new l.SqliteSidebarPreferenceStore(t)));return{...c.methods(["listLocalAgentSchedules","listDueLocalAgentSchedules","getLocalAgentSchedule","upsertLocalAgentSchedule","deleteLocalAgentSchedulesNotIn","patchLocalAgentSchedule","insertLocalAgentScheduleRun","getLocalAgentScheduleRun","listLocalAgentScheduleRuns","patchLocalAgentScheduleRun"]),...u.methods(["getPersistedSubagentRun","upsertPersistedSubagentRun","upsertSubagentRun","recordRetainedWorkspaceExpiryWarning","getSubagentRun","listSubagentRuns","listActiveSubagentRuns","listSubagentRunScopes","listStaleSubagentRuns","appendSubagentMessage","listSubagentMessages"]),...R.methods(["upsertModelUsageRecord","getModelUsageRecordByRequestId","listModelUsageRecords","latestContextUsageForTurn"]),...y.methods(["getSidebarAppPreferences","patchSidebarAppPreference","reorderSidebarApps"]),...a.methods(["initializeRemoteDeviceStore","setRemoteDeviceAuthority","getRemoteDeviceReceipt","getRemoteDeviceCancellation","cancelRemoteDeviceCommand","saveRemoteDeviceReceipt","admitRemoteDeviceStop","admitRemoteDeviceApproval","admitPonderDesktopInspection","getPonderDesktopInspection","setPonderProjectSharing","readPonderProjectSharing","getPonderDesktopReservationResume","admitPonderDesktopObservation","getPonderDesktopObservation","getPonderDesktopResult","commitPonderDesktopResult","setPonderDesktopAuthority","clearPonderDesktopAuthority","admitPonderDesktopStop","getPonderDesktopStop","settlePonderDesktopStop","recoverTaskInboxOwners","hasTaskCompletion","taskInboxSnapshot","declareTaskWork","taskWorkAreas","admitTaskInput","admitTaskInputs","rejectTaskInput","getTaskInput","taskInputsForSession","mutateTaskInput","openTaskInboxTurn","renewTaskInboxTurn","pendingTaskInputs","taskAssignmentInputs","pauseTaskInboxTurn","includeTaskInputs","settleTaskInputRequest","sealTaskInboxTurn","sealNativeTaskInboxTurn","closeTaskInboxTurn","taskInboxPaused","reserveTaskFollowup","taskInboxWakeTargets","createTaskWait","settleTaskWait","taskWaitsForSession","commitSubagentCompletion","pendingTaskCompletions","settleTaskCompletion"]),...s.methods(["createHarnessWorkspace","createHarnessWorkspaceWithRelease","getHarnessWorkspace","listHarnessWorkspaces","selectHarnessWorkspace","getSelectedHarnessWorkspace","updateHarnessWorkspaceSourceRevisionAtomically","saveHarnessReleaseRecord","getHarnessReleaseRecord","listHarnessReleaseRecords","saveHarnessImprovementArtifact","listHarnessImprovementArtifacts","listPendingHarnessRefinerTriggers","createHarnessRunOverlay","getHarnessRunOverlay","appendHarnessRunOverlayEditsAtomically","freezeHarnessRunOverlayAtomically","abandonHarnessRunOverlayAtomically","restoreHarnessRunOverlayAtomically","freezeHarnessRunOverlayWithProposalAtomically","advanceHarnessWorkspaceAtomically","rollbackHarnessWorkspaceAtomically","advanceReviewedHarnessWorkspaceAtomically","listHarnessAdvanceReceipts"]),...i.methods(["listHarnessRefinementCandidates","getHarnessRefinementCandidateByFingerprint","saveHarnessRefinementCandidateTransition","saveHarnessCrossRunRefinementRequestIfAbsent"]),...o.methods(["getHarnessBackgroundReviewSettings","setHarnessBackgroundReviewSettings","getHarnessEvaluationReviewSettings","setHarnessEvaluationReviewSettings"]),...T.methods(["listHarnessMemories","getHarnessMemory","writeHarnessMemory"]),...d.methods(["listSidebarFileBookmarks","patchSidebarFileBookmark"]),...n.methods(["saveWorkEvidenceProjection","getWorkEvidenceProjectionBySourceRevision","getWorkEvidenceProjection","listWorkEvidenceProjections","saveWorkFeedback","getWorkFeedback","listWorkFeedbackForEvidence"]),...E.methods(["listChatWorkflows","listDueChatWorkflows","getChatWorkflow","upsertChatWorkflow","patchChatWorkflow","deleteChatWorkflow","insertChatWorkflowRun","listChatWorkflowRuns","patchChatWorkflowRun"]),...N.methods(["listConversationServingGrants","listConversationServingExecutions","saveConversationServingGrant","saveConversationServingExecution"])}}r(ye,"runtimeStoreMethods");function we(t,e){let a=_(e,()=>import("./store-training-G6YLFSIR.js").then(u=>new u.SqliteTrainingStore(t))),s=_(e,()=>import("./store-training-jobs-RC46YBF6.js").then(u=>new u.SqliteTrainingJobsStore(t))),i=_(e,()=>import("./store-training-models-6BA43IPP.js").then(u=>new u.SqliteTrainingModelStore(t))),o=_(e,()=>import("./store-model-configuration-5ZURQATB.js").then(u=>new u.SqliteModelConfigurationStore(t))),T=_(e,()=>import("./store-model-batch-review-YEGX327M.js").then(u=>new u.SqliteModelBatchReviewStore(t))),d=_(e,()=>import("./store-task-inventory-OB3F2APC.js").then(u=>new u.SqliteTaskInventoryStore(t))),n=_(e,()=>import("./store-taskset-drafts-EKQWWFYQ.js").then(u=>new u.SqliteTasksetDraftStore(t))),E=_(e,()=>import("./store-datasets-RXJ33SUN.js").then(u=>new u.SqliteDatasetStore(t))),N=_(e,()=>import("./store-continual-support-reviews-HHA6NX7K.js").then(u=>new u.SqliteContinualBenchReviewStore(t))),c=_(e,()=>import("./store-create-improve-QV54XIZW.js").then(u=>new u.SqliteCreateImproveStore(t)));return{...a.methods(["trainingChatSearchSignatures","openPondTrainingChatSearchEvidence","syncTrainingChatSearchDocuments","upsertTrainingChatSearchDocument","searchTrainingChats","listTrainingSources","getTrainingSource","getTrainingSourceForSession","upsertTrainingSource","deleteTrainingSource","listTaskCreationSnapshots","getTaskCreationSnapshot","upsertTaskCreationSnapshot","getTaskCreationTranscript","getTaskDesignProposal","listTasksets","listTasksetRevisions","getTaskset","getTasksetRevision","getTasksetByHash","upsertTaskset","deleteTasksetData","listTaskCandidates","getTaskCandidate","findTaskCandidateByFingerprint","upsertTaskCandidate","saveTaskAttempt","listTaskAttempts","saveTaskAttemptArtifact","listTaskAttemptArtifacts","saveGradeResult","deleteGradeResultsForAttempt","listGradeResultsForTaskset","saveGraderAuditReport","listGraderAuditReports","saveReadinessReport","getReadinessReport","saveTaskMinerConfig","getTaskMinerConfig","saveTaskMinerRun","getTaskMinerRun","listTaskMinerRuns"]),...s.methods(["saveModelProject","getModelProject","listModelProjects","saveTrainingPlan","listTrainingPlans","getTrainingPlan","saveTrainingBundle","getTrainingBundle","listTrainingBundles","findTrainingBundleByPlanAndHash","saveTrainingJob","saveTrainingApproval","getTrainingApproval","getTrainingJob","readTrainingExecutionActivity","listTrainingJobs","saveTrainingJobEvent","listTrainingJobEvents","saveTrainingArtifact","listTrainingArtifacts","getTrainingArtifact","saveModelArtifactLineage","updateModelArtifactLineageServing","updateModelArtifactLineageReview","listModelArtifactLineage","getModelArtifactLineage"]),...i.methods(["saveModelCurrencySnapshot","getModelCurrencySnapshot","listModelCurrencySnapshots","saveModelComparisonSeries","getModelComparisonSeries","listModelComparisonSeries","saveModelComparisonSeriesEntry","getModelComparisonSeriesEntry","listModelComparisonSeriesEntries","commitModelComparisonSeriesMutation","compareAndSwapModelComparisonSeriesEntry","saveRewardModelVersion","getRewardModelVersion","listRewardModelVersions","saveRewardModelRun","getRewardModelRun","listRewardModelRuns","saveModelVersion","getModelVersion","listModelVersions","saveModelRun","getModelRun","listModelRuns","saveRolloutTrajectoryReceipt","getRolloutTrajectoryReceiptByProviderId","listRolloutTrajectoryReceipts","saveModelBinding","replaceActiveModelBinding","getModelBinding","getActiveModelBinding","listModelBindings"]),...o.methods(["pendingModelPackagePush","prepareModelPackagePush","completeModelPackagePush","rejectModelPackagePush","findModelProjectConfigurationSave","saveModelProjectConfiguration","previewModelProjectTasksetSave","findModelStarterCreation","saveModelStarterCreation","prepareModelStarterCreation","saveModelProjectHosting"]),...T.methods(["findModelBatchReview","beginModelBatchReview"]),...d.methods(["taskInventorySources","taskInventorySourceIndexed","appendTaskInventoryRows","finishTaskInventorySource","readTaskInventoryPage","readTaskInventoryTask"]),...n.methods(["initializeModelTasksetDraft","saveTasksetDraft","importTasksetDraftPackage","materializePublishedTasksetPackage","finalizeTasksetDraftPublication","getTasksetDraft","listTasksetDrafts","readHumanPublishedTasksetDraft","getTasksetDraftWorkspace","deleteTasksetDraft","tasksetDraftFiles","saveTasksetDraftFile"]),...E.methods(["listDatasetCatalogTasksets","listExternalDatasetSources","getExternalDatasetSource","upsertExternalDatasetSource","listDatasetImportJobs","listAllDatasetImportJobs","getDatasetImportJob","upsertDatasetImportJob","listDatasetArtifactRegistryEntries","getDatasetArtifactRegistryEntry","getDatasetArtifactForTaskset","upsertDatasetArtifactRegistryEntry"]),...N.methods(["saveContinualLearningDailyBatch","getContinualLearningDailyBatch","listContinualLearningDailyBatches","saveContinualBenchIssueReview","getContinualBenchIssueReview","listContinualBenchIssueReviews"]),...c.methods(["getCreateImproveRun","listCreateImproveRuns","upsertCreateImproveRun","mutateCreateImproveRun"])}}r(we,"trainingStoreMethods");function ke(t,e){let a=_(e,()=>import("./store-learning-WLG6KFIO.js").then(n=>new n.SqliteLearningStore(t))),s=_(e,()=>import("./store-learning-credentials-WZQJ4HPJ.js").then(n=>new n.SqliteLearningCredentialStore(t))),i=_(e,()=>import("./store-human-review-RAH7WMIP.js").then(n=>new n.SqliteHumanReviewStore(t))),o=_(e,()=>import("./store-local-experiments-5LUJR7GI.js").then(n=>new n.SqliteLocalExperimentStore(t))),T=_(e,()=>import("./store-evaluation-results-3F3P527G.js").then(n=>new n.SqliteEvaluationResultStore(t))),d=_(e,()=>import("./store-preference-comparison-LV32MHVL.js").then(n=>new n.SqlitePreferenceComparisonStore(t)));return{...a.methods(["listLearningScopes"]),...s.methods(["createLearningSourceCredential","findLearningSourceCredential","listLearningSourceCredentials","revokeLearningSourceCredential"]),...i.methods(["humanLiveControl","humanLiveControlReceipt","rememberHumanLocalPublication","forgetHumanLocalPublication","humanLocalPublications"]),...o.methods(["prepareEvaluationOperation","retainEvaluationOperation","readPendingEvaluationOperation","pendingEvaluationOperations","acknowledgeEvaluationOperation","claimLocalExperimentOwner","renewLocalExperimentOwner","releaseLocalExperimentOwner","saveLocalExperiment","readLocalExperiment","recoverLocalExperimentOperation","listLocalExperiments","listLocalExecutionHistory","startLocalExperiment","admitLocalExperimentRun","findLocalExperimentRunOperation","readLocalExperimentRecord","readLocalExperimentSnapshot","readExecutionActivity","listLocalExperimentRecords","readLocalExecution","readLocalExecutionCharges","appendLocalExperimentEvent","localExperimentTrace","startLocalScoringPass","readLocalScoringSelection","localJudgeBudgetTransaction","listLocalExecutions","listLocalScoringPasses","admitLocalCase","settleLocalCase","cancelLocalExecution","finishLocalExecution","recoverLocalExperiments","reserveLocalCharge","markLocalChargeDispatched","settleLocalCharge"]),...T.methods(["saveProfileEvaluationGrade","getProfileEvaluationGrade","saveProfileEvaluationReceipt","getProfileEvaluationReceipt","saveProfileEvaluationRun","getProfileEvaluationRun","listProfileEvaluationRuns","saveProfileEvaluationComparison","getProfileEvaluationComparison","listProfileEvaluationComparisons","saveProfileEvaluationSuiteRun","getProfileEvaluationSuiteRun","listProfileEvaluationSuiteRuns","saveBenchmarkRun","listBenchmarkRuns","saveBenchmarkComparison","listBenchmarkComparisons","saveEvaluationResult","getEvaluationResult","listEvaluationResults"]),...d.methods(["savePreferenceComparisonRelease","getPreferenceComparisonRelease","listPreferenceComparisonReleases","revokePreferenceComparisonRelease","savePreferenceComparisonAssignment","getPreferenceComparisonAssignment","listPreferenceComparisonAssignments","claimPreferenceComparisonAssignment","claimNextPreferenceComparisonAssignment","markPreferenceComparisonUnreviewable","savePreferenceComparisonSubmission","getPreferenceComparisonSubmission","listPreferenceComparisonSubmissions","savePreferenceComparisonCalibration","listPreferenceComparisonCalibrations"]),learningRepository(){return{transaction:r((n,E)=>a.call(N=>N.learningRepository().transaction(n,E)),"transaction")}},humanReviewRepository(){return{transaction:r((n,E)=>i.call(N=>N.humanReviewRepository().transaction(n,E)),"transaction")}},humanReviewLocalEvidence(...n){return i.call(E=>Promise.resolve(E.humanReviewLocalEvidence(...n)))}}}r(ke,"evaluationStoreMethods");var De=class extends C{static{r(this,"SqliteStore")}domains=new f;closing;constructor(e,a={}){super(e,a);let s=this.domainContext();Object.assign(this,ye(s,this.domains),we(s,this.domains),ke(s,this.domains))}close(){return this.closing??=this.domains.close().then(()=>super.close())}};export{De as a};
|