ccjk 2.4.4 → 2.5.0

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 (53) hide show
  1. package/dist/chunks/api-providers.mjs +73 -1
  2. package/dist/chunks/ccjk-config.mjs +13 -77
  3. package/dist/chunks/ccr.mjs +9 -4
  4. package/dist/chunks/check-updates.mjs +4 -2
  5. package/dist/chunks/claude-code-config-manager.mjs +9 -15
  6. package/dist/chunks/claude-code-incremental-manager.mjs +5 -8
  7. package/dist/chunks/codex.mjs +10 -569
  8. package/dist/chunks/config-switch.mjs +7 -5
  9. package/dist/chunks/config.mjs +573 -0
  10. package/dist/chunks/config2.mjs +451 -0
  11. package/dist/chunks/doctor.mjs +89 -1
  12. package/dist/chunks/features.mjs +13 -10
  13. package/dist/chunks/index.mjs +10 -1164
  14. package/dist/chunks/index2.mjs +8 -2
  15. package/dist/chunks/init.mjs +14 -11
  16. package/dist/chunks/json-config.mjs +59 -0
  17. package/dist/chunks/mcp-server.mjs +776 -0
  18. package/dist/chunks/mcp.mjs +10 -8
  19. package/dist/chunks/menu.mjs +5 -5
  20. package/dist/chunks/package.mjs +1 -1
  21. package/dist/chunks/permissions.mjs +420 -0
  22. package/dist/chunks/prompts.mjs +2 -1
  23. package/dist/chunks/providers.mjs +261 -0
  24. package/dist/chunks/session.mjs +484 -41
  25. package/dist/chunks/skills.mjs +553 -0
  26. package/dist/chunks/stats.mjs +411 -0
  27. package/dist/chunks/uninstall.mjs +4 -3
  28. package/dist/chunks/update.mjs +6 -3
  29. package/dist/chunks/workflows2.mjs +140 -0
  30. package/dist/cli.mjs +316 -10
  31. package/dist/i18n/locales/en/hooks.json +47 -0
  32. package/dist/i18n/locales/en/mcp.json +55 -0
  33. package/dist/i18n/locales/en/permissions.json +43 -0
  34. package/dist/i18n/locales/en/sandbox.json +44 -0
  35. package/dist/i18n/locales/en/skills.json +89 -129
  36. package/dist/i18n/locales/en/stats.json +20 -0
  37. package/dist/i18n/locales/zh-CN/hooks.json +47 -0
  38. package/dist/i18n/locales/zh-CN/mcp.json +55 -0
  39. package/dist/i18n/locales/zh-CN/permissions.json +43 -0
  40. package/dist/i18n/locales/zh-CN/sandbox.json +44 -0
  41. package/dist/i18n/locales/zh-CN/skills.json +88 -128
  42. package/dist/i18n/locales/zh-CN/stats.json +20 -0
  43. package/dist/index.mjs +12 -8
  44. package/dist/shared/ccjk.B-lZxV2u.mjs +1162 -0
  45. package/dist/shared/{ccjk.CURU8gbR.mjs → ccjk.CUdzQluX.mjs} +1 -1
  46. package/dist/shared/{ccjk.ByTIGCUC.mjs → ccjk.Dut3wyoP.mjs} +1 -1
  47. package/dist/shared/ccjk.J8YiPsOw.mjs +259 -0
  48. package/dist/shared/{ccjk.CGTmRqsu.mjs → ccjk.rLRHmcqD.mjs} +5 -134
  49. package/dist/shared/{ccjk.QbS8EAOd.mjs → ccjk.uVUeWAt8.mjs} +2 -1
  50. package/package.json +1 -1
  51. package/templates/common/skills/code-review.md +343 -0
  52. package/templates/common/skills/summarize.md +312 -0
  53. package/templates/common/skills/translate.md +202 -0
@@ -1,9 +1,9 @@
1
1
  import './init.mjs';
2
- import { CCJK_PLUGINS_DIR, CCJK_SKILLS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE, CURSOR_CONFIG_FILE, CLINE_CONFIG_FILE, CLAUDE_DIR, CURSOR_DIR, CLINE_DIR, CODE_TOOL_TYPES, CODE_TOOL_INFO } from './constants.mjs';
2
+ import { CCJK_PLUGINS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE, CURSOR_CONFIG_FILE, CLINE_CONFIG_FILE, CLAUDE_DIR, CURSOR_DIR, CLINE_DIR, CODE_TOOL_TYPES, CODE_TOOL_INFO } from './constants.mjs';
3
3
  import { S as STATUS, r as renderProgressBar, s as sectionDivider, C as COLORS } from '../shared/ccjk.BhKlRJ0h.mjs';
4
- import { r as readCodexConfig, b as backupCodexComplete, w as writeCodexConfig, a as writeAuthFile, d as detectConfigManagementMode } from './codex.mjs';
4
+ import './config.mjs';
5
5
  import { detectAllConfigs } from './config-consolidator.mjs';
6
- import '../shared/ccjk.ByTIGCUC.mjs';
6
+ import '../shared/ccjk.Dut3wyoP.mjs';
7
7
  import { homedir } from 'node:os';
8
8
  import process__default, { env } from 'node:process';
9
9
  import ansis from 'ansis';
@@ -15,12 +15,14 @@ import { checkClaudeCodeVersion, checkCcjkVersion } from './upgrade-manager.mjs'
15
15
  import './onboarding.mjs';
16
16
  import './platform.mjs';
17
17
  import '../shared/ccjk.-FoZ3zat.mjs';
18
- import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync } from 'node:fs';
18
+ import { existsSync, mkdirSync, readFileSync, readdirSync } from 'node:fs';
19
19
  import { join } from 'pathe';
20
20
  import { i18n, ensureI18nInitialized } from './index2.mjs';
21
21
  import { writeFileAtomic } from './fs-operations.mjs';
22
+ import '../shared/ccjk.B-lZxV2u.mjs';
23
+ import { r as readCodexConfig, b as backupCodexComplete, w as writeCodexConfig, a as writeAuthFile, d as detectConfigManagementMode } from './codex.mjs';
22
24
  import inquirer from 'inquirer';
23
- import { r as readJsonConfig } from './ccjk-config.mjs';
25
+ import { readJsonConfig } from './json-config.mjs';
24
26
  import { a as addNumbersToChoices, p as promptBoolean } from '../shared/ccjk.DhBeLRzf.mjs';
25
27
  import { pathExists } from 'fs-extra';
26
28
  import { m as moveToTrash } from '../shared/ccjk.DGjQxTq_.mjs';
@@ -321,1162 +323,6 @@ async function initializePlugins() {
321
323
  }
322
324
  }
323
325
 
324
- const cloudSyncSkill = {
325
- id: "cloud-sync",
326
- name: {
327
- "en": "Cloud Sync",
328
- "zh-CN": "\u4E91\u540C\u6B65\u7BA1\u7406"
329
- },
330
- description: {
331
- "en": "Cross-device synchronization for configurations, skills, and workflows",
332
- "zh-CN": "\u8DE8\u8BBE\u5907\u540C\u6B65\u914D\u7F6E\u3001\u6280\u80FD\u548C\u5DE5\u4F5C\u6D41"
333
- },
334
- category: "devops",
335
- triggers: ["/sync", "/cloud", "/backup", "/restore"],
336
- enabled: true,
337
- version: "1.0.0",
338
- author: "CCJK Team",
339
- tags: ["cloud", "sync", "backup", "restore", "configuration"],
340
- template: `# Cloud Sync Management
341
-
342
- ## Overview
343
-
344
- Cloud Sync provides seamless cross-device synchronization for your CCJK environment.
345
- Keep your configurations, skills, and workflows in sync across all your development machines.
346
-
347
- ## Features
348
-
349
- ### Configuration Sync
350
- - Synchronize CCJK settings across devices
351
- - Preserve API configurations securely
352
- - Sync MCP service configurations
353
-
354
- ### Skills Sync
355
- - Share custom skills between machines
356
- - Version control for skill updates
357
- - Conflict resolution for concurrent edits
358
-
359
- ### Workflow Sync
360
- - Sync workflow states and progress
361
- - Share workflow templates
362
- - Collaborative workflow management
363
-
364
- ### Conflict Resolution
365
- - Intelligent merge for non-conflicting changes
366
- - Manual resolution UI for conflicts
367
- - Version history for rollback
368
-
369
- ## Commands
370
-
371
- ### Sync Status
372
- \`\`\`bash
373
- /sync status
374
- \`\`\`
375
- View current synchronization status, pending changes, and last sync time.
376
-
377
- ### Push Changes
378
- \`\`\`bash
379
- /sync push # Push all pending changes
380
- /sync push --config # Push configuration only
381
- /sync push --skills # Push skills only
382
- /sync push --workflows # Push workflows only
383
- \`\`\`
384
-
385
- ### Pull Changes
386
- \`\`\`bash
387
- /sync pull # Pull all remote changes
388
- /sync pull --force # Force pull, overwrite local
389
- /sync pull --merge # Merge with local changes
390
- \`\`\`
391
-
392
- ### Configure Cloud Storage
393
- \`\`\`bash
394
- /sync config # Interactive configuration
395
- /sync config github # Configure GitHub Gist
396
- /sync config webdav # Configure WebDAV
397
- /sync config local # Configure local folder sync
398
- \`\`\`
399
-
400
- ### Backup Management
401
- \`\`\`bash
402
- /backup create # Create full backup
403
- /backup create --name "v1.0" # Create named backup
404
- /backup list # List all backups
405
- /backup restore <id> # Restore from backup
406
- /backup delete <id> # Delete a backup
407
- \`\`\`
408
-
409
- ### Conflict Management
410
- \`\`\`bash
411
- /sync conflicts # List all conflicts
412
- /sync resolve <id> --local # Keep local version
413
- /sync resolve <id> --remote # Keep remote version
414
- /sync resolve <id> --merge # Manual merge
415
- \`\`\`
416
-
417
- ## Supported Cloud Storage
418
-
419
- ### GitHub Gist (Recommended)
420
- - Free and reliable
421
- - Version history built-in
422
- - Easy to set up with personal access token
423
-
424
- \`\`\`bash
425
- /sync config github
426
- # Enter your GitHub personal access token
427
- # Token needs 'gist' scope
428
- \`\`\`
429
-
430
- ### WebDAV
431
- Compatible with:
432
- - Nutstore (\u575A\u679C\u4E91)
433
- - Nextcloud
434
- - ownCloud
435
- - Any WebDAV server
436
-
437
- \`\`\`bash
438
- /sync config webdav
439
- # Enter WebDAV URL, username, and password
440
- \`\`\`
441
-
442
- ### Local Folder
443
- For manual sync via Dropbox, OneDrive, etc.
444
-
445
- \`\`\`bash
446
- /sync config local
447
- # Enter path to sync folder
448
- \`\`\`
449
-
450
- ## Usage Examples
451
-
452
- ### First-Time Setup
453
- \`\`\`bash
454
- # 1. Configure cloud storage
455
- /sync config github
456
-
457
- # 2. Push initial configuration
458
- /sync push --all
459
-
460
- # 3. Verify sync status
461
- /sync status
462
- \`\`\`
463
-
464
- ### Daily Workflow
465
- \`\`\`bash
466
- # Start of day: pull latest changes
467
- /sync pull
468
-
469
- # End of day: push your changes
470
- /sync push
471
- \`\`\`
472
-
473
- ### Handling Conflicts
474
- \`\`\`bash
475
- # Check for conflicts after pull
476
- /sync conflicts
477
-
478
- # Review and resolve each conflict
479
- /sync resolve skill-123 --merge
480
- \`\`\`
481
-
482
- ### Backup Before Major Changes
483
- \`\`\`bash
484
- # Create backup before risky operations
485
- /backup create --name "before-upgrade"
486
-
487
- # If something goes wrong
488
- /backup restore before-upgrade
489
- \`\`\`
490
-
491
- ## Security
492
-
493
- ### Sensitive Data Handling
494
- - API keys are encrypted before sync
495
- - OAuth tokens are never synced (re-authenticate on each device)
496
- - Local encryption key derived from device-specific identifier
497
-
498
- ### Access Control
499
- - GitHub: Uses personal access token with minimal scope
500
- - WebDAV: Supports app-specific passwords
501
- - All connections use HTTPS/TLS
502
-
503
- ## Best Practices
504
-
505
- 1. **Regular Syncing**: Sync at least daily to avoid large conflicts
506
- 2. **Named Backups**: Create named backups before major changes
507
- 3. **Review Conflicts**: Don't auto-resolve conflicts without review
508
- 4. **Secure Tokens**: Use app-specific passwords when available
509
- 5. **Test Restore**: Periodically test backup restoration
510
-
511
- ## Troubleshooting
512
-
513
- ### Sync Failed
514
- \`\`\`bash
515
- # Check connection
516
- /sync status --verbose
517
-
518
- # Force re-authentication
519
- /sync config github --reauth
520
- \`\`\`
521
-
522
- ### Conflicts Won't Resolve
523
- \`\`\`bash
524
- # Reset sync state
525
- /sync reset
526
-
527
- # Re-initialize from remote
528
- /sync pull --force
529
- \`\`\`
530
-
531
- ### Backup Corrupted
532
- \`\`\`bash
533
- # List all backups with integrity check
534
- /backup list --verify
535
-
536
- # Delete corrupted backup
537
- /backup delete <corrupted-id>
538
- \`\`\`
539
- `
540
- };
541
-
542
- const marketplaceSkill = {
543
- id: "mcp-marketplace",
544
- name: {
545
- "en": "MCP Marketplace",
546
- "zh-CN": "MCP \u63D2\u4EF6\u5E02\u573A"
547
- },
548
- description: {
549
- "en": "Discover, install and manage MCP plugins",
550
- "zh-CN": "\u53D1\u73B0\u3001\u5B89\u88C5\u548C\u7BA1\u7406 MCP \u63D2\u4EF6"
551
- },
552
- category: "dev",
553
- triggers: ["/market", "/mcp", "/plugins", "/install"],
554
- enabled: true,
555
- version: "1.0.0",
556
- author: "CCJK Team",
557
- tags: ["mcp", "marketplace", "plugins", "extensions", "install"],
558
- template: `# MCP Marketplace Skill
559
-
560
- ## Overview
561
-
562
- The MCP Marketplace provides a centralized hub for discovering, installing, and managing
563
- Model Context Protocol (MCP) plugins. It integrates seamlessly with Claude Code and CCJK
564
- to enhance your AI-assisted development workflow.
565
-
566
- ## Features
567
-
568
- - **Browse Marketplace**: Discover trending and recommended plugins
569
- - **Search Plugins**: Search by name, category, or tags
570
- - **Install Management**: One-click install, update, and uninstall
571
- - **Security Scanning**: Automatic security checks before installation
572
- - **Dependency Resolution**: Automatic handling of plugin dependencies
573
-
574
- ## Commands
575
-
576
- ### Search Plugins
577
- \`\`\`bash
578
- # Search by keyword
579
- ccjk market search <query>
580
-
581
- # Search with filters
582
- ccjk market search <query> --category ai-tools
583
- ccjk market search <query> --tag productivity
584
- \`\`\`
585
-
586
- ### Browse Marketplace
587
- \`\`\`bash
588
- # View trending plugins
589
- ccjk market trending
590
-
591
- # Browse by category
592
- ccjk market browse --category dev-tools
593
- ccjk market browse --category ai-tools
594
- ccjk market browse --category data-processing
595
- \`\`\`
596
-
597
- ### Install Plugins
598
- \`\`\`bash
599
- # Install a plugin
600
- ccjk market install <plugin-id>
601
-
602
- # Install specific version
603
- ccjk market install <plugin-id>@1.2.0
604
-
605
- # Install with dependencies
606
- ccjk market install <plugin-id> --with-deps
607
-
608
- # Force reinstall
609
- ccjk market install <plugin-id> --force
610
- \`\`\`
611
-
612
- ### Update Plugins
613
- \`\`\`bash
614
- # Update all plugins
615
- ccjk market update
616
-
617
- # Update specific plugin
618
- ccjk market update <plugin-id>
619
-
620
- # Check for updates
621
- ccjk market check-updates
622
- \`\`\`
623
-
624
- ### Manage Installed Plugins
625
- \`\`\`bash
626
- # List installed plugins
627
- ccjk market list
628
-
629
- # Show plugin details
630
- ccjk market info <plugin-id>
631
-
632
- # Uninstall plugin
633
- ccjk market uninstall <plugin-id>
634
-
635
- # Enable/disable plugin
636
- ccjk market enable <plugin-id>
637
- ccjk market disable <plugin-id>
638
- \`\`\`
639
-
640
- ## Categories
641
-
642
- ### AI Tools
643
- AI-enhanced functionality for code generation, analysis, and optimization.
644
- - Code completion enhancers
645
- - AI-powered refactoring
646
- - Intelligent code review
647
-
648
- ### Development Tools
649
- Tools to assist with coding and development workflows.
650
- - Language servers
651
- - Linters and formatters
652
- - Build tool integrations
653
-
654
- ### Productivity Tools
655
- Enhance your development efficiency.
656
- - Task automation
657
- - Snippet managers
658
- - Documentation generators
659
-
660
- ### Data Processing
661
- Data transformation and analysis tools.
662
- - Data converters
663
- - Schema validators
664
- - API integrators
665
-
666
- ### Integrations
667
- Third-party service integrations.
668
- - Cloud service connectors
669
- - Database integrations
670
- - CI/CD tool bridges
671
-
672
- ## Security
673
-
674
- All plugins undergo security scanning before installation:
675
-
676
- ### Security Checks
677
- - **Permission Analysis**: Detects dangerous permission requests
678
- - **Vulnerability Scanning**: Checks against known CVE databases
679
- - **Code Pattern Analysis**: Identifies suspicious code patterns
680
- - **Dependency Audit**: Scans dependencies for vulnerabilities
681
-
682
- ### Security Levels
683
- - \`verified\` - Officially verified by CCJK team
684
- - \`community\` - Community-reviewed plugin
685
- - \`unverified\` - New or unreviewed plugin
686
-
687
- ### Skip Security (Not Recommended)
688
- \`\`\`bash
689
- ccjk market install <plugin-id> --skip-verification
690
- \`\`\`
691
-
692
- ## Configuration
693
-
694
- ### Plugin Settings
695
- \`\`\`bash
696
- # Configure plugin
697
- ccjk market config <plugin-id> --set key=value
698
-
699
- # View plugin config
700
- ccjk market config <plugin-id> --list
701
-
702
- # Reset plugin config
703
- ccjk market config <plugin-id> --reset
704
- \`\`\`
705
-
706
- ### Global Settings
707
- \`\`\`bash
708
- # Set default registry
709
- ccjk market registry set <url>
710
-
711
- # Enable auto-updates
712
- ccjk market settings --auto-update true
713
-
714
- # Set security level
715
- ccjk market settings --security-level strict
716
- \`\`\`
717
-
718
- ## Plugin Development
719
-
720
- ### Create a Plugin
721
- \`\`\`bash
722
- ccjk market create <plugin-name>
723
- \`\`\`
724
-
725
- ### Publish to Marketplace
726
- \`\`\`bash
727
- ccjk market publish
728
- \`\`\`
729
-
730
- ### Plugin Manifest Example
731
- \`\`\`json
732
- {
733
- "packageId": "my-plugin",
734
- "name": "My Plugin",
735
- "version": "1.0.0",
736
- "description": "A useful MCP plugin",
737
- "author": "Your Name",
738
- "license": "MIT",
739
- "keywords": ["mcp", "plugin"],
740
- "mcpServer": {
741
- "command": "node",
742
- "args": ["dist/server.js"]
743
- }
744
- }
745
- \`\`\`
746
-
747
- ## Troubleshooting
748
-
749
- ### Installation Issues
750
- \`\`\`bash
751
- # Clear cache and retry
752
- ccjk market cache clear
753
- ccjk market install <plugin-id>
754
-
755
- # Verbose installation
756
- ccjk market install <plugin-id> --verbose
757
- \`\`\`
758
-
759
- ### Dependency Conflicts
760
- \`\`\`bash
761
- # Check dependencies
762
- ccjk market deps <plugin-id>
763
-
764
- # Force resolve conflicts
765
- ccjk market install <plugin-id> --force-deps
766
- \`\`\`
767
-
768
- ### Rollback
769
- \`\`\`bash
770
- # Rollback to previous version
771
- ccjk market rollback <plugin-id>
772
-
773
- # Rollback to specific version
774
- ccjk market rollback <plugin-id>@1.0.0
775
- \`\`\`
776
-
777
- ## Best Practices
778
-
779
- 1. **Review Before Install**: Always check plugin ratings and reviews
780
- 2. **Keep Updated**: Regularly update plugins for security patches
781
- 3. **Minimal Plugins**: Only install plugins you actively use
782
- 4. **Backup Config**: Export your plugin configuration before major changes
783
- 5. **Report Issues**: Help improve the ecosystem by reporting bugs
784
-
785
- ## Integration with Claude Code
786
-
787
- The marketplace integrates directly with Claude Code's MCP system:
788
-
789
- \`\`\`bash
790
- # Installed plugins are automatically available in Claude Code
791
- claude --mcp-list # Shows marketplace-installed plugins
792
-
793
- # Plugins can be used in conversations
794
- # Example: Using a database plugin
795
- "Connect to my PostgreSQL database and show tables"
796
- \`\`\`
797
- `
798
- };
799
-
800
- const browserSkill = {
801
- id: "browser-automation",
802
- name: {
803
- "en": "Browser Automation",
804
- "zh-CN": "\u6D4F\u89C8\u5668\u81EA\u52A8\u5316"
805
- },
806
- description: {
807
- "en": "Zero-config headless browser automation for AI agents",
808
- "zh-CN": "\u96F6\u914D\u7F6E\u7684 AI \u4EE3\u7406\u6D4F\u89C8\u5668\u81EA\u52A8\u5316\u5DE5\u5177"
809
- },
810
- category: "dev",
811
- triggers: ["/browser", "/web", "/browse"],
812
- enabled: true,
813
- version: "1.0.0",
814
- author: "CCJK",
815
- tags: ["browser", "automation", "web", "scraping", "testing"],
816
- template: `# Browser Automation Skill
817
-
818
- ## Overview
819
- This skill provides zero-config headless browser automation powered by agent-browser.
820
-
821
- ## Quick Start
822
-
823
- ### Open a URL
824
- \`\`\`bash
825
- ccjk browser open https://example.com
826
- \`\`\`
827
-
828
- ### Get Page Snapshot (AI-optimized)
829
- \`\`\`bash
830
- ccjk browser snapshot -i # Interactive elements only
831
- ccjk browser snapshot -c # Compact output
832
- \`\`\`
833
-
834
- ### Interact with Elements
835
- \`\`\`bash
836
- ccjk browser click @e1 # Click by ref
837
- ccjk browser fill @e2 "text" # Fill input
838
- ccjk browser get text @e3 # Get text content
839
- \`\`\`
840
-
841
- ### Screenshots
842
- \`\`\`bash
843
- ccjk browser screenshot # Viewport
844
- ccjk browser screenshot --full # Full page
845
- ccjk browser screenshot output.png # Custom path
846
- \`\`\`
847
-
848
- ### Wait for Conditions
849
- \`\`\`bash
850
- ccjk browser wait 2000 # Wait 2 seconds
851
- ccjk browser wait @e1 # Wait for element
852
- ccjk browser wait --text "Success" # Wait for text
853
- \`\`\`
854
-
855
- ## Common Workflows
856
-
857
- ### Login Flow
858
- \`\`\`bash
859
- ccjk browser open https://app.example.com/login
860
- ccjk browser snapshot -i
861
- ccjk browser fill @e1 "username"
862
- ccjk browser fill @e2 "password"
863
- ccjk browser click @e3
864
- ccjk browser wait --text "Dashboard"
865
- \`\`\`
866
-
867
- ### Form Submission
868
- \`\`\`bash
869
- ccjk browser open https://example.com/form
870
- ccjk browser snapshot -i
871
- ccjk browser fill @e1 "John Doe"
872
- ccjk browser fill @e2 "john@example.com"
873
- ccjk browser click @e3 # Submit button
874
- ccjk browser wait --text "Thank you"
875
- \`\`\`
876
-
877
- ### Web Scraping
878
- \`\`\`bash
879
- ccjk browser open https://example.com/products
880
- ccjk browser snapshot --json > products.json
881
- \`\`\`
882
-
883
- ## Session Management
884
-
885
- ### Parallel Sessions
886
- \`\`\`bash
887
- ccjk browser --session s1 open site-a.com
888
- ccjk browser --session s2 open site-b.com
889
- ccjk browser session list
890
- \`\`\`
891
-
892
- ## Debug Mode
893
- \`\`\`bash
894
- ccjk browser open example.com --headed # Show browser window
895
- \`\`\`
896
-
897
- ## Element References
898
-
899
- The snapshot command returns elements with refs like \`@e1\`, \`@e2\`, etc.
900
- Use these refs to interact with specific elements:
901
-
902
- - \`@e1\` - First interactive element
903
- - \`@e2\` - Second interactive element
904
- - etc.
905
-
906
- ## Tips for AI Agents
907
-
908
- 1. Always run \`snapshot -i\` first to get interactive elements
909
- 2. Use refs from snapshot output for interactions
910
- 3. Wait for page loads with \`wait --text\` or \`wait @ref\`
911
- 4. Use \`--json\` for programmatic parsing
912
- 5. Close browser when done to free resources
913
- `
914
- };
915
-
916
- const workflowSkill = {
917
- id: "workflow-automation",
918
- name: {
919
- "en": "Workflow Automation",
920
- "zh-CN": "\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316"
921
- },
922
- description: {
923
- "en": "Subagent-driven development workflow with two-stage review",
924
- "zh-CN": "Subagent \u9A71\u52A8\u7684\u4E24\u9636\u6BB5\u5BA1\u67E5\u5F00\u53D1\u5DE5\u4F5C\u6D41"
925
- },
926
- category: "dev",
927
- triggers: ["/workflow", "/wf", "/flow"],
928
- enabled: true,
929
- version: "1.0.0",
930
- author: "CCJK",
931
- tags: ["workflow", "subagent", "review", "automation", "ci"],
932
- template: `# Workflow Automation Skill
933
-
934
- ## Overview
935
-
936
- This skill provides Subagent-driven development workflows with automatic two-stage review.
937
- Inspired by Anthropic's Superpowers architecture for autonomous agent collaboration.
938
-
939
- ## Core Concepts
940
-
941
- ### Two-Stage Review
942
- 1. **Draft Stage**: Subagents work on tasks in parallel
943
- 2. **Review Stage**: Automated quality checks and validation
944
- 3. **Finalize Stage**: Merge approved changes
945
-
946
- ### Workflow States
947
- - \`idle\` \u2192 \`planning\` \u2192 \`executing\` \u2192 \`reviewing\` \u2192 \`finalizing\` \u2192 \`completed\`
948
-
949
- ## Quick Start
950
-
951
- ### Create a Workflow
952
- \`\`\`bash
953
- ccjk workflow create "Implement user authentication"
954
- \`\`\`
955
-
956
- ### Start Workflow Execution
957
- \`\`\`bash
958
- ccjk workflow start <workflow-id>
959
- \`\`\`
960
-
961
- ### Check Workflow Status
962
- \`\`\`bash
963
- ccjk workflow status <workflow-id>
964
- ccjk workflow list
965
- \`\`\`
966
-
967
- ## Task Management
968
-
969
- ### Add Tasks to Workflow
970
- \`\`\`bash
971
- ccjk workflow task add <workflow-id> "Create login component"
972
- ccjk workflow task add <workflow-id> "Add authentication API" --depends-on task-1
973
- \`\`\`
974
-
975
- ### Task Priorities
976
- \`\`\`bash
977
- ccjk workflow task add <workflow-id> "Fix security bug" --priority critical
978
- ccjk workflow task add <workflow-id> "Add tests" --priority high
979
- \`\`\`
980
-
981
- ### View Task Dependencies
982
- \`\`\`bash
983
- ccjk workflow tasks <workflow-id> --graph
984
- \`\`\`
985
-
986
- ## Subagent Scheduling
987
-
988
- ### Automatic Scheduling
989
- The scheduler automatically:
990
- - Assigns tasks to available subagents
991
- - Respects task dependencies
992
- - Balances workload across agents
993
- - Handles failures with retry logic
994
-
995
- ### Manual Assignment
996
- \`\`\`bash
997
- ccjk workflow assign <task-id> <subagent-id>
998
- \`\`\`
999
-
1000
- ### View Subagent Status
1001
- \`\`\`bash
1002
- ccjk workflow agents
1003
- ccjk workflow agent <agent-id> --tasks
1004
- \`\`\`
1005
-
1006
- ## Review System
1007
-
1008
- ### Automatic Review
1009
- When tasks complete, the system automatically:
1010
- 1. Runs requirement verification
1011
- 2. Performs code quality checks
1012
- 3. Validates test coverage
1013
- 4. Checks for security issues
1014
-
1015
- ### Review Results
1016
- \`\`\`bash
1017
- ccjk workflow review <workflow-id>
1018
- ccjk workflow review <task-id> --detailed
1019
- \`\`\`
1020
-
1021
- ### Manual Review Override
1022
- \`\`\`bash
1023
- ccjk workflow approve <task-id>
1024
- ccjk workflow reject <task-id> --reason "Missing tests"
1025
- \`\`\`
1026
-
1027
- ## Quality Checks
1028
-
1029
- ### Built-in Checks
1030
- - **Naming Conventions**: camelCase, PascalCase validation
1031
- - **Code Structure**: Function length, nesting depth
1032
- - **Error Handling**: Try-catch coverage
1033
- - **Documentation**: JSDoc/TSDoc presence
1034
- - **Style**: Consistent formatting
1035
-
1036
- ### Custom Checks
1037
- \`\`\`bash
1038
- ccjk workflow check add "No console.log" --pattern "console\\.log"
1039
- ccjk workflow check add "Max file size" --max-lines 500
1040
- \`\`\`
1041
-
1042
- ## Workflow Templates
1043
-
1044
- ### Feature Development
1045
- \`\`\`bash
1046
- ccjk workflow create --template feature "Add dark mode"
1047
- \`\`\`
1048
-
1049
- ### Bug Fix
1050
- \`\`\`bash
1051
- ccjk workflow create --template bugfix "Fix login timeout"
1052
- \`\`\`
1053
-
1054
- ### Refactoring
1055
- \`\`\`bash
1056
- ccjk workflow create --template refactor "Migrate to TypeScript"
1057
- \`\`\`
1058
-
1059
- ## Events and Hooks
1060
-
1061
- ### Available Events
1062
- - \`workflow:created\`
1063
- - \`workflow:started\`
1064
- - \`task:assigned\`
1065
- - \`task:completed\`
1066
- - \`review:passed\`
1067
- - \`review:failed\`
1068
- - \`workflow:completed\`
1069
-
1070
- ### Add Hooks
1071
- \`\`\`bash
1072
- ccjk workflow hook add task:completed "npm test"
1073
- ccjk workflow hook add review:passed "npm run lint"
1074
- \`\`\`
1075
-
1076
- ## Best Practices
1077
-
1078
- ### 1. Break Down Large Tasks
1079
- Split complex features into smaller, independent tasks that can run in parallel.
1080
-
1081
- ### 2. Define Clear Dependencies
1082
- Use \`--depends-on\` to ensure tasks run in the correct order.
1083
-
1084
- ### 3. Set Appropriate Priorities
1085
- - \`critical\`: Security fixes, blocking issues
1086
- - \`high\`: Important features, bugs
1087
- - \`medium\`: Regular development
1088
- - \`low\`: Nice-to-have improvements
1089
-
1090
- ### 4. Review Before Merge
1091
- Always check review results before finalizing:
1092
- \`\`\`bash
1093
- ccjk workflow review <workflow-id> --summary
1094
- \`\`\`
1095
-
1096
- ### 5. Use Templates
1097
- Create custom templates for recurring workflow patterns.
1098
-
1099
- ## Integration with Git
1100
-
1101
- ### Automatic Branch Management
1102
- \`\`\`bash
1103
- ccjk workflow create "Feature X" --branch feature/x
1104
- \`\`\`
1105
-
1106
- ### Worktree Support
1107
- Each subagent can work in isolated git worktrees:
1108
- \`\`\`bash
1109
- ccjk workflow start <id> --worktree
1110
- \`\`\`
1111
-
1112
- ## Troubleshooting
1113
-
1114
- ### Stuck Workflow
1115
- \`\`\`bash
1116
- ccjk workflow diagnose <workflow-id>
1117
- ccjk workflow retry <task-id>
1118
- \`\`\`
1119
-
1120
- ### Cancel Workflow
1121
- \`\`\`bash
1122
- ccjk workflow cancel <workflow-id>
1123
- ccjk workflow cancel <workflow-id> --force
1124
- \`\`\`
1125
-
1126
- ### View Logs
1127
- \`\`\`bash
1128
- ccjk workflow logs <workflow-id>
1129
- ccjk workflow logs <task-id> --tail 100
1130
- \`\`\`
1131
- `
1132
- };
1133
-
1134
- const BUILTIN_SKILLS = [
1135
- cloudSyncSkill,
1136
- browserSkill,
1137
- marketplaceSkill,
1138
- workflowSkill
1139
- ];
1140
- function getBuiltinSkill(id) {
1141
- return BUILTIN_SKILLS.find((s) => s.id === id);
1142
- }
1143
- function getBuiltinSkills() {
1144
- return [...BUILTIN_SKILLS];
1145
- }
1146
- function isBuiltinSkill(id) {
1147
- return BUILTIN_SKILLS.some((s) => s.id === id);
1148
- }
1149
- let registry$1 = null;
1150
- function ensureSkillsDir() {
1151
- if (!existsSync(CCJK_SKILLS_DIR)) {
1152
- mkdirSync(CCJK_SKILLS_DIR, { recursive: true });
1153
- }
1154
- }
1155
- function getRegistry$1() {
1156
- if (!registry$1) {
1157
- registry$1 = loadRegistry$1();
1158
- }
1159
- return registry$1;
1160
- }
1161
- function loadRegistry$1() {
1162
- ensureSkillsDir();
1163
- const skills = /* @__PURE__ */ new Map();
1164
- const categories = /* @__PURE__ */ new Map();
1165
- for (const skill of BUILTIN_SKILLS) {
1166
- skills.set(skill.id, skill);
1167
- const categorySkills = categories.get(skill.category) || [];
1168
- categorySkills.push(skill.id);
1169
- categories.set(skill.category, categorySkills);
1170
- }
1171
- const files = readdirSync(CCJK_SKILLS_DIR).filter((f) => f.endsWith(".json"));
1172
- for (const file of files) {
1173
- try {
1174
- const content = readFileSync(join(CCJK_SKILLS_DIR, file), "utf-8");
1175
- const skill = JSON.parse(content);
1176
- skills.set(skill.id, skill);
1177
- const categorySkills = categories.get(skill.category) || [];
1178
- categorySkills.push(skill.id);
1179
- categories.set(skill.category, categorySkills);
1180
- } catch {
1181
- }
1182
- }
1183
- return {
1184
- skills,
1185
- categories,
1186
- lastUpdated: /* @__PURE__ */ new Date()
1187
- };
1188
- }
1189
- function refreshRegistry$1() {
1190
- registry$1 = loadRegistry$1();
1191
- }
1192
- function getAllSkills() {
1193
- return Array.from(getRegistry$1().skills.values());
1194
- }
1195
- function getSkill(id) {
1196
- return getRegistry$1().skills.get(id);
1197
- }
1198
- function searchSkills(options) {
1199
- let skills = getAllSkills();
1200
- if (options.category) {
1201
- skills = skills.filter((s) => s.category === options.category);
1202
- }
1203
- if (options.enabled !== void 0) {
1204
- skills = skills.filter((s) => s.enabled === options.enabled);
1205
- }
1206
- if (options.tags && options.tags.length > 0) {
1207
- skills = skills.filter(
1208
- (s) => s.tags && options.tags.some((tag) => s.tags.includes(tag))
1209
- );
1210
- }
1211
- if (options.query) {
1212
- const query = options.query.toLowerCase();
1213
- skills = skills.filter(
1214
- (s) => s.id.toLowerCase().includes(query) || s.name.en.toLowerCase().includes(query) || s.name["zh-CN"].toLowerCase().includes(query) || s.triggers.some((t) => t.toLowerCase().includes(query))
1215
- );
1216
- }
1217
- if (options.limit) {
1218
- skills = skills.slice(0, options.limit);
1219
- }
1220
- return skills;
1221
- }
1222
- function addSkill(skill) {
1223
- ensureSkillsDir();
1224
- try {
1225
- const filePath = join(CCJK_SKILLS_DIR, `${skill.id}.json`);
1226
- writeFileAtomic(filePath, JSON.stringify(skill, null, 2));
1227
- refreshRegistry$1();
1228
- return {
1229
- skillId: skill.id,
1230
- success: true,
1231
- path: filePath
1232
- };
1233
- } catch (error) {
1234
- return {
1235
- skillId: skill.id,
1236
- success: false,
1237
- error: error instanceof Error ? error.message : "Unknown error"
1238
- };
1239
- }
1240
- }
1241
- function removeSkill(id) {
1242
- const filePath = join(CCJK_SKILLS_DIR, `${id}.json`);
1243
- if (existsSync(filePath)) {
1244
- unlinkSync(filePath);
1245
- refreshRegistry$1();
1246
- return true;
1247
- }
1248
- return false;
1249
- }
1250
- function setSkillEnabled(id, enabled) {
1251
- const skill = getSkill(id);
1252
- if (!skill)
1253
- return false;
1254
- skill.enabled = enabled;
1255
- addSkill(skill);
1256
- return true;
1257
- }
1258
- function exportSkills(skillIds) {
1259
- const skills = skillIds ? skillIds.map((id) => getSkill(id)).filter(Boolean) : getAllSkills();
1260
- return {
1261
- version: "1.0.0",
1262
- exportedAt: (/* @__PURE__ */ new Date()).toISOString(),
1263
- skills
1264
- };
1265
- }
1266
- function importSkills(data) {
1267
- return data.skills.map((skill) => addSkill(skill));
1268
- }
1269
- const BATCH_TEMPLATES = {
1270
- typescript: {
1271
- category: "dev",
1272
- skills: [
1273
- {
1274
- id: "ts-debug",
1275
- name: { "en": "TypeScript Debug", "zh-CN": "TypeScript \u8C03\u8BD5" },
1276
- description: { "en": "Debug TypeScript code", "zh-CN": "\u8C03\u8BD5 TypeScript \u4EE3\u7801" },
1277
- triggers: ["/ts-debug", "/tsd"],
1278
- templateFile: "ts-debug.md",
1279
- tags: ["typescript", "debug"]
1280
- },
1281
- {
1282
- id: "ts-refactor",
1283
- name: { "en": "TypeScript Refactor", "zh-CN": "TypeScript \u91CD\u6784" },
1284
- description: { "en": "Refactor TypeScript code", "zh-CN": "\u91CD\u6784 TypeScript \u4EE3\u7801" },
1285
- triggers: ["/ts-refactor", "/tsr"],
1286
- templateFile: "ts-refactor.md",
1287
- tags: ["typescript", "refactor"]
1288
- },
1289
- {
1290
- id: "ts-test",
1291
- name: { "en": "TypeScript Test", "zh-CN": "TypeScript \u6D4B\u8BD5" },
1292
- description: { "en": "Generate TypeScript tests", "zh-CN": "\u751F\u6210 TypeScript \u6D4B\u8BD5" },
1293
- triggers: ["/ts-test", "/tst"],
1294
- templateFile: "ts-test.md",
1295
- tags: ["typescript", "testing"]
1296
- },
1297
- {
1298
- id: "ts-type-check",
1299
- name: { "en": "TypeScript Type Check", "zh-CN": "TypeScript \u7C7B\u578B\u68C0\u67E5" },
1300
- description: { "en": "Fix TypeScript type errors", "zh-CN": "\u4FEE\u590D TypeScript \u7C7B\u578B\u9519\u8BEF" },
1301
- triggers: ["/ts-type", "/tstc"],
1302
- templateFile: "ts-type-check.md",
1303
- tags: ["typescript", "types"]
1304
- },
1305
- {
1306
- id: "ts-migrate",
1307
- name: { "en": "TypeScript Migration", "zh-CN": "TypeScript \u8FC1\u79FB" },
1308
- description: { "en": "Migrate JS to TypeScript", "zh-CN": "\u4ECE JS \u8FC1\u79FB\u5230 TypeScript" },
1309
- triggers: ["/ts-migrate", "/tsm"],
1310
- templateFile: "ts-migrate.md",
1311
- tags: ["typescript", "migration"]
1312
- }
1313
- ]
1314
- },
1315
- python: {
1316
- category: "dev",
1317
- skills: [
1318
- {
1319
- id: "py-debug",
1320
- name: { "en": "Python Debug", "zh-CN": "Python \u8C03\u8BD5" },
1321
- description: { "en": "Debug Python code", "zh-CN": "\u8C03\u8BD5 Python \u4EE3\u7801" },
1322
- triggers: ["/py-debug", "/pyd"],
1323
- templateFile: "py-debug.md",
1324
- tags: ["python", "debug"]
1325
- },
1326
- {
1327
- id: "py-refactor",
1328
- name: { "en": "Python Refactor", "zh-CN": "Python \u91CD\u6784" },
1329
- description: { "en": "Refactor Python code", "zh-CN": "\u91CD\u6784 Python \u4EE3\u7801" },
1330
- triggers: ["/py-refactor", "/pyr"],
1331
- templateFile: "py-refactor.md",
1332
- tags: ["python", "refactor"]
1333
- },
1334
- {
1335
- id: "py-test",
1336
- name: { "en": "Python Test", "zh-CN": "Python \u6D4B\u8BD5" },
1337
- description: { "en": "Generate Python tests", "zh-CN": "\u751F\u6210 Python \u6D4B\u8BD5" },
1338
- triggers: ["/py-test", "/pyt"],
1339
- templateFile: "py-test.md",
1340
- tags: ["python", "testing"]
1341
- }
1342
- ]
1343
- },
1344
- seo: {
1345
- category: "seo",
1346
- skills: [
1347
- {
1348
- id: "seo-meta",
1349
- name: { "en": "SEO Meta Optimization", "zh-CN": "SEO \u5143\u6570\u636E\u4F18\u5316" },
1350
- description: { "en": "Optimize meta tags for SEO", "zh-CN": "\u4F18\u5316 SEO \u5143\u6807\u7B7E" },
1351
- triggers: ["/seo-meta", "/meta"],
1352
- templateFile: "seo-meta.md",
1353
- tags: ["seo", "meta"]
1354
- },
1355
- {
1356
- id: "seo-sitemap",
1357
- name: { "en": "Sitemap Generator", "zh-CN": "\u7AD9\u70B9\u5730\u56FE\u751F\u6210" },
1358
- description: { "en": "Generate XML sitemap", "zh-CN": "\u751F\u6210 XML \u7AD9\u70B9\u5730\u56FE" },
1359
- triggers: ["/sitemap", "/seo-sitemap"],
1360
- templateFile: "seo-sitemap.md",
1361
- tags: ["seo", "sitemap"]
1362
- },
1363
- {
1364
- id: "seo-schema",
1365
- name: { "en": "Schema Markup", "zh-CN": "\u7ED3\u6784\u5316\u6570\u636E\u6807\u8BB0" },
1366
- description: { "en": "Add structured data markup", "zh-CN": "\u6DFB\u52A0\u7ED3\u6784\u5316\u6570\u636E\u6807\u8BB0" },
1367
- triggers: ["/schema", "/seo-schema"],
1368
- templateFile: "seo-schema.md",
1369
- tags: ["seo", "schema"]
1370
- },
1371
- {
1372
- id: "seo-cwv",
1373
- name: { "en": "Core Web Vitals", "zh-CN": "\u6838\u5FC3\u7F51\u9875\u6307\u6807" },
1374
- description: { "en": "Optimize Core Web Vitals", "zh-CN": "\u4F18\u5316\u6838\u5FC3\u7F51\u9875\u6307\u6807" },
1375
- triggers: ["/cwv", "/seo-cwv"],
1376
- templateFile: "seo-cwv.md",
1377
- tags: ["seo", "performance"]
1378
- }
1379
- ]
1380
- },
1381
- devops: {
1382
- category: "devops",
1383
- skills: [
1384
- {
1385
- id: "devops-docker",
1386
- name: { "en": "Docker Setup", "zh-CN": "Docker \u914D\u7F6E" },
1387
- description: { "en": "Set up Docker configuration", "zh-CN": "\u914D\u7F6E Docker" },
1388
- triggers: ["/docker", "/devops-docker"],
1389
- templateFile: "devops-docker.md",
1390
- tags: ["devops", "docker"]
1391
- },
1392
- {
1393
- id: "devops-ci",
1394
- name: { "en": "CI Pipeline", "zh-CN": "CI \u6D41\u6C34\u7EBF" },
1395
- description: { "en": "Set up CI pipeline", "zh-CN": "\u914D\u7F6E CI \u6D41\u6C34\u7EBF" },
1396
- triggers: ["/ci", "/devops-ci"],
1397
- templateFile: "devops-ci.md",
1398
- tags: ["devops", "ci"]
1399
- },
1400
- {
1401
- id: "devops-deploy",
1402
- name: { "en": "Deploy Script", "zh-CN": "\u90E8\u7F72\u811A\u672C" },
1403
- description: { "en": "Create deployment script", "zh-CN": "\u521B\u5EFA\u90E8\u7F72\u811A\u672C" },
1404
- triggers: ["/deploy", "/devops-deploy"],
1405
- templateFile: "devops-deploy.md",
1406
- tags: ["devops", "deploy"]
1407
- },
1408
- {
1409
- id: "devops-monitor",
1410
- name: { "en": "Monitoring Setup", "zh-CN": "\u76D1\u63A7\u914D\u7F6E" },
1411
- description: { "en": "Set up monitoring", "zh-CN": "\u914D\u7F6E\u76D1\u63A7" },
1412
- triggers: ["/monitor", "/devops-monitor"],
1413
- templateFile: "devops-monitor.md",
1414
- tags: ["devops", "monitoring"]
1415
- }
1416
- ]
1417
- }
1418
- };
1419
- function createBatchSkills(options) {
1420
- const results = [];
1421
- if (options.lang) {
1422
- const template = BATCH_TEMPLATES[options.lang];
1423
- if (template) {
1424
- for (const skillDef of template.skills) {
1425
- const skill = {
1426
- ...skillDef,
1427
- category: template.category,
1428
- enabled: true,
1429
- version: "1.0.0",
1430
- template: `# ${skillDef.name.en}
1431
-
1432
- ${skillDef.description.en}
1433
-
1434
- This is a placeholder template.`
1435
- };
1436
- results.push(addSkill(skill));
1437
- }
1438
- }
1439
- }
1440
- if (options.seo) {
1441
- const template = BATCH_TEMPLATES.seo;
1442
- for (const skillDef of template.skills) {
1443
- const skill = {
1444
- ...skillDef,
1445
- category: template.category,
1446
- enabled: true,
1447
- version: "1.0.0",
1448
- template: `# ${skillDef.name.en}
1449
-
1450
- ${skillDef.description.en}
1451
-
1452
- This is a placeholder template.`
1453
- };
1454
- results.push(addSkill(skill));
1455
- }
1456
- }
1457
- if (options.devops) {
1458
- const template = BATCH_TEMPLATES.devops;
1459
- for (const skillDef of template.skills) {
1460
- const skill = {
1461
- ...skillDef,
1462
- category: template.category,
1463
- enabled: true,
1464
- version: "1.0.0",
1465
- template: `# ${skillDef.name.en}
1466
-
1467
- ${skillDef.description.en}
1468
-
1469
- This is a placeholder template.`
1470
- };
1471
- results.push(addSkill(skill));
1472
- }
1473
- }
1474
- return results;
1475
- }
1476
- function getBatchCategories() {
1477
- return Object.keys(BATCH_TEMPLATES);
1478
- }
1479
-
1480
326
  const PREDEFINED_GROUPS = [
1481
327
  // TypeScript Development Group
1482
328
  {
@@ -2538,7 +1384,7 @@ async function handleAddProvider() {
2538
1384
  defaultValue: true
2539
1385
  });
2540
1386
  if (setAsDefault) {
2541
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
1387
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.Q; });
2542
1388
  const switched = await switchToProvider(provider.id);
2543
1389
  if (switched) {
2544
1390
  console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: provider.name })));
@@ -2733,7 +1579,7 @@ ${i18n.t("codex:copyingProvider", { name: provider.name })}`));
2733
1579
  defaultValue: false
2734
1580
  });
2735
1581
  if (setAsDefault) {
2736
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
1582
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.Q; });
2737
1583
  const switched = await switchToProvider(copiedProvider.id);
2738
1584
  if (switched) {
2739
1585
  console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: copiedProvider.name })));
@@ -4089,4 +2935,4 @@ function showStatus(type, message) {
4089
2935
  console.log(STATUS[type](message));
4090
2936
  }
4091
2937
 
4092
- export { writeAiderConfig as $, getRegistry$1 as A, importSkills as B, isBuiltinSkill as C, refreshRegistry$1 as D, removeSkill as E, searchSkills as F, setSkillEnabled as G, addGroup as H, disableGroup as I, enableGroup as J, ensureGroupsDir as K, exportGroups as L, getAllGroups as M, getEnabledAgents as N, getEnabledSkillIds as O, getGroup as P, getRegistry as Q, importGroups as R, isGroupEnabled as S, refreshRegistry as T, removeGroup as U, searchGroups as V, isAiderInstalled as W, getAiderVersion as X, installAider as Y, ensureAiderDir as Z, readAiderConfig as _, getPluginInfo as a, configureAiderApi as a0, getAiderModelPresets as a1, runAider as a2, configureIncrementalManagement as a3, addProviderToExisting as a4, editExistingProvider as a5, deleteProviders as a6, validateProviderData as a7, CodexUninstaller as a8, ensureContinueDir as a9, runDoctor as aA, MenuBuilder as aB, showQuickMenu as aC, confirm as aD, showStatus as aE, codexProviderManager as aF, codexConfigSwitch$1 as aG, codexUninstaller as aH, isContinueConfigured as aa, readContinueConfig as ab, writeContinueConfig as ac, addContinueModel as ad, removeContinueModel as ae, getContinueProviderPresets as af, configureContinueApi as ag, addContinueMcpServer as ah, addContinueCustomCommand as ai, enableContinueContextProvider as aj, syncSkillsToContinue as ak, getToolConfigPath as al, getToolDir as am, isToolInstalled as an, getToolVersion as ao, getToolStatus as ap, getAllToolsStatus as aq, getInstalledTools as ar, installTool as as, getToolInfo as at, getAllToolsInfo as au, getToolsByCategory as av, formatToolStatus as aw, getRecommendedTools as ax, runHealthCheck as ay, displayHealthReport as az, listPlugins as b, enablePlugin as c, discoverPlugins as d, ensurePluginsDir as e, disablePlugin as f, getLoadedPlugins as g, getPluginWorkflows as h, getPluginAgents as i, getPluginMcpServices as j, getPluginOutputStyles as k, loadPlugin as l, getPluginSkills as m, initializePlugins as n, addSkill as o, createBatchSkills as p, ensureSkillsDir as q, readPluginConfig as r, exportSkills as s, getAllSkills as t, unloadPlugin as u, getBatchCategories as v, writePluginConfig as w, getBuiltinSkill as x, getBuiltinSkills as y, getSkill as z };
2938
+ export { getContinueProviderPresets as $, getRegistry as A, importGroups as B, isGroupEnabled as C, refreshRegistry as D, removeGroup as E, searchGroups as F, isAiderInstalled as G, getAiderVersion as H, installAider as I, ensureAiderDir as J, readAiderConfig as K, writeAiderConfig as L, configureAiderApi as M, getAiderModelPresets as N, runAider as O, configureIncrementalManagement as P, addProviderToExisting as Q, editExistingProvider as R, deleteProviders as S, validateProviderData as T, CodexUninstaller as U, ensureContinueDir as V, isContinueConfigured as W, readContinueConfig as X, writeContinueConfig as Y, addContinueModel as Z, removeContinueModel as _, getPluginInfo as a, configureContinueApi as a0, addContinueMcpServer as a1, addContinueCustomCommand as a2, enableContinueContextProvider as a3, syncSkillsToContinue as a4, getToolConfigPath as a5, getToolDir as a6, isToolInstalled as a7, getToolVersion as a8, getToolStatus as a9, getAllToolsStatus as aa, getInstalledTools as ab, installTool as ac, getToolInfo as ad, getAllToolsInfo as ae, getToolsByCategory as af, formatToolStatus as ag, getRecommendedTools as ah, runHealthCheck as ai, displayHealthReport as aj, runDoctor as ak, MenuBuilder as al, showQuickMenu as am, confirm as an, showStatus as ao, codexProviderManager as ap, codexConfigSwitch$1 as aq, codexUninstaller as ar, listPlugins as b, enablePlugin as c, discoverPlugins as d, ensurePluginsDir as e, disablePlugin as f, getLoadedPlugins as g, getPluginWorkflows as h, getPluginAgents as i, getPluginMcpServices as j, getPluginOutputStyles as k, loadPlugin as l, getPluginSkills as m, initializePlugins as n, addGroup as o, disableGroup as p, enableGroup as q, readPluginConfig as r, ensureGroupsDir as s, exportGroups as t, unloadPlugin as u, getAllGroups as v, writePluginConfig as w, getEnabledAgents as x, getEnabledSkillIds as y, getGroup as z };