@piecemaker-legal/piecemaker 2.0.7 → 2.0.9

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 (80) hide show
  1. package/dist/assets/{abnfDiagram-VCTEODGH-D7dCOIXi.js → abnfDiagram-VCTEODGH-WrsSAHOe.js} +1 -1
  2. package/dist/assets/{arc-DhAWLNVu.js → arc-DAA6wH-C.js} +1 -1
  3. package/dist/assets/{architectureDiagram-5GKGNRK7-BzE_kJOM.js → architectureDiagram-5GKGNRK7-BGNHr7ef.js} +1 -1
  4. package/dist/assets/{blockDiagram-I7D4REHJ-CCvTgFRD.js → blockDiagram-I7D4REHJ-zGMnF7Ox.js} +1 -1
  5. package/dist/assets/{c4Diagram-7LVT6UL2-CdbOnorn.js → c4Diagram-7LVT6UL2-ClWw3bqt.js} +1 -1
  6. package/dist/assets/channel-BAQyfMll.js +1 -0
  7. package/dist/assets/{chunk-2Q5K7J3B-D8cmt0Sa.js → chunk-2Q5K7J3B-C-9ICPHv.js} +1 -1
  8. package/dist/assets/{chunk-5VM5RSS4-CnDRnclp.js → chunk-5VM5RSS4-Bawy3teT.js} +1 -1
  9. package/dist/assets/{chunk-F27PBJKO-vgneLl23.js → chunk-F27PBJKO-DQ375RQO.js} +1 -1
  10. package/dist/assets/{chunk-IMKFNOWR-DMPUusko.js → chunk-IMKFNOWR-CflNF2f6.js} +1 -1
  11. package/dist/assets/{chunk-JWPE2WC7-bRfTSGMj.js → chunk-JWPE2WC7-CIXQv0gc.js} +1 -1
  12. package/dist/assets/{chunk-POPQ4Y6H-C2tl1RjW.js → chunk-POPQ4Y6H-Cza5j6Qw.js} +1 -1
  13. package/dist/assets/{chunk-SVP7TREG-ClClzI9j.js → chunk-SVP7TREG-GQ_VvWZR.js} +1 -1
  14. package/dist/assets/{chunk-TICWLB2K-DIabeuUc.js → chunk-TICWLB2K-BEmU16W5.js} +1 -1
  15. package/dist/assets/{chunk-XXDRQBXY-D9_LHetz.js → chunk-XXDRQBXY-C1KpkLYH.js} +1 -1
  16. package/dist/assets/classDiagram-ZZMXUADV-BNGCuvrR.js +1 -0
  17. package/dist/assets/classDiagram-v2-VYDZK3BY-BNGCuvrR.js +1 -0
  18. package/dist/assets/{cose-bilkent-JH36ORCC-Bm_mspWw.js → cose-bilkent-JH36ORCC-CZE48TRG.js} +1 -1
  19. package/dist/assets/{cynefin-OW5HDTMX-CiByP-TO.js → cynefin-OW5HDTMX-L-tx1eC-.js} +1 -1
  20. package/dist/assets/{cynefinDiagram-5FMLGOSQ-BAsBRS4i.js → cynefinDiagram-5FMLGOSQ-Coa8oJwR.js} +1 -1
  21. package/dist/assets/{dagre-GXQ25YYZ-p85Sd22I.js → dagre-GXQ25YYZ-Bu_3Y75K.js} +1 -1
  22. package/dist/assets/{diagram-S7CK7UJ4-D17byk8T.js → diagram-S7CK7UJ4-CFiiV4es.js} +1 -1
  23. package/dist/assets/{diagram-UQ7AKVKN-CROIyAdR.js → diagram-UQ7AKVKN-CCXheGAA.js} +1 -1
  24. package/dist/assets/{diagram-VSXAHHWV-DZazZGn6.js → diagram-VSXAHHWV-B70m4lr_.js} +1 -1
  25. package/dist/assets/{diagram-VX7I27RA-Dnrg0GMg.js → diagram-VX7I27RA-CHkiMOVA.js} +1 -1
  26. package/dist/assets/{diagram-Z3DM3KII-DaVdLJt4.js → diagram-Z3DM3KII-_awpc4Bs.js} +1 -1
  27. package/dist/assets/{ebnfDiagram-PWID7BFC-DdA7pXO0.js → ebnfDiagram-PWID7BFC-CZzjH86H.js} +1 -1
  28. package/dist/assets/{erDiagram-RLTQ6QDP-X_hPKNl0.js → erDiagram-RLTQ6QDP-9DgiHZg9.js} +1 -1
  29. package/dist/assets/{flowDiagram-HODETNUW-C87EKwuJ.js → flowDiagram-HODETNUW-DHY_503b.js} +1 -1
  30. package/dist/assets/{ganttDiagram-EL5Y4UJY-DKGVh_bq.js → ganttDiagram-EL5Y4UJY-DPiiYZ_l.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-WWUBYQGX-DwSS0so-.js → gitGraphDiagram-WWUBYQGX-Ddd_evm7.js} +1 -1
  32. package/dist/assets/{index-DcfdIMj-.css → index-WwknP0l4.css} +1 -1
  33. package/dist/assets/{index-Dhev0IBD.js → index-tibHq7Qp.js} +82 -82
  34. package/dist/assets/{infoDiagram-27XIBGKW-9M2GYFX-.js → infoDiagram-27XIBGKW-BPRNhfwb.js} +1 -1
  35. package/dist/assets/{ishikawaDiagram-5VMMS53U-DcyPsfdd.js → ishikawaDiagram-5VMMS53U-BXx6aqkq.js} +1 -1
  36. package/dist/assets/{journeyDiagram-3NMN7TZE-uCFTtIkL.js → journeyDiagram-3NMN7TZE-BK8TZM29.js} +1 -1
  37. package/dist/assets/{kanban-definition-UXKFOSKX-fmP02Y_m.js → kanban-definition-UXKFOSKX-CHioRmxz.js} +1 -1
  38. package/dist/assets/{layout-CgzYIBR9.js → layout-DEnkyfTY.js} +1 -1
  39. package/dist/assets/{linear-R2LO12tF.js → linear-CTEhUcKG.js} +1 -1
  40. package/dist/assets/{mermaid.core-CcFr1kIk.js → mermaid.core-DYUb_UUB.js} +6 -6
  41. package/dist/assets/{mindmap-definition-YA3MSWOX-DIODLsip.js → mindmap-definition-YA3MSWOX-D7ODZ4oS.js} +1 -1
  42. package/dist/assets/{pegDiagram-XKGWAZYB-FUv_9PC6.js → pegDiagram-XKGWAZYB-8J-_2_kw.js} +1 -1
  43. package/dist/assets/{pieDiagram-E7YTZNPT-CAwW7jyM.js → pieDiagram-E7YTZNPT-ebg0yfMi.js} +1 -1
  44. package/dist/assets/{quadrantDiagram-AXDQQJYC-9h98Z_Df.js → quadrantDiagram-AXDQQJYC-BoWkDiFb.js} +1 -1
  45. package/dist/assets/{railroadDiagram-O6MQD6OU-DkH3Fnef.js → railroadDiagram-O6MQD6OU-BRJ77ldz.js} +1 -1
  46. package/dist/assets/{requirementDiagram-BXWQKSXE-BQs2338b.js → requirementDiagram-BXWQKSXE-Z0JJgktA.js} +1 -1
  47. package/dist/assets/{sankeyDiagram-P5KCCOFB-Cx6CaW2J.js → sankeyDiagram-P5KCCOFB-4PW5HTOP.js} +1 -1
  48. package/dist/assets/{sequenceDiagram-WJ2MYXX4-D9bqqWJX.js → sequenceDiagram-WJ2MYXX4-BPAjtXwp.js} +1 -1
  49. package/dist/assets/{sizeCapture-INFHLROL-BaqLD8lN.js → sizeCapture-INFHLROL-BGZPCzM4.js} +1 -1
  50. package/dist/assets/{stateDiagram-D77RDMKH-p7iECK7R.js → stateDiagram-D77RDMKH-o-vEcKwz.js} +1 -1
  51. package/dist/assets/{stateDiagram-v2-MP3YSRHH-B2OWsW7s.js → stateDiagram-v2-MP3YSRHH-BsuDaKkN.js} +1 -1
  52. package/dist/assets/{swimlanes-42K2YHIH-DnMxbe0k.js → swimlanes-42K2YHIH-DvuB15qF.js} +1 -1
  53. package/dist/assets/swimlanesDiagram-VR7AAH4N-DcCAyKlT.js +8 -0
  54. package/dist/assets/{timeline-definition-24CTP7MA-Bbrf_JBy.js → timeline-definition-24CTP7MA-ZIziYCIF.js} +1 -1
  55. package/dist/assets/{vennDiagram-4TSXK5OY-DgBPpdsN.js → vennDiagram-4TSXK5OY-C5_B9gWa.js} +1 -1
  56. package/dist/assets/{wardleyDiagram-VM6X3IG4-BDQNH02n.js → wardleyDiagram-VM6X3IG4-DMlH9Afw.js} +1 -1
  57. package/dist/assets/{xychartDiagram-S5SC5T6Z-DvZhpZ3Y.js → xychartDiagram-S5SC5T6Z-BldhJt7i.js} +1 -1
  58. package/dist/index.html +2 -2
  59. package/dist/sw.js +1 -1
  60. package/dist-server/server/piecemaker/desktop-update/index.js +4 -3
  61. package/dist-server/server/piecemaker/desktop-update/index.js.map +1 -1
  62. package/dist-server/server/piecemaker/index.js +3 -2
  63. package/dist-server/server/piecemaker/index.js.map +1 -1
  64. package/dist-server/server/piecemaker/shell-environment.js +102 -0
  65. package/dist-server/server/piecemaker/shell-environment.js.map +1 -0
  66. package/package.json +1 -1
  67. package/server/piecemaker/anonymizer/client-config.cjs +4 -4
  68. package/server/piecemaker/anonymizer/providers.cjs +2 -2
  69. package/server/piecemaker/anonymizer/service.cjs +17 -4
  70. package/server/piecemaker/desktop-update/index.ts +4 -3
  71. package/server/piecemaker/index.ts +3 -2
  72. package/server/piecemaker/shell-environment.ts +111 -0
  73. package/server/piecemaker/vendor/websocket-server/scripts/presidio-gliner/scanner_worker.py +2 -0
  74. package/dist/assets/channel-CVQE_nrA.js +0 -1
  75. package/dist/assets/classDiagram-ZZMXUADV-BNp5yxXb.js +0 -1
  76. package/dist/assets/classDiagram-v2-VYDZK3BY-BNp5yxXb.js +0 -1
  77. package/dist/assets/swimlanesDiagram-VR7AAH4N-CzQACmEN.js +0 -8
  78. package/dist-server/server/piecemaker/claude-executable.js +0 -41
  79. package/dist-server/server/piecemaker/claude-executable.js.map +0 -1
  80. package/server/piecemaker/claude-executable.ts +0 -46
@@ -19,6 +19,7 @@ const { spawn } = require('node:child_process');
19
19
  const fs = require('node:fs');
20
20
  const os = require('node:os');
21
21
  const path = require('node:path');
22
+ const tls = require('node:tls');
22
23
 
23
24
  const { createSqliteDictionaryLoader } = require('./sqlite-dictionary.cjs');
24
25
  const { startRewriterBridge } = require('./rewriter-bridge.cjs');
@@ -100,9 +101,18 @@ function certificatePaths() {
100
101
  return {
101
102
  cert: path.join(directory, 'piecemaker-ca.crt'),
102
103
  key: path.join(directory, 'piecemaker-ca.key'),
104
+ trustBundle: path.join(directory, 'piecemaker-trust-bundle.pem'),
103
105
  };
104
106
  }
105
107
 
108
+ function writeTrustBundle(caFile, bundleFile) {
109
+ const content = [...tls.rootCertificates, fs.readFileSync(caFile, 'utf8').trim()].join('\n');
110
+ const temporary = `${bundleFile}.piecemaker-${process.pid}-${Date.now()}`;
111
+ fs.writeFileSync(temporary, `${content}\n`, { encoding: 'utf8', mode: 0o644 });
112
+ fs.renameSync(temporary, bundleFile);
113
+ return bundleFile;
114
+ }
115
+
106
116
  function waitForOutput(child, needle, timeoutMs) {
107
117
  return new Promise((resolve, reject) => {
108
118
  let buffer = '';
@@ -129,7 +139,7 @@ function waitForOutput(child, needle, timeoutMs) {
129
139
  });
130
140
  }
131
141
 
132
- function proxyEnvironment(proxyUrl, caFile) {
142
+ function proxyEnvironment(proxyUrl, caFile, trustBundle) {
133
143
  return {
134
144
  HTTPS_PROXY: proxyUrl,
135
145
  HTTP_PROXY: proxyUrl,
@@ -137,9 +147,9 @@ function proxyEnvironment(proxyUrl, caFile) {
137
147
  NO_PROXY: 'localhost,127.0.0.1,::1',
138
148
  NODE_USE_ENV_PROXY: '1',
139
149
  NODE_EXTRA_CA_CERTS: caFile,
140
- SSL_CERT_FILE: caFile,
150
+ SSL_CERT_FILE: trustBundle,
141
151
  CODEX_CA_CERTIFICATE: caFile,
142
- REQUESTS_CA_BUNDLE: caFile,
152
+ REQUESTS_CA_BUNDLE: trustBundle,
143
153
  };
144
154
  }
145
155
 
@@ -251,12 +261,14 @@ function createAnonymizerService({ homeDir, userHome = os.homedir(), logger = co
251
261
  PATH: process.env.PATH,
252
262
  };
253
263
  for (const key of PROXY_ENV_KEYS) previousEnv[key] = process.env[key];
254
- Object.assign(process.env, proxyEnvironment(origin, certificates.cert));
264
+ const trustBundle = writeTrustBundle(certificates.cert, certificates.trustBundle);
265
+ Object.assign(process.env, proxyEnvironment(origin, certificates.cert, trustBundle));
255
266
  process.env.PATH = `${binDir}${path.delimiter}${process.env.PATH || ''}`;
256
267
 
257
268
  const report = await configureProviders({
258
269
  origin,
259
270
  caFile: certificates.cert,
271
+ trustBundle,
260
272
  userHome,
261
273
  binDir,
262
274
  mappingFile: legacyMappingFile,
@@ -336,4 +348,5 @@ module.exports = {
336
348
  isDisabled,
337
349
  resolveUpstream,
338
350
  summarizeCoverage,
351
+ writeTrustBundle,
339
352
  };
@@ -1,4 +1,5 @@
1
1
  import { spawn } from 'node:child_process';
2
+ import path from 'node:path';
2
3
 
3
4
  import { loadProductConfig } from '../../../shared/product-config.mjs';
4
5
 
@@ -23,9 +24,9 @@ function runInstaller(command: string, environment: NodeJS.ProcessEnv) {
23
24
  });
24
25
  }
25
26
 
26
- function productRepository(): string | null {
27
+ function productRepository(appRoot: string): string | null {
27
28
  try {
28
- return loadProductConfig().repository;
29
+ return loadProductConfig(process.env.CLOUDCLI_PRODUCT_CONFIG || path.join(appRoot, 'product.config.json')).repository;
29
30
  } catch {
30
31
  return null;
31
32
  }
@@ -39,7 +40,7 @@ export function createPieceMakerDesktopUpdateRouter(appRoot: string) {
39
40
  return createDesktopUpdateRouter(createDesktopUpdateService({
40
41
  appRoot,
41
42
  platform: process.platform,
42
- repository: productRepository(),
43
+ repository: productRepository(appRoot),
43
44
  applicationPid: process.ppid,
44
45
  environment: process.env,
45
46
  runInstaller,
@@ -8,7 +8,6 @@ import { findApplicationRoot, getModuleDirectory } from '@/shared/utils.js';
8
8
 
9
9
 
10
10
  import { startRequiredAnonymizer } from './anonymizer/lifecycle.js';
11
- import { useBundledClaudeWhenMissingFromPath } from './claude-executable.js';
12
11
  import { createCitationStore } from './harness/citation-store.js';
13
12
  import { installChatCitationHarness } from './harness/chat-harness.js';
14
13
  import { createCitationsRouter } from './harness/citations.routes.js';
@@ -17,6 +16,7 @@ import { createKnowledgeBackend } from './knowledge/index.js';
17
16
  import { createTimesheetBackend } from './timesheet/index.js';
18
17
  import { createCompanySearchRouter } from './company-search.js';
19
18
  import { createBodaccSearchRouter } from './bodacc-search.js';
19
+ import { createShellEnvironmentRouter, resolveDesktopShellEnvironment } from './shell-environment.js';
20
20
 
21
21
  /**
22
22
  * Point d'entrée PieceMaker. Les modules de `server/piecemaker/vendor/` sont du
@@ -42,7 +42,7 @@ type PieceMakerVendorModule = {
42
42
  stopOriginalsJobs(): Promise<void>;
43
43
  };
44
44
 
45
- useBundledClaudeWhenMissingFromPath();
45
+ const shellEnvironment = await resolveDesktopShellEnvironment();
46
46
  const vendor = createRequire(import.meta.url)(routerPath) as PieceMakerVendorModule;
47
47
 
48
48
  export const { piecemakerHome, stopOriginalsJobs } = vendor;
@@ -70,6 +70,7 @@ export function createPieceMakerRouter(options: { getRuntimeStatus?: () => Piece
70
70
  router.use(knowledge.router);
71
71
  router.use(createCompanySearchRouter());
72
72
  router.use(createBodaccSearchRouter());
73
+ router.use(createShellEnvironmentRouter(shellEnvironment));
73
74
  return router;
74
75
  }
75
76
  export type { PieceMakerRuntimeStatus };
@@ -0,0 +1,111 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { randomUUID } from 'node:crypto';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+
6
+ import express from 'express';
7
+
8
+ export type ShellEnvironmentState =
9
+ | { status: 'inherited' }
10
+ | { status: 'resolved'; shell: string }
11
+ | { status: 'failed'; shell: string; reason: string };
12
+
13
+ const RESOLUTION_TIMEOUT_MS = 10_000;
14
+
15
+ const RESOLUTION_VARIABLES: Record<string, string> = {
16
+ ELECTRON_RUN_AS_NODE: '1',
17
+ ELECTRON_NO_ATTACH_CONSOLE: '1',
18
+ PIECEMAKER_RESOLVING_ENVIRONMENT: '1',
19
+ DISABLE_AUTO_UPDATE: 'true',
20
+ ZSH_TMUX_AUTOSTARTED: 'true',
21
+ ZSH_TMUX_AUTOSTART: 'false',
22
+ };
23
+
24
+ const SHELL_SESSION_VARIABLES = new Set(['_', 'PWD', 'OLDPWD', 'SHLVL', ...Object.keys(RESOLUTION_VARIABLES)]);
25
+
26
+ function quoteForShell(value: string): string {
27
+ return `'${value.replace(/'/g, `'\\''`)}'`;
28
+ }
29
+
30
+ function userShell(environment: NodeJS.ProcessEnv): string {
31
+ return environment.SHELL || os.userInfo().shell || '/bin/zsh';
32
+ }
33
+
34
+ export function extractMarkedEnvironment(output: string, mark: string): Record<string, string> | null {
35
+ const start = output.indexOf(mark);
36
+ const end = output.lastIndexOf(mark);
37
+ if (start === -1 || end <= start) return null;
38
+ try {
39
+ return JSON.parse(output.slice(start + mark.length, end));
40
+ } catch {
41
+ return null;
42
+ }
43
+ }
44
+
45
+ export function adoptShellEnvironment(target: NodeJS.ProcessEnv, shellEnvironment: Record<string, string>) {
46
+ for (const [key, value] of Object.entries(shellEnvironment)) {
47
+ if (key === 'PATH' || SHELL_SESSION_VARIABLES.has(key) || target[key] !== undefined) continue;
48
+ target[key] = value;
49
+ }
50
+ const entries = [...(shellEnvironment.PATH ?? '').split(path.delimiter), ...(target.PATH ?? '').split(path.delimiter)];
51
+ target.PATH = [...new Set(entries.filter(Boolean))].join(path.delimiter);
52
+ }
53
+
54
+ function readShellEnvironment(shell: string): Promise<Record<string, string>> {
55
+ const mark = randomUUID().replace(/-/g, '').slice(0, 12);
56
+ const printEnvironment = `${quoteForShell(process.execPath)} -p '"${mark}" + JSON.stringify(process.env) + "${mark}"'`;
57
+ return new Promise((resolve, reject) => {
58
+ const child = spawn(shell, ['-i', '-l', '-c', printEnvironment], {
59
+ detached: true,
60
+ stdio: ['ignore', 'pipe', 'pipe'],
61
+ env: { ...process.env, ...RESOLUTION_VARIABLES },
62
+ });
63
+ let output = '';
64
+ let errorOutput = '';
65
+ const timer = setTimeout(() => {
66
+ try {
67
+ process.kill(-child.pid!, 'SIGKILL');
68
+ } catch {
69
+ child.kill('SIGKILL');
70
+ }
71
+ reject(new Error(`le shell ${shell} n'a pas répondu en ${RESOLUTION_TIMEOUT_MS / 1000} s`));
72
+ }, RESOLUTION_TIMEOUT_MS);
73
+ child.stdout.on('data', (chunk: Buffer) => { output += chunk.toString(); });
74
+ child.stderr.on('data', (chunk: Buffer) => { errorOutput += chunk.toString(); });
75
+ child.once('error', (error) => {
76
+ clearTimeout(timer);
77
+ reject(new Error(`impossible de lancer ${shell} : ${error.message}`));
78
+ });
79
+ child.once('close', (code) => {
80
+ clearTimeout(timer);
81
+ const environment = extractMarkedEnvironment(output, mark);
82
+ if (environment) {
83
+ resolve(environment);
84
+ return;
85
+ }
86
+ const detail = errorOutput.trim().split('\n').slice(-3).join(' ').slice(0, 300);
87
+ reject(new Error(`le shell ${shell} s'est arrêté (code ${code}) sans fournir son environnement${detail ? ` : ${detail}` : ''}`));
88
+ });
89
+ });
90
+ }
91
+
92
+ export async function resolveDesktopShellEnvironment(): Promise<ShellEnvironmentState> {
93
+ if (process.platform === 'win32' || process.env.ELECTRON_RUN_AS_NODE !== '1') return { status: 'inherited' };
94
+ const shell = userShell(process.env);
95
+ try {
96
+ adoptShellEnvironment(process.env, await readShellEnvironment(shell));
97
+ return { status: 'resolved', shell };
98
+ } catch (error) {
99
+ const reason = error instanceof Error ? error.message : String(error);
100
+ console.warn(`[piecemaker] environnement du shell non résolu, PATH de base conservé : ${reason}`);
101
+ return { status: 'failed', shell, reason };
102
+ }
103
+ }
104
+
105
+ export function createShellEnvironmentRouter(state: ShellEnvironmentState) {
106
+ const router = express.Router();
107
+ router.get('/shell-environment', (_request, response) => {
108
+ response.json(state);
109
+ });
110
+ return router;
111
+ }
@@ -26,6 +26,8 @@ from collections import defaultdict
26
26
  from importlib.metadata import PackageNotFoundError, version as package_version
27
27
  from typing import Dict, List, Optional
28
28
 
29
+ os.environ["HF_HUB_OFFLINE"] = "1"
30
+
29
31
  # ---------------------------------------------------------------------------
30
32
  # Heavy imports — these are the expensive ones (~30-60s)
31
33
  # ---------------------------------------------------------------------------
@@ -1 +0,0 @@
1
- import{ah as o,ai as n}from"./mermaid.core-CcFr1kIk.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-TICWLB2K-DIabeuUc.js";import{_ as i}from"./mermaid.core-CcFr1kIk.js";import"./chunk-5VM5RSS4-CnDRnclp.js";import"./chunk-XXDRQBXY-D9_LHetz.js";import"./chunk-POPQ4Y6H-C2tl1RjW.js";import"./chunk-F27PBJKO-vgneLl23.js";import"./index-Dhev0IBD.js";import"./vendor-codemirror-CjW0lHR5.js";import"./vendor-react-D809iwXR.js";import"./vendor-xterm-BWUgpGtR.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-TICWLB2K-DIabeuUc.js";import{_ as i}from"./mermaid.core-CcFr1kIk.js";import"./chunk-5VM5RSS4-CnDRnclp.js";import"./chunk-XXDRQBXY-D9_LHetz.js";import"./chunk-POPQ4Y6H-C2tl1RjW.js";import"./chunk-F27PBJKO-vgneLl23.js";import"./index-Dhev0IBD.js";import"./vendor-codemirror-CjW0lHR5.js";import"./vendor-react-D809iwXR.js";import"./vendor-xterm-BWUgpGtR.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -1,8 +0,0 @@
1
- import{c as r,s as e}from"./flowDiagram-HODETNUW-C87EKwuJ.js";import{_ as a}from"./mermaid.core-CcFr1kIk.js";import"./chunk-5VM5RSS4-CnDRnclp.js";import"./chunk-XXDRQBXY-D9_LHetz.js";import"./chunk-POPQ4Y6H-C2tl1RjW.js";import"./chunk-F27PBJKO-vgneLl23.js";import"./index-Dhev0IBD.js";import"./vendor-codemirror-CjW0lHR5.js";import"./vendor-react-D809iwXR.js";import"./vendor-xterm-BWUgpGtR.js";import"./channel-CVQE_nrA.js";var o=a(t=>`${e(t)}
2
- .swimlane.cluster rect {
3
- stroke: ${t.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,"getStyles"),m=o,g=r({defaultLayout:"swimlane",styles:m});export{g as diagram};
@@ -1,41 +0,0 @@
1
- import fs from 'node:fs';
2
- import { createRequire } from 'node:module';
3
- import path from 'node:path';
4
- function isExecutableFile(candidate) {
5
- try {
6
- fs.accessSync(candidate, fs.constants.X_OK);
7
- return fs.statSync(candidate).isFile();
8
- }
9
- catch {
10
- return false;
11
- }
12
- }
13
- function bundledSdkExecutable() {
14
- try {
15
- const packageName = `@anthropic-ai/claude-agent-sdk-${process.platform}-${process.arch}`;
16
- return createRequire(import.meta.url).resolve(`${packageName}/claude`);
17
- }
18
- catch {
19
- return null;
20
- }
21
- }
22
- export function claudeExecutableFallback(context) {
23
- if (context.platform === 'win32' || context.environment.CLAUDE_CLI_PATH)
24
- return null;
25
- const searchPath = (context.environment.PATH || '').split(path.delimiter).filter(Boolean);
26
- if (searchPath.some((directory) => context.isExecutable(path.join(directory, 'claude'))))
27
- return null;
28
- const bundled = context.bundledExecutable();
29
- return bundled && context.isExecutable(bundled) ? bundled : null;
30
- }
31
- export function useBundledClaudeWhenMissingFromPath() {
32
- const fallback = claudeExecutableFallback({
33
- environment: process.env,
34
- platform: process.platform,
35
- isExecutable: isExecutableFile,
36
- bundledExecutable: bundledSdkExecutable,
37
- });
38
- if (fallback)
39
- process.env.CLAUDE_CLI_PATH = fallback;
40
- }
41
- //# sourceMappingURL=claude-executable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-executable.js","sourceRoot":"","sources":["../../../server/piecemaker/claude-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kCAAkC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACzF,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgC;IACvE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IACrF,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1F,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtG,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC5C,OAAO,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,GAAG;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,oBAAoB;KACxC,CAAC,CAAC;IACH,IAAI,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC;AACvD,CAAC"}
@@ -1,46 +0,0 @@
1
- import fs from 'node:fs';
2
- import { createRequire } from 'node:module';
3
- import path from 'node:path';
4
-
5
- type ClaudeExecutableContext = {
6
- environment: NodeJS.ProcessEnv;
7
- platform: NodeJS.Platform;
8
- isExecutable(candidate: string): boolean;
9
- bundledExecutable(): string | null;
10
- };
11
-
12
- function isExecutableFile(candidate: string): boolean {
13
- try {
14
- fs.accessSync(candidate, fs.constants.X_OK);
15
- return fs.statSync(candidate).isFile();
16
- } catch {
17
- return false;
18
- }
19
- }
20
-
21
- function bundledSdkExecutable(): string | null {
22
- try {
23
- const packageName = `@anthropic-ai/claude-agent-sdk-${process.platform}-${process.arch}`;
24
- return createRequire(import.meta.url).resolve(`${packageName}/claude`);
25
- } catch {
26
- return null;
27
- }
28
- }
29
-
30
- export function claudeExecutableFallback(context: ClaudeExecutableContext): string | null {
31
- if (context.platform === 'win32' || context.environment.CLAUDE_CLI_PATH) return null;
32
- const searchPath = (context.environment.PATH || '').split(path.delimiter).filter(Boolean);
33
- if (searchPath.some((directory) => context.isExecutable(path.join(directory, 'claude')))) return null;
34
- const bundled = context.bundledExecutable();
35
- return bundled && context.isExecutable(bundled) ? bundled : null;
36
- }
37
-
38
- export function useBundledClaudeWhenMissingFromPath() {
39
- const fallback = claudeExecutableFallback({
40
- environment: process.env,
41
- platform: process.platform,
42
- isExecutable: isExecutableFile,
43
- bundledExecutable: bundledSdkExecutable,
44
- });
45
- if (fallback) process.env.CLAUDE_CLI_PATH = fallback;
46
- }