dx-devkit 0.0.0-stage → 1.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.
- package/CHANGELOG.md +81 -0
- package/LICENSE +21 -0
- package/README.md +475 -2
- package/bin/dx-mcp.js +2 -0
- package/dist/command.d.ts +9 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/command.js +2 -0
- package/dist/command.js.map +1 -0
- package/dist/commands/ai.d.ts +7 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +148 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/clean.d.ts +3 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +72 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +98 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/go.d.ts +3 -0
- package/dist/commands/go.d.ts.map +1 -0
- package/dist/commands/go.js +202 -0
- package/dist/commands/go.js.map +1 -0
- package/dist/commands/log.d.ts +3 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +51 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/new.d.ts +3 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +117 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/port.d.ts +4 -0
- package/dist/commands/port.d.ts.map +1 -0
- package/dist/commands/port.js +106 -0
- package/dist/commands/port.js.map +1 -0
- package/dist/commands/projects.d.ts +5 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +46 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/stack.d.ts +34 -0
- package/dist/commands/stack.d.ts.map +1 -0
- package/dist/commands/stack.js +140 -0
- package/dist/commands/stack.js.map +1 -0
- package/dist/commands/summary.d.ts +3 -0
- package/dist/commands/summary.d.ts.map +1 -0
- package/dist/commands/summary.js +88 -0
- package/dist/commands/summary.js.map +1 -0
- package/dist/commands/system.d.ts +5 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +104 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/ui.d.ts +3 -0
- package/dist/commands/ui.d.ts.map +1 -0
- package/dist/commands/ui.js +96 -0
- package/dist/commands/ui.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -0
- package/dist/ui.d.ts +27 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +104 -0
- package/dist/ui.js.map +1 -0
- package/node_modules/@dx/core/dist/config.d.ts +46 -0
- package/node_modules/@dx/core/dist/config.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/config.js +131 -0
- package/node_modules/@dx/core/dist/config.js.map +1 -0
- package/node_modules/@dx/core/dist/fuzzy.d.ts +15 -0
- package/node_modules/@dx/core/dist/fuzzy.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/fuzzy.js +63 -0
- package/node_modules/@dx/core/dist/fuzzy.js.map +1 -0
- package/node_modules/@dx/core/dist/index.d.ts +17 -0
- package/node_modules/@dx/core/dist/index.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/index.js +19 -0
- package/node_modules/@dx/core/dist/index.js.map +1 -0
- package/node_modules/@dx/core/dist/runs.d.ts +19 -0
- package/node_modules/@dx/core/dist/runs.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/runs.js +41 -0
- package/node_modules/@dx/core/dist/runs.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/aiSetup.d.ts +58 -0
- package/node_modules/@dx/core/dist/tools/aiSetup.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/aiSetup.js +243 -0
- package/node_modules/@dx/core/dist/tools/aiSetup.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/cleanup.d.ts +61 -0
- package/node_modules/@dx/core/dist/tools/cleanup.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/cleanup.js +171 -0
- package/node_modules/@dx/core/dist/tools/cleanup.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/deps.d.ts +57 -0
- package/node_modules/@dx/core/dist/tools/deps.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/deps.js +151 -0
- package/node_modules/@dx/core/dist/tools/deps.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/devErrors.d.ts +74 -0
- package/node_modules/@dx/core/dist/tools/devErrors.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/devErrors.js +261 -0
- package/node_modules/@dx/core/dist/tools/devErrors.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/doctor.d.ts +12 -0
- package/node_modules/@dx/core/dist/tools/doctor.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/doctor.js +176 -0
- package/node_modules/@dx/core/dist/tools/doctor.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/github.d.ts +31 -0
- package/node_modules/@dx/core/dist/tools/github.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/github.js +80 -0
- package/node_modules/@dx/core/dist/tools/github.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/journal.d.ts +23 -0
- package/node_modules/@dx/core/dist/tools/journal.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/journal.js +80 -0
- package/node_modules/@dx/core/dist/tools/journal.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/launch.d.ts +24 -0
- package/node_modules/@dx/core/dist/tools/launch.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/launch.js +137 -0
- package/node_modules/@dx/core/dist/tools/launch.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/ports.d.ts +42 -0
- package/node_modules/@dx/core/dist/tools/ports.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/ports.js +220 -0
- package/node_modules/@dx/core/dist/tools/ports.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/projects.d.ts +58 -0
- package/node_modules/@dx/core/dist/tools/projects.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/projects.js +208 -0
- package/node_modules/@dx/core/dist/tools/projects.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/scaffold.d.ts +40 -0
- package/node_modules/@dx/core/dist/tools/scaffold.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/scaffold.js +188 -0
- package/node_modules/@dx/core/dist/tools/scaffold.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/stacks.d.ts +119 -0
- package/node_modules/@dx/core/dist/tools/stacks.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/stacks.js +386 -0
- package/node_modules/@dx/core/dist/tools/stacks.js.map +1 -0
- package/node_modules/@dx/core/dist/tools/summary.d.ts +87 -0
- package/node_modules/@dx/core/dist/tools/summary.d.ts.map +1 -0
- package/node_modules/@dx/core/dist/tools/summary.js +331 -0
- package/node_modules/@dx/core/dist/tools/summary.js.map +1 -0
- package/node_modules/@dx/core/package.json +20 -0
- package/node_modules/@dx/mcp/dist/index.d.ts +3 -0
- package/node_modules/@dx/mcp/dist/index.d.ts.map +1 -0
- package/node_modules/@dx/mcp/dist/index.js +540 -0
- package/node_modules/@dx/mcp/dist/index.js.map +1 -0
- package/node_modules/@dx/mcp/package.json +8 -0
- package/node_modules/@dx/web/dist/api.d.ts +13 -0
- package/node_modules/@dx/web/dist/api.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/api.js +351 -0
- package/node_modules/@dx/web/dist/api.js.map +1 -0
- package/node_modules/@dx/web/dist/background.d.ts +2 -0
- package/node_modules/@dx/web/dist/background.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/background.js +24 -0
- package/node_modules/@dx/web/dist/background.js.map +1 -0
- package/node_modules/@dx/web/dist/check.d.ts +39 -0
- package/node_modules/@dx/web/dist/check.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/check.js +97 -0
- package/node_modules/@dx/web/dist/check.js.map +1 -0
- package/node_modules/@dx/web/dist/dev.d.ts +109 -0
- package/node_modules/@dx/web/dist/dev.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/dev.js +645 -0
- package/node_modules/@dx/web/dist/dev.js.map +1 -0
- package/node_modules/@dx/web/dist/link.d.ts +45 -0
- package/node_modules/@dx/web/dist/link.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/link.js +150 -0
- package/node_modules/@dx/web/dist/link.js.map +1 -0
- package/node_modules/@dx/web/dist/proxy.d.ts +21 -0
- package/node_modules/@dx/web/dist/proxy.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/proxy.js +140 -0
- package/node_modules/@dx/web/dist/proxy.js.map +1 -0
- package/node_modules/@dx/web/dist/server.d.ts +33 -0
- package/node_modules/@dx/web/dist/server.d.ts.map +1 -0
- package/node_modules/@dx/web/dist/server.js +184 -0
- package/node_modules/@dx/web/dist/server.js.map +1 -0
- package/node_modules/@dx/web/package.json +26 -0
- package/node_modules/@dx/web/public/app.js +1553 -0
- package/node_modules/@dx/web/public/icon.svg +1 -0
- package/node_modules/@dx/web/public/index.html +47 -0
- package/node_modules/@dx/web/public/styles.css +1124 -0
- package/package.json +52 -4
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type DevError, type Project } from "@dx/core";
|
|
2
|
+
/**
|
|
3
|
+
* Dev servers run by the dashboard. A project runs as one process, or, when it has a stack, as
|
|
4
|
+
* several services started in order (databases, then back ends, then front ends). Output is kept
|
|
5
|
+
* (the last lines) so the page and AI agents can read it, errors are picked out of it, and
|
|
6
|
+
* everything stops when the dashboard stops, like a dev server stops when you close its terminal.
|
|
7
|
+
*/
|
|
8
|
+
export interface DevLine {
|
|
9
|
+
/** Numbered across every server, so lines from a stack's services merge in order. */
|
|
10
|
+
n: number;
|
|
11
|
+
stream: "out" | "err" | "dx";
|
|
12
|
+
text: string;
|
|
13
|
+
/** The stack service the line came from. */
|
|
14
|
+
service?: string;
|
|
15
|
+
}
|
|
16
|
+
export type StartedBy = "dashboard" | "ai" | "terminal";
|
|
17
|
+
export type DevStatus = "starting" | "ready" | "stopped" | "failed";
|
|
18
|
+
export interface DevServerInfo {
|
|
19
|
+
project: string;
|
|
20
|
+
dir: string;
|
|
21
|
+
command: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
/** Its address through dx's local domains, e.g. http://shop.localhost. */
|
|
24
|
+
localUrl?: string;
|
|
25
|
+
pid?: number;
|
|
26
|
+
status: DevStatus;
|
|
27
|
+
/** Who started it: the dashboard's Run button, an AI agent through MCP, or the terminal. */
|
|
28
|
+
startedBy: StartedBy;
|
|
29
|
+
/** Errors in its output that haven't been resolved by a clean rebuild. */
|
|
30
|
+
errorCount: number;
|
|
31
|
+
startedAt: string;
|
|
32
|
+
stoppedAt?: string;
|
|
33
|
+
exitCode?: number | null;
|
|
34
|
+
/** Number of the last line, so the page can ask only for what's new. */
|
|
35
|
+
lastLine: number;
|
|
36
|
+
/** For a stack's service: its name and role. */
|
|
37
|
+
service?: string;
|
|
38
|
+
role?: string;
|
|
39
|
+
/** For a stack: its services, how it was found, and anything worth knowing (a service that wasn't started). */
|
|
40
|
+
services?: DevServerInfo[];
|
|
41
|
+
stackSource?: string;
|
|
42
|
+
note?: string;
|
|
43
|
+
}
|
|
44
|
+
/** Tells the dev servers the local domains proxy's port, or undefined when it isn't running. */
|
|
45
|
+
export declare function setLocalDomainsPort(port: number | undefined): void;
|
|
46
|
+
/** Every *.localhost name dx serves, and the address it points at. */
|
|
47
|
+
export declare function localRoutes(): Map<string, {
|
|
48
|
+
url: string;
|
|
49
|
+
dir: string;
|
|
50
|
+
service?: string;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function listDevServers(): DevServerInfo[];
|
|
53
|
+
export declare function devServer(dir: string): DevServerInfo | undefined;
|
|
54
|
+
/** The process (or stack service) listening on a port, for matching a request to its server. */
|
|
55
|
+
export declare function serverForPort(port: number): {
|
|
56
|
+
dir: string;
|
|
57
|
+
service?: string;
|
|
58
|
+
project: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
export declare function devLogs(dir: string, after?: number, service?: string): {
|
|
61
|
+
lines: DevLine[];
|
|
62
|
+
server?: DevServerInfo;
|
|
63
|
+
};
|
|
64
|
+
/** Errors found in one server's output (a stack's services included), or in every server's when `dir` is empty. */
|
|
65
|
+
export declare function devErrors(dir?: string, options?: {
|
|
66
|
+
all?: boolean;
|
|
67
|
+
after?: number;
|
|
68
|
+
service?: string;
|
|
69
|
+
}): {
|
|
70
|
+
project: string;
|
|
71
|
+
dir: string;
|
|
72
|
+
errors: DevError[];
|
|
73
|
+
}[];
|
|
74
|
+
/** Starts a project: its stack when it has one, else its dev command. */
|
|
75
|
+
export declare function startDevServer(project: Project, startedBy?: StartedBy): DevServerInfo;
|
|
76
|
+
export declare function stopDevServer(dir: string): Promise<DevServerInfo | undefined>;
|
|
77
|
+
/** Stops every dev server; called when the dashboard shuts down. */
|
|
78
|
+
export declare function stopAllDevServers(): Promise<void>;
|
|
79
|
+
/** Stops the server (or stack), waits for it to exit, and starts it again. */
|
|
80
|
+
export declare function restartDevServer(project: Project, startedBy?: StartedBy): Promise<DevServerInfo>;
|
|
81
|
+
/** Forgets a stopped server or stack, so its card and output go away. */
|
|
82
|
+
export declare function clearDevServer(dir: string): void;
|
|
83
|
+
/** True while any dev server or stack is running. */
|
|
84
|
+
export declare function anyDevServerRunning(): boolean;
|
|
85
|
+
export interface WaitResult {
|
|
86
|
+
server?: DevServerInfo;
|
|
87
|
+
/** Output printed since `after` (the newest 200 lines at most). */
|
|
88
|
+
lines: DevLine[];
|
|
89
|
+
/** Current errors that appeared, or came back, since `after`. */
|
|
90
|
+
newErrors: DevError[];
|
|
91
|
+
/** Every current error. */
|
|
92
|
+
errors: DevError[];
|
|
93
|
+
/** False when the server printed nothing at all while waiting. */
|
|
94
|
+
sawOutput: boolean;
|
|
95
|
+
timedOut: boolean;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Waits for a dev server (or a stack's services) to settle, then says what they printed.
|
|
99
|
+
* `until: "ready"` waits for starting to finish; `until: "quiet"` waits for output to begin (a
|
|
100
|
+
* rebuild after a file change), then for it to stop for `quietMs`.
|
|
101
|
+
*/
|
|
102
|
+
export declare function waitForDevServer(dir: string, options?: {
|
|
103
|
+
after?: number;
|
|
104
|
+
until?: "ready" | "quiet";
|
|
105
|
+
quietMs?: number;
|
|
106
|
+
settleMs?: number;
|
|
107
|
+
timeoutMs?: number;
|
|
108
|
+
}): Promise<WaitResult>;
|
|
109
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"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"}
|