systemlink-cli 1.25.0__tar.gz → 1.26.0__tar.gz

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 (157) hide show
  1. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/PKG-INFO +1 -1
  2. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/pyproject.toml +1 -1
  3. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/_version.py +1 -1
  4. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/config_click.py +3 -6
  5. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/platform.py +1 -1
  6. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/angular-ui-packages.md +1 -1
  7. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/overview.md +2 -2
  8. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_bootstrap.py +25 -8
  9. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/README.md +8 -0
  10. systemlink_cli-1.26.0/slcli/webapp_templates/angular/blank/scripts/filter-sbom.js +54 -0
  11. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/LICENSE +0 -0
  12. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/dff-editor/editor.js +0 -0
  13. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/dff-editor/index.html +0 -0
  14. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/__init__.py +0 -0
  15. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/__main__.py +0 -0
  16. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/alarm_click.py +0 -0
  17. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/asset_click.py +0 -0
  18. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/cli_formatters.py +0 -0
  19. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/cli_utils.py +0 -0
  20. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/comment_click.py +0 -0
  21. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/completion_click.py +0 -0
  22. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/config.py +0 -0
  23. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/dataframe_click.py +0 -0
  24. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/dff_click.py +0 -0
  25. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/dff_decorators.py +0 -0
  26. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/example_click.py +0 -0
  27. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/example_loader.py +0 -0
  28. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/example_provisioner.py +0 -0
  29. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/README.md +0 -0
  30. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/_schema/schema-v1.0.json +0 -0
  31. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-1/README.md +0 -0
  32. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-1/config.yaml +0 -0
  33. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-2/README.md +0 -0
  34. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-2/config.yaml +0 -0
  35. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/config.yaml +0 -0
  36. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/leakage-current-results.json +0 -0
  37. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/overvoltage-results.json +0 -0
  38. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/product-xyz-compliance-report.json +0 -0
  39. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/product-xyz-specification.csv +0 -0
  40. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/demo-data-3/thermal-response-results.json +0 -0
  41. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
  42. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
  43. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
  44. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
  45. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
  46. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
  47. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
  48. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
  49. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
  50. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
  51. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/feed_click.py +0 -0
  52. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/file_click.py +0 -0
  53. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/function_click.py +0 -0
  54. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/function_templates.py +0 -0
  55. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/main.py +0 -0
  56. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/mcp_click.py +0 -0
  57. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/mcp_reachability.py +0 -0
  58. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/mcp_server.py +0 -0
  59. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/notebook_click.py +0 -0
  60. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/pkce.py +0 -0
  61. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/policy_click.py +0 -0
  62. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/policy_utils.py +0 -0
  63. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/profiles.py +0 -0
  64. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/response_handlers.py +0 -0
  65. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/rich_output.py +0 -0
  66. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/routine_click.py +0 -0
  67. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skill_click.py +0 -0
  68. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/SKILL.md +0 -0
  69. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
  70. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/commands.md +0 -0
  71. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
  72. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/example-authoring.md +0 -0
  73. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/filtering.md +0 -0
  74. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/import-specs.min.json +0 -0
  75. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/job-debugging/overview.md +0 -0
  76. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/nipkg/overview.md +0 -0
  77. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/notebook/interfaces.md +0 -0
  78. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/notebook/notebook-patterns.md +0 -0
  79. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/notebook/overview.md +0 -0
  80. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/python-test/overview.md +0 -0
  81. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/routine-examples.md +0 -0
  82. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/troubleshooting.md +0 -0
  83. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/deployment.md +0 -0
  84. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/layout-patterns.md +0 -0
  85. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/nimble-angular.md +0 -0
  86. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/systemlink-services.md +0 -0
  87. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/references/webapp/troubleshooting.md +0 -0
  88. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/skills/slcli/scripts/spec_import_helper.py +0 -0
  89. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/spec_click.py +0 -0
  90. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/ssl_trust.py +0 -0
  91. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/state_click.py +0 -0
  92. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/system_click.py +0 -0
  93. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/system_query_utils.py +0 -0
  94. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/systemlink-logo.svg +0 -0
  95. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/table_utils.py +0 -0
  96. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/tag_click.py +0 -0
  97. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/templates_click.py +0 -0
  98. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/testmonitor_click.py +0 -0
  99. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/universal_handlers.py +0 -0
  100. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/user_click.py +0 -0
  101. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/utils.py +0 -0
  102. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/web_editor.py +0 -0
  103. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_click.py +0 -0
  104. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/.gitignore +0 -0
  105. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/angular.json +0 -0
  106. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/package.json +0 -0
  107. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/app-routing.module.ts +0 -0
  108. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/app.component.html +0 -0
  109. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/app.component.scss +0 -0
  110. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/app.component.ts +0 -0
  111. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/app.module.ts +0 -0
  112. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.html +0 -0
  113. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.scss +0 -0
  114. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.ts +0 -0
  115. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/state/app-view-state.service.ts +0 -0
  116. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/systemlink-context.service.ts +0 -0
  117. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/theme-sync.service.ts +0 -0
  118. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/webapp-home-data.service.ts +0 -0
  119. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.html +0 -0
  120. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.scss +0 -0
  121. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.ts +0 -0
  122. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.html +0 -0
  123. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.scss +0 -0
  124. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.ts +0 -0
  125. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.html +0 -0
  126. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.scss +0 -0
  127. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.ts +0 -0
  128. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.html +0 -0
  129. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.scss +0 -0
  130. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.ts +0 -0
  131. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.html +0 -0
  132. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.scss +0 -0
  133. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.ts +0 -0
  134. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.html +0 -0
  135. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.scss +0 -0
  136. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.ts +0 -0
  137. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.html +0 -0
  138. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.scss +0 -0
  139. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.ts +0 -0
  140. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.html +0 -0
  141. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.scss +0 -0
  142. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.ts +0 -0
  143. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.html +0 -0
  144. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.scss +0 -0
  145. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.ts +0 -0
  146. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/app/shared/states/view-state.model.ts +0 -0
  147. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/assets/README.md +0 -0
  148. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/index.html +0 -0
  149. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/main.ts +0 -0
  150. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/src/styles.scss +0 -0
  151. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/tsconfig.app.json +0 -0
  152. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/webapp_templates/angular/blank/tsconfig.json +0 -0
  153. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/workflow_preview.py +0 -0
  154. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/workflows_click.py +0 -0
  155. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/workitem_click.py +0 -0
  156. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/workspace_click.py +0 -0
  157. {systemlink_cli-1.25.0 → systemlink_cli-1.26.0}/slcli/workspace_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: systemlink-cli
3
- Version: 1.25.0
3
+ Version: 1.26.0
4
4
  Summary: SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates.
5
5
  License-File: LICENSE
6
6
  Author: Fred Visser
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "systemlink-cli"
3
- version = "1.25.0"
3
+ version = "1.26.0"
4
4
  description = "SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates."
5
5
  authors = ["Fred Visser <fred.visser@emerson.com>"]
6
6
  packages = [{ include = "slcli" }]
@@ -1,4 +1,4 @@
1
1
  """Version information for slcli."""
2
2
 
3
3
  # This file is auto-generated. Do not edit manually.
4
- __version__ = "1.25.0"
4
+ __version__ = "1.26.0"
@@ -179,10 +179,7 @@ def _trust_certificate_if_requested(
179
179
 
180
180
  try:
181
181
  save_managed_certificate(certificate)
182
- if auth_scheme == "bearer":
183
- retry_status = check_web_server_auth(url, credential, auth_scheme=auth_scheme)
184
- else:
185
- retry_status = check_service_status(url, credential, auth_scheme=auth_scheme)
182
+ retry_status = check_service_status(url, credential, auth_scheme=auth_scheme)
186
183
  except (OSError, ValueError) as exc:
187
184
  _exit_with_validation_error(
188
185
  f"Could not save the trusted certificate: {exc}. Profile was not saved.",
@@ -306,10 +303,10 @@ def _add_profile_impl(
306
303
 
307
304
  assert isinstance(api_key, str)
308
305
 
309
- # Validate PKCE against the Web Server identity route; API-key login retains API probes.
306
+ # PKCE uses the Web URL for bearer service probes; API-key login uses the API URL.
310
307
  click.echo("Checking server connectivity and services...")
311
308
  if auth_mode == "pkce":
312
- status = check_web_server_auth(web_url, api_key, auth_scheme="bearer")
309
+ status = check_service_status(web_url, api_key, auth_scheme="bearer")
313
310
  else:
314
311
  status = check_service_status(url, api_key)
315
312
 
@@ -422,7 +422,7 @@ def _get_service_status_snapshot(force_refresh: bool = False) -> Optional[Dict[s
422
422
 
423
423
  _, api_url, credential, auth_scheme = api_context
424
424
  if auth_scheme == "bearer":
425
- status = check_web_server_auth(api_url, credential, auth_scheme)
425
+ status = check_service_status(api_url, credential, auth_scheme)
426
426
  else:
427
427
  status = check_service_status(api_url, credential)
428
428
  _save_service_status_snapshot(api_context, status)
@@ -154,7 +154,7 @@ Published Spright icon directives currently include:
154
154
 
155
155
  ### `@ni/ok-angular`
156
156
 
157
- Published Angular wrappers in `@ni/ok-angular@2.5.0` currently include:
157
+ Published Angular wrappers in `@ni/ok-angular@2.5.4` currently include:
158
158
 
159
159
  | Tag | Angular symbol | Import path | Use |
160
160
  | --------------------------- | ----------------------------- | --------------------------------------- | -------------------------------------------- |
@@ -77,11 +77,11 @@ For the currently supported path, standardize on:
77
77
 
78
78
  - Angular 20.x
79
79
  - Node 24+
80
- - `@ni/nimble-angular` 33.4.x
80
+ - `@ni/nimble-angular` 33.5.x
81
81
  - `@ni/nimble-components` 35.12.x
82
82
  - `@ni/unit-format` 1.0.5+
83
83
  - `@ni/spright-angular` 9.5.x
84
- - `@ni/ok-angular` 2.5.0+
84
+ - `@ni/ok-angular` 2.5.4+
85
85
  - `@ni/systemlink-clients-ts` 3.0.2
86
86
  - `@angular/build` for the hosted application builder
87
87
  - `@angular/localize` installed and added to build polyfills
@@ -28,18 +28,19 @@ _WEBAPP_DEFAULT_FEATURE_PACKS = "nimble,clients,ok"
28
28
  _WEBAPP_SUPPORTED_ANGULAR_MAJOR = "20"
29
29
  _WEBAPP_VERSION_MANIFEST: Dict[str, Dict[str, str]] = {
30
30
  "20": {
31
- "angular": "^20.3.26",
31
+ "angular": "^20.3.29",
32
32
  "typescript": "~5.9.3",
33
33
  "zoneJs": "~0.15.1",
34
34
  "rxjs": "~7.8.2",
35
35
  "tslib": "^2.8.1",
36
- "angularBuild": "^20.3.32",
37
- "nimbleAngular": "~33.4.4",
38
- "nimbleComponents": "~35.12.3",
39
- "okAngular": "2.5.0",
36
+ "angularBuild": "^20.3.34",
37
+ "cyclonedxNpm": "~6.0.1",
38
+ "nimbleAngular": "~33.5.0",
39
+ "nimbleComponents": "~35.12.7",
40
+ "okAngular": "2.5.4",
40
41
  "unitFormat": "^1.0.5",
41
42
  "systemlinkClients": "3.0.2",
42
- "sprightAngular": "9.5.5",
43
+ "sprightAngular": "9.5.9",
43
44
  "nodeEngine": ">=24",
44
45
  }
45
46
  }
@@ -775,6 +776,7 @@ This app was generated by `slcli webapp new {app_name}` as a hosted Angular 20 s
775
776
  - `@angular/localize/init` configured for the build polyfill path
776
777
  - Nimble fonts imported in `src/styles.scss`
777
778
  - modern Angular application builders configured for the hosted scaffold
779
+ - CycloneDX npm generator for a runtime dependency SBOM
778
780
  - initial bundle warning budget tuned for the included starter shell
779
781
  - shared loading, error, and empty states
780
782
  - SystemLink context and theme sync services under `src/app/core/systemlink/`
@@ -788,9 +790,16 @@ This app was generated by `slcli webapp new {app_name}` as a hosted Angular 20 s
788
790
 
789
791
  ```bash
790
792
  npm install
793
+ npm run sbom
791
794
  npm run build
792
795
  ```
793
796
 
797
+ `npm run sbom` writes a runtime-only CycloneDX document to the project-root
798
+ `sbom.cdx.json`, outside `dist/`. Development-marked packages are removed after
799
+ CycloneDX generation. The `webapp new` command runs it automatically after installing dependencies. Use
800
+ `--skip-install` when you want to generate files without installing dependencies
801
+ or creating the SBOM yet.
802
+
794
803
  The generated scaffold intentionally omits a default test runner setup so `npm install`
795
804
  does not pull in the deprecated Karma/Jasmine stack. Add your preferred test tooling when
796
805
  you start writing app-specific tests.
@@ -910,6 +919,7 @@ def _base_angular_dev_dependencies(angular_major: str) -> Dict[str, str]:
910
919
  "@angular/cli": angular_version,
911
920
  "@angular/compiler-cli": angular_version,
912
921
  "@angular/localize": angular_version,
922
+ "@cyclonedx/cyclonedx-npm": manifest["cyclonedxNpm"],
913
923
  "typescript": manifest["typescript"],
914
924
  }
915
925
 
@@ -959,6 +969,11 @@ def _customize_generated_package_json(
959
969
  package_json["scripts"] = {
960
970
  "start": "ng serve --host 0.0.0.0",
961
971
  "build": "ng build",
972
+ "sbom": (
973
+ "cyclonedx-npm --omit dev --output-format JSON "
974
+ "--output-file sbom.cdx.json --validate --output-reproducible "
975
+ "&& node scripts/filter-sbom.js sbom.cdx.json"
976
+ ),
962
977
  "publish:webapp": _publish_command_for_directory(
963
978
  project_name, publish_name, workspace_name
964
979
  ),
@@ -1098,6 +1113,7 @@ def _emit_webapp_new_dry_run(
1098
1113
  click.echo(" - Nimble fonts in src/styles.scss")
1099
1114
  click.echo(" - @angular/build application builder with inlineCritical disabled")
1100
1115
  click.echo(" - hash routing enabled unless --routing path is requested")
1116
+ click.echo(" - runtime-only CycloneDX SBOM generated after npm install")
1101
1117
 
1102
1118
 
1103
1119
  def _generate_new_webapp(
@@ -1191,6 +1207,7 @@ def _generate_new_webapp(
1191
1207
 
1192
1208
  if not skip_install:
1193
1209
  _run_webapp_local_command(target_dir, ["npm", "install"], "npm install")
1210
+ _run_webapp_local_command(target_dir, ["npm", "run", "sbom"], "npm run sbom")
1194
1211
  _run_webapp_local_command(target_dir, ["npm", "run", "build"], "npm run build")
1195
1212
 
1196
1213
  result_data: Dict[str, Any] = {
@@ -1202,9 +1219,9 @@ def _generate_new_webapp(
1202
1219
  ),
1203
1220
  }
1204
1221
  if skip_install:
1205
- result_data["Validation"] = "Skipped npm install and npm run build"
1222
+ result_data["Validation"] = "Skipped npm install, npm run sbom, and npm run build"
1206
1223
  else:
1207
- result_data["Validation"] = "npm run build passed"
1224
+ result_data["Validation"] = "npm run sbom and npm run build passed"
1208
1225
  if plugin_manager:
1209
1226
  result_data["Pack command"] = "npm run pack:webapp"
1210
1227
 
@@ -13,6 +13,7 @@ This app was generated by `slcli webapp new {{APP_NAME}}` as a hosted Angular 20
13
13
  - `@angular/localize/init` configured for the build polyfill path
14
14
  - Nimble fonts imported in `src/styles.scss`
15
15
  - modern Angular application builders configured for the hosted scaffold
16
+ - CycloneDX npm generator for a runtime dependency SBOM
16
17
  - initial bundle warning budget tuned for the included six-route starter shell
17
18
  - shared loading, error, and empty states
18
19
  - SystemLink context and theme sync services under `src/app/core/systemlink/`
@@ -43,9 +44,16 @@ src/
43
44
 
44
45
  ```bash
45
46
  npm install
47
+ npm run sbom
46
48
  npm run build
47
49
  ```
48
50
 
51
+ `npm run sbom` writes a runtime-only CycloneDX document to the project-root
52
+ `sbom.cdx.json`, outside `dist/`. Development-marked packages are removed after
53
+ CycloneDX generation. The `webapp new` command runs it automatically after installing dependencies. Use
54
+ `--skip-install` when you want to generate files without installing dependencies
55
+ or creating the SBOM yet.
56
+
49
57
  The generated scaffold intentionally omits a default test runner setup so `npm install`
50
58
  does not pull in the deprecated Karma/Jasmine stack. Add your preferred test tooling when
51
59
  you start writing app-specific tests.
@@ -0,0 +1,54 @@
1
+ const fs = require("fs");
2
+
3
+ const inputPath = process.argv[2] || "sbom.cdx.json";
4
+ const bom = JSON.parse(fs.readFileSync(inputPath, "utf8"));
5
+
6
+ function collectComponentRefs(component, refs) {
7
+ if (component["bom-ref"]) {
8
+ refs.add(component["bom-ref"]);
9
+ }
10
+
11
+ for (const child of component.components || []) {
12
+ collectComponentRefs(child, refs);
13
+ }
14
+ }
15
+
16
+ function collectDevelopmentRefs(components, refs) {
17
+ for (const component of components || []) {
18
+ const isDevelopment =
19
+ (component.properties || []).some(
20
+ (property) =>
21
+ property.name === "cdx:npm:package:development" && property.value === "true",
22
+ );
23
+
24
+ if (isDevelopment) {
25
+ collectComponentRefs(component, refs);
26
+ } else {
27
+ collectDevelopmentRefs(component.components, refs);
28
+ }
29
+ }
30
+ }
31
+
32
+ function filterComponents(components, refs) {
33
+ return (components || [])
34
+ .filter((component) => !refs.has(component["bom-ref"]))
35
+ .map((component) => ({
36
+ ...component,
37
+ ...(component.components
38
+ ? { components: filterComponents(component.components, refs) }
39
+ : {}),
40
+ }));
41
+ }
42
+
43
+ const developmentRefs = new Set();
44
+ collectDevelopmentRefs(bom.components, developmentRefs);
45
+
46
+ bom.components = filterComponents(bom.components, developmentRefs);
47
+ bom.dependencies = (bom.dependencies || [])
48
+ .filter((dependency) => !developmentRefs.has(dependency.ref))
49
+ .map((dependency) => ({
50
+ ...dependency,
51
+ dependsOn: (dependency.dependsOn || []).filter((ref) => !developmentRefs.has(ref)),
52
+ }));
53
+
54
+ fs.writeFileSync(inputPath, `${JSON.stringify(bom, null, 2)}\n`);
File without changes