systemlink-cli 1.3.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.
- systemlink_cli-1.3.1/LICENSE +21 -0
- systemlink_cli-1.3.1/PKG-INFO +20 -0
- systemlink_cli-1.3.1/dff-editor/README.md +182 -0
- systemlink_cli-1.3.1/dff-editor/editor.js +2315 -0
- systemlink_cli-1.3.1/dff-editor/index.html +287 -0
- systemlink_cli-1.3.1/pyproject.toml +141 -0
- systemlink_cli-1.3.1/slcli/__init__.py +1 -0
- systemlink_cli-1.3.1/slcli/__main__.py +23 -0
- systemlink_cli-1.3.1/slcli/_version.py +4 -0
- systemlink_cli-1.3.1/slcli/asset_click.py +1289 -0
- systemlink_cli-1.3.1/slcli/cli_formatters.py +218 -0
- systemlink_cli-1.3.1/slcli/cli_utils.py +504 -0
- systemlink_cli-1.3.1/slcli/comment_click.py +602 -0
- systemlink_cli-1.3.1/slcli/completion_click.py +418 -0
- systemlink_cli-1.3.1/slcli/config.py +81 -0
- systemlink_cli-1.3.1/slcli/config_click.py +498 -0
- systemlink_cli-1.3.1/slcli/dff_click.py +979 -0
- systemlink_cli-1.3.1/slcli/dff_decorators.py +24 -0
- systemlink_cli-1.3.1/slcli/example_click.py +404 -0
- systemlink_cli-1.3.1/slcli/example_loader.py +274 -0
- systemlink_cli-1.3.1/slcli/example_provisioner.py +2777 -0
- systemlink_cli-1.3.1/slcli/examples/README.md +134 -0
- systemlink_cli-1.3.1/slcli/examples/_schema/schema-v1.0.json +169 -0
- systemlink_cli-1.3.1/slcli/examples/demo-complete-workflow/README.md +323 -0
- systemlink_cli-1.3.1/slcli/examples/demo-complete-workflow/config.yaml +638 -0
- systemlink_cli-1.3.1/slcli/examples/demo-test-plans/README.md +132 -0
- systemlink_cli-1.3.1/slcli/examples/demo-test-plans/config.yaml +154 -0
- systemlink_cli-1.3.1/slcli/examples/exercise-5-1-parametric-insights/README.md +101 -0
- systemlink_cli-1.3.1/slcli/examples/exercise-5-1-parametric-insights/config.yaml +1589 -0
- systemlink_cli-1.3.1/slcli/examples/exercise-7-1-test-plans/README.md +93 -0
- systemlink_cli-1.3.1/slcli/examples/exercise-7-1-test-plans/config.yaml +323 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/README.md +140 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/config.yaml +112 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +1553 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +1577 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +912 -0
- systemlink_cli-1.3.1/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
- systemlink_cli-1.3.1/slcli/feed_click.py +892 -0
- systemlink_cli-1.3.1/slcli/file_click.py +932 -0
- systemlink_cli-1.3.1/slcli/function_click.py +1400 -0
- systemlink_cli-1.3.1/slcli/function_templates.py +85 -0
- systemlink_cli-1.3.1/slcli/main.py +406 -0
- systemlink_cli-1.3.1/slcli/mcp_click.py +269 -0
- systemlink_cli-1.3.1/slcli/mcp_server.py +748 -0
- systemlink_cli-1.3.1/slcli/notebook_click.py +1770 -0
- systemlink_cli-1.3.1/slcli/platform.py +345 -0
- systemlink_cli-1.3.1/slcli/policy_click.py +679 -0
- systemlink_cli-1.3.1/slcli/policy_utils.py +411 -0
- systemlink_cli-1.3.1/slcli/profiles.py +411 -0
- systemlink_cli-1.3.1/slcli/response_handlers.py +359 -0
- systemlink_cli-1.3.1/slcli/routine_click.py +763 -0
- systemlink_cli-1.3.1/slcli/skill_click.py +253 -0
- systemlink_cli-1.3.1/slcli/skills/slcli/SKILL.md +713 -0
- systemlink_cli-1.3.1/slcli/skills/slcli/references/analysis-recipes.md +474 -0
- systemlink_cli-1.3.1/slcli/skills/slcli/references/filtering.md +236 -0
- systemlink_cli-1.3.1/slcli/skills/systemlink-webapp/SKILL.md +744 -0
- systemlink_cli-1.3.1/slcli/skills/systemlink-webapp/references/deployment.md +123 -0
- systemlink_cli-1.3.1/slcli/skills/systemlink-webapp/references/nimble-angular.md +380 -0
- systemlink_cli-1.3.1/slcli/skills/systemlink-webapp/references/systemlink-services.md +192 -0
- systemlink_cli-1.3.1/slcli/ssl_trust.py +93 -0
- systemlink_cli-1.3.1/slcli/system_click.py +2216 -0
- systemlink_cli-1.3.1/slcli/table_utils.py +124 -0
- systemlink_cli-1.3.1/slcli/tag_click.py +794 -0
- systemlink_cli-1.3.1/slcli/templates_click.py +599 -0
- systemlink_cli-1.3.1/slcli/testmonitor_click.py +1667 -0
- systemlink_cli-1.3.1/slcli/universal_handlers.py +305 -0
- systemlink_cli-1.3.1/slcli/user_click.py +1218 -0
- systemlink_cli-1.3.1/slcli/utils.py +832 -0
- systemlink_cli-1.3.1/slcli/web_editor.py +295 -0
- systemlink_cli-1.3.1/slcli/webapp_click.py +981 -0
- systemlink_cli-1.3.1/slcli/workflow_preview.py +287 -0
- systemlink_cli-1.3.1/slcli/workflows_click.py +988 -0
- systemlink_cli-1.3.1/slcli/workitem_click.py +2258 -0
- systemlink_cli-1.3.1/slcli/workspace_click.py +576 -0
- systemlink_cli-1.3.1/slcli/workspace_utils.py +206 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 National Instruments
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: systemlink-cli
|
|
3
|
+
Version: 1.3.1
|
|
4
|
+
Summary: SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates.
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Author: Fred Visser
|
|
7
|
+
Author-email: fred.visser@emerson.com
|
|
8
|
+
Requires-Python: >=3.11.1,<3.15
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Dist: click (>=7.1.2)
|
|
14
|
+
Requires-Dist: keyring (>=25.6.0,<26.0.0)
|
|
15
|
+
Requires-Dist: pyyaml (>=6.0.3,<7.0.0)
|
|
16
|
+
Requires-Dist: questionary (>=2.1.1,<3.0.0)
|
|
17
|
+
Requires-Dist: requests (>=2.32.4,<3.0.0)
|
|
18
|
+
Requires-Dist: tabulate (>=0.10.0,<0.11.0)
|
|
19
|
+
Requires-Dist: truststore (>=0.9,<0.11)
|
|
20
|
+
Requires-Dist: watchdog (>=6.0.0,<7.0.0)
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Custom Fields Editor
|
|
2
|
+
|
|
3
|
+
This directory contains a standalone web editor for SystemLink Custom Fields configurations with a VS Code-like interface.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
- index.html - The main editor interface
|
|
8
|
+
- editor.js - Editor JavaScript logic
|
|
9
|
+
- README.md - This file
|
|
10
|
+
- index.html.backup - Backup of original simple editor
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
1. Start the editor server:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
slcli customfield edit --port 8080
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. Open your browser to: http://localhost:8080
|
|
21
|
+
|
|
22
|
+
3. Use the visual editor to build and manage your configuration
|
|
23
|
+
|
|
24
|
+
4. Click "Apply to Server" when ready to save
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
### Monaco Editor
|
|
29
|
+
|
|
30
|
+
- Syntax highlighting and IntelliSense for JSON
|
|
31
|
+
- Real-time validation against custom fields schema
|
|
32
|
+
- Auto-formatting (Alt+F) and validate (Alt+V)
|
|
33
|
+
- Find/Replace (Ctrl+F / Ctrl+H)
|
|
34
|
+
- Minimap, dark theme, format on paste/type
|
|
35
|
+
- Auto-save every 30 seconds to local storage
|
|
36
|
+
|
|
37
|
+
### Configuration Tree View
|
|
38
|
+
|
|
39
|
+
- Root configuration, configurations, groups, fields
|
|
40
|
+
- Counts for groups/fields; required field indicator
|
|
41
|
+
- Click to navigate
|
|
42
|
+
|
|
43
|
+
### Add New Items
|
|
44
|
+
|
|
45
|
+
- Add Configuration: name, workspace, resource type, group keys
|
|
46
|
+
- Add Group: key, name, display text, field keys (with duplicate key guard)
|
|
47
|
+
- Add Field: key, name, display text, type, required (with duplicate key guard)
|
|
48
|
+
- Templates with inline help and validation
|
|
49
|
+
|
|
50
|
+
### Validation
|
|
51
|
+
|
|
52
|
+
- JSON syntax correctness
|
|
53
|
+
- Required fields present
|
|
54
|
+
- Unique keys for groups/fields
|
|
55
|
+
- Reference checks (configs → groups, groups → fields)
|
|
56
|
+
- Enum validation (resourceType, fieldType)
|
|
57
|
+
- Schema compliance
|
|
58
|
+
|
|
59
|
+
### Server Integration
|
|
60
|
+
|
|
61
|
+
- **Load from Server**: Fetch configurations by ID or list all configurations
|
|
62
|
+
- **Apply to Server**: Seamlessly creates new or updates existing configurations
|
|
63
|
+
- **New configurations** (no ID): Automatically calls create endpoint and saves returned ID
|
|
64
|
+
- **Existing configurations** (has ID): Updates configuration on server
|
|
65
|
+
- Automatically detects operation type and uses appropriate endpoint
|
|
66
|
+
- **Smart ID tracking**: After creating a config, the ID is saved to metadata and injected into the editor
|
|
67
|
+
- Confirmation dialog before apply with operation-specific messaging
|
|
68
|
+
- Error handling with clear messages
|
|
69
|
+
- Metadata persistence: `.editor-metadata.json` tracks configuration IDs for seamless workflows
|
|
70
|
+
|
|
71
|
+
### Keyboard Shortcuts
|
|
72
|
+
|
|
73
|
+
- Alt+F: Format document
|
|
74
|
+
- Alt+V: Validate document
|
|
75
|
+
- Ctrl/Cmd+S: Save to server
|
|
76
|
+
- Ctrl+F: Find
|
|
77
|
+
- Ctrl+H: Find and replace
|
|
78
|
+
|
|
79
|
+
### Persistence & Safety
|
|
80
|
+
|
|
81
|
+
- Auto-save to localStorage every 30 seconds
|
|
82
|
+
- Auto-recovery prompt for drafts <24h old
|
|
83
|
+
- Unsaved changes warning on navigation
|
|
84
|
+
- Download JSON export
|
|
85
|
+
|
|
86
|
+
### Toolbar Actions
|
|
87
|
+
|
|
88
|
+
- Format, Validate, Load Example, Download JSON, Reset
|
|
89
|
+
|
|
90
|
+
## Configuration Structure
|
|
91
|
+
|
|
92
|
+
### Configurations
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"name": "Work Order Configuration",
|
|
97
|
+
"workspace": "workspace-id",
|
|
98
|
+
"resourceType": "workorder:workorder",
|
|
99
|
+
"groupKeys": ["group1", "group2"],
|
|
100
|
+
"properties": {}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Resource types: workorder:workorder, workitem:workitem, asset:asset, system:system, testmonitor:product
|
|
105
|
+
|
|
106
|
+
Note: workorder:testplan has been replaced by workitem:workitem to align with the current API.
|
|
107
|
+
|
|
108
|
+
### Groups
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"key": "basicInfo",
|
|
113
|
+
"workspace": "workspace-id",
|
|
114
|
+
"name": "Basic Information",
|
|
115
|
+
"displayText": "Basic Information",
|
|
116
|
+
"fieldKeys": ["field1", "field2"],
|
|
117
|
+
"properties": {}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Fields
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"key": "deviceId",
|
|
126
|
+
"workspace": "workspace-id",
|
|
127
|
+
"name": "Device ID",
|
|
128
|
+
"displayText": "Device Identifier",
|
|
129
|
+
"fieldType": "STRING",
|
|
130
|
+
"required": true,
|
|
131
|
+
"validation": { "maxLength": 50 },
|
|
132
|
+
"properties": {}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Field types: STRING, NUMBER, BOOLEAN, DATE, DATETIME, SELECT, MULTISELECT
|
|
137
|
+
Validation options: STRING (minLength, maxLength, pattern), NUMBER (min, max, step), DATE/DATETIME (min, max), SELECT/MULTISELECT (options)
|
|
138
|
+
|
|
139
|
+
## Example Workflow
|
|
140
|
+
|
|
141
|
+
1. Load example or start empty
|
|
142
|
+
2. Add configuration (resource type)
|
|
143
|
+
3. Add groups
|
|
144
|
+
4. Add fields
|
|
145
|
+
5. Link fields to groups via fieldKeys
|
|
146
|
+
6. Link groups to configuration via groupKeys
|
|
147
|
+
7. Validate
|
|
148
|
+
8. Apply to server (automatically creates new or updates existing configuration)
|
|
149
|
+
9. Configuration ID is saved automatically for future updates
|
|
150
|
+
|
|
151
|
+
## Technical Details
|
|
152
|
+
|
|
153
|
+
- Monaco Editor 0.45.0 via CDN
|
|
154
|
+
- Pure vanilla JS; no build step
|
|
155
|
+
- Uses fetch for API calls; localStorage for drafts
|
|
156
|
+
- Customize `serverUrl`, schema, and templates in editor.js
|
|
157
|
+
- Smart create/update detection based on configuration ID presence
|
|
158
|
+
- Metadata tracking in `.editor-metadata.json` for seamless workflows
|
|
159
|
+
|
|
160
|
+
## Troubleshooting
|
|
161
|
+
|
|
162
|
+
- Editor not loading: check console/CDN access
|
|
163
|
+
- Validation errors: ensure unique keys and valid references
|
|
164
|
+
- Server issues: check port, CORS, network tab
|
|
165
|
+
- Auto-save: ensure localStorage is available
|
|
166
|
+
|
|
167
|
+
## Future Enhancements
|
|
168
|
+
|
|
169
|
+
- Drag-and-drop reordering
|
|
170
|
+
- Visual preview
|
|
171
|
+
- Diff view (local vs server)
|
|
172
|
+
- Undo/redo history
|
|
173
|
+
- Import from file
|
|
174
|
+
- Field/group duplication
|
|
175
|
+
- Bulk operations
|
|
176
|
+
- Search/filter in tree
|
|
177
|
+
- Theme toggle
|
|
178
|
+
- Version history
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
Version: 2.1 | Updated: January 8, 2026
|