@yalehwang/cloudpit 2.0.0 → 3.0.0
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/README.md +1 -1
- package/dist/api-docs.html +3 -3
- package/dist/assets/{abnfDiagram-N423BO3Z-D5yLnMt9.js → abnfDiagram-N423BO3Z-D7Xt05gV.js} +1 -1
- package/dist/assets/{abnfDiagram-N423BO3Z-bTHtQIhR.js → abnfDiagram-N423BO3Z-dmPRRPEm.js} +1 -1
- package/dist/assets/{arc-1DmrBEyG.js → arc-B7W3R5qH.js} +1 -1
- package/dist/assets/{arc-BlGK--01.js → arc-BHMlIcaQ.js} +1 -1
- package/dist/assets/{architectureDiagram-T3A2C74G--lzbKBn9.js → architectureDiagram-T3A2C74G-CUUpAoN0.js} +1 -1
- package/dist/assets/{architectureDiagram-T3A2C74G-7lKNAbUU.js → architectureDiagram-T3A2C74G-DpXhbHxu.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-17cdO9zs.js → blockDiagram-VBNYF7ZC-Bf0yfNxj.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-BPavJfDj.js → blockDiagram-VBNYF7ZC-Cki9AOhc.js} +1 -1
- package/dist/assets/{c4Diagram-5PPSVZJV-Bm1-2w3b.js → c4Diagram-5PPSVZJV-DK2RqNDO.js} +1 -1
- package/dist/assets/{c4Diagram-5PPSVZJV-aHvFL3Wb.js → c4Diagram-5PPSVZJV-DyhTF0e5.js} +1 -1
- package/dist/assets/channel-DTLMNzbH.js +1 -0
- package/dist/assets/channel-DiqxUuPf.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-D7WqZewM.js → chunk-2GRJ4B5K-BYtByJbf.js} +1 -1
- package/dist/assets/{chunk-2GRJ4B5K-DbwzBiPF.js → chunk-2GRJ4B5K-CksFgocc.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-DdCr89uy.js → chunk-2Q5K7J3B-D2kQa5TZ.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-TFd0ECKO.js → chunk-2Q5K7J3B-NSSX86FA.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-BdhRBpEi.js → chunk-5RXB4S5H-DNNYC8_t.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-D0SQ3nIe.js → chunk-5RXB4S5H-Rx0YaqNI.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-B9Lv3cWR.js → chunk-5VM5RSS4-B1k4I4CX.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-DioqTIvB.js → chunk-5VM5RSS4-CsvQj3QC.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-09bwlcIv.js → chunk-6Q2QTUOP-48-dEgAs.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-JuhPJZZL.js → chunk-6Q2QTUOP-DCMSW5_0.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-C6f2SgCw.js → chunk-GF5L2VYU-CGyvOsdN.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-DzD9aOyp.js → chunk-GF5L2VYU-YXe113hp.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-BggnWNZv.js → chunk-JWPE2WC7-BT7vCW4x.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-Dte_Ax9K.js → chunk-JWPE2WC7-D2K1Oywq.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-9TCQV92m.js → chunk-KBJHAD2P-CQZWamtE.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-DDnJp7kJ.js → chunk-KBJHAD2P-gpEwZrNy.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-CE2Y4D_h.js → chunk-RYQCIY6F-BI0fMtjY.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-DsgFSTNw.js → chunk-RYQCIY6F-vguRdb4F.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-B1FIfsqq.js → chunk-XXDRQBXY-B99qH1_w.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-B4YfaqTO.js → chunk-XXDRQBXY-DZLJnbBB.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-BaV-s6x8.js +1 -0
- package/dist/assets/classDiagram-JCYQIIEL-D4M03B4L.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-BaV-s6x8.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-D4M03B4L.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-C1AG5Pib.js → cose-bilkent-JH36ORCC-EsVnz-E6.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-lMwWDibI.js → cose-bilkent-JH36ORCC-VI2OjCIx.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-BlabniRL.js → cynefin-VYW2F7L2-BVYg0ixs.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-W-c-z4IW.js → cynefin-VYW2F7L2-BnHmA5I2.js} +1 -1
- package/dist/assets/{cynefinDiagram-MW4NZA55-BtTep_pq.js → cynefinDiagram-MW4NZA55-B-OCRLIw.js} +1 -1
- package/dist/assets/{cynefinDiagram-MW4NZA55-Due6EIPh.js → cynefinDiagram-MW4NZA55-ItLlzjDR.js} +1 -1
- package/dist/assets/{dagre-VZM6K2ZE-CWLaFfdt.js → dagre-VZM6K2ZE-DkVDkAWJ.js} +1 -1
- package/dist/assets/{dagre-VZM6K2ZE-DZldvqiQ.js → dagre-VZM6K2ZE-bYR4z8-Z.js} +1 -1
- package/dist/assets/{diagram-7IWD3JNH-RnmUHYwN.js → diagram-7IWD3JNH-DjXMue67.js} +1 -1
- package/dist/assets/{diagram-7IWD3JNH-Di-7-nSA.js → diagram-7IWD3JNH-FNEXlm5k.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-Wybyn8fw.js → diagram-B4RE2ZJO-73NYiO_P.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-mrK79C2E.js → diagram-B4RE2ZJO-dB4QHq0D.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-JY6FqSFu.js → diagram-LBJQPF4R-DyKT610O.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-sWhu2VLy.js → diagram-LBJQPF4R-rMgmnjvd.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-BJ4T0WGp.js → diagram-Q27KOJAE-BvsfmmQt.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-DyGT9KhB.js → diagram-Q27KOJAE-c6DEjLQX.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-oXFJAndB.js → diagram-UB23O5K3-BMo2VXVb.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-tTd8qwEM.js → diagram-UB23O5K3-DRMKefnZ.js} +1 -1
- package/dist/assets/{ebnfDiagram-BXEA7PRR-DV67cBe6.js → ebnfDiagram-BXEA7PRR-BrOAekWh.js} +1 -1
- package/dist/assets/{ebnfDiagram-BXEA7PRR-OQGm8tPs.js → ebnfDiagram-BXEA7PRR-YmQkylwV.js} +1 -1
- package/dist/assets/{elk-BRx4gEGg.js → elk-Hz3WRESK.js} +1 -1
- package/dist/assets/{elk-CdAQJ-NA.js → elk-tPSZwRVB.js} +1 -1
- package/dist/assets/{erDiagram-JOGREHBK-BhD2xZ2I.js → erDiagram-JOGREHBK-BlaZnoQi.js} +1 -1
- package/dist/assets/{erDiagram-JOGREHBK-BqP8DqqW.js → erDiagram-JOGREHBK-CRCfRUXt.js} +1 -1
- package/dist/assets/{flowDiagram-UKHOOZJN-B4AjZxPJ.js → flowDiagram-UKHOOZJN-DQ1gbjxo.js} +1 -1
- package/dist/assets/{flowDiagram-UKHOOZJN-CP_1WsW4.js → flowDiagram-UKHOOZJN-Dinlbmds.js} +1 -1
- package/dist/assets/{ganttDiagram-PKOTCBZU-BMk6nngr.js → ganttDiagram-PKOTCBZU-CMGpcBZO.js} +1 -1
- package/dist/assets/{ganttDiagram-PKOTCBZU-B_ce39Ld.js → ganttDiagram-PKOTCBZU-Eh94zuPI.js} +1 -1
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-CnZA42iA.js → gitGraphDiagram-DS77QQ5N-Bp8xIZbk.js} +1 -1
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-DqEz_iTn.js → gitGraphDiagram-DS77QQ5N-Cu-b4YNw.js} +1 -1
- package/dist/assets/index-51e8fagd.css +32 -0
- package/dist/assets/{index-D5nLH7qP.js → index-CQE9C6k6.js} +356 -356
- package/dist/assets/{index-CqyOGerp.js → index-S8ow0XfK.js} +356 -356
- package/dist/assets/{infoDiagram-6WML65LV-BQf7m4X4.js → infoDiagram-6WML65LV-CClEEtTq.js} +1 -1
- package/dist/assets/{infoDiagram-6WML65LV-Dntf4YFM.js → infoDiagram-6WML65LV-QmHeojgl.js} +1 -1
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-BDjsldAI.js → ishikawaDiagram-WSZJBQD7-BemSj9lN.js} +1 -1
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-BqXpJeoL.js → ishikawaDiagram-WSZJBQD7-nw48g1vr.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-CBcFzP2M.js → journeyDiagram-NVQOT4AX-DeNtO6OU.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-DoWKjgKd.js → journeyDiagram-NVQOT4AX-q1lCfOYn.js} +1 -1
- package/dist/assets/{kanban-definition-27J2QSJJ-9bspl7j-.js → kanban-definition-27J2QSJJ-Bzhu6hql.js} +1 -1
- package/dist/assets/{kanban-definition-27J2QSJJ-Cjxa-Fbb.js → kanban-definition-27J2QSJJ-VfvD33YG.js} +1 -1
- package/dist/assets/{linear-YogAXmU_.js → linear-C0Kwu3Yp.js} +1 -1
- package/dist/assets/{linear-lIhI5Y8l.js → linear-CbM_4-fP.js} +1 -1
- package/dist/assets/{mermaid.core-2Spxcrg7.js → mermaid.core-G2huIsXn.js} +5 -5
- package/dist/assets/{mermaid.core-BxxInCBm.js → mermaid.core-fvTQFUX1.js} +5 -5
- package/dist/assets/{mindmap-definition-FAOFIHXS-DblO5EG4.js → mindmap-definition-FAOFIHXS-BONvuyvz.js} +1 -1
- package/dist/assets/{mindmap-definition-FAOFIHXS-_nlvJ9VK.js → mindmap-definition-FAOFIHXS-BzYawGKQ.js} +1 -1
- package/dist/assets/{pegDiagram-VL7TDLO6-BBJFPAZG.js → pegDiagram-VL7TDLO6-Df2HAKGH.js} +1 -1
- package/dist/assets/{pegDiagram-VL7TDLO6-DhRH7YRf.js → pegDiagram-VL7TDLO6-DnMwBHn_.js} +1 -1
- package/dist/assets/{pieDiagram-7S7Q4E2Y-4Qy7Nk4U.js → pieDiagram-7S7Q4E2Y-Cd3-a-dM.js} +1 -1
- package/dist/assets/{pieDiagram-7S7Q4E2Y-BUtdeYBT.js → pieDiagram-7S7Q4E2Y-LV6TOhOD.js} +1 -1
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-BUoIDY1r.js → quadrantDiagram-CIZ2JOQS-8VOnA3FV.js} +1 -1
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-D90kdHA1.js → quadrantDiagram-CIZ2JOQS-CnwxFPxh.js} +1 -1
- package/dist/assets/{railroadDiagram-AXF67PYL-CJf9--tj.js → railroadDiagram-AXF67PYL-CXBFj3Iu.js} +1 -1
- package/dist/assets/{railroadDiagram-AXF67PYL-D3S1oliC.js → railroadDiagram-AXF67PYL-DLoAPcsb.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-C04jhjS6.js → requirementDiagram-LRYGKXZP-LrVlZXSz.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-cQaGai5h.js → requirementDiagram-LRYGKXZP-pakITowN.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-AT4cTVbY.js → sankeyDiagram-W5VNT64P-BIQQ8A1I.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-DfFUdqYO.js → sankeyDiagram-W5VNT64P-C6QWOxNM.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-DbjhG030.js → sequenceDiagram-SI44F4Z6-CpHBe2CG.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-DKjdupix.js → sequenceDiagram-SI44F4Z6-cnLxaxcV.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-CCcKLP8m.js → sizeCapture-X5ZJPWSS-3g-1onHD.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-DGxRWxeo.js → sizeCapture-X5ZJPWSS-4U6b3PSL.js} +1 -1
- package/dist/assets/{stateDiagram-OKZ733FA-D7wGCNb7.js → stateDiagram-OKZ733FA-CFwVDdlY.js} +1 -1
- package/dist/assets/{stateDiagram-OKZ733FA-qdMAailp.js → stateDiagram-OKZ733FA-CKVGJcM2.js} +1 -1
- package/dist/assets/{stateDiagram-v2-UEYNNEHI-BbmmtA9w.js → stateDiagram-v2-UEYNNEHI-Dnbk8ftm.js} +1 -1
- package/dist/assets/{stateDiagram-v2-UEYNNEHI-Diz_hFvh.js → stateDiagram-v2-UEYNNEHI-rlA-woxH.js} +1 -1
- package/dist/assets/{swimlanes-SLNWSIFB-CZgIPz6I.js → swimlanes-SLNWSIFB-DCwz8-mf.js} +2 -2
- package/dist/assets/{swimlanes-SLNWSIFB-B16H-6OU.js → swimlanes-SLNWSIFB-M9Oumwnl.js} +2 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-CTtTyW6-.js +8 -0
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-Caohx6WZ.js +8 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-7r7OVlrT.js → timeline-definition-Z64GVDOM-BVmfjoWH.js} +1 -1
- package/dist/assets/{timeline-definition-Z64GVDOM-nhnkS_wy.js → timeline-definition-Z64GVDOM-DyXvto1l.js} +1 -1
- package/dist/assets/{vennDiagram-T6HMQDX7-B1piFYrz.js → vennDiagram-T6HMQDX7-CNe6zorb.js} +1 -1
- package/dist/assets/{vennDiagram-T6HMQDX7-x8SJTFhK.js → vennDiagram-T6HMQDX7-DyzOWKx3.js} +1 -1
- package/dist/assets/{wardleyDiagram-T6FBY63Y-BdD4GExj.js → wardleyDiagram-T6FBY63Y-D5YvMVwa.js} +1 -1
- package/dist/assets/{wardleyDiagram-T6FBY63Y-C90xqNVS.js → wardleyDiagram-T6FBY63Y-DXo8BCrA.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M--Ndoz0Cq.js → xychartDiagram-ELKLHX3M-CIBffVxC.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M-BAKns-7o.js → xychartDiagram-ELKLHX3M-XlsWelDb.js} +1 -1
- package/dist/build-info.json +2 -2
- package/dist/convert-icons.md +10 -46
- package/dist/favicon.png +0 -0
- package/dist/favicon.svg +1 -9
- package/dist/generate-icons.js +67 -47
- package/dist/icons/icon-128x128.png +0 -0
- package/dist/icons/icon-144x144.png +0 -0
- package/dist/icons/icon-152x152.png +0 -0
- package/dist/icons/icon-192x192.png +0 -0
- package/dist/icons/icon-384x384.png +0 -0
- package/dist/icons/icon-512x512.png +0 -0
- package/dist/icons/icon-72x72.png +0 -0
- package/dist/icons/icon-96x96.png +0 -0
- package/dist/index.html +2 -2
- package/dist/logo-128.png +0 -0
- package/dist/logo-256.png +0 -0
- package/dist/logo-32.png +0 -0
- package/dist/logo-512.png +0 -0
- package/dist/logo-64.png +0 -0
- package/dist/logo-source.png +0 -0
- package/dist/logo.svg +1 -17
- package/dist/sw.js +7 -9
- package/dist-server/build-info.json +2 -2
- package/dist-server/server/load-env.js +12 -4
- package/dist-server/server/load-env.js.map +1 -1
- package/dist-server/server/modules/browser-use/browser-use.service.js +33 -11
- package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
- package/dist-server/server/modules/browser-use/index.js +4 -4
- package/dist-server/server/modules/browser-use/index.js.map +1 -1
- package/dist-server/server/modules/browser-use/mcp-server-names.js +6 -4
- package/dist-server/server/modules/browser-use/mcp-server-names.js.map +1 -1
- package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js +49 -1
- package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js.map +1 -1
- package/dist-server/server/modules/cli/asset-migration-files.js +74 -0
- package/dist-server/server/modules/cli/asset-migration-files.js.map +1 -0
- package/dist-server/server/modules/cli/asset-migration-report.js +80 -0
- package/dist-server/server/modules/cli/asset-migration-report.js.map +1 -0
- package/dist-server/server/modules/cli/asset-migration-store.js +153 -0
- package/dist-server/server/modules/cli/asset-migration-store.js.map +1 -0
- package/dist-server/server/modules/cli/asset-migration.service.js +161 -0
- package/dist-server/server/modules/cli/asset-migration.service.js.map +1 -0
- package/dist-server/server/modules/cli/browser-use-mcp.js +9 -4
- package/dist-server/server/modules/cli/browser-use-mcp.js.map +1 -1
- package/dist-server/server/modules/cli/cli.module.js +21 -1
- package/dist-server/server/modules/cli/cli.module.js.map +1 -1
- package/dist-server/server/modules/cli/cli.service.js +6 -1
- package/dist-server/server/modules/cli/cli.service.js.map +1 -1
- package/dist-server/server/modules/cli/tests/asset-migration.service.test.js +275 -0
- package/dist-server/server/modules/cli/tests/asset-migration.service.test.js.map +1 -0
- package/dist-server/server/modules/cli/tests/browser-use-mcp-entry.test.js +157 -0
- package/dist-server/server/modules/cli/tests/browser-use-mcp-entry.test.js.map +1 -1
- package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js +1 -0
- package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js.map +1 -1
- package/dist-server/server/modules/cli/tests/cli.service.test.js +6 -1
- package/dist-server/server/modules/cli/tests/cli.service.test.js.map +1 -1
- package/dist-server/server/modules/cockpit/cockpit-brief-prompt.js +1 -1
- package/dist-server/server/modules/cockpit/cockpit-card-actions.js +19 -3
- package/dist-server/server/modules/cockpit/cockpit-card-actions.js.map +1 -1
- package/dist-server/server/modules/cockpit/cockpit-card-feedback-store.js +94 -9
- package/dist-server/server/modules/cockpit/cockpit-card-feedback-store.js.map +1 -1
- package/dist-server/server/modules/cockpit/cockpit-card-registry.js +1 -1
- package/dist-server/server/modules/cockpit/cockpit-fleet-card-projection.js +3 -0
- package/dist-server/server/modules/cockpit/cockpit-fleet-card-projection.js.map +1 -1
- package/dist-server/server/modules/cockpit/cockpit-knowledge-reading.js +16 -0
- package/dist-server/server/modules/cockpit/cockpit-knowledge-reading.js.map +1 -1
- package/dist-server/server/modules/cockpit/cockpit.module.js +1 -1
- package/dist-server/server/modules/cockpit/tests/cockpit-card-feedback.test.js +96 -1
- package/dist-server/server/modules/cockpit/tests/cockpit-card-feedback.test.js.map +1 -1
- package/dist-server/server/modules/cockpit/tests/cockpit-fleet-card-provider.test.js +2 -2
- package/dist-server/server/modules/cockpit/tests/cockpit-knowledge-decision-handoff.test.js +169 -3
- package/dist-server/server/modules/cockpit/tests/cockpit-knowledge-decision-handoff.test.js.map +1 -1
- package/dist-server/server/modules/context-events/context-event-writer.js +5 -5
- package/dist-server/server/modules/context-events/context-events.module.js +2 -2
- package/dist-server/server/modules/context-events/session-ask-stream-reader.js +1 -1
- package/dist-server/server/modules/context-events/session-blocked-events.js +3 -3
- package/dist-server/server/modules/context-events/tests/session-ask-event-writer.test.js +1 -1
- package/dist-server/server/modules/context-events/tests/session-blocked-events.test.js +3 -3
- package/dist-server/server/modules/context-events/tests/session-run-events.test.js +1 -1
- package/dist-server/server/modules/database/migrations.js +23 -1
- package/dist-server/server/modules/database/migrations.js.map +1 -1
- package/dist-server/server/modules/database/repositories/sessions.db.js +25 -4
- package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
- package/dist-server/server/modules/database/repositories/voice-user-identifiers.db.js +1 -1
- package/dist-server/server/modules/database/schema.js +16 -2
- package/dist-server/server/modules/database/schema.js.map +1 -1
- package/dist-server/server/modules/database/tests/migrations-ensure-columns.test.js +2 -0
- package/dist-server/server/modules/database/tests/migrations-ensure-columns.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +2 -2
- package/dist-server/server/modules/debug-agent/tests/debug-agent-permission-popup.test.js +2 -2
- package/dist-server/server/modules/liaison/liaison-deliver.service.js +3 -3
- package/dist-server/server/modules/liaison/liaison.module.js +1 -1
- package/dist-server/server/modules/mcp-gateway/mcp-gateway.auth.js +3 -2
- package/dist-server/server/modules/mcp-gateway/mcp-gateway.auth.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/mcp-self-target.js +2 -2
- package/dist-server/server/modules/mcp-gateway/mcp-session-send.js +7 -0
- package/dist-server/server/modules/mcp-gateway/mcp-session-send.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/mcp-tool-annotations.js +4 -4
- package/dist-server/server/modules/mcp-gateway/oauth-metadata.gate.js +4 -2
- package/dist-server/server/modules/mcp-gateway/oauth-metadata.gate.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/knowledge-effective-config-proof.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/knowledge-peer-correlation-proof.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-approvals.test.js +3 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-approvals.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-audit-route.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-audit.test.js +4 -4
- package/dist-server/server/modules/mcp-gateway/tests/mcp-auth.test.js +3 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-auth.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-cancel-queued.test.js +3 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-cancel-queued.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-cockpit-tools.test.js +7 -3
- package/dist-server/server/modules/mcp-gateway/tests/mcp-cockpit-tools.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-correlation-id.test.js +8 -8
- package/dist-server/server/modules/mcp-gateway/tests/mcp-draft.test.js +3 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-draft.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-english-only.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-gateway-wiring.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-insufficient-scope.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-insufficient-scope.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-knowledge-facts.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-not-found-semantics.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-not-found-semantics.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-oauth-challenge.test.js +3 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-oauth-challenge.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-overview.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-pending-interaction.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-read-tools.test.js +3 -3
- package/dist-server/server/modules/mcp-gateway/tests/mcp-read-tools.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-run-get.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-self-target.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-self-target.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-background.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-background.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-host-control.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-host-control.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-lifecycle.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-lifecycle.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-reconfigure.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-reconfigure.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-search-pruning.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-search.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-send.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-session-send.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-ui-last-opened.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-usage-stats.test.js +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-usage-stats.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/mcp-write-notification.test.js +2 -2
- package/dist-server/server/modules/mcp-gateway/tests/mcp-write-notification.test.js.map +1 -1
- package/dist-server/server/modules/mcp-gateway/tests/oauth-flow.e2e.test.js +3 -3
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
- package/dist-server/server/modules/oauth/access-tokens.service.js +8 -8
- package/dist-server/server/modules/oauth/oauth-consent.service.js +20 -15
- package/dist-server/server/modules/oauth/oauth-consent.service.js.map +1 -1
- package/dist-server/server/modules/oauth/tests/access-token-scopes.test.js +54 -34
- package/dist-server/server/modules/oauth/tests/access-token-scopes.test.js.map +1 -1
- package/dist-server/server/modules/oauth/tests/access-tokens.service.test.js +35 -14
- package/dist-server/server/modules/oauth/tests/access-tokens.service.test.js.map +1 -1
- package/dist-server/server/modules/oauth/tests/oauth-consent-page.test.js +27 -22
- package/dist-server/server/modules/oauth/tests/oauth-consent-page.test.js.map +1 -1
- package/dist-server/server/modules/oauth/tests/oauth-consent-ratelimit.test.js +2 -2
- package/dist-server/server/modules/oauth/tests/token-info.routes.test.js +2 -2
- package/dist-server/server/modules/oauth/tests/token-info.routes.test.js.map +1 -1
- package/dist-server/server/modules/observation/blind-spots.js +1 -1
- package/dist-server/server/modules/observation/observation-store.js +50 -17
- package/dist-server/server/modules/observation/observation-store.js.map +1 -1
- package/dist-server/server/modules/observation/observation-uri.js +31 -19
- package/dist-server/server/modules/observation/observation-uri.js.map +1 -1
- package/dist-server/server/modules/observation/observation.routes.js +1 -1
- package/dist-server/server/modules/observation/project-truth.js +1 -1
- package/dist-server/server/modules/observation/session-ask-decision-answer.js +2 -1
- package/dist-server/server/modules/observation/session-ask-decision-answer.js.map +1 -1
- package/dist-server/server/modules/observation/session-digest-llm.js +7 -1
- package/dist-server/server/modules/observation/session-digest-llm.js.map +1 -1
- package/dist-server/server/modules/observation/session-digest.js +39 -5
- package/dist-server/server/modules/observation/session-digest.js.map +1 -1
- package/dist-server/server/modules/observation/tests/architecture-delta.test.js +1 -1
- package/dist-server/server/modules/observation/tests/observation-routes.test.js +9 -0
- package/dist-server/server/modules/observation/tests/observation-routes.test.js.map +1 -1
- package/dist-server/server/modules/observation/tests/observation-store.test.js +38 -0
- package/dist-server/server/modules/observation/tests/observation-store.test.js.map +1 -1
- package/dist-server/server/modules/observation/tests/project-truth.test.js +2 -2
- package/dist-server/server/modules/observation/tests/session-ask-decision-digest.test.js +150 -0
- package/dist-server/server/modules/observation/tests/session-ask-decision-digest.test.js.map +1 -1
- package/dist-server/server/modules/observation/tests/session-digest.test.js +24 -1
- package/dist-server/server/modules/observation/tests/session-digest.test.js.map +1 -1
- package/dist-server/server/modules/providers/index.js +9 -0
- package/dist-server/server/modules/providers/index.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-host-driver.provider.js +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +22 -3
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-app-server.connection.js +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-host-driver.contract.js +11 -9
- package/dist-server/server/modules/providers/list/codex/codex-host-driver.contract.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-host-driver.provider.js +15 -1
- package/dist-server/server/modules/providers/list/codex/codex-host-driver.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +14 -3
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-provider-injection.js +248 -0
- package/dist-server/server/modules/providers/list/codex/codex-provider-injection.js.map +1 -0
- package/dist-server/server/modules/providers/list/codex/codex-resident-provider-launch.js +37 -0
- package/dist-server/server/modules/providers/list/codex/codex-resident-provider-launch.js.map +1 -0
- package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js +19 -1
- package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +1 -1
- package/dist-server/server/modules/providers/provider.routes.js +23 -2
- package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-models.service.js +136 -106
- package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-runtime.service.js +3 -0
- package/dist-server/server/modules/providers/services/provider-runtime.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/session-model-resolver.js +106 -0
- package/dist-server/server/modules/providers/services/session-model-resolver.js.map +1 -0
- package/dist-server/server/modules/providers/services/session-provider-binding.js +89 -0
- package/dist-server/server/modules/providers/services/session-provider-binding.js.map +1 -0
- package/dist-server/server/modules/providers/services/sessions.service.js +5 -1
- package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
- package/dist-server/server/modules/providers/tests/claude-resident-addressable.test.js +2 -2
- package/dist-server/server/modules/providers/tests/claude-session-name-authority.test.js +4 -4
- package/dist-server/server/modules/providers/tests/codex-app-server-protocol.test.js +1 -1
- package/dist-server/server/modules/providers/tests/codex-host-driver-persistent.test.js +2 -2
- package/dist-server/server/modules/providers/tests/codex-provider-model-binding.test.js +270 -0
- package/dist-server/server/modules/providers/tests/codex-provider-model-binding.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-resident-provider-injection.test.js +484 -0
- package/dist-server/server/modules/providers/tests/codex-resident-provider-injection.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-runtime-provider-injection.test.js +228 -0
- package/dist-server/server/modules/providers/tests/codex-runtime-provider-injection.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-session-provider-binding.test.js +306 -0
- package/dist-server/server/modules/providers/tests/codex-session-provider-binding.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js +1 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +2 -2
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js +15 -0
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js +1 -1
- package/dist-server/server/modules/quay/index.js +1 -1
- package/dist-server/server/modules/quay/quay-fleet-cli.js +1 -1
- package/dist-server/server/modules/quay/quay-fleet-locator.js +2 -2
- package/dist-server/server/modules/quay/quay-fleet-project-id.js +7 -7
- package/dist-server/server/modules/quay/quay-fleet-registry.js +3 -3
- package/dist-server/server/modules/quay/quay-suite-fanin-reader.js +1 -1
- package/dist-server/server/modules/quay/quay-uri-resolve.js +6 -6
- package/dist-server/server/modules/quay/quay.module.js +3 -3
- package/dist-server/server/modules/quay/quay.routes.js +1 -1
- package/dist-server/server/modules/quay/quay.service.js +4 -4
- package/dist-server/server/modules/quay/tests/contracts/fleet-cli-contracts.test.js +3 -3
- package/dist-server/server/modules/quay/tests/contracts/shapes.js +9 -9
- package/dist-server/server/modules/quay/tests/quay-fleet-locator.test.js +1 -1
- package/dist-server/server/modules/quay/tests/quay-fleet-project-id.test.js +4 -4
- package/dist-server/server/modules/quay/tests/quay-uri-resolve.test.js +10 -10
- package/dist-server/server/modules/session-hosts/tests/resident-server-restart.test.js +1 -1
- package/dist-server/server/modules/settings/codex-mcp-gateway.settings.js +1 -1
- package/dist-server/server/modules/settings/codex-model-providers.schema.js +349 -0
- package/dist-server/server/modules/settings/codex-model-providers.schema.js.map +1 -0
- package/dist-server/server/modules/settings/codex-model-providers.service.js +199 -0
- package/dist-server/server/modules/settings/codex-model-providers.service.js.map +1 -0
- package/dist-server/server/modules/settings/codex-model-providers.settings.js +547 -0
- package/dist-server/server/modules/settings/codex-model-providers.settings.js.map +1 -0
- package/dist-server/server/modules/settings/codex-model-providers.store.js +200 -0
- package/dist-server/server/modules/settings/codex-model-providers.store.js.map +1 -0
- package/dist-server/server/modules/settings/index.js +10 -0
- package/dist-server/server/modules/settings/index.js.map +1 -1
- package/dist-server/server/modules/settings/server-settings-file.js +28 -32
- package/dist-server/server/modules/settings/server-settings-file.js.map +1 -1
- package/dist-server/server/modules/settings/server-settings.js +2 -2
- package/dist-server/server/modules/settings/server-settings.js.map +1 -1
- package/dist-server/server/modules/settings/settings.module.js +35 -0
- package/dist-server/server/modules/settings/settings.module.js.map +1 -1
- package/dist-server/server/modules/settings/settings.routes.js +42 -0
- package/dist-server/server/modules/settings/settings.routes.js.map +1 -1
- package/dist-server/server/modules/settings/settings.service.js +8 -21
- package/dist-server/server/modules/settings/settings.service.js.map +1 -1
- package/dist-server/server/modules/settings/tests/cockpit-session-start-settings.routes.test.js +1 -0
- package/dist-server/server/modules/settings/tests/cockpit-session-start-settings.routes.test.js.map +1 -1
- package/dist-server/server/modules/settings/tests/codex-model-providers-settings.test.js +336 -0
- package/dist-server/server/modules/settings/tests/codex-model-providers-settings.test.js.map +1 -0
- package/dist-server/server/modules/settings/tests/codex-provider-advanced.test.js +466 -0
- package/dist-server/server/modules/settings/tests/codex-provider-advanced.test.js.map +1 -0
- package/dist-server/server/modules/settings/tests/codex-provider-import.test.js +475 -0
- package/dist-server/server/modules/settings/tests/codex-provider-import.test.js.map +1 -0
- package/dist-server/server/modules/voice/tests/voice-lexicon.test.js +9 -9
- package/dist-server/server/modules/voice/tests/voice-lexicon.test.js.map +1 -1
- package/dist-server/server/modules/voice/voice-lexicon.js +1 -1
- package/dist-server/server/modules/websocket/services/chat-control.service.js +21 -1
- package/dist-server/server/modules/websocket/services/chat-control.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js +25 -1
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/chat-background-task.test.js +18 -1
- package/dist-server/server/modules/websocket/tests/chat-background-task.test.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/chat-stop-task.test.js +18 -1
- package/dist-server/server/modules/websocket/tests/chat-stop-task.test.js.map +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-list.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-open.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-remove.service.js +1 -1
- package/dist-server/server/shared/brand.js +18 -20
- package/dist-server/server/shared/brand.js.map +1 -1
- package/dist-server/server/shared/data-root-migration.js +3 -2
- package/dist-server/server/shared/data-root-migration.js.map +1 -1
- package/dist-server/server/shared/data-root.js +54 -59
- package/dist-server/server/shared/data-root.js.map +1 -1
- package/dist-server/server/shared/mcp-contract/types.js +20 -15
- package/dist-server/server/shared/mcp-contract/types.js.map +1 -1
- package/dist-server/server/shared/ports/codex-provider-registry.port.js +66 -0
- package/dist-server/server/shared/ports/codex-provider-registry.port.js.map +1 -0
- package/dist-server/server/shared/settings-file.js +120 -6
- package/dist-server/server/shared/settings-file.js.map +1 -1
- package/dist-server/server/shared/tests/cloudpit-brand-env.test.js +76 -34
- package/dist-server/server/shared/tests/cloudpit-brand-env.test.js.map +1 -1
- package/dist-server/server/shared/tests/cloudpit-data-root.test.js +35 -18
- package/dist-server/server/shared/tests/cloudpit-data-root.test.js.map +1 -1
- package/dist-server/server/shared/tests/cloudpit-goal-exit-gate.test.js +153 -17
- package/dist-server/server/shared/tests/cloudpit-goal-exit-gate.test.js.map +1 -1
- package/dist-server/server/shared/tests/cloudpit-runtime-flip.test.js +116 -114
- package/dist-server/server/shared/tests/cloudpit-runtime-flip.test.js.map +1 -1
- package/dist-server/server/shared/tests/frontend-import-cycle-budget.test.js +9 -1
- package/dist-server/server/shared/tests/frontend-import-cycle-budget.test.js.map +1 -1
- package/dist-server/server/shared/tests/quay-test-script.test.js +40 -6
- package/dist-server/server/shared/tests/quay-test-script.test.js.map +1 -1
- package/dist-server/server/shared/tests/settings-file.test.js +58 -2
- package/dist-server/server/shared/tests/settings-file.test.js.map +1 -1
- package/dist-server/server/shared/types.js.map +1 -1
- package/dist-server/server/shared/utils.js +1 -1
- package/electron/appIdMigration.js +467 -0
- package/electron/assets/logo-macos.icns +0 -0
- package/electron/assets/logo-macos.png +0 -0
- package/electron/assets/logo-windows.ico +0 -0
- package/electron/brandEnv.js +64 -0
- package/electron/cloud.js +3 -3
- package/electron/desktopNotifications.js +1 -1
- package/electron/launcher/index.html +1 -1
- package/electron/localServer.js +41 -7
- package/electron/main.js +33 -15
- package/electron/scripts/generate-macos-icon.js +34 -28
- package/electron/scripts/generate-windows-icon.js +66 -0
- package/electron/serverInstaller.js +20 -11
- package/electron/tests/cloudpit-appid-migration.test.mjs +514 -0
- package/electron/tests/cloudpit-brand-env-wiring.test.mjs +324 -0
- package/electron/tests/cloudpit-desktop-identity.test.mjs +42 -19
- package/electron/tests/cloudpit-runtime-identity-surfaces.test.mjs +10 -4
- package/electron/tests/cloudpit-userdata-migration.test.mjs +18 -5
- package/electron/userDataMigration.js +3 -0
- package/package.json +7 -6
- package/public/api-docs.html +3 -3
- package/scripts/brand-allowlist-check.mjs +233 -12
- package/scripts/brand-allowlist-check.test.mjs +270 -1
- package/scripts/cloudpit-distribution-check.mjs +57 -23
- package/scripts/cloudpit-distribution-check.test.mjs +42 -9
- package/scripts/codex-protocol-smoke.mjs +1 -1
- package/scripts/isolated-instance.sh +1 -1
- package/scripts/mcp-smoke.mjs +2 -2
- package/scripts/release/tests/fork-release-workflows.test.mjs +45 -0
- package/scripts/release/tests/server-installer-bundle-url.test.mjs +57 -9
- package/scripts/restart-when-idle.sh +1 -1
- package/scripts/shadow-prediction-report.mjs +1 -1
- package/scripts/suite-duration-baseline.tsv +45 -0
- package/scripts/ui-scenario.mjs +195 -0
- package/scripts/ui-scenarios/codex-provider-import.json +63 -0
- package/scripts/ui-scenarios/codex-provider-settings.json +77 -0
- package/scripts/voice-capture-process-check.false-forms.test.mjs +1 -1
- package/scripts/voice-phase0-report.test.mjs +1 -1
- package/server/load-env.ts +15 -4
- package/server/modules/browser-use/browser-use.service.ts +45 -14
- package/server/modules/browser-use/index.ts +3 -4
- package/server/modules/browser-use/mcp-server-names.ts +6 -5
- package/server/modules/browser-use/tests/browser-use.service.test.ts +63 -1
- package/server/modules/cli/asset-migration-files.ts +96 -0
- package/server/modules/cli/asset-migration-report.ts +123 -0
- package/server/modules/cli/asset-migration-store.ts +228 -0
- package/server/modules/cli/asset-migration.service.ts +236 -0
- package/server/modules/cli/browser-use-mcp.ts +9 -4
- package/server/modules/cli/cli.module.ts +21 -1
- package/server/modules/cli/cli.service.ts +14 -1
- package/server/modules/cli/tests/asset-migration.service.test.ts +349 -0
- package/server/modules/cli/tests/browser-use-mcp-entry.test.ts +202 -0
- package/server/modules/cli/tests/cli-environment-bootstrap.test.ts +1 -0
- package/server/modules/cli/tests/cli.service.test.ts +6 -1
- package/server/modules/cockpit/cockpit-brief-prompt.ts +1 -1
- package/server/modules/cockpit/cockpit-card-actions.ts +20 -3
- package/server/modules/cockpit/cockpit-card-feedback-store.ts +104 -9
- package/server/modules/cockpit/cockpit-card-registry.ts +2 -2
- package/server/modules/cockpit/cockpit-fleet-card-projection.ts +3 -0
- package/server/modules/cockpit/cockpit-fleet-executor.ts +1 -1
- package/server/modules/cockpit/cockpit-knowledge-reading.ts +17 -0
- package/server/modules/cockpit/cockpit.module.ts +2 -2
- package/server/modules/cockpit/cockpit.reducer.ts +1 -1
- package/server/modules/cockpit/tests/cockpit-card-feedback.test.ts +116 -1
- package/server/modules/cockpit/tests/cockpit-fleet-card-provider.test.ts +2 -2
- package/server/modules/cockpit/tests/cockpit-knowledge-decision-handoff.test.ts +205 -3
- package/server/modules/context-events/context-event-writer.ts +6 -6
- package/server/modules/context-events/context-events.module.ts +2 -2
- package/server/modules/context-events/session-ask-stream-reader.ts +1 -1
- package/server/modules/context-events/session-blocked-events.ts +3 -3
- package/server/modules/context-events/tests/session-ask-event-writer.test.ts +1 -1
- package/server/modules/context-events/tests/session-blocked-events.test.ts +3 -3
- package/server/modules/context-events/tests/session-run-events.test.ts +1 -1
- package/server/modules/database/migrations.ts +24 -1
- package/server/modules/database/repositories/sessions.db.ts +41 -4
- package/server/modules/database/repositories/voice-user-identifiers.db.ts +1 -1
- package/server/modules/database/schema.ts +16 -2
- package/server/modules/database/tests/migrations-ensure-columns.test.ts +2 -0
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +2 -2
- package/server/modules/debug-agent/tests/debug-agent-permission-popup.test.ts +2 -2
- package/server/modules/liaison/liaison-deliver.service.ts +4 -4
- package/server/modules/liaison/liaison.module.ts +1 -1
- package/server/modules/mcp-gateway/mcp-gateway.auth.ts +3 -2
- package/server/modules/mcp-gateway/mcp-self-target.ts +2 -2
- package/server/modules/mcp-gateway/mcp-session-send.ts +21 -2
- package/server/modules/mcp-gateway/mcp-tool-annotations.ts +4 -4
- package/server/modules/mcp-gateway/oauth-metadata.gate.ts +4 -5
- package/server/modules/mcp-gateway/tests/knowledge-effective-config-proof.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/knowledge-peer-correlation-proof.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-approvals.test.ts +3 -2
- package/server/modules/mcp-gateway/tests/mcp-audit-route.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-audit.test.ts +4 -4
- package/server/modules/mcp-gateway/tests/mcp-auth.test.ts +3 -1
- package/server/modules/mcp-gateway/tests/mcp-cancel-queued.test.ts +3 -2
- package/server/modules/mcp-gateway/tests/mcp-cockpit-tools.test.ts +7 -3
- package/server/modules/mcp-gateway/tests/mcp-correlation-id.test.ts +8 -8
- package/server/modules/mcp-gateway/tests/mcp-draft.test.ts +3 -2
- package/server/modules/mcp-gateway/tests/mcp-english-only.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-gateway-wiring.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-insufficient-scope.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-knowledge-facts.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-not-found-semantics.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-oauth-challenge.test.ts +3 -2
- package/server/modules/mcp-gateway/tests/mcp-overview.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-pending-interaction.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-read-tools.test.ts +3 -3
- package/server/modules/mcp-gateway/tests/mcp-run-get.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-self-target.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-session-background.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-session-host-control.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-session-lifecycle.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-session-reconfigure.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-session-search-pruning.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-session-search.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-session-send.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/mcp-ui-last-opened.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-usage-stats.test.ts +1 -1
- package/server/modules/mcp-gateway/tests/mcp-write-notification.test.ts +2 -2
- package/server/modules/mcp-gateway/tests/oauth-flow.e2e.test.ts +3 -3
- package/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
- package/server/modules/oauth/access-tokens.service.ts +8 -8
- package/server/modules/oauth/oauth-consent.service.ts +20 -15
- package/server/modules/oauth/tests/access-token-scopes.test.ts +55 -34
- package/server/modules/oauth/tests/access-tokens.service.test.ts +50 -14
- package/server/modules/oauth/tests/oauth-consent-page.test.ts +29 -21
- package/server/modules/oauth/tests/oauth-consent-ratelimit.test.ts +2 -2
- package/server/modules/oauth/tests/token-info.routes.test.ts +2 -2
- package/server/modules/observation/architecture-delta.producer.ts +1 -1
- package/server/modules/observation/blind-spots.ts +1 -1
- package/server/modules/observation/observation-store.ts +54 -16
- package/server/modules/observation/observation-uri.ts +34 -21
- package/server/modules/observation/observation.routes.ts +1 -1
- package/server/modules/observation/project-truth.ts +3 -3
- package/server/modules/observation/session-ask-decision-answer.ts +2 -1
- package/server/modules/observation/session-digest-llm.ts +7 -1
- package/server/modules/observation/session-digest.ts +39 -5
- package/server/modules/observation/tests/architecture-delta.test.ts +1 -1
- package/server/modules/observation/tests/observation-routes.test.ts +13 -0
- package/server/modules/observation/tests/observation-store.test.ts +58 -0
- package/server/modules/observation/tests/project-truth.test.ts +2 -2
- package/server/modules/observation/tests/session-ask-decision-digest.test.ts +189 -0
- package/server/modules/observation/tests/session-digest.test.ts +43 -0
- package/server/modules/providers/index.ts +13 -0
- package/server/modules/providers/list/claude/claude-host-driver.provider.ts +1 -1
- package/server/modules/providers/list/codex/codex-app-server.client.ts +37 -5
- package/server/modules/providers/list/codex/codex-app-server.connection.ts +1 -1
- package/server/modules/providers/list/codex/codex-host-driver.contract.ts +18 -9
- package/server/modules/providers/list/codex/codex-host-driver.provider.ts +15 -1
- package/server/modules/providers/list/codex/codex-models.provider.ts +16 -3
- package/server/modules/providers/list/codex/codex-provider-injection.ts +323 -0
- package/server/modules/providers/list/codex/codex-resident-provider-launch.ts +71 -0
- package/server/modules/providers/list/codex/codex-runtime.provider.ts +20 -1
- package/server/modules/providers/list/cursor/cursor-models.provider.ts +1 -1
- package/server/modules/providers/list/opencode/opencode-models.provider.ts +1 -1
- package/server/modules/providers/provider.routes.ts +23 -2
- package/server/modules/providers/services/provider-models.service.ts +187 -124
- package/server/modules/providers/services/provider-runtime.service.ts +3 -0
- package/server/modules/providers/services/session-model-resolver.ts +180 -0
- package/server/modules/providers/services/session-provider-binding.ts +176 -0
- package/server/modules/providers/services/sessions.service.ts +5 -1
- package/server/modules/providers/tests/claude-resident-addressable.test.ts +2 -2
- package/server/modules/providers/tests/claude-session-name-authority.test.ts +4 -4
- package/server/modules/providers/tests/codex-app-server-protocol.test.ts +1 -1
- package/server/modules/providers/tests/codex-host-driver-persistent.test.ts +2 -2
- package/server/modules/providers/tests/codex-provider-model-binding.test.ts +345 -0
- package/server/modules/providers/tests/codex-resident-provider-injection.test.ts +561 -0
- package/server/modules/providers/tests/codex-runtime-provider-injection.test.ts +269 -0
- package/server/modules/providers/tests/codex-session-provider-binding.test.ts +386 -0
- package/server/modules/providers/tests/codex-sessions.test.ts +1 -1
- package/server/modules/providers/tests/opencode-sessions.test.ts +2 -2
- package/server/modules/providers/tests/provider-models.service.test.ts +15 -0
- package/server/modules/providers/tests/provider.routes.test.ts +1 -1
- package/server/modules/quay/index.ts +1 -1
- package/server/modules/quay/quay-dispatch-carrier.ts +1 -1
- package/server/modules/quay/quay-fleet-cli.ts +1 -1
- package/server/modules/quay/quay-fleet-locator.ts +2 -2
- package/server/modules/quay/quay-fleet-project-id.ts +14 -14
- package/server/modules/quay/quay-fleet-registry.ts +8 -8
- package/server/modules/quay/quay-suite-fanin-reader.ts +1 -1
- package/server/modules/quay/quay-uri-resolve.ts +8 -8
- package/server/modules/quay/quay.module.ts +3 -3
- package/server/modules/quay/quay.routes.ts +1 -1
- package/server/modules/quay/quay.service.ts +6 -6
- package/server/modules/quay/session-task-chain.service.ts +1 -1
- package/server/modules/quay/tests/contracts/fleet-cli-contracts.test.ts +3 -3
- package/server/modules/quay/tests/contracts/shapes.ts +10 -10
- package/server/modules/quay/tests/quay-fleet-locator.test.ts +1 -1
- package/server/modules/quay/tests/quay-fleet-project-id.test.ts +6 -6
- package/server/modules/quay/tests/quay-uri-resolve.test.ts +10 -10
- package/server/modules/session-hosts/tests/resident-server-restart.test.ts +1 -1
- package/server/modules/settings/codex-mcp-gateway.settings.ts +1 -1
- package/server/modules/settings/codex-model-providers.schema.ts +460 -0
- package/server/modules/settings/codex-model-providers.service.ts +235 -0
- package/server/modules/settings/codex-model-providers.settings.ts +713 -0
- package/server/modules/settings/codex-model-providers.store.ts +244 -0
- package/server/modules/settings/index.ts +18 -0
- package/server/modules/settings/server-settings-file.ts +29 -41
- package/server/modules/settings/server-settings.ts +2 -3
- package/server/modules/settings/settings.module.ts +41 -0
- package/server/modules/settings/settings.routes.ts +37 -0
- package/server/modules/settings/settings.service.ts +21 -26
- package/server/modules/settings/tests/cockpit-session-start-settings.routes.test.ts +1 -0
- package/server/modules/settings/tests/codex-model-providers-settings.test.ts +413 -0
- package/server/modules/settings/tests/codex-provider-advanced.test.ts +540 -0
- package/server/modules/settings/tests/codex-provider-import.test.ts +621 -0
- package/server/modules/voice/tests/voice-lexicon.test.ts +10 -10
- package/server/modules/voice/voice-lexicon.ts +1 -1
- package/server/modules/websocket/services/chat-control.service.ts +35 -2
- package/server/modules/websocket/services/chat-websocket.service.ts +25 -1
- package/server/modules/websocket/tests/chat-background-task.test.ts +17 -1
- package/server/modules/websocket/tests/chat-stop-task.test.ts +17 -1
- package/server/modules/worktrees/services/worktree-list.service.ts +1 -1
- package/server/modules/worktrees/services/worktree-open.service.ts +1 -1
- package/server/modules/worktrees/services/worktree-remove.service.ts +1 -1
- package/server/shared/brand.ts +24 -38
- package/server/shared/data-root-migration.ts +3 -2
- package/server/shared/data-root.ts +73 -79
- package/server/shared/interfaces.ts +1 -1
- package/server/shared/mcp-contract/types.ts +20 -15
- package/server/shared/ports/codex-provider-registry.port.ts +133 -0
- package/server/shared/ports/session-blocked-events.port.ts +1 -1
- package/server/shared/ports/session-run-events.port.ts +2 -2
- package/server/shared/settings-file.ts +167 -6
- package/server/shared/tests/architecture-ratchet.baseline.json +15 -15
- package/server/shared/tests/cloudpit-brand-env.test.ts +106 -36
- package/server/shared/tests/cloudpit-data-root.test.ts +42 -18
- package/server/shared/tests/cloudpit-goal-exit-gate.baseline.json +6 -2
- package/server/shared/tests/cloudpit-goal-exit-gate.test.ts +179 -17
- package/server/shared/tests/cloudpit-runtime-flip.test.ts +162 -123
- package/server/shared/tests/frontend-import-cycle-budget.baseline.json +8 -6
- package/server/shared/tests/frontend-import-cycle-budget.test.ts +9 -1
- package/server/shared/tests/quay-test-script.test.ts +40 -6
- package/server/shared/tests/settings-file.test.ts +83 -1
- package/server/shared/types.ts +121 -8
- package/server/shared/utils.ts +1 -1
- package/dist/assets/channel-D7XqNTJC.js +0 -1
- package/dist/assets/channel-sbQyI1an.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-DHudi-zH.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-DV7ybJJG.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-DHudi-zH.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-DV7ybJJG.js +0 -1
- package/dist/assets/index-BsACp0s2.css +0 -32
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-CNMNp6YA.js +0 -8
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-DOjtDEUW.js +0 -8
- package/dist/icons/icon-128x128.svg +0 -12
- package/dist/icons/icon-144x144.svg +0 -12
- package/dist/icons/icon-152x152.svg +0 -12
- package/dist/icons/icon-192x192.svg +0 -12
- package/dist/icons/icon-384x384.svg +0 -12
- package/dist/icons/icon-512x512.svg +0 -12
- package/dist/icons/icon-72x72.svg +0 -12
- package/dist/icons/icon-96x96.svg +0 -12
- package/dist/icons/icon-template.svg +0 -12
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The Cloudpit data-root criterion (AC-449's judgement file).
|
|
2
|
+
* The Cloudpit data-root criterion (AC-449's judgement file; v3.0 update).
|
|
3
3
|
*
|
|
4
|
-
* Every leg drives the real resolver against a temp home: the
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Every leg drives the real resolver against a temp home: the Cloudpit default,
|
|
5
|
+
* the full migration, the legacy root staying byte-identical, new writes landing
|
|
6
|
+
* in the new root, re-entrancy through the completion marker, the two safety
|
|
7
|
+
* arms, and the v3.0 rule that a failed migration is REPORTED rather than
|
|
8
|
+
* falling back to the legacy root.
|
|
8
9
|
*
|
|
9
10
|
* Run directly:
|
|
10
11
|
* npx tsx --tsconfig server/tsconfig.json --test server/shared/tests/cloudpit-data-root.test.ts
|
|
@@ -119,20 +120,24 @@ const MIGRATED_DATA_FILES = [
|
|
|
119
120
|
'reply-suggestions-usage.jsonl',
|
|
120
121
|
] as const;
|
|
121
122
|
|
|
122
|
-
test('AC2: with no explicit root the
|
|
123
|
+
test('AC2: with no explicit root the Cloudpit default is active and nothing is created', (t) => {
|
|
123
124
|
const root = temporaryRoot(t, 'cloudpit-ac2-');
|
|
124
125
|
const homeDir = path.join(root, 'home');
|
|
125
126
|
mkdirSync(homeDir, { recursive: true });
|
|
126
127
|
|
|
127
128
|
const plan = resolveDataRoots({ env: {}, homeDir });
|
|
128
129
|
|
|
129
|
-
assert.
|
|
130
|
-
assert.equal(plan.
|
|
131
|
-
assert.equal(plan.reason, 'default-legacy');
|
|
130
|
+
assert.equal(plan.activeRoot, path.join(homeDir, '.cloudpit'), 'the default root is ~/.cloudpit');
|
|
131
|
+
assert.equal(plan.reason, 'default-cloudpit');
|
|
132
132
|
assert.equal(plan.migrated, false);
|
|
133
|
+
assert.equal(plan.migrationError, null);
|
|
133
134
|
assert.equal(existsSync(path.join(homeDir, '.cloudpit')), false);
|
|
134
|
-
assert.equal(plan.settingsPath, path.join(homeDir, '.config', '
|
|
135
|
-
assert.equal(
|
|
135
|
+
assert.equal(plan.settingsPath, path.join(homeDir, '.config', 'cloudpit', 'server.settings.json'));
|
|
136
|
+
assert.equal(
|
|
137
|
+
plan.legacySettingsPath,
|
|
138
|
+
path.join(homeDir, '.config', 'claudecodeui', 'server.settings.json'),
|
|
139
|
+
'the legacy settings path stays available as the one-time migration source',
|
|
140
|
+
);
|
|
136
141
|
assert.equal(plan.authDatabasePath, path.join(plan.activeRoot, 'auth.db'));
|
|
137
142
|
assert.equal(plan.voiceDataDir, path.join(plan.activeRoot, 'voice-data'));
|
|
138
143
|
});
|
|
@@ -178,15 +183,16 @@ test('AC3: an explicit root receives the whole legacy layout', (t) => {
|
|
|
178
183
|
assert.equal(typeof marker.version, 'string');
|
|
179
184
|
});
|
|
180
185
|
|
|
181
|
-
test('
|
|
186
|
+
test('AC2 (v3.0): CLOUDCLI_HOME no longer selects a root; the Cloudpit default migrates', (t) => {
|
|
182
187
|
const root = temporaryRoot(t, 'cloudpit-ac3-legacy-env-');
|
|
183
188
|
const fixture = seedLegacyFixture(root);
|
|
184
189
|
|
|
185
190
|
const plan = resolveDataRoots({ env: { CLOUDCLI_HOME: fixture.newRoot }, homeDir: fixture.homeDir });
|
|
186
191
|
|
|
187
|
-
assert.equal(plan.activeRoot, fixture.
|
|
188
|
-
assert.equal(plan.reason, '
|
|
192
|
+
assert.equal(plan.activeRoot, path.join(fixture.homeDir, '.cloudpit'));
|
|
193
|
+
assert.equal(plan.reason, 'default-migrated');
|
|
189
194
|
assert.equal(plan.migrated, true);
|
|
195
|
+
assert.equal(existsSync(fixture.newRoot), false, 'the retired spelling must not receive a root');
|
|
190
196
|
});
|
|
191
197
|
|
|
192
198
|
test('AC4: the legacy root is byte-for-byte unchanged after migrating', (t) => {
|
|
@@ -271,7 +277,7 @@ test('AC7: an explicit root with no legacy layout is active but not marked', (t)
|
|
|
271
277
|
assert.equal(existsSync(path.join(newRoot, '.migrated-from-cloudcli')), false);
|
|
272
278
|
});
|
|
273
279
|
|
|
274
|
-
test('AC8: a SQLITE_BUSY backup
|
|
280
|
+
test('AC8 (v3.0): a SQLITE_BUSY backup is reported and does NOT fall back to the legacy root', (t) => {
|
|
275
281
|
const root = temporaryRoot(t, 'cloudpit-ac8-');
|
|
276
282
|
const fixture = seedLegacyFixture(root);
|
|
277
283
|
const before = snapshotLegacyLayout(fixture);
|
|
@@ -287,12 +293,30 @@ test('AC8: a SQLITE_BUSY backup falls back to the legacy root and rolls the new
|
|
|
287
293
|
},
|
|
288
294
|
});
|
|
289
295
|
|
|
290
|
-
assert.equal(plan.activeRoot,
|
|
291
|
-
assert.equal(plan.reason, '
|
|
296
|
+
assert.equal(plan.activeRoot, fixture.newRoot, 'the explicit Cloudpit root stays active');
|
|
297
|
+
assert.equal(plan.reason, 'migration-failed');
|
|
292
298
|
assert.equal(plan.migrated, false);
|
|
293
|
-
assert.
|
|
299
|
+
assert.match(plan.migrationError ?? '', /SQLITE_BUSY: database is locked/);
|
|
300
|
+
assert.equal(plan.settingsPath, fixture.explicitSettingsPath);
|
|
294
301
|
assert.equal(existsSync(fixture.newRoot), false, 'the newly created root must be removed');
|
|
295
302
|
assert.equal(existsSync(fixture.explicitSettingsPath), false, 'the new settings file must not be left behind');
|
|
296
303
|
assert.equal(existsSync(path.join(fixture.newRoot, '.migrated-from-cloudcli')), false);
|
|
297
304
|
assert.deepEqual(snapshotLegacyLayout(fixture), before, 'the legacy root must survive the failed attempt');
|
|
298
305
|
});
|
|
306
|
+
|
|
307
|
+
test('AC8 (v3.0): a failed DEFAULT migration reports too and never activates ~/.cloudcli', (t) => {
|
|
308
|
+
const root = temporaryRoot(t, 'cloudpit-ac8-default-');
|
|
309
|
+
const fixture = seedLegacyFixture(root);
|
|
310
|
+
|
|
311
|
+
const plan = resolveDataRoots({
|
|
312
|
+
env: {},
|
|
313
|
+
homeDir: fixture.homeDir,
|
|
314
|
+
backupDatabase: () => {
|
|
315
|
+
throw new Error('SQLITE_BUSY');
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
assert.equal(plan.activeRoot, path.join(fixture.homeDir, '.cloudpit'));
|
|
320
|
+
assert.equal(plan.reason, 'migration-failed');
|
|
321
|
+
assert.match(plan.migrationError ?? '', /SQLITE_BUSY/);
|
|
322
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"measuredAt": "2026-
|
|
3
|
-
"note": "AC-455
|
|
2
|
+
"measuredAt": "2026-11-03",
|
|
3
|
+
"note": "AC-455 recorded-change ratchet for the GOAL-053 exit structural gate. Reading chain: measured directory set <= moduleDirectories <= the SOURCE pin GATE_DIRECTORY_PIN in cloudpit-goal-exit-gate.test.ts; utils.ts line count <= utilsLineCount. A new module directory is a RECORDED CHANGE: it must be added to GATE_DIRECTORY_PIN and to this JSON in the same reviewed change — editing only this JSON is refused (the baseline would step outside the source pin). Directories may disappear (missing is recorded, not asserted); pre-declared directories that have not landed yet are a legitimate missing reading. First recorded change (2026-11-03 human ruling, task gap-ac455-directory-arm-recorded-change): modules/observation/core, modules/observation/producers, modules/observation/session-ask, modules/observation/session-digest, landed by gap-routine-architecture-analysis-god-package-server-observation.",
|
|
4
4
|
"moduleDirectories": [
|
|
5
5
|
".",
|
|
6
6
|
"modules/architecture",
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"modules/notifications/websocket",
|
|
29
29
|
"modules/oauth",
|
|
30
30
|
"modules/observation",
|
|
31
|
+
"modules/observation/core",
|
|
32
|
+
"modules/observation/producers",
|
|
33
|
+
"modules/observation/session-ask",
|
|
34
|
+
"modules/observation/session-digest",
|
|
31
35
|
"modules/plugins",
|
|
32
36
|
"modules/projects",
|
|
33
37
|
"modules/projects/services",
|
|
@@ -9,13 +9,27 @@
|
|
|
9
9
|
*
|
|
10
10
|
* It pins exactly the two STRUCTURAL facts the exit condition names:
|
|
11
11
|
*
|
|
12
|
-
* 1.
|
|
13
|
-
* (`collectServerSources` + `scanImportGraph`) reports the tree's directory set;
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* 1. A RECORDED-CHANGE DIRECTORY RATCHET. The same scanner AC-394 budgets
|
|
13
|
+
* (`collectServerSources` + `scanImportGraph`) reports the tree's directory set; the
|
|
14
|
+
* assertion chain is `measured ⊆ baseline.moduleDirectories ⊆ GATE_DIRECTORY_PIN`:
|
|
15
|
+
* - every measured directory must be named by the frozen baseline
|
|
16
|
+
* (`cloudpit-goal-exit-gate.baseline.json.moduleDirectories`), so `extra=[]` is green;
|
|
17
|
+
* - every baseline directory must be named by the SOURCE pin below, so editing the JSON
|
|
18
|
+
* alone cannot bless a new directory. A new directory is a RECORDED CHANGE: the same
|
|
19
|
+
* reviewed source edit must add it to `GATE_DIRECTORY_PIN` AND to the JSON (the shape
|
|
20
|
+
* AC-394's `MANIFEST_PIN` already uses).
|
|
16
21
|
* The reading is MONOTONIC: a directory may disappear (a sibling task shrinking the tree
|
|
17
|
-
* must not red this criterion), so `missing=[]` is printed but NOT asserted
|
|
18
|
-
*
|
|
22
|
+
* must not red this criterion), so `missing=[...]` is printed but NOT asserted — a
|
|
23
|
+
* pre-declared directory that has not landed yet is a legitimate `missing` reading, not a
|
|
24
|
+
* red. The count is not required to equal AC-394's roster — that manifest is a
|
|
25
|
+
* cross-reading and may only shrink too.
|
|
26
|
+
*
|
|
27
|
+
* 2026-11-03 recorded change: human yale narrowed this arm from "never add a module
|
|
28
|
+
* directory" to this ratchet (task `gap-ac455-directory-arm-recorded-change`), because an
|
|
29
|
+
* achieved GOAL-053 left the permanent ban in the full suite and made every deliberate
|
|
30
|
+
* module split a `task-introduced-red`. The first recorded change pre-declares
|
|
31
|
+
* `modules/observation/{core,producers,session-ask,session-digest}`, landed by
|
|
32
|
+
* `gap-routine-architecture-analysis-god-package-server-observation`.
|
|
19
33
|
* 2. `server/shared/utils.ts` DID NOT GROW. Its physical line count must stay `<=` the
|
|
20
34
|
* frozen `utilsLineCount` AND `<=` the committed oversize reading in
|
|
21
35
|
* `architecture-ratchet.baseline.json.oversizeFiles['server/shared/utils.ts']`. Again
|
|
@@ -27,9 +41,11 @@
|
|
|
27
41
|
* baseline rather than running the ratchet criterion.
|
|
28
42
|
*
|
|
29
43
|
* FALSE FORM: the `structuralGateViolations` function below is the single assertion path used
|
|
30
|
-
* by BOTH real-tree arms AND the negative
|
|
31
|
-
* directory set with one extra directory
|
|
32
|
-
*
|
|
44
|
+
* by BOTH real-tree arms AND the negative controls. The controls feed it (a) a synthetic
|
|
45
|
+
* directory set with one extra directory, (b) a synthetic baseline carrying one directory that
|
|
46
|
+
* is not in the source pin, and (c) a synthetic line count with one extra line, and assert each
|
|
47
|
+
* is reported as a violation — so `extra=[]` / `missing=[...]` cannot be vacuously green and the
|
|
48
|
+
* JSON-vs-pin arm is proven to be load-bearing rather than decorative.
|
|
33
49
|
*/
|
|
34
50
|
import assert from 'node:assert/strict';
|
|
35
51
|
import fs from 'node:fs';
|
|
@@ -50,6 +66,82 @@ const RATCHET_BASELINE_PATH = path.join(TEST_DIR, 'architecture-ratchet.baseline
|
|
|
50
66
|
|
|
51
67
|
const UTILS_RATCHET_KEY = 'server/shared/utils.ts';
|
|
52
68
|
|
|
69
|
+
/**
|
|
70
|
+
* The SOURCE pin the committed baseline may never exceed — the same recorded-change shape
|
|
71
|
+
* AC-394's `MANIFEST_PIN` uses. 58 directories measured on 2026-11-03 plus the first recorded
|
|
72
|
+
* change: the four `modules/observation/*` subdirectories pre-declared by human yale's
|
|
73
|
+
* 2026-11-03 ruling (task `gap-ac455-directory-arm-recorded-change`), landed by
|
|
74
|
+
* `gap-routine-architecture-analysis-god-package-server-observation`.
|
|
75
|
+
*
|
|
76
|
+
* Adding a module directory means editing THIS array and `cloudpit-goal-exit-gate.baseline.json`
|
|
77
|
+
* in the same reviewed change. Editing the JSON alone is refused by the assertion chain below;
|
|
78
|
+
* this array is the human-reviewable record of what was allowed to change and when.
|
|
79
|
+
*/
|
|
80
|
+
const GATE_DIRECTORY_PIN: readonly string[] = [
|
|
81
|
+
'.',
|
|
82
|
+
'modules/architecture',
|
|
83
|
+
'modules/assets',
|
|
84
|
+
'modules/assets/services',
|
|
85
|
+
'modules/auth',
|
|
86
|
+
'modules/browser-use',
|
|
87
|
+
'modules/cli',
|
|
88
|
+
'modules/cockpit',
|
|
89
|
+
'modules/commands',
|
|
90
|
+
'modules/context-events',
|
|
91
|
+
'modules/database',
|
|
92
|
+
'modules/database/core',
|
|
93
|
+
'modules/database/repositories',
|
|
94
|
+
'modules/debug-agent',
|
|
95
|
+
'modules/file-tree',
|
|
96
|
+
'modules/git',
|
|
97
|
+
'modules/liaison',
|
|
98
|
+
'modules/llm-gateway',
|
|
99
|
+
'modules/logging',
|
|
100
|
+
'modules/mcp-gateway',
|
|
101
|
+
'modules/notices',
|
|
102
|
+
'modules/notifications',
|
|
103
|
+
'modules/notifications/services',
|
|
104
|
+
'modules/notifications/websocket',
|
|
105
|
+
'modules/oauth',
|
|
106
|
+
'modules/observation',
|
|
107
|
+
'modules/observation/core',
|
|
108
|
+
'modules/observation/producers',
|
|
109
|
+
'modules/observation/session-ask',
|
|
110
|
+
'modules/observation/session-digest',
|
|
111
|
+
'modules/plugins',
|
|
112
|
+
'modules/projects',
|
|
113
|
+
'modules/projects/services',
|
|
114
|
+
'modules/providers',
|
|
115
|
+
'modules/providers/list/claude',
|
|
116
|
+
'modules/providers/list/codex',
|
|
117
|
+
'modules/providers/list/cursor',
|
|
118
|
+
'modules/providers/list/opencode',
|
|
119
|
+
'modules/providers/services',
|
|
120
|
+
'modules/providers/shared/base',
|
|
121
|
+
'modules/providers/shared/mcp',
|
|
122
|
+
'modules/providers/shared/skills',
|
|
123
|
+
'modules/quay',
|
|
124
|
+
'modules/reply-suggestions',
|
|
125
|
+
'modules/resident-ledger',
|
|
126
|
+
'modules/scheduled-messages',
|
|
127
|
+
'modules/scheduled-messages/services',
|
|
128
|
+
'modules/session-hosts',
|
|
129
|
+
'modules/settings',
|
|
130
|
+
'modules/static-assets',
|
|
131
|
+
'modules/system',
|
|
132
|
+
'modules/taskmaster',
|
|
133
|
+
'modules/user',
|
|
134
|
+
'modules/voice',
|
|
135
|
+
'modules/voice-realtime',
|
|
136
|
+
'modules/websocket',
|
|
137
|
+
'modules/websocket/services',
|
|
138
|
+
'modules/worktrees',
|
|
139
|
+
'modules/worktrees/services',
|
|
140
|
+
'shared',
|
|
141
|
+
'shared/mcp-contract',
|
|
142
|
+
'shared/ports',
|
|
143
|
+
];
|
|
144
|
+
|
|
53
145
|
// ---------------------------------------------------------------------------
|
|
54
146
|
// Readings
|
|
55
147
|
// ---------------------------------------------------------------------------
|
|
@@ -66,6 +158,7 @@ type GateBaseline = {
|
|
|
66
158
|
type GateReading = {
|
|
67
159
|
measuredDirectories: readonly string[];
|
|
68
160
|
frozenDirectories: readonly string[];
|
|
161
|
+
pinDirectories: readonly string[];
|
|
69
162
|
measuredUtilsLines: number;
|
|
70
163
|
frozenUtilsLines: number;
|
|
71
164
|
ratchetUtilsLines: number;
|
|
@@ -159,10 +252,20 @@ function unexpectedDirectories(measured: readonly string[], frozen: readonly str
|
|
|
159
252
|
return measured.filter((directory) => !known.has(directory));
|
|
160
253
|
}
|
|
161
254
|
|
|
255
|
+
/** Every frozen (baseline) directory the SOURCE pin does not name — the JSON-only raise. */
|
|
256
|
+
function baselineOutsidePin(frozen: readonly string[], pin: readonly string[]): string[] {
|
|
257
|
+
const pinned = new Set(pin);
|
|
258
|
+
return frozen.filter((directory) => !pinned.has(directory));
|
|
259
|
+
}
|
|
260
|
+
|
|
162
261
|
/**
|
|
163
262
|
* The exit gate's structural reading. Returns one message per violation; `[]` means green.
|
|
164
|
-
* Both real-tree arms and the false
|
|
165
|
-
*
|
|
263
|
+
* Both real-tree arms and the false forms go through this function, so no control can pass by
|
|
264
|
+
* exercising a different code path than the criterion.
|
|
265
|
+
*
|
|
266
|
+
* Directory arm = `measured ⊆ frozen ⊆ pin`. The middle link is what makes this a
|
|
267
|
+
* recorded-change ratchet: a JSON edit alone cannot bless a new directory because the frozen
|
|
268
|
+
* set would then step outside the source pin.
|
|
166
269
|
*/
|
|
167
270
|
function structuralGateViolations(reading: GateReading): string[] {
|
|
168
271
|
const violations: string[] = [];
|
|
@@ -171,7 +274,17 @@ function structuralGateViolations(reading: GateReading): string[] {
|
|
|
171
274
|
if (extra.length > 0) {
|
|
172
275
|
violations.push(
|
|
173
276
|
`new module director${extra.length === 1 ? 'y' : 'ies'} outside the frozen baseline: ${extra.join(', ')} — ` +
|
|
174
|
-
`
|
|
277
|
+
`the directory arm is a recorded-change ratchet: add the directory to ` +
|
|
278
|
+
`cloudpit-goal-exit-gate.baseline.json.moduleDirectories AND to GATE_DIRECTORY_PIN in the same change`,
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const unpinned = baselineOutsidePin(reading.frozenDirectories, reading.pinDirectories);
|
|
283
|
+
if (unpinned.length > 0) {
|
|
284
|
+
violations.push(
|
|
285
|
+
`baseline director${unpinned.length === 1 ? 'y' : 'ies'} outside the source pin GATE_DIRECTORY_PIN: ${unpinned.join(', ')} — ` +
|
|
286
|
+
`the JSON may only be lowered against the source pin, never raised: a recorded change must ` +
|
|
287
|
+
`edit GATE_DIRECTORY_PIN and cloudpit-goal-exit-gate.baseline.json together`,
|
|
175
288
|
);
|
|
176
289
|
}
|
|
177
290
|
|
|
@@ -196,30 +309,49 @@ function structuralGateViolations(reading: GateReading): string[] {
|
|
|
196
309
|
// AC2 — zero new module directories
|
|
197
310
|
// ---------------------------------------------------------------------------
|
|
198
311
|
|
|
199
|
-
test('AC2:
|
|
312
|
+
test('AC2: the measured tree is inside the frozen baseline, which is inside the source pin', () => {
|
|
200
313
|
const baseline = readGateBaseline();
|
|
201
314
|
const graph = realGraphOnce();
|
|
202
315
|
const manifest = readDirectoryManifest();
|
|
203
316
|
|
|
204
317
|
const extra = unexpectedDirectories(graph.nodes, baseline.moduleDirectories);
|
|
205
318
|
const missing = baseline.moduleDirectories.filter((directory) => !graph.nodes.includes(directory));
|
|
319
|
+
const unpinned = baselineOutsidePin(baseline.moduleDirectories, GATE_DIRECTORY_PIN);
|
|
206
320
|
|
|
207
321
|
console.log(
|
|
208
322
|
`[ac455] directory arm: measured=${graph.nodes.length} frozen=${baseline.moduleDirectories.length} ` +
|
|
209
323
|
`cycleManifest=${manifest.length} extra=${JSON.stringify(extra)} missing=${JSON.stringify(missing)}`,
|
|
210
324
|
);
|
|
325
|
+
console.log(
|
|
326
|
+
`[ac455] directory pin: pin=${GATE_DIRECTORY_PIN.length} baselineOutsidePin=${JSON.stringify(unpinned)} ` +
|
|
327
|
+
`duplicatePinEntries=${GATE_DIRECTORY_PIN.length - new Set(GATE_DIRECTORY_PIN).size}`,
|
|
328
|
+
);
|
|
211
329
|
assert.ok(graph.nodes.length > 0, 'the scan must have seen directories — an empty tree would make the subset check vacuous');
|
|
212
330
|
assert.ok(baseline.moduleDirectories.length > 0, 'the frozen baseline must name directories');
|
|
331
|
+
assert.ok(GATE_DIRECTORY_PIN.length > 0, 'the source pin must name directories');
|
|
332
|
+
assert.equal(
|
|
333
|
+
new Set(GATE_DIRECTORY_PIN).size,
|
|
334
|
+
GATE_DIRECTORY_PIN.length,
|
|
335
|
+
'GATE_DIRECTORY_PIN must not carry duplicate entries',
|
|
336
|
+
);
|
|
213
337
|
assert.deepEqual(
|
|
214
338
|
extra,
|
|
215
339
|
[],
|
|
216
340
|
`a directory outside the frozen baseline is a NEW module directory: ${extra.join(', ')}. ` +
|
|
217
|
-
`
|
|
341
|
+
`This is a recorded-change ratchet: add it to cloudpit-goal-exit-gate.baseline.json.moduleDirectories ` +
|
|
342
|
+
`AND to GATE_DIRECTORY_PIN in the same reviewed change.`,
|
|
343
|
+
);
|
|
344
|
+
assert.deepEqual(
|
|
345
|
+
unpinned,
|
|
346
|
+
[],
|
|
347
|
+
`the frozen baseline names directories outside GATE_DIRECTORY_PIN: ${unpinned.join(', ')}. ` +
|
|
348
|
+
`Editing the JSON alone cannot bless a directory — the source pin and the JSON must move together.`,
|
|
218
349
|
);
|
|
219
350
|
|
|
220
351
|
const violations = structuralGateViolations({
|
|
221
352
|
measuredDirectories: graph.nodes,
|
|
222
353
|
frozenDirectories: baseline.moduleDirectories,
|
|
354
|
+
pinDirectories: GATE_DIRECTORY_PIN,
|
|
223
355
|
measuredUtilsLines: baseline.utilsLineCount,
|
|
224
356
|
frozenUtilsLines: baseline.utilsLineCount,
|
|
225
357
|
ratchetUtilsLines: readUtilsRatchetLineCount(),
|
|
@@ -250,6 +382,7 @@ test('AC3: server/shared/utils.ts is not longer than the frozen exit-gate baseli
|
|
|
250
382
|
const violations = structuralGateViolations({
|
|
251
383
|
measuredDirectories: realGraphOnce().nodes,
|
|
252
384
|
frozenDirectories: baseline.moduleDirectories,
|
|
385
|
+
pinDirectories: GATE_DIRECTORY_PIN,
|
|
253
386
|
measuredUtilsLines: measured,
|
|
254
387
|
frozenUtilsLines: baseline.utilsLineCount,
|
|
255
388
|
ratchetUtilsLines: ratchetLines,
|
|
@@ -261,7 +394,7 @@ test('AC3: server/shared/utils.ts is not longer than the frozen exit-gate baseli
|
|
|
261
394
|
// False form — the negative control proves the gate can red
|
|
262
395
|
// ---------------------------------------------------------------------------
|
|
263
396
|
|
|
264
|
-
test('AC2/AC3 false form:
|
|
397
|
+
test('AC2/AC3 false form: an extra measured directory, a JSON-only baseline raise, and an extra line each red the gate', () => {
|
|
265
398
|
const baseline = readGateBaseline();
|
|
266
399
|
const ratchetLines = readUtilsRatchetLineCount();
|
|
267
400
|
|
|
@@ -273,6 +406,7 @@ test('AC2/AC3 false form: a synthetic extra directory and a synthetic extra line
|
|
|
273
406
|
const clean = structuralGateViolations({
|
|
274
407
|
measuredDirectories: baseline.moduleDirectories,
|
|
275
408
|
frozenDirectories: baseline.moduleDirectories,
|
|
409
|
+
pinDirectories: baseline.moduleDirectories,
|
|
276
410
|
measuredUtilsLines: syntheticLines,
|
|
277
411
|
frozenUtilsLines: syntheticLines,
|
|
278
412
|
ratchetUtilsLines: syntheticLines,
|
|
@@ -282,20 +416,48 @@ test('AC2/AC3 false form: a synthetic extra directory and a synthetic extra line
|
|
|
282
416
|
const directoryViolations = structuralGateViolations({
|
|
283
417
|
measuredDirectories: syntheticDirectories,
|
|
284
418
|
frozenDirectories: baseline.moduleDirectories,
|
|
419
|
+
pinDirectories: baseline.moduleDirectories,
|
|
285
420
|
measuredUtilsLines: syntheticLines,
|
|
286
421
|
frozenUtilsLines: syntheticLines,
|
|
287
422
|
ratchetUtilsLines: syntheticLines,
|
|
288
423
|
});
|
|
289
|
-
console.log(`[ac455] false form (extra directory): ${JSON.stringify(directoryViolations)}`);
|
|
290
|
-
assert.ok(directoryViolations.length > 0, 'one extra directory must red the gate');
|
|
424
|
+
console.log(`[ac455] false form (extra measured directory): ${JSON.stringify(directoryViolations)}`);
|
|
425
|
+
assert.ok(directoryViolations.length > 0, 'one extra measured directory must red the gate');
|
|
291
426
|
assert.ok(
|
|
292
427
|
directoryViolations.some((message) => message.includes(syntheticDirectory)),
|
|
293
428
|
'the directory violation must name the extra directory',
|
|
294
429
|
);
|
|
295
430
|
|
|
431
|
+
// The recorded-change arm: the synthetic directory IS in the frozen baseline, but the source
|
|
432
|
+
// pin was not edited with it — the exact "only the JSON was raised" shape. It must red, and
|
|
433
|
+
// the message must name the offending directory and the source pin.
|
|
434
|
+
const pinViolations = structuralGateViolations({
|
|
435
|
+
measuredDirectories: syntheticDirectories,
|
|
436
|
+
frozenDirectories: syntheticDirectories,
|
|
437
|
+
pinDirectories: baseline.moduleDirectories,
|
|
438
|
+
measuredUtilsLines: syntheticLines,
|
|
439
|
+
frozenUtilsLines: syntheticLines,
|
|
440
|
+
ratchetUtilsLines: syntheticLines,
|
|
441
|
+
});
|
|
442
|
+
console.log(`[ac455] false form (baseline outside source pin): ${JSON.stringify(pinViolations)}`);
|
|
443
|
+
assert.ok(pinViolations.length > 0, 'a baseline directory outside the source pin must red the gate');
|
|
444
|
+
assert.ok(
|
|
445
|
+
pinViolations.some((message) => message.includes(syntheticDirectory)),
|
|
446
|
+
'the pin violation must name the unpinned directory',
|
|
447
|
+
);
|
|
448
|
+
assert.ok(
|
|
449
|
+
pinViolations.some((message) => message.includes('GATE_DIRECTORY_PIN')),
|
|
450
|
+
'the pin violation must name the source pin it failed to edit',
|
|
451
|
+
);
|
|
452
|
+
assert.ok(
|
|
453
|
+
!pinViolations.some((message) => message.includes('outside the frozen baseline')),
|
|
454
|
+
'the pin arm must fire on the JSON-vs-pin link, not on the measured-vs-JSON link (that would prove the wrong arm)',
|
|
455
|
+
);
|
|
456
|
+
|
|
296
457
|
const lineViolations = structuralGateViolations({
|
|
297
458
|
measuredDirectories: baseline.moduleDirectories,
|
|
298
459
|
frozenDirectories: baseline.moduleDirectories,
|
|
460
|
+
pinDirectories: baseline.moduleDirectories,
|
|
299
461
|
measuredUtilsLines: syntheticLines + 1,
|
|
300
462
|
frozenUtilsLines: syntheticLines,
|
|
301
463
|
ratchetUtilsLines: syntheticLines,
|