ascendant-skills 2.1.1 → 2.1.3

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 (2) hide show
  1. package/bin/cli.mjs +30 -25
  2. package/package.json +2 -1
package/bin/cli.mjs CHANGED
@@ -15,7 +15,11 @@ import { fileURLToPath } from "node:url";
15
15
  import { Console, Effect, Option } from "effect";
16
16
  import { CliError, Command, Flag, Prompt } from "effect/cli";
17
17
  import { ChildProcess, ChildProcessSpawner } from "effect/process";
18
- import { NodeRuntime, NodeServices } from "@effect/platform-node";
18
+ // Subpaths, not the barrel: the barrel also loads the socket and HTTP modules,
19
+ // which this CLI never uses. package.json pins @effect/platform-node-shared so
20
+ // a fresh install cannot pair it with a newer, incompatible shared release.
21
+ import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
22
+ import * as NodeServices from "@effect/platform-node/NodeServices";
19
23
  import { PROVIDERS, SCOPES, detectProviders, parseProviders, planInstall } from "../lib/plan.mjs";
20
24
 
21
25
  const IS_WINDOWS = process.platform === "win32";
@@ -93,35 +97,36 @@ const choose = ({ providersFlag, scope, yes, detected }) =>
93
97
  return { providers, scope: scope ?? "global" };
94
98
  }
95
99
 
96
- let providers;
97
- if (providersFlag === undefined) {
98
- const names = detected.map((id) => PROVIDERS.find((p) => p.id === id).name);
99
- yield* Console.log(
100
- detected.length > 0 ? `Detected: ${names.join(", ")}` : "No coding tools detected.",
101
- );
102
- const raw = yield* Prompt.run(
103
- Prompt.String({
104
- message: `Install for which tools? [${detected.length > 0 ? detected.join(",") : "e.g. claude,cursor"}]`,
105
- default: detected.join(","),
106
- }),
107
- );
108
- providers = raw.trim() === "" ? [] : yield* parseProvidersOrFail(raw);
109
- } else {
110
- providers = yield* parseProvidersOrFail(providersFlag);
111
- }
112
-
113
- let chosenScope = scope;
114
- if (chosenScope === undefined) {
115
- chosenScope = yield* Prompt.run(
100
+ // Every tool is listed; the detected ones start checked.
101
+ const providers =
102
+ providersFlag === undefined
103
+ ? yield* Prompt.run(
104
+ Prompt.MultiSelect({
105
+ message: "Install for which tools?",
106
+ choices: PROVIDERS.map((p) => ({
107
+ title: p.name,
108
+ value: p.id,
109
+ description: detected.includes(p.id) ? "detected" : undefined,
110
+ selected: detected.includes(p.id),
111
+ })),
112
+ min: 1,
113
+ // Room for every tool plus the select-all and inverse rows.
114
+ maxPerPage: PROVIDERS.length + 2,
115
+ }),
116
+ )
117
+ : yield* parseProvidersOrFail(providersFlag);
118
+
119
+ const chosenScope =
120
+ scope ??
121
+ (yield* Prompt.run(
116
122
  Prompt.Select({
117
123
  message: "Install for this project or globally?",
118
124
  choices: [
119
- { title: "Globally", value: "global" },
120
- { title: "This project", value: "project" },
125
+ { title: "Globally", value: "global", description: "For every project" },
126
+ { title: "This project", value: "project", description: "Only the current directory" },
121
127
  ],
122
128
  }),
123
- );
124
- }
129
+ ));
125
130
 
126
131
  return { providers, scope: chosenScope };
127
132
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ascendant-skills",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "description": "One command to install the Ascendant Vedic astrology skill and plugins into Claude Code, Codex, OpenCode, Cursor, Gemini CLI and more.",
5
5
  "keywords": [
6
6
  "agent-skills",
@@ -33,6 +33,7 @@
33
33
  "type": "module",
34
34
  "dependencies": {
35
35
  "@effect/platform-node": "4.0.5",
36
+ "@effect/platform-node-shared": "4.0.5",
36
37
  "effect": "4.0.5"
37
38
  },
38
39
  "engines": {