@piecemaker-legal/piecemaker 1.1.0 → 2.0.1

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.
Files changed (144) hide show
  1. package/dist/assets/{abnfDiagram-VCTEODGH-C-dTfD4s.js → abnfDiagram-VCTEODGH-C2JDmlZx.js} +1 -1
  2. package/dist/assets/{arc-BwDrelvt.js → arc-XhSg5Mrj.js} +1 -1
  3. package/dist/assets/{architectureDiagram-5GKGNRK7-CuViaxCV.js → architectureDiagram-5GKGNRK7-DKREuXxk.js} +1 -1
  4. package/dist/assets/{blockDiagram-I7D4REHJ-CODUNfgC.js → blockDiagram-I7D4REHJ-CNK0Tp5d.js} +1 -1
  5. package/dist/assets/{c4Diagram-7LVT6UL2-CiQtyYDd.js → c4Diagram-7LVT6UL2-C8fJzWVp.js} +1 -1
  6. package/dist/assets/channel-DO5hoFdU.js +1 -0
  7. package/dist/assets/{chunk-2Q5K7J3B-DZjjPgAs.js → chunk-2Q5K7J3B-DlE8nLJo.js} +1 -1
  8. package/dist/assets/{chunk-5VM5RSS4-C-SPnj5I.js → chunk-5VM5RSS4-CSm-2TZ4.js} +1 -1
  9. package/dist/assets/{chunk-F27PBJKO-D5b0-fye.js → chunk-F27PBJKO-CSgnXT2c.js} +1 -1
  10. package/dist/assets/{chunk-IMKFNOWR-CWflUKd3.js → chunk-IMKFNOWR-C6bkt6C1.js} +1 -1
  11. package/dist/assets/{chunk-JWPE2WC7-DFltof8Z.js → chunk-JWPE2WC7-jUR52MBO.js} +1 -1
  12. package/dist/assets/{chunk-POPQ4Y6H-moIw94hw.js → chunk-POPQ4Y6H-D0UAL7O7.js} +1 -1
  13. package/dist/assets/{chunk-SVP7TREG--H3pige-.js → chunk-SVP7TREG-C9dtOEii.js} +1 -1
  14. package/dist/assets/{chunk-TICWLB2K-BfujErBt.js → chunk-TICWLB2K-BEzWKT39.js} +1 -1
  15. package/dist/assets/{chunk-XXDRQBXY-C5jFgw8p.js → chunk-XXDRQBXY-uD1oklVY.js} +1 -1
  16. package/dist/assets/classDiagram-ZZMXUADV-BsQtwznI.js +1 -0
  17. package/dist/assets/classDiagram-v2-VYDZK3BY-BsQtwznI.js +1 -0
  18. package/dist/assets/{cose-bilkent-JH36ORCC-CsT3oVRI.js → cose-bilkent-JH36ORCC-aGjlSdMe.js} +1 -1
  19. package/dist/assets/{cynefin-OW5HDTMX-gdpEHNLr.js → cynefin-OW5HDTMX-D3G4OYOn.js} +1 -1
  20. package/dist/assets/{cynefinDiagram-5FMLGOSQ-v-JmI3Zj.js → cynefinDiagram-5FMLGOSQ-9swRDUnu.js} +1 -1
  21. package/dist/assets/{dagre-GXQ25YYZ-BvJ_SGF3.js → dagre-GXQ25YYZ-lvaAGdqY.js} +1 -1
  22. package/dist/assets/{diagram-S7CK7UJ4-B7EHfyrx.js → diagram-S7CK7UJ4-BaZ6YIkR.js} +1 -1
  23. package/dist/assets/{diagram-UQ7AKVKN-DX5RvUaF.js → diagram-UQ7AKVKN-COJ2Gb38.js} +1 -1
  24. package/dist/assets/{diagram-VSXAHHWV-D_PJ-E3G.js → diagram-VSXAHHWV-CYZEkbzP.js} +1 -1
  25. package/dist/assets/{diagram-VX7I27RA-CAtayL03.js → diagram-VX7I27RA-fFeQJ4ae.js} +1 -1
  26. package/dist/assets/{diagram-Z3DM3KII-BhCCqDLU.js → diagram-Z3DM3KII-B7knszDV.js} +1 -1
  27. package/dist/assets/{ebnfDiagram-PWID7BFC-BCb926kC.js → ebnfDiagram-PWID7BFC-Dk0l329Y.js} +1 -1
  28. package/dist/assets/{erDiagram-RLTQ6QDP-5Fw1sblj.js → erDiagram-RLTQ6QDP-CtpYxui8.js} +1 -1
  29. package/dist/assets/{flowDiagram-HODETNUW-DDUdOLnK.js → flowDiagram-HODETNUW-aVWueRJD.js} +1 -1
  30. package/dist/assets/{ganttDiagram-EL5Y4UJY-B4IG1idB.js → ganttDiagram-EL5Y4UJY-DfrX-B7p.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-WWUBYQGX-S6wvUCsC.js → gitGraphDiagram-WWUBYQGX-BFB1ZPF3.js} +1 -1
  32. package/dist/assets/{index-CcC0QCGH.js → index-DqRygn9E.js} +170 -169
  33. package/dist/assets/index-Ds4HaAjz.css +1 -0
  34. package/dist/assets/{infoDiagram-27XIBGKW-BNv6fEro.js → infoDiagram-27XIBGKW-CuYkzm43.js} +1 -1
  35. package/dist/assets/{ishikawaDiagram-5VMMS53U-BJZwt-TZ.js → ishikawaDiagram-5VMMS53U-EMiw8Akh.js} +1 -1
  36. package/dist/assets/{journeyDiagram-3NMN7TZE-BAGhL9Uv.js → journeyDiagram-3NMN7TZE-DCoLV1f8.js} +1 -1
  37. package/dist/assets/{kanban-definition-UXKFOSKX-DmoLE6ku.js → kanban-definition-UXKFOSKX-CyA4Yinu.js} +1 -1
  38. package/dist/assets/{layout-ALipSwVQ.js → layout-BlaB0grA.js} +1 -1
  39. package/dist/assets/{linear-BJkOgP0g.js → linear-DLX3dJDH.js} +1 -1
  40. package/dist/assets/{mermaid.core-C20iPvcV.js → mermaid.core-Cy51CT89.js} +6 -6
  41. package/dist/assets/{mindmap-definition-YA3MSWOX-CSI558Pw.js → mindmap-definition-YA3MSWOX-OBXjfL7I.js} +1 -1
  42. package/dist/assets/{pegDiagram-XKGWAZYB-DFtdseIb.js → pegDiagram-XKGWAZYB-C_BJjUh1.js} +1 -1
  43. package/dist/assets/{pieDiagram-E7YTZNPT-ByPKZBBy.js → pieDiagram-E7YTZNPT-jIpbr3Fi.js} +1 -1
  44. package/dist/assets/{quadrantDiagram-AXDQQJYC-tH7z7eR2.js → quadrantDiagram-AXDQQJYC-C1A15xI5.js} +1 -1
  45. package/dist/assets/{railroadDiagram-O6MQD6OU-D7ZdvS0P.js → railroadDiagram-O6MQD6OU-Rslzn1pI.js} +1 -1
  46. package/dist/assets/{requirementDiagram-BXWQKSXE-nSTqp6wv.js → requirementDiagram-BXWQKSXE-LlfURO5-.js} +1 -1
  47. package/dist/assets/{sankeyDiagram-P5KCCOFB-Bg3ivRCq.js → sankeyDiagram-P5KCCOFB-B5BPF4-O.js} +1 -1
  48. package/dist/assets/{sequenceDiagram-WJ2MYXX4-BFs4BVKR.js → sequenceDiagram-WJ2MYXX4-orYZe9zX.js} +1 -1
  49. package/dist/assets/{sizeCapture-INFHLROL-DuSN3zyt.js → sizeCapture-INFHLROL-Co-K5Cfb.js} +1 -1
  50. package/dist/assets/{stateDiagram-D77RDMKH---hK4wFR.js → stateDiagram-D77RDMKH-COEx1aH2.js} +1 -1
  51. package/dist/assets/{stateDiagram-v2-MP3YSRHH-DxBEemHS.js → stateDiagram-v2-MP3YSRHH-DaeTZvmy.js} +1 -1
  52. package/dist/assets/{swimlanes-42K2YHIH-C6RXO1Rv.js → swimlanes-42K2YHIH-BHQaDhfZ.js} +1 -1
  53. package/dist/assets/swimlanesDiagram-VR7AAH4N-BHW8q5M5.js +8 -0
  54. package/dist/assets/{timeline-definition-24CTP7MA-Ci0Toxgn.js → timeline-definition-24CTP7MA-COqCRwGX.js} +1 -1
  55. package/dist/assets/{vennDiagram-4TSXK5OY-CKF_VmKX.js → vennDiagram-4TSXK5OY-nym5XSnr.js} +1 -1
  56. package/dist/assets/{wardleyDiagram-VM6X3IG4-Xao4cR_d.js → wardleyDiagram-VM6X3IG4-DEPPey_W.js} +1 -1
  57. package/dist/assets/{xychartDiagram-S5SC5T6Z-BAZUt04h.js → xychartDiagram-S5SC5T6Z-uSJ404kL.js} +1 -1
  58. package/dist/index.html +2 -2
  59. package/dist/sw.js +1 -1
  60. package/dist-server/server/index.js +3 -1
  61. package/dist-server/server/index.js.map +1 -1
  62. package/dist-server/server/modules/cli/desktop-shortcut.js +80 -0
  63. package/dist-server/server/modules/cli/desktop-shortcut.js.map +1 -0
  64. package/dist-server/server/modules/cli/pwa-launcher.js +27 -4
  65. package/dist-server/server/modules/cli/pwa-launcher.js.map +1 -1
  66. package/dist-server/server/piecemaker/index.js +7 -3
  67. package/dist-server/server/piecemaker/index.js.map +1 -1
  68. package/dist-server/server/piecemaker/knowledge/index.js +13 -6
  69. package/dist-server/server/piecemaker/knowledge/index.js.map +1 -1
  70. package/dist-server/server/piecemaker/knowledge/local-routes.js +55 -0
  71. package/dist-server/server/piecemaker/knowledge/local-routes.js.map +1 -0
  72. package/dist-server/server/piecemaker/knowledge/scan-jobs.js +3 -1
  73. package/dist-server/server/piecemaker/knowledge/scan-jobs.js.map +1 -1
  74. package/dist-server/server/piecemaker/library/index.js +14 -41
  75. package/dist-server/server/piecemaker/library/index.js.map +1 -1
  76. package/dist-server/server/piecemaker/library/store.js +11 -3
  77. package/dist-server/server/piecemaker/library/store.js.map +1 -1
  78. package/dist-server/server/piecemaker/library/workspace-installation.js +26 -3
  79. package/dist-server/server/piecemaker/library/workspace-installation.js.map +1 -1
  80. package/dist-server/server/piecemaker/timesheet/service.js +8 -7
  81. package/dist-server/server/piecemaker/timesheet/service.js.map +1 -1
  82. package/dist-server/server/piecemaker/timesheet/store.js +5 -3
  83. package/dist-server/server/piecemaker/timesheet/store.js.map +1 -1
  84. package/package.json +1 -1
  85. package/product.config.json +3 -0
  86. package/scripts/piecemaker/build-app-icon.py +88 -0
  87. package/scripts/piecemaker/cli/lib/app-window.mjs +47 -0
  88. package/scripts/piecemaker/cli/lib/piecemaker-anonymizer.mjs +2 -2
  89. package/scripts/piecemaker/cli/lib/pwa.mjs +10 -13
  90. package/scripts/piecemaker/cli/piecemaker.mjs +15 -1
  91. package/scripts/piecemaker/hooks/proxy-guard.mjs +19 -54
  92. package/scripts/release/assert-piecemaker-version.mjs +25 -0
  93. package/server/index.ts +4 -1
  94. package/server/modules/cli/desktop-shortcut.ts +89 -0
  95. package/server/modules/cli/pwa-launcher.ts +29 -4
  96. package/server/piecemaker/anonymizer/client-config.cjs +45 -162
  97. package/server/piecemaker/anonymizer/hudsucker-fixture.cjs +127 -0
  98. package/server/piecemaker/anonymizer/hudsucker-proxy/Cargo.lock +2396 -0
  99. package/server/piecemaker/anonymizer/hudsucker-proxy/Cargo.toml +14 -0
  100. package/server/piecemaker/anonymizer/hudsucker-proxy/src/main.rs +501 -0
  101. package/server/piecemaker/anonymizer/providers.cjs +14 -135
  102. package/server/piecemaker/anonymizer/rewriter-bridge.cjs +221 -0
  103. package/server/piecemaker/anonymizer/service.cjs +144 -28
  104. package/server/piecemaker/index.ts +8 -3
  105. package/server/piecemaker/knowledge/index.ts +14 -6
  106. package/server/piecemaker/knowledge/local-routes.ts +72 -0
  107. package/server/piecemaker/knowledge/scan-jobs.ts +4 -1
  108. package/server/piecemaker/library/index.ts +14 -34
  109. package/server/piecemaker/library/store.ts +11 -3
  110. package/server/piecemaker/library/workspace-installation.ts +20 -3
  111. package/server/piecemaker/timesheet/service.ts +9 -7
  112. package/server/piecemaker/timesheet/store.ts +5 -3
  113. package/server/piecemaker/vendor/installer/assets/claude-hooks/piecemaker-guard-secrets.mjs +0 -1
  114. package/server/piecemaker/vendor/installer/assets/piecemaker.icns +0 -0
  115. package/server/piecemaker/vendor/installer/assets/piecemaker.ico +0 -0
  116. package/server/piecemaker/vendor/installer/bin/piecemaker.mjs +56 -206
  117. package/server/piecemaker/vendor/installer/lib/commandes.mjs +2 -4
  118. package/server/piecemaker/vendor/installer/lib/conversion-client.mjs +74 -0
  119. package/server/piecemaker/vendor/installer/lib/service.mjs +4 -358
  120. package/server/piecemaker/vendor/installer/lib/state.mjs +0 -6
  121. package/server/piecemaker/vendor/installer/steps/03-python-gliner.mjs +4 -4
  122. package/server/piecemaker/vendor/installer/steps/09-claude-assets.mjs +0 -31
  123. package/server/piecemaker/vendor/piecemaker-plugin/scripts/statusline.mjs +3 -4
  124. package/server/piecemaker/vendor/websocket-server/admin-routes.cjs +1 -49
  125. package/server/piecemaker/vendor/websocket-server/claude-hooks.cjs +14 -12
  126. package/server/piecemaker/vendor/websocket-server/originals-pipeline.cjs +17 -476
  127. package/server/piecemaker/vendor/websocket-server/scripts/convert_and_scan_pipeline.py +2 -2
  128. package/server/piecemaker/vendor/websocket-server/scripts/mineru_improved_1.py +11 -2
  129. package/server/piecemaker/vendor/websocket-server/scripts/presidio-gliner/scanner_worker.py +13 -37
  130. package/server/piecemaker/vendor/websocket-server/scripts/requirements.txt +1 -7
  131. package/server/piecemaker/vendor/websocket-server/scripts/warmup.py +14 -85
  132. package/dist/assets/channel-DIjrikYC.js +0 -1
  133. package/dist/assets/classDiagram-ZZMXUADV-Yagpznfi.js +0 -1
  134. package/dist/assets/classDiagram-v2-VYDZK3BY-Yagpznfi.js +0 -1
  135. package/dist/assets/index-D_Dc_nQv.css +0 -1
  136. package/dist/assets/swimlanesDiagram-VR7AAH4N-BC3fwmoQ.js +0 -8
  137. package/server/piecemaker/anonymizer/proxy.cjs +0 -365
  138. package/server/piecemaker/vendor/installer/assets/PieceMakerApp.swift +0 -189
  139. package/server/piecemaker/vendor/installer/lib/desktop-launcher.mjs +0 -305
  140. package/server/piecemaker/vendor/installer/steps/05-certificats.mjs +0 -171
  141. package/server/piecemaker/vendor/installer/steps/14-mxc-sandbox.mjs +0 -271
  142. package/server/piecemaker/vendor/installer/steps/15-pwa-desktop.mjs +0 -64
  143. package/server/piecemaker/vendor/installer/templates/root-CLAUDE.md +0 -56
  144. package/server/piecemaker/vendor/installer/templates/workspace-CLAUDE.md +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../server/piecemaker/timesheet/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../server/piecemaker/timesheet/service.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ function createSchema(database) {
22
22
  );
23
23
  CREATE INDEX IF NOT EXISTS timesheet_project_date
24
24
  ON timesheet_sessions(project_id, started_at);
25
+ CREATE INDEX IF NOT EXISTS timesheet_project_path_date
26
+ ON timesheet_sessions(project_path, started_at);
25
27
  CREATE INDEX IF NOT EXISTS timesheet_date
26
28
  ON timesheet_sessions(started_at);
27
29
  `);
@@ -102,7 +104,7 @@ export function createTimesheetStore(homeDir) {
102
104
  `);
103
105
  const findBySessionId = database.prepare('SELECT * FROM timesheet_sessions WHERE session_id = ?');
104
106
  const listAll = database.prepare('SELECT * FROM timesheet_sessions ORDER BY datetime(started_at) DESC, session_id DESC');
105
- const listByProject = database.prepare('SELECT * FROM timesheet_sessions WHERE project_id = ? ORDER BY datetime(started_at) DESC, session_id DESC');
107
+ const listByProjectPath = database.prepare('SELECT * FROM timesheet_sessions WHERE project_path = ? ORDER BY datetime(started_at) DESC, session_id DESC');
106
108
  return {
107
109
  databasePath,
108
110
  upsert(entry) {
@@ -113,8 +115,8 @@ export function createTimesheetStore(homeDir) {
113
115
  const row = findBySessionId.get(sessionId);
114
116
  return row ? toEntry(row) : null;
115
117
  },
116
- list(projectId) {
117
- const rows = (projectId ? listByProject.all(projectId) : listAll.all());
118
+ list(projectPath) {
119
+ const rows = (projectPath ? listByProjectPath.all(projectPath) : listAll.all());
118
120
  return rows.map(toEntry);
119
121
  },
120
122
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../server/piecemaker/timesheet/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../server/piecemaker/timesheet/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piecemaker-legal/piecemaker",
3
- "version": "1.1.0",
3
+ "version": "2.0.1",
4
4
  "productName": "PieceMaker",
5
5
  "description": "Plateforme IA pour juristes français",
6
6
  "type": "module",
@@ -6,11 +6,14 @@
6
6
  "slug": "piecemaker-droit-francais",
7
7
  "appId": "legal.piecemaker.droitfrancais",
8
8
  "protocol": "piecemaker",
9
+ "desktopPort": 3101,
9
10
  "dataDirectoryName": ".piecemaker-droit-francais",
10
11
  "homepage": "https://github.com/PieceMaker-Legal/piecemaker-droit-francais",
11
12
  "repository": "PieceMaker-Legal/piecemaker-droit-francais",
12
13
  "controlPlaneUrl": "https://cloudcli.ai",
13
14
  "sshHost": "ssh.cloudcli.ai",
15
+ "cloudEnabled": false,
16
+ "windowIcon": "public/logo-512.png",
14
17
  "themeColor": "#ffffff",
15
18
  "backgroundColor": "#ffffff",
16
19
  "showGithubStarBadge": false
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+ import subprocess
3
+ import sys
4
+ from pathlib import Path
5
+
6
+ from PIL import Image, ImageDraw
7
+
8
+ ROOT = Path(__file__).resolve().parents[2]
9
+ SOURCE_LOGO = ROOT / 'public' / 'logo-sources' / 'logo-black.png'
10
+ ASSETS = ROOT / 'server' / 'piecemaker' / 'vendor' / 'installer' / 'assets'
11
+ ICNS = ASSETS / 'piecemaker.icns'
12
+ ICO = ASSETS / 'piecemaker.ico'
13
+
14
+ CANVAS = 1024
15
+ PLATE_INSET = 90
16
+ PLATE_RADIUS_RATIO = 0.2237
17
+ PLATE_FILL = (255, 255, 255, 255)
18
+ PLATE_EDGE = (203, 213, 225, 255)
19
+ LOGO_RATIO = 0.66
20
+ SUPERSAMPLE = 4
21
+
22
+ ICONSET_SIZES = [
23
+ ('icon_16x16.png', 16),
24
+ ('icon_16x16@2x.png', 32),
25
+ ('icon_32x32.png', 32),
26
+ ('icon_32x32@2x.png', 64),
27
+ ('icon_128x128.png', 128),
28
+ ('icon_128x128@2x.png', 256),
29
+ ('icon_256x256.png', 256),
30
+ ('icon_256x256@2x.png', 512),
31
+ ('icon_512x512.png', 512),
32
+ ('icon_512x512@2x.png', 1024),
33
+ ]
34
+ ICO_SIZES = [16, 24, 32, 48, 64, 128, 256]
35
+
36
+
37
+ def render_master() -> Image.Image:
38
+ scale = SUPERSAMPLE
39
+ canvas = Image.new('RGBA', (CANVAS * scale, CANVAS * scale), (0, 0, 0, 0))
40
+ draw = ImageDraw.Draw(canvas)
41
+
42
+ plate = [
43
+ PLATE_INSET * scale,
44
+ PLATE_INSET * scale,
45
+ (CANVAS - PLATE_INSET) * scale,
46
+ (CANVAS - PLATE_INSET) * scale,
47
+ ]
48
+ plate_size = plate[2] - plate[0]
49
+ radius = int(plate_size * PLATE_RADIUS_RATIO)
50
+ draw.rounded_rectangle(plate, radius=radius, fill=PLATE_FILL, outline=PLATE_EDGE, width=3 * scale)
51
+
52
+ logo = Image.open(SOURCE_LOGO).convert('RGBA')
53
+ target = int(plate_size * LOGO_RATIO)
54
+ logo = logo.resize((target, target), Image.LANCZOS)
55
+ offset = (CANVAS * scale - target) // 2
56
+ canvas.alpha_composite(logo, (offset, offset))
57
+
58
+ return canvas.resize((CANVAS, CANVAS), Image.LANCZOS)
59
+
60
+
61
+ def build_icns(master: Image.Image, workdir: Path) -> None:
62
+ iconset = workdir / 'piecemaker.iconset'
63
+ iconset.mkdir(parents=True, exist_ok=True)
64
+ for name, size in ICONSET_SIZES:
65
+ master.resize((size, size), Image.LANCZOS).save(iconset / name)
66
+ subprocess.run(['iconutil', '-c', 'icns', str(iconset), '-o', str(ICNS)], check=True)
67
+
68
+
69
+ def build_ico(master: Image.Image) -> None:
70
+ master.save(ICO, format='ICO', sizes=[(size, size) for size in ICO_SIZES])
71
+
72
+
73
+ def main() -> int:
74
+ if not SOURCE_LOGO.exists():
75
+ print(f'Logo source introuvable : {SOURCE_LOGO}', file=sys.stderr)
76
+ return 1
77
+ workdir = ROOT / '.desktop-build' / 'icon'
78
+ workdir.mkdir(parents=True, exist_ok=True)
79
+ master = render_master()
80
+ master.save(workdir / 'piecemaker-1024.png')
81
+ build_icns(master, workdir)
82
+ build_ico(master)
83
+ print(f'Icônes générées : {ICNS.relative_to(ROOT)}, {ICO.relative_to(ROOT)}')
84
+ return 0
85
+
86
+
87
+ if __name__ == '__main__':
88
+ raise SystemExit(main())
@@ -0,0 +1,47 @@
1
+ import path from 'node:path';
2
+ import { spawn } from 'node:child_process';
3
+
4
+ import { APP_URL, PIECEMAKER_HOME } from './config.mjs';
5
+ import { macChromiumBrowser, windowsChromiumBrowser } from './pwa.mjs';
6
+ import { stopApplication } from './services.mjs';
7
+
8
+ const DELEGATED_LAUNCH_MS = 3000;
9
+
10
+ export function pwaProfileDirectory() {
11
+ return path.join(PIECEMAKER_HOME, 'pwa-profile');
12
+ }
13
+
14
+ export function browserExecutable() {
15
+ if (process.platform === 'darwin') {
16
+ const bundle = macChromiumBrowser();
17
+ return bundle ? path.join(bundle, 'Contents', 'MacOS', path.basename(bundle, '.app')) : null;
18
+ }
19
+ if (process.platform === 'win32') return windowsChromiumBrowser();
20
+ return null;
21
+ }
22
+
23
+ function waitForWindow(executable, profileDirectory) {
24
+ return new Promise((resolve) => {
25
+ const child = spawn(executable, [`--app=${APP_URL}`, `--user-data-dir=${profileDirectory}`], {
26
+ stdio: 'ignore',
27
+ windowsHide: true,
28
+ });
29
+ child.once('error', (error) => resolve({ opened: false, error }));
30
+ child.once('exit', () => resolve({ opened: true }));
31
+ });
32
+ }
33
+
34
+ export async function runApplicationWindow() {
35
+ const executable = browserExecutable();
36
+ if (!executable) return { supervised: false, reason: 'navigateur Chromium introuvable' };
37
+
38
+ const openedAt = Date.now();
39
+ const window = await waitForWindow(executable, pwaProfileDirectory());
40
+ if (!window.opened) return { supervised: false, reason: window.error.message };
41
+ if (Date.now() - openedAt < DELEGATED_LAUNCH_MS) {
42
+ return { supervised: false, reason: 'fenêtre rattachée à un navigateur déjà ouvert' };
43
+ }
44
+
45
+ const stopped = await stopApplication();
46
+ return { supervised: true, stopped };
47
+ }
@@ -35,6 +35,7 @@ export async function repairClientProxies({ appDir, report }) {
35
35
 
36
36
  const userHome = os.homedir();
37
37
  const origin = `http://127.0.0.1:${await resolveAnonymizerPort()}`;
38
+ const caFile = path.join(userHome, '.piecemaker', 'certs', 'piecemaker-ca.crt');
38
39
 
39
40
  const attempt = (name, run) => {
40
41
  try {
@@ -51,9 +52,8 @@ export async function repairClientProxies({ appDir, report }) {
51
52
  }
52
53
  };
53
54
 
54
- attempt('claude', () => configureClaudeCodeProxy({ baseUrl: `${origin}/anthropic`, userHome }));
55
+ attempt('claude', () => configureClaudeCodeProxy({ proxyUrl: origin, caFile, userHome }));
55
56
  attempt('codex', () => configureCodexProxy({
56
- baseUrl: `${origin}/chatgpt`,
57
57
  codexHome: process.env.CODEX_HOME || path.join(userHome, '.codex'),
58
58
  }));
59
59
  }
@@ -46,7 +46,7 @@ export async function verifyPwaAssets() {
46
46
  };
47
47
  }
48
48
 
49
- function macChromiumBrowser() {
49
+ export function macChromiumBrowser() {
50
50
  const candidates = [
51
51
  '/Applications/Google Chrome.app',
52
52
  '/Applications/Microsoft Edge.app',
@@ -103,13 +103,12 @@ function installMacApplication() {
103
103
  fs.mkdirSync(resourcesDir, { recursive: true });
104
104
 
105
105
  const browser = macChromiumBrowser();
106
- const launchCommand = browser
107
- ? `open -na "${browser}" --args --app="${APP_URL}" --user-data-dir="$HOME/.piecemaker/pwa-profile"`
108
- : `open "${APP_URL}"`;
109
-
110
106
  const launcherPath = path.join(macosDir, APPLICATION_NAME);
111
107
  const command = piecemakerExecutable();
112
- fs.writeFileSync(launcherPath, `#!/bin/sh\n${shellQuote(command)} --launch-only >/dev/null 2>&1 &\nsleep 2\n${launchCommand}\n`, 'utf8');
108
+ const launchCommand = browser
109
+ ? `exec ${shellQuote(command)} --window >/dev/null 2>&1`
110
+ : `open "${APP_URL}"`;
111
+ fs.writeFileSync(launcherPath, `#!/bin/sh\n${shellQuote(command)} --launch-only >/dev/null 2>&1\n${launchCommand}\n`, 'utf8');
113
112
  fs.chmodSync(launcherPath, 0o755);
114
113
 
115
114
  const iconFile = writeMacIcon(resourcesDir);
@@ -209,7 +208,7 @@ function writeWindowsIcon() {
209
208
  }
210
209
  }
211
210
 
212
- function windowsChromiumBrowser() {
211
+ export function windowsChromiumBrowser() {
213
212
  const programFiles = process.env['ProgramFiles'] || 'C:\\Program Files';
214
213
  const programFilesX86 = process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)';
215
214
  const localAppData = process.env.LOCALAPPDATA || '';
@@ -283,15 +282,14 @@ function createWindowsShortcut(shortcutPath, targetPath, shortcutArgs, iconPath)
283
282
  return result.code === 0;
284
283
  }
285
284
 
286
- function writeWindowsLauncher(browser, userDataDir) {
285
+ function writeWindowsLauncher(browser) {
287
286
  const command = piecemakerExecutable();
288
287
  const lines = [
289
288
  '@echo off',
290
- `start "" /B "${command}" --launch-only`,
291
- 'ping 127.0.0.1 -n 3 >nul',
289
+ `call "${command}" --launch-only`,
292
290
  ];
293
291
  if (browser) {
294
- lines.push(`start "" "${browser}" --app=${APP_URL} --user-data-dir=${userDataDir}`);
292
+ lines.push(`call "${command}" --window`);
295
293
  } else {
296
294
  lines.push(`start "" "${APP_URL}"`);
297
295
  }
@@ -304,8 +302,7 @@ function writeWindowsLauncher(browser, userDataDir) {
304
302
  function installWindowsApplication() {
305
303
  const browser = windowsChromiumBrowser();
306
304
  const iconPath = writeWindowsIcon();
307
- const userDataDir = path.join(os.homedir(), '.piecemaker', 'pwa-profile');
308
- const launcher = writeWindowsLauncher(browser, userDataDir);
305
+ const launcher = writeWindowsLauncher(browser);
309
306
 
310
307
  const desktopDir = windowsDesktopDir();
311
308
  const startMenuDir = windowsStartMenuDir();
@@ -9,6 +9,7 @@ import { gitAvailable, resolveNodeRuntime } from './lib/node-runtime.mjs';
9
9
  import { ensureDependencies, ensureRepository, rebuildNativeModules } from './lib/repos.mjs';
10
10
  import { APP_LOG, appClientReachable, appServerReachable, startApplication, stopApplication } from './lib/services.mjs';
11
11
  import { applicationWindowIsOpen, installApplicationEntry, openApplication, verifyPwaAssets } from './lib/pwa.mjs';
12
+ import { runApplicationWindow } from './lib/app-window.mjs';
12
13
  import { banner, blank, c, detail, fail, ok, step, warn } from './lib/ui.mjs';
13
14
 
14
15
  const report = { step, ok, warn, detail };
@@ -17,13 +18,16 @@ const HELP = `${c.bold('piecemaker')} — installe, met à jour, répare et lanc
17
18
 
18
19
  piecemaker reset propre, puis installation et lancement
19
20
  piecemaker --launch-only répare et relance seulement si l'application est arrêtée
21
+ piecemaker --window relance si besoin, ouvre la fenêtre et arrête tout à sa fermeture
20
22
  piecemaker --help cette aide
21
23
  `;
22
24
 
23
25
  function parseArguments(argv) {
26
+ const window = argv.includes('--window');
24
27
  return {
25
28
  help: argv.includes('--help') || argv.includes('-h'),
26
- launchOnly: argv.includes('--launch-only'),
29
+ launchOnly: argv.includes('--launch-only') || window,
30
+ window,
27
31
  };
28
32
  }
29
33
 
@@ -148,6 +152,16 @@ async function main() {
148
152
  detail('Configuration du socle : onglet Dossier › Configuration.');
149
153
  blank();
150
154
 
155
+ if (options.window) {
156
+ const session = await runApplicationWindow();
157
+ if (!session.supervised) {
158
+ warn(`Fenêtre non supervisée : ${session.reason}`);
159
+ return 0;
160
+ }
161
+ ok('Fenêtre fermée — application arrêtée');
162
+ return 0;
163
+ }
164
+
151
165
  if (!options.launchOnly && !applicationWindowIsOpen()) openApplication();
152
166
  return 0;
153
167
  }
@@ -2,21 +2,16 @@
2
2
  /**
3
3
  * Hook SessionStart — garde-fou contre le port mort du proxy PII.
4
4
  *
5
- * Le proxy de ce dépôt (server/piecemaker/anonymizer/proxy.cjs, démarré par
6
- * service.cjs) écoute un port fixe et vit avec le process serveur. Il meurt
5
+ * Le proxy de ce dépôt (hudsucker, démarré par service.cjs) écoute un port
6
+ * fixe et vit avec le process serveur. Il meurt
7
7
  * avec lui, mais la configuration qu'il a écrite survit sur disque : une
8
8
  * session démarrée serveur éteint pointe alors vers un port fermé en boucle,
9
9
  * sans pouvoir se corriger elle-même en cours de route.
10
10
  *
11
11
  * Ce hook sert deux clients, distingués par la variable d'environnement
12
12
  * PIECEMAKER_HOOK_CLIENT :
13
- * - claude (valeur par défaut) : la base vient de ~/.claude/settings.json
14
- * → env.ANTHROPIC_BASE_URL, pathname attendu /anthropic. Nettoyage via
15
- * bypassClaudeCodeProxy() (server/piecemaker/anonymizer/client-config.cjs).
16
- * - codex : la base vient de ~/.codex/config.toml (ou $CODEX_HOME), dans
17
- * le bloc géré délimité par les marqueurs PieceMaker Proxy PII, table
18
- * [model_providers.piecemaker_proxy], pathname attendu /chatgpt.
19
- * Nettoyage via bypassCodexProxy() du même module.
13
+ * - claude (valeur par défaut) : HTTPS_PROXY dans ~/.claude/settings.json.
14
+ * - codex : HTTPS_PROXY hérité du processus.
20
15
  *
21
16
  * Il sonde le port concerné, et si le proxy est bien mort retire l'entrée
22
17
  * périmée pour laisser la session démarrer en accès direct plutôt qu'en
@@ -42,8 +37,6 @@ const require = createRequire(import.meta.url);
42
37
  const DEFAULT_PORT = 4111;
43
38
  const PROBE_TIMEOUT_MS = 1500;
44
39
  const GUARD_NAME = 'repo';
45
- const CODEX_BLOCK_START = '# >>> PieceMaker Proxy PII (géré automatiquement)';
46
- const CODEX_BLOCK_END = '# <<< PieceMaker Proxy PII';
47
40
 
48
41
  function lireEntierPort(valeur) {
49
42
  const nombre = Number.parseInt(valeur, 10);
@@ -84,42 +77,19 @@ function lireStdin(delaiMs = 500) {
84
77
  });
85
78
  }
86
79
 
87
- function estUrlLoopback(valeur, pathAttendu) {
88
- try {
89
- const url = new URL(String(valeur || ''));
90
- const estLoopback = url.hostname === '127.0.0.1' || url.hostname === 'localhost';
91
- return estLoopback && url.pathname.replace(/\/$/, '') === pathAttendu;
92
- } catch {
93
- return false;
94
- }
95
- }
96
-
97
80
  function extraireBaseUrlClaude(userHome) {
98
81
  const settingsFile = path.join(userHome, '.claude', 'settings.json');
99
82
  const settings = lireJsonSiPresent(settingsFile);
100
83
  const env = settings && typeof settings.env === 'object' && settings.env !== null ? settings.env : {};
101
- return env.ANTHROPIC_BASE_URL;
84
+ return env.HTTPS_PROXY;
102
85
  }
103
86
 
104
- function extraireBlocCodex(contenu) {
105
- const debut = contenu.indexOf(CODEX_BLOCK_START);
106
- const fin = contenu.indexOf(CODEX_BLOCK_END);
107
- if (debut === -1 || fin === -1 || fin < debut) return null;
108
- return contenu.slice(debut, fin + CODEX_BLOCK_END.length);
109
- }
110
-
111
- function extraireBaseUrlCodex(codexHome) {
87
+ function estLoopback(valeur) {
112
88
  try {
113
- const configFile = path.join(codexHome, 'config.toml');
114
- if (!fs.existsSync(configFile)) return undefined;
115
- const contenu = fs.readFileSync(configFile, 'utf8');
116
- const bloc = extraireBlocCodex(contenu);
117
- if (!bloc) return undefined;
118
- const correspondance = bloc.match(/^\s*base_url\s*=\s*(?:"([^"]*)"|'([^']*)')/m);
119
- if (!correspondance) return undefined;
120
- return correspondance[1] !== undefined ? correspondance[1] : correspondance[2];
89
+ const url = new URL(String(valeur || ''));
90
+ return url.hostname === '127.0.0.1' || url.hostname === 'localhost';
121
91
  } catch {
122
- return undefined;
92
+ return false;
123
93
  }
124
94
  }
125
95
 
@@ -184,23 +154,21 @@ async function main() {
184
154
  };
185
155
 
186
156
  if (client === 'codex') {
187
- const codexHome = process.env.CODEX_HOME || path.join(userHome, '.codex');
188
- const baseUrl = extraireBaseUrlCodex(codexHome);
189
-
190
- if (!baseUrl) {
157
+ const envProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
158
+ if (!envProxy) {
191
159
  route = 'absente';
192
160
  verdict = 'direct';
193
161
  terminer({
194
162
  systemMessage: "PieceMaker : aucun proxy PII configuré pour cette session Codex — elle démarre en accès direct, sans anonymisation.",
195
163
  hookSpecificOutput: {
196
164
  hookEventName: 'SessionStart',
197
- additionalContext: "Aucun fournisseur piecemaker_proxy n'est configuré dans ~/.codex/config.toml : la session n'est pas routée par le proxy PII PieceMaker, aucune anonymisation n'est appliquée.",
165
+ additionalContext: "HTTPS_PROXY n'est pas défini : la session Codex n'est pas routée par le proxy PII PieceMaker, aucune anonymisation n'est appliquée.",
198
166
  },
199
167
  });
200
168
  return;
201
169
  }
202
170
 
203
- if (!estUrlLoopback(baseUrl, '/chatgpt')) {
171
+ if (!estLoopback(envProxy)) {
204
172
  route = 'externe';
205
173
  verdict = 'externe';
206
174
  terminer(null);
@@ -208,7 +176,7 @@ async function main() {
208
176
  }
209
177
 
210
178
  route = 'proxy_piecemaker';
211
- port = portDeLaBase(baseUrl, DEFAULT_PORT);
179
+ port = portDeLaBase(envProxy, DEFAULT_PORT);
212
180
  probe = await sonderPort(port);
213
181
 
214
182
  if (probe === 'vivant') {
@@ -217,15 +185,12 @@ async function main() {
217
185
  return;
218
186
  }
219
187
 
220
- const { bypassCodexProxy } = require('../../../server/piecemaker/anonymizer/client-config.cjs');
221
- bypassCodexProxy({ codexHome });
222
-
223
188
  verdict = 'nettoye';
224
189
  terminer({
225
- systemMessage: `⚠️ PIECEMAKER : proxy PII injoignable sur le port ${port}. La configuration périmée a été retirée de ~/.codex/config.toml — cette session Codex démarre en ACCÈS DIRECT, SANS ANONYMISATION. Démarrer le serveur PieceMaker (commande \`piecemaker\`) pour rétablir la protection.`,
190
+ systemMessage: `⚠️ PIECEMAKER : proxy PII injoignable sur le port ${port}. Cette session Codex n'est pas anonymisée. Démarrer le serveur PieceMaker (commande \`piecemaker\`) pour rétablir la protection.`,
226
191
  hookSpecificOutput: {
227
192
  hookEventName: 'SessionStart',
228
- additionalContext: `Le proxy PII PieceMaker était configuré sur le port ${port} mais ne répond pas. Le bloc géré a été retiré de ~/.codex/config.toml et model_provider est revenu à "openai". Cette session n'est PAS anonymisée tant que le serveur PieceMaker (commande \`piecemaker\`) n'est pas relancé.`,
193
+ additionalContext: `Le proxy PII PieceMaker était configuré sur le port ${port} mais ne répond pas. Cette session n'est PAS anonymisée tant que le serveur PieceMaker (commande \`piecemaker\`) n'est pas relancé.`,
229
194
  },
230
195
  });
231
196
  return;
@@ -244,13 +209,13 @@ async function main() {
244
209
  systemMessage: "PieceMaker : aucun proxy PII configuré pour cette session — elle démarre en accès direct, sans anonymisation.",
245
210
  hookSpecificOutput: {
246
211
  hookEventName: 'SessionStart',
247
- additionalContext: "Aucune base ANTHROPIC_BASE_URL n'est configurée : la session n'est pas routée par le proxy PII PieceMaker, aucune anonymisation n'est appliquée.",
212
+ additionalContext: "HTTPS_PROXY n'est pas défini : la session n'est pas routée par le proxy PII PieceMaker, aucune anonymisation n'est appliquée.",
248
213
  },
249
214
  });
250
215
  return;
251
216
  }
252
217
 
253
- if (!estUrlLoopback(baseUrl, '/anthropic')) {
218
+ if (!estLoopback(baseUrl)) {
254
219
  route = 'externe';
255
220
  verdict = 'externe';
256
221
  terminer(null);
@@ -275,7 +240,7 @@ async function main() {
275
240
  systemMessage: `⚠️ PIECEMAKER : proxy PII injoignable sur le port ${port}. La configuration périmée a été retirée — cette session démarre en ACCÈS DIRECT, SANS ANONYMISATION. Démarrer le serveur PieceMaker (commande \`piecemaker\`) pour rétablir la protection.`,
276
241
  hookSpecificOutput: {
277
242
  hookEventName: 'SessionStart',
278
- additionalContext: `Le proxy PII PieceMaker était configuré sur le port ${port} mais ne répond pas. L'entrée ANTHROPIC_BASE_URL périmée a été retirée de ~/.claude/settings.json. Cette session n'est PAS anonymisée tant que le serveur PieceMaker (commande \`piecemaker\`) n'est pas relancé.`,
243
+ additionalContext: `Le proxy PII PieceMaker était configuré sur le port ${port} mais ne répond pas. HTTPS_PROXY a été retiré de ~/.claude/settings.json. Cette session n'est PAS anonymisée tant que le serveur PieceMaker (commande \`piecemaker\`) n'est pas relancé.`,
279
244
  },
280
245
  });
281
246
  } catch {
@@ -0,0 +1,25 @@
1
+ import { readFileSync } from 'node:fs';
2
+
3
+ const manifest = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
4
+ const current = manifest.version;
5
+ const requested = process.env.RELEASE_INCREMENT || '';
6
+
7
+ function major(version) {
8
+ const value = Number(String(version).split('.')[0]);
9
+ return Number.isFinite(value) ? value : 0;
10
+ }
11
+
12
+ function fail(message) {
13
+ console.error(message);
14
+ process.exit(1);
15
+ }
16
+
17
+ if (major(current) < 2) {
18
+ fail(`La version ${current} suit la numérotation CloudCLI. PieceMaker publie à partir de 2.0.0.`);
19
+ }
20
+
21
+ if (/^\d/.test(requested) && major(requested) < 2) {
22
+ fail(`L'incrément ${requested} suit la numérotation CloudCLI. Indiquez une version 2.x ou plus.`);
23
+ }
24
+
25
+ console.log(`Version PieceMaker retenue : ${requested || current} (paquet ${current}).`);
package/server/index.ts CHANGED
@@ -30,7 +30,7 @@ import { commandsRoutes } from './modules/commands/index.js';
30
30
  import { settingsRoutes } from './modules/settings/index.js';
31
31
  import { createSystemModule } from './modules/system/index.js';
32
32
  import { createAgentModule } from './modules/agent/index.js';
33
- import { createPieceMakerRouter, stopOriginalsJobs } from './piecemaker/index.js';
33
+ import { createPieceMakerLocalRouter, createPieceMakerRouter, stopOriginalsJobs } from './piecemaker/index.js';
34
34
  import projectModuleRoutes from './modules/projects/projects.routes.js';
35
35
  import notificationRoutes from './modules/notifications/notifications.routes.js';
36
36
  import { userRoutes } from './modules/user/index.js';
@@ -184,6 +184,9 @@ app.use('/api/user', authenticateToken, userRoutes);
184
184
  // Plugins API Routes (protected)
185
185
  app.use('/api/plugins', authenticateToken, pluginsRoutes);
186
186
 
187
+ // PieceMaker local conversion API (loopback protected)
188
+ app.use('/api/piecemaker/local', createPieceMakerLocalRouter());
189
+
187
190
  // PieceMaker API Routes (protected)
188
191
  app.use('/api/piecemaker', authenticateToken, createPieceMakerRouter());
189
192