@starlein/paperclip-plugin-company-wizard 0.4.6 → 0.4.7

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 (61) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +6 -4
  3. package/dist/manifest.js +1 -1
  4. package/dist/manifest.js.map +1 -1
  5. package/dist/ui/index.css +82 -0
  6. package/dist/ui/index.css.map +2 -2
  7. package/dist/ui/index.js +422 -137
  8. package/dist/ui/index.js.map +4 -4
  9. package/dist/worker.js +352 -21
  10. package/dist/worker.js.map +3 -3
  11. package/package.json +1 -1
  12. package/templates/bootstrap-instructions.md +2 -2
  13. package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +1 -1
  14. package/templates/modules/architecture-plan/skills/architecture-plan.md +1 -1
  15. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
  16. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
  17. package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
  18. package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
  19. package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
  20. package/templates/modules/backlog/docs/backlog-process.md +38 -1
  21. package/templates/modules/backlog/docs/backlog-template.md +1 -1
  22. package/templates/modules/backlog/module.meta.json +1 -1
  23. package/templates/modules/backlog/skills/backlog-health.bar.md +2 -0
  24. package/templates/modules/backlog/skills/backlog-health.md +7 -4
  25. package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
  26. package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +63 -16
  27. package/templates/modules/github-repo/docs/git-workflow.md +18 -16
  28. package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
  29. package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
  30. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
  31. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +31 -12
  32. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
  33. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
  34. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
  35. package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
  36. package/templates/modules/pr-review/module.meta.json +1 -1
  37. package/templates/modules/security-audit/skills/threat-model.md +1 -1
  38. package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
  39. package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
  40. package/templates/modules/triage/skills/issue-triage.md +1 -1
  41. package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
  42. package/templates/modules/user-testing/skills/user-testing.md +1 -1
  43. package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
  44. package/templates/presets/repo-maintenance/preset.meta.json +3 -3
  45. package/templates/roles/audio-designer/role.meta.json +5 -2
  46. package/templates/roles/cmo/role.meta.json +2 -1
  47. package/templates/roles/code-reviewer/AGENTS.md +3 -3
  48. package/templates/roles/code-reviewer/role.meta.json +4 -1
  49. package/templates/roles/cto/role.meta.json +2 -1
  50. package/templates/roles/customer-success/role.meta.json +2 -1
  51. package/templates/roles/devops/role.meta.json +2 -1
  52. package/templates/roles/engineer/role.meta.json +2 -1
  53. package/templates/roles/game-artist/role.meta.json +5 -2
  54. package/templates/roles/game-designer/role.meta.json +4 -1
  55. package/templates/roles/level-designer/role.meta.json +4 -1
  56. package/templates/roles/product-owner/role.meta.json +4 -1
  57. package/templates/roles/qa/role.meta.json +2 -1
  58. package/templates/roles/security-engineer/role.meta.json +2 -1
  59. package/templates/roles/technical-writer/role.meta.json +2 -1
  60. package/templates/roles/ui-designer/role.meta.json +2 -1
  61. package/templates/roles/ux-researcher/role.meta.json +4 -1
package/dist/ui/index.js CHANGED
@@ -180,23 +180,38 @@ var ChevronLeft = createLucideIcon("chevron-left", __iconNode8);
180
180
  var __iconNode9 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
181
181
  var ChevronRight = createLucideIcon("chevron-right", __iconNode9);
182
182
 
183
- // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/circle-check.js
183
+ // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/circle-alert.js
184
184
  var __iconNode10 = [
185
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
186
+ ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
187
+ ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
188
+ ];
189
+ var CircleAlert = createLucideIcon("circle-alert", __iconNode10);
190
+
191
+ // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/circle-check-big.js
192
+ var __iconNode11 = [
193
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
194
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
195
+ ];
196
+ var CircleCheckBig = createLucideIcon("circle-check-big", __iconNode11);
197
+
198
+ // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/circle-check.js
199
+ var __iconNode12 = [
185
200
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
186
201
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
187
202
  ];
188
- var CircleCheck = createLucideIcon("circle-check", __iconNode10);
203
+ var CircleCheck = createLucideIcon("circle-check", __iconNode12);
189
204
 
190
205
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/circle-plus.js
191
- var __iconNode11 = [
206
+ var __iconNode13 = [
192
207
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
193
208
  ["path", { d: "M8 12h8", key: "1wcyev" }],
194
209
  ["path", { d: "M12 8v8", key: "napkw2" }]
195
210
  ];
196
- var CirclePlus = createLucideIcon("circle-plus", __iconNode11);
211
+ var CirclePlus = createLucideIcon("circle-plus", __iconNode13);
197
212
 
198
213
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/clipboard-check.js
199
- var __iconNode12 = [
214
+ var __iconNode14 = [
200
215
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
201
216
  [
202
217
  "path",
@@ -207,10 +222,10 @@ var __iconNode12 = [
207
222
  ],
208
223
  ["path", { d: "m9 14 2 2 4-4", key: "df797q" }]
209
224
  ];
210
- var ClipboardCheck = createLucideIcon("clipboard-check", __iconNode12);
225
+ var ClipboardCheck = createLucideIcon("clipboard-check", __iconNode14);
211
226
 
212
227
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/cpu.js
213
- var __iconNode13 = [
228
+ var __iconNode15 = [
214
229
  ["path", { d: "M12 20v2", key: "1lh1kg" }],
215
230
  ["path", { d: "M12 2v2", key: "tus03m" }],
216
231
  ["path", { d: "M17 20v2", key: "1rnc9c" }],
@@ -226,10 +241,10 @@ var __iconNode13 = [
226
241
  ["rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", key: "1vbyd7" }],
227
242
  ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1", key: "z9xiuo" }]
228
243
  ];
229
- var Cpu = createLucideIcon("cpu", __iconNode13);
244
+ var Cpu = createLucideIcon("cpu", __iconNode15);
230
245
 
231
246
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/crown.js
232
- var __iconNode14 = [
247
+ var __iconNode16 = [
233
248
  [
234
249
  "path",
235
250
  {
@@ -239,18 +254,18 @@ var __iconNode14 = [
239
254
  ],
240
255
  ["path", { d: "M5 21h14", key: "11awu3" }]
241
256
  ];
242
- var Crown = createLucideIcon("crown", __iconNode14);
257
+ var Crown = createLucideIcon("crown", __iconNode16);
243
258
 
244
259
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/external-link.js
245
- var __iconNode15 = [
260
+ var __iconNode17 = [
246
261
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
247
262
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
248
263
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
249
264
  ];
250
- var ExternalLink = createLucideIcon("external-link", __iconNode15);
265
+ var ExternalLink = createLucideIcon("external-link", __iconNode17);
251
266
 
252
267
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-text.js
253
- var __iconNode16 = [
268
+ var __iconNode18 = [
254
269
  [
255
270
  "path",
256
271
  {
@@ -263,10 +278,10 @@ var __iconNode16 = [
263
278
  ["path", { d: "M16 13H8", key: "t4e002" }],
264
279
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
265
280
  ];
266
- var FileText = createLucideIcon("file-text", __iconNode16);
281
+ var FileText = createLucideIcon("file-text", __iconNode18);
267
282
 
268
283
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/flask-conical.js
269
- var __iconNode17 = [
284
+ var __iconNode19 = [
270
285
  [
271
286
  "path",
272
287
  {
@@ -277,18 +292,18 @@ var __iconNode17 = [
277
292
  ["path", { d: "M6.453 15h11.094", key: "3shlmq" }],
278
293
  ["path", { d: "M8.5 2h7", key: "csnxdl" }]
279
294
  ];
280
- var FlaskConical = createLucideIcon("flask-conical", __iconNode17);
295
+ var FlaskConical = createLucideIcon("flask-conical", __iconNode19);
281
296
 
282
297
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/git-branch.js
283
- var __iconNode18 = [
298
+ var __iconNode20 = [
284
299
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
285
300
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
286
301
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
287
302
  ];
288
- var GitBranch = createLucideIcon("git-branch", __iconNode18);
303
+ var GitBranch = createLucideIcon("git-branch", __iconNode20);
289
304
 
290
305
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/github.js
291
- var __iconNode19 = [
306
+ var __iconNode21 = [
292
307
  [
293
308
  "path",
294
309
  {
@@ -298,10 +313,10 @@ var __iconNode19 = [
298
313
  ],
299
314
  ["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
300
315
  ];
301
- var Github = createLucideIcon("github", __iconNode19);
316
+ var Github = createLucideIcon("github", __iconNode21);
302
317
 
303
318
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/layers.js
304
- var __iconNode20 = [
319
+ var __iconNode22 = [
305
320
  [
306
321
  "path",
307
322
  {
@@ -324,31 +339,31 @@ var __iconNode20 = [
324
339
  }
325
340
  ]
326
341
  ];
327
- var Layers = createLucideIcon("layers", __iconNode20);
342
+ var Layers = createLucideIcon("layers", __iconNode22);
328
343
 
329
344
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/list-checks.js
330
- var __iconNode21 = [
345
+ var __iconNode23 = [
331
346
  ["path", { d: "M13 5h8", key: "a7qcls" }],
332
347
  ["path", { d: "M13 12h8", key: "h98zly" }],
333
348
  ["path", { d: "M13 19h8", key: "c3s6r1" }],
334
349
  ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
335
350
  ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }]
336
351
  ];
337
- var ListChecks = createLucideIcon("list-checks", __iconNode21);
352
+ var ListChecks = createLucideIcon("list-checks", __iconNode23);
338
353
 
339
354
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/loader-circle.js
340
- var __iconNode22 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
341
- var LoaderCircle = createLucideIcon("loader-circle", __iconNode22);
355
+ var __iconNode24 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
356
+ var LoaderCircle = createLucideIcon("loader-circle", __iconNode24);
342
357
 
343
358
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/lock.js
344
- var __iconNode23 = [
359
+ var __iconNode25 = [
345
360
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
346
361
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
347
362
  ];
348
- var Lock = createLucideIcon("lock", __iconNode23);
363
+ var Lock = createLucideIcon("lock", __iconNode25);
349
364
 
350
365
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/message-square.js
351
- var __iconNode24 = [
366
+ var __iconNode26 = [
352
367
  [
353
368
  "path",
354
369
  {
@@ -357,10 +372,10 @@ var __iconNode24 = [
357
372
  }
358
373
  ]
359
374
  ];
360
- var MessageSquare = createLucideIcon("message-square", __iconNode24);
375
+ var MessageSquare = createLucideIcon("message-square", __iconNode26);
361
376
 
362
377
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/pencil.js
363
- var __iconNode25 = [
378
+ var __iconNode27 = [
364
379
  [
365
380
  "path",
366
381
  {
@@ -370,19 +385,19 @@ var __iconNode25 = [
370
385
  ],
371
386
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
372
387
  ];
373
- var Pencil = createLucideIcon("pencil", __iconNode25);
388
+ var Pencil = createLucideIcon("pencil", __iconNode27);
374
389
 
375
390
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/refresh-cw.js
376
- var __iconNode26 = [
391
+ var __iconNode28 = [
377
392
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
378
393
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
379
394
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
380
395
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
381
396
  ];
382
- var RefreshCw = createLucideIcon("refresh-cw", __iconNode26);
397
+ var RefreshCw = createLucideIcon("refresh-cw", __iconNode28);
383
398
 
384
399
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/rocket.js
385
- var __iconNode27 = [
400
+ var __iconNode29 = [
386
401
  ["path", { d: "M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5", key: "qeys4" }],
387
402
  [
388
403
  "path",
@@ -400,17 +415,17 @@ var __iconNode27 = [
400
415
  ],
401
416
  ["path", { d: "M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05", key: "92ym6u" }]
402
417
  ];
403
- var Rocket = createLucideIcon("rocket", __iconNode27);
418
+ var Rocket = createLucideIcon("rocket", __iconNode29);
404
419
 
405
420
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js
406
- var __iconNode28 = [
421
+ var __iconNode30 = [
407
422
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
408
423
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
409
424
  ];
410
- var RotateCcw = createLucideIcon("rotate-ccw", __iconNode28);
425
+ var RotateCcw = createLucideIcon("rotate-ccw", __iconNode30);
411
426
 
412
427
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/send.js
413
- var __iconNode29 = [
428
+ var __iconNode31 = [
414
429
  [
415
430
  "path",
416
431
  {
@@ -420,19 +435,19 @@ var __iconNode29 = [
420
435
  ],
421
436
  ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
422
437
  ];
423
- var Send = createLucideIcon("send", __iconNode29);
438
+ var Send = createLucideIcon("send", __iconNode31);
424
439
 
425
440
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/settings-2.js
426
- var __iconNode30 = [
441
+ var __iconNode32 = [
427
442
  ["path", { d: "M14 17H5", key: "gfn3mx" }],
428
443
  ["path", { d: "M19 7h-9", key: "6i9tg" }],
429
444
  ["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }],
430
445
  ["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }]
431
446
  ];
432
- var Settings2 = createLucideIcon("settings-2", __iconNode30);
447
+ var Settings2 = createLucideIcon("settings-2", __iconNode32);
433
448
 
434
449
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/settings.js
435
- var __iconNode31 = [
450
+ var __iconNode33 = [
436
451
  [
437
452
  "path",
438
453
  {
@@ -442,10 +457,10 @@ var __iconNode31 = [
442
457
  ],
443
458
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
444
459
  ];
445
- var Settings = createLucideIcon("settings", __iconNode31);
460
+ var Settings = createLucideIcon("settings", __iconNode33);
446
461
 
447
462
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shield.js
448
- var __iconNode32 = [
463
+ var __iconNode34 = [
449
464
  [
450
465
  "path",
451
466
  {
@@ -454,10 +469,10 @@ var __iconNode32 = [
454
469
  }
455
470
  ]
456
471
  ];
457
- var Shield = createLucideIcon("shield", __iconNode32);
472
+ var Shield = createLucideIcon("shield", __iconNode34);
458
473
 
459
474
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/sparkles.js
460
- var __iconNode33 = [
475
+ var __iconNode35 = [
461
476
  [
462
477
  "path",
463
478
  {
@@ -469,18 +484,18 @@ var __iconNode33 = [
469
484
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
470
485
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
471
486
  ];
472
- var Sparkles = createLucideIcon("sparkles", __iconNode33);
487
+ var Sparkles = createLucideIcon("sparkles", __iconNode35);
473
488
 
474
489
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/target.js
475
- var __iconNode34 = [
490
+ var __iconNode36 = [
476
491
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
477
492
  ["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }],
478
493
  ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
479
494
  ];
480
- var Target = createLucideIcon("target", __iconNode34);
495
+ var Target = createLucideIcon("target", __iconNode36);
481
496
 
482
497
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/triangle-alert.js
483
- var __iconNode35 = [
498
+ var __iconNode37 = [
484
499
  [
485
500
  "path",
486
501
  {
@@ -491,34 +506,51 @@ var __iconNode35 = [
491
506
  ["path", { d: "M12 9v4", key: "juzpu7" }],
492
507
  ["path", { d: "M12 17h.01", key: "p32p05" }]
493
508
  ];
494
- var TriangleAlert = createLucideIcon("triangle-alert", __iconNode35);
509
+ var TriangleAlert = createLucideIcon("triangle-alert", __iconNode37);
510
+
511
+ // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/user-minus.js
512
+ var __iconNode38 = [
513
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
514
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
515
+ ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }]
516
+ ];
517
+ var UserMinus = createLucideIcon("user-minus", __iconNode38);
518
+
519
+ // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/user-plus.js
520
+ var __iconNode39 = [
521
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
522
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }],
523
+ ["line", { x1: "19", x2: "19", y1: "8", y2: "14", key: "1bvyxn" }],
524
+ ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }]
525
+ ];
526
+ var UserPlus = createLucideIcon("user-plus", __iconNode39);
495
527
 
496
528
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/user.js
497
- var __iconNode36 = [
529
+ var __iconNode40 = [
498
530
  ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
499
531
  ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
500
532
  ];
501
- var User = createLucideIcon("user", __iconNode36);
533
+ var User = createLucideIcon("user", __iconNode40);
502
534
 
503
535
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/users.js
504
- var __iconNode37 = [
536
+ var __iconNode41 = [
505
537
  ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
506
538
  ["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
507
539
  ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
508
540
  ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
509
541
  ];
510
- var Users = createLucideIcon("users", __iconNode37);
542
+ var Users = createLucideIcon("users", __iconNode41);
511
543
 
512
544
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/workflow.js
513
- var __iconNode38 = [
545
+ var __iconNode42 = [
514
546
  ["rect", { width: "8", height: "8", x: "3", y: "3", rx: "2", key: "by2w9f" }],
515
547
  ["path", { d: "M7 11v4a2 2 0 0 0 2 2h4", key: "xkn7yn" }],
516
548
  ["rect", { width: "8", height: "8", x: "13", y: "13", rx: "2", key: "1cgmvn" }]
517
549
  ];
518
- var Workflow = createLucideIcon("workflow", __iconNode38);
550
+ var Workflow = createLucideIcon("workflow", __iconNode42);
519
551
 
520
552
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/wrench.js
521
- var __iconNode39 = [
553
+ var __iconNode43 = [
522
554
  [
523
555
  "path",
524
556
  {
@@ -527,17 +559,17 @@ var __iconNode39 = [
527
559
  }
528
560
  ]
529
561
  ];
530
- var Wrench = createLucideIcon("wrench", __iconNode39);
562
+ var Wrench = createLucideIcon("wrench", __iconNode43);
531
563
 
532
564
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/x.js
533
- var __iconNode40 = [
565
+ var __iconNode44 = [
534
566
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
535
567
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
536
568
  ];
537
- var X = createLucideIcon("x", __iconNode40);
569
+ var X = createLucideIcon("x", __iconNode44);
538
570
 
539
571
  // node_modules/.pnpm/lucide-react@0.574.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/zap.js
540
- var __iconNode41 = [
572
+ var __iconNode45 = [
541
573
  [
542
574
  "path",
543
575
  {
@@ -546,10 +578,10 @@ var __iconNode41 = [
546
578
  }
547
579
  ]
548
580
  ];
549
- var Zap = createLucideIcon("zap", __iconNode41);
581
+ var Zap = createLucideIcon("zap", __iconNode45);
550
582
 
551
583
  // src/ui/components/WizardShell.tsx
552
- import { useEffect as useEffect7 } from "react";
584
+ import { useEffect as useEffect8 } from "react";
553
585
 
554
586
  // src/ui/context/WizardContext.tsx
555
587
  import { createContext, useCallback, useContext, useState } from "react";
@@ -567,17 +599,33 @@ var MANUAL_STEPS = [
567
599
  "done"
568
600
  ];
569
601
  var AI_STEPS = ["onboarding", "ai-wizard", "provision", "done"];
602
+ var UPDATE_STEPS = [
603
+ "onboarding",
604
+ "existing-company",
605
+ "preset",
606
+ "modules",
607
+ "roles",
608
+ "summary",
609
+ "preview",
610
+ "provision",
611
+ "done"
612
+ ];
613
+ function stepsForPath(path) {
614
+ if (path === "ai") return AI_STEPS;
615
+ if (path === "update") return UPDATE_STEPS;
616
+ return MANUAL_STEPS;
617
+ }
570
618
  function getTotalSteps(state) {
571
- const steps = state.path === "ai" ? AI_STEPS : MANUAL_STEPS;
619
+ const steps = stepsForPath(state.path);
572
620
  return steps.filter((s) => s !== "onboarding" && s !== "provision" && s !== "done").length;
573
621
  }
574
622
  function getUserStepIndex(state) {
575
- const steps = state.path === "ai" ? AI_STEPS : MANUAL_STEPS;
623
+ const steps = stepsForPath(state.path);
576
624
  const userSteps = steps.filter((s) => s !== "onboarding" && s !== "provision" && s !== "done");
577
625
  return userSteps.indexOf(state.step) + 1;
578
626
  }
579
627
  function nextStep(state) {
580
- const steps = state.path === "ai" ? AI_STEPS : MANUAL_STEPS;
628
+ const steps = stepsForPath(state.path);
581
629
  const idx = steps.indexOf(state.step);
582
630
  return steps[Math.min(idx + 1, steps.length - 1)];
583
631
  }
@@ -622,12 +670,13 @@ var initialState = {
622
670
  };
623
671
  function reducer(state, action) {
624
672
  switch (action.type) {
625
- case "SET_PATH":
626
- return {
627
- ...state,
628
- path: action.path,
629
- step: action.path === "ai" ? "ai-wizard" : "name"
630
- };
673
+ case "SET_PATH": {
674
+ let step;
675
+ if (action.path === "ai") step = "ai-wizard";
676
+ else if (action.path === "update") step = "existing-company";
677
+ else step = "name";
678
+ return { ...state, path: action.path, step };
679
+ }
631
680
  case "GO_TO":
632
681
  return { ...state, step: action.step, error: null };
633
682
  case "SET_COMPANY_NAME":
@@ -4046,7 +4095,7 @@ function StepOnboarding() {
4046
4095
  /* @__PURE__ */ jsx3("h1", { className: "text-2xl font-semibold tracking-tight", children: "Create a company" }),
4047
4096
  /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground", children: "Choose how you'd like to set up your AI agent organization." })
4048
4097
  ] }),
4049
- /* @__PURE__ */ jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [
4098
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [
4050
4099
  /* @__PURE__ */ jsx3(
4051
4100
  PathCard,
4052
4101
  {
@@ -4076,6 +4125,21 @@ function StepOnboarding() {
4076
4125
  ],
4077
4126
  onClick: () => dispatch({ type: "SET_PATH", path: "ai" })
4078
4127
  }
4128
+ ),
4129
+ /* @__PURE__ */ jsx3(
4130
+ PathCard,
4131
+ {
4132
+ icon: RefreshCw,
4133
+ title: "Update existing company",
4134
+ description: "Re-provision or modify an existing org",
4135
+ details: [
4136
+ "Select company by ID",
4137
+ "Choose preset, modules, and roles",
4138
+ "Preview changes before applying",
4139
+ "Preserves individual skill assignments"
4140
+ ],
4141
+ onClick: () => dispatch({ type: "SET_PATH", path: "update" })
4142
+ }
4079
4143
  )
4080
4144
  ] }),
4081
4145
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 pt-2", children: [
@@ -6085,7 +6149,13 @@ function StepSummary() {
6085
6149
  ] }),
6086
6150
  /* @__PURE__ */ jsxs9("div", { className: "flex justify-end gap-3", children: [
6087
6151
  /* @__PURE__ */ jsx15(Button, { variant: "outline", onClick: () => dispatch({ type: "GO_TO", step: "roles" }), children: "Back" }),
6088
- /* @__PURE__ */ jsx15(Button, { onClick: () => dispatch({ type: "GO_TO", step: "provision" }), children: state.existingCompanyId ? "Provision into Existing Company" : "Create Company" })
6152
+ /* @__PURE__ */ jsx15(
6153
+ Button,
6154
+ {
6155
+ onClick: () => dispatch({ type: "GO_TO", step: state.path === "update" ? "preview" : "provision" }),
6156
+ children: state.existingCompanyId ? "Preview Changes" : "Create Company"
6157
+ }
6158
+ )
6089
6159
  ] })
6090
6160
  ] });
6091
6161
  }
@@ -7051,74 +7121,283 @@ function StepProvision() {
7051
7121
  ] });
7052
7122
  }
7053
7123
 
7054
- // src/ui/components/steps/StepDone.tsx
7124
+ // src/ui/components/steps/StepPreview.tsx
7125
+ import { useEffect as useEffect7, useRef as useRef6, useState as useState9 } from "react";
7126
+ import { usePluginAction as usePluginAction6 } from "@paperclipai/plugin-sdk/ui";
7055
7127
  import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
7128
+ function AgentActionIcon({ action }) {
7129
+ switch (action) {
7130
+ case "hire":
7131
+ return /* @__PURE__ */ jsx18(UserPlus, { className: "h-4 w-4 text-green-500 shrink-0" });
7132
+ case "update":
7133
+ return /* @__PURE__ */ jsx18(RefreshCw, { className: "h-4 w-4 text-blue-500 shrink-0" });
7134
+ case "retire":
7135
+ return /* @__PURE__ */ jsx18(UserMinus, { className: "h-4 w-4 text-red-500 shrink-0" });
7136
+ default:
7137
+ return null;
7138
+ }
7139
+ }
7140
+ function ActionBadge({ action }) {
7141
+ const colorMap = {
7142
+ hire: "bg-green-500/10 text-green-700 dark:text-green-400 border-green-500/20",
7143
+ update: "bg-blue-500/10 text-blue-700 dark:text-blue-400 border-blue-500/20",
7144
+ retire: "bg-red-500/10 text-red-700 dark:text-red-400 border-red-500/20",
7145
+ create: "bg-green-500/10 text-green-700 dark:text-green-400 border-green-500/20"
7146
+ };
7147
+ const cls = colorMap[action] || "bg-muted text-muted-foreground border-border";
7148
+ return /* @__PURE__ */ jsx18(
7149
+ "span",
7150
+ {
7151
+ className: `inline-flex items-center rounded border px-1.5 py-0.5 text-xs font-medium ${cls}`,
7152
+ children: action
7153
+ }
7154
+ );
7155
+ }
7156
+ function StepPreview() {
7157
+ const state = useWizard();
7158
+ const dispatch = useWizardDispatch();
7159
+ const previewAction = usePluginAction6("preview-company-update");
7160
+ const [diff, setDiff] = useState9(null);
7161
+ const [loading, setLoading] = useState9(true);
7162
+ const [error, setError] = useState9(null);
7163
+ const started = useRef6(false);
7164
+ useEffect7(() => {
7165
+ if (started.current) return;
7166
+ started.current = true;
7167
+ const allRoles = getAllRoles(state);
7168
+ previewAction({
7169
+ existingCompanyId: state.existingCompanyId,
7170
+ companyName: state.companyName || void 0,
7171
+ presetName: state.presetName,
7172
+ selectedModules: state.selectedModules,
7173
+ selectedRoles: state.selectedRoles,
7174
+ goals: state.goals.length > 0 ? state.goals : void 0,
7175
+ projects: state.projects.length > 0 ? state.projects : void 0,
7176
+ issues: state.issues.length > 0 ? state.issues : void 0,
7177
+ allRoles
7178
+ }).then((result) => {
7179
+ if (result?.error) {
7180
+ setError(result.error);
7181
+ setLoading(false);
7182
+ return;
7183
+ }
7184
+ setDiff(result?.diff ?? null);
7185
+ setLoading(false);
7186
+ }).catch((err) => {
7187
+ setError(err instanceof Error ? err.message : "Preview failed");
7188
+ setLoading(false);
7189
+ });
7190
+ }, []);
7191
+ if (loading) {
7192
+ return /* @__PURE__ */ jsx18("div", { className: "space-y-6", children: /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
7193
+ /* @__PURE__ */ jsxs12("h2", { className: "text-xl font-semibold tracking-tight flex items-center gap-2", children: [
7194
+ /* @__PURE__ */ jsx18(LoaderCircle, { className: "h-5 w-5 animate-spin" }),
7195
+ "Loading preview..."
7196
+ ] }),
7197
+ /* @__PURE__ */ jsx18("p", { className: "text-sm text-muted-foreground", children: "Comparing your configuration against the existing company." })
7198
+ ] }) });
7199
+ }
7200
+ if (error || !diff) {
7201
+ return /* @__PURE__ */ jsxs12("div", { className: "space-y-6", children: [
7202
+ /* @__PURE__ */ jsx18("div", { className: "space-y-2", children: /* @__PURE__ */ jsx18("h2", { className: "text-xl font-semibold tracking-tight", children: "Preview failed" }) }),
7203
+ /* @__PURE__ */ jsxs12("div", { className: "rounded-lg border border-destructive/30 bg-destructive/5 p-4 space-y-3", children: [
7204
+ /* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3", children: [
7205
+ /* @__PURE__ */ jsx18(CircleAlert, { className: "h-5 w-5 text-destructive shrink-0 mt-0.5" }),
7206
+ /* @__PURE__ */ jsxs12("div", { className: "space-y-1", children: [
7207
+ /* @__PURE__ */ jsx18("p", { className: "text-sm font-medium", children: "Could not load preview" }),
7208
+ /* @__PURE__ */ jsx18("p", { className: "text-sm text-muted-foreground", children: error || "No diff data returned." })
7209
+ ] })
7210
+ ] }),
7211
+ /* @__PURE__ */ jsx18("div", { className: "pl-8", children: /* @__PURE__ */ jsx18(
7212
+ Button,
7213
+ {
7214
+ variant: "ghost",
7215
+ size: "sm",
7216
+ onClick: () => dispatch({ type: "GO_TO", step: "summary" }),
7217
+ children: "Back to Summary"
7218
+ }
7219
+ ) })
7220
+ ] })
7221
+ ] });
7222
+ }
7223
+ const hasRetire = diff.agents.some((a) => a.action === "retire");
7224
+ return /* @__PURE__ */ jsxs12("div", { className: "space-y-6", children: [
7225
+ /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
7226
+ /* @__PURE__ */ jsx18("h2", { className: "text-xl font-semibold tracking-tight", children: "Preview changes" }),
7227
+ /* @__PURE__ */ jsxs12("p", { className: "text-sm text-muted-foreground", children: [
7228
+ "Review what will change when you update",
7229
+ " ",
7230
+ /* @__PURE__ */ jsx18("span", { className: "font-medium", children: diff.companyName }),
7231
+ "."
7232
+ ] })
7233
+ ] }),
7234
+ /* @__PURE__ */ jsxs12("div", { className: "rounded-lg border p-4 space-y-3", children: [
7235
+ /* @__PURE__ */ jsxs12("h3", { className: "text-sm font-semibold", children: [
7236
+ "Agents (",
7237
+ diff.agents.length,
7238
+ ")"
7239
+ ] }),
7240
+ /* @__PURE__ */ jsx18("ul", { className: "space-y-2", children: diff.agents.map((agent) => /* @__PURE__ */ jsxs12("li", { className: "flex items-center gap-2", children: [
7241
+ /* @__PURE__ */ jsx18(AgentActionIcon, { action: agent.action }),
7242
+ /* @__PURE__ */ jsx18("span", { className: "text-sm flex-1", children: agent.title }),
7243
+ /* @__PURE__ */ jsx18(ActionBadge, { action: agent.action })
7244
+ ] }, `${agent.role}-${agent.action}`)) })
7245
+ ] }),
7246
+ diff.routines.length > 0 && /* @__PURE__ */ jsxs12("div", { className: "rounded-lg border p-4 space-y-3", children: [
7247
+ /* @__PURE__ */ jsxs12("h3", { className: "text-sm font-semibold", children: [
7248
+ "Routines (",
7249
+ diff.routines.length,
7250
+ ")"
7251
+ ] }),
7252
+ /* @__PURE__ */ jsx18("ul", { className: "space-y-2", children: diff.routines.map((routine) => /* @__PURE__ */ jsxs12("li", { className: "flex items-center gap-2", children: [
7253
+ /* @__PURE__ */ jsx18(CircleCheckBig, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
7254
+ /* @__PURE__ */ jsx18("span", { className: "text-sm flex-1", children: routine.title }),
7255
+ /* @__PURE__ */ jsx18(ActionBadge, { action: routine.action })
7256
+ ] }, routine.title)) })
7257
+ ] }),
7258
+ diff.desiredSkillsPreserved.length > 0 && /* @__PURE__ */ jsxs12("div", { className: "rounded-lg border p-4 space-y-3", children: [
7259
+ /* @__PURE__ */ jsx18("h3", { className: "text-sm font-semibold", children: "Preserved skills" }),
7260
+ /* @__PURE__ */ jsx18("p", { className: "text-xs text-muted-foreground", children: "The following agents have individually-assigned skills that will be preserved during the update." }),
7261
+ /* @__PURE__ */ jsx18("ul", { className: "space-y-2", children: diff.desiredSkillsPreserved.map((entry) => /* @__PURE__ */ jsxs12("li", { className: "text-sm", children: [
7262
+ /* @__PURE__ */ jsx18("span", { className: "font-medium", children: entry.agentName }),
7263
+ /* @__PURE__ */ jsxs12("span", { className: "text-muted-foreground", children: [
7264
+ " \u2014 ",
7265
+ entry.skills.join(", ")
7266
+ ] })
7267
+ ] }, entry.agentId)) })
7268
+ ] }),
7269
+ hasRetire && /* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 dark:bg-amber-500/5 p-4", children: [
7270
+ /* @__PURE__ */ jsx18(CircleAlert, { className: "h-4 w-4 text-amber-500 dark:text-amber-400 shrink-0 mt-0.5" }),
7271
+ /* @__PURE__ */ jsxs12("div", { className: "space-y-1", children: [
7272
+ /* @__PURE__ */ jsx18("p", { className: "text-sm font-medium text-amber-800 dark:text-amber-200", children: "Retired agents will not be auto-terminated" }),
7273
+ /* @__PURE__ */ jsx18("p", { className: "text-xs text-amber-700 dark:text-amber-300", children: "Roles removed from the configuration are marked for retirement, but the corresponding agents will not be terminated automatically. A review issue will be created so you can decide whether to terminate each agent." })
7274
+ ] })
7275
+ ] }),
7276
+ /* @__PURE__ */ jsx18("div", { className: "rounded-lg border p-4", children: /* @__PURE__ */ jsxs12("p", { className: "text-sm text-muted-foreground", children: [
7277
+ /* @__PURE__ */ jsx18("span", { className: "font-medium text-foreground", children: diff.plannedFiles }),
7278
+ " file",
7279
+ diff.plannedFiles !== 1 ? "s" : "",
7280
+ " will be generated in the company workspace."
7281
+ ] }) }),
7282
+ /* @__PURE__ */ jsxs12("div", { className: "flex justify-end gap-3", children: [
7283
+ /* @__PURE__ */ jsx18(Button, { variant: "outline", onClick: () => dispatch({ type: "GO_TO", step: "summary" }), children: "Back" }),
7284
+ /* @__PURE__ */ jsx18(Button, { onClick: () => dispatch({ type: "GO_TO", step: "provision" }), children: "Apply Update" })
7285
+ ] })
7286
+ ] });
7287
+ }
7288
+
7289
+ // src/ui/components/steps/StepExistingCompany.tsx
7290
+ import { useState as useState10 } from "react";
7291
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
7292
+ function StepExistingCompany() {
7293
+ const state = useWizard();
7294
+ const dispatch = useWizardDispatch();
7295
+ const [touched, setTouched] = useState10(false);
7296
+ const isEmpty = !state.existingCompanyId.trim();
7297
+ const handleNext = () => {
7298
+ if (isEmpty) {
7299
+ setTouched(true);
7300
+ return;
7301
+ }
7302
+ dispatch({ type: "GO_TO", step: "preset" });
7303
+ };
7304
+ return /* @__PURE__ */ jsxs13("div", { className: "space-y-6", children: [
7305
+ /* @__PURE__ */ jsxs13("div", { className: "space-y-2", children: [
7306
+ /* @__PURE__ */ jsx19("h2", { className: "text-xl font-semibold tracking-tight", children: "Update existing company" }),
7307
+ /* @__PURE__ */ jsx19("p", { className: "text-sm text-muted-foreground", children: "Enter the ID of the company you want to update. This will load the existing configuration and allow you to modify modules, roles, and settings." })
7308
+ ] }),
7309
+ /* @__PURE__ */ jsxs13("div", { className: "space-y-3", children: [
7310
+ /* @__PURE__ */ jsx19(
7311
+ Input,
7312
+ {
7313
+ placeholder: "e.g. 42a5aea0-1234-5678-90ab-cdef12345678",
7314
+ value: state.existingCompanyId,
7315
+ onChange: (e) => dispatch({ type: "SET_EXISTING_COMPANY_ID", value: e.target.value }),
7316
+ onKeyDown: (e) => e.key === "Enter" && handleNext(),
7317
+ autoFocus: true,
7318
+ className: "text-base h-11"
7319
+ }
7320
+ ),
7321
+ touched && isEmpty && /* @__PURE__ */ jsx19("p", { className: "text-sm text-destructive", children: "Please enter a company ID." })
7322
+ ] }),
7323
+ /* @__PURE__ */ jsxs13("div", { className: "flex justify-end gap-3", children: [
7324
+ /* @__PURE__ */ jsx19(Button, { variant: "outline", onClick: () => dispatch({ type: "GO_TO", step: "onboarding" }), children: "Back" }),
7325
+ /* @__PURE__ */ jsxs13(Button, { onClick: handleNext, disabled: isEmpty, children: [
7326
+ "Next",
7327
+ /* @__PURE__ */ jsx19(ArrowRight, { className: "h-4 w-4 ml-1.5" })
7328
+ ] })
7329
+ ] })
7330
+ ] });
7331
+ }
7332
+
7333
+ // src/ui/components/steps/StepDone.tsx
7334
+ import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
7056
7335
  function StepDone() {
7057
7336
  const state = useWizard();
7058
7337
  const dispatch = useWizardDispatch();
7059
7338
  const allRoles = getAllRoles(state);
7060
7339
  const result = state.provisionResult;
7061
- return /* @__PURE__ */ jsxs12("div", { className: "space-y-6", children: [
7062
- /* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3", children: [
7063
- /* @__PURE__ */ jsx18(CircleCheck, { className: "h-6 w-6 text-green-600 shrink-0 mt-0.5" }),
7064
- /* @__PURE__ */ jsxs12("div", { children: [
7065
- /* @__PURE__ */ jsx18("h2", { className: "text-xl font-semibold tracking-tight", children: state.companyName }),
7066
- /* @__PURE__ */ jsx18("p", { className: "text-sm text-muted-foreground mt-1", children: state.existingCompanyId ? "Workspace has been assembled and bootstrap tasks were added to the existing Paperclip company." : "Company has been assembled and registered with Paperclip." })
7340
+ return /* @__PURE__ */ jsxs14("div", { className: "space-y-6", children: [
7341
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-start gap-3", children: [
7342
+ /* @__PURE__ */ jsx20(CircleCheck, { className: "h-6 w-6 text-green-600 shrink-0 mt-0.5" }),
7343
+ /* @__PURE__ */ jsxs14("div", { children: [
7344
+ /* @__PURE__ */ jsx20("h2", { className: "text-xl font-semibold tracking-tight", children: state.companyName }),
7345
+ /* @__PURE__ */ jsx20("p", { className: "text-sm text-muted-foreground mt-1", children: state.existingCompanyId ? "Workspace has been assembled and bootstrap tasks were added to the existing Paperclip company." : "Company has been assembled and registered with Paperclip." })
7067
7346
  ] })
7068
7347
  ] }),
7069
- /* @__PURE__ */ jsx18(Card, { children: /* @__PURE__ */ jsxs12(CardContent, { className: "pt-6 space-y-4", children: [
7070
- state.goals[0]?.title && /* @__PURE__ */ jsxs12("div", { children: [
7071
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Goal" }),
7072
- /* @__PURE__ */ jsx18("p", { className: "text-sm", children: state.goals[0].title })
7348
+ /* @__PURE__ */ jsx20(Card, { children: /* @__PURE__ */ jsxs14(CardContent, { className: "pt-6 space-y-4", children: [
7349
+ state.goals[0]?.title && /* @__PURE__ */ jsxs14("div", { children: [
7350
+ /* @__PURE__ */ jsx20("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Goal" }),
7351
+ /* @__PURE__ */ jsx20("p", { className: "text-sm", children: state.goals[0].title })
7073
7352
  ] }),
7074
- /* @__PURE__ */ jsxs12("div", { children: [
7075
- /* @__PURE__ */ jsxs12("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: [
7353
+ /* @__PURE__ */ jsxs14("div", { children: [
7354
+ /* @__PURE__ */ jsxs14("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: [
7076
7355
  "Team (",
7077
7356
  allRoles.length,
7078
7357
  " agents)"
7079
7358
  ] }),
7080
- /* @__PURE__ */ jsx18("div", { className: "flex flex-wrap gap-1.5", children: allRoles.map((r2) => {
7359
+ /* @__PURE__ */ jsx20("div", { className: "flex flex-wrap gap-1.5", children: allRoles.map((r2) => {
7081
7360
  const role = state.roles.find((ro) => ro.name === r2);
7082
- return /* @__PURE__ */ jsx18(Badge, { variant: "outline", className: "text-xs", children: role?.title || r2 }, r2);
7361
+ return /* @__PURE__ */ jsx20(Badge, { variant: "outline", className: "text-xs", children: role?.title || r2 }, r2);
7083
7362
  }) })
7084
7363
  ] }),
7085
- /* @__PURE__ */ jsxs12("div", { children: [
7086
- /* @__PURE__ */ jsxs12("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: [
7364
+ /* @__PURE__ */ jsxs14("div", { children: [
7365
+ /* @__PURE__ */ jsxs14("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2", children: [
7087
7366
  "Modules (",
7088
7367
  state.selectedModules.length,
7089
7368
  ")"
7090
7369
  ] }),
7091
- /* @__PURE__ */ jsx18("div", { className: "flex flex-wrap gap-1.5", children: state.selectedModules.map((m) => /* @__PURE__ */ jsx18(Badge, { variant: "secondary", className: "text-xs", children: m }, m)) })
7370
+ /* @__PURE__ */ jsx20("div", { className: "flex flex-wrap gap-1.5", children: state.selectedModules.map((m) => /* @__PURE__ */ jsx20(Badge, { variant: "secondary", className: "text-xs", children: m }, m)) })
7092
7371
  ] }),
7093
- result?.issueIds && result.issueIds.length > 0 && /* @__PURE__ */ jsxs12("div", { children: [
7094
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Issues" }),
7095
- /* @__PURE__ */ jsxs12("p", { className: "text-sm", children: [
7372
+ result?.issueIds && result.issueIds.length > 0 && /* @__PURE__ */ jsxs14("div", { children: [
7373
+ /* @__PURE__ */ jsx20("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Issues" }),
7374
+ /* @__PURE__ */ jsxs14("p", { className: "text-sm", children: [
7096
7375
  result.issueIds.length,
7097
7376
  " issues provisioned"
7098
7377
  ] })
7099
7378
  ] }),
7100
- state.presetName && /* @__PURE__ */ jsxs12("div", { children: [
7101
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Preset" }),
7102
- /* @__PURE__ */ jsx18("p", { className: "text-sm capitalize", children: state.presetName })
7379
+ state.presetName && /* @__PURE__ */ jsxs14("div", { children: [
7380
+ /* @__PURE__ */ jsx20("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Preset" }),
7381
+ /* @__PURE__ */ jsx20("p", { className: "text-sm capitalize", children: state.presetName })
7103
7382
  ] }),
7104
- result?.companyId && /* @__PURE__ */ jsxs12("div", { children: [
7105
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Company ID" }),
7106
- /* @__PURE__ */ jsx18("p", { className: "font-mono text-xs", children: result.companyId })
7383
+ result?.companyId && /* @__PURE__ */ jsxs14("div", { children: [
7384
+ /* @__PURE__ */ jsx20("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Company ID" }),
7385
+ /* @__PURE__ */ jsx20("p", { className: "font-mono text-xs", children: result.companyId })
7107
7386
  ] })
7108
7387
  ] }) }),
7109
- /* @__PURE__ */ jsxs12("div", { className: "flex gap-3", children: [
7110
- /* @__PURE__ */ jsxs12(Button, { variant: "outline", onClick: () => dispatch({ type: "RESET" }), children: [
7111
- /* @__PURE__ */ jsx18(RotateCcw, { className: "h-4 w-4" }),
7388
+ /* @__PURE__ */ jsxs14("div", { className: "flex gap-3", children: [
7389
+ /* @__PURE__ */ jsxs14(Button, { variant: "outline", onClick: () => dispatch({ type: "RESET" }), children: [
7390
+ /* @__PURE__ */ jsx20(RotateCcw, { className: "h-4 w-4" }),
7112
7391
  "Create another"
7113
7392
  ] }),
7114
- /* @__PURE__ */ jsx18(Button, { asChild: true, children: /* @__PURE__ */ jsxs12(
7393
+ /* @__PURE__ */ jsx20(Button, { asChild: true, children: /* @__PURE__ */ jsxs14(
7115
7394
  "a",
7116
7395
  {
7117
7396
  href: result?.paperclipUrl && result?.issuePrefix ? `${result.paperclipUrl}/${result.issuePrefix}/dashboard` : result?.paperclipUrl || "http://localhost:3100",
7118
7397
  target: "_blank",
7119
7398
  rel: "noopener noreferrer",
7120
7399
  children: [
7121
- /* @__PURE__ */ jsx18(ExternalLink, { className: "h-4 w-4" }),
7400
+ /* @__PURE__ */ jsx20(ExternalLink, { className: "h-4 w-4" }),
7122
7401
  "Open Paperclip"
7123
7402
  ]
7124
7403
  }
@@ -7128,7 +7407,7 @@ function StepDone() {
7128
7407
  }
7129
7408
 
7130
7409
  // src/ui/components/WizardShell.tsx
7131
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
7410
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
7132
7411
  var STEP_COMPONENTS = {
7133
7412
  onboarding: StepOnboarding,
7134
7413
  name: StepName,
@@ -7137,7 +7416,9 @@ var STEP_COMPONENTS = {
7137
7416
  preset: StepPreset,
7138
7417
  modules: StepModules,
7139
7418
  roles: StepRoles,
7419
+ "existing-company": StepExistingCompany,
7140
7420
  summary: StepSummary,
7421
+ preview: StepPreview,
7141
7422
  "ai-wizard": StepAiWizard,
7142
7423
  provision: StepProvision,
7143
7424
  done: StepDone
@@ -7148,15 +7429,15 @@ function StepIndicator() {
7148
7429
  const total = getTotalSteps(state);
7149
7430
  if (current < 1 || state.step === "provision" || state.step === "done" || state.step === "ai-wizard")
7150
7431
  return null;
7151
- return /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1.5", children: [
7152
- Array.from({ length: total }, (_, i) => /* @__PURE__ */ jsx19(
7432
+ return /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-1.5", children: [
7433
+ Array.from({ length: total }, (_, i) => /* @__PURE__ */ jsx21(
7153
7434
  "div",
7154
7435
  {
7155
7436
  className: `h-1.5 rounded-full transition-all duration-300 ${i + 1 <= current ? "w-6 bg-foreground" : "w-1.5 bg-muted-foreground/30"}`
7156
7437
  },
7157
7438
  i
7158
7439
  )),
7159
- /* @__PURE__ */ jsxs13("span", { className: "ml-2 text-xs text-muted-foreground", children: [
7440
+ /* @__PURE__ */ jsxs15("span", { className: "ml-2 text-xs text-muted-foreground", children: [
7160
7441
  current,
7161
7442
  "/",
7162
7443
  total
@@ -7167,15 +7448,15 @@ function WizardShell() {
7167
7448
  const state = useWizard();
7168
7449
  const dispatch = useWizardDispatch();
7169
7450
  const StepComponent = STEP_COMPONENTS[state.step];
7170
- useEffect7(() => {
7451
+ useEffect8(() => {
7171
7452
  window.scrollTo({ top: 0 });
7172
7453
  }, [state.step]);
7173
- return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col", children: [
7174
- getUserStepIndex(state) >= 1 && state.step !== "provision" && state.step !== "done" && /* @__PURE__ */ jsx19("div", { className: "flex items-center justify-end px-6 py-3", children: /* @__PURE__ */ jsx19(StepIndicator, {}) }),
7175
- /* @__PURE__ */ jsx19("main", { className: "flex-1 flex items-start justify-center p-6", children: /* @__PURE__ */ jsx19("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx19(StepComponent, {}) }) }),
7176
- state.error && /* @__PURE__ */ jsxs13("div", { className: "fixed bottom-0 inset-x-0 bg-destructive/10 border-t border-destructive/20 px-6 py-3 text-sm text-destructive flex items-center justify-between", children: [
7177
- /* @__PURE__ */ jsx19("span", { children: state.error }),
7178
- /* @__PURE__ */ jsx19(
7454
+ return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col", children: [
7455
+ getUserStepIndex(state) >= 1 && state.step !== "provision" && state.step !== "done" && /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-end px-6 py-3", children: /* @__PURE__ */ jsx21(StepIndicator, {}) }),
7456
+ /* @__PURE__ */ jsx21("main", { className: "flex-1 flex items-start justify-center p-6", children: /* @__PURE__ */ jsx21("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx21(StepComponent, {}) }) }),
7457
+ state.error && /* @__PURE__ */ jsxs15("div", { className: "fixed bottom-0 inset-x-0 bg-destructive/10 border-t border-destructive/20 px-6 py-3 text-sm text-destructive flex items-center justify-between", children: [
7458
+ /* @__PURE__ */ jsx21("span", { children: state.error }),
7459
+ /* @__PURE__ */ jsx21(
7179
7460
  Button,
7180
7461
  {
7181
7462
  variant: "ghost",
@@ -7189,30 +7470,30 @@ function WizardShell() {
7189
7470
  }
7190
7471
 
7191
7472
  // src/ui/index.tsx
7192
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
7473
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
7193
7474
  function WizardPage(_props) {
7194
7475
  const { data: templates, loading, error } = usePluginData("templates");
7195
7476
  if (error) {
7196
- return /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-center min-h-[400px] text-sm text-destructive", children: [
7477
+ return /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-center min-h-[400px] text-sm text-destructive", children: [
7197
7478
  "Failed to load templates: ",
7198
7479
  error.message
7199
7480
  ] });
7200
7481
  }
7201
7482
  if (loading || !templates) {
7202
- return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col items-center justify-center min-h-[400px] gap-4 text-center px-6", children: [
7203
- /* @__PURE__ */ jsx20(LoaderCircle, { className: "h-6 w-6 animate-spin text-muted-foreground" }),
7204
- /* @__PURE__ */ jsxs14("div", { className: "space-y-1.5", children: [
7205
- /* @__PURE__ */ jsx20("p", { className: "text-sm font-medium", children: "Loading templates" }),
7206
- /* @__PURE__ */ jsx20("p", { className: "text-xs text-muted-foreground max-w-xs", children: "Checking your templates directory. If no local templates are found, they'll be downloaded from GitHub \u2014 this may take a moment." })
7483
+ return /* @__PURE__ */ jsxs16("div", { className: "flex flex-col items-center justify-center min-h-[400px] gap-4 text-center px-6", children: [
7484
+ /* @__PURE__ */ jsx22(LoaderCircle, { className: "h-6 w-6 animate-spin text-muted-foreground" }),
7485
+ /* @__PURE__ */ jsxs16("div", { className: "space-y-1.5", children: [
7486
+ /* @__PURE__ */ jsx22("p", { className: "text-sm font-medium", children: "Loading templates" }),
7487
+ /* @__PURE__ */ jsx22("p", { className: "text-xs text-muted-foreground max-w-xs", children: "Checking your templates directory. If no local templates are found, they'll be downloaded from GitHub \u2014 this may take a moment." })
7207
7488
  ] })
7208
7489
  ] });
7209
7490
  }
7210
- return /* @__PURE__ */ jsxs14("div", { className: "space-y-3", children: [
7211
- templates.loadErrors && templates.loadErrors.length > 0 && /* @__PURE__ */ jsx20("div", { className: "mx-4 mt-4 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-800 dark:text-amber-200", children: /* @__PURE__ */ jsxs14("div", { className: "flex items-start gap-2", children: [
7212
- /* @__PURE__ */ jsx20(TriangleAlert, { className: "h-4 w-4 shrink-0 mt-0.5" }),
7213
- /* @__PURE__ */ jsxs14("div", { children: [
7214
- /* @__PURE__ */ jsx20("p", { className: "font-medium", children: "Some template files could not be loaded" }),
7215
- /* @__PURE__ */ jsxs14("p", { className: "mt-0.5 text-amber-700 dark:text-amber-300", children: [
7491
+ return /* @__PURE__ */ jsxs16("div", { className: "space-y-3", children: [
7492
+ templates.loadErrors && templates.loadErrors.length > 0 && /* @__PURE__ */ jsx22("div", { className: "mx-4 mt-4 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-800 dark:text-amber-200", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-start gap-2", children: [
7493
+ /* @__PURE__ */ jsx22(TriangleAlert, { className: "h-4 w-4 shrink-0 mt-0.5" }),
7494
+ /* @__PURE__ */ jsxs16("div", { children: [
7495
+ /* @__PURE__ */ jsx22("p", { className: "font-medium", children: "Some template files could not be loaded" }),
7496
+ /* @__PURE__ */ jsxs16("p", { className: "mt-0.5 text-amber-700 dark:text-amber-300", children: [
7216
7497
  templates.loadErrors.length,
7217
7498
  " parse warning",
7218
7499
  templates.loadErrors.length > 1 ? "s" : "",
@@ -7220,7 +7501,7 @@ function WizardPage(_props) {
7220
7501
  ] })
7221
7502
  ] })
7222
7503
  ] }) }),
7223
- /* @__PURE__ */ jsx20(WizardProvider, { templates, children: /* @__PURE__ */ jsx20(WizardShell, {}) })
7504
+ /* @__PURE__ */ jsx22(WizardProvider, { templates, children: /* @__PURE__ */ jsx22(WizardShell, {}) })
7224
7505
  ] });
7225
7506
  }
7226
7507
  function ToolbarButton({ context }) {
@@ -7231,7 +7512,7 @@ function ToolbarButton({ context }) {
7231
7512
  if (href !== "#") window.history.pushState({}, "", href);
7232
7513
  window.dispatchEvent(new PopStateEvent("popstate"));
7233
7514
  };
7234
- return /* @__PURE__ */ jsx20(
7515
+ return /* @__PURE__ */ jsx22(
7235
7516
  "a",
7236
7517
  {
7237
7518
  href,
@@ -7261,7 +7542,7 @@ function SidebarLink({ context }) {
7261
7542
  if (href !== "#") window.history.pushState({}, "", href);
7262
7543
  window.dispatchEvent(new PopStateEvent("popstate"));
7263
7544
  };
7264
- return /* @__PURE__ */ jsxs14(
7545
+ return /* @__PURE__ */ jsxs16(
7265
7546
  "a",
7266
7547
  {
7267
7548
  href,
@@ -7281,8 +7562,8 @@ function SidebarLink({ context }) {
7281
7562
  backgroundColor: isActive ? "var(--accent)" : "transparent"
7282
7563
  },
7283
7564
  children: [
7284
- /* @__PURE__ */ jsx20(Sparkles, { style: { width: 16, height: 16, flexShrink: 0 } }),
7285
- /* @__PURE__ */ jsx20("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: "Create Company" })
7565
+ /* @__PURE__ */ jsx22(Sparkles, { style: { width: 16, height: 16, flexShrink: 0 } }),
7566
+ /* @__PURE__ */ jsx22("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: "Create Company" })
7286
7567
  ]
7287
7568
  }
7288
7569
  );
@@ -7311,6 +7592,8 @@ lucide-react/dist/esm/icons/check.js:
7311
7592
  lucide-react/dist/esm/icons/chevron-down.js:
7312
7593
  lucide-react/dist/esm/icons/chevron-left.js:
7313
7594
  lucide-react/dist/esm/icons/chevron-right.js:
7595
+ lucide-react/dist/esm/icons/circle-alert.js:
7596
+ lucide-react/dist/esm/icons/circle-check-big.js:
7314
7597
  lucide-react/dist/esm/icons/circle-check.js:
7315
7598
  lucide-react/dist/esm/icons/circle-plus.js:
7316
7599
  lucide-react/dist/esm/icons/clipboard-check.js:
@@ -7337,6 +7620,8 @@ lucide-react/dist/esm/icons/shield.js:
7337
7620
  lucide-react/dist/esm/icons/sparkles.js:
7338
7621
  lucide-react/dist/esm/icons/target.js:
7339
7622
  lucide-react/dist/esm/icons/triangle-alert.js:
7623
+ lucide-react/dist/esm/icons/user-minus.js:
7624
+ lucide-react/dist/esm/icons/user-plus.js:
7340
7625
  lucide-react/dist/esm/icons/user.js:
7341
7626
  lucide-react/dist/esm/icons/users.js:
7342
7627
  lucide-react/dist/esm/icons/workflow.js: