@serviceme/devtools-core 0.3.1 → 0.3.2

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 CHANGED
@@ -326,6 +326,8 @@ declare const DRAFTS_SUBDIR = "drafts";
326
326
  declare const SKILL_DRAFTS_SUBDIR = "skills";
327
327
  declare const AGENT_DRAFTS_SUBDIR = "agents";
328
328
  declare const REPOS_CONFIG_FILENAME = "repos.json";
329
+ /** rev.20 — r7 BYOM Server Proxy toggle self-state (read by ext + CLI + server). */
330
+ declare const SERVER_PROXY_GLOBAL_FILENAME = "server-proxy.json";
329
331
  /**
330
332
  * Repo id regex — used to validate any `repoId` argument before it is joined
331
333
  * into a filesystem path. Keeps path traversal attempts out and gives us a
@@ -410,6 +412,18 @@ declare function getSchedulerLogPath(): string;
410
412
  declare function getMigrationFailuresPath(): string;
411
413
  /** `~/.serviceme/known-workspaces.json` — workspace list the extension has seen. */
412
414
  declare function getKnownWorkspacesPath(): string;
415
+ /**
416
+ * `~/.serviceme/server-proxy.json` — r7 BYOM Server Proxy toggle
417
+ * self-state. Written by the extension's `ProxyConfigService`, readable
418
+ * by the CLI / Server so they can decide whether to route traffic
419
+ * through the corporate proxy without booting VS Code.
420
+ *
421
+ * Lives under user-level `~/.serviceme/` (not under a workspace) because
422
+ * the toggle is a *user preference* — the same human enabling it on
423
+ * machine A should be able to rely on it on machine B after sync, not
424
+ * have it disappear when they switch repos.
425
+ */
426
+ declare function getServerProxyGlobalPath(): string;
413
427
  /** Layout constants for the Phase 5 client-side state files. The server
414
428
  * already has the corresponding routes (`/api/v1/auth/...`,
415
429
  * `/api/v1/device/...`, etc.) — the client just needs the on-disk
@@ -431,6 +445,71 @@ declare function getMachineIdPath(): string;
431
445
  /** `~/.serviceme/profiles.json` — cached projection of server-side profile rows; refresh on demand. */
432
446
  declare function getProfilesJsonPath(): string;
433
447
 
448
+ /** On-disk shape for `~/.serviceme/server-proxy.json`. */
449
+ interface ServerProxyGlobalState {
450
+ /** Whether the user has previously enabled Server Proxy. */
451
+ enabled: boolean;
452
+ /** Last server URL we toggled ON with. Used for re-toggling and UI hint. */
453
+ lastServerUrl: string | undefined;
454
+ /**
455
+ * rev.21 — explicit opt-in to enable Server Proxy even when
456
+ * `http.proxySupport === "override"`. `override` mode forces ALL
457
+ * extensions to route through `http.proxy`; defaulting to `false`
458
+ * keeps the legacy defensive guard against accidental global
459
+ * hijack. Power users (e.g. corp environments that WANT all
460
+ * extensions including GitHub Copilot Chat to route through the
461
+ * corp tunnel) can flip this on via the Webview's "Allow under
462
+ * proxySupport=override" affordance.
463
+ *
464
+ * Note: stored in the global file alongside `enabled` because
465
+ * this is *our* self-flag — it has nothing to do with VS Code's
466
+ * `http.*` schema.
467
+ */
468
+ allowOverride: boolean;
469
+ /** ISO 8601 timestamp of the most recent write. Diagnostic only. */
470
+ updatedAt: string;
471
+ }
472
+ /**
473
+ * Patch semantics (mirrors `vscode.workspace.getConfiguration().update(...)`):
474
+ * - Field omitted / `undefined` → leave the existing value alone.
475
+ * - Field set to `null` → explicitly clear the field.
476
+ *
477
+ * Only `lastServerUrl` distinguishes "leave alone" from "clear"; `enabled`
478
+ * and `allowOverride` are plain `boolean | undefined` because boolean is
479
+ * the natural unit (false = "the user disabled it").
480
+ */
481
+ interface ServerProxyGlobalPatch {
482
+ enabled?: boolean;
483
+ allowOverride?: boolean;
484
+ lastServerUrl?: string | null;
485
+ }
486
+ /**
487
+ * Reads the global config file. Returns `null` if the file does not
488
+ * exist (first-run case) — does NOT throw. Throws on parse errors or
489
+ * permission issues, so callers can surface those to the user.
490
+ */
491
+ declare function readServerProxyGlobal(): Promise<ServerProxyGlobalState | null>;
492
+ /**
493
+ * Merges a partial patch into the existing state and writes back
494
+ * atomically. Creates `~/.serviceme/` if missing.
495
+ *
496
+ * Returns the post-write state. Throws on IO/JSON errors.
497
+ */
498
+ declare function writeServerProxyGlobal(patch: ServerProxyGlobalPatch): Promise<ServerProxyGlobalState>;
499
+ /**
500
+ * Best-effort migration of a legacy `enabled` flag (typically read from
501
+ * VS Code's `settings.json` at `serverProxy.enabled`) into the global
502
+ * config file.
503
+ *
504
+ * Reads via the provided accessor (so tests can stub it), writes the
505
+ * global flag if present, then **clears** the legacy flag via the
506
+ * provided writer — never silently leaves the migration half-done.
507
+ *
508
+ * Returns the migrated state, or `null` if no migration was needed
509
+ * (legacy flag absent OR global config already up to date).
510
+ */
511
+ declare function migrateLegacyServerProxyEnabled(readLegacy: () => boolean | undefined, clearLegacy: () => Promise<void>): Promise<ServerProxyGlobalState | null>;
512
+
434
513
  declare const TOOL_RISK_MAP: Record<string, AgentToolRiskLevel>;
435
514
  declare function parseAgentToolPermissions(content: string): AgentToolPermission[];
436
515
 
@@ -590,10 +669,10 @@ declare const defaultRepoSchema: z.ZodObject<{
590
669
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
591
670
  lastSyncError: z.ZodOptional<z.ZodString>;
592
671
  }, "strip", z.ZodTypeAny, {
593
- name: string;
594
672
  id: string;
595
673
  description: string;
596
674
  source: "default";
675
+ name: string;
597
676
  url: string;
598
677
  branch: string;
599
678
  enabled: boolean;
@@ -605,10 +684,10 @@ declare const defaultRepoSchema: z.ZodObject<{
605
684
  lastSyncStatus?: "ok" | "error" | undefined;
606
685
  lastSyncError?: string | undefined;
607
686
  }, {
608
- name: string;
609
687
  id: string;
610
688
  description: string;
611
689
  source: "default";
690
+ name: string;
612
691
  url: string;
613
692
  branch: string;
614
693
  enabled: boolean;
@@ -635,9 +714,9 @@ declare const userRepoSchema: z.ZodObject<{
635
714
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
636
715
  lastSyncError: z.ZodOptional<z.ZodString>;
637
716
  }, "strip", z.ZodTypeAny, {
638
- name: string;
639
717
  id: string;
640
718
  source: "user";
719
+ name: string;
641
720
  url: string;
642
721
  branch: string;
643
722
  enabled: boolean;
@@ -649,9 +728,9 @@ declare const userRepoSchema: z.ZodObject<{
649
728
  lastSyncStatus?: "ok" | "error" | undefined;
650
729
  lastSyncError?: string | undefined;
651
730
  }, {
652
- name: string;
653
731
  id: string;
654
732
  source: "user";
733
+ name: string;
655
734
  url: string;
656
735
  branch: string;
657
736
  enabled: boolean;
@@ -679,10 +758,10 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
679
758
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
680
759
  lastSyncError: z.ZodOptional<z.ZodString>;
681
760
  }, "strip", z.ZodTypeAny, {
682
- name: string;
683
761
  id: string;
684
762
  description: string;
685
763
  source: "default";
764
+ name: string;
686
765
  url: string;
687
766
  branch: string;
688
767
  enabled: boolean;
@@ -694,10 +773,10 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
694
773
  lastSyncStatus?: "ok" | "error" | undefined;
695
774
  lastSyncError?: string | undefined;
696
775
  }, {
697
- name: string;
698
776
  id: string;
699
777
  description: string;
700
778
  source: "default";
779
+ name: string;
701
780
  url: string;
702
781
  branch: string;
703
782
  enabled: boolean;
@@ -723,9 +802,9 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
723
802
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
724
803
  lastSyncError: z.ZodOptional<z.ZodString>;
725
804
  }, "strip", z.ZodTypeAny, {
726
- name: string;
727
805
  id: string;
728
806
  source: "user";
807
+ name: string;
729
808
  url: string;
730
809
  branch: string;
731
810
  enabled: boolean;
@@ -737,9 +816,9 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
737
816
  lastSyncStatus?: "ok" | "error" | undefined;
738
817
  lastSyncError?: string | undefined;
739
818
  }, {
740
- name: string;
741
819
  id: string;
742
820
  source: "user";
821
+ name: string;
743
822
  url: string;
744
823
  branch: string;
745
824
  enabled: boolean;
@@ -770,10 +849,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
770
849
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
771
850
  lastSyncError: z.ZodOptional<z.ZodString>;
772
851
  }, "strip", z.ZodTypeAny, {
773
- name: string;
774
852
  id: string;
775
853
  description: string;
776
854
  source: "default";
855
+ name: string;
777
856
  url: string;
778
857
  branch: string;
779
858
  enabled: boolean;
@@ -785,10 +864,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
785
864
  lastSyncStatus?: "ok" | "error" | undefined;
786
865
  lastSyncError?: string | undefined;
787
866
  }, {
788
- name: string;
789
867
  id: string;
790
868
  description: string;
791
869
  source: "default";
870
+ name: string;
792
871
  url: string;
793
872
  branch: string;
794
873
  enabled: boolean;
@@ -814,9 +893,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
814
893
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
815
894
  lastSyncError: z.ZodOptional<z.ZodString>;
816
895
  }, "strip", z.ZodTypeAny, {
817
- name: string;
818
896
  id: string;
819
897
  source: "user";
898
+ name: string;
820
899
  url: string;
821
900
  branch: string;
822
901
  enabled: boolean;
@@ -828,9 +907,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
828
907
  lastSyncStatus?: "ok" | "error" | undefined;
829
908
  lastSyncError?: string | undefined;
830
909
  }, {
831
- name: string;
832
910
  id: string;
833
911
  source: "user";
912
+ name: string;
834
913
  url: string;
835
914
  branch: string;
836
915
  enabled: boolean;
@@ -845,10 +924,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
845
924
  }, "strip", z.ZodTypeAny, {
846
925
  version: 1;
847
926
  repos: ({
848
- name: string;
849
927
  id: string;
850
928
  description: string;
851
929
  source: "default";
930
+ name: string;
852
931
  url: string;
853
932
  branch: string;
854
933
  enabled: boolean;
@@ -860,9 +939,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
860
939
  lastSyncStatus?: "ok" | "error" | undefined;
861
940
  lastSyncError?: string | undefined;
862
941
  } | {
863
- name: string;
864
942
  id: string;
865
943
  source: "user";
944
+ name: string;
866
945
  url: string;
867
946
  branch: string;
868
947
  enabled: boolean;
@@ -878,10 +957,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
878
957
  }, {
879
958
  version: 1;
880
959
  repos: ({
881
- name: string;
882
960
  id: string;
883
961
  description: string;
884
962
  source: "default";
963
+ name: string;
885
964
  url: string;
886
965
  branch: string;
887
966
  enabled: boolean;
@@ -893,9 +972,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
893
972
  lastSyncStatus?: "ok" | "error" | undefined;
894
973
  lastSyncError?: string | undefined;
895
974
  } | {
896
- name: string;
897
975
  id: string;
898
976
  source: "user";
977
+ name: string;
899
978
  url: string;
900
979
  branch: string;
901
980
  enabled: boolean;
@@ -911,10 +990,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
911
990
  }>, {
912
991
  version: 1;
913
992
  repos: ({
914
- name: string;
915
993
  id: string;
916
994
  description: string;
917
995
  source: "default";
996
+ name: string;
918
997
  url: string;
919
998
  branch: string;
920
999
  enabled: boolean;
@@ -926,9 +1005,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
926
1005
  lastSyncStatus?: "ok" | "error" | undefined;
927
1006
  lastSyncError?: string | undefined;
928
1007
  } | {
929
- name: string;
930
1008
  id: string;
931
1009
  source: "user";
1010
+ name: string;
932
1011
  url: string;
933
1012
  branch: string;
934
1013
  enabled: boolean;
@@ -944,10 +1023,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
944
1023
  }, {
945
1024
  version: 1;
946
1025
  repos: ({
947
- name: string;
948
1026
  id: string;
949
1027
  description: string;
950
1028
  source: "default";
1029
+ name: string;
951
1030
  url: string;
952
1031
  branch: string;
953
1032
  enabled: boolean;
@@ -959,9 +1038,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
959
1038
  lastSyncStatus?: "ok" | "error" | undefined;
960
1039
  lastSyncError?: string | undefined;
961
1040
  } | {
962
- name: string;
963
1041
  id: string;
964
1042
  source: "user";
1043
+ name: string;
965
1044
  url: string;
966
1045
  branch: string;
967
1046
  enabled: boolean;
@@ -1850,4 +1929,4 @@ declare class SkillStore {
1850
1929
  declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
1851
1930
  declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
1852
1931
 
1853
- 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, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type InstalledAgent, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PidManager, 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, 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, type SaveDraftOptions, SchedulerDaemon, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServiceMeLogger, 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 UserRepoConfig, WorkspaceProbe, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildDefaultReposFile, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, createReposStore, defaultRepoSchema as defaultRepoConfigSchema, ensureDefaultsInstalled, 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, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, matchesCron, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseIntervalMs, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolveTaskExecutionPayload, setUserHomeOverrides, unzipFile, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload };
1932
+ 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, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type InstalledAgent, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PidManager, 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, 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, SchedulerDaemon, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServerProxyGlobalPatch, type ServerProxyGlobalState, type ServiceMeLogger, 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 UserRepoConfig, WorkspaceProbe, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildDefaultReposFile, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, createReposStore, defaultRepoSchema as defaultRepoConfigSchema, ensureDefaultsInstalled, 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, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, matchesCron, migrateLegacyServerProxyEnabled, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseIntervalMs, readServerProxyGlobal, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolveTaskExecutionPayload, setUserHomeOverrides, unzipFile, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeServerProxyGlobal };
package/dist/index.d.ts CHANGED
@@ -326,6 +326,8 @@ declare const DRAFTS_SUBDIR = "drafts";
326
326
  declare const SKILL_DRAFTS_SUBDIR = "skills";
327
327
  declare const AGENT_DRAFTS_SUBDIR = "agents";
328
328
  declare const REPOS_CONFIG_FILENAME = "repos.json";
329
+ /** rev.20 — r7 BYOM Server Proxy toggle self-state (read by ext + CLI + server). */
330
+ declare const SERVER_PROXY_GLOBAL_FILENAME = "server-proxy.json";
329
331
  /**
330
332
  * Repo id regex — used to validate any `repoId` argument before it is joined
331
333
  * into a filesystem path. Keeps path traversal attempts out and gives us a
@@ -410,6 +412,18 @@ declare function getSchedulerLogPath(): string;
410
412
  declare function getMigrationFailuresPath(): string;
411
413
  /** `~/.serviceme/known-workspaces.json` — workspace list the extension has seen. */
412
414
  declare function getKnownWorkspacesPath(): string;
415
+ /**
416
+ * `~/.serviceme/server-proxy.json` — r7 BYOM Server Proxy toggle
417
+ * self-state. Written by the extension's `ProxyConfigService`, readable
418
+ * by the CLI / Server so they can decide whether to route traffic
419
+ * through the corporate proxy without booting VS Code.
420
+ *
421
+ * Lives under user-level `~/.serviceme/` (not under a workspace) because
422
+ * the toggle is a *user preference* — the same human enabling it on
423
+ * machine A should be able to rely on it on machine B after sync, not
424
+ * have it disappear when they switch repos.
425
+ */
426
+ declare function getServerProxyGlobalPath(): string;
413
427
  /** Layout constants for the Phase 5 client-side state files. The server
414
428
  * already has the corresponding routes (`/api/v1/auth/...`,
415
429
  * `/api/v1/device/...`, etc.) — the client just needs the on-disk
@@ -431,6 +445,71 @@ declare function getMachineIdPath(): string;
431
445
  /** `~/.serviceme/profiles.json` — cached projection of server-side profile rows; refresh on demand. */
432
446
  declare function getProfilesJsonPath(): string;
433
447
 
448
+ /** On-disk shape for `~/.serviceme/server-proxy.json`. */
449
+ interface ServerProxyGlobalState {
450
+ /** Whether the user has previously enabled Server Proxy. */
451
+ enabled: boolean;
452
+ /** Last server URL we toggled ON with. Used for re-toggling and UI hint. */
453
+ lastServerUrl: string | undefined;
454
+ /**
455
+ * rev.21 — explicit opt-in to enable Server Proxy even when
456
+ * `http.proxySupport === "override"`. `override` mode forces ALL
457
+ * extensions to route through `http.proxy`; defaulting to `false`
458
+ * keeps the legacy defensive guard against accidental global
459
+ * hijack. Power users (e.g. corp environments that WANT all
460
+ * extensions including GitHub Copilot Chat to route through the
461
+ * corp tunnel) can flip this on via the Webview's "Allow under
462
+ * proxySupport=override" affordance.
463
+ *
464
+ * Note: stored in the global file alongside `enabled` because
465
+ * this is *our* self-flag — it has nothing to do with VS Code's
466
+ * `http.*` schema.
467
+ */
468
+ allowOverride: boolean;
469
+ /** ISO 8601 timestamp of the most recent write. Diagnostic only. */
470
+ updatedAt: string;
471
+ }
472
+ /**
473
+ * Patch semantics (mirrors `vscode.workspace.getConfiguration().update(...)`):
474
+ * - Field omitted / `undefined` → leave the existing value alone.
475
+ * - Field set to `null` → explicitly clear the field.
476
+ *
477
+ * Only `lastServerUrl` distinguishes "leave alone" from "clear"; `enabled`
478
+ * and `allowOverride` are plain `boolean | undefined` because boolean is
479
+ * the natural unit (false = "the user disabled it").
480
+ */
481
+ interface ServerProxyGlobalPatch {
482
+ enabled?: boolean;
483
+ allowOverride?: boolean;
484
+ lastServerUrl?: string | null;
485
+ }
486
+ /**
487
+ * Reads the global config file. Returns `null` if the file does not
488
+ * exist (first-run case) — does NOT throw. Throws on parse errors or
489
+ * permission issues, so callers can surface those to the user.
490
+ */
491
+ declare function readServerProxyGlobal(): Promise<ServerProxyGlobalState | null>;
492
+ /**
493
+ * Merges a partial patch into the existing state and writes back
494
+ * atomically. Creates `~/.serviceme/` if missing.
495
+ *
496
+ * Returns the post-write state. Throws on IO/JSON errors.
497
+ */
498
+ declare function writeServerProxyGlobal(patch: ServerProxyGlobalPatch): Promise<ServerProxyGlobalState>;
499
+ /**
500
+ * Best-effort migration of a legacy `enabled` flag (typically read from
501
+ * VS Code's `settings.json` at `serverProxy.enabled`) into the global
502
+ * config file.
503
+ *
504
+ * Reads via the provided accessor (so tests can stub it), writes the
505
+ * global flag if present, then **clears** the legacy flag via the
506
+ * provided writer — never silently leaves the migration half-done.
507
+ *
508
+ * Returns the migrated state, or `null` if no migration was needed
509
+ * (legacy flag absent OR global config already up to date).
510
+ */
511
+ declare function migrateLegacyServerProxyEnabled(readLegacy: () => boolean | undefined, clearLegacy: () => Promise<void>): Promise<ServerProxyGlobalState | null>;
512
+
434
513
  declare const TOOL_RISK_MAP: Record<string, AgentToolRiskLevel>;
435
514
  declare function parseAgentToolPermissions(content: string): AgentToolPermission[];
436
515
 
@@ -590,10 +669,10 @@ declare const defaultRepoSchema: z.ZodObject<{
590
669
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
591
670
  lastSyncError: z.ZodOptional<z.ZodString>;
592
671
  }, "strip", z.ZodTypeAny, {
593
- name: string;
594
672
  id: string;
595
673
  description: string;
596
674
  source: "default";
675
+ name: string;
597
676
  url: string;
598
677
  branch: string;
599
678
  enabled: boolean;
@@ -605,10 +684,10 @@ declare const defaultRepoSchema: z.ZodObject<{
605
684
  lastSyncStatus?: "ok" | "error" | undefined;
606
685
  lastSyncError?: string | undefined;
607
686
  }, {
608
- name: string;
609
687
  id: string;
610
688
  description: string;
611
689
  source: "default";
690
+ name: string;
612
691
  url: string;
613
692
  branch: string;
614
693
  enabled: boolean;
@@ -635,9 +714,9 @@ declare const userRepoSchema: z.ZodObject<{
635
714
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
636
715
  lastSyncError: z.ZodOptional<z.ZodString>;
637
716
  }, "strip", z.ZodTypeAny, {
638
- name: string;
639
717
  id: string;
640
718
  source: "user";
719
+ name: string;
641
720
  url: string;
642
721
  branch: string;
643
722
  enabled: boolean;
@@ -649,9 +728,9 @@ declare const userRepoSchema: z.ZodObject<{
649
728
  lastSyncStatus?: "ok" | "error" | undefined;
650
729
  lastSyncError?: string | undefined;
651
730
  }, {
652
- name: string;
653
731
  id: string;
654
732
  source: "user";
733
+ name: string;
655
734
  url: string;
656
735
  branch: string;
657
736
  enabled: boolean;
@@ -679,10 +758,10 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
679
758
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
680
759
  lastSyncError: z.ZodOptional<z.ZodString>;
681
760
  }, "strip", z.ZodTypeAny, {
682
- name: string;
683
761
  id: string;
684
762
  description: string;
685
763
  source: "default";
764
+ name: string;
686
765
  url: string;
687
766
  branch: string;
688
767
  enabled: boolean;
@@ -694,10 +773,10 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
694
773
  lastSyncStatus?: "ok" | "error" | undefined;
695
774
  lastSyncError?: string | undefined;
696
775
  }, {
697
- name: string;
698
776
  id: string;
699
777
  description: string;
700
778
  source: "default";
779
+ name: string;
701
780
  url: string;
702
781
  branch: string;
703
782
  enabled: boolean;
@@ -723,9 +802,9 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
723
802
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
724
803
  lastSyncError: z.ZodOptional<z.ZodString>;
725
804
  }, "strip", z.ZodTypeAny, {
726
- name: string;
727
805
  id: string;
728
806
  source: "user";
807
+ name: string;
729
808
  url: string;
730
809
  branch: string;
731
810
  enabled: boolean;
@@ -737,9 +816,9 @@ declare const repoSchema: z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
737
816
  lastSyncStatus?: "ok" | "error" | undefined;
738
817
  lastSyncError?: string | undefined;
739
818
  }, {
740
- name: string;
741
819
  id: string;
742
820
  source: "user";
821
+ name: string;
743
822
  url: string;
744
823
  branch: string;
745
824
  enabled: boolean;
@@ -770,10 +849,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
770
849
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
771
850
  lastSyncError: z.ZodOptional<z.ZodString>;
772
851
  }, "strip", z.ZodTypeAny, {
773
- name: string;
774
852
  id: string;
775
853
  description: string;
776
854
  source: "default";
855
+ name: string;
777
856
  url: string;
778
857
  branch: string;
779
858
  enabled: boolean;
@@ -785,10 +864,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
785
864
  lastSyncStatus?: "ok" | "error" | undefined;
786
865
  lastSyncError?: string | undefined;
787
866
  }, {
788
- name: string;
789
867
  id: string;
790
868
  description: string;
791
869
  source: "default";
870
+ name: string;
792
871
  url: string;
793
872
  branch: string;
794
873
  enabled: boolean;
@@ -814,9 +893,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
814
893
  lastSyncStatus: z.ZodOptional<z.ZodEnum<["ok", "error"]>>;
815
894
  lastSyncError: z.ZodOptional<z.ZodString>;
816
895
  }, "strip", z.ZodTypeAny, {
817
- name: string;
818
896
  id: string;
819
897
  source: "user";
898
+ name: string;
820
899
  url: string;
821
900
  branch: string;
822
901
  enabled: boolean;
@@ -828,9 +907,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
828
907
  lastSyncStatus?: "ok" | "error" | undefined;
829
908
  lastSyncError?: string | undefined;
830
909
  }, {
831
- name: string;
832
910
  id: string;
833
911
  source: "user";
912
+ name: string;
834
913
  url: string;
835
914
  branch: string;
836
915
  enabled: boolean;
@@ -845,10 +924,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
845
924
  }, "strip", z.ZodTypeAny, {
846
925
  version: 1;
847
926
  repos: ({
848
- name: string;
849
927
  id: string;
850
928
  description: string;
851
929
  source: "default";
930
+ name: string;
852
931
  url: string;
853
932
  branch: string;
854
933
  enabled: boolean;
@@ -860,9 +939,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
860
939
  lastSyncStatus?: "ok" | "error" | undefined;
861
940
  lastSyncError?: string | undefined;
862
941
  } | {
863
- name: string;
864
942
  id: string;
865
943
  source: "user";
944
+ name: string;
866
945
  url: string;
867
946
  branch: string;
868
947
  enabled: boolean;
@@ -878,10 +957,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
878
957
  }, {
879
958
  version: 1;
880
959
  repos: ({
881
- name: string;
882
960
  id: string;
883
961
  description: string;
884
962
  source: "default";
963
+ name: string;
885
964
  url: string;
886
965
  branch: string;
887
966
  enabled: boolean;
@@ -893,9 +972,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
893
972
  lastSyncStatus?: "ok" | "error" | undefined;
894
973
  lastSyncError?: string | undefined;
895
974
  } | {
896
- name: string;
897
975
  id: string;
898
976
  source: "user";
977
+ name: string;
899
978
  url: string;
900
979
  branch: string;
901
980
  enabled: boolean;
@@ -911,10 +990,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
911
990
  }>, {
912
991
  version: 1;
913
992
  repos: ({
914
- name: string;
915
993
  id: string;
916
994
  description: string;
917
995
  source: "default";
996
+ name: string;
918
997
  url: string;
919
998
  branch: string;
920
999
  enabled: boolean;
@@ -926,9 +1005,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
926
1005
  lastSyncStatus?: "ok" | "error" | undefined;
927
1006
  lastSyncError?: string | undefined;
928
1007
  } | {
929
- name: string;
930
1008
  id: string;
931
1009
  source: "user";
1010
+ name: string;
932
1011
  url: string;
933
1012
  branch: string;
934
1013
  enabled: boolean;
@@ -944,10 +1023,10 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
944
1023
  }, {
945
1024
  version: 1;
946
1025
  repos: ({
947
- name: string;
948
1026
  id: string;
949
1027
  description: string;
950
1028
  source: "default";
1029
+ name: string;
951
1030
  url: string;
952
1031
  branch: string;
953
1032
  enabled: boolean;
@@ -959,9 +1038,9 @@ declare const reposFileSchema: z.ZodEffects<z.ZodObject<{
959
1038
  lastSyncStatus?: "ok" | "error" | undefined;
960
1039
  lastSyncError?: string | undefined;
961
1040
  } | {
962
- name: string;
963
1041
  id: string;
964
1042
  source: "user";
1043
+ name: string;
965
1044
  url: string;
966
1045
  branch: string;
967
1046
  enabled: boolean;
@@ -1850,4 +1929,4 @@ declare class SkillStore {
1850
1929
  declare const unzipFile: (zipPath: string, dest: string) => Promise<void>;
1851
1930
  declare const moveFiles: (sourceDir: string, destDir: string, overwrite?: boolean) => Promise<void>;
1852
1931
 
1853
- 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, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type InstalledAgent, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PidManager, 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, 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, type SaveDraftOptions, SchedulerDaemon, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServiceMeLogger, 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 UserRepoConfig, WorkspaceProbe, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildDefaultReposFile, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, createReposStore, defaultRepoSchema as defaultRepoConfigSchema, ensureDefaultsInstalled, 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, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, matchesCron, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseIntervalMs, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolveTaskExecutionPayload, setUserHomeOverrides, unzipFile, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload };
1932
+ 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, CACHE_SUBDIR, CREDENTIALS_CONFIG_FILENAME, CannotRemoveDefaultRepoError, type CreateTaskInput, FIXED_ADDED_AT as DEFAULT_REPO_FIXED_ADDED_AT, DEFAULT_REPO_ID, DEVICE_JSON_FILENAME, DRAFTS_SUBDIR, DaemonLogger, type DefaultRepoConfig, type DraftDetail, DraftNotFoundError, type DraftSummary, DraftsError, DraftsStore, type EditTaskInput, EnvironmentInspector, type EnvironmentInspectorOptions, type ExecutorResult, type FsWatcherCallbacks, type FsWatcherHandle, GitClient, GithubCopilotCliExecutor, HttpRequestExecutor, ImageTools, type InstalledAgent, InvalidDraftError, InvalidRepoUrlError, type IsoTimestamp, type JsonTools, KNOWN_WORKSPACES_FILENAME, type LoadResult, MACHINE_ID_FILENAME, MIGRATION_FAILURES_FILENAME, type MigrateToGlobalOptions, type MigrationResult, type OutputEventCallback, PROFILES_JSON_FILENAME, PidManager, 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, 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, SchedulerDaemon, SchedulerDaemonV2, type SchedulerDaemonV2Options, type ServerProxyGlobalPatch, type ServerProxyGlobalState, type ServiceMeLogger, 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 UserRepoConfig, WorkspaceProbe, repoSchema as anyRepoConfigSchema, assertSafeRepoId, bootstrapDefaults, bootstrapPhase5Placeholders, buildDefaultReposFile, copilotDoctor, copilotPrompt, createConsoleLogger, createCopilotAuthRequiredError, createCopilotNotInstalledError, createImageTools, createJsonTools, createProjectTools, createReposStore, defaultRepoSchema as defaultRepoConfigSchema, ensureDefaultsInstalled, 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, isCopilotAuthenticated, isDefaultRepo, isStreamingTaskExecutor, isUserRepo, matchesCron, migrateLegacyServerProxyEnabled, migrateToGlobal, moveFiles, narrowRepoConfig, noopLogger, parseAgentToolPermissions, parseIntervalMs, readServerProxyGlobal, reposFileSchema, resetUserHomeOverrides, resolveDraftDir, resolveTaskExecutionPayload, setUserHomeOverrides, unzipFile, userRepoSchema as userRepoConfigSchema, validateReposFile, validateTaskPayload, writeServerProxyGlobal };