@piecemaker-legal/piecemaker 2.0.8 → 2.0.10
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/assets/FindReplaceDialog-KU5TEIBJ-CQ76sPaJ.js +1 -0
- package/dist/assets/FootnotePropertiesDialog-W3YHM4BV-BpgYQvvd.js +1 -0
- package/dist/assets/HyperlinkDialog-ZYH7ZHRF-qIPBOssF.css +1 -0
- package/dist/assets/HyperlinkDialog-ZYH7ZHRF-z08UbYbL.js +144 -0
- package/dist/assets/ImagePositionDialog-HEWYR6Q3-CFzOnzAt.js +1 -0
- package/dist/assets/ImagePropertiesDialog-RAB47C6M-D-ThGU-b.js +1 -0
- package/dist/assets/PageSetupDialog-AIGIXO3E-_PYIO8eb.js +1 -0
- package/dist/assets/SplitCellDialog-IFBKYCD6-Cb9uQOB8.js +1 -0
- package/dist/assets/TablePropertiesDialog-TMLKGOOW-12vmjb6B.js +1 -0
- package/dist/assets/WatermarkDialog-KRL7WMIS-C-d8rzt2.js +1 -0
- package/dist/assets/{abnfDiagram-VCTEODGH-XuFdW3jA.js → abnfDiagram-VCTEODGH-B4OsX7eF.js} +1 -1
- package/dist/assets/arc-BK1oUIk7.js +1 -0
- package/dist/assets/architectureDiagram-5GKGNRK7-CfaFI6L7.js +36 -0
- package/dist/assets/{blockDiagram-I7D4REHJ-CsgOSDLB.js → blockDiagram-I7D4REHJ-DQEI2azY.js} +1 -1
- package/dist/assets/{c4Diagram-7LVT6UL2-awKtsGCB.js → c4Diagram-7LVT6UL2-DbravpVi.js} +1 -1
- package/dist/assets/channel-DVyNr2Yg.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-DA5F8ig-.js → chunk-2Q5K7J3B-BLpZ9huC.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-DawRFEGW.js → chunk-5VM5RSS4-BLlEdmX9.js} +1 -1
- package/dist/assets/{chunk-F27PBJKO-BO6B_U1p.js → chunk-F27PBJKO-D-ZNhI6q.js} +1 -1
- package/dist/assets/{chunk-IMKFNOWR-Dhrf_k6W.js → chunk-IMKFNOWR-vzSiKnhh.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-BTGX4CJ7.js → chunk-JWPE2WC7-DfF0k4nb.js} +1 -1
- package/dist/assets/{chunk-POPQ4Y6H-ByKLZ0wa.js → chunk-POPQ4Y6H-BnwCYsPP.js} +1 -1
- package/dist/assets/{chunk-SVP7TREG-DNCtUeow.js → chunk-SVP7TREG-DRxc8fhq.js} +1 -1
- package/dist/assets/{chunk-TICWLB2K-bgcAtBKw.js → chunk-TICWLB2K-Dd2Q-md-.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-AD-pwqOj.js → chunk-XXDRQBXY-DBjkEUp_.js} +1 -1
- package/dist/assets/classDiagram-ZZMXUADV-2pGPHl5H.js +1 -0
- package/dist/assets/classDiagram-v2-VYDZK3BY-2pGPHl5H.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-D23VMTjy.js → cose-bilkent-JH36ORCC-By6PS4oe.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-thDLtHBg.js → cynefin-OW5HDTMX-YxWpjc5W.js} +1 -1
- package/dist/assets/{cynefinDiagram-5FMLGOSQ-BTG5qDGi.js → cynefinDiagram-5FMLGOSQ-DrtXzz3p.js} +1 -1
- package/dist/assets/{dagre-GXQ25YYZ-yXAeLV32.js → dagre-GXQ25YYZ-BDpTLKqZ.js} +1 -1
- package/dist/assets/{diagram-S7CK7UJ4-v1-YDY3c.js → diagram-S7CK7UJ4-C4LvqeCs.js} +1 -1
- package/dist/assets/{diagram-UQ7AKVKN-DlO9hQ63.js → diagram-UQ7AKVKN-BTpnMeHp.js} +1 -1
- package/dist/assets/{diagram-VSXAHHWV-B3Bz2C6Y.js → diagram-VSXAHHWV-DucHHWev.js} +1 -1
- package/dist/assets/{diagram-VX7I27RA-BosIgZRa.js → diagram-VX7I27RA-DYHZNmmH.js} +1 -1
- package/dist/assets/{diagram-Z3DM3KII-C1MFbIji.js → diagram-Z3DM3KII-BHIH2BGN.js} +1 -1
- package/dist/assets/{ebnfDiagram-PWID7BFC-B6g9aRAb.js → ebnfDiagram-PWID7BFC-CGiEkwj0.js} +1 -1
- package/dist/assets/{erDiagram-RLTQ6QDP-BuV5RUQ-.js → erDiagram-RLTQ6QDP-AJMHi2Us.js} +1 -1
- package/dist/assets/{flowDiagram-HODETNUW-OFcS8Psg.js → flowDiagram-HODETNUW-BqzANBh2.js} +1 -1
- package/dist/assets/{ganttDiagram-EL5Y4UJY-CxCIs-y4.js → ganttDiagram-EL5Y4UJY-B0xPDY2_.js} +1 -1
- package/dist/assets/{gitGraphDiagram-WWUBYQGX-DQHfgTRq.js → gitGraphDiagram-WWUBYQGX-CzPX5CNO.js} +1 -1
- package/dist/assets/{index-BPmxqMd5.js → index-Bk2iXKnJ.js} +140 -140
- package/dist/assets/index-Dc9wNuS4.css +1 -0
- package/dist/assets/{infoDiagram-27XIBGKW-UvDaFHGE.js → infoDiagram-27XIBGKW-Cjc44H0O.js} +1 -1
- package/dist/assets/{ishikawaDiagram-5VMMS53U-B04u_588.js → ishikawaDiagram-5VMMS53U-BWhr2v7r.js} +1 -1
- package/dist/assets/{journeyDiagram-3NMN7TZE-BYvBbjXl.js → journeyDiagram-3NMN7TZE-Bl4r6RrP.js} +1 -1
- package/dist/assets/{kanban-definition-UXKFOSKX-DxAJd2LW.js → kanban-definition-UXKFOSKX-FV-T0Vy1.js} +6 -6
- package/dist/assets/layout-CTfb1sAF.js +1 -0
- package/dist/assets/{linear-CmWY0F-m.js → linear-Dfgi6vlo.js} +1 -1
- package/dist/assets/{mermaid.core-ClUcKNvb.js → mermaid.core-DOCGsdlo.js} +7 -7
- package/dist/assets/{mindmap-definition-YA3MSWOX-DZ2GO-J-.js → mindmap-definition-YA3MSWOX-CymQ86ir.js} +1 -1
- package/dist/assets/{pegDiagram-XKGWAZYB-DF4i_o7r.js → pegDiagram-XKGWAZYB-1VMq_vi0.js} +1 -1
- package/dist/assets/{pieDiagram-E7YTZNPT-G20Z0KTO.js → pieDiagram-E7YTZNPT-C5GgXtJU.js} +1 -1
- package/dist/assets/processTemplate-GPFDLQMX-B1sVV2O0.js +22 -0
- package/dist/assets/{quadrantDiagram-AXDQQJYC-5MRlN0BO.js → quadrantDiagram-AXDQQJYC-C6zpryYf.js} +1 -1
- package/dist/assets/{railroadDiagram-O6MQD6OU-B4Fp-guo.js → railroadDiagram-O6MQD6OU-D-sv4SWi.js} +1 -1
- package/dist/assets/{requirementDiagram-BXWQKSXE-DFL0eww_.js → requirementDiagram-BXWQKSXE-CkjY-z4B.js} +1 -1
- package/dist/assets/sankeyDiagram-P5KCCOFB-De-d8Q6L.js +40 -0
- package/dist/assets/{sequenceDiagram-WJ2MYXX4-iP9OUxwi.js → sequenceDiagram-WJ2MYXX4-DCsGSJa9.js} +1 -1
- package/dist/assets/{server.browser-BzI1jrZw.js → server.browser-BY3bL-IX.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-C95kgcA-.js → sizeCapture-INFHLROL-xINZhgER.js} +1 -1
- package/dist/assets/stateDiagram-D77RDMKH-CuLUTWSL.js +1 -0
- package/dist/assets/stateDiagram-v2-MP3YSRHH-Cnbs-M92.js +1 -0
- package/dist/assets/{swimlanes-42K2YHIH-BbMY7ECY.js → swimlanes-42K2YHIH-BwxARD7N.js} +1 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-D7p8qZI2.js +8 -0
- package/dist/assets/{timeline-definition-24CTP7MA-BQs8wPer.js → timeline-definition-24CTP7MA-BIOvnn-l.js} +3 -3
- package/dist/assets/{vendor-codemirror-CjW0lHR5.js → vendor-codemirror-CN-sJePf.js} +2 -2
- package/dist/assets/{vendor-react-D809iwXR.js → vendor-react-B22wqN3J.js} +5 -5
- package/dist/assets/{vennDiagram-4TSXK5OY-Imm0EPbt.js → vennDiagram-4TSXK5OY-BSD6Pfmt.js} +4 -4
- package/dist/assets/{wardleyDiagram-VM6X3IG4-DpMMDayn.js → wardleyDiagram-VM6X3IG4-7Zz2iRkF.js} +1 -1
- package/dist/assets/{xychartDiagram-S5SC5T6Z-DdLp1sYL.js → xychartDiagram-S5SC5T6Z-Ctx17Y1D.js} +1 -1
- package/dist/index.html +4 -4
- package/dist/sw.js +1 -1
- package/dist-server/server/modules/providers/list/mistral/mistral-models.provider.js +4 -53
- package/dist-server/server/modules/providers/list/mistral/mistral-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/mistral/mistral-runtime.provider.js +2 -3
- package/dist-server/server/modules/providers/list/mistral/mistral-runtime.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/mistral/mistral-vibe-models.js +30 -0
- package/dist-server/server/modules/providers/list/mistral/mistral-vibe-models.js.map +1 -0
- package/dist-server/server/modules/providers/tests/mistral-vibe-models.test.js +24 -0
- package/dist-server/server/modules/providers/tests/mistral-vibe-models.test.js.map +1 -0
- package/dist-server/server/piecemaker/anonymizer/lifecycle.js +2 -3
- package/dist-server/server/piecemaker/anonymizer/lifecycle.js.map +1 -1
- package/dist-server/server/piecemaker/desktop-update/index.js +4 -3
- package/dist-server/server/piecemaker/desktop-update/index.js.map +1 -1
- package/dist-server/server/piecemaker/docx-document.js +50 -0
- package/dist-server/server/piecemaker/docx-document.js.map +1 -0
- package/dist-server/server/piecemaker/index.js +9 -2
- package/dist-server/server/piecemaker/index.js.map +1 -1
- package/dist-server/server/piecemaker/model-discovery/codex-catalog.js +46 -0
- package/dist-server/server/piecemaker/model-discovery/codex-catalog.js.map +1 -0
- package/dist-server/server/piecemaker/model-discovery/index.js +42 -0
- package/dist-server/server/piecemaker/model-discovery/index.js.map +1 -0
- package/dist-server/server/piecemaker/model-discovery/mistral-catalog.js +19 -0
- package/dist-server/server/piecemaker/model-discovery/mistral-catalog.js.map +1 -0
- package/dist-server/server/piecemaker/model-discovery/stdio-rpc.js +61 -0
- package/dist-server/server/piecemaker/model-discovery/stdio-rpc.js.map +1 -0
- package/dist-server/server/piecemaker/project-registry.js +29 -0
- package/dist-server/server/piecemaker/project-registry.js.map +1 -0
- package/package.json +12 -1
- package/scripts/piecemaker/cli/disable-anonymizer.mjs +19 -0
- package/scripts/piecemaker/cli/lib/config.mjs +0 -1
- package/scripts/piecemaker/cli/lib/services.mjs +1 -10
- package/scripts/piecemaker/cli/piecemaker.mjs +0 -3
- package/server/modules/providers/list/mistral/mistral-models.provider.ts +4 -53
- package/server/modules/providers/list/mistral/mistral-runtime.provider.ts +2 -3
- package/server/modules/providers/list/mistral/mistral-vibe-models.ts +43 -0
- package/server/modules/providers/tests/mistral-vibe-models.test.ts +27 -0
- package/server/piecemaker/anonymizer/client-config.cjs +92 -92
- package/server/piecemaker/anonymizer/hudsucker-fixture.cjs +9 -16
- package/server/piecemaker/anonymizer/hudsucker-proxy/Cargo.toml +1 -1
- package/server/piecemaker/anonymizer/hudsucker-proxy/src/main.rs +251 -268
- package/server/piecemaker/anonymizer/lifecycle.ts +2 -3
- package/server/piecemaker/anonymizer/rewriter-bridge.cjs +6 -0
- package/server/piecemaker/anonymizer/service.cjs +117 -175
- package/server/piecemaker/desktop-update/index.ts +4 -3
- package/server/piecemaker/docx-document.ts +54 -0
- package/server/piecemaker/harness/decisions.cjs +1 -1
- package/server/piecemaker/harness/index.cjs +2 -3
- package/server/piecemaker/harness/verification.cjs +1 -1
- package/server/piecemaker/index.ts +11 -3
- package/server/piecemaker/model-discovery/codex-catalog.ts +67 -0
- package/server/piecemaker/model-discovery/index.ts +69 -0
- package/server/piecemaker/model-discovery/mistral-catalog.ts +36 -0
- package/server/piecemaker/model-discovery/stdio-rpc.ts +79 -0
- package/server/piecemaker/project-registry.ts +34 -0
- package/server/piecemaker/router.cjs +6 -7
- package/server/piecemaker/vendor/installer/bin/piecemaker.mjs +31 -77
- package/server/piecemaker/vendor/installer/lib/codex-skills.mjs +2 -84
- package/server/piecemaker/vendor/installer/lib/service.mjs +4 -24
- package/server/piecemaker/vendor/installer/steps/06-hooks.mjs +10 -21
- package/server/piecemaker/vendor/installer/steps/09-claude-assets.mjs +0 -11
- package/server/piecemaker/vendor/installer/steps/09-codex-plugin.mjs +6 -36
- package/server/piecemaker/vendor/installer/steps/13-garde-secrets.mjs +30 -12
- package/server/piecemaker/vendor/piecemaker-plugin/README.md +2 -9
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/billing-track.mjs +5 -5
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/classify-ai-documents.mjs +8 -8
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/commit-track.mjs +2 -2
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/compile-recherche.mjs +4 -6
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/lib/case-folders.cjs +71 -38
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/lib/mapping.cjs +8 -38
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/lib/protection.cjs +82 -61
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/protect-originals.mjs +4 -55
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/statusline.mjs +24 -117
- package/server/piecemaker/vendor/piecemaker-plugin/skills/tamponnage/SKILL.md +2 -2
- package/server/piecemaker/vendor/websocket-server/admin-routes.cjs +15 -121
- package/server/piecemaker/vendor/websocket-server/case-registry.cjs +16 -32
- package/server/piecemaker/vendor/websocket-server/claude-hooks.cjs +0 -73
- package/server/piecemaker/vendor/websocket-server/originals-pipeline.cjs +0 -7
- package/server/piecemaker/vendor/websocket-server/scripts/presidio-gliner/scanner_worker.py +2 -0
- package/server/piecemaker/vendor/websocket-server/stamping-routes.cjs +3 -12
- package/server/piecemaker/vendor/websocket-server/workspace-paths.cjs +6 -6
- package/dist/assets/arc-CsCtfL20.js +0 -1
- package/dist/assets/architectureDiagram-5GKGNRK7-DGxozBGS.js +0 -36
- package/dist/assets/channel-DnynWwYa.js +0 -1
- package/dist/assets/classDiagram-ZZMXUADV-CHIsGj2B.js +0 -1
- package/dist/assets/classDiagram-v2-VYDZK3BY-CHIsGj2B.js +0 -1
- package/dist/assets/index-WwknP0l4.css +0 -1
- package/dist/assets/layout-R7w2kLxO.js +0 -1
- package/dist/assets/sankeyDiagram-P5KCCOFB-CpOdmqdy.js +0 -40
- package/dist/assets/stateDiagram-D77RDMKH-D9WHRvlY.js +0 -1
- package/dist/assets/stateDiagram-v2-MP3YSRHH-D9Qlflkb.js +0 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-CA64dwpM.js +0 -8
- package/scripts/piecemaker/cli/lib/piecemaker-anonymizer.mjs +0 -78
- package/scripts/piecemaker/hooks/proxy-guard.mjs +0 -251
- package/server/piecemaker/anonymizer/providers.cjs +0 -120
- package/server/piecemaker/vendor/installer/steps/08-telegram.mjs +0 -482
- package/server/piecemaker/vendor/piecemaker-plugin/scripts/lib/central-mapping.cjs +0 -0
- package/server/piecemaker/vendor/websocket-server/telegram-admin.cjs +0 -602
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { MISTRAL_PREDEFINED_MODELS } from '../list/mistral/mistral-models.provider.js';
|
|
4
|
+
import { buildVibeModelsEnvironment } from '../list/mistral/mistral-vibe-models.js';
|
|
5
|
+
test('Vibe receives the GLM models alongside Mistral Medium without overriding thinking by default', () => {
|
|
6
|
+
const models = JSON.parse(buildVibeModelsEnvironment());
|
|
7
|
+
assert.deepEqual(Object.keys(models), ['mistral-medium-3.5', 'glm-5.3', 'glm-5.2']);
|
|
8
|
+
assert.deepEqual(models['glm-5.3'], { name: 'zai-glm-5-3', provider: 'mistral', alias: 'glm-5.3', display_name: 'Z.ai GLM 5.3' });
|
|
9
|
+
assert.equal(models['mistral-medium-3.5'].thinking, undefined);
|
|
10
|
+
});
|
|
11
|
+
test('the selected effort becomes Vibe thinking only on models with adjustable reasoning', () => {
|
|
12
|
+
assert.equal(JSON.parse(buildVibeModelsEnvironment('mistral-medium-3.5', 'none'))['mistral-medium-3.5'].thinking, 'low');
|
|
13
|
+
assert.equal(JSON.parse(buildVibeModelsEnvironment('mistral-medium-3.5', 'high'))['mistral-medium-3.5'].thinking, 'high');
|
|
14
|
+
assert.equal(JSON.parse(buildVibeModelsEnvironment('glm-5.3', 'high'))['glm-5.3'].thinking, undefined);
|
|
15
|
+
assert.equal(JSON.parse(buildVibeModelsEnvironment('mistral-medium-3.5', 'bogus'))['mistral-medium-3.5'].thinking, undefined);
|
|
16
|
+
});
|
|
17
|
+
test('the curated Mistral catalog lists GLM 5.3 and 5.2 and offers effort on Medium 3.5 only', () => {
|
|
18
|
+
const byValue = Object.fromEntries(MISTRAL_PREDEFINED_MODELS.OPTIONS.map((option) => [option.value, option]));
|
|
19
|
+
assert.deepEqual(Object.keys(byValue), ['mistral-medium-3.5', 'glm-5.3', 'glm-5.2', 'local']);
|
|
20
|
+
assert.deepEqual(byValue['mistral-medium-3.5'].effort?.values.map((value) => value.value), ['none', 'high']);
|
|
21
|
+
assert.equal(byValue['glm-5.3'].effort, undefined);
|
|
22
|
+
assert.equal(MISTRAL_PREDEFINED_MODELS.DEFAULT, 'mistral-medium-3.5');
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=mistral-vibe-models.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mistral-vibe-models.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/mistral-vibe-models.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAErG,IAAI,CAAC,8FAA8F,EAAE,GAAG,EAAE;IACxG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IAClI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oFAAoF,EAAE,GAAG,EAAE;IAC9F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChI,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wFAAwF,EAAE,GAAG,EAAE;IAClG,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7G,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
export async function startRequiredAnonymizer(service) {
|
|
2
2
|
const ensureReady = () => {
|
|
3
3
|
const status = service.status();
|
|
4
|
+
if (status.reason === 'disabled')
|
|
5
|
+
return;
|
|
4
6
|
if (!status.enabled || !status.listening)
|
|
5
7
|
throw new Error('PieceMaker : le proxy PII est indisponible. Démarrage IA refusé.');
|
|
6
|
-
const missing = ['claude', 'codex'].filter((provider) => status.coverage[provider]?.state !== 'filtered');
|
|
7
|
-
if (missing.length)
|
|
8
|
-
throw new Error(`PieceMaker : routage PII non configuré pour ${missing.join(', ')}. Démarrage IA refusé.`);
|
|
9
8
|
};
|
|
10
9
|
try {
|
|
11
10
|
await service.start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../server/piecemaker/anonymizer/lifecycle.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAA0B;IACtE,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../server/piecemaker/anonymizer/lifecycle.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAA0B;IACtE,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAChI,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import { loadProductConfig } from '../../../shared/product-config.mjs';
|
|
3
4
|
import { createDesktopUpdateRouter } from './routes.js';
|
|
4
5
|
import { createDesktopUpdateService } from './service.js';
|
|
@@ -19,9 +20,9 @@ function runInstaller(command, environment) {
|
|
|
19
20
|
child.once('close', (exitCode) => resolve({ exitCode, output, errorOutput }));
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
|
-
function productRepository() {
|
|
23
|
+
function productRepository(appRoot) {
|
|
23
24
|
try {
|
|
24
|
-
return loadProductConfig().repository;
|
|
25
|
+
return loadProductConfig(process.env.CLOUDCLI_PRODUCT_CONFIG || path.join(appRoot, 'product.config.json')).repository;
|
|
25
26
|
}
|
|
26
27
|
catch {
|
|
27
28
|
return null;
|
|
@@ -34,7 +35,7 @@ export function createPieceMakerDesktopUpdateRouter(appRoot) {
|
|
|
34
35
|
return createDesktopUpdateRouter(createDesktopUpdateService({
|
|
35
36
|
appRoot,
|
|
36
37
|
platform: process.platform,
|
|
37
|
-
repository: productRepository(),
|
|
38
|
+
repository: productRepository(appRoot),
|
|
38
39
|
applicationPid: process.ppid,
|
|
39
40
|
environment: process.env,
|
|
40
41
|
runInstaller,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/piecemaker/desktop-update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/piecemaker/desktop-update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,SAAS,YAAY,CAAC,OAAe,EAAE,WAA8B;IACnE,OAAO,IAAI,OAAO,CAAmE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvG,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC;IACxH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,yBAAyB,CAAC,0BAA0B,CAAC;QAC1D,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,IAAI;QAC5B,WAAW,EAAE,OAAO,CAAC,GAAG;QACxB,YAAY;QACZ,cAAc;QACd,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC;KAC/D,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
import { rename, rm, stat, writeFile } from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import express from 'express';
|
|
5
|
+
import { projectsDb } from '../modules/database/index.js';
|
|
6
|
+
const MAX_DOCX_BYTES = '100mb';
|
|
7
|
+
function resolveDocxPath(request) {
|
|
8
|
+
const projectId = typeof request.query.projectId === 'string' ? request.query.projectId : '';
|
|
9
|
+
const filePath = typeof request.query.path === 'string' ? request.query.path : '';
|
|
10
|
+
const projectRoot = projectId ? projectsDb.getProjectPathById(projectId) : null;
|
|
11
|
+
if (!projectRoot || !filePath.toLowerCase().endsWith('.docx'))
|
|
12
|
+
return null;
|
|
13
|
+
const resolved = path.resolve(projectRoot, filePath);
|
|
14
|
+
return resolved.startsWith(path.resolve(projectRoot) + path.sep) ? resolved : null;
|
|
15
|
+
}
|
|
16
|
+
async function readVersion(filePath) {
|
|
17
|
+
return (await stat(filePath)).mtimeMs;
|
|
18
|
+
}
|
|
19
|
+
export function createDocxDocumentRouter() {
|
|
20
|
+
const router = express.Router();
|
|
21
|
+
router.get('/docx-document/version', async (request, response) => {
|
|
22
|
+
const filePath = resolveDocxPath(request);
|
|
23
|
+
if (!filePath)
|
|
24
|
+
return response.status(400).json({ error: 'Invalid docx path' });
|
|
25
|
+
try {
|
|
26
|
+
response.json({ version: await readVersion(filePath) });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
response.status(404).json({ error: 'File not found' });
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
router.put('/docx-document', express.raw({ type: () => true, limit: MAX_DOCX_BYTES }), async (request, response) => {
|
|
33
|
+
const filePath = resolveDocxPath(request);
|
|
34
|
+
if (!filePath || !Buffer.isBuffer(request.body) || request.body.length === 0) {
|
|
35
|
+
return response.status(400).json({ error: 'Invalid docx payload' });
|
|
36
|
+
}
|
|
37
|
+
const temporaryPath = `${filePath}.${randomUUID()}.tmp`;
|
|
38
|
+
try {
|
|
39
|
+
await writeFile(temporaryPath, request.body);
|
|
40
|
+
await rename(temporaryPath, filePath);
|
|
41
|
+
response.json({ version: await readVersion(filePath) });
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
await rm(temporaryPath, { force: true });
|
|
45
|
+
response.status(500).json({ error: error instanceof Error ? error.message : String(error) });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return router;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=docx-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-document.js","sourceRoot":"","sources":["../../../server/piecemaker/docx-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'module';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { providerRuntimeService, sessionsService } from '../modules/providers/index.js';
|
|
4
|
+
import { providerRegistry } from '../modules/providers/provider.registry.js';
|
|
4
5
|
import { findApplicationRoot, getModuleDirectory } from '../shared/utils.js';
|
|
5
6
|
import { startRequiredAnonymizer } from './anonymizer/lifecycle.js';
|
|
6
7
|
import { createCitationStore } from './harness/citation-store.js';
|
|
@@ -11,7 +12,10 @@ import { createKnowledgeBackend } from './knowledge/index.js';
|
|
|
11
12
|
import { createTimesheetBackend } from './timesheet/index.js';
|
|
12
13
|
import { createCompanySearchRouter } from './company-search.js';
|
|
13
14
|
import { createBodaccSearchRouter } from './bodacc-search.js';
|
|
15
|
+
import { createDocxDocumentRouter } from './docx-document.js';
|
|
14
16
|
import { createShellEnvironmentRouter, resolveDesktopShellEnvironment } from './shell-environment.js';
|
|
17
|
+
import { installModelDiscovery } from './model-discovery/index.js';
|
|
18
|
+
import { startProjectRegistry } from './project-registry.js';
|
|
15
19
|
/**
|
|
16
20
|
* Point d'entrée PieceMaker. Les modules de `server/piecemaker/vendor/` sont du
|
|
17
21
|
* CommonJS : `createRequire` les charge tels quels, sans les convertir ni les
|
|
@@ -26,20 +30,22 @@ const routerPath = path.join(applicationRoot, 'server', 'piecemaker', 'router.cj
|
|
|
26
30
|
const shellEnvironment = await resolveDesktopShellEnvironment();
|
|
27
31
|
const vendor = createRequire(import.meta.url)(routerPath);
|
|
28
32
|
export const { piecemakerHome, stopOriginalsJobs } = vendor;
|
|
33
|
+
const publishProjects = startProjectRegistry(vendor.publishProjectSource);
|
|
29
34
|
const { createAnonymizerService } = createRequire(import.meta.url)(path.join(applicationRoot, 'server/piecemaker/anonymizer/service.cjs'));
|
|
30
|
-
const anonymizer = createAnonymizerService({ homeDir: piecemakerHome()
|
|
35
|
+
const anonymizer = createAnonymizerService({ homeDir: piecemakerHome() });
|
|
31
36
|
const ensureProxy = await startRequiredAnonymizer(anonymizer);
|
|
32
37
|
const citations = createCitationStore(piecemakerHome());
|
|
33
38
|
installChatCitationHarness({ runtime: providerRuntimeService, sessions: sessionsService, store: citations, ensureProxy });
|
|
34
39
|
const library = await openLibrary(piecemakerHome(), applicationRoot);
|
|
35
40
|
installLibraryRuntime(providerRuntimeService, sessionsService, library.store);
|
|
41
|
+
installModelDiscovery(providerRegistry);
|
|
36
42
|
const timesheet = createTimesheetBackend(piecemakerHome());
|
|
37
43
|
const knowledge = createKnowledgeBackend(applicationRoot);
|
|
38
44
|
export function createPieceMakerLocalRouter() {
|
|
39
45
|
return knowledge.localRouter;
|
|
40
46
|
}
|
|
41
47
|
export function createPieceMakerRouter(options = {}) {
|
|
42
|
-
const router = vendor.createPieceMakerRouter({ ...options, anonymizer });
|
|
48
|
+
const router = vendor.createPieceMakerRouter({ ...options, anonymizer, publishProjects });
|
|
43
49
|
router.use(createCitationsRouter(citations, (id) => {
|
|
44
50
|
try {
|
|
45
51
|
sessionsService.getSessionDetailsById(id);
|
|
@@ -54,6 +60,7 @@ export function createPieceMakerRouter(options = {}) {
|
|
|
54
60
|
router.use(knowledge.router);
|
|
55
61
|
router.use(createCompanySearchRouter());
|
|
56
62
|
router.use(createBodaccSearchRouter());
|
|
63
|
+
router.use(createDocxDocumentRouter());
|
|
57
64
|
router.use(createShellEnvironmentRouter(shellEnvironment));
|
|
58
65
|
return router;
|
|
59
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/piecemaker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/piecemaker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,eAAe,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAepF,MAAM,gBAAgB,GAAG,MAAM,8BAA8B,EAAE,CAAC;AAChE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAA2B,CAAC;AAEpF,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;AAC5D,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC1E,MAAM,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC,CAAC;AAC3I,MAAM,UAAU,GAAG,uBAAuB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC1E,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC9D,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC;AACxD,0BAA0B,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1H,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;AACrE,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AACxC,MAAM,SAAS,GAAG,sBAAsB,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3D,MAAM,SAAS,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAE1D,MAAM,UAAU,2BAA2B;IACzC,OAAO,SAAS,CAAC,WAAW,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAgE,EAAE;IACvG,MAAM,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;QACjD,IAAI,CAAC;YAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IACzF,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { withStdioRpcServer } from './stdio-rpc.js';
|
|
3
|
+
const MAX_PAGES = 10;
|
|
4
|
+
function bundledCodexAppServer() {
|
|
5
|
+
const launcher = createRequire(import.meta.url).resolve('@openai/codex/bin/codex.js');
|
|
6
|
+
return { command: process.execPath, args: [launcher, 'app-server'] };
|
|
7
|
+
}
|
|
8
|
+
function toModelOption(listed) {
|
|
9
|
+
const efforts = listed.supportedReasoningEfforts ?? [];
|
|
10
|
+
return {
|
|
11
|
+
value: listed.model,
|
|
12
|
+
label: listed.displayName || listed.model,
|
|
13
|
+
...(listed.description ? { description: listed.description } : {}),
|
|
14
|
+
...(efforts.length > 0 ? {
|
|
15
|
+
effort: {
|
|
16
|
+
...(listed.defaultReasoningEffort ? { default: listed.defaultReasoningEffort } : {}),
|
|
17
|
+
values: efforts.map(({ reasoningEffort, description }) => ({
|
|
18
|
+
value: reasoningEffort,
|
|
19
|
+
...(description ? { description } : {}),
|
|
20
|
+
})),
|
|
21
|
+
},
|
|
22
|
+
} : {}),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export async function listCodexModels(call) {
|
|
26
|
+
const listed = [];
|
|
27
|
+
let cursor = null;
|
|
28
|
+
for (let page = 0; page < MAX_PAGES; page += 1) {
|
|
29
|
+
const result = await call('model/list', { cursor, includeHidden: false });
|
|
30
|
+
listed.push(...(result.data ?? []));
|
|
31
|
+
cursor = result.nextCursor ?? null;
|
|
32
|
+
if (!cursor)
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
const visible = listed.filter((model) => model.model && !model.hidden);
|
|
36
|
+
if (visible.length === 0)
|
|
37
|
+
throw new Error('codex app-server listed no models');
|
|
38
|
+
return {
|
|
39
|
+
OPTIONS: visible.map(toModelOption),
|
|
40
|
+
DEFAULT: (visible.find((model) => model.isDefault) ?? visible[0]).model,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function discoverCodexModels(timeoutMs) {
|
|
44
|
+
return withStdioRpcServer(bundledCodexAppServer(), listCodexModels, timeoutMs);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=codex-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-catalog.js","sourceRoot":"","sources":["../../../../server/piecemaker/model-discovery/codex-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAE,kBAAkB,EAAqC,MAAM,gBAAgB,CAAC;AAiBvF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,SAAS,qBAAqB;IAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,MAAwB;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,yBAAyB,IAAI,EAAE,CAAC;IACvD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK;QACzC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE;gBACN,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;oBACzD,KAAK,EAAE,eAAe;oBACtB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,CAAC,CAAC;aACJ;SACF,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAa;IACjD,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAuB,CAAC;QAChG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,MAAM;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/E,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACnC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,kBAAkB,CAAC,qBAAqB,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { discoverCodexModels } from './codex-catalog.js';
|
|
2
|
+
import { discoverMistralModels } from './mistral-catalog.js';
|
|
3
|
+
const DEFAULT_DISCOVERERS = {
|
|
4
|
+
codex: discoverCodexModels,
|
|
5
|
+
mistral: discoverMistralModels,
|
|
6
|
+
};
|
|
7
|
+
export function installModelDiscovery(registry, options = {}) {
|
|
8
|
+
const { discoverers = DEFAULT_DISCOVERERS, refreshAfterMs = 10 * 60_000, retryAfterMs = 60_000, timeoutMs = 20_000, now = Date.now, warn = (message) => console.warn(message), } = options;
|
|
9
|
+
for (const [provider, discover] of Object.entries(discoverers)) {
|
|
10
|
+
const models = registry.resolveProvider(provider).models;
|
|
11
|
+
const curated = models.getSupportedModels.bind(models);
|
|
12
|
+
let lastDiscovered = null;
|
|
13
|
+
let served = null;
|
|
14
|
+
let expiresAt = 0;
|
|
15
|
+
let refreshing = null;
|
|
16
|
+
const refresh = () => {
|
|
17
|
+
refreshing ??= (async () => {
|
|
18
|
+
try {
|
|
19
|
+
lastDiscovered = await discover(timeoutMs);
|
|
20
|
+
served = lastDiscovered;
|
|
21
|
+
expiresAt = now() + refreshAfterMs;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
warn(`[PieceMaker] ${provider} model discovery failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
25
|
+
served = lastDiscovered ?? await curated();
|
|
26
|
+
expiresAt = now() + retryAfterMs;
|
|
27
|
+
}
|
|
28
|
+
return served;
|
|
29
|
+
})().finally(() => { refreshing = null; });
|
|
30
|
+
return refreshing;
|
|
31
|
+
};
|
|
32
|
+
models.getSupportedModels = async () => {
|
|
33
|
+
if (!served)
|
|
34
|
+
return refresh();
|
|
35
|
+
if (now() >= expiresAt)
|
|
36
|
+
void refresh();
|
|
37
|
+
return served;
|
|
38
|
+
};
|
|
39
|
+
void models.getSupportedModels();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/piecemaker/model-discovery/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAiB7D,MAAM,mBAAmB,GAA6B;IACpD,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,qBAAqB;CAC/B,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,QAAwB,EAAE,UAAiC,EAAE;IACjG,MAAM,EACJ,WAAW,GAAG,mBAAmB,EACjC,cAAc,GAAG,EAAE,GAAG,MAAM,EAC5B,YAAY,GAAG,MAAM,EACrB,SAAS,GAAG,MAAM,EAClB,GAAG,GAAG,IAAI,CAAC,GAAG,EACd,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAC1C,GAAG,OAAO,CAAC;IAEZ,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,cAAc,GAAoC,IAAI,CAAC;QAC3D,IAAI,MAAM,GAAoC,IAAI,CAAC;QACnD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAA6C,IAAI,CAAC;QAEhE,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,UAAU,KAAK,CAAC,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACH,cAAc,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC3C,MAAM,GAAG,cAAc,CAAC;oBACxB,SAAS,GAAG,GAAG,EAAE,GAAG,cAAc,CAAC;gBACrC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,gBAAgB,QAAQ,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACnH,MAAM,GAAG,cAAc,IAAI,MAAM,OAAO,EAAE,CAAC;oBAC3C,SAAS,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC;gBACnC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,CAAC,kBAAkB,GAAG,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,EAAE,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,SAAS;gBAAE,KAAK,OAAO,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,KAAK,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { buildVibeModelsEnvironment, vibeModelOption } from '../../modules/providers/list/mistral/mistral-vibe-models.js';
|
|
2
|
+
import { withStdioRpcServer } from './stdio-rpc.js';
|
|
3
|
+
export async function listVibeModels(call) {
|
|
4
|
+
const { config } = await call('config/read', {});
|
|
5
|
+
const models = (config?.models ?? []).filter((model) => model.alias);
|
|
6
|
+
if (models.length === 0)
|
|
7
|
+
throw new Error('vibe-app-server listed no models');
|
|
8
|
+
const aliases = new Set(models.map((model) => model.alias));
|
|
9
|
+
const preferred = [config?.activeModel?.alias, config?.defaultModelAlias].find((alias) => alias && aliases.has(alias));
|
|
10
|
+
return {
|
|
11
|
+
OPTIONS: models.map((model) => vibeModelOption(model.alias, model.displayName || model.alias, model.name)),
|
|
12
|
+
DEFAULT: preferred ?? models[0].alias,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function discoverMistralModels(timeoutMs) {
|
|
16
|
+
const env = { ...process.env, VIBE_MODELS: buildVibeModelsEnvironment() };
|
|
17
|
+
return withStdioRpcServer({ command: 'vibe-app-server', args: [], env }, listVibeModels, timeoutMs);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=mistral-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mistral-catalog.js","sourceRoot":"","sources":["../../../../server/piecemaker/model-discovery/mistral-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAGtH,OAAO,EAAE,kBAAkB,EAAgB,MAAM,gBAAgB,CAAC;AAgBlE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAa;IAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,CAAmB,CAAC;IACnE,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvH,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1G,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,0BAA0B,EAAE,EAAE,CAAC;IAC1E,OAAO,kBAAkB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import readline from 'node:readline';
|
|
2
|
+
import crossSpawn from 'cross-spawn';
|
|
3
|
+
const CLIENT_INFO = { name: 'piecemaker', title: 'PieceMaker', version: '1' };
|
|
4
|
+
export async function withStdioRpcServer(server, exchange, timeoutMs) {
|
|
5
|
+
const child = crossSpawn(server.command, server.args, { env: server.env ?? process.env, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
6
|
+
const pending = new Map();
|
|
7
|
+
let nextId = 1;
|
|
8
|
+
let stderr = '';
|
|
9
|
+
const failAll = (reason) => {
|
|
10
|
+
for (const settle of pending.values())
|
|
11
|
+
settle({ error: { message: reason } });
|
|
12
|
+
pending.clear();
|
|
13
|
+
};
|
|
14
|
+
child.stderr?.on('data', (chunk) => { stderr = (stderr + String(chunk)).slice(-1000); });
|
|
15
|
+
child.on('error', (error) => failAll(error.message));
|
|
16
|
+
child.on('exit', (code) => failAll(`${server.command} exited (code ${code ?? 'null'}) ${stderr.trim().split('\n').pop() ?? ''}`.trim()));
|
|
17
|
+
child.stdin?.on('error', (error) => failAll(error.message));
|
|
18
|
+
child.stdout?.on('error', (error) => failAll(error.message));
|
|
19
|
+
child.stderr?.on('error', () => { });
|
|
20
|
+
const reader = readline.createInterface({ input: child.stdout });
|
|
21
|
+
reader.on('line', (line) => {
|
|
22
|
+
let reply;
|
|
23
|
+
try {
|
|
24
|
+
reply = JSON.parse(line);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (typeof reply.id !== 'number')
|
|
30
|
+
return;
|
|
31
|
+
pending.get(reply.id)?.(reply);
|
|
32
|
+
pending.delete(reply.id);
|
|
33
|
+
});
|
|
34
|
+
const call = (method, params) => new Promise((resolve, reject) => {
|
|
35
|
+
const id = nextId++;
|
|
36
|
+
pending.set(id, (reply) => (reply.error
|
|
37
|
+
? reject(new Error(reply.error.message || `${server.command} rejected ${method}`))
|
|
38
|
+
: resolve(reply.result)));
|
|
39
|
+
child.stdin?.write(`${JSON.stringify({ jsonrpc: '2.0', id, method, params })}\n`);
|
|
40
|
+
});
|
|
41
|
+
let timer;
|
|
42
|
+
const deadline = new Promise((_, reject) => {
|
|
43
|
+
timer = setTimeout(() => reject(new Error(`${server.command} did not answer within ${timeoutMs} ms`)), timeoutMs);
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
return await Promise.race([
|
|
47
|
+
(async () => {
|
|
48
|
+
await call('initialize', { clientInfo: CLIENT_INFO, capabilities: {} });
|
|
49
|
+
child.stdin?.write(`${JSON.stringify({ jsonrpc: '2.0', method: 'initialized', params: {} })}\n`);
|
|
50
|
+
return exchange(call);
|
|
51
|
+
})(),
|
|
52
|
+
deadline,
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
reader.close();
|
|
58
|
+
child.kill();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=stdio-rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-rpc.js","sourceRoot":"","sources":["../../../../server/piecemaker/model-discovery/stdio-rpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { projectsDb } from '../modules/database/index.js';
|
|
3
|
+
const PUBLISH_INTERVAL_MS = 5000;
|
|
4
|
+
export function startProjectRegistry(publishProjectSource) {
|
|
5
|
+
const sourceId = `database:${path.resolve(process.env.DATABASE_PATH || 'auth.db')}`;
|
|
6
|
+
let publishedSignature = null;
|
|
7
|
+
const publishProjects = () => {
|
|
8
|
+
const folders = [...projectsDb.getProjectPaths(), ...projectsDb.getArchivedProjectPaths()]
|
|
9
|
+
.map((row) => row.project_path)
|
|
10
|
+
.sort();
|
|
11
|
+
const signature = folders.join('\n');
|
|
12
|
+
if (signature === publishedSignature)
|
|
13
|
+
return;
|
|
14
|
+
publishProjectSource(sourceId, folders);
|
|
15
|
+
publishedSignature = signature;
|
|
16
|
+
};
|
|
17
|
+
const publishProjectsSafely = () => {
|
|
18
|
+
try {
|
|
19
|
+
publishProjects();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error('[PieceMaker] Publication des projets impossible :', error);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
publishProjectsSafely();
|
|
26
|
+
setInterval(publishProjectsSafely, PUBLISH_INTERVAL_MS).unref();
|
|
27
|
+
return publishProjectsSafely;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=project-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-registry.js","sourceRoot":"","sources":["../../../server/piecemaker/project-registry.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAIjC,MAAM,UAAU,oBAAoB,CAAC,oBAA0C;IAC7E,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,EAAE,CAAC;IACpF,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAE7C,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,eAAe,EAAE,EAAE,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;aACvF,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;aAC9B,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,SAAS,KAAK,kBAAkB;YAAE,OAAO;QAC7C,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,kBAAkB,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,IAAI,CAAC;YACH,eAAe,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC;IAEF,qBAAqB,EAAE,CAAC;IACxB,WAAW,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,OAAO,qBAAqB,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piecemaker-legal/piecemaker",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.10",
|
|
4
4
|
"productName": "PieceMaker",
|
|
5
5
|
"description": "Plateforme IA pour juristes français",
|
|
6
6
|
"type": "module",
|
|
@@ -159,6 +159,8 @@
|
|
|
159
159
|
"@codemirror/lang-python": "^6.2.1",
|
|
160
160
|
"@codemirror/merge": "^6.11.1",
|
|
161
161
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
162
|
+
"@eigenpal/docx-editor-i18n": "^1.9.0",
|
|
163
|
+
"@eigenpal/docx-editor-react": "^1.9.0",
|
|
162
164
|
"@iarna/toml": "^2.2.5",
|
|
163
165
|
"@octokit/rest": "^22.0.0",
|
|
164
166
|
"@openai/codex": "0.153.4",
|
|
@@ -196,6 +198,15 @@
|
|
|
196
198
|
"node-fetch": "^2.7.0",
|
|
197
199
|
"node-pty": "^1.2.0-beta.12",
|
|
198
200
|
"pdf-lib": "^1.17.1",
|
|
201
|
+
"prosemirror-commands": "^1.7.2",
|
|
202
|
+
"prosemirror-dropcursor": "^1.8.4",
|
|
203
|
+
"prosemirror-history": "^1.5.0",
|
|
204
|
+
"prosemirror-keymap": "^1.2.3",
|
|
205
|
+
"prosemirror-model": "^1.25.12",
|
|
206
|
+
"prosemirror-state": "^1.4.4",
|
|
207
|
+
"prosemirror-tables": "^1.8.5",
|
|
208
|
+
"prosemirror-transform": "^1.12.2",
|
|
209
|
+
"prosemirror-view": "^1.42.6",
|
|
199
210
|
"react": "^18.2.0",
|
|
200
211
|
"react-dom": "^18.2.0",
|
|
201
212
|
"react-dropzone": "^14.2.3",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
import { removeLegacyProxyConfig } from '../../../server/piecemaker/anonymizer/client-config.cjs';
|
|
6
|
+
|
|
7
|
+
const userHome = os.homedir();
|
|
8
|
+
const homeDir = path.join(userHome, '.piecemaker');
|
|
9
|
+
const configFile = path.join(homeDir, 'config.json');
|
|
10
|
+
const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
11
|
+
if (!config || typeof config !== 'object' || Array.isArray(config)) throw new Error('Configuration PieceMaker invalide');
|
|
12
|
+
|
|
13
|
+
const next = { ...config, anonymizer: { ...config.anonymizer, enabled: false } };
|
|
14
|
+
const temporary = `${configFile}.piecemaker-${process.pid}-${Date.now()}`;
|
|
15
|
+
fs.writeFileSync(temporary, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
|
|
16
|
+
fs.renameSync(temporary, configFile);
|
|
17
|
+
|
|
18
|
+
removeLegacyProxyConfig({ userHome, homeDir });
|
|
19
|
+
process.stdout.write('Proxy PII PieceMaker désactivé.\n');
|
|
@@ -25,7 +25,6 @@ export const INSTALLER_ENTRY = path.join(APP.directory, 'server', 'piecemaker',
|
|
|
25
25
|
export const PORTS = {
|
|
26
26
|
appServer: numberFromEnv('PIECEMAKER_APP_PORT', 3003),
|
|
27
27
|
appClient: numberFromEnv('PIECEMAKER_VITE_PORT', 5173),
|
|
28
|
-
anonymizer: numberFromEnv('PIECEMAKER_PII_PORT', 4111),
|
|
29
28
|
};
|
|
30
29
|
|
|
31
30
|
export const APP_URL = `http://localhost:${PORTS.appClient}`;
|
|
@@ -33,15 +33,6 @@ export function appClientReachable() {
|
|
|
33
33
|
return httpReachable(`http://127.0.0.1:${PORTS.appClient}/`);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
function anonymizerPort() {
|
|
37
|
-
try {
|
|
38
|
-
const port = Number.parseInt(JSON.parse(fs.readFileSync(path.join(PIECEMAKER_HOME, 'config.json'), 'utf8')).mikePiiPort, 10);
|
|
39
|
-
if (Number.isInteger(port) && port > 0) return port;
|
|
40
|
-
} catch {
|
|
41
|
-
}
|
|
42
|
-
return PORTS.anonymizer;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
36
|
function stopPid(pid) {
|
|
46
37
|
if (!Number.isInteger(pid) || pid <= 0 || pid === process.pid) return false;
|
|
47
38
|
if (process.platform === 'win32') {
|
|
@@ -61,7 +52,7 @@ export async function stopApplication() {
|
|
|
61
52
|
} catch {
|
|
62
53
|
}
|
|
63
54
|
|
|
64
|
-
for (const port of [PORTS.appClient, PORTS.appServer
|
|
55
|
+
for (const port of [PORTS.appClient, PORTS.appServer]) {
|
|
65
56
|
const result = await freePort(port);
|
|
66
57
|
killed.push(...result.killed);
|
|
67
58
|
if (!result.released) occupied.push(port);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import { installPiecemakerCommand, piecemakerExecutable } from './install-command.mjs';
|
|
4
4
|
import { APP, APP_URL, PORTS } from './lib/config.mjs';
|
|
5
|
-
import { repairClientProxies } from './lib/piecemaker-anonymizer.mjs';
|
|
6
5
|
import { installComponents } from './lib/composants.mjs';
|
|
7
6
|
import { installPlugins } from './lib/plugins.mjs';
|
|
8
7
|
import { gitAvailable, resolveNodeRuntime } from './lib/node-runtime.mjs';
|
|
@@ -130,8 +129,6 @@ async function main() {
|
|
|
130
129
|
if (command.shims.length) ok(`installée : ${command.executable}`);
|
|
131
130
|
else warn('commande absente du PATH — relancez node scripts/piecemaker/cli/install-command.mjs');
|
|
132
131
|
|
|
133
|
-
await repairClientProxies({ appDir: APP.directory, report });
|
|
134
|
-
|
|
135
132
|
if (!options.launchOnly || !(await applicationIsRunning())) {
|
|
136
133
|
const running = await resetAndLaunch(runtime);
|
|
137
134
|
if (!running) return 1;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VIBE_MODEL_PRESETS, vibeModelOption } from '@/modules/providers/list/mistral/mistral-vibe-models.js';
|
|
1
2
|
import type { IProviderModels } from '@/shared/interfaces.js';
|
|
2
3
|
import type {
|
|
3
4
|
ProviderCurrentActiveModel,
|
|
@@ -8,60 +9,10 @@ import { buildDefaultProviderCurrentActiveModel } from '@/shared/utils.js';
|
|
|
8
9
|
/** Curated Mistral catalog shipped as immutable CloudCLI defaults. */
|
|
9
10
|
export const MISTRAL_PREDEFINED_MODELS: ProviderModelsDefinition = {
|
|
10
11
|
OPTIONS: [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
label: 'Mistral Large',
|
|
14
|
-
description: 'Most powerful Mistral model for complex reasoning and advanced tasks.',
|
|
15
|
-
effort: {
|
|
16
|
-
default: 'medium',
|
|
17
|
-
values: [
|
|
18
|
-
{ value: 'low' },
|
|
19
|
-
{ value: 'medium' },
|
|
20
|
-
{ value: 'high' },
|
|
21
|
-
],
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
value: 'mistral-medium-latest',
|
|
26
|
-
label: 'Mistral Medium',
|
|
27
|
-
description: 'Balanced model for everyday tasks and coding.',
|
|
28
|
-
effort: {
|
|
29
|
-
default: 'medium',
|
|
30
|
-
values: [
|
|
31
|
-
{ value: 'low' },
|
|
32
|
-
{ value: 'medium' },
|
|
33
|
-
{ value: 'high' },
|
|
34
|
-
],
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
value: 'mistral-small-latest',
|
|
39
|
-
label: 'Mistral Small',
|
|
40
|
-
description: 'Fast and efficient model for simpler tasks.',
|
|
41
|
-
effort: {
|
|
42
|
-
default: 'medium',
|
|
43
|
-
values: [
|
|
44
|
-
{ value: 'low' },
|
|
45
|
-
{ value: 'medium' },
|
|
46
|
-
{ value: 'high' },
|
|
47
|
-
],
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
value: 'codestral-latest',
|
|
52
|
-
label: 'Codestral',
|
|
53
|
-
description: 'Mistral model specialized for coding and development tasks.',
|
|
54
|
-
effort: {
|
|
55
|
-
default: 'medium',
|
|
56
|
-
values: [
|
|
57
|
-
{ value: 'low' },
|
|
58
|
-
{ value: 'medium' },
|
|
59
|
-
{ value: 'high' },
|
|
60
|
-
],
|
|
61
|
-
},
|
|
62
|
-
},
|
|
12
|
+
...VIBE_MODEL_PRESETS.map((preset) => vibeModelOption(preset.alias, preset.display_name, preset.name)),
|
|
13
|
+
vibeModelOption('local', 'Devstral (local)', 'devstral'),
|
|
63
14
|
],
|
|
64
|
-
DEFAULT: 'mistral-
|
|
15
|
+
DEFAULT: 'mistral-medium-3.5',
|
|
65
16
|
};
|
|
66
17
|
|
|
67
18
|
/** Provider registry model adapter for Mistral predefined models. */
|