vde-layout 0.0.1 → 0.0.2

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 (79) hide show
  1. package/README.md +17 -0
  2. package/bin/vde-layout +9 -1
  3. package/dist/index.js +1455 -20
  4. package/dist/index.js.map +1 -1
  5. package/package.json +23 -11
  6. package/dist/cli.d.ts +0 -27
  7. package/dist/cli.d.ts.map +0 -1
  8. package/dist/cli.js +0 -138
  9. package/dist/cli.js.map +0 -1
  10. package/dist/config/loader.d.ts +0 -14
  11. package/dist/config/loader.d.ts.map +0 -1
  12. package/dist/config/loader.js +0 -117
  13. package/dist/config/loader.js.map +0 -1
  14. package/dist/config/validator.d.ts +0 -3
  15. package/dist/config/validator.d.ts.map +0 -1
  16. package/dist/config/validator.js +0 -168
  17. package/dist/config/validator.js.map +0 -1
  18. package/dist/executor/dry-run-executor.d.ts +0 -16
  19. package/dist/executor/dry-run-executor.d.ts.map +0 -1
  20. package/dist/executor/dry-run-executor.js +0 -45
  21. package/dist/executor/dry-run-executor.js.map +0 -1
  22. package/dist/executor/index.d.ts +0 -6
  23. package/dist/executor/index.d.ts.map +0 -1
  24. package/dist/executor/index.js +0 -10
  25. package/dist/executor/index.js.map +0 -1
  26. package/dist/executor/mock-executor.d.ts +0 -21
  27. package/dist/executor/mock-executor.d.ts.map +0 -1
  28. package/dist/executor/mock-executor.js +0 -73
  29. package/dist/executor/mock-executor.js.map +0 -1
  30. package/dist/executor/real-executor.d.ts +0 -16
  31. package/dist/executor/real-executor.d.ts.map +0 -1
  32. package/dist/executor/real-executor.js +0 -58
  33. package/dist/executor/real-executor.js.map +0 -1
  34. package/dist/index.d.ts +0 -3
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/interfaces/command-executor.d.ts +0 -7
  37. package/dist/interfaces/command-executor.d.ts.map +0 -1
  38. package/dist/interfaces/command-executor.js +0 -3
  39. package/dist/interfaces/command-executor.js.map +0 -1
  40. package/dist/interfaces/index.d.ts +0 -31
  41. package/dist/interfaces/index.d.ts.map +0 -1
  42. package/dist/interfaces/index.js +0 -3
  43. package/dist/interfaces/index.js.map +0 -1
  44. package/dist/layout/engine.d.ts +0 -18
  45. package/dist/layout/engine.d.ts.map +0 -1
  46. package/dist/layout/engine.js +0 -174
  47. package/dist/layout/engine.js.map +0 -1
  48. package/dist/layout/preset.d.ts +0 -13
  49. package/dist/layout/preset.d.ts.map +0 -1
  50. package/dist/layout/preset.js +0 -55
  51. package/dist/layout/preset.js.map +0 -1
  52. package/dist/models/schema.d.ts +0 -144
  53. package/dist/models/schema.d.ts.map +0 -1
  54. package/dist/models/schema.js +0 -95
  55. package/dist/models/schema.js.map +0 -1
  56. package/dist/models/types.d.ts +0 -34
  57. package/dist/models/types.d.ts.map +0 -1
  58. package/dist/models/types.js +0 -16
  59. package/dist/models/types.js.map +0 -1
  60. package/dist/tmux/commands.d.ts +0 -14
  61. package/dist/tmux/commands.d.ts.map +0 -1
  62. package/dist/tmux/commands.js +0 -59
  63. package/dist/tmux/commands.js.map +0 -1
  64. package/dist/tmux/executor.d.ts +0 -20
  65. package/dist/tmux/executor.d.ts.map +0 -1
  66. package/dist/tmux/executor.js +0 -64
  67. package/dist/tmux/executor.js.map +0 -1
  68. package/dist/utils/errors.d.ts +0 -36
  69. package/dist/utils/errors.d.ts.map +0 -1
  70. package/dist/utils/errors.js +0 -131
  71. package/dist/utils/errors.js.map +0 -1
  72. package/dist/utils/logger.d.ts +0 -25
  73. package/dist/utils/logger.d.ts.map +0 -1
  74. package/dist/utils/logger.js +0 -67
  75. package/dist/utils/logger.js.map +0 -1
  76. package/dist/utils/ratio.d.ts +0 -3
  77. package/dist/utils/ratio.d.ts.map +0 -1
  78. package/dist/utils/ratio.js +0 -44
  79. package/dist/utils/ratio.js.map +0 -1
@@ -1,31 +0,0 @@
1
- import type { Preset, PresetInfo } from "../models/types";
2
- export interface IPresetManager {
3
- loadConfig(): Promise<void>;
4
- getPreset(name: string): Preset;
5
- getDefaultPreset(): Preset;
6
- listPresets(): PresetInfo[];
7
- }
8
- export interface IConfigLoader {
9
- loadYAML(): Promise<string>;
10
- }
11
- export interface ITmuxExecutor {
12
- verifyTmuxEnvironment(): Promise<void>;
13
- execute(command: string | string[]): Promise<string>;
14
- getCurrentSessionName(): Promise<string>;
15
- isInTmuxSession(): boolean;
16
- getCommandString(args: string[]): string;
17
- }
18
- export interface ITmuxCommandGenerator {
19
- newWindow(name?: string): string[];
20
- splitWindow(direction: "horizontal" | "vertical", targetPane?: string, percentage?: number): string[];
21
- sendKeys(paneId: string, command: string): string[];
22
- selectPane(paneId: string): string[];
23
- setPaneTitle(paneId: string, title: string): string[];
24
- changeDirectory(paneId: string, directory: string): string[];
25
- setEnvironment(paneId: string, env: Record<string, string>): string[][];
26
- }
27
- export interface ILayoutEngine {
28
- createLayout(preset: Preset): Promise<void>;
29
- }
30
- export type { ICommandExecutor } from "./command-executor";
31
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAKzD,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,gBAAgB,IAAI,MAAM,CAAA;IAC1B,WAAW,IAAI,UAAU,EAAE,CAAA;CAC5B;AAKD,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC5B;AAKD,MAAM,WAAW,aAAa;IAC5B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,eAAe,IAAI,OAAO,CAAA;IAC1B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;CACzC;AAKD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAClC,WAAW,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACrG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACnD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACpC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACrD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAAA;CACxE;AAKD,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import { type TmuxExecutorOptions } from "../tmux/executor";
2
- import type { Preset } from "../models/types";
3
- import type { ILayoutEngine, ITmuxExecutor, ITmuxCommandGenerator, ICommandExecutor } from "../interfaces";
4
- export interface LayoutEngineOptions extends Omit<TmuxExecutorOptions, "executor"> {
5
- executor?: ITmuxExecutor | ICommandExecutor;
6
- commandGenerator?: ITmuxCommandGenerator;
7
- }
8
- export declare class LayoutEngine implements ILayoutEngine {
9
- private readonly executor;
10
- private readonly commandGenerator;
11
- constructor(options?: LayoutEngineOptions);
12
- createLayout(preset: Preset): Promise<void>;
13
- private createLayoutRecursive;
14
- private applyPaneOptions;
15
- private getCurrentPaneId;
16
- private getAllPaneIds;
17
- }
18
- //# sourceMappingURL=engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/layout/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEzE,OAAO,KAAK,EAAE,MAAM,EAA8B,MAAM,iBAAiB,CAAA;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAE1G,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAChF,QAAQ,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAA;IAC3C,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;CACzC;AAYD,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;gBAE5C,OAAO,GAAE,mBAAwB;IA2BvC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDnC,qBAAqB;YA6GrB,gBAAgB;YAqChB,gBAAgB;YAYhB,aAAa;CAU5B"}
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LayoutEngine = void 0;
4
- const executor_1 = require("../tmux/executor");
5
- const commands_1 = require("../tmux/commands");
6
- const ratio_1 = require("../utils/ratio");
7
- class LayoutEngine {
8
- executor;
9
- commandGenerator;
10
- constructor(options = {}) {
11
- if (options.executor && "verifyTmuxEnvironment" in options.executor) {
12
- this.executor = options.executor;
13
- }
14
- else if (options.executor) {
15
- const executorOptions = {
16
- verbose: options.verbose,
17
- dryRun: options.dryRun,
18
- executor: options.executor,
19
- };
20
- this.executor = new executor_1.TmuxExecutor(executorOptions);
21
- }
22
- else {
23
- const executorOptions = {
24
- verbose: options.verbose,
25
- dryRun: options.dryRun,
26
- };
27
- this.executor = new executor_1.TmuxExecutor(executorOptions);
28
- }
29
- this.commandGenerator = options.commandGenerator || new commands_1.TmuxCommandGenerator();
30
- }
31
- async createLayout(preset) {
32
- await this.executor.verifyTmuxEnvironment();
33
- const windowName = preset.name || "vde-layout";
34
- await this.executor.execute(this.commandGenerator.newWindow(windowName));
35
- const initialPaneId = await this.getCurrentPaneId();
36
- let paneInfos;
37
- if (preset.layout) {
38
- paneInfos = await this.createLayoutRecursive(preset.layout, initialPaneId);
39
- }
40
- else {
41
- const terminalPane = {
42
- name: preset.name,
43
- command: preset.command,
44
- };
45
- paneInfos = [
46
- {
47
- pane: terminalPane,
48
- paneId: initialPaneId,
49
- },
50
- ];
51
- }
52
- for (const paneInfo of paneInfos) {
53
- await this.applyPaneOptions(paneInfo);
54
- }
55
- const focusedPane = paneInfos.find((info) => {
56
- const terminalPane = info.pane;
57
- return terminalPane.focus === true;
58
- });
59
- if (focusedPane !== undefined) {
60
- await this.executor.execute(this.commandGenerator.selectPane(focusedPane.paneId));
61
- }
62
- }
63
- async createLayoutRecursive(layout, parentPaneId, _isFirst = true) {
64
- const isLayout = (l) => {
65
- return (typeof l === "object" &&
66
- l !== null &&
67
- "type" in l &&
68
- "panes" in l &&
69
- "ratio" in l &&
70
- (l.type === "horizontal" || l.type === "vertical"));
71
- };
72
- if (!isLayout(layout)) {
73
- return [
74
- {
75
- pane: layout,
76
- paneId: parentPaneId,
77
- },
78
- ];
79
- }
80
- const paneInfos = [];
81
- const currentPaneId = parentPaneId;
82
- let paneIndex = 0;
83
- if (parentPaneId && parentPaneId.startsWith("%")) {
84
- paneIndex = parseInt(parentPaneId.slice(1), 10) || 0;
85
- }
86
- const normalizedRatio = (0, ratio_1.normalizeRatio)(layout.ratio ?? []);
87
- const paneIds = [parentPaneId];
88
- for (let i = 1; i < layout.panes.length; i++) {
89
- let percentage;
90
- if (i === 1) {
91
- const firstPaneRatio = normalizedRatio[0];
92
- const totalRatio = normalizedRatio.reduce((sum, r) => sum + r, 0);
93
- const remainingRatiosSum = totalRatio - firstPaneRatio;
94
- percentage = Math.round((remainingRatiosSum / totalRatio) * 100);
95
- }
96
- else {
97
- const currentSpaceRatios = normalizedRatio.slice(i - 1);
98
- const currentSpaceTotal = currentSpaceRatios.reduce((sum, r) => sum + r, 0);
99
- const newPaneRatios = normalizedRatio.slice(i);
100
- const newPaneTotal = newPaneRatios.reduce((sum, r) => sum + r, 0);
101
- percentage = Math.round((newPaneTotal / currentSpaceTotal) * 100);
102
- }
103
- const beforePaneIds = await this.getAllPaneIds();
104
- const targetPaneId = i === 1 ? currentPaneId : paneIds[paneIds.length - 1];
105
- await this.executor.execute(this.commandGenerator.splitWindow(layout.type, targetPaneId, percentage));
106
- const afterPaneIds = await this.getAllPaneIds();
107
- const newPaneId = afterPaneIds.find((id) => !beforePaneIds.includes(id));
108
- if (newPaneId === undefined) {
109
- const fallbackPaneId = `%${paneIndex + i}`;
110
- paneIds.push(fallbackPaneId);
111
- }
112
- else {
113
- paneIds.push(newPaneId);
114
- }
115
- paneIndex++;
116
- }
117
- for (let i = 0; i < layout.panes.length; i++) {
118
- const pane = layout.panes[i];
119
- const paneId = paneIds[i];
120
- const childPaneInfos = await this.createLayoutRecursive(pane, paneId, false);
121
- for (const childInfo of childPaneInfos) {
122
- if (childInfo.paneId && childInfo.paneId.startsWith("%")) {
123
- const childIndex = parseInt(childInfo.paneId.slice(1), 10);
124
- if (!isNaN(childIndex) && childIndex > paneIndex) {
125
- paneIndex = childIndex;
126
- }
127
- }
128
- }
129
- paneInfos.push(...childPaneInfos);
130
- }
131
- return paneInfos;
132
- }
133
- async applyPaneOptions(paneInfo) {
134
- const pane = paneInfo.pane;
135
- const paneId = paneInfo.paneId;
136
- if (pane.cwd !== undefined) {
137
- await this.executor.execute(this.commandGenerator.changeDirectory(paneId, pane.cwd));
138
- }
139
- if (pane.env !== undefined) {
140
- const envCommands = this.commandGenerator.setEnvironment(paneId, pane.env);
141
- for (const command of envCommands) {
142
- await this.executor.execute(command);
143
- }
144
- }
145
- if (pane.name !== undefined) {
146
- await this.executor.execute(this.commandGenerator.setPaneTitle(paneId, pane.name));
147
- }
148
- if (pane.delay !== undefined && pane.delay > 0) {
149
- await new Promise((resolve) => setTimeout(resolve, pane.delay));
150
- }
151
- if (pane.command !== undefined) {
152
- await this.executor.execute(this.commandGenerator.sendKeys(paneId, pane.command));
153
- }
154
- }
155
- async getCurrentPaneId() {
156
- const result = await this.executor.execute(["display-message", "-p", "#{pane_id}"]);
157
- if (!result || typeof result !== "string") {
158
- return "%0";
159
- }
160
- return result.trim() || "%0";
161
- }
162
- async getAllPaneIds() {
163
- const result = await this.executor.execute(["list-panes", "-F", "#{pane_id}"]);
164
- if (!result || typeof result !== "string") {
165
- return ["%0"];
166
- }
167
- return result
168
- .trim()
169
- .split("\n")
170
- .filter((id) => id.trim() !== "");
171
- }
172
- }
173
- exports.LayoutEngine = LayoutEngine;
174
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/layout/engine.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { type ConfigLoaderOptions } from "../config/loader";
2
- import type { Preset, PresetInfo } from "../models/types";
3
- import type { IPresetManager } from "../interfaces";
4
- export declare class PresetManager implements IPresetManager {
5
- private config;
6
- private configLoaderOptions;
7
- constructor(options?: ConfigLoaderOptions);
8
- loadConfig(): Promise<void>;
9
- getPreset(name: string): Preset;
10
- listPresets(): PresetInfo[];
11
- getDefaultPreset(): Preset;
12
- }
13
- //# sourceMappingURL=preset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/layout/preset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAGzE,OAAO,KAAK,EAAU,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMnD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,OAAO,GAAE,mBAAwB;IAQvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmB/B,WAAW,IAAI,UAAU,EAAE;IAkB3B,gBAAgB,IAAI,MAAM;CAkB3B"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PresetManager = void 0;
4
- const loader_1 = require("../config/loader");
5
- const validator_1 = require("../config/validator");
6
- const errors_1 = require("../utils/errors");
7
- class PresetManager {
8
- config = null;
9
- configLoaderOptions;
10
- constructor(options = {}) {
11
- this.configLoaderOptions = options;
12
- }
13
- async loadConfig() {
14
- const loader = new loader_1.ConfigLoader(this.configLoaderOptions);
15
- const yamlContent = await loader.loadYAML();
16
- this.config = (0, validator_1.validateYAML)(yamlContent);
17
- }
18
- getPreset(name) {
19
- if (!this.config) {
20
- throw new errors_1.ConfigError("Configuration not loaded", errors_1.ErrorCodes.CONFIG_NOT_FOUND);
21
- }
22
- const preset = this.config.presets[name];
23
- if (!preset) {
24
- throw new errors_1.ConfigError(`Preset "${name}" not found`, errors_1.ErrorCodes.PRESET_NOT_FOUND, {
25
- availablePresets: Object.keys(this.config.presets),
26
- });
27
- }
28
- return preset;
29
- }
30
- listPresets() {
31
- if (!this.config) {
32
- return [];
33
- }
34
- return Object.entries(this.config.presets).map(([key, preset]) => ({
35
- key,
36
- name: preset.name,
37
- description: preset.description,
38
- }));
39
- }
40
- getDefaultPreset() {
41
- if (!this.config) {
42
- throw new errors_1.ConfigError("Configuration not loaded", errors_1.ErrorCodes.CONFIG_NOT_FOUND);
43
- }
44
- if (this.config.presets.default) {
45
- return this.config.presets.default;
46
- }
47
- const firstKey = Object.keys(this.config.presets)[0];
48
- if (firstKey === undefined) {
49
- throw new errors_1.ConfigError("No presets defined", errors_1.ErrorCodes.PRESET_NOT_FOUND);
50
- }
51
- return this.config.presets[firstKey];
52
- }
53
- }
54
- exports.PresetManager = PresetManager;
55
- //# sourceMappingURL=preset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/layout/preset.ts"],"names":[],"mappings":";;;AAAA,6CAAyE;AACzE,mDAAkD;AAClD,4CAAyD;AAQzD,MAAa,aAAa;IAChB,MAAM,GAAkB,IAAI,CAAA;IAC5B,mBAAmB,CAAqB;IAEhD,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAA;IACpC,CAAC;IAMD,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACzD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAA,wBAAY,EAAC,WAAW,CAAC,CAAA;IACzC,CAAC;IAQD,SAAS,CAAC,IAAY;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,oBAAW,CAAC,0BAA0B,EAAE,mBAAU,CAAC,gBAAgB,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,oBAAW,CAAC,WAAW,IAAI,aAAa,EAAE,mBAAU,CAAC,gBAAgB,EAAE;gBAC/E,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aACnD,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAMD,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC,CAAA;IACL,CAAC;IAQD,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,oBAAW,CAAC,0BAA0B,EAAE,mBAAU,CAAC,gBAAgB,CAAC,CAAA;QAChF,CAAC;QAGD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;QACpC,CAAC;QAGD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,oBAAW,CAAC,oBAAoB,EAAE,mBAAU,CAAC,gBAAgB,CAAC,CAAA;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAA;IACvC,CAAC;CACF;AA/ED,sCA+EC"}
@@ -1,144 +0,0 @@
1
- import { z } from "zod";
2
- export declare const PaneSchema: z.ZodType<unknown>;
3
- export declare const LayoutSchema: z.ZodEffects<z.ZodObject<{
4
- type: z.ZodEnum<["horizontal", "vertical"]>;
5
- ratio: z.ZodArray<z.ZodNumber, "many">;
6
- panes: z.ZodArray<z.ZodType<unknown, z.ZodTypeDef, unknown>, "many">;
7
- }, "strip", z.ZodTypeAny, {
8
- type: "horizontal" | "vertical";
9
- ratio: number[];
10
- panes: unknown[];
11
- }, {
12
- type: "horizontal" | "vertical";
13
- ratio: number[];
14
- panes: unknown[];
15
- }>, {
16
- type: "horizontal" | "vertical";
17
- ratio: number[];
18
- panes: unknown[];
19
- }, {
20
- type: "horizontal" | "vertical";
21
- ratio: number[];
22
- panes: unknown[];
23
- }>;
24
- export declare const PresetSchema: z.ZodObject<{
25
- name: z.ZodString;
26
- description: z.ZodOptional<z.ZodString>;
27
- layout: z.ZodOptional<z.ZodEffects<z.ZodObject<{
28
- type: z.ZodEnum<["horizontal", "vertical"]>;
29
- ratio: z.ZodArray<z.ZodNumber, "many">;
30
- panes: z.ZodArray<z.ZodType<unknown, z.ZodTypeDef, unknown>, "many">;
31
- }, "strip", z.ZodTypeAny, {
32
- type: "horizontal" | "vertical";
33
- ratio: number[];
34
- panes: unknown[];
35
- }, {
36
- type: "horizontal" | "vertical";
37
- ratio: number[];
38
- panes: unknown[];
39
- }>, {
40
- type: "horizontal" | "vertical";
41
- ratio: number[];
42
- panes: unknown[];
43
- }, {
44
- type: "horizontal" | "vertical";
45
- ratio: number[];
46
- panes: unknown[];
47
- }>>;
48
- command: z.ZodOptional<z.ZodString>;
49
- }, "strip", z.ZodTypeAny, {
50
- name: string;
51
- command?: string | undefined;
52
- description?: string | undefined;
53
- layout?: {
54
- type: "horizontal" | "vertical";
55
- ratio: number[];
56
- panes: unknown[];
57
- } | undefined;
58
- }, {
59
- name: string;
60
- command?: string | undefined;
61
- description?: string | undefined;
62
- layout?: {
63
- type: "horizontal" | "vertical";
64
- ratio: number[];
65
- panes: unknown[];
66
- } | undefined;
67
- }>;
68
- export declare const ConfigSchema: z.ZodObject<{
69
- presets: z.ZodRecord<z.ZodString, z.ZodObject<{
70
- name: z.ZodString;
71
- description: z.ZodOptional<z.ZodString>;
72
- layout: z.ZodOptional<z.ZodEffects<z.ZodObject<{
73
- type: z.ZodEnum<["horizontal", "vertical"]>;
74
- ratio: z.ZodArray<z.ZodNumber, "many">;
75
- panes: z.ZodArray<z.ZodType<unknown, z.ZodTypeDef, unknown>, "many">;
76
- }, "strip", z.ZodTypeAny, {
77
- type: "horizontal" | "vertical";
78
- ratio: number[];
79
- panes: unknown[];
80
- }, {
81
- type: "horizontal" | "vertical";
82
- ratio: number[];
83
- panes: unknown[];
84
- }>, {
85
- type: "horizontal" | "vertical";
86
- ratio: number[];
87
- panes: unknown[];
88
- }, {
89
- type: "horizontal" | "vertical";
90
- ratio: number[];
91
- panes: unknown[];
92
- }>>;
93
- command: z.ZodOptional<z.ZodString>;
94
- }, "strip", z.ZodTypeAny, {
95
- name: string;
96
- command?: string | undefined;
97
- description?: string | undefined;
98
- layout?: {
99
- type: "horizontal" | "vertical";
100
- ratio: number[];
101
- panes: unknown[];
102
- } | undefined;
103
- }, {
104
- name: string;
105
- command?: string | undefined;
106
- description?: string | undefined;
107
- layout?: {
108
- type: "horizontal" | "vertical";
109
- ratio: number[];
110
- panes: unknown[];
111
- } | undefined;
112
- }>>;
113
- }, "strip", z.ZodTypeAny, {
114
- presets: Record<string, {
115
- name: string;
116
- command?: string | undefined;
117
- description?: string | undefined;
118
- layout?: {
119
- type: "horizontal" | "vertical";
120
- ratio: number[];
121
- panes: unknown[];
122
- } | undefined;
123
- }>;
124
- }, {
125
- presets: Record<string, {
126
- name: string;
127
- command?: string | undefined;
128
- description?: string | undefined;
129
- layout?: {
130
- type: "horizontal" | "vertical";
131
- ratio: number[];
132
- panes: unknown[];
133
- } | undefined;
134
- }>;
135
- }>;
136
- export interface ValidationResult<T> {
137
- success: boolean;
138
- data?: T;
139
- error?: string;
140
- }
141
- export declare function validateConfig(data: unknown): ValidationResult<z.infer<typeof ConfigSchema>>;
142
- export declare function validatePreset(data: unknown): ValidationResult<z.infer<typeof PresetSchema>>;
143
- export declare function validatePane(data: unknown): ValidationResult<z.infer<typeof PaneSchema>>;
144
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/models/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8BvB,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAgE,CAAA;AAG1G,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;EAQrB,CAAA;AAGJ,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKvB,CAAA;AAGF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEvB,CAAA;AAGF,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAoBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC,CAU5F;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC,CAU5F;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC,CAUxF"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfigSchema = exports.PresetSchema = exports.LayoutSchema = exports.PaneSchema = void 0;
4
- exports.validateConfig = validateConfig;
5
- exports.validatePreset = validatePreset;
6
- exports.validatePane = validatePane;
7
- const zod_1 = require("zod");
8
- const TerminalPaneSchema = zod_1.z
9
- .object({
10
- name: zod_1.z.string().min(1),
11
- command: zod_1.z.string().optional(),
12
- cwd: zod_1.z.string().optional(),
13
- env: zod_1.z.record(zod_1.z.string()).optional(),
14
- delay: zod_1.z.number().int().positive().optional(),
15
- title: zod_1.z.string().optional(),
16
- focus: zod_1.z.boolean().optional(),
17
- })
18
- .strict();
19
- const SplitPaneSchema = zod_1.z.lazy(() => zod_1.z
20
- .object({
21
- type: zod_1.z.enum(["horizontal", "vertical"]),
22
- ratio: zod_1.z.array(zod_1.z.number().positive()).min(1),
23
- panes: zod_1.z.array(exports.PaneSchema).min(1),
24
- })
25
- .strict()
26
- .refine((data) => data.ratio.length === data.panes.length, {
27
- message: "Number of elements in ratio array does not match number of elements in panes array",
28
- }));
29
- exports.PaneSchema = zod_1.z.lazy(() => zod_1.z.union([SplitPaneSchema, TerminalPaneSchema]));
30
- exports.LayoutSchema = zod_1.z
31
- .object({
32
- type: zod_1.z.enum(["horizontal", "vertical"]),
33
- ratio: zod_1.z.array(zod_1.z.number().positive()).min(1),
34
- panes: zod_1.z.array(exports.PaneSchema).min(1),
35
- })
36
- .refine((data) => data.ratio.length === data.panes.length, {
37
- message: "Number of elements in ratio array does not match number of elements in panes array",
38
- });
39
- exports.PresetSchema = zod_1.z.object({
40
- name: zod_1.z.string().min(1),
41
- description: zod_1.z.string().optional(),
42
- layout: exports.LayoutSchema.optional(),
43
- command: zod_1.z.string().optional(),
44
- });
45
- exports.ConfigSchema = zod_1.z.object({
46
- presets: zod_1.z.record(exports.PresetSchema),
47
- });
48
- function formatValidationError(error) {
49
- const messages = error.errors.map((e) => {
50
- const path = e.path.join(".");
51
- const message = e.message;
52
- if (path === "layout.panes" && message.includes("at least 2 element")) {
53
- return `${path}: panes array must have at least 2 elements`;
54
- }
55
- return `${path}: ${message}`;
56
- });
57
- return messages.join("\n");
58
- }
59
- function validateConfig(data) {
60
- try {
61
- const parsed = exports.ConfigSchema.parse(data);
62
- return { success: true, data: parsed };
63
- }
64
- catch (error) {
65
- if (error instanceof zod_1.z.ZodError) {
66
- return { success: false, error: formatValidationError(error) };
67
- }
68
- return { success: false, error: String(error) };
69
- }
70
- }
71
- function validatePreset(data) {
72
- try {
73
- const parsed = exports.PresetSchema.parse(data);
74
- return { success: true, data: parsed };
75
- }
76
- catch (error) {
77
- if (error instanceof zod_1.z.ZodError) {
78
- return { success: false, error: formatValidationError(error) };
79
- }
80
- return { success: false, error: String(error) };
81
- }
82
- }
83
- function validatePane(data) {
84
- try {
85
- const parsed = exports.PaneSchema.parse(data);
86
- return { success: true, data: parsed };
87
- }
88
- catch (error) {
89
- if (error instanceof zod_1.z.ZodError) {
90
- return { success: false, error: formatValidationError(error) };
91
- }
92
- return { success: false, error: String(error) };
93
- }
94
- }
95
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/models/schema.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { z } from "zod";
2
- import { ConfigSchema, PresetSchema, LayoutSchema, PaneSchema } from "./schema";
3
- export type Config = z.infer<typeof ConfigSchema>;
4
- export type Preset = z.infer<typeof PresetSchema>;
5
- export type Layout = z.infer<typeof LayoutSchema>;
6
- export type Pane = z.infer<typeof PaneSchema>;
7
- export type SplitPane = Pane & {
8
- type: "horizontal" | "vertical";
9
- ratio: number[];
10
- panes: Pane[];
11
- };
12
- export type TerminalPane = Pane & {
13
- name: string;
14
- command?: string;
15
- cwd?: string;
16
- env?: Record<string, string>;
17
- delay?: number;
18
- title?: string;
19
- focus?: boolean;
20
- };
21
- export declare function isSplitPane(pane: unknown): pane is SplitPane;
22
- export declare function isTerminalPane(pane: unknown): pane is TerminalPane;
23
- export interface CLIOptions {
24
- preset?: string;
25
- list?: boolean;
26
- dryRun?: boolean;
27
- verbose?: boolean;
28
- }
29
- export interface PresetInfo {
30
- key: string;
31
- name: string;
32
- description?: string;
33
- }
34
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG/E,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAG7C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG;IAC7B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAA;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,IAAI,EAAE,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAS5D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAElE;AAGD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAGD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSplitPane = isSplitPane;
4
- exports.isTerminalPane = isTerminalPane;
5
- function isSplitPane(pane) {
6
- return (typeof pane === "object" &&
7
- pane !== null &&
8
- "type" in pane &&
9
- "panes" in pane &&
10
- "ratio" in pane &&
11
- (pane.type === "horizontal" || pane.type === "vertical"));
12
- }
13
- function isTerminalPane(pane) {
14
- return typeof pane === "object" && pane !== null && "name" in pane && !("panes" in pane);
15
- }
16
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":";;AA2BA,kCASC;AAED,wCAEC;AAbD,SAAgB,WAAW,CAAC,IAAa;IACvC,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,IAAI;QACf,OAAO,IAAI,IAAI;QACf,CAAE,IAAY,CAAC,IAAI,KAAK,YAAY,IAAK,IAAY,CAAC,IAAI,KAAK,UAAU,CAAC,CAC3E,CAAA;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,IAAa;IAC1C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;AAC1F,CAAC"}