@aexol/spectral 0.9.231 → 0.9.240
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 +47 -0
- package/dist/agent/index.d.ts +32 -5
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +209 -36
- package/dist/backend/generated-images.d.ts +1 -1
- package/dist/backend/generated-images.d.ts.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -4
- package/dist/commands/desktop.d.ts +167 -0
- package/dist/commands/desktop.d.ts.map +1 -0
- package/dist/commands/desktop.js +540 -0
- package/dist/commands/serve.d.ts +9 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +90 -2
- package/dist/commands/update.d.ts +85 -5
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +288 -58
- package/dist/extensions/desktop-control/macos.d.ts.map +1 -1
- package/dist/extensions/desktop-control/macos.js +2 -2
- package/dist/extensions/logic-trace.d.ts +1 -1
- package/dist/extensions/logic-trace.d.ts.map +1 -1
- package/dist/extensions/logic-trace.js +199 -70
- package/dist/extensions/video-generation/index.d.ts +3 -0
- package/dist/extensions/video-generation/index.d.ts.map +1 -0
- package/dist/extensions/video-generation/index.js +299 -0
- package/dist/generated/zeus/const.d.ts.map +1 -1
- package/dist/generated/zeus/const.js +30 -0
- package/dist/generated/zeus/index.d.ts +140 -0
- package/dist/generated/zeus/index.d.ts.map +1 -1
- package/dist/generated/zeus/index.js +5 -0
- package/dist/mcp/server-manager.d.ts.map +1 -1
- package/dist/mcp/server-manager.js +6 -0
- package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
- package/dist/memory/tools/receive-agent-observations.js +12 -2
- package/dist/relay/dispatcher.d.ts +13 -1
- package/dist/relay/dispatcher.d.ts.map +1 -1
- package/dist/relay/dispatcher.js +41 -2
- package/dist/sdk/agent-core/agent-loop.js +13 -3
- package/dist/sdk/agent-core/agent.d.ts +11 -4
- package/dist/sdk/agent-core/agent.d.ts.map +1 -1
- package/dist/sdk/agent-core/agent.js +16 -4
- package/dist/sdk/agent-core/tool-call-registry.d.ts +75 -0
- package/dist/sdk/agent-core/tool-call-registry.d.ts.map +1 -0
- package/dist/sdk/agent-core/tool-call-registry.js +131 -0
- package/dist/sdk/agent-core/tool-execution.d.ts.map +1 -1
- package/dist/sdk/agent-core/tool-execution.js +103 -4
- package/dist/sdk/agent-core/types.d.ts +15 -4
- package/dist/sdk/agent-core/types.d.ts.map +1 -1
- package/dist/sdk/ai/index.d.ts +3 -0
- package/dist/sdk/ai/index.d.ts.map +1 -1
- package/dist/sdk/ai/index.js +3 -0
- package/dist/sdk/ai/providers/faux.d.ts.map +1 -1
- package/dist/sdk/ai/providers/faux.js +3 -0
- package/dist/sdk/ai/providers/leaked-tool-call-parser.d.ts +39 -6
- package/dist/sdk/ai/providers/leaked-tool-call-parser.d.ts.map +1 -1
- package/dist/sdk/ai/providers/leaked-tool-call-parser.js +159 -18
- package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -1
- package/dist/sdk/ai/providers/openai-completions.js +22 -8
- package/dist/sdk/ai/providers/openrouter-videos.d.ts +3 -0
- package/dist/sdk/ai/providers/openrouter-videos.d.ts.map +1 -0
- package/dist/sdk/ai/providers/openrouter-videos.js +412 -0
- package/dist/sdk/ai/providers/register-builtins.d.ts.map +1 -1
- package/dist/sdk/ai/providers/register-builtins.js +6 -0
- package/dist/sdk/ai/providers/simple-options.d.ts +1 -6
- package/dist/sdk/ai/providers/simple-options.d.ts.map +1 -1
- package/dist/sdk/ai/providers/simple-options.js +0 -22
- package/dist/sdk/ai/providers/transform-messages.d.ts.map +1 -1
- package/dist/sdk/ai/providers/transform-messages.js +52 -1
- package/dist/sdk/ai/types.d.ts +91 -10
- package/dist/sdk/ai/types.d.ts.map +1 -1
- package/dist/sdk/ai/video-models.d.ts +10 -0
- package/dist/sdk/ai/video-models.d.ts.map +1 -0
- package/dist/sdk/ai/video-models.generated.d.ts +440 -0
- package/dist/sdk/ai/video-models.generated.d.ts.map +1 -0
- package/dist/sdk/ai/video-models.generated.js +441 -0
- package/dist/sdk/ai/video-models.js +22 -0
- package/dist/sdk/ai/videos-api-registry.d.ts +14 -0
- package/dist/sdk/ai/videos-api-registry.d.ts.map +1 -0
- package/dist/sdk/ai/videos-api-registry.js +21 -0
- package/dist/sdk/ai/videos.d.ts +4 -0
- package/dist/sdk/ai/videos.d.ts.map +1 -0
- package/dist/sdk/ai/videos.js +13 -0
- package/dist/sdk/coding-agent/core/agent-session.d.ts +8 -0
- package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/agent-session.js +11 -0
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.js +14 -0
- package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts +26 -0
- package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/native-extensions.js +23 -0
- package/dist/sdk/coding-agent/core/extensions/session-events.d.ts +2 -2
- package/dist/sdk/coding-agent/core/extensions/session-events.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/types.d.ts +12 -2
- package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/messages.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/messages.js +42 -2
- package/dist/sdk/coding-agent/core/resource-loader.d.ts +11 -0
- package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/resource-loader.js +23 -6
- package/dist/sdk/coding-agent/core/sdk.d.ts +24 -2
- package/dist/sdk/coding-agent/core/sdk.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/sdk.js +15 -3
- package/dist/sdk/coding-agent/core/settings-manager.d.ts +0 -8
- package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/settings-manager.js +3 -3
- package/dist/sdk/coding-agent/core/system-prompt.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/system-prompt.js +5 -0
- package/dist/sdk/coding-agent/index.d.ts +2 -2
- package/dist/sdk/coding-agent/index.d.ts.map +1 -1
- package/dist/sdk/coding-agent/index.js +1 -1
- package/dist/sdk-public.d.ts +96 -0
- package/dist/sdk-public.d.ts.map +1 -0
- package/dist/sdk-public.js +109 -0
- package/dist/server/agent-bridge/rehydrate.d.ts +2 -2
- package/dist/server/agent-bridge/rehydrate.d.ts.map +1 -1
- package/dist/server/agent-bridge/rehydrate.js +14 -0
- package/dist/server/agent-bridge/tps-metrics.d.ts +34 -0
- package/dist/server/agent-bridge/tps-metrics.d.ts.map +1 -1
- package/dist/server/agent-bridge/tps-metrics.js +22 -0
- package/dist/server/agent-bridge.d.ts +17 -2
- package/dist/server/agent-bridge.d.ts.map +1 -1
- package/dist/server/agent-bridge.js +108 -5
- package/dist/server/handlers/paths-list.d.ts +1 -1
- package/dist/server/handlers/paths-list.js +1 -1
- package/dist/server/inter-agent-broker.d.ts +12 -0
- package/dist/server/inter-agent-broker.d.ts.map +1 -1
- package/dist/server/inter-agent-broker.js +1 -0
- package/dist/server/preset-chain.d.ts +151 -0
- package/dist/server/preset-chain.d.ts.map +1 -0
- package/dist/server/preset-chain.js +250 -0
- package/dist/server/session-stream.d.ts +74 -1
- package/dist/server/session-stream.d.ts.map +1 -1
- package/dist/server/session-stream.js +238 -24
- package/dist/server/storage/rows.d.ts +2 -0
- package/dist/server/storage/rows.d.ts.map +1 -1
- package/dist/server/storage/schema.d.ts +2 -2
- package/dist/server/storage/schema.d.ts.map +1 -1
- package/dist/server/storage/schema.js +2 -1
- package/dist/server/storage.d.ts +7 -0
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +142 -9
- package/dist/server/wire.d.ts +84 -0
- package/dist/server/wire.d.ts.map +1 -1
- package/dist/utils/augment-path.d.ts +51 -0
- package/dist/utils/augment-path.d.ts.map +1 -0
- package/dist/utils/augment-path.js +234 -0
- package/dist/utils/open-browser.d.ts +55 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +163 -0
- package/dist/utils/serve-state.d.ts +264 -0
- package/dist/utils/serve-state.d.ts.map +1 -0
- package/dist/utils/serve-state.js +563 -0
- package/dist/utils/standalone.d.ts +14 -0
- package/dist/utils/standalone.d.ts.map +1 -0
- package/dist/utils/standalone.js +23 -0
- package/package.json +7 -3
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* - `spectral login` → interactive auth flow (writes ~/.spectral/config.json)
|
|
9
9
|
* - `spectral logout` → deletes ~/.spectral/config.json
|
|
10
10
|
* - `spectral serve` → start the Aexol relay WebSocket server (headless)
|
|
11
|
+
* - `spectral desktop`→ start `serve` detached + open the Studio UI in the
|
|
12
|
+
* browser (the thin replacement for the old desktop app)
|
|
11
13
|
* - `spectral bind` → link directory to an Aexol Studio project
|
|
12
14
|
* - `spectral unbind` → remove Aexol Studio project binding
|
|
13
15
|
* - `spectral --version` / `--help` → branded short-circuits, no auth needed.
|
|
@@ -16,8 +18,7 @@
|
|
|
16
18
|
import { getVersion } from "./version.js";
|
|
17
19
|
// ---- Read our own version ----------------------------------------------------
|
|
18
20
|
// Centralized in src/version.ts so the standalone Bun binary, the npm
|
|
19
|
-
// install
|
|
20
|
-
// silently falling back to "0.0.0".
|
|
21
|
+
// install all resolve the same real version instead of falling back to "0.0.0".
|
|
21
22
|
const VERSION = getVersion();
|
|
22
23
|
const TAGLINE = "Coding agent that never sleeps";
|
|
23
24
|
// ---- Branded helpers ---------------------------------------------------------
|
|
@@ -33,6 +34,7 @@ function printHeader() {
|
|
|
33
34
|
" spectral login Interactive authentication (team API key or OAuth)",
|
|
34
35
|
" spectral logout Remove stored Aexol credentials",
|
|
35
36
|
" spectral serve Connect this machine to the Aexol relay backend",
|
|
37
|
+
" spectral desktop Start the agent in the background and open the UI",
|
|
36
38
|
" spectral bind Link this directory to an Aexol Studio project",
|
|
37
39
|
" spectral unbind Remove the Aexol Studio project binding",
|
|
38
40
|
" spectral update Check for and install the latest Spectral version",
|
|
@@ -40,8 +42,9 @@ function printHeader() {
|
|
|
40
42
|
" spectral --version Print version and exit",
|
|
41
43
|
" spectral --help Print this help and exit",
|
|
42
44
|
"",
|
|
43
|
-
"TUI/interactive mode has been removed. Use `spectral
|
|
44
|
-
"
|
|
45
|
+
"TUI/interactive mode has been removed. Use `spectral desktop` to work in",
|
|
46
|
+
"the Aexol Studio web frontend, or `spectral serve` to only connect this",
|
|
47
|
+
"machine to the relay backend.",
|
|
45
48
|
"",
|
|
46
49
|
].join("\n"));
|
|
47
50
|
}
|
|
@@ -99,6 +102,17 @@ async function main() {
|
|
|
99
102
|
await runServeCli(args.slice(1));
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
105
|
+
if (first === "desktop") {
|
|
106
|
+
const { runDesktop } = await import("./commands/desktop.js");
|
|
107
|
+
// Thin wrapper: it spawns a detached `spectral serve`, waits for its
|
|
108
|
+
// readiness marker, opens the browser, then exits. The exit code tells the
|
|
109
|
+
// shell whether the agent came up.
|
|
110
|
+
// `exitCode` (not `process.exit`) so buffered stdout is flushed and any
|
|
111
|
+
// pending cleanup still runs — the wrapper has nothing left open, but a
|
|
112
|
+
// hard exit here would truncate the message on a slow terminal.
|
|
113
|
+
process.exitCode = await runDesktop(args.slice(1));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
102
116
|
if (first === "bind") {
|
|
103
117
|
const { runBind } = await import("./commands/bind.js");
|
|
104
118
|
await runBind(args.slice(1));
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `spectral desktop` — the thin, headless replacement for the Electron shell.
|
|
3
|
+
*
|
|
4
|
+
* What the Electron app actually contributed was four things, all reproduced
|
|
5
|
+
* here without a bundled Chromium:
|
|
6
|
+
*
|
|
7
|
+
* 1. single-instance guarantee → `~/.spectral/serve.pid` + liveness check
|
|
8
|
+
* 1. single-instance guarantee → `~/.spectral/serve.pid`, claimed
|
|
9
|
+
* atomically (`O_EXCL`) before the spawn
|
|
10
|
+
* 2. start the local relay daemon → detached `spectral serve`, unref'd,
|
|
11
|
+
* stdout+stderr appended to serve.log
|
|
12
|
+
* 3. "wait until it is really up" → the `SPECTRAL_SERVE_READY` stdout marker
|
|
13
|
+
* and `serve-ready.json` (see
|
|
14
|
+
* src/utils/serve-state.ts), replacing the
|
|
15
|
+
* old "assume ready after 3 s" heuristic
|
|
16
|
+
* 4. show the UI → open the system browser at
|
|
17
|
+
* https://aexol.ai/agent
|
|
18
|
+
* (override: SPECTRAL_LANDING_URL)
|
|
19
|
+
*
|
|
20
|
+
* The PATH augmentation the app performed for its child process now happens in
|
|
21
|
+
* `augmentPath()` (src/utils/augment-path.ts) and is applied to the spawned
|
|
22
|
+
* daemon, so MCP servers launched via `npx` keep working.
|
|
23
|
+
*
|
|
24
|
+
* What is deliberately NOT reproduced (see the removal notes): the splash
|
|
25
|
+
* window, in-app auto-update (use `spectral update`), the native app menu, and
|
|
26
|
+
* the JWT-via-IPC login bridge — authentication goes through the existing
|
|
27
|
+
* `spectral login` browser flow, which already writes `userJwt` to
|
|
28
|
+
* `~/.spectral/config.json`.
|
|
29
|
+
*
|
|
30
|
+
* Exit codes: 0 success / already running, 1 failure, 3 stopped-state for
|
|
31
|
+
* `status` when the daemon is not running.
|
|
32
|
+
*/
|
|
33
|
+
import { type SpectralConfig } from "../config.js";
|
|
34
|
+
import { type OpenBrowserResult } from "../utils/open-browser.js";
|
|
35
|
+
import { type ServeReadyResult, type ServeGenealogy } from "../utils/serve-state.js";
|
|
36
|
+
/** Where the Studio agent UI lives. */
|
|
37
|
+
export declare const DEFAULT_LANDING_URL = "https://aexol.ai/agent";
|
|
38
|
+
/** How long to wait for the daemon's readiness signal. */
|
|
39
|
+
export declare const DEFAULT_READY_TIMEOUT_MS = 15000;
|
|
40
|
+
/** Grace period between SIGTERM and SIGKILL in `desktop stop`. */
|
|
41
|
+
export declare const DEFAULT_STOP_TIMEOUT_MS = 10000;
|
|
42
|
+
/**
|
|
43
|
+
* Set in the daemon's env to the wrapper's own pid. The daemon sees the
|
|
44
|
+
* placeholder we left in `serve.pid` and must not read it as "another serve is
|
|
45
|
+
* running" — it is the claim of the process that just launched it.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SERVE_PID_CLAIM_ENV = "SPECTRAL_SERVE_PID_CLAIM";
|
|
48
|
+
export declare function getLandingUrl(env?: NodeJS.ProcessEnv): string;
|
|
49
|
+
/** Render a grace window the way it is actually configured (10s, 250ms). */
|
|
50
|
+
export declare function formatGraceMs(ms: number): string;
|
|
51
|
+
export interface ServeSpawnPlan {
|
|
52
|
+
command: string;
|
|
53
|
+
args: string[];
|
|
54
|
+
cwd: string;
|
|
55
|
+
env: NodeJS.ProcessEnv;
|
|
56
|
+
logFile: string;
|
|
57
|
+
}
|
|
58
|
+
interface ResolveCommandInput {
|
|
59
|
+
execPath?: string;
|
|
60
|
+
execArgv?: readonly string[];
|
|
61
|
+
argv1?: string;
|
|
62
|
+
standalone?: boolean;
|
|
63
|
+
/** Entry points to try, in order (already-resolved absolute paths). */
|
|
64
|
+
candidates?: string[];
|
|
65
|
+
exists?: (path: string) => boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Decide how to launch a detached `spectral serve`.
|
|
69
|
+
*
|
|
70
|
+
* Three launch shapes must all work:
|
|
71
|
+
* - standalone Bun binary → exec the binary itself with `serve`
|
|
72
|
+
* - npm install (`spectral` bin → dist/cli.js) → `node <cli.js> serve`
|
|
73
|
+
* - `npm run dev` (tsx src/cli.ts) → re-run the very entry the user invoked,
|
|
74
|
+
* with `process.execArgv` so the tsx loader is carried over
|
|
75
|
+
*
|
|
76
|
+
* @returns the spawn plan's command/args portion. Falls back to whatever
|
|
77
|
+
* `spectral` is on PATH when no entry point can be identified.
|
|
78
|
+
*/
|
|
79
|
+
export declare function resolveServeCommand(input?: ResolveCommandInput): {
|
|
80
|
+
command: string;
|
|
81
|
+
args: string[];
|
|
82
|
+
};
|
|
83
|
+
/** Compose the full plan for spawning the daemon. */
|
|
84
|
+
export declare function planServeSpawn(env?: NodeJS.ProcessEnv, input?: ResolveCommandInput): ServeSpawnPlan;
|
|
85
|
+
/**
|
|
86
|
+
* Will this spawn re-exec into the daemon instead of becoming it directly?
|
|
87
|
+
*
|
|
88
|
+
* Matters for readiness: a standalone binary and `node dist/cli.js serve` are
|
|
89
|
+
* the daemon, so their exit is a hard failure we can report instantly. Under
|
|
90
|
+
* `npm run dev` (`tsx src/cli.ts`) the child is a loader wrapper that execs
|
|
91
|
+
* something else — its death tells us nothing, and only the ready signal or the
|
|
92
|
+
* timeout may decide.
|
|
93
|
+
*/
|
|
94
|
+
export declare function spawnExpectsReExec(plan: ServeSpawnPlan): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Launch the daemon detached from this terminal so it survives the wrapper
|
|
97
|
+
* exiting (that is the whole point: close the shell, the agent stays up).
|
|
98
|
+
* Returns the child pid, or null when the spawn itself failed.
|
|
99
|
+
*/
|
|
100
|
+
export declare function spawnDetachedServe(plan: ServeSpawnPlan): number | null;
|
|
101
|
+
export interface DesktopDeps {
|
|
102
|
+
env?: NodeJS.ProcessEnv;
|
|
103
|
+
spawnServe?: (plan: ServeSpawnPlan) => number | null;
|
|
104
|
+
waitForReady?: (opts: {
|
|
105
|
+
pid: number;
|
|
106
|
+
logFile: string;
|
|
107
|
+
logOffset: number;
|
|
108
|
+
/** Timestamp captured before the spawn, for ready-signal freshness. */
|
|
109
|
+
sinceMs: number;
|
|
110
|
+
/** True when the child re-execs, so its own exit proves nothing. */
|
|
111
|
+
expectReExec: boolean;
|
|
112
|
+
timeoutMs: number;
|
|
113
|
+
}) => Promise<ServeReadyResult>;
|
|
114
|
+
openUrl?: (url: string) => Promise<OpenBrowserResult>;
|
|
115
|
+
/** Interactive `spectral login`. */
|
|
116
|
+
runLogin?: () => Promise<void>;
|
|
117
|
+
readCfg?: () => Promise<SpectralConfig | null>;
|
|
118
|
+
signal?: (pid: number, signal: NodeJS.Signals) => void;
|
|
119
|
+
alive?: (pid: number) => boolean;
|
|
120
|
+
sleep?: (ms: number) => Promise<void>;
|
|
121
|
+
/** Override the SIGTERM→SIGKILL grace window (tests, exotic supervisors). */
|
|
122
|
+
stopGraceMs?: number;
|
|
123
|
+
/**
|
|
124
|
+
* Injectable genealogy verdict for the serve.pid hand-off confirmation. The
|
|
125
|
+
* real probe walks `ps -o ppid=` and can transiently fail under parallel
|
|
126
|
+
* test load, so tests pin the verdict to keep the
|
|
127
|
+
* `daemon`/`foreign`/`unknown` classification deterministic.
|
|
128
|
+
*/
|
|
129
|
+
genealogy?: (pid: number, ancestors: number[]) => ServeGenealogy;
|
|
130
|
+
planInput?: ResolveCommandInput;
|
|
131
|
+
out?: (text: string) => void;
|
|
132
|
+
err?: (text: string) => void;
|
|
133
|
+
isInteractive?: () => boolean;
|
|
134
|
+
}
|
|
135
|
+
export interface TerminateAgentOptions {
|
|
136
|
+
/** Pid to stop — always the one from the pid file, never a stale handle. */
|
|
137
|
+
pid: number;
|
|
138
|
+
/** SIGTERM grace window before SIGKILL. */
|
|
139
|
+
graceMs: number;
|
|
140
|
+
alive: (pid: number) => boolean;
|
|
141
|
+
signal: (pid: number, signal: NodeJS.Signals) => void;
|
|
142
|
+
sleep: (ms: number) => Promise<void>;
|
|
143
|
+
out?: (text: string) => void;
|
|
144
|
+
/** Poll interval while waiting for the daemon to drain. */
|
|
145
|
+
pollMs?: number;
|
|
146
|
+
/** How long to wait after SIGKILL before giving up. */
|
|
147
|
+
killWaitMs?: number;
|
|
148
|
+
}
|
|
149
|
+
export type TerminateAgentOutcome = "stopped" | "killed" | "failed";
|
|
150
|
+
/**
|
|
151
|
+
* SIGTERM → wait out the drain → SIGKILL. Shared by `desktop stop` and by the
|
|
152
|
+
* start path's "it never came up, do not leave it half-started" branch — the
|
|
153
|
+
* old start path fired a bare SIGTERM and walked away, which left a detached
|
|
154
|
+
* daemon that ignored TERM (or won the race) running behind a failed command.
|
|
155
|
+
*
|
|
156
|
+
* The wait is bounded by a poll COUNT rather than a wall-clock deadline, so a
|
|
157
|
+
* caller with a synchronous `sleep` (tests) is both fast and deterministic.
|
|
158
|
+
*/
|
|
159
|
+
export declare function terminateAgentPid(opts: TerminateAgentOptions): Promise<TerminateAgentOutcome>;
|
|
160
|
+
/**
|
|
161
|
+
* `spectral desktop [start|status|stop]`
|
|
162
|
+
*
|
|
163
|
+
* @returns process exit code; `cli.ts` assigns it to `process.exitCode`.
|
|
164
|
+
*/
|
|
165
|
+
export declare function runDesktop(args?: string[], deps?: DesktopDeps): Promise<number>;
|
|
166
|
+
export {};
|
|
167
|
+
//# sourceMappingURL=desktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../src/commands/desktop.ts"],"names":[],"mappings":"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"}
|