devvami 1.4.2 → 1.5.1

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 (96) hide show
  1. package/README.md +72 -0
  2. package/oclif.manifest.json +275 -235
  3. package/package.json +2 -1
  4. package/src/commands/auth/login.js +20 -16
  5. package/src/commands/changelog.js +12 -12
  6. package/src/commands/costs/get.js +14 -24
  7. package/src/commands/costs/trend.js +13 -24
  8. package/src/commands/create/repo.js +72 -54
  9. package/src/commands/docs/list.js +29 -25
  10. package/src/commands/docs/projects.js +58 -24
  11. package/src/commands/docs/read.js +56 -39
  12. package/src/commands/docs/search.js +37 -25
  13. package/src/commands/doctor.js +37 -35
  14. package/src/commands/dotfiles/add.js +51 -39
  15. package/src/commands/dotfiles/setup.js +62 -33
  16. package/src/commands/dotfiles/status.js +18 -18
  17. package/src/commands/dotfiles/sync.js +62 -46
  18. package/src/commands/init.js +143 -132
  19. package/src/commands/logs/index.js +10 -16
  20. package/src/commands/open.js +12 -12
  21. package/src/commands/pipeline/logs.js +8 -11
  22. package/src/commands/pipeline/rerun.js +21 -16
  23. package/src/commands/pipeline/status.js +28 -24
  24. package/src/commands/pr/create.js +40 -27
  25. package/src/commands/pr/detail.js +9 -7
  26. package/src/commands/pr/review.js +18 -19
  27. package/src/commands/pr/status.js +27 -21
  28. package/src/commands/prompts/browse.js +15 -15
  29. package/src/commands/prompts/download.js +15 -16
  30. package/src/commands/prompts/install-speckit.js +11 -12
  31. package/src/commands/prompts/list.js +12 -12
  32. package/src/commands/prompts/run.js +16 -19
  33. package/src/commands/repo/list.js +57 -41
  34. package/src/commands/search.js +20 -18
  35. package/src/commands/security/setup.js +38 -34
  36. package/src/commands/sync-config-ai/index.js +257 -0
  37. package/src/commands/tasks/assigned.js +43 -33
  38. package/src/commands/tasks/list.js +43 -33
  39. package/src/commands/tasks/today.js +32 -30
  40. package/src/commands/upgrade.js +18 -17
  41. package/src/commands/vuln/detail.js +8 -8
  42. package/src/commands/vuln/scan.js +39 -20
  43. package/src/commands/vuln/search.js +23 -18
  44. package/src/commands/welcome.js +2 -2
  45. package/src/commands/whoami.js +19 -23
  46. package/src/formatters/ai-config.js +215 -0
  47. package/src/formatters/charts.js +6 -23
  48. package/src/formatters/cost.js +1 -7
  49. package/src/formatters/dotfiles.js +48 -19
  50. package/src/formatters/markdown.js +11 -6
  51. package/src/formatters/openapi.js +7 -9
  52. package/src/formatters/prompts.js +69 -78
  53. package/src/formatters/security.js +2 -2
  54. package/src/formatters/status.js +1 -1
  55. package/src/formatters/table.js +1 -3
  56. package/src/formatters/vuln.js +33 -20
  57. package/src/help.js +162 -164
  58. package/src/hooks/init.js +1 -3
  59. package/src/hooks/postrun.js +5 -7
  60. package/src/index.js +1 -1
  61. package/src/services/ai-config-store.js +349 -0
  62. package/src/services/ai-env-deployer.js +650 -0
  63. package/src/services/ai-env-scanner.js +983 -0
  64. package/src/services/audit-detector.js +2 -2
  65. package/src/services/audit-runner.js +40 -31
  66. package/src/services/auth.js +9 -9
  67. package/src/services/awesome-copilot.js +7 -4
  68. package/src/services/aws-costs.js +22 -22
  69. package/src/services/clickup.js +26 -26
  70. package/src/services/cloudwatch-logs.js +5 -9
  71. package/src/services/config.js +13 -13
  72. package/src/services/docs.js +19 -20
  73. package/src/services/dotfiles.js +149 -51
  74. package/src/services/github.js +22 -24
  75. package/src/services/nvd.js +21 -31
  76. package/src/services/platform.js +2 -2
  77. package/src/services/prompts.js +23 -35
  78. package/src/services/security.js +135 -61
  79. package/src/services/shell.js +4 -4
  80. package/src/services/skills-sh.js +3 -9
  81. package/src/services/speckit.js +4 -7
  82. package/src/services/version-check.js +10 -10
  83. package/src/types.js +117 -0
  84. package/src/utils/aws-vault.js +18 -41
  85. package/src/utils/banner.js +5 -7
  86. package/src/utils/errors.js +42 -46
  87. package/src/utils/frontmatter.js +4 -4
  88. package/src/utils/gradient.js +18 -16
  89. package/src/utils/open-browser.js +3 -3
  90. package/src/utils/tui/form.js +1184 -0
  91. package/src/utils/tui/modal.js +15 -14
  92. package/src/utils/tui/navigable-table.js +16 -16
  93. package/src/utils/tui/tab-tui.js +1089 -0
  94. package/src/utils/typewriter.js +3 -3
  95. package/src/utils/welcome.js +18 -21
  96. package/src/validators/repo-name.js +2 -2
package/README.md CHANGED
@@ -32,6 +32,12 @@ Devvami gives you a unified CLI to manage your entire development workflow:
32
32
  | 📖 **Docs** | Search and read repository documentation |
33
33
  | 🔍 **Search** | Search code across repositories |
34
34
  | 🩺 **Health Check** | Diagnose your development environment |
35
+ | 🗂️ **Dotfiles** | Manage dotfiles with chezmoi and age encryption |
36
+ | 🤖 **AI Config** | Sync AI tool configurations across environments |
37
+ | 💬 **Prompts** | Browse, download, and run AI prompts locally |
38
+ | 🛡️ **Vulnerabilities** | Scan and search CVEs in your dependencies |
39
+ | 📋 **Logs** | Browse and query CloudWatch log groups |
40
+ | 🔐 **Security** | Set up credential protection tools (aws-vault, GPG) |
35
41
 
36
42
  All from your terminal. No context switching.
37
43
 
@@ -136,6 +142,64 @@ dvmi docs search # Search docs
136
142
  dvmi docs projects # List documented projects
137
143
  ```
138
144
 
145
+ ### Dotfiles
146
+
147
+ ```bash
148
+ dvmi dotfiles setup # Configure chezmoi with age encryption
149
+ dvmi dotfiles add # Add files to chezmoi management (auto-encrypts sensitive files)
150
+ dvmi dotfiles status # Show managed files, encryption state, and sync health
151
+ dvmi dotfiles sync # Sync dotfiles with remote repository (push/pull)
152
+ ```
153
+
154
+ ### Prompts
155
+
156
+ ```bash
157
+ dvmi prompts list # List prompts from your personal repository
158
+ dvmi prompts browse # Browse prompts from skills.sh or awesome-copilot
159
+ dvmi prompts download # Download a prompt to .prompts/
160
+ dvmi prompts run # Execute a local prompt with a configured AI tool
161
+ dvmi prompts install-speckit # Install spec-kit and run specify init
162
+ ```
163
+
164
+ ### Vulnerabilities
165
+
166
+ ```bash
167
+ dvmi vuln scan # Scan current directory for known vulnerabilities
168
+ dvmi vuln search # Search for recent CVEs by keyword
169
+ dvmi vuln detail <CVE-ID> # View full details for a specific CVE
170
+ ```
171
+
172
+ ### Logs
173
+
174
+ ```bash
175
+ dvmi logs # Browse and query CloudWatch log groups interactively
176
+ ```
177
+
178
+ ### Security
179
+
180
+ ```bash
181
+ dvmi security setup # Interactive wizard to set up credential protection tools
182
+ ```
183
+
184
+ ### AI Config
185
+
186
+ ```bash
187
+ dvmi sync-config-ai # Manage AI tool configurations across environments via TUI
188
+ dvmi sync-config-ai --json # Output current state as structured JSON (CI / scripting)
189
+ ```
190
+
191
+ The TUI shows 6 tabs — **Environments** (read-only detection) + one tab per category (**MCPs**, **Commands**, **Rules**, **Skills**, **Agents**). Each category tab has two sections:
192
+
193
+ - **Native** — items already in each tool's config that dvmi doesn't manage yet (press `i` to import)
194
+ - **Managed** — entries you've added via dvmi; synced across all target environments automatically
195
+
196
+ MCP server forms adapt to the selected transport type: **stdio** shows Command and Args fields, **sse/streamable-http** shows a URL field, and irrelevant fields are hidden automatically. Environment variables (e.g. API keys) can be set via a dedicated editor in `KEY=VALUE` format. Args are entered one per line for proper support of arguments containing spaces. Transport-specific validation ensures stdio entries have a command and SSE/streamable-http entries have a URL before saving.
197
+
198
+
199
+ Supports 10 AI environments: VS Code Copilot, Claude Code, OpenCode, Gemini CLI, GitHub Copilot CLI, Cursor, Windsurf, Continue.dev, Zed, Amazon Q.
200
+
201
+ Key bindings: `n` create · `Enter` edit · `d` toggle active · `Del` delete · `r` reveal env vars · `i` import native · `Tab` switch section · `q` exit
202
+
139
203
  ### Other
140
204
 
141
205
  ```bash
@@ -143,6 +207,7 @@ dvmi auth login # Login to GitHub/AWS
143
207
  dvmi search # Search code across repos
144
208
  dvmi changelog # Generate changelog from commits
145
209
  dvmi open # Open resources in browser
210
+ dvmi welcome # Show the dvmi mission dashboard
146
211
  ```
147
212
 
148
213
  ---
@@ -284,6 +349,13 @@ Built with:
284
349
  - [ora](https://github.com/sindresorhus/ora) — Spinners
285
350
  - [keytar](https://github.com/atom/node-keytar) — Secure credentials
286
351
  - [@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js) — Interactive prompts
352
+ - [execa](https://github.com/sindresorhus/execa) — Process execution
353
+ - [js-yaml](https://github.com/nodeca/js-yaml) — YAML parsing
354
+ - [marked](https://github.com/markedjs/marked) — Markdown parsing
355
+ - [figlet](https://github.com/patorjk/figlet.js) — ASCII art banners
356
+ - [open](https://github.com/sindresorhus/open) — Browser/app launcher
357
+ - [@aws-sdk](https://github.com/aws/aws-sdk-js-v3) — AWS services integration
358
+ - [pako](https://github.com/nodeca/pako) — Compression utilities
287
359
 
288
360
  ---
289
361
 
@@ -520,211 +520,6 @@
520
520
  "trend.js"
521
521
  ]
522
522
  },
523
- "docs:list": {
524
- "aliases": [],
525
- "args": {},
526
- "description": "Lista i file di documentazione del repository",
527
- "examples": [
528
- "<%= config.bin %> docs list",
529
- "<%= config.bin %> docs list --repo my-service",
530
- "<%= config.bin %> docs list --search \"arch\"",
531
- "<%= config.bin %> docs list --json"
532
- ],
533
- "flags": {
534
- "json": {
535
- "description": "Format output as json.",
536
- "helpGroup": "GLOBAL",
537
- "name": "json",
538
- "allowNo": false,
539
- "type": "boolean"
540
- },
541
- "repo": {
542
- "char": "r",
543
- "description": "Nome del repository (default: repo nella directory corrente)",
544
- "name": "repo",
545
- "hasDynamicHelp": false,
546
- "multiple": false,
547
- "type": "option"
548
- },
549
- "search": {
550
- "char": "s",
551
- "description": "Filtra per nome o percorso (case-insensitive)",
552
- "name": "search",
553
- "hasDynamicHelp": false,
554
- "multiple": false,
555
- "type": "option"
556
- }
557
- },
558
- "hasDynamicHelp": false,
559
- "hiddenAliases": [],
560
- "id": "docs:list",
561
- "pluginAlias": "devvami",
562
- "pluginName": "devvami",
563
- "pluginType": "core",
564
- "strict": true,
565
- "enableJsonFlag": true,
566
- "isESM": true,
567
- "relativePath": [
568
- "src",
569
- "commands",
570
- "docs",
571
- "list.js"
572
- ]
573
- },
574
- "docs:projects": {
575
- "aliases": [],
576
- "args": {},
577
- "description": "Mostra la documentazione disponibile per ogni repository dell'organizzazione",
578
- "examples": [
579
- "<%= config.bin %> docs projects",
580
- "<%= config.bin %> docs projects --search \"service\"",
581
- "<%= config.bin %> docs projects --json"
582
- ],
583
- "flags": {
584
- "json": {
585
- "description": "Format output as json.",
586
- "helpGroup": "GLOBAL",
587
- "name": "json",
588
- "allowNo": false,
589
- "type": "boolean"
590
- },
591
- "search": {
592
- "char": "s",
593
- "description": "Filtra per nome repository (case-insensitive)",
594
- "name": "search",
595
- "hasDynamicHelp": false,
596
- "multiple": false,
597
- "type": "option"
598
- }
599
- },
600
- "hasDynamicHelp": false,
601
- "hiddenAliases": [],
602
- "id": "docs:projects",
603
- "pluginAlias": "devvami",
604
- "pluginName": "devvami",
605
- "pluginType": "core",
606
- "strict": true,
607
- "enableJsonFlag": true,
608
- "isESM": true,
609
- "relativePath": [
610
- "src",
611
- "commands",
612
- "docs",
613
- "projects.js"
614
- ]
615
- },
616
- "docs:read": {
617
- "aliases": [],
618
- "args": {
619
- "file": {
620
- "description": "Percorso del file da leggere (default: README)",
621
- "name": "file",
622
- "required": false
623
- }
624
- },
625
- "description": "Leggi un file di documentazione del repository nel terminale",
626
- "examples": [
627
- "<%= config.bin %> docs read",
628
- "<%= config.bin %> docs read --repo my-service",
629
- "<%= config.bin %> docs read docs/architecture.md",
630
- "<%= config.bin %> docs read openapi.yaml",
631
- "<%= config.bin %> docs read openapi.yaml --raw",
632
- "<%= config.bin %> docs read --render",
633
- "<%= config.bin %> docs read --json"
634
- ],
635
- "flags": {
636
- "json": {
637
- "description": "Format output as json.",
638
- "helpGroup": "GLOBAL",
639
- "name": "json",
640
- "allowNo": false,
641
- "type": "boolean"
642
- },
643
- "repo": {
644
- "char": "r",
645
- "description": "Nome del repository (default: repo nella directory corrente)",
646
- "name": "repo",
647
- "hasDynamicHelp": false,
648
- "multiple": false,
649
- "type": "option"
650
- },
651
- "raw": {
652
- "description": "Mostra contenuto grezzo senza parsing speciale",
653
- "name": "raw",
654
- "allowNo": false,
655
- "type": "boolean"
656
- },
657
- "render": {
658
- "description": "Apri i diagrammi Mermaid nel browser via mermaid.live",
659
- "name": "render",
660
- "allowNo": false,
661
- "type": "boolean"
662
- }
663
- },
664
- "hasDynamicHelp": false,
665
- "hiddenAliases": [],
666
- "id": "docs:read",
667
- "pluginAlias": "devvami",
668
- "pluginName": "devvami",
669
- "pluginType": "core",
670
- "strict": true,
671
- "enableJsonFlag": true,
672
- "isESM": true,
673
- "relativePath": [
674
- "src",
675
- "commands",
676
- "docs",
677
- "read.js"
678
- ]
679
- },
680
- "docs:search": {
681
- "aliases": [],
682
- "args": {
683
- "term": {
684
- "description": "Termine di ricerca (case-insensitive)",
685
- "name": "term",
686
- "required": true
687
- }
688
- },
689
- "description": "Cerca testo nella documentazione del repository",
690
- "examples": [
691
- "<%= config.bin %> docs search \"authentication\"",
692
- "<%= config.bin %> docs search \"deploy\" --repo my-service",
693
- "<%= config.bin %> docs search \"endpoint\" --json"
694
- ],
695
- "flags": {
696
- "json": {
697
- "description": "Format output as json.",
698
- "helpGroup": "GLOBAL",
699
- "name": "json",
700
- "allowNo": false,
701
- "type": "boolean"
702
- },
703
- "repo": {
704
- "char": "r",
705
- "description": "Nome del repository (default: repo nella directory corrente)",
706
- "name": "repo",
707
- "hasDynamicHelp": false,
708
- "multiple": false,
709
- "type": "option"
710
- }
711
- },
712
- "hasDynamicHelp": false,
713
- "hiddenAliases": [],
714
- "id": "docs:search",
715
- "pluginAlias": "devvami",
716
- "pluginName": "devvami",
717
- "pluginType": "core",
718
- "strict": true,
719
- "enableJsonFlag": true,
720
- "isESM": true,
721
- "relativePath": [
722
- "src",
723
- "commands",
724
- "docs",
725
- "search.js"
726
- ]
727
- },
728
523
  "create:repo": {
729
524
  "aliases": [],
730
525
  "args": {
@@ -1023,15 +818,15 @@
1023
818
  "sync.js"
1024
819
  ]
1025
820
  },
1026
- "logs": {
821
+ "docs:list": {
1027
822
  "aliases": [],
1028
823
  "args": {},
1029
- "description": "Browse and query CloudWatch log groups interactively",
824
+ "description": "Lista i file di documentazione del repository",
1030
825
  "examples": [
1031
- "<%= config.bin %> logs",
1032
- "<%= config.bin %> logs --group /aws/lambda/my-fn",
1033
- "<%= config.bin %> logs --group /aws/lambda/my-fn --filter \"ERROR\" --since 24h",
1034
- "<%= config.bin %> logs --group /aws/lambda/my-fn --limit 50 --json"
826
+ "<%= config.bin %> docs list",
827
+ "<%= config.bin %> docs list --repo my-service",
828
+ "<%= config.bin %> docs list --search \"arch\"",
829
+ "<%= config.bin %> docs list --json"
1035
830
  ],
1036
831
  "flags": {
1037
832
  "json": {
@@ -1041,43 +836,172 @@
1041
836
  "allowNo": false,
1042
837
  "type": "boolean"
1043
838
  },
1044
- "group": {
1045
- "char": "g",
1046
- "description": "Log group name bypasses interactive picker",
1047
- "name": "group",
839
+ "repo": {
840
+ "char": "r",
841
+ "description": "Nome del repository (default: repo nella directory corrente)",
842
+ "name": "repo",
1048
843
  "hasDynamicHelp": false,
1049
844
  "multiple": false,
1050
845
  "type": "option"
1051
846
  },
1052
- "filter": {
1053
- "char": "f",
1054
- "description": "CloudWatch filter pattern (empty = all events)",
1055
- "name": "filter",
1056
- "default": "",
847
+ "search": {
848
+ "char": "s",
849
+ "description": "Filtra per nome o percorso (case-insensitive)",
850
+ "name": "search",
1057
851
  "hasDynamicHelp": false,
1058
852
  "multiple": false,
1059
853
  "type": "option"
854
+ }
855
+ },
856
+ "hasDynamicHelp": false,
857
+ "hiddenAliases": [],
858
+ "id": "docs:list",
859
+ "pluginAlias": "devvami",
860
+ "pluginName": "devvami",
861
+ "pluginType": "core",
862
+ "strict": true,
863
+ "enableJsonFlag": true,
864
+ "isESM": true,
865
+ "relativePath": [
866
+ "src",
867
+ "commands",
868
+ "docs",
869
+ "list.js"
870
+ ]
871
+ },
872
+ "docs:projects": {
873
+ "aliases": [],
874
+ "args": {},
875
+ "description": "Mostra la documentazione disponibile per ogni repository dell'organizzazione",
876
+ "examples": [
877
+ "<%= config.bin %> docs projects",
878
+ "<%= config.bin %> docs projects --search \"service\"",
879
+ "<%= config.bin %> docs projects --json"
880
+ ],
881
+ "flags": {
882
+ "json": {
883
+ "description": "Format output as json.",
884
+ "helpGroup": "GLOBAL",
885
+ "name": "json",
886
+ "allowNo": false,
887
+ "type": "boolean"
1060
888
  },
1061
- "since": {
1062
- "description": "Time window: 1h, 24h, 7d",
1063
- "name": "since",
1064
- "default": "1h",
889
+ "search": {
890
+ "char": "s",
891
+ "description": "Filtra per nome repository (case-insensitive)",
892
+ "name": "search",
1065
893
  "hasDynamicHelp": false,
1066
894
  "multiple": false,
1067
895
  "type": "option"
896
+ }
897
+ },
898
+ "hasDynamicHelp": false,
899
+ "hiddenAliases": [],
900
+ "id": "docs:projects",
901
+ "pluginAlias": "devvami",
902
+ "pluginName": "devvami",
903
+ "pluginType": "core",
904
+ "strict": true,
905
+ "enableJsonFlag": true,
906
+ "isESM": true,
907
+ "relativePath": [
908
+ "src",
909
+ "commands",
910
+ "docs",
911
+ "projects.js"
912
+ ]
913
+ },
914
+ "docs:read": {
915
+ "aliases": [],
916
+ "args": {
917
+ "file": {
918
+ "description": "Percorso del file da leggere (default: README)",
919
+ "name": "file",
920
+ "required": false
921
+ }
922
+ },
923
+ "description": "Leggi un file di documentazione del repository nel terminale",
924
+ "examples": [
925
+ "<%= config.bin %> docs read",
926
+ "<%= config.bin %> docs read --repo my-service",
927
+ "<%= config.bin %> docs read docs/architecture.md",
928
+ "<%= config.bin %> docs read openapi.yaml",
929
+ "<%= config.bin %> docs read openapi.yaml --raw",
930
+ "<%= config.bin %> docs read --render",
931
+ "<%= config.bin %> docs read --json"
932
+ ],
933
+ "flags": {
934
+ "json": {
935
+ "description": "Format output as json.",
936
+ "helpGroup": "GLOBAL",
937
+ "name": "json",
938
+ "allowNo": false,
939
+ "type": "boolean"
1068
940
  },
1069
- "limit": {
1070
- "description": "Max log events to return (1–10000)",
1071
- "name": "limit",
1072
- "default": 100,
941
+ "repo": {
942
+ "char": "r",
943
+ "description": "Nome del repository (default: repo nella directory corrente)",
944
+ "name": "repo",
1073
945
  "hasDynamicHelp": false,
1074
946
  "multiple": false,
1075
947
  "type": "option"
1076
948
  },
1077
- "region": {
949
+ "raw": {
950
+ "description": "Mostra contenuto grezzo senza parsing speciale",
951
+ "name": "raw",
952
+ "allowNo": false,
953
+ "type": "boolean"
954
+ },
955
+ "render": {
956
+ "description": "Apri i diagrammi Mermaid nel browser via mermaid.live",
957
+ "name": "render",
958
+ "allowNo": false,
959
+ "type": "boolean"
960
+ }
961
+ },
962
+ "hasDynamicHelp": false,
963
+ "hiddenAliases": [],
964
+ "id": "docs:read",
965
+ "pluginAlias": "devvami",
966
+ "pluginName": "devvami",
967
+ "pluginType": "core",
968
+ "strict": true,
969
+ "enableJsonFlag": true,
970
+ "isESM": true,
971
+ "relativePath": [
972
+ "src",
973
+ "commands",
974
+ "docs",
975
+ "read.js"
976
+ ]
977
+ },
978
+ "docs:search": {
979
+ "aliases": [],
980
+ "args": {
981
+ "term": {
982
+ "description": "Termine di ricerca (case-insensitive)",
983
+ "name": "term",
984
+ "required": true
985
+ }
986
+ },
987
+ "description": "Cerca testo nella documentazione del repository",
988
+ "examples": [
989
+ "<%= config.bin %> docs search \"authentication\"",
990
+ "<%= config.bin %> docs search \"deploy\" --repo my-service",
991
+ "<%= config.bin %> docs search \"endpoint\" --json"
992
+ ],
993
+ "flags": {
994
+ "json": {
995
+ "description": "Format output as json.",
996
+ "helpGroup": "GLOBAL",
997
+ "name": "json",
998
+ "allowNo": false,
999
+ "type": "boolean"
1000
+ },
1001
+ "repo": {
1078
1002
  "char": "r",
1079
- "description": "AWS region (defaults to project config awsRegion)",
1080
- "name": "region",
1003
+ "description": "Nome del repository (default: repo nella directory corrente)",
1004
+ "name": "repo",
1081
1005
  "hasDynamicHelp": false,
1082
1006
  "multiple": false,
1083
1007
  "type": "option"
@@ -1085,7 +1009,7 @@
1085
1009
  },
1086
1010
  "hasDynamicHelp": false,
1087
1011
  "hiddenAliases": [],
1088
- "id": "logs",
1012
+ "id": "docs:search",
1089
1013
  "pluginAlias": "devvami",
1090
1014
  "pluginName": "devvami",
1091
1015
  "pluginType": "core",
@@ -1095,8 +1019,8 @@
1095
1019
  "relativePath": [
1096
1020
  "src",
1097
1021
  "commands",
1098
- "logs",
1099
- "index.js"
1022
+ "docs",
1023
+ "search.js"
1100
1024
  ]
1101
1025
  },
1102
1026
  "pipeline:logs": {
@@ -1241,6 +1165,82 @@
1241
1165
  "status.js"
1242
1166
  ]
1243
1167
  },
1168
+ "logs": {
1169
+ "aliases": [],
1170
+ "args": {},
1171
+ "description": "Browse and query CloudWatch log groups interactively",
1172
+ "examples": [
1173
+ "<%= config.bin %> logs",
1174
+ "<%= config.bin %> logs --group /aws/lambda/my-fn",
1175
+ "<%= config.bin %> logs --group /aws/lambda/my-fn --filter \"ERROR\" --since 24h",
1176
+ "<%= config.bin %> logs --group /aws/lambda/my-fn --limit 50 --json"
1177
+ ],
1178
+ "flags": {
1179
+ "json": {
1180
+ "description": "Format output as json.",
1181
+ "helpGroup": "GLOBAL",
1182
+ "name": "json",
1183
+ "allowNo": false,
1184
+ "type": "boolean"
1185
+ },
1186
+ "group": {
1187
+ "char": "g",
1188
+ "description": "Log group name — bypasses interactive picker",
1189
+ "name": "group",
1190
+ "hasDynamicHelp": false,
1191
+ "multiple": false,
1192
+ "type": "option"
1193
+ },
1194
+ "filter": {
1195
+ "char": "f",
1196
+ "description": "CloudWatch filter pattern (empty = all events)",
1197
+ "name": "filter",
1198
+ "default": "",
1199
+ "hasDynamicHelp": false,
1200
+ "multiple": false,
1201
+ "type": "option"
1202
+ },
1203
+ "since": {
1204
+ "description": "Time window: 1h, 24h, 7d",
1205
+ "name": "since",
1206
+ "default": "1h",
1207
+ "hasDynamicHelp": false,
1208
+ "multiple": false,
1209
+ "type": "option"
1210
+ },
1211
+ "limit": {
1212
+ "description": "Max log events to return (1–10000)",
1213
+ "name": "limit",
1214
+ "default": 100,
1215
+ "hasDynamicHelp": false,
1216
+ "multiple": false,
1217
+ "type": "option"
1218
+ },
1219
+ "region": {
1220
+ "char": "r",
1221
+ "description": "AWS region (defaults to project config awsRegion)",
1222
+ "name": "region",
1223
+ "hasDynamicHelp": false,
1224
+ "multiple": false,
1225
+ "type": "option"
1226
+ }
1227
+ },
1228
+ "hasDynamicHelp": false,
1229
+ "hiddenAliases": [],
1230
+ "id": "logs",
1231
+ "pluginAlias": "devvami",
1232
+ "pluginName": "devvami",
1233
+ "pluginType": "core",
1234
+ "strict": true,
1235
+ "enableJsonFlag": true,
1236
+ "isESM": true,
1237
+ "relativePath": [
1238
+ "src",
1239
+ "commands",
1240
+ "logs",
1241
+ "index.js"
1242
+ ]
1243
+ },
1244
1244
  "pr:create": {
1245
1245
  "aliases": [],
1246
1246
  "args": {},
@@ -1782,6 +1782,46 @@
1782
1782
  "setup.js"
1783
1783
  ]
1784
1784
  },
1785
+ "sync-config-ai": {
1786
+ "aliases": [],
1787
+ "args": {},
1788
+ "description": "Manage AI coding tool configurations across environments via TUI",
1789
+ "examples": [
1790
+ "<%= config.bin %> sync-config-ai",
1791
+ "<%= config.bin %> sync-config-ai --json"
1792
+ ],
1793
+ "flags": {
1794
+ "json": {
1795
+ "description": "Format output as json.",
1796
+ "helpGroup": "GLOBAL",
1797
+ "name": "json",
1798
+ "allowNo": false,
1799
+ "type": "boolean"
1800
+ },
1801
+ "help": {
1802
+ "char": "h",
1803
+ "description": "Show CLI help.",
1804
+ "name": "help",
1805
+ "allowNo": false,
1806
+ "type": "boolean"
1807
+ }
1808
+ },
1809
+ "hasDynamicHelp": false,
1810
+ "hiddenAliases": [],
1811
+ "id": "sync-config-ai",
1812
+ "pluginAlias": "devvami",
1813
+ "pluginName": "devvami",
1814
+ "pluginType": "core",
1815
+ "strict": true,
1816
+ "enableJsonFlag": true,
1817
+ "isESM": true,
1818
+ "relativePath": [
1819
+ "src",
1820
+ "commands",
1821
+ "sync-config-ai",
1822
+ "index.js"
1823
+ ]
1824
+ },
1785
1825
  "tasks:assigned": {
1786
1826
  "aliases": [],
1787
1827
  "args": {},
@@ -2120,5 +2160,5 @@
2120
2160
  ]
2121
2161
  }
2122
2162
  },
2123
- "version": "1.4.2"
2163
+ "version": "1.5.1"
2124
2164
  }