pumuki 6.3.51 → 6.3.52
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.
|
@@ -1482,7 +1482,17 @@ const printDoctorReport = (
|
|
|
1482
1482
|
remoteCiDiagnostics?: RemoteCiDiagnostics
|
|
1483
1483
|
): void => {
|
|
1484
1484
|
writeInfo(`[pumuki] repo: ${report.repoRoot}`);
|
|
1485
|
-
writeInfo(`[pumuki]
|
|
1485
|
+
writeInfo(`[pumuki] effective version: ${report.version.effective}`);
|
|
1486
|
+
writeInfo(`[pumuki] runtime version: ${report.version.runtime}`);
|
|
1487
|
+
writeInfo(
|
|
1488
|
+
`[pumuki] consumer installed version: ${report.version.consumerInstalled ?? 'unknown'}`
|
|
1489
|
+
);
|
|
1490
|
+
writeInfo(
|
|
1491
|
+
`[pumuki] lifecycle installed version: ${report.version.lifecycleInstalled ?? 'unknown'}`
|
|
1492
|
+
);
|
|
1493
|
+
if (report.version.driftWarning) {
|
|
1494
|
+
writeInfo(`[pumuki] version drift: ${report.version.driftWarning}`);
|
|
1495
|
+
}
|
|
1486
1496
|
writeInfo(
|
|
1487
1497
|
`[pumuki] hooks path: ${report.hooksDirectory} (${report.hooksDirectoryResolution})`
|
|
1488
1498
|
);
|
|
@@ -2099,9 +2109,18 @@ export const runLifecycleCli = async (
|
|
|
2099
2109
|
);
|
|
2100
2110
|
} else {
|
|
2101
2111
|
writeInfo(`[pumuki] repo: ${status.repoRoot}`);
|
|
2102
|
-
writeInfo(`[pumuki]
|
|
2112
|
+
writeInfo(`[pumuki] effective version: ${status.version.effective}`);
|
|
2113
|
+
writeInfo(`[pumuki] runtime version: ${status.version.runtime}`);
|
|
2114
|
+
writeInfo(
|
|
2115
|
+
`[pumuki] consumer installed version: ${status.version.consumerInstalled ?? 'unknown'}`
|
|
2116
|
+
);
|
|
2117
|
+
writeInfo(
|
|
2118
|
+
`[pumuki] lifecycle installed version: ${status.version.lifecycleInstalled ?? 'unknown'}`
|
|
2119
|
+
);
|
|
2120
|
+
if (status.version.driftWarning) {
|
|
2121
|
+
writeInfo(`[pumuki] version drift: ${status.version.driftWarning}`);
|
|
2122
|
+
}
|
|
2103
2123
|
writeInfo(`[pumuki] lifecycle installed: ${status.lifecycleState.installed ?? 'false'}`);
|
|
2104
|
-
writeInfo(`[pumuki] lifecycle version: ${status.lifecycleState.version ?? 'unknown'}`);
|
|
2105
2124
|
writeInfo(
|
|
2106
2125
|
`[pumuki] hooks path: ${status.hooksDirectory} (${status.hooksDirectoryResolution})`
|
|
2107
2126
|
);
|
|
@@ -4,7 +4,7 @@ import { readEvidenceResult } from '../evidence/readEvidence';
|
|
|
4
4
|
import { resolvePolicyForStage } from '../gate/stagePolicies';
|
|
5
5
|
import { getPumukiHooksStatus, resolvePumukiHooksDirectory } from './hookManager';
|
|
6
6
|
import { LifecycleGitService, type ILifecycleGitService } from './gitService';
|
|
7
|
-
import { getCurrentPumukiVersion } from './packageInfo';
|
|
7
|
+
import { buildLifecycleVersionReport, getCurrentPumukiVersion } from './packageInfo';
|
|
8
8
|
import {
|
|
9
9
|
readLifecyclePolicyValidationSnapshot,
|
|
10
10
|
type LifecyclePolicyValidationSnapshot,
|
|
@@ -72,6 +72,7 @@ export type DoctorCompatibilityContract = {
|
|
|
72
72
|
export type LifecycleDoctorReport = {
|
|
73
73
|
repoRoot: string;
|
|
74
74
|
packageVersion: string;
|
|
75
|
+
version: ReturnType<typeof buildLifecycleVersionReport>;
|
|
75
76
|
lifecycleState: LifecycleState;
|
|
76
77
|
trackedNodeModulesPaths: ReadonlyArray<string>;
|
|
77
78
|
hookStatus: ReturnType<typeof getPumukiHooksStatus>;
|
|
@@ -724,10 +725,15 @@ export const runLifecycleDoctor = (params?: {
|
|
|
724
725
|
hookStatus,
|
|
725
726
|
})
|
|
726
727
|
: undefined;
|
|
728
|
+
const version = buildLifecycleVersionReport({
|
|
729
|
+
repoRoot,
|
|
730
|
+
lifecycleVersion: lifecycleState.version,
|
|
731
|
+
});
|
|
727
732
|
|
|
728
733
|
return {
|
|
729
734
|
repoRoot,
|
|
730
|
-
packageVersion:
|
|
735
|
+
packageVersion: version.effective,
|
|
736
|
+
version,
|
|
731
737
|
lifecycleState,
|
|
732
738
|
trackedNodeModulesPaths,
|
|
733
739
|
hookStatus,
|
|
@@ -24,6 +24,17 @@ export type PumukiVersionMetadata = {
|
|
|
24
24
|
source: 'consumer-node-modules' | 'runtime-package';
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
export type LifecycleVersionReport = {
|
|
28
|
+
effective: string;
|
|
29
|
+
runtime: string;
|
|
30
|
+
consumerInstalled: string | null;
|
|
31
|
+
lifecycleInstalled: string | null;
|
|
32
|
+
source: PumukiVersionMetadata['source'];
|
|
33
|
+
driftFromRuntime: boolean;
|
|
34
|
+
driftFromLifecycleInstalled: boolean;
|
|
35
|
+
driftWarning: string | null;
|
|
36
|
+
};
|
|
37
|
+
|
|
27
38
|
export const resolvePumukiVersionMetadata = (params?: { repoRoot?: string }): PumukiVersionMetadata => {
|
|
28
39
|
const runtimeVersion = packageJson.version;
|
|
29
40
|
const repoRoot = params?.repoRoot;
|
|
@@ -51,3 +62,35 @@ export const getCurrentPumukiVersion = (params?: { repoRoot?: string }): string
|
|
|
51
62
|
};
|
|
52
63
|
|
|
53
64
|
export const getCurrentPumukiPackageName = (): string => packageJson.name;
|
|
65
|
+
|
|
66
|
+
export const buildLifecycleVersionReport = (params?: {
|
|
67
|
+
repoRoot?: string;
|
|
68
|
+
lifecycleVersion?: string | null | undefined;
|
|
69
|
+
}): LifecycleVersionReport => {
|
|
70
|
+
const metadata = resolvePumukiVersionMetadata({ repoRoot: params?.repoRoot });
|
|
71
|
+
const lifecycleInstalled =
|
|
72
|
+
typeof params?.lifecycleVersion === 'string' && params.lifecycleVersion.trim().length > 0
|
|
73
|
+
? params.lifecycleVersion.trim()
|
|
74
|
+
: null;
|
|
75
|
+
const driftFromRuntime = metadata.resolvedVersion !== metadata.runtimeVersion;
|
|
76
|
+
const driftFromLifecycleInstalled =
|
|
77
|
+
lifecycleInstalled !== null && metadata.resolvedVersion !== lifecycleInstalled;
|
|
78
|
+
const driftTargets = [
|
|
79
|
+
driftFromRuntime ? `runtime=${metadata.runtimeVersion}` : null,
|
|
80
|
+
driftFromLifecycleInstalled ? `lifecycle=${lifecycleInstalled}` : null,
|
|
81
|
+
].filter((value): value is string => value !== null);
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
effective: metadata.resolvedVersion,
|
|
85
|
+
runtime: metadata.runtimeVersion,
|
|
86
|
+
consumerInstalled: metadata.consumerInstalledVersion,
|
|
87
|
+
lifecycleInstalled,
|
|
88
|
+
source: metadata.source,
|
|
89
|
+
driftFromRuntime,
|
|
90
|
+
driftFromLifecycleInstalled,
|
|
91
|
+
driftWarning:
|
|
92
|
+
driftTargets.length > 0
|
|
93
|
+
? `Version drift detectado: effective=${metadata.resolvedVersion} ${driftTargets.join(' ')}.`
|
|
94
|
+
: null,
|
|
95
|
+
};
|
|
96
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getPumukiHooksStatus, resolvePumukiHooksDirectory } from './hookManager';
|
|
2
2
|
import { LifecycleGitService, type ILifecycleGitService } from './gitService';
|
|
3
|
-
import {
|
|
3
|
+
import { buildLifecycleVersionReport } from './packageInfo';
|
|
4
4
|
import {
|
|
5
5
|
readLifecyclePolicyValidationSnapshot,
|
|
6
6
|
type LifecyclePolicyValidationSnapshot,
|
|
@@ -10,6 +10,7 @@ import { readLifecycleState, type LifecycleState } from './state';
|
|
|
10
10
|
export type LifecycleStatus = {
|
|
11
11
|
repoRoot: string;
|
|
12
12
|
packageVersion: string;
|
|
13
|
+
version: ReturnType<typeof buildLifecycleVersionReport>;
|
|
13
14
|
lifecycleState: LifecycleState;
|
|
14
15
|
hookStatus: ReturnType<typeof getPumukiHooksStatus>;
|
|
15
16
|
hooksDirectory: string;
|
|
@@ -27,11 +28,17 @@ export const readLifecycleStatus = (params?: {
|
|
|
27
28
|
const repoRoot = git.resolveRepoRoot(cwd);
|
|
28
29
|
const hooksDirectory = resolvePumukiHooksDirectory(repoRoot);
|
|
29
30
|
const trackedNodeModulesCount = git.trackedNodeModulesPaths(repoRoot).length;
|
|
31
|
+
const lifecycleState = readLifecycleState(git, repoRoot);
|
|
32
|
+
const version = buildLifecycleVersionReport({
|
|
33
|
+
repoRoot,
|
|
34
|
+
lifecycleVersion: lifecycleState.version,
|
|
35
|
+
});
|
|
30
36
|
|
|
31
37
|
return {
|
|
32
38
|
repoRoot,
|
|
33
|
-
packageVersion:
|
|
34
|
-
|
|
39
|
+
packageVersion: version.effective,
|
|
40
|
+
version,
|
|
41
|
+
lifecycleState,
|
|
35
42
|
hookStatus: getPumukiHooksStatus(repoRoot),
|
|
36
43
|
hooksDirectory: hooksDirectory.path,
|
|
37
44
|
hooksDirectoryResolution: hooksDirectory.source,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.52",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|