@serviceme/devtools-core 2.0.0 → 2.0.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/dist/index.d.mts +189 -4
- package/dist/index.d.ts +189 -4
- package/dist/index.js +672 -269
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +665 -271
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -161,6 +161,27 @@ declare function copilotPrompt(options: CopilotPromptOptions): Promise<CopilotPr
|
|
|
161
161
|
*/
|
|
162
162
|
/** Artifact kinds a logical plugin can contribute to Copilot. */
|
|
163
163
|
type CopilotArtifactKind = "agent" | "skill" | "instruction" | "prompt" | "hook" | "mcp";
|
|
164
|
+
/** Parsed form of a content identity (see {@link buildContentIdentity}). */
|
|
165
|
+
interface ContentIdentity {
|
|
166
|
+
repoId: string;
|
|
167
|
+
pluginId: string;
|
|
168
|
+
kind: string;
|
|
169
|
+
name: string;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Build the stable content identity `${repoId}::${pluginId}::${kind}:${name}`.
|
|
173
|
+
* New code should always construct it through this helper; a few
|
|
174
|
+
* pre-existing sites (plugin-resolver, workspace-declaration-reader)
|
|
175
|
+
* still inline the same shape.
|
|
176
|
+
*/
|
|
177
|
+
declare function buildContentIdentity(identity: ContentIdentity): string;
|
|
178
|
+
/**
|
|
179
|
+
* Parse a content identity back into its parts. Returns null for
|
|
180
|
+
* anything that does not match the `${repoId}::${pluginId}::${kind}:${name}`
|
|
181
|
+
* shape (e.g. integration identities without a name tail are handled
|
|
182
|
+
* by their callers and should not be passed here).
|
|
183
|
+
*/
|
|
184
|
+
declare function parseContentIdentity(value: string): ContentIdentity | null;
|
|
164
185
|
/** A repository pinned to an exact commit for reproducible restoration. */
|
|
165
186
|
interface WorkspaceManifestRepository {
|
|
166
187
|
/** Stable id used in on-disk paths and plugin references. */
|
|
@@ -198,6 +219,10 @@ interface WorkspaceManifestPlugin {
|
|
|
198
219
|
artifacts: Partial<Record<CopilotArtifactKind, boolean>>;
|
|
199
220
|
/** Exact resolver artifact identities selected for this package. */
|
|
200
221
|
artifactIds?: string[];
|
|
222
|
+
/** Content targets (`kind:name`) deliberately disabled on installs of
|
|
223
|
+
* this package — part of the shared declaration so the disabled state
|
|
224
|
+
* survives extension reloads and machine-local state loss. */
|
|
225
|
+
disabledArtifacts?: string[];
|
|
201
226
|
}
|
|
202
227
|
/** A v2 logical plugin selection references any supported source type. */
|
|
203
228
|
interface WorkspaceManifestPluginV2 {
|
|
@@ -209,6 +234,10 @@ interface WorkspaceManifestPluginV2 {
|
|
|
209
234
|
artifacts: Partial<Record<CopilotArtifactKind, boolean>>;
|
|
210
235
|
/** Exact resolver artifact identities selected for this package. */
|
|
211
236
|
artifactIds?: string[];
|
|
237
|
+
/** Content targets (`kind:name`) deliberately disabled on installs of
|
|
238
|
+
* this package — part of the shared declaration so the disabled state
|
|
239
|
+
* survives extension reloads and machine-local state loss. */
|
|
240
|
+
disabledArtifacts?: string[];
|
|
212
241
|
}
|
|
213
242
|
/** Root shape of .github/serviceme-plugins.json. */
|
|
214
243
|
interface WorkspaceCopilotManifestV1 {
|
|
@@ -300,11 +329,18 @@ interface ResolvedPluginEntry extends PlannedContentEntry {
|
|
|
300
329
|
packageVersion?: string;
|
|
301
330
|
}
|
|
302
331
|
/** Resolve a workspace declaration into an immutable content plan. */
|
|
332
|
+
interface WorkspacePlanConflict {
|
|
333
|
+
/** Identity of the dropped (later) entry. */
|
|
334
|
+
identity: string;
|
|
335
|
+
/** Human-readable remediation hint naming both plugins. */
|
|
336
|
+
message: string;
|
|
337
|
+
}
|
|
303
338
|
declare function resolveWorkspaceContentPlan(input: {
|
|
304
339
|
manifest: WorkspaceCopilotManifest;
|
|
305
340
|
reposDir: string;
|
|
306
341
|
}): Promise<{
|
|
307
342
|
entries: ResolvedPluginEntry[];
|
|
343
|
+
conflicts: WorkspacePlanConflict[];
|
|
308
344
|
}>;
|
|
309
345
|
/**
|
|
310
346
|
* Lenient variant for CATALOG BROWSING: resolve a single plugin's
|
|
@@ -583,6 +619,11 @@ interface BuildCustomizationViewInput {
|
|
|
583
619
|
statesByArtifactId: Record<string, CopilotArtifactState>;
|
|
584
620
|
legacyCount?: number;
|
|
585
621
|
generatedAt?: string;
|
|
622
|
+
/** Content identities deliberately disabled on this machine (or in
|
|
623
|
+
* the shared declaration). They stay in the projection (so the UI can
|
|
624
|
+
* still render disabled rows) but no longer count as "enabled" in the
|
|
625
|
+
* health-card summary. */
|
|
626
|
+
disabledArtifactIds?: string[];
|
|
586
627
|
}
|
|
587
628
|
declare function buildCopilotCustomizationView(input: BuildCustomizationViewInput): CopilotCustomizationView;
|
|
588
629
|
|
|
@@ -608,8 +649,13 @@ interface DisabledContentState {
|
|
|
608
649
|
version: 1;
|
|
609
650
|
entries: DisabledContentEntry[];
|
|
610
651
|
}
|
|
611
|
-
/**
|
|
612
|
-
|
|
652
|
+
/**
|
|
653
|
+
* Identity matcher for the workspace reconciler's `isDisabled` seam.
|
|
654
|
+
* The mark's `name` is the ENTRY name (hello-skill), not the plugin id
|
|
655
|
+
* (hello), so the match keys on repoId + kind + entry name. User marks
|
|
656
|
+
* apply to any workspace; workspace marks only to their own.
|
|
657
|
+
*/
|
|
658
|
+
declare function buildDisabledIdentityMatcher(workspaceDir: string, marks: DisabledContentEntry[]): (identity: string) => boolean;
|
|
613
659
|
declare class DisabledContentStore {
|
|
614
660
|
private readonly homeDir;
|
|
615
661
|
constructor(options?: {
|
|
@@ -618,9 +664,22 @@ declare class DisabledContentStore {
|
|
|
618
664
|
/** Absolute store path: SERVICEME_HOME/copilot/disabled-content.json. */
|
|
619
665
|
path(): Promise<string>;
|
|
620
666
|
list(): Promise<DisabledContentEntry[]>;
|
|
621
|
-
has(matcher: DisabledContentMatcher): Promise<boolean>;
|
|
622
667
|
add(entry: DisabledContentEntry): Promise<void>;
|
|
623
668
|
remove(entry: DisabledContentEntry): Promise<void>;
|
|
669
|
+
/**
|
|
670
|
+
* Lifecycle cleanup: installing or uninstalling an artifact clears
|
|
671
|
+
* its disable marks for that scope — a mark without its artifact is
|
|
672
|
+
* stale garbage that keeps the home page showing a disabled row for
|
|
673
|
+
* content the catalog already reports as gone. User scope matches
|
|
674
|
+
* any workspace; workspace scope matches the exact workspace.
|
|
675
|
+
*/
|
|
676
|
+
removeForArtifact(input: {
|
|
677
|
+
repoId: string;
|
|
678
|
+
name: string;
|
|
679
|
+
kind: "skill" | "agent";
|
|
680
|
+
scope: "workspace" | "user";
|
|
681
|
+
workspaceDir?: string;
|
|
682
|
+
}): Promise<void>;
|
|
624
683
|
private write;
|
|
625
684
|
}
|
|
626
685
|
|
|
@@ -1156,6 +1215,115 @@ declare class CopilotSourceCatalogService {
|
|
|
1156
1215
|
removeSource(sourceId: string, workspaceDir?: string): Promise<void>;
|
|
1157
1216
|
}
|
|
1158
1217
|
|
|
1218
|
+
/**
|
|
1219
|
+
* Workspace content detection — the adoption inverse of the restore
|
|
1220
|
+
* flow. When a workspace carries Copilot content (`.github` skill/agent
|
|
1221
|
+
* entries, generated hook/MCP configuration) but has NO
|
|
1222
|
+
* `.github/serviceme-plugins.json` declaration, this module derives
|
|
1223
|
+
* what is there and where it came from, so the user can initialize the
|
|
1224
|
+
* declaration from existing content instead of reinstalling by hand.
|
|
1225
|
+
*
|
|
1226
|
+
* Provenance rules:
|
|
1227
|
+
* - symlinks under `.github/{skills,agents}` resolve their repo from
|
|
1228
|
+
* the target path (`<reposDir>/<repoId>/...`) — exact;
|
|
1229
|
+
* - real (non-symlink) copies are fingerprinted (deterministic
|
|
1230
|
+
* SHA-256 over the sorted tree/file bytes) and matched against the
|
|
1231
|
+
* repo catalog by name: a unique content match is adoptable,
|
|
1232
|
+
* several matching repos need a user pick, none is unmatched;
|
|
1233
|
+
* - `.vscode/{hooks,mcp}.serviceme.json` carry the generating
|
|
1234
|
+
* identity map under `_serviceme`, which is parsed directly.
|
|
1235
|
+
*/
|
|
1236
|
+
/** Minimal catalog row the detector matches fingerprints against. */
|
|
1237
|
+
interface DetectorCatalogEntry {
|
|
1238
|
+
repoId: string;
|
|
1239
|
+
name: string;
|
|
1240
|
+
kind: "skill" | "agent";
|
|
1241
|
+
/** Directory of the entry, or the manifest path itself for flat files. */
|
|
1242
|
+
dir: string;
|
|
1243
|
+
manifestPath: string;
|
|
1244
|
+
}
|
|
1245
|
+
/** A skill/agent whose source repo is known and can be adopted as-is. */
|
|
1246
|
+
interface UnmanagedAdoption {
|
|
1247
|
+
repoId: string;
|
|
1248
|
+
name: string;
|
|
1249
|
+
kind: "skill" | "agent";
|
|
1250
|
+
/** "symlink" — provenance exact from the link target;
|
|
1251
|
+
* "fingerprint" — real copy with a unique catalog content match. */
|
|
1252
|
+
source: "symlink" | "fingerprint";
|
|
1253
|
+
}
|
|
1254
|
+
/** A real copy whose content matches several repos — needs a pick. */
|
|
1255
|
+
interface UnmanagedAmbiguous {
|
|
1256
|
+
name: string;
|
|
1257
|
+
kind: "skill" | "agent";
|
|
1258
|
+
/** Repo ids whose catalog content is byte-identical. */
|
|
1259
|
+
candidates: string[];
|
|
1260
|
+
}
|
|
1261
|
+
/** A hook/MCP integration recorded in a generated serviceme config. */
|
|
1262
|
+
interface UnmanagedIntegration {
|
|
1263
|
+
repoId: string;
|
|
1264
|
+
pluginId: string;
|
|
1265
|
+
kind: "hook" | "mcp";
|
|
1266
|
+
}
|
|
1267
|
+
interface UnmanagedDetection {
|
|
1268
|
+
adoptions: UnmanagedAdoption[];
|
|
1269
|
+
ambiguous: UnmanagedAmbiguous[];
|
|
1270
|
+
integrations: UnmanagedIntegration[];
|
|
1271
|
+
/** Present but not adoptable — surfaced for transparency only. The
|
|
1272
|
+
* reason is a plain string so protocol-wire results are assignable. */
|
|
1273
|
+
unmatched: Array<{
|
|
1274
|
+
name: string;
|
|
1275
|
+
kind: string;
|
|
1276
|
+
reason: string;
|
|
1277
|
+
}>;
|
|
1278
|
+
}
|
|
1279
|
+
/** Stable signature of a detection — powers the dismissal memory. */
|
|
1280
|
+
declare function unmanagedDetectionSignature(detection: UnmanagedDetection): string;
|
|
1281
|
+
/** `skill:hello-skill`-style targets a plugin manifest declares. */
|
|
1282
|
+
declare function coveredTargetsOf(manifest: Record<string, unknown>): Set<string>;
|
|
1283
|
+
/**
|
|
1284
|
+
* Find the plugin under `<repoRoot>/plugins/` whose plugin.json
|
|
1285
|
+
* already declares `kind:name` — e.g. plugin `hello` covering
|
|
1286
|
+
* skill `hello-skill`. Per-artifact installs of covered content must
|
|
1287
|
+
* declare through the COVERING plugin, otherwise the standalone
|
|
1288
|
+
* selection collides with the plugin on the next reconcile.
|
|
1289
|
+
* Coverage comes from EITHER the manifest's extension path arrays OR
|
|
1290
|
+
* (for namespace-less "Create Plugin" manifests, where the resolver derives
|
|
1291
|
+
* content from directory conventions) the plugin dir's own
|
|
1292
|
+
* skills/agents subdirs. Returns null when no plugin covers it.
|
|
1293
|
+
*/
|
|
1294
|
+
declare function findPluginCoveringArtifact(repoRoot: string, kind: "skill" | "agent", name: string): Promise<string | null>;
|
|
1295
|
+
/**
|
|
1296
|
+
* Drop adoption entries whose target a sibling entry's plugin.json
|
|
1297
|
+
* already declares. Adopting `agent hello` registers plugin `hello`,
|
|
1298
|
+
* whose manifest also covers `skill hello-skill` — keeping the
|
|
1299
|
+
* standalone skill entry would create a duplicate-target conflict on
|
|
1300
|
+
* the next reconcile. Pure: manifests are passed in by the caller.
|
|
1301
|
+
*/
|
|
1302
|
+
declare function dedupeAdoptionsByPluginManifests<T extends {
|
|
1303
|
+
repoId: string;
|
|
1304
|
+
name: string;
|
|
1305
|
+
kind: "skill" | "agent";
|
|
1306
|
+
}>(entries: T[], pluginManifests: Map<string, Record<string, unknown>>): {
|
|
1307
|
+
kept: T[];
|
|
1308
|
+
dropped: Array<{
|
|
1309
|
+
entry: T;
|
|
1310
|
+
coveredBy: string;
|
|
1311
|
+
}>;
|
|
1312
|
+
};
|
|
1313
|
+
/**
|
|
1314
|
+
* Detect unmanaged Copilot content in a workspace. Read-only: nothing
|
|
1315
|
+
* is written or linked; the caller decides what to adopt.
|
|
1316
|
+
*/
|
|
1317
|
+
declare function detectUnmanagedWorkspaceContent(input: {
|
|
1318
|
+
workspaceDir: string;
|
|
1319
|
+
/** SERVICEME repos root (`~/.serviceme/repos`). */
|
|
1320
|
+
reposDir: string;
|
|
1321
|
+
/** Catalog rows (from SkillStore.listAll()). */
|
|
1322
|
+
catalog: DetectorCatalogEntry[];
|
|
1323
|
+
/** Enabled repo ids — targets/integrations outside them are unmatched. */
|
|
1324
|
+
knownRepoIds: Set<string>;
|
|
1325
|
+
}): Promise<UnmanagedDetection>;
|
|
1326
|
+
|
|
1159
1327
|
/**
|
|
1160
1328
|
* Read the workspace manifest’s declared package selections without resolving
|
|
1161
1329
|
* sources. Source resolution can fail (unavailable source, conflict), and
|
|
@@ -1227,6 +1395,23 @@ declare function removeWorkspaceContentSelection(input: {
|
|
|
1227
1395
|
pluginId: string;
|
|
1228
1396
|
kind: CopilotArtifactKind;
|
|
1229
1397
|
}): Promise<WorkspaceCopilotManifest>;
|
|
1398
|
+
/**
|
|
1399
|
+
* Record or clear one content target (`kind:name`) in a plugin
|
|
1400
|
+
* selection's `disabledArtifacts` — the shared-declaration form of the
|
|
1401
|
+
* per-artifact enable switch. Unlike the machine-local disable marks,
|
|
1402
|
+
* this survives extension reloads and machine-local state loss, so the
|
|
1403
|
+
* package/entry badges stay consistent with what the user disabled.
|
|
1404
|
+
* No-op (returns the loaded manifest unchanged) when the selection
|
|
1405
|
+
* does not exist.
|
|
1406
|
+
*/
|
|
1407
|
+
declare function setWorkspacePluginArtifactsDisabled(input: {
|
|
1408
|
+
workspaceDir: string;
|
|
1409
|
+
repositoryId: string;
|
|
1410
|
+
pluginId: string;
|
|
1411
|
+
/** Content target, e.g. `agent:hello`. */
|
|
1412
|
+
target: string;
|
|
1413
|
+
disabled: boolean;
|
|
1414
|
+
}): Promise<WorkspaceCopilotManifest | undefined>;
|
|
1230
1415
|
|
|
1231
1416
|
/** Hash a canonical workspace path into a stable directory segment. */
|
|
1232
1417
|
declare function hashWorkspaceDir(workspaceDir: string): Promise<string>;
|
|
@@ -2819,4 +3004,4 @@ declare function migrateLegacyUserSkillContent(input: {
|
|
|
2819
3004
|
declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
|
|
2820
3005
|
declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
|
|
2821
3006
|
|
|
2822
|
-
export { AGENT_DRAFTS_SUBDIR, type AddUserRepoInput, type AddUserRepoResult, type AgentCatalog, AgentCatalogClient, type AgentCatalogClientOptions, type AgentDownloadFile, type AgentInstallScope, type AgentMutateResult, AgentReconciler, type AgentReconcilerDependencies, AgentStore, type AgentStoreFileSystem, type AgentStoreOptions, type AgentsStateFile, type AnyRepoConfig, type AppendLogInput, type BootstrapPhase5Result, type BuildCustomizationViewInput, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CopilotArtifactKind, type CopilotArtifactState, type CopilotArtifactSummary, type CopilotArtifactView, type CopilotCustomizationView, type CopilotHostCapabilities, type CopilotInstallIntent, type CopilotIntegrationAdapter, CopilotLinkMaterializer, type CopilotLinkMode, type CopilotLocalGate, type CopilotMaterializationHealth, type CopilotPackageDefinition, type CopilotPackageInstallInput, type CopilotPackageInstallation, type CopilotPackageMoveInput, type CopilotPackageUninstallInput, type CopilotPackageUpdateInput, type CopilotPackageUpdatePreview, type CopilotPackageView, type CopilotPluginRegisterInput, CopilotPluginRegistrar, type CopilotPluginRegistrarOptions, type CopilotPluginRegistration, type CopilotScope, type CopilotSourceCatalogDeps, type CopilotSourceCatalogQuery, CopilotSourceCatalogService, type CopilotSourceRecord, type CopilotSourceSummary, type CopilotSourceView, type CopilotUpdatePreviewInput, type CopilotUserStatus, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type
|
|
3007
|
+
export { AGENT_DRAFTS_SUBDIR, type AddUserRepoInput, type AddUserRepoResult, type AgentCatalog, AgentCatalogClient, type AgentCatalogClientOptions, type AgentDownloadFile, type AgentInstallScope, type AgentMutateResult, AgentReconciler, type AgentReconcilerDependencies, AgentStore, type AgentStoreFileSystem, type AgentStoreOptions, type AgentsStateFile, type AnyRepoConfig, type AppendLogInput, type BootstrapPhase5Result, type BuildCustomizationViewInput, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type ContentIdentity, type CopilotArtifactKind, type CopilotArtifactState, type CopilotArtifactSummary, type CopilotArtifactView, type CopilotCustomizationView, type CopilotHostCapabilities, type CopilotInstallIntent, type CopilotIntegrationAdapter, CopilotLinkMaterializer, type CopilotLinkMode, type CopilotLocalGate, type CopilotMaterializationHealth, type CopilotPackageDefinition, type CopilotPackageInstallInput, type CopilotPackageInstallation, type CopilotPackageMoveInput, type CopilotPackageUninstallInput, type CopilotPackageUpdateInput, type CopilotPackageUpdatePreview, type CopilotPackageView, type CopilotPluginRegisterInput, CopilotPluginRegistrar, type CopilotPluginRegistrarOptions, type CopilotPluginRegistration, type CopilotScope, type CopilotSourceCatalogDeps, type CopilotSourceCatalogQuery, CopilotSourceCatalogService, type CopilotSourceRecord, type CopilotSourceSummary, type CopilotSourceView, type CopilotUpdatePreviewInput, type CopilotUserStatus, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DetectorCatalogEntry, type DisabledContentEntry, type DisabledContentState, DisabledContentStore, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, FileHookConfigAdapter, FileMcpConfigAdapter, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, type HookConfigAdapter, type HookDefinition, type HookEventDefinition, HttpRequestExecutor, ImageTools, type InstalledAgent, type IntegrationApplyResult, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LegacyMigrationEntry, type LegacyMigrationPreview, type LegacyUserContentEntry, type LegacyUserContentMigrationResult, type LegacyUserSkillEntry, type LegacyUserSkillMigrationResult, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MaterializeEntryResult, type MaterializeEntryStatus, type MaterializeResult, type McpConfigAdapter, type McpServerDefinition, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PackageInstallationService, type PackageInstallationServiceDeps, type PersonalContentState, PersonalCopilotContentReconciler, type PersonalInstallationState, PersonalInstallationStore, type PersonalLinkKind, type PersonalPackageResolver, type PersonalReconcileResult, PidManager, type PlannedContentEntry, type PluginCatalogPackage, type PluginCatalogRepoInput, type PluginCatalogService, type ProbeError, type ProbeOptions, type ProbeResult, ProjectTools, REPOS_CONFIG_FILENAME, REPOS_SUBDIR, RepoAlreadyExistsError, RepoCloneConflictError, type RepoConfig, RepoManager, RepoManagerError, type RepoManagerOptions, RepoNotFoundError, RepoNotInStoreError, type RepoSource, type ReposFile, type ReposFileInput, ReposLoader, type ReposLoaderFileSystem, type ReposLoaderOptions, ReposStore, type ReposStoreChange, type ReposStoreFileSystem, type ReposStoreListener, type ReposStoreOptions, type ResolvedPluginEntry, type ResolvedPluginManifest, SAFE_REPO_ID_PATTERN, SCHEDULED_TASKS_CONFIG_FILENAME, SCHEDULED_TASKS_LOG_FILENAME, SCHEDULER_LOCK_FILENAME, SCHEDULER_LOG_FILENAME, SCHEDULER_PID_FILENAME, SERVER_PROXY_GLOBAL_FILENAME, SERVICEME_DIR_NAME, SERVICEME_HOME_ENV, SKILL_DRAFTS_SUBDIR, type SaveDraftOptions, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServerProxyGlobalPatch, type ServerProxyGlobalState, ShellExecutor, type SkillCatalog, SkillCatalogClient, type SkillCatalogClientOptions, type SkillDownloadFile, type SkillMutateResult, SkillReconciler, type SkillReconcilerDependencies, SkillStore, type SkillStoreFileSystem, type SkillStoreOptions, type StreamingExecutorHandle, type StreamingTaskExecutor, type SyncReport, type SyncStatus, TOOLBOX_JSON_FILENAME, TOOL_RISK_MAP, TaskConfigManager, type TaskEventListener, TaskExecutionEngine, type TaskExecutor, TaskLogManager, type UnmanagedAdoption, type UnmanagedAmbiguous, type UnmanagedDetection, type UnmanagedIntegration, type UserRepoConfig, WORKSPACES_SUBDIR, WORKSPACE_CONTENT_STATE_FILENAME, WORKSPACE_MANIFEST_RELPATH, type WorkspaceContentEntryResult, type WorkspaceContentPlan, type WorkspaceContentReconcileResult, type WorkspaceContentState, WorkspaceContentStateStore, type WorkspaceContentStatus, WorkspaceCopilotContentReconciler, type WorkspaceCopilotManifest, type WorkspaceCopilotManifestV1, type WorkspaceCopilotManifestV2, WorkspaceExcludeStore, type WorkspaceManifestCatalogSource, type WorkspaceManifestGitSource, type WorkspaceManifestPlugin, type WorkspaceManifestPluginV2, type WorkspaceManifestRepository, type WorkspaceManifestSource, type WorkspaceMaterializedEntry, type WorkspacePlanConflict, WorkspaceProbe, allPersonalLinkKinds, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildContentIdentity, buildCopilotCustomizationView, buildDefaultReposFile, buildDisabledIdentityMatcher, copilotDoctor, copilotPrompt, coveredTargetsOf, createCopilotAuthRequiredError, createCopilotNotInstalledError, createDefaultCopilotHostCapabilities, createImageTools, createJsonTools, createPluginCatalogService, createProjectTools, createReposStore, dedupeAdoptionsByPluginManifests, defaultRepoSchema as defaultRepoConfigSchema, deriveCopilotUserStatus, detectUnmanagedWorkspaceContent, ensureDefaultsInstalled, findPluginCoveringArtifact, findPluginMcpJson, findRepoHooksJson, generateDraftId, getAgentDraftsDir, getAllDefaultRepoConfigs, getCacheDir, getCredentialsConfigPath, getDefaultRepoConfig, getDeviceJsonPath, getDraftsDir, getExecutor, getHomeDir, getHomePlatform, getKnownWorkspacesPath, getMachineIdPath, getMigrationFailuresPath, getProfilesJsonPath, getRepoCacheDir, getRepoDir, getReposConfigPath, getReposDir, getScheduledTasksConfigPath, getScheduledTasksLogPath, getSchedulerLockPath, getSchedulerLogPath, getSchedulerPidPath, getServerProxyGlobalPath, getServicemeHome, getSkillDraftsDir, getToolboxJsonPath, getWorkspaceManifestPath, getWorkspaceManifestPluginSourceId, getWorkspaceManifestSources, getWorkspaceStateDir, getWorkspacesDir, hashWorkspaceDir, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, listPluginCatalog, loadWorkspaceCopilotManifest, migrateLegacyServerProxyEnabled, migrateLegacyUserContent, migrateLegacyUserSkillContent, migrateToGlobal, moveFiles, narrowRepoConfig, parseAgentToolPermissions, parseContentIdentity, parseHooksJson, parseMcpJson, readDeclaredWorkspaceInstallations, readServerProxyGlobal, removeWorkspaceContentSelection, replaceWorkspaceContentSelection, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolvePluginEntriesLenient, resolveTaskExecutionPayload, resolveWorkspaceContentPlan, setUserHomeOverrides, setWorkspacePluginArtifactsDisabled, supportsPersonalIntegrationKind, supportsPersonalLinkKind, toArtifactSummary, unmanagedDetectionSignature, unzipFile, upsertWorkspaceContentSelection, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeServerProxyGlobal, writeWorkspaceCopilotManifest };
|
package/dist/index.d.ts
CHANGED
|
@@ -161,6 +161,27 @@ declare function copilotPrompt(options: CopilotPromptOptions): Promise<CopilotPr
|
|
|
161
161
|
*/
|
|
162
162
|
/** Artifact kinds a logical plugin can contribute to Copilot. */
|
|
163
163
|
type CopilotArtifactKind = "agent" | "skill" | "instruction" | "prompt" | "hook" | "mcp";
|
|
164
|
+
/** Parsed form of a content identity (see {@link buildContentIdentity}). */
|
|
165
|
+
interface ContentIdentity {
|
|
166
|
+
repoId: string;
|
|
167
|
+
pluginId: string;
|
|
168
|
+
kind: string;
|
|
169
|
+
name: string;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Build the stable content identity `${repoId}::${pluginId}::${kind}:${name}`.
|
|
173
|
+
* New code should always construct it through this helper; a few
|
|
174
|
+
* pre-existing sites (plugin-resolver, workspace-declaration-reader)
|
|
175
|
+
* still inline the same shape.
|
|
176
|
+
*/
|
|
177
|
+
declare function buildContentIdentity(identity: ContentIdentity): string;
|
|
178
|
+
/**
|
|
179
|
+
* Parse a content identity back into its parts. Returns null for
|
|
180
|
+
* anything that does not match the `${repoId}::${pluginId}::${kind}:${name}`
|
|
181
|
+
* shape (e.g. integration identities without a name tail are handled
|
|
182
|
+
* by their callers and should not be passed here).
|
|
183
|
+
*/
|
|
184
|
+
declare function parseContentIdentity(value: string): ContentIdentity | null;
|
|
164
185
|
/** A repository pinned to an exact commit for reproducible restoration. */
|
|
165
186
|
interface WorkspaceManifestRepository {
|
|
166
187
|
/** Stable id used in on-disk paths and plugin references. */
|
|
@@ -198,6 +219,10 @@ interface WorkspaceManifestPlugin {
|
|
|
198
219
|
artifacts: Partial<Record<CopilotArtifactKind, boolean>>;
|
|
199
220
|
/** Exact resolver artifact identities selected for this package. */
|
|
200
221
|
artifactIds?: string[];
|
|
222
|
+
/** Content targets (`kind:name`) deliberately disabled on installs of
|
|
223
|
+
* this package — part of the shared declaration so the disabled state
|
|
224
|
+
* survives extension reloads and machine-local state loss. */
|
|
225
|
+
disabledArtifacts?: string[];
|
|
201
226
|
}
|
|
202
227
|
/** A v2 logical plugin selection references any supported source type. */
|
|
203
228
|
interface WorkspaceManifestPluginV2 {
|
|
@@ -209,6 +234,10 @@ interface WorkspaceManifestPluginV2 {
|
|
|
209
234
|
artifacts: Partial<Record<CopilotArtifactKind, boolean>>;
|
|
210
235
|
/** Exact resolver artifact identities selected for this package. */
|
|
211
236
|
artifactIds?: string[];
|
|
237
|
+
/** Content targets (`kind:name`) deliberately disabled on installs of
|
|
238
|
+
* this package — part of the shared declaration so the disabled state
|
|
239
|
+
* survives extension reloads and machine-local state loss. */
|
|
240
|
+
disabledArtifacts?: string[];
|
|
212
241
|
}
|
|
213
242
|
/** Root shape of .github/serviceme-plugins.json. */
|
|
214
243
|
interface WorkspaceCopilotManifestV1 {
|
|
@@ -300,11 +329,18 @@ interface ResolvedPluginEntry extends PlannedContentEntry {
|
|
|
300
329
|
packageVersion?: string;
|
|
301
330
|
}
|
|
302
331
|
/** Resolve a workspace declaration into an immutable content plan. */
|
|
332
|
+
interface WorkspacePlanConflict {
|
|
333
|
+
/** Identity of the dropped (later) entry. */
|
|
334
|
+
identity: string;
|
|
335
|
+
/** Human-readable remediation hint naming both plugins. */
|
|
336
|
+
message: string;
|
|
337
|
+
}
|
|
303
338
|
declare function resolveWorkspaceContentPlan(input: {
|
|
304
339
|
manifest: WorkspaceCopilotManifest;
|
|
305
340
|
reposDir: string;
|
|
306
341
|
}): Promise<{
|
|
307
342
|
entries: ResolvedPluginEntry[];
|
|
343
|
+
conflicts: WorkspacePlanConflict[];
|
|
308
344
|
}>;
|
|
309
345
|
/**
|
|
310
346
|
* Lenient variant for CATALOG BROWSING: resolve a single plugin's
|
|
@@ -583,6 +619,11 @@ interface BuildCustomizationViewInput {
|
|
|
583
619
|
statesByArtifactId: Record<string, CopilotArtifactState>;
|
|
584
620
|
legacyCount?: number;
|
|
585
621
|
generatedAt?: string;
|
|
622
|
+
/** Content identities deliberately disabled on this machine (or in
|
|
623
|
+
* the shared declaration). They stay in the projection (so the UI can
|
|
624
|
+
* still render disabled rows) but no longer count as "enabled" in the
|
|
625
|
+
* health-card summary. */
|
|
626
|
+
disabledArtifactIds?: string[];
|
|
586
627
|
}
|
|
587
628
|
declare function buildCopilotCustomizationView(input: BuildCustomizationViewInput): CopilotCustomizationView;
|
|
588
629
|
|
|
@@ -608,8 +649,13 @@ interface DisabledContentState {
|
|
|
608
649
|
version: 1;
|
|
609
650
|
entries: DisabledContentEntry[];
|
|
610
651
|
}
|
|
611
|
-
/**
|
|
612
|
-
|
|
652
|
+
/**
|
|
653
|
+
* Identity matcher for the workspace reconciler's `isDisabled` seam.
|
|
654
|
+
* The mark's `name` is the ENTRY name (hello-skill), not the plugin id
|
|
655
|
+
* (hello), so the match keys on repoId + kind + entry name. User marks
|
|
656
|
+
* apply to any workspace; workspace marks only to their own.
|
|
657
|
+
*/
|
|
658
|
+
declare function buildDisabledIdentityMatcher(workspaceDir: string, marks: DisabledContentEntry[]): (identity: string) => boolean;
|
|
613
659
|
declare class DisabledContentStore {
|
|
614
660
|
private readonly homeDir;
|
|
615
661
|
constructor(options?: {
|
|
@@ -618,9 +664,22 @@ declare class DisabledContentStore {
|
|
|
618
664
|
/** Absolute store path: SERVICEME_HOME/copilot/disabled-content.json. */
|
|
619
665
|
path(): Promise<string>;
|
|
620
666
|
list(): Promise<DisabledContentEntry[]>;
|
|
621
|
-
has(matcher: DisabledContentMatcher): Promise<boolean>;
|
|
622
667
|
add(entry: DisabledContentEntry): Promise<void>;
|
|
623
668
|
remove(entry: DisabledContentEntry): Promise<void>;
|
|
669
|
+
/**
|
|
670
|
+
* Lifecycle cleanup: installing or uninstalling an artifact clears
|
|
671
|
+
* its disable marks for that scope — a mark without its artifact is
|
|
672
|
+
* stale garbage that keeps the home page showing a disabled row for
|
|
673
|
+
* content the catalog already reports as gone. User scope matches
|
|
674
|
+
* any workspace; workspace scope matches the exact workspace.
|
|
675
|
+
*/
|
|
676
|
+
removeForArtifact(input: {
|
|
677
|
+
repoId: string;
|
|
678
|
+
name: string;
|
|
679
|
+
kind: "skill" | "agent";
|
|
680
|
+
scope: "workspace" | "user";
|
|
681
|
+
workspaceDir?: string;
|
|
682
|
+
}): Promise<void>;
|
|
624
683
|
private write;
|
|
625
684
|
}
|
|
626
685
|
|
|
@@ -1156,6 +1215,115 @@ declare class CopilotSourceCatalogService {
|
|
|
1156
1215
|
removeSource(sourceId: string, workspaceDir?: string): Promise<void>;
|
|
1157
1216
|
}
|
|
1158
1217
|
|
|
1218
|
+
/**
|
|
1219
|
+
* Workspace content detection — the adoption inverse of the restore
|
|
1220
|
+
* flow. When a workspace carries Copilot content (`.github` skill/agent
|
|
1221
|
+
* entries, generated hook/MCP configuration) but has NO
|
|
1222
|
+
* `.github/serviceme-plugins.json` declaration, this module derives
|
|
1223
|
+
* what is there and where it came from, so the user can initialize the
|
|
1224
|
+
* declaration from existing content instead of reinstalling by hand.
|
|
1225
|
+
*
|
|
1226
|
+
* Provenance rules:
|
|
1227
|
+
* - symlinks under `.github/{skills,agents}` resolve their repo from
|
|
1228
|
+
* the target path (`<reposDir>/<repoId>/...`) — exact;
|
|
1229
|
+
* - real (non-symlink) copies are fingerprinted (deterministic
|
|
1230
|
+
* SHA-256 over the sorted tree/file bytes) and matched against the
|
|
1231
|
+
* repo catalog by name: a unique content match is adoptable,
|
|
1232
|
+
* several matching repos need a user pick, none is unmatched;
|
|
1233
|
+
* - `.vscode/{hooks,mcp}.serviceme.json` carry the generating
|
|
1234
|
+
* identity map under `_serviceme`, which is parsed directly.
|
|
1235
|
+
*/
|
|
1236
|
+
/** Minimal catalog row the detector matches fingerprints against. */
|
|
1237
|
+
interface DetectorCatalogEntry {
|
|
1238
|
+
repoId: string;
|
|
1239
|
+
name: string;
|
|
1240
|
+
kind: "skill" | "agent";
|
|
1241
|
+
/** Directory of the entry, or the manifest path itself for flat files. */
|
|
1242
|
+
dir: string;
|
|
1243
|
+
manifestPath: string;
|
|
1244
|
+
}
|
|
1245
|
+
/** A skill/agent whose source repo is known and can be adopted as-is. */
|
|
1246
|
+
interface UnmanagedAdoption {
|
|
1247
|
+
repoId: string;
|
|
1248
|
+
name: string;
|
|
1249
|
+
kind: "skill" | "agent";
|
|
1250
|
+
/** "symlink" — provenance exact from the link target;
|
|
1251
|
+
* "fingerprint" — real copy with a unique catalog content match. */
|
|
1252
|
+
source: "symlink" | "fingerprint";
|
|
1253
|
+
}
|
|
1254
|
+
/** A real copy whose content matches several repos — needs a pick. */
|
|
1255
|
+
interface UnmanagedAmbiguous {
|
|
1256
|
+
name: string;
|
|
1257
|
+
kind: "skill" | "agent";
|
|
1258
|
+
/** Repo ids whose catalog content is byte-identical. */
|
|
1259
|
+
candidates: string[];
|
|
1260
|
+
}
|
|
1261
|
+
/** A hook/MCP integration recorded in a generated serviceme config. */
|
|
1262
|
+
interface UnmanagedIntegration {
|
|
1263
|
+
repoId: string;
|
|
1264
|
+
pluginId: string;
|
|
1265
|
+
kind: "hook" | "mcp";
|
|
1266
|
+
}
|
|
1267
|
+
interface UnmanagedDetection {
|
|
1268
|
+
adoptions: UnmanagedAdoption[];
|
|
1269
|
+
ambiguous: UnmanagedAmbiguous[];
|
|
1270
|
+
integrations: UnmanagedIntegration[];
|
|
1271
|
+
/** Present but not adoptable — surfaced for transparency only. The
|
|
1272
|
+
* reason is a plain string so protocol-wire results are assignable. */
|
|
1273
|
+
unmatched: Array<{
|
|
1274
|
+
name: string;
|
|
1275
|
+
kind: string;
|
|
1276
|
+
reason: string;
|
|
1277
|
+
}>;
|
|
1278
|
+
}
|
|
1279
|
+
/** Stable signature of a detection — powers the dismissal memory. */
|
|
1280
|
+
declare function unmanagedDetectionSignature(detection: UnmanagedDetection): string;
|
|
1281
|
+
/** `skill:hello-skill`-style targets a plugin manifest declares. */
|
|
1282
|
+
declare function coveredTargetsOf(manifest: Record<string, unknown>): Set<string>;
|
|
1283
|
+
/**
|
|
1284
|
+
* Find the plugin under `<repoRoot>/plugins/` whose plugin.json
|
|
1285
|
+
* already declares `kind:name` — e.g. plugin `hello` covering
|
|
1286
|
+
* skill `hello-skill`. Per-artifact installs of covered content must
|
|
1287
|
+
* declare through the COVERING plugin, otherwise the standalone
|
|
1288
|
+
* selection collides with the plugin on the next reconcile.
|
|
1289
|
+
* Coverage comes from EITHER the manifest's extension path arrays OR
|
|
1290
|
+
* (for namespace-less "Create Plugin" manifests, where the resolver derives
|
|
1291
|
+
* content from directory conventions) the plugin dir's own
|
|
1292
|
+
* skills/agents subdirs. Returns null when no plugin covers it.
|
|
1293
|
+
*/
|
|
1294
|
+
declare function findPluginCoveringArtifact(repoRoot: string, kind: "skill" | "agent", name: string): Promise<string | null>;
|
|
1295
|
+
/**
|
|
1296
|
+
* Drop adoption entries whose target a sibling entry's plugin.json
|
|
1297
|
+
* already declares. Adopting `agent hello` registers plugin `hello`,
|
|
1298
|
+
* whose manifest also covers `skill hello-skill` — keeping the
|
|
1299
|
+
* standalone skill entry would create a duplicate-target conflict on
|
|
1300
|
+
* the next reconcile. Pure: manifests are passed in by the caller.
|
|
1301
|
+
*/
|
|
1302
|
+
declare function dedupeAdoptionsByPluginManifests<T extends {
|
|
1303
|
+
repoId: string;
|
|
1304
|
+
name: string;
|
|
1305
|
+
kind: "skill" | "agent";
|
|
1306
|
+
}>(entries: T[], pluginManifests: Map<string, Record<string, unknown>>): {
|
|
1307
|
+
kept: T[];
|
|
1308
|
+
dropped: Array<{
|
|
1309
|
+
entry: T;
|
|
1310
|
+
coveredBy: string;
|
|
1311
|
+
}>;
|
|
1312
|
+
};
|
|
1313
|
+
/**
|
|
1314
|
+
* Detect unmanaged Copilot content in a workspace. Read-only: nothing
|
|
1315
|
+
* is written or linked; the caller decides what to adopt.
|
|
1316
|
+
*/
|
|
1317
|
+
declare function detectUnmanagedWorkspaceContent(input: {
|
|
1318
|
+
workspaceDir: string;
|
|
1319
|
+
/** SERVICEME repos root (`~/.serviceme/repos`). */
|
|
1320
|
+
reposDir: string;
|
|
1321
|
+
/** Catalog rows (from SkillStore.listAll()). */
|
|
1322
|
+
catalog: DetectorCatalogEntry[];
|
|
1323
|
+
/** Enabled repo ids — targets/integrations outside them are unmatched. */
|
|
1324
|
+
knownRepoIds: Set<string>;
|
|
1325
|
+
}): Promise<UnmanagedDetection>;
|
|
1326
|
+
|
|
1159
1327
|
/**
|
|
1160
1328
|
* Read the workspace manifest’s declared package selections without resolving
|
|
1161
1329
|
* sources. Source resolution can fail (unavailable source, conflict), and
|
|
@@ -1227,6 +1395,23 @@ declare function removeWorkspaceContentSelection(input: {
|
|
|
1227
1395
|
pluginId: string;
|
|
1228
1396
|
kind: CopilotArtifactKind;
|
|
1229
1397
|
}): Promise<WorkspaceCopilotManifest>;
|
|
1398
|
+
/**
|
|
1399
|
+
* Record or clear one content target (`kind:name`) in a plugin
|
|
1400
|
+
* selection's `disabledArtifacts` — the shared-declaration form of the
|
|
1401
|
+
* per-artifact enable switch. Unlike the machine-local disable marks,
|
|
1402
|
+
* this survives extension reloads and machine-local state loss, so the
|
|
1403
|
+
* package/entry badges stay consistent with what the user disabled.
|
|
1404
|
+
* No-op (returns the loaded manifest unchanged) when the selection
|
|
1405
|
+
* does not exist.
|
|
1406
|
+
*/
|
|
1407
|
+
declare function setWorkspacePluginArtifactsDisabled(input: {
|
|
1408
|
+
workspaceDir: string;
|
|
1409
|
+
repositoryId: string;
|
|
1410
|
+
pluginId: string;
|
|
1411
|
+
/** Content target, e.g. `agent:hello`. */
|
|
1412
|
+
target: string;
|
|
1413
|
+
disabled: boolean;
|
|
1414
|
+
}): Promise<WorkspaceCopilotManifest | undefined>;
|
|
1230
1415
|
|
|
1231
1416
|
/** Hash a canonical workspace path into a stable directory segment. */
|
|
1232
1417
|
declare function hashWorkspaceDir(workspaceDir: string): Promise<string>;
|
|
@@ -2819,4 +3004,4 @@ declare function migrateLegacyUserSkillContent(input: {
|
|
|
2819
3004
|
declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
|
|
2820
3005
|
declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
|
|
2821
3006
|
|
|
2822
|
-
export { AGENT_DRAFTS_SUBDIR, type AddUserRepoInput, type AddUserRepoResult, type AgentCatalog, AgentCatalogClient, type AgentCatalogClientOptions, type AgentDownloadFile, type AgentInstallScope, type AgentMutateResult, AgentReconciler, type AgentReconcilerDependencies, AgentStore, type AgentStoreFileSystem, type AgentStoreOptions, type AgentsStateFile, type AnyRepoConfig, type AppendLogInput, type BootstrapPhase5Result, type BuildCustomizationViewInput, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CopilotArtifactKind, type CopilotArtifactState, type CopilotArtifactSummary, type CopilotArtifactView, type CopilotCustomizationView, type CopilotHostCapabilities, type CopilotInstallIntent, type CopilotIntegrationAdapter, CopilotLinkMaterializer, type CopilotLinkMode, type CopilotLocalGate, type CopilotMaterializationHealth, type CopilotPackageDefinition, type CopilotPackageInstallInput, type CopilotPackageInstallation, type CopilotPackageMoveInput, type CopilotPackageUninstallInput, type CopilotPackageUpdateInput, type CopilotPackageUpdatePreview, type CopilotPackageView, type CopilotPluginRegisterInput, CopilotPluginRegistrar, type CopilotPluginRegistrarOptions, type CopilotPluginRegistration, type CopilotScope, type CopilotSourceCatalogDeps, type CopilotSourceCatalogQuery, CopilotSourceCatalogService, type CopilotSourceRecord, type CopilotSourceSummary, type CopilotSourceView, type CopilotUpdatePreviewInput, type CopilotUserStatus, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type
|
|
3007
|
+
export { AGENT_DRAFTS_SUBDIR, type AddUserRepoInput, type AddUserRepoResult, type AgentCatalog, AgentCatalogClient, type AgentCatalogClientOptions, type AgentDownloadFile, type AgentInstallScope, type AgentMutateResult, AgentReconciler, type AgentReconcilerDependencies, AgentStore, type AgentStoreFileSystem, type AgentStoreOptions, type AgentsStateFile, type AnyRepoConfig, type AppendLogInput, type BootstrapPhase5Result, type BuildCustomizationViewInput, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type ContentIdentity, type CopilotArtifactKind, type CopilotArtifactState, type CopilotArtifactSummary, type CopilotArtifactView, type CopilotCustomizationView, type CopilotHostCapabilities, type CopilotInstallIntent, type CopilotIntegrationAdapter, CopilotLinkMaterializer, type CopilotLinkMode, type CopilotLocalGate, type CopilotMaterializationHealth, type CopilotPackageDefinition, type CopilotPackageInstallInput, type CopilotPackageInstallation, type CopilotPackageMoveInput, type CopilotPackageUninstallInput, type CopilotPackageUpdateInput, type CopilotPackageUpdatePreview, type CopilotPackageView, type CopilotPluginRegisterInput, CopilotPluginRegistrar, type CopilotPluginRegistrarOptions, type CopilotPluginRegistration, type CopilotScope, type CopilotSourceCatalogDeps, type CopilotSourceCatalogQuery, CopilotSourceCatalogService, type CopilotSourceRecord, type CopilotSourceSummary, type CopilotSourceView, type CopilotUpdatePreviewInput, type CopilotUserStatus, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DetectorCatalogEntry, type DisabledContentEntry, type DisabledContentState, DisabledContentStore, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, FileHookConfigAdapter, FileMcpConfigAdapter, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, type HookConfigAdapter, type HookDefinition, type HookEventDefinition, HttpRequestExecutor, ImageTools, type InstalledAgent, type IntegrationApplyResult, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LegacyMigrationEntry, type LegacyMigrationPreview, type LegacyUserContentEntry, type LegacyUserContentMigrationResult, type LegacyUserSkillEntry, type LegacyUserSkillMigrationResult, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MaterializeEntryResult, type MaterializeEntryStatus, type MaterializeResult, type McpConfigAdapter, type McpServerDefinition, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PackageInstallationService, type PackageInstallationServiceDeps, type PersonalContentState, PersonalCopilotContentReconciler, type PersonalInstallationState, PersonalInstallationStore, type PersonalLinkKind, type PersonalPackageResolver, type PersonalReconcileResult, PidManager, type PlannedContentEntry, type PluginCatalogPackage, type PluginCatalogRepoInput, type PluginCatalogService, type ProbeError, type ProbeOptions, type ProbeResult, ProjectTools, REPOS_CONFIG_FILENAME, REPOS_SUBDIR, RepoAlreadyExistsError, RepoCloneConflictError, type RepoConfig, RepoManager, RepoManagerError, type RepoManagerOptions, RepoNotFoundError, RepoNotInStoreError, type RepoSource, type ReposFile, type ReposFileInput, ReposLoader, type ReposLoaderFileSystem, type ReposLoaderOptions, ReposStore, type ReposStoreChange, type ReposStoreFileSystem, type ReposStoreListener, type ReposStoreOptions, type ResolvedPluginEntry, type ResolvedPluginManifest, SAFE_REPO_ID_PATTERN, SCHEDULED_TASKS_CONFIG_FILENAME, SCHEDULED_TASKS_LOG_FILENAME, SCHEDULER_LOCK_FILENAME, SCHEDULER_LOG_FILENAME, SCHEDULER_PID_FILENAME, SERVER_PROXY_GLOBAL_FILENAME, SERVICEME_DIR_NAME, SERVICEME_HOME_ENV, SKILL_DRAFTS_SUBDIR, type SaveDraftOptions, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServerProxyGlobalPatch, type ServerProxyGlobalState, ShellExecutor, type SkillCatalog, SkillCatalogClient, type SkillCatalogClientOptions, type SkillDownloadFile, type SkillMutateResult, SkillReconciler, type SkillReconcilerDependencies, SkillStore, type SkillStoreFileSystem, type SkillStoreOptions, type StreamingExecutorHandle, type StreamingTaskExecutor, type SyncReport, type SyncStatus, TOOLBOX_JSON_FILENAME, TOOL_RISK_MAP, TaskConfigManager, type TaskEventListener, TaskExecutionEngine, type TaskExecutor, TaskLogManager, type UnmanagedAdoption, type UnmanagedAmbiguous, type UnmanagedDetection, type UnmanagedIntegration, type UserRepoConfig, WORKSPACES_SUBDIR, WORKSPACE_CONTENT_STATE_FILENAME, WORKSPACE_MANIFEST_RELPATH, type WorkspaceContentEntryResult, type WorkspaceContentPlan, type WorkspaceContentReconcileResult, type WorkspaceContentState, WorkspaceContentStateStore, type WorkspaceContentStatus, WorkspaceCopilotContentReconciler, type WorkspaceCopilotManifest, type WorkspaceCopilotManifestV1, type WorkspaceCopilotManifestV2, WorkspaceExcludeStore, type WorkspaceManifestCatalogSource, type WorkspaceManifestGitSource, type WorkspaceManifestPlugin, type WorkspaceManifestPluginV2, type WorkspaceManifestRepository, type WorkspaceManifestSource, type WorkspaceMaterializedEntry, type WorkspacePlanConflict, WorkspaceProbe, allPersonalLinkKinds, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildContentIdentity, buildCopilotCustomizationView, buildDefaultReposFile, buildDisabledIdentityMatcher, copilotDoctor, copilotPrompt, coveredTargetsOf, createCopilotAuthRequiredError, createCopilotNotInstalledError, createDefaultCopilotHostCapabilities, createImageTools, createJsonTools, createPluginCatalogService, createProjectTools, createReposStore, dedupeAdoptionsByPluginManifests, defaultRepoSchema as defaultRepoConfigSchema, deriveCopilotUserStatus, detectUnmanagedWorkspaceContent, ensureDefaultsInstalled, findPluginCoveringArtifact, findPluginMcpJson, findRepoHooksJson, generateDraftId, getAgentDraftsDir, getAllDefaultRepoConfigs, getCacheDir, getCredentialsConfigPath, getDefaultRepoConfig, getDeviceJsonPath, getDraftsDir, getExecutor, getHomeDir, getHomePlatform, getKnownWorkspacesPath, getMachineIdPath, getMigrationFailuresPath, getProfilesJsonPath, getRepoCacheDir, getRepoDir, getReposConfigPath, getReposDir, getScheduledTasksConfigPath, getScheduledTasksLogPath, getSchedulerLockPath, getSchedulerLogPath, getSchedulerPidPath, getServerProxyGlobalPath, getServicemeHome, getSkillDraftsDir, getToolboxJsonPath, getWorkspaceManifestPath, getWorkspaceManifestPluginSourceId, getWorkspaceManifestSources, getWorkspaceStateDir, getWorkspacesDir, hashWorkspaceDir, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, listPluginCatalog, loadWorkspaceCopilotManifest, migrateLegacyServerProxyEnabled, migrateLegacyUserContent, migrateLegacyUserSkillContent, migrateToGlobal, moveFiles, narrowRepoConfig, parseAgentToolPermissions, parseContentIdentity, parseHooksJson, parseMcpJson, readDeclaredWorkspaceInstallations, readServerProxyGlobal, removeWorkspaceContentSelection, replaceWorkspaceContentSelection, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolvePluginEntriesLenient, resolveTaskExecutionPayload, resolveWorkspaceContentPlan, setUserHomeOverrides, setWorkspacePluginArtifactsDisabled, supportsPersonalIntegrationKind, supportsPersonalLinkKind, toArtifactSummary, unmanagedDetectionSignature, unzipFile, upsertWorkspaceContentSelection, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeServerProxyGlobal, writeWorkspaceCopilotManifest };
|