oasr 0.4.0__tar.gz → 0.4.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.
- {oasr-0.4.0 → oasr-0.4.1}/CHANGELOG.md +6 -2
- {oasr-0.4.0 → oasr-0.4.1}/PKG-INFO +1 -1
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/CLONE.md +0 -1
- {oasr-0.4.0 → oasr-0.4.1}/pyproject.toml +1 -1
- {oasr-0.4.0 → oasr-0.4.1}/src/cli.py +1 -1
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/exec.py +3 -8
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_exec.py +3 -9
- {oasr-0.4.0 → oasr-0.4.1}/.gitignore +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/CONTRIBUTING.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/LICENSE +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/NOTICE +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/README.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.INDEX.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/adapter.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/add-glob.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/add-remote.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/add.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/find-add.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/find.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/help.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/info.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/list.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/rm-glob.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/rm.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/status.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/sync-update.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/sync.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/.images/use.png +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/QUICKSTART.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/.INDEX.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/ADAPTER.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/ADD.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/CLEAN.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/CONFIG.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/DIFF.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/EXEC.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/FIND.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/HELP.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/INFO.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/LIST.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/REGISTRY.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/RM.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/ROOT.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/STATUS.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/SYNC.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/UPDATE.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/USE.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/commands/VALIDATE.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/validation/.INDEX.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/validation/ERRORS.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/validation/INFO.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/validation/RULES.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/docs/validation/WARNINGS.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/SKILL.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/assets/schemas/session.schema.yaml +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/assets/schemas/treatment.schema.yaml +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/00_ROUTER.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/01_SUMMARY.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/02_TRIGGERS.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/03_ALWAYS.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/04_NEVER.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/05_PROCEDURE.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/references/06_FAILURES.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/include/.doctor/session.yaml +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/include/doctor_cli.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/include/doctor_parse.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/include/pyproject.toml +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/include/uv.lock +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/router_checks.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/skill.ps1 +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/doctor/scripts/skill.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/install.ps1 +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/install.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/llms.txt +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/scripts/README.md +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/scripts/fix.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/scripts/lint.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/scripts/test.sh +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/__main__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapter.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/base.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/claude.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/codex.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/copilot.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/cursor.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/adapters/windsurf.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/base.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/claude.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/codex.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/copilot.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/opencode.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/agents/registry.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/adapter.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/add.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/clean.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/clone.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/config.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/diff.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/find.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/help.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/info.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/list.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/registry.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/rm.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/status.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/sync.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/update.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/use.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/commands/validate.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/config/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/config/defaults.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/config/schema.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/discovery.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/manifest.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/registry.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/remote.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/skillcopy/__init__.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/skillcopy/local.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/skillcopy/remote.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/tracking.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/src/validate.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/conftest.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_adapters.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_agents.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_clone.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_config.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_config_command.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_copy.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_help.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_list.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_multi_skill.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_remote.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_tracking.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/tests/test_use_glob.py +0 -0
- {oasr-0.4.0 → oasr-0.4.1}/uv.lock +0 -0
|
@@ -4,9 +4,13 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## [
|
|
7
|
+
## [0.4.1] - 2026-02-01
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### Fixed
|
|
10
|
+
- **exec command**: Fixed `CompletedProcess` attribute error where code incorrectly referenced `.success`, `.output`, and `.error` attributes that don't exist. Now correctly uses `.returncode`
|
|
11
|
+
- **clone documentation**: Removed non-existent `-r, --recursive` flag from CLONE.md documentation
|
|
12
|
+
|
|
13
|
+
## [0.4.0] - 2026-01-31
|
|
10
14
|
|
|
11
15
|
### Added
|
|
12
16
|
- **🚀 `oasr exec` command** — Execute skills as CLI tools from anywhere
|
|
@@ -17,7 +17,6 @@ oasr clone skill-one skill-two # Multiple skills
|
|
|
17
17
|
## Options
|
|
18
18
|
|
|
19
19
|
- `-d, --dest DIR` — Destination directory (default: current directory)
|
|
20
|
-
- `-r, --recursive` — Create destination directory if it doesn't exist
|
|
21
20
|
- `--quiet` — Suppress informational output
|
|
22
21
|
- `--json` — Output results in JSON format
|
|
23
22
|
|
|
@@ -13,7 +13,7 @@ from pathlib import Path
|
|
|
13
13
|
from commands import adapter, clean, clone, config, diff, exec, find, registry, sync, update, use, validate
|
|
14
14
|
from commands import help as help_cmd
|
|
15
15
|
|
|
16
|
-
__version__ = "0.4.
|
|
16
|
+
__version__ = "0.4.1"
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def main(argv: list[str] | None = None) -> int:
|
|
@@ -104,14 +104,9 @@ def run(args: argparse.Namespace) -> int:
|
|
|
104
104
|
|
|
105
105
|
try:
|
|
106
106
|
result = driver.execute(skill_content, user_prompt)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return 0
|
|
111
|
-
else:
|
|
112
|
-
print("\nError executing skill:", file=sys.stderr)
|
|
113
|
-
print(result.error, file=sys.stderr)
|
|
114
|
-
return 1
|
|
107
|
+
# CompletedProcess has returncode attribute (0 = success)
|
|
108
|
+
# Output was already streamed to stdout since capture_output=False
|
|
109
|
+
return result.returncode
|
|
115
110
|
except Exception as e:
|
|
116
111
|
print(f"\nUnexpected error: {e}", file=sys.stderr)
|
|
117
112
|
return 1
|
|
@@ -107,8 +107,7 @@ class TestExecCommand:
|
|
|
107
107
|
)
|
|
108
108
|
|
|
109
109
|
mock_result = mock.Mock()
|
|
110
|
-
mock_result.
|
|
111
|
-
mock_result.output = "Agent output here"
|
|
110
|
+
mock_result.returncode = 0 # Success
|
|
112
111
|
|
|
113
112
|
mock_driver = mock.Mock()
|
|
114
113
|
mock_driver.execute.return_value = mock_result
|
|
@@ -122,7 +121,6 @@ class TestExecCommand:
|
|
|
122
121
|
|
|
123
122
|
assert result == 0
|
|
124
123
|
captured = capsys.readouterr()
|
|
125
|
-
assert "Agent output here" in captured.out
|
|
126
124
|
assert "Executing skill 'test-skill' with codex" in captured.err
|
|
127
125
|
|
|
128
126
|
# Verify driver was called with skill content and prompt
|
|
@@ -143,8 +141,7 @@ class TestExecCommand:
|
|
|
143
141
|
)
|
|
144
142
|
|
|
145
143
|
mock_result = mock.Mock()
|
|
146
|
-
mock_result.
|
|
147
|
-
mock_result.error = "Agent failed with error"
|
|
144
|
+
mock_result.returncode = 1 # Failure
|
|
148
145
|
|
|
149
146
|
mock_driver = mock.Mock()
|
|
150
147
|
mock_driver.execute.return_value = mock_result
|
|
@@ -157,8 +154,6 @@ class TestExecCommand:
|
|
|
157
154
|
result = exec_cmd.run(args)
|
|
158
155
|
|
|
159
156
|
assert result == 1
|
|
160
|
-
captured = capsys.readouterr()
|
|
161
|
-
assert "Agent failed with error" in captured.err
|
|
162
157
|
|
|
163
158
|
def test_exec_with_explicit_agent(self, capsys, mock_registry):
|
|
164
159
|
"""Test exec with explicit agent flag."""
|
|
@@ -172,8 +167,7 @@ class TestExecCommand:
|
|
|
172
167
|
)
|
|
173
168
|
|
|
174
169
|
mock_result = mock.Mock()
|
|
175
|
-
mock_result.
|
|
176
|
-
mock_result.output = "Success"
|
|
170
|
+
mock_result.returncode = 0 # Success
|
|
177
171
|
|
|
178
172
|
mock_driver = mock.Mock()
|
|
179
173
|
mock_driver.execute.return_value = mock_result
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oasr-0.4.0 → oasr-0.4.1}/NOTICE
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
|
|
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
|
|
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
|