@piecemaker-legal/piecemaker 2.0.17 → 2.0.19

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 (99) hide show
  1. package/dist/assets/{FindReplaceDialog-KU5TEIBJ-B4N6W1_z.js → FindReplaceDialog-KU5TEIBJ-D-E_iQrz.js} +1 -1
  2. package/dist/assets/{FootnotePropertiesDialog-W3YHM4BV-D_X_JkAZ.js → FootnotePropertiesDialog-W3YHM4BV-aF_8ncE9.js} +1 -1
  3. package/dist/assets/{HyperlinkDialog-ZYH7ZHRF-EbyukgDx.js → HyperlinkDialog-ZYH7ZHRF-BvhTCTt_.js} +4 -4
  4. package/dist/assets/{ImagePositionDialog-HEWYR6Q3-D9jEaxlE.js → ImagePositionDialog-HEWYR6Q3-CC7jJcbZ.js} +1 -1
  5. package/dist/assets/{ImagePropertiesDialog-RAB47C6M-DvA1kZnM.js → ImagePropertiesDialog-RAB47C6M-C5fs5OZU.js} +1 -1
  6. package/dist/assets/{PageSetupDialog-AIGIXO3E-ChfsKF43.js → PageSetupDialog-AIGIXO3E-DhHTvZ6Q.js} +1 -1
  7. package/dist/assets/{SplitCellDialog-IFBKYCD6-uM26FNXt.js → SplitCellDialog-IFBKYCD6-BoFyEVsb.js} +1 -1
  8. package/dist/assets/{TablePropertiesDialog-TMLKGOOW-By6EQI5w.js → TablePropertiesDialog-TMLKGOOW-CBb7GEtl.js} +1 -1
  9. package/dist/assets/{WatermarkDialog-KRL7WMIS-Bss9F6Ej.js → WatermarkDialog-KRL7WMIS-BJbsMnmA.js} +1 -1
  10. package/dist/assets/{abnfDiagram-VCTEODGH-yLjNPHY7.js → abnfDiagram-VCTEODGH-C6ojlqY3.js} +1 -1
  11. package/dist/assets/{arc-CMQiMSh4.js → arc-BoDdi4D9.js} +1 -1
  12. package/dist/assets/{architectureDiagram-5GKGNRK7-Cyna8IJZ.js → architectureDiagram-5GKGNRK7-CWIahr5B.js} +1 -1
  13. package/dist/assets/{blockDiagram-I7D4REHJ-DHAdjRYY.js → blockDiagram-I7D4REHJ-CLEp2VLU.js} +1 -1
  14. package/dist/assets/{c4Diagram-7LVT6UL2-qqZ0w4LC.js → c4Diagram-7LVT6UL2-BnPyO1ST.js} +1 -1
  15. package/dist/assets/channel-DV0VwszZ.js +1 -0
  16. package/dist/assets/{chunk-2Q5K7J3B-NS0halN6.js → chunk-2Q5K7J3B-C7HwgL9V.js} +1 -1
  17. package/dist/assets/{chunk-5VM5RSS4-BF6-6Cah.js → chunk-5VM5RSS4-DXEfMQFg.js} +1 -1
  18. package/dist/assets/{chunk-F27PBJKO-Dnj2jFRB.js → chunk-F27PBJKO-L8IW1AJ2.js} +1 -1
  19. package/dist/assets/{chunk-IMKFNOWR-CmRgl1EE.js → chunk-IMKFNOWR-M0u3FR4R.js} +1 -1
  20. package/dist/assets/{chunk-JWPE2WC7-BwC19UFc.js → chunk-JWPE2WC7-BTrrWfya.js} +1 -1
  21. package/dist/assets/{chunk-POPQ4Y6H-C1YWVD4-.js → chunk-POPQ4Y6H-DKzOkm9u.js} +1 -1
  22. package/dist/assets/{chunk-SVP7TREG-D7XQTPRq.js → chunk-SVP7TREG-ChWxgGeB.js} +1 -1
  23. package/dist/assets/{chunk-TICWLB2K-BkmTGk1O.js → chunk-TICWLB2K-FU0TG8_V.js} +1 -1
  24. package/dist/assets/{chunk-XXDRQBXY-CYW7YgXL.js → chunk-XXDRQBXY-D--n_LHM.js} +1 -1
  25. package/dist/assets/classDiagram-ZZMXUADV-QmelLege.js +1 -0
  26. package/dist/assets/classDiagram-v2-VYDZK3BY-QmelLege.js +1 -0
  27. package/dist/assets/{cose-bilkent-JH36ORCC-BSktt6pW.js → cose-bilkent-JH36ORCC-VcyzT4Am.js} +1 -1
  28. package/dist/assets/{cynefin-OW5HDTMX-BNMRWXNG.js → cynefin-OW5HDTMX-CF_CzN2W.js} +1 -1
  29. package/dist/assets/{cynefinDiagram-5FMLGOSQ-Dk59YHuO.js → cynefinDiagram-5FMLGOSQ-tYmbUXoj.js} +1 -1
  30. package/dist/assets/{dagre-GXQ25YYZ-DFhWeh0x.js → dagre-GXQ25YYZ-Dl-3sgkS.js} +1 -1
  31. package/dist/assets/{diagram-S7CK7UJ4-BH_8x-q5.js → diagram-S7CK7UJ4-DyYBtOKJ.js} +1 -1
  32. package/dist/assets/{diagram-UQ7AKVKN-DmxmlXg5.js → diagram-UQ7AKVKN-BfibAHRJ.js} +1 -1
  33. package/dist/assets/{diagram-VSXAHHWV-DpG29cD4.js → diagram-VSXAHHWV-BvuChn2K.js} +1 -1
  34. package/dist/assets/{diagram-VX7I27RA-CvvYXTie.js → diagram-VX7I27RA-ZSTD84JR.js} +1 -1
  35. package/dist/assets/{diagram-Z3DM3KII-xOXaaZqs.js → diagram-Z3DM3KII-CYWcW_j4.js} +1 -1
  36. package/dist/assets/{ebnfDiagram-PWID7BFC-CtfFGqJB.js → ebnfDiagram-PWID7BFC-CKssYpWu.js} +1 -1
  37. package/dist/assets/{erDiagram-RLTQ6QDP-AoCjoHUY.js → erDiagram-RLTQ6QDP-H6Rihy54.js} +1 -1
  38. package/dist/assets/{flowDiagram-HODETNUW-Bl9_mq95.js → flowDiagram-HODETNUW-BYcs_7fG.js} +1 -1
  39. package/dist/assets/{ganttDiagram-EL5Y4UJY-DREJQ2BY.js → ganttDiagram-EL5Y4UJY-Dt0zBRmP.js} +1 -1
  40. package/dist/assets/{gitGraphDiagram-WWUBYQGX-C1q5-iep.js → gitGraphDiagram-WWUBYQGX-DJ4ZVb5_.js} +1 -1
  41. package/dist/assets/{index-RKNvOXcq.js → index-skgP2UD3.js} +4 -4
  42. package/dist/assets/{infoDiagram-27XIBGKW-Cz2KUKWU.js → infoDiagram-27XIBGKW-DZmrJj_e.js} +1 -1
  43. package/dist/assets/{ishikawaDiagram-5VMMS53U-BU6SdWsw.js → ishikawaDiagram-5VMMS53U-zTPWVhqW.js} +1 -1
  44. package/dist/assets/{journeyDiagram-3NMN7TZE-CMMoiPf0.js → journeyDiagram-3NMN7TZE-CFxtAX_q.js} +1 -1
  45. package/dist/assets/{kanban-definition-UXKFOSKX-KpKnC3dd.js → kanban-definition-UXKFOSKX-BIBQGYrN.js} +1 -1
  46. package/dist/assets/{layout-6C8d-KNC.js → layout-5xNw8gsu.js} +1 -1
  47. package/dist/assets/{linear-CUINCO59.js → linear-CW6Efbjk.js} +1 -1
  48. package/dist/assets/{mermaid.core-ClgFTKfs.js → mermaid.core-CV1UELnp.js} +6 -6
  49. package/dist/assets/{mindmap-definition-YA3MSWOX-oywqmpy6.js → mindmap-definition-YA3MSWOX-zpWSRS8g.js} +1 -1
  50. package/dist/assets/{pegDiagram-XKGWAZYB-Uk65qoVL.js → pegDiagram-XKGWAZYB-4u0O4rTZ.js} +1 -1
  51. package/dist/assets/{pieDiagram-E7YTZNPT-XxQhMRKu.js → pieDiagram-E7YTZNPT-CXmymaRq.js} +1 -1
  52. package/dist/assets/{quadrantDiagram-AXDQQJYC-Djngo9IG.js → quadrantDiagram-AXDQQJYC-DpCRdfYk.js} +1 -1
  53. package/dist/assets/{railroadDiagram-O6MQD6OU-C4I8SNPI.js → railroadDiagram-O6MQD6OU-DisvzZ3q.js} +1 -1
  54. package/dist/assets/{requirementDiagram-BXWQKSXE-D62oiVFl.js → requirementDiagram-BXWQKSXE-DvU7Z8z5.js} +1 -1
  55. package/dist/assets/{sankeyDiagram-P5KCCOFB-HZuSub58.js → sankeyDiagram-P5KCCOFB-Df5nogtS.js} +1 -1
  56. package/dist/assets/{sequenceDiagram-WJ2MYXX4-B8_t7SDx.js → sequenceDiagram-WJ2MYXX4-B5BKf6O8.js} +1 -1
  57. package/dist/assets/{sizeCapture-INFHLROL-D2Lk0zlm.js → sizeCapture-INFHLROL-1EZabZaY.js} +1 -1
  58. package/dist/assets/{stateDiagram-D77RDMKH-DC3NnV2S.js → stateDiagram-D77RDMKH-DCSKdcyr.js} +1 -1
  59. package/dist/assets/{stateDiagram-v2-MP3YSRHH-DSsQOGCi.js → stateDiagram-v2-MP3YSRHH-Db5HOoa1.js} +1 -1
  60. package/dist/assets/{swimlanes-42K2YHIH-6RzklsF9.js → swimlanes-42K2YHIH-CmrUx1kp.js} +1 -1
  61. package/dist/assets/swimlanesDiagram-VR7AAH4N-B6BaxAGn.js +8 -0
  62. package/dist/assets/{timeline-definition-24CTP7MA-Beuacf_x.js → timeline-definition-24CTP7MA-D1e5FRLS.js} +1 -1
  63. package/dist/assets/{vennDiagram-4TSXK5OY-CMqthbQr.js → vennDiagram-4TSXK5OY-DbclmB6P.js} +1 -1
  64. package/dist/assets/{wardleyDiagram-VM6X3IG4-DKrdN08q.js → wardleyDiagram-VM6X3IG4-BL3cDBgt.js} +1 -1
  65. package/dist/assets/{xychartDiagram-S5SC5T6Z-BtMW2Qlh.js → xychartDiagram-S5SC5T6Z-BnyVnEkb.js} +1 -1
  66. package/dist/index.html +1 -1
  67. package/dist/sw.js +1 -1
  68. package/dist-server/server/piecemaker/library/connector-installation.js +68 -17
  69. package/dist-server/server/piecemaker/library/connector-installation.js.map +1 -1
  70. package/dist-server/server/piecemaker/library/global-state.js +60 -0
  71. package/dist-server/server/piecemaker/library/global-state.js.map +1 -0
  72. package/dist-server/server/piecemaker/library/index.js +10 -0
  73. package/dist-server/server/piecemaker/library/index.js.map +1 -1
  74. package/dist-server/server/piecemaker/library/marketplace.js +61 -42
  75. package/dist-server/server/piecemaker/library/marketplace.js.map +1 -1
  76. package/dist-server/server/piecemaker/library/migrate.js +0 -35
  77. package/dist-server/server/piecemaker/library/migrate.js.map +1 -1
  78. package/dist-server/server/piecemaker/library/routes.js +6 -2
  79. package/dist-server/server/piecemaker/library/routes.js.map +1 -1
  80. package/dist-server/server/piecemaker/library/store.js +95 -67
  81. package/dist-server/server/piecemaker/library/store.js.map +1 -1
  82. package/dist-server/server/piecemaker/library/workspace-installation.js +172 -87
  83. package/dist-server/server/piecemaker/library/workspace-installation.js.map +1 -1
  84. package/package.json +1 -1
  85. package/server/piecemaker/library/connector-installation.ts +65 -16
  86. package/server/piecemaker/library/global-state.ts +55 -0
  87. package/server/piecemaker/library/index.ts +7 -0
  88. package/server/piecemaker/library/marketplace.ts +52 -48
  89. package/server/piecemaker/library/migrate.ts +0 -35
  90. package/server/piecemaker/library/routes.ts +9 -2
  91. package/server/piecemaker/library/store.ts +94 -57
  92. package/server/piecemaker/library/workspace-installation.ts +180 -77
  93. package/dist/assets/channel-B3AYuE-l.js +0 -1
  94. package/dist/assets/classDiagram-ZZMXUADV-CE2Zkr7h.js +0 -1
  95. package/dist/assets/classDiagram-v2-VYDZK3BY-CE2Zkr7h.js +0 -1
  96. package/dist/assets/swimlanesDiagram-VR7AAH4N-ZU4NRSFy.js +0 -8
  97. package/dist-server/server/piecemaker/library/migrate-cli.js +0 -13
  98. package/dist-server/server/piecemaker/library/migrate-cli.js.map +0 -1
  99. package/server/piecemaker/library/migrate-cli.ts +0 -11
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { createRequire } from 'node:module';
4
4
  import { spawnSync } from 'node:child_process';
5
5
  import express from 'express';
6
- import { normalizeProviderConnector } from './connector-installation.js';
6
+ import { normalizeProviderConnector, setWorkspaceClaudePlugin, workspaceClaudePlugins } from './connector-installation.js';
7
7
  import { importLibraryDirectory } from './migrate.js';
8
8
  import { scanAndPersistLibraryProviderAgents } from './provider-agents.js';
9
9
  import { scanAndPersistLibraryProviderConnectors } from './provider-connectors.js';
@@ -43,7 +43,16 @@ function marketplacePackageKinds(userHome, marketplaceName, plugin, registry) {
43
43
  kinds.add('connector');
44
44
  return [...kinds];
45
45
  }
46
- function disableNativeClaudePlugin(userHome, id) {
46
+ function userClaudePlugins(userHome) {
47
+ const settingsFilename = path.join(userHome, '.claude/settings.json');
48
+ if (!fs.existsSync(settingsFilename))
49
+ return {};
50
+ const enabledPlugins = JSON.parse(fs.readFileSync(settingsFilename, 'utf8')).enabledPlugins;
51
+ return enabledPlugins && typeof enabledPlugins === 'object' && !Array.isArray(enabledPlugins)
52
+ ? enabledPlugins
53
+ : {};
54
+ }
55
+ function setNativeClaudePlugin(userHome, id, enabled) {
47
56
  const settingsFilename = path.join(userHome, '.claude/settings.json');
48
57
  const settings = fs.existsSync(settingsFilename)
49
58
  ? JSON.parse(fs.readFileSync(settingsFilename, 'utf8'))
@@ -51,9 +60,9 @@ function disableNativeClaudePlugin(userHome, id) {
51
60
  const enabledPlugins = settings.enabledPlugins && typeof settings.enabledPlugins === 'object' && !Array.isArray(settings.enabledPlugins)
52
61
  ? settings.enabledPlugins
53
62
  : {};
54
- if (enabledPlugins[id] === false)
63
+ if (enabledPlugins[id] === enabled)
55
64
  return;
56
- settings.enabledPlugins = { ...enabledPlugins, [id]: false };
65
+ settings.enabledPlugins = { ...enabledPlugins, [id]: enabled };
57
66
  fs.mkdirSync(path.dirname(settingsFilename), { recursive: true, mode: 0o700 });
58
67
  const temporary = `${settingsFilename}.library.tmp`;
59
68
  fs.writeFileSync(temporary, JSON.stringify(settings, null, 2), { mode: 0o600 });
@@ -136,34 +145,6 @@ export function scanInstalledLibraryCollections(store, userHome) {
136
145
  });
137
146
  }
138
147
  }
139
- function readInstalledClaudePlugins(userHome) {
140
- const filename = path.join(userHome, '.claude/plugins/installed_plugins.json');
141
- if (!fs.existsSync(filename))
142
- return {};
143
- const config = JSON.parse(fs.readFileSync(filename, 'utf8'));
144
- return config.plugins && typeof config.plugins === 'object' && !Array.isArray(config.plugins)
145
- ? config.plugins
146
- : {};
147
- }
148
- function synchronizeInstalledPluginActivation(store, userHome, workspacePath) {
149
- const settingsFilename = path.join(userHome, '.claude/settings.json');
150
- if (!fs.existsSync(settingsFilename))
151
- return store.listCollections(workspacePath);
152
- const settings = JSON.parse(fs.readFileSync(settingsFilename, 'utf8'));
153
- const enabledPlugins = settings.enabledPlugins && typeof settings.enabledPlugins === 'object' && !Array.isArray(settings.enabledPlugins)
154
- ? settings.enabledPlugins
155
- : {};
156
- const installedPlugins = readInstalledClaudePlugins(userHome);
157
- const collections = store.listCollections(workspacePath);
158
- for (const id of Object.keys(installedPlugins)) {
159
- const collection = collections.find((entry) => entry.id === id);
160
- const enabled = enabledPlugins[id];
161
- if (!collection || collection.componentCount === 0 || typeof enabled !== 'boolean' || collection.enabled === enabled)
162
- continue;
163
- store.setCollectionEnabled(workspacePath, id, enabled);
164
- }
165
- return store.listCollections(workspacePath);
166
- }
167
148
  export function createLibraryMarketplaceRouter(store, applicationRoot, userHome) {
168
149
  const require = createRequire(import.meta.url);
169
150
  const { listMarketplaceConnectors, registerOfficialMarketplace } = require(path.join(applicationRoot, 'server/piecemaker/vendor/websocket-server/admin-routes.cjs'));
@@ -186,6 +167,20 @@ export function createLibraryMarketplaceRouter(store, applicationRoot, userHome)
186
167
  return fs.existsSync(filename) ? JSON.parse(fs.readFileSync(filename, 'utf8')).plugins || {} : {};
187
168
  };
188
169
  const importInstalledCollections = () => scanInstalledLibraryCollections(store, userHome);
170
+ const describeCollections = (workspacePath) => {
171
+ const collections = store.listCollections(workspacePath);
172
+ const registry = installed();
173
+ const everywhere = userClaudePlugins(userHome);
174
+ const here = workspacePath ? workspaceClaudePlugins(fs.realpathSync(workspacePath)) : {};
175
+ return collections.map((collection) => {
176
+ const native = Boolean(registry[collection.id]);
177
+ if (!native)
178
+ return { ...collection, native, global: false };
179
+ const global = everywhere[collection.id] === true;
180
+ const local = here[collection.id];
181
+ return { ...collection, native, global, partial: false, enabled: Boolean(workspacePath) && (typeof local === 'boolean' ? local : global) };
182
+ });
183
+ };
189
184
  router.get('/plugin/marketplace', (req, res) => {
190
185
  try {
191
186
  const marketplace = scope(req.query.scope);
@@ -211,7 +206,7 @@ export function createLibraryMarketplaceRouter(store, applicationRoot, userHome)
211
206
  router.get('/plugins', (req, res) => {
212
207
  try {
213
208
  const workspacePath = typeof req.query.workspacePath === 'string' ? req.query.workspacePath : undefined;
214
- res.json({ plugins: store.listCollections(workspacePath) });
209
+ res.json({ plugins: describeCollections(workspacePath) });
215
210
  }
216
211
  catch (error) {
217
212
  res.status(400).json({ error: error.message });
@@ -224,12 +219,7 @@ export function createLibraryMarketplaceRouter(store, applicationRoot, userHome)
224
219
  scanAndPersistLibraryProviderAgents(store, userHome);
225
220
  scanAndPersistLibraryProviderConnectors(store, userHome);
226
221
  scanInstalledLibraryCollections(store, userHome);
227
- res.json({
228
- ok: true,
229
- plugins: workspacePath
230
- ? synchronizeInstalledPluginActivation(store, userHome, workspacePath)
231
- : store.listCollections(),
232
- });
222
+ res.json({ ok: true, plugins: describeCollections(workspacePath) });
233
223
  }
234
224
  catch (error) {
235
225
  res.status(400).json({ error: error.message });
@@ -270,7 +260,36 @@ export function createLibraryMarketplaceRouter(store, applicationRoot, userHome)
270
260
  });
271
261
  router.put('/plugins/:id/activation', (req, res) => {
272
262
  try {
273
- res.json(store.setCollectionEnabled(req.body?.workspacePath, String(req.params.id), req.body?.enabled));
263
+ const id = String(req.params.id);
264
+ const workspacePath = req.body?.workspacePath;
265
+ const enabled = req.body?.enabled;
266
+ if (typeof workspacePath !== 'string')
267
+ throw new Error('Dossier absolu requis.');
268
+ if (typeof enabled !== 'boolean')
269
+ throw new Error('Activation booléenne requise.');
270
+ const collection = store.listCollections(workspacePath).find((entry) => entry.id === id);
271
+ const native = Boolean(installed()[id]);
272
+ if (!collection || (!native && !collection.componentCount))
273
+ throw new Error('Plugin introuvable.');
274
+ if (collection.componentCount)
275
+ store.setCollectionEnabled(workspacePath, id, enabled, { skipClaude: native });
276
+ if (native)
277
+ setWorkspaceClaudePlugin(fs.realpathSync(workspacePath), id, enabled ? true : userClaudePlugins(userHome)[id] === true ? false : null);
278
+ res.json(describeCollections(workspacePath).find((entry) => entry.id === id));
279
+ }
280
+ catch (error) {
281
+ res.status(400).json({ error: error.message });
282
+ }
283
+ });
284
+ router.put('/plugins/:id/global', (req, res) => {
285
+ try {
286
+ const id = String(req.params.id);
287
+ if (typeof req.body?.enabled !== 'boolean')
288
+ throw new Error('Activation booléenne requise.');
289
+ if (!installed()[id])
290
+ throw new Error('Plugin absent de Claude Code.');
291
+ setNativeClaudePlugin(userHome, id, req.body.enabled);
292
+ res.json({ ok: true, global: req.body.enabled });
274
293
  }
275
294
  catch (error) {
276
295
  res.status(400).json({ error: error.message });
@@ -295,13 +314,13 @@ export function createLibraryMarketplaceRouter(store, applicationRoot, userHome)
295
314
  const catalog = listMarketplaceConnectors(run, { marketplaceName: marketplace.name });
296
315
  if (!catalog.plugins.some((plugin) => plugin.id === id))
297
316
  throw new Error('Élément absent du catalogue.');
298
- disableNativeClaudePlugin(userHome, id);
317
+ setNativeClaudePlugin(userHome, id, false);
299
318
  let result;
300
319
  try {
301
320
  result = run('claude', ['plugin', 'install', id, '--scope', 'user']);
302
321
  }
303
322
  finally {
304
- disableNativeClaudePlugin(userHome, id);
323
+ setNativeClaudePlugin(userHome, id, false);
305
324
  }
306
325
  if (!result.ok)
307
326
  throw new Error(result.output || 'Installation impossible.');
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,uCAAuC,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAI3E,SAAS,mBAAmB,CAAC,QAAgB,EAAE,eAAuB;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACxF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,eAAuB,EAAE,MAA0D,EAAE,QAAiC;IACvK,MAAM,KAAK,GAAG,IAAI,GAAG,CAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAA4B,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC;IACzG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClH,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,WAAW,KAAK,QAAQ,CAAC,EAAE,WAAW,CAAC;IACxG,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAClF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,IAAI,GAAG,aAAa,IAAI,UAAU,CAAC;IACzC,IAAI,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/G,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,eAAe,KAAK,gBAAgB;QAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB,EAAE,EAAU;IAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtI,CAAC,CAAC,QAAQ,CAAC,cAAc;QACzB,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,KAAK;QAAE,OAAO;IACzC,QAAQ,CAAC,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAC7D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,GAAG,gBAAgB,cAAc,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAA4C,EAAE,QAAgB;IAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5G,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,cAAc,EAAE;QAAE,OAAO;IAChG,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAwC,CAAC;QAChI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,SAAS;QAC9D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAAE,SAAS;QACnE,IAAI,QAAQ,GAAkE,EAAE,CAAC;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC7E,IAAI,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAC9E,MAAM,QAAQ,GAA8E;YAC1F,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;YAClF,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;SACnF,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1F,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACtE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,MAAM,EAAE,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC9G,CAAC,CAAC,MAAM,CAAC,UAAqC;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBACP,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClD,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM;wBAAE,SAAS;oBACtB,MAAM,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;oBACpC,QAAQ,CAAC,IAAI,CAAC;wBACZ,MAAM;wBACN,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC;4BACxB,IAAI;4BACJ,WAAW,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI;4BACjD,MAAM;4BACN,MAAM;4BACN,SAAS,EAAE,EAAE;yBACd,CAAC;wBACF,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,OAAO,IAAI,OAAO;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,KAAK,CAAC,gBAAgB,CAAC;YACrB,EAAE;YACF,IAAI,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,IAAI,iBAAiB,IAAI,iBAAiB;YACrF,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;YACvC,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAChC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC/F,CAAC,CAAC;YACH,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;IAC/E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3F,CAAC,CAAC,MAAM,CAAC,OAAkC;QAC3C,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAA4C,EAC5C,QAAgB,EAChB,aAAqB;IAErB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtI,CAAC,CAAC,QAAQ,CAAC,cAAyC;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAEzD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,KAAK,CAAC,IAAI,OAAO,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO;YAAE,SAAS;QAC/H,KAAK,CAAC,oBAAoB,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAA4C,EAAE,eAAuB,EAAE,QAAgB;IACpI,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,4DAA4D,CAAC,CAAC,CAAC;IACrK,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,IAAc,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACtH,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACpH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE;QAC/B,IAAI,KAAK,KAAK,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;QACvG,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;QAChG,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;QACjH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,GAAG,EAAE,CAAC,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACrH,MAAM,OAAO,GAAG,yBAAyB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;iBAC5B,GAAG,CAAC,CAAC,MAA0D,EAAE,EAAE,CAAC,CAAC;gBACpE,GAAG,MAAM;gBACT,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;gBAChF,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvC,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;aAC7E,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,MAAoC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAuB,CAAC,CAAC,CAAC;YACpG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACvG,MAAM,mCAAmC,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrF,mCAAmC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrD,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzD,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,aAAa;oBACpB,CAAC,CAAC,oCAAoC,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC;oBACtE,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,0BAA0B,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAC7D,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC1E,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC5F,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QAAC,CAAC;QAClI,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;QAChH,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvD,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC3E,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACxJ,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,yBAAyB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACzH,yBAAyB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;oBACrE,CAAC;gBAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,CAAC;YAC7E,0BAA0B,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/marketplace.ts"],"names":[],"mappings":"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"}
@@ -22,39 +22,4 @@ export function importLibraryDirectory(store, directory, kind, followLinks = tru
22
22
  }
23
23
  return imported;
24
24
  }
25
- export function migratePersonalLibrary(store, userHome, applicationRoot, withdraw = false) {
26
- const imported = [];
27
- for (const folder of ['assistant-workflows', 'tabular-review-workflows']) {
28
- imported.push(...importLibraryDirectory(store, path.join(applicationRoot, 'server/piecemaker/vendor/mike-defaults-fr', folder), 'skill'));
29
- }
30
- for (const [directory, kind] of [
31
- [path.join(userHome, '.claude', 'skills'), 'skill'],
32
- [path.join(userHome, '.codex', 'skills'), 'skill'],
33
- [path.join(userHome, '.agents', 'skills'), 'skill'],
34
- [path.join(userHome, '.cursor', 'skills'), 'skill'],
35
- [path.join(userHome, '.config', 'opencode', 'skills'), 'skill'],
36
- [path.join(userHome, '.grok', 'skills'), 'skill'],
37
- [path.join(userHome, '.claude', 'agents'), 'agent'],
38
- [path.join(userHome, '.cursor', 'agents'), 'agent'],
39
- [path.join(userHome, '.grok', 'agents'), 'agent'],
40
- [path.join(userHome, '.config', 'opencode', 'agents'), 'agent'],
41
- [path.join(userHome, '.config', 'opencode', 'agent'), 'agent'],
42
- [path.join(userHome, '.piecemaker', 'library', 'skills'), 'skill'],
43
- [path.join(userHome, '.piecemaker', 'library', 'agents'), 'agent'],
44
- ])
45
- imported.push(...importLibraryDirectory(store, directory, kind));
46
- if (withdraw) {
47
- const candidates = imported.filter((entry) => ['.claude', '.codex', '.agents', '.cursor', '.grok', path.join('.config', 'opencode')].some((provider) => entry.source.startsWith(path.join(userHome, provider) + path.sep)));
48
- const backup = path.join(store.directory, `migration-${Date.now()}`);
49
- fs.mkdirSync(backup, { recursive: true, mode: 0o700 });
50
- fs.writeFileSync(path.join(backup, 'manifest.json'), JSON.stringify(candidates, null, 2), { mode: 0o600 });
51
- for (const entry of candidates.sort((a, b) => Number(b.linked) - Number(a.linked))) {
52
- const destination = path.join(backup, path.relative(userHome, entry.source));
53
- fs.mkdirSync(path.dirname(destination), { recursive: true, mode: 0o700 });
54
- fs.renameSync(entry.source, destination);
55
- }
56
- fs.writeFileSync(path.join(store.directory, 'centralized.json'), JSON.stringify({ migratedAt: new Date().toISOString(), count: candidates.length }), { mode: 0o600 });
57
- }
58
- return imported;
59
- }
60
25
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,UAAU,sBAAsB,CAAC,KAA4C,EAAE,SAAiB,EAAE,IAAuB,EAAE,WAAW,GAAG,IAAI;IACjJ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,CAAC;IACxE,MAAM,QAAQ,GAA2D,EAAE,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAE,SAAS;QACjH,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YAAE,SAAS;QAC7F,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QACpH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,10 +1,14 @@
1
+ import os from 'node:os';
1
2
  import express from 'express';
3
+ import { globalProviderIndex } from './global-state.js';
2
4
  import { listLibraryProviderSkills, scanAndPersistLibraryProviderSkills } from './provider-skills.js';
3
- export function createLibraryRouter(store) {
5
+ export function createLibraryRouter(store, userHome = os.homedir()) {
4
6
  const router = express.Router();
5
7
  router.get('/catalog', (req, res) => {
6
8
  try {
7
- res.json({ entries: store.list(typeof req.query.workspacePath === 'string' ? req.query.workspacePath : undefined) });
9
+ const globalProviders = globalProviderIndex(userHome);
10
+ const entries = store.list(typeof req.query.workspacePath === 'string' ? req.query.workspacePath : undefined);
11
+ res.json({ entries: entries.map(({ sources, ...entry }) => ({ ...entry, globalProviders: globalProviders(sources) })) });
8
12
  }
9
13
  catch (error) {
10
14
  res.status(400).json({ error: error.message });
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,yBAAyB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAEtG,MAAM,UAAU,mBAAmB,CAAC,KAA4C;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC7H,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxG,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACzG,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;QAC7D,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,GAAG,CAAC,IAAI,CAAC,MAAM,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,MAAM,mCAAmC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACxD,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC3F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1G,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC3D,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;QACtG,OAAO,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../server/piecemaker/library/routes.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import fs from 'node:fs';
2
+ import os from 'node:os';
2
3
  import path from 'node:path';
3
4
  import { createHash, randomBytes } from 'node:crypto';
4
5
  import Database from 'better-sqlite3';
5
6
  import { parseFrontMatter } from '../../shared/frontmatter.js';
6
7
  import { parseConnectorConfig, prepareConnectorInstallation } from './connector-installation.js';
7
- import { componentFolderName, prepareWorkspaceInstallation } from './workspace-installation.js';
8
+ import { componentFileHashes, componentFolderName, prepareWorkspaceInstallation, readLibraryManifest, removeLegacyLinks, writeLibraryManifest, } from './workspace-installation.js';
8
9
  const MAX_EDITABLE_FILE_BYTES = 1024 * 1024;
9
10
  function normalizedCollectionPath(value) {
10
11
  const normalized = value.trim().replace(/\\/g, '/');
@@ -33,6 +34,24 @@ function installationFolder(content, fallback = '') {
33
34
  const { data } = parseFrontMatter(content);
34
35
  return componentFolderName(String(data.name || data.metadata?.title || fallback));
35
36
  }
37
+ function installableComponent(entry) {
38
+ const slug = installationFolder(entry.content, entry.name);
39
+ if (entry.kind === 'skill') {
40
+ const files = Object.fromEntries(Object.entries(entry.assets).map(([name, bytes]) => [name, Buffer.from(bytes, 'base64')]));
41
+ return { kind: 'skill', slug, files: { ...files, 'SKILL.md': Buffer.from(entry.content, 'utf8') } };
42
+ }
43
+ const { data, content } = parseFrontMatter(entry.content);
44
+ const toml = (fields) => `${Object.entries(fields).map(([key, value]) => `${key} = ${JSON.stringify(value)}`).join('\n')}\n`;
45
+ const name = String(data.name || entry.name);
46
+ const description = entry.description || entry.name;
47
+ return {
48
+ kind: 'agent',
49
+ slug,
50
+ markdown: entry.content,
51
+ codex: toml({ name, description, developer_instructions: content }),
52
+ vibe: toml({ display_name: name, description, agent_type: 'subagent', instructions: content }),
53
+ };
54
+ }
36
55
  function collectionMainPath(entry, rootPath) {
37
56
  return entry.kind === 'skill' && !rootPath.toLowerCase().endsWith('.md') ? `${rootPath}/SKILL.md` : rootPath;
38
57
  }
@@ -73,6 +92,7 @@ export function createLibraryStore(home) {
73
92
  const originColumns = db.prepare('PRAGMA table_info(origins)').all();
74
93
  if (!originColumns.some((column) => column.name === 'source_hash'))
75
94
  db.exec('ALTER TABLE origins ADD COLUMN source_hash TEXT');
95
+ let defaultEntries = [];
76
96
  function workspace(value) {
77
97
  if (typeof value !== 'string' || !path.isAbsolute(value))
78
98
  throw new Error('Dossier absolu requis.');
@@ -87,14 +107,63 @@ export function createLibraryStore(home) {
87
107
  throw new Error('Élément introuvable.');
88
108
  return { ...entry, assets: JSON.parse(entry.assets) };
89
109
  }
110
+ function activeEntries(selected) {
111
+ return db.prepare('SELECT entry_id AS entryId FROM activation WHERE workspace = ?').all(selected).map((row) => row.entryId);
112
+ }
113
+ function reconcile(selected) {
114
+ const known = (id) => Boolean(db.prepare('SELECT 1 FROM entries WHERE id = ?').get(id));
115
+ const manifest = readLibraryManifest(selected);
116
+ if (manifest) {
117
+ const expected = manifest.map((entry) => entry.id).filter(known);
118
+ const current = activeEntries(selected);
119
+ if (expected.length === current.length && expected.every((id) => current.includes(id)))
120
+ return;
121
+ db.transaction(() => {
122
+ db.prepare('DELETE FROM activation WHERE workspace = ?').run(selected);
123
+ for (const id of expected)
124
+ db.prepare('INSERT OR IGNORE INTO activation VALUES (?, ?)').run(selected, id);
125
+ })();
126
+ return;
127
+ }
128
+ const inherited = activeEntries(selected);
129
+ const defaults = selected === fs.realpathSync(os.homedir()) ? [] : defaultEntries.filter((id) => known(id) && !inherited.includes(id));
130
+ if (!inherited.length && !defaults.length)
131
+ return;
132
+ const legacy = path.join(directory, 'active');
133
+ try {
134
+ removeLegacyLinks(selected, legacy);
135
+ writeLibraryManifest(selected, inherited.map((id) => {
136
+ const entry = document(id);
137
+ const slug = entry.kind === 'connector' ? entry.name : installationFolder(entry.content, entry.name);
138
+ const files = entry.kind === 'connector' ? {} : componentFileHashes(selected, installableComponent(entry), false);
139
+ return { id, kind: entry.kind, name: entry.name, slug, files, skipClaude: false };
140
+ }));
141
+ }
142
+ catch {
143
+ return;
144
+ }
145
+ db.prepare('DELETE FROM activation WHERE workspace = ?').run(selected);
146
+ for (const id of [...inherited, ...defaults]) {
147
+ try {
148
+ setEnabled(selected, id, true);
149
+ }
150
+ catch {
151
+ writeLibraryManifest(selected, (readLibraryManifest(selected) ?? []).filter((entry) => entry.id !== id));
152
+ }
153
+ }
154
+ fs.rmSync(path.join(legacy, createHash('sha256').update(selected).digest('hex')), { recursive: true, force: true });
155
+ }
90
156
  function list(workspacePath) {
91
157
  const selected = workspacePath ? workspace(workspacePath) : '';
158
+ if (selected)
159
+ reconcile(selected);
92
160
  return db.prepare(`SELECT e.id, e.kind, e.name, e.description,
93
161
  EXISTS(SELECT 1 FROM activation a WHERE a.entry_id = e.id AND a.workspace = ?) AS enabled,
94
- (SELECT ce.collection_id FROM collection_entries ce WHERE ce.entry_id = e.id LIMIT 1) AS collectionId
162
+ (SELECT ce.collection_id FROM collection_entries ce WHERE ce.entry_id = e.id LIMIT 1) AS collectionId,
163
+ (SELECT json_group_array(o.source) FROM origins o WHERE o.entry_id = e.id) AS sources
95
164
  FROM entries e ORDER BY e.name COLLATE NOCASE`).all(selected).map((row) => {
96
165
  const entry = row;
97
- return { ...entry, enabled: Boolean(entry.enabled), collectionId: entry.collectionId || null };
166
+ return { ...entry, enabled: Boolean(entry.enabled), collectionId: entry.collectionId || null, sources: JSON.parse(entry.sources) };
98
167
  });
99
168
  }
100
169
  function persistImportedEntry(source, kind, name, description, content, assets, id) {
@@ -193,10 +262,6 @@ export function createLibraryStore(home) {
193
262
  if (entry.content !== previousContent)
194
263
  throw new Error('Le document a été modifié ailleurs. Rouvrez-le avant d’enregistrer.');
195
264
  const active = db.prepare('SELECT workspace FROM activation WHERE entry_id = ?').all(id);
196
- if (entry.kind !== 'connector' && installationFolder(content) !== installationFolder(entry.content)) {
197
- for (const { workspace: selected } of active)
198
- setEnabled(selected, id, false);
199
- }
200
265
  if (entry.kind === 'connector') {
201
266
  const config = parseConnectorConfig(content);
202
267
  const description = config.url || config.command || entry.name;
@@ -279,6 +344,8 @@ export function createLibraryStore(home) {
279
344
  }
280
345
  function listCollections(workspacePath) {
281
346
  const selected = workspacePath ? workspace(workspacePath) : '';
347
+ if (selected)
348
+ reconcile(selected);
282
349
  return db.prepare(`SELECT c.id, c.name, c.description, c.source,
283
350
  COUNT(ce.entry_id) AS entryCount,
284
351
  SUM(CASE WHEN a.entry_id IS NOT NULL THEN 1 ELSE 0 END) AS enabledCount
@@ -434,7 +501,7 @@ export function createLibraryStore(home) {
434
501
  }
435
502
  throw new Error('Fichier introuvable.');
436
503
  }
437
- function setCollectionEnabled(workspacePath, id, enabled) {
504
+ function setCollectionEnabled(workspacePath, id, enabled, options = {}) {
438
505
  if (typeof enabled !== 'boolean')
439
506
  throw new Error('Activation booléenne requise.');
440
507
  const selected = workspace(workspacePath);
@@ -447,7 +514,7 @@ export function createLibraryStore(home) {
447
514
  for (const mapping of mappings) {
448
515
  if (active.has(mapping.entryId) === enabled)
449
516
  continue;
450
- setEnabled(selected, mapping.entryId, enabled);
517
+ setEnabled(selected, mapping.entryId, enabled, options);
451
518
  changed.push(mapping.entryId);
452
519
  }
453
520
  }
@@ -458,71 +525,30 @@ export function createLibraryStore(home) {
458
525
  }
459
526
  return listCollections(selected).find((collection) => collection.id === id);
460
527
  }
461
- function setEnabled(workspacePath, id, enabled) {
528
+ function setEnabled(workspacePath, id, enabled, options = {}) {
462
529
  if (typeof enabled !== 'boolean')
463
530
  throw new Error('Activation booléenne requise.');
464
531
  const selected = workspace(workspacePath);
465
532
  const entry = document(id);
533
+ const manifest = readLibraryManifest(selected) ?? [];
534
+ const previous = manifest.find((item) => item.id === id);
535
+ const skipClaude = options.skipClaude ?? previous?.skipClaude ?? false;
536
+ const installed = { id, kind: entry.kind, name: entry.name, slug: entry.name, files: {}, skipClaude };
466
537
  if (entry.kind === 'connector') {
467
- prepareConnectorInstallation(selected, entry.name, parseConnectorConfig(entry.content), enabled)();
468
- if (enabled)
469
- db.prepare('INSERT OR IGNORE INTO activation VALUES (?, ?)').run(selected, id);
470
- else
471
- db.prepare('DELETE FROM activation WHERE workspace = ? AND entry_id = ?').run(selected, id);
472
- return { ok: true, enabled };
473
- }
474
- const packageRoot = path.join(directory, 'active', createHash('sha256').update(selected).digest('hex'), id);
475
- const install = prepareWorkspaceInstallation(selected, id, installationFolder(entry.content, entry.name), packageRoot, entry.kind, enabled);
476
- if (enabled) {
477
- fs.mkdirSync(path.dirname(packageRoot), { recursive: true, mode: 0o700 });
478
- if (!fs.realpathSync(path.dirname(packageRoot)).startsWith(fs.realpathSync(directory) + path.sep))
479
- throw new Error('Répertoire d’activation non autorisé.');
480
- const staging = fs.mkdtempSync(path.join(directory, '.activation-'));
481
- const backup = `${staging}.previous`;
482
- try {
483
- for (const [relative, bytes] of Object.entries(entry.assets)) {
484
- const target = path.resolve(staging, relative);
485
- if (!target.startsWith(staging + path.sep))
486
- throw new Error('Chemin associé invalide.');
487
- fs.mkdirSync(path.dirname(target), { recursive: true, mode: 0o700 });
488
- fs.writeFileSync(target, Buffer.from(bytes, 'base64'), { mode: 0o600 });
489
- }
490
- if (entry.kind === 'skill')
491
- fs.writeFileSync(path.join(staging, 'SKILL.md'), entry.content, { mode: 0o600 });
492
- else {
493
- fs.writeFileSync(path.join(staging, 'agent.md'), entry.content, { mode: 0o600 });
494
- const { data, content } = parseFrontMatter(entry.content);
495
- const toml = Object.entries({ name: String(data.name || entry.name), description: entry.description || entry.name, developer_instructions: content })
496
- .map(([key, value]) => `${key} = ${JSON.stringify(value)}`).join('\n');
497
- fs.writeFileSync(path.join(staging, 'agent.toml'), `${toml}\n`, { mode: 0o600 });
498
- }
499
- if (fs.existsSync(packageRoot))
500
- fs.renameSync(packageRoot, backup);
501
- try {
502
- fs.renameSync(staging, packageRoot);
503
- install();
504
- }
505
- catch (error) {
506
- fs.rmSync(packageRoot, { recursive: true, force: true });
507
- if (fs.existsSync(backup))
508
- fs.renameSync(backup, packageRoot);
509
- throw error;
510
- }
511
- }
512
- finally {
513
- fs.rmSync(staging, { recursive: true, force: true });
514
- fs.rmSync(backup, { recursive: true, force: true });
515
- }
516
- }
517
- else if (fs.existsSync(path.dirname(packageRoot))) {
518
- if (!fs.realpathSync(path.dirname(packageRoot)).startsWith(fs.realpathSync(directory) + path.sep))
519
- throw new Error('Répertoire d’activation non autorisé.');
520
- install();
521
- fs.rmSync(packageRoot, { recursive: true, force: true });
538
+ prepareConnectorInstallation(selected, entry.name, parseConnectorConfig(entry.content), enabled, skipClaude)();
522
539
  }
523
540
  else {
524
- install();
541
+ const component = installableComponent(entry);
542
+ const installation = prepareWorkspaceInstallation(selected, previous, enabled ? { component, skipClaude } : null);
543
+ installation.commit();
544
+ installed.slug = component.slug;
545
+ installed.files = installation.files;
525
546
  }
547
+ const others = manifest.filter((item) => item.id !== id);
548
+ if (enabled)
549
+ writeLibraryManifest(selected, [...others, installed]);
550
+ else if (previous)
551
+ writeLibraryManifest(selected, others);
526
552
  if (enabled)
527
553
  db.prepare('INSERT OR IGNORE INTO activation VALUES (?, ?)').run(selected, id);
528
554
  else
@@ -531,13 +557,14 @@ export function createLibraryStore(home) {
531
557
  }
532
558
  function instructions(workspacePath) {
533
559
  const selected = workspace(workspacePath);
560
+ reconcile(selected);
534
561
  const entries = db.prepare(`SELECT e.* FROM entries e JOIN activation a ON a.entry_id = e.id
535
562
  WHERE a.workspace = ? AND e.kind IN ('skill', 'agent') ORDER BY e.name`).all(selected);
536
563
  return entries.map((entry) => {
537
564
  const assets = JSON.parse(entry.assets);
538
565
  const references = Object.entries(assets).filter(([name]) => name === 'table-columns.yaml')
539
566
  .map(([name, bytes]) => `### ${name}\n${Buffer.from(bytes, 'base64').toString('utf8')}`);
540
- const packageRoot = path.join(directory, 'active', createHash('sha256').update(selected).digest('hex'), entry.id);
567
+ const packageRoot = path.join(selected, '.agents', 'skills', installationFolder(entry.content, entry.name));
541
568
  return `## ${entry.kind === 'agent' ? 'Instructions de rôle' : 'Skill'} : ${entry.name}\n${entry.content}\n${references.join('\n\n')}\nFichiers associés disponibles dans : ${packageRoot}\n${Object.keys(assets).join('\n')}`;
542
569
  }).join('\n\n');
543
570
  }
@@ -560,6 +587,7 @@ export function createLibraryStore(home) {
560
587
  collectionFile,
561
588
  updateCollectionFile,
562
589
  setCollectionEnabled,
590
+ setDefaultEntries: (ids) => { defaultEntries = ids; },
563
591
  close: () => db.close(),
564
592
  };
565
593
  }