exemplar-cli 0.1.5__tar.gz → 0.1.6__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.
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/PKG-INFO +2 -2
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/main.py +2 -7
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/pyproject.toml +2 -2
- exemplar_cli-0.1.5/exemplar_cli/gateway.py +0 -111
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/README.md +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/__init__.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/_scopes.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/_skill_targets.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/doctor.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/memory.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/prompts.py +0 -0
- {exemplar_cli-0.1.5 → exemplar_cli-0.1.6}/exemplar_cli/skills.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: exemplar-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: Exemplar terminal CLI for skills, prompts, gateway catalog, and memory
|
|
5
5
|
License: LicenseRef-Proprietary
|
|
6
6
|
Author: Exemplar Dev LLC
|
|
@@ -10,7 +10,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
-
Requires-Dist: exemplar-core (>=0.1.
|
|
13
|
+
Requires-Dist: exemplar-core (>=0.1.5,<0.2)
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
|
|
16
16
|
# exemplar-cli
|
|
@@ -6,7 +6,6 @@ import argparse
|
|
|
6
6
|
import sys
|
|
7
7
|
|
|
8
8
|
from exemplar_cli.doctor import main as doctor_main
|
|
9
|
-
from exemplar_cli.gateway import main as gateway_main
|
|
10
9
|
from exemplar_cli.memory import main as memory_main
|
|
11
10
|
from exemplar_cli.prompts import main as prompts_main
|
|
12
11
|
from exemplar_cli.skills import main as skills_main
|
|
@@ -15,7 +14,6 @@ _EPILOG = """
|
|
|
15
14
|
Commands:
|
|
16
15
|
skills Manage org agent skills (pull to Cursor/Claude, push from disk)
|
|
17
16
|
prompts Manage versioned prompt templates (create, run, publish)
|
|
18
|
-
gateway List AI gateway providers and live models
|
|
19
17
|
memory Manage long-term agent memory (add, search, recall)
|
|
20
18
|
doctor Verify install, PATH, and EXEMPLAR_API_KEY
|
|
21
19
|
|
|
@@ -23,7 +21,6 @@ Examples:
|
|
|
23
21
|
exemplar doctor
|
|
24
22
|
exemplar skills pull refund-policy
|
|
25
23
|
exemplar prompts list
|
|
26
|
-
exemplar gateway providers
|
|
27
24
|
exemplar memory add "User prefers bullets" --user-id u1
|
|
28
25
|
|
|
29
26
|
Run `exemplar <command> --help` for full subcommand reference.
|
|
@@ -43,7 +40,7 @@ def _build_root_parser() -> argparse.ArgumentParser:
|
|
|
43
40
|
parser.add_argument(
|
|
44
41
|
"command",
|
|
45
42
|
nargs="?",
|
|
46
|
-
choices=["skills", "memory", "prompts", "
|
|
43
|
+
choices=["skills", "memory", "prompts", "doctor"],
|
|
47
44
|
help="Command group to run",
|
|
48
45
|
)
|
|
49
46
|
parser.add_argument("args", nargs=argparse.REMAINDER, help=argparse.SUPPRESS)
|
|
@@ -52,15 +49,13 @@ def _build_root_parser() -> argparse.ArgumentParser:
|
|
|
52
49
|
|
|
53
50
|
def main(argv: list[str] | None = None) -> int:
|
|
54
51
|
raw = list(argv if argv is not None else sys.argv[1:])
|
|
55
|
-
if raw and raw[0] in ("skills", "memory", "prompts", "
|
|
52
|
+
if raw and raw[0] in ("skills", "memory", "prompts", "doctor"):
|
|
56
53
|
if raw[0] == "skills":
|
|
57
54
|
return skills_main(raw[1:])
|
|
58
55
|
if raw[0] == "memory":
|
|
59
56
|
return memory_main(raw[1:])
|
|
60
57
|
if raw[0] == "prompts":
|
|
61
58
|
return prompts_main(raw[1:])
|
|
62
|
-
if raw[0] == "gateway":
|
|
63
|
-
return gateway_main(raw[1:])
|
|
64
59
|
if raw[0] == "doctor":
|
|
65
60
|
return doctor_main(raw[1:])
|
|
66
61
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "exemplar-cli"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.6"
|
|
4
4
|
description = "Exemplar terminal CLI for skills, prompts, gateway catalog, and memory"
|
|
5
5
|
authors = ["Exemplar Dev LLC"]
|
|
6
6
|
license = "LicenseRef-Proprietary"
|
|
@@ -9,7 +9,7 @@ packages = [{ include = "exemplar_cli" }]
|
|
|
9
9
|
|
|
10
10
|
[tool.poetry.dependencies]
|
|
11
11
|
python = ">=3.10,<4.0"
|
|
12
|
-
exemplar-core = ">=0.1.
|
|
12
|
+
exemplar-core = ">=0.1.5,<0.2"
|
|
13
13
|
|
|
14
14
|
[tool.poetry.scripts]
|
|
15
15
|
exemplar = "exemplar_cli.main:main"
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"""CLI: exemplar gateway — list AI gateway providers and live models."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import argparse
|
|
6
|
-
import json
|
|
7
|
-
import sys
|
|
8
|
-
|
|
9
|
-
from exemplar_core import gateway_from_env
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def _cmd_providers(args: argparse.Namespace) -> int:
|
|
13
|
-
providers = gateway_from_env().list_providers(llm_only=not args.all_providers)
|
|
14
|
-
if args.json:
|
|
15
|
-
print(
|
|
16
|
-
json.dumps(
|
|
17
|
-
[
|
|
18
|
-
{
|
|
19
|
-
"provider_key": p.provider_key,
|
|
20
|
-
"display_name": p.display_name,
|
|
21
|
-
"categories": p.categories,
|
|
22
|
-
}
|
|
23
|
-
for p in providers
|
|
24
|
-
],
|
|
25
|
-
indent=2,
|
|
26
|
-
)
|
|
27
|
-
)
|
|
28
|
-
return 0
|
|
29
|
-
for item in providers:
|
|
30
|
-
cats = ",".join(item.categories) or "-"
|
|
31
|
-
print(f"{item.provider_key}\t{item.display_name}\t{cats}")
|
|
32
|
-
return 0
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def _cmd_models(args: argparse.Namespace) -> int:
|
|
36
|
-
result = gateway_from_env().list_models(args.provider)
|
|
37
|
-
if args.json:
|
|
38
|
-
print(
|
|
39
|
-
json.dumps(
|
|
40
|
-
{
|
|
41
|
-
"provider_key": result.provider_key,
|
|
42
|
-
"source": result.source,
|
|
43
|
-
"error": result.error,
|
|
44
|
-
"models": [
|
|
45
|
-
{
|
|
46
|
-
"gateway_model_id": m.gateway_model_id,
|
|
47
|
-
"name": m.name,
|
|
48
|
-
}
|
|
49
|
-
for m in result.models
|
|
50
|
-
],
|
|
51
|
-
},
|
|
52
|
-
indent=2,
|
|
53
|
-
)
|
|
54
|
-
)
|
|
55
|
-
return 0
|
|
56
|
-
if result.error:
|
|
57
|
-
print(f"unavailable: {result.error}", file=sys.stderr)
|
|
58
|
-
return 1
|
|
59
|
-
for model in result.models:
|
|
60
|
-
print(f"{model.gateway_model_id}\t{model.name}")
|
|
61
|
-
return 0
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def main(argv: list[str] | None = None) -> int:
|
|
65
|
-
parser = argparse.ArgumentParser(
|
|
66
|
-
prog="exemplar gateway",
|
|
67
|
-
description=(
|
|
68
|
-
"List AI gateway providers and live upstream models from the Exemplar "
|
|
69
|
-
"integration-service catalog (/api/gateway)."
|
|
70
|
-
),
|
|
71
|
-
epilog=(
|
|
72
|
-
"Examples:\n"
|
|
73
|
-
" exemplar gateway providers\n"
|
|
74
|
-
" exemplar gateway models --provider gemini\n"
|
|
75
|
-
),
|
|
76
|
-
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
77
|
-
)
|
|
78
|
-
sub = parser.add_subparsers(dest="command", required=True)
|
|
79
|
-
|
|
80
|
-
providers_p = sub.add_parser(
|
|
81
|
-
"providers",
|
|
82
|
-
help="List gateway LLM providers",
|
|
83
|
-
description="List providers from integrations/gateway_providers.yaml.",
|
|
84
|
-
)
|
|
85
|
-
providers_p.add_argument(
|
|
86
|
-
"--all-providers",
|
|
87
|
-
action="store_true",
|
|
88
|
-
help="Include non-LLM providers (default: LLM only)",
|
|
89
|
-
)
|
|
90
|
-
providers_p.add_argument("--json", action="store_true", help="Output JSON")
|
|
91
|
-
providers_p.set_defaults(func=_cmd_providers)
|
|
92
|
-
|
|
93
|
-
models_p = sub.add_parser(
|
|
94
|
-
"models",
|
|
95
|
-
help="List live models for a provider",
|
|
96
|
-
description="Proxy live model list from exemplar-ai-gateway for a connected provider.",
|
|
97
|
-
)
|
|
98
|
-
models_p.add_argument(
|
|
99
|
-
"provider",
|
|
100
|
-
metavar="PROVIDER",
|
|
101
|
-
help="Provider key, e.g. openai or gemini",
|
|
102
|
-
)
|
|
103
|
-
models_p.add_argument("--json", action="store_true", help="Output JSON")
|
|
104
|
-
models_p.set_defaults(func=_cmd_models)
|
|
105
|
-
|
|
106
|
-
args = parser.parse_args(argv)
|
|
107
|
-
return int(args.func(args))
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if __name__ == "__main__":
|
|
111
|
-
raise SystemExit(main())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|