systemlink-cli 2.1.0__tar.gz → 2.2.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.
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/PKG-INFO +1 -1
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/pyproject.toml +1 -1
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/_version.py +1 -1
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/transport.py +27 -7
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/policy_click.py +81 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/commands.md +5 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/LICENSE +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/dff-editor/editor.js +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/dff-editor/index.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/__init__.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/__main__.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/alarm_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/asset_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/cli_formatters.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/cli_utils.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/comment_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/completion_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/config.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/config_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/credentials.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/dataframe_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/dff_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/dff_decorators.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/example_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/example_loader.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/example_provisioner.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/_schema/schema-v1.0.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-1/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-1/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-2/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-2/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/leakage-current-results.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/overvoltage-results.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/product-xyz-compliance-report.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/product-xyz-specification.csv +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/thermal-response-results.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/feed_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/file_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/function_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/function_templates.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/main.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/__init__.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/crypto.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/handlers.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/minion.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/models.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/protocol.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/rest.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client/state.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/managed_client_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/mcp_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/mcp_reachability.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/mcp_server.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/mcp_skills.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/notebook_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/pkce.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/platform.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/policy_utils.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/profile_credentials.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/profiles.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/response_handlers.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/rich_output.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/routine_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skill_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/SKILL.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/COPILOT_BATCH_RUN_PROMPT.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/evals.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/evals.schema.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/files/spec-import/battery-specs.csv +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/files/webapp-package/icon.svg +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/files/webapp-package/nipkg.config.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/files/webapp-package/webapp-content/index.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/trigger_evals.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/domain-concepts.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/example-authoring.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/filtering.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/import-specs.min.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/job-debugging/overview.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/nipkg/overview.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/notebook/interfaces.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/notebook/notebook-patterns.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/notebook/overview.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/python-test/overview.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/routine-examples.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/troubleshooting.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/angular-ui-packages.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/deployment.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/layout-patterns.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/nimble-angular.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/overview.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/systemlink-services.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/troubleshooting.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/benchmark_iteration.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/compare_iteration.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/eval_manifest.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/grade_eval_response.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/grade_iteration.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/prepare_eval_prompts.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/prepare_eval_workspace.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/render_eval_review.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/spec_import_helper.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/spec_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/ssl_trust.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/state_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/system_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/system_query_utils.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/systemlink-logo.svg +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/table_utils.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/tag_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/templates_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/testmonitor_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/universal_handlers.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/user_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/utils.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/version_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/web_editor.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_bootstrap.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/.gitignore +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/angular.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/package.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/scripts/filter-sbom.js +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/app-routing.module.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/app.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/app.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/app.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/app.module.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/state/app-view-state.service.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/systemlink-context.service.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/theme-sync.service.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/webapp-home-data.service.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/app/shared/states/view-state.model.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/assets/README.md +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/index.html +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/main.ts +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/styles.scss +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/tsconfig.app.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/tsconfig.json +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/workflow_preview.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/workflows_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/workitem_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/workspace_click.py +0 -0
- {systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/workspace_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "systemlink-cli"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.2.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" }]
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import socket
|
|
6
|
+
import threading
|
|
6
7
|
from collections import deque
|
|
7
8
|
from dataclasses import dataclass
|
|
8
9
|
from urllib.parse import urlsplit
|
|
@@ -12,6 +13,7 @@ from .protocol import MAX_FRAME_SIZE, MessagePackStream, SaltMessage
|
|
|
12
13
|
|
|
13
14
|
DEFAULT_REQUEST_PORT = 4506
|
|
14
15
|
DEFAULT_PUBLISH_PORT = 4505
|
|
16
|
+
IDLE_RECEIVE_POLL_INTERVAL = 0.1
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
@dataclass(frozen=True)
|
|
@@ -53,6 +55,7 @@ class SaltChannel:
|
|
|
53
55
|
self._decoder = MessagePackStream(max_frame_size=max_frame_size)
|
|
54
56
|
self._pending: deque[SaltMessage] = deque()
|
|
55
57
|
self._closed = False
|
|
58
|
+
self._receive_lock = threading.RLock()
|
|
56
59
|
|
|
57
60
|
@classmethod
|
|
58
61
|
def connect(
|
|
@@ -80,7 +83,7 @@ class SaltChannel:
|
|
|
80
83
|
raise TransportError("Unable to send a Salt message.") from error
|
|
81
84
|
|
|
82
85
|
def receive(self, *, ignore_timeout: bool = False) -> SaltMessage:
|
|
83
|
-
"""Read
|
|
86
|
+
"""Read a complete Salt message, polling for closure when ignoring timeouts."""
|
|
84
87
|
if self._closed:
|
|
85
88
|
raise TransportError("The Salt channel is closed.")
|
|
86
89
|
if self._pending:
|
|
@@ -89,7 +92,23 @@ class SaltChannel:
|
|
|
89
92
|
if self._closed:
|
|
90
93
|
raise TransportError("The Salt channel is closed.")
|
|
91
94
|
try:
|
|
92
|
-
|
|
95
|
+
with self._receive_lock:
|
|
96
|
+
if self._closed:
|
|
97
|
+
raise TransportError("The Salt channel is closed.")
|
|
98
|
+
if ignore_timeout:
|
|
99
|
+
timeout = self._connection.gettimeout()
|
|
100
|
+
self._connection.settimeout(
|
|
101
|
+
IDLE_RECEIVE_POLL_INTERVAL
|
|
102
|
+
if timeout is None
|
|
103
|
+
else min(timeout, IDLE_RECEIVE_POLL_INTERVAL)
|
|
104
|
+
)
|
|
105
|
+
try:
|
|
106
|
+
data = self._connection.recv(65536)
|
|
107
|
+
finally:
|
|
108
|
+
if not self._closed:
|
|
109
|
+
self._connection.settimeout(timeout)
|
|
110
|
+
else:
|
|
111
|
+
data = self._connection.recv(65536)
|
|
93
112
|
except socket.timeout as error:
|
|
94
113
|
if ignore_timeout:
|
|
95
114
|
continue
|
|
@@ -105,7 +124,7 @@ class SaltChannel:
|
|
|
105
124
|
return self._pending.popleft()
|
|
106
125
|
|
|
107
126
|
def close(self) -> None:
|
|
108
|
-
"""
|
|
127
|
+
"""Interrupt active reads before releasing the socket descriptor."""
|
|
109
128
|
if self._closed:
|
|
110
129
|
return
|
|
111
130
|
self._closed = True
|
|
@@ -113,7 +132,8 @@ class SaltChannel:
|
|
|
113
132
|
self._connection.shutdown(socket.SHUT_RDWR)
|
|
114
133
|
except OSError:
|
|
115
134
|
pass
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
135
|
+
with self._receive_lock:
|
|
136
|
+
try:
|
|
137
|
+
self._connection.close()
|
|
138
|
+
except OSError:
|
|
139
|
+
pass
|
|
@@ -18,6 +18,7 @@ from .policy_utils import (
|
|
|
18
18
|
_format_template_list_row,
|
|
19
19
|
_load_statements_from_file,
|
|
20
20
|
_parse_properties_from_cli,
|
|
21
|
+
_validate_statements,
|
|
21
22
|
)
|
|
22
23
|
from .universal_handlers import FilteredResponse, UniversalResponseHandler
|
|
23
24
|
from .utils import (
|
|
@@ -534,6 +535,86 @@ def register_policy_commands(cli: Any) -> None:
|
|
|
534
535
|
except Exception as exc:
|
|
535
536
|
handle_api_error(exc)
|
|
536
537
|
|
|
538
|
+
@template_group.command(name="update")
|
|
539
|
+
@click.argument("template_id")
|
|
540
|
+
@click.option("--name", type=str, default=None, help="New policy template name")
|
|
541
|
+
@click.option(
|
|
542
|
+
"--type",
|
|
543
|
+
"template_type",
|
|
544
|
+
type=click.Choice(["user", "service"], case_sensitive=False),
|
|
545
|
+
default=None,
|
|
546
|
+
help="New policy template type",
|
|
547
|
+
)
|
|
548
|
+
@click.option(
|
|
549
|
+
"--statements-file",
|
|
550
|
+
type=click.Path(exists=True, dir_okay=False),
|
|
551
|
+
default=None,
|
|
552
|
+
help='JSON file containing a statements list or an object with a "statements" list',
|
|
553
|
+
)
|
|
554
|
+
@click.option(
|
|
555
|
+
"--properties",
|
|
556
|
+
"-p",
|
|
557
|
+
multiple=True,
|
|
558
|
+
help="Updated custom properties as key=value (repeatable)",
|
|
559
|
+
)
|
|
560
|
+
@click.option(
|
|
561
|
+
"--format",
|
|
562
|
+
"-f",
|
|
563
|
+
type=click.Choice(["table", "json"]),
|
|
564
|
+
default="table",
|
|
565
|
+
show_default=True,
|
|
566
|
+
help="Output format",
|
|
567
|
+
)
|
|
568
|
+
def update_template(
|
|
569
|
+
template_id: str,
|
|
570
|
+
name: Optional[str],
|
|
571
|
+
template_type: Optional[str],
|
|
572
|
+
statements_file: Optional[str],
|
|
573
|
+
properties: Tuple[str, ...],
|
|
574
|
+
format: str,
|
|
575
|
+
) -> None:
|
|
576
|
+
"""Update selected fields on a reusable policy template."""
|
|
577
|
+
from .utils import check_readonly_mode
|
|
578
|
+
|
|
579
|
+
check_readonly_mode("update a policy template")
|
|
580
|
+
|
|
581
|
+
try:
|
|
582
|
+
payload: Dict[str, Any] = {}
|
|
583
|
+
if name is not None:
|
|
584
|
+
payload["name"] = name
|
|
585
|
+
if template_type is not None:
|
|
586
|
+
payload["type"] = template_type.lower()
|
|
587
|
+
if statements_file is not None:
|
|
588
|
+
statements = _load_statements_from_file(statements_file)
|
|
589
|
+
is_valid, error_message = _validate_statements(
|
|
590
|
+
statements,
|
|
591
|
+
require_workspace=False,
|
|
592
|
+
)
|
|
593
|
+
if not is_valid:
|
|
594
|
+
raise ValueError(error_message or "Invalid statements")
|
|
595
|
+
payload["statements"] = statements
|
|
596
|
+
if properties:
|
|
597
|
+
payload["properties"] = _parse_properties_from_cli(properties)
|
|
598
|
+
if not payload:
|
|
599
|
+
raise ValueError("At least one update option is required")
|
|
600
|
+
except ValueError as exc:
|
|
601
|
+
click.echo(f"✗ Error: {exc}", err=True)
|
|
602
|
+
sys.exit(ExitCodes.INVALID_INPUT)
|
|
603
|
+
|
|
604
|
+
try:
|
|
605
|
+
url = f"{get_base_url()}/niauth/v1/policy-templates/{template_id}"
|
|
606
|
+
current_template = make_api_request("GET", url, payload=None).json()
|
|
607
|
+
merged_payload = {
|
|
608
|
+
field: current_template[field]
|
|
609
|
+
for field in ("name", "type", "statements", "properties")
|
|
610
|
+
if field in current_template
|
|
611
|
+
}
|
|
612
|
+
merged_payload.update(payload)
|
|
613
|
+
resp = make_api_request("PUT", url, payload=merged_payload)
|
|
614
|
+
_display_template_details(resp.json(), format)
|
|
615
|
+
except Exception as exc:
|
|
616
|
+
handle_api_error(exc)
|
|
617
|
+
|
|
537
618
|
@template_group.command(name="list")
|
|
538
619
|
@click.option(
|
|
539
620
|
"--type",
|
|
@@ -746,6 +746,7 @@ slcli auth policy diff <POLICY_ID_1> <POLICY_ID_2> # Compare two policies
|
|
|
746
746
|
# Policy templates
|
|
747
747
|
slcli auth template list [-t INT] [-f json]
|
|
748
748
|
slcli auth template create --name TEXT --statements-file PATH [--type user|service] [-p KEY=VALUE] [-f json]
|
|
749
|
+
slcli auth template update TEMPLATE_ID [--name TEXT] [--type user|service] [--statements-file PATH] [-p KEY=VALUE] [-f json]
|
|
749
750
|
slcli auth template get <TEMPLATE_ID> [-f json]
|
|
750
751
|
slcli auth template delete <TEMPLATE_ID>
|
|
751
752
|
```
|
|
@@ -759,6 +760,10 @@ or an object with a `statements` array, for example:
|
|
|
759
760
|
[{"actions": ["testresult:Read"], "resource": ["*"]}]
|
|
760
761
|
```
|
|
761
762
|
|
|
763
|
+
`auth template update` fetches the current template and preserves unspecified
|
|
764
|
+
fields before sending `PUT /niauth/v1/policy-templates/{template-id}`.
|
|
765
|
+
Supplied statements and properties replace their existing values.
|
|
766
|
+
|
|
762
767
|
Workspace fields are not required. Properties are repeatable string-valued
|
|
763
768
|
`key=value` pairs. JSON output returns the full created template, including
|
|
764
769
|
its ID. Apply that ID to a workspace using `auth policy create TEMPLATE_ID
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/demo-data-3/overvoltage-results.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-7-1-test-plans/README.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/exercise-7-1-test-plans/config.yaml
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/README.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/examples/spec-compliance-notebooks/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/COPILOT_BATCH_RUN_PROMPT.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/evals/files/webapp-package/icon.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/analysis-recipes.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/datasheet-workflow.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/domain-concepts.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/example-authoring.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/import-specs.min.json
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/nipkg/overview.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/notebook/interfaces.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/notebook/overview.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/python-test/overview.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/routine-examples.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/troubleshooting.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/deployment.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/nimble-angular.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/references/webapp/overview.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/benchmark_iteration.py
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/compare_iteration.py
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/grade_eval_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/prepare_eval_prompts.py
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/prepare_eval_workspace.py
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/render_eval_review.py
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/skills/slcli/scripts/spec_import_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/.gitignore
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/README.md
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/angular.json
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/package.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/index.html
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/main.ts
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/src/styles.scss
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/tsconfig.app.json
RENAMED
|
File without changes
|
{systemlink_cli-2.1.0 → systemlink_cli-2.2.2}/slcli/webapp_templates/angular/blank/tsconfig.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|