@ran-sh/dsh-crew 2.2.2 → 2.2.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.
package/package.json
CHANGED
package/scripts/setup.mjs
CHANGED
|
@@ -359,7 +359,10 @@ export async function setupUninstall({
|
|
|
359
359
|
export async function setupStatus({ log = console.log, root = ROOT, home = homedir(), installer = realInstaller } = {}) {
|
|
360
360
|
const st = installer.installStatus ? installer.installStatus({ home, root }) : realInstaller.installStatus({ home, root });
|
|
361
361
|
const integrationLabel = (entry) => !entry?.installed ? 'not installed' : entry.ready === true ? 'installed' : 'needs repair';
|
|
362
|
-
|
|
362
|
+
// A host without the Claude CLI has no install to repair: the settings are
|
|
363
|
+
// registered best-effort and the CLI step that creates the plugin snapshot is
|
|
364
|
+
// skipped, so the footprint can never be ready there.
|
|
365
|
+
const claude = st?.claude?.host_detected === false ? 'not installed' : integrationLabel(st?.claude);
|
|
363
366
|
const codex = integrationLabel(st?.codex);
|
|
364
367
|
const zcode = integrationLabel(st?.zcode);
|
|
365
368
|
const startupState = installer.windowsStartupStatus
|
|
@@ -497,7 +497,7 @@ export function writeGlobalConfig(patch) {
|
|
|
497
497
|
}
|
|
498
498
|
|
|
499
499
|
/** What is currently installed where — drives the settings-page buttons. */
|
|
500
|
-
export function installStatus({ home = homedir(), root = ROOT, env = process.env } = {}) {
|
|
500
|
+
export function installStatus({ home = homedir(), root = ROOT, env = process.env, claudeDetected = undefined } = {}) {
|
|
501
501
|
// Host integrations are installed from the profile's loader link, not from the
|
|
502
502
|
// release directory, so an upgrade re-points one link instead of rewriting four
|
|
503
503
|
// host configurations. Readiness has to judge them against the path they were
|
|
@@ -549,9 +549,16 @@ export function installStatus({ home = homedir(), root = ROOT, env = process.env
|
|
|
549
549
|
|| existsSync(join(codexRoot, 'agents', 'ds-flash.toml'))
|
|
550
550
|
|| existsSync(join(codexRoot, 'agents', 'ds-pro.toml'));
|
|
551
551
|
const missing = Object.entries(components).filter(([, present]) => !present).map(([key]) => key);
|
|
552
|
+
// `installed` stays the footprint: the settings name our plugin, which is a
|
|
553
|
+
// deliberate distinction from `ready` (an enabled setting is not a callable
|
|
554
|
+
// plugin). `host_detected` records the other half a renderer needs — a machine
|
|
555
|
+
// with no Claude Code has nothing installed and nothing to repair, even though
|
|
556
|
+
// the best-effort settings are there.
|
|
557
|
+
const claudeHostDetected = claudeDetected === undefined ? resolveClaudeCommand() !== null : claudeDetected === true;
|
|
552
558
|
return {
|
|
553
559
|
claude: {
|
|
554
560
|
installed: claudeFootprint,
|
|
561
|
+
host_detected: claudeHostDetected,
|
|
555
562
|
ready: claudeMissing.length === 0,
|
|
556
563
|
hud: hudWired,
|
|
557
564
|
components: claudeComponents,
|
|
@@ -3284,7 +3284,13 @@ export function npxStatus({
|
|
|
3284
3284
|
const integrationLabel = (entry) => !entry?.installed ? 'not installed' : entry.ready === true ? 'installed' : 'needs repair';
|
|
3285
3285
|
const codex = integrationLabel(st?.codex);
|
|
3286
3286
|
const zcode = integrationLabel(st?.zcode);
|
|
3287
|
-
|
|
3287
|
+
// Claude Code installs best-effort: on a host without the CLI the settings are
|
|
3288
|
+
// registered and the CLI step — the only one that can create the plugin snapshot
|
|
3289
|
+
// — is skipped, so such a machine carries a footprint that can never be ready.
|
|
3290
|
+
// Nothing there is repairable, and "needs repair" told operators to fix an
|
|
3291
|
+
// integration they never installed. A host whose CLI IS present with an
|
|
3292
|
+
// unfinished install still reads as needing repair.
|
|
3293
|
+
const claude = st?.claude?.host_detected === false ? 'not installed' : integrationLabel(st?.claude);
|
|
3288
3294
|
const official = officialWebIntegrationStatus({ home, releaseDir: pointer?.path });
|
|
3289
3295
|
const officialWeb = !official.legacy_present ? 'not present (native 3210 control plane)' : official.healthy ? 'legacy full bridge present (deprecated; manual cleanup available)' : 'legacy full bridge record present but unhealthy (deprecated)';
|
|
3290
3296
|
const startupState = installer.windowsStartupStatus?.({ home, root: runningPackageRoot() });
|
package/src/runtime-identity.mjs
CHANGED
|
@@ -36,7 +36,7 @@ export {
|
|
|
36
36
|
// included in the identity contract.
|
|
37
37
|
const RUNTIME_ID = randomUUID();
|
|
38
38
|
|
|
39
|
-
export const RUNTIME_VERSION = '2.2.
|
|
39
|
+
export const RUNTIME_VERSION = '2.2.3';
|
|
40
40
|
export const HUB_PROTOCOL_VERSION = 1;
|
|
41
41
|
|
|
42
42
|
export const HUB_CAPABILITIES = Object.freeze([
|