@serviceme/devtools-core 2.0.3 → 2.0.5

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.
Files changed (48) hide show
  1. package/dist/{device-Bn2NzajD.mjs → device-BVcUUQ9t.mjs} +2 -2
  2. package/dist/{device-Bn2NzajD.mjs.map → device-BVcUUQ9t.mjs.map} +1 -1
  3. package/dist/device-DCo0rgUt.mjs +793 -0
  4. package/dist/device-DCo0rgUt.mjs.map +1 -0
  5. package/dist/device-uFAQxlNt.js +874 -0
  6. package/dist/device-uFAQxlNt.js.map +1 -0
  7. package/dist/device-yWpY_Zds.js +874 -0
  8. package/dist/device-yWpY_Zds.js.map +1 -0
  9. package/dist/device.js +1 -1
  10. package/dist/device.mjs +1 -1
  11. package/dist/index.d.mts +12 -81
  12. package/dist/index.d.ts +12 -81
  13. package/dist/index.js +72 -138
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +74 -135
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/skill-linker.js +1 -1
  18. package/dist/skill-linker.mjs +1 -1
  19. package/dist/{submit-Cg7wSa3x.mjs → submit-6zQPPrOJ.mjs} +2 -2
  20. package/dist/{submit-Cg7wSa3x.mjs.map → submit-6zQPPrOJ.mjs.map} +1 -1
  21. package/dist/submit-BTdbGEAd.mjs +84 -0
  22. package/dist/submit-BTdbGEAd.mjs.map +1 -0
  23. package/dist/submit-CW9schoc.js +98 -0
  24. package/dist/submit-CW9schoc.js.map +1 -0
  25. package/dist/submit-Dy0KTHzm.js +98 -0
  26. package/dist/submit-Dy0KTHzm.js.map +1 -0
  27. package/dist/submit.js +1 -1
  28. package/dist/submit.mjs +1 -1
  29. package/dist/toolbox-BV7vLGXZ.js +614 -0
  30. package/dist/toolbox-BV7vLGXZ.js.map +1 -0
  31. package/dist/{toolbox-CbfxpNg-.mjs → toolbox-BxgnUyDU.mjs} +2 -2
  32. package/dist/{toolbox-CbfxpNg-.mjs.map → toolbox-BxgnUyDU.mjs.map} +1 -1
  33. package/dist/toolbox-GSWMRdts.js +614 -0
  34. package/dist/toolbox-GSWMRdts.js.map +1 -0
  35. package/dist/toolbox-UG4dA2TI.mjs +540 -0
  36. package/dist/toolbox-UG4dA2TI.mjs.map +1 -0
  37. package/dist/toolbox.js +1 -1
  38. package/dist/toolbox.mjs +1 -1
  39. package/dist/userHome-B97jBm5O.mjs +196 -0
  40. package/dist/userHome-B97jBm5O.mjs.map +1 -0
  41. package/dist/userHome-Baz205B7.js +498 -0
  42. package/dist/userHome-Baz205B7.js.map +1 -0
  43. package/dist/userHome-CLlsXCvW.js +518 -0
  44. package/dist/userHome-CLlsXCvW.js.map +1 -0
  45. package/dist/{userHome-CcnAQPG1.mjs → userHome-DOMLiHy7.mjs} +2 -4
  46. package/dist/userHome-DOMLiHy7.mjs.map +1 -0
  47. package/package.json +2 -2
  48. package/dist/userHome-CcnAQPG1.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,13 +1,13 @@
1
1
  import { a as isGitHubLocalEmail, c as KeychainUnavailableError, d as AuthStateManager, f as createConsoleLogger, i as buildGitHubLocalEmail, l as AuthCore, m as AccessControl, n as MicrosoftProviderNotHostedError, o as resolvePrimaryEmail, p as noopLogger, r as GitHubAuthProvider, s as InMemoryKeychainAuthTokenStore, t as MicrosoftAuthProvider, u as ProviderRegistry } from "./auth-Bzss8zOv.mjs";
2
- import { A as getDraftsDir, B as getReposDir, C as WORKSPACES_SUBDIR, D as getCacheDir, E as getAgentDraftsDir, F as getMigrationFailuresPath, G as getSchedulerPidPath, H as getScheduledTasksLogPath, I as getProfilesJsonPath, J as getSkillDraftsDir, K as getServerProxyGlobalPath, L as getRepoCacheDir, M as getHomePlatform, N as getKnownWorkspacesPath, O as getCredentialsConfigPath, P as getMachineIdPath, Q as setUserHomeOverrides, R as getRepoDir, S as TOOLBOX_JSON_FILENAME, T as assertSafeRepoId, U as getSchedulerLockPath, V as getScheduledTasksConfigPath, W as getSchedulerLogPath, X as getWorkspacesDir, Y as getToolboxJsonPath, Z as resetUserHomeOverrides, _ as SCHEDULER_PID_FILENAME, a as DRAFTS_SUBDIR, b as SERVICEME_HOME_ENV, c as MIGRATION_FAILURES_FILENAME, d as REPOS_SUBDIR, f as SAFE_REPO_ID_PATTERN, g as SCHEDULER_LOG_FILENAME, h as SCHEDULER_LOCK_FILENAME, i as DEVICE_JSON_FILENAME, j as getHomeDir, k as getDeviceJsonPath, l as PROFILES_JSON_FILENAME, m as SCHEDULED_TASKS_LOG_FILENAME, n as CACHE_SUBDIR, o as KNOWN_WORKSPACES_FILENAME, p as SCHEDULED_TASKS_CONFIG_FILENAME, q as getServicemeHome, r as CREDENTIALS_CONFIG_FILENAME, s as MACHINE_ID_FILENAME, t as AGENT_DRAFTS_SUBDIR, u as REPOS_CONFIG_FILENAME, v as SERVER_PROXY_GLOBAL_FILENAME, w as WORKSPACE_CONTENT_STATE_FILENAME, x as SKILL_DRAFTS_SUBDIR, y as SERVICEME_DIR_NAME, z as getReposConfigPath } from "./userHome-CcnAQPG1.mjs";
3
- import { a as DeviceReenrollRequiresAuthError, c as deriveInstallationId, d as DeviceAuthHeaders, f as buildSignedHeaders, i as DEVICE_JSON_SCHEMA_VERSION, l as fingerprintSource, n as FsIdentityFileBackend, o as DeviceSecretVersionMismatchError, p as createDeviceRequestSignature, r as IdentityStore, s as Enroller, t as DeviceCore, u as randomInstallationId } from "./device-Bn2NzajD.mjs";
2
+ import { A as getHomeDir, B as getScheduledTasksConfigPath, C as WORKSPACE_CONTENT_STATE_FILENAME, D as getCredentialsConfigPath, E as getCacheDir, F as getProfilesJsonPath, G as getServicemeHome, H as getSchedulerLockPath, I as getRepoCacheDir, J as getWorkspacesDir, K as getSkillDraftsDir, L as getRepoDir, M as getKnownWorkspacesPath, N as getMachineIdPath, O as getDeviceJsonPath, P as getMigrationFailuresPath, R as getReposConfigPath, S as WORKSPACES_SUBDIR, T as getAgentDraftsDir, U as getSchedulerLogPath, V as getScheduledTasksLogPath, W as getSchedulerPidPath, X as setUserHomeOverrides, Y as resetUserHomeOverrides, _ as SCHEDULER_PID_FILENAME, a as DRAFTS_SUBDIR, b as SKILL_DRAFTS_SUBDIR, c as MIGRATION_FAILURES_FILENAME, d as REPOS_SUBDIR, f as SAFE_REPO_ID_PATTERN, g as SCHEDULER_LOG_FILENAME, h as SCHEDULER_LOCK_FILENAME, i as DEVICE_JSON_FILENAME, j as getHomePlatform, k as getDraftsDir, l as PROFILES_JSON_FILENAME, m as SCHEDULED_TASKS_LOG_FILENAME, n as CACHE_SUBDIR, o as KNOWN_WORKSPACES_FILENAME, p as SCHEDULED_TASKS_CONFIG_FILENAME, q as getToolboxJsonPath, r as CREDENTIALS_CONFIG_FILENAME, s as MACHINE_ID_FILENAME, t as AGENT_DRAFTS_SUBDIR, u as REPOS_CONFIG_FILENAME, v as SERVICEME_DIR_NAME, w as assertSafeRepoId, x as TOOLBOX_JSON_FILENAME, y as SERVICEME_HOME_ENV, z as getReposDir } from "./userHome-B97jBm5O.mjs";
3
+ import { a as DeviceReenrollRequiresAuthError, c as deriveInstallationId, d as DeviceAuthHeaders, f as buildSignedHeaders, i as DEVICE_JSON_SCHEMA_VERSION, l as fingerprintSource, n as FsIdentityFileBackend, o as DeviceSecretVersionMismatchError, p as createDeviceRequestSignature, r as IdentityStore, s as Enroller, t as DeviceCore, u as randomInstallationId } from "./device-DCo0rgUt.mjs";
4
4
  import { n as extractFrontmatter } from "./skill-store-Bym2yinU.mjs";
5
- import { n as SubmitError, t as SubmitClient } from "./submit-Cg7wSa3x.mjs";
6
- import { a as WORKSPACE_TOOLBOX_RELATIVE_PATH, c as mergeWithDefaults, d as sortByUserOrder, f as touchLastUsedAt, i as ToolboxStore, l as reindexOrder, n as ToolboxCore, o as BUILTIN_DEFAULT_TOOLS, r as FsToolboxFileBackend, s as TOOLBOX_JSON_SCHEMA_VERSION, t as DefaultToolImmutableError, u as sortByRecentFirst } from "./toolbox-CbfxpNg-.mjs";
5
+ import { n as SubmitError, t as SubmitClient } from "./submit-BTdbGEAd.mjs";
6
+ import { a as WORKSPACE_TOOLBOX_RELATIVE_PATH, c as mergeWithDefaults, d as sortByUserOrder, f as touchLastUsedAt, i as ToolboxStore, l as reindexOrder, n as ToolboxCore, o as BUILTIN_DEFAULT_TOOLS, r as FsToolboxFileBackend, s as TOOLBOX_JSON_SCHEMA_VERSION, t as DefaultToolImmutableError, u as sortByRecentFirst } from "./toolbox-BxgnUyDU.mjs";
7
7
  import { createRequire } from "node:module";
8
8
  import { COPILOT_ERROR_CODES, DEFAULT_JSON_SORT_OPTIONS, KNOWN_ENVIRONMENT_TOOLS, ServicemeProtocolError, createServicemeError, isScheduledTaskV1, isScheduledTasksConfig, isScheduledTasksConfigV1, migrateV1ToV2 } from "@serviceme/devtools-protocol";
9
9
  import * as fs$1 from "node:fs/promises";
10
- import { access, copyFile, lstat, mkdir, open, readdir, rename, rm } from "node:fs/promises";
10
+ import { access, copyFile, lstat, mkdir, readdir, rename, rm } from "node:fs/promises";
11
11
  import * as path from "node:path";
12
12
  import { dirname, join } from "node:path";
13
13
  import { EventEmitter } from "node:events";
@@ -5072,122 +5072,6 @@ function detectIndent(text) {
5072
5072
  return 2;
5073
5073
  }
5074
5074
  //#endregion
5075
- //#region src/paths/serverProxyGlobal.ts
5076
- /**
5077
- * serverProxyGlobal — `~/.serviceme/server-proxy.json` IO (rev.20).
5078
- *
5079
- * Persists the r7 BYOM Server Proxy toggle's self-state (`enabled` flag
5080
- * + last-known server URL) in a cross-tool global config file under
5081
- * `~/.serviceme/`. Mirrors the convention used by `scheduled-tasks.json`,
5082
- * `migration-failures.json`, etc.
5083
- *
5084
- * Originally lived in `apps/extension/src/services/proxy/globalConfigStore.ts`
5085
- * (rev.19). Promoted to `@serviceme/devtools-core` in rev.20 so the CLI
5086
- * and Server can read the same file without booting VS Code.
5087
- *
5088
- * Why a dedicated `server-proxy.json` rather than a unified config?
5089
- * - One file per concern = atomic writes = no shared-schema lock.
5090
- * `scheduled-tasks.json` already takes this approach.
5091
- *
5092
- * Atomic write protocol (rev.20):
5093
- * 1. Compute patch (read + merge).
5094
- * 2. Open `<target>.tmp-<randomUUID>` for write in the same dir.
5095
- * 3. `writeFile(content)` then `fh.sync()` (fsync) — flush to disk.
5096
- * 4. `fs.rename(tmp, target)` — POSIX atomic on the same filesystem.
5097
- *
5098
- * The `crypto.randomUUID()` suffix + `fh.sync()` address two hardening
5099
- * gaps identified in the rev.19 review:
5100
- * - Concurrency: tmp filename collisions under same-pid concurrent
5101
- * writes become effectively impossible.
5102
- * - Durability: without fsync, a power loss between `writeFile` and
5103
- * `rename` could surface as a stale target file (POSIX rename is
5104
- * atomic, but the data behind it might not have hit the platter).
5105
- */
5106
- /**
5107
- * Reads the global config file. Returns `null` if the file does not
5108
- * exist (first-run case) — does NOT throw. Throws on parse errors or
5109
- * permission issues, so callers can surface those to the user.
5110
- */
5111
- async function readServerProxyGlobal() {
5112
- const filePath = getServerProxyGlobalPath();
5113
- try {
5114
- const raw = await fs$1.readFile(filePath, "utf8");
5115
- const parsed = JSON.parse(raw);
5116
- if (!isServerProxyGlobalState(parsed)) throw new Error(`Invalid ${SERVER_PROXY_GLOBAL_FILENAME}: expected {enabled: boolean, lastServerUrl?: string, updatedAt: string}, got ${JSON.stringify(parsed).slice(0, 80)}`);
5117
- return parsed;
5118
- } catch (err) {
5119
- if (isENOENT(err)) return null;
5120
- throw err;
5121
- }
5122
- }
5123
- /**
5124
- * Merges a partial patch into the existing state and writes back
5125
- * atomically. Creates `~/.serviceme/` if missing.
5126
- *
5127
- * Returns the post-write state. Throws on IO/JSON errors.
5128
- */
5129
- async function writeServerProxyGlobal(patch) {
5130
- const filePath = getServerProxyGlobalPath();
5131
- const dirPath = path.dirname(filePath);
5132
- await fs$1.mkdir(dirPath, { recursive: true });
5133
- const current = await readServerProxyGlobal() ?? {
5134
- enabled: false,
5135
- allowOverride: false,
5136
- lastServerUrl: void 0,
5137
- updatedAt: (/* @__PURE__ */ new Date(0)).toISOString()
5138
- };
5139
- const next = {
5140
- enabled: patch.enabled !== void 0 ? patch.enabled : current.enabled,
5141
- allowOverride: patch.allowOverride !== void 0 ? patch.allowOverride : current.allowOverride,
5142
- lastServerUrl: patch.lastServerUrl === void 0 ? current.lastServerUrl : patch.lastServerUrl === null ? void 0 : patch.lastServerUrl,
5143
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
5144
- };
5145
- const tmpPath = `${filePath}.tmp-${randomUUID()}`;
5146
- const fh = await open(tmpPath, "w");
5147
- try {
5148
- await fh.writeFile(JSON.stringify(next, null, " "), "utf8");
5149
- await fh.sync();
5150
- } finally {
5151
- await fh.close();
5152
- }
5153
- await fs$1.rename(tmpPath, filePath);
5154
- return next;
5155
- }
5156
- /**
5157
- * Best-effort migration of a legacy `enabled` flag (typically read from
5158
- * VS Code's `settings.json` at `serverProxy.enabled`) into the global
5159
- * config file.
5160
- *
5161
- * Reads via the provided accessor (so tests can stub it), writes the
5162
- * global flag if present, then **clears** the legacy flag via the
5163
- * provided writer — never silently leaves the migration half-done.
5164
- *
5165
- * Returns the migrated state, or `null` if no migration was needed
5166
- * (legacy flag absent OR global config already up to date).
5167
- */
5168
- async function migrateLegacyServerProxyEnabled(readLegacy, clearLegacy) {
5169
- if (readLegacy() !== true) return null;
5170
- if ((await readServerProxyGlobal())?.enabled === true) {
5171
- await clearLegacy();
5172
- return null;
5173
- }
5174
- const next = await writeServerProxyGlobal({ enabled: true });
5175
- await clearLegacy();
5176
- return next;
5177
- }
5178
- function isServerProxyGlobalState(v) {
5179
- if (!v || typeof v !== "object") return false;
5180
- const obj = v;
5181
- if (typeof obj.enabled !== "boolean") return false;
5182
- if (typeof obj.allowOverride !== "boolean") return false;
5183
- if (typeof obj.updatedAt !== "string") return false;
5184
- if (obj.lastServerUrl !== void 0 && obj.lastServerUrl !== null && typeof obj.lastServerUrl !== "string") return false;
5185
- return true;
5186
- }
5187
- function isENOENT(err) {
5188
- return typeof err === "object" && err !== null && "code" in err && err.code === "ENOENT";
5189
- }
5190
- //#endregion
5191
5075
  //#region src/phase5/bootstrap.ts
5192
5076
  /**
5193
5077
  * Spec §11.12 — Phase 5 client-side state bootstrap.
@@ -5400,6 +5284,8 @@ const moveFiles = async (sourceDir, destDir, overwrite = false) => {
5400
5284
  };
5401
5285
  //#endregion
5402
5286
  //#region src/project/projectTools.ts
5287
+ /** Master-side prune walks and deletes whole module trees — generous ceiling. */
5288
+ const SCAFFOLD_PRUNE_TIMEOUT_MS = 6e5;
5403
5289
  var ProjectTools = class {
5404
5290
  async extractTemplate(zipPath, workspacePath, tempExtractDir, input) {
5405
5291
  await unzipFile(zipPath, tempExtractDir);
@@ -5466,24 +5352,72 @@ var ProjectTools = class {
5466
5352
  command
5467
5353
  };
5468
5354
  }
5469
- async runScaffoldPrune(workspacePath, preset) {
5355
+ async runScaffoldPrune(workspacePath, preset, options) {
5470
5356
  if (!preset) throw createServicemeError("invalid_params", "Expected scaffold preset.");
5357
+ const disabledModules = options?.disabledModules ?? [];
5358
+ const pruneScript = path.join(workspacePath, "scripts", "scaffold", "prune.mjs");
5359
+ const modulesDir = path.join(workspacePath, ".ms-scaffold", "modules");
5360
+ if (!await this.pathExists(pruneScript) || !await this.pathExists(modulesDir)) throw createServicemeError("invalid_params", "Scaffold v2 assets not found in workspace (scripts/scaffold/prune.mjs, .ms-scaffold/modules) — an ms-full-stack v2 template is required.");
5471
5361
  await this.ensurePresetManifest(workspacePath, preset);
5472
- const pruneCommand = `pnpm run scaffold:prune -- --preset ${preset} --project-root .`;
5473
- const initMetadataCommand = `pnpm run scaffold:init-metadata -- --preset ${preset} --project-root . --force`;
5474
- const commands = [pruneCommand, initMetadataCommand];
5475
- for (const command of commands) {
5476
- if (command === initMetadataCommand) await this.ensurePresetManifest(workspacePath, preset);
5477
- await runCommand(command, {
5362
+ const stagingDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "serviceme-scaffold-master-"));
5363
+ try {
5364
+ await fs$1.cp(workspacePath, stagingDir, {
5365
+ recursive: true,
5366
+ filter: (source) => {
5367
+ const base = path.basename(source);
5368
+ return base !== "node_modules" && base !== ".git";
5369
+ }
5370
+ });
5371
+ const args = [
5372
+ path.join(stagingDir, "scripts", "scaffold", "prune.mjs"),
5373
+ "--preset",
5374
+ preset,
5375
+ "--project-root",
5376
+ workspacePath,
5377
+ ...disabledModules.flatMap((moduleId) => ["--no-module", moduleId]),
5378
+ "--format",
5379
+ "json"
5380
+ ];
5381
+ const result = await runCommand(process.execPath, {
5382
+ args,
5478
5383
  cwd: workspacePath,
5479
- shell: true
5384
+ timeoutMs: SCAFFOLD_PRUNE_TIMEOUT_MS
5385
+ });
5386
+ return {
5387
+ applied: true,
5388
+ preset,
5389
+ projectRoot: workspacePath,
5390
+ disabledModules,
5391
+ recommendedNextSteps: this.parseRecommendedNextSteps(result.stdout),
5392
+ commands: [formatCommand(process.execPath, args)]
5393
+ };
5394
+ } finally {
5395
+ await fs$1.rm(stagingDir, {
5396
+ recursive: true,
5397
+ force: true
5480
5398
  });
5481
5399
  }
5482
- return {
5483
- applied: true,
5484
- preset,
5485
- commands
5486
- };
5400
+ }
5401
+ /**
5402
+ * `prune.mjs --format json` prints its result object (pretty-printed) as
5403
+ * the only stdout payload, but stay tolerant: if log noise precedes it,
5404
+ * fall back to the last line-initial `{` and try from there. Any parse
5405
+ * failure degrades to an empty list — follow-ups are advisory.
5406
+ */
5407
+ parseRecommendedNextSteps(stdout) {
5408
+ const trimmed = stdout.trim();
5409
+ const payload = trimmed.startsWith("{") ? trimmed : (() => {
5410
+ const index = trimmed.lastIndexOf("\n{");
5411
+ return index >= 0 ? trimmed.slice(index + 1) : null;
5412
+ })();
5413
+ if (!payload) return [];
5414
+ try {
5415
+ const parsed = JSON.parse(payload);
5416
+ if (!Array.isArray(parsed.recommendedNextSteps)) return [];
5417
+ return parsed.recommendedNextSteps.filter((step) => typeof step === "string");
5418
+ } catch {
5419
+ return [];
5420
+ }
5487
5421
  }
5488
5422
  async ensurePresetManifest(workspacePath, preset) {
5489
5423
  const presetManifestPath = path.join(workspacePath, ".ms-scaffold", "presets", `${preset}.json`);
@@ -5546,6 +5480,11 @@ var ProjectTools = class {
5546
5480
  return entries.includes(projectFilePattern);
5547
5481
  }
5548
5482
  };
5483
+ /** Display form of an argv-style invocation (quote paths containing spaces). */
5484
+ function formatCommand(command, args) {
5485
+ const quote = (value) => /\s/.test(value) ? `"${value}"` : value;
5486
+ return [command, ...args].map(quote).join(" ");
5487
+ }
5549
5488
  function createProjectTools() {
5550
5489
  return new ProjectTools();
5551
5490
  }
@@ -8303,6 +8242,6 @@ async function migrateLegacyUserSkillContent(input) {
8303
8242
  return { entries: result };
8304
8243
  }
8305
8244
  //#endregion
8306
- export { AGENT_DRAFTS_SUBDIR, AccessControl, AgentCatalogClient, AgentReconciler, AgentStore, AuthCore, AuthStateManager, BUILTIN_DEFAULT_TOOLS, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, CopilotLinkMaterializer, CopilotPluginRegistrar, CopilotSourceCatalogService, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DEVICE_JSON_SCHEMA_VERSION, DRAFTS_SUBDIR, DaemonLogger, DefaultToolImmutableError, DeviceAuthHeaders, DeviceCore, DeviceReenrollRequiresAuthError, DeviceSecretVersionMismatchError, DisabledContentStore, DraftNotFoundError, DraftsError, DraftsStore, Enroller, EnvironmentInspector, FileHookConfigAdapter, FileMcpConfigAdapter, FsIdentityFileBackend, FsToolboxFileBackend, GIT_PROXY_PATH_SUFFIX, GitClient, GitError, GitHubAuthProvider, GithubCopilotCliExecutor, HttpRequestExecutor, IdentityStore, ImageTools, InMemoryKeychainAuthTokenStore, InvalidDraftError, InvalidRepoUrlError, KNOWN_WORKSPACES_FILENAME, KeychainUnavailableError, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, MicrosoftAuthProvider, MicrosoftProviderNotHostedError, NodeGitSpawner, PROFILES_JSON_FILENAME, PackageInstallationService, PersonalCopilotContentReconciler, PersonalInstallationStore, PidManager, ProjectTools, ProviderRegistry, REPOS_CONFIG_FILENAME, REPOS_SUBDIR, RepoAlreadyExistsError, RepoCloneConflictError, RepoManager, RepoManagerError, RepoNotFoundError, RepoNotInStoreError, ReposLoader, ReposStore, 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, SchedulerDaemonV2, ShellExecutor, SkillCatalogClient, SkillReconciler, SkillStore, StubGitSpawner, SubmitClient, SubmitError, TOOLBOX_JSON_FILENAME, TOOLBOX_JSON_SCHEMA_VERSION, TOOL_RISK_MAP, TaskConfigManager, TaskExecutionEngine, TaskLogManager, ToolboxCore, ToolboxStore, WORKSPACES_SUBDIR, WORKSPACE_CONTENT_STATE_FILENAME, WORKSPACE_MANIFEST_RELPATH, WORKSPACE_TOOLBOX_RELATIVE_PATH, WorkspaceContentStateStore, WorkspaceCopilotContentReconciler, WorkspaceExcludeStore, WorkspaceProbe, allPersonalLinkKinds, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildContentIdentity, buildCopilotCustomizationView, buildDefaultReposFile, buildDisabledIdentityMatcher, buildGitHubLocalEmail, buildGitProxyBase, buildSignedHeaders, copilotDoctor, copilotPrompt, coveredTargetsOf, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createDefaultCopilotHostCapabilities, createDeviceRequestSignature, createImageTools, createJsonTools, createPluginCatalogService, createProjectTools, createReposStore, dedupeAdoptionsByPluginManifests, defaultRepoSchema as defaultRepoConfigSchema, deriveCopilotUserStatus, deriveInstallationId, detectUnmanagedWorkspaceContent, ensureDefaultsInstalled, findPluginCoveringArtifact, findPluginMcpJson, findRepoHooksJson, fingerprintSource, 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, isGitHubLocalEmail, isStreamingTaskExecutor, isUserRepo, listPluginCatalog, loadWorkspaceCopilotManifest, mergeWithDefaults, migrateLegacyServerProxyEnabled, migrateLegacyUserContent, migrateLegacyUserSkillContent, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseContentIdentity, parseHooksJson, parseMcpJson, randomInstallationId, readDeclaredWorkspaceInstallations, readServerProxyGlobal, reindexOrder, removeWorkspaceContentSelection, replaceWorkspaceContentSelection, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolvePluginEntriesLenient, resolvePrimaryEmail, resolveTaskExecutionPayload, resolveWorkspaceContentPlan, setUserHomeOverrides, setWorkspacePluginArtifactsDisabled, sortByRecentFirst, sortByUserOrder, supportsPersonalIntegrationKind, supportsPersonalLinkKind, toArtifactSummary, toFileUrl, touchLastUsedAt, unmanagedDetectionSignature, unzipFile, upsertWorkspaceContentSelection, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeServerProxyGlobal, writeWorkspaceCopilotManifest };
8245
+ export { AGENT_DRAFTS_SUBDIR, AccessControl, AgentCatalogClient, AgentReconciler, AgentStore, AuthCore, AuthStateManager, BUILTIN_DEFAULT_TOOLS, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, CopilotLinkMaterializer, CopilotPluginRegistrar, CopilotSourceCatalogService, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DEVICE_JSON_SCHEMA_VERSION, DRAFTS_SUBDIR, DaemonLogger, DefaultToolImmutableError, DeviceAuthHeaders, DeviceCore, DeviceReenrollRequiresAuthError, DeviceSecretVersionMismatchError, DisabledContentStore, DraftNotFoundError, DraftsError, DraftsStore, Enroller, EnvironmentInspector, FileHookConfigAdapter, FileMcpConfigAdapter, FsIdentityFileBackend, FsToolboxFileBackend, GIT_PROXY_PATH_SUFFIX, GitClient, GitError, GitHubAuthProvider, GithubCopilotCliExecutor, HttpRequestExecutor, IdentityStore, ImageTools, InMemoryKeychainAuthTokenStore, InvalidDraftError, InvalidRepoUrlError, KNOWN_WORKSPACES_FILENAME, KeychainUnavailableError, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, MicrosoftAuthProvider, MicrosoftProviderNotHostedError, NodeGitSpawner, PROFILES_JSON_FILENAME, PackageInstallationService, PersonalCopilotContentReconciler, PersonalInstallationStore, PidManager, ProjectTools, ProviderRegistry, REPOS_CONFIG_FILENAME, REPOS_SUBDIR, RepoAlreadyExistsError, RepoCloneConflictError, RepoManager, RepoManagerError, RepoNotFoundError, RepoNotInStoreError, ReposLoader, ReposStore, SAFE_REPO_ID_PATTERN, SCHEDULED_TASKS_CONFIG_FILENAME, SCHEDULED_TASKS_LOG_FILENAME, SCHEDULER_LOCK_FILENAME, SCHEDULER_LOG_FILENAME, SCHEDULER_PID_FILENAME, SERVICEME_DIR_NAME, SERVICEME_HOME_ENV, SKILL_DRAFTS_SUBDIR, SchedulerDaemonV2, ShellExecutor, SkillCatalogClient, SkillReconciler, SkillStore, StubGitSpawner, SubmitClient, SubmitError, TOOLBOX_JSON_FILENAME, TOOLBOX_JSON_SCHEMA_VERSION, TOOL_RISK_MAP, TaskConfigManager, TaskExecutionEngine, TaskLogManager, ToolboxCore, ToolboxStore, WORKSPACES_SUBDIR, WORKSPACE_CONTENT_STATE_FILENAME, WORKSPACE_MANIFEST_RELPATH, WORKSPACE_TOOLBOX_RELATIVE_PATH, WorkspaceContentStateStore, WorkspaceCopilotContentReconciler, WorkspaceExcludeStore, WorkspaceProbe, allPersonalLinkKinds, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildContentIdentity, buildCopilotCustomizationView, buildDefaultReposFile, buildDisabledIdentityMatcher, buildGitHubLocalEmail, buildGitProxyBase, buildSignedHeaders, copilotDoctor, copilotPrompt, coveredTargetsOf, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createDefaultCopilotHostCapabilities, createDeviceRequestSignature, createImageTools, createJsonTools, createPluginCatalogService, createProjectTools, createReposStore, dedupeAdoptionsByPluginManifests, defaultRepoSchema as defaultRepoConfigSchema, deriveCopilotUserStatus, deriveInstallationId, detectUnmanagedWorkspaceContent, ensureDefaultsInstalled, findPluginCoveringArtifact, findPluginMcpJson, findRepoHooksJson, fingerprintSource, generateDraftId, getAgentDraftsDir, getAllDefaultRepoConfigs, getCacheDir, getCredentialsConfigPath, getDefaultRepoConfig, getDeviceJsonPath, getDraftsDir, getExecutor, getHomeDir, getHomePlatform, getKnownWorkspacesPath, getMachineIdPath, getMigrationFailuresPath, getProfilesJsonPath, getRepoCacheDir, getRepoDir, getReposConfigPath, getReposDir, getScheduledTasksConfigPath, getScheduledTasksLogPath, getSchedulerLockPath, getSchedulerLogPath, getSchedulerPidPath, getServicemeHome, getSkillDraftsDir, getToolboxJsonPath, getWorkspaceManifestPath, getWorkspaceManifestPluginSourceId, getWorkspaceManifestSources, getWorkspaceStateDir, getWorkspacesDir, hashWorkspaceDir, isCopilotAuthenticated, isDefaultRepo, isGitHubLocalEmail, isStreamingTaskExecutor, isUserRepo, listPluginCatalog, loadWorkspaceCopilotManifest, mergeWithDefaults, migrateLegacyUserContent, migrateLegacyUserSkillContent, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseContentIdentity, parseHooksJson, parseMcpJson, randomInstallationId, readDeclaredWorkspaceInstallations, reindexOrder, removeWorkspaceContentSelection, replaceWorkspaceContentSelection, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolvePluginEntriesLenient, resolvePrimaryEmail, resolveTaskExecutionPayload, resolveWorkspaceContentPlan, setUserHomeOverrides, setWorkspacePluginArtifactsDisabled, sortByRecentFirst, sortByUserOrder, supportsPersonalIntegrationKind, supportsPersonalLinkKind, toArtifactSummary, toFileUrl, touchLastUsedAt, unmanagedDetectionSignature, unzipFile, upsertWorkspaceContentSelection, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeWorkspaceCopilotManifest };
8307
8246
 
8308
8247
  //# sourceMappingURL=index.mjs.map