@tiens.nguyen/gu-cli 1.0.809 → 1.0.811

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.
package/gu-repl.mjs CHANGED
@@ -917,16 +917,14 @@ const COMMANDS = [
917
917
  // outside, it is confused". The command still works and still does the same thing.
918
918
  { name: "/agent-model", desc: "switch the AGENT model (the one that talks) — saved on this machine" },
919
919
  { name: "/embed-model", desc: "switch the RAG EMBEDDING model (nomic-embed-text / qwen3-embedding) and its server — re-indexes what is already indexed; supports a remote URL + API key" },
920
- { name: "/test-auto", desc: "toggle auto-test (verify & fix until it passes) for this folder" },
921
- // ONE command, three answers. /rag-local and /rag-cloud still work — they are in people's
922
- // fingers — but they are HIDDEN_COMMANDS now, because offering three doors into one setting
923
- // is what made this confusing in the first place.
924
- { name: "/rag", desc: "where this folder's RAG knowledge base lives: local, cloud, or both" },
920
+ // /test-auto is HIDDEN_COMMANDS now — the handler still works when typed, it is just not offered.
921
+ // /rag, /rag-local and /rag-cloud all still work — they are in people's fingers — but they are
922
+ // HIDDEN_COMMANDS now, so /help and Tab-completion do not offer them.
925
923
  // The two synonyms were dispatched but declared nowhere (found by slash-command-wiring.test.mjs):
926
924
  // they worked, Tab-completed to nothing, and appeared in no help. Aliases is what the registry
927
925
  // already has for exactly this — /quit, /rag-local.
928
926
  { name: "/host-mode", desc: "undo client mode — run agent turns on THIS machine again" },
929
- { name: "/undo", usage: "/undo [runId]", desc: "put back the files the last stopped turn changed (from its backups) — asks first" },
927
+ // /undo is HIDDEN_COMMANDS now — still works when typed.
930
928
  { name: "/server", desc: "pick a deployment server (host/user) for this session" },
931
929
  { name: "/proxy", usage: "/proxy [show|set|on|off|clear|test]", desc: "route MODEL calls through an HTTP proxy (local calls always go direct)" },
932
930
  { name: "/s3", usage: "/s3 [test]", desc: "set up YOUR S3 bucket (RAG index, and the PDFs/downloads gu makes) and check the AWS keys work — without it, files are saved on this computer" },
@@ -974,7 +972,7 @@ function currentSkills() {
974
972
  }
975
973
  const skillCommands = () =>
976
974
  currentSkills()
977
- .filter((s) => s.slash)
975
+ .filter((s) => s.slash && !s.hidden) // hidden = internal skill: still typeable, not offered (#118)
978
976
  .map((s) => ({ name: `/${s.name}`, usage: `/${s.name} [request]`, desc: `skill — ${firstSentence(s.description)}`, skill: true }));
979
977
  /** A skill's description is written for the MODEL and often runs a paragraph; /help shows one line. */
980
978
  function firstSentence(text, max = 100) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiens.nguyen/gu-cli",
3
- "version": "1.0.809",
3
+ "version": "1.0.811",
4
4
  "description": "Gu CLI — the gu terminal plus the local worker that runs agent / OCR / PDF / embedding jobs on your Mac (Ollama / MLX / OpenAI-compatible).",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/skills.mjs CHANGED
@@ -138,6 +138,12 @@ function scanDir(dir, scope) {
138
138
  return { skills, warnings };
139
139
  }
140
140
 
141
+ /**
142
+ * Internal skills the agent loads itself through use_skill. They are NOT offered in the `/` menu,
143
+ * Tab-completion or /help (hidden), but typing /<name> still works (issue #118).
144
+ */
145
+ export const HIDDEN_SKILLS = ["gu-session-memory-orchestration"];
146
+
141
147
  /**
142
148
  * Every skill that exists right now. `reserved` = names that are already commands (/help, /mcp…):
143
149
  * the built-in wins, and the skill is still usable by the agent, just not as a slash command —
@@ -161,7 +167,7 @@ export function discoverSkills({ cwd = process.cwd(), home = homedir(), reserved
161
167
  const taken = new Set(reserved.map((r) => r.replace(/^\//, "")));
162
168
  const skills = [...byName.values()]
163
169
  .sort((a, b) => a.name.localeCompare(b.name))
164
- .map((s) => ({ ...s, slash: !taken.has(s.name), source: src }));
170
+ .map((s) => ({ ...s, slash: !taken.has(s.name), hidden: HIDDEN_SKILLS.includes(s.name), source: src }));
165
171
  return { skills, warnings: [...user.warnings, ...project.warnings], source: src };
166
172
  }
167
173
 
@@ -2335,6 +2335,9 @@ export const HIDDEN_COMMANDS = [
2335
2335
  // too offered two doors into one setting (reported as confusing)
2336
2336
  "/rag-local", // superseded by /rag's picker; still work, still mean what
2337
2337
  "/rag-cloud", // they say — unlisted so /help offers one way into the setting
2338
+ "/rag", // hidden too (user request, #25): handler unchanged, not offered
2339
+ "/test-auto", // hidden, still toggles auto-test when typed
2340
+ "/undo", // hidden, still restores the last stopped turn when typed
2338
2341
  "/thought", // the reasoning display stays ON; only the toggle is unlisted
2339
2342
  "/hover", // in-turn mouse capture — behaviour unchanged, just hidden
2340
2343
  "/reset", // the old name of /new (#278) — still works, one name is offered