wizard-central-toolkit 0.2.0__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.
Files changed (122) hide show
  1. wizard_central_toolkit-0.2.0/CHANGELOG.md +119 -0
  2. wizard_central_toolkit-0.2.0/COMMANDS.md +405 -0
  3. wizard_central_toolkit-0.2.0/DEMO.md +2721 -0
  4. wizard_central_toolkit-0.2.0/INSTALL.sh +55 -0
  5. wizard_central_toolkit-0.2.0/LICENSE +201 -0
  6. wizard_central_toolkit-0.2.0/MANIFEST.in +3 -0
  7. wizard_central_toolkit-0.2.0/PKG-INFO +203 -0
  8. wizard_central_toolkit-0.2.0/PROVIDERS.md +162 -0
  9. wizard_central_toolkit-0.2.0/README.md +181 -0
  10. wizard_central_toolkit-0.2.0/SECURITY.md +34 -0
  11. wizard_central_toolkit-0.2.0/pyproject.toml +97 -0
  12. wizard_central_toolkit-0.2.0/setup.cfg +4 -0
  13. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/__init__.py +2 -0
  14. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/__main__.py +6 -0
  15. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/cli.py +79 -0
  16. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/lib/__init__.py +1 -0
  17. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/lib/banner_wizard.py +999 -0
  18. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/lib/banner_wrapper.py +199 -0
  19. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/bannerwiz/lib/cli.py +79 -0
  20. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/__init__.py +1 -0
  21. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/__main__.py +19 -0
  22. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/cli.py +971 -0
  23. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/codeguard_wizard.py +269 -0
  24. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/rust_engine.py +348 -0
  25. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/codeguardwiz/static_engine.py +307 -0
  26. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/common/__init__.py +1 -0
  27. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/debugwiz/__init__.py +1 -0
  28. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/debugwiz/__main__.py +360 -0
  29. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/debugwiz/debug_wizard.py +364 -0
  30. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/__init__.py +0 -0
  31. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/__main__.py +21 -0
  32. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/cli.py +134 -0
  33. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/lib/__init__.py +1 -0
  34. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/lib/cli.py +144 -0
  35. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/diffwiz/lib/diff_wizard.py +89 -0
  36. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/__init__.py +0 -0
  37. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/__main__.py +18 -0
  38. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/ai.py +136 -0
  39. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/lib/__init__.py +1 -0
  40. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/lib/cli.py +925 -0
  41. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/godfatherwiz/lib/godfather_wizard.py +1552 -0
  42. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/__init__.py +0 -0
  43. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/__main__.py +21 -0
  44. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/cli.py +4 -0
  45. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/lib/__init__.py +1 -0
  46. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/lib/cli.py +138 -0
  47. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/jsonwiz/lib/json_wizard.py +133 -0
  48. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/pythonwiz/__init__.py +0 -0
  49. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/pythonwiz/__main__.py +21 -0
  50. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/pythonwiz/lib/__init__.py +1 -0
  51. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/pythonwiz/lib/cli.py +247 -0
  52. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/pythonwiz/lib/python_wizard.py +353 -0
  53. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/__init__.py +5 -0
  54. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/__main__.py +15 -0
  55. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/cli.py +46 -0
  56. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/lib/__init__.py +1 -0
  57. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/lib/cli.py +47 -0
  58. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/readwiz/lib/read_wizard.py +121 -0
  59. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/__init__.py +5 -0
  60. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/__main__.py +7 -0
  61. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/cli.py +4 -0
  62. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/lib/__init__.py +1 -0
  63. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/lib/cli.py +53 -0
  64. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/rustwiz/lib/rust_wizard.py +128 -0
  65. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/__init__.py +0 -0
  66. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/__main__.py +15 -0
  67. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/cli.py +7 -0
  68. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/lib/__init__.py +1 -0
  69. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/lib/cli.py +10 -0
  70. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tmuxwiz/lib/tmux_wizard.py +229 -0
  71. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/__init__.py +0 -0
  72. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/__main__.py +22 -0
  73. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/cli.py +4 -0
  74. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/lib/__init__.py +1 -0
  75. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/lib/cli.py +82 -0
  76. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/todowiz/lib/todo_wizard.py +134 -0
  77. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/tools_registry.py +62 -0
  78. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/wiz/__init__.py +0 -0
  79. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/wiz/__main__.py +141 -0
  80. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/writewiz/__init__.py +1 -0
  81. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/writewiz/__main__.py +9 -0
  82. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/writewiz/cli.py +264 -0
  83. wizard_central_toolkit-0.2.0/src/wiz_central_toolkit/writewiz/write_wizard.py +384 -0
  84. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/PKG-INFO +203 -0
  85. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/SOURCES.txt +120 -0
  86. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/dependency_links.txt +1 -0
  87. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/entry_points.txt +50 -0
  88. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/requires.txt +8 -0
  89. wizard_central_toolkit-0.2.0/src/wizard_central_toolkit.egg-info/top_level.txt +1 -0
  90. wizard_central_toolkit-0.2.0/tests/test_bannerwiz.py +63 -0
  91. wizard_central_toolkit-0.2.0/tests/test_cli_integration.py +255 -0
  92. wizard_central_toolkit-0.2.0/tests/test_cli_wizards.py +53 -0
  93. wizard_central_toolkit-0.2.0/tests/test_codeguardwiz.py +319 -0
  94. wizard_central_toolkit-0.2.0/tests/test_codeguardwiz_cli.py +631 -0
  95. wizard_central_toolkit-0.2.0/tests/test_codeguardwiz_rust.py +345 -0
  96. wizard_central_toolkit-0.2.0/tests/test_debugwiz.py +390 -0
  97. wizard_central_toolkit-0.2.0/tests/test_debugwiz_imports.py +64 -0
  98. wizard_central_toolkit-0.2.0/tests/test_deep_coverage.py +256 -0
  99. wizard_central_toolkit-0.2.0/tests/test_diffwiz.py +347 -0
  100. wizard_central_toolkit-0.2.0/tests/test_diffwiz_cli.py +37 -0
  101. wizard_central_toolkit-0.2.0/tests/test_dispatcher.py +73 -0
  102. wizard_central_toolkit-0.2.0/tests/test_display_names.py +138 -0
  103. wizard_central_toolkit-0.2.0/tests/test_godfatherwiz.py +42 -0
  104. wizard_central_toolkit-0.2.0/tests/test_godfatherwiz_codegen.py +272 -0
  105. wizard_central_toolkit-0.2.0/tests/test_godfatherwiz_providers.py +388 -0
  106. wizard_central_toolkit-0.2.0/tests/test_godfatherwiz_repl_batch.py +326 -0
  107. wizard_central_toolkit-0.2.0/tests/test_godfatherwiz_repl_classifier.py +38 -0
  108. wizard_central_toolkit-0.2.0/tests/test_help_parity.py +147 -0
  109. wizard_central_toolkit-0.2.0/tests/test_jsonwiz.py +249 -0
  110. wizard_central_toolkit-0.2.0/tests/test_jsonwiz_cli.py +48 -0
  111. wizard_central_toolkit-0.2.0/tests/test_jsonwiz_files.py +46 -0
  112. wizard_central_toolkit-0.2.0/tests/test_missing_coverage.py +188 -0
  113. wizard_central_toolkit-0.2.0/tests/test_passthrough_wizards.py +33 -0
  114. wizard_central_toolkit-0.2.0/tests/test_pythonwiz.py +30 -0
  115. wizard_central_toolkit-0.2.0/tests/test_pythonwiz_extra.py +135 -0
  116. wizard_central_toolkit-0.2.0/tests/test_pythonwiz_suite.py +55 -0
  117. wizard_central_toolkit-0.2.0/tests/test_readwiz.py +18 -0
  118. wizard_central_toolkit-0.2.0/tests/test_rustwiz.py +15 -0
  119. wizard_central_toolkit-0.2.0/tests/test_small_batch.py +131 -0
  120. wizard_central_toolkit-0.2.0/tests/test_todowiz.py +238 -0
  121. wizard_central_toolkit-0.2.0/tests/test_todowiz_cli.py +36 -0
  122. wizard_central_toolkit-0.2.0/tests/test_version.py +5 -0
@@ -0,0 +1,119 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 — 2026-11-08
4
+
5
+ - The sampler made whole for pip installs: godfatherwiz now
6
+ resolves its sibling wizards from the installed package as
7
+ well as the bin lane, and reports a wizard that is nowhere
8
+ installed as honestly absent (never "reachable").
9
+ - FATHER LAW 1 amended to match: siblings are invoked where
10
+ they live — the bin lane (~/bin) first, the installed package
11
+ second; a sibling found nowhere is honestly absent.
12
+ - The October rename finished inside the package: the
13
+ distribution is `wizard-central-toolkit` in pyproject, the
14
+ README, the installer, and the two metadata lookups.
15
+ - README gains the door section: the Wizard Central Pro AI
16
+ Modes Toolkit, still in the making, that this sampler is a
17
+ window onto.
18
+ - COMMANDS.md added: every command, documented.
19
+ - Full-sweep fixes: godfatherwiz status probes the installed
20
+ fleet (never absent citizens); diagnose calls commands that
21
+ exist; debugwiz reads real tracebacks, stages its log and
22
+ proposals through writewiz, and reports real timestamps;
23
+ pythonwiz honors `#!/usr/bin/env` shebangs; bannerwiz
24
+ --help/--version print text; a missing Rust toolchain is a
25
+ plain sentence, never a traceback.
26
+ - rustwiz grows from 2 commands to 10 (run, test, clippy, fmt
27
+ --check, doc, clean, law, version — every one a real verb of
28
+ the toolchain it wraps); tmuxwiz gains capture and detach,
29
+ plus law and version.
30
+ - codeguardwiz gains a second engine: built-in static rules
31
+ (nine checks — syntax, hardcoded secrets, eval/exec, shell
32
+ execution, pickle, weak hashes, bare and swallowed excepts,
33
+ TODO markers) that audit Python with no model at all. The
34
+ model seat remains the default whenever one is served;
35
+ `--engine static|model` makes the choice the user's, and
36
+ every output names the engine that produced it. Static fix
37
+ stages its one deterministic rewrite through writewiz and
38
+ never writes a file itself.
39
+ - README gains the full roster: all 41 wizards, each marked
40
+ in this version or only in Pro.
41
+ - godfatherwiz's chains come home: audit is the truth anchor
42
+ plus codeguardwiz audit; heal finds the sick file with
43
+ debugwiz audit and stages the fix through debugwiz propose
44
+ (writewiz's wall untouched); task is todowiz alone. And
45
+ truthwiz's file senses — brief, listing, read, head, find,
46
+ du, stat, symlinks — are absorbed into godfatherwiz, so
47
+ `truth` and the REPL's /truth /ls /read /bins are served
48
+ in-house; no command or slash was renamed or removed.
49
+ - Help parity: every wizard answers both `help` and `--help`
50
+ with its own full command listing, exit 0 — bannerwiz no
51
+ longer renders the word HELP as a banner, and godfatherwiz's
52
+ bare `help` prints the full usage (a command name still
53
+ gives that command's lines). A suite gate checks each
54
+ wizard's help against the COMMANDS.md tables.
55
+ - REPL slash parity: every citizen in the box has a slash —
56
+ /banner, /codeguard, /json, /rust, /tmux, /write, /verbs are
57
+ new (35 in total). /fix and /heal no longer dispatch to the
58
+ absent repairwiz: they run godfatherwiz's own heal chain,
59
+ staging only. /models answers from the configured seats —
60
+ the live Ollama roster when a daemon serves, one plain
61
+ "no model seat" line when none does.
62
+ - REPL plain text routes first: the deterministic keyword
63
+ router answers before the oracle is ever consulted, and the
64
+ oracle speaks only when a model seat is actually serving —
65
+ seatless unmapped text is "out of scope", never an oracle
66
+ error. The oracle's instructions now teach godfatherwiz's
67
+ own senses, and sense TOOL lines execute in-process end to
68
+ end (a duplicate-shield NameError on that path is fixed).
69
+ - The consent wall is scoped to what it protects: route
70
+ resolution in `godfatherwiz run` and the REPL walls only a
71
+ route whose pipeline would change files — read-class routes
72
+ run free whatever words the sentence carried, and staging
73
+ routes (proposals) are suggestions, behind no wall. A
74
+ write-class route asks twice — a plain ask, then a typed
75
+ confirmation naming the action — before anything executes;
76
+ there is no MCP gate in this project, so the double ask is
77
+ the load-bearing wall.
78
+ - Small batch, the concluded remainders: codeguardwiz's model
79
+ `fix --write` goes through the wall — the pythonwiz gate, then
80
+ staging via writewiz, the double ask, and writewiz commit;
81
+ a no at either ask writes nothing. The oracle's consent is at
82
+ parity with `run`: staging TOOL lines never prompt, write-class
83
+ lines ask twice, and a denial tells the model the Governor
84
+ refused. debugwiz `stack` is real — a traceback digest (file
85
+ or stdin) with the deepest project frame called out and
86
+ repeated frames flagged as suspected recursion. FATHER LAW 2
87
+ names godfatherwiz's own senses as the truth anchor, and the
88
+ sampler's flavor stops borrowing Pro's numbers (no more
89
+ "Citizen #33"). Two dead twin faces are removed —
90
+ pythonwiz/cli.py (unimportable) and godfatherwiz/cli.py
91
+ (stale, unreferenced) — and call_ollama no longer calls an
92
+ ollamawiz that resolves nowhere.
93
+ - godfatherwiz gains the codegen suite in its REPL, inherited
94
+ from devrepl's modes: /brainstorm (conversation with the tool
95
+ channel off), /build and /debug (the seat authors complete
96
+ content; the person reviews the full diff, answers the double
97
+ ask, and only then writewiz commit lands it), and /diff
98
+ (review-only — stages nothing, asks nothing, and remembers
99
+ the proposal for a later /build or /debug). Nothing is auto:
100
+ a model proposes, a person approves, in that order.
101
+ - Model seats become assignable per task: ~/.godfather/
102
+ models.json holds `default`, `brainstorm`, `build`, `debug`,
103
+ `diff`, and `audit` assignments (task, then default, then the
104
+ live roster pick), managed with `godfatherwiz models`,
105
+ `godfatherwiz models set`, and `godfatherwiz models unset`.
106
+ One model can run everything; an assigned model that is not
107
+ serving is reported honestly, never silently replaced.
108
+ - Seats gain providers: an assignment may now be
109
+ `provider:model`, seating a model at one of five cloud
110
+ providers — Meta (Muse), Anthropic, OpenAI, Google, and
111
+ DeepSeek — beside the local Ollama seat. Cloud seats are the
112
+ user's opt-in, seated only with the user's own API key read
113
+ from the environment at call time; keys are never stored,
114
+ journaled, or printed, and `godfatherwiz models` shows the
115
+ six providers with key-set status only. Every model chat —
116
+ the oracle and the four codegen modes — goes through one
117
+ dispatch, and every model-authored proposal names its seat
118
+ (`seat: <provider> · <model>`). Bare model names keep
119
+ meaning Ollama, exactly as before.
@@ -0,0 +1,405 @@
1
+ # Wizard Central Toolkit — Command Reference
2
+
3
+ Every command the toolkit ships: the 13 primary commands — 25
4
+ entry points counting the aliases — all 147 subcommands, the
5
+ banner modes, the router's aliases, and the Godfather Wizard
6
+ REPL's slash commands — each with what it does. A wizard's
7
+ name-command is its full underscored form (`godfather_wizard`);
8
+ its short form (`godfatherwiz`) is an alias, listed once in the
9
+ README's "Names and aliases" section and working everywhere
10
+ the full form does.
11
+ Compiled from the wizards' own `--help` output, the REPL's own
12
+ `/help`, and the Banner Wizard's source (0.2.0).
13
+
14
+ ## The census — how the numbers stack
15
+
16
+ - **25 entry points** are installed on the PATH: the 13 primary
17
+ commands — `wiz` plus the 12 wizards under their full-form
18
+ name-commands — and the 12 short alias commands beside them.
19
+ - **147 subcommands** sit under 11 of them (the Banner Wizard works
20
+ differently — see its entry).
21
+ - **6 display modes** on the Banner Wizard (`--demo`, `--themes`,
22
+ `--styles`, `--sizes`, `--fonts`, `--interactive`).
23
+ - **11 short aliases** through the `wiz` router.
24
+ - **39 slash command forms** inside the Godfather Wizard REPL
25
+ (`/diff` carries both its legacy two-file comparison and the
26
+ codegen review form).
27
+
28
+ Counted strictly as typed commands and subcommands:
29
+ 13 + 147 = **160**, before banner modes, aliases, and slashes.
30
+ Counting every way to invoke the fleet on the primary surface:
31
+ 160 + 6 + 11 + 39 = **216**. The aliases re-offer the same
32
+ surface under the short spellings — 12 entry points, the same
33
+ 147 subcommands, and the same 6 banner modes — 165 more typed
34
+ forms, **381** in all.
35
+
36
+ ---
37
+
38
+ ## The Wizarding Router — `wiz`
39
+
40
+ The router's full name is the Wizarding Router; its command
41
+ is `wiz`, and the command does not change.
42
+
43
+ `wiz [--json] <tool> [args...]` — runs any fleet wizard by its
44
+ full-form name or its alias; `--json` emits the output as JSON;
45
+ `--version` prints the installed package version. It also
46
+ answers to 11 short aliases: `banner`, `codeguard`, `debug`,
47
+ `diff`, `json`, `python`, `read`, `rust`, `tmux`, `todo`,
48
+ `write` (each = the wizard of that stem).
49
+
50
+ ## Godfather Wizard — `godfather_wizard`, the Grand Master (22)
51
+
52
+ Fleet dispatcher and REPL. Invokes siblings where they live;
53
+ the truth senses (brief, listing, read, head, find, du, stat,
54
+ symlinks) live in-house — absorbed from the Truth Wizard, whose office
55
+ was the Godfather Wizard's own Law 2 anchor all along.
56
+
57
+ | Command | What it does |
58
+ |---|---|
59
+ | `audit <path>` | truth anchor (internal senses) + Code Guard Wizard audit |
60
+ | `task <intent>` | Todo Wizard intake |
61
+ | `run <directive>` | deterministic keyword router — read-class and staging routes run free; a write-class route asks twice (plain ask, then a typed confirmation naming the action) before it executes; unmapped mutation intent is refused at the wall |
62
+ | `routes` | print routing table |
63
+ | `fleet` | census of installed sibling wizards |
64
+ | `law` | print FATHER LAW |
65
+ | `truth <path>` | anchor ground truth (internal senses) |
66
+ | `diagnose <dir>` | Debug Wizard audit + classify on the worst file |
67
+ | `heal <file>` | Debug Wizard audit, then propose — the fix is staged via the Write Wizard, never applied |
68
+ | `status` | fleet-wide health check |
69
+ | `repl` | launch the interactive REPL cockpit |
70
+ | `siblings` | list all registered citizens |
71
+ | `verify <wizard>` | single citizen health check |
72
+ | `consent <file>` | force the Write Wizard's commit prompt |
73
+ | `schedule <intent>` | queue task |
74
+ | `queue` | show scheduled tasks |
75
+ | `history` | run history across delegations |
76
+ | `stats` | fleet-wide execution counts |
77
+ | `versions` | law drift detection |
78
+ | `help [command]` | full usage, or usage for one subcommand |
79
+ | `census` | full fleet roster |
80
+ | `models` | show the six providers, the live Ollama roster, and the per-task assignments in `~/.godfather/models.json`; `models set <task> <seat>` and `models unset <task>` manage assignments for `default`, `brainstorm`, `build`, `debug`, `diff`, and `audit` — a seat is a bare Ollama model name, or `provider:model` for a cloud provider |
81
+
82
+ Exit codes: 0 ok · 1 failed · 2 out of scope.
83
+
84
+ ## Banner Wizard — `banner_wizard`, ASCII banner wizard
85
+
86
+ `banner_wizard <words...>` renders the words as a large ASCII
87
+ banner (pyfiglet; fonts auto-discovered at runtime — typically
88
+ 571+, with 18 style presets). `--subtitle TEXT` adds a subtitle
89
+ line under the banner. Modes: `--demo` (demonstration),
90
+ `--themes` (theme gallery), `--styles` (the 18 presets),
91
+ `--sizes` (size behaviour), `--fonts` (font list),
92
+ `--interactive` (guided interactive mode).
93
+
94
+ ## Code Guard Wizard — `codeguard_wizard`, code audit wizard (9)
95
+
96
+ | Command | What it does |
97
+ |---|---|
98
+ | `audit` | audit a file or directory, print plain verdict — two engines: the model seat when one is served, the built-in static rules otherwise; the static rules cover Python (CG001–CG009) and Rust (RS001–RS007, `.rs` files and `Cargo.toml`), dispatched by extension in a single mixed audit; `--engine static\|model` chooses, and the output opens with the engine line |
99
+ | `fix` | model engine: generate repaired code for a file (preview; `--write`/`--out` stage the fix via the Write Wizard, ask twice at the terminal — plain yes, then a typed confirmation naming the file — and land only through the Write Wizard's commit). static engine: stage the one deterministic rewrite (bare `except:` → `except Exception:`) through the Write Wizard — it never writes a file itself; every other finding is listed as needing a person or the model engine |
100
+ | `lang` | detect language of a file |
101
+ | `roster` | show the engines: the static rule roster (always available) and the live model seats when a daemon serves them |
102
+ | `scan` | audit sweep on a file or directory (static engine: findings one per line) |
103
+ | `watch` | diff-since-last-audit: re-run audit, report changes |
104
+ | `severity` | the findings grouped by severity |
105
+ | `explain` | explain a static rule (`explain CG002`) or the finding at a line (`explain <file> <line>`) |
106
+ | `scaffold` | generate unit-test skeleton for file |
107
+
108
+ ## Debug Wizard — `debug_wizard`, the diagnosis oracle (22)
109
+
110
+ | Command | What it does |
111
+ |---|---|
112
+ | `law` | print the DEBUG LAW alone |
113
+ | `trace <file>` | traceback autopsy |
114
+ | `locate <dir> <pattern>` | find files with error pattern |
115
+ | `classify <file>` | error type breakdown |
116
+ | `stack [file]` | stack digest of a traceback (file or stdin): exception, frame chain with project/library marks, deepest project frame, repeated frames flagged as suspected recursion |
117
+ | `count <dir>` | errors by category |
118
+ | `hotspot <dir>` | files with most errors |
119
+ | `timeline <dir>` | error frequency by mtime |
120
+ | `imports <file>` | missing import detection |
121
+ | `names <file>` | undefined name detection |
122
+ | `signatures <file>` | signature mismatch detection |
123
+ | `suggest <file>` | heuristic fix suggestion |
124
+ | `propose <file>` | stage fix via the Write Wizard |
125
+ | `preview <file>` | show staged proposal |
126
+ | `explain <file>` | human-readable explanation |
127
+ | `audit <dir>` | full error census |
128
+ | `report <dir>` | JSON report for CI/CD |
129
+ | `log <dir>` | write error log (staged via the Write Wizard) |
130
+ | `ignore <path>` | add to ignore list |
131
+ | `ignored` | show ignored paths |
132
+ | `stats` | error census of the current directory |
133
+ | `versions` | law/version drift detection |
134
+
135
+ ## Diff Wizard — `diff_wizard`, change-truth doctor (7)
136
+
137
+ | Command | What it does |
138
+ |---|---|
139
+ | `files <a> <b>` | unified diff of two files |
140
+ | `dirs <a> <b>` | compare directory trees |
141
+ | `context <N> <a> <b>` | unified diff with N context lines |
142
+ | `summary <a> <b>` | diff statistics without full output |
143
+ | `word <a> <b>` | word-level diff |
144
+ | `same <a> <b>` | exit 0 if identical, 1 if different (silent) |
145
+ | `reverse <a> <b>` | diff b → a (swap sides) |
146
+
147
+ ## JSON Wizard — `json_wizard`, JSON doctor (9)
148
+
149
+ | Command | What it does |
150
+ |---|---|
151
+ | `validate <file\|->` | check JSON validity, line/col on failure |
152
+ | `pretty <file\|->` | pretty-print to stdout |
153
+ | `compact <file\|->` | minify to one line |
154
+ | `inspect <file\|->` | structural summary |
155
+ | `keys <file\|->` | top-level keys |
156
+ | `get <file\|-> <path>` | dotted-path value lookup (a.b.0.c) |
157
+ | `diff <a> <b>` | structural diff of two JSON docs |
158
+ | `stats <file\|->` | type census: depths, counts |
159
+ | `merge <a> <b>` | deep merge (b wins) to stdout |
160
+
161
+ ## Python Wizard — `python_wizard`, Python doctor (22)
162
+
163
+ Parse only — never executes the code it reads.
164
+
165
+ | Command | What it does |
166
+ |---|---|
167
+ | `check <file\|dir>` | syntax validation (the fleet gate) |
168
+ | `entry <file>` | shebang + interpreter validation |
169
+ | `outline <file>` | symbol map: classes/functions + line numbers |
170
+ | `imports <file>` | stdlib/third_party/local/relative inventory |
171
+ | `todos <file>` | TODO/FIXME/XXX/BUG/HACK markers |
172
+ | `deadcode <file>` | defined-but-unreferenced candidates (heuristic) |
173
+ | `complexity <file>` | branch count per function, hottest first |
174
+ | `loc <file>` | lines/code/blank/comment/function stats |
175
+ | `docstrings <file>` | defs missing docstrings |
176
+ | `explain <file>` | syntax error with source lines shown |
177
+ | `shebangs <dir>` | sweep tree, validate every shebang |
178
+ | `deps <file>` | third-party imports as requirements list |
179
+ | `callmap <file>` | who-calls-whom per function |
180
+ | `longest <file>` | functions ranked by length |
181
+ | `excepts <file>` | bare/broad except handlers + swallows |
182
+ | `secrets <file>` | hardcoded credential patterns — file, line and pattern kind reported, values redacted by default; `--show-secrets` prints the values (deliberate opt-in) |
183
+ | `mainguard <file>` | has `__main__` guard? |
184
+ | `globals <file>` | module-level mutable state audit |
185
+ | `magic <file>` | suspicious numeric literals |
186
+ | `compare <a> <b>` | structural symbol diff of two files |
187
+ | `tree <dir>` | directory aggregate summary |
188
+ | `score <file>` | composite health score 0–100 |
189
+
190
+ ## Read Wizard — `read_wizard`, read-only mode policy engine (3)
191
+
192
+ | Command | What it does |
193
+ |---|---|
194
+ | `check "<raw shell command>"` | verdict on a shell command: ALLOW / DENIED |
195
+ | `verbs` | dump the allow/deny tables |
196
+ | `law` | print the READ LAW alone |
197
+
198
+ Exit: 0 = allow · 1 = denied · 2 = usage error.
199
+
200
+ ## Rust Wizard — `rust_wizard`, Rust project checker (10)
201
+
202
+ | Command | What it does |
203
+ |---|---|
204
+ | `check <file.rs\|dir>` | check a Rust file or project directory |
205
+ | `build <crate-dir>` | cargo check a crate directory |
206
+ | `run <crate-dir>` | build and run the crate's binary |
207
+ | `test <crate-dir>` | cargo test |
208
+ | `clippy <crate-dir>` | cargo clippy lints |
209
+ | `fmt <crate-dir>` | cargo fmt --check (reports drift only, never reformats) |
210
+ | `doc <crate-dir>` | cargo doc --no-deps |
211
+ | `clean <crate-dir>` | cargo clean (removes the crate's target/ only) |
212
+ | `law` | print the RUST LAW alone |
213
+ | `version` | print the version |
214
+
215
+ ## Tmux Wizard — `tmux_wizard`, tmux session manager (10)
216
+
217
+ | Command | What it does |
218
+ |---|---|
219
+ | `new <name> [dir]` | create session (default cwd) |
220
+ | `attach <name>` | join session |
221
+ | `kill <name>` | destroy session |
222
+ | `list` | names of live sessions |
223
+ | `census` | health of every session |
224
+ | `rename <old> <new>` | rename session |
225
+ | `capture <name> [lines]` | print a pane's recent output (read-only) |
226
+ | `detach <name>` | detach clients; the session keeps running |
227
+ | `law` | print the TMUX LAW alone |
228
+ | `version` | print the version |
229
+
230
+ ## Todo Wizard — `todo_wizard`, todo wizard (11)
231
+
232
+ | Command | What it does |
233
+ |---|---|
234
+ | `add <text>` | add a task (default priority normal) |
235
+ | `list` | list all tasks |
236
+ | `done <id>` | complete a task |
237
+ | `undo <id>` | reopen a completed task |
238
+ | `note <id> <text>` | append a progress note to a task |
239
+ | `oldest` | show the stalest pending task |
240
+ | `overdue [days]` | pending tasks older than N days (default 7) |
241
+ | `archive-done` | move completed tasks to archive |
242
+ | `rm <id>` | remove a task |
243
+ | `stats` | JSON summary |
244
+ | `export` | full JSON dump |
245
+
246
+ ## Write Wizard — `write_wizard`, the consent wall for file writes (22)
247
+
248
+ | Command | What it does |
249
+ |---|---|
250
+ | `propose <path>` | stage content (reads stdin) in quarantine |
251
+ | `preview <path>` | gate + diff the staged draft vs disk |
252
+ | `commit <path>` | ask Governor consent, write, verify |
253
+ | `pending` | list quarantined drafts |
254
+ | `law` | print the WRITE LAW alone |
255
+ | `status <path>` | draft state: bytes, age, target |
256
+ | `diff <path>` | disk vs draft diff alone |
257
+ | `verify <path>` | gate + verification, zero consent |
258
+ | `explain <path>` | would-commit verdict with reasons |
259
+ | `discard <path>` | burn a draft ('y'-gated, journaled) |
260
+ | `guard` | gate sweep over every pending draft |
261
+ | `audit` | quarantine census: drafts, orphans |
262
+ | `ledger` | full write journal |
263
+ | `history <path>` | journal filtered to one target |
264
+ | `stats` | counts: staged, written, refused |
265
+ | `protect <path>` | forbid writes — absolute refusal |
266
+ | `unprotect <path>` | lift a protection (Governor only) |
267
+ | `protected` | list protected paths |
268
+ | `backups` | list pre-write safety copies |
269
+ | `rollback <path>` | restore from backup ('y'-gated) |
270
+ | `purge-old <days>` | burn drafts older than N days ('y'-gated) |
271
+ | `law-digest` | sha256 of WRITE LAW (drift detection) |
272
+
273
+ Exit codes: 0 ok · 1 refused/failed · 2 usage error.
274
+
275
+ ---
276
+
277
+ ## Inside the Godfather Wizard's REPL — 39 slash command forms
278
+
279
+ From the REPL's own `/help`. Every slash dispatches inside the
280
+ box: the truth slashes are served by the Godfather Wizard's absorbed
281
+ senses, in-house; `/fix` and `/heal` run the Godfather Wizard's own heal
282
+ chain (staging only); `/models` answers from the configured
283
+ seats. Plain (non-slash) text tries the deterministic router
284
+ first — read-class and staging routes run free, a write-class
285
+ route asks twice before executing — and reaches the model
286
+ oracle only when unmapped and a seat is actually serving;
287
+ seatless unmapped text is answered "out of scope".
288
+
289
+ ### The codegen suite — model proposals, human consent
290
+
291
+ Four model-only modes inherit devrepl's per-mode shape: each
292
+ mode has its own system prompt and may have its own model.
293
+ Assignments live in `~/.godfather/models.json` under `default`,
294
+ `brainstorm`, `build`, `debug`, `diff`, and `audit`; a task uses
295
+ its own assignment first, then `default`, then the live roster
296
+ pick. One model can therefore run everything, or the user can
297
+ assign a different model per task. An assigned model that is
298
+ not serving is reported honestly and is never silently replaced.
299
+ With no live seat, each codegen slash gives one plain line and
300
+ changes nothing.
301
+
302
+ An assignment is a seat. A bare name (`llama3.2:1b`) is an
303
+ Ollama model and must be in the live roster. A `provider:model`
304
+ name (`anthropic:claude-sonnet-4-5`) seats that model at one of
305
+ the five cloud providers below, and is configured when the
306
+ provider's key is in the environment. A cloud seat whose key is
307
+ missing is no seat at all, and the answer names the missing
308
+ variable. Every model-authored proposal names its seat:
309
+ `seat: <provider> · <model>`.
310
+
311
+ The model authors complete content, but it never acts on its
312
+ own. `/build` and `/debug` show the full unified diff, stage the
313
+ exact proposal through the Write Wizard, ask twice — a plain yes, then
314
+ a typed confirmation naming the file — and only then land it
315
+ through the Write Wizard's commit and journal a `CODEGEN` event. There is
316
+ no auto mode. `/diff` is review-only: it stages nothing and asks
317
+ nothing, and remembers the proposal for a later `/build` or
318
+ `/debug` with the same path and instruction. `/brainstorm` is
319
+ conversation only — its tool channel is off, and a `TOOL:` line
320
+ from the seat is treated as text.
321
+
322
+ The `/diff` token has two forms. `/diff <file-a> <file-b>` —
323
+ where the second argument is another file — remains the Diff Wizard's
324
+ comparison. The codegen review form is `/diff <path>
325
+ <instruction...>`: longer instructions are always codegen, and
326
+ a one-word instruction is codegen when it does not name a
327
+ second file.
328
+
329
+ ### Providers — six seats
330
+
331
+ The toolkit is local-first, and Ollama is the seat that ships
332
+ in the box: a model on your own machine, no key, nothing
333
+ leaving it. The five cloud providers are your opt-in — each is
334
+ seated only with your own API key, read from your environment
335
+ at call time:
336
+
337
+ | Provider id | Display name | Key environment variable | Endpoint host |
338
+ |---|---|---|---|
339
+ | `ollama` | Ollama | — (local, no key) | `127.0.0.1:11434` |
340
+ | `meta` | Meta (Muse) | `MODEL_API_KEY` (fallback `META_API_KEY`) | `api.meta.ai` |
341
+ | `anthropic` | Anthropic | `ANTHROPIC_API_KEY` | `api.anthropic.com` |
342
+ | `openai` | OpenAI | `OPENAI_API_KEY` | `api.openai.com` |
343
+ | `google` | Google | `GEMINI_API_KEY` (fallback `GOOGLE_API_KEY`) | `generativelanguage.googleapis.com` |
344
+ | `deepseek` | DeepSeek | `DEEPSEEK_API_KEY` | `api.deepseek.com` |
345
+
346
+ The mechanism, stated plainly: when a cloud seat is used, the
347
+ prompts — and, for `/build`, `/debug`, and `/diff`, the file
348
+ contents involved — are sent to that provider over HTTPS.
349
+ That is what a cloud seat *is*; nothing is sent when the seat
350
+ is Ollama, and no cloud call happens until you assign one.
351
+ Keys live only in your environment: they are never stored in
352
+ the Godfather Wizard's bank, never journaled, and never printed —
353
+ `godfather_wizard models` reports only whether a key is set.
354
+ For a cloud seat, "configured" means the key is present; the
355
+ first real call is the proof the seat works, and its errors
356
+ come back as honest lines (status and the provider's message),
357
+ never tracebacks. [PROVIDERS.md](PROVIDERS.md) is the setup
358
+ guide: where each key comes from, and how to set up local
359
+ models with Ollama.
360
+
361
+ | Slash | Dispatches to |
362
+ |---|---|
363
+ | `/truth` | `godfather_wizard` brief (internal senses) |
364
+ | `/ls` | `godfather_wizard` listing (internal senses) |
365
+ | `/read` | `godfather_wizard` read (internal senses) |
366
+ | `/pycheck` | `python_wizard` check |
367
+ | `/fix` | `godfather_wizard` heal (`debug_wizard` audit → propose, staging only) |
368
+ | `/heal` | `godfather_wizard` heal (`debug_wizard` audit → propose, staging only) |
369
+ | `/todo` | `todo_wizard` add |
370
+ | `/todos` | `todo_wizard` list |
371
+ | `/tasks` | `todo_wizard` list |
372
+ | `/diff <file-a> <file-b>` | `diff_wizard` files (legacy two-file comparison form) |
373
+ | `/models` | `godfather_wizard` models (live roster + per-task assignments) |
374
+ | `/brainstorm [words]` | codegen brainstorm mode — model conversation with the tool channel off; `/brainstorm end` leaves |
375
+ | `/build <path> <instruction...>` | codegen build — the seat proposes complete content; diff → `write_wizard` staging → double ask → `write_wizard` commit |
376
+ | `/debug <path> [words]` | codegen debug — the seat receives the file plus `python_wizard` check context for Python files; same diff and double-ask landing as `/build` |
377
+ | `/diff <path> <instruction...>` | codegen review — show the seat's proposed diff only; stage nothing, ask nothing, remember the proposal |
378
+ | `/banner` | `banner_wizard` |
379
+ | `/codeguard` | `codeguard_wizard` |
380
+ | `/json` | `json_wizard` |
381
+ | `/rust` | `rust_wizard` |
382
+ | `/tmux` | `tmux_wizard` |
383
+ | `/write` | `write_wizard` |
384
+ | `/verbs` | `read_wizard` verbs |
385
+ | `/audit` | `debug_wizard` audit |
386
+ | `/diag` | `debug_wizard` classify |
387
+ | `/bins` | `godfather_wizard` symlinks (internal senses) |
388
+ | `/history` | `godfather_wizard` history |
389
+ | `/stats` | `godfather_wizard` stats |
390
+ | `/routes` | `godfather_wizard` routes |
391
+ | `/fleet` | `godfather_wizard` fleet |
392
+ | `/law` | `godfather_wizard` law |
393
+ | `/help` | `godfather_wizard` help |
394
+ | `/status` | `godfather_wizard` status |
395
+ | `/census` | `godfather_wizard` census |
396
+ | `/voices` | pick voice (numbered dropdown) |
397
+ | `/model` | pick model (numbered dropdown) |
398
+ | `/more-commands` | full fleet arsenal (all citizens) |
399
+ | `/wiz <name> [args]` | run any installed wizard by name |
400
+ | `/quit`, `/exit` | leave the REPL |
401
+
402
+ ---
403
+
404
+ *If a wizard's help and this page ever disagree, the help is
405
+ the authority — run `<wizard> --help` and trust it.*