skillware 0.4.1__tar.gz → 0.4.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.
- {skillware-0.4.1/skillware.egg-info → skillware-0.4.2}/PKG-INFO +7 -6
- {skillware-0.4.1 → skillware-0.4.2}/README.md +6 -5
- {skillware-0.4.1 → skillware-0.4.2}/pyproject.toml +1 -1
- {skillware-0.4.1 → skillware-0.4.2}/skillware/cli.py +68 -18
- {skillware-0.4.1 → skillware-0.4.2/skillware.egg-info}/PKG-INFO +7 -6
- {skillware-0.4.1 → skillware-0.4.2}/tests/test_version_policy.py +1 -1
- {skillware-0.4.1 → skillware-0.4.2}/LICENSE +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/MANIFEST.in +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/setup.cfg +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/mica_corpus.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/mica_module/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/pii_masker/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/compliance/tos_evaluator/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/abis.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/config.yaml.example +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/addressbook.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/chains.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/tokens.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/defi/evm_tx_handler/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/dev_tools/issue_resolver/workflow.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/data/api_index.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/data/terminology_map.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/entities.ftm.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/malicious_scs_2025.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_fbi_lazarus_20250722_180019.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_israel_nbctf_20250722_180019.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_uniswap_trm.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/maintenance/normalization_tool.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/budget.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/data/model_pricing.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/monitoring/token_limiter/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/office/pdf_form_filler/utils.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/optimization/prompt_rewriter/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/card.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/constraints.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/crisis_gate.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/instructions.md +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/kb/corpus.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/kb/crisis_resources.json +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/kb/hard_constraints.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/kb_provider.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/manifest.yaml +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/resources.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skills/wellness/mental_coach/test_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/__main__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/core/__init__.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/core/base_skill.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/core/env.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/core/loader.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware/version_policy.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware.egg-info/SOURCES.txt +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware.egg-info/dependency_links.txt +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware.egg-info/entry_points.txt +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware.egg-info/requires.txt +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/skillware.egg-info/top_level.txt +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/tests/test_cli.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/tests/test_loader.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/tests/test_registry_docs.py +0 -0
- {skillware-0.4.1 → skillware-0.4.2}/tests/test_skill_issuer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skillware
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A framework for modular, self-contained AI skills.
|
|
5
5
|
Author-email: ARPA Hellenic Logical Systems <skillware-os@arpacorp.net>
|
|
6
6
|
License: MIT License
|
|
@@ -124,10 +124,10 @@ Browse capabilities by category in the [Skill library](docs/skills/README.md) or
|
|
|
124
124
|
|
|
125
125
|
```mermaid
|
|
126
126
|
flowchart LR
|
|
127
|
-
Registry[
|
|
128
|
-
|
|
129
|
-
Host -->|Prompt + Tools|
|
|
130
|
-
|
|
127
|
+
Registry[Registry] -->|Load| Loader[Loader]
|
|
128
|
+
Loader -->|Adapt| Host[Host]
|
|
129
|
+
Host -->|Prompt + Tools| LogicalSystems([Logical Systems])
|
|
130
|
+
LogicalSystems -->|Tool Call| Host
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Install the registry once. Skillware loads a bundle and adapts it to your model's tool format — you run the loop. For details on how the loader turns the manifest into a tool, see the [Introduction](docs/introduction.md).
|
|
@@ -238,9 +238,10 @@ load_env_file()
|
|
|
238
238
|
# 1. Load the Skill from the Registry
|
|
239
239
|
# The loader reads the code, manifest, and instructions automatically
|
|
240
240
|
skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
|
|
241
|
-
skill = skill_bundle["
|
|
241
|
+
skill = skill_bundle["class"](
|
|
242
242
|
config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
|
|
243
243
|
)
|
|
244
|
+
# Or: skill = skill_bundle["module"].WalletScreeningSkill(config={...})
|
|
244
245
|
|
|
245
246
|
# 2. Client & Tool Setup
|
|
246
247
|
client = genai.Client()
|
|
@@ -53,10 +53,10 @@ Browse capabilities by category in the [Skill library](docs/skills/README.md) or
|
|
|
53
53
|
|
|
54
54
|
```mermaid
|
|
55
55
|
flowchart LR
|
|
56
|
-
Registry[
|
|
57
|
-
|
|
58
|
-
Host -->|Prompt + Tools|
|
|
59
|
-
|
|
56
|
+
Registry[Registry] -->|Load| Loader[Loader]
|
|
57
|
+
Loader -->|Adapt| Host[Host]
|
|
58
|
+
Host -->|Prompt + Tools| LogicalSystems([Logical Systems])
|
|
59
|
+
LogicalSystems -->|Tool Call| Host
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Install the registry once. Skillware loads a bundle and adapts it to your model's tool format — you run the loop. For details on how the loader turns the manifest into a tool, see the [Introduction](docs/introduction.md).
|
|
@@ -167,9 +167,10 @@ load_env_file()
|
|
|
167
167
|
# 1. Load the Skill from the Registry
|
|
168
168
|
# The loader reads the code, manifest, and instructions automatically
|
|
169
169
|
skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
|
|
170
|
-
skill = skill_bundle["
|
|
170
|
+
skill = skill_bundle["class"](
|
|
171
171
|
config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
|
|
172
172
|
)
|
|
173
|
+
# Or: skill = skill_bundle["module"].WalletScreeningSkill(config={...})
|
|
173
174
|
|
|
174
175
|
# 2. Client & Tool Setup
|
|
175
176
|
client = genai.Client()
|
|
@@ -27,6 +27,19 @@ BORDER_STYLE = "#C7CEEA" # lavender - table border
|
|
|
27
27
|
SPLASH_STYLE = "#C7CEEA" # lavender - skillware splash color
|
|
28
28
|
MENU_STYLE = "#FFDAC1" # peach - menu category
|
|
29
29
|
|
|
30
|
+
SPLASH_GRADIENT_START = (0xD4, 0xE4, 0xF1)
|
|
31
|
+
SPLASH_GRADIENT_MID = (0x79, 0xB6, 0xD8)
|
|
32
|
+
SPLASH_GRADIENT_END = (0xEB, 0xD8, 0xDC)
|
|
33
|
+
|
|
34
|
+
_SPLASH_LOGO_LINES = (
|
|
35
|
+
" ███████╗██╗ ██╗██╗██╗ ██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗",
|
|
36
|
+
" ██╔════╝██║ ██╔╝██║██║ ██║ ██║ ██║██╔══██╗██╔══██╗██╔════╝",
|
|
37
|
+
" ███████╗█████╔╝ ██║██║ ██║ ██║ █╗ ██║███████║██████╔╝█████╗",
|
|
38
|
+
" ╚════██║██╔═██╗ ██║██║ ██║ ██║███╗██║██╔══██║██╔══██╗██╔══╝",
|
|
39
|
+
" ███████║██║ ██╗██║███████╗███████╗╚███╔███╔╝██║ ██║██║ ██║███████╗",
|
|
40
|
+
" ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝",
|
|
41
|
+
)
|
|
42
|
+
|
|
30
43
|
_EXAMPLES_README_REL = Path("examples") / "README.md"
|
|
31
44
|
_PARENT_WALK_LIMIT = 6
|
|
32
45
|
_SKILL_ID_PATTERN = re.compile(r"`([\w-]+/[\w-]+)`")
|
|
@@ -549,29 +562,67 @@ def cmd_help(console=None) -> None:
|
|
|
549
562
|
)
|
|
550
563
|
|
|
551
564
|
|
|
565
|
+
def _rgb_to_hex(rgb: Tuple[int, int, int]) -> str:
|
|
566
|
+
r, g, b = rgb
|
|
567
|
+
return f"#{r:02x}{g:02x}{b:02x}"
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
def _lerp_rgb(
|
|
571
|
+
start: Tuple[int, int, int], end: Tuple[int, int, int], t: float
|
|
572
|
+
) -> Tuple[int, int, int]:
|
|
573
|
+
return tuple(int(start[i] + (end[i] - start[i]) * t) for i in range(3))
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
def _splash_gradient_color(column: int, width: int) -> str:
|
|
577
|
+
if width <= 1:
|
|
578
|
+
return _rgb_to_hex(SPLASH_GRADIENT_START)
|
|
579
|
+
t = column / (width - 1)
|
|
580
|
+
if t <= 0.5:
|
|
581
|
+
rgb = _lerp_rgb(SPLASH_GRADIENT_START, SPLASH_GRADIENT_MID, t / 0.5)
|
|
582
|
+
else:
|
|
583
|
+
rgb = _lerp_rgb(SPLASH_GRADIENT_MID, SPLASH_GRADIENT_END, (t - 0.5) / 0.5)
|
|
584
|
+
return _rgb_to_hex(rgb)
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
def _gradient_text_line(line: str, width: int) -> Text:
|
|
588
|
+
text = Text()
|
|
589
|
+
for column, char in enumerate(line):
|
|
590
|
+
text.append(char, style=_splash_gradient_color(column, width))
|
|
591
|
+
return text
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
def _gradient_splash_text(logo_lines: Tuple[str, ...]) -> Text:
|
|
595
|
+
width = max(len(line) for line in logo_lines)
|
|
596
|
+
text = Text()
|
|
597
|
+
for line in logo_lines:
|
|
598
|
+
text.append(_gradient_text_line(line, width))
|
|
599
|
+
text.append("\n")
|
|
600
|
+
return text
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
def _package_version_str() -> str:
|
|
604
|
+
installed = get_installed_version()
|
|
605
|
+
if installed is not None:
|
|
606
|
+
return str(installed)
|
|
607
|
+
try:
|
|
608
|
+
return importlib.metadata.version("skillware")
|
|
609
|
+
except importlib.metadata.PackageNotFoundError:
|
|
610
|
+
return "dev"
|
|
611
|
+
|
|
612
|
+
|
|
552
613
|
def cmd_interactive(console=None, parser=None) -> None:
|
|
553
614
|
"""Launch ASCII splash screen and interactive menu."""
|
|
554
615
|
if console is None:
|
|
555
616
|
console = Console()
|
|
556
617
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
except importlib.metadata.PackageNotFoundError:
|
|
560
|
-
version = "dev"
|
|
561
|
-
|
|
562
|
-
splash = r"""
|
|
563
|
-
███████╗██╗ ██╗██╗██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗
|
|
564
|
-
██╔════╝██║ ██╔╝██║██║ ██║ ██║██╔══██╗██╔══██╗██╔════╝
|
|
565
|
-
███████╗█████╔╝ ██║██║ ██║ █╗ ██║███████║██████╔╝█████╗
|
|
566
|
-
╚════██║██╔═██╗ ██║██║ ██║███╗██║██╔══██║██╔══██╗██╔══╝
|
|
567
|
-
███████║██║ ██╗██║███████╗╚███╔███╔╝██║ ██║██║ ██║███████╗
|
|
568
|
-
╚══════╝╚═╝ ╚═╝╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝"""
|
|
618
|
+
version = _package_version_str()
|
|
619
|
+
logo_width = max(len(line) for line in _SPLASH_LOGO_LINES)
|
|
569
620
|
|
|
570
|
-
console.print(
|
|
621
|
+
console.print(_gradient_splash_text(_SPLASH_LOGO_LINES))
|
|
571
622
|
console.print(
|
|
572
|
-
|
|
573
|
-
f" Skill Management Framework
|
|
574
|
-
|
|
623
|
+
_gradient_text_line(
|
|
624
|
+
f" Skillware v{version} — Skill Management Framework",
|
|
625
|
+
logo_width,
|
|
575
626
|
)
|
|
576
627
|
)
|
|
577
628
|
|
|
@@ -653,8 +704,7 @@ def main() -> None:
|
|
|
653
704
|
help="Show this help message and exit.",
|
|
654
705
|
)
|
|
655
706
|
|
|
656
|
-
|
|
657
|
-
_version_str = str(_ver) if _ver else "dev"
|
|
707
|
+
_version_str = _package_version_str()
|
|
658
708
|
|
|
659
709
|
parser.add_argument(
|
|
660
710
|
"--version",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skillware
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A framework for modular, self-contained AI skills.
|
|
5
5
|
Author-email: ARPA Hellenic Logical Systems <skillware-os@arpacorp.net>
|
|
6
6
|
License: MIT License
|
|
@@ -124,10 +124,10 @@ Browse capabilities by category in the [Skill library](docs/skills/README.md) or
|
|
|
124
124
|
|
|
125
125
|
```mermaid
|
|
126
126
|
flowchart LR
|
|
127
|
-
Registry[
|
|
128
|
-
|
|
129
|
-
Host -->|Prompt + Tools|
|
|
130
|
-
|
|
127
|
+
Registry[Registry] -->|Load| Loader[Loader]
|
|
128
|
+
Loader -->|Adapt| Host[Host]
|
|
129
|
+
Host -->|Prompt + Tools| LogicalSystems([Logical Systems])
|
|
130
|
+
LogicalSystems -->|Tool Call| Host
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Install the registry once. Skillware loads a bundle and adapts it to your model's tool format — you run the loop. For details on how the loader turns the manifest into a tool, see the [Introduction](docs/introduction.md).
|
|
@@ -238,9 +238,10 @@ load_env_file()
|
|
|
238
238
|
# 1. Load the Skill from the Registry
|
|
239
239
|
# The loader reads the code, manifest, and instructions automatically
|
|
240
240
|
skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
|
|
241
|
-
skill = skill_bundle["
|
|
241
|
+
skill = skill_bundle["class"](
|
|
242
242
|
config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
|
|
243
243
|
)
|
|
244
|
+
# Or: skill = skill_bundle["module"].WalletScreeningSkill(config={...})
|
|
244
245
|
|
|
245
246
|
# 2. Client & Tool Setup
|
|
246
247
|
client = genai.Client()
|
|
@@ -39,7 +39,7 @@ def test_emit_advisory_silent_for_current_release(monkeypatch, capsys):
|
|
|
39
39
|
monkeypatch.setattr(
|
|
40
40
|
version_policy.metadata,
|
|
41
41
|
"version",
|
|
42
|
-
lambda _name: "0.4.
|
|
42
|
+
lambda _name: "0.4.2",
|
|
43
43
|
)
|
|
44
44
|
version_policy.emit_upgrade_advisory()
|
|
45
45
|
assert capsys.readouterr().err == ""
|
|
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
|
{skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/instructions.md
RENAMED
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/manifest.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/test_skill.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/data/api_index.json
RENAMED
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/finance/uk_companies_house_handler/instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/malicious_scs_2025.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{skillware-0.4.1 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_uniswap_trm.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
|
|
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
|