@wirecat/cli-template 0.1.5 → 0.1.7

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 (49) hide show
  1. package/.github/workflows/changelog-guard.yml +1 -1
  2. package/.github/workflows/ci.yml +7 -3
  3. package/.github/workflows/main.yml +2 -1
  4. package/.markdownlint-cli2.jsonc +11 -1
  5. package/AGENTS.md +2 -0
  6. package/CHANGELOG.md +56 -0
  7. package/README.md +26 -6
  8. package/SECURITY.md +1 -1
  9. package/bin/release +24 -3
  10. package/config/parity-groups.json +6 -0
  11. package/contracts/help.snap +2 -2
  12. package/contracts/mcp-tools.json +2 -2
  13. package/cspell.json +1 -1
  14. package/dist/commands/doctor.d.ts +69 -36
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +42 -15
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/mcp.js +1 -1
  19. package/dist/mcp.js.map +1 -1
  20. package/dist/version.d.ts +1 -1
  21. package/dist/version.js +1 -1
  22. package/docs/commands.md +22 -6
  23. package/docs/configuration.md +1 -1
  24. package/docs/dev/TESTING.md +2 -0
  25. package/docs/dev/skills/release/SKILL.md +3 -1
  26. package/docs/dev/test-matrix.md +3 -1
  27. package/docs/index.md +3 -3
  28. package/docs/installation.md +3 -3
  29. package/docs/security.md +6 -2
  30. package/docs/troubleshooting.md +2 -1
  31. package/docs/usage.md +1 -1
  32. package/kit/dist/main.js +1 -1
  33. package/kit/dist/manifest.js +18 -30
  34. package/kit/dist/new.js +14 -6
  35. package/kit/dist/rename.js +1 -0
  36. package/kit/dist/source.js +7 -4
  37. package/package.json +8 -7
  38. package/pnpm-workspace.yaml +2 -0
  39. package/scripts/commands.ts +1 -1
  40. package/scripts/docs-rules.ts +1 -1
  41. package/scripts/smoke.ts +19 -10
  42. package/skills/clidev-cli/SKILL.md +3 -3
  43. package/src/commands/doctor.ts +53 -16
  44. package/src/mcp.ts +1 -1
  45. package/src/program.test.ts +35 -2
  46. package/src/roots.test.ts +16 -0
  47. package/src/testing/sandbox.ts +4 -7
  48. package/src/version.ts +1 -1
  49. package/vitest.config.ts +3 -1
@@ -9,4 +9,4 @@ permissions:
9
9
 
10
10
  jobs:
11
11
  changelog:
12
- uses: WireCatLabs/cli-base/.github/workflows/changelog-guard.yml@b2d2418af0e23ecc816f3117ae2b0c627917fca5 # v0.55.0
12
+ uses: WireCatLabs/cli-base/.github/workflows/changelog-guard.yml@d8d32114a008109b9d0a8d04e729b20d81bc6122 # v0.57.0
@@ -29,7 +29,8 @@ jobs:
29
29
  platform-run: |
30
30
  node dist/bin/clidev.js commands --json >/dev/null
31
31
  node dist/bin/clidev.js doctor --json >/dev/null
32
- # No version is on npm before the first release, so there is no earlier package to upgrade from.
32
+ # The skeleton has no store of its own; its config file and run records are cli-core's. A CLI that adds a store
33
+ # adds a contracts:upgrade script and removes this skip (WC-TEST-14).
33
34
  skip: |
34
35
  contracts:upgrade
35
36
  checks: |
@@ -84,5 +85,8 @@ jobs:
84
85
  echo "${VALE_SHA256} vale.tar.gz" | sha256sum -c -
85
86
  tar -xzf vale.tar.gz vale
86
87
  # Style findings are annotations until the rules are tuned; the tone rule (an error) fails.
87
- - run: ./vale --output line README.md docs/*.md | sed 's/^/::warning::/' || true
88
- - run: ./vale --minAlertLevel error README.md docs/*.md
88
+ # kit/ is the template's own; a CLI made from it has none.
89
+ - run: |
90
+ pages="README.md CHANGELOG.md docs/*.md $(git ls-files kit/README.md)"
91
+ ./vale --output line $pages | sed 's/^/::warning::/' || true
92
+ ./vale --minAlertLevel error $pages
@@ -5,9 +5,10 @@ on:
5
5
  push:
6
6
  branches: [main]
7
7
 
8
+ # Each merge keeps its own validation: cancelling it would leave that commit unchecked (WC-CI-7).
8
9
  concurrency:
9
10
  group: main-validation-${{ github.ref }}
10
- cancel-in-progress: true
11
+ cancel-in-progress: false
11
12
 
12
13
  permissions:
13
14
  contents: read
@@ -1,5 +1,15 @@
1
1
  {
2
- "globs": ["README.md", "SECURITY.md", "AGENTS.md", "CLAUDE.md", "docs/*.md", "docs/dev/**/*.md", "skills/**/*.md"],
2
+ "globs": [
3
+ "README.md",
4
+ "SECURITY.md",
5
+ "CHANGELOG.md",
6
+ "kit/README.md",
7
+ "AGENTS.md",
8
+ "CLAUDE.md",
9
+ "docs/*.md",
10
+ "docs/dev/**/*.md",
11
+ "skills/**/*.md"
12
+ ],
3
13
  "ignores": ["node_modules", "dist", ".worktrees", "config/wirecat", "docs/commands.md", "docs/dev/test-matrix.md"],
4
14
  "config": {
5
15
  "extends": "./config/wirecat/markdownlint.json"
package/AGENTS.md CHANGED
@@ -16,6 +16,8 @@ This CLI was made from [cli-template](https://github.com/WireCatLabs/cli-templat
16
16
  template has no sample code on purpose.
17
17
  3. Ask the further questions in the interview that the reference CLI does not answer. Build only after the owner
18
18
  has read `DESIGN.md`.
19
+ 4. When the first command reaches the service, rewrite `README.md`, `docs/index.md` and the description in
20
+ `skills/clidev-cli/SKILL.md` to say what the tool does and who it is for.
19
21
 
20
22
  <!-- cli-template:reference-cli:start -->
21
23
  The reference CLI is not chosen yet; see [Reference CLIs](docs/dev/reference-clis.md).
package/CHANGELOG.md CHANGED
@@ -3,6 +3,62 @@
3
3
  Notable changes to `@wirecat/cli-template`. One section per version, newest first; versions follow
4
4
  [semantic versioning](https://semver.org), so before `1.0.0` the skeleton may still change.
5
5
 
6
+ <!-- cspell:words katex smol -->
7
+
8
+ ## 0.1.7 — 25.10.2026
9
+
10
+ ### Changed — may break callers
11
+
12
+ - **The skeleton runs on cli-core 0.428.0 and cli-base 0.57.0.** `config set` saves `config.json` readable by its
13
+ owner only (`0600`); it used to rewrite it as `0644`. Anything that reads the file as another user can no longer
14
+ read it after the next save. `skill status` and `skill show --for claude|agents` are new shared commands. A run
15
+ record gains `cli_command`, `argv`, `agent` and, for a failed run, `error`.
16
+ - **`bin/release --local` reads the keyring only for the account in `NPM_KEYRING_ACCOUNT`.** It used to look up one
17
+ fixed account name; now nothing is looked up while the variable is unset, and the token comes from `NPM_TOKEN` or
18
+ your npm login. To keep using the keyring, `export NPM_KEYRING_ACCOUNT=<account>` with the account the token is
19
+ stored under (service `npm`). A failed lookup says so on stderr and never prints the token.
20
+ - **The prose check in `ci.yml` reads `CHANGELOG.md` too.** A tone error in the changelog now fails the `prose` job
21
+ after `upgrade`. A new CLI's `docs:check` and `docs:spell` also cover `CHANGELOG.md`.
22
+
23
+ ### Fixed
24
+
25
+ - **A CLI's `SECURITY.md` and `docs/security.md` still link its own repository,** and the template's copies link
26
+ cli-template instead of a repository that does not exist. `new` rewrites the two links.
27
+ - **The skeleton compiles against cli-core on `@modelcontextprotocol/server` 2.4.** It moves to server 2.4.0; until a
28
+ cli-core release ranges the server `^2.4.0`, an override in `pnpm-workspace.yaml` gives cli-core the same copy,
29
+ since two copies fail to compile `src/mcp.ts`.
30
+
31
+ ### Security
32
+
33
+ - **`doctor` reports a `config.json` or config folder that other users can read, with the `chmod` that fixes it.**
34
+ `doctor --json` gains `files: { checked, ok, problems }`, each problem `{ path, mode, want }`: the file wants `0600`,
35
+ its folder `0700`. stderr prints `to make it private: chmod 600 '<path>'` for each; nothing is changed on disk.
36
+ `files` is in the answer also when the settings are refused. Windows is not checked (`checked: false`). `src/` is
37
+ copied once, so a CLI started from an older template copies `src/commands/doctor.ts`.
38
+
39
+ ## 0.1.6 — 25.10.2026
40
+
41
+ ### Changed — may break callers
42
+
43
+ - **The skeleton runs on cli-core 0.426.0.** A `--dry-run` preview says `effects.service_contacted: false` and no
44
+ longer has `effects.messenger_contacted`. MCP no longer offers a command group that only prints its help, such as
45
+ `config`; `config show`, `set` and `unset` stay. The example in the MCP read and write tools is `runs list`, a
46
+ command that runs as written. The first screen says zm and drive are searchable with your other WireCat data.
47
+ - **`doctor` takes no profile.** Its usage line and examples are `clidev doctor` and `clidev doctor --json`; a profile
48
+ typed before it still works. A CLI started from an older template copies `src/commands/doctor.ts` and
49
+ `src/mcp.ts`.
50
+
51
+ ### Added
52
+
53
+ - **`bin/release --local` reads the npm token from the keyring** (`secret-tool`, service `npm`, account `leemour`), as
54
+ the other WireCat CLIs do, when `NPM_TOKEN` is not exported. Without either it uses your `npm login`. The token is
55
+ never printed. A CLI made from the template gets this with `upgrade`.
56
+
57
+ ### Fixed
58
+
59
+ - **A merge to `main` no longer cancels the validation of the merge before it.** Each merged commit is now checked in
60
+ turn. A CLI made from the template gets this with `upgrade`.
61
+
6
62
  ## 0.1.5 — 25.10.2026
7
63
 
8
64
  ### Changed — may break callers
package/README.md CHANGED
@@ -19,17 +19,17 @@ npx @wirecat/cli-template new cal-cli --command cal --package @wirecat/cal-cli -
19
19
  ```sh
20
20
  pnpm install
21
21
  pnpm build
22
- node dist/bin/clidev.js personal doctor
22
+ node dist/bin/clidev.js doctor
23
23
  ```
24
24
 
25
- `personal` is the profile: a name you choose for one account. Every command that uses an account starts with it, and
26
- none is ever assumed. `CLIDEV_PROFILE=personal` does the same for a whole shell session.
25
+ `doctor` needs no profile. Every command that uses an account starts with one, a name you choose for that account,
26
+ such as `personal` in `clidev personal config show`; none is ever assumed. `CLIDEV_PROFILE=personal` does the same for a whole shell session.
27
27
 
28
28
  ## What you can do
29
29
 
30
30
  | Command | What it does |
31
31
  | --- | --- |
32
- | `clidev personal doctor` | Checks this installation: version, paths, settings and profiles, without the network |
32
+ | `clidev doctor` | Checks this installation: version, paths, settings and profiles, without the network |
33
33
  | `clidev commands --json` | Prints every command as JSON, for agents and scripts |
34
34
  | `clidev personal config show` | Shows each setting and where it came from |
35
35
  | `clidev skill install` | Installs the agent skill for Claude Code, Codex and Gemini CLI |
@@ -42,6 +42,25 @@ none is ever assumed. `CLIDEV_PROFILE=personal` does the same for a whole shell
42
42
  `clidev skill show` prints the rules an agent follows with this tool. `clidev personal mcp` serves every command to an
43
43
  agent, writes included: the profile's permissions decide what runs. See [MCP and permissions](docs/usage.md#agents).
44
44
 
45
+ ## Why this template
46
+
47
+ A new WireCat CLI must meet the same standards as the others from its first commit: the shared commands, the
48
+ settings, the agent skill, MCP, the checks and the release. Built by hand, that is days of copying and some of it
49
+ is missed. `new` gives a CLI that already passes every check, so the work starts on the service itself. `upgrade`
50
+ keeps the shared files in step later, so a CLI made today does not drift from one made next year.
51
+
52
+ ## Main features
53
+
54
+ - **`new`** copies the skeleton, renames `clidev` to your command word, and writes the design answers into
55
+ `docs/dev/DESIGN.md`. It asks for each missing answer and never guesses one.
56
+ - **`upgrade`** merges each template change into your CLI file by file, and asks before it touches a file you changed.
57
+ - **The skeleton runs.** The shared root commands, settings with permissions, the agent skill and the MCP server
58
+ work before a line of your own code.
59
+ - **Every check is wired in:** lint, types, tests with a coverage floor, command contracts, the docs checks and the
60
+ release script.
61
+
62
+ The copy tool is described in [kit/README.md](kit/README.md).
63
+
45
64
  ## Profiles
46
65
 
47
66
  A profile is a name you choose for one account, such as `personal` or `work`. It is the first word of every command
@@ -65,7 +84,7 @@ The skeleton connects to no service, keeps no messages and has no commands of it
65
84
 
66
85
  ## When it does not work
67
86
 
68
- Run `clidev personal doctor` first: it checks the installation without the network.
87
+ Run `clidev doctor` first: it checks the installation without the network.
69
88
  [When something goes wrong](docs/troubleshooting.md) lists the usual symptoms.
70
89
 
71
90
  ## Documentation
@@ -80,5 +99,6 @@ Run `clidev personal doctor` first: it checks the installation without the netwo
80
99
  ## Development
81
100
 
82
101
  The working rules for people and agents are in [AGENTS.md](AGENTS.md). `pnpm release:check` runs the checks
83
- that need no install from npm; `pnpm package:check` installs the packed package and checks what it ships, and
102
+ before a release; its command audit installs the published WireCat CLIs from npm to compare with them.
103
+ `pnpm package:check` installs the packed package and checks what it ships, and
84
104
  `pnpm security:no-leak` checks that nothing private reaches the output. The changes are in [CHANGELOG.md](CHANGELOG.md).
package/SECURITY.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Please report a security problem privately — never in a public issue:
4
4
 
5
5
  - by email: [hello@wirecat.dev](mailto:hello@wirecat.dev);
6
- - or through [GitHub's private vulnerability reporting](https://github.com/WireCatLabs/clidev-cli/security/advisories/new).
6
+ - or through [GitHub's private vulnerability reporting](https://github.com/WireCatLabs/cli-template/security/advisories/new).
7
7
 
8
8
  Say what you saw, how to repeat it, and the version (`clidev --version`). Never send a token, a password or anyone's
9
9
  private content.
package/bin/release CHANGED
@@ -4,7 +4,10 @@
4
4
  # pull request and publishes that (WC-REL-5). Nothing is published until `pnpm release:check` passes.
5
5
  #
6
6
  # bin/release # publishes from GitHub Actions (.github/workflows/release.yml, npm trusted publishing)
7
- # bin/release --local # publishes from this computer: NPM_TOKEN if exported, else your own `npm login`
7
+ # bin/release --local # publishes from this computer: NPM_TOKEN if exported, else the keyring, else `npm login`
8
+ #
9
+ # The keyring is read only when NPM_KEYRING_ACCOUNT names the account the token is stored under
10
+ # (`secret-tool store --label=npm service npm account <account>`); unset, the keyring is skipped.
8
11
  #
9
12
  # A package that is not on npm yet is published the same way; its first version needs --local until npm trusts
10
13
  # release.yml. The npm token is never printed and never written to a file (WC-REL-14).
@@ -77,6 +80,12 @@ land() {
77
80
  { echo "main is not origin/main after $pr" >&2; exit 1; }
78
81
  }
79
82
 
83
+ # A pull request checked before the last release and merged after it put its entry in that release's section;
84
+ # restore moves it to Unreleased, so the fold below brings it into this version.
85
+ restored=$(npx -y -p @wirecat/cli-base@0.55.1 cli-dev changelog restore --land)
86
+ [ -z "$restored" ] || echo "$restored"
87
+ rerun_if_changed "$@"
88
+
80
89
  # A merge after the version was dated, but before it was published, adds Unreleased above it; --land folds it on a
81
90
  # fresh main through its own pull request.
82
91
  folded=""
@@ -147,8 +156,15 @@ if [ "$mode" = ci ]; then
147
156
  exit 0
148
157
  fi
149
158
 
159
+ # No default account: this file is copied into every CLI, and one person's account name does not belong in it.
160
+ # Without NPM_TOKEN or the entry, npm reads your own login from ~/.npmrc as usual.
161
+ keyring_account=${NPM_KEYRING_ACCOUNT:-}
162
+ if [ -z "$publish_token" ] && [ -n "$keyring_account" ] && command -v secret-tool >/dev/null 2>&1; then
163
+ publish_token=$(secret-tool lookup service npm account "$keyring_account" 2>/dev/null) || publish_token=""
164
+ [ -n "$publish_token" ] || echo "no npm token in the keyring for service npm, account $keyring_account" >&2
165
+ fi
166
+
150
167
  # Our own npm config names the variable, not the value, so the token stays in the publish process's environment.
151
- # Without NPM_TOKEN, npm reads your own login from ~/.npmrc as usual.
152
168
  config=$(mktemp)
153
169
  trap 'rm -f "$config"' EXIT
154
170
  if [ -n "$publish_token" ]; then
@@ -156,7 +172,12 @@ if [ -n "$publish_token" ]; then
156
172
  printf '//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n' > "$config"
157
173
  set -- --userconfig "$config"
158
174
  else
159
- npm whoami >/dev/null 2>&1 || { echo "not logged in to npm: run npm login, or export NPM_TOKEN" >&2; exit 1; }
175
+ npm whoami >/dev/null 2>&1 || {
176
+ echo "no npm token: export NPM_TOKEN; or store one with" >&2
177
+ echo " secret-tool store --label=npm service npm account <account>" >&2
178
+ echo "and export NPM_KEYRING_ACCOUNT=<account>; or run npm login" >&2
179
+ exit 1
180
+ }
160
181
  set --
161
182
  fi
162
183
 
@@ -16,5 +16,11 @@
16
16
  "members": ["clidev", "tg", "max", "memo", "zm", "wa"],
17
17
  "covers": ["skill"],
18
18
  "differences": []
19
+ },
20
+ {
21
+ "name": "template-runs",
22
+ "members": ["clidev", "tg", "max", "wa", "memo", "drive", "zm"],
23
+ "covers": ["runs"],
24
+ "differences": []
19
25
  }
20
26
  ]
@@ -7,8 +7,8 @@ Works with:
7
7
  tg Telegram in the same local store: search, review and tasks offline
8
8
  max MAX in the same local store: search, review and tasks offline
9
9
  wa WhatsApp in the same local store: search, review and tasks offline
10
- zm Zoom meetings: transcripts and summaries, searchable with your messages
11
- drive Google Drive and Docs as local text, searchable with your messages
10
+ zm Zoom meetings: transcripts and summaries, searchable with your other WireCat data
11
+ drive Google Drive and Docs as local text, searchable with your other WireCat data
12
12
  memo context <person> one person across messengers, mail, notes and meetings
13
13
 
14
14
  Next: clidev commands every command, by section
@@ -18,7 +18,7 @@
18
18
  "type": "object"
19
19
  },
20
20
  "command": {
21
- "description": "a command clidev_tools_search returned: \"commands\"",
21
+ "description": "a command clidev_tools_search returned: \"runs list\"",
22
22
  "minLength": 1,
23
23
  "type": "string"
24
24
  }
@@ -492,7 +492,7 @@
492
492
  "type": "object"
493
493
  },
494
494
  "command": {
495
- "description": "a command clidev_tools_search returned: \"commands\"",
495
+ "description": "a command clidev_tools_search returned: \"runs list\"",
496
496
  "minLength": 1,
497
497
  "type": "string"
498
498
  }
package/cspell.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.2",
3
3
  "import": ["./config/wirecat/cspell.json"],
4
- "ignorePaths": ["docs/commands.md", "docs/dev/**", "CHANGELOG.md"],
4
+ "ignorePaths": ["docs/commands.md", "docs/dev/**"],
5
5
  "words": ["clidev"]
6
6
  }
@@ -1,44 +1,77 @@
1
1
  import { Command } from "commander";
2
- /** It is run when everything else is broken, so a problem in the config file is a field in the answer, never a throw. */
2
+ /**
3
+ * It is run when everything else is broken, so a problem in the config file is a field in the answer, never a throw.
4
+ * `fixes` are the `chmod` commands that make the config private; they go to stderr, not into the answer.
5
+ */
3
6
  export declare const doctorReport: (env: NodeJS.ProcessEnv) => {
4
- version: string;
5
- runtime: {
6
- node: string;
7
- platform: NodeJS.Platform;
7
+ report: {
8
+ version: string;
9
+ runtime: {
10
+ node: string;
11
+ platform: NodeJS.Platform;
12
+ };
13
+ paths: {
14
+ config: string;
15
+ state: string;
16
+ cache: string;
17
+ };
18
+ config: {
19
+ path: string;
20
+ found: boolean;
21
+ issues: import("@wirecat/cli-core/cli").ConfigIssue[];
22
+ };
23
+ profiles: string[];
24
+ read_only: string | null;
25
+ files: {
26
+ checked: false;
27
+ reason: string;
28
+ } | {
29
+ checked: true;
30
+ ok: boolean;
31
+ problems: {
32
+ path: string;
33
+ mode: string;
34
+ want: string;
35
+ }[];
36
+ };
8
37
  };
9
- paths: {
10
- config: string;
11
- state: string;
12
- cache: string;
13
- };
14
- config: {
15
- path: string;
16
- found: boolean;
17
- issues: import("@wirecat/cli-core/cli").ConfigIssue[];
18
- };
19
- profiles: string[];
20
- read_only: string | null;
38
+ fixes: string[] | never[];
21
39
  } | {
22
- version: string;
23
- runtime: {
24
- node: string;
25
- platform: NodeJS.Platform;
26
- };
27
- paths: {
28
- config: string;
29
- state: string;
30
- cache: string;
31
- };
32
- config: {
33
- path: string;
34
- found: boolean;
35
- issues: never[];
36
- };
37
- settings: {
38
- error: string;
40
+ report: {
41
+ version: string;
42
+ runtime: {
43
+ node: string;
44
+ platform: NodeJS.Platform;
45
+ };
46
+ paths: {
47
+ config: string;
48
+ state: string;
49
+ cache: string;
50
+ };
51
+ config: {
52
+ path: string;
53
+ found: boolean;
54
+ issues: never[];
55
+ };
56
+ settings: {
57
+ error: string;
58
+ };
59
+ profiles: null;
60
+ read_only: string | null;
61
+ files: {
62
+ checked: false;
63
+ reason: string;
64
+ } | {
65
+ checked: true;
66
+ ok: boolean;
67
+ problems: {
68
+ path: string;
69
+ mode: string;
70
+ want: string;
71
+ }[];
72
+ };
39
73
  };
40
- profiles: null;
41
- read_only: string | null;
74
+ fixes: string[] | never[];
42
75
  };
43
76
  export declare const doctorCommand: () => Command;
44
77
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,yHAAyH;AACzH,eAAO,MAAM,YAAY,QAAS,MAAM,CAAC,UAAU;;;QAIpC,IAAI;QAAyB,QAAQ;;;QACvC,MAAM;QAAgB,KAAK;QAAe,KAAK;;;QAO5C,IAAI;QAAuB,KAAK;QAAwB,MAAM;;;;;;;QAR/D,IAAI;QAAyB,QAAQ;;;QACvC,MAAM;QAAgB,KAAK;QAAe,KAAK;;;QAe5C,IAAI;QAAQ,KAAK;QAAoB,MAAM;;;QACzC,KAAK;;;;CAKtB,CAAA;AAED,eAAO,MAAM,aAAa,QAAO,OAS3B,CAAA"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,CAAC,UAAU;;;;YAIpC,IAAI;YAAyB,QAAQ;;;YACvC,MAAM;YAAgB,KAAK;YAAe,KAAK;;;YAS1C,IAAI;YAAuB,KAAK;YAAwB,MAAM;;;;;;;;;;;;;;;;;;;;;;YAVjE,IAAI;YAAyB,QAAQ;;;YACvC,MAAM;YAAgB,KAAK;YAAe,KAAK;;;YAsB1C,IAAI;YAAQ,KAAK;YAAoB,MAAM;;;YACzC,KAAK;;;;;;;;;;;;;;;;;;CAQxB,CAAA;AAED,eAAO,MAAM,aAAa,QAAO,OAc3B,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { existsSync } from "node:fs";
2
+ import { dirname } from "node:path";
2
3
  import { CliError, configFilePath, resolvePaths } from "@wirecat/cli-base";
3
4
  import { annotate } from "@wirecat/cli-base/commands";
4
- import { environmentOf, itemOf, LOCAL_READ, outputFor, readOnlyLockOf, renderAnswer } from "@wirecat/cli-core/cli";
5
+ import { environmentOf, itemOf, LOCAL_READ, outputFor, privateFiles, profileFree, readOnlyLockOf, renderAnswer, } from "@wirecat/cli-core/cli";
5
6
  import { Command } from "commander";
6
7
  import { configuration } from "../config.js";
7
8
  import { IDENTITY } from "../identity.js";
@@ -10,7 +11,19 @@ const failure = (error) => {
10
11
  return error.message;
11
12
  throw error;
12
13
  };
13
- /** It is run when everything else is broken, so a problem in the config file is a field in the answer, never a throw. */
14
+ const configFiles = (path) => {
15
+ const files = privateFiles({ files: [path], dirs: [dirname(path)] });
16
+ if (!files.checked)
17
+ return { files, fixes: [] };
18
+ return {
19
+ files: { ...files, problems: files.problems.map(({ path, mode, want }) => ({ path, mode, want })) },
20
+ fixes: files.problems.map((problem) => problem.fix),
21
+ };
22
+ };
23
+ /**
24
+ * It is run when everything else is broken, so a problem in the config file is a field in the answer, never a throw.
25
+ * `fixes` are the `chmod` commands that make the config private; they go to stderr, not into the answer.
26
+ */
14
27
  export const doctorReport = (env) => {
15
28
  const paths = resolvePaths({ appName: IDENTITY.appName, prefix: IDENTITY.envPrefix, env });
16
29
  const common = {
@@ -21,31 +34,45 @@ export const doctorReport = (env) => {
21
34
  const readOnly = readOnlyLockOf(IDENTITY, env) ?? null;
22
35
  try {
23
36
  const settings = configuration.resolveSettings({}, { env, readOnly: true, needsProfile: false, withIssues: true });
37
+ const { files, fixes } = configFiles(settings.configPath);
24
38
  return {
25
- ...common,
26
- config: { path: settings.configPath, found: settings.configFound, issues: settings.configIssues ?? [] },
27
- profiles: settings.configuredProfiles,
28
- read_only: readOnly,
39
+ report: {
40
+ ...common,
41
+ config: { path: settings.configPath, found: settings.configFound, issues: settings.configIssues ?? [] },
42
+ profiles: settings.configuredProfiles,
43
+ read_only: readOnly,
44
+ files,
45
+ },
46
+ fixes,
29
47
  };
30
48
  }
31
49
  catch (error) {
32
50
  const file = configFilePath(paths.config);
51
+ const { files, fixes } = configFiles(file);
33
52
  return {
34
- ...common,
35
- config: { path: file, found: existsSync(file), issues: [] },
36
- settings: { error: failure(error) },
37
- profiles: null,
38
- read_only: readOnly,
53
+ report: {
54
+ ...common,
55
+ config: { path: file, found: existsSync(file), issues: [] },
56
+ settings: { error: failure(error) },
57
+ profiles: null,
58
+ read_only: readOnly,
59
+ files,
60
+ },
61
+ fixes,
39
62
  };
40
63
  }
41
64
  };
42
- export const doctorCommand = () => annotate(new Command("doctor"), {
65
+ export const doctorCommand = () => profileFree(annotate(new Command("doctor"), {
43
66
  effects: LOCAL_READ,
44
- examples: [`${IDENTITY.command} doctor`, `${IDENTITY.command} personal doctor --json`],
45
- })
67
+ examples: [`${IDENTITY.command} doctor`, `${IDENTITY.command} doctor --json`],
68
+ }))
46
69
  .description("check this installation: version, paths, config, profiles; no keyring or network")
47
70
  .action(function () {
48
71
  const env = environmentOf(this).env ?? process.env;
49
- renderAnswer(this, outputFor(this), itemOf(doctorReport(env)));
72
+ const { report, fixes } = doctorReport(env);
73
+ const output = outputFor(this);
74
+ renderAnswer(this, output, itemOf(report));
75
+ for (const fix of fixes)
76
+ output.renderer.note(`to make it private: ${fix}`);
50
77
  });
51
78
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
package/dist/mcp.js CHANGED
@@ -38,7 +38,7 @@ export const createMcpServer = (options) => {
38
38
  },
39
39
  },
40
40
  ]));
41
- registerCommands(server, IDENTITY.command, commands);
41
+ registerCommands(server, IDENTITY.command, commands, undefined, undefined, IDENTITY.messenger);
42
42
  return server;
43
43
  };
44
44
  /** Serves until the client closes the connection or the command is stopped. */
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.5";
1
+ export declare const VERSION = "0.1.7";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.1.5";
1
+ export const VERSION = "0.1.7";
2
2
  //# sourceMappingURL=version.js.map