@wemuda/launchrail 1.0.0 → 1.2.0
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/dist/commands/doctor.js +15 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.js +59 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/claudeCli.d.ts +21 -0
- package/dist/lib/claudeCli.js +65 -0
- package/dist/lib/claudeCli.js.map +1 -0
- package/dist/lib/claudeSettings.d.ts +2 -0
- package/dist/lib/claudeSettings.js +3 -2
- package/dist/lib/claudeSettings.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/doctor.js
CHANGED
|
@@ -2,7 +2,8 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { BROWSER_TESTING_MODULE, SEMANTIC_SCRIPTS, SMOKE_JOURNEYS_PATH } from "../lib/browser-testing.js";
|
|
4
4
|
import { sha256 } from "../lib/checksum.js";
|
|
5
|
-
import {
|
|
5
|
+
import { launchrailPluginState } from "../lib/claudeCli.js";
|
|
6
|
+
import { CLAUDE_SETTINGS_PATH, declarationState, MARKETPLACE_REPO, PLUGIN_KEY } from "../lib/claudeSettings.js";
|
|
6
7
|
import { detectRepo } from "../lib/detect.js";
|
|
7
8
|
import { readLockfile } from "../lib/lockfile.js";
|
|
8
9
|
import { pendingMigrations } from "../lib/migrations.js";
|
|
@@ -104,6 +105,19 @@ export function runDoctor(cwd) {
|
|
|
104
105
|
else {
|
|
105
106
|
add("warn", "plugin declaration", `Launchrail plugin not declared in ${CLAUDE_SETTINGS_PATH} — run \`launchrail init\``);
|
|
106
107
|
}
|
|
108
|
+
const pluginState = launchrailPluginState(cwd);
|
|
109
|
+
if (pluginState === "installed") {
|
|
110
|
+
add("pass", "plugin install", `${PLUGIN_KEY} is installed in Claude Code`);
|
|
111
|
+
}
|
|
112
|
+
else if (pluginState === "not-installed") {
|
|
113
|
+
add("warn", "plugin install", `not installed — run \`claude plugin marketplace add ${MARKETPLACE_REPO}\` then \`claude plugin install ${PLUGIN_KEY}\``);
|
|
114
|
+
}
|
|
115
|
+
else if (pluginState === "no-cli") {
|
|
116
|
+
add("warn", "plugin install", "claude CLI not found — cannot verify; Claude Code offers the declared plugin when the folder is first trusted");
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
add("warn", "plugin install", "could not read `claude plugin list --json`");
|
|
120
|
+
}
|
|
107
121
|
if (manifest?.modules[BROWSER_TESTING_MODULE]) {
|
|
108
122
|
if (detection.hasPlaywrightDep) {
|
|
109
123
|
add("pass", "playwright dependency", "@playwright/test declared");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAepE,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,MAAmB,EAAE,IAAY,EAAE,OAAO,GAAG,EAAE,EAAQ,EAAE;QACpE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,SAAS,CAAC,SAAS;QAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;;QAClD,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,mEAAmE,CAAC,CAAC;IAExG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,SAAS,IAAI,EAAE;QAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;;QACzE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,kCAAkC,CAAC,CAAC;IAE9F,IAAI,SAAS,CAAC,cAAc;QAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;;QAClF,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,qDAAqD,CAAC,CAAC;IAE3F,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,oCAAoC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACxF,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,yBAAyB,CAAC,CAAC;gBACjE,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAC1G,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,0BAA0B,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5H,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,WAAW;QAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;;QAC/C,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,iCAAiC,CAAC,CAAC;IAEjE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,iCAAiC,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,4EAA4E,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,SAAS,CAAC,kBAAkB;QAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;;QACtF,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,+EAA+E,CAAC,CAAC;IAEvH,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,iCAAiC,CAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QAC1C,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,oBAAoB,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,qCAAqC,oBAAoB,4BAA4B,CAAC,CAAC;IAC3H,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,8BAA8B,CAAC,CAAC;IAC7E,CAAC;SAAM,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QAC3C,GAAG,CACD,MAAM,EACN,gBAAgB,EAChB,uDAAuD,gBAAgB,mCAAmC,UAAU,IAAI,CACzH,CAAC;IACJ,CAAC;SAAM,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,GAAG,CACD,MAAM,EACN,gBAAgB,EAChB,+GAA+G,CAChH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,4CAA4C,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,QAAQ,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,EAAE,uBAAuB,EAAE,2BAA2B,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,uBAAuB,EAAE,8DAA8D,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,wEAAwE,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,qDAAqD,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3G,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,sDAAsD,iBAAiB,EAAE,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,4CAA4C,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,4DAA4D,iBAAiB,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAChE,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,6BAA6B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,GAAG,CACD,MAAM,EACN,yBAAyB,EACzB,0BAA0B,iBAAiB,qEAAqE,CACjH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,MAAM,GAAgC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAEhF,MAAM,UAAU,WAAW,CAAC,OAAsB;IAChD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,MAAM,YAAY,MAAM,cAAc,CACxH,CAAC;AACJ,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -4,10 +4,15 @@ export interface InitOptions {
|
|
|
4
4
|
cwd: string;
|
|
5
5
|
dryRun: boolean;
|
|
6
6
|
yes: boolean;
|
|
7
|
+
/** Write the declaration but skip the `claude` CLI plugin install. */
|
|
8
|
+
skipPluginInstall?: boolean;
|
|
7
9
|
}
|
|
10
|
+
/** How the Claude Code plugin install ended up. */
|
|
11
|
+
export type PluginHandoff = "installed" | "already-installed" | "failed" | "no-cli" | "skipped" | "dry-run";
|
|
8
12
|
export interface InitOutcome {
|
|
9
13
|
code: number;
|
|
10
14
|
actions: PlannedAction[];
|
|
11
15
|
settings: SettingsPlan;
|
|
16
|
+
plugin: PluginHandoff;
|
|
12
17
|
}
|
|
13
18
|
export declare function runInit(opts: InitOptions): Promise<InitOutcome>;
|
package/dist/commands/init.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import * as p from "@clack/prompts";
|
|
4
|
-
import {
|
|
4
|
+
import { detectClaudeCli, installLaunchrailPlugin } from "../lib/claudeCli.js";
|
|
5
|
+
import { applyPluginDeclaration, CLAUDE_SETTINGS_PATH, MARKETPLACE_REPO, PLUGIN_KEY, planPluginDeclaration, } from "../lib/claudeSettings.js";
|
|
5
6
|
import { detectRepo } from "../lib/detect.js";
|
|
6
7
|
import { emptyLockfile, readLockfile, writeLockfile } from "../lib/lockfile.js";
|
|
7
8
|
import { migrationIds } from "../lib/migrations.js";
|
|
@@ -100,7 +101,7 @@ export async function runInit(opts) {
|
|
|
100
101
|
console.error(`launchrail: existing ${MANIFEST_FILENAME} is invalid:`);
|
|
101
102
|
for (const error of parsed.errors)
|
|
102
103
|
console.error(` - ${error}`);
|
|
103
|
-
return { code: 1, actions: [], settings };
|
|
104
|
+
return { code: 1, actions: [], settings, plugin: "skipped" };
|
|
104
105
|
}
|
|
105
106
|
manifest = parsed.manifest;
|
|
106
107
|
console.log(`Found existing ${MANIFEST_FILENAME} — using its configuration (init is idempotent).`);
|
|
@@ -113,7 +114,7 @@ export async function runInit(opts) {
|
|
|
113
114
|
}
|
|
114
115
|
else {
|
|
115
116
|
console.error("launchrail: non-interactive session — re-run with --yes to accept defaults.");
|
|
116
|
-
return { code: 1, actions: [], settings };
|
|
117
|
+
return { code: 1, actions: [], settings, plugin: "skipped" };
|
|
117
118
|
}
|
|
118
119
|
const specs = [
|
|
119
120
|
{ relPath: MANIFEST_FILENAME, content: serializeManifest(manifest), ownership: "seeded" },
|
|
@@ -122,7 +123,7 @@ export async function runInit(opts) {
|
|
|
122
123
|
const existing = readLockfile(opts.cwd);
|
|
123
124
|
if (existing.error) {
|
|
124
125
|
console.error(`launchrail: ${existing.error} — refusing to continue. Fix or remove the lockfile first.`);
|
|
125
|
-
return { code: 1, actions: [], settings };
|
|
126
|
+
return { code: 1, actions: [], settings, plugin: "skipped" };
|
|
126
127
|
}
|
|
127
128
|
const lockfile = existing.lockfile ?? emptyLockfile(VERSION);
|
|
128
129
|
if (!existing.lockfile) {
|
|
@@ -138,8 +139,17 @@ export async function runInit(opts) {
|
|
|
138
139
|
}
|
|
139
140
|
console.log(` ${SETTINGS_LABEL[settings.kind]} ${CLAUDE_SETTINGS_PATH} (${settings.detail})`);
|
|
140
141
|
if (opts.dryRun) {
|
|
142
|
+
if (opts.skipPluginInstall) {
|
|
143
|
+
console.log(" skip Claude Code plugin install (--skip-plugin-install)");
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const version = detectClaudeCli(opts.cwd);
|
|
147
|
+
console.log(version
|
|
148
|
+
? ` install ${PLUGIN_KEY} into Claude Code (claude CLI ${version} detected)`
|
|
149
|
+
: " manual Claude Code plugin install (claude CLI not found — instructions will be printed)");
|
|
150
|
+
}
|
|
141
151
|
console.log("\nDry run — nothing was written.");
|
|
142
|
-
return { code: 0, actions, settings };
|
|
152
|
+
return { code: 0, actions, settings, plugin: "dry-run" };
|
|
143
153
|
}
|
|
144
154
|
const written = applyPlan(opts.cwd, actions, lockfile);
|
|
145
155
|
if (applyPluginDeclaration(opts.cwd, settings))
|
|
@@ -161,13 +171,50 @@ export async function runInit(opts) {
|
|
|
161
171
|
if (!detection.isGitRepo) {
|
|
162
172
|
console.log("\n⚠ Not a git repository. Run `git init` before letting agents work here — Launchrail relies on git for safe writes.");
|
|
163
173
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
174
|
+
let plugin = "skipped";
|
|
175
|
+
if (!opts.skipPluginInstall) {
|
|
176
|
+
const version = detectClaudeCli(opts.cwd);
|
|
177
|
+
if (version === null) {
|
|
178
|
+
plugin = "no-cli";
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
console.log("\nInstalling the Launchrail plugin into Claude Code (first run clones the marketplace)…");
|
|
182
|
+
const result = installLaunchrailPlugin(opts.cwd);
|
|
183
|
+
if (result.state === "installed") {
|
|
184
|
+
plugin = result.alreadyInstalled ? "already-installed" : "installed";
|
|
185
|
+
console.log(result.alreadyInstalled
|
|
186
|
+
? " ✓ Launchrail plugin already installed — nothing to do."
|
|
187
|
+
: " ✓ Launchrail plugin installed (user scope).");
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
plugin = "failed";
|
|
191
|
+
console.log(` ⚠ Automatic install failed (${result.state === "failed" ? result.step : "claude CLI"}):`);
|
|
192
|
+
for (const line of (result.state === "failed" ? result.output : "").split("\n").slice(0, 3)) {
|
|
193
|
+
if (line.trim())
|
|
194
|
+
console.log(` ${line.trim()}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const pluginReady = plugin === "installed" || plugin === "already-installed";
|
|
200
|
+
console.log("\nYou're set up — from here the workflow runs inside Claude Code:");
|
|
201
|
+
console.log(' 1. Commit the result: git add -A && git commit -m "chore: initialize launchrail"');
|
|
202
|
+
if (pluginReady) {
|
|
203
|
+
console.log(" 2. Open Claude Code in this project — the plugin and its skills are ready.");
|
|
204
|
+
console.log(" (Session already open? Run /reload-plugins, or restart Claude Code.)");
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
console.log(" 2. Install the Launchrail plugin into Claude Code:");
|
|
208
|
+
console.log(` claude plugin marketplace add ${MARKETPLACE_REPO}`);
|
|
209
|
+
console.log(` claude plugin install ${PLUGIN_KEY}`);
|
|
210
|
+
console.log(" (No claude CLI? Inside Claude Code run /plugin → Marketplaces → Add, and enter");
|
|
211
|
+
console.log(` ${MARKETPLACE_REPO} — the full owner/repo. ${CLAUDE_SETTINGS_PATH} also declares the`);
|
|
212
|
+
console.log(" plugin, so Claude Code offers it by itself the first time this folder is trusted.)");
|
|
168
213
|
}
|
|
169
|
-
console.log(
|
|
170
|
-
console.log(
|
|
171
|
-
|
|
214
|
+
console.log(" 3. Run /launchrail:launch — it detects the project's stage and drives the workflow from there.");
|
|
215
|
+
console.log(" On a fresh project that means Matt Pocock's skills setup, then vision creation, which also");
|
|
216
|
+
console.log(" replaces the seeded AGENTS.md project-purpose TODO. No seeded file needs filling in by hand.");
|
|
217
|
+
console.log("\nRun `npx @wemuda/launchrail doctor` any time to validate the setup.");
|
|
218
|
+
return { code: 0, actions, settings, plugin };
|
|
172
219
|
}
|
|
173
220
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,iBAAiB,EAEjB,aAAa,EACb,iBAAiB,GAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAqC,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,10 @@ init / add options:
|
|
|
33
33
|
--dry-run Show what would be written without writing
|
|
34
34
|
-y, --yes Accept defaults; no interactive questions
|
|
35
35
|
|
|
36
|
+
init options:
|
|
37
|
+
--skip-plugin-install Declare the Claude Code plugin but do not install it
|
|
38
|
+
via the claude CLI (env: LAUNCHRAIL_SKIP_CLAUDE_CLI=1)
|
|
39
|
+
|
|
36
40
|
smoke options:
|
|
37
41
|
--url <url> Test a specific URL (e.g. a preview environment)
|
|
38
42
|
--dry-run Show what would be scaffolded without writing
|
|
@@ -60,6 +64,7 @@ if (command === "init") {
|
|
|
60
64
|
cwd: process.cwd(),
|
|
61
65
|
dryRun: flags.has("--dry-run"),
|
|
62
66
|
yes: flags.has("--yes") || flags.has("-y"),
|
|
67
|
+
skipPluginInstall: flags.has("--skip-plugin-install"),
|
|
63
68
|
});
|
|
64
69
|
process.exit(outcome.code);
|
|
65
70
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG,cAAc,OAAO;;;;;;;sDAOoB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The `claude` CLI version, or null when it is unavailable or opted out. */
|
|
2
|
+
export declare function detectClaudeCli(cwd: string): string | null;
|
|
3
|
+
export type PluginInstallOutcome = {
|
|
4
|
+
state: "installed";
|
|
5
|
+
alreadyInstalled: boolean;
|
|
6
|
+
} | {
|
|
7
|
+
state: "failed";
|
|
8
|
+
step: "marketplace-add" | "plugin-install";
|
|
9
|
+
output: string;
|
|
10
|
+
} | {
|
|
11
|
+
state: "no-cli";
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Register the Launchrail marketplace and install the plugin at user scope.
|
|
15
|
+
* Both underlying commands are idempotent ("already on disk" / "already
|
|
16
|
+
* installed" exit 0), so re-running init stays safe.
|
|
17
|
+
*/
|
|
18
|
+
export declare function installLaunchrailPlugin(cwd: string): PluginInstallOutcome;
|
|
19
|
+
export type PluginInstalledState = "installed" | "not-installed" | "no-cli" | "unreadable";
|
|
20
|
+
/** Whether the plugin is actually installed in Claude Code (via `claude plugin list --json`). */
|
|
21
|
+
export declare function launchrailPluginState(cwd: string): PluginInstalledState;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { MARKETPLACE_REPO, PLUGIN_KEY } from "./claudeSettings.js";
|
|
3
|
+
/**
|
|
4
|
+
* The committed declaration (ADR-0003) makes Claude Code offer the plugin when
|
|
5
|
+
* a folder is trusted for the *first* time — a folder trusted before init ran
|
|
6
|
+
* is never prompted. When the `claude` CLI is on PATH, init closes that gap by
|
|
7
|
+
* installing the plugin directly (ADR-0011). These helpers wrap that CLI.
|
|
8
|
+
*
|
|
9
|
+
* Setting LAUNCHRAIL_SKIP_CLAUDE_CLI=1 disables all `claude` invocations —
|
|
10
|
+
* the environment twin of `init --skip-plugin-install`, and the seam the test
|
|
11
|
+
* suite uses so running tests never touches a developer's real Claude setup.
|
|
12
|
+
*/
|
|
13
|
+
const RUN_OPTS = { encoding: "utf8", timeout: 180_000 };
|
|
14
|
+
function runClaude(cwd, args) {
|
|
15
|
+
const res = spawnSync("claude", args, { ...RUN_OPTS, cwd });
|
|
16
|
+
return {
|
|
17
|
+
ok: res.status === 0,
|
|
18
|
+
notFound: res.error !== undefined,
|
|
19
|
+
stdout: (res.stdout ?? "").trim(),
|
|
20
|
+
stderr: (res.stderr ?? "").trim(),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** The `claude` CLI version, or null when it is unavailable or opted out. */
|
|
24
|
+
export function detectClaudeCli(cwd) {
|
|
25
|
+
if (process.env.LAUNCHRAIL_SKIP_CLAUDE_CLI)
|
|
26
|
+
return null;
|
|
27
|
+
const res = runClaude(cwd, ["--version"]);
|
|
28
|
+
if (!res.ok || res.notFound)
|
|
29
|
+
return null;
|
|
30
|
+
return res.stdout || "unknown version";
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Register the Launchrail marketplace and install the plugin at user scope.
|
|
34
|
+
* Both underlying commands are idempotent ("already on disk" / "already
|
|
35
|
+
* installed" exit 0), so re-running init stays safe.
|
|
36
|
+
*/
|
|
37
|
+
export function installLaunchrailPlugin(cwd) {
|
|
38
|
+
if (detectClaudeCli(cwd) === null)
|
|
39
|
+
return { state: "no-cli" };
|
|
40
|
+
const add = runClaude(cwd, ["plugin", "marketplace", "add", MARKETPLACE_REPO]);
|
|
41
|
+
if (!add.ok) {
|
|
42
|
+
return { state: "failed", step: "marketplace-add", output: add.stderr || add.stdout };
|
|
43
|
+
}
|
|
44
|
+
const install = runClaude(cwd, ["plugin", "install", PLUGIN_KEY]);
|
|
45
|
+
if (!install.ok) {
|
|
46
|
+
return { state: "failed", step: "plugin-install", output: install.stderr || install.stdout };
|
|
47
|
+
}
|
|
48
|
+
return { state: "installed", alreadyInstalled: install.stdout.includes("already installed") };
|
|
49
|
+
}
|
|
50
|
+
/** Whether the plugin is actually installed in Claude Code (via `claude plugin list --json`). */
|
|
51
|
+
export function launchrailPluginState(cwd) {
|
|
52
|
+
if (detectClaudeCli(cwd) === null)
|
|
53
|
+
return "no-cli";
|
|
54
|
+
const res = runClaude(cwd, ["plugin", "list", "--json"]);
|
|
55
|
+
if (!res.ok)
|
|
56
|
+
return "unreadable";
|
|
57
|
+
try {
|
|
58
|
+
const plugins = JSON.parse(res.stdout);
|
|
59
|
+
return plugins.some((p) => p.id === PLUGIN_KEY) ? "installed" : "not-installed";
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return "unreadable";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=claudeCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeCli.js","sourceRoot":"","sources":["../../src/lib/claudeCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* (`"launchrail@launchrail": false`) is respected.
|
|
8
8
|
*/
|
|
9
9
|
export declare const CLAUDE_SETTINGS_PATH: string;
|
|
10
|
+
export declare const PLUGIN_KEY = "launchrail@launchrail";
|
|
11
|
+
export declare const MARKETPLACE_REPO = "wemuda/launchrail";
|
|
10
12
|
export type DeclarationState = "declared" | "no-file" | "invalid-json" | "undeclared";
|
|
11
13
|
export declare function declarationState(root: string): DeclarationState;
|
|
12
14
|
export type SettingsPlanKind = "create" | "merge" | "skip-declared" | "skip-invalid";
|
|
@@ -10,8 +10,9 @@ import { dirname, join } from "node:path";
|
|
|
10
10
|
*/
|
|
11
11
|
export const CLAUDE_SETTINGS_PATH = join(".claude", "settings.json");
|
|
12
12
|
const MARKETPLACE_NAME = "launchrail";
|
|
13
|
-
const PLUGIN_KEY = "launchrail@launchrail";
|
|
14
|
-
const
|
|
13
|
+
export const PLUGIN_KEY = "launchrail@launchrail";
|
|
14
|
+
export const MARKETPLACE_REPO = "wemuda/launchrail";
|
|
15
|
+
const MARKETPLACE_SOURCE = { source: "github", repo: MARKETPLACE_REPO };
|
|
15
16
|
function readSettings(root) {
|
|
16
17
|
const path = join(root, CLAUDE_SETTINGS_PATH);
|
|
17
18
|
if (!existsSync(path))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeSettings.js","sourceRoot":"","sources":["../../src/lib/claudeSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAErE,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,UAAU,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"claudeSettings.js","sourceRoot":"","sources":["../../src/lib/claudeSettings.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED