systemlink-cli 1.27.1__tar.gz → 1.27.2__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 (159) hide show
  1. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/PKG-INFO +1 -1
  2. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/pyproject.toml +1 -1
  3. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/_version.py +1 -1
  4. systemlink_cli-1.27.2/slcli/skills/slcli/SKILL.md +204 -0
  5. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/analysis-recipes.md +87 -2
  6. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/commands.md +38 -6
  7. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/troubleshooting.md +19 -0
  8. systemlink_cli-1.27.2/slcli/skills/slcli/references/webapp/deployment.md +332 -0
  9. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/overview.md +5 -1
  10. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_click.py +1 -0
  11. systemlink_cli-1.27.1/slcli/skills/slcli/SKILL.md +0 -91
  12. systemlink_cli-1.27.1/slcli/skills/slcli/references/webapp/deployment.md +0 -147
  13. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/LICENSE +0 -0
  14. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/dff-editor/editor.js +0 -0
  15. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/dff-editor/index.html +0 -0
  16. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/__init__.py +0 -0
  17. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/__main__.py +0 -0
  18. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/alarm_click.py +0 -0
  19. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/asset_click.py +0 -0
  20. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/cli_formatters.py +0 -0
  21. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/cli_utils.py +0 -0
  22. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/comment_click.py +0 -0
  23. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/completion_click.py +0 -0
  24. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/config.py +0 -0
  25. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/config_click.py +0 -0
  26. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/dataframe_click.py +0 -0
  27. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/dff_click.py +0 -0
  28. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/dff_decorators.py +0 -0
  29. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/example_click.py +0 -0
  30. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/example_loader.py +0 -0
  31. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/example_provisioner.py +0 -0
  32. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/README.md +0 -0
  33. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/_schema/schema-v1.0.json +0 -0
  34. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-1/README.md +0 -0
  35. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-1/config.yaml +0 -0
  36. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-2/README.md +0 -0
  37. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-2/config.yaml +0 -0
  38. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/config.yaml +0 -0
  39. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/leakage-current-results.json +0 -0
  40. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/overvoltage-results.json +0 -0
  41. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/product-xyz-compliance-report.json +0 -0
  42. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/product-xyz-specification.csv +0 -0
  43. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/demo-data-3/thermal-response-results.json +0 -0
  44. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
  45. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
  46. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
  47. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
  48. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
  49. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
  50. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
  51. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
  52. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
  53. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
  54. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/feed_click.py +0 -0
  55. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/file_click.py +0 -0
  56. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/function_click.py +0 -0
  57. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/function_templates.py +0 -0
  58. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/main.py +0 -0
  59. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/mcp_click.py +0 -0
  60. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/mcp_reachability.py +0 -0
  61. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/mcp_server.py +0 -0
  62. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/notebook_click.py +0 -0
  63. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/pkce.py +0 -0
  64. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/platform.py +0 -0
  65. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/policy_click.py +0 -0
  66. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/policy_utils.py +0 -0
  67. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/profiles.py +0 -0
  68. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/response_handlers.py +0 -0
  69. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/rich_output.py +0 -0
  70. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/routine_click.py +0 -0
  71. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skill_click.py +0 -0
  72. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
  73. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/example-authoring.md +0 -0
  74. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/filtering.md +0 -0
  75. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/import-specs.min.json +0 -0
  76. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/job-debugging/overview.md +0 -0
  77. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/nipkg/overview.md +0 -0
  78. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/notebook/interfaces.md +0 -0
  79. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/notebook/notebook-patterns.md +0 -0
  80. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/notebook/overview.md +0 -0
  81. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/python-test/overview.md +0 -0
  82. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/routine-examples.md +0 -0
  83. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/angular-ui-packages.md +0 -0
  84. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/layout-patterns.md +0 -0
  85. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/nimble-angular.md +0 -0
  86. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/systemlink-services.md +0 -0
  87. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/references/webapp/troubleshooting.md +0 -0
  88. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/skills/slcli/scripts/spec_import_helper.py +0 -0
  89. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/spec_click.py +0 -0
  90. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/ssl_trust.py +0 -0
  91. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/state_click.py +0 -0
  92. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/system_click.py +0 -0
  93. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/system_query_utils.py +0 -0
  94. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/systemlink-logo.svg +0 -0
  95. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/table_utils.py +0 -0
  96. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/tag_click.py +0 -0
  97. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/templates_click.py +0 -0
  98. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/testmonitor_click.py +0 -0
  99. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/universal_handlers.py +0 -0
  100. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/user_click.py +0 -0
  101. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/utils.py +0 -0
  102. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/web_editor.py +0 -0
  103. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_bootstrap.py +0 -0
  104. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/.gitignore +0 -0
  105. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/README.md +0 -0
  106. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/angular.json +0 -0
  107. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/package.json +0 -0
  108. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/scripts/filter-sbom.js +0 -0
  109. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/app-routing.module.ts +0 -0
  110. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/app.component.html +0 -0
  111. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/app.component.scss +0 -0
  112. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/app.component.ts +0 -0
  113. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/app.module.ts +0 -0
  114. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.html +0 -0
  115. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.scss +0 -0
  116. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.ts +0 -0
  117. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/state/app-view-state.service.ts +0 -0
  118. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/systemlink-context.service.ts +0 -0
  119. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/theme-sync.service.ts +0 -0
  120. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/webapp-home-data.service.ts +0 -0
  121. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.html +0 -0
  122. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.scss +0 -0
  123. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.ts +0 -0
  124. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.html +0 -0
  125. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.scss +0 -0
  126. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.ts +0 -0
  127. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.html +0 -0
  128. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.scss +0 -0
  129. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.ts +0 -0
  130. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.html +0 -0
  131. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.scss +0 -0
  132. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.ts +0 -0
  133. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.html +0 -0
  134. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.scss +0 -0
  135. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.ts +0 -0
  136. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.html +0 -0
  137. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.scss +0 -0
  138. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.ts +0 -0
  139. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.html +0 -0
  140. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.scss +0 -0
  141. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.ts +0 -0
  142. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.html +0 -0
  143. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.scss +0 -0
  144. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.ts +0 -0
  145. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.html +0 -0
  146. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.scss +0 -0
  147. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.ts +0 -0
  148. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/app/shared/states/view-state.model.ts +0 -0
  149. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/assets/README.md +0 -0
  150. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/index.html +0 -0
  151. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/main.ts +0 -0
  152. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/src/styles.scss +0 -0
  153. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/tsconfig.app.json +0 -0
  154. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/webapp_templates/angular/blank/tsconfig.json +0 -0
  155. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/workflow_preview.py +0 -0
  156. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/workflows_click.py +0 -0
  157. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/workitem_click.py +0 -0
  158. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/workspace_click.py +0 -0
  159. {systemlink_cli-1.27.1 → systemlink_cli-1.27.2}/slcli/workspace_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: systemlink-cli
3
- Version: 1.27.1
3
+ Version: 1.27.2
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.27.1"
3
+ version = "1.27.2"
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.27.1"
4
+ __version__ = "1.27.2"
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: slcli
3
+ description: >-
4
+ Query and manage NI SystemLink resources using the slcli command-line interface.
5
+ Use when the user asks about test results, assets, systems, work items,
6
+ specifications, webapps, notebooks, dataframes, files, feeds, tags,
7
+ authorization, users, example fixture authoring, example config.yaml files,
8
+ or other SystemLink resource workflows. Use it when the user asks to create,
9
+ validate, review, install, or troubleshoot a SystemLink example fixture.
10
+ argument-hint: >-
11
+ Describe the SystemLink workflow you want to inspect, automate, scaffold, or
12
+ troubleshoot.
13
+ ---
14
+
15
+ # SystemLink CLI
16
+
17
+ Use this skill when the task is primarily about `slcli` commands or a
18
+ SystemLink resource workflow that should be driven from the CLI.
19
+
20
+ ## When to use it
21
+
22
+ - Querying or managing SystemLink resources through `slcli`
23
+ - Looking up exact command syntax, flags, or JSON output patterns
24
+ - Building command sequences for analysis, provisioning, packaging, or cleanup
25
+ - Creating, validating, or reviewing `slcli example` fixture YAML
26
+ - Troubleshooting CLI behavior, platform gating, or command selection
27
+
28
+ ## Reference docs
29
+
30
+ Load only what the current task needs.
31
+
32
+ | Topic | File | When to load |
33
+ | --- | --- | --- |
34
+ | CLI command reference | [commands.md](./references/commands.md) | Looking up command syntax, options, or examples |
35
+ | Example fixture authoring | [example-authoring.md](./references/example-authoring.md) | Creating or reviewing `config.yaml`, resource references, file-backed fixtures, or validation behavior |
36
+ | Datasheet-to-spec workflow | [datasheet-workflow.md](./references/datasheet-workflow.md) | Importing specifications from PDF, CSV, or structured text |
37
+ | Minimal spec import payload | [import-specs.min.json](./references/import-specs.min.json) | Need a bundled create-compatible starter payload or conditions |
38
+ | Spec import helper | [spec_import_helper.py](./scripts/spec_import_helper.py) | Scaffold or validate a datasheet spec import payload |
39
+ | Filtering guide | [filtering.md](./references/filtering.md) | Advanced filters, LINQ syntax, and query composition |
40
+ | Analysis recipes | [analysis-recipes.md](./references/analysis-recipes.md) | Multi-step analysis workflows and reporting patterns |
41
+ | Troubleshooting | [troubleshooting.md](./references/troubleshooting.md) | SSL, workspace IDs, encoding, or scripting pitfalls |
42
+ | Notebook workflow | [notebook/overview.md](./references/notebook/overview.md) | Creating notebooks for SystemLink |
43
+ | Webapp workflow | [webapp/overview.md](./references/webapp/overview.md) | Hosted Angular webapp scaffolding and deployment |
44
+ | Python test workflow | [python-test/overview.md](./references/python-test/overview.md) | Python test app structure and deployment |
45
+ | Job debugging | [job-debugging/overview.md](./references/job-debugging/overview.md) | Salt job triage and recovery |
46
+ | NI package files | [nipkg/overview.md](./references/nipkg/overview.md) | File-package assembly and `nipkg pack` guidance |
47
+
48
+ ## Default approach
49
+
50
+ 1. Prefer long-form flags in generated commands.
51
+ 2. Use `--format json` when the result will be filtered, transformed, or piped
52
+ into other tools.
53
+ 3. Use `--summary --group-by` for aggregation before fetching large raw result sets.
54
+ 4. Use convenience filters first, then fall back to `--filter` with `--substitution` for complex queries.
55
+ 5. Stay scoped to the user’s requested resource or workflow.
56
+ 6. Load deeper references only when the command surface alone is not enough.
57
+ 7. For example authoring or review, load `example-authoring.md` before proposing YAML.
58
+ 8. Prefer workspace IDs over names in scripted workflows when an endpoint is strict about identity.
59
+ 9. Use `make_api_request` from `slcli.utils` for helper scripts so auth, SSL, and error handling stay consistent.
60
+ 10. For datasheet imports, default to autonomy when the product or workspace can be resolved unambiguously.
61
+
62
+ ## Common command groups
63
+
64
+ | Group | Purpose | Key subcommands |
65
+ | --- | --- | --- |
66
+ | `testmonitor` | Test results and products | `result list/get`, `product list/create/update` |
67
+ | `alarm` | Alarm monitoring and lifecycle actions | `list`, `get`, `acknowledge`, `force-clear`, `delete`, `transition`, `monitor` |
68
+ | `spec` | Specifications | `list`, `query`, `get`, `create`, `import`, `export` |
69
+ | `asset` | Assets and calibration | `list`, `get`, `summary`, `calibration` |
70
+ | `system` | System fleet | `list`, `get`, `compare`, `summary`, `job` |
71
+ | `tag` | Tag read/write | `list`, `get-value`, `set-value`, `create` |
72
+ | `routine` | Event-action routines | `list`, `create`, `enable/disable` |
73
+ | `comment` | Resource comments | `list`, `add`, `update`, `delete` |
74
+ | `workitem` | Work items and workflows | `list`, `create`, `schedule`, `template`, `workflow` |
75
+ | `file` | File management | `list`, `upload`, `download`, `query`, `watch` |
76
+ | `notebook` | Jupyter notebooks | `manage list/create`, `execute start/sync` |
77
+ | `feed` | Package feeds | `list`, `create`, `package upload` |
78
+ | `customfield` | Dynamic form fields | `list`, `create`, `export`, `edit` |
79
+ | `template` | Test plan templates | `list`, `import`, `export` |
80
+ | `webapp` | Web applications | `new`, `pack`, `publish`, `list` |
81
+ | `config` | Connection profiles | `list`, `use`, `add`, `delete` |
82
+ | `user` | User management | `list`, `get`, `create`, `update` |
83
+ | `auth` | Authorization policies | `policy list/create`, `template list` |
84
+ | `workspace` | Workspaces | `list`, `get` |
85
+ | `skill` | AI skill installation | `install` |
86
+ | `example` | Demo provisioning | `list`, `install`, `delete` |
87
+
88
+ Example package fixtures are declared as `package` resources after a `feed`
89
+ resource. Use `source.type: dummy` for deterministic packages, `file` for a
90
+ fixture-relative `.nipkg`, or `repository` for an explicit HTTPS package URL.
91
+ The repository catalog can identify packages and feeds, but package bytes must
92
+ come from a direct package URL or an existing feed download path.
93
+
94
+ ## Mandatory scope resolution
95
+
96
+ Before the first resource query, resolve the profile and workspace separately.
97
+ Treat a workspace supplied by the user as a workspace identifier, never as a
98
+ profile name. Match it exactly against either the workspace name or UUID.
99
+
100
+ 1. Run `slcli config list --format json` and select profiles whose `workspace`
101
+ field matches the requested workspace name. If the user supplied a UUID,
102
+ probe configured profiles sequentially instead. Do not infer a profile from
103
+ a similar name such as `demo-fred` or `fred-roaster`.
104
+ 2. Use the global `--profile NAME` override on every command. The option goes
105
+ before the command group, for example:
106
+
107
+ ```bash
108
+ slcli --profile PROFILE_NAME workspace list --format json
109
+ ```
110
+
111
+ This preserves the user's global active profile.
112
+ 3. If several profiles match, probe them sequentially with
113
+ `slcli --profile NAME info --skip-health --format json`. Continue past a
114
+ missing credential, unavailable endpoint, or permission error. Confirm the
115
+ selected candidate with one read-only workspace query before issuing the
116
+ actual resource query. Do not fan out the same query across candidates.
117
+ 4. Use the first authorized candidate. Ask the user only when several
118
+ candidates are authorized and the choice could change the answer.
119
+ 5. With the selected profile, run `workspace list --format json` and resolve
120
+ the requested workspace by exact name or UUID. Carry both the display name
121
+ and UUID, but use the UUID for subsequent queries when the command accepts
122
+ it.
123
+
124
+ When reading `slcli info --format json`, use `active_profile_name` as the
125
+ effective profile after CLI or environment overrides. `current_profile` is the
126
+ persisted config pointer and may differ. Use `api_url_source` to confirm where
127
+ the effective endpoint came from; never use `current_profile` alone to decide
128
+ which profile served a query.
129
+
130
+ ## Mandatory non-interactive webapp deployment protocol
131
+
132
+ For every webapp creation, publish, redeploy, or update task, load
133
+ [deployment.md](./references/webapp/deployment.md) and follow its ordered
134
+ protocol. Do not build or upload an artifact until the deployment target has
135
+ been resolved. The protocol is non-interactive: use JSON output and bounded
136
+ inventory commands, and do not rely on table pagination or terminal prompts.
137
+
138
+ 1. Discover the installed command surface before composing commands:
139
+ ```bash
140
+ slcli config list --format json
141
+ slcli webapp publish -h
142
+ slcli webapp list -h
143
+ ```
144
+ Installed `--help` wins over this skill and its references. Confirm every
145
+ option on the installed CLI; `webapp publish` currently has `--id`, `--name`,
146
+ and `--workspace`, while `webapp list` has bounded JSON output and `-f`.
147
+ Prefer long options in generated commands after confirming they exist.
148
+ 2. Resolve the effective profile and target workspace separately. Probe a
149
+ candidate with `info --skip-health --format json`, resolve the workspace
150
+ display name to its UUID with `workspace list --format json`, and carry the
151
+ UUID into every later command. Never use a similar profile name as a
152
+ substitute for workspace identity.
153
+ 3. Resolve the exact webapp target before building or uploading. Use a
154
+ bounded, filtered, non-interactive inventory, for example:
155
+ ```bash
156
+ slcli --profile PROFILE webapp list \
157
+ --workspace WORKSPACE_ID --filter "Coffee Tasting" \
158
+ --take 10 --format json
159
+ ```
160
+ The server-side `--filter` is a substring filter, so compare returned names
161
+ locally. One exact name match means update that webapp with its returned ID
162
+ by default. Multiple exact matches are ambiguous and require a selected ID.
163
+ No exact match means report that a new resource would be created and obtain
164
+ explicit confirmation or an explicit create instruction before using
165
+ `--name`; never create a duplicate as an implicit fallback.
166
+ 4. Inspect the project contract before running its dev server or production
167
+ build. Read `package.json` and `angular.json`; do not append `--host` when
168
+ the package script already supplies it. Remove or correct legacy Angular
169
+ options such as `buildOptimizer` and `vendorChunk` when they make `ng serve`
170
+ reject the configuration. Run the production build, detect its actual
171
+ output directory, and verify the hosted routing, CSP, authentication, and
172
+ service/workspace contract. The Test Monitor results service prefix is
173
+ `/nitest/v2/query-results`, not `/nitestmonitor/v2/query-results`; do not
174
+ hardcode `workspace=Default` when the target workspace was resolved.
175
+ 5. Publish only after steps 1-4 pass. Pass the resolved workspace for a new
176
+ webapp, or the exact existing webapp ID for an update. Capture the returned
177
+ webapp ID, published URL, and publish timestamp in the task record.
178
+ 6. Validate at three levels: deployment metadata with `webapp get`, an
179
+ authenticated CLI query for the target workspace and required resources,
180
+ and an authenticated browser check of the hosted URL. A reachable URL is
181
+ not proof of an authenticated app. If the browser redirects to login or
182
+ returns 401, report exactly: `deployment reachable, interactive hosted
183
+ validation pending.`
184
+
185
+ ## Product lookup and overview defaults
186
+
187
+ For product discovery, use this order:
188
+
189
+ 1. Try an exact or likely part number with `testmonitor product list
190
+ --part-number`.
191
+ 2. Try the name and family convenience filters.
192
+ 3. If a convenience filter returns `[]`, treat that as inconclusive. Scan the
193
+ resolved workspace catalog with a bounded JSON query and match name or part
194
+ number locally with `jq`.
195
+ 4. Fetch the selected product with `testmonitor product get <PRODUCT_ID>`.
196
+
197
+ For a product overview, fetch the product record and directly linked metadata
198
+ only. Use `--summary` for counts and statuses, and grouped summaries for
199
+ profiles, programs, or other supported dimensions. For result data, use only
200
+ dimensions exposed by the command, such as `status` and `programName`. Fetch
201
+ only the latest 5 to 10 results, projecting relevant fields with `jq`. Fetch
202
+ full result details only for a specific run or failure. Record an explicit UTC
203
+ `as of` time and treat counts from separate live queries as separate
204
+ observations.
@@ -17,10 +17,94 @@ Each recipe maps to a real-world scenario and shows the exact commands needed.
17
17
  - [Recipe 9: Product family workload distribution](#recipe-9-product-family-workload-distribution)
18
18
  - [Recipe 10: Environmental condition failure patterns](#recipe-10-environmental-condition-failure-patterns)
19
19
  - [Recipe 11: Create and schedule a work item on a specific fixture/slot and system](#recipe-11-create-and-schedule-a-work-item-on-a-specific-fixtureslot-and-system)
20
+ - [Product discovery and overview](#product-discovery-and-overview)
20
21
  - [General tips](#general-tips)
21
22
 
22
23
  ---
23
24
 
25
+ ## Product discovery and overview
26
+
27
+ **Question:** Tell me about a product in a specific workspace without
28
+ producing an oversized, inconsistent report.
29
+
30
+ **Prerequisite:** Complete the mandatory profile and workspace resolution in
31
+ the main `slcli` skill. Set `PROFILE` to the selected profile and
32
+ `WORKSPACE_ID` to the resolved workspace UUID. Capture the observation time
33
+ before querying live data:
34
+
35
+ ```bash
36
+ PROFILE="<PROFILE_NAME>"
37
+ WORKSPACE_ID="<WORKSPACE_UUID>"
38
+ AS_OF="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
39
+ printf 'As of %s\n' "$AS_OF"
40
+ ```
41
+
42
+ **Lookup order:**
43
+
44
+ ```bash
45
+ # 1. Exact or likely part number
46
+ slcli --profile "$PROFILE" testmonitor product list \
47
+ --workspace "$WORKSPACE_ID" --part-number "<PART_NUMBER>" \
48
+ --format json --take 25
49
+
50
+ # 2. Name or family convenience filters, when the part-number lookup is empty
51
+ slcli --profile "$PROFILE" testmonitor product list \
52
+ --workspace "$WORKSPACE_ID" --name "<PRODUCT_NAME>" \
53
+ --format json --take 25
54
+ slcli --profile "$PROFILE" testmonitor product list \
55
+ --workspace "$WORKSPACE_ID" --family "<FAMILY>" \
56
+ --format json --take 25
57
+
58
+ # 3. Bounded workspace catalog fallback when convenience filters are empty
59
+ slcli --profile "$PROFILE" testmonitor product list \
60
+ --workspace "$WORKSPACE_ID" --format json --take 100 |
61
+ jq --arg name "<PRODUCT_NAME>" --arg part "<PART_NUMBER>" '
62
+ [ .[] | select(
63
+ (($name != "") and ((.name // "" | ascii_downcase) | contains($name | ascii_downcase)))
64
+ or (($part != "") and ((.partNumber // "" | ascii_downcase) | contains($part | ascii_downcase)))
65
+ ) | {id, name, partNumber, family, workspace} ]'
66
+ ```
67
+
68
+ An empty result from a name or family filter does not prove that the product is
69
+ absent. Increase the bounded catalog limit only deliberately, and project the
70
+ candidate fields in `jq` before displaying them. Fetch the selected record only
71
+ after identifying its ID:
72
+
73
+ ```bash
74
+ slcli --profile "$PROFILE" testmonitor product get <PRODUCT_ID> --format json
75
+ ```
76
+
77
+ **Overview budget:**
78
+
79
+ ```bash
80
+ # Directly linked metadata, only when relevant to the question
81
+ slcli --profile "$PROFILE" spec list --product <PRODUCT_ID> --format json
82
+
83
+ # Compact counts and status breakdown
84
+ slcli --profile "$PROFILE" testmonitor result list \
85
+ --part-number "<PART_NUMBER>" --summary --group-by status \
86
+ --format json
87
+
88
+ # Grouped program summary
89
+ slcli --profile "$PROFILE" testmonitor result list \
90
+ --part-number "<PART_NUMBER>" --summary --group-by programName \
91
+ --format json
92
+
93
+ # Latest 5 to 10 results, projected to relevant fields
94
+ slcli --profile "$PROFILE" testmonitor result list \
95
+ --part-number "<PART_NUMBER>" --order-by STARTED_AT --descending \
96
+ --take 10 --format json |
97
+ jq '[.[] | {id, status: .status.statusType, startedAt, programName,
98
+ partNumber, serialNumber}]'
99
+ ```
100
+
101
+ Use `testmonitor result get <RESULT_ID> --include-steps --format json` only
102
+ when the user asks about a particular run or failure. Counts from separate
103
+ commands are not one atomic snapshot; report the `as of` time and call out
104
+ live-data changes when totals do not agree.
105
+
106
+ ---
107
+
24
108
  ## Recipe 1: Operator failure rate analysis
25
109
 
26
110
  **Question:** Which operators have the highest failure rates and what should they
@@ -482,8 +566,9 @@ slcli workitem schedule wi-12345 \
482
566
  - **Start with `--summary`** to understand data shape before fetching raw records.
483
567
  - **Use `--group-by`** with `--summary` for aggregation: `status`, `programName`,
484
568
  `serialNumber`, `operator`, `hostName`, `systemId`.
485
- - **Chain with `jq`** for complex transformations — always use `-f json`.
486
- - **Use `--take` wisely** — start small (100-500), increase if needed.
569
+ - **Chain with `jq`** for complex transformations — always use `--format json`.
570
+ - **Use `--take` wisely** — start with 5-10 for recent detail and a bounded
571
+ catalog query for discovery; increase only when the question requires it.
487
572
  - **For rate calculations**, query total count and filtered count separately, then divide.
488
573
  - **Use `--order-by TOTAL_TIME_IN_SECONDS --descending`** to find slowest tests quickly.
489
574
  - **Asset `--connected` flag** limits to assets in currently connected systems.
@@ -28,6 +28,31 @@ Complete option reference for all `slcli` command groups.
28
28
  - [webapp — Web application management](#webapp--web-application-management)
29
29
  - [skill — AI skill installation](#skill--ai-skill-installation)
30
30
  - [example — Built-in example resource provisioning](#example--built-in-example-resource-provisioning)
31
+ - [Scope and capability discovery](#scope-and-capability-discovery)
32
+
33
+ ## Scope and capability discovery
34
+
35
+ Resolve a requested workspace before querying its resources. `--profile` is a
36
+ global option and must precede the command group:
37
+
38
+ ```bash
39
+ # Find profiles mapped to the requested workspace
40
+ slcli config list --format json | \
41
+ jq -r --arg workspace "Fred" '.[] | select((.workspace // "") == $workspace) | .name'
42
+
43
+ # Probe candidates one at a time without changing the active profile
44
+ slcli --profile <PROFILE_NAME> info --skip-health --format json
45
+ slcli --profile <PROFILE_NAME> workspace list --format json
46
+ ```
47
+
48
+ In `info` JSON, `active_profile_name` is the effective profile for the command,
49
+ while `current_profile` is the persisted config pointer. `api_url_source`
50
+ identifies the source of the effective API URL. Use the effective fields when
51
+ they disagree; `current_profile` alone is not a reliable query-scope signal.
52
+
53
+ Consult `<command> --help` whenever a flag or alias is uncertain. Format aliases
54
+ are command-specific, and the installed CLI help is authoritative. Generated
55
+ commands should prefer the long form `--format json`.
31
56
 
32
57
  ## testmonitor — Test data analysis
33
58
 
@@ -78,7 +103,7 @@ slcli testmonitor product list [OPTIONS]
78
103
  --workspace, -w TEXT # Filter by workspace name or ID
79
104
  --summary # Show summary statistics
80
105
  --take, -t INTEGER # Items per page (default 25)
81
- -f [table|json]
106
+ --format, -f [table|json]
82
107
 
83
108
  # Get a single product
84
109
  slcli testmonitor product get <PRODUCT_ID> [-f json]
@@ -665,8 +690,8 @@ slcli comment delete <ID1> <ID2> <ID3>
665
690
  ## workspace — Workspace management
666
691
 
667
692
  ```bash
668
- slcli workspace list [-f json]
669
- slcli workspace get --workspace WORKSPACE_ID [-f json]
693
+ slcli workspace list [--format json]
694
+ slcli workspace get --workspace WORKSPACE_ID [--format json]
670
695
  slcli workspace disable --id WORKSPACE_ID [--yes]
671
696
  ```
672
697
 
@@ -681,7 +706,7 @@ slcli logout [--profile NAME] [--all] [--force]
681
706
  slcli info [-f json] [--skip-health] # Show active profile and service health
682
707
  slcli completion [--shell SHELL] [--install] # Generate or install shell tab completion
683
708
 
684
- slcli config list [-f json] # List all profiles
709
+ slcli config list [--format json] # List all profiles
685
710
  slcli config current # Show the active profile name
686
711
  slcli config use <PROFILE> # Switch the active profile
687
712
  slcli config view [-f json] [--show-secrets] # Show stored profile details
@@ -896,13 +921,20 @@ is intentionally omitted from the recommended command sequence.
896
921
  slcli webapp new <APP_NAME> [OPTIONS] # Generate a hosted Angular webapp
897
922
  slcli webapp manifest init <DIRECTORY> [OPTIONS] # Create nipkg.config.json for packaging
898
923
  slcli webapp pack [FOLDER] [--config FILE] [--output OUTPUT_FILE] # Package a webapp into a .nipkg
899
- slcli webapp list [-w WORKSPACE] [--filter TEXT] [--take INT] [--format json]
924
+ slcli webapp list [-w WORKSPACE] [--filter TEXT] [--take INT] [--format FORMAT] [-f FORMAT]
900
925
  slcli webapp get --id WEBAPP_ID [--format json]
901
- slcli webapp publish PATH [--workspace NAME] # Upload and publish a webapp
926
+ slcli webapp publish PATH --id WEBAPP_ID # Update an existing webapp
927
+ slcli webapp publish PATH --name NAME --workspace NAME # Create metadata and upload
902
928
  slcli webapp delete --id WEBAPP_ID [--yes]
903
929
  slcli webapp open --id WEBAPP_ID # Open webapp URL in browser
904
930
  ```
905
931
 
932
+ `webapp list` supports both `--format` and `-f` in the current CLI. Older
933
+ installed versions may expose only the long form, so use `slcli webapp list
934
+ --help` to verify the local command surface before scripting against it.
935
+ `webapp publish` has no output-format option; use `webapp get --format json`
936
+ after publishing when structured deployment metadata is needed.
937
+
906
938
  For an existing Angular project, work in that project directly and load the
907
939
  webapp references as needed. Do not introduce the legacy `webapp init` step
908
940
  into a new project workflow.
@@ -2,6 +2,25 @@
2
2
 
3
3
  Common issues and workarounds when using `slcli` or scripting against SystemLink APIs.
4
4
 
5
+ ## Effective profile and workspace scope
6
+
7
+ Resolve the workspace and profile independently before querying resources. A
8
+ workspace name is not a profile name. Use `slcli config list --format json` to
9
+ find profiles mapped to the workspace, then pass the selected profile before
10
+ each command with `slcli --profile NAME ...`.
11
+
12
+ When `slcli info --format json` shows different values, use
13
+ `active_profile_name` for the effective profile and `api_url_source` for the
14
+ effective endpoint. `current_profile` is only the persisted config pointer and
15
+ may be stale relative to a CLI or environment override.
16
+
17
+ ## Live-data snapshots
18
+
19
+ Queries are live and may change between commands. Record the query time and
20
+ avoid presenting counts from separate commands as one atomic snapshot. If
21
+ multiple aggregations must agree exactly, fetch one bounded JSON result set and
22
+ derive all aggregations locally.
23
+
5
24
  ## Workspace IDs vs names
6
25
 
7
26
  Some API endpoints (notably **file upload**) require the workspace **UUID**, not