@silo-code/sdk 0.21.0 → 0.22.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/dist/editor-service.d.ts +135 -3
- package/dist/editor-service.d.ts.map +1 -1
- package/dist/event.d.ts +28 -0
- package/dist/event.d.ts.map +1 -0
- package/dist/event.js +2 -0
- package/dist/event.js.map +1 -0
- package/dist/file-service.d.ts +33 -2
- package/dist/file-service.d.ts.map +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/network-service.d.ts +46 -2
- package/dist/network-service.d.ts.map +1 -1
- package/dist/path.d.ts +62 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +150 -0
- package/dist/path.js.map +1 -0
- package/dist/process-service.d.ts +24 -4
- package/dist/process-service.d.ts.map +1 -1
- package/dist/processes-service.d.ts +1 -1
- package/dist/search-service.d.ts +11 -0
- package/dist/search-service.d.ts.map +1 -1
- package/dist/system-service.d.ts +2 -2
- package/dist/terminal-service.d.ts +37 -0
- package/dist/terminal-service.d.ts.map +1 -1
- package/dist/types.d.ts +12 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/workspace-service.d.ts +13 -0
- package/dist/workspace-service.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/editor-service.ts +141 -5
- package/src/event.ts +28 -0
- package/src/file-service.ts +33 -2
- package/src/index.ts +24 -5
- package/src/network-service.ts +51 -2
- package/src/path.test.ts +135 -0
- package/src/path.ts +188 -0
- package/src/process-service.ts +24 -4
- package/src/processes-service.ts +1 -1
- package/src/search-service.ts +11 -0
- package/src/system-service.ts +2 -2
- package/src/terminal-service.ts +40 -0
- package/src/types.ts +12 -5
- package/src/workspace-service.ts +13 -0
package/dist/path.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// Pure path utilities for extensions. A cross-platform replacement for
|
|
2
|
+
// `node:path`, which extensions are banned from importing (platform ban).
|
|
3
|
+
// All outputs use forward-slash separators — the form FileService accepts on
|
|
4
|
+
// every platform. Both "/" and "\" are accepted as inputs.
|
|
5
|
+
/** Normalize all separators to forward-slash. */
|
|
6
|
+
function normSep(p) {
|
|
7
|
+
return p.replace(/\\/g, "/");
|
|
8
|
+
}
|
|
9
|
+
/** Extract a Windows drive-letter prefix ("C:") from a forward-slash path, or null. */
|
|
10
|
+
function parseDrive(p) {
|
|
11
|
+
const m = /^([A-Za-z]):/.exec(p);
|
|
12
|
+
return m ? m[1].toUpperCase() + ":" : null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Normalize segments of a forward-slash path: collapse duplicate slashes,
|
|
16
|
+
* resolve "." and ".." segments. Preserves leading "/" (POSIX absolute),
|
|
17
|
+
* "C:/" (Windows drive-letter), and "//" (UNC paths).
|
|
18
|
+
*/
|
|
19
|
+
function normSegments(s) {
|
|
20
|
+
const drive = parseDrive(s);
|
|
21
|
+
const afterDrive = drive ? s.slice(2) : s;
|
|
22
|
+
const isUnc = afterDrive.startsWith("//");
|
|
23
|
+
const isAbs = isUnc || afterDrive.startsWith("/");
|
|
24
|
+
const stack = [];
|
|
25
|
+
for (const seg of afterDrive.split("/")) {
|
|
26
|
+
if (seg === "" || seg === ".")
|
|
27
|
+
continue;
|
|
28
|
+
if (seg === "..") {
|
|
29
|
+
if (stack.length > 0 && stack[stack.length - 1] !== "..") {
|
|
30
|
+
stack.pop();
|
|
31
|
+
}
|
|
32
|
+
else if (!isAbs) {
|
|
33
|
+
stack.push("..");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
stack.push(seg);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
let result = stack.join("/");
|
|
41
|
+
if (isUnc)
|
|
42
|
+
result = "//" + result;
|
|
43
|
+
else if (isAbs)
|
|
44
|
+
result = "/" + result;
|
|
45
|
+
if (drive)
|
|
46
|
+
result = drive + result;
|
|
47
|
+
if (!result)
|
|
48
|
+
return isAbs ? (drive ? drive + "/" : "/") : ".";
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Path utilities for extensions — a cross-platform replacement for
|
|
53
|
+
* `node:path`, which extensions are banned from importing. All output paths
|
|
54
|
+
* use forward-slash separators (the form {@link FileService} accepts on every
|
|
55
|
+
* platform). Both `/` and `\` are accepted as input separators.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* import { path } from "@silo-code/sdk";
|
|
60
|
+
*
|
|
61
|
+
* const dir = path.dirname(filePath); // "/home/user/docs"
|
|
62
|
+
* const full = path.join(dir, "images/fig.png"); // "/home/user/docs/images/fig.png"
|
|
63
|
+
* const rel = path.relative(dir, full); // "images/fig.png"
|
|
64
|
+
* const ext = path.extname(full); // ".png"
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @category Core Types
|
|
68
|
+
* @public
|
|
69
|
+
*/
|
|
70
|
+
export const path = {
|
|
71
|
+
normalize(p) {
|
|
72
|
+
return normSegments(normSep(p));
|
|
73
|
+
},
|
|
74
|
+
join(...parts) {
|
|
75
|
+
const nonEmpty = parts.filter((p) => p.length > 0);
|
|
76
|
+
if (nonEmpty.length === 0)
|
|
77
|
+
return ".";
|
|
78
|
+
// Concatenate without adding "/" when adjacent parts already supply the
|
|
79
|
+
// boundary, so join("/", "rel") → "/rel" rather than "//rel" (UNC).
|
|
80
|
+
const raw = nonEmpty.map(normSep).reduce((a, b) => {
|
|
81
|
+
if (a.endsWith("/") || b.startsWith("/"))
|
|
82
|
+
return a + b;
|
|
83
|
+
return a + "/" + b;
|
|
84
|
+
});
|
|
85
|
+
return normSegments(raw);
|
|
86
|
+
},
|
|
87
|
+
dirname(p) {
|
|
88
|
+
const n = normSegments(normSep(p));
|
|
89
|
+
const drive = parseDrive(n);
|
|
90
|
+
const rest = drive ? n.slice(2) : n;
|
|
91
|
+
const i = rest.lastIndexOf("/");
|
|
92
|
+
if (i < 0)
|
|
93
|
+
return drive ? drive + "." : ".";
|
|
94
|
+
if (i === 0)
|
|
95
|
+
return drive ? drive + "/" : "/";
|
|
96
|
+
return drive ? drive + rest.slice(0, i) : rest.slice(0, i);
|
|
97
|
+
},
|
|
98
|
+
basename(p, ext) {
|
|
99
|
+
const n = normSep(p);
|
|
100
|
+
const segs = n.split("/");
|
|
101
|
+
let name = segs[segs.length - 1] ?? "";
|
|
102
|
+
// Trailing slash: "foo/" → last segment is "" → fall back to prior segment
|
|
103
|
+
if (name === "" && segs.length > 1)
|
|
104
|
+
name = segs[segs.length - 2] ?? "";
|
|
105
|
+
if (ext !== undefined && name.endsWith(ext)) {
|
|
106
|
+
name = name.slice(0, name.length - ext.length);
|
|
107
|
+
}
|
|
108
|
+
return name;
|
|
109
|
+
},
|
|
110
|
+
extname(p) {
|
|
111
|
+
const base = path.basename(normSep(p));
|
|
112
|
+
const i = base.lastIndexOf(".");
|
|
113
|
+
// i === 0 means a dotfile like ".gitignore" — no extension
|
|
114
|
+
if (i <= 0)
|
|
115
|
+
return "";
|
|
116
|
+
return base.slice(i);
|
|
117
|
+
},
|
|
118
|
+
isAbsolute(p) {
|
|
119
|
+
const n = normSep(p);
|
|
120
|
+
if (n.startsWith("//"))
|
|
121
|
+
return true; // UNC (\\server\share or //server/share)
|
|
122
|
+
if (/^[A-Za-z]:\//.test(n))
|
|
123
|
+
return true; // Windows drive with slash (C:/ or C:\)
|
|
124
|
+
return n.startsWith("/"); // POSIX
|
|
125
|
+
},
|
|
126
|
+
relative(from, to) {
|
|
127
|
+
const nFrom = normSegments(normSep(from));
|
|
128
|
+
const nTo = normSegments(normSep(to));
|
|
129
|
+
const driveFrom = parseDrive(nFrom);
|
|
130
|
+
const driveTo = parseDrive(nTo);
|
|
131
|
+
// Can't express a relative path across different drives
|
|
132
|
+
if (driveFrom !== driveTo)
|
|
133
|
+
return nTo;
|
|
134
|
+
const segsFrom = (driveFrom ? nFrom.slice(2) : nFrom)
|
|
135
|
+
.split("/")
|
|
136
|
+
.filter(Boolean);
|
|
137
|
+
const segsTo = (driveTo ? nTo.slice(2) : nTo).split("/").filter(Boolean);
|
|
138
|
+
let common = 0;
|
|
139
|
+
while (common < segsFrom.length &&
|
|
140
|
+
common < segsTo.length &&
|
|
141
|
+
segsFrom[common] === segsTo[common]) {
|
|
142
|
+
common++;
|
|
143
|
+
}
|
|
144
|
+
const ups = segsFrom.length - common;
|
|
145
|
+
const downs = segsTo.slice(common);
|
|
146
|
+
const parts = [...Array(ups).fill(".."), ...downs];
|
|
147
|
+
return parts.join("/") || ".";
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=path.js.map
|
package/dist/path.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,24 @@ export interface ProcessExecOptions {
|
|
|
61
61
|
* {@link Permission}. First-party (bundled) extensions are unscoped.
|
|
62
62
|
*/
|
|
63
63
|
cwd?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Extra environment variables, **merged over** the host's environment (the
|
|
66
|
+
* command inherits the host env; these keys add to or override it). Use it to
|
|
67
|
+
* set things like `GIT_PAGER=cat` or a locale without clobbering `PATH`.
|
|
68
|
+
*/
|
|
69
|
+
env?: Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Kill the process and reject after this many milliseconds. The whole process
|
|
72
|
+
* group is terminated (not just the direct child), so shell wrappers don't
|
|
73
|
+
* leak orphans. The rejection is an `Error` whose `name` is `"AbortError"`.
|
|
74
|
+
*/
|
|
75
|
+
timeoutMs?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Abort handle. Aborting kills the process (and its group) and rejects the
|
|
78
|
+
* `exec` promise with an `Error` whose `name` is `"AbortError"` — the same
|
|
79
|
+
* shape as a `timeoutMs` expiry, so callers branch on `err.name`.
|
|
80
|
+
*/
|
|
81
|
+
signal?: AbortSignal;
|
|
64
82
|
}
|
|
65
83
|
/**
|
|
66
84
|
* The captured result of a one-shot subprocess, returned by
|
|
@@ -108,10 +126,12 @@ export interface ProcessService {
|
|
|
108
126
|
* interactive sessions instead.
|
|
109
127
|
*
|
|
110
128
|
* Runs **off the UI thread**, so a slow or network-bound command never
|
|
111
|
-
* stutters the app. The returned promise rejects
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
129
|
+
* stutters the app. The returned promise rejects if the process could not be
|
|
130
|
+
* spawned (e.g. the command was not found), or if a
|
|
131
|
+
* {@link ProcessExecOptions.timeoutMs | timeout} / {@link ProcessExecOptions.signal | abort}
|
|
132
|
+
* fires (an `Error` with `name === "AbortError"`); a command that runs to
|
|
133
|
+
* completion but exits non-zero **resolves** — check
|
|
134
|
+
* {@link ProcessExecResult.code} and {@link ProcessExecResult.stderr}.
|
|
115
135
|
*
|
|
116
136
|
* @param command - Executable to run (resolved via `PATH`), e.g. `"git"`.
|
|
117
137
|
* @param args - Arguments passed verbatim — not shell-interpreted, so no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-service.d.ts","sourceRoot":"","sources":["../src/process-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oDAAoD;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,4CAA4C;IAC5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6EAA6E;IAC7E,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,kDAAkD;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;IACrD,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"process-service.d.ts","sourceRoot":"","sources":["../src/process-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oDAAoD;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,4CAA4C;IAC5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6EAA6E;IAC7E,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,kDAAkD;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;IACrD,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D;;;OAGG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,IAAI,CACF,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B"}
|
|
@@ -80,7 +80,7 @@ export interface ProcessInfo {
|
|
|
80
80
|
* // Notify when all agents in the workspace are idle.
|
|
81
81
|
* const sub = ctx.processes.subscribe((procs) => {
|
|
82
82
|
* const allIdle = procs.every((p) => p.atPrompt);
|
|
83
|
-
* if (allIdle) ctx.ui.notify(
|
|
83
|
+
* if (allIdle) ctx.ui.notify("info", "All agents finished");
|
|
84
84
|
* });
|
|
85
85
|
* ctx.subscriptions.push(sub);
|
|
86
86
|
*
|
package/dist/search-service.d.ts
CHANGED
|
@@ -38,6 +38,17 @@ export interface SearchOptions {
|
|
|
38
38
|
* is hit, the search stops early and {@link SearchResponse.truncated} is true.
|
|
39
39
|
*/
|
|
40
40
|
maxResults?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Cancel the search. When the signal aborts, the promise returned by
|
|
43
|
+
* {@link SearchService.search} rejects with an `Error` whose `name` is
|
|
44
|
+
* `"AbortError"` (the `fetch` convention — branch on `err.name`).
|
|
45
|
+
*
|
|
46
|
+
* Cancellation is observable immediately, but the native search may still run
|
|
47
|
+
* to completion in the background — its result is simply discarded. Use this
|
|
48
|
+
* to abandon a stale query (e.g. superseded by the next keystroke) rather than
|
|
49
|
+
* to reclaim native CPU the instant you abort.
|
|
50
|
+
*/
|
|
51
|
+
signal?: AbortSignal;
|
|
41
52
|
}
|
|
42
53
|
/**
|
|
43
54
|
* One matching line within a file, returned in {@link SearchFileResult.matches}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzE"}
|
package/dist/system-service.d.ts
CHANGED
|
@@ -48,13 +48,13 @@ export interface SystemInfo {
|
|
|
48
48
|
* ctx.subscriptions.push(
|
|
49
49
|
* ctx.registerCommand({
|
|
50
50
|
* id: "my.reveal-in-finder",
|
|
51
|
-
*
|
|
51
|
+
* label: "Reveal in Finder",
|
|
52
52
|
* run() { ... },
|
|
53
53
|
* }),
|
|
54
54
|
* );
|
|
55
55
|
* }
|
|
56
56
|
*
|
|
57
|
-
* ctx.ui.notify(
|
|
57
|
+
* ctx.ui.notify("info", `Running Silo ${siloVersion} on ${os}/${arch}`);
|
|
58
58
|
* },
|
|
59
59
|
* };
|
|
60
60
|
* ```
|
|
@@ -91,10 +91,47 @@ export interface TerminalService {
|
|
|
91
91
|
* Open a new terminal in a workspace (defaults to the active one). Returns the
|
|
92
92
|
* created {@link TerminalRecord}; the PTY session spawns lazily when its tab
|
|
93
93
|
* mounts.
|
|
94
|
+
*
|
|
95
|
+
* Returns `undefined` only when `input.workspaceId` is not given and there is
|
|
96
|
+
* no active workspace at the time of the call — in normal use this does not
|
|
97
|
+
* happen because activating any workspace happens before extensions run.
|
|
94
98
|
*/
|
|
95
99
|
create(input?: CreateTerminalInput): TerminalRecord | undefined;
|
|
96
100
|
/** Close and kill every terminal in a workspace (e.g. on workspace delete). */
|
|
97
101
|
closeWorkspace(workspaceId: string): void;
|
|
102
|
+
/**
|
|
103
|
+
* Write text to a terminal's PTY as if the user typed it. By default a
|
|
104
|
+
* carriage return is appended so the line executes; pass `addNewline: false`
|
|
105
|
+
* to stage text without running it.
|
|
106
|
+
*
|
|
107
|
+
* Works even if the terminal tab has never been shown: the PTY spawns lazily
|
|
108
|
+
* on first mount, and `sendText` force-spawns it on demand (a later mount then
|
|
109
|
+
* attaches to that same session). No-op for an unknown `terminalId`.
|
|
110
|
+
*
|
|
111
|
+
* @param terminalId - The {@link TerminalRecord.id} to write to.
|
|
112
|
+
* @param text - The text to send.
|
|
113
|
+
* @param addNewline - Append a carriage return to execute. Defaults to `true`.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* const term = ctx.terminals.create({ cwd: workspaceFolder });
|
|
118
|
+
* if (term) ctx.terminals.sendText(term.id, "npm run build");
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
sendText(terminalId: string, text: string, addNewline?: boolean): void;
|
|
122
|
+
/**
|
|
123
|
+
* Close one terminal tab and kill its PTY session. No-op if the id is unknown.
|
|
124
|
+
* To reap every terminal in a workspace at once use
|
|
125
|
+
* {@link TerminalService.closeWorkspace}.
|
|
126
|
+
*/
|
|
127
|
+
close(terminalId: string): void;
|
|
128
|
+
/**
|
|
129
|
+
* Set a terminal's user-facing name ({@link TerminalRecord.customName}),
|
|
130
|
+
* shown on its tab and persisted across restarts. Passing an empty string
|
|
131
|
+
* clears the custom name, letting the PTY-derived title take over again.
|
|
132
|
+
* No-op for an unknown `terminalId`.
|
|
133
|
+
*/
|
|
134
|
+
rename(terminalId: string, name: string): void;
|
|
98
135
|
/**
|
|
99
136
|
* Switch to the workspace containing this terminal and activate its tab in
|
|
100
137
|
* the center dock. No-ops if the terminal id is unknown.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-service.d.ts","sourceRoot":"","sources":["../src/terminal-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,QAAQ;IACvB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B
|
|
1
|
+
{"version":3,"file":"terminal-service.d.ts","sourceRoot":"","sources":["../src/terminal-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,QAAQ;IACvB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS,CAAC;IAChE,+EAA+E;IAC/E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvE;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,6BAA6B,GAAG,UAAU,CAAC;IAE3E;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAAC;IAEnE;;;;OAIG;IACH,wBAAwB,IAAI,IAAI,CAAC;IAEjC;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC;IAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,YAAY,CACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GACjC,UAAU,CAAC;IAEd;;;;;;OAMG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,UAAU,CAAC;CAC5E"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The Silo extension API — types
|
|
2
|
+
* The Silo extension API — types-first contract plus a small set of blessed
|
|
3
|
+
* runtime helpers.
|
|
3
4
|
*
|
|
4
5
|
* Everything an extension author can see at compile time lives here (plus the
|
|
5
6
|
* service interfaces in the sibling `*-service` files, which this module
|
|
@@ -8,6 +9,12 @@
|
|
|
8
9
|
* never import the host. This is the VS Code (`vscode.d.ts`) / Obsidian
|
|
9
10
|
* (`obsidian-api`) model.
|
|
10
11
|
*
|
|
12
|
+
* **Runtime exports:** the SDK also ships a small set of blessed runtime
|
|
13
|
+
* helpers (`Tooltip`, `useFocusGroup`, `useServiceState`, `DND_MIME`,
|
|
14
|
+
* `PathDeniedError`, `NetworkError`) and peer-depends on React 19. Changes to
|
|
15
|
+
* these can be breaking even when the types are unchanged — treat them with
|
|
16
|
+
* the same care as the type surface.
|
|
17
|
+
*
|
|
11
18
|
* Start with {@link Extension} (the unit you export) and
|
|
12
19
|
* {@link ExtensionContext} (the `ctx` the host hands you).
|
|
13
20
|
*
|
|
@@ -196,10 +203,10 @@ export interface NewFileTemplate {
|
|
|
196
203
|
}
|
|
197
204
|
/**
|
|
198
205
|
* Declarative metadata about a file extension — the open-ended counterpart to
|
|
199
|
-
*
|
|
200
|
-
* surfaces (and, later, tab/explorer icons) can
|
|
201
|
-
* FileType does not register
|
|
202
|
-
* extension at dispatch time.
|
|
206
|
+
* {@link Editor} (which is purely a presenter/renderer). A single source of
|
|
207
|
+
* truth that "New File" surfaces (and, later, tab/explorer icons) can
|
|
208
|
+
* enumerate. Registering a FileType does not register an Editor; the two are
|
|
209
|
+
* matched independently by extension at dispatch time.
|
|
203
210
|
*
|
|
204
211
|
* @category Registration
|
|
205
212
|
* @public
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,12 @@ export interface WorkspaceService {
|
|
|
159
159
|
createFromFolderPicker(): Promise<Workspace | null>;
|
|
160
160
|
create(input: CreateWorkspaceInput): Workspace;
|
|
161
161
|
rename(id: string, name: string): void;
|
|
162
|
+
/**
|
|
163
|
+
* Move a workspace to a new position relative to a reference workspace.
|
|
164
|
+
* @param from - Id of the workspace being dragged / moved.
|
|
165
|
+
* @param to - Id of the reference workspace (the insertion anchor).
|
|
166
|
+
* @param position - Whether to place `from` before or after `to`.
|
|
167
|
+
*/
|
|
162
168
|
reorder(from: string, to: string, position: "before" | "after"): void;
|
|
163
169
|
/** Activate (and reopen if closed). */
|
|
164
170
|
activate(id: string): void;
|
|
@@ -246,6 +252,13 @@ export interface WorkspaceService {
|
|
|
246
252
|
*
|
|
247
253
|
* The Workspaces panel subscribes internally to re-render when providers
|
|
248
254
|
* are added or removed.
|
|
255
|
+
*
|
|
256
|
+
* **No `invalidateSection` by design.** Unlike status rows and badges, a
|
|
257
|
+
* section is a live React component that re-renders on its own internal or
|
|
258
|
+
* context-driven state changes — it is not a snapshot returned from a
|
|
259
|
+
* `provide()` call, so there is nothing for the host to re-query. If a
|
|
260
|
+
* section needs to trigger a full workspace-panel refresh (rare), it should
|
|
261
|
+
* update its own state directly.
|
|
249
262
|
*/
|
|
250
263
|
subscribeSection(listener: () => void): Disposable;
|
|
251
264
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../src/workspace-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../src/workspace-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/editor-service.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { Disposable } from "./types";
|
|
2
|
+
import type { Event } from "./event";
|
|
3
|
+
import type { EditorMode } from "./domain-types";
|
|
2
4
|
|
|
3
5
|
// `ctx.editors` — the editor & document domain (public contract). Opening files
|
|
4
|
-
// into editor tabs, the active-editor save/close commands,
|
|
5
|
-
// provider registry. The host implementation
|
|
6
|
+
// into editor tabs, the active-editor save/close commands, the diff-content
|
|
7
|
+
// provider registry, and reactive active-editor state. The host implementation
|
|
8
|
+
// lives in the extension host.
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* Options for the editor open methods.
|
|
@@ -65,7 +68,7 @@ export interface EditorViewInfo {
|
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
/**
|
|
68
|
-
* Save callbacks an editor
|
|
71
|
+
* Save callbacks an editor registers via
|
|
69
72
|
* {@link EditorService.registerSaveHandler}, so the active-editor `save` /
|
|
70
73
|
* `saveAs` commands can dispatch to whichever editor is focused.
|
|
71
74
|
*
|
|
@@ -143,11 +146,78 @@ export type DiffContentProvider = (
|
|
|
143
146
|
request: DiffContentRequest,
|
|
144
147
|
) => Promise<DiffContent>;
|
|
145
148
|
|
|
149
|
+
/**
|
|
150
|
+
* A point-in-time snapshot of the focused editor tab. Part of
|
|
151
|
+
* {@link EditorsState}, returned by {@link EditorService.getState} and
|
|
152
|
+
* delivered to {@link EditorService.subscribe} listeners.
|
|
153
|
+
*
|
|
154
|
+
* @category Consumer Services
|
|
155
|
+
* @public
|
|
156
|
+
*/
|
|
157
|
+
export interface ActiveEditorInfo {
|
|
158
|
+
/** The focused editor tab's record id — matches {@link EditorRecord.id}. */
|
|
159
|
+
editorId: string;
|
|
160
|
+
/**
|
|
161
|
+
* The absolute file path of the focused tab, or `null` for an untitled
|
|
162
|
+
* buffer.
|
|
163
|
+
*/
|
|
164
|
+
filePath: string | null;
|
|
165
|
+
/**
|
|
166
|
+
* The {@link Editor.id} of the presenter rendering the tab
|
|
167
|
+
* (e.g. `"core.text-editor"`, `"silo.markdown-preview"`). Empty string
|
|
168
|
+
* when the presenter could not be resolved (rare: editor registered after
|
|
169
|
+
* the tab was opened).
|
|
170
|
+
*/
|
|
171
|
+
viewId: string;
|
|
172
|
+
/** Whether the tab is in text or diff mode. */
|
|
173
|
+
mode: EditorMode;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* A frozen, referentially-stable snapshot of editor domain state. Returned by
|
|
178
|
+
* {@link EditorService.getState} and delivered to
|
|
179
|
+
* {@link EditorService.subscribe} listeners.
|
|
180
|
+
*
|
|
181
|
+
* Compatible with `useServiceState` — just pass `ctx.editors` directly.
|
|
182
|
+
*
|
|
183
|
+
* @category Consumer Services
|
|
184
|
+
* @public
|
|
185
|
+
*/
|
|
186
|
+
export interface EditorsState {
|
|
187
|
+
/**
|
|
188
|
+
* The focused editor tab, or `null` when the active dock panel is not an
|
|
189
|
+
* editor tab (e.g. a terminal, a dock panel kind, or nothing at all).
|
|
190
|
+
*/
|
|
191
|
+
active: ActiveEditorInfo | null;
|
|
192
|
+
/**
|
|
193
|
+
* `true` once the persisted workspace state has loaded from disk. Matches
|
|
194
|
+
* `WorkspaceState.hydrated` — guard state-restoring code on this flag.
|
|
195
|
+
*/
|
|
196
|
+
hydrated: boolean;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Payload delivered to {@link EditorService.onDidSave} listeners after an
|
|
201
|
+
* editor tab's contents are written to disk.
|
|
202
|
+
*
|
|
203
|
+
* @category Consumer Services
|
|
204
|
+
* @public
|
|
205
|
+
*/
|
|
206
|
+
export interface EditorSaveEvent {
|
|
207
|
+
/** The saved tab's editor record id — matches {@link EditorRecord.id}. */
|
|
208
|
+
editorId: string;
|
|
209
|
+
/**
|
|
210
|
+
* Absolute path the contents were written to. For a save-as (or first save
|
|
211
|
+
* of an untitled buffer) this is the newly chosen path, not the old one.
|
|
212
|
+
*/
|
|
213
|
+
filePath: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
146
216
|
/**
|
|
147
217
|
* The editor & document domain, exposed as {@link ExtensionContext.editors}.
|
|
148
218
|
* Open files into editor tabs, drive the active editor (save / close), and let
|
|
149
|
-
*
|
|
150
|
-
*
|
|
219
|
+
* editors register save handlers. The single entry point for opening editors —
|
|
220
|
+
* prefer it over reaching into workspace/editor state.
|
|
151
221
|
*
|
|
152
222
|
* @category Consumer Services
|
|
153
223
|
* @public
|
|
@@ -211,4 +281,70 @@ export interface EditorService {
|
|
|
211
281
|
providerId: string,
|
|
212
282
|
provider: DiffContentProvider,
|
|
213
283
|
): Disposable;
|
|
284
|
+
/**
|
|
285
|
+
* The current buffer text of an open editor tab, including unsaved edits.
|
|
286
|
+
*
|
|
287
|
+
* Resolves `undefined` when the tab isn't text-backed (e.g. the image
|
|
288
|
+
* viewer) or hasn't mounted yet — a lazy-mounted dock panel is **not**
|
|
289
|
+
* force-mounted to read its text. It is async precisely because the text
|
|
290
|
+
* lives in the mounted editor component, not in host state.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```ts
|
|
294
|
+
* const text = await ctx.editors.getText(editorId);
|
|
295
|
+
* if (text !== undefined) ctx.log.info(`${text.length} chars`);
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
getText(editorId: string): Promise<string | undefined>;
|
|
299
|
+
/**
|
|
300
|
+
* Whether an open editor tab has unsaved changes. Returns `false` for an
|
|
301
|
+
* unknown id or a tab that isn't mounted / text-backed.
|
|
302
|
+
*/
|
|
303
|
+
isDirty(editorId: string): boolean;
|
|
304
|
+
/**
|
|
305
|
+
* Fires after an editor tab's contents are saved to disk — a formatter,
|
|
306
|
+
* linter, or build-on-save extension's entry point. See {@link Event}.
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* ```ts
|
|
310
|
+
* ctx.subscriptions.push(
|
|
311
|
+
* ctx.editors.onDidSave(({ editorId, filePath }) => {
|
|
312
|
+
* ctx.log.info(`saved ${filePath}`);
|
|
313
|
+
* }),
|
|
314
|
+
* );
|
|
315
|
+
* ```
|
|
316
|
+
*/
|
|
317
|
+
onDidSave: Event<EditorSaveEvent>;
|
|
318
|
+
/**
|
|
319
|
+
* Current frozen snapshot of editor state. The returned object is
|
|
320
|
+
* referentially stable between renders — `getState() === getState()` when
|
|
321
|
+
* nothing has changed, which satisfies `useSyncExternalStore`'s contract and
|
|
322
|
+
* means `useServiceState(ctx.editors)` works without extra memoization.
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```ts
|
|
326
|
+
* const { active } = ctx.editors.getState();
|
|
327
|
+
* if (active) ctx.log.info(`Active file: ${active.filePath ?? "(untitled)"}`);
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
330
|
+
getState(): EditorsState;
|
|
331
|
+
/**
|
|
332
|
+
* Subscribe to changes in the active editor. The listener is called whenever
|
|
333
|
+
* `active` changes (tab focus moves, workspace switches, editor opens or
|
|
334
|
+
* closes) or `hydrated` flips. Returns a {@link Disposable} that cancels the
|
|
335
|
+
* subscription.
|
|
336
|
+
*
|
|
337
|
+
* Use `useServiceState(ctx.editors)` in React components instead of calling
|
|
338
|
+
* `subscribe` directly — it wraps `getState` + `subscribe` for you.
|
|
339
|
+
*
|
|
340
|
+
* @example
|
|
341
|
+
* ```ts
|
|
342
|
+
* ctx.subscriptions.push(
|
|
343
|
+
* ctx.editors.subscribe(({ active }) => {
|
|
344
|
+
* statusItem.setTitle(active?.filePath ?? "No file");
|
|
345
|
+
* }),
|
|
346
|
+
* );
|
|
347
|
+
* ```
|
|
348
|
+
*/
|
|
349
|
+
subscribe(listener: (state: EditorsState) => void): Disposable;
|
|
214
350
|
}
|