diff --git a/AGENTS.md b/AGENTS.md index 9db9068..ca2f0b8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -188,33 +188,37 @@ session, an agent MUST: ### CLI access (read + write) -Wiki topics are managed via the `discourse` CLI wrapper in the -`~/daytoday/discourse` workspace (external to this repo). Full command -reference, patterns, and the raw-API escape hatch live in -`~/daytoday/discourse/AGENTS.md` — read it for anything beyond the basics. +Wiki topics are managed via the `discourse-cli` container, invoked directly +with `docker run` (no wrapper script). Full command reference, patterns, and +the raw-API escape hatch live in the CLI's own `AGENTS.md` +(`~/projects/KNEL-AIMiddleware/tooling-cli/discourse/AGENTS.md`) — read it +for anything beyond the basics. ```bash # Connection sanity check (run first in any session): -~/daytoday/discourse/bin/discourse whoami +docker run --rm --env-file ~/.creds/discourse.env \ + git.knownelement.com/reachableceo/discourse-cli:latest whoami # List VP TechOps topics: -~/daytoday/discourse/bin/discourse ls -c vp-techops +docker run --rm --env-file ~/.creds/discourse.env \ + git.knownelement.com/reachableceo/discourse-cli:latest ls -c vp-techops # Show a topic / edit a wiki post (find post id via `show`): -~/daytoday/discourse/bin/discourse show 297 -~/daytoday/discourse/bin/discourse update -b "new markdown body" +docker run --rm --env-file ~/.creds/discourse.env \ + git.knownelement.com/reachableceo/discourse-cli:latest show 297 +docker run --rm --env-file ~/.creds/discourse.env \ + git.knownelement.com/reachableceo/discourse-cli:latest update -b "new markdown body" ``` VP TechOps = category **74**. Key topics: #296 (project overview), #297 (ops status), #298 (audit log). The API user is trust-level 4 but **not admin** — admin-only ops (category creation, setting the wiki flag) will 403; surface those to the user rather than retrying. **Gotcha:** -`update`/`delete` take a post **id**, not a post number (see -`~/daytoday/discourse/AGENTS.md`). Never create a new topic for an update to -existing knowledge — edit the wiki post in place. +`update`/`delete` take a post **id**, not a post number. Never create a new +topic for an update to existing knowledge — edit the wiki post in place. -The `.env` holding `DISCOURSE_URL`/`DISCOURSE_API_KEY`/`DISCOURSE_API_USERNAME` -lives (gitignored) at `/home/reachableceo/projects/KNEL-AIMiddleware/discourse-cli/.env`. +Credentials (`DISCOURSE_URL`/`DISCOURSE_API_KEY`/`DISCOURSE_API_USERNAME`) +live in the centralized store at `~/.creds/discourse.env`. ## Key Scripts @@ -225,7 +229,7 @@ lives (gitignored) at `/home/reachableceo/projects/KNEL-AIMiddleware/discourse-c | [`tests/remote.sh`](tests/remote.sh) | **SSH chokepoint** — all Proxmox host + sandbox VM access routes here | | [`netinfra/dns-cluster-setup/remote-dns.sh`](netinfra/dns-cluster-setup/remote-dns.sh) | SSH chokepoint for DNS infra hosts (netinfra-01/02, tsrouter, netboot) | | `~/daytoday/redmine/bin/redmine` | Redmine CLI wrapper (ticket read/write via Docker container) | -| `~/daytoday/discourse/bin/discourse` | Discourse CLI wrapper (wiki topic read/write via Docker container) | +| `discourse-cli` container | Discourse CLI (wiki topic read/write via `docker run`; see `tooling-cli/discourse/`) | | `~/daytoday/dns/bin/dns` | Technitium DNS CLI (zones, list, add, delete, search, flush) | | [`tests/vm-validation.sh`](tests/vm-validation.sh) | Deploy + validate on sandbox VM | | [`tests/run-tests.sh`](tests/run-tests.sh) | Test suite | @@ -294,7 +298,7 @@ Required for EVERY infrastructure change: `koalaman/shellcheck:stable`). ALL scripts must pass including info-level. - For raw API calls not covered by the Redmine/Discourse CLIs, use `python3` inside the CLI Docker containers (escape hatch pattern in - `~/daytoday/redmine/AGENTS.md` and `~/daytoday/discourse/AGENTS.md`). + `~/daytoday/redmine/AGENTS.md` and `tooling-cli/discourse/AGENTS.md`). - `curl`/`wget`/`httpie` may be blocked by some harnesses. Use the CLIs or the python-in-Docker escape hatch for HTTP writes. @@ -309,7 +313,8 @@ bash tests/shellcheck.sh path/to/*.sh # shellcheck specific files # Redmine + Discourse sanity checks (run first in any session): ~/daytoday/redmine/bin/redmine whoami -~/daytoday/discourse/bin/discourse whoami +docker run --rm --env-file ~/.creds/discourse.env \ + git.knownelement.com/reachableceo/discourse-cli:latest whoami # Proxmox host access: PROX_HOST=pfv-tsys5 bash tests/remote.sh prox 'qm list' diff --git a/questions-v1.md b/questions-v1.md index 2248587..6b266a2 100644 --- a/questions-v1.md +++ b/questions-v1.md @@ -16,14 +16,12 @@ Go with option a. The tea command is setup on this workstation (and on ultix-offstage). I guess, also capture that the tea command (and docker login) are setup on my workstations, so that in the future, projects know they can use tea to setup a repo. Also, i want this to be TSYS wide, so it should go under the TSYSGroupCorporate organization. Call the repo: TSYSGroupAIOS . Make it a template repository. -### Q2. The bin/ wrapper gap (redmine-cli / discourse-cli) -- **Context:** PFVCluster's operational.md and AGENTS.md reference `~/daytoday/redmine/bin/redmine` and `~/daytoday/discourse/bin/discourse` as the entrypoints. But `ls ~/daytoday/{redmine,discourse}/` shows only `.gitignore` + `AGENTS.md` (+ MIGRATION-PLAN.md for discourse) — no `bin/`, no Dockerfile. The actual CLI source lives in `~/projects/KNEL-AIMiddleware/{redmine,discourse}-cli/`. -- **Question:** Are the `bin/` wrappers something that should exist (and were lost / never committed), or is the documentation aspirational? Should the template reference these CLIs at all, or stay tool-agnostic? -- **Answer:** _(human)_ -- **Decision:** _(human/agent)_ -- **Synthesized to:** — - -The clis should exist. Maybe the AGENTS.md reference the actual paths? I dont need duplicate code. I think i was using the directories as kind of "shortcuts" vs the ~/projects/... path every time. So, for this repo, reference the full path/container name/invoke notes. Does that make sense? +### Q2. The bin/ wrapper gap (redmine-cli / discourse-cli) — RESOLVED (discourse) +- **Context:** PFVCluster's operational.md and AGENTS.md referenced `~/daytoday/redmine/bin/redmine` and `~/daytoday/discourse/bin/discourse` as the entrypoints — thin shortcut wrappers around the real CLI containers. The actual CLI source lived in `~/projects/KNEL-AIMiddleware/{redmine,discourse}-cli/`. +- **Question:** Are the `bin/` wrappers something that should exist, or is the documentation aspirational? Should the template reference these CLIs at all, or stay tool-agnostic? +- **Answer:** Reference the real container invocation (full path/container name/invoke notes); no duplicate code via shortcut wrappers. +- **Decision:** No `bin/` wrappers. Invoke the real container with `docker run`. The discourse-cli source has been merged into `~/projects/KNEL-AIMiddleware/tooling-cli/discourse/` and PFVCluster's AGENTS.md now invokes it via `docker run --env-file ~/.creds/discourse.env`. The old `~/daytoday/discourse` workspace and `discourse-cli/` subdir were removed. Redmine still pending the same treatment. +- **Synthesized to:** PFVCluster `AGENTS.md` §CLI access; `tooling-cli/discourse/` ### Q3. Should the template ship the Discourse pointer-header pattern? - **Context:** PFVCluster migrated 36 in-repo `.md` files to 10-line pointer stubs citing `https://community.turnsys.com/t/`. The template currently has `scripts/garden.sh` that *warns* about oversized non-Discourse `.md`, but doesn't enforce the pointer-header format.