openc3 7.4.1 → 7.5.0
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.
- checksums.yaml +4 -4
- data/bin/pipinstall +18 -5
- data/bin/pipuninstall +1 -1
- data/bin/uvinstall +36 -8
- data/data/config/default_plugins.yaml +43 -0
- data/data/config/interface_modifiers.yaml +22 -7
- data/data/config/item_modifiers.yaml +14 -4
- data/data/config/plugins.yaml +1 -1
- data/data/config/widgets.yaml +1 -1
- data/lib/openc3/api/cmd_api.rb +10 -13
- data/lib/openc3/api/interface_api.rb +1 -2
- data/lib/openc3/api/limits_api.rb +1 -1
- data/lib/openc3/api/metrics_api.rb +26 -1
- data/lib/openc3/api/router_api.rb +1 -2
- data/lib/openc3/api/tlm_api.rb +6 -10
- data/lib/openc3/config/config_parser.rb +3 -1
- data/lib/openc3/core_ext/tempfile.rb +2 -0
- data/lib/openc3/interfaces/file_interface.rb +6 -1
- data/lib/openc3/interfaces/http_client_interface.rb +14 -6
- data/lib/openc3/interfaces/interface.rb +27 -3
- data/lib/openc3/interfaces/read_queue_interface.rb +331 -0
- data/lib/openc3/interfaces/stream_interface.rb +22 -3
- data/lib/openc3/interfaces/tcpip_server_interface.rb +13 -0
- data/lib/openc3/interfaces/udp_interface.rb +16 -2
- data/lib/openc3/interfaces.rb +1 -0
- data/lib/openc3/logs/log_writer.rb +13 -4
- data/lib/openc3/microservices/decom_microservice.rb +7 -4
- data/lib/openc3/microservices/interface_microservice.rb +146 -50
- data/lib/openc3/microservices/log_microservice.rb +1 -3
- data/lib/openc3/microservices/microservice.rb +25 -1
- data/lib/openc3/microservices/plugin_microservice.rb +32 -0
- data/lib/openc3/microservices/text_log_microservice.rb +1 -3
- data/lib/openc3/models/interface_model.rb +1 -1
- data/lib/openc3/models/interface_status_model.rb +6 -0
- data/lib/openc3/models/metric_model.rb +52 -4
- data/lib/openc3/models/microservice_model.rb +7 -3
- data/lib/openc3/models/plugin_model.rb +12 -12
- data/lib/openc3/models/python_package_model.rb +3 -13
- data/lib/openc3/models/target_model.rb +83 -9
- data/lib/openc3/operators/microservice_operator.rb +5 -0
- data/lib/openc3/operators/operator.rb +69 -0
- data/lib/openc3/packets/packet.rb +10 -4
- data/lib/openc3/packets/packet_config.rb +12 -1
- data/lib/openc3/packets/packet_item.rb +27 -14
- data/lib/openc3/packets/parsers/state_parser.rb +1 -1
- data/lib/openc3/packets/structure_item.rb +3 -2
- data/lib/openc3/script/api_shared.rb +58 -84
- data/lib/openc3/script/extract.rb +215 -19
- data/lib/openc3/script/plugins.rb +4 -11
- data/lib/openc3/script/storage.rb +81 -10
- data/lib/openc3/system/system.rb +9 -6
- data/lib/openc3/topics/command_decom_topic.rb +1 -1
- data/lib/openc3/topics/command_topic.rb +2 -1
- data/lib/openc3/topics/router_topic.rb +2 -1
- data/lib/openc3/topics/telemetry_decom_topic.rb +1 -1
- data/lib/openc3/topics/telemetry_topic.rb +3 -2
- data/lib/openc3/topics/topic.rb +154 -2
- data/lib/openc3/utilities/cli_generator.rb +67 -15
- data/lib/openc3/utilities/config_overlay.rb +35 -17
- data/lib/openc3/utilities/default_plugins.rb +33 -0
- data/lib/openc3/utilities/local_mode.rb +82 -46
- data/lib/openc3/utilities/metric.rb +16 -0
- data/lib/openc3/utilities/process_stats.rb +160 -0
- data/lib/openc3/utilities/pypi_url.rb +65 -0
- data/lib/openc3/utilities/questdb_client.rb +14 -0
- data/lib/openc3/utilities/running_script.rb +22 -18
- data/lib/openc3/utilities/store_autoload.rb +20 -3
- data/lib/openc3/utilities/store_queued.rb +37 -9
- data/lib/openc3/utilities/target_file.rb +57 -12
- data/lib/openc3/utilities/topic_lag_monitor.rb +193 -0
- data/lib/openc3/version.rb +6 -6
- data/templates/conversion/conversion.py +6 -2
- data/templates/conversion/conversion.rb +5 -0
- data/templates/plugin/.github/workflows/playwright.yml +62 -0
- data/templates/plugin/.github/workflows/release.yml +45 -0
- data/templates/plugin/.github/workflows/unit-tests.yml +35 -0
- data/templates/plugin/.gitignore +6 -0
- data/templates/plugin/README.md +114 -2
- data/templates/plugin/lib/PACKAGE/__init__.py +4 -0
- data/templates/plugin/plugin.gemspec +10 -1
- data/templates/plugin/pyproject.toml +119 -0
- data/templates/tool_angular/package.json +2 -2
- data/templates/tool_angular/pnpm-workspace.yaml +16 -0
- data/templates/tool_react/package.json +1 -1
- data/templates/tool_react/pnpm-workspace.yaml +16 -0
- data/templates/tool_svelte/package.json +2 -1
- data/templates/tool_svelte/pnpm-workspace.yaml +20 -0
- data/templates/tool_vue/package.json +3 -3
- data/templates/tool_vue/pnpm-workspace.yaml +16 -0
- data/templates/widget/package.json +2 -2
- data/templates/widget/pnpm-workspace.yaml +16 -0
- metadata +16 -1
data/templates/plugin/README.md
CHANGED
|
@@ -8,6 +8,96 @@ Update this comment with your own description.
|
|
|
8
8
|
|
|
9
9
|
1. Edit the .gemspec file fields: name, summary, description, authors, email, and homepage
|
|
10
10
|
1. Update the LICENSE.md file with your company name
|
|
11
|
+
<% if @@language == 'py' -%>
|
|
12
|
+
1. Install [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage the plugin's Python dependencies
|
|
13
|
+
|
|
14
|
+
## Python dependencies with uv
|
|
15
|
+
|
|
16
|
+
The plugin's Python dependencies are declared in `pyproject.toml` and locked in `uv.lock`.
|
|
17
|
+
Both files are packaged into the gem automatically, and COSMOS reads them when the plugin is installed.
|
|
18
|
+
|
|
19
|
+
### Adding dependencies
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
uv add requests # runtime dependency, installed into COSMOS with the plugin
|
|
23
|
+
uv add --group dev pytest-mock # development only, never installed into COSMOS
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`uv add` updates both `pyproject.toml` and `uv.lock`. Commit both files.
|
|
27
|
+
|
|
28
|
+
`uv lock` resolves `pyproject.toml` and writes `uv.lock` without installing anything. `uv sync` does the
|
|
29
|
+
same when the lock is stale, then installs into `.venv`. Either works after editing `pyproject.toml` by hand;
|
|
30
|
+
commit the updated `uv.lock`.
|
|
31
|
+
|
|
32
|
+
COSMOS installs a locked plugin with `uv sync --frozen`, which installs exactly what `uv.lock` records and never
|
|
33
|
+
relocks, so a stale lock ships stale dependencies. `uv lock --check` fails if the lock is out of date.
|
|
34
|
+
|
|
35
|
+
### How COSMOS installs them
|
|
36
|
+
|
|
37
|
+
- **With `uv.lock`** (recommended): COSMOS runs `uv sync --frozen --no-dev`. Every install gets the same
|
|
38
|
+
versions, downloaded from the URLs recorded in the lock.
|
|
39
|
+
- **Without `uv.lock`**: COSMOS resolves the dependencies at install time against the PyPI URL set in
|
|
40
|
+
Admin Console -> Settings, so versions can change from one install to the next.
|
|
41
|
+
|
|
42
|
+
The `dev` dependency group is never installed into COSMOS.
|
|
43
|
+
|
|
44
|
+
### Developing locally
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
uv sync --group dev # create .venv with runtime and dev dependencies
|
|
48
|
+
uv run --group dev pytest # run tests; lib/ is on the import path
|
|
49
|
+
uv run --group dev ruff check # lint
|
|
50
|
+
uv run --group dev ruff format
|
|
51
|
+
uv run --group dev ty check # type check
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
A plain `uv sync` installs only the runtime dependencies, matching what COSMOS installs.
|
|
55
|
+
|
|
56
|
+
The plugin itself is not installed into `.venv`: COSMOS puts `lib/` on the Python path instead, and pytest and ty
|
|
57
|
+
are configured to do the same. Anything else needs `lib/` on the path to import `<%= package_name %>`:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
PYTHONPATH=lib uv run python my_script.py
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`cli generate` writes a `.python-version` file pinning the Python version of the COSMOS image it ran in, so
|
|
64
|
+
uv develops against the same Python COSMOS runs. If you upgrade to a COSMOS release with a newer Python, update
|
|
65
|
+
it with `uv python pin <version>`. Without that file uv picks any installed Python that satisfies
|
|
66
|
+
`requires-python`.
|
|
67
|
+
|
|
68
|
+
The `openc3` dev dependency provides the COSMOS Python API for your editor, tests and `ty`. Pin it to the
|
|
69
|
+
COSMOS version you deploy to so they see the same API, e.g. `uv add --group dev "openc3==X.Y.Z"`.
|
|
70
|
+
|
|
71
|
+
### Where to put Python code
|
|
72
|
+
|
|
73
|
+
Put Python code shared across the plugin in `lib/<%= package_name %>/`, never directly in `lib/`.
|
|
74
|
+
|
|
75
|
+
COSMOS adds the `lib/` directory of every installed plugin to the Python path. If two plugins both ship
|
|
76
|
+
`lib/helpers.py`, `import helpers` loads whichever one Python finds first, and the other can't be imported
|
|
77
|
+
at all. A module directly in `lib/` can also hide an installed package of the same name, such as `requests`.
|
|
78
|
+
The `<%= package_name %>` package is named after this plugin, so its modules can't collide.
|
|
79
|
+
|
|
80
|
+
Import from the package:
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
from <%= package_name %>.helpers import Helper
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Reference its files by path in plugin configuration, e.g. `INTERFACE MY_INT <%= package_name %>/my_interface.py`.
|
|
87
|
+
|
|
88
|
+
### Updating dependencies
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
uv lock --upgrade-package requests # upgrade one package
|
|
92
|
+
uv lock --upgrade # upgrade everything
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Private package indexes
|
|
96
|
+
|
|
97
|
+
See the comments in the `[tool.uv]` section of `pyproject.toml`. If the COSMOS PyPI URL setting points at
|
|
98
|
+
anything other than public PyPI, COSMOS ignores the plugin's own index settings when it resolves, so a
|
|
99
|
+
package published only to your private index must also be served by that index, or be locked in `uv.lock`.
|
|
100
|
+
<% end -%>
|
|
11
101
|
|
|
12
102
|
## Building non-tool / widget plugins
|
|
13
103
|
|
|
@@ -26,19 +116,41 @@ If you don’t have a local node environment, you can use our openc3-node contai
|
|
|
26
116
|
|
|
27
117
|
Mac / Linux:
|
|
28
118
|
|
|
29
|
-
```
|
|
119
|
+
```sh
|
|
30
120
|
docker run -it -v `pwd`:/openc3/local:z -w /openc3/local docker.io/openc3inc/openc3-node sh
|
|
31
121
|
```
|
|
32
122
|
|
|
33
123
|
Windows:
|
|
34
124
|
|
|
35
|
-
```
|
|
125
|
+
```sh
|
|
36
126
|
docker run -it -v %cd%:/openc3/local -w /openc3/local docker.io/openc3inc/openc3-node sh
|
|
37
127
|
```
|
|
38
128
|
|
|
39
129
|
1. pnpm install --frozen-lockfile --ignore-scripts
|
|
40
130
|
1. rake build VERSION=1.0.0
|
|
41
131
|
|
|
132
|
+
## Continuous integration
|
|
133
|
+
|
|
134
|
+
`.github/workflows/` ships three GitHub Actions workflows that work as soon as
|
|
135
|
+
you push this plugin to GitHub. They call shared workflows from `OpenC3/.github`,
|
|
136
|
+
so the steps stay current without you updating anything here.
|
|
137
|
+
|
|
138
|
+
- **Unit Tests** - on every push and pull request. Runs Python tests in `tests/`
|
|
139
|
+
or `test/` and Ruby specs in `spec/` or `specs/`. Whichever you don't have is
|
|
140
|
+
skipped, so just add a test file.
|
|
141
|
+
- **Playwright** - on every push and pull request, plus weekly. Builds the gem,
|
|
142
|
+
starts the latest COSMOS release in Docker, and installs the plugin through the
|
|
143
|
+
Admin tool, which catches a `plugin.txt` that doesn't parse, a target that
|
|
144
|
+
doesn't build, or a microservice that won't start. The weekly run is what tells
|
|
145
|
+
you a new COSMOS release broke this plugin. Once you add targets, list them in
|
|
146
|
+
`expected_targets` so the install is verified against them.
|
|
147
|
+
- **Release** - manual, from the Actions tab. Builds the gem, tags the commit and
|
|
148
|
+
creates a GitHub release. Publishing to the OpenC3 App Store and to RubyGems is
|
|
149
|
+
off until you add the matching secret and tick the box.
|
|
150
|
+
|
|
151
|
+
Adding a tool or a widget needs no change to any of these. All three build a
|
|
152
|
+
frontend with pnpm as soon as the plugin has a `package.json`.
|
|
153
|
+
|
|
42
154
|
## Installing into OpenC3 COSMOS
|
|
43
155
|
|
|
44
156
|
1. Go to the OpenC3 Admin Tool, Plugins Tab
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
# Python code shared across this plugin lives in this package. COSMOS puts
|
|
2
|
+
# every installed plugin's lib/ on sys.path, so a module placed directly in
|
|
3
|
+
# lib/ can collide with another plugin's module of the same name. Keeping it
|
|
4
|
+
# under this uniquely named package avoids that. See README.md.
|
|
@@ -20,7 +20,16 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
time = Time.now.strftime("%Y%m%d%H%M%S")
|
|
21
21
|
s.version = '0.0.0' + ".#{time}"
|
|
22
22
|
end
|
|
23
|
-
|
|
23
|
+
<% if @@language == 'py' -%>
|
|
24
|
+
# pyproject.toml and uv.lock must be in the gem for COSMOS to install the
|
|
25
|
+
# plugin's python dependencies: install only sees files the gem contains.
|
|
26
|
+
# Globbed rather than listed so the gem still builds before `uv lock` is run.
|
|
27
|
+
<% end -%>
|
|
28
|
+
s.files = Dir.glob("{targets,lib,public,tools,microservices}/**/*") + %w(Rakefile README.md LICENSE.md plugin.txt)<% if @@language == 'py' %> + Dir.glob("{pyproject.toml,uv.lock}")<% end %>
|
|
29
|
+
<% if @@language == 'py' -%>
|
|
30
|
+
# Running tests or scripts locally writes bytecode next to the source; keep it out of the gem.
|
|
31
|
+
s.files = s.files.reject { |file| file.include?('__pycache__') }
|
|
32
|
+
<% end -%>
|
|
24
33
|
|
|
25
34
|
s.metadata = {
|
|
26
35
|
# These fields are used when you submit your plugin to the OpenC3 Store at store.openc3.com
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "<%= plugin_name %>"
|
|
3
|
+
version = "0.0.0"
|
|
4
|
+
description = "OpenC3 <%= plugin_name %> plugin Python dependencies"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
# Add your plugin's Python dependencies here, then run `uv lock` and commit the
|
|
8
|
+
# resulting uv.lock so COSMOS installs the same versions every time.
|
|
9
|
+
dependencies = []
|
|
10
|
+
|
|
11
|
+
[dependency-groups]
|
|
12
|
+
# Development and test only. COSMOS installs plugin dependencies with --no-dev,
|
|
13
|
+
# so nothing here reaches a deployed plugin. Left unpinned on purpose: a bound
|
|
14
|
+
# written into this template would still be here whenever you generated this
|
|
15
|
+
# plugin, holding you on stale tooling. Commit the uv.lock for reproducible
|
|
16
|
+
# versions, and add a pin here only if you need a specific one.
|
|
17
|
+
dev = [
|
|
18
|
+
"openc3",
|
|
19
|
+
"pytest",
|
|
20
|
+
"ruff",
|
|
21
|
+
"ty",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
[tool.uv]
|
|
25
|
+
# This file declares dependencies only — it is not a buildable package. COSMOS
|
|
26
|
+
# loads plugin code from lib/ at runtime and installs with `uv sync --frozen`,
|
|
27
|
+
# so nothing here is ever built and no [build-system] is needed.
|
|
28
|
+
package = false
|
|
29
|
+
|
|
30
|
+
# Keep the dev group out of a plain `uv sync` so a local install matches what
|
|
31
|
+
# COSMOS installs (it passes --no-dev). Use `uv sync --group dev` while
|
|
32
|
+
# developing, or `uv run --group dev pytest`.
|
|
33
|
+
default-groups = []
|
|
34
|
+
|
|
35
|
+
# Uncomment to install dependencies from a private PyPI repository.
|
|
36
|
+
# See: https://docs.astral.sh/uv/configuration/indexes/
|
|
37
|
+
#
|
|
38
|
+
# These settings are used whenever uv resolves: when you run `uv lock` yourself,
|
|
39
|
+
# and at install time when no uv.lock is committed alongside this file.
|
|
40
|
+
#
|
|
41
|
+
# They do not always survive installation into COSMOS. When the PyPI URL in
|
|
42
|
+
# Admin Console -> Settings names anything other than public PyPI, the operator
|
|
43
|
+
# has designated an index and COSMOS makes it authoritative: the install passes
|
|
44
|
+
# uv `--no-config --no-sources`, so everything below is ignored and every
|
|
45
|
+
# package is resolved from the operator's index. A dependency published only to
|
|
46
|
+
# your private index then fails to install there, rather than being fetched
|
|
47
|
+
# from it — coordinate with the operator so their index serves it too.
|
|
48
|
+
#
|
|
49
|
+
# A committed uv.lock sidesteps this entirely: COSMOS installs with
|
|
50
|
+
# `uv sync --frozen`, which fetches the exact registry and wheel URLs recorded
|
|
51
|
+
# in the lock and consults no index at all.
|
|
52
|
+
#
|
|
53
|
+
# Indexes are searched in the order listed, before the default index. Mark one
|
|
54
|
+
# `default = true` to replace public PyPI entirely, or list your private repo
|
|
55
|
+
# first and leave PyPI as the default to fall back to it.
|
|
56
|
+
#
|
|
57
|
+
# index = [
|
|
58
|
+
# { name = "private", url = "https://private-pypi.example.com/simple" },
|
|
59
|
+
# { name = "pypi", url = "https://pypi.org/simple", default = true },
|
|
60
|
+
# ]
|
|
61
|
+
#
|
|
62
|
+
# Pin internal packages to a specific index. A pin keeps a same-named package on
|
|
63
|
+
# public PyPI from being substituted. Add `explicit = true` to an index to keep
|
|
64
|
+
# it from serving anything other than packages pinned to it.
|
|
65
|
+
#
|
|
66
|
+
# sources = { my-internal-pkg = { index = "private" } }
|
|
67
|
+
#
|
|
68
|
+
# Uncomment for self-signed certificates.
|
|
69
|
+
#
|
|
70
|
+
# allow-insecure-host = ["private-pypi.example.com"]
|
|
71
|
+
|
|
72
|
+
[tool.ty.environment]
|
|
73
|
+
# COSMOS puts the plugin's lib/ on sys.path at runtime rather than installing it,
|
|
74
|
+
# so ty needs it here to resolve imports between the plugin's own modules.
|
|
75
|
+
extra-paths = ["lib"]
|
|
76
|
+
|
|
77
|
+
[tool.pytest.ini_options]
|
|
78
|
+
# Same reason as ty's extra-paths: lib/ is on sys.path at runtime, not installed,
|
|
79
|
+
# so tests need it on the path to import the plugin's own modules.
|
|
80
|
+
pythonpath = ["lib"]
|
|
81
|
+
|
|
82
|
+
[tool.ty.rules]
|
|
83
|
+
# These are artifacts of how COSMOS ships its Python API, not mistakes in your
|
|
84
|
+
# plugin, so they are off rather than "warn": ty exits non-zero on a warning, so
|
|
85
|
+
# "warn" would fail the check just as an error does. Delete a line to opt back
|
|
86
|
+
# in, or silence a single case with `# ty: ignore[rule-name]`.
|
|
87
|
+
#
|
|
88
|
+
# openc3.script re-exports its API through star imports (from .telemetry import *,
|
|
89
|
+
# etc.) with no __all__, so ty cannot see tlm, cmd, send_raw and friends even
|
|
90
|
+
# though they resolve at runtime. unresolved-reference covers using such a name,
|
|
91
|
+
# unresolved-import covers importing one by name. Ruff's F405 flags the same
|
|
92
|
+
# thing if you want it reported.
|
|
93
|
+
unresolved-reference = "ignore"
|
|
94
|
+
unresolved-import = "ignore"
|
|
95
|
+
# Script Runner replaces openc3.script.start() at runtime with its own
|
|
96
|
+
# implementation, which accepts bind_variables. The pip package only ships the
|
|
97
|
+
# stub signature start(procedure_name).
|
|
98
|
+
unknown-argument = "ignore"
|
|
99
|
+
|
|
100
|
+
[tool.ruff]
|
|
101
|
+
line-length = 120
|
|
102
|
+
# target-version is intentionally absent: ruff infers it from the project's
|
|
103
|
+
# requires-python above, so there is one place to bump the minimum. ty does the
|
|
104
|
+
# same, which is why [tool.ty.environment] sets no python-version either.
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint]
|
|
107
|
+
select = ["E", "F", "I", "N", "UP", "B", "W", "C4", "SIM"]
|
|
108
|
+
ignore = [
|
|
109
|
+
"E402", # Module level import not at top of file
|
|
110
|
+
"E501", # Line too long (handled by the formatter)
|
|
111
|
+
"F402", # Import shadowed by loop var
|
|
112
|
+
"F403", # Star imports used - the documented way to import the COSMOS API
|
|
113
|
+
"F405", # Name may be undefined due to star import
|
|
114
|
+
"N815", # Mixed case variable in class scope
|
|
115
|
+
]
|
|
116
|
+
|
|
117
|
+
[tool.ruff.lint.isort]
|
|
118
|
+
known-first-party = ["openc3"]
|
|
119
|
+
lines-after-imports = 2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "<%= tool_name %>",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"ng": "ng",
|
|
6
6
|
"start": "ng serve",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@angular/platform-browser-dynamic": "^18.2.6",
|
|
24
24
|
"@angular/router": "^18.2.6",
|
|
25
25
|
"@astrouxds/astro-web-components": "^7.24.0",
|
|
26
|
-
"@openc3/js-common": "7.
|
|
26
|
+
"@openc3/js-common": "7.5.0",
|
|
27
27
|
"rxjs": "~7.8.0",
|
|
28
28
|
"single-spa": "^5.9.5",
|
|
29
29
|
"single-spa-angular": "^9.2.0",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Copyright 2026 OpenC3, Inc.
|
|
2
|
+
# All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# This program is distributed in the hope that it will be useful,
|
|
5
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
6
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
# See LICENSE.md for more details.
|
|
8
|
+
#
|
|
9
|
+
# This file may also be used under the terms of a commercial license
|
|
10
|
+
# if purchased from OpenC3, Inc.
|
|
11
|
+
|
|
12
|
+
minimumReleaseAge: 1440 # 1 day
|
|
13
|
+
minimumReleaseAgeExclude:
|
|
14
|
+
# we control these packages, so we don't need to wait to consume them
|
|
15
|
+
- '@openc3/js-common'
|
|
16
|
+
- '@openc3/vue-common'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Copyright 2026 OpenC3, Inc.
|
|
2
|
+
# All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# This program is distributed in the hope that it will be useful,
|
|
5
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
6
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
# See LICENSE.md for more details.
|
|
8
|
+
#
|
|
9
|
+
# This file may also be used under the terms of a commercial license
|
|
10
|
+
# if purchased from OpenC3, Inc.
|
|
11
|
+
|
|
12
|
+
minimumReleaseAge: 1440 # 1 day
|
|
13
|
+
minimumReleaseAgeExclude:
|
|
14
|
+
# we control these packages, so we don't need to wait to consume them
|
|
15
|
+
- '@openc3/js-common'
|
|
16
|
+
- '@openc3/vue-common'
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@astrouxds/astro-web-components": "^7.24.0",
|
|
15
|
-
"@openc3/js-common": "7.
|
|
15
|
+
"@openc3/js-common": "7.5.0",
|
|
16
16
|
"@smui/button": "^7.0.0",
|
|
17
17
|
"@smui/common": "^7.0.0",
|
|
18
18
|
"@smui/card": "^7.0.0",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@babel/core": "^7.25.2",
|
|
28
28
|
"@babel/preset-env": "^7.25.4",
|
|
29
|
+
"@material/theme": "^14.0.0",
|
|
29
30
|
"@rollup/plugin-commonjs": "^28.0.0",
|
|
30
31
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
31
32
|
"@testing-library/jest-dom": "^6.5.0",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Copyright 2026 OpenC3, Inc.
|
|
2
|
+
# All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# This program is distributed in the hope that it will be useful,
|
|
5
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
6
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
# See LICENSE.md for more details.
|
|
8
|
+
#
|
|
9
|
+
# This file may also be used under the terms of a commercial license
|
|
10
|
+
# if purchased from OpenC3, Inc.
|
|
11
|
+
|
|
12
|
+
# smui-theme builds its sass load path from require.resolve('@material/dom'),
|
|
13
|
+
# which only finds the sibling @material/* packages in a flat node_modules.
|
|
14
|
+
nodeLinker: hoisted
|
|
15
|
+
|
|
16
|
+
minimumReleaseAge: 1440 # 1 day
|
|
17
|
+
minimumReleaseAgeExclude:
|
|
18
|
+
# we control these packages, so we don't need to wait to consume them
|
|
19
|
+
- '@openc3/js-common'
|
|
20
|
+
- '@openc3/vue-common'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "<%= tool_name %>",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@astrouxds/astro-web-components": "^7.24.0",
|
|
14
|
-
"@openc3/js-common": "7.
|
|
15
|
-
"@openc3/vue-common": "7.
|
|
14
|
+
"@openc3/js-common": "7.5.0",
|
|
15
|
+
"@openc3/vue-common": "7.5.0",
|
|
16
16
|
"axios": "^1.7.7",
|
|
17
17
|
"date-fns": "^4.1.0",
|
|
18
18
|
"lodash": "^4.17.21",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Copyright 2026 OpenC3, Inc.
|
|
2
|
+
# All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# This program is distributed in the hope that it will be useful,
|
|
5
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
6
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
# See LICENSE.md for more details.
|
|
8
|
+
#
|
|
9
|
+
# This file may also be used under the terms of a commercial license
|
|
10
|
+
# if purchased from OpenC3, Inc.
|
|
11
|
+
|
|
12
|
+
minimumReleaseAge: 1440 # 1 day
|
|
13
|
+
minimumReleaseAgeExclude:
|
|
14
|
+
# we control these packages, so we don't need to wait to consume them
|
|
15
|
+
- '@openc3/js-common'
|
|
16
|
+
- '@openc3/vue-common'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "<%= widget_name %>",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@astrouxds/astro-web-components": "^7.24.0",
|
|
11
|
-
"@openc3/vue-common": "7.
|
|
11
|
+
"@openc3/vue-common": "7.5.0",
|
|
12
12
|
"vuetify": "^3.7.1"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Copyright 2026 OpenC3, Inc.
|
|
2
|
+
# All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# This program is distributed in the hope that it will be useful,
|
|
5
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
6
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
# See LICENSE.md for more details.
|
|
8
|
+
#
|
|
9
|
+
# This file may also be used under the terms of a commercial license
|
|
10
|
+
# if purchased from OpenC3, Inc.
|
|
11
|
+
|
|
12
|
+
minimumReleaseAge: 1440 # 1 day
|
|
13
|
+
minimumReleaseAgeExclude:
|
|
14
|
+
# we control these packages, so we don't need to wait to consume them
|
|
15
|
+
- '@openc3/js-common'
|
|
16
|
+
- '@openc3/vue-common'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openc3
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.
|
|
4
|
+
version: 7.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Melton
|
|
@@ -953,6 +953,7 @@ files:
|
|
|
953
953
|
- data/config/command_modifiers.yaml
|
|
954
954
|
- data/config/command_telemetry.yaml
|
|
955
955
|
- data/config/conversions.yaml
|
|
956
|
+
- data/config/default_plugins.yaml
|
|
956
957
|
- data/config/graph_settings.yaml
|
|
957
958
|
- data/config/interface_modifiers.yaml
|
|
958
959
|
- data/config/item_modifiers.yaml
|
|
@@ -1094,6 +1095,7 @@ files:
|
|
|
1094
1095
|
- lib/openc3/interfaces/protocols/slip_protocol.rb
|
|
1095
1096
|
- lib/openc3/interfaces/protocols/template_protocol.rb
|
|
1096
1097
|
- lib/openc3/interfaces/protocols/terminated_protocol.rb
|
|
1098
|
+
- lib/openc3/interfaces/read_queue_interface.rb
|
|
1097
1099
|
- lib/openc3/interfaces/serial_interface.rb
|
|
1098
1100
|
- lib/openc3/interfaces/simulated_target_interface.rb
|
|
1099
1101
|
- lib/openc3/interfaces/stream_interface.rb
|
|
@@ -1300,6 +1302,7 @@ files:
|
|
|
1300
1302
|
- lib/openc3/utilities/crc.rb
|
|
1301
1303
|
- lib/openc3/utilities/csv.rb
|
|
1302
1304
|
- lib/openc3/utilities/ctrf.rb
|
|
1305
|
+
- lib/openc3/utilities/default_plugins.rb
|
|
1303
1306
|
- lib/openc3/utilities/env_helper.rb
|
|
1304
1307
|
- lib/openc3/utilities/local_bucket.rb
|
|
1305
1308
|
- lib/openc3/utilities/local_mode.rb
|
|
@@ -1309,6 +1312,7 @@ files:
|
|
|
1309
1312
|
- lib/openc3/utilities/migration.rb
|
|
1310
1313
|
- lib/openc3/utilities/open_telemetry.rb
|
|
1311
1314
|
- lib/openc3/utilities/process_manager.rb
|
|
1315
|
+
- lib/openc3/utilities/process_stats.rb
|
|
1312
1316
|
- lib/openc3/utilities/pypi_url.rb
|
|
1313
1317
|
- lib/openc3/utilities/python_proxy.rb
|
|
1314
1318
|
- lib/openc3/utilities/python_venv.rb
|
|
@@ -1330,6 +1334,7 @@ files:
|
|
|
1330
1334
|
- lib/openc3/utilities/target_file.rb
|
|
1331
1335
|
- lib/openc3/utilities/thread_manager.rb
|
|
1332
1336
|
- lib/openc3/utilities/throttle.rb
|
|
1337
|
+
- lib/openc3/utilities/topic_lag_monitor.rb
|
|
1333
1338
|
- lib/openc3/utilities/zip.rb
|
|
1334
1339
|
- lib/openc3/version.rb
|
|
1335
1340
|
- lib/openc3/win32/excel.rb
|
|
@@ -1345,12 +1350,17 @@ files:
|
|
|
1345
1350
|
- templates/limits_response/response.rb
|
|
1346
1351
|
- templates/microservice/microservices/TEMPLATE/microservice.py
|
|
1347
1352
|
- templates/microservice/microservices/TEMPLATE/microservice.rb
|
|
1353
|
+
- templates/plugin/.github/workflows/playwright.yml
|
|
1354
|
+
- templates/plugin/.github/workflows/release.yml
|
|
1355
|
+
- templates/plugin/.github/workflows/unit-tests.yml
|
|
1348
1356
|
- templates/plugin/.gitignore
|
|
1349
1357
|
- templates/plugin/LICENSE.md
|
|
1350
1358
|
- templates/plugin/README.md
|
|
1351
1359
|
- templates/plugin/Rakefile
|
|
1360
|
+
- templates/plugin/lib/PACKAGE/__init__.py
|
|
1352
1361
|
- templates/plugin/plugin.gemspec
|
|
1353
1362
|
- templates/plugin/plugin.txt
|
|
1363
|
+
- templates/plugin/pyproject.toml
|
|
1354
1364
|
- templates/processor/processor.py
|
|
1355
1365
|
- templates/processor/processor.rb
|
|
1356
1366
|
- templates/target/targets/TARGET/cmd_tlm/cmd.txt
|
|
@@ -1370,6 +1380,7 @@ files:
|
|
|
1370
1380
|
- templates/tool_angular/angular.json
|
|
1371
1381
|
- templates/tool_angular/extra-webpack.config.js
|
|
1372
1382
|
- templates/tool_angular/package.json
|
|
1383
|
+
- templates/tool_angular/pnpm-workspace.yaml
|
|
1373
1384
|
- templates/tool_angular/src/app/app-routing.module.ts
|
|
1374
1385
|
- templates/tool_angular/src/app/app.component.html
|
|
1375
1386
|
- templates/tool_angular/src/app/app.component.scss
|
|
@@ -1397,6 +1408,7 @@ files:
|
|
|
1397
1408
|
- templates/tool_react/babel.config.json
|
|
1398
1409
|
- templates/tool_react/jest.config.js
|
|
1399
1410
|
- templates/tool_react/package.json
|
|
1411
|
+
- templates/tool_react/pnpm-workspace.yaml
|
|
1400
1412
|
- templates/tool_react/src/openc3-tool_name.js
|
|
1401
1413
|
- templates/tool_react/src/root.component.js
|
|
1402
1414
|
- templates/tool_react/src/root.component.test.js
|
|
@@ -1408,6 +1420,7 @@ files:
|
|
|
1408
1420
|
- templates/tool_svelte/build/smui.css
|
|
1409
1421
|
- templates/tool_svelte/jest.config.js
|
|
1410
1422
|
- templates/tool_svelte/package.json
|
|
1423
|
+
- templates/tool_svelte/pnpm-workspace.yaml
|
|
1411
1424
|
- templates/tool_svelte/rollup.config.js
|
|
1412
1425
|
- templates/tool_svelte/src/App.svelte
|
|
1413
1426
|
- templates/tool_svelte/src/App.test.js
|
|
@@ -1419,6 +1432,7 @@ files:
|
|
|
1419
1432
|
- templates/tool_vue/eslint.config.mjs
|
|
1420
1433
|
- templates/tool_vue/jsconfig.json
|
|
1421
1434
|
- templates/tool_vue/package.json
|
|
1435
|
+
- templates/tool_vue/pnpm-workspace.yaml
|
|
1422
1436
|
- templates/tool_vue/src/App.vue
|
|
1423
1437
|
- templates/tool_vue/src/main.js
|
|
1424
1438
|
- templates/tool_vue/src/router.js
|
|
@@ -1428,6 +1442,7 @@ files:
|
|
|
1428
1442
|
- templates/widget/LICENSE.md
|
|
1429
1443
|
- templates/widget/Rakefile
|
|
1430
1444
|
- templates/widget/package.json
|
|
1445
|
+
- templates/widget/pnpm-workspace.yaml
|
|
1431
1446
|
- templates/widget/src/Widget.vue
|
|
1432
1447
|
- templates/widget/vite.config.js
|
|
1433
1448
|
homepage: https://github.com/OpenC3/cosmos
|