systemlink-cli 1.4.8__tar.gz → 1.5.1__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 (75) hide show
  1. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/PKG-INFO +1 -1
  2. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/pyproject.toml +1 -1
  3. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/_version.py +1 -1
  4. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/slcli/SKILL.md +15 -7
  5. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/systemlink-webapp/SKILL.md +46 -4
  6. systemlink_cli-1.5.1/slcli/skills/systemlink-webapp/references/layout-patterns.md +71 -0
  7. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/webapp_click.py +634 -124
  8. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/LICENSE +0 -0
  9. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/dff-editor/editor.js +0 -0
  10. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/dff-editor/index.html +0 -0
  11. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/__init__.py +0 -0
  12. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/__main__.py +0 -0
  13. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/asset_click.py +0 -0
  14. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/cli_formatters.py +0 -0
  15. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/cli_utils.py +0 -0
  16. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/comment_click.py +0 -0
  17. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/completion_click.py +0 -0
  18. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/config.py +0 -0
  19. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/config_click.py +0 -0
  20. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/dff_click.py +0 -0
  21. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/dff_decorators.py +0 -0
  22. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/example_click.py +0 -0
  23. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/example_loader.py +0 -0
  24. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/example_provisioner.py +0 -0
  25. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/README.md +0 -0
  26. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/_schema/schema-v1.0.json +0 -0
  27. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/demo-complete-workflow/README.md +0 -0
  28. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/demo-complete-workflow/config.yaml +0 -0
  29. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/demo-test-plans/README.md +0 -0
  30. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/demo-test-plans/config.yaml +0 -0
  31. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
  32. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
  33. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
  34. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
  35. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
  36. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
  37. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
  38. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
  39. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
  40. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
  41. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/feed_click.py +0 -0
  42. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/file_click.py +0 -0
  43. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/function_click.py +0 -0
  44. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/function_templates.py +0 -0
  45. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/main.py +0 -0
  46. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/mcp_click.py +0 -0
  47. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/mcp_server.py +0 -0
  48. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/notebook_click.py +0 -0
  49. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/platform.py +0 -0
  50. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/policy_click.py +0 -0
  51. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/policy_utils.py +0 -0
  52. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/profiles.py +0 -0
  53. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/response_handlers.py +0 -0
  54. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/routine_click.py +0 -0
  55. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skill_click.py +0 -0
  56. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
  57. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/slcli/references/filtering.md +0 -0
  58. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/systemlink-webapp/references/deployment.md +0 -0
  59. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/systemlink-webapp/references/nimble-angular.md +0 -0
  60. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/skills/systemlink-webapp/references/systemlink-services.md +0 -0
  61. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/ssl_trust.py +0 -0
  62. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/system_click.py +0 -0
  63. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/table_utils.py +0 -0
  64. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/tag_click.py +0 -0
  65. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/templates_click.py +0 -0
  66. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/testmonitor_click.py +0 -0
  67. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/universal_handlers.py +0 -0
  68. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/user_click.py +0 -0
  69. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/utils.py +0 -0
  70. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/web_editor.py +0 -0
  71. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/workflow_preview.py +0 -0
  72. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/workflows_click.py +0 -0
  73. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/workitem_click.py +0 -0
  74. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/workspace_click.py +0 -0
  75. {systemlink_cli-1.4.8 → systemlink_cli-1.5.1}/slcli/workspace_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: systemlink-cli
3
- Version: 1.4.8
3
+ Version: 1.5.1
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.4.8"
3
+ version = "1.5.1"
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.4.8"
4
+ __version__ = "1.5.1"
@@ -665,18 +665,26 @@ slcli workitem create \
665
665
  Scaffold, package, and publish custom web applications to SystemLink.
666
666
 
667
667
  ```bash
668
- slcli webapp init [--template html|angular] [--directory DIR] # Scaffold a new project
669
- slcli webapp pack [--directory DIR] [-o OUTPUT_FILE] # Package webapp into a .zip
668
+ slcli webapp init <DIRECTORY> # Scaffold the Angular starter
669
+ slcli webapp manifest init <DIRECTORY> [OPTIONS] # Create manifest.json + nipkg.config.json
670
+ slcli webapp pack [FOLDER] [--config FILE] [-o OUTPUT_FILE] # Package a webapp into a .nipkg
670
671
  slcli webapp list [-w WORKSPACE] [-t INT] [-f json]
671
672
  slcli webapp get <WEBAPP_ID> [-f json]
672
- slcli webapp publish --file PATH [--workspace NAME] # Upload and publish a webapp
673
+ slcli webapp publish PATH [--workspace NAME] # Upload and publish a webapp
673
674
  slcli webapp delete <WEBAPP_ID>
674
675
  slcli webapp open <WEBAPP_ID> # Open webapp URL in browser
675
676
  ```
676
677
 
677
- Templates:
678
- - `html` (default) minimal index.html
679
- - `angular` Nimble Angular project with `PROMPTS.md`, `README.md`, and bundled AI skills installed into `.agents/skills/`
678
+ `webapp init` creates the SystemLink Angular starter, not a generic HTML app. The starter installs
679
+ project-scoped skills into `.agents/skills/` and creates `PROMPTS.md` plus `START_HERE.md` so an
680
+ AI assistant can bootstrap the Angular workspace in place with the same Nimble/SystemLink
681
+ conventions described by the `systemlink-webapp` skill.
682
+
683
+ `webapp manifest init` writes `manifest.json` and `nipkg.config.json` using the Plugin Manager
684
+ field names (`section`, `maintainer`, `homepage`, `xbPlugin`, `slPluginManagerTags`,
685
+ `slPluginManagerMinServerVersion`, `iconFile`). `webapp pack --config ...` consumes that
686
+ metadata, carries the icon into the package, and writes the matching control-file fields into the
687
+ generated `.nipkg`.
680
688
 
681
689
  ### skill — AI skill installation
682
690
 
@@ -693,7 +701,7 @@ Client paths:
693
701
 
694
702
  Notes:
695
703
  - `agents` is the default client in interactive mode.
696
- - `webapp init --template angular` installs project-scoped skills into `.agents/skills/` by default.
704
+ - `webapp init` installs project-scoped skills into `.agents/skills/` by default.
697
705
 
698
706
  ### example — Built-in example resource provisioning
699
707
 
@@ -19,6 +19,14 @@ SystemLink webapps are Angular Single-Page Applications built with the Nimble de
19
19
  connected to SystemLink REST APIs, and deployed via `slcli webapp publish`. This skill captures
20
20
  every gotcha learned from building and deploying real apps.
21
21
 
22
+ If the user is starting from scratch, prefer `slcli webapp init <app-dir>` first.
23
+ That command lays down the SystemLink starter layer (`.agents/skills/`, `PROMPTS.md`, and
24
+ `START_HERE.md`) while Angular CLI remains responsible for generating the Angular workspace.
25
+
26
+ When the user wants to package the app for Plugin Manager submission, prefer
27
+ `slcli webapp manifest init <app-dir> ...` to generate `manifest.json` and `nipkg.config.json`
28
+ with the current Plugin Manager field names, then use `slcli webapp pack --config ...`.
29
+
22
30
  ---
23
31
 
24
32
  ## Step 1: Understand what the user needs
@@ -34,15 +42,49 @@ You do NOT need to ask about Angular version or Nimble versions — always use A
34
42
 
35
43
  ---
36
44
 
37
- ## Step 2: Scaffold the Angular project
45
+ ## Step 2: Bootstrap the Angular workspace
46
+
47
+ When the project was created with `slcli webapp init`, generate Angular in the existing starter
48
+ directory so the starter files and bundled skills remain at the project root.
38
49
 
39
50
  ```bash
40
- npx -y @angular/cli@20 new <app-name> --routing --style=scss --skip-git --no-standalone
41
- cd <app-name>
51
+ npx -y @angular/cli@20 new <app-name> --directory . --routing --style=scss --skip-git --no-standalone --defaults --force
42
52
  npm install @ni/nimble-angular
43
53
  ```
44
54
 
45
- > Use `--no-standalone` to generate an NgModule-based app. SystemLink webapps work best with NgModule because it makes it easy to register all Nimble modules in one place.
55
+ > Use `--no-standalone` to generate an NgModule-based app. SystemLink webapps work best with
56
+ > NgModule because it makes it easy to register all Nimble modules in one place.
57
+
58
+ If the user has not run `slcli webapp init` yet and they want a new SystemLink webapp, tell them
59
+ to do that first unless they explicitly want a manual setup.
60
+
61
+ ### Starter shell expectations
62
+
63
+ Before building feature-specific pages, establish a reusable shell that is aligned with other
64
+ SystemLink apps:
65
+
66
+ - Root `nimble-theme-provider` that mirrors the host shell theme
67
+ - Responsive page header with title, summary text, and an action area
68
+ - Shared loading, error, and empty states instead of one-off page-specific handling
69
+ - Route-backed top-level navigation only when the app truly has multiple views
70
+ - Reusable API helpers and service-layer code rather than fetch logic embedded in templates
71
+
72
+ Use Nimble layout tokens and spacing rules consistently across the shell and feature pages:
73
+
74
+ - Prefer Nimble spacing tokens over ad-hoc pixel values: `smallPadding` for tight inline gaps,
75
+ `mediumPadding` for default control spacing, `standardPadding` for section padding, and
76
+ `largePadding` between major content regions.
77
+ - Stack controls vertically with a column layout, `mediumPadding` gap, and `standardPadding`
78
+ around the control group.
79
+ - Use `mediumPadding` or `standardPadding` gaps for side-by-side controls; prefer CSS grid for
80
+ aligned multi-column layouts.
81
+ - Inside accordion panels, keep a column layout with `mediumPadding` gaps and
82
+ `standardPadding` bottom padding.
83
+ - Treat `controlHeight` (32px), `controlSlimHeight` (24px), and `labelHeight` (16px) as the
84
+ baseline sizing tokens for controls and labels.
85
+ - Separate major sections with `largePadding` and subsections with `standardPadding`.
86
+
87
+ See [references/layout-patterns.md](references/layout-patterns.md) for the detailed layout guide.
46
88
 
47
89
  ---
48
90
 
@@ -0,0 +1,71 @@
1
+ # Layout Patterns
2
+
3
+ Guidance for spacing between controls vertically and horizontally within Nimble-based
4
+ SystemLink webapps.
5
+
6
+ ## Spacing tokens
7
+
8
+ Use Nimble design tokens for consistent spacing between controls.
9
+
10
+ | Token | Value | Usage |
11
+ | ----------------- | ----- | ------------------------------------------------------ |
12
+ | `smallPadding` | 4px | Tight spacing for icon margins and inline element gaps |
13
+ | `mediumPadding` | 8px | Default spacing between stacked controls |
14
+ | `standardPadding` | 16px | Section padding and content block margin |
15
+ | `largePadding` | 24px | Separation between major layout sections |
16
+
17
+ ## Control heights
18
+
19
+ | Token | Value | Usage |
20
+ | ------------------- | ----- | ------------------------------- |
21
+ | `controlHeight` | 32px | Standard height for controls |
22
+ | `controlSlimHeight` | 24px | Compact control variants |
23
+ | `labelHeight` | 16px | Height of labels above controls |
24
+
25
+ ## Vertical stacking
26
+
27
+ When stacking controls vertically, such as text fields, number fields, and checkboxes:
28
+
29
+ - Use `mediumPadding` (8px) as the gap between controls in a flex column.
30
+ - Use `standardPadding` (16px) for content padding around the group.
31
+ - Labels above controls add `labelHeight` (16px) to the effective row height.
32
+
33
+ ```html
34
+ <div
35
+ style="display: flex; flex-direction: column; gap: var(--ni-nimble-medium-padding);"
36
+ >
37
+ <nimble-text-field>Label 1</nimble-text-field>
38
+ <nimble-text-field>Label 2</nimble-text-field>
39
+ </div>
40
+ ```
41
+
42
+ ## Horizontal layout
43
+
44
+ When placing controls side by side:
45
+
46
+ - Use `mediumPadding` (8px) or `standardPadding` (16px) as the gap.
47
+ - Prefer CSS grid with equal columns for aligned layouts.
48
+
49
+ ```html
50
+ <div
51
+ style="display: grid; grid-template-columns: 1fr 1fr; gap: var(--ni-nimble-medium-padding);"
52
+ >
53
+ <nimble-checkbox>Option A</nimble-checkbox>
54
+ <nimble-checkbox>Option B</nimble-checkbox>
55
+ </div>
56
+ ```
57
+
58
+ ## Accordion content
59
+
60
+ Inside accordion item content panels:
61
+
62
+ - Use `flex-direction: column` with `mediumPadding` (8px) gap between controls.
63
+ - Indent content by the icon width plus padding so it aligns with the header text.
64
+ - Use `standardPadding` (16px) for bottom padding before the next section.
65
+
66
+ ## Section spacing
67
+
68
+ Between major sections or groups of controls:
69
+
70
+ - Use `largePadding` (24px) between distinct content areas.
71
+ - Use `standardPadding` (16px) for subsections within a group.