@eldrforge/commands-tree 0.1.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.
@@ -0,0 +1,3 @@
1
+ import { Config } from '@eldrforge/core';
2
+ export declare const execute: (runConfig: Config, packageArgument?: string) => Promise<string>;
3
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAqvBrE,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,EAAE,kBAAkB,MAAM,KAAG,OAAO,CAAC,MAAM,CAUzF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Config } from '@eldrforge/core';
2
+ import { PackageInfo } from '@eldrforge/tree-core';
3
+ export declare const __resetGlobalState: () => void;
4
+ export declare const executePackage: (packageName: string, packageInfo: PackageInfo, commandToRun: string, runConfig: Config, isDryRun: boolean, index: number, total: number, allPackageNames: Set<string>, isBuiltInCommand?: boolean) => Promise<{
5
+ success: boolean;
6
+ error?: any;
7
+ isTimeoutError?: boolean;
8
+ skippedNoChanges?: boolean;
9
+ logFile?: string;
10
+ }>;
11
+ export declare const execute: (runConfig: Config) => Promise<string>;
12
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":";AAuCA,OAAO,EAAa,MAAM,EAA8E,MAAM,iBAAiB,CAAC;AAMhI,OAAO,KAAK,EACR,WAAW,EAEd,MAAM,sBAAsB,CAAC;AAiC9B,eAAO,MAAM,kBAAkB,YAG9B,CAAC;AA2lBF,eAAO,MAAM,cAAc,GACvB,aAAa,MAAM,EACnB,aAAa,WAAW,EACxB,cAAc,MAAM,EACpB,WAAW,MAAM,EACjB,UAAU,OAAO,EACjB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAC5B,mBAAkB,OAAe,KAClC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAyanH,CAAC;AA4HF,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAmkD/D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Config } from '@eldrforge/core';
2
+ export declare const matchesExternalUnlinkPattern: (dependencyName: string, externalUnlinkPatterns: string[]) => boolean;
3
+ export declare const isSymbolicLink: (filePath: string) => Promise<boolean>;
4
+ export declare const getSymbolicLinkTarget: (filePath: string) => Promise<string | null>;
5
+ export declare const findLinkedDependencies: (packagePath: string, packageName: string, storage: any, logger: any) => Promise<Array<{
6
+ dependencyName: string;
7
+ targetPath: string;
8
+ isExternal: boolean;
9
+ }>>;
10
+ export declare const removeSymbolicLink: (packageName: string, targetDir: string, logger: any, isDryRun?: boolean) => Promise<boolean>;
11
+ export declare const parsePackageArgument: (packageArg: string) => {
12
+ scope: string;
13
+ packageName?: string;
14
+ };
15
+ export declare const execute: (runConfig: Config, packageArgument?: string) => Promise<string>;
16
+ //# sourceMappingURL=unlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.d.ts","sourceRoot":"","sources":["../../../src/commands/unlink.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAQrE,eAAO,MAAM,4BAA4B,GAAI,gBAAgB,MAAM,EAAE,wBAAwB,MAAM,EAAE,KAAG,OASvG,CAAC;AAGF,eAAO,MAAM,cAAc,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,OAAO,CAOtE,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAOnF,CAAC;AAGF,eAAO,MAAM,sBAAsB,GAC/B,aAAa,MAAM,EACnB,aAAa,MAAM,EACnB,SAAS,GAAG,EACZ,QAAQ,GAAG,KACZ,OAAO,CAAC,KAAK,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA+CpF,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC3B,aAAa,MAAM,EACnB,WAAW,MAAM,EACjB,QAAQ,GAAG,EACX,WAAU,OAAe,KAC1B,OAAO,CAAC,OAAO,CAkDjB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAa9F,CAAC;AAucF,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,EAAE,kBAAkB,MAAM,KAAG,OAAO,CAAC,MAAM,CAqBzF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Config } from '@eldrforge/core';
2
+ /**
3
+ * Execute the updates command
4
+ */
5
+ export declare const execute: (runConfig: Config) => Promise<string>;
6
+ //# sourceMappingURL=updates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../../../src/commands/updates.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAmB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAmH1D;;GAEG;AACH,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAwH/D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Config } from '@eldrforge/core';
2
+ /**
3
+ * Main execute function for the versions command
4
+ */
5
+ export declare const execute: (runConfig: Config) => Promise<string>;
6
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/commands/versions.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAIH,OAAO,EAAa,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA+PpD;;GAEG;AACH,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAa/D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { execute as link } from './commands/link';
2
+ export { execute as unlink } from './commands/unlink';
3
+ export { execute as tree } from './commands/tree';
4
+ export { execute as updates } from './commands/updates';
5
+ export { execute as versions } from './commands/versions';
6
+ export * from './util/npmOptimizations';
7
+ export * from './util/performanceTracker';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,27 @@
1
+ export declare const isNpmInstallNeeded: (storage: any) => Promise<{
2
+ needed: boolean;
3
+ reason: string;
4
+ }>;
5
+ export declare const optimizedNpmInstall: (options?: {
6
+ skipIfNotNeeded?: boolean;
7
+ useCache?: boolean;
8
+ verbose?: boolean;
9
+ }) => Promise<{
10
+ duration: number;
11
+ skipped: boolean;
12
+ reason: string;
13
+ }>;
14
+ export declare const tryNpmCi: () => Promise<{
15
+ success: boolean;
16
+ duration?: number;
17
+ }>;
18
+ export declare const smartNpmInstall: (options?: {
19
+ skipIfNotNeeded?: boolean;
20
+ preferCi?: boolean;
21
+ verbose?: boolean;
22
+ }) => Promise<{
23
+ duration: number;
24
+ method: string;
25
+ skipped: boolean;
26
+ }>;
27
+ //# sourceMappingURL=npmOptimizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npmOptimizations.d.ts","sourceRoot":"","sources":["../../../src/util/npmOptimizations.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,GAAU,SAAS,GAAG,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwClG,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAAU,UAAS;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAqDtE,CAAC;AAGF,eAAO,MAAM,QAAQ,QAAa,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAwBhF,CAAC;AAGF,eAAO,MAAM,eAAe,GAAU,UAAS;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAqCtE,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { ExecutionMetrics } from '@eldrforge/tree-execution';
2
+ /**
3
+ * PerformanceTracker collects and analyzes performance metrics
4
+ */
5
+ export declare class PerformanceTracker {
6
+ private startTime;
7
+ private packageStartTimes;
8
+ private packageEndTimes;
9
+ private concurrencyHistory;
10
+ constructor();
11
+ /**
12
+ * Record package start
13
+ */
14
+ recordPackageStart(packageName: string): void;
15
+ /**
16
+ * Record package end
17
+ */
18
+ recordPackageEnd(packageName: string): void;
19
+ /**
20
+ * Record concurrency level
21
+ */
22
+ recordConcurrency(level: number): void;
23
+ /**
24
+ * Calculate comprehensive metrics
25
+ */
26
+ calculateMetrics(_maxConcurrency: number): ExecutionMetrics;
27
+ /**
28
+ * Get package durations
29
+ */
30
+ private getPackageDurations;
31
+ /**
32
+ * Get efficiency metrics
33
+ */
34
+ getEfficiency(maxConcurrency: number): {
35
+ utilization: number;
36
+ efficiency: number;
37
+ parallelEfficiency: number;
38
+ };
39
+ /**
40
+ * Generate performance report
41
+ */
42
+ generateReport(maxConcurrency: number): string;
43
+ private formatDuration;
44
+ }
45
+ //# sourceMappingURL=performanceTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performanceTracker.d.ts","sourceRoot":"","sources":["../../../src/util/performanceTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;GAEG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,kBAAkB,CAAgB;;IAM1C;;OAEG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACH,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB;IA6B3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG;QACnC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;KAC9B;IAwBD;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAoD9C,OAAO,CAAC,cAAc;CAczB"}
@@ -0,0 +1,91 @@
1
+ export interface BranchStatus {
2
+ name: string;
3
+ isOnExpectedBranch: boolean;
4
+ expectedBranch?: string;
5
+ ahead: number;
6
+ behind: number;
7
+ hasUnpushedCommits: boolean;
8
+ needsSync: boolean;
9
+ remoteExists: boolean;
10
+ hasMergeConflicts?: boolean;
11
+ conflictsWith?: string;
12
+ hasOpenPR?: boolean;
13
+ prUrl?: string;
14
+ prNumber?: number;
15
+ }
16
+ export interface VersionStatus {
17
+ version: string;
18
+ isValid: boolean;
19
+ issue?: string;
20
+ fix?: string;
21
+ }
22
+ export interface TargetBranchSyncStatus {
23
+ targetBranch: string;
24
+ localExists: boolean;
25
+ remoteExists: boolean;
26
+ localSha?: string;
27
+ remoteSha?: string;
28
+ exactMatch: boolean;
29
+ canFastForward: boolean;
30
+ needsReset: boolean;
31
+ error?: string;
32
+ }
33
+ export interface PackageBranchAudit {
34
+ packageName: string;
35
+ path: string;
36
+ status: BranchStatus;
37
+ versionStatus?: VersionStatus;
38
+ targetBranchSync?: TargetBranchSyncStatus;
39
+ issues: string[];
40
+ fixes: string[];
41
+ }
42
+ export interface BranchAuditResult {
43
+ totalPackages: number;
44
+ goodPackages: number;
45
+ issuesFound: number;
46
+ versionIssues: number;
47
+ targetBranchSyncIssues: number;
48
+ audits: PackageBranchAudit[];
49
+ }
50
+ /**
51
+ * Check the branch status for a package
52
+ */
53
+ export declare function checkBranchStatus(packagePath: string, expectedBranch?: string, targetBranch?: string, checkPR?: boolean, options?: {
54
+ skipFetch?: boolean;
55
+ }): Promise<BranchStatus>;
56
+ /**
57
+ * Check if target branch (e.g., main) is exactly in sync with remote
58
+ */
59
+ export declare function checkTargetBranchSync(packagePath: string, targetBranch?: string, options?: {
60
+ skipFetch?: boolean;
61
+ }): Promise<TargetBranchSyncStatus>;
62
+ /**
63
+ * Audit branch state across multiple packages
64
+ */
65
+ export declare function auditBranchState(packages: Array<{
66
+ name: string;
67
+ path: string;
68
+ }>, expectedBranch?: string, options?: {
69
+ targetBranch?: string;
70
+ checkPR?: boolean;
71
+ checkConflicts?: boolean;
72
+ checkVersions?: boolean;
73
+ concurrency?: number;
74
+ }): Promise<BranchAuditResult>;
75
+ /**
76
+ * Format audit results for display with detailed fix instructions
77
+ */
78
+ export declare function formatAuditResults(result: BranchAuditResult): string;
79
+ /**
80
+ * Auto-sync a package's branch with remote
81
+ */
82
+ export declare function autoSyncBranch(packagePath: string, options?: {
83
+ push?: boolean;
84
+ pull?: boolean;
85
+ checkout?: string;
86
+ }): Promise<{
87
+ success: boolean;
88
+ actions: string[];
89
+ error?: string;
90
+ }>;
91
+ //# sourceMappingURL=branchState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branchState.d.ts","sourceRoot":"","sources":["../../../src/utils/branchState.ts"],"names":[],"mappings":"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"}
package/guide/index.md ADDED
@@ -0,0 +1,37 @@
1
+ # @eldrforge/commands-tree - Agentic Guide
2
+
3
+ ## Purpose
4
+
5
+ Tree and dependency management commands for kodrdriv monorepo workflows.
6
+
7
+ ## Commands
8
+
9
+ - `link` - Link workspace packages
10
+ - `unlink` - Restore registry versions
11
+ - `tree` - Dependency tree traversal
12
+ - `updates` - Update scoped dependencies
13
+ - `versions` - Manage version patterns
14
+
15
+ ## Dependencies
16
+
17
+ - @eldrforge/core - Shared infrastructure
18
+ - @eldrforge/commands-git - Git commands (for tree commit)
19
+ - @eldrforge/tree-core - Dependency graph analysis
20
+ - @eldrforge/tree-execution - Parallel execution engine
21
+
22
+ ## Package Structure
23
+
24
+ ```
25
+ src/
26
+ ├── commands/
27
+ │ ├── link.ts # Package linking
28
+ │ ├── unlink.ts # Package unlinking
29
+ │ ├── tree.ts # Tree traversal
30
+ │ ├── updates.ts # Dependency updates
31
+ │ └── versions.ts # Version management
32
+ ├── util/
33
+ │ ├── npmOptimizations.ts
34
+ │ └── performanceTracker.ts
35
+ └── index.ts
36
+ ```
37
+
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@eldrforge/commands-tree",
3
+ "version": "0.1.0",
4
+ "description": "Tree and dependency management commands for kodrdriv",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "guide"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/grunnverk/commands-tree.git"
20
+ },
21
+ "scripts": {
22
+ "build": "npm run lint && tsc --noEmit && vite build",
23
+ "dev": "vite",
24
+ "watch": "vite build --watch",
25
+ "test": "vitest run --coverage",
26
+ "lint": "eslint . --ext .ts",
27
+ "lint:fix": "eslint . --ext .ts --fix",
28
+ "clean": "rm -rf dist",
29
+ "precommit": "npm run clean && npm run build && npm run lint && npm run test",
30
+ "prepublishOnly": "npm run clean && npm run lint && npm run build && npm run test"
31
+ },
32
+ "keywords": [
33
+ "kodrdriv",
34
+ "tree",
35
+ "monorepo",
36
+ "dependencies",
37
+ "commands"
38
+ ],
39
+ "author": "Tim O'Brien <tobrien@discursive.com>",
40
+ "license": "Apache-2.0",
41
+ "dependencies": {
42
+ "@eldrforge/core": "^0.1.0",
43
+ "@eldrforge/commands-git": "^0.1.0",
44
+ "@eldrforge/tree-core": "^0.1.5",
45
+ "@eldrforge/tree-execution": "^0.1.5",
46
+ "@eldrforge/git-tools": "^0.1.16",
47
+ "@eldrforge/github-tools": "^0.1.18",
48
+ "@eldrforge/shared": "^0.1.6"
49
+ },
50
+ "devDependencies": {
51
+ "@eslint/eslintrc": "^3.3.1",
52
+ "@eslint/js": "^9.33.0",
53
+ "@swc/core": "^1.13.3",
54
+ "@types/node": "^25.0.3",
55
+ "@typescript-eslint/eslint-plugin": "^8.39.1",
56
+ "@typescript-eslint/parser": "^8.39.1",
57
+ "@vitest/coverage-v8": "^4.0.13",
58
+ "esbuild": "0.25.10",
59
+ "eslint": "^9.33.0",
60
+ "eslint-plugin-import": "^2.32.0",
61
+ "globals": "^16.3.0",
62
+ "mockdate": "^3.0.5",
63
+ "typescript": "^5.9.2",
64
+ "vite": "^7.1.2",
65
+ "vite-plugin-dts": "^4.3.0",
66
+ "vite-plugin-node": "^7.0.0",
67
+ "vitest": "^4.0.13"
68
+ }
69
+ }
70
+