@starlein/paperclip-plugin-company-wizard 0.4.5 → 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 (71) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +7 -5
  3. package/dist/manifest.js +4 -9
  4. package/dist/manifest.js.map +2 -2
  5. package/dist/ui/index.css +82 -0
  6. package/dist/ui/index.css.map +2 -2
  7. package/dist/ui/index.js +423 -139
  8. package/dist/ui/index.js.map +4 -4
  9. package/dist/worker.js +589 -58
  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/README.md +9 -7
  16. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +3 -1
  17. package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +14 -8
  18. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +3 -1
  19. package/templates/modules/auto-assign/module.meta.json +3 -3
  20. package/templates/modules/auto-assign/skills/auto-assign.md +2 -2
  21. package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
  22. package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
  23. package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
  24. package/templates/modules/backlog/docs/backlog-process.md +45 -8
  25. package/templates/modules/backlog/docs/backlog-template.md +3 -2
  26. package/templates/modules/backlog/module.meta.json +3 -3
  27. package/templates/modules/backlog/skills/backlog-health.bar.md +3 -1
  28. package/templates/modules/backlog/skills/backlog-health.md +8 -5
  29. package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
  30. package/templates/modules/github-repo/README.md +3 -3
  31. package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +72 -9
  32. package/templates/modules/github-repo/docs/git-workflow.md +65 -6
  33. package/templates/modules/github-repo/module.meta.json +1 -1
  34. package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
  35. package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
  36. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
  37. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +31 -12
  38. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
  39. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
  40. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
  41. package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
  42. package/templates/modules/pr-review/module.meta.json +1 -1
  43. package/templates/modules/security-audit/skills/threat-model.md +1 -1
  44. package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
  45. package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
  46. package/templates/modules/triage/skills/issue-triage.md +1 -1
  47. package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
  48. package/templates/modules/user-testing/skills/user-testing.md +1 -1
  49. package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
  50. package/templates/presets/repo-maintenance/preset.meta.json +3 -3
  51. package/templates/roles/audio-designer/role.meta.json +5 -2
  52. package/templates/roles/cmo/role.meta.json +2 -1
  53. package/templates/roles/code-reviewer/AGENTS.md +3 -3
  54. package/templates/roles/code-reviewer/role.meta.json +4 -1
  55. package/templates/roles/cto/role.meta.json +2 -1
  56. package/templates/roles/customer-success/role.meta.json +2 -1
  57. package/templates/roles/devops/role.meta.json +2 -1
  58. package/templates/roles/engineer/AGENTS.md +2 -0
  59. package/templates/roles/engineer/HEARTBEAT.md +1 -1
  60. package/templates/roles/engineer/role.meta.json +2 -1
  61. package/templates/roles/game-artist/role.meta.json +5 -2
  62. package/templates/roles/game-designer/role.meta.json +4 -1
  63. package/templates/roles/level-designer/role.meta.json +4 -1
  64. package/templates/roles/product-owner/AGENTS.md +2 -1
  65. package/templates/roles/product-owner/HEARTBEAT.md +1 -1
  66. package/templates/roles/product-owner/role.meta.json +4 -1
  67. package/templates/roles/qa/role.meta.json +2 -1
  68. package/templates/roles/security-engineer/role.meta.json +2 -1
  69. package/templates/roles/technical-writer/role.meta.json +2 -1
  70. package/templates/roles/ui-designer/role.meta.json +2 -1
  71. 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: [
@@ -4097,8 +4161,7 @@ function StepOnboarding() {
4097
4161
  /* @__PURE__ */ jsx3("span", { className: "h-1.5 w-1.5 rounded-full bg-amber-500" }),
4098
4162
  "Company Wizard plugin update: ",
4099
4163
  updateInfo.currentVersion,
4100
- " \u2192",
4101
- " ",
4164
+ " \u2192 ",
4102
4165
  updateInfo.latestVersion,
4103
4166
  updateInfo.url && /* @__PURE__ */ jsxs(
4104
4167
  "a",
@@ -6086,7 +6149,13 @@ function StepSummary() {
6086
6149
  ] }),
6087
6150
  /* @__PURE__ */ jsxs9("div", { className: "flex justify-end gap-3", children: [
6088
6151
  /* @__PURE__ */ jsx15(Button, { variant: "outline", onClick: () => dispatch({ type: "GO_TO", step: "roles" }), children: "Back" }),
6089
- /* @__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
+ )
6090
6159
  ] })
6091
6160
  ] });
6092
6161
  }
@@ -7052,74 +7121,283 @@ function StepProvision() {
7052
7121
  ] });
7053
7122
  }
7054
7123
 
7055
- // 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";
7056
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";
7057
7335
  function StepDone() {
7058
7336
  const state = useWizard();
7059
7337
  const dispatch = useWizardDispatch();
7060
7338
  const allRoles = getAllRoles(state);
7061
7339
  const result = state.provisionResult;
7062
- return /* @__PURE__ */ jsxs12("div", { className: "space-y-6", children: [
7063
- /* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3", children: [
7064
- /* @__PURE__ */ jsx18(CircleCheck, { className: "h-6 w-6 text-green-600 shrink-0 mt-0.5" }),
7065
- /* @__PURE__ */ jsxs12("div", { children: [
7066
- /* @__PURE__ */ jsx18("h2", { className: "text-xl font-semibold tracking-tight", children: state.companyName }),
7067
- /* @__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." })
7068
7346
  ] })
7069
7347
  ] }),
7070
- /* @__PURE__ */ jsx18(Card, { children: /* @__PURE__ */ jsxs12(CardContent, { className: "pt-6 space-y-4", children: [
7071
- state.goals[0]?.title && /* @__PURE__ */ jsxs12("div", { children: [
7072
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Goal" }),
7073
- /* @__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 })
7074
7352
  ] }),
7075
- /* @__PURE__ */ jsxs12("div", { children: [
7076
- /* @__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: [
7077
7355
  "Team (",
7078
7356
  allRoles.length,
7079
7357
  " agents)"
7080
7358
  ] }),
7081
- /* @__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) => {
7082
7360
  const role = state.roles.find((ro) => ro.name === r2);
7083
- 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);
7084
7362
  }) })
7085
7363
  ] }),
7086
- /* @__PURE__ */ jsxs12("div", { children: [
7087
- /* @__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: [
7088
7366
  "Modules (",
7089
7367
  state.selectedModules.length,
7090
7368
  ")"
7091
7369
  ] }),
7092
- /* @__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)) })
7093
7371
  ] }),
7094
- result?.issueIds && result.issueIds.length > 0 && /* @__PURE__ */ jsxs12("div", { children: [
7095
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Issues" }),
7096
- /* @__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: [
7097
7375
  result.issueIds.length,
7098
7376
  " issues provisioned"
7099
7377
  ] })
7100
7378
  ] }),
7101
- state.presetName && /* @__PURE__ */ jsxs12("div", { children: [
7102
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Preset" }),
7103
- /* @__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 })
7104
7382
  ] }),
7105
- result?.companyId && /* @__PURE__ */ jsxs12("div", { children: [
7106
- /* @__PURE__ */ jsx18("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Company ID" }),
7107
- /* @__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 })
7108
7386
  ] })
7109
7387
  ] }) }),
7110
- /* @__PURE__ */ jsxs12("div", { className: "flex gap-3", children: [
7111
- /* @__PURE__ */ jsxs12(Button, { variant: "outline", onClick: () => dispatch({ type: "RESET" }), children: [
7112
- /* @__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" }),
7113
7391
  "Create another"
7114
7392
  ] }),
7115
- /* @__PURE__ */ jsx18(Button, { asChild: true, children: /* @__PURE__ */ jsxs12(
7393
+ /* @__PURE__ */ jsx20(Button, { asChild: true, children: /* @__PURE__ */ jsxs14(
7116
7394
  "a",
7117
7395
  {
7118
7396
  href: result?.paperclipUrl && result?.issuePrefix ? `${result.paperclipUrl}/${result.issuePrefix}/dashboard` : result?.paperclipUrl || "http://localhost:3100",
7119
7397
  target: "_blank",
7120
7398
  rel: "noopener noreferrer",
7121
7399
  children: [
7122
- /* @__PURE__ */ jsx18(ExternalLink, { className: "h-4 w-4" }),
7400
+ /* @__PURE__ */ jsx20(ExternalLink, { className: "h-4 w-4" }),
7123
7401
  "Open Paperclip"
7124
7402
  ]
7125
7403
  }
@@ -7129,7 +7407,7 @@ function StepDone() {
7129
7407
  }
7130
7408
 
7131
7409
  // src/ui/components/WizardShell.tsx
7132
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
7410
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
7133
7411
  var STEP_COMPONENTS = {
7134
7412
  onboarding: StepOnboarding,
7135
7413
  name: StepName,
@@ -7138,7 +7416,9 @@ var STEP_COMPONENTS = {
7138
7416
  preset: StepPreset,
7139
7417
  modules: StepModules,
7140
7418
  roles: StepRoles,
7419
+ "existing-company": StepExistingCompany,
7141
7420
  summary: StepSummary,
7421
+ preview: StepPreview,
7142
7422
  "ai-wizard": StepAiWizard,
7143
7423
  provision: StepProvision,
7144
7424
  done: StepDone
@@ -7149,15 +7429,15 @@ function StepIndicator() {
7149
7429
  const total = getTotalSteps(state);
7150
7430
  if (current < 1 || state.step === "provision" || state.step === "done" || state.step === "ai-wizard")
7151
7431
  return null;
7152
- return /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1.5", children: [
7153
- 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(
7154
7434
  "div",
7155
7435
  {
7156
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"}`
7157
7437
  },
7158
7438
  i
7159
7439
  )),
7160
- /* @__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: [
7161
7441
  current,
7162
7442
  "/",
7163
7443
  total
@@ -7168,15 +7448,15 @@ function WizardShell() {
7168
7448
  const state = useWizard();
7169
7449
  const dispatch = useWizardDispatch();
7170
7450
  const StepComponent = STEP_COMPONENTS[state.step];
7171
- useEffect7(() => {
7451
+ useEffect8(() => {
7172
7452
  window.scrollTo({ top: 0 });
7173
7453
  }, [state.step]);
7174
- return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col", children: [
7175
- 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, {}) }),
7176
- /* @__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, {}) }) }),
7177
- 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: [
7178
- /* @__PURE__ */ jsx19("span", { children: state.error }),
7179
- /* @__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(
7180
7460
  Button,
7181
7461
  {
7182
7462
  variant: "ghost",
@@ -7190,30 +7470,30 @@ function WizardShell() {
7190
7470
  }
7191
7471
 
7192
7472
  // src/ui/index.tsx
7193
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
7473
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
7194
7474
  function WizardPage(_props) {
7195
7475
  const { data: templates, loading, error } = usePluginData("templates");
7196
7476
  if (error) {
7197
- 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: [
7198
7478
  "Failed to load templates: ",
7199
7479
  error.message
7200
7480
  ] });
7201
7481
  }
7202
7482
  if (loading || !templates) {
7203
- return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col items-center justify-center min-h-[400px] gap-4 text-center px-6", children: [
7204
- /* @__PURE__ */ jsx20(LoaderCircle, { className: "h-6 w-6 animate-spin text-muted-foreground" }),
7205
- /* @__PURE__ */ jsxs14("div", { className: "space-y-1.5", children: [
7206
- /* @__PURE__ */ jsx20("p", { className: "text-sm font-medium", children: "Loading templates" }),
7207
- /* @__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." })
7208
7488
  ] })
7209
7489
  ] });
7210
7490
  }
7211
- return /* @__PURE__ */ jsxs14("div", { className: "space-y-3", children: [
7212
- 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: [
7213
- /* @__PURE__ */ jsx20(TriangleAlert, { className: "h-4 w-4 shrink-0 mt-0.5" }),
7214
- /* @__PURE__ */ jsxs14("div", { children: [
7215
- /* @__PURE__ */ jsx20("p", { className: "font-medium", children: "Some template files could not be loaded" }),
7216
- /* @__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: [
7217
7497
  templates.loadErrors.length,
7218
7498
  " parse warning",
7219
7499
  templates.loadErrors.length > 1 ? "s" : "",
@@ -7221,7 +7501,7 @@ function WizardPage(_props) {
7221
7501
  ] })
7222
7502
  ] })
7223
7503
  ] }) }),
7224
- /* @__PURE__ */ jsx20(WizardProvider, { templates, children: /* @__PURE__ */ jsx20(WizardShell, {}) })
7504
+ /* @__PURE__ */ jsx22(WizardProvider, { templates, children: /* @__PURE__ */ jsx22(WizardShell, {}) })
7225
7505
  ] });
7226
7506
  }
7227
7507
  function ToolbarButton({ context }) {
@@ -7232,7 +7512,7 @@ function ToolbarButton({ context }) {
7232
7512
  if (href !== "#") window.history.pushState({}, "", href);
7233
7513
  window.dispatchEvent(new PopStateEvent("popstate"));
7234
7514
  };
7235
- return /* @__PURE__ */ jsx20(
7515
+ return /* @__PURE__ */ jsx22(
7236
7516
  "a",
7237
7517
  {
7238
7518
  href,
@@ -7262,7 +7542,7 @@ function SidebarLink({ context }) {
7262
7542
  if (href !== "#") window.history.pushState({}, "", href);
7263
7543
  window.dispatchEvent(new PopStateEvent("popstate"));
7264
7544
  };
7265
- return /* @__PURE__ */ jsxs14(
7545
+ return /* @__PURE__ */ jsxs16(
7266
7546
  "a",
7267
7547
  {
7268
7548
  href,
@@ -7282,8 +7562,8 @@ function SidebarLink({ context }) {
7282
7562
  backgroundColor: isActive ? "var(--accent)" : "transparent"
7283
7563
  },
7284
7564
  children: [
7285
- /* @__PURE__ */ jsx20(Sparkles, { style: { width: 16, height: 16, flexShrink: 0 } }),
7286
- /* @__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" })
7287
7567
  ]
7288
7568
  }
7289
7569
  );
@@ -7312,6 +7592,8 @@ lucide-react/dist/esm/icons/check.js:
7312
7592
  lucide-react/dist/esm/icons/chevron-down.js:
7313
7593
  lucide-react/dist/esm/icons/chevron-left.js:
7314
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:
7315
7597
  lucide-react/dist/esm/icons/circle-check.js:
7316
7598
  lucide-react/dist/esm/icons/circle-plus.js:
7317
7599
  lucide-react/dist/esm/icons/clipboard-check.js:
@@ -7338,6 +7620,8 @@ lucide-react/dist/esm/icons/shield.js:
7338
7620
  lucide-react/dist/esm/icons/sparkles.js:
7339
7621
  lucide-react/dist/esm/icons/target.js:
7340
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:
7341
7625
  lucide-react/dist/esm/icons/user.js:
7342
7626
  lucide-react/dist/esm/icons/users.js:
7343
7627
  lucide-react/dist/esm/icons/workflow.js: