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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: exemplar-cli
3
- Version: 0.1.5
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.4,<0.2)
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", "gateway", "doctor"],
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", "gateway", "doctor"):
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.5"
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.4,<0.2"
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