@pikaa-ai/pikaa 0.3.1 → 0.3.5

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 (1870) hide show
  1. package/dist/cli.js +1181 -600
  2. package/dist/index.js +525 -204
  3. package/package.json +5 -3
  4. package/skills/adaptyv/references/api-endpoints.md +0 -690
  5. package/skills/aeon/references/anomaly_detection.md +0 -154
  6. package/skills/aeon/references/classification.md +0 -144
  7. package/skills/aeon/references/clustering.md +0 -123
  8. package/skills/aeon/references/datasets_benchmarking.md +0 -392
  9. package/skills/aeon/references/distances.md +0 -256
  10. package/skills/aeon/references/forecasting.md +0 -109
  11. package/skills/aeon/references/networks.md +0 -289
  12. package/skills/aeon/references/regression.md +0 -118
  13. package/skills/aeon/references/segmentation.md +0 -163
  14. package/skills/aeon/references/similarity_search.md +0 -187
  15. package/skills/aeon/references/transformations.md +0 -246
  16. package/skills/analytical-method-validation/assets/validation-protocol-template.md +0 -106
  17. package/skills/analytical-method-validation/assets/validation-report-template.md +0 -116
  18. package/skills/analytical-method-validation/references/compendial-and-clsi.md +0 -96
  19. package/skills/analytical-method-validation/references/framework-selection.md +0 -87
  20. package/skills/analytical-method-validation/references/ich-m10-bioanalytical.md +0 -123
  21. package/skills/analytical-method-validation/references/ich-q2r2.md +0 -229
  22. package/skills/analytical-method-validation/references/source-ledger.md +0 -125
  23. package/skills/analytical-method-validation/references/statistics.md +0 -209
  24. package/skills/analytical-method-validation/scripts/_catalog.py +0 -499
  25. package/skills/analytical-method-validation/scripts/_common.py +0 -955
  26. package/skills/analytical-method-validation/scripts/check_accuracy_precision.py +0 -328
  27. package/skills/analytical-method-validation/scripts/check_bioanalytical_run.py +0 -293
  28. package/skills/analytical-method-validation/scripts/check_detection_limits.py +0 -310
  29. package/skills/analytical-method-validation/scripts/check_response.py +0 -243
  30. package/skills/analytical-method-validation/scripts/compare_methods.py +0 -215
  31. package/skills/analytical-method-validation/scripts/plan_validation.py +0 -381
  32. package/skills/anndata/references/best_practices.md +0 -532
  33. package/skills/anndata/references/concatenation.md +0 -399
  34. package/skills/anndata/references/data_structure.md +0 -314
  35. package/skills/anndata/references/io_operations.md +0 -466
  36. package/skills/anndata/references/manipulation.md +0 -516
  37. package/skills/arbor/references/arbor-upstream.md +0 -91
  38. package/skills/arbor/references/executor-brief.md +0 -68
  39. package/skills/arbor/references/htr-methodology.md +0 -177
  40. package/skills/arbor/references/report-template.md +0 -39
  41. package/skills/arbor/scripts/tree.py +0 -564
  42. package/skills/arboreto/references/algorithms.md +0 -152
  43. package/skills/arboreto/references/basic_inference.md +0 -181
  44. package/skills/arboreto/references/distributed_computing.md +0 -242
  45. package/skills/arboreto/scripts/basic_grn_inference.py +0 -107
  46. package/skills/astropy/references/coordinates.md +0 -280
  47. package/skills/astropy/references/cosmology.md +0 -309
  48. package/skills/astropy/references/fits.md +0 -398
  49. package/skills/astropy/references/tables.md +0 -495
  50. package/skills/astropy/references/time.md +0 -412
  51. package/skills/astropy/references/units.md +0 -178
  52. package/skills/astropy/references/wcs_and_other_modules.md +0 -377
  53. package/skills/autoskill/config.yaml +0 -53
  54. package/skills/autoskill/references/https-proxy.md +0 -62
  55. package/skills/autoskill/references/screenpipe-config.yaml +0 -61
  56. package/skills/autoskill/scripts/autoskill.py +0 -35
  57. package/skills/autoskill/scripts/backends.py +0 -116
  58. package/skills/autoskill/scripts/cluster.py +0 -54
  59. package/skills/autoskill/scripts/doctor.py +0 -108
  60. package/skills/autoskill/scripts/fetch_window.py +0 -33
  61. package/skills/autoskill/scripts/match_skills.py +0 -46
  62. package/skills/autoskill/scripts/promote.py +0 -58
  63. package/skills/autoskill/scripts/redact.py +0 -40
  64. package/skills/autoskill/scripts/run.py +0 -194
  65. package/skills/autoskill/scripts/synthesize.py +0 -72
  66. package/skills/benchling-integration/references/api_endpoints.md +0 -883
  67. package/skills/benchling-integration/references/authentication.md +0 -390
  68. package/skills/benchling-integration/references/core_capabilities.md +0 -355
  69. package/skills/benchling-integration/references/eventbridge.md +0 -255
  70. package/skills/benchling-integration/references/sdk_reference.md +0 -772
  71. package/skills/bids/references/beps.yml +0 -637
  72. package/skills/bids/references/bids_schema.json +0 -21015
  73. package/skills/bids/references/bids_specification.md +0 -165
  74. package/skills/bids/references/conversion_tools.md +0 -475
  75. package/skills/bids/references/core_workflows.md +0 -552
  76. package/skills/bids/references/metadata_fields.md +0 -365
  77. package/skills/bids/scripts/update_schema.py +0 -89
  78. package/skills/biopython/references/advanced.md +0 -580
  79. package/skills/biopython/references/alignment.md +0 -377
  80. package/skills/biopython/references/blast.md +0 -463
  81. package/skills/biopython/references/databases.md +0 -492
  82. package/skills/biopython/references/phylogenetics.md +0 -566
  83. package/skills/biopython/references/sequence_io.md +0 -289
  84. package/skills/biopython/references/structure.md +0 -564
  85. package/skills/bioservices/references/identifier_mapping.md +0 -685
  86. package/skills/bioservices/references/services_reference.md +0 -638
  87. package/skills/bioservices/references/workflow_patterns.md +0 -813
  88. package/skills/bioservices/scripts/batch_id_converter.py +0 -347
  89. package/skills/bioservices/scripts/compound_cross_reference.py +0 -387
  90. package/skills/bioservices/scripts/pathway_analysis.py +0 -309
  91. package/skills/bioservices/scripts/protein_analysis_workflow.py +0 -441
  92. package/skills/bulk-rnaseq/references/counts-and-handoff.md +0 -91
  93. package/skills/bulk-rnaseq/references/design-and-qc.md +0 -68
  94. package/skills/bulk-rnaseq/references/upstream-manual.md +0 -128
  95. package/skills/bulk-rnaseq/references/upstream-nfcore.md +0 -108
  96. package/skills/bulk-rnaseq/scripts/build_counts_matrix.py +0 -203
  97. package/skills/bulk-rnaseq/scripts/validate_samplesheet.py +0 -206
  98. package/skills/cellxgene-census/references/census_schema.md +0 -218
  99. package/skills/cellxgene-census/references/common_patterns.md +0 -368
  100. package/skills/cellxgene-census/references/core_workflow_patterns.md +0 -297
  101. package/skills/cirq/references/building.md +0 -307
  102. package/skills/cirq/references/experiments.md +0 -572
  103. package/skills/cirq/references/hardware.md +0 -527
  104. package/skills/cirq/references/noise.md +0 -514
  105. package/skills/cirq/references/simulation.md +0 -353
  106. package/skills/cirq/references/transformation.md +0 -416
  107. package/skills/citation-management/assets/bibtex_template.bib +0 -264
  108. package/skills/citation-management/assets/citation_checklist.md +0 -386
  109. package/skills/citation-management/references/best_practices.md +0 -91
  110. package/skills/citation-management/references/bibtex_formatting.md +0 -908
  111. package/skills/citation-management/references/citation_validation.md +0 -835
  112. package/skills/citation-management/references/core_workflow.md +0 -569
  113. package/skills/citation-management/references/example_workflows.md +0 -126
  114. package/skills/citation-management/references/google_scholar_search.md +0 -732
  115. package/skills/citation-management/references/metadata_extraction.md +0 -870
  116. package/skills/citation-management/references/pubmed_search.md +0 -839
  117. package/skills/citation-management/references/script_reference.md +0 -250
  118. package/skills/citation-management/references/search_strategies.md +0 -110
  119. package/skills/citation-management/scripts/_common.py +0 -331
  120. package/skills/citation-management/scripts/doi_to_bibtex.py +0 -204
  121. package/skills/citation-management/scripts/extract_metadata.py +0 -690
  122. package/skills/citation-management/scripts/format_bibtex.py +0 -356
  123. package/skills/citation-management/scripts/search_google_scholar.py +0 -268
  124. package/skills/citation-management/scripts/search_openalex.py +0 -297
  125. package/skills/citation-management/scripts/search_pubmed.py +0 -419
  126. package/skills/citation-management/scripts/validate_citations.py +0 -688
  127. package/skills/clinical-decision-support/assets/aggregate_cohort_table_template.json +0 -114
  128. package/skills/clinical-decision-support/assets/aggregate_model_evaluation_template.json +0 -115
  129. package/skills/clinical-decision-support/assets/artifact_intended_use_template.json +0 -81
  130. package/skills/clinical-decision-support/assets/decision_logic_traceability_template.json +0 -108
  131. package/skills/clinical-decision-support/assets/deidentification_checklist_template.json +0 -176
  132. package/skills/clinical-decision-support/assets/evidence_profile_template.json +0 -139
  133. package/skills/clinical-decision-support/assets/survival_analysis_plan_template.json +0 -134
  134. package/skills/clinical-decision-support/references/cohort_evaluation.md +0 -142
  135. package/skills/clinical-decision-support/references/decision_logic_traceability.md +0 -146
  136. package/skills/clinical-decision-support/references/evidence_profiles.md +0 -153
  137. package/skills/clinical-decision-support/references/model_biomarker_evaluation.md +0 -152
  138. package/skills/clinical-decision-support/references/privacy_and_disclosure.md +0 -144
  139. package/skills/clinical-decision-support/references/regulatory_and_governance.md +0 -104
  140. package/skills/clinical-decision-support/references/safety_and_scope.md +0 -103
  141. package/skills/clinical-decision-support/references/security_validation.md +0 -60
  142. package/skills/clinical-decision-support/references/sources.md +0 -119
  143. package/skills/clinical-decision-support/references/study_reporting.md +0 -134
  144. package/skills/clinical-decision-support/references/survival_analysis.md +0 -156
  145. package/skills/clinical-decision-support/scripts/_common.py +0 -223
  146. package/skills/clinical-decision-support/scripts/cohort_table_generator.py +0 -288
  147. package/skills/clinical-decision-support/scripts/decision_logic_traceability.py +0 -313
  148. package/skills/clinical-decision-support/scripts/deidentification_checklist.py +0 -260
  149. package/skills/clinical-decision-support/scripts/evidence_profile_check.py +0 -259
  150. package/skills/clinical-decision-support/scripts/model_biomarker_evaluation.py +0 -345
  151. package/skills/clinical-decision-support/scripts/survival_plan_validator.py +0 -294
  152. package/skills/clinical-decision-support/scripts/validate_cds_artifact.py +0 -269
  153. package/skills/clinical-reports/assets/adverse_event_aggregate_input_template.csv +0 -1
  154. package/skills/clinical-reports/assets/case_report_template.json +0 -43
  155. package/skills/clinical-reports/assets/clinical_trial_csr_template.json +0 -51
  156. package/skills/clinical-reports/assets/clinical_trial_results_template.json +0 -66
  157. package/skills/clinical-reports/assets/clinical_trial_safety_aggregate_template.json +0 -49
  158. package/skills/clinical-reports/assets/consistency_manifest_template.json +0 -15
  159. package/skills/clinical-reports/assets/deidentification_process_checklist.json +0 -56
  160. package/skills/clinical-reports/assets/lab_report_template.json +0 -36
  161. package/skills/clinical-reports/assets/pathology_report_template.json +0 -36
  162. package/skills/clinical-reports/assets/provenance_manifest_template.json +0 -17
  163. package/skills/clinical-reports/assets/quality_review_checklist.json +0 -34
  164. package/skills/clinical-reports/assets/radiology_report_template.json +0 -34
  165. package/skills/clinical-reports/assets/research_summary_template.json +0 -36
  166. package/skills/clinical-reports/assets/terminology_manifest_template.json +0 -11
  167. package/skills/clinical-reports/assets/trial_protocol_reporting_checklist.json +0 -70
  168. package/skills/clinical-reports/references/case_report_guidelines.md +0 -72
  169. package/skills/clinical-reports/references/clinical_trial_reporting.md +0 -97
  170. package/skills/clinical-reports/references/data_presentation.md +0 -92
  171. package/skills/clinical-reports/references/diagnostic_reports_standards.md +0 -76
  172. package/skills/clinical-reports/references/medical_terminology.md +0 -84
  173. package/skills/clinical-reports/references/privacy_and_deidentification.md +0 -84
  174. package/skills/clinical-reports/references/professional_review.md +0 -78
  175. package/skills/clinical-reports/references/report_type_routing.md +0 -57
  176. package/skills/clinical-reports/references/safety_reporting.md +0 -109
  177. package/skills/clinical-reports/references/sources.md +0 -75
  178. package/skills/clinical-reports/scripts/_common.py +0 -263
  179. package/skills/clinical-reports/scripts/check_deidentification.py +0 -298
  180. package/skills/clinical-reports/scripts/consistency_checker.py +0 -390
  181. package/skills/clinical-reports/scripts/format_adverse_events.py +0 -455
  182. package/skills/clinical-reports/scripts/generate_report_template.py +0 -115
  183. package/skills/clinical-reports/scripts/provenance_validator.py +0 -263
  184. package/skills/clinical-reports/scripts/terminology_validator.py +0 -277
  185. package/skills/clinical-reports/scripts/validate_case_report.py +0 -278
  186. package/skills/clinical-reports/scripts/validate_trial_report.py +0 -534
  187. package/skills/cobrapy/references/api_quick_reference.md +0 -665
  188. package/skills/cobrapy/references/workflows.md +0 -600
  189. package/skills/consciousness-council/references/advanced-configurations.md +0 -96
  190. package/skills/dask/references/arrays.md +0 -495
  191. package/skills/dask/references/bags.md +0 -468
  192. package/skills/dask/references/best-practices.md +0 -277
  193. package/skills/dask/references/dataframes.md +0 -370
  194. package/skills/dask/references/futures.md +0 -541
  195. package/skills/dask/references/schedulers.md +0 -517
  196. package/skills/database-lookup/references/addgene.md +0 -38
  197. package/skills/database-lookup/references/alphafold.md +0 -52
  198. package/skills/database-lookup/references/alphavantage.md +0 -261
  199. package/skills/database-lookup/references/bea.md +0 -409
  200. package/skills/database-lookup/references/bindingdb.md +0 -85
  201. package/skills/database-lookup/references/biogrid.md +0 -110
  202. package/skills/database-lookup/references/bls.md +0 -235
  203. package/skills/database-lookup/references/brenda.md +0 -71
  204. package/skills/database-lookup/references/cbioportal.md +0 -206
  205. package/skills/database-lookup/references/census.md +0 -251
  206. package/skills/database-lookup/references/chebi.md +0 -103
  207. package/skills/database-lookup/references/chembl.md +0 -80
  208. package/skills/database-lookup/references/clinicaltrials.md +0 -86
  209. package/skills/database-lookup/references/clinpgx.md +0 -64
  210. package/skills/database-lookup/references/clinvar.md +0 -91
  211. package/skills/database-lookup/references/cod.md +0 -121
  212. package/skills/database-lookup/references/cosmic.md +0 -59
  213. package/skills/database-lookup/references/dailymed.md +0 -65
  214. package/skills/database-lookup/references/database_selection_guide.md +0 -166
  215. package/skills/database-lookup/references/datacommons.md +0 -237
  216. package/skills/database-lookup/references/dbsnp.md +0 -143
  217. package/skills/database-lookup/references/disgenet.md +0 -52
  218. package/skills/database-lookup/references/drugbank.md +0 -54
  219. package/skills/database-lookup/references/ecb.md +0 -191
  220. package/skills/database-lookup/references/emdb.md +0 -37
  221. package/skills/database-lookup/references/ena.md +0 -372
  222. package/skills/database-lookup/references/encode.md +0 -47
  223. package/skills/database-lookup/references/ensembl.md +0 -539
  224. package/skills/database-lookup/references/epa.md +0 -232
  225. package/skills/database-lookup/references/eurostat.md +0 -237
  226. package/skills/database-lookup/references/fda.md +0 -64
  227. package/skills/database-lookup/references/federal-reserve.md +0 -216
  228. package/skills/database-lookup/references/fred.md +0 -297
  229. package/skills/database-lookup/references/gene-ontology.md +0 -147
  230. package/skills/database-lookup/references/geo.md +0 -130
  231. package/skills/database-lookup/references/gnomad.md +0 -93
  232. package/skills/database-lookup/references/gtex.md +0 -136
  233. package/skills/database-lookup/references/gwas-catalog.md +0 -46
  234. package/skills/database-lookup/references/hca.md +0 -35
  235. package/skills/database-lookup/references/hpo.md +0 -48
  236. package/skills/database-lookup/references/human-protein-atlas.md +0 -57
  237. package/skills/database-lookup/references/interpro.md +0 -120
  238. package/skills/database-lookup/references/jaspar.md +0 -50
  239. package/skills/database-lookup/references/kegg.md +0 -78
  240. package/skills/database-lookup/references/lincs-l1000.md +0 -68
  241. package/skills/database-lookup/references/materials-project.md +0 -123
  242. package/skills/database-lookup/references/metabolomics-workbench.md +0 -98
  243. package/skills/database-lookup/references/monarch.md +0 -46
  244. package/skills/database-lookup/references/mousemine.md +0 -40
  245. package/skills/database-lookup/references/nasa-exoplanet-archive.md +0 -112
  246. package/skills/database-lookup/references/nasa.md +0 -121
  247. package/skills/database-lookup/references/ncbi-gene.md +0 -64
  248. package/skills/database-lookup/references/ncbi-protein.md +0 -104
  249. package/skills/database-lookup/references/ncbi-taxonomy.md +0 -121
  250. package/skills/database-lookup/references/nist.md +0 -105
  251. package/skills/database-lookup/references/noaa.md +0 -199
  252. package/skills/database-lookup/references/omim.md +0 -114
  253. package/skills/database-lookup/references/opentargets.md +0 -459
  254. package/skills/database-lookup/references/openweathermap.md +0 -255
  255. package/skills/database-lookup/references/pdb.md +0 -121
  256. package/skills/database-lookup/references/pride.md +0 -74
  257. package/skills/database-lookup/references/pubchem.md +0 -145
  258. package/skills/database-lookup/references/quickgo.md +0 -45
  259. package/skills/database-lookup/references/reactome.md +0 -140
  260. package/skills/database-lookup/references/retrieval-contract.md +0 -123
  261. package/skills/database-lookup/references/rummageo.md +0 -32
  262. package/skills/database-lookup/references/sdss.md +0 -130
  263. package/skills/database-lookup/references/sec-edgar.md +0 -315
  264. package/skills/database-lookup/references/simbad.md +0 -405
  265. package/skills/database-lookup/references/sra.md +0 -149
  266. package/skills/database-lookup/references/string.md +0 -283
  267. package/skills/database-lookup/references/tcga-gdc.md +0 -58
  268. package/skills/database-lookup/references/treasury.md +0 -215
  269. package/skills/database-lookup/references/ucsc-genome.md +0 -135
  270. package/skills/database-lookup/references/uniprot.md +0 -283
  271. package/skills/database-lookup/references/usgs.md +0 -260
  272. package/skills/database-lookup/references/uspto.md +0 -130
  273. package/skills/database-lookup/references/who.md +0 -283
  274. package/skills/database-lookup/references/worldbank.md +0 -239
  275. package/skills/database-lookup/references/zinc.md +0 -202
  276. package/skills/datamol/references/conformers_module.md +0 -131
  277. package/skills/datamol/references/core_api.md +0 -136
  278. package/skills/datamol/references/core_workflows.md +0 -451
  279. package/skills/datamol/references/descriptors_viz.md +0 -195
  280. package/skills/datamol/references/fragments_scaffolds.md +0 -174
  281. package/skills/datamol/references/io_module.md +0 -112
  282. package/skills/datamol/references/reactions_data.md +0 -218
  283. package/skills/datamol/references/workflow_patterns.md +0 -104
  284. package/skills/deepchem/references/api_reference.md +0 -305
  285. package/skills/deepchem/references/core_capabilities.md +0 -276
  286. package/skills/deepchem/references/typical_workflows.md +0 -109
  287. package/skills/deepchem/references/workflows.md +0 -491
  288. package/skills/deepchem/scripts/graph_neural_network.py +0 -350
  289. package/skills/deepchem/scripts/predict_solubility.py +0 -223
  290. package/skills/deepchem/scripts/transfer_learning.py +0 -443
  291. package/skills/deepspot-m/references/api.md +0 -186
  292. package/skills/deepspot-m/references/whole_slide.md +0 -174
  293. package/skills/deeptools/assets/quick_reference.md +0 -65
  294. package/skills/deeptools/references/core_workflows.md +0 -134
  295. package/skills/deeptools/references/effective_genome_sizes.md +0 -118
  296. package/skills/deeptools/references/normalization_methods.md +0 -424
  297. package/skills/deeptools/references/tools_reference.md +0 -569
  298. package/skills/deeptools/references/workflows.md +0 -476
  299. package/skills/deeptools/scripts/validate_files.py +0 -195
  300. package/skills/deeptools/scripts/workflow_generator.py +0 -520
  301. package/skills/depmap/references/dependency_analysis.md +0 -178
  302. package/skills/dhdna-profiler/references/advanced-profiling.md +0 -72
  303. package/skills/diffdock/assets/batch_template.csv +0 -4
  304. package/skills/diffdock/assets/custom_inference_config.yaml +0 -94
  305. package/skills/diffdock/references/confidence_and_limitations.md +0 -182
  306. package/skills/diffdock/references/parameters_reference.md +0 -173
  307. package/skills/diffdock/references/workflows_examples.md +0 -401
  308. package/skills/diffdock/scripts/analyze_results.py +0 -346
  309. package/skills/diffdock/scripts/prepare_batch_csv.py +0 -257
  310. package/skills/diffdock/scripts/setup_check.py +0 -283
  311. package/skills/dnanexus-integration/references/app-development.md +0 -371
  312. package/skills/dnanexus-integration/references/authentication.md +0 -226
  313. package/skills/dnanexus-integration/references/configuration.md +0 -444
  314. package/skills/dnanexus-integration/references/data-operations.md +0 -474
  315. package/skills/dnanexus-integration/references/job-execution.md +0 -482
  316. package/skills/dnanexus-integration/references/operations-and-troubleshooting.md +0 -506
  317. package/skills/dnanexus-integration/references/python-sdk.md +0 -548
  318. package/skills/dnanexus-integration/references/sources.md +0 -168
  319. package/skills/dnanexus-integration/references/workflow-languages.md +0 -292
  320. package/skills/dnanexus-integration/scripts/inspect_dxpy.py +0 -366
  321. package/skills/dnanexus-integration/scripts/validate_dxapp.py +0 -796
  322. package/skills/docx/LICENSE.txt +0 -30
  323. package/skills/docx/scripts/__init__.py +0 -1
  324. package/skills/docx/scripts/accept_changes.py +0 -135
  325. package/skills/docx/scripts/comment.py +0 -368
  326. package/skills/docx/scripts/merge_runs.py +0 -310
  327. package/skills/docx/scripts/office/helpers/__init__.py +0 -111
  328. package/skills/docx/scripts/office/helpers/pptx_chart.py +0 -170
  329. package/skills/docx/scripts/office/helpers/pptx_slide.py +0 -60
  330. package/skills/docx/scripts/office/helpers/pptx_theme.py +0 -114
  331. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  332. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  333. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  334. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  335. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  336. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  337. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  338. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  339. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  340. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  341. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  342. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  343. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  344. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  345. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  346. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  347. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  348. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  349. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  350. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  351. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  352. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  353. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  354. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  355. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  356. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  357. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  358. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  359. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  360. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  361. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  362. package/skills/docx/scripts/office/schemas/mce/mc.xsd +0 -75
  363. package/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  364. package/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  365. package/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  366. package/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  367. package/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  368. package/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  369. package/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  370. package/skills/docx/scripts/office/soffice.py +0 -232
  371. package/skills/docx/scripts/office/validate.py +0 -173
  372. package/skills/docx/scripts/office/validators/__init__.py +0 -15
  373. package/skills/docx/scripts/office/validators/base.py +0 -875
  374. package/skills/docx/scripts/office/validators/docx.py +0 -466
  375. package/skills/docx/scripts/office/validators/pptx.py +0 -441
  376. package/skills/docx/scripts/office/validators/redlining.py +0 -299
  377. package/skills/docx/scripts/templates/comments.xml +0 -3
  378. package/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  379. package/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  380. package/skills/docx/scripts/templates/commentsIds.xml +0 -3
  381. package/skills/docx/scripts/templates/people.xml +0 -3
  382. package/skills/esm/references/biohub-platform.md +0 -111
  383. package/skills/esm/references/esm-c-api.md +0 -609
  384. package/skills/esm/references/esm3-api.md +0 -462
  385. package/skills/esm/references/forge-api.md +0 -675
  386. package/skills/esm/references/workflows.md +0 -685
  387. package/skills/etetoolkit/references/api_reference.md +0 -546
  388. package/skills/etetoolkit/references/migration-ete3-to-ete4.md +0 -579
  389. package/skills/etetoolkit/references/taxonomy.md +0 -362
  390. package/skills/etetoolkit/references/visualization.md +0 -516
  391. package/skills/etetoolkit/references/workflows.md +0 -537
  392. package/skills/etetoolkit/scripts/quick_visualize.py +0 -455
  393. package/skills/etetoolkit/scripts/tree_operations.py +0 -446
  394. package/skills/exa-search/references/web-extract.md +0 -53
  395. package/skills/exa-search/references/web-search.md +0 -119
  396. package/skills/exa-search/scripts/exa_extract.py +0 -117
  397. package/skills/exa-search/scripts/exa_search.py +0 -179
  398. package/skills/experimental-design/references/design_types.md +0 -129
  399. package/skills/experimental-design/references/factorial_and_doe.md +0 -130
  400. package/skills/experimental-design/references/randomization_and_blocking.md +0 -116
  401. package/skills/experimental-design/references/sequential_and_adaptive.md +0 -97
  402. package/skills/experimental-design/scripts/doe_designs.py +0 -183
  403. package/skills/experimental-design/scripts/randomization.py +0 -171
  404. package/skills/exploratory-data-analysis/assets/report_template.md +0 -202
  405. package/skills/exploratory-data-analysis/references/bioinformatics_genomics_formats.md +0 -192
  406. package/skills/exploratory-data-analysis/references/chemistry_molecular_formats.md +0 -183
  407. package/skills/exploratory-data-analysis/references/general_scientific_formats.md +0 -259
  408. package/skills/exploratory-data-analysis/references/microscopy_imaging_formats.md +0 -189
  409. package/skills/exploratory-data-analysis/references/proteomics_metabolomics_formats.md +0 -217
  410. package/skills/exploratory-data-analysis/references/spectroscopy_analytical_formats.md +0 -191
  411. package/skills/exploratory-data-analysis/scripts/__init__.py +0 -1
  412. package/skills/exploratory-data-analysis/scripts/_capabilities.py +0 -576
  413. package/skills/exploratory-data-analysis/scripts/_common.py +0 -460
  414. package/skills/exploratory-data-analysis/scripts/_structured.py +0 -391
  415. package/skills/exploratory-data-analysis/scripts/_tabular.py +0 -905
  416. package/skills/exploratory-data-analysis/scripts/capability_manifest.py +0 -184
  417. package/skills/exploratory-data-analysis/scripts/distribution_sensitivity.py +0 -117
  418. package/skills/exploratory-data-analysis/scripts/eda_analyzer.py +0 -345
  419. package/skills/exploratory-data-analysis/scripts/image_inspector.py +0 -214
  420. package/skills/exploratory-data-analysis/scripts/missingness_leakage_audit.py +0 -130
  421. package/skills/exploratory-data-analysis/scripts/report_scaffold.py +0 -143
  422. package/skills/exploratory-data-analysis/scripts/sequence_inspector.py +0 -255
  423. package/skills/exploratory-data-analysis/scripts/tabular_profile.py +0 -109
  424. package/skills/flowio/references/api_reference.md +0 -355
  425. package/skills/flowio/references/fcs_semantics.md +0 -315
  426. package/skills/flowio/references/sources.md +0 -89
  427. package/skills/flowio/references/troubleshooting.md +0 -399
  428. package/skills/flowio/references/workflows.md +0 -368
  429. package/skills/flowio/scripts/inspect_fcs.py +0 -439
  430. package/skills/fluidsim/references/advanced_features.md +0 -347
  431. package/skills/fluidsim/references/installation.md +0 -263
  432. package/skills/fluidsim/references/output_analysis.md +0 -314
  433. package/skills/fluidsim/references/parameters.md +0 -322
  434. package/skills/fluidsim/references/simulation_workflow.md +0 -329
  435. package/skills/fluidsim/references/solvers.md +0 -191
  436. package/skills/fluidsim/scripts/__init__.py +0 -1
  437. package/skills/fluidsim/scripts/_common.py +0 -491
  438. package/skills/fluidsim/scripts/_schema.py +0 -872
  439. package/skills/fluidsim/scripts/budget_summary.py +0 -396
  440. package/skills/fluidsim/scripts/grid_resource_estimator.py +0 -286
  441. package/skills/fluidsim/scripts/output_inventory.py +0 -353
  442. package/skills/fluidsim/scripts/restart_compatibility.py +0 -424
  443. package/skills/fluidsim/scripts/simulation_dry_run.py +0 -246
  444. package/skills/fluidsim/scripts/solver_config_validator.py +0 -70
  445. package/skills/generate-image/references/models.md +0 -173
  446. package/skills/generate-image/scripts/generate_image.py +0 -752
  447. package/skills/geniml/references/bedspace.md +0 -267
  448. package/skills/geniml/references/consensus_peaks.md +0 -334
  449. package/skills/geniml/references/region2vec.md +0 -289
  450. package/skills/geniml/references/scembed.md +0 -307
  451. package/skills/geniml/references/utilities.md +0 -385
  452. package/skills/geniml/scripts/__init__.py +0 -1
  453. package/skills/geniml/scripts/_common.py +0 -399
  454. package/skills/geniml/scripts/bed_validator.py +0 -363
  455. package/skills/geniml/scripts/consensus_plan.py +0 -416
  456. package/skills/geniml/scripts/corpus_auditor.py +0 -304
  457. package/skills/geniml/scripts/embedding_plan.py +0 -476
  458. package/skills/geniml/scripts/model_artifact_inspector.py +0 -358
  459. package/skills/geniml/scripts/tokenizer_compatibility.py +0 -321
  460. package/skills/genomic-coordinates/references/format-conventions.md +0 -205
  461. package/skills/genomic-coordinates/references/reference-builds.md +0 -154
  462. package/skills/genomic-coordinates/references/transcript-coordinates.md +0 -141
  463. package/skills/genomic-coordinates/references/variant-representation.md +0 -155
  464. package/skills/genomic-coordinates/scripts/_common.py +0 -335
  465. package/skills/genomic-coordinates/scripts/audit_intervals.py +0 -511
  466. package/skills/genomic-coordinates/scripts/check_contigs.py +0 -382
  467. package/skills/genomic-coordinates/scripts/convert_coords.py +0 -180
  468. package/skills/genomic-coordinates/scripts/normalize_variant.py +0 -290
  469. package/skills/genomic-intelligence/references/api-and-auth.md +0 -45
  470. package/skills/genomic-intelligence/references/mcp.md +0 -94
  471. package/skills/genomic-intelligence/references/sequence-acquisition.md +0 -52
  472. package/skills/genomic-intelligence/references/tasks.md +0 -75
  473. package/skills/geomaster/references/advanced-gis.md +0 -376
  474. package/skills/geomaster/references/big-data.md +0 -363
  475. package/skills/geomaster/references/code-examples.md +0 -531
  476. package/skills/geomaster/references/coordinate-systems.md +0 -364
  477. package/skills/geomaster/references/core-libraries.md +0 -273
  478. package/skills/geomaster/references/data-sources.md +0 -330
  479. package/skills/geomaster/references/gis-software.md +0 -369
  480. package/skills/geomaster/references/industry-applications.md +0 -420
  481. package/skills/geomaster/references/machine-learning.md +0 -462
  482. package/skills/geomaster/references/programming-languages.md +0 -456
  483. package/skills/geomaster/references/remote-sensing.md +0 -370
  484. package/skills/geomaster/references/scientific-domains.md +0 -416
  485. package/skills/geomaster/references/specialized-topics.md +0 -428
  486. package/skills/geomaster/references/troubleshooting.md +0 -439
  487. package/skills/geopandas/references/crs-management.md +0 -231
  488. package/skills/geopandas/references/data-io.md +0 -323
  489. package/skills/geopandas/references/data-structures.md +0 -207
  490. package/skills/geopandas/references/geometric-operations.md +0 -262
  491. package/skills/geopandas/references/spatial-analysis.md +0 -294
  492. package/skills/geopandas/references/visualization.md +0 -230
  493. package/skills/geopandas/scripts/_common.py +0 -605
  494. package/skills/geopandas/scripts/crs_reprojection_plan.py +0 -210
  495. package/skills/geopandas/scripts/export_plan.py +0 -305
  496. package/skills/geopandas/scripts/geometry_validity_report.py +0 -227
  497. package/skills/geopandas/scripts/sensitive_coordinates_checklist.py +0 -230
  498. package/skills/geopandas/scripts/spatial_join_audit.py +0 -368
  499. package/skills/geopandas/scripts/vector_inventory.py +0 -140
  500. package/skills/get-available-resources/references/resource_semantics.md +0 -206
  501. package/skills/get-available-resources/references/snapshot_schema.md +0 -172
  502. package/skills/get-available-resources/references/sources.md +0 -124
  503. package/skills/get-available-resources/scripts/_common.py +0 -190
  504. package/skills/get-available-resources/scripts/accelerator_diagnostics.py +0 -151
  505. package/skills/get-available-resources/scripts/detect_resources.py +0 -1767
  506. package/skills/get-available-resources/scripts/plan_workload.py +0 -311
  507. package/skills/get-available-resources/scripts/snapshot_tools.py +0 -486
  508. package/skills/gget/references/common_workflows.md +0 -120
  509. package/skills/gget/references/database_info.md +0 -336
  510. package/skills/gget/references/module_catalog.md +0 -733
  511. package/skills/gget/references/module_reference.md +0 -526
  512. package/skills/gget/references/workflows.md +0 -815
  513. package/skills/gget/scripts/batch_sequence_analysis.py +0 -192
  514. package/skills/gget/scripts/enrichment_pipeline.py +0 -235
  515. package/skills/gget/scripts/gene_analysis.py +0 -175
  516. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-hibit.md +0 -53
  517. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-optimization.md +0 -85
  518. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-validation.md +0 -71
  519. package/skills/ginkgo-cloud-lab/references/cfps-expression-purification-quantification.md +0 -60
  520. package/skills/ginkgo-cloud-lab/references/cfps-strep-purification-thermal-shift.md +0 -63
  521. package/skills/ginkgo-cloud-lab/references/cfps-strep-tag-purification-a280.md +0 -55
  522. package/skills/ginkgo-cloud-lab/references/echo-ms-cfps-detection.md +0 -49
  523. package/skills/ginkgo-cloud-lab/references/echo-ms-method-onboarding.md +0 -56
  524. package/skills/ginkgo-cloud-lab/references/ecoli-expression-purification-quantification.md +0 -49
  525. package/skills/ginkgo-cloud-lab/references/ecoli-minibinder-expression-histag-a280.md +0 -62
  526. package/skills/ginkgo-cloud-lab/references/ecoli-protein-expression-hibit.md +0 -44
  527. package/skills/ginkgo-cloud-lab/references/ecoli-protein-expression-histag-a280.md +0 -47
  528. package/skills/ginkgo-cloud-lab/references/fluorescent-pixel-art-generation.md +0 -73
  529. package/skills/ginkgo-cloud-lab/references/ivt-rna-synthesis-qpcr.md +0 -67
  530. package/skills/ginkgo-cloud-lab/references/minibinder-strep-tag-a280.md +0 -58
  531. package/skills/ginkgo-cloud-lab/references/pichia-protein-expression-labchip.md +0 -43
  532. package/skills/ginkgo-cloud-lab/references/spr-target-onboarding.md +0 -58
  533. package/skills/glycoengineering/references/glycan_databases.md +0 -165
  534. package/skills/gtars/references/cli.md +0 -334
  535. package/skills/gtars/references/coverage.md +0 -224
  536. package/skills/gtars/references/overlap.md +0 -220
  537. package/skills/gtars/references/python-api.md +0 -280
  538. package/skills/gtars/references/refget.md +0 -318
  539. package/skills/gtars/references/tokenizers.md +0 -256
  540. package/skills/gtars/scripts/__init__.py +0 -1
  541. package/skills/gtars/scripts/_common.py +0 -461
  542. package/skills/gtars/scripts/artifact_inspector.py +0 -328
  543. package/skills/gtars/scripts/bed_validator.py +0 -183
  544. package/skills/gtars/scripts/coverage_preflight.py +0 -256
  545. package/skills/gtars/scripts/execution_plan.py +0 -365
  546. package/skills/gtars/scripts/refget_digest_plan.py +0 -311
  547. package/skills/gtars/scripts/tokenizer_manifest.py +0 -238
  548. package/skills/histolab/references/core_capabilities.md +0 -305
  549. package/skills/histolab/references/filters_preprocessing.md +0 -537
  550. package/skills/histolab/references/slide_management.md +0 -184
  551. package/skills/histolab/references/tile_extraction.md +0 -421
  552. package/skills/histolab/references/tissue_masks.md +0 -251
  553. package/skills/histolab/references/typical_workflows.md +0 -196
  554. package/skills/histolab/references/visualization.md +0 -548
  555. package/skills/hugging-science/references/flagship-resources.md +0 -81
  556. package/skills/hugging-science/references/topics-and-slugs.md +0 -82
  557. package/skills/hugging-science/references/using-datasets.md +0 -107
  558. package/skills/hugging-science/references/using-models.md +0 -122
  559. package/skills/hugging-science/references/using-spaces.md +0 -119
  560. package/skills/hugging-science/scripts/fetch_catalog.py +0 -358
  561. package/skills/hypogenic/assets/dataset_manifest.example.json +0 -30
  562. package/skills/hypogenic/assets/result.example.json +0 -18
  563. package/skills/hypogenic/assets/run_config.example.json +0 -46
  564. package/skills/hypogenic/assets/task_config.example.yaml +0 -38
  565. package/skills/hypogenic/references/configuration.md +0 -136
  566. package/skills/hypogenic/references/datasets.md +0 -146
  567. package/skills/hypogenic/references/evaluation.md +0 -155
  568. package/skills/hypogenic/references/security.md +0 -167
  569. package/skills/hypogenic/references/sources.md +0 -113
  570. package/skills/hypogenic/references/upstream.md +0 -188
  571. package/skills/hypogenic/scripts/__init__.py +0 -1
  572. package/skills/hypogenic/scripts/_common.py +0 -1312
  573. package/skills/hypogenic/scripts/audit_dataset.py +0 -410
  574. package/skills/hypogenic/scripts/evaluate_local.py +0 -250
  575. package/skills/hypogenic/scripts/inspect_outputs.py +0 -166
  576. package/skills/hypogenic/scripts/plan_run.py +0 -247
  577. package/skills/hypogenic/scripts/validate_config.py +0 -192
  578. package/skills/hypothesis-generation/assets/evidence_ledger_template.csv +0 -2
  579. package/skills/hypothesis-generation/assets/falsification_controls_template.json +0 -116
  580. package/skills/hypothesis-generation/assets/hypothesis_record_template.json +0 -331
  581. package/skills/hypothesis-generation/assets/operationalization_template.json +0 -56
  582. package/skills/hypothesis-generation/assets/prediction_rival_matrix_template.csv +0 -3
  583. package/skills/hypothesis-generation/assets/preregistration_scaffold_template.md +0 -137
  584. package/skills/hypothesis-generation/assets/search_boundary_template.json +0 -23
  585. package/skills/hypothesis-generation/assets/source_ledger.csv +0 -37
  586. package/skills/hypothesis-generation/references/causal_inference_and_claims.md +0 -190
  587. package/skills/hypothesis-generation/references/concepts_and_workflow.md +0 -173
  588. package/skills/hypothesis-generation/references/ethics_safety_and_ai.md +0 -216
  589. package/skills/hypothesis-generation/references/experimental_design_patterns.md +0 -301
  590. package/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +0 -203
  591. package/skills/hypothesis-generation/references/literature_search_strategies.md +0 -208
  592. package/skills/hypothesis-generation/references/preregistration_and_open_science.md +0 -205
  593. package/skills/hypothesis-generation/references/security_validation.md +0 -74
  594. package/skills/hypothesis-generation/references/source_ledger.md +0 -116
  595. package/skills/hypothesis-generation/references/tool_reference.md +0 -246
  596. package/skills/hypothesis-generation/scripts/_common.py +0 -412
  597. package/skills/hypothesis-generation/scripts/audit_evidence_ledger.py +0 -337
  598. package/skills/hypothesis-generation/scripts/check_falsification_controls.py +0 -455
  599. package/skills/hypothesis-generation/scripts/check_operationalization.py +0 -237
  600. package/skills/hypothesis-generation/scripts/generate_preregistration_scaffold.py +0 -384
  601. package/skills/hypothesis-generation/scripts/lint_causal_claims.py +0 -189
  602. package/skills/hypothesis-generation/scripts/validate_hypothesis_schema.py +0 -1078
  603. package/skills/hypothesis-generation/scripts/validate_prediction_matrix.py +0 -286
  604. package/skills/imaging-data-commons/references/bigquery_guide.md +0 -858
  605. package/skills/imaging-data-commons/references/cli_guide.md +0 -287
  606. package/skills/imaging-data-commons/references/clinical_data_guide.md +0 -328
  607. package/skills/imaging-data-commons/references/cloud_storage_guide.md +0 -333
  608. package/skills/imaging-data-commons/references/dicomweb_guide.md +0 -399
  609. package/skills/imaging-data-commons/references/digital_pathology_guide.md +0 -403
  610. package/skills/imaging-data-commons/references/index_tables_guide.md +0 -203
  611. package/skills/imaging-data-commons/references/licensing_and_citation.md +0 -230
  612. package/skills/imaging-data-commons/references/mcp_guide.md +0 -181
  613. package/skills/imaging-data-commons/references/parquet_access_guide.md +0 -200
  614. package/skills/imaging-data-commons/references/rest_api_guide.md +0 -612
  615. package/skills/imaging-data-commons/references/sql_patterns.md +0 -462
  616. package/skills/imaging-data-commons/references/use_cases.md +0 -277
  617. package/skills/imaging-data-commons/scripts/check_version.py +0 -132
  618. package/skills/infographics/references/color_palettes.md +0 -496
  619. package/skills/infographics/references/design_principles.md +0 -636
  620. package/skills/infographics/references/infographic_type_catalog.md +0 -158
  621. package/skills/infographics/references/infographic_types.md +0 -907
  622. package/skills/infographics/references/iterative_refinement.md +0 -119
  623. package/skills/infographics/scripts/generate_infographic.py +0 -291
  624. package/skills/infographics/scripts/generate_infographic_ai.py +0 -1446
  625. package/skills/iso-standards-readiness/assets/templates/capa-record-template.json +0 -99
  626. package/skills/iso-standards-readiness/assets/templates/document-register-template.json +0 -75
  627. package/skills/iso-standards-readiness/assets/templates/evidence-manifest-template.json +0 -65
  628. package/skills/iso-standards-readiness/assets/templates/laboratory-scope-intake-template.json +0 -111
  629. package/skills/iso-standards-readiness/assets/templates/medical-laboratory-scope-intake-template.json +0 -111
  630. package/skills/iso-standards-readiness/assets/templates/procedures/CAPA-procedure-template.md +0 -148
  631. package/skills/iso-standards-readiness/assets/templates/procedures/document-control-procedure-template.md +0 -132
  632. package/skills/iso-standards-readiness/assets/templates/qmsr-transition-template.json +0 -181
  633. package/skills/iso-standards-readiness/assets/templates/quality-manual-template.md +0 -182
  634. package/skills/iso-standards-readiness/assets/templates/scope-intake-template.json +0 -109
  635. package/skills/iso-standards-readiness/assets/templates/supplier-controls-template.json +0 -119
  636. package/skills/iso-standards-readiness/assets/templates/traceability-matrix-template.json +0 -154
  637. package/skills/iso-standards-readiness/references/assurance-lanes.md +0 -116
  638. package/skills/iso-standards-readiness/references/evidence-architecture.md +0 -282
  639. package/skills/iso-standards-readiness/references/gap-analysis-checklist.md +0 -346
  640. package/skills/iso-standards-readiness/references/iso-13485.md +0 -236
  641. package/skills/iso-standards-readiness/references/iso-14971.md +0 -172
  642. package/skills/iso-standards-readiness/references/iso-15189.md +0 -219
  643. package/skills/iso-standards-readiness/references/iso-17025.md +0 -208
  644. package/skills/iso-standards-readiness/references/quality-manual-guide.md +0 -282
  645. package/skills/iso-standards-readiness/references/source-ledger.md +0 -357
  646. package/skills/iso-standards-readiness/scripts/_catalog.py +0 -248
  647. package/skills/iso-standards-readiness/scripts/_common.py +0 -558
  648. package/skills/iso-standards-readiness/scripts/audit_document_records.py +0 -148
  649. package/skills/iso-standards-readiness/scripts/check_capa.py +0 -240
  650. package/skills/iso-standards-readiness/scripts/check_qmsr_transition.py +0 -164
  651. package/skills/iso-standards-readiness/scripts/check_supplier_controls.py +0 -166
  652. package/skills/iso-standards-readiness/scripts/check_traceability.py +0 -171
  653. package/skills/iso-standards-readiness/scripts/gap_analyzer.py +0 -167
  654. package/skills/iso-standards-readiness/scripts/validate_evidence_manifest.py +0 -246
  655. package/skills/iso-standards-readiness/scripts/validate_scope_intake.py +0 -209
  656. package/skills/lab-hardware-cad/assets/standards.json +0 -198
  657. package/skills/lab-hardware-cad/references/behavior-rigs.md +0 -136
  658. package/skills/lab-hardware-cad/references/build123d-patterns.md +0 -363
  659. package/skills/lab-hardware-cad/references/fabrication-limits.md +0 -156
  660. package/skills/lab-hardware-cad/references/labware-adapters.md +0 -190
  661. package/skills/lab-hardware-cad/references/microfluidics.md +0 -157
  662. package/skills/lab-hardware-cad/references/optomechanics.md +0 -148
  663. package/skills/lab-hardware-cad/references/validation.md +0 -132
  664. package/skills/lab-hardware-cad/scripts/_common.py +0 -650
  665. package/skills/lab-hardware-cad/scripts/check.py +0 -645
  666. package/skills/lab-hardware-cad/scripts/gen.py +0 -264
  667. package/skills/lab-hardware-cad/scripts/snapshot.py +0 -278
  668. package/skills/labarchive-integration/references/api_reference.md +0 -250
  669. package/skills/labarchive-integration/references/authentication_guide.md +0 -191
  670. package/skills/labarchive-integration/references/integrations.md +0 -162
  671. package/skills/labarchive-integration/references/sources.md +0 -213
  672. package/skills/labarchive-integration/scripts/entry_operations.py +0 -381
  673. package/skills/labarchive-integration/scripts/notebook_operations.py +0 -451
  674. package/skills/labarchive-integration/scripts/setup_config.py +0 -258
  675. package/skills/lamindb/references/annotation-validation.md +0 -510
  676. package/skills/lamindb/references/core-concepts.md +0 -383
  677. package/skills/lamindb/references/data-management.md +0 -432
  678. package/skills/lamindb/references/integrations.md +0 -663
  679. package/skills/lamindb/references/ontologies.md +0 -498
  680. package/skills/lamindb/references/setup-deployment.md +0 -755
  681. package/skills/latchbio-integration/references/data-management.md +0 -257
  682. package/skills/latchbio-integration/references/latch-mcp.md +0 -158
  683. package/skills/latchbio-integration/references/nextflow-snakemake.md +0 -258
  684. package/skills/latchbio-integration/references/operations-and-debugging.md +0 -320
  685. package/skills/latchbio-integration/references/registry.md +0 -275
  686. package/skills/latchbio-integration/references/resource-configuration.md +0 -274
  687. package/skills/latchbio-integration/references/ui-and-automation.md +0 -355
  688. package/skills/latchbio-integration/references/verified-workflows.md +0 -226
  689. package/skills/latchbio-integration/references/workflow-creation.md +0 -275
  690. package/skills/latchbio-integration/scripts/inspect_latch_sdk.py +0 -290
  691. package/skills/latex-posters/assets/baposter_template.tex +0 -257
  692. package/skills/latex-posters/assets/beamerposter_template.tex +0 -244
  693. package/skills/latex-posters/assets/poster_quality_checklist.md +0 -358
  694. package/skills/latex-posters/assets/tikzposter_template.tex +0 -251
  695. package/skills/latex-posters/references/ai_graphics_for_posters.md +0 -524
  696. package/skills/latex-posters/references/compilation_and_quality_control.md +0 -467
  697. package/skills/latex-posters/references/latex_poster_packages.md +0 -745
  698. package/skills/latex-posters/references/latex_poster_reference.md +0 -241
  699. package/skills/latex-posters/references/poster_content_guide.md +0 -748
  700. package/skills/latex-posters/references/poster_design_principles.md +0 -806
  701. package/skills/latex-posters/references/poster_layout_design.md +0 -900
  702. package/skills/latex-posters/references/poster_patterns_and_presentation.md +0 -81
  703. package/skills/latex-posters/scripts/generate_schematic.py +0 -198
  704. package/skills/latex-posters/scripts/generate_schematic_ai.py +0 -950
  705. package/skills/latex-posters/scripts/review_poster.sh +0 -214
  706. package/skills/liteparse/references/api_reference.md +0 -169
  707. package/skills/liteparse/references/choosing_a_parser.md +0 -70
  708. package/skills/liteparse/references/cli_reference.md +0 -118
  709. package/skills/liteparse/references/ocr_and_formats.md +0 -143
  710. package/skills/liteparse/references/output_formats.md +0 -146
  711. package/skills/liteparse/scripts/batch_parse_dir.py +0 -163
  712. package/skills/literature-review/assets/review_template.md +0 -412
  713. package/skills/literature-review/references/citation_styles.md +0 -166
  714. package/skills/literature-review/references/core_workflow.md +0 -260
  715. package/skills/literature-review/references/database_strategies.md +0 -455
  716. package/skills/literature-review/references/example_workflow.md +0 -68
  717. package/skills/literature-review/references/search_and_citation.md +0 -157
  718. package/skills/literature-review/scripts/generate_pdf.py +0 -176
  719. package/skills/literature-review/scripts/generate_schematic.py +0 -198
  720. package/skills/literature-review/scripts/generate_schematic_ai.py +0 -950
  721. package/skills/literature-review/scripts/search_databases.py +0 -303
  722. package/skills/literature-review/scripts/verify_citations.py +0 -222
  723. package/skills/markdown-mermaid-writing/assets/examples/example-research-report.md +0 -221
  724. package/skills/markdown-mermaid-writing/references/diagrams/architecture.md +0 -108
  725. package/skills/markdown-mermaid-writing/references/diagrams/block.md +0 -177
  726. package/skills/markdown-mermaid-writing/references/diagrams/c4.md +0 -136
  727. package/skills/markdown-mermaid-writing/references/diagrams/class.md +0 -246
  728. package/skills/markdown-mermaid-writing/references/diagrams/complex_examples.md +0 -384
  729. package/skills/markdown-mermaid-writing/references/diagrams/er.md +0 -222
  730. package/skills/markdown-mermaid-writing/references/diagrams/flowchart.md +0 -177
  731. package/skills/markdown-mermaid-writing/references/diagrams/gantt.md +0 -138
  732. package/skills/markdown-mermaid-writing/references/diagrams/git_graph.md +0 -74
  733. package/skills/markdown-mermaid-writing/references/diagrams/kanban.md +0 -107
  734. package/skills/markdown-mermaid-writing/references/diagrams/mindmap.md +0 -74
  735. package/skills/markdown-mermaid-writing/references/diagrams/packet.md +0 -55
  736. package/skills/markdown-mermaid-writing/references/diagrams/pie.md +0 -52
  737. package/skills/markdown-mermaid-writing/references/diagrams/quadrant.md +0 -66
  738. package/skills/markdown-mermaid-writing/references/diagrams/radar.md +0 -59
  739. package/skills/markdown-mermaid-writing/references/diagrams/requirement.md +0 -88
  740. package/skills/markdown-mermaid-writing/references/diagrams/sankey.md +0 -71
  741. package/skills/markdown-mermaid-writing/references/diagrams/sequence.md +0 -174
  742. package/skills/markdown-mermaid-writing/references/diagrams/state.md +0 -150
  743. package/skills/markdown-mermaid-writing/references/diagrams/timeline.md +0 -96
  744. package/skills/markdown-mermaid-writing/references/diagrams/treemap.md +0 -66
  745. package/skills/markdown-mermaid-writing/references/diagrams/user_journey.md +0 -108
  746. package/skills/markdown-mermaid-writing/references/diagrams/xy_chart.md +0 -53
  747. package/skills/markdown-mermaid-writing/references/diagrams/zenuml.md +0 -71
  748. package/skills/markdown-mermaid-writing/references/markdown_style_guide.md +0 -733
  749. package/skills/markdown-mermaid-writing/references/mermaid_style_guide.md +0 -458
  750. package/skills/markdown-mermaid-writing/templates/decision_record.md +0 -211
  751. package/skills/markdown-mermaid-writing/templates/how_to_guide.md +0 -275
  752. package/skills/markdown-mermaid-writing/templates/issue.md +0 -303
  753. package/skills/markdown-mermaid-writing/templates/kanban.md +0 -223
  754. package/skills/markdown-mermaid-writing/templates/presentation.md +0 -312
  755. package/skills/markdown-mermaid-writing/templates/project_documentation.md +0 -412
  756. package/skills/markdown-mermaid-writing/templates/pull_request.md +0 -319
  757. package/skills/markdown-mermaid-writing/templates/research_paper.md +0 -304
  758. package/skills/markdown-mermaid-writing/templates/status_report.md +0 -185
  759. package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +0 -149
  760. package/skills/market-research-reports/assets/claims_ledger_template.csv +0 -4
  761. package/skills/market-research-reports/assets/competitor_feature_matrix_template.csv +0 -5
  762. package/skills/market-research-reports/assets/consistency_check_template.csv +0 -3
  763. package/skills/market-research-reports/assets/forecast_sensitivity_template.json +0 -90
  764. package/skills/market-research-reports/assets/market_report_template.tex +0 -279
  765. package/skills/market-research-reports/assets/market_research.sty +0 -241
  766. package/skills/market-research-reports/assets/market_sizing_scenarios_template.json +0 -129
  767. package/skills/market-research-reports/assets/report_manifest_template.json +0 -27
  768. package/skills/market-research-reports/assets/source_ledger_template.csv +0 -4
  769. package/skills/market-research-reports/references/data_analysis_patterns.md +0 -290
  770. package/skills/market-research-reports/references/evidence_model.md +0 -148
  771. package/skills/market-research-reports/references/methods_and_ethics.md +0 -162
  772. package/skills/market-research-reports/references/official_data_sources.md +0 -196
  773. package/skills/market-research-reports/references/report_structure_guide.md +0 -283
  774. package/skills/market-research-reports/references/sources.md +0 -73
  775. package/skills/market-research-reports/references/visual_generation_guide.md +0 -158
  776. package/skills/market-research-reports/scripts/_common.py +0 -312
  777. package/skills/market-research-reports/scripts/audit_claim_citations.py +0 -326
  778. package/skills/market-research-reports/scripts/calculate_market_sizing.py +0 -389
  779. package/skills/market-research-reports/scripts/check_unit_consistency.py +0 -217
  780. package/skills/market-research-reports/scripts/forecast_sensitivity.py +0 -326
  781. package/skills/market-research-reports/scripts/generate_report_scaffold.py +0 -444
  782. package/skills/market-research-reports/scripts/validate_competitor_matrix.py +0 -223
  783. package/skills/market-research-reports/scripts/validate_evidence_ledger.py +0 -291
  784. package/skills/markitdown/references/api_reference.md +0 -418
  785. package/skills/markitdown/references/cloud_and_ocr.md +0 -320
  786. package/skills/markitdown/references/file_formats.md +0 -281
  787. package/skills/markitdown/references/mcp_and_plugins.md +0 -243
  788. package/skills/markitdown/references/migration.md +0 -356
  789. package/skills/markitdown/references/security.md +0 -246
  790. package/skills/markitdown/references/workflows.md +0 -309
  791. package/skills/markitdown/scripts/batch_convert.py +0 -354
  792. package/skills/markitdown/scripts/convert_literature.py +0 -405
  793. package/skills/markitdown/scripts/inspect_installation.py +0 -162
  794. package/skills/matchms/references/filtering.md +0 -299
  795. package/skills/matchms/references/importing_exporting.md +0 -323
  796. package/skills/matchms/references/migration.md +0 -387
  797. package/skills/matchms/references/similarity.md +0 -413
  798. package/skills/matchms/references/sources.md +0 -113
  799. package/skills/matchms/references/workflows.md +0 -451
  800. package/skills/matchms/scripts/library_search.py +0 -593
  801. package/skills/matlab/assets/project_manifest_template.json +0 -33
  802. package/skills/matlab/assets/python_compatibility_r2026a.json +0 -27
  803. package/skills/matlab/assets/reproducibility_manifest_template.json +0 -32
  804. package/skills/matlab/references/data-import-export.md +0 -221
  805. package/skills/matlab/references/executing-scripts.md +0 -213
  806. package/skills/matlab/references/graphics-visualization.md +0 -181
  807. package/skills/matlab/references/mathematics.md +0 -208
  808. package/skills/matlab/references/matrices-arrays.md +0 -228
  809. package/skills/matlab/references/octave-compatibility.md +0 -212
  810. package/skills/matlab/references/programming.md +0 -225
  811. package/skills/matlab/references/python-integration.md +0 -248
  812. package/skills/matlab/scripts/_common.py +0 -263
  813. package/skills/matlab/scripts/generate_function_scaffold.py +0 -165
  814. package/skills/matlab/scripts/inventory_mat_file.py +0 -351
  815. package/skills/matlab/scripts/plan_batch_command.py +0 -257
  816. package/skills/matlab/scripts/plan_python_compatibility.py +0 -176
  817. package/skills/matlab/scripts/reproducibility_report.py +0 -233
  818. package/skills/matlab/scripts/scan_m_code.py +0 -433
  819. package/skills/matlab/scripts/validate_project_manifest.py +0 -348
  820. package/skills/matplotlib/references/api_reference.md +0 -409
  821. package/skills/matplotlib/references/common_issues.md +0 -562
  822. package/skills/matplotlib/references/plot_types.md +0 -469
  823. package/skills/matplotlib/references/styling_guide.md +0 -600
  824. package/skills/matplotlib/scripts/plot_template.py +0 -406
  825. package/skills/matplotlib/scripts/style_configurator.py +0 -412
  826. package/skills/medchem/references/api_guide.md +0 -331
  827. package/skills/medchem/references/rules_catalog.md +0 -328
  828. package/skills/medchem/scripts/filter_molecules.py +0 -302
  829. package/skills/modal/references/api_reference.md +0 -225
  830. package/skills/modal/references/examples.md +0 -276
  831. package/skills/modal/references/functions.md +0 -260
  832. package/skills/modal/references/getting-started.md +0 -171
  833. package/skills/modal/references/gpu.md +0 -177
  834. package/skills/modal/references/images.md +0 -266
  835. package/skills/modal/references/resources.md +0 -117
  836. package/skills/modal/references/scaling.md +0 -173
  837. package/skills/modal/references/scheduled-jobs.md +0 -147
  838. package/skills/modal/references/secrets.md +0 -119
  839. package/skills/modal/references/volumes.md +0 -247
  840. package/skills/modal/references/web-endpoints.md +0 -259
  841. package/skills/molecular-dynamics/references/mdanalysis_analysis.md +0 -208
  842. package/skills/molfeat/references/api_reference.md +0 -429
  843. package/skills/molfeat/references/available_featurizers.md +0 -335
  844. package/skills/molfeat/references/choosing_a_featurizer.md +0 -192
  845. package/skills/molfeat/references/examples.md +0 -720
  846. package/skills/ncats-arax/references/output-schema.md +0 -186
  847. package/skills/ncats-arax/references/query-contract.md +0 -140
  848. package/skills/ncats-arax/scripts/arax_client.py +0 -2087
  849. package/skills/networkx/references/algorithms.md +0 -384
  850. package/skills/networkx/references/generators.md +0 -385
  851. package/skills/networkx/references/graph-basics.md +0 -284
  852. package/skills/networkx/references/io.md +0 -457
  853. package/skills/networkx/references/visualization.md +0 -531
  854. package/skills/neurokit2/references/bio_module.md +0 -244
  855. package/skills/neurokit2/references/complexity.md +0 -212
  856. package/skills/neurokit2/references/ecg_cardiac.md +0 -193
  857. package/skills/neurokit2/references/eda.md +0 -185
  858. package/skills/neurokit2/references/eeg.md +0 -204
  859. package/skills/neurokit2/references/emg.md +0 -157
  860. package/skills/neurokit2/references/eog.md +0 -154
  861. package/skills/neurokit2/references/epochs_events.md +0 -199
  862. package/skills/neurokit2/references/hrv.md +0 -205
  863. package/skills/neurokit2/references/ppg.md +0 -191
  864. package/skills/neurokit2/references/rsp.md +0 -212
  865. package/skills/neurokit2/references/signal_processing.md +0 -160
  866. package/skills/neurokit2/scripts/_common.py +0 -567
  867. package/skills/neurokit2/scripts/ecg_hrv_pipeline.py +0 -303
  868. package/skills/neurokit2/scripts/eda_pipeline.py +0 -288
  869. package/skills/neurokit2/scripts/generate_synthetic.py +0 -221
  870. package/skills/neurokit2/scripts/inspect_signal.py +0 -362
  871. package/skills/neurokit2/scripts/plan_epochs.py +0 -281
  872. package/skills/neurokit2/scripts/validate_multimodal.py +0 -350
  873. package/skills/neuropixels-analysis/assets/analysis_template.py +0 -271
  874. package/skills/neuropixels-analysis/references/AI_CURATION.md +0 -164
  875. package/skills/neuropixels-analysis/references/ANALYSIS.md +0 -392
  876. package/skills/neuropixels-analysis/references/AUTOMATED_CURATION.md +0 -435
  877. package/skills/neuropixels-analysis/references/MOTION_CORRECTION.md +0 -323
  878. package/skills/neuropixels-analysis/references/PREPROCESSING.md +0 -273
  879. package/skills/neuropixels-analysis/references/QUALITY_METRICS.md +0 -359
  880. package/skills/neuropixels-analysis/references/SPIKE_SORTING.md +0 -339
  881. package/skills/neuropixels-analysis/references/api_reference.md +0 -229
  882. package/skills/neuropixels-analysis/references/plotting_guide.md +0 -454
  883. package/skills/neuropixels-analysis/references/standard_workflow.md +0 -305
  884. package/skills/neuropixels-analysis/scripts/compute_metrics.py +0 -182
  885. package/skills/neuropixels-analysis/scripts/explore_recording.py +0 -168
  886. package/skills/neuropixels-analysis/scripts/export_to_phy.py +0 -79
  887. package/skills/neuropixels-analysis/scripts/neuropixels_pipeline.py +0 -442
  888. package/skills/neuropixels-analysis/scripts/preprocess_recording.py +0 -122
  889. package/skills/neuropixels-analysis/scripts/run_sorting.py +0 -98
  890. package/skills/nextflow/references/configuration.md +0 -276
  891. package/skills/nextflow/references/containers.md +0 -92
  892. package/skills/nextflow/references/developing.md +0 -301
  893. package/skills/nextflow/references/language.md +0 -327
  894. package/skills/nextflow/references/nf-core-tools.md +0 -130
  895. package/skills/nextflow/references/running-pipelines.md +0 -131
  896. package/skills/nextflow/references/testing.md +0 -189
  897. package/skills/omero-integration/references/advanced.md +0 -273
  898. package/skills/omero-integration/references/connection.md +0 -293
  899. package/skills/omero-integration/references/data_access.md +0 -359
  900. package/skills/omero-integration/references/image_processing.md +0 -286
  901. package/skills/omero-integration/references/metadata.md +0 -313
  902. package/skills/omero-integration/references/rois.md +0 -291
  903. package/skills/omero-integration/references/scripts.md +0 -304
  904. package/skills/omero-integration/references/sources.md +0 -194
  905. package/skills/omero-integration/references/tables.md +0 -269
  906. package/skills/omero-integration/scripts/export_image_metadata.py +0 -560
  907. package/skills/omero-integration/scripts/inventory.py +0 -302
  908. package/skills/omero-integration/scripts/omero_common.py +0 -490
  909. package/skills/omero-integration/scripts/plan_transfer.py +0 -393
  910. package/skills/omero-integration/scripts/validate_config.py +0 -140
  911. package/skills/onekgpd/assets/kgpe.json +0 -48032
  912. package/skills/onekgpd/references/annotation_vocabularies.md +0 -187
  913. package/skills/onekgpd/references/onekgpd_commands.md +0 -296
  914. package/skills/onekgpd/scripts/onekgpd_api.py +0 -794
  915. package/skills/onekgpd/scripts/onekgpd_meta.py +0 -485
  916. package/skills/ontology-term-resolution/references/curation-rules.md +0 -110
  917. package/skills/ontology-term-resolution/references/ols4-api.md +0 -135
  918. package/skills/ontology-term-resolution/references/ontology-registry.md +0 -110
  919. package/skills/ontology-term-resolution/scripts/ols_client.py +0 -341
  920. package/skills/ontology-term-resolution/scripts/resolve_terms.py +0 -255
  921. package/skills/ontology-term-resolution/scripts/validate_terms.py +0 -297
  922. package/skills/open-notebook/references/api_reference.md +0 -715
  923. package/skills/open-notebook/references/architecture.md +0 -163
  924. package/skills/open-notebook/references/configuration.md +0 -226
  925. package/skills/open-notebook/references/examples.md +0 -290
  926. package/skills/open-notebook/scripts/chat_interaction.py +0 -190
  927. package/skills/open-notebook/scripts/notebook_management.py +0 -142
  928. package/skills/open-notebook/scripts/source_ingestion.py +0 -160
  929. package/skills/openpiv/references/advanced_algorithms.md +0 -233
  930. package/skills/openpiv/scripts/__init__.py +0 -1
  931. package/skills/openpiv/scripts/analyze.py +0 -143
  932. package/skills/openpiv/scripts/run_example.py +0 -78
  933. package/skills/openpiv/scripts/runner.py +0 -214
  934. package/skills/opentrons-integration/references/api_reference.md +0 -382
  935. package/skills/opentrons-integration/references/liquid_handling.md +0 -387
  936. package/skills/opentrons-integration/references/migration-api-2-19-to-2-29.md +0 -328
  937. package/skills/opentrons-integration/references/modules_and_deck.md +0 -409
  938. package/skills/opentrons-integration/references/protocol_authoring.md +0 -352
  939. package/skills/opentrons-integration/references/sources.md +0 -151
  940. package/skills/opentrons-integration/references/validation_and_operations.md +0 -314
  941. package/skills/opentrons-integration/requirements-flex.txt +0 -1
  942. package/skills/opentrons-integration/requirements-ot2.txt +0 -1
  943. package/skills/opentrons-integration/scripts/absorbance_reader_template.py +0 -82
  944. package/skills/opentrons-integration/scripts/basic_protocol_template.py +0 -68
  945. package/skills/opentrons-integration/scripts/ot2_basic_protocol_template.py +0 -63
  946. package/skills/opentrons-integration/scripts/pcr_setup_template.py +0 -146
  947. package/skills/opentrons-integration/scripts/runtime_parameters_template.py +0 -110
  948. package/skills/opentrons-integration/scripts/serial_dilution_template.py +0 -113
  949. package/skills/optimize-for-gpu/references/code_transformation_patterns.md +0 -301
  950. package/skills/optimize-for-gpu/references/cucim.md +0 -679
  951. package/skills/optimize-for-gpu/references/cudf.md +0 -762
  952. package/skills/optimize-for-gpu/references/cugraph.md +0 -733
  953. package/skills/optimize-for-gpu/references/cuml.md +0 -710
  954. package/skills/optimize-for-gpu/references/cupy.md +0 -668
  955. package/skills/optimize-for-gpu/references/cuspatial.md +0 -420
  956. package/skills/optimize-for-gpu/references/cuvs.md +0 -671
  957. package/skills/optimize-for-gpu/references/cuxfilter.md +0 -600
  958. package/skills/optimize-for-gpu/references/decision_framework.md +0 -234
  959. package/skills/optimize-for-gpu/references/installation.md +0 -121
  960. package/skills/optimize-for-gpu/references/kvikio.md +0 -612
  961. package/skills/optimize-for-gpu/references/numba.md +0 -808
  962. package/skills/optimize-for-gpu/references/raft.md +0 -312
  963. package/skills/optimize-for-gpu/references/warp.md +0 -623
  964. package/skills/pacsomatic/config.yaml +0 -42
  965. package/skills/pacsomatic/references/agent-playbook.md +0 -73
  966. package/skills/pacsomatic/references/config-and-output.md +0 -100
  967. package/skills/pacsomatic/references/pacsomatic_guide.md +0 -254
  968. package/skills/pacsomatic/scripts/run_pacsomatic.py +0 -794
  969. package/skills/paper-lookup/references/arxiv.md +0 -275
  970. package/skills/paper-lookup/references/biorxiv.md +0 -163
  971. package/skills/paper-lookup/references/core.md +0 -150
  972. package/skills/paper-lookup/references/crossref.md +0 -181
  973. package/skills/paper-lookup/references/europepmc.md +0 -226
  974. package/skills/paper-lookup/references/medrxiv.md +0 -126
  975. package/skills/paper-lookup/references/openalex.md +0 -174
  976. package/skills/paper-lookup/references/pmc.md +0 -228
  977. package/skills/paper-lookup/references/pubmed.md +0 -124
  978. package/skills/paper-lookup/references/semantic-scholar.md +0 -203
  979. package/skills/paper-lookup/references/unpaywall.md +0 -127
  980. package/skills/paper-lookup/scripts/_common.py +0 -227
  981. package/skills/paper-lookup/scripts/arxiv_atom.py +0 -200
  982. package/skills/paper-lookup/scripts/jats_to_text.py +0 -324
  983. package/skills/paper-lookup/scripts/openalex_abstract.py +0 -163
  984. package/skills/paper-lookup/scripts/paginate.py +0 -490
  985. package/skills/paperclip/references/cli-reference.md +0 -389
  986. package/skills/paperclip/references/installation.md +0 -341
  987. package/skills/paperclip/references/map-reduce.md +0 -252
  988. package/skills/paperclip/references/python-sdk.md +0 -323
  989. package/skills/paperclip/references/repos-and-workspace.md +0 -271
  990. package/skills/paperclip/references/search-and-retrieval.md +0 -281
  991. package/skills/parallel-web/references/data-enrichment.md +0 -104
  992. package/skills/parallel-web/references/deep-research.md +0 -91
  993. package/skills/parallel-web/references/findall.md +0 -81
  994. package/skills/parallel-web/references/monitor.md +0 -83
  995. package/skills/parallel-web/references/web-extract.md +0 -59
  996. package/skills/parallel-web/references/web-search.md +0 -100
  997. package/skills/pathml/references/data_management.md +0 -357
  998. package/skills/pathml/references/graphs.md +0 -335
  999. package/skills/pathml/references/image_loading.md +0 -301
  1000. package/skills/pathml/references/machine_learning.md +0 -408
  1001. package/skills/pathml/references/multiparametric.md +0 -352
  1002. package/skills/pathml/references/preprocessing.md +0 -371
  1003. package/skills/pathml/scripts/_common.py +0 -385
  1004. package/skills/pathml/scripts/image_qc.py +0 -325
  1005. package/skills/pathml/scripts/plan_inference.py +0 -282
  1006. package/skills/pathml/scripts/plan_pipeline.py +0 -239
  1007. package/skills/pathml/scripts/slide_manifest.py +0 -405
  1008. package/skills/pathml/scripts/validate_spatial_schema.py +0 -420
  1009. package/skills/pathogen-variant-surveillance/references/lapis-api.md +0 -209
  1010. package/skills/pathogen-variant-surveillance/references/lineage-nomenclature.md +0 -126
  1011. package/skills/pathogen-variant-surveillance/references/surveillance-caveats.md +0 -149
  1012. package/skills/pathogen-variant-surveillance/scripts/lapis_client.py +0 -776
  1013. package/skills/pathogen-variant-surveillance/scripts/lineage_prevalence.py +0 -310
  1014. package/skills/pathogen-variant-surveillance/scripts/mutation_profile.py +0 -215
  1015. package/skills/pathogen-variant-surveillance/scripts/reporting_lag.py +0 -217
  1016. package/skills/pathogen-variant-surveillance/scripts/resolve_lineage.py +0 -198
  1017. package/skills/pathway-enrichment/references/databases-and-gene-sets.md +0 -140
  1018. package/skills/pathway-enrichment/references/gseapy.md +0 -189
  1019. package/skills/pathway-enrichment/references/interpretation.md +0 -118
  1020. package/skills/pathway-enrichment/scripts/run_enrichment.py +0 -231
  1021. package/skills/pdf/LICENSE.txt +0 -30
  1022. package/skills/pdf/forms.md +0 -294
  1023. package/skills/pdf/reference.md +0 -612
  1024. package/skills/pdf/scripts/check_bounding_boxes.py +0 -65
  1025. package/skills/pdf/scripts/check_fillable_fields.py +0 -11
  1026. package/skills/pdf/scripts/convert_pdf_to_images.py +0 -33
  1027. package/skills/pdf/scripts/create_validation_image.py +0 -37
  1028. package/skills/pdf/scripts/extract_form_field_info.py +0 -122
  1029. package/skills/pdf/scripts/extract_form_structure.py +0 -115
  1030. package/skills/pdf/scripts/fill_fillable_fields.py +0 -98
  1031. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
  1032. package/skills/peer-review/assets/citation_references_template.csv +0 -2
  1033. package/skills/peer-review/assets/claim_evidence_matrix_template.csv +0 -4
  1034. package/skills/peer-review/assets/reporting_checklist_template.csv +0 -31
  1035. package/skills/peer-review/assets/reporting_guidelines.json +0 -466
  1036. package/skills/peer-review/assets/review_intake_template.json +0 -52
  1037. package/skills/peer-review/assets/review_scaffold_template.md +0 -68
  1038. package/skills/peer-review/assets/source_ledger.csv +0 -32
  1039. package/skills/peer-review/assets/statistical_reproducibility_template.json +0 -210
  1040. package/skills/peer-review/assets/study_profile_template.json +0 -12
  1041. package/skills/peer-review/references/common_issues.md +0 -257
  1042. package/skills/peer-review/references/ethical_review_practice.md +0 -233
  1043. package/skills/peer-review/references/reporting_standards.md +0 -249
  1044. package/skills/peer-review/references/security_validation.md +0 -75
  1045. package/skills/peer-review/references/statistical_reproducibility.md +0 -329
  1046. package/skills/peer-review/references/tool_reference.md +0 -253
  1047. package/skills/peer-review/scripts/_common.py +0 -398
  1048. package/skills/peer-review/scripts/audit_citations.py +0 -207
  1049. package/skills/peer-review/scripts/audit_statistics_reproducibility.py +0 -305
  1050. package/skills/peer-review/scripts/generate_review_scaffold.py +0 -81
  1051. package/skills/peer-review/scripts/lint_review.py +0 -254
  1052. package/skills/peer-review/scripts/select_reporting_guidelines.py +0 -383
  1053. package/skills/peer-review/scripts/validate_claim_evidence.py +0 -221
  1054. package/skills/peer-review/scripts/validate_review_intake.py +0 -452
  1055. package/skills/pennylane/references/advanced_features.md +0 -667
  1056. package/skills/pennylane/references/devices_backends.md +0 -562
  1057. package/skills/pennylane/references/getting_started.md +0 -232
  1058. package/skills/pennylane/references/optimization.md +0 -670
  1059. package/skills/pennylane/references/quantum_chemistry.md +0 -576
  1060. package/skills/pennylane/references/quantum_circuits.md +0 -443
  1061. package/skills/pennylane/references/quantum_ml.md +0 -555
  1062. package/skills/phylogenetics/references/iqtree_inference.md +0 -181
  1063. package/skills/phylogenetics/scripts/phylogenetic_analysis.py +0 -272
  1064. package/skills/pi-agent/references/compaction.md +0 -76
  1065. package/skills/pi-agent/references/containerization.md +0 -80
  1066. package/skills/pi-agent/references/custom-provider.md +0 -131
  1067. package/skills/pi-agent/references/development.md +0 -61
  1068. package/skills/pi-agent/references/environment-variables.md +0 -57
  1069. package/skills/pi-agent/references/extensions.md +0 -185
  1070. package/skills/pi-agent/references/json.md +0 -69
  1071. package/skills/pi-agent/references/keybindings.md +0 -58
  1072. package/skills/pi-agent/references/llama-cpp.md +0 -69
  1073. package/skills/pi-agent/references/models.md +0 -114
  1074. package/skills/pi-agent/references/overview.md +0 -37
  1075. package/skills/pi-agent/references/packages.md +0 -103
  1076. package/skills/pi-agent/references/pi-interview.md +0 -123
  1077. package/skills/pi-agent/references/pi-mcp-adapter.md +0 -191
  1078. package/skills/pi-agent/references/pi-subagents.md +0 -371
  1079. package/skills/pi-agent/references/pi-web-access.md +0 -243
  1080. package/skills/pi-agent/references/prompt-templates.md +0 -48
  1081. package/skills/pi-agent/references/providers.md +0 -122
  1082. package/skills/pi-agent/references/quickstart.md +0 -73
  1083. package/skills/pi-agent/references/rpc.md +0 -95
  1084. package/skills/pi-agent/references/sdk.md +0 -151
  1085. package/skills/pi-agent/references/security.md +0 -52
  1086. package/skills/pi-agent/references/session-format.md +0 -90
  1087. package/skills/pi-agent/references/sessions.md +0 -56
  1088. package/skills/pi-agent/references/settings.md +0 -102
  1089. package/skills/pi-agent/references/shell-aliases.md +0 -15
  1090. package/skills/pi-agent/references/skills.md +0 -83
  1091. package/skills/pi-agent/references/terminal-setup.md +0 -87
  1092. package/skills/pi-agent/references/termux.md +0 -31
  1093. package/skills/pi-agent/references/themes.md +0 -69
  1094. package/skills/pi-agent/references/tmux.md +0 -44
  1095. package/skills/pi-agent/references/tui.md +0 -97
  1096. package/skills/pi-agent/references/usage.md +0 -129
  1097. package/skills/pi-agent/references/windows.md +0 -23
  1098. package/skills/pkpd-modeling/assets/nca-reporting-checklist.md +0 -72
  1099. package/skills/pkpd-modeling/assets/popk-analysis-plan.md +0 -136
  1100. package/skills/pkpd-modeling/references/antimicrobial-and-tdm.md +0 -110
  1101. package/skills/pkpd-modeling/references/bioequivalence.md +0 -132
  1102. package/skills/pkpd-modeling/references/dataset-standards.md +0 -103
  1103. package/skills/pkpd-modeling/references/ddi-and-qt.md +0 -132
  1104. package/skills/pkpd-modeling/references/nca-conventions.md +0 -128
  1105. package/skills/pkpd-modeling/references/pbpk.md +0 -103
  1106. package/skills/pkpd-modeling/references/pd-and-exposure-response.md +0 -149
  1107. package/skills/pkpd-modeling/references/population-pk.md +0 -133
  1108. package/skills/pkpd-modeling/references/regulatory-guidance.md +0 -82
  1109. package/skills/pkpd-modeling/references/software-ecosystem.md +0 -123
  1110. package/skills/pkpd-modeling/references/source-ledger.md +0 -89
  1111. package/skills/pkpd-modeling/references/special-populations.md +0 -126
  1112. package/skills/pkpd-modeling/references/structural-models.md +0 -140
  1113. package/skills/pkpd-modeling/references/tmdd-and-biologics.md +0 -115
  1114. package/skills/pkpd-modeling/scripts/_common.py +0 -327
  1115. package/skills/pkpd-modeling/scripts/_models.py +0 -673
  1116. package/skills/pkpd-modeling/scripts/allometry_and_fih.py +0 -346
  1117. package/skills/pkpd-modeling/scripts/bioequivalence.py +0 -480
  1118. package/skills/pkpd-modeling/scripts/check_popk_dataset.py +0 -400
  1119. package/skills/pkpd-modeling/scripts/ddi_static.py +0 -346
  1120. package/skills/pkpd-modeling/scripts/exposure_response.py +0 -328
  1121. package/skills/pkpd-modeling/scripts/fit_compartmental.py +0 -558
  1122. package/skills/pkpd-modeling/scripts/nca.py +0 -587
  1123. package/skills/pkpd-modeling/scripts/simulate_regimen.py +0 -323
  1124. package/skills/pkpd-modeling/scripts/tdm_bayes.py +0 -312
  1125. package/skills/polars/references/best_practices.md +0 -651
  1126. package/skills/polars/references/core_concepts.md +0 -380
  1127. package/skills/polars/references/io_guide.md +0 -564
  1128. package/skills/polars/references/operations.md +0 -602
  1129. package/skills/polars/references/pandas_migration.md +0 -417
  1130. package/skills/polars/references/transformations.md +0 -549
  1131. package/skills/polars-bio/references/bioframe_migration.md +0 -250
  1132. package/skills/polars-bio/references/configuration.md +0 -187
  1133. package/skills/polars-bio/references/file_io.md +0 -469
  1134. package/skills/polars-bio/references/interval_operations.md +0 -370
  1135. package/skills/polars-bio/references/pileup_operations.md +0 -176
  1136. package/skills/polars-bio/references/sql_processing.md +0 -224
  1137. package/skills/pptx/LICENSE.txt +0 -30
  1138. package/skills/pptx/scripts/__init__.py +0 -0
  1139. package/skills/pptx/scripts/add_slide.py +0 -367
  1140. package/skills/pptx/scripts/clean.py +0 -309
  1141. package/skills/pptx/scripts/office/helpers/__init__.py +0 -111
  1142. package/skills/pptx/scripts/office/helpers/pptx_chart.py +0 -170
  1143. package/skills/pptx/scripts/office/helpers/pptx_slide.py +0 -60
  1144. package/skills/pptx/scripts/office/helpers/pptx_theme.py +0 -114
  1145. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  1146. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  1147. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  1148. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  1149. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  1150. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  1151. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  1152. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  1153. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  1154. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  1155. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  1156. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  1157. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  1158. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  1159. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  1160. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  1161. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  1162. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  1163. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  1164. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  1165. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  1166. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  1167. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  1168. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  1169. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  1170. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  1171. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  1172. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  1173. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  1174. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  1175. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  1176. package/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
  1177. package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  1178. package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  1179. package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  1180. package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  1181. package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  1182. package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  1183. package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  1184. package/skills/pptx/scripts/office/soffice.py +0 -232
  1185. package/skills/pptx/scripts/office/validate.py +0 -173
  1186. package/skills/pptx/scripts/office/validators/__init__.py +0 -15
  1187. package/skills/pptx/scripts/office/validators/base.py +0 -875
  1188. package/skills/pptx/scripts/office/validators/docx.py +0 -466
  1189. package/skills/pptx/scripts/office/validators/pptx.py +0 -441
  1190. package/skills/pptx/scripts/office/validators/redlining.py +0 -299
  1191. package/skills/pptx/scripts/thumbnail.py +0 -311
  1192. package/skills/pptx-posters/assets/generation_dependencies.json +0 -5
  1193. package/skills/pptx-posters/assets/poster_manifest_template.json +0 -154
  1194. package/skills/pptx-posters/assets/poster_quality_checklist.md +0 -192
  1195. package/skills/pptx-posters/references/manifest_spec.md +0 -297
  1196. package/skills/pptx-posters/references/poster_content_guide.md +0 -176
  1197. package/skills/pptx-posters/references/poster_design_principles.md +0 -226
  1198. package/skills/pptx-posters/references/poster_layout_design.md +0 -189
  1199. package/skills/pptx-posters/references/pptx_security.md +0 -202
  1200. package/skills/pptx-posters/references/security_validation.md +0 -90
  1201. package/skills/pptx-posters/references/source_ledger.md +0 -256
  1202. package/skills/pptx-posters/scripts/_common.py +0 -396
  1203. package/skills/pptx-posters/scripts/_manifest.py +0 -1318
  1204. package/skills/pptx-posters/scripts/_pptx.py +0 -1484
  1205. package/skills/pptx-posters/scripts/check_layout.py +0 -179
  1206. package/skills/pptx-posters/scripts/check_palette.py +0 -142
  1207. package/skills/pptx-posters/scripts/generate_poster.py +0 -427
  1208. package/skills/pptx-posters/scripts/inspect_pptx.py +0 -40
  1209. package/skills/pptx-posters/scripts/inventory_images.py +0 -252
  1210. package/skills/pptx-posters/scripts/plan_export.py +0 -201
  1211. package/skills/pptx-posters/scripts/validate_manifest.py +0 -55
  1212. package/skills/primekg/scripts/query_primekg.py +0 -128
  1213. package/skills/protocolsio-integration/assets/protocol-snapshot.schema.json +0 -179
  1214. package/skills/protocolsio-integration/references/additional_features.md +0 -202
  1215. package/skills/protocolsio-integration/references/authentication.md +0 -135
  1216. package/skills/protocolsio-integration/references/discussions.md +0 -192
  1217. package/skills/protocolsio-integration/references/file_manager.md +0 -256
  1218. package/skills/protocolsio-integration/references/protocols_api.md +0 -256
  1219. package/skills/protocolsio-integration/references/workspaces.md +0 -192
  1220. package/skills/protocolsio-integration/scripts/__init__.py +0 -1
  1221. package/skills/protocolsio-integration/scripts/_common.py +0 -613
  1222. package/skills/protocolsio-integration/scripts/pagination_helper.py +0 -248
  1223. package/skills/protocolsio-integration/scripts/plan_write_request.py +0 -657
  1224. package/skills/protocolsio-integration/scripts/protocols_read.py +0 -493
  1225. package/skills/protocolsio-integration/scripts/validate_auth_config.py +0 -128
  1226. package/skills/protocolsio-integration/scripts/validate_protocol_json.py +0 -358
  1227. package/skills/pufferlib/references/environments.md +0 -260
  1228. package/skills/pufferlib/references/integration.md +0 -192
  1229. package/skills/pufferlib/references/policies.md +0 -181
  1230. package/skills/pufferlib/references/training.md +0 -287
  1231. package/skills/pufferlib/references/vectorization.md +0 -210
  1232. package/skills/pufferlib/scripts/__init__.py +0 -1
  1233. package/skills/pufferlib/scripts/_common.py +0 -199
  1234. package/skills/pufferlib/scripts/benchmark_vectorization.py +0 -244
  1235. package/skills/pufferlib/scripts/env_contract_validator.py +0 -198
  1236. package/skills/pufferlib/scripts/env_template.py +0 -210
  1237. package/skills/pufferlib/scripts/inspect_checkpoint.py +0 -225
  1238. package/skills/pufferlib/scripts/repro_plan.py +0 -177
  1239. package/skills/pufferlib/scripts/train_template.py +0 -282
  1240. package/skills/pufferlib/scripts/validate_plan.py +0 -570
  1241. package/skills/pydeseq2/references/analysis_patterns.md +0 -70
  1242. package/skills/pydeseq2/references/api_reference.md +0 -256
  1243. package/skills/pydeseq2/references/core_workflow_steps.md +0 -162
  1244. package/skills/pydeseq2/references/workflow_guide.md +0 -603
  1245. package/skills/pydeseq2/scripts/run_deseq2_analysis.py +0 -388
  1246. package/skills/pydicom/references/common_tags.md +0 -277
  1247. package/skills/pydicom/references/transfer_syntaxes.md +0 -348
  1248. package/skills/pydicom/scripts/__init__.py +0 -1
  1249. package/skills/pydicom/scripts/_common.py +0 -916
  1250. package/skills/pydicom/scripts/anonymize_dicom.py +0 -713
  1251. package/skills/pydicom/scripts/deidentification_audit.py +0 -380
  1252. package/skills/pydicom/scripts/dicom_inventory.py +0 -402
  1253. package/skills/pydicom/scripts/dicom_to_image.py +0 -459
  1254. package/skills/pydicom/scripts/extract_metadata.py +0 -330
  1255. package/skills/pydicom/scripts/pixel_frame_planner.py +0 -303
  1256. package/skills/pydicom/scripts/transfer_syntax_inspector.py +0 -245
  1257. package/skills/pydicom/scripts/uid_mapping_validator.py +0 -240
  1258. package/skills/pyhealth/assets/starter_pipeline.py +0 -58
  1259. package/skills/pyhealth/references/datasets.md +0 -126
  1260. package/skills/pyhealth/references/examples.md +0 -237
  1261. package/skills/pyhealth/references/installation.md +0 -112
  1262. package/skills/pyhealth/references/medcode.md +0 -94
  1263. package/skills/pyhealth/references/models.md +0 -114
  1264. package/skills/pyhealth/references/tasks.md +0 -143
  1265. package/skills/pylabrobot/assets/protocol-manifest.schema.json +0 -367
  1266. package/skills/pylabrobot/references/analytical-equipment.md +0 -200
  1267. package/skills/pylabrobot/references/hardware-backends.md +0 -215
  1268. package/skills/pylabrobot/references/liquid-handling.md +0 -223
  1269. package/skills/pylabrobot/references/material-handling.md +0 -229
  1270. package/skills/pylabrobot/references/resources.md +0 -238
  1271. package/skills/pylabrobot/references/visualization.md +0 -187
  1272. package/skills/pylabrobot/scripts/__init__.py +0 -1
  1273. package/skills/pylabrobot/scripts/_common.py +0 -718
  1274. package/skills/pylabrobot/scripts/check_deck_geometry.py +0 -52
  1275. package/skills/pylabrobot/scripts/generate_simulation_plan.py +0 -140
  1276. package/skills/pylabrobot/scripts/inspect_backends.py +0 -216
  1277. package/skills/pylabrobot/scripts/plan_transfers.py +0 -59
  1278. package/skills/pylabrobot/scripts/validate_manifest.py +0 -47
  1279. package/skills/pymatgen/references/analysis_modules.md +0 -352
  1280. package/skills/pymatgen/references/core_classes.md +0 -290
  1281. package/skills/pymatgen/references/io_formats.md +0 -323
  1282. package/skills/pymatgen/references/materials_project_api.md +0 -406
  1283. package/skills/pymatgen/references/transformations_workflows.md +0 -385
  1284. package/skills/pymatgen/scripts/_common.py +0 -316
  1285. package/skills/pymatgen/scripts/artifact_manifest.py +0 -172
  1286. package/skills/pymatgen/scripts/composition_structure_validator.py +0 -300
  1287. package/skills/pymatgen/scripts/io_conversion_plan.py +0 -204
  1288. package/skills/pymatgen/scripts/mp_query.py +0 -416
  1289. package/skills/pymatgen/scripts/phase_diagram_generator.py +0 -415
  1290. package/skills/pymatgen/scripts/structure_analyzer.py +0 -293
  1291. package/skills/pymatgen/scripts/structure_converter.py +0 -219
  1292. package/skills/pymatgen/scripts/symmetry_sensitivity_report.py +0 -212
  1293. package/skills/pymc/assets/hierarchical_model_template.py +0 -332
  1294. package/skills/pymc/assets/linear_regression_template.py +0 -244
  1295. package/skills/pymc/references/distributions.md +0 -345
  1296. package/skills/pymc/references/model_patterns.md +0 -130
  1297. package/skills/pymc/references/sampling_inference.md +0 -432
  1298. package/skills/pymc/references/standard_workflow.md +0 -176
  1299. package/skills/pymc/references/workflows.md +0 -530
  1300. package/skills/pymc/scripts/model_comparison.py +0 -409
  1301. package/skills/pymc/scripts/model_diagnostics.py +0 -328
  1302. package/skills/pymoo/references/algorithms.md +0 -232
  1303. package/skills/pymoo/references/constraints_mcdm.md +0 -417
  1304. package/skills/pymoo/references/operators.md +0 -345
  1305. package/skills/pymoo/references/parallelization.md +0 -80
  1306. package/skills/pymoo/references/problems.md +0 -265
  1307. package/skills/pymoo/references/quick_start_workflows.md +0 -404
  1308. package/skills/pymoo/references/visualization.md +0 -353
  1309. package/skills/pymoo/scripts/custom_problem_example.py +0 -181
  1310. package/skills/pymoo/scripts/decision_making_example.py +0 -161
  1311. package/skills/pymoo/scripts/many_objective_example.py +0 -74
  1312. package/skills/pymoo/scripts/multi_objective_example.py +0 -63
  1313. package/skills/pymoo/scripts/single_objective_example.py +0 -59
  1314. package/skills/pyopenms/references/data_structures.md +0 -498
  1315. package/skills/pyopenms/references/feature_detection.md +0 -495
  1316. package/skills/pyopenms/references/file_io.md +0 -359
  1317. package/skills/pyopenms/references/identification.md +0 -431
  1318. package/skills/pyopenms/references/metabolomics.md +0 -548
  1319. package/skills/pyopenms/references/signal_processing.md +0 -444
  1320. package/skills/pyopenms/scripts/accurate_mass_search.py +0 -111
  1321. package/skills/pyopenms/scripts/align_link_quantify.py +0 -140
  1322. package/skills/pyopenms/scripts/consensus_to_matrix.py +0 -70
  1323. package/skills/pyopenms/scripts/convert_format.py +0 -95
  1324. package/skills/pyopenms/scripts/detect_adducts.py +0 -90
  1325. package/skills/pyopenms/scripts/detect_features_centroided.py +0 -80
  1326. package/skills/pyopenms/scripts/detect_features_metabo.py +0 -110
  1327. package/skills/pyopenms/scripts/digest_protein.py +0 -102
  1328. package/skills/pyopenms/scripts/export_gnps_sirius.py +0 -90
  1329. package/skills/pyopenms/scripts/extract_chromatograms.py +0 -105
  1330. package/skills/pyopenms/scripts/inspect_ms_data.py +0 -167
  1331. package/skills/pyopenms/scripts/mass_calculator.py +0 -92
  1332. package/skills/pyopenms/scripts/plot_ms_data.py +0 -129
  1333. package/skills/pyopenms/scripts/process_identifications.py +0 -111
  1334. package/skills/pyopenms/scripts/process_spectra.py +0 -124
  1335. package/skills/pyopenms/scripts/theoretical_spectrum.py +0 -75
  1336. package/skills/pysam/references/alignment_files.md +0 -374
  1337. package/skills/pysam/references/api_reference.md +0 -421
  1338. package/skills/pysam/references/common_workflows.md +0 -442
  1339. package/skills/pysam/references/coordinates_and_indexing.md +0 -318
  1340. package/skills/pysam/references/cram_and_performance.md +0 -314
  1341. package/skills/pysam/references/migration_to_0_24.md +0 -177
  1342. package/skills/pysam/references/sequence_files.md +0 -316
  1343. package/skills/pysam/references/sources.md +0 -132
  1344. package/skills/pysam/references/variant_files.md +0 -396
  1345. package/skills/pysam/scripts/alignment_qc.py +0 -326
  1346. package/skills/pysam/scripts/filter_alignments.py +0 -359
  1347. package/skills/pysam/scripts/inspect_hts.py +0 -485
  1348. package/skills/pysam/scripts/variant_summary.py +0 -362
  1349. package/skills/pytdc/references/datasets.md +0 -242
  1350. package/skills/pytdc/references/oracles.md +0 -273
  1351. package/skills/pytdc/references/sources.md +0 -165
  1352. package/skills/pytdc/references/utilities.md +0 -364
  1353. package/skills/pytdc/scripts/_common.py +0 -205
  1354. package/skills/pytdc/scripts/benchmark_evaluation.py +0 -367
  1355. package/skills/pytdc/scripts/cache_audit.py +0 -146
  1356. package/skills/pytdc/scripts/discover_metadata.py +0 -174
  1357. package/skills/pytdc/scripts/load_and_split_data.py +0 -374
  1358. package/skills/pytdc/scripts/molecular_generation.py +0 -417
  1359. package/skills/pytorch-lightning/references/best_practices.md +0 -724
  1360. package/skills/pytorch-lightning/references/callbacks.md +0 -564
  1361. package/skills/pytorch-lightning/references/data_module.md +0 -565
  1362. package/skills/pytorch-lightning/references/distributed_training.md +0 -644
  1363. package/skills/pytorch-lightning/references/lightning_module.md +0 -487
  1364. package/skills/pytorch-lightning/references/logging.md +0 -636
  1365. package/skills/pytorch-lightning/references/trainer.md +0 -641
  1366. package/skills/pytorch-lightning/scripts/quick_trainer_setup.py +0 -473
  1367. package/skills/pytorch-lightning/scripts/template_datamodule.py +0 -328
  1368. package/skills/pytorch-lightning/scripts/template_lightning_module.py +0 -220
  1369. package/skills/pyzotero/references/authentication.md +0 -105
  1370. package/skills/pyzotero/references/cli.md +0 -102
  1371. package/skills/pyzotero/references/collections.md +0 -113
  1372. package/skills/pyzotero/references/error-handling.md +0 -108
  1373. package/skills/pyzotero/references/exports.md +0 -102
  1374. package/skills/pyzotero/references/files-attachments.md +0 -97
  1375. package/skills/pyzotero/references/full-text.md +0 -68
  1376. package/skills/pyzotero/references/mcp.md +0 -90
  1377. package/skills/pyzotero/references/pagination.md +0 -79
  1378. package/skills/pyzotero/references/read-api.md +0 -137
  1379. package/skills/pyzotero/references/saved-searches.md +0 -77
  1380. package/skills/pyzotero/references/search-params.md +0 -90
  1381. package/skills/pyzotero/references/tags.md +0 -87
  1382. package/skills/pyzotero/references/write-api.md +0 -123
  1383. package/skills/qiskit/references/algorithms.md +0 -311
  1384. package/skills/qiskit/references/backends.md +0 -382
  1385. package/skills/qiskit/references/circuits.md +0 -319
  1386. package/skills/qiskit/references/migration.md +0 -338
  1387. package/skills/qiskit/references/patterns.md +0 -386
  1388. package/skills/qiskit/references/primitives.md +0 -400
  1389. package/skills/qiskit/references/setup.md +0 -253
  1390. package/skills/qiskit/references/sources.md +0 -156
  1391. package/skills/qiskit/references/testing.md +0 -428
  1392. package/skills/qiskit/references/transpilation.md +0 -333
  1393. package/skills/qiskit/references/visualization.md +0 -361
  1394. package/skills/qiskit/scripts/check_environment.py +0 -260
  1395. package/skills/qiskit/scripts/inspect_runtime.py +0 -224
  1396. package/skills/qiskit/scripts/run_local_primitives.py +0 -200
  1397. package/skills/qutip/references/advanced.md +0 -413
  1398. package/skills/qutip/references/analysis.md +0 -319
  1399. package/skills/qutip/references/core_concepts.md +0 -300
  1400. package/skills/qutip/references/time_evolution.md +0 -373
  1401. package/skills/qutip/references/visualization.md +0 -334
  1402. package/skills/qutip/scripts/_common.py +0 -370
  1403. package/skills/qutip/scripts/convergence_sweep.py +0 -358
  1404. package/skills/qutip/scripts/qobj_model_validator.py +0 -327
  1405. package/skills/qutip/scripts/result_audit.py +0 -395
  1406. package/skills/qutip/scripts/solver_config_planner.py +0 -297
  1407. package/skills/qutip/scripts/steady_state_spectrum_planner.py +0 -245
  1408. package/skills/qutip/scripts/two_level_simulation.py +0 -394
  1409. package/skills/rdkit/references/api_reference.md +0 -443
  1410. package/skills/rdkit/references/core_capabilities.md +0 -604
  1411. package/skills/rdkit/references/descriptors_reference.md +0 -595
  1412. package/skills/rdkit/references/smarts_patterns.md +0 -668
  1413. package/skills/rdkit/references/workflows_and_best_practices.md +0 -169
  1414. package/skills/rdkit/scripts/molecular_properties.py +0 -243
  1415. package/skills/rdkit/scripts/similarity_search.py +0 -297
  1416. package/skills/rdkit/scripts/substructure_filter.py +0 -386
  1417. package/skills/relsa-severity-assessment/assets/example_cohort.csv +0 -55
  1418. package/skills/relsa-severity-assessment/references/forecasting.md +0 -155
  1419. package/skills/relsa-severity-assessment/references/relsa-method.md +0 -175
  1420. package/skills/relsa-severity-assessment/references/thresholds-and-zones.md +0 -154
  1421. package/skills/relsa-severity-assessment/scripts/_common.py +0 -287
  1422. package/skills/relsa-severity-assessment/scripts/forecast_relsa.py +0 -757
  1423. package/skills/relsa-severity-assessment/scripts/kde_thresholds.py +0 -369
  1424. package/skills/relsa-severity-assessment/scripts/relsa_score.py +0 -488
  1425. package/skills/research-grants/assets/budget_justification_template.md +0 -453
  1426. package/skills/research-grants/assets/nih_specific_aims_template.md +0 -166
  1427. package/skills/research-grants/assets/nsf_project_summary_template.md +0 -92
  1428. package/skills/research-grants/references/broader_impacts.md +0 -392
  1429. package/skills/research-grants/references/core_components.md +0 -397
  1430. package/skills/research-grants/references/darpa_guidelines.md +0 -636
  1431. package/skills/research-grants/references/doe_guidelines.md +0 -586
  1432. package/skills/research-grants/references/nih_guidelines.md +0 -853
  1433. package/skills/research-grants/references/nsf_guidelines.md +0 -570
  1434. package/skills/research-grants/references/nstc_guidelines.md +0 -733
  1435. package/skills/research-grants/references/proposal_types_and_resubmission.md +0 -81
  1436. package/skills/research-grants/references/review_criteria.md +0 -93
  1437. package/skills/research-grants/references/specific_aims_guide.md +0 -458
  1438. package/skills/research-grants/references/writing_principles.md +0 -94
  1439. package/skills/research-lookup/scripts/manuscript_packet.py +0 -754
  1440. package/skills/research-lookup/scripts/research_lookup.py +0 -1204
  1441. package/skills/rowan/references/access_and_pricing.md +0 -37
  1442. package/skills/rowan/references/batch_and_webhooks.md +0 -255
  1443. package/skills/rowan/references/end_to_end_example.md +0 -119
  1444. package/skills/rowan/references/troubleshooting.md +0 -106
  1445. package/skills/rowan/references/workflow_catalog.md +0 -308
  1446. package/skills/scanpy/assets/analysis_template.py +0 -301
  1447. package/skills/scanpy/assets/celltype_mapping.json +0 -10
  1448. package/skills/scanpy/assets/gene_signatures.json +0 -9
  1449. package/skills/scanpy/assets/pipeline_config.json +0 -19
  1450. package/skills/scanpy/references/analysis_workflow.md +0 -236
  1451. package/skills/scanpy/references/api_reference.md +0 -267
  1452. package/skills/scanpy/references/plotting_guide.md +0 -365
  1453. package/skills/scanpy/references/r_interop.md +0 -292
  1454. package/skills/scanpy/references/standard_workflow.md +0 -223
  1455. package/skills/scanpy/scripts/_common.py +0 -127
  1456. package/skills/scanpy/scripts/annotate.py +0 -84
  1457. package/skills/scanpy/scripts/batch_correct.py +0 -65
  1458. package/skills/scanpy/scripts/cluster.py +0 -63
  1459. package/skills/scanpy/scripts/convert.py +0 -43
  1460. package/skills/scanpy/scripts/find_markers.py +0 -75
  1461. package/skills/scanpy/scripts/inspect_data.py +0 -81
  1462. package/skills/scanpy/scripts/plot.py +0 -78
  1463. package/skills/scanpy/scripts/preprocess.py +0 -88
  1464. package/skills/scanpy/scripts/pseudobulk.py +0 -74
  1465. package/skills/scanpy/scripts/qc_analysis.py +0 -104
  1466. package/skills/scanpy/scripts/reduce_dimensions.py +0 -64
  1467. package/skills/scanpy/scripts/run_pipeline.py +0 -182
  1468. package/skills/scanpy/scripts/score_genes.py +0 -82
  1469. package/skills/scanpy/scripts/subset.py +0 -64
  1470. package/skills/scholar-evaluation/assets/evaluation_template.json +0 -50
  1471. package/skills/scholar-evaluation/assets/evidence_manifest_template.json +0 -63
  1472. package/skills/scholar-evaluation/assets/process_checklist_template.json +0 -70
  1473. package/skills/scholar-evaluation/assets/ratings_template.csv +0 -21
  1474. package/skills/scholar-evaluation/assets/rubric_template.json +0 -301
  1475. package/skills/scholar-evaluation/references/evaluation_framework.md +0 -264
  1476. package/skills/scholar-evaluation/references/local_tooling.md +0 -232
  1477. package/skills/scholar-evaluation/references/responsible_assessment.md +0 -196
  1478. package/skills/scholar-evaluation/references/security_validation.md +0 -95
  1479. package/skills/scholar-evaluation/references/source_ledger.md +0 -222
  1480. package/skills/scholar-evaluation/scripts/_common.py +0 -986
  1481. package/skills/scholar-evaluation/scripts/calculate_scores.py +0 -57
  1482. package/skills/scholar-evaluation/scripts/check_process.py +0 -231
  1483. package/skills/scholar-evaluation/scripts/check_traceability.py +0 -233
  1484. package/skills/scholar-evaluation/scripts/generate_report_scaffold.py +0 -231
  1485. package/skills/scholar-evaluation/scripts/summarize_agreement.py +0 -235
  1486. package/skills/scholar-evaluation/scripts/validate_rubric.py +0 -54
  1487. package/skills/scholar-evaluation/scripts/weight_sensitivity.py +0 -251
  1488. package/skills/scientific-brainstorming/references/brainstorming_methods.md +0 -292
  1489. package/skills/scientific-brainstorming/references/facilitation_workflows.md +0 -284
  1490. package/skills/scientific-brainstorming/references/idea_evaluation.md +0 -268
  1491. package/skills/scientific-brainstorming/references/responsible_ai.md +0 -220
  1492. package/skills/scientific-brainstorming/references/sources.md +0 -364
  1493. package/skills/scientific-brainstorming/scripts/_common.py +0 -307
  1494. package/skills/scientific-brainstorming/scripts/evaluate_matrix.py +0 -518
  1495. package/skills/scientific-brainstorming/scripts/session_scaffold.py +0 -248
  1496. package/skills/scientific-brainstorming/scripts/validate_register.py +0 -654
  1497. package/skills/scientific-critical-thinking/references/common_biases.md +0 -364
  1498. package/skills/scientific-critical-thinking/references/core_capabilities.md +0 -407
  1499. package/skills/scientific-critical-thinking/references/evidence_hierarchy.md +0 -485
  1500. package/skills/scientific-critical-thinking/references/experimental_design.md +0 -496
  1501. package/skills/scientific-critical-thinking/references/logical_fallacies.md +0 -478
  1502. package/skills/scientific-critical-thinking/references/scientific_method.md +0 -169
  1503. package/skills/scientific-critical-thinking/references/statistical_pitfalls.md +0 -506
  1504. package/skills/scientific-schematics/references/best_practices.md +0 -574
  1505. package/skills/scientific-schematics/references/iterative_refinement.md +0 -315
  1506. package/skills/scientific-schematics/scripts/example_usage.sh +0 -92
  1507. package/skills/scientific-schematics/scripts/generate_schematic.py +0 -198
  1508. package/skills/scientific-schematics/scripts/generate_schematic_ai.py +0 -950
  1509. package/skills/scientific-slides/assets/beamer_template_conference.tex +0 -407
  1510. package/skills/scientific-slides/assets/beamer_template_defense.tex +0 -906
  1511. package/skills/scientific-slides/assets/beamer_template_seminar.tex +0 -870
  1512. package/skills/scientific-slides/assets/powerpoint_design_guide.md +0 -662
  1513. package/skills/scientific-slides/assets/timing_guidelines.md +0 -597
  1514. package/skills/scientific-slides/references/beamer_guide.md +0 -1019
  1515. package/skills/scientific-slides/references/common_pitfalls.md +0 -85
  1516. package/skills/scientific-slides/references/data_visualization_slides.md +0 -708
  1517. package/skills/scientific-slides/references/presentation_structure.md +0 -642
  1518. package/skills/scientific-slides/references/presentation_workflow.md +0 -196
  1519. package/skills/scientific-slides/references/prompt_writing.md +0 -42
  1520. package/skills/scientific-slides/references/script_reference.md +0 -143
  1521. package/skills/scientific-slides/references/slide_capabilities.md +0 -360
  1522. package/skills/scientific-slides/references/slide_design_principles.md +0 -849
  1523. package/skills/scientific-slides/references/talk_types_guide.md +0 -687
  1524. package/skills/scientific-slides/references/visual_review_workflow.md +0 -775
  1525. package/skills/scientific-slides/scripts/generate_schematic.py +0 -198
  1526. package/skills/scientific-slides/scripts/generate_schematic_ai.py +0 -950
  1527. package/skills/scientific-slides/scripts/generate_slide_image.py +0 -197
  1528. package/skills/scientific-slides/scripts/generate_slide_image_ai.py +0 -877
  1529. package/skills/scientific-slides/scripts/pdf_to_images.py +0 -221
  1530. package/skills/scientific-slides/scripts/slides_to_pdf.py +0 -235
  1531. package/skills/scientific-slides/scripts/validate_presentation.py +0 -408
  1532. package/skills/scientific-visualization/assets/color_palettes.py +0 -263
  1533. package/skills/scientific-visualization/assets/nature.mplstyle +0 -68
  1534. package/skills/scientific-visualization/assets/presentation.mplstyle +0 -68
  1535. package/skills/scientific-visualization/assets/publication.mplstyle +0 -77
  1536. package/skills/scientific-visualization/assets/publisher_profiles.json +0 -269
  1537. package/skills/scientific-visualization/references/color_palettes.md +0 -227
  1538. package/skills/scientific-visualization/references/journal_requirements.md +0 -169
  1539. package/skills/scientific-visualization/references/matplotlib_examples.md +0 -336
  1540. package/skills/scientific-visualization/references/publication_guidelines.md +0 -196
  1541. package/skills/scientific-visualization/references/sources.md +0 -76
  1542. package/skills/scientific-visualization/scripts/_common.py +0 -136
  1543. package/skills/scientific-visualization/scripts/export_plan.py +0 -493
  1544. package/skills/scientific-visualization/scripts/figure_export.py +0 -642
  1545. package/skills/scientific-visualization/scripts/image_metadata.py +0 -731
  1546. package/skills/scientific-visualization/scripts/palette_audit.py +0 -327
  1547. package/skills/scientific-visualization/scripts/style_presets.py +0 -501
  1548. package/skills/scientific-visualization/scripts/style_preview.py +0 -232
  1549. package/skills/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +0 -60
  1550. package/skills/scientific-writing/assets/authorship_template.json +0 -56
  1551. package/skills/scientific-writing/assets/claim_evidence_template.csv +0 -2
  1552. package/skills/scientific-writing/assets/consistency_manifest_template.json +0 -43
  1553. package/skills/scientific-writing/assets/manuscript_manifest_template.json +0 -37
  1554. package/skills/scientific-writing/assets/manuscript_scaffold.md +0 -65
  1555. package/skills/scientific-writing/assets/reporting_coverage_template.json +0 -6
  1556. package/skills/scientific-writing/assets/reporting_guidelines.json +0 -529
  1557. package/skills/scientific-writing/assets/source_manifest_template.json +0 -27
  1558. package/skills/scientific-writing/references/authorship_ai_confidentiality.md +0 -111
  1559. package/skills/scientific-writing/references/citation_styles.md +0 -92
  1560. package/skills/scientific-writing/references/cli_reference.md +0 -113
  1561. package/skills/scientific-writing/references/evidence_workflow.md +0 -94
  1562. package/skills/scientific-writing/references/figures_tables.md +0 -94
  1563. package/skills/scientific-writing/references/imrad_structure.md +0 -114
  1564. package/skills/scientific-writing/references/journal_policies.md +0 -56
  1565. package/skills/scientific-writing/references/professional_report_formatting.md +0 -82
  1566. package/skills/scientific-writing/references/reporting_guidelines.md +0 -107
  1567. package/skills/scientific-writing/references/research_integrity_open_science.md +0 -97
  1568. package/skills/scientific-writing/references/source_ledger.md +0 -268
  1569. package/skills/scientific-writing/references/writing_principles.md +0 -97
  1570. package/skills/scientific-writing/scripts/_common.py +0 -240
  1571. package/skills/scientific-writing/scripts/audit_claims.py +0 -241
  1572. package/skills/scientific-writing/scripts/check_consistency.py +0 -408
  1573. package/skills/scientific-writing/scripts/check_references.py +0 -219
  1574. package/skills/scientific-writing/scripts/lint_manuscript.py +0 -171
  1575. package/skills/scientific-writing/scripts/scaffold_manuscript.py +0 -143
  1576. package/skills/scientific-writing/scripts/select_reporting_guidelines.py +0 -214
  1577. package/skills/scientific-writing/scripts/validate_authorship.py +0 -322
  1578. package/skills/scientific-writing/scripts/validate_manifest.py +0 -460
  1579. package/skills/scikit-bio/references/api_reference.md +0 -766
  1580. package/skills/scikit-learn/references/common_workflows.md +0 -107
  1581. package/skills/scikit-learn/references/core_capabilities.md +0 -133
  1582. package/skills/scikit-learn/references/model_evaluation.md +0 -592
  1583. package/skills/scikit-learn/references/pipelines_and_composition.md +0 -612
  1584. package/skills/scikit-learn/references/preprocessing.md +0 -606
  1585. package/skills/scikit-learn/references/quick_reference.md +0 -436
  1586. package/skills/scikit-learn/references/supervised_learning.md +0 -379
  1587. package/skills/scikit-learn/references/unsupervised_learning.md +0 -517
  1588. package/skills/scikit-learn/scripts/classification_pipeline.py +0 -257
  1589. package/skills/scikit-learn/scripts/clustering_analysis.py +0 -386
  1590. package/skills/scikit-survival/references/competing-risks.md +0 -302
  1591. package/skills/scikit-survival/references/cox-models.md +0 -252
  1592. package/skills/scikit-survival/references/data-handling.md +0 -278
  1593. package/skills/scikit-survival/references/ensemble-models.md +0 -287
  1594. package/skills/scikit-survival/references/evaluation-metrics.md +0 -391
  1595. package/skills/scikit-survival/references/svm-models.md +0 -277
  1596. package/skills/scikit-survival/scripts/_common.py +0 -456
  1597. package/skills/scikit-survival/scripts/competing_risk_cif.py +0 -286
  1598. package/skills/scikit-survival/scripts/evaluate_survival_metrics.py +0 -296
  1599. package/skills/scikit-survival/scripts/model_report.py +0 -297
  1600. package/skills/scikit-survival/scripts/train_survival_model.py +0 -583
  1601. package/skills/scikit-survival/scripts/validate_survival_csv.py +0 -172
  1602. package/skills/scvelo/references/velocity_models.md +0 -168
  1603. package/skills/scvelo/scripts/rna_velocity_workflow.py +0 -240
  1604. package/skills/scvi-tools/references/differential-expression.md +0 -597
  1605. package/skills/scvi-tools/references/models-atac-seq.md +0 -329
  1606. package/skills/scvi-tools/references/models-multimodal.md +0 -400
  1607. package/skills/scvi-tools/references/models-scrna-seq.md +0 -333
  1608. package/skills/scvi-tools/references/models-spatial.md +0 -432
  1609. package/skills/scvi-tools/references/models-specialized.md +0 -376
  1610. package/skills/scvi-tools/references/theoretical-foundations.md +0 -438
  1611. package/skills/scvi-tools/references/workflows.md +0 -559
  1612. package/skills/seaborn/references/examples.md +0 -824
  1613. package/skills/seaborn/references/function_reference.md +0 -772
  1614. package/skills/seaborn/references/grids_and_levels.md +0 -85
  1615. package/skills/seaborn/references/objects_interface.md +0 -963
  1616. package/skills/seaborn/references/palettes_and_theming.md +0 -110
  1617. package/skills/seaborn/references/patterns_and_troubleshooting.md +0 -114
  1618. package/skills/seaborn/references/plotting_functions.md +0 -178
  1619. package/skills/shap/references/data-maskers.md +0 -287
  1620. package/skills/shap/references/explainers.md +0 -376
  1621. package/skills/shap/references/migration.md +0 -415
  1622. package/skills/shap/references/modalities.md +0 -353
  1623. package/skills/shap/references/plots.md +0 -406
  1624. package/skills/shap/references/theory.md +0 -352
  1625. package/skills/shap/references/troubleshooting.md +0 -442
  1626. package/skills/shap/references/workflows.md +0 -565
  1627. package/skills/shap/scripts/tabular_report.py +0 -326
  1628. package/skills/simpy/references/cli-guide.md +0 -266
  1629. package/skills/simpy/references/events.md +0 -225
  1630. package/skills/simpy/references/monitoring.md +0 -260
  1631. package/skills/simpy/references/process-interaction.md +0 -269
  1632. package/skills/simpy/references/real-time.md +0 -174
  1633. package/skills/simpy/references/resources.md +0 -274
  1634. package/skills/simpy/references/simulation-methodology.md +0 -293
  1635. package/skills/simpy/references/sources.md +0 -167
  1636. package/skills/simpy/scripts/_common.py +0 -473
  1637. package/skills/simpy/scripts/basic_simulation_template.py +0 -415
  1638. package/skills/simpy/scripts/bounded_queue_scenario.py +0 -126
  1639. package/skills/simpy/scripts/event_trace_summary.py +0 -296
  1640. package/skills/simpy/scripts/replication_runner.py +0 -194
  1641. package/skills/simpy/scripts/resource_monitor.py +0 -474
  1642. package/skills/simpy/scripts/validate_simulation_config.py +0 -111
  1643. package/skills/stable-baselines3/references/algorithms.md +0 -348
  1644. package/skills/stable-baselines3/references/callbacks.md +0 -571
  1645. package/skills/stable-baselines3/references/custom_environments.md +0 -528
  1646. package/skills/stable-baselines3/references/vectorized_envs.md +0 -580
  1647. package/skills/stable-baselines3/scripts/custom_env_template.py +0 -314
  1648. package/skills/stable-baselines3/scripts/evaluate_agent.py +0 -245
  1649. package/skills/stable-baselines3/scripts/train_rl_agent.py +0 -165
  1650. package/skills/statistical-analysis/references/assumptions_and_diagnostics.md +0 -379
  1651. package/skills/statistical-analysis/references/bayesian_statistics.md +0 -686
  1652. package/skills/statistical-analysis/references/effect_sizes_and_power.md +0 -649
  1653. package/skills/statistical-analysis/references/reporting_standards.md +0 -482
  1654. package/skills/statistical-analysis/references/test_selection_guide.md +0 -129
  1655. package/skills/statistical-analysis/scripts/assumption_checks.py +0 -652
  1656. package/skills/statistical-power/references/closed_form_recipes.md +0 -174
  1657. package/skills/statistical-power/references/effect_sizes.md +0 -121
  1658. package/skills/statistical-power/references/simulation_based_power.md +0 -101
  1659. package/skills/statistical-power/scripts/power.py +0 -320
  1660. package/skills/statistical-power/scripts/simulate_power.py +0 -217
  1661. package/skills/statsmodels/references/discrete_choice.md +0 -669
  1662. package/skills/statsmodels/references/glm.md +0 -619
  1663. package/skills/statsmodels/references/linear_models.md +0 -447
  1664. package/skills/statsmodels/references/model_selection.md +0 -99
  1665. package/skills/statsmodels/references/modeling_capabilities.md +0 -168
  1666. package/skills/statsmodels/references/quick_start_guide.md +0 -154
  1667. package/skills/statsmodels/references/stats_diagnostics.md +0 -859
  1668. package/skills/statsmodels/references/time_series.md +0 -723
  1669. package/skills/sympy/references/advanced-topics.md +0 -635
  1670. package/skills/sympy/references/code-generation-printing.md +0 -628
  1671. package/skills/sympy/references/core-capabilities.md +0 -348
  1672. package/skills/sympy/references/core_capabilities.md +0 -190
  1673. package/skills/sympy/references/matrices-linear-algebra.md +0 -526
  1674. package/skills/sympy/references/physics-mechanics.md +0 -592
  1675. package/skills/tamarind/references/api_reference.md +0 -165
  1676. package/skills/tamarind/references/examples.md +0 -132
  1677. package/skills/tamarind/references/tool_catalog.md +0 -66
  1678. package/skills/tamarind/references/workflows.md +0 -263
  1679. package/skills/timesfm-forecasting/examples/anomaly-detection/detect_anomalies.py +0 -524
  1680. package/skills/timesfm-forecasting/examples/anomaly-detection/output/anomaly_detection.json +0 -448
  1681. package/skills/timesfm-forecasting/examples/anomaly-detection/output/anomaly_detection.png +0 -0
  1682. package/skills/timesfm-forecasting/examples/covariates-forecasting/demo_covariates.py +0 -568
  1683. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/covariates_data.png +0 -0
  1684. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/covariates_metadata.json +0 -59
  1685. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/sales_with_covariates.csv +0 -109
  1686. package/skills/timesfm-forecasting/examples/global-temperature/generate_animation_data.py +0 -147
  1687. package/skills/timesfm-forecasting/examples/global-temperature/generate_gif.py +0 -248
  1688. package/skills/timesfm-forecasting/examples/global-temperature/generate_html.py +0 -544
  1689. package/skills/timesfm-forecasting/examples/global-temperature/output/animation_data.json +0 -5441
  1690. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_animation.gif +0 -0
  1691. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_output.csv +0 -13
  1692. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_output.json +0 -188
  1693. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_visualization.png +0 -0
  1694. package/skills/timesfm-forecasting/examples/global-temperature/output/interactive_forecast.html +0 -5939
  1695. package/skills/timesfm-forecasting/examples/global-temperature/run_example.sh +0 -53
  1696. package/skills/timesfm-forecasting/examples/global-temperature/run_forecast.py +0 -167
  1697. package/skills/timesfm-forecasting/examples/global-temperature/temperature_anomaly.csv +0 -37
  1698. package/skills/timesfm-forecasting/examples/global-temperature/visualize_forecast.py +0 -123
  1699. package/skills/timesfm-forecasting/references/api_reference.md +0 -231
  1700. package/skills/timesfm-forecasting/references/data_preparation.md +0 -272
  1701. package/skills/timesfm-forecasting/references/examples_and_validation.md +0 -103
  1702. package/skills/timesfm-forecasting/references/output_and_config.md +0 -93
  1703. package/skills/timesfm-forecasting/references/performance_tuning.md +0 -80
  1704. package/skills/timesfm-forecasting/references/system_requirements.md +0 -201
  1705. package/skills/timesfm-forecasting/references/workflows.md +0 -126
  1706. package/skills/timesfm-forecasting/scripts/check_system.py +0 -521
  1707. package/skills/timesfm-forecasting/scripts/forecast_csv.py +0 -269
  1708. package/skills/torch-geometric/references/custom_datasets.md +0 -239
  1709. package/skills/torch-geometric/references/explainability.md +0 -208
  1710. package/skills/torch-geometric/references/heterogeneous.md +0 -241
  1711. package/skills/torch-geometric/references/link_prediction.md +0 -226
  1712. package/skills/torch-geometric/references/message_passing.md +0 -121
  1713. package/skills/torch-geometric/references/scaling.md +0 -269
  1714. package/skills/torchdrug/references/core_concepts.md +0 -241
  1715. package/skills/torchdrug/references/datasets.md +0 -179
  1716. package/skills/torchdrug/references/knowledge_graphs.md +0 -226
  1717. package/skills/torchdrug/references/models_architectures.md +0 -223
  1718. package/skills/torchdrug/references/molecular_generation.md +0 -246
  1719. package/skills/torchdrug/references/molecular_property_prediction.md +0 -239
  1720. package/skills/torchdrug/references/protein_modeling.md +0 -221
  1721. package/skills/torchdrug/references/retrosynthesis.md +0 -247
  1722. package/skills/transformers/references/generation.md +0 -473
  1723. package/skills/transformers/references/models.md +0 -371
  1724. package/skills/transformers/references/pipelines.md +0 -334
  1725. package/skills/transformers/references/tokenizers.md +0 -449
  1726. package/skills/transformers/references/training.md +0 -504
  1727. package/skills/treatment-plans/assets/clinician_authored_intervention_template.json +0 -11
  1728. package/skills/treatment-plans/assets/goals_monitoring_checkpoint_template.json +0 -13
  1729. package/skills/treatment-plans/assets/informed_preference_shared_decision_template.json +0 -11
  1730. package/skills/treatment-plans/assets/intended_use_handoff_template.json +0 -83
  1731. package/skills/treatment-plans/assets/source_fact_manifest_template.json +0 -11
  1732. package/skills/treatment-plans/assets/transition_reconciliation_template.json +0 -27
  1733. package/skills/treatment-plans/references/documentation_workflow.md +0 -165
  1734. package/skills/treatment-plans/references/privacy_governance.md +0 -119
  1735. package/skills/treatment-plans/references/safety_scope.md +0 -101
  1736. package/skills/treatment-plans/references/security_validation.md +0 -68
  1737. package/skills/treatment-plans/references/shared_decision_handoff.md +0 -138
  1738. package/skills/treatment-plans/references/source_boundaries.md +0 -127
  1739. package/skills/treatment-plans/references/source_ledger.md +0 -131
  1740. package/skills/treatment-plans/scripts/_common.py +0 -1160
  1741. package/skills/treatment-plans/scripts/check_completeness.py +0 -572
  1742. package/skills/treatment-plans/scripts/check_consistency.py +0 -386
  1743. package/skills/treatment-plans/scripts/generate_template.py +0 -133
  1744. package/skills/treatment-plans/scripts/privacy_process_check.py +0 -213
  1745. package/skills/treatment-plans/scripts/timeline_generator.py +0 -260
  1746. package/skills/treatment-plans/scripts/validate_traceability.py +0 -147
  1747. package/skills/treatment-plans/scripts/validate_treatment_plan.py +0 -95
  1748. package/skills/umap-learn/references/api_reference.md +0 -574
  1749. package/skills/uncertainty-and-units/references/domain-conversions.md +0 -188
  1750. package/skills/uncertainty-and-units/references/gum-methodology.md +0 -219
  1751. package/skills/uncertainty-and-units/references/pint-recipes.md +0 -228
  1752. package/skills/uncertainty-and-units/references/plausibility-scales.md +0 -168
  1753. package/skills/uncertainty-and-units/references/reporting-rules.md +0 -133
  1754. package/skills/uncertainty-and-units/references/uncertainties-recipes.md +0 -167
  1755. package/skills/uncertainty-and-units/scripts/_common.py +0 -666
  1756. package/skills/uncertainty-and-units/scripts/audit_units.py +0 -575
  1757. package/skills/uncertainty-and-units/scripts/check_plausibility.py +0 -894
  1758. package/skills/uncertainty-and-units/scripts/convert_units.py +0 -280
  1759. package/skills/uncertainty-and-units/scripts/format_result.py +0 -326
  1760. package/skills/uncertainty-and-units/scripts/propagate_uncertainty.py +0 -662
  1761. package/skills/uncertainty-and-units/scripts/uncertainty_budget.py +0 -363
  1762. package/skills/usfiscaldata/references/api-basics.md +0 -105
  1763. package/skills/usfiscaldata/references/datasets-debt.md +0 -166
  1764. package/skills/usfiscaldata/references/datasets-fiscal.md +0 -212
  1765. package/skills/usfiscaldata/references/datasets-interest-rates.md +0 -188
  1766. package/skills/usfiscaldata/references/datasets-securities.md +0 -238
  1767. package/skills/usfiscaldata/references/examples.md +0 -258
  1768. package/skills/usfiscaldata/references/parameters.md +0 -182
  1769. package/skills/usfiscaldata/references/response-format.md +0 -178
  1770. package/skills/vaex/references/core_dataframes.md +0 -373
  1771. package/skills/vaex/references/data_processing.md +0 -555
  1772. package/skills/vaex/references/io_operations.md +0 -718
  1773. package/skills/vaex/references/machine_learning.md +0 -728
  1774. package/skills/vaex/references/performance.md +0 -571
  1775. package/skills/vaex/references/visualization.md +0 -644
  1776. package/skills/venue-templates/assets/examples/cell_summary_example.md +0 -247
  1777. package/skills/venue-templates/assets/examples/medical_structured_abstract.md +0 -313
  1778. package/skills/venue-templates/assets/examples/nature_abstract_examples.md +0 -213
  1779. package/skills/venue-templates/assets/examples/neurips_introduction_example.md +0 -245
  1780. package/skills/venue-templates/assets/grants/nih_specific_aims.tex +0 -237
  1781. package/skills/venue-templates/assets/grants/nsf_proposal_template.tex +0 -384
  1782. package/skills/venue-templates/assets/journals/elsarticle-harv.bst +0 -1598
  1783. package/skills/venue-templates/assets/journals/elsarticle-num-names.bst +0 -1535
  1784. package/skills/venue-templates/assets/journals/elsarticle-num.bst +0 -1509
  1785. package/skills/venue-templates/assets/journals/elsarticle-template-harv.tex +0 -286
  1786. package/skills/venue-templates/assets/journals/elsarticle-template-num-names.tex +0 -284
  1787. package/skills/venue-templates/assets/journals/elsarticle-template-num.tex +0 -286
  1788. package/skills/venue-templates/assets/journals/nature_article.tex +0 -174
  1789. package/skills/venue-templates/assets/journals/neurips_article.tex +0 -292
  1790. package/skills/venue-templates/assets/journals/plos_one.tex +0 -320
  1791. package/skills/venue-templates/assets/posters/beamerposter_academic.tex +0 -312
  1792. package/skills/venue-templates/references/cell_press_style.md +0 -486
  1793. package/skills/venue-templates/references/conferences_formatting.md +0 -175
  1794. package/skills/venue-templates/references/cs_conference_style.md +0 -465
  1795. package/skills/venue-templates/references/grants_requirements.md +0 -267
  1796. package/skills/venue-templates/references/journals_formatting.md +0 -200
  1797. package/skills/venue-templates/references/medical_journal_styles.md +0 -536
  1798. package/skills/venue-templates/references/ml_conference_style.md +0 -562
  1799. package/skills/venue-templates/references/nature_science_style.md +0 -407
  1800. package/skills/venue-templates/references/posters_guidelines.md +0 -630
  1801. package/skills/venue-templates/references/reviewer_expectations.md +0 -422
  1802. package/skills/venue-templates/references/venue_writing_styles.md +0 -323
  1803. package/skills/venue-templates/scripts/customize_template.py +0 -206
  1804. package/skills/venue-templates/scripts/query_template.py +0 -202
  1805. package/skills/venue-templates/scripts/validate_format.py +0 -321
  1806. package/skills/waypoint-bio/references/cli-reference.md +0 -210
  1807. package/skills/waypoint-bio/references/compass-benchmark.md +0 -124
  1808. package/skills/waypoint-bio/references/data-preparation.md +0 -200
  1809. package/skills/waypoint-bio/references/python-api.md +0 -219
  1810. package/skills/waypoint-bio/scripts/profiler_to_waypoint.py +0 -481
  1811. package/skills/waypoint-bio/scripts/vocab_coverage.py +0 -235
  1812. package/skills/what-if-oracle/references/scenario-templates.md +0 -137
  1813. package/skills/xlsx/LICENSE.txt +0 -30
  1814. package/skills/xlsx/scripts/office/helpers/__init__.py +0 -111
  1815. package/skills/xlsx/scripts/office/helpers/pptx_chart.py +0 -170
  1816. package/skills/xlsx/scripts/office/helpers/pptx_slide.py +0 -60
  1817. package/skills/xlsx/scripts/office/helpers/pptx_theme.py +0 -114
  1818. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  1819. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  1820. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  1821. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  1822. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  1823. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  1824. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  1825. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  1826. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  1827. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  1828. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  1829. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  1830. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  1831. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  1832. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  1833. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  1834. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  1835. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  1836. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  1837. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  1838. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  1839. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  1840. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  1841. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  1842. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  1843. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  1844. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  1845. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  1846. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  1847. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  1848. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  1849. package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
  1850. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  1851. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  1852. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  1853. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  1854. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  1855. package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  1856. package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  1857. package/skills/xlsx/scripts/office/soffice.py +0 -232
  1858. package/skills/xlsx/scripts/office/validate.py +0 -173
  1859. package/skills/xlsx/scripts/office/validators/__init__.py +0 -15
  1860. package/skills/xlsx/scripts/office/validators/base.py +0 -875
  1861. package/skills/xlsx/scripts/office/validators/docx.py +0 -466
  1862. package/skills/xlsx/scripts/office/validators/pptx.py +0 -441
  1863. package/skills/xlsx/scripts/office/validators/redlining.py +0 -299
  1864. package/skills/xlsx/scripts/recalc.py +0 -308
  1865. package/skills/zarr-python/references/api_reference.md +0 -162
  1866. package/skills/zarr-python/references/chunking_and_compression.md +0 -138
  1867. package/skills/zarr-python/references/integration.md +0 -147
  1868. package/skills/zarr-python/references/performance_and_patterns.md +0 -198
  1869. package/skills/zarr-python/references/storage_backends.md +0 -91
  1870. package/skills/zarr-python/references/v3_migration.md +0 -127
package/dist/cli.js CHANGED
@@ -2,8 +2,8 @@
2
2
  // @bun
3
3
 
4
4
  // src/cli/index.ts
5
- import { resolve as resolve23 } from "path";
6
- import { existsSync as existsSync21 } from "fs";
5
+ import { resolve as resolve22 } from "path";
6
+ import { existsSync as existsSync20 } from "fs";
7
7
  import { createInterface } from "readline";
8
8
 
9
9
  // src/auth/store.ts
@@ -21,11 +21,32 @@ class CredentialsStore {
21
21
  return null;
22
22
  try {
23
23
  const raw = readFileSync(this.filePath, "utf8");
24
- return JSON.parse(raw);
24
+ const creds = JSON.parse(raw);
25
+ if (creds && creds.idToken && (!creds.user || !creds.user.username)) {
26
+ try {
27
+ const parts = creds.idToken.split(".");
28
+ if (parts[1]) {
29
+ const payload = JSON.parse(Buffer.from(parts[1], "base64").toString("utf8"));
30
+ creds.user = {
31
+ ...creds.user,
32
+ id: creds.user?.id || payload.sub,
33
+ email: creds.user?.email || payload.email || payload["https://api.openai.com/profile"]?.email,
34
+ username: creds.user?.username || payload.preferred_username || payload.username || payload.name || (payload.email ? payload.email.split("@")[0] : undefined),
35
+ role: creds.user?.role || payload.role,
36
+ plan: creds.user?.plan || payload["https://api.openai.com/auth"]?.chatgpt_plan_type || payload.plan || payload.tier
37
+ };
38
+ }
39
+ } catch {}
40
+ }
41
+ return creds;
25
42
  } catch {
26
43
  return null;
27
44
  }
28
45
  }
46
+ getUser() {
47
+ const creds = this.load();
48
+ return creds?.user;
49
+ }
29
50
  save(credentials) {
30
51
  const dir = resolve(this.filePath, "..");
31
52
  if (!existsSync(dir)) {
@@ -52,6 +73,16 @@ class CredentialsStore {
52
73
  const creds = this.load();
53
74
  return creds?.baseUrl;
54
75
  }
76
+ getDefaultModel() {
77
+ const creds = this.load();
78
+ return creds?.defaultModel || creds?.model;
79
+ }
80
+ setDefaultModel(model) {
81
+ const existing = this.load() || { accessToken: "" };
82
+ existing.defaultModel = model;
83
+ existing.model = model;
84
+ this.save(existing);
85
+ }
55
86
  }
56
87
 
57
88
  // src/client/model-client.ts
@@ -114,7 +145,7 @@ class DefaultModelClientSession {
114
145
  if (toolCalls.length > 0) {
115
146
  messages.push({
116
147
  role: "assistant",
117
- content: null,
148
+ content: cleanedContent || null,
118
149
  tool_calls: toolCalls
119
150
  });
120
151
  i = j - 1;
@@ -270,6 +301,8 @@ class DefaultModelClientSession {
270
301
  const dataStr = trimmed.slice(6);
271
302
  if (dataStr === "[DONE]") {
272
303
  for (const tc of pendingToolCalls.values()) {
304
+ if (!tc.name || !tc.name.trim())
305
+ continue;
273
306
  let parsedArgs = {};
274
307
  try {
275
308
  parsedArgs = JSON.parse(tc.arguments);
@@ -384,6 +417,8 @@ class DefaultModelClientSession {
384
417
  }
385
418
  }
386
419
  for (const tc of pendingToolCalls.values()) {
420
+ if (!tc.name || !tc.name.trim())
421
+ continue;
387
422
  let parsedArgs = {};
388
423
  try {
389
424
  parsedArgs = JSON.parse(tc.arguments);
@@ -912,6 +947,8 @@ async function runTurn(session, turnContext, input) {
912
947
  }
913
948
  if (toolCallRequests.length > 0) {
914
949
  for (const toolCall of toolCallRequests) {
950
+ if (!toolCall.name || !toolCall.name.trim())
951
+ continue;
915
952
  const functionCallItem = {
916
953
  id: `call_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`,
917
954
  type: "function_call",
@@ -4629,6 +4666,13 @@ class SessionPersistenceManager {
4629
4666
  this.bindSession(session, restored.thread.role);
4630
4667
  return session;
4631
4668
  }
4669
+ loadSession(threadId) {
4670
+ try {
4671
+ return this.store.restoreSession(threadId);
4672
+ } catch {
4673
+ return null;
4674
+ }
4675
+ }
4632
4676
  listSessions(options) {
4633
4677
  return this.store.listThreads(options);
4634
4678
  }
@@ -4657,6 +4701,7 @@ class SkillsLoader {
4657
4701
  includeGlobal;
4658
4702
  includeBuiltIn;
4659
4703
  disabledSkills;
4704
+ skillsCache = new Map;
4660
4705
  constructor(optionsOrRoots = {}) {
4661
4706
  if (Array.isArray(optionsOrRoots)) {
4662
4707
  this.customRoots = optionsOrRoots;
@@ -4673,17 +4718,24 @@ class SkillsLoader {
4673
4718
  ]);
4674
4719
  }
4675
4720
  }
4721
+ clearCache() {
4722
+ this.skillsCache.clear();
4723
+ }
4676
4724
  disableSkill(name) {
4677
4725
  const key = name.trim().toLowerCase();
4678
4726
  this.disabledSkills.add(key);
4727
+ this.clearCache();
4679
4728
  return true;
4680
4729
  }
4681
4730
  enableSkill(name) {
4682
4731
  const key = name.trim().toLowerCase();
4683
- return this.disabledSkills.delete(key);
4732
+ const res = this.disabledSkills.delete(key);
4733
+ this.clearCache();
4734
+ return res;
4684
4735
  }
4685
4736
  toggleSkill(name) {
4686
4737
  const key = name.trim().toLowerCase();
4738
+ this.clearCache();
4687
4739
  if (this.disabledSkills.has(key)) {
4688
4740
  this.disabledSkills.delete(key);
4689
4741
  return true;
@@ -4700,6 +4752,7 @@ class SkillsLoader {
4700
4752
  }
4701
4753
  setBuiltInEnabled(enabled) {
4702
4754
  this.includeBuiltIn = enabled;
4755
+ this.clearCache();
4703
4756
  }
4704
4757
  getDiscoveryRoots(cwd) {
4705
4758
  const roots = [resolve13(cwd, ".agents", "skills")];
@@ -4725,6 +4778,12 @@ class SkillsLoader {
4725
4778
  return this.listSkills(cwd, options);
4726
4779
  }
4727
4780
  listSkills(cwd, options) {
4781
+ const cacheKey = `${cwd}:${options?.includeDisabled ?? false}`;
4782
+ const cached = this.skillsCache.get(cacheKey);
4783
+ const now = Date.now();
4784
+ if (cached && now - cached.timestamp < 30000) {
4785
+ return cached.skills;
4786
+ }
4728
4787
  const roots = this.getDiscoveryRoots(cwd);
4729
4788
  const discovered = new Map;
4730
4789
  for (const root of roots) {
@@ -4747,7 +4806,9 @@ class SkillsLoader {
4747
4806
  }
4748
4807
  } catch {}
4749
4808
  }
4750
- return Array.from(discovered.values());
4809
+ const result = Array.from(discovered.values());
4810
+ this.skillsCache.set(cacheKey, { timestamp: now, skills: result });
4811
+ return result;
4751
4812
  }
4752
4813
  loadSkill(cwd, skillName) {
4753
4814
  if (this.isSkillDisabled(skillName)) {
@@ -4771,20 +4832,32 @@ class SkillsLoader {
4771
4832
  return null;
4772
4833
  }
4773
4834
  }
4774
- parseSkillFrontmatter(filePath, fallbackName, rootDir, cwd) {
4835
+ parseSkillFrontmatter(filePath, dirName, root, cwd) {
4775
4836
  try {
4776
4837
  const raw = readFileSync9(filePath, "utf8");
4777
4838
  const { attributes } = this.extractFrontmatterAndBody(raw);
4778
- const isWorkspace = filePath.startsWith(resolve13(cwd, ".agents"));
4779
- const isBuiltIn = filePath.includes(join6("groupy", "skills")) || rootDir.endsWith("skills") || attributes.source === "built-in";
4780
- const scope = isWorkspace ? "workspace" : isBuiltIn ? "built-in" : "global";
4839
+ let scope = "global";
4840
+ const normPath = filePath.toLowerCase().replace(/\\/g, "/");
4841
+ const normCwd = cwd.toLowerCase().replace(/\\/g, "/");
4842
+ const normRoot = root.toLowerCase().replace(/\\/g, "/");
4843
+ if (normRoot.includes(".agents") || normRoot === `${normCwd}/skills` || normPath.startsWith(normCwd) || this.customRoots.some((r) => normPath.startsWith(resolve13(r).toLowerCase().replace(/\\/g, "/")))) {
4844
+ scope = "workspace";
4845
+ } else if (normRoot.includes("groupy") && (normRoot.endsWith("skills") || normRoot.includes("plugins"))) {
4846
+ scope = "built-in";
4847
+ }
4848
+ const name = attributes["name"] || dirName;
4849
+ const description = attributes["description"] || "Autonomous agent skill";
4850
+ const shortDescription = attributes["short-description"] || attributes["summary"];
4781
4851
  return {
4782
- name: attributes.name || fallbackName,
4783
- description: attributes.description || "Specialized skill workflow.",
4784
- shortDescription: attributes.short_description || attributes.shortDescription,
4852
+ name,
4853
+ description,
4854
+ shortDescription,
4785
4855
  path: filePath,
4786
- rootDir,
4787
- scope
4856
+ rootDir: root,
4857
+ dirPath: resolve13(filePath, ".."),
4858
+ scope,
4859
+ enabled: true,
4860
+ tags: attributes["tags"] ? attributes["tags"].split(",").map((t) => t.trim()) : undefined
4788
4861
  };
4789
4862
  } catch {
4790
4863
  return null;
@@ -4793,17 +4866,20 @@ class SkillsLoader {
4793
4866
  extractFrontmatterAndBody(raw) {
4794
4867
  const attributes = {};
4795
4868
  let body = raw;
4796
- const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
4797
- if (match) {
4798
- const frontmatterText = match[1] || "";
4799
- body = match[2] || "";
4800
- for (const line of frontmatterText.split(`
4801
- `)) {
4802
- const trimmed = line.trim();
4803
- if (!trimmed || trimmed.startsWith("#"))
4804
- continue;
4805
- const colonIdx = trimmed.indexOf(":");
4806
- if (colonIdx > 0) {
4869
+ if (raw.startsWith("---")) {
4870
+ const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
4871
+ if (match) {
4872
+ const yamlContent = match[1] ?? "";
4873
+ body = match[2] ?? "";
4874
+ const lines = yamlContent.split(`
4875
+ `);
4876
+ for (const line of lines) {
4877
+ const trimmed = line.trim();
4878
+ if (!trimmed || trimmed.startsWith("#"))
4879
+ continue;
4880
+ const colonIdx = trimmed.indexOf(":");
4881
+ if (colonIdx === -1)
4882
+ continue;
4807
4883
  const key = trimmed.slice(0, colonIdx).trim();
4808
4884
  let val = trimmed.slice(colonIdx + 1).trim();
4809
4885
  if (val.startsWith('"') && val.endsWith('"') || val.startsWith("'") && val.endsWith("'")) {
@@ -4819,22 +4895,23 @@ class SkillsLoader {
4819
4895
  const skills = this.listSkills(cwd, { includeDisabled: false });
4820
4896
  if (skills.length === 0)
4821
4897
  return "";
4822
- const prioritySkills = skills.filter((s) => s.scope === "workspace" || s.scope === "built-in");
4898
+ const workspaceSkills = skills.filter((s) => s.scope === "workspace");
4899
+ const builtInSkills = skills.filter((s) => s.scope === "built-in");
4823
4900
  const otherSkills = skills.filter((s) => s.scope !== "workspace" && s.scope !== "built-in");
4824
- const selectedSkills = [...prioritySkills, ...otherSkills].slice(0, 250);
4901
+ const selectedSkills = [...workspaceSkills, ...builtInSkills, ...otherSkills].slice(0, 150);
4825
4902
  const lines = selectedSkills.map((s) => {
4826
4903
  const desc = s.shortDescription || s.description;
4827
4904
  return `- **${s.name}**: ${desc}`;
4828
4905
  });
4829
4906
  const suffix = skills.length > selectedSkills.length ? `
4830
- ... and ${skills.length - selectedSkills.length} additional skills available via load_skill.` : "";
4907
+ ... and ${skills.length - selectedSkills.length} additional domain skills available via \`load_skill\`.` : "";
4831
4908
  return `
4832
4909
  ## Available Domain Skills
4833
4910
  <available_skills>
4834
4911
  ${lines.join(`
4835
4912
  `)}${suffix}
4836
4913
  </available_skills>
4837
- When tackling complex specialized tasks that match any of these skills (e.g., scientific computing, biology/bioinformatics, chemistry, physics, quantum computing, machine learning, mathematics, security auditing, UI frontend design, systematic debugging, TDD), you MUST autonomously use the \`load_skill\` tool to retrieve full instructions before implementing.`;
4914
+ When tackling complex specialized tasks that match any of these skills, autonomously use the \`load_skill\` tool to retrieve full instructions before implementing.`;
4838
4915
  }
4839
4916
  }
4840
4917
 
@@ -5582,18 +5659,24 @@ class LiveSpinner {
5582
5659
  setShimmer(enabled) {
5583
5660
  this.enableShimmer = enabled;
5584
5661
  }
5585
- start(message = "Thinking...") {
5662
+ start(message = "Thinking...", customStartTime) {
5586
5663
  if (this.isSpinning) {
5664
+ if (customStartTime !== undefined) {
5665
+ this.startTime = customStartTime;
5666
+ }
5587
5667
  this.update(message);
5588
5668
  return;
5589
5669
  }
5590
5670
  this.isSpinning = true;
5591
5671
  this.currentMessage = message;
5592
- this.startTime = performance.now();
5672
+ this.startTime = customStartTime !== undefined ? customStartTime : performance.now();
5593
5673
  this.frameIndex = 0;
5594
5674
  this.render();
5595
5675
  this.restartTimer();
5596
5676
  }
5677
+ setStartTime(timeMs) {
5678
+ this.startTime = timeMs;
5679
+ }
5597
5680
  restartTimer() {
5598
5681
  if (this.timer) {
5599
5682
  clearInterval(this.timer);
@@ -5759,7 +5842,7 @@ function renderDiff(lines, opts = {}) {
5759
5842
  if (opts.filePath) {
5760
5843
  const headerText = ` ${opts.filePath}`;
5761
5844
  const padded = headerText.padEnd(termWidth);
5762
- out.push(`${ESC2}48;2;30;30;40m${ESC2}38;2;200;180;255m${ESC2}1m${padded}${R}`);
5845
+ out.push(`${ESC2}48;2;36;36;42m${ESC2}38;2;230;230;235m${ESC2}1m${padded}${R}`);
5763
5846
  }
5764
5847
  let i = 0;
5765
5848
  while (i < lines.length) {
@@ -5880,7 +5963,6 @@ function getPackageMetadata() {
5880
5963
  const currentDir = typeof __dirname !== "undefined" ? __dirname : dirname8(fileURLToPath(import.meta.url));
5881
5964
  searchDirs.push(currentDir);
5882
5965
  } catch {}
5883
- searchDirs.push(process.cwd());
5884
5966
  for (const startDir of searchDirs) {
5885
5967
  let current = resolve17(startDir);
5886
5968
  for (let depth = 0;depth < 5; depth++) {
@@ -5888,7 +5970,7 @@ function getPackageMetadata() {
5888
5970
  if (existsSync17(candidate)) {
5889
5971
  try {
5890
5972
  const content = JSON.parse(readFileSync12(candidate, "utf8"));
5891
- if (content && typeof content.version === "string") {
5973
+ if (content && typeof content.version === "string" && (content.name === "@pikaa-ai/pikaa" || content.name === "pikaa" || content.bin?.pikaa || content.bin?.groupy)) {
5892
5974
  const cleanName = content.name?.startsWith("@") ? content.name.split("/")[1] || content.name : content.name || "pikaa";
5893
5975
  cachedMetadata = {
5894
5976
  name: cleanName,
@@ -5905,9 +5987,23 @@ function getPackageMetadata() {
5905
5987
  current = parent;
5906
5988
  }
5907
5989
  }
5990
+ try {
5991
+ const cwdCandidate = join8(process.cwd(), "package.json");
5992
+ if (existsSync17(cwdCandidate)) {
5993
+ const content = JSON.parse(readFileSync12(cwdCandidate, "utf8"));
5994
+ if (content && typeof content.version === "string" && (content.name === "@pikaa-ai/pikaa" || content.name === "pikaa" || content.bin?.pikaa || content.bin?.groupy)) {
5995
+ cachedMetadata = {
5996
+ name: "pikaa",
5997
+ version: content.version,
5998
+ description: content.description
5999
+ };
6000
+ return cachedMetadata;
6001
+ }
6002
+ }
6003
+ } catch {}
5908
6004
  cachedMetadata = {
5909
6005
  name: "pikaa",
5910
- version: "0.3.1"
6006
+ version: "0.3.2"
5911
6007
  };
5912
6008
  return cachedMetadata;
5913
6009
  }
@@ -5918,55 +6014,145 @@ function getCliVersion(options = {}) {
5918
6014
  }
5919
6015
 
5920
6016
  // src/cli/ui/animation/banner-animation.ts
5921
- function getResponsiveWidth() {
5922
- const cols = typeof process.stdout?.columns === "number" ? process.stdout.columns : 80;
5923
- return Math.min(68, Math.max(48, cols - 6));
5924
- }
5925
- function formatBoxLine(content, innerWidth, border = "\x1B[38;2;47;47;51m", reset = "\x1B[0m") {
5926
- const visible = content.replace(/\x1b\[[0-9;]*m/g, "");
5927
- const pad = Math.max(0, innerWidth - visible.length);
5928
- return ` ${border}\u2502${reset}${content}${" ".repeat(pad)}${border}\u2502${reset}`;
5929
- }
5930
- function formatMenuLine(label, key = "", innerWidth, fg2, keyDim, reset) {
5931
- const left = ` ${fg2}${label}${reset}`;
5932
- const right = key ? `${keyDim}${key}${reset} ` : " ";
5933
- const leftVis = ` ${label}`;
5934
- const rightVis = key ? `${key} ` : " ";
5935
- const spaceCount = Math.max(1, innerWidth - leftVis.length - rightVis.length);
5936
- return `${left}${" ".repeat(spaceCount)}${right}`;
6017
+ import { homedir as homedir8 } from "os";
6018
+ import { execSync } from "child_process";
6019
+ var ROSE = "\x1B[38;2;205;105;74m";
6020
+ var ROSE_DIM = "\x1B[38;2;120;60;45m";
6021
+ var WHITE = "\x1B[38;2;255;255;255m";
6022
+ var GRAY = "\x1B[38;2;148;148;148m";
6023
+ var BOLD = "\x1B[1m";
6024
+ var ITALIC = "\x1B[3m";
6025
+ var RESET = "\x1B[0m";
6026
+ function shortenPath(cwd) {
6027
+ const home = homedir8();
6028
+ if (cwd.startsWith(home)) {
6029
+ return `~${cwd.slice(home.length).replace(/\\/g, "/")}`;
6030
+ }
6031
+ return cwd.replace(/\\/g, "/");
6032
+ }
6033
+ function stripAnsi(str) {
6034
+ return str.replace(/\x1b\[[0-9;]*m/g, "");
6035
+ }
6036
+ function center(str, width) {
6037
+ const vis = stripAnsi(str);
6038
+ if (vis.length >= width)
6039
+ return truncate(str, width);
6040
+ const padLeft = Math.floor((width - vis.length) / 2);
6041
+ const padRight = width - vis.length - padLeft;
6042
+ return " ".repeat(padLeft) + str + " ".repeat(padRight);
6043
+ }
6044
+ function padRight(str, width) {
6045
+ const vis = stripAnsi(str);
6046
+ if (vis.length > width)
6047
+ return truncate(str, width);
6048
+ return str + " ".repeat(Math.max(0, width - vis.length));
6049
+ }
6050
+ function truncate(str, maxLen) {
6051
+ const vis = stripAnsi(str);
6052
+ if (vis.length <= maxLen)
6053
+ return str;
6054
+ return vis.slice(0, Math.max(0, maxLen - 1)) + "\u2026";
6055
+ }
6056
+ function getGitBranch(cwd) {
6057
+ try {
6058
+ return execSync("git rev-parse --abbrev-ref HEAD", {
6059
+ cwd,
6060
+ encoding: "utf8",
6061
+ stdio: ["ignore", "pipe", "ignore"]
6062
+ }).trim();
6063
+ } catch {
6064
+ return null;
6065
+ }
5937
6066
  }
5938
6067
 
5939
6068
  class BannerAnimator {
5940
6069
  static async play(info, options = {}) {
5941
- const isTTY = Boolean(process.stdout.isTTY);
5942
- const shouldAnimate = options.animate ?? (isTTY && true);
5943
- if (!shouldAnimate) {
5944
- this.renderStatic(info);
5945
- return;
5946
- }
5947
6070
  this.renderStatic(info);
5948
6071
  }
5949
- static renderStatic(info, options = {}) {
6072
+ static renderStatic(info, _options) {
5950
6073
  const version = info.version || getCliVersion({ prefix: true });
5951
- const amber = "\x1B[38;2;224;175;104m";
5952
- const fg2 = "\x1B[38;2;232;232;232m";
5953
- const dim = "\x1B[38;2;122;122;122m";
5954
- const gray = "\x1B[38;2;139;139;144m";
5955
- const keyDim = "\x1B[38;2;106;106;106m";
5956
- const border = "\x1B[38;2;47;47;51m";
5957
- const reset = "\x1B[0m";
5958
- const width = getResponsiveWidth();
6074
+ const storedUser = new CredentialsStore().getUser();
6075
+ let rawUser = info.user || "";
6076
+ if (!rawUser || rawUser.toLowerCase() === "authenticated" || rawUser.toLowerCase() === "default") {
6077
+ rawUser = storedUser?.username || (storedUser?.email ? storedUser.email.split("@")[0] : undefined) || process.env.GROUPY_USER || process.env.USER || process.env.USERNAME || "Developer";
6078
+ }
6079
+ const user = rawUser.charAt(0).toUpperCase() + rawUser.slice(1);
6080
+ const shortCwd = shortenPath(info.cwd);
6081
+ const modelName = info.model.includes("/") ? info.model.split("/").pop() || info.model : info.model;
6082
+ const rawPlan = info.plan || storedUser?.plan || process.env.GROUPY_PLAN || process.env.GROUPY_TIER || process.env.PIKAA_PLAN || process.env.PIKAA_TIER || "Pro";
6083
+ const planFormatted = rawPlan.charAt(0).toUpperCase() + rawPlan.slice(1).toLowerCase();
6084
+ const modelLine = `${modelName} \xB7 Groupy ${planFormatted}`;
6085
+ const branchName = info.branch || getGitBranch(info.cwd) || "main";
6086
+ const branchLine = `\uE0A0 ${branchName}`;
6087
+ const cols = typeof process.stdout?.columns === "number" ? process.stdout.columns : 80;
6088
+ const totalInnerWidth = Math.min(80, Math.max(68, cols - 6));
6089
+ if (totalInnerWidth >= 70) {
6090
+ this.renderTwoColumn(totalInnerWidth, version, user, modelLine, branchLine, shortCwd);
6091
+ } else {
6092
+ this.renderSingleColumn(totalInnerWidth, version, user, modelLine, branchLine, shortCwd);
6093
+ }
6094
+ }
6095
+ static renderTwoColumn(totalInnerWidth, version, user, modelLine, branchLine, cwd) {
6096
+ const leftWidth = 30;
6097
+ const rightContentWidth = totalInnerWidth - leftWidth - 4;
6098
+ const sprite = [
6099
+ `${ROSE} \u2597\u2584\u2584\u2584\u2584\u2596 ${RESET}`,
6100
+ `${ROSE}\u2590\u2588 \u2584\u2584 \u2588\u258C\u2584\u2584\u2584\u2584\u2584\u2584\u2584${RESET}`,
6101
+ `${ROSE}\u2590\u2588 \u2580\u2580 \u2588\u258C \u2588 \u2588 \u2588${RESET}`,
6102
+ `${ROSE} \u259D\u2580\u2580\u2580\u2580\u2598 \u2580 \u2580 \u2580${RESET}`
6103
+ ];
6104
+ const leftLines = [
6105
+ center(`${BOLD}${WHITE}Welcome back ${user}!${RESET}`, leftWidth),
6106
+ center(sprite[0], leftWidth),
6107
+ center(sprite[1], leftWidth),
6108
+ center(sprite[2], leftWidth),
6109
+ center(sprite[3], leftWidth),
6110
+ center(`${GRAY}${truncate(modelLine, leftWidth)}${RESET}`, leftWidth),
6111
+ center(`${GRAY}${truncate(branchLine, leftWidth)}${RESET}`, leftWidth),
6112
+ center(`${GRAY}${truncate(cwd, leftWidth)}${RESET}`, leftWidth)
6113
+ ];
6114
+ const rightLines = [
6115
+ `${BOLD}${ROSE}Tips for getting started${RESET}`,
6116
+ `${WHITE}${truncate("Ask Groupy to create a new app or clone a repo", rightContentWidth)}${RESET}`,
6117
+ `${ROSE}${"\u2500".repeat(rightContentWidth)}${RESET}`,
6118
+ `${BOLD}${ROSE}What's new in ${version}${RESET}`,
6119
+ `${WHITE}${truncate("Persistent default AI model (/model)", rightContentWidth)}${RESET}`,
6120
+ `${WHITE}${truncate("Isolated Git worktree task runner (/worktrees)", rightContentWidth)}${RESET}`,
6121
+ `${ITALIC}${GRAY}Type /release-notes for full changelog${RESET}`,
6122
+ ``
6123
+ ];
6124
+ const maxRows = Math.max(leftLines.length, rightLines.length);
6125
+ const topDashes = Math.max(2, totalInnerWidth - (15 + version.length));
6126
+ console.log();
6127
+ console.log(` ${ROSE}\u250C\u2500 ${ROSE}${BOLD}Groupy Code${RESET} ${GRAY}${version}${RESET} ${ROSE}${"\u2500".repeat(topDashes)}\u2510${RESET}`);
6128
+ for (let i = 0;i < maxRows; i++) {
6129
+ const left = leftLines[i] || " ".repeat(leftWidth);
6130
+ const right = rightLines[i] || "";
6131
+ const rightFormatted = padRight(right, rightContentWidth);
6132
+ console.log(` ${ROSE}\u2502${RESET}${left} ${ROSE_DIM}\u2502${RESET} ${rightFormatted} ${ROSE}\u2502${RESET}`);
6133
+ }
6134
+ console.log(` ${ROSE}\u2514${"\u2500".repeat(totalInnerWidth)}\u2518${RESET}`);
6135
+ console.log();
6136
+ }
6137
+ static renderSingleColumn(totalInnerWidth, version, user, modelLine, branchLine, cwd) {
6138
+ const topDashes = Math.max(2, totalInnerWidth - (15 + version.length));
5959
6139
  console.log();
5960
- console.log(` ${border}\u250C${"\u2500".repeat(width)}\u2510${reset}`);
5961
- console.log(formatBoxLine(` ${fg2}\x1B[1mGroupy Build Beta\x1B[0m ${dim}${version}${reset}`, width, border, reset));
5962
- console.log(formatBoxLine(` ${amber}\x1B[1mGroupy is here!\x1B[0m`, width, border, reset));
5963
- console.log(formatBoxLine(` ${gray}Autonomous agent engine with skills, tools & worktree${reset}`, width, border, reset));
5964
- console.log(formatBoxLine(``, width, border, reset));
5965
- console.log(formatBoxLine(formatMenuLine("New worktree", "ctrl+w", width, fg2, keyDim, reset), width, border, reset));
5966
- console.log(formatBoxLine(formatMenuLine("Resume session", "ctrl+s", width, fg2, keyDim, reset), width, border, reset));
5967
- console.log(formatBoxLine(formatMenuLine(`Model: ${info.model}`, "", width, fg2, keyDim, reset), width, border, reset));
5968
- console.log(formatBoxLine(formatMenuLine("Quit", "ctrl+q", width, fg2, keyDim, reset), width, border, reset));
5969
- console.log(` ${border}\u2514${"\u2500".repeat(width)}\u2518${reset}`);
6140
+ console.log(` ${ROSE}\u250C\u2500 ${ROSE}${BOLD}Groupy Code${RESET} ${GRAY}${version}${RESET} ${ROSE}${"\u2500".repeat(topDashes)}\u2510${RESET}`);
6141
+ const lines = [
6142
+ center(`${BOLD}${WHITE}Welcome back ${user}!${RESET}`, totalInnerWidth),
6143
+ center(`${ROSE} \u2597\u2584\u2584\u2584\u2584\u2596 ${RESET}`, totalInnerWidth),
6144
+ center(`${ROSE}\u2590\u2588 \u2584\u2584 \u2588\u258C\u2584\u2584\u2584\u2584\u2584\u2584\u2584${RESET}`, totalInnerWidth),
6145
+ center(`${ROSE}\u2590\u2588 \u2580\u2580 \u2588\u258C \u2588 \u2588 \u2588${RESET}`, totalInnerWidth),
6146
+ center(`${ROSE} \u259D\u2580\u2580\u2580\u2580\u2598 \u2580 \u2580 \u2580${RESET}`, totalInnerWidth),
6147
+ center(`${GRAY}${modelLine}${RESET}`, totalInnerWidth),
6148
+ center(`${GRAY}${branchLine} \xB7 ${cwd}${RESET}`, totalInnerWidth),
6149
+ `${ROSE}${"\u2500".repeat(totalInnerWidth)}${RESET}`,
6150
+ ` ${BOLD}${ROSE}Tips:${RESET} ${WHITE}${truncate("Ask Groupy to create a new app or inspect code", totalInnerWidth - 8)}${RESET}`
6151
+ ];
6152
+ for (const line of lines) {
6153
+ console.log(` ${ROSE}\u2502${RESET}${padRight(line, totalInnerWidth)}${ROSE}\u2502${RESET}`);
6154
+ }
6155
+ console.log(` ${ROSE}\u2514${"\u2500".repeat(totalInnerWidth)}\u2518${RESET}`);
5970
6156
  console.log();
5971
6157
  }
5972
6158
  }
@@ -5981,20 +6167,11 @@ function formatTaskProgressPlan(plan2, explanation) {
5981
6167
  function formatTurnSummary(metrics) {
5982
6168
  CliFormatter.formatTurnSummary(metrics);
5983
6169
  }
5984
- function formatTaskStepStart(step, toolName, args) {
5985
- const argsSummary = Object.entries(args).map(([k, v]) => {
5986
- const valStr = typeof v === "string" ? `"${v.length > 35 ? v.slice(0, 32) + "..." : v}"` : JSON.stringify(v);
5987
- return `${style.dim(k)}=${style.cyan(valStr)}`;
5988
- }).join(" ");
5989
- const dot = "\x1B[38;2;224;175;104m\u23FA\x1B[0m";
5990
- console.log(` ${dot} ${style.bold(toolName)} ${argsSummary ? `${style.dim("(")}${argsSummary}${style.dim(")")}` : ""}`);
5991
- }
5992
6170
  function formatTaskStepFinish(step, toolName, args, output, isError = false) {
5993
- const dot = isError ? "\x1B[38;2;247;118;142m\u23FA\x1B[0m" : "\x1B[38;2;78;169;111m\u23FA\x1B[0m";
6171
+ const dot = isError ? "\x1B[38;2;247;118;142m\u25CF\x1B[0m" : "\x1B[38;2;78;169;111m\u25CF\x1B[0m";
5994
6172
  const toolNameDisplay = style.bold(toolName);
5995
6173
  if (toolName === "apply_patch" && typeof args.targetContent === "string" && typeof args.replacementContent === "string") {
5996
6174
  const targetFile = args.path ? String(args.path) : undefined;
5997
- console.log(` ${dot} ${style.bold("Update")} ${style.dim(`(${targetFile || ""})`)}`);
5998
6175
  CliFormatter.formatPatchDiff(targetFile, args.targetContent, args.replacementContent);
5999
6176
  return;
6000
6177
  }
@@ -6015,7 +6192,7 @@ function formatTaskStepFinish(step, toolName, args, output, isError = false) {
6015
6192
  }
6016
6193
  const argsSummary = Object.entries(args).map(([k, v]) => {
6017
6194
  const valStr = typeof v === "string" ? `"${v.length > 35 ? v.slice(0, 32) + "..." : v}"` : JSON.stringify(v);
6018
- return `${style.dim(k)}=${style.cyan(valStr)}`;
6195
+ return `${style.dim(k)}=\x1B[38;2;170;175;190m${valStr}\x1B[0m`;
6019
6196
  }).join(" ");
6020
6197
  console.log(` ${dot} ${toolNameDisplay} ${argsSummary ? `${style.dim("(")}${argsSummary}${style.dim(")")}` : ""}`);
6021
6198
  if (summary) {
@@ -6038,8 +6215,8 @@ class CliFormatter {
6038
6215
  const innerWidth = 54;
6039
6216
  const padLine = (content) => {
6040
6217
  const visibleLen2 = style.stripAnsi(content).length;
6041
- const padRight = Math.max(0, innerWidth - visibleLen2);
6042
- return ` ${style.yellow("\u2502")} ${content}${" ".repeat(padRight)}${style.yellow("\u2502")}`;
6218
+ const padRight2 = Math.max(0, innerWidth - visibleLen2);
6219
+ return ` ${style.yellow("\u2502")} ${content}${" ".repeat(padRight2)}${style.yellow("\u2502")}`;
6043
6220
  };
6044
6221
  const topBorder = ` ${style.yellow("\u256D")}${style.yellow("\u2500".repeat(innerWidth + 2))}${style.yellow("\u256E")}`;
6045
6222
  const bottomBorder = ` ${style.yellow("\u2570")}${style.yellow("\u2500".repeat(innerWidth + 2))}${style.yellow("\u256F")}`;
@@ -6090,9 +6267,9 @@ class CliFormatter {
6090
6267
  static formatToolCall(toolName, args) {
6091
6268
  const argsSummary = Object.entries(args).map(([k, v]) => {
6092
6269
  const valStr = typeof v === "string" ? `"${v.length > 40 ? v.slice(0, 37) + "..." : v}"` : JSON.stringify(v);
6093
- return `${style.dim(k)}=${style.cyan(valStr)}`;
6270
+ return `${style.dim(k)}=\x1B[38;2;170;175;190m${valStr}\x1B[0m`;
6094
6271
  }).join(" ");
6095
- const dot = "\x1B[38;2;78;169;111m\u23FA\x1B[0m";
6272
+ const dot = "\x1B[38;2;78;169;111m\u25CF\x1B[0m";
6096
6273
  console.log(` ${dot} ${style.bold(toolName)} ${argsSummary ? `${style.dim("(")}${argsSummary}${style.dim(")")}` : ""}`);
6097
6274
  }
6098
6275
  static formatPatchDiff(filePath, oldSrc, newSrc) {
@@ -6100,9 +6277,9 @@ class CliFormatter {
6100
6277
  if (lines.length === 0)
6101
6278
  return;
6102
6279
  if (filePath) {
6103
- const dot = "\x1B[38;2;78;169;111m\u23FA\x1B[0m";
6280
+ const dot = "\x1B[38;2;78;169;111m\u25CF\x1B[0m";
6104
6281
  const arrow = "\x1B[38;2;86;95;137m\u23BF\x1B[0m";
6105
- console.log(` ${dot} ${style.bold("Update")} \x1B[38;2;86;95;137m(\x1B[38;2;125;207;255m${filePath}\x1B[38;2;86;95;137m)\x1B[0m`);
6282
+ console.log(` ${dot} ${style.bold("Update")} \x1B[38;2;140;140;150m(\x1B[38;2;220;220;230m${filePath}\x1B[38;2;140;140;150m)\x1B[0m`);
6106
6283
  console.log(` ${arrow} ${style.dim("Applied patch diff hunks")}`);
6107
6284
  }
6108
6285
  console.log(renderDiff(lines, { filePath }));
@@ -6190,18 +6367,18 @@ ${preview}${more}`);
6190
6367
  const ACTIVE = "\x1B[38;5;174m\u25FC\x1B[0m";
6191
6368
  const PENDING = "\x1B[38;5;246m\u25FB\x1B[0m";
6192
6369
  const DIM = "\x1B[38;5;246m";
6193
- const RESET = "\x1B[0m";
6370
+ const RESET2 = "\x1B[0m";
6194
6371
  for (let i = 0;i < plan2.length; i++) {
6195
6372
  const item = plan2[i];
6196
6373
  if (!item)
6197
6374
  continue;
6198
6375
  const prefix = i === 0 ? " \u23BF " : " ";
6199
6376
  if (item.status === "completed") {
6200
- console.log(` ${DIM}${prefix}${RESET}${DONE} \x1B[9m\x1B[38;5;246m${item.step}\x1B[0m`);
6377
+ console.log(` ${DIM}${prefix}${RESET2}${DONE} \x1B[9m\x1B[38;5;246m${item.step}\x1B[0m`);
6201
6378
  } else if (item.status === "in_progress") {
6202
- console.log(` ${DIM}${prefix}${RESET}${ACTIVE} \x1B[1m\x1B[38;5;174m${item.step}\x1B[0m`);
6379
+ console.log(` ${DIM}${prefix}${RESET2}${ACTIVE} \x1B[1m\x1B[38;5;174m${item.step}\x1B[0m`);
6203
6380
  } else {
6204
- console.log(` ${DIM}${prefix}${RESET}${PENDING} \x1B[38;5;246m${item.step}\x1B[0m`);
6381
+ console.log(` ${DIM}${prefix}${RESET2}${PENDING} \x1B[38;5;246m${item.step}\x1B[0m`);
6205
6382
  }
6206
6383
  }
6207
6384
  console.log();
@@ -6287,13 +6464,12 @@ ${preview}${more}`);
6287
6464
  // src/cli/ui/line-editor.ts
6288
6465
  import readline from "readline";
6289
6466
  var keypressEventsInitialized = false;
6290
- var globalRawMode = false;
6291
6467
  function ensureKeypressInitialized() {
6292
6468
  if (!keypressEventsInitialized && process.stdin.isTTY) {
6293
6469
  readline.emitKeypressEvents(process.stdin);
6294
6470
  keypressEventsInitialized = true;
6295
6471
  process.on("exit", () => {
6296
- if (globalRawMode && process.stdin.isTTY) {
6472
+ if (process.stdin.isTTY) {
6297
6473
  try {
6298
6474
  process.stdin.setRawMode(false);
6299
6475
  } catch {}
@@ -6330,10 +6506,9 @@ class InteractiveLineEditor {
6330
6506
  let scrollTop = 0;
6331
6507
  let renderedMenuLines = 0;
6332
6508
  let popupDismissed = false;
6333
- if (!globalRawMode && process.stdin.isTTY) {
6509
+ if (process.stdin.isTTY) {
6334
6510
  try {
6335
6511
  process.stdin.setRawMode(true);
6336
- globalRawMode = true;
6337
6512
  } catch {}
6338
6513
  }
6339
6514
  process.stdin.resume();
@@ -6387,11 +6562,7 @@ class InteractiveLineEditor {
6387
6562
  };
6388
6563
  const clearMenu = () => {
6389
6564
  if (renderedMenuLines > 0) {
6390
- for (let i = 0;i < renderedMenuLines; i++) {
6391
- process.stdout.write(`
6392
- \x1B[2K`);
6393
- }
6394
- process.stdout.write(`\x1B[${renderedMenuLines}A\r`);
6565
+ process.stdout.write("\x1B[J");
6395
6566
  renderedMenuLines = 0;
6396
6567
  }
6397
6568
  };
@@ -6411,22 +6582,22 @@ class InteractiveLineEditor {
6411
6582
  const RULE_COLOR = "\x1B[38;2;80;80;88m";
6412
6583
  const ACTIVE_COLOR = "\x1B[38;2;225;225;225m";
6413
6584
  const INACTIVE_COLOR = "\x1B[38;2;139;139;144m";
6414
- const RESET = "\x1B[0m";
6415
- menuLines.push(` ${RULE_COLOR}${rule}${RESET}`);
6585
+ const RESET2 = "\x1B[0m";
6586
+ menuLines.push(` ${RULE_COLOR}${rule}${RESET2}`);
6416
6587
  for (let i = 0;i < visibleMatches.length; i++) {
6417
6588
  const cmd = visibleMatches[i];
6418
6589
  const actualIdx = scrollTop + i;
6419
6590
  const isSelected = actualIdx === selectedIndex;
6420
- const marker = isSelected ? `${ACTIVE_COLOR}\u276F${RESET}` : " ";
6591
+ const marker = isSelected ? `${ACTIVE_COLOR}\u276F${RESET2}` : " ";
6421
6592
  const rawName = cmd.name.padEnd(16).slice(0, 16);
6422
6593
  const rawDesc = cmd.description.length > 48 ? cmd.description.slice(0, 45) + "..." : cmd.description;
6423
6594
  if (isSelected) {
6424
- menuLines.push(` ${marker} \x1B[1m${ACTIVE_COLOR}${rawName}${RESET} \x1B[1m${ACTIVE_COLOR}${rawDesc}${RESET}`);
6595
+ menuLines.push(` ${marker} \x1B[1m${ACTIVE_COLOR}${rawName}${RESET2} \x1B[1m${ACTIVE_COLOR}${rawDesc}${RESET2}`);
6425
6596
  } else {
6426
- menuLines.push(` ${marker} ${INACTIVE_COLOR}${rawName}${RESET} ${INACTIVE_COLOR}${rawDesc}${RESET}`);
6597
+ menuLines.push(` ${marker} ${INACTIVE_COLOR}${rawName}${RESET2} ${INACTIVE_COLOR}${rawDesc}${RESET2}`);
6427
6598
  }
6428
6599
  }
6429
- menuLines.push(` ${RULE_COLOR}${rule}${RESET}`);
6600
+ menuLines.push(` ${RULE_COLOR}${rule}${RESET2}`);
6430
6601
  for (const line of menuLines) {
6431
6602
  process.stdout.write(`
6432
6603
  \x1B[2K${line}`);
@@ -6482,6 +6653,11 @@ class InteractiveLineEditor {
6482
6653
  const cleanupAndResolve = (result) => {
6483
6654
  clearMenu();
6484
6655
  process.stdin.removeListener("keypress", onKeypress);
6656
+ if (process.stdin.isTTY) {
6657
+ try {
6658
+ process.stdin.setRawMode(false);
6659
+ } catch {}
6660
+ }
6485
6661
  if (result.trim().length > 0 && !result.startsWith("/")) {
6486
6662
  process.stdout.write(`\r\x1B[2K${CliFormatter.formatClaudeUserPrompt(result)}
6487
6663
 
@@ -6506,10 +6682,9 @@ class InteractiveLineEditor {
6506
6682
  return;
6507
6683
  }
6508
6684
  clearMenu();
6509
- if (globalRawMode && process.stdin.isTTY) {
6685
+ if (process.stdin.isTTY) {
6510
6686
  try {
6511
6687
  process.stdin.setRawMode(false);
6512
- globalRawMode = false;
6513
6688
  } catch {}
6514
6689
  }
6515
6690
  process.stdin.removeListener("keypress", onKeypress);
@@ -6631,9 +6806,11 @@ class InteractiveLineEditor {
6631
6806
  }
6632
6807
  return;
6633
6808
  }
6634
- if (_str && !key.ctrl && !key.meta) {
6635
- buffer = buffer.slice(0, cursor) + _str + buffer.slice(cursor);
6636
- cursor += _str.length;
6809
+ const char = _str || key.sequence || (key.name && key.name.length === 1 ? key.name : "");
6810
+ if (char && !key.ctrl && !key.meta && char !== "\r" && char !== `
6811
+ `) {
6812
+ buffer = buffer.slice(0, cursor) + char + buffer.slice(cursor);
6813
+ cursor += char.length;
6637
6814
  selectedIndex = 0;
6638
6815
  scrollTop = 0;
6639
6816
  popupDismissed = false;
@@ -6646,163 +6823,481 @@ class InteractiveLineEditor {
6646
6823
  }
6647
6824
  }
6648
6825
 
6649
- // src/cli/ui/animation/types.ts
6650
- var ALL_ANIMATION_VARIANTS = [
6651
- "default",
6652
- "groupy",
6653
- "mesosfer",
6654
- "blocks",
6655
- "dots",
6656
- "hash",
6657
- "hbars",
6658
- "vbars",
6659
- "shapes",
6660
- "slug"
6661
- ];
6662
- var DEFAULT_FRAME_TICK_MS = 80;
6663
- // src/cli/ui/animation/frames-loader.ts
6664
- import { existsSync as existsSync18, readFileSync as readFileSync13 } from "fs";
6665
- import { join as join9, resolve as resolve18 } from "path";
6666
- var __dirname = "/home/runner/work/agent-cli/agent-cli/src/cli/ui/animation";
6667
-
6668
- class FramesLoader {
6669
- static cache = new Map;
6670
- static assetsDir = resolve18(__dirname, "../../../../assets/frames");
6671
- static setAssetsDir(customDir) {
6672
- this.assetsDir = customDir;
6673
- this.cache.clear();
6674
- }
6675
- static getAssetsDir() {
6676
- return this.assetsDir;
6677
- }
6678
- static getFrames(variant) {
6679
- if (this.cache.has(variant)) {
6680
- return this.cache.get(variant);
6681
- }
6682
- const variantDir = join9(this.assetsDir, variant);
6683
- if (!existsSync18(variantDir)) {
6684
- return [];
6685
- }
6686
- const frames = [];
6687
- for (let i = 1;i <= 36; i++) {
6688
- const framePath = join9(variantDir, `frame_${i}.txt`);
6689
- if (existsSync18(framePath)) {
6690
- try {
6691
- const content = readFileSync13(framePath, "utf-8");
6692
- frames.push(content);
6693
- } catch {}
6694
- }
6695
- }
6696
- this.cache.set(variant, frames);
6697
- return frames;
6698
- }
6699
- static preloadAll() {
6700
- for (const variant of ALL_ANIMATION_VARIANTS) {
6701
- this.getFrames(variant);
6702
- }
6703
- }
6704
- }
6705
- // src/cli/ui/animation/ascii-animation.ts
6706
- class AsciiAnimation {
6707
- variant;
6708
- frameTickMs;
6709
- startTime;
6710
- currentFrameIndex = 0;
6711
- colorFn;
6712
- constructor(options = {}) {
6713
- this.variant = options.variant || "default";
6714
- this.frameTickMs = options.frameTickMs ?? DEFAULT_FRAME_TICK_MS;
6715
- this.startTime = Date.now();
6716
- this.colorFn = options.colorFn;
6717
- if (options.assetsDir) {
6718
- FramesLoader.setAssetsDir(options.assetsDir);
6719
- }
6720
- }
6721
- getFrames() {
6722
- return FramesLoader.getFrames(this.variant);
6723
- }
6724
- currentFrame(now = Date.now()) {
6725
- const frames = this.getFrames();
6726
- if (frames.length === 0)
6727
- return "";
6728
- if (this.frameTickMs === 0) {
6729
- return frames[0] || "";
6826
+ // src/cli/ui/prompt.ts
6827
+ import readline2 from "readline";
6828
+ async function promptChoice(config) {
6829
+ const { message, choices, defaultIndex = 0 } = config;
6830
+ if (!process.stdin.isTTY) {
6831
+ if (!process.stdin.readable) {
6832
+ return choices[defaultIndex]?.value ?? choices[0].value;
6730
6833
  }
6731
- const elapsedMs = Math.max(0, now - this.startTime);
6732
- const frameIndex = Math.floor(elapsedMs / this.frameTickMs) % frames.length;
6733
- const rawFrame = frames[frameIndex] || "";
6734
- return this.colorFn ? this.colorFn(rawFrame) : rawFrame;
6735
- }
6736
- nextFrame() {
6737
- const frames = this.getFrames();
6738
- if (frames.length === 0)
6739
- return "";
6740
- const rawFrame = frames[this.currentFrameIndex % frames.length] || "";
6741
- this.currentFrameIndex = (this.currentFrameIndex + 1) % frames.length;
6742
- return this.colorFn ? this.colorFn(rawFrame) : rawFrame;
6743
- }
6744
- setVariant(variant) {
6745
- this.variant = variant;
6746
- this.currentFrameIndex = 0;
6747
- this.startTime = Date.now();
6748
- }
6749
- getVariant() {
6750
- return this.variant;
6751
- }
6752
- pickRandomVariant() {
6753
- const available = ALL_ANIMATION_VARIANTS.filter((v) => v !== this.variant);
6754
- const randomIndex = Math.floor(Math.random() * available.length);
6755
- const nextVariant = available[randomIndex] || "default";
6756
- this.setVariant(nextVariant);
6757
- return nextVariant;
6834
+ return new Promise((resolve18) => {
6835
+ const rl = readline2.createInterface({ input: process.stdin, output: process.stdout });
6836
+ const hint = choices.map((c3) => c3.isDefault ? `[${c3.key.toUpperCase()}]` : `[${c3.key}]`).join("/");
6837
+ let resolved = false;
6838
+ const doResolve = (val) => {
6839
+ if (!resolved) {
6840
+ resolved = true;
6841
+ rl.close();
6842
+ resolve18(val);
6843
+ }
6844
+ };
6845
+ rl.question(`${message} ${hint}: `, (answer) => {
6846
+ const trimmed = answer.trim().toLowerCase();
6847
+ const matched = choices.find((c3) => c3.key.toLowerCase() === trimmed);
6848
+ doResolve(matched ? matched.value : choices[defaultIndex].value);
6849
+ });
6850
+ rl.on("close", () => {
6851
+ doResolve(choices[defaultIndex].value);
6852
+ });
6853
+ });
6758
6854
  }
6759
- async play(durationMs = 3000, options = {}) {
6760
- const frames = this.getFrames();
6761
- if (frames.length === 0)
6762
- return;
6763
- const hideCursor = "\x1B[?25l";
6764
- const showCursor = "\x1B[?25h";
6765
- const resetCursor = "\x1B[H";
6766
- if (process.stdout.isTTY) {
6767
- process.stdout.write(hideCursor);
6768
- if (options.clearScreen) {
6769
- process.stdout.write("\x1B[2J\x1B[H");
6770
- }
6771
- }
6772
- const start = Date.now();
6855
+ return new Promise((resolve18) => {
6856
+ let selectedIndex = defaultIndex;
6857
+ if (selectedIndex < 0 || selectedIndex >= choices.length)
6858
+ selectedIndex = 0;
6859
+ readline2.emitKeypressEvents(process.stdin);
6860
+ const wasRaw = process.stdin.isRaw;
6773
6861
  try {
6774
- while (Date.now() - start < durationMs) {
6775
- if (options.signal?.aborted)
6776
- break;
6777
- const frame = this.currentFrame();
6778
- if (options.onFrame) {
6779
- options.onFrame(frame, this.currentFrameIndex);
6780
- } else if (process.stdout.isTTY) {
6781
- process.stdout.write(resetCursor + frame);
6862
+ process.stdin.setRawMode(true);
6863
+ } catch {}
6864
+ process.stdin.resume();
6865
+ const render = () => {
6866
+ const parts = choices.map((choice, idx) => {
6867
+ const isSelected = idx === selectedIndex;
6868
+ const keyTag = `[${choice.key}]`;
6869
+ if (isSelected) {
6870
+ return `${c.bgBrand}${c.white}${c.bold} \u276F ${keyTag} ${choice.label} ${c.reset}`;
6782
6871
  }
6783
- await new Promise((resolve19) => setTimeout(resolve19, this.frameTickMs));
6872
+ return `${style.dim(` ${keyTag} ${choice.label}`)}`;
6873
+ });
6874
+ process.stdout.write(`\r\x1B[2K ${style.bold(message)}
6875
+ \r\x1B[2K${parts.join(" ")}`);
6876
+ };
6877
+ const cleanup = (confirmedChoice) => {
6878
+ process.stdin.removeListener("keypress", onKeypress);
6879
+ try {
6880
+ process.stdin.setRawMode(wasRaw ?? false);
6881
+ } catch {}
6882
+ process.stdout.write(`\r\x1B[1A\r\x1B[2K ${style.bold(message)} ${style.cyan(`[${confirmedChoice.key}] ${confirmedChoice.label}`)}
6883
+ \r\x1B[2K`);
6884
+ resolve18(confirmedChoice.value);
6885
+ };
6886
+ const onKeypress = (_str, key) => {
6887
+ if (!key)
6888
+ return;
6889
+ if (key.ctrl && key.name === "c") {
6890
+ cleanup(choices.find((c3) => c3.key.toLowerCase() === "n") || choices[defaultIndex]);
6891
+ return;
6892
+ }
6893
+ if (key.name === "escape") {
6894
+ cleanup(choices.find((c3) => c3.key.toLowerCase() === "n") || choices[defaultIndex]);
6895
+ return;
6896
+ }
6897
+ if (key.name === "return" || key.name === "enter") {
6898
+ cleanup(choices[selectedIndex]);
6899
+ return;
6900
+ }
6901
+ if (key.name === "left") {
6902
+ selectedIndex = (selectedIndex - 1 + choices.length) % choices.length;
6903
+ process.stdout.write("\x1B[1A");
6904
+ render();
6905
+ return;
6906
+ }
6907
+ if (key.name === "right" || key.name === "tab") {
6908
+ selectedIndex = (selectedIndex + 1) % choices.length;
6909
+ process.stdout.write("\x1B[1A");
6910
+ render();
6911
+ return;
6784
6912
  }
6785
- } finally {
6786
- if (process.stdout.isTTY) {
6787
- process.stdout.write(showCursor);
6913
+ const char = _str ? _str.toLowerCase() : key.name ? key.name.toLowerCase() : "";
6914
+ if (char) {
6915
+ const directMatch = choices.find((c3) => c3.key.toLowerCase() === char);
6916
+ if (directMatch) {
6917
+ cleanup(directMatch);
6918
+ return;
6919
+ }
6788
6920
  }
6921
+ };
6922
+ process.stdin.on("keypress", onKeypress);
6923
+ render();
6924
+ });
6925
+ }
6926
+ async function promptToolApproval(params) {
6927
+ const options = [
6928
+ { key: "a", label: "Yes, and don't ask again for anything (always-approve mode)", value: "always" },
6929
+ { key: "y", label: "Yes, proceed", value: "yes", isDefault: true },
6930
+ { key: "n", label: "No, reject (type to add feedback)", value: "no" }
6931
+ ];
6932
+ const title = params.description || `Tool Execution: ${params.toolName}`;
6933
+ const command = params.command || params.toolName;
6934
+ const BORDER = "\x1B[38;5;8m\u2502\x1B[0m";
6935
+ const FG = "\x1B[38;2;225;225;225m";
6936
+ const MUTED = "\x1B[38;2;139;139;144m";
6937
+ const DIM = "\x1B[38;2;108;108;108m";
6938
+ const RESET2 = "\x1B[0m";
6939
+ console.log();
6940
+ console.log(` ${BORDER} ${FG}${title}${RESET2}`);
6941
+ console.log(` ${BORDER} ${MUTED}${command}${RESET2}`);
6942
+ console.log(` ${BORDER}`);
6943
+ const renderCard = (selected) => {
6944
+ for (let i = 0;i < options.length; i++) {
6945
+ const opt = options[i];
6946
+ const active = i === selected;
6947
+ const radio = active ? `${FG}(\u25CF)${RESET2}` : `${DIM}(\u25CB)${RESET2}`;
6948
+ const num = `${FG}${i + 1}${RESET2}`;
6949
+ const label = active ? `\x1B[1m${FG}${opt.label}${RESET2}` : `${MUTED}${opt.label}${RESET2}`;
6950
+ console.log(` ${BORDER} ${num} ${radio} ${label}`);
6789
6951
  }
6952
+ console.log(` ${BORDER}`);
6953
+ console.log(` ${FG}${selected + 1}/${options.length}${RESET2}${DIM}:select \u2502 ${FG}Ctrl+o${RESET2}${DIM}:yolo \u2502 ${FG}Ctrl+c${RESET2}${DIM}:cancel${RESET2}`);
6954
+ };
6955
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
6956
+ renderCard(1);
6957
+ return "yes";
6790
6958
  }
6959
+ return new Promise((resolve18) => {
6960
+ let selectedIndex = 1;
6961
+ readline2.emitKeypressEvents(process.stdin);
6962
+ const wasRaw = process.stdin.isRaw;
6963
+ try {
6964
+ process.stdin.setRawMode(true);
6965
+ } catch {}
6966
+ process.stdin.resume();
6967
+ const render = () => {
6968
+ renderCard(selectedIndex);
6969
+ };
6970
+ const cleanup = (val) => {
6971
+ process.stdin.removeListener("keypress", onKeypress);
6972
+ try {
6973
+ process.stdin.setRawMode(wasRaw ?? false);
6974
+ } catch {}
6975
+ console.log();
6976
+ resolve18(val);
6977
+ };
6978
+ const onKeypress = (_str, key) => {
6979
+ if (!key)
6980
+ return;
6981
+ if (key.ctrl && key.name === "c") {
6982
+ cleanup("no");
6983
+ return;
6984
+ }
6985
+ if (key.ctrl && key.name === "o") {
6986
+ cleanup("always");
6987
+ return;
6988
+ }
6989
+ if (key.name === "up") {
6990
+ selectedIndex = (selectedIndex - 1 + options.length) % options.length;
6991
+ process.stdout.write(`\x1B[5A`);
6992
+ render();
6993
+ return;
6994
+ }
6995
+ if (key.name === "down") {
6996
+ selectedIndex = (selectedIndex + 1) % options.length;
6997
+ process.stdout.write(`\x1B[5A`);
6998
+ render();
6999
+ return;
7000
+ }
7001
+ if (key.name === "return" || key.name === "enter" || _str === " ") {
7002
+ cleanup(options[selectedIndex].value);
7003
+ return;
7004
+ }
7005
+ if (_str === "1") {
7006
+ cleanup(options[0].value);
7007
+ return;
7008
+ }
7009
+ if (_str === "2") {
7010
+ cleanup(options[1].value);
7011
+ return;
7012
+ }
7013
+ if (_str === "3") {
7014
+ cleanup(options[2].value);
7015
+ return;
7016
+ }
7017
+ if (_str?.toLowerCase() === "y") {
7018
+ cleanup("yes");
7019
+ return;
7020
+ }
7021
+ if (_str?.toLowerCase() === "n") {
7022
+ cleanup("no");
7023
+ return;
7024
+ }
7025
+ if (_str?.toLowerCase() === "a") {
7026
+ cleanup("always");
7027
+ return;
7028
+ }
7029
+ };
7030
+ process.stdin.on("keypress", onKeypress);
7031
+ render();
7032
+ });
6791
7033
  }
6792
- // src/security/scanner.ts
6793
- import { existsSync as existsSync19, readdirSync as readdirSync6, readFileSync as readFileSync14, statSync as statSync3 } from "fs";
6794
- import { join as join10, relative as relative2, resolve as resolve19 } from "path";
6795
- var SECURITY_RULES = [
6796
- {
6797
- id: "SEC-001",
6798
- category: "Secrets Leakage",
6799
- severity: "CRITICAL",
6800
- pattern: /sk-(?:proj-)?[A-Za-z0-9-_]{20,}/,
6801
- description: "Hardcoded OpenAI API key detected in source code.",
6802
- recommendation: "Store API keys in environment variables (e.g. process.env.OPENAI_API_KEY) or a secure vault."
6803
- },
6804
- {
6805
- id: "SEC-002",
7034
+ async function promptUserQuestion(params) {
7035
+ const { question, options = [] } = params;
7036
+ const boxWidth = Math.min(process.stdout.columns ?? 80, 75);
7037
+ const border = "\u2500".repeat(Math.max(10, boxWidth - 20));
7038
+ console.log(`
7039
+ ${style.cyan("\u250C\u2500\u2500")} ${style.bold("AI Question")} ${style.cyan(border)}`);
7040
+ const qLines = question.split(`
7041
+ `);
7042
+ for (const line of qLines) {
7043
+ console.log(` ${style.cyan("\u2502")} ${style.bold(line)}`);
7044
+ }
7045
+ if (options.length > 0) {
7046
+ console.log(` ${style.cyan("\u2502")}`);
7047
+ options.forEach((opt, idx) => {
7048
+ const numTag = style.cyan(`[${idx + 1}]`);
7049
+ const isRec = opt.includes("(Recommended)") || opt.includes("(recommended)");
7050
+ const optText = isRec ? opt.replace(/\(Recommended\)/i, style.green("(Recommended)")) : opt;
7051
+ console.log(` ${style.cyan("\u2502")} ${numTag} ${optText}`);
7052
+ });
7053
+ }
7054
+ console.log(` ${style.cyan("\u2514" + "\u2500".repeat(Math.max(10, boxWidth - 4)))}
7055
+ `);
7056
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
7057
+ return options[0] || "yes";
7058
+ }
7059
+ return new Promise((resolve18) => {
7060
+ const rl = readline2.createInterface({ input: process.stdin, output: process.stdout });
7061
+ const promptLabel = options.length > 0 ? `Select [1-${options.length}] or type custom response: ` : `Your response: `;
7062
+ rl.question(` ${style.bold(promptLabel)}`, (answer) => {
7063
+ rl.close();
7064
+ const trimmed = answer.trim();
7065
+ if (!trimmed) {
7066
+ const fallback = options[0] || "";
7067
+ console.log(style.dim(` \u21B3 Default: ${fallback || "(empty)"}
7068
+ `));
7069
+ resolve18(fallback);
7070
+ return;
7071
+ }
7072
+ const num = parseInt(trimmed, 10);
7073
+ if (!isNaN(num) && num >= 1 && num <= options.length) {
7074
+ const picked = options[num - 1];
7075
+ console.log(style.green(` \u2714 Selected: ${picked}
7076
+ `));
7077
+ resolve18(picked);
7078
+ return;
7079
+ }
7080
+ if (options.length === 2) {
7081
+ if (/^(y|yes)$/i.test(trimmed)) {
7082
+ console.log(style.green(` \u2714 Selected: ${options[0]}
7083
+ `));
7084
+ resolve18(options[0]);
7085
+ return;
7086
+ }
7087
+ if (/^(n|no)$/i.test(trimmed)) {
7088
+ console.log(style.green(` \u2714 Selected: ${options[1]}
7089
+ `));
7090
+ resolve18(options[1]);
7091
+ return;
7092
+ }
7093
+ }
7094
+ console.log(style.green(` \u2714 Answer: ${trimmed}
7095
+ `));
7096
+ resolve18(trimmed);
7097
+ });
7098
+ });
7099
+ }
7100
+ async function promptInteractiveList(config) {
7101
+ const {
7102
+ title,
7103
+ items,
7104
+ mode = "select",
7105
+ defaultIndex = 0,
7106
+ maxVisible = 8,
7107
+ emptyMessage = "No items available.",
7108
+ onToggle,
7109
+ onAction,
7110
+ customKeyHints
7111
+ } = config;
7112
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
7113
+ return {
7114
+ selectedIndex: defaultIndex,
7115
+ selectedItem: items[defaultIndex] || items[0],
7116
+ action: "select"
7117
+ };
7118
+ }
7119
+ if (items.length === 0) {
7120
+ console.log(`
7121
+ ${style.dim(emptyMessage)}
7122
+ `);
7123
+ return { selectedIndex: -1, action: "close" };
7124
+ }
7125
+ return new Promise((resolve18) => {
7126
+ let selectedIndex = Math.max(0, Math.min(defaultIndex, items.length - 1));
7127
+ let scrollTop = 0;
7128
+ let renderedLines = 0;
7129
+ readline2.emitKeypressEvents(process.stdin);
7130
+ const wasRaw = process.stdin.isRaw;
7131
+ try {
7132
+ process.stdin.setRawMode(true);
7133
+ } catch {}
7134
+ process.stdin.resume();
7135
+ process.stdout.write("\x1B[?25l");
7136
+ const BOX_WIDTH = Math.min(process.stdout.columns ?? 80, 76);
7137
+ const ensureVisible = () => {
7138
+ const visibleCount = Math.min(items.length, maxVisible);
7139
+ if (selectedIndex < scrollTop) {
7140
+ scrollTop = selectedIndex;
7141
+ } else if (selectedIndex >= scrollTop + visibleCount) {
7142
+ scrollTop = selectedIndex + 1 - visibleCount;
7143
+ }
7144
+ if (scrollTop < 0)
7145
+ scrollTop = 0;
7146
+ const maxScroll = Math.max(0, items.length - visibleCount);
7147
+ if (scrollTop > maxScroll)
7148
+ scrollTop = maxScroll;
7149
+ };
7150
+ const render = () => {
7151
+ ensureVisible();
7152
+ const visibleCount = Math.min(items.length, maxVisible);
7153
+ const visibleItems = items.slice(scrollTop, scrollTop + visibleCount);
7154
+ const lines = [];
7155
+ const headerBorder = "\u2500".repeat(Math.max(10, BOX_WIDTH - title.length - 8));
7156
+ lines.push(` \x1B[38;2;140;140;150m\u250C\u2500\u2500\x1B[0m ${style.bold(title)} \x1B[38;2;140;140;150m${headerBorder}\u2510\x1B[0m`);
7157
+ for (let i = 0;i < visibleItems.length; i++) {
7158
+ const item = visibleItems[i];
7159
+ const actualIdx = scrollTop + i;
7160
+ const isCurrent = actualIdx === selectedIndex;
7161
+ const marker = isCurrent ? "\x1B[38;2;217;119;87m\u276F\x1B[0m" : " ";
7162
+ let checkSymbol = "";
7163
+ if (mode === "toggle") {
7164
+ checkSymbol = item.checked ? "\x1B[38;2;78;169;111m[\u2714 ENABLED]\x1B[0m " : "\x1B[38;2;120;120;125m[\u25CB DISABLED]\x1B[0m";
7165
+ } else if (item.checked !== undefined) {
7166
+ checkSymbol = item.checked ? "\x1B[38;2;78;169;111m(\u25CF)\x1B[0m " : "\x1B[38;2;120;120;125m(\u25CB)\x1B[0m ";
7167
+ }
7168
+ const badgeStr = item.badge ? ` ${style.dim(`(${item.badge})`)}` : "";
7169
+ const labelStr = isCurrent ? style.bold(item.label) : item.label;
7170
+ lines.push(` \x1B[38;2;140;140;150m\u2502\x1B[0m ${marker} ${checkSymbol} ${labelStr}${badgeStr}`);
7171
+ if (item.description) {
7172
+ const descIndent = " ".repeat(mode === "toggle" ? 17 : 7);
7173
+ const maxDescLen = BOX_WIDTH - descIndent.length - 6;
7174
+ const trimmedDesc = item.description.length > maxDescLen ? item.description.slice(0, maxDescLen - 3) + "..." : item.description;
7175
+ lines.push(` \x1B[38;2;140;140;150m\u2502\x1B[0m ${descIndent}${style.dim(trimmedDesc)}`);
7176
+ }
7177
+ }
7178
+ const moreAbove = scrollTop;
7179
+ const moreBelow = Math.max(0, items.length - (scrollTop + visibleCount));
7180
+ let scrollInfo = "";
7181
+ if (moreAbove > 0 && moreBelow > 0) {
7182
+ scrollInfo = `[\u2191 ${moreAbove} more \xB7 \u2193 ${moreBelow} more]`;
7183
+ } else if (moreBelow > 0) {
7184
+ scrollInfo = `[\u2193 ${moreBelow} more below]`;
7185
+ } else if (moreAbove > 0) {
7186
+ scrollInfo = `[\u2191 ${moreAbove} more above]`;
7187
+ }
7188
+ const defaultHints = mode === "toggle" ? "\u2191/\u2193: navigate \xB7 Space: toggle \xB7 a: all \xB7 d: none \xB7 Enter/Esc: done" : "\u2191/\u2193: navigate \xB7 Enter: select \xB7 Esc: cancel";
7189
+ const hintText = customKeyHints || (scrollInfo ? `${scrollInfo} ${defaultHints}` : defaultHints);
7190
+ lines.push(` \x1B[38;2;140;140;150m\u2502\x1B[0m`);
7191
+ lines.push(` \x1B[38;2;140;140;150m\u2502\x1B[0m ${style.dim(hintText)}`);
7192
+ lines.push(` \x1B[38;2;140;140;150m\u2514\u2500\u2500${"\u2500".repeat(Math.max(10, BOX_WIDTH - 6))}\u2518\x1B[0m`);
7193
+ let buffer = "";
7194
+ if (renderedLines > 0) {
7195
+ buffer += `\x1B[${renderedLines}A\r`;
7196
+ }
7197
+ buffer += lines.map((l) => `\x1B[2K${l}`).join(`
7198
+ `) + `
7199
+ `;
7200
+ if (renderedLines > lines.length) {
7201
+ buffer += "\x1B[J";
7202
+ }
7203
+ process.stdout.write(buffer);
7204
+ renderedLines = lines.length;
7205
+ };
7206
+ const cleanup = (res) => {
7207
+ if (renderedLines > 0) {
7208
+ process.stdout.write(`\x1B[${renderedLines}A\r\x1B[J\x1B[?25h`);
7209
+ renderedLines = 0;
7210
+ } else {
7211
+ process.stdout.write("\x1B[?25h");
7212
+ }
7213
+ process.stdin.removeListener("keypress", onKeypress);
7214
+ try {
7215
+ process.stdin.setRawMode(wasRaw ?? false);
7216
+ } catch {}
7217
+ resolve18(res);
7218
+ };
7219
+ const onKeypress = async (_str, key) => {
7220
+ if (!key)
7221
+ return;
7222
+ if (key.ctrl && key.name === "c" || key.name === "escape" || _str === "q" || _str === "Q") {
7223
+ cleanup({
7224
+ selectedIndex,
7225
+ selectedItem: items[selectedIndex],
7226
+ action: "close"
7227
+ });
7228
+ return;
7229
+ }
7230
+ if (key.name === "up" || _str === "k") {
7231
+ selectedIndex = (selectedIndex - 1 + items.length) % items.length;
7232
+ render();
7233
+ return;
7234
+ }
7235
+ if (key.name === "down" || _str === "j") {
7236
+ selectedIndex = (selectedIndex + 1) % items.length;
7237
+ render();
7238
+ return;
7239
+ }
7240
+ if (_str === " " || _str === "t" || _str === "T") {
7241
+ const item = items[selectedIndex];
7242
+ if (item) {
7243
+ item.checked = !item.checked;
7244
+ if (onToggle) {
7245
+ await onToggle(item, selectedIndex);
7246
+ }
7247
+ }
7248
+ render();
7249
+ return;
7250
+ }
7251
+ if (key.name === "return" || key.name === "enter") {
7252
+ if (mode === "toggle") {
7253
+ cleanup({
7254
+ selectedIndex,
7255
+ selectedItem: items[selectedIndex],
7256
+ action: "close"
7257
+ });
7258
+ } else {
7259
+ cleanup({
7260
+ selectedIndex,
7261
+ selectedItem: items[selectedIndex],
7262
+ action: "select"
7263
+ });
7264
+ }
7265
+ return;
7266
+ }
7267
+ if (_str && onAction) {
7268
+ const item = items[selectedIndex];
7269
+ const shouldExit = await onAction(_str.toLowerCase(), item, selectedIndex);
7270
+ if (shouldExit) {
7271
+ cleanup({
7272
+ selectedIndex,
7273
+ selectedItem: item,
7274
+ action: "custom",
7275
+ keyName: _str.toLowerCase()
7276
+ });
7277
+ return;
7278
+ }
7279
+ render();
7280
+ }
7281
+ };
7282
+ process.stdin.on("keypress", onKeypress);
7283
+ render();
7284
+ });
7285
+ }
7286
+
7287
+ // src/security/scanner.ts
7288
+ import { existsSync as existsSync18, readdirSync as readdirSync5, readFileSync as readFileSync13, statSync as statSync3 } from "fs";
7289
+ import { join as join9, relative as relative2, resolve as resolve18 } from "path";
7290
+ var SECURITY_RULES = [
7291
+ {
7292
+ id: "SEC-001",
7293
+ category: "Secrets Leakage",
7294
+ severity: "CRITICAL",
7295
+ pattern: /sk-(?:proj-)?[A-Za-z0-9-_]{20,}/,
7296
+ description: "Hardcoded OpenAI API key detected in source code.",
7297
+ recommendation: "Store API keys in environment variables (e.g. process.env.OPENAI_API_KEY) or a secure vault."
7298
+ },
7299
+ {
7300
+ id: "SEC-002",
6806
7301
  category: "Secrets Leakage",
6807
7302
  severity: "CRITICAL",
6808
7303
  pattern: /AKIA[0-9A-Z]{16}/,
@@ -6923,24 +7418,24 @@ var IGNORED_FILES = new Set([
6923
7418
  ]);
6924
7419
  async function runSecurityScan(targetDir, options = {}) {
6925
7420
  const startTime = performance.now();
6926
- const root = resolve19(targetDir);
7421
+ const root = resolve18(targetDir);
6927
7422
  const isDirectTestDir = targetDir.includes("test") || Boolean(options.includeTests);
6928
7423
  const maxFiles = options.maxFiles || 2000;
6929
7424
  const findings = [];
6930
7425
  let scannedCount = 0;
6931
7426
  function walk(current) {
6932
- if (scannedCount >= maxFiles || !existsSync19(current))
7427
+ if (scannedCount >= maxFiles || !existsSync18(current))
6933
7428
  return;
6934
7429
  let entries;
6935
7430
  try {
6936
- entries = readdirSync6(current);
7431
+ entries = readdirSync5(current);
6937
7432
  } catch {
6938
7433
  return;
6939
7434
  }
6940
7435
  for (const entry of entries) {
6941
7436
  if (scannedCount >= maxFiles)
6942
7437
  break;
6943
- const fullPath = join10(current, entry);
7438
+ const fullPath = join9(current, entry);
6944
7439
  let stat;
6945
7440
  try {
6946
7441
  stat = statSync3(fullPath);
@@ -6971,7 +7466,7 @@ async function runSecurityScan(targetDir, options = {}) {
6971
7466
  function scanFile(filePath, baseRoot, ext, out) {
6972
7467
  let content;
6973
7468
  try {
6974
- content = readFileSync14(filePath, "utf8");
7469
+ content = readFileSync13(filePath, "utf8");
6975
7470
  } catch {
6976
7471
  return;
6977
7472
  }
@@ -7018,41 +7513,40 @@ async function runSecurityScan(targetDir, options = {}) {
7018
7513
  }
7019
7514
 
7020
7515
  // src/mcp/servers/chrome-devtools/index.ts
7021
- import { resolve as resolve20 } from "path";
7516
+ import { resolve as resolve19 } from "path";
7022
7517
 
7023
7518
  // src/mcp/servers/chrome-devtools/server.ts
7024
7519
  if (false) {}
7025
7520
 
7026
7521
  // src/mcp/servers/chrome-devtools/index.ts
7027
7522
  var __dirname = "/home/runner/work/agent-cli/agent-cli/src/mcp/servers/chrome-devtools";
7028
- var CHROME_DEVTOOLS_MCP_SERVER_PATH = resolve20(__dirname, "server.ts");
7523
+ var CHROME_DEVTOOLS_MCP_SERVER_PATH = resolve19(__dirname, "server.ts");
7029
7524
 
7030
7525
  // src/mcp/servers/web-search/index.ts
7031
- import { resolve as resolve21 } from "path";
7526
+ import { resolve as resolve20 } from "path";
7032
7527
 
7033
7528
  // src/mcp/servers/web-search/server.ts
7034
7529
  if (false) {}
7035
7530
 
7036
7531
  // src/mcp/servers/web-search/index.ts
7037
7532
  var __dirname = "/home/runner/work/agent-cli/agent-cli/src/mcp/servers/web-search";
7038
- var WEB_SEARCH_MCP_SERVER_PATH = resolve21(__dirname, "server.ts");
7533
+ var WEB_SEARCH_MCP_SERVER_PATH = resolve20(__dirname, "server.ts");
7039
7534
 
7040
7535
  // src/mcp/servers/sqlite/index.ts
7041
- import { resolve as resolve22 } from "path";
7536
+ import { resolve as resolve21 } from "path";
7042
7537
 
7043
7538
  // src/mcp/servers/sqlite/server.ts
7044
7539
  if (false) {}
7045
7540
 
7046
7541
  // src/mcp/servers/sqlite/index.ts
7047
7542
  var __dirname = "/home/runner/work/agent-cli/agent-cli/src/mcp/servers/sqlite";
7048
- var SQLITE_MCP_SERVER_PATH = resolve22(__dirname, "server.ts");
7543
+ var SQLITE_MCP_SERVER_PATH = resolve21(__dirname, "server.ts");
7049
7544
 
7050
7545
  // src/cli/commands.ts
7051
7546
  var AVAILABLE_SLASH_COMMANDS = [
7052
7547
  { name: "/help", description: "Show command list and help menu" },
7053
7548
  { name: "/stats", description: "Display session runtime, turn stats & sub-agent status" },
7054
7549
  { name: "/model", description: "Select or switch active AI model" },
7055
- { name: "/models", description: "List available AI models from gateway" },
7056
7550
  { name: "/reasoning", description: "Toggle internal reasoning chain visibility" },
7057
7551
  { name: "/login", description: "Authenticate with backend provider" },
7058
7552
  { name: "/whoami", description: "Check backend authentication status" },
@@ -7060,11 +7554,11 @@ var AVAILABLE_SLASH_COMMANDS = [
7060
7554
  { name: "/memories", description: "View learned preferences & memories" },
7061
7555
  { name: "/worktrees", description: "List active isolated Git Worktrees" },
7062
7556
  { name: "/sessions", description: "List saved past sessions from SQLite store" },
7063
- { name: "/roles", description: "List available agent roles & nicknames" },
7557
+ { name: "/role", description: "Select and inspect specialized agent roles & personas" },
7064
7558
  { name: "/security", description: "Scan codebase for vulnerabilities & secrets (Strix)" },
7065
7559
  { name: "/agents", description: "List active sub-agents & execution status" },
7066
7560
  { name: "/mcp", description: "List connected Model Context Protocol servers" },
7067
- { name: "/animate", description: "Preview 36-frame ASCII art animation variants" },
7561
+ { name: "/release-notes", description: "View changelog and what's new in this version" },
7068
7562
  { name: "/compact", description: "Trigger manual token history compaction" },
7069
7563
  { name: "/clear", description: "Clear terminal screen" },
7070
7564
  { name: "/logout", description: "Clear stored authentication credentials" },
@@ -7077,7 +7571,7 @@ async function handleSlashCommand(input, ctx) {
7077
7571
  case "/":
7078
7572
  case "/?":
7079
7573
  case "/help":
7080
- printHelp();
7574
+ await printHelp(ctx);
7081
7575
  return true;
7082
7576
  case "/stats":
7083
7577
  case "/time":
@@ -7091,17 +7585,7 @@ async function handleSlashCommand(input, ctx) {
7091
7585
  case "/reasoning":
7092
7586
  case "/think":
7093
7587
  case "/thinking":
7094
- if (ctx.repl) {
7095
- ctx.repl.showReasoning = !ctx.repl.showReasoning;
7096
- const stateStr = ctx.repl.showReasoning ? style.green("Visible") : style.yellow("Hidden (default)");
7097
- console.log(`
7098
- Reasoning display: [${stateStr}]
7099
- `);
7100
- } else {
7101
- console.log(style.dim(`
7102
- Reasoning display is hidden by default.
7103
- `));
7104
- }
7588
+ await handleReasoningCommand(ctx, args[0]);
7105
7589
  return true;
7106
7590
  case "/login":
7107
7591
  await handleInteractiveLogin(args[0]);
@@ -7113,8 +7597,9 @@ async function handleSlashCommand(input, ctx) {
7113
7597
  new CredentialsStore().clear();
7114
7598
  console.log(style.green("Successfully logged out. Credentials cleared."));
7115
7599
  return true;
7600
+ case "/role":
7116
7601
  case "/roles":
7117
- printRoles(ctx);
7602
+ await handleRolesCommand(ctx, args[0]);
7118
7603
  return true;
7119
7604
  case "/agents":
7120
7605
  printAgents(ctx);
@@ -7124,7 +7609,7 @@ async function handleSlashCommand(input, ctx) {
7124
7609
  return true;
7125
7610
  case "/skills":
7126
7611
  case "/skill":
7127
- handleSkillsCommand(ctx, args);
7612
+ await handleSkillsCommand(ctx, args);
7128
7613
  return true;
7129
7614
  case "/memories":
7130
7615
  case "/memory":
@@ -7135,7 +7620,8 @@ async function handleSlashCommand(input, ctx) {
7135
7620
  await printWorktrees(ctx);
7136
7621
  return true;
7137
7622
  case "/sessions":
7138
- printSessions(ctx);
7623
+ case "/session":
7624
+ await printSessions(ctx);
7139
7625
  return true;
7140
7626
  case "/security":
7141
7627
  case "/audit":
@@ -7143,9 +7629,13 @@ async function handleSlashCommand(input, ctx) {
7143
7629
  case "/pentest":
7144
7630
  await handleSecurityCommand(ctx, args);
7145
7631
  return true;
7146
- case "/animate":
7147
- case "/animation":
7148
- await handleAnimate(args[0]);
7632
+ case "/release-notes":
7633
+ case "/release-note":
7634
+ case "/releasenotes":
7635
+ case "/releasenote":
7636
+ case "/changelog":
7637
+ case "/whatsnew":
7638
+ printReleaseNotes();
7149
7639
  return true;
7150
7640
  case "/compact":
7151
7641
  console.log(style.brand("\u25C6 Compacting conversation history..."));
@@ -7174,75 +7664,133 @@ async function handleSlashCommand(input, ctx) {
7174
7664
  return true;
7175
7665
  }
7176
7666
  }
7177
- function printHelp() {
7178
- console.log();
7179
- console.log(style.bold(" Available Slash Commands:"));
7180
- for (const cmd of AVAILABLE_SLASH_COMMANDS) {
7181
- const pad = cmd.name.padEnd(12, " ");
7182
- console.log(` ${style.cyan(pad)} ${style.dim(cmd.description)}`);
7667
+ async function printHelp(ctx) {
7668
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
7669
+ console.log();
7670
+ console.log(style.bold(" Available Slash Commands:"));
7671
+ for (const cmd of AVAILABLE_SLASH_COMMANDS) {
7672
+ const pad = cmd.name.padEnd(12, " ");
7673
+ console.log(` ${style.cyan(pad)} ${style.dim(cmd.description)}`);
7674
+ }
7675
+ console.log();
7676
+ return;
7183
7677
  }
7184
- console.log();
7678
+ const items = AVAILABLE_SLASH_COMMANDS.map((c4) => ({
7679
+ id: c4.name,
7680
+ label: c4.name,
7681
+ description: c4.description
7682
+ }));
7683
+ const res = await promptInteractiveList({
7684
+ title: "\u26A1 Slash Commands Palette",
7685
+ items,
7686
+ mode: "select",
7687
+ maxVisible: 10,
7688
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Enter: run command \xB7 Esc: close"
7689
+ });
7690
+ if (res.action === "select" && res.selectedItem && ctx) {
7691
+ console.log(style.dim(`
7692
+ Executing ${res.selectedItem.id} ...
7693
+ `));
7694
+ await handleSlashCommand(res.selectedItem.id, ctx);
7695
+ }
7696
+ }
7697
+ async function handleReasoningCommand(ctx, arg) {
7698
+ if (!ctx.repl) {
7699
+ console.log(style.dim(`
7700
+ Reasoning display is hidden by default.
7701
+ `));
7702
+ return;
7703
+ }
7704
+ if (arg) {
7705
+ const lower = arg.toLowerCase();
7706
+ if (lower === "on" || lower === "show" || lower === "true") {
7707
+ ctx.repl.showReasoning = true;
7708
+ } else if (lower === "off" || lower === "hide" || lower === "false") {
7709
+ ctx.repl.showReasoning = false;
7710
+ } else {
7711
+ ctx.repl.showReasoning = !ctx.repl.showReasoning;
7712
+ }
7713
+ const stateStr2 = ctx.repl.showReasoning ? style.green("Visible") : style.yellow("Hidden (default)");
7714
+ console.log(`
7715
+ Reasoning display: [${stateStr2}]
7716
+ `);
7717
+ return;
7718
+ }
7719
+ const current = ctx.repl.showReasoning;
7720
+ const choice = await promptChoice({
7721
+ message: `AI Reasoning Stream (Currently: ${current ? "Visible" : "Hidden"}):`,
7722
+ choices: [
7723
+ { key: "h", label: "Hidden (in spinner)", value: false, isDefault: !current },
7724
+ { key: "v", label: "Visible (live stream)", value: true, isDefault: current },
7725
+ { key: "t", label: "Toggle state", value: !current }
7726
+ ],
7727
+ defaultIndex: current ? 1 : 0
7728
+ });
7729
+ ctx.repl.showReasoning = choice;
7730
+ const stateStr = ctx.repl.showReasoning ? style.green("Visible") : style.yellow("Hidden (default)");
7731
+ console.log(`
7732
+ Reasoning display updated to: [${stateStr}]
7733
+ `);
7185
7734
  }
7186
7735
  async function handleModelSelection(ctx, modelArg) {
7736
+ const credStore = new CredentialsStore;
7187
7737
  if (modelArg && modelArg.trim().length > 0) {
7188
7738
  const chosen = modelArg.trim();
7189
7739
  ctx.session.model = chosen;
7740
+ credStore.setDefaultModel(chosen);
7190
7741
  console.log(style.green(`
7191
- \u2713 Active model switched to: ${style.bold(chosen)}
7742
+ \u2713 Default model switched and saved to: ${style.bold(chosen)}
7192
7743
  `));
7193
7744
  return;
7194
7745
  }
7195
- const creds = new CredentialsStore().load();
7746
+ const creds = credStore.load();
7196
7747
  const baseUrl = creds?.baseUrl || process.env.GROUPY_BASE_URL || "https://api.groupy-hub.store/v1";
7197
7748
  const apiKey = creds?.accessToken || process.env.GROUPY_API_KEY;
7198
- console.log(style.dim(`
7199
- Fetching models from ${baseUrl}/models ...`));
7200
7749
  let models = [];
7201
7750
  try {
7202
7751
  const headers = {};
7203
7752
  if (apiKey)
7204
7753
  headers["Authorization"] = `Bearer ${apiKey}`;
7205
- const res = await fetch(`${baseUrl}/models`, { headers });
7206
- if (res.ok) {
7207
- const data = await res.json();
7754
+ const res2 = await fetch(`${baseUrl}/models`, { headers });
7755
+ if (res2.ok) {
7756
+ const data = await res2.json();
7208
7757
  models = data.data || [];
7209
7758
  }
7210
7759
  } catch {}
7211
- console.log();
7212
- console.log(style.bold(" Available Models:"));
7213
7760
  if (models.length === 0) {
7214
- console.log(style.dim(" (No remote models returned by provider)"));
7215
- console.log(` Current Model: ${style.brandBold(ctx.session.model)}`);
7216
- } else {
7217
- for (let i = 0;i < models.length; i++) {
7218
- const m = models[i];
7219
- const isActive = m.id.toLowerCase() === ctx.session.model.toLowerCase();
7220
- const tag = isActive ? style.green(" (active)") : "";
7221
- const owner = m.owned_by ? style.dim(` (${m.owned_by})`) : "";
7222
- console.log(` [${style.cyan(String(i + 1))}] ${style.bold(m.id)}${owner}${tag}`);
7223
- }
7224
- }
7225
- console.log();
7226
- const promptText = models.length > 0 ? ` Select model [1-${models.length}] or type model name: ` : ` Enter new model name: `;
7227
- const promptEditor = new InteractiveLineEditor({ promptSymbol: promptText });
7228
- const rawAnswer = await promptEditor.readLine();
7229
- const answer = rawAnswer.trim();
7230
- if (!answer) {
7231
- console.log(style.dim(` Model unchanged.
7232
- `));
7233
- return;
7761
+ models = [
7762
+ { id: "gemini-2.5-flash", owned_by: "google" },
7763
+ { id: "claude-3-5-sonnet", owned_by: "anthropic" },
7764
+ { id: "claude-3-7-sonnet", owned_by: "anthropic" },
7765
+ { id: "gpt-4o", owned_by: "openai" },
7766
+ { id: "deepseek-r1", owned_by: "deepseek" },
7767
+ { id: "qwen-2.5-coder", owned_by: "alibaba" }
7768
+ ];
7234
7769
  }
7235
- const num = parseInt(answer, 10);
7236
- if (!isNaN(num) && num >= 1 && num <= models.length) {
7237
- const chosen = models[num - 1].id;
7770
+ const items = models.map((m) => ({
7771
+ id: m.id,
7772
+ label: m.id,
7773
+ badge: m.owned_by ? `provider: ${m.owned_by}` : undefined,
7774
+ checked: m.id.toLowerCase() === ctx.session.model.toLowerCase()
7775
+ }));
7776
+ const activeIdx = Math.max(0, models.findIndex((m) => m.id.toLowerCase() === ctx.session.model.toLowerCase()));
7777
+ const res = await promptInteractiveList({
7778
+ title: `\uD83E\uDD16 Select Default AI Model (Current: ${ctx.session.model})`,
7779
+ items,
7780
+ mode: "select",
7781
+ defaultIndex: activeIdx,
7782
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Enter: set as default model \xB7 Esc: keep current"
7783
+ });
7784
+ if (res.action === "select" && res.selectedItem) {
7785
+ const chosen = res.selectedItem.id;
7238
7786
  ctx.session.model = chosen;
7787
+ credStore.setDefaultModel(chosen);
7239
7788
  console.log(style.green(`
7240
- \u2713 Active model switched to: ${style.bold(chosen)}
7789
+ \u2713 Default model switched and saved to: ${style.bold(chosen)}
7241
7790
  `));
7242
7791
  } else {
7243
- ctx.session.model = answer;
7244
- console.log(style.green(`
7245
- \u2713 Active model switched to: ${style.bold(answer)}
7792
+ console.log(style.dim(`
7793
+ Model unchanged.
7246
7794
  `));
7247
7795
  }
7248
7796
  }
@@ -7313,25 +7861,100 @@ async function printWorktrees(ctx) {
7313
7861
  return;
7314
7862
  }
7315
7863
  const worktrees = await manager.listWorktrees(ctx.session.cwd);
7316
- console.log();
7317
7864
  if (worktrees.length === 0) {
7318
- console.log(style.dim(" No Git Worktrees active or directory is not a Git repo."));
7319
- } else {
7865
+ console.log(style.dim(`
7866
+ No Git Worktrees active or directory is not a Git repo.
7867
+ `));
7868
+ return;
7869
+ }
7870
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
7871
+ console.log();
7320
7872
  console.log(style.bold(" Active Git Worktrees:"));
7321
7873
  for (const w of worktrees) {
7322
7874
  const typeTag = w.isMain ? style.cyan("[MAIN]") : style.yellow("[ISOLATED WORKTREE]");
7323
7875
  console.log(` \u2022 ${typeTag} ${style.bold(w.branch)}: ${style.dim(w.path)}`);
7324
7876
  }
7877
+ console.log();
7878
+ return;
7325
7879
  }
7326
- console.log();
7880
+ const items = worktrees.map((w) => ({
7881
+ id: w.branch,
7882
+ label: `${w.isMain ? "[MAIN]" : "[WORKTREE]"} ${w.branch}`,
7883
+ description: w.path,
7884
+ badge: w.isMain ? "main repo" : "isolated"
7885
+ }));
7886
+ await promptInteractiveList({
7887
+ title: `\uD83C\uDF33 Active Git Worktrees (${worktrees.length} branches)`,
7888
+ items,
7889
+ mode: "select",
7890
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Esc: exit"
7891
+ });
7327
7892
  }
7328
- function printRoles(ctx) {
7893
+ async function handleRolesCommand(ctx, roleArg) {
7329
7894
  const spawner = ctx.spawner;
7330
- if (!spawner) {
7331
- console.log(style.yellow("Multi-agent spawner not active."));
7895
+ const roleRegistry = spawner?.roleRegistry || new AgentRoleRegistry;
7896
+ const roles = roleRegistry.listRoles();
7897
+ if (roleArg) {
7898
+ const role = roleRegistry.getRole(roleArg.toLowerCase());
7899
+ if (role) {
7900
+ displayRoleDetails(role);
7901
+ return;
7902
+ } else {
7903
+ console.log(style.yellow(`
7904
+ Unknown role: "${roleArg}". Available roles: ${roles.map((r) => r.name).join(", ")}
7905
+ `));
7906
+ return;
7907
+ }
7908
+ }
7909
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
7910
+ printRoles(ctx);
7332
7911
  return;
7333
7912
  }
7334
- const roles = spawner.roleRegistry.listRoles();
7913
+ const items = roles.map((r) => {
7914
+ const tools4 = r.allowedToolNames ? r.allowedToolNames.join(", ") : "all tools";
7915
+ return {
7916
+ id: r.name,
7917
+ label: r.name,
7918
+ description: `${r.description} \xB7 [${tools4}]`,
7919
+ badge: r.name === "default" ? "primary" : undefined
7920
+ };
7921
+ });
7922
+ const res = await promptInteractiveList({
7923
+ title: `\uD83C\uDFAD Agent Roles & Specialized Personas (${roles.length} roles)`,
7924
+ items,
7925
+ mode: "select",
7926
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Enter: view details \xB7 Esc: close"
7927
+ });
7928
+ if (res.action === "select" && res.selectedItem) {
7929
+ const role = roleRegistry.getRole(res.selectedItem.id);
7930
+ if (role) {
7931
+ displayRoleDetails(role);
7932
+ }
7933
+ }
7934
+ }
7935
+ function displayRoleDetails(role) {
7936
+ const boxWidth = Math.min(process.stdout.columns ?? 80, 75);
7937
+ const border = "\u2500".repeat(Math.max(10, boxWidth - role.name.length - 16));
7938
+ const tools4 = role.allowedToolNames ? role.allowedToolNames.join(", ") : "all tools";
7939
+ const nicks = role.nicknameCandidates ? role.nicknameCandidates.join(", ") : "none";
7940
+ console.log();
7941
+ console.log(` ${style.cyan("\u250C\u2500\u2500")} ${style.bold(`Role: ${role.name}`)} ${style.cyan(border)}`);
7942
+ console.log(` ${style.cyan("\u2502")} ${style.bold("Description:")} ${role.description}`);
7943
+ console.log(` ${style.cyan("\u2502")} ${style.bold("Allowed Tools:")} ${style.dim(`[${tools4}]`)}`);
7944
+ console.log(` ${style.cyan("\u2502")} ${style.bold("Nicknames:")} ${style.dim(`[${nicks}]`)}`);
7945
+ console.log(` ${style.cyan("\u2502")}`);
7946
+ console.log(` ${style.cyan("\u2502")} ${style.bold("System Prompt:")}`);
7947
+ for (const line of role.systemPrompt.split(`
7948
+ `)) {
7949
+ console.log(` ${style.cyan("\u2502")} ${style.dim(line)}`);
7950
+ }
7951
+ console.log(` ${style.cyan("\u2514" + "\u2500".repeat(Math.max(10, boxWidth - 4)))}
7952
+ `);
7953
+ }
7954
+ function printRoles(ctx) {
7955
+ const spawner = ctx.spawner;
7956
+ const roleRegistry = spawner?.roleRegistry || new AgentRoleRegistry;
7957
+ const roles = roleRegistry.listRoles();
7335
7958
  console.log();
7336
7959
  console.log(style.bold(" Configured Agent Roles:"));
7337
7960
  for (const r of roles) {
@@ -7368,7 +7991,7 @@ function printAgents(ctx) {
7368
7991
  }
7369
7992
  console.log();
7370
7993
  }
7371
- function handleSkillsCommand(ctx, args) {
7994
+ async function handleSkillsCommand(ctx, args) {
7372
7995
  const loader = ctx.skillsLoader;
7373
7996
  if (!loader) {
7374
7997
  console.log(style.yellow("Skills loader not active."));
@@ -7416,10 +8039,14 @@ function handleSkillsCommand(ctx, args) {
7416
8039
  return;
7417
8040
  }
7418
8041
  const skills = loader.listSkills(ctx.session.cwd, { includeDisabled: true });
7419
- console.log();
7420
8042
  if (skills.length === 0) {
7421
- console.log(style.dim(" No domain skills discovered in .agents/skills/ or ~/.groupy/skills/"));
7422
- } else {
8043
+ console.log(style.dim(`
8044
+ No domain skills discovered in .agents/skills/ or ~/.groupy/skills/
8045
+ `));
8046
+ return;
8047
+ }
8048
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
8049
+ console.log();
7423
8050
  console.log(style.bold(" Available Domain Skills (Built-in, Workspace, & Global):"));
7424
8051
  for (const s of skills) {
7425
8052
  const isEnabled = !loader.isSkillDisabled(s.name);
@@ -7429,9 +8056,43 @@ function handleSkillsCommand(ctx, args) {
7429
8056
  console.log(` ${style.dim(s.description)}`);
7430
8057
  }
7431
8058
  console.log();
7432
- console.log(style.dim(" Commands: /skills disable <name> | /skills enable <name> | /skills toggle <name>"));
8059
+ return;
7433
8060
  }
7434
- console.log();
8061
+ const items = skills.map((s) => ({
8062
+ id: s.name,
8063
+ label: s.name,
8064
+ description: s.description,
8065
+ badge: s.scope,
8066
+ checked: !loader.isSkillDisabled(s.name)
8067
+ }));
8068
+ await promptInteractiveList({
8069
+ title: `\uD83E\uDDE9 Domain Skills Manager (${skills.length} available)`,
8070
+ items,
8071
+ mode: "toggle",
8072
+ maxVisible: 8,
8073
+ onToggle: (item) => {
8074
+ loader.toggleSkill(item.id);
8075
+ },
8076
+ onAction: (key) => {
8077
+ if (key === "a") {
8078
+ for (const s of skills)
8079
+ loader.enableSkill(s.name);
8080
+ for (const it of items)
8081
+ it.checked = true;
8082
+ } else if (key === "d") {
8083
+ for (const s of skills)
8084
+ loader.disableSkill(s.name);
8085
+ for (const it of items)
8086
+ it.checked = false;
8087
+ }
8088
+ return false;
8089
+ },
8090
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Space: toggle on/off \xB7 a: all on \xB7 d: all off \xB7 Enter/Esc: done"
8091
+ });
8092
+ const activeCount = skills.filter((s) => !loader.isSkillDisabled(s.name)).length;
8093
+ console.log(`
8094
+ ${style.green("\u2713")} Skills configuration updated: ${style.bold(String(activeCount))} active, ${style.dim(`${skills.length - activeCount} disabled`)}
8095
+ `);
7435
8096
  }
7436
8097
  function printMemories(ctx) {
7437
8098
  const store2 = ctx.memoryStore;
@@ -7451,24 +8112,63 @@ function printMemories(ctx) {
7451
8112
  }
7452
8113
  console.log();
7453
8114
  }
7454
- function printSessions(ctx) {
8115
+ async function printSessions(ctx) {
7455
8116
  const storage = ctx.storageManager;
7456
8117
  if (!storage) {
7457
8118
  console.log(style.yellow("Session persistence manager not active."));
7458
8119
  return;
7459
8120
  }
7460
8121
  const threads = storage.listSessions();
7461
- console.log();
7462
8122
  if (threads.length === 0) {
7463
- console.log(style.dim(" No saved sessions in SQLite database."));
7464
- } else {
8123
+ console.log(style.dim(`
8124
+ No saved sessions in SQLite database.
8125
+ `));
8126
+ return;
8127
+ }
8128
+ if (!process.stdin.isTTY || false || !process.stdin.readable) {
8129
+ console.log();
7465
8130
  console.log(style.bold(" Saved Sessions in SQLite Store:"));
7466
8131
  for (const t of threads) {
7467
8132
  const dateStr = new Date(t.updatedAt).toLocaleString();
7468
8133
  console.log(` \u2022 ${style.cyan(t.id)} [${style.dim(t.model)}] - ${style.dim(dateStr)} (${t.itemsCount} items)`);
7469
8134
  }
8135
+ console.log();
8136
+ return;
8137
+ }
8138
+ const items = threads.map((t) => {
8139
+ const dateStr = new Date(t.updatedAt).toLocaleString();
8140
+ return {
8141
+ id: t.id,
8142
+ label: t.id,
8143
+ description: `${t.model} \xB7 ${t.itemsCount} items \xB7 ${dateStr}`
8144
+ };
8145
+ });
8146
+ const res = await promptInteractiveList({
8147
+ title: `\uD83D\uDDC4\uFE0F Saved SQLite Sessions (${threads.length} total)`,
8148
+ items,
8149
+ mode: "select",
8150
+ onAction: (key, item, idx) => {
8151
+ if (key === "d") {
8152
+ storage.deleteSession(item.id);
8153
+ items.splice(idx, 1);
8154
+ console.log(style.yellow(`
8155
+ \u2715 Deleted session ${item.id}`));
8156
+ }
8157
+ return false;
8158
+ },
8159
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Enter: resume session \xB7 d: delete \xB7 Esc: exit"
8160
+ });
8161
+ if (res.action === "select" && res.selectedItem) {
8162
+ const session = storage.loadSession(res.selectedItem.id);
8163
+ if (session) {
8164
+ ctx.session.setHistory(session.items);
8165
+ if (session.thread.model)
8166
+ ctx.session.model = session.thread.model;
8167
+ console.log(style.green(`
8168
+ \u2713 Resumed past session: ${style.bold(res.selectedItem.id)} (${session.items.length} items)
8169
+ `));
8170
+ }
7470
8171
  }
7471
- console.log();
7472
8172
  }
7473
8173
  function printSessionStats(ctx) {
7474
8174
  const uptimeMs = ctx.repl ? Date.now() - ctx.repl.sessionStartTime : 0;
@@ -7503,38 +8203,6 @@ function printSessionStats(ctx) {
7503
8203
  console.log(style.bold(" \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
7504
8204
  console.log();
7505
8205
  }
7506
- async function handleAnimate(variantName) {
7507
- const chosen = variantName?.toLowerCase();
7508
- if (chosen && ALL_ANIMATION_VARIANTS.includes(chosen)) {
7509
- console.log(`
7510
- ${style.brand("\u25C6")} Playing 36-frame animation variant: ${style.bold(chosen)}...
7511
- `);
7512
- const anim2 = new AsciiAnimation({
7513
- variant: chosen,
7514
- frameTickMs: 60,
7515
- colorFn: (frame) => style.brand(frame)
7516
- });
7517
- await anim2.play(2500, { clearScreen: false });
7518
- console.log();
7519
- return;
7520
- }
7521
- console.log();
7522
- console.log(style.bold(" 36-Frame ASCII Art Animation Catalog:"));
7523
- for (const v of ALL_ANIMATION_VARIANTS) {
7524
- console.log(` \u2022 ${style.cyan(v)} - ${style.dim(`/animate ${v}`)}`);
7525
- }
7526
- console.log(`
7527
- ${style.dim("Playing random variant for 2 seconds...")}
7528
- `);
7529
- const anim = new AsciiAnimation({
7530
- variant: "default",
7531
- frameTickMs: 60,
7532
- colorFn: (frame) => style.brand(frame)
7533
- });
7534
- anim.pickRandomVariant();
7535
- await anim.play(2000);
7536
- console.log();
7537
- }
7538
8206
  async function handleSecurityCommand(ctx, args) {
7539
8207
  const sub = (args[0] || "scan").toLowerCase();
7540
8208
  const target = args[1] || ctx.session.cwd;
@@ -7757,184 +8425,97 @@ async function handleMcpCommand(ctx, args) {
7757
8425
  `));
7758
8426
  return;
7759
8427
  }
7760
- CliFormatter.printMcpServers(manager.listServers(), manager.getLoadedConfigFiles());
7761
- }
7762
-
7763
- // src/cli/ui/prompt.ts
7764
- import readline2 from "readline";
7765
- async function promptToolApproval(params) {
7766
- const options = [
7767
- { key: "a", label: "Yes, and don't ask again for anything (always-approve mode)", value: "always" },
7768
- { key: "y", label: "Yes, proceed", value: "yes", isDefault: true },
7769
- { key: "n", label: "No, reject (type to add feedback)", value: "no" }
7770
- ];
7771
- const title = params.description || `Tool Execution: ${params.toolName}`;
7772
- const command = params.command || params.toolName;
7773
- const BORDER = "\x1B[38;5;8m\u2502\x1B[0m";
7774
- const FG = "\x1B[38;2;225;225;225m";
7775
- const MUTED = "\x1B[38;2;139;139;144m";
7776
- const DIM = "\x1B[38;2;108;108;108m";
7777
- const RESET = "\x1B[0m";
7778
- console.log();
7779
- console.log(` ${BORDER} ${FG}${title}${RESET}`);
7780
- console.log(` ${BORDER} ${MUTED}${command}${RESET}`);
7781
- console.log(` ${BORDER}`);
7782
- const renderCard = (selected) => {
7783
- for (let i = 0;i < options.length; i++) {
7784
- const opt = options[i];
7785
- const active = i === selected;
7786
- const radio = active ? `${FG}(\u25CF)${RESET}` : `${DIM}(\u25CB)${RESET}`;
7787
- const num = `${FG}${i + 1}${RESET}`;
7788
- const label = active ? `\x1B[1m${FG}${opt.label}${RESET}` : `${MUTED}${opt.label}${RESET}`;
7789
- console.log(` ${BORDER} ${num} ${radio} ${label}`);
7790
- }
7791
- console.log(` ${BORDER}`);
7792
- console.log(` ${FG}${selected + 1}/${options.length}${RESET}${DIM}:select \u2502 ${FG}Ctrl+o${RESET}${DIM}:yolo \u2502 ${FG}Ctrl+c${RESET}${DIM}:cancel${RESET}`);
7793
- };
8428
+ const servers = manager.listServers();
8429
+ const configFiles = manager.getLoadedConfigFiles();
7794
8430
  if (!process.stdin.isTTY || false || !process.stdin.readable) {
7795
- renderCard(1);
7796
- return "yes";
7797
- }
7798
- return new Promise((resolve23) => {
7799
- let selectedIndex = 1;
7800
- readline2.emitKeypressEvents(process.stdin);
7801
- const wasRaw = process.stdin.isRaw;
7802
- try {
7803
- process.stdin.setRawMode(true);
7804
- } catch {}
7805
- process.stdin.resume();
7806
- const render = () => {
7807
- renderCard(selectedIndex);
7808
- };
7809
- const cleanup = (val) => {
7810
- process.stdin.removeListener("keypress", onKeypress);
7811
- try {
7812
- process.stdin.setRawMode(wasRaw ?? false);
7813
- } catch {}
7814
- console.log();
7815
- resolve23(val);
7816
- };
7817
- const onKeypress = (_str, key) => {
7818
- if (!key)
7819
- return;
7820
- if (key.ctrl && key.name === "c") {
7821
- cleanup("no");
7822
- return;
7823
- }
7824
- if (key.ctrl && key.name === "o") {
7825
- cleanup("always");
7826
- return;
7827
- }
7828
- if (key.name === "up") {
7829
- selectedIndex = (selectedIndex - 1 + options.length) % options.length;
7830
- process.stdout.write(`\x1B[5A`);
7831
- render();
7832
- return;
7833
- }
7834
- if (key.name === "down") {
7835
- selectedIndex = (selectedIndex + 1) % options.length;
7836
- process.stdout.write(`\x1B[5A`);
7837
- render();
7838
- return;
7839
- }
7840
- if (key.name === "return" || key.name === "enter" || _str === " ") {
7841
- cleanup(options[selectedIndex].value);
7842
- return;
7843
- }
7844
- if (_str === "1") {
7845
- cleanup(options[0].value);
7846
- return;
7847
- }
7848
- if (_str === "2") {
7849
- cleanup(options[1].value);
7850
- return;
7851
- }
7852
- if (_str === "3") {
7853
- cleanup(options[2].value);
7854
- return;
7855
- }
7856
- if (_str?.toLowerCase() === "y") {
7857
- cleanup("yes");
7858
- return;
7859
- }
7860
- if (_str?.toLowerCase() === "n") {
7861
- cleanup("no");
7862
- return;
7863
- }
7864
- if (_str?.toLowerCase() === "a") {
7865
- cleanup("always");
7866
- return;
7867
- }
7868
- };
7869
- process.stdin.on("keypress", onKeypress);
7870
- render();
7871
- });
7872
- }
7873
- async function promptUserQuestion(params) {
7874
- const { question, options = [] } = params;
7875
- const boxWidth = Math.min(process.stdout.columns ?? 80, 75);
7876
- const border = "\u2500".repeat(Math.max(10, boxWidth - 20));
7877
- console.log(`
7878
- ${style.cyan("\u250C\u2500\u2500")} ${style.bold("AI Question")} ${style.cyan(border)}`);
7879
- const qLines = question.split(`
7880
- `);
7881
- for (const line of qLines) {
7882
- console.log(` ${style.cyan("\u2502")} ${style.bold(line)}`);
7883
- }
7884
- if (options.length > 0) {
7885
- console.log(` ${style.cyan("\u2502")}`);
7886
- options.forEach((opt, idx) => {
7887
- const numTag = style.cyan(`[${idx + 1}]`);
7888
- const isRec = opt.includes("(Recommended)") || opt.includes("(recommended)");
7889
- const optText = isRec ? opt.replace(/\(Recommended\)/i, style.green("(Recommended)")) : opt;
7890
- console.log(` ${style.cyan("\u2502")} ${numTag} ${optText}`);
7891
- });
8431
+ CliFormatter.printMcpServers(servers, configFiles);
8432
+ return;
7892
8433
  }
7893
- console.log(` ${style.cyan("\u2514" + "\u2500".repeat(Math.max(10, boxWidth - 4)))}
7894
- `);
7895
- if (!process.stdin.isTTY || false || !process.stdin.readable) {
7896
- return options[0] || "yes";
8434
+ if (servers.length === 0) {
8435
+ CliFormatter.printMcpServers(servers, configFiles);
8436
+ return;
7897
8437
  }
7898
- return new Promise((resolve23) => {
7899
- const rl = readline2.createInterface({ input: process.stdin, output: process.stdout });
7900
- const promptLabel = options.length > 0 ? `Select [1-${options.length}] or type custom response: ` : `Your response: `;
7901
- rl.question(` ${style.bold(promptLabel)}`, (answer) => {
7902
- rl.close();
7903
- const trimmed = answer.trim();
7904
- if (!trimmed) {
7905
- const fallback = options[0] || "";
7906
- console.log(style.dim(` \u21B3 Default: ${fallback || "(empty)"}
7907
- `));
7908
- resolve23(fallback);
7909
- return;
7910
- }
7911
- const num = parseInt(trimmed, 10);
7912
- if (!isNaN(num) && num >= 1 && num <= options.length) {
7913
- const picked = options[num - 1];
7914
- console.log(style.green(` \u2714 Selected: ${picked}
7915
- `));
7916
- resolve23(picked);
7917
- return;
7918
- }
7919
- if (options.length === 2) {
7920
- if (/^(y|yes)$/i.test(trimmed)) {
7921
- console.log(style.green(` \u2714 Selected: ${options[0]}
7922
- `));
7923
- resolve23(options[0]);
7924
- return;
7925
- }
7926
- if (/^(n|no)$/i.test(trimmed)) {
7927
- console.log(style.green(` \u2714 Selected: ${options[1]}
7928
- `));
7929
- resolve23(options[1]);
7930
- return;
8438
+ const items = servers.map((s) => ({
8439
+ id: s.name,
8440
+ label: s.name,
8441
+ badge: s.connected ? "Connected" : "Disconnected",
8442
+ description: `${s.toolsCount} tools \xB7 ${s.resourcesCount} resources`,
8443
+ checked: s.connected
8444
+ }));
8445
+ const res = await promptInteractiveList({
8446
+ title: `\uD83D\uDD0C Connected MCP Servers (${servers.length} total)`,
8447
+ items,
8448
+ mode: "select",
8449
+ onAction: async (key, item) => {
8450
+ if (key === "t") {
8451
+ console.log(style.dim(`
8452
+ Pinging '${item.id}'...`));
8453
+ const testRes = await manager.pingServer(item.id);
8454
+ if (testRes.success) {
8455
+ console.log(style.green(` \u2713 PONG from '${item.id}' in ${testRes.durationMs}ms`));
8456
+ } else {
8457
+ console.log(style.red(` \u2715 Ping failed: ${testRes.error}`));
7931
8458
  }
7932
8459
  }
7933
- console.log(style.green(` \u2714 Answer: ${trimmed}
7934
- `));
7935
- resolve23(trimmed);
7936
- });
8460
+ return false;
8461
+ },
8462
+ customKeyHints: "\u2191/\u2193: navigate \xB7 Enter: inspect tools \xB7 t: ping test \xB7 Esc: exit"
7937
8463
  });
8464
+ if (res.action === "select" && res.selectedItem) {
8465
+ const client = manager.getClient(res.selectedItem.id);
8466
+ if (client) {
8467
+ CliFormatter.printMcpTools(res.selectedItem.id, client.getTools());
8468
+ }
8469
+ }
8470
+ }
8471
+ function printReleaseNotes() {
8472
+ const version = getCliVersion({ prefix: true });
8473
+ const ROSE2 = "\x1B[38;2;205;105;74m";
8474
+ const WHITE2 = "\x1B[38;2;255;255;255m";
8475
+ const GRAY2 = "\x1B[38;2;148;148;148m";
8476
+ const BOLD2 = "\x1B[1m";
8477
+ const RESET2 = "\x1B[0m";
8478
+ function stripAnsi2(str) {
8479
+ return str.replace(/\x1b\[[0-9;]*m/g, "");
8480
+ }
8481
+ function padLine(str, width) {
8482
+ const vis = stripAnsi2(str);
8483
+ return str + " ".repeat(Math.max(0, width - vis.length));
8484
+ }
8485
+ const totalInnerWidth = 74;
8486
+ const contentLines = [
8487
+ "",
8488
+ " " + BOLD2 + WHITE2 + "\uD83D\uDE80 What's New in " + version + " (Latest)" + RESET2,
8489
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Persistent Default AI Model" + RESET2 + ": Switch via " + ROSE2 + "/model" + RESET2 + " and save",
8490
+ " preference across sessions in ~/.groupy/credentials.json.",
8491
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Real-time Git Branch Detection" + RESET2 + ": Header displays active branch",
8492
+ " (\uE0A0 main) alongside user subscription tier (Groupy Pro / Max).",
8493
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Claude Code Terminal UI Parity" + RESET2 + ": Authentic pixel emblem, fieldset",
8494
+ " header box, user prompt badge pills, and streaming responses.",
8495
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Autonomous Sub-Agents & Roles" + RESET2 + ": Multi-agent spawner with roles",
8496
+ " (Pikaa, Heca, Bankli, Moli) and cryptographic action provenance.",
8497
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Model Context Protocol (MCP)" + RESET2 + ": Connect stdio & SSE servers with",
8498
+ " multi-config auto-discovery, tool hot-reloads, and ping tests.",
8499
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Isolated Git Worktrees" + RESET2 + ": Run risky tasks in isolated worktree",
8500
+ " branches without dirtying your main workspace (/worktrees).",
8501
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + BOLD2 + "Strix-Inspired Security Auditor" + RESET2 + ": Automated scanner for exposed",
8502
+ " secrets, eval(), and SQL injection vulnerabilities (/security).",
8503
+ "",
8504
+ " " + BOLD2 + WHITE2 + "\uD83D\uDCE6 Previous Highlights (v0.3.0 - v0.3.1)" + RESET2,
8505
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + "Unified CI/CD Pipeline" + RESET2 + ": Single automated release packager on merge.",
8506
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + "Interactive Question Flow" + RESET2 + ": Selectable multiple-choice dialogs.",
8507
+ " " + ROSE2 + "\u2022" + RESET2 + " " + WHITE2 + "Persistent Memory Store" + RESET2 + ": Learned user preferences in markdown.",
8508
+ "",
8509
+ " " + GRAY2 + "Tip: Type " + ROSE2 + "/help" + GRAY2 + " to view all available commands." + RESET2
8510
+ ];
8511
+ const topDashes = Math.max(2, totalInnerWidth - (15 + version.length + 14));
8512
+ console.log("");
8513
+ console.log(" " + ROSE2 + "\u250C\u2500 " + ROSE2 + BOLD2 + "Groupy Code Release Notes" + RESET2 + " " + GRAY2 + version + RESET2 + " " + ROSE2 + "\u2500".repeat(topDashes) + "\u2510" + RESET2);
8514
+ for (const line of contentLines) {
8515
+ console.log(" " + ROSE2 + "\u2502" + RESET2 + padLine(line, totalInnerWidth) + ROSE2 + "\u2502" + RESET2);
8516
+ }
8517
+ console.log(" " + ROSE2 + "\u2514" + "\u2500".repeat(totalInnerWidth) + "\u2518" + RESET2);
8518
+ console.log("");
7938
8519
  }
7939
8520
 
7940
8521
  // src/cli/ui/markdown.ts
@@ -8207,9 +8788,9 @@ class MarkdownHighlighter {
8207
8788
  }
8208
8789
 
8209
8790
  // src/cli/update-checker.ts
8210
- import { existsSync as existsSync20, mkdirSync as mkdirSync10, readFileSync as readFileSync15, writeFileSync as writeFileSync7 } from "fs";
8211
- import { homedir as homedir8 } from "os";
8212
- import { join as join11 } from "path";
8791
+ import { existsSync as existsSync19, mkdirSync as mkdirSync10, readFileSync as readFileSync14, writeFileSync as writeFileSync7 } from "fs";
8792
+ import { homedir as homedir9 } from "os";
8793
+ import { join as join10 } from "path";
8213
8794
  var CHECK_INTERVAL_MS = 12 * 60 * 60 * 1000;
8214
8795
  function parseSemver(v) {
8215
8796
  const clean = v.replace(/^v/, "").trim();
@@ -8230,8 +8811,8 @@ function isNewerVersion(current, remote) {
8230
8811
  return remPatch > curPatch;
8231
8812
  }
8232
8813
  function getUpdateCachePath() {
8233
- const baseDir = process.env.PIKAA_HOME || process.env.GROUPY_HOME || join11(homedir8(), ".pikaa");
8234
- return join11(baseDir, "update-cache.json");
8814
+ const baseDir = process.env.PIKAA_HOME || process.env.GROUPY_HOME || join10(homedir9(), ".pikaa");
8815
+ return join10(baseDir, "update-cache.json");
8235
8816
  }
8236
8817
  async function fetchLatestNpmVersion(packageName, timeoutMs = 1500) {
8237
8818
  const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`;
@@ -8260,13 +8841,13 @@ async function checkForUpdates(options = {}) {
8260
8841
  }
8261
8842
  const meta = getPackageMetadata();
8262
8843
  const currentVersion = options.currentVersion || meta.version;
8263
- const packageName = options.packageName || (meta.name.startsWith("@") ? meta.name : `@pikaa-ai/${meta.name}`);
8844
+ const packageName = options.packageName || "@pikaa-ai/pikaa";
8264
8845
  const cachePath = options.cachePath || getUpdateCachePath();
8265
8846
  const now = Date.now();
8266
8847
  let cached = null;
8267
- if (!options.force && existsSync20(cachePath)) {
8848
+ if (!options.force && existsSync19(cachePath)) {
8268
8849
  try {
8269
- const raw = JSON.parse(readFileSync15(cachePath, "utf8"));
8850
+ const raw = JSON.parse(readFileSync14(cachePath, "utf8"));
8270
8851
  if (raw && typeof raw.lastChecked === "number" && typeof raw.latestVersion === "string") {
8271
8852
  cached = raw;
8272
8853
  if (now - cached.lastChecked < CHECK_INTERVAL_MS) {
@@ -8294,8 +8875,8 @@ async function checkForUpdates(options = {}) {
8294
8875
  return null;
8295
8876
  }
8296
8877
  try {
8297
- const parentDir = join11(cachePath, "..");
8298
- if (!existsSync20(parentDir)) {
8878
+ const parentDir = join10(cachePath, "..");
8879
+ if (!existsSync19(parentDir)) {
8299
8880
  mkdirSync10(parentDir, { recursive: true });
8300
8881
  }
8301
8882
  const cacheData = {
@@ -8364,7 +8945,7 @@ class CliRepl {
8364
8945
  this.turnToolCalls = [];
8365
8946
  this.turnFilesModified.clear();
8366
8947
  this.turnCharsOut = 0;
8367
- this.spinner.start("Thinking...");
8948
+ this.spinner.start("Thinking...", this.turnStartTime);
8368
8949
  break;
8369
8950
  case "ReasoningDelta":
8370
8951
  case "AgentReasoningDelta":
@@ -8408,20 +8989,17 @@ class CliRepl {
8408
8989
  `));
8409
8990
  this.reasoningStarted = false;
8410
8991
  }
8411
- this.spinner.stop();
8412
8992
  this.turnToolCalls.push(msg.toolName);
8413
8993
  this.activeToolArgs = msg.arguments || {};
8414
8994
  if ((msg.toolName === "apply_patch" || msg.toolName === "write_file") && msg.arguments && typeof msg.arguments.path === "string") {
8415
8995
  this.turnFilesModified.add(msg.arguments.path);
8416
8996
  }
8417
- console.log();
8418
- formatTaskStepStart(this.turnToolCalls.length, msg.toolName, msg.arguments);
8419
- this.spinner.start(`Executing [${this.turnToolCalls.length}] ${msg.toolName}...`);
8997
+ this.spinner.start(`Executing [${this.turnToolCalls.length}] ${msg.toolName}...`, this.turnStartTime);
8420
8998
  break;
8421
8999
  case "ToolCallFinished":
8422
9000
  this.spinner.stop();
8423
9001
  formatTaskStepFinish(this.turnToolCalls.length, msg.toolName, this.activeToolArgs, msg.output, msg.isError);
8424
- this.spinner.start("Thinking deeply...");
9002
+ this.spinner.start("Thinking deeply...", this.turnStartTime);
8425
9003
  break;
8426
9004
  case "InteractiveApprovalRequired":
8427
9005
  case "ApprovalRequired":
@@ -8435,7 +9013,7 @@ class CliRepl {
8435
9013
  case "PlanUpdated":
8436
9014
  this.spinner.stop();
8437
9015
  formatTaskProgressPlan(msg.plan, msg.explanation);
8438
- this.spinner.start("Executing next step...");
9016
+ this.spinner.start("Executing next step...", this.turnStartTime);
8439
9017
  break;
8440
9018
  case "TurnCompleted":
8441
9019
  if (this.reasoningStarted) {
@@ -8471,9 +9049,9 @@ class CliRepl {
8471
9049
  filesModified: Array.from(this.turnFilesModified)
8472
9050
  });
8473
9051
  if (this.turnDoneResolver) {
8474
- const resolve23 = this.turnDoneResolver;
9052
+ const resolve22 = this.turnDoneResolver;
8475
9053
  this.turnDoneResolver = undefined;
8476
- resolve23();
9054
+ resolve22();
8477
9055
  }
8478
9056
  break;
8479
9057
  case "Error":
@@ -8489,9 +9067,9 @@ class CliRepl {
8489
9067
  console.error(style.red(`Error: ${msg.message}
8490
9068
  `));
8491
9069
  if (this.turnDoneResolver) {
8492
- const resolve23 = this.turnDoneResolver;
9070
+ const resolve22 = this.turnDoneResolver;
8493
9071
  this.turnDoneResolver = undefined;
8494
- resolve23();
9072
+ resolve22();
8495
9073
  }
8496
9074
  break;
8497
9075
  }
@@ -8503,10 +9081,10 @@ class CliRepl {
8503
9081
  if (decision === "always") {
8504
9082
  this.session.execPolicy.addRule(/.*/, "allow", "User allowed all actions for this session");
8505
9083
  this.session.resolveApproval(msg.approvalId, true);
8506
- this.spinner.start(`Executing approved action (auto-approved for session)...`);
9084
+ this.spinner.start(`Executing approved action (auto-approved for session)...`, this.turnStartTime);
8507
9085
  } else if (decision === "yes") {
8508
9086
  this.session.resolveApproval(msg.approvalId, true);
8509
- this.spinner.start(`Executing approved action...`);
9087
+ this.spinner.start(`Executing approved action...`, this.turnStartTime);
8510
9088
  } else {
8511
9089
  this.session.resolveApproval(msg.approvalId, false);
8512
9090
  console.log(style.dim(" Action rejected by user."));
@@ -8522,19 +9100,22 @@ class CliRepl {
8522
9100
  options: msg.options
8523
9101
  });
8524
9102
  this.session.resolveUserQuestion(msg.questionId, answer);
8525
- this.spinner.start(`Processing response and continuing...`);
9103
+ this.spinner.start(`Processing response and continuing...`, this.turnStartTime);
8526
9104
  } catch {
8527
9105
  this.session.resolveUserQuestion(msg.questionId, "");
8528
9106
  }
8529
9107
  }
8530
9108
  async start() {
8531
- const creds = new CredentialsStore().load();
8532
- const accountUser = creds?.user?.username || creds?.user?.email || (creds?.accessToken ? "Authenticated" : undefined);
9109
+ const credStore = new CredentialsStore;
9110
+ const userInfo = credStore.getUser();
9111
+ const accountUser = userInfo?.username || (userInfo?.email ? userInfo.email.split("@")[0] : undefined);
9112
+ const userPlan = userInfo?.plan;
8533
9113
  await renderAnimatedGroupyBanner({
8534
9114
  user: accountUser,
8535
9115
  role: this.role,
8536
9116
  model: this.session.model,
8537
- cwd: this.session.cwd
9117
+ cwd: this.session.cwd,
9118
+ plan: userPlan
8538
9119
  });
8539
9120
  checkForUpdates().then((update) => {
8540
9121
  if (update?.updateAvailable) {
@@ -8554,9 +9135,9 @@ class CliRepl {
8554
9135
  `));
8555
9136
  this.isProcessing = false;
8556
9137
  if (this.turnDoneResolver) {
8557
- const resolve23 = this.turnDoneResolver;
9138
+ const resolve22 = this.turnDoneResolver;
8558
9139
  this.turnDoneResolver = undefined;
8559
- resolve23();
9140
+ resolve22();
8560
9141
  }
8561
9142
  }
8562
9143
  }
@@ -8588,8 +9169,8 @@ class CliRepl {
8588
9169
  }
8589
9170
  }
8590
9171
  try {
8591
- const turnPromise = new Promise((resolve23) => {
8592
- this.turnDoneResolver = resolve23;
9172
+ const turnPromise = new Promise((resolve22) => {
9173
+ this.turnDoneResolver = resolve22;
8593
9174
  });
8594
9175
  await this.session.submit({
8595
9176
  type: "TurnInput",
@@ -8623,7 +9204,7 @@ async function main() {
8623
9204
  const args = process.argv.slice(2);
8624
9205
  const credStore = new CredentialsStore;
8625
9206
  const savedCreds = credStore.load();
8626
- let model = process.env.GROUPY_MODEL || process.env.OPENAI_MODEL || "groupy";
9207
+ let model = process.env.GROUPY_MODEL || process.env.OPENAI_MODEL || savedCreds?.defaultModel || savedCreds?.model || "groupy";
8627
9208
  let baseUrl = process.env.GROUPY_BASE_URL || process.env.OPENAI_BASE_URL || savedCreds?.baseUrl;
8628
9209
  let apiKey = process.env.GROUPY_API_KEY || process.env.OPENAI_API_KEY || savedCreds?.accessToken;
8629
9210
  let explicitBaseUrl;
@@ -8677,7 +9258,7 @@ async function main() {
8677
9258
  explicitApiKey = args[++i];
8678
9259
  apiKey = explicitApiKey || apiKey;
8679
9260
  } else if (arg === "--cwd" || arg === "-C") {
8680
- cwd = resolve23(args[++i] || cwd);
9261
+ cwd = resolve22(args[++i] || cwd);
8681
9262
  } else if (arg === "--role" || arg === "-r") {
8682
9263
  role = args[++i] || role;
8683
9264
  } else if (arg === "--mcp") {
@@ -8703,11 +9284,11 @@ async function main() {
8703
9284
  const mcpManager = new McpManager;
8704
9285
  const candidateConfigs = [
8705
9286
  mcpConfigFile,
8706
- resolve23(cwd, ".mcp.json"),
8707
- resolve23(cwd, "mcp_config.json")
9287
+ resolve22(cwd, ".mcp.json"),
9288
+ resolve22(cwd, "mcp_config.json")
8708
9289
  ].filter(Boolean);
8709
9290
  for (const cfg of candidateConfigs) {
8710
- if (existsSync21(cfg)) {
9291
+ if (existsSync20(cfg)) {
8711
9292
  try {
8712
9293
  await mcpManager.loadConfigFile(cfg);
8713
9294
  mcpManager.registerToolsIntoRouter(tools4);