dev-cockpit 0.1.0 → 0.2.1
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/README.md +64 -29
- package/bin/dev-cockpit.mjs +26 -4
- package/dist/actions/builtin.d.ts +25 -0
- package/dist/actions/builtin.d.ts.map +1 -0
- package/dist/actions/dispatch.d.ts +21 -0
- package/dist/actions/dispatch.d.ts.map +1 -0
- package/dist/actions/registry.d.ts +11 -0
- package/dist/actions/registry.d.ts.map +1 -0
- package/dist/actions/types.d.ts +76 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/buildCli.d.ts.map +1 -1
- package/dist/chunk-6XGHLLYT.js +46 -0
- package/dist/chunk-6XGHLLYT.js.map +7 -0
- package/dist/chunk-Q6677JQF.js +32609 -0
- package/dist/chunk-Q6677JQF.js.map +7 -0
- package/dist/chunk-VN6UILQW.js +1460 -0
- package/dist/chunk-VN6UILQW.js.map +7 -0
- package/dist/cockpit/Cockpit.d.ts +6 -0
- package/dist/cockpit/Cockpit.d.ts.map +1 -1
- package/dist/cockpit/Footer.d.ts +6 -4
- package/dist/cockpit/Footer.d.ts.map +1 -1
- package/dist/cockpit/TabBar.d.ts.map +1 -1
- package/dist/cockpit/hooks/useGlobalKeys.d.ts +15 -15
- package/dist/cockpit/hooks/useGlobalKeys.d.ts.map +1 -1
- package/dist/cockpit/hooks/useTerminalWidth.d.ts +12 -0
- package/dist/cockpit/hooks/useTerminalWidth.d.ts.map +1 -0
- package/dist/cockpit/panes/CommandModal.d.ts +18 -0
- package/dist/cockpit/panes/CommandModal.d.ts.map +1 -0
- package/dist/cockpit/panes/Help.d.ts.map +1 -1
- package/dist/cockpit/panes/Output.d.ts +7 -0
- package/dist/cockpit/panes/Output.d.ts.map +1 -1
- package/dist/cockpit/panes/Repos.d.ts.map +1 -1
- package/dist/cockpit/state/store.d.ts +14 -11
- package/dist/cockpit/state/store.d.ts.map +1 -1
- package/dist/cockpit/tab-state.d.ts +12 -0
- package/dist/cockpit/tab-state.d.ts.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/init-config-wizard.d.ts +103 -2
- package/dist/commands/init-config-wizard.d.ts.map +1 -1
- package/dist/commands/init-config.d.ts.map +1 -1
- package/dist/commands/migrate-config.d.ts +18 -0
- package/dist/commands/migrate-config.d.ts.map +1 -0
- package/dist/commands/mount.d.ts +17 -32
- package/dist/commands/mount.d.ts.map +1 -1
- package/dist/core/config.d.ts +73 -5
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/migrations.d.ts +33 -0
- package/dist/core/migrations.d.ts.map +1 -0
- package/dist/core/subprocess.d.ts +20 -0
- package/dist/core/subprocess.d.ts.map +1 -1
- package/dist/core/types.d.ts +36 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/devtools-YXMW6JJ6.js +3720 -0
- package/dist/devtools-YXMW6JJ6.js.map +7 -0
- package/dist/docker/highlights.d.ts +14 -4
- package/dist/docker/highlights.d.ts.map +1 -1
- package/dist/docker/logs.d.ts +3 -2
- package/dist/docker/logs.d.ts.map +1 -1
- package/dist/health/builtin.d.ts.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92837 -53
- package/dist/index.js.map +7 -0
- package/dist/ink.js +38 -1
- package/dist/ink.js.map +7 -0
- package/dist/mount/compose.d.ts +21 -0
- package/dist/mount/compose.d.ts.map +1 -0
- package/dist/mount/discovery.d.ts +35 -0
- package/dist/mount/discovery.d.ts.map +1 -0
- package/dist/mount/git-status.d.ts +12 -0
- package/dist/mount/git-status.d.ts.map +1 -0
- package/dist/mount/manifest.d.ts +16 -0
- package/dist/mount/manifest.d.ts.map +1 -0
- package/dist/mount/symlinks.d.ts +30 -0
- package/dist/mount/symlinks.d.ts.map +1 -0
- package/dist/mount/types.d.ts +60 -0
- package/dist/mount/types.d.ts.map +1 -0
- package/dist/react.js +35 -1
- package/dist/react.js.map +7 -0
- package/dist/runCockpit.d.ts +3 -0
- package/dist/runCockpit.d.ts.map +1 -1
- package/docs/commands.md +29 -16
- package/docs/config-reference.md +115 -11
- package/docs/getting-started.md +9 -6
- package/docs/index.md +5 -1
- package/docs/init-config.md +34 -8
- package/docs/mount.md +198 -25
- package/docs/notifications.md +14 -13
- package/docs/panes.md +36 -15
- package/docs/processes.md +42 -0
- package/package.json +93 -90
- package/dist/buildCli.js +0 -107
- package/dist/cli.js +0 -2
- package/dist/cockpit/Cockpit.js +0 -73
- package/dist/cockpit/Footer.js +0 -33
- package/dist/cockpit/TabBar.js +0 -12
- package/dist/cockpit/help/content.js +0 -22
- package/dist/cockpit/help/loader.js +0 -118
- package/dist/cockpit/help/renderer.js +0 -35
- package/dist/cockpit/help/types.js +0 -1
- package/dist/cockpit/hooks/useCockpitStore.js +0 -5
- package/dist/cockpit/hooks/useGlobalKeys.js +0 -173
- package/dist/cockpit/panes/FilterModal.js +0 -22
- package/dist/cockpit/panes/Health.js +0 -30
- package/dist/cockpit/panes/Help.js +0 -81
- package/dist/cockpit/panes/Output.js +0 -108
- package/dist/cockpit/panes/Repos.js +0 -48
- package/dist/cockpit/panes/SearchModal.js +0 -31
- package/dist/cockpit/state/store.js +0 -111
- package/dist/cockpit/tab-state.js +0 -7
- package/dist/commands/dev.js +0 -158
- package/dist/commands/doctor.js +0 -66
- package/dist/commands/init-config-wizard.js +0 -818
- package/dist/commands/init-config.js +0 -131
- package/dist/commands/mount.js +0 -150
- package/dist/core/config.js +0 -152
- package/dist/core/logger.js +0 -38
- package/dist/core/notifier.js +0 -100
- package/dist/core/paths.js +0 -18
- package/dist/core/subprocess.js +0 -82
- package/dist/core/types.js +0 -1
- package/dist/docker/highlights.js +0 -79
- package/dist/docker/logs.js +0 -172
- package/dist/docker/restart.js +0 -45
- package/dist/docker/stack-trace.js +0 -44
- package/dist/health/builtin.js +0 -144
- package/dist/health/context.js +0 -31
- package/dist/health/notify-resolver.js +0 -28
- package/dist/health/registry.js +0 -64
- package/dist/health/remediations.js +0 -41
- package/dist/health/runner.js +0 -22
- package/dist/health/scheduler.js +0 -107
- package/dist/health/types.js +0 -1
- package/dist/health/useHealth.js +0 -122
- package/dist/lint/reactive.js +0 -131
- package/dist/runCockpit.js +0 -75
- package/dist/watchers/manager.js +0 -239
- package/dist/watchers/path-mapper.js +0 -29
- package/dist/watchers/types.js +0 -9
- package/docs/watchers.md +0 -27
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
export type HealthBuiltinType = 'container-running' | 'port-open' | 'http-ok' | 'file-exists' | 'exec-zero';
|
|
18
18
|
export type HighlightSeverity = 'info' | 'warn' | 'error';
|
|
19
19
|
export type HealthSeverity = 'ok' | 'warn' | 'error';
|
|
20
|
-
export interface
|
|
20
|
+
export interface WizardProcess {
|
|
21
21
|
id: string;
|
|
22
22
|
command: string;
|
|
23
23
|
}
|
|
@@ -65,20 +65,121 @@ export interface WizardRepo {
|
|
|
65
65
|
path: string;
|
|
66
66
|
label?: string;
|
|
67
67
|
}
|
|
68
|
+
export interface WizardAction {
|
|
69
|
+
id: string;
|
|
70
|
+
label: string;
|
|
71
|
+
command: string;
|
|
72
|
+
key?: string;
|
|
73
|
+
scope?: string;
|
|
74
|
+
}
|
|
68
75
|
export interface WizardResult {
|
|
69
76
|
appName: string;
|
|
70
|
-
|
|
77
|
+
processes: WizardProcess[];
|
|
71
78
|
docker?: WizardDocker;
|
|
72
79
|
repos: WizardRepo[];
|
|
73
80
|
highlights: WizardHighlight[];
|
|
74
81
|
health: WizardHealthCheck[];
|
|
82
|
+
actions: WizardAction[];
|
|
75
83
|
notifications: {
|
|
76
84
|
enabled: boolean;
|
|
77
85
|
};
|
|
86
|
+
/** Output lines from profile-contributed steps, rendered under `profile.<appName>:`. */
|
|
87
|
+
profileLines?: string[];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Context handed to a profile-contributed wizard step. Steps prompt the
|
|
91
|
+
* user via `prompts`, optionally read `hints` for smart defaults, see the
|
|
92
|
+
* core wizard answers via `result`, and return YAML lines (already indented
|
|
93
|
+
* relative to the profile namespace) that will be placed under
|
|
94
|
+
* `profile.<appName>:` in the generated cockpit.yaml.
|
|
95
|
+
*/
|
|
96
|
+
export interface WizardStepContext {
|
|
97
|
+
prompts: WizardPrompts;
|
|
98
|
+
hints: ProjectHints;
|
|
99
|
+
workspaceRoot: string;
|
|
100
|
+
/** Snapshot of core-step answers collected so far (read-only). */
|
|
101
|
+
result: Readonly<Omit<WizardResult, 'profileLines'>>;
|
|
102
|
+
}
|
|
103
|
+
export interface WizardStep {
|
|
104
|
+
/** Stable identifier for ordering + tests. */
|
|
105
|
+
id: string;
|
|
106
|
+
/** Heading shown above the step (replaces "Step N of M" framing). */
|
|
107
|
+
title: string;
|
|
108
|
+
/** Optional explanation lines printed before prompts. */
|
|
109
|
+
description?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Run the step. Return YAML lines for the profile namespace — relative,
|
|
112
|
+
* unindented; the renderer indents them under `profile.<appName>:` for you.
|
|
113
|
+
* Return [] to render nothing (e.g. the user skipped the step).
|
|
114
|
+
*/
|
|
115
|
+
run: (ctx: WizardStepContext) => Promise<string[]>;
|
|
78
116
|
}
|
|
79
117
|
export declare function renderWizardYaml(result: WizardResult): string;
|
|
118
|
+
/**
|
|
119
|
+
* Subset of @inquirer/prompts exposed to profile-contributed wizard steps.
|
|
120
|
+
* The full module imports are lazy (deferred until the wizard actually runs)
|
|
121
|
+
* so non-interactive paths don't pay the parse cost.
|
|
122
|
+
*/
|
|
123
|
+
export interface WizardPrompts {
|
|
124
|
+
input: (opts: {
|
|
125
|
+
message: string;
|
|
126
|
+
default?: string;
|
|
127
|
+
validate?: (s: string) => true | string;
|
|
128
|
+
}) => Promise<string>;
|
|
129
|
+
confirm: (opts: {
|
|
130
|
+
message: string;
|
|
131
|
+
default?: boolean;
|
|
132
|
+
}) => Promise<boolean>;
|
|
133
|
+
select: <T extends string>(opts: {
|
|
134
|
+
message: string;
|
|
135
|
+
choices: {
|
|
136
|
+
name: string;
|
|
137
|
+
value: T;
|
|
138
|
+
description?: string;
|
|
139
|
+
}[];
|
|
140
|
+
default?: T;
|
|
141
|
+
}) => Promise<T>;
|
|
142
|
+
checkbox: <T extends string>(opts: {
|
|
143
|
+
message: string;
|
|
144
|
+
choices: {
|
|
145
|
+
name: string;
|
|
146
|
+
value: T;
|
|
147
|
+
description?: string;
|
|
148
|
+
checked?: boolean;
|
|
149
|
+
}[];
|
|
150
|
+
instructions?: string;
|
|
151
|
+
}) => Promise<T[]>;
|
|
152
|
+
number: (opts: {
|
|
153
|
+
message: string;
|
|
154
|
+
default?: number;
|
|
155
|
+
}) => Promise<number | undefined>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Project-level hints sniffed before the wizard runs, exposed to profile
|
|
159
|
+
* steps so they can offer smart defaults (e.g. detect a gitlab remote,
|
|
160
|
+
* pick the right composer.json, etc.).
|
|
161
|
+
*/
|
|
162
|
+
export interface ProjectHints {
|
|
163
|
+
cwd: string;
|
|
164
|
+
appNameDefault: string;
|
|
165
|
+
packageJsonScripts: Record<string, string>;
|
|
166
|
+
composeFile?: string;
|
|
167
|
+
composeServices: string[];
|
|
168
|
+
hasArtisan: boolean;
|
|
169
|
+
hasComposerJson: boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Suggested repo entries auto-derived from the project — npm/pnpm
|
|
172
|
+
* workspaces, the cwd itself, etc. Wizard offers these as pre-checked
|
|
173
|
+
* choices in the Repos step.
|
|
174
|
+
*/
|
|
175
|
+
repoSuggestions: WizardRepo[];
|
|
176
|
+
}
|
|
80
177
|
export declare function runInitWizard(opts: {
|
|
81
178
|
defaultAppName: string;
|
|
82
179
|
cwd?: string;
|
|
180
|
+
/** Profile-contributed steps appended after the core 8 (run between
|
|
181
|
+
* notifications and the final summary). Their YAML output lands under
|
|
182
|
+
* `profile.<appName>:` in the generated cockpit.yaml. */
|
|
183
|
+
profileSteps?: readonly WizardStep[];
|
|
83
184
|
}): Promise<WizardResult>;
|
|
84
185
|
//# sourceMappingURL=init-config-wizard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-config-wizard.d.ts","sourceRoot":"","sources":["../../src/commands/init-config-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,WAAW,GACX,SAAS,GACT,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,iBAAiB,GACzB,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1E,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3E,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1D,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"init-config-wizard.d.ts","sourceRoot":"","sources":["../../src/commands/init-config-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-config.d.ts","sourceRoot":"","sources":["../../src/commands/init-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAoEpF;AAED,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init-config.d.ts","sourceRoot":"","sources":["../../src/commands/init-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAoEpF;AAED,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA6DlC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dev-cockpit migrate-config` — rewrite cockpit.yaml at the current
|
|
3
|
+
* CONFIG_VERSION.
|
|
4
|
+
*
|
|
5
|
+
* Reads the file, runs migrations from whatever version it declares up to
|
|
6
|
+
* CONFIG_VERSION, and writes the migrated form back to disk (with a
|
|
7
|
+
* comment banner noting the upgrade and original version). Idempotent: if
|
|
8
|
+
* the file is already at CONFIG_VERSION, the command prints a confirmation
|
|
9
|
+
* and exits without writing.
|
|
10
|
+
*/
|
|
11
|
+
export interface MigrateConfigOptions {
|
|
12
|
+
/** Path to cockpit.yaml. Default: ./cockpit.yaml */
|
|
13
|
+
config?: string;
|
|
14
|
+
/** Print the migrated YAML instead of writing it. Default: false. */
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function migrateConfigCommand(opts?: MigrateConfigOptions): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=migrate-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-config.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDzF"}
|
package/dist/commands/mount.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `dev-cockpit mount` —
|
|
2
|
+
* `dev-cockpit mount` — bind-mount overlay manager.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
4
|
+
* Three subcommands:
|
|
5
|
+
* mount — interactive picker (or --quiet); writes overlay + manifest;
|
|
6
|
+
* applies profile.mountSymlinks if defined; calls
|
|
7
|
+
* profile.onMountApply hook.
|
|
8
|
+
* mount status — table of active mounts. Each row is auto-enriched with
|
|
9
|
+
* git branch + dirty flag for git host paths, plus any
|
|
10
|
+
* profile.mountStatusEnricher columns.
|
|
11
|
+
* mount clear — calls profile.onMountClear with previous mounts, removes
|
|
12
|
+
* symlinks/overlay/manifest.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* mount clear — remove overlay and manifest
|
|
14
|
+
* Mount candidates merge from two sources keyed by `containerPath`:
|
|
15
|
+
* 1. `config.mounts[]` — explicit (wins on conflict)
|
|
16
|
+
* 2. `profile.mountCandidatesProvider?.()` — discovered programmatically
|
|
18
17
|
*/
|
|
19
18
|
import type { Mount, Profile } from '../core/types.js';
|
|
20
19
|
export interface MountCommandOptions {
|
|
@@ -22,26 +21,12 @@ export interface MountCommandOptions {
|
|
|
22
21
|
profile?: Profile;
|
|
23
22
|
/** Container service name to attach the bind mounts to. */
|
|
24
23
|
service?: string;
|
|
24
|
+
/** Skip the interactive picker; mount everything (minus --exclude). */
|
|
25
|
+
quiet?: boolean;
|
|
26
|
+
/** Names to exclude from the mount set (matched against meta.name). */
|
|
27
|
+
exclude?: string[];
|
|
25
28
|
}
|
|
26
|
-
export interface MountManifest {
|
|
27
|
-
appName: string;
|
|
28
|
-
workspaceRoot: string;
|
|
29
|
-
service: string;
|
|
30
|
-
overlayPath: string;
|
|
31
|
-
mounts: Mount[];
|
|
32
|
-
/** ISO timestamp of last apply. */
|
|
33
|
-
appliedAt: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Merge mount sources, keyed on containerPath. Config entries win over
|
|
37
|
-
* provider-discovered ones for the same container path.
|
|
38
|
-
*/
|
|
39
29
|
export declare function mergeMounts(configMounts: readonly Mount[], providerMounts: readonly Mount[]): Mount[];
|
|
40
|
-
/**
|
|
41
|
-
* Render a Docker compose override YAML for the given service + mounts.
|
|
42
|
-
* Hand-rolled (no `yaml` writer) so the output stays stable + diff-friendly.
|
|
43
|
-
*/
|
|
44
|
-
export declare function renderOverlay(service: string, mounts: readonly Mount[]): string;
|
|
45
30
|
export declare function mountCommand(opts?: MountCommandOptions): Promise<void>;
|
|
46
31
|
export declare function mountStatusCommand(opts?: MountCommandOptions): Promise<void>;
|
|
47
32
|
export declare function mountClearCommand(opts?: MountCommandOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/commands/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAsBvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,WAAW,CACzB,YAAY,EAAE,SAAS,KAAK,EAAE,EAC9B,cAAc,EAAE,SAAS,KAAK,EAAE,GAC/B,KAAK,EAAE,CAKT;AAsFD,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrF"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/** Schema version constant. Bumps reserved for breaking changes (see ADR 0004). */
|
|
3
|
-
export declare const CONFIG_VERSION =
|
|
3
|
+
export declare const CONFIG_VERSION = 2;
|
|
4
4
|
export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
5
5
|
version: z.ZodNumber;
|
|
6
6
|
appName: z.ZodString;
|
|
7
|
-
|
|
7
|
+
processes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
8
8
|
id: z.ZodString;
|
|
9
9
|
label: z.ZodOptional<z.ZodString>;
|
|
10
10
|
command: z.ZodString;
|
|
@@ -203,12 +203,52 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
203
203
|
mounts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
204
204
|
hostPath: z.ZodString;
|
|
205
205
|
containerPath: z.ZodString;
|
|
206
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
206
207
|
}, "strip", z.ZodTypeAny, {
|
|
207
208
|
hostPath: string;
|
|
208
209
|
containerPath: string;
|
|
210
|
+
meta?: Record<string, unknown> | undefined;
|
|
209
211
|
}, {
|
|
210
212
|
hostPath: string;
|
|
211
213
|
containerPath: string;
|
|
214
|
+
meta?: Record<string, unknown> | undefined;
|
|
215
|
+
}>, "many">>>;
|
|
216
|
+
mount: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
217
|
+
/** Workspace-relative path for the generated docker-compose overlay. */
|
|
218
|
+
overlayPath: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
219
|
+
/** Basename inside stateDir for the manifest. */
|
|
220
|
+
manifestFile: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
221
|
+
}, "strip", z.ZodTypeAny, {
|
|
222
|
+
overlayPath: string;
|
|
223
|
+
manifestFile: string;
|
|
224
|
+
}, {
|
|
225
|
+
overlayPath?: string | undefined;
|
|
226
|
+
manifestFile?: string | undefined;
|
|
227
|
+
}>>>;
|
|
228
|
+
/** Which pane the cockpit lands on when it boots. Profile may override. */
|
|
229
|
+
defaultPane: z.ZodDefault<z.ZodOptional<z.ZodEnum<["repos", "output", "health", "help"]>>>;
|
|
230
|
+
/** Named keystroke-bound shell commands surfaced via the `:` palette. */
|
|
231
|
+
actions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
232
|
+
id: z.ZodString;
|
|
233
|
+
label: z.ZodString;
|
|
234
|
+
command: z.ZodString;
|
|
235
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
236
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
237
|
+
key: z.ZodOptional<z.ZodString>;
|
|
238
|
+
}, "strip", z.ZodTypeAny, {
|
|
239
|
+
id: string;
|
|
240
|
+
label: string;
|
|
241
|
+
command: string;
|
|
242
|
+
cwd?: string | undefined;
|
|
243
|
+
key?: string | undefined;
|
|
244
|
+
scope?: string | undefined;
|
|
245
|
+
}, {
|
|
246
|
+
id: string;
|
|
247
|
+
label: string;
|
|
248
|
+
command: string;
|
|
249
|
+
cwd?: string | undefined;
|
|
250
|
+
key?: string | undefined;
|
|
251
|
+
scope?: string | undefined;
|
|
212
252
|
}>, "many">>>;
|
|
213
253
|
/**
|
|
214
254
|
* Profile-specific config namespace. Each profile owns one key under here
|
|
@@ -218,8 +258,7 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
218
258
|
profile: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
219
259
|
}, "strip", z.ZodTypeAny, {
|
|
220
260
|
version: number;
|
|
221
|
-
|
|
222
|
-
watchers: {
|
|
261
|
+
processes: {
|
|
223
262
|
id: string;
|
|
224
263
|
command: string;
|
|
225
264
|
label?: string | undefined;
|
|
@@ -231,6 +270,7 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
231
270
|
onTransitionTo?: string[] | undefined;
|
|
232
271
|
} | undefined;
|
|
233
272
|
}[];
|
|
273
|
+
appName: string;
|
|
234
274
|
repos: {
|
|
235
275
|
path: string;
|
|
236
276
|
id: string;
|
|
@@ -277,6 +317,20 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
277
317
|
mounts: {
|
|
278
318
|
hostPath: string;
|
|
279
319
|
containerPath: string;
|
|
320
|
+
meta?: Record<string, unknown> | undefined;
|
|
321
|
+
}[];
|
|
322
|
+
mount: {
|
|
323
|
+
overlayPath: string;
|
|
324
|
+
manifestFile: string;
|
|
325
|
+
};
|
|
326
|
+
defaultPane: "repos" | "health" | "help" | "output";
|
|
327
|
+
actions: {
|
|
328
|
+
id: string;
|
|
329
|
+
label: string;
|
|
330
|
+
command: string;
|
|
331
|
+
cwd?: string | undefined;
|
|
332
|
+
key?: string | undefined;
|
|
333
|
+
scope?: string | undefined;
|
|
280
334
|
}[];
|
|
281
335
|
profile: Record<string, unknown>;
|
|
282
336
|
docker?: {
|
|
@@ -296,7 +350,7 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
296
350
|
tail?: boolean | undefined;
|
|
297
351
|
}[] | undefined;
|
|
298
352
|
} | undefined;
|
|
299
|
-
|
|
353
|
+
processes?: {
|
|
300
354
|
id: string;
|
|
301
355
|
command: string;
|
|
302
356
|
label?: string | undefined;
|
|
@@ -354,6 +408,20 @@ export declare const BaseCockpitConfigSchema: z.ZodObject<{
|
|
|
354
408
|
mounts?: {
|
|
355
409
|
hostPath: string;
|
|
356
410
|
containerPath: string;
|
|
411
|
+
meta?: Record<string, unknown> | undefined;
|
|
412
|
+
}[] | undefined;
|
|
413
|
+
mount?: {
|
|
414
|
+
overlayPath?: string | undefined;
|
|
415
|
+
manifestFile?: string | undefined;
|
|
416
|
+
} | undefined;
|
|
417
|
+
defaultPane?: "repos" | "health" | "help" | "output" | undefined;
|
|
418
|
+
actions?: {
|
|
419
|
+
id: string;
|
|
420
|
+
label: string;
|
|
421
|
+
command: string;
|
|
422
|
+
cwd?: string | undefined;
|
|
423
|
+
key?: string | undefined;
|
|
424
|
+
scope?: string | undefined;
|
|
357
425
|
}[] | undefined;
|
|
358
426
|
profile?: Record<string, unknown> | undefined;
|
|
359
427
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,mFAAmF;AACnF,eAAO,MAAM,cAAc,IAAI,CAAC;AA6GhC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARlC,wEAAwE;;QAExE,iDAAiD;;;;;;;;;IAyBjD,2EAA2E;;IAE3E,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;IAEzE;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,QAAQ,EAAE,MAAM;aAChB,KAAK,EAAE,OAAO;aACd,SAAS,EAAE,MAAM;gBAFjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM;CAOpC;AAED,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,QAAQ,EAAE,MAAM;aAChB,KAAK,EAAE,OAAO;gBADd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO;CAKjC;AAID,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,iBAAiB,CA0CnB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema-migration pipeline for `cockpit.yaml`.
|
|
3
|
+
*
|
|
4
|
+
* Each migrator transforms a config object from one CONFIG_VERSION to the
|
|
5
|
+
* next. They're pure: input → output, no I/O. The pipeline is:
|
|
6
|
+
*
|
|
7
|
+
* runMigrations(input, fromVersion, toVersion)
|
|
8
|
+
* fromVersion = 1, toVersion = 3 →
|
|
9
|
+
* MIGRATORS[1](input) → MIGRATORS[2](result) → final
|
|
10
|
+
*
|
|
11
|
+
* The keyed map ensures gaps and unknown versions throw rather than silently
|
|
12
|
+
* skip. New migrators are inserted under `MIGRATORS[<sourceVersion>]` and
|
|
13
|
+
* `CONFIG_VERSION` is bumped to `<targetVersion>` in core/config.ts.
|
|
14
|
+
*
|
|
15
|
+
* In-memory migration is automatic when loadConfig encounters an old version
|
|
16
|
+
* (with a console warning). Persisting the migrated form to disk is the job
|
|
17
|
+
* of the `migrate-config` CLI command.
|
|
18
|
+
*/
|
|
19
|
+
export type ConfigMigrator = (raw: Record<string, unknown>) => Record<string, unknown>;
|
|
20
|
+
/** Keyed by source version. `MIGRATORS[1]` migrates from v1 to v2, etc. */
|
|
21
|
+
export declare const MIGRATORS: Record<number, ConfigMigrator>;
|
|
22
|
+
export declare class MigrationError extends Error {
|
|
23
|
+
readonly fromVersion: number;
|
|
24
|
+
readonly toVersion: number;
|
|
25
|
+
constructor(fromVersion: number, toVersion: number, reason: string);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Apply migrators in sequence from `fromVersion` to `toVersion`.
|
|
29
|
+
* Each migrator is responsible for setting `version` on its output to the
|
|
30
|
+
* next version number — we assert it after each step.
|
|
31
|
+
*/
|
|
32
|
+
export declare function runMigrations(raw: Record<string, unknown>, fromVersion: number, toVersion: number): Record<string, unknown>;
|
|
33
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/core/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AASvF,2EAA2E;AAC3E,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAEpD,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;aACX,WAAW,EAAE,MAAM;aAAkB,SAAS,EAAE,MAAM;gBAAtD,WAAW,EAAE,MAAM,EAAkB,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAInG;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB"}
|
|
@@ -4,6 +4,18 @@ export interface SpawnOptions {
|
|
|
4
4
|
env?: Record<string, string>;
|
|
5
5
|
onStdout?: (line: string) => void;
|
|
6
6
|
onStderr?: (line: string) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Optional tag for handle lookup. The most-recent spawn with a given tag
|
|
9
|
+
* wins; previous tagged spawns lose their tag association (the handle stays
|
|
10
|
+
* in ACTIVE for SIGTERM-at-shutdown but is no longer found via {@link findByTag}).
|
|
11
|
+
*/
|
|
12
|
+
tag?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Stdin disposition for the child. Defaults to execa's default (`'pipe'`).
|
|
15
|
+
* Use `'ignore'` for non-interactive subprocesses so any `read`/prompt in
|
|
16
|
+
* the child gets EOF instead of blocking forever on an unwritten pipe.
|
|
17
|
+
*/
|
|
18
|
+
stdin?: 'pipe' | 'ignore' | 'inherit';
|
|
7
19
|
}
|
|
8
20
|
export interface ProcessHandle {
|
|
9
21
|
exitCode: Promise<number>;
|
|
@@ -11,6 +23,14 @@ export interface ProcessHandle {
|
|
|
11
23
|
child: Subprocess;
|
|
12
24
|
}
|
|
13
25
|
export declare function spawnStream(cmd: string, args: string[], opts?: SpawnOptions): ProcessHandle;
|
|
26
|
+
/** Look up the latest live handle for a tag, if any. */
|
|
27
|
+
export declare function findSpawnedByTag(tag: string): ProcessHandle | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Send SIGTERM to the tagged handle and wait for it to exit. Returns true if
|
|
30
|
+
* a handle was found and signaled, false if no handle for that tag is live.
|
|
31
|
+
* Used by per-process restart actions (Repos pane `r` on a process row).
|
|
32
|
+
*/
|
|
33
|
+
export declare function killSpawnedByTag(tag: string, sigkillAfterMs?: number): Promise<boolean>;
|
|
14
34
|
/**
|
|
15
35
|
* Send SIGTERM to every still-running spawnStream child and await each one's
|
|
16
36
|
* reap. After {@link sigkillAfterMs} the holdouts are SIGKILLed so the sweep
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../src/core/subprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../src/core/subprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,UAAU,CAAC;CACnB;AAaD,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,YAAiB,GACtB,aAAa,CAiDf;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEvE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB3F;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,cAAc,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzE"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import type { Command } from 'commander';
|
|
|
2
2
|
import type { z } from 'zod';
|
|
3
3
|
import type { HealthCheck } from '../health/types.js';
|
|
4
4
|
import type { BaseCockpitConfig } from './config.js';
|
|
5
|
+
import type { MountClearHookCtx, MountHookCtx, MountStatusEnricher, MountSymlinkStrategy } from '../mount/types.js';
|
|
6
|
+
import type { ActionConfig } from '../actions/types.js';
|
|
7
|
+
import type { WizardStep } from '../commands/init-config-wizard.js';
|
|
5
8
|
export type Severity = 'ok' | 'warn' | 'error';
|
|
6
9
|
export type RepoStatus = 'idle' | 'running' | 'failing';
|
|
7
10
|
export type LintStatus = 'unknown' | 'pass' | 'fail';
|
|
@@ -57,6 +60,12 @@ export interface Repo {
|
|
|
57
60
|
export interface Mount {
|
|
58
61
|
hostPath: string;
|
|
59
62
|
containerPath: string;
|
|
63
|
+
/**
|
|
64
|
+
* Optional metadata attached by profiles (e.g. `{name, type, installPath}`)
|
|
65
|
+
* for richer status output and lifecycle decisions. dev-cockpit treats this
|
|
66
|
+
* as opaque; profile hooks read it.
|
|
67
|
+
*/
|
|
68
|
+
meta?: Record<string, unknown>;
|
|
60
69
|
}
|
|
61
70
|
export interface HelpSource {
|
|
62
71
|
id: string;
|
|
@@ -68,18 +77,7 @@ export interface HelpSource {
|
|
|
68
77
|
export interface Workspace {
|
|
69
78
|
root: string;
|
|
70
79
|
}
|
|
71
|
-
/** Dispatched action that briefly banners the active operation. */
|
|
72
|
-
export interface ProfileAsyncActionDispatch {
|
|
73
|
-
label: string;
|
|
74
|
-
promise: Promise<void>;
|
|
75
|
-
}
|
|
76
80
|
export interface ProfileCockpitHandlers {
|
|
77
|
-
/** Triggered by `r` on the Repos pane. Return null to skip. */
|
|
78
|
-
runRepoAction?: (repoKey: string, repo: RepoState) => ProfileAsyncActionDispatch | null;
|
|
79
|
-
/** Triggered by `w` for repo-kind entries. Fire-and-forget. */
|
|
80
|
-
onWatchToggle?: (repoKey: string, repo: RepoState) => void;
|
|
81
|
-
/** Triggered by `l` for repo-kind entries. Fire-and-forget. */
|
|
82
|
-
onLint?: (repoKey: string, repo: RepoState) => void;
|
|
83
81
|
/** Triggered by `e` on the Output pane with the most-recent file:line error (or null). */
|
|
84
82
|
onOpenError?: (error: {
|
|
85
83
|
file: string;
|
|
@@ -101,6 +99,14 @@ export interface ProfileBootResult {
|
|
|
101
99
|
cockpitHandlers?: ProfileCockpitHandlers;
|
|
102
100
|
/** fs-event source piped into useHealth (typically WatcherManager.subscribeFsEvents). */
|
|
103
101
|
subscribeFsEvents?: (listener: (filePath: string) => void) => () => void;
|
|
102
|
+
/**
|
|
103
|
+
* Dynamic action set assembled at boot — typically per-repo entries with
|
|
104
|
+
* `invoke` callbacks that reference boot-allocated objects (WatcherManager,
|
|
105
|
+
* etc.). Merged into the action registry alongside `config.actions[]` and
|
|
106
|
+
* `Profile.actions` (boot-result wins on id collision, since it's the most
|
|
107
|
+
* specific source).
|
|
108
|
+
*/
|
|
109
|
+
actions?: ActionConfig[];
|
|
104
110
|
/** Awaited at teardown — release any owned subprocesses, watchers, timers. */
|
|
105
111
|
cleanup?: () => Promise<void> | void;
|
|
106
112
|
}
|
|
@@ -117,8 +123,26 @@ export interface Profile {
|
|
|
117
123
|
setupCli?: (program: Command) => void;
|
|
118
124
|
helpSources?: HelpSource[];
|
|
119
125
|
defaultHelpPage?: string;
|
|
126
|
+
/** Which pane the cockpit lands on when it boots. Overrides `config.defaultPane`. */
|
|
127
|
+
defaultPane?: 'repos' | 'output' | 'health' | 'help';
|
|
128
|
+
/** Profile-default actions surfaced via the `:` palette. Config entries override on id. */
|
|
129
|
+
actions?: ActionConfig[];
|
|
130
|
+
/**
|
|
131
|
+
* Profile-contributed wizard steps appended to `init-config -i` after the
|
|
132
|
+
* core 8 steps. Each step's YAML output lands under `profile.<appName>:`
|
|
133
|
+
* in the generated cockpit.yaml.
|
|
134
|
+
*/
|
|
135
|
+
wizardSteps?: readonly WizardStep[];
|
|
120
136
|
configSchemaExt?: z.ZodObject<z.ZodRawShape>;
|
|
121
|
-
mountCandidatesProvider?: () => Mount[]
|
|
137
|
+
mountCandidatesProvider?: () => Mount[] | Promise<Mount[]>;
|
|
138
|
+
/** Called after `mount` writes the overlay + manifest. */
|
|
139
|
+
onMountApply?: (ctx: MountHookCtx) => Promise<void> | void;
|
|
140
|
+
/** Called when `mount clear` removes the overlay + manifest, with the previous mount set. */
|
|
141
|
+
onMountClear?: (ctx: MountClearHookCtx) => Promise<void> | void;
|
|
142
|
+
/** Per-mount enrichment for `mount status` (extra columns, broken-symlink flag). */
|
|
143
|
+
mountStatusEnricher?: MountStatusEnricher;
|
|
144
|
+
/** Optional IDE-facing symlink strategy applied/removed alongside the overlay. */
|
|
145
|
+
mountSymlinks?: MountSymlinkStrategy;
|
|
122
146
|
/** Lifecycle hook — see ProfileBootContext / ProfileBootResult. */
|
|
123
147
|
boot?: ProfileBootHook;
|
|
124
148
|
}
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|