katalyst-taxonomy-tui 2.0.1a4__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.
@@ -0,0 +1,123 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ # Not a Python build directory: Bard's SPA keeps shared helpers (utils.ts, download.ts) in
19
+ # src/lib, and ignoring it left a fresh clone unable to build or test the SPA.
20
+ !plugins/bard/web/src/lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+
30
+ # PyInstaller
31
+ *.manifest
32
+ *.spec
33
+
34
+ # Installer logs
35
+ pip-log.txt
36
+ pip-delete-this-directory.txt
37
+
38
+ # Unit test / coverage reports
39
+ htmlcov/
40
+ .tox/
41
+ .nox/
42
+ .coverage
43
+ .coverage.*
44
+ .cache
45
+ nosetests.xml
46
+ coverage.xml
47
+ *.cover
48
+ *.py,cover
49
+ .hypothesis/
50
+ .pytest_cache/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Environments
57
+ .env
58
+ .venv
59
+ env/
60
+ venv/
61
+ ENV/
62
+ env.bak/
63
+ venv.bak/
64
+
65
+ # Spyder project settings
66
+ .spyderproject
67
+ .spyproject
68
+
69
+ # Rope project settings
70
+ .ropeproject
71
+
72
+ # mkdocs documentation
73
+ /site
74
+
75
+ # mypy / pyright
76
+ .mypy_cache/
77
+ .dmypy.json
78
+ dmypy.json
79
+ .pyright/
80
+
81
+ # Ruff
82
+ .ruff_cache/
83
+
84
+ # IDE
85
+ .idea/
86
+ .vscode/
87
+ *.swp
88
+ *.swo
89
+ *~
90
+
91
+ # OS
92
+ .DS_Store
93
+ Thumbs.db
94
+
95
+ # Local configuration
96
+ *.local
97
+
98
+ # Browser/Playwright state files
99
+ browser-state-*.json
100
+
101
+ # Agent harness scratch (run exhaust, never the design bundle)
102
+ .opencode/sessions/
103
+ .opencode/analysis/
104
+ .opencode/package-lock.json
105
+
106
+ # Build artifacts
107
+ site/
108
+ stack-tests/cucumber-report/
109
+ stack-tests/test-results/
110
+
111
+ # Generated artifacts (rebuild with `just generate-schemas`)
112
+ taxonomy/src/katalyst_taxonomy/engine/generated/
113
+ .worktrees/
114
+ .plan-74-75-76-77.md
115
+ .HANDOFF-scaffolding-wiring.md
116
+ .HANDOFF-2-cicd-migration.md
117
+ .HANDOFF-action-execution-fixes.md
118
+ .HANDOFF-bdd-coverage.md
119
+ .HANDOFF-*.md
120
+ docs/superpowers/
121
+
122
+ # Node dependencies — installed, never committed
123
+ node_modules/
@@ -0,0 +1,12 @@
1
+ Metadata-Version: 2.5
2
+ Name: katalyst-taxonomy-tui
3
+ Version: 2.0.1a4
4
+ Summary: Terminal UI for katalyst-taxonomy
5
+ Author: eSimplicity
6
+ License: Proprietary
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: katalyst-engine<6,>=5
9
+ Requires-Dist: katalyst-taxonomy<6,>=5
10
+ Requires-Dist: loguru>=0.7
11
+ Requires-Dist: rich>=13.0
12
+ Requires-Dist: textual>=0.89
@@ -0,0 +1,36 @@
1
+ [project]
2
+ name = "katalyst-taxonomy-tui"
3
+ version = "2.0.1a4"
4
+ description = "Terminal UI for katalyst-taxonomy"
5
+ license = { text = "Proprietary" }
6
+ requires-python = ">=3.12"
7
+ authors = [
8
+ { name = "eSimplicity" }
9
+ ]
10
+ dependencies = [
11
+ "katalyst-taxonomy>=5,<6",
12
+ "katalyst-engine>=5,<6",
13
+ "textual>=0.89",
14
+ "rich>=13.0",
15
+ "loguru>=0.7",
16
+ ]
17
+
18
+ [project.scripts]
19
+ katalyst-tui = "katalyst_taxonomy_tui.__main__:main"
20
+
21
+ [build-system]
22
+ requires = ["hatchling"]
23
+ build-backend = "hatchling.build"
24
+
25
+ [tool.hatch.build.targets.wheel]
26
+ packages = ["src/katalyst_taxonomy_tui"]
27
+
28
+ [tool.hatch.build.targets.wheel.sources]
29
+ "src" = ""
30
+
31
+ [tool.hatch.build]
32
+ include = [
33
+ "src/katalyst_taxonomy_tui/**/*.py",
34
+ "src/katalyst_taxonomy_tui/**/*.css",
35
+ "src/katalyst_taxonomy_tui/py.typed",
36
+ ]
@@ -0,0 +1,22 @@
1
+ """Textual TUI package for the Katalyst taxonomy toolkit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ if TYPE_CHECKING:
8
+ from .app import run
9
+
10
+ __all__ = ["run"]
11
+
12
+
13
+ # Lazy re-export (PEP 562): importing this package must NOT eagerly pull in the
14
+ # optional 'tui' extra (textual). The always-installed `katalyst-tui` console
15
+ # script imports through here; eager imports broke graceful degradation on a
16
+ # plain install (GH #65).
17
+ def __getattr__(name: str) -> object:
18
+ if name == "run":
19
+ from .app import run
20
+
21
+ return run
22
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -0,0 +1,73 @@
1
+ """Console entrypoint for the taxonomy Textual UI.
2
+
3
+ Takes no repository path: the TUI opens on the effective configuration — every backend
4
+ the active profile reads — and every repository is a filesystem backend declared in the
5
+ user config file. A development (editable) install refuses to fall back to the default
6
+ home: see :mod:`katalyst_taxonomy.adapters.filesystem.development`.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import argparse
12
+ import sys
13
+
14
+ #: The distribution this entry point is installed from.
15
+ DISTRIBUTION = "katalyst-taxonomy-tui"
16
+
17
+
18
+ def activate_plugins() -> None:
19
+ """Give plugins a host in the TUI (#219, part 1).
20
+
21
+ Parity with the CLI, MCP and REST hosts. The TUI builds its own event bus
22
+ inside ``app.run``, which this entry point cannot reach, so plugins get a
23
+ dedicated bus here — none of the five built-ins subscribe to events, and a
24
+ plugin that needs the TUI's bus should be reached through the app rather than
25
+ the entry point.
26
+
27
+ A plugin that raises during ``register()`` stops the TUI from starting, with
28
+ the plugin named, rather than launching a UI that is quietly missing a feature.
29
+ """
30
+ from katalyst_taxonomy.adapters.filesystem.config import FilesystemConfigAdapter
31
+ from katalyst_taxonomy.plugins.startup import activate_plugins_for
32
+ from katalyst_taxonomy.services.source_providers import ensure_source_providers
33
+
34
+ # The bundles and plugins config.yaml declares with a source, as the CLI and servers do.
35
+ ensure_source_providers(True)
36
+ activate_plugins_for(FilesystemConfigAdapter())
37
+
38
+
39
+ def main() -> None:
40
+ parser = argparse.ArgumentParser(
41
+ description=(
42
+ "Run the katalyst taxonomy Textual UI on the effective configuration "
43
+ "(<user config home>/config.yaml)."
44
+ )
45
+ )
46
+ parser.parse_args()
47
+
48
+ from katalyst_taxonomy.adapters.filesystem.development import development_home_refusal
49
+ from katalyst_taxonomy.domain.homes import HomeError
50
+
51
+ try:
52
+ refusal = development_home_refusal(DISTRIBUTION)
53
+ except HomeError as exc:
54
+ parser.error(str(exc))
55
+ if refusal is not None:
56
+ parser.error(refusal)
57
+
58
+ try:
59
+ from .app import run
60
+ except ModuleNotFoundError as exc: # pragma: no cover - exercised in clean-install smoke test
61
+ sys.stderr.write(
62
+ "katalyst-tui requires the 'tui' extra. Install it with:\n"
63
+ " pip install 'katalyst-taxonomy-cli[tui]'\n"
64
+ f"(missing dependency: {exc.name})\n"
65
+ )
66
+ raise SystemExit(1) from exc
67
+
68
+ activate_plugins()
69
+ run()
70
+
71
+
72
+ if __name__ == "__main__":
73
+ main()