@serviceme/devtools-shared 0.4.10 → 0.4.11

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
@@ -929,6 +929,67 @@ interface CertificateBundleEnvironmentSupport {
929
929
  defaultPassword: string;
930
930
  }
931
931
 
932
+ /**
933
+ * Medalsoft-internal infrastructure addresses.
934
+ *
935
+ * These are **private-network only** endpoints — reachable from the
936
+ * company LAN/VPN, NOT from the public internet. External users must
937
+ * use the public equivalents (`nexus.servicemecloud.com`, …). Keeping
938
+ * them as named constants here (instead of inlined literals) gives a
939
+ * single place to update when the internal fleet moves, and makes the
940
+ * "this is an internal address" intent explicit at every use site.
941
+ *
942
+ * NOTE: `packages/serviceme-core` keeps its own copies of the ones it
943
+ * needs — ADL-003 forbids core → shared. Keep those in lock-step.
944
+ */
945
+ /** Medalsoft 内网 LLM 网关(OpenAI-compatible `/v1`),仅办公网可达。 */
946
+ declare const MEDALSOFT_PRIVATE_GATEWAY_URL = "http://10.10.10.249:3000/v1";
947
+ /** Medalsoft 私有 NuGet 源,仅办公网可达。 */
948
+ declare const MEDALSOFT_NUGET_PRIVATE_SOURCE = "http://192.168.20.209:10010/nuget";
949
+
950
+ /**
951
+ * Device-auth wire contract shared by the extension (signer) and the
952
+ * server (verifier).
953
+ *
954
+ * Single source of truth for the `x-ms-device-*` header names and the
955
+ * HMAC-SHA-256 request-signature algorithm. Previously the same
956
+ * constants + function were copy-pasted in three places
957
+ * (extension `services/device/deviceAuth.ts`, core `device/deviceAuth.ts`,
958
+ * server `lib/auth/device-signature-guard.ts`) and kept in sync by
959
+ * comments alone. Server and extension now import from here.
960
+ *
961
+ * NOTE: `packages/serviceme-core/src/device/deviceAuth.ts` keeps its own
962
+ * copy — ADL-003 forbids core → shared (and shared → core) so the core
963
+ * copy is a documented boundary exception. Keep it in lock-step with
964
+ * this file. See `docs/architecture/phase-5-device-header-spec.md` §5
965
+ * for the wire format.
966
+ */
967
+ /** Canonical header names — MUST match the server's verifier. */
968
+ declare const DeviceAuthHeaders: {
969
+ readonly deviceId: "x-ms-device-id";
970
+ readonly deviceSecret: "x-ms-device-secret";
971
+ readonly signature: "x-ms-device-signature";
972
+ readonly timestamp: "x-ms-device-timestamp";
973
+ readonly secretVersion: "x-ms-device-secret-version";
974
+ };
975
+ interface DeviceRequestSignatureParams {
976
+ method: string;
977
+ path: string;
978
+ timestamp: number;
979
+ body: string;
980
+ secret: string;
981
+ }
982
+ /**
983
+ * Basis is `METHOD\nPATH\nTIMESTAMP\nBODY\nSECRET` (LF-joined, NOT JSON).
984
+ * Output is lowercase hex SHA-256.
985
+ *
986
+ * Uses `js-sha256` (pure JS, synchronous, browser + Node) instead of
987
+ * `node:crypto` so this module stays importable from the webview (the
988
+ * shared barrel is consumed by browser bundles — `node:crypto` breaks
989
+ * the vite/rollup build).
990
+ */
991
+ declare function createDeviceRequestSignature(params: DeviceRequestSignatureParams): string;
992
+
932
993
  /**
933
994
  * Git URL Utilities
934
995
  *
@@ -1299,6 +1360,52 @@ interface BridgeRepoSyncPull {
1299
1360
  error?: string;
1300
1361
  }
1301
1362
 
1363
+ /**
1364
+ * Webview ↔ extension message-contract types.
1365
+ *
1366
+ * These three payload shapes travel across the postMessage boundary
1367
+ * (broadcast messages like `updateExternalTools` / `updateAzureProfiles`
1368
+ * / `updateApiConfig`). They used to live in
1369
+ * `apps/webview-ui/src/types` only — the extension-side handlers typed
1370
+ * them implicitly via `data` destructuring, so the contract was
1371
+ * duplicated by convention and drifted silently. Moving them here makes
1372
+ * `@serviceme/devtools-shared` the single source of truth, and lets the
1373
+ * `WebviewInboundMessage` discriminated union (messages.ts) type the
1374
+ * corresponding broadcast variants without a `as` cast at the consumer.
1375
+ *
1376
+ * NOTE: `apps/webview-ui/src/types/index.ts` re-exports these so
1377
+ * existing webview imports keep working unchanged.
1378
+ */
1379
+ interface ExternalTool {
1380
+ id: string;
1381
+ name: string;
1382
+ url: string;
1383
+ description?: string;
1384
+ icon?: string;
1385
+ isDefault?: boolean;
1386
+ }
1387
+ interface AzureProfile {
1388
+ id: string;
1389
+ name: string;
1390
+ method: "FTP" | "MSDeploy";
1391
+ host: string;
1392
+ username?: string;
1393
+ password?: string;
1394
+ remotePath?: string;
1395
+ port?: number;
1396
+ }
1397
+ interface ApiConfig {
1398
+ schemaPath: string;
1399
+ requestLibPath?: string;
1400
+ projectName?: string;
1401
+ namespace?: string;
1402
+ serversPath?: string;
1403
+ apiPrefix?: string;
1404
+ mock?: boolean;
1405
+ templatesFolder?: string;
1406
+ enumStyle?: "string-literal" | "enum";
1407
+ }
1408
+
1302
1409
  declare enum WebviewMessageType {
1303
1410
  WebviewReady = "webviewReady",
1304
1411
  Ready = "ready",
@@ -1645,18 +1752,15 @@ interface ByomProviderToggles {
1645
1752
  cacheEnabled: boolean;
1646
1753
  }
1647
1754
  /**
1648
- * Strict-typed shape for the inbound messages currently handled by
1649
- * `useAppMessages`. Stage 1 deliberately covers ONLY the variants whose
1650
- * payload types already live in `@serviceme/devtools-shared`
1651
- * (re-exported from the package index via `types/protocol-contracts` as
1652
- * `BridgeRepoEntry` / `BridgeSkillRepoEntry`) or here as named types
1653
- * (`LinkedSkillPayloadEntry`). The variants whose payload types live in
1654
- * `apps/webview-ui/src/types` (ExternalTool, AzureProfile, ApiConfig) stay
1655
- * on the enum path for now — moving those types into `@serviceme/devtools-shared` is
1656
- * its own refactor and not in scope.
1755
+ * Strict-typed shape for the inbound messages handled by
1756
+ * `useAppMessages`. Covers the 8 variants whose payload types now live
1757
+ * in `@serviceme/devtools-shared` (`webview-contract.ts` holds the
1758
+ * ExternalTool / AzureProfile / ApiConfig shapes). The string-keyed
1759
+ * `WebviewMessageType` enum stays in place for the remaining enum-path
1760
+ * call sites across `apps/webview-ui` and `apps/extension`.
1657
1761
  *
1658
1762
  * Each variant lists ONLY the fields the hook actually reads; optional
1659
- * fields are explicit (`workspaceOpen` on `UpdateSkillRepoCatalog`).
1763
+ * fields are explicit (`tools?` / `profiles?` / `workspaceOpen`).
1660
1764
  */
1661
1765
  type WebviewInboundMessage = {
1662
1766
  type: typeof WebviewMessageType.UpdateRepositoryList;
@@ -1672,6 +1776,18 @@ type WebviewInboundMessage = {
1672
1776
  type: typeof WebviewMessageType.UpdateLinkedSkills;
1673
1777
  links: LinkedSkillPayloadEntry[];
1674
1778
  kind: "skill" | "agent";
1779
+ } | {
1780
+ type: typeof WebviewMessageType.UpdateExternalTools;
1781
+ tools?: ExternalTool[];
1782
+ } | {
1783
+ type: typeof WebviewMessageType.UpdateNgrokStatus;
1784
+ isRunning: boolean;
1785
+ } | {
1786
+ type: typeof WebviewMessageType.UpdateAzureProfiles;
1787
+ profiles?: AzureProfile[];
1788
+ } | {
1789
+ type: typeof WebviewMessageType.UpdateApiConfig;
1790
+ config: ApiConfig;
1675
1791
  };
1676
1792
  /**
1677
1793
  * One entry inside the `UpdateLinkedSkills.links` array. Mirrors the
@@ -1744,4 +1860,4 @@ declare function asAbortSignal(input: unknown): AbortSignal | undefined;
1744
1860
  */
1745
1861
  declare function safeJson<T>(text: string, fallback: T): T;
1746
1862
 
1747
- export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, LISTABLE_PRESET_MODELS, type LinkedSkillPayloadEntry, LogLevel, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, NAMESPACE_ALIASES, NAMESPACE_ALIAS_FAMILY, PRESET_MODEL_FAMILIES, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type PresetModelFamilyGroup, type PresetModelListing, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, buildPresetModel, checkGitHubOrgMembership, createConsoleLogger, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getPresetModelDisplayName, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, listPresetModelGroups, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson, unionProviderModelWithPreset };
1863
+ export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, type ApiConfig, type AzureProfile, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, DeviceAuthHeaders, type DeviceRequestSignatureParams, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, type ExternalTool, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, LISTABLE_PRESET_MODELS, type LinkedSkillPayloadEntry, LogLevel, MEDALSOFT_NUGET_PRIVATE_SOURCE, MEDALSOFT_PRIVATE_GATEWAY_URL, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, NAMESPACE_ALIASES, NAMESPACE_ALIAS_FAMILY, PRESET_MODEL_FAMILIES, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type PresetModelFamilyGroup, type PresetModelListing, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, buildPresetModel, checkGitHubOrgMembership, createConsoleLogger, createDeviceRequestSignature, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getPresetModelDisplayName, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, listPresetModelGroups, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson, unionProviderModelWithPreset };
package/dist/index.d.ts CHANGED
@@ -929,6 +929,67 @@ interface CertificateBundleEnvironmentSupport {
929
929
  defaultPassword: string;
930
930
  }
931
931
 
932
+ /**
933
+ * Medalsoft-internal infrastructure addresses.
934
+ *
935
+ * These are **private-network only** endpoints — reachable from the
936
+ * company LAN/VPN, NOT from the public internet. External users must
937
+ * use the public equivalents (`nexus.servicemecloud.com`, …). Keeping
938
+ * them as named constants here (instead of inlined literals) gives a
939
+ * single place to update when the internal fleet moves, and makes the
940
+ * "this is an internal address" intent explicit at every use site.
941
+ *
942
+ * NOTE: `packages/serviceme-core` keeps its own copies of the ones it
943
+ * needs — ADL-003 forbids core → shared. Keep those in lock-step.
944
+ */
945
+ /** Medalsoft 内网 LLM 网关(OpenAI-compatible `/v1`),仅办公网可达。 */
946
+ declare const MEDALSOFT_PRIVATE_GATEWAY_URL = "http://10.10.10.249:3000/v1";
947
+ /** Medalsoft 私有 NuGet 源,仅办公网可达。 */
948
+ declare const MEDALSOFT_NUGET_PRIVATE_SOURCE = "http://192.168.20.209:10010/nuget";
949
+
950
+ /**
951
+ * Device-auth wire contract shared by the extension (signer) and the
952
+ * server (verifier).
953
+ *
954
+ * Single source of truth for the `x-ms-device-*` header names and the
955
+ * HMAC-SHA-256 request-signature algorithm. Previously the same
956
+ * constants + function were copy-pasted in three places
957
+ * (extension `services/device/deviceAuth.ts`, core `device/deviceAuth.ts`,
958
+ * server `lib/auth/device-signature-guard.ts`) and kept in sync by
959
+ * comments alone. Server and extension now import from here.
960
+ *
961
+ * NOTE: `packages/serviceme-core/src/device/deviceAuth.ts` keeps its own
962
+ * copy — ADL-003 forbids core → shared (and shared → core) so the core
963
+ * copy is a documented boundary exception. Keep it in lock-step with
964
+ * this file. See `docs/architecture/phase-5-device-header-spec.md` §5
965
+ * for the wire format.
966
+ */
967
+ /** Canonical header names — MUST match the server's verifier. */
968
+ declare const DeviceAuthHeaders: {
969
+ readonly deviceId: "x-ms-device-id";
970
+ readonly deviceSecret: "x-ms-device-secret";
971
+ readonly signature: "x-ms-device-signature";
972
+ readonly timestamp: "x-ms-device-timestamp";
973
+ readonly secretVersion: "x-ms-device-secret-version";
974
+ };
975
+ interface DeviceRequestSignatureParams {
976
+ method: string;
977
+ path: string;
978
+ timestamp: number;
979
+ body: string;
980
+ secret: string;
981
+ }
982
+ /**
983
+ * Basis is `METHOD\nPATH\nTIMESTAMP\nBODY\nSECRET` (LF-joined, NOT JSON).
984
+ * Output is lowercase hex SHA-256.
985
+ *
986
+ * Uses `js-sha256` (pure JS, synchronous, browser + Node) instead of
987
+ * `node:crypto` so this module stays importable from the webview (the
988
+ * shared barrel is consumed by browser bundles — `node:crypto` breaks
989
+ * the vite/rollup build).
990
+ */
991
+ declare function createDeviceRequestSignature(params: DeviceRequestSignatureParams): string;
992
+
932
993
  /**
933
994
  * Git URL Utilities
934
995
  *
@@ -1299,6 +1360,52 @@ interface BridgeRepoSyncPull {
1299
1360
  error?: string;
1300
1361
  }
1301
1362
 
1363
+ /**
1364
+ * Webview ↔ extension message-contract types.
1365
+ *
1366
+ * These three payload shapes travel across the postMessage boundary
1367
+ * (broadcast messages like `updateExternalTools` / `updateAzureProfiles`
1368
+ * / `updateApiConfig`). They used to live in
1369
+ * `apps/webview-ui/src/types` only — the extension-side handlers typed
1370
+ * them implicitly via `data` destructuring, so the contract was
1371
+ * duplicated by convention and drifted silently. Moving them here makes
1372
+ * `@serviceme/devtools-shared` the single source of truth, and lets the
1373
+ * `WebviewInboundMessage` discriminated union (messages.ts) type the
1374
+ * corresponding broadcast variants without a `as` cast at the consumer.
1375
+ *
1376
+ * NOTE: `apps/webview-ui/src/types/index.ts` re-exports these so
1377
+ * existing webview imports keep working unchanged.
1378
+ */
1379
+ interface ExternalTool {
1380
+ id: string;
1381
+ name: string;
1382
+ url: string;
1383
+ description?: string;
1384
+ icon?: string;
1385
+ isDefault?: boolean;
1386
+ }
1387
+ interface AzureProfile {
1388
+ id: string;
1389
+ name: string;
1390
+ method: "FTP" | "MSDeploy";
1391
+ host: string;
1392
+ username?: string;
1393
+ password?: string;
1394
+ remotePath?: string;
1395
+ port?: number;
1396
+ }
1397
+ interface ApiConfig {
1398
+ schemaPath: string;
1399
+ requestLibPath?: string;
1400
+ projectName?: string;
1401
+ namespace?: string;
1402
+ serversPath?: string;
1403
+ apiPrefix?: string;
1404
+ mock?: boolean;
1405
+ templatesFolder?: string;
1406
+ enumStyle?: "string-literal" | "enum";
1407
+ }
1408
+
1302
1409
  declare enum WebviewMessageType {
1303
1410
  WebviewReady = "webviewReady",
1304
1411
  Ready = "ready",
@@ -1645,18 +1752,15 @@ interface ByomProviderToggles {
1645
1752
  cacheEnabled: boolean;
1646
1753
  }
1647
1754
  /**
1648
- * Strict-typed shape for the inbound messages currently handled by
1649
- * `useAppMessages`. Stage 1 deliberately covers ONLY the variants whose
1650
- * payload types already live in `@serviceme/devtools-shared`
1651
- * (re-exported from the package index via `types/protocol-contracts` as
1652
- * `BridgeRepoEntry` / `BridgeSkillRepoEntry`) or here as named types
1653
- * (`LinkedSkillPayloadEntry`). The variants whose payload types live in
1654
- * `apps/webview-ui/src/types` (ExternalTool, AzureProfile, ApiConfig) stay
1655
- * on the enum path for now — moving those types into `@serviceme/devtools-shared` is
1656
- * its own refactor and not in scope.
1755
+ * Strict-typed shape for the inbound messages handled by
1756
+ * `useAppMessages`. Covers the 8 variants whose payload types now live
1757
+ * in `@serviceme/devtools-shared` (`webview-contract.ts` holds the
1758
+ * ExternalTool / AzureProfile / ApiConfig shapes). The string-keyed
1759
+ * `WebviewMessageType` enum stays in place for the remaining enum-path
1760
+ * call sites across `apps/webview-ui` and `apps/extension`.
1657
1761
  *
1658
1762
  * Each variant lists ONLY the fields the hook actually reads; optional
1659
- * fields are explicit (`workspaceOpen` on `UpdateSkillRepoCatalog`).
1763
+ * fields are explicit (`tools?` / `profiles?` / `workspaceOpen`).
1660
1764
  */
1661
1765
  type WebviewInboundMessage = {
1662
1766
  type: typeof WebviewMessageType.UpdateRepositoryList;
@@ -1672,6 +1776,18 @@ type WebviewInboundMessage = {
1672
1776
  type: typeof WebviewMessageType.UpdateLinkedSkills;
1673
1777
  links: LinkedSkillPayloadEntry[];
1674
1778
  kind: "skill" | "agent";
1779
+ } | {
1780
+ type: typeof WebviewMessageType.UpdateExternalTools;
1781
+ tools?: ExternalTool[];
1782
+ } | {
1783
+ type: typeof WebviewMessageType.UpdateNgrokStatus;
1784
+ isRunning: boolean;
1785
+ } | {
1786
+ type: typeof WebviewMessageType.UpdateAzureProfiles;
1787
+ profiles?: AzureProfile[];
1788
+ } | {
1789
+ type: typeof WebviewMessageType.UpdateApiConfig;
1790
+ config: ApiConfig;
1675
1791
  };
1676
1792
  /**
1677
1793
  * One entry inside the `UpdateLinkedSkills.links` array. Mirrors the
@@ -1744,4 +1860,4 @@ declare function asAbortSignal(input: unknown): AbortSignal | undefined;
1744
1860
  */
1745
1861
  declare function safeJson<T>(text: string, fallback: T): T;
1746
1862
 
1747
- export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, LISTABLE_PRESET_MODELS, type LinkedSkillPayloadEntry, LogLevel, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, NAMESPACE_ALIASES, NAMESPACE_ALIAS_FAMILY, PRESET_MODEL_FAMILIES, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type PresetModelFamilyGroup, type PresetModelListing, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, buildPresetModel, checkGitHubOrgMembership, createConsoleLogger, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getPresetModelDisplayName, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, listPresetModelGroups, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson, unionProviderModelWithPreset };
1863
+ export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, type ApiConfig, type AzureProfile, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, DeviceAuthHeaders, type DeviceRequestSignatureParams, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, type ExternalTool, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, LISTABLE_PRESET_MODELS, type LinkedSkillPayloadEntry, LogLevel, MEDALSOFT_NUGET_PRIVATE_SOURCE, MEDALSOFT_PRIVATE_GATEWAY_URL, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, NAMESPACE_ALIASES, NAMESPACE_ALIAS_FAMILY, PRESET_MODEL_FAMILIES, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type PresetModelFamilyGroup, type PresetModelListing, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, buildPresetModel, checkGitHubOrgMembership, createConsoleLogger, createDeviceRequestSignature, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getPresetModelDisplayName, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, listPresetModelGroups, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson, unionProviderModelWithPreset };
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ __export(index_exports, {
24
24
  ByomSettingsResponse: () => ByomSettingsResponse,
25
25
  CERTIFICATE_BUNDLE_FORMATS: () => CERTIFICATE_BUNDLE_FORMATS,
26
26
  CachedServerUrlResponse: () => CachedServerUrlResponse,
27
+ DeviceAuthHeaders: () => DeviceAuthHeaders,
27
28
  GIT_REMOTE_HOST_ALIASES: () => GIT_REMOTE_HOST_ALIASES,
28
29
  GetByomSettings: () => GetByomSettings,
29
30
  GetCachedServerUrl: () => GetCachedServerUrl,
@@ -31,6 +32,8 @@ __export(index_exports, {
31
32
  GetUtilityModels: () => GetUtilityModels,
32
33
  LISTABLE_PRESET_MODELS: () => LISTABLE_PRESET_MODELS,
33
34
  LogLevel: () => LogLevel,
35
+ MEDALSOFT_NUGET_PRIVATE_SOURCE: () => MEDALSOFT_NUGET_PRIVATE_SOURCE,
36
+ MEDALSOFT_PRIVATE_GATEWAY_URL: () => MEDALSOFT_PRIVATE_GATEWAY_URL,
34
37
  MODEL_METADATA: () => MODEL_METADATA,
35
38
  NAMESPACE_ALIASES: () => NAMESPACE_ALIASES,
36
39
  NAMESPACE_ALIAS_FAMILY: () => NAMESPACE_ALIAS_FAMILY,
@@ -50,6 +53,7 @@ __export(index_exports, {
50
53
  buildPresetModel: () => buildPresetModel,
51
54
  checkGitHubOrgMembership: () => checkGitHubOrgMembership,
52
55
  createConsoleLogger: () => createConsoleLogger,
56
+ createDeviceRequestSignature: () => createDeviceRequestSignature,
53
57
  currencyForBaseUrl: () => currencyForBaseUrl,
54
58
  effectiveAdapterType: () => effectiveAdapterType,
55
59
  fetchGitHubUser: () => fetchGitHubUser,
@@ -89,6 +93,10 @@ function effectiveAdapterType(configuredType, baseUrl) {
89
93
  return configuredType;
90
94
  }
91
95
 
96
+ // src/constants.ts
97
+ var MEDALSOFT_PRIVATE_GATEWAY_URL = "http://10.10.10.249:3000/v1";
98
+ var MEDALSOFT_NUGET_PRIVATE_SOURCE = "http://192.168.20.209:10010/nuget";
99
+
92
100
  // src/ai/providers.base-url.ts
93
101
  var PROVIDER_BASE_URL_PRESETS = {
94
102
  "openai-compatible": [],
@@ -170,7 +178,11 @@ var PROVIDER_BASE_URL_PRESETS = {
170
178
  { label: "\u5168\u7403", baseUrl: "https://apihub.agnes-ai.com/v1" }
171
179
  ],
172
180
  // Medalsoft internal LLM gateway — single OpenAI-compatible endpoint.
173
- medalsoft: [{ label: "\u5185\u90E8\u7F51\u5173", baseUrl: "https://nexus.servicemecloud.com/v1" }],
181
+ // 内网地址见 `constants.ts`(仅办公网可达);外网走 nexus
182
+ medalsoft: [
183
+ { label: "\u5185\u7F51", baseUrl: MEDALSOFT_PRIVATE_GATEWAY_URL },
184
+ { label: "\u5916\u7F51", baseUrl: "https://nexus.servicemecloud.com/v1" }
185
+ ],
174
186
  "vscode-builtin": []
175
187
  };
176
188
  function getProviderBaseUrlPresets(type) {
@@ -1607,6 +1619,26 @@ var CERTIFICATE_BUNDLE_FORMATS = [
1607
1619
  }
1608
1620
  ];
1609
1621
 
1622
+ // src/device-auth.ts
1623
+ var import_js_sha256 = require("js-sha256");
1624
+ var DeviceAuthHeaders = {
1625
+ deviceId: "x-ms-device-id",
1626
+ deviceSecret: "x-ms-device-secret",
1627
+ signature: "x-ms-device-signature",
1628
+ timestamp: "x-ms-device-timestamp",
1629
+ secretVersion: "x-ms-device-secret-version"
1630
+ };
1631
+ function createDeviceRequestSignature(params) {
1632
+ const basis = [
1633
+ params.method.toUpperCase(),
1634
+ params.path,
1635
+ String(params.timestamp),
1636
+ params.body,
1637
+ params.secret
1638
+ ].join("\n");
1639
+ return (0, import_js_sha256.sha256)(basis);
1640
+ }
1641
+
1610
1642
  // src/git-utils.ts
1611
1643
  var GIT_REMOTE_HOST_ALIASES = {
1612
1644
  "github-msc": "github.com"
@@ -2076,6 +2108,7 @@ function safeJson(text, fallback) {
2076
2108
  ByomSettingsResponse,
2077
2109
  CERTIFICATE_BUNDLE_FORMATS,
2078
2110
  CachedServerUrlResponse,
2111
+ DeviceAuthHeaders,
2079
2112
  GIT_REMOTE_HOST_ALIASES,
2080
2113
  GetByomSettings,
2081
2114
  GetCachedServerUrl,
@@ -2083,6 +2116,8 @@ function safeJson(text, fallback) {
2083
2116
  GetUtilityModels,
2084
2117
  LISTABLE_PRESET_MODELS,
2085
2118
  LogLevel,
2119
+ MEDALSOFT_NUGET_PRIVATE_SOURCE,
2120
+ MEDALSOFT_PRIVATE_GATEWAY_URL,
2086
2121
  MODEL_METADATA,
2087
2122
  NAMESPACE_ALIASES,
2088
2123
  NAMESPACE_ALIAS_FAMILY,
@@ -2102,6 +2137,7 @@ function safeJson(text, fallback) {
2102
2137
  buildPresetModel,
2103
2138
  checkGitHubOrgMembership,
2104
2139
  createConsoleLogger,
2140
+ createDeviceRequestSignature,
2105
2141
  currencyForBaseUrl,
2106
2142
  effectiveAdapterType,
2107
2143
  fetchGitHubUser,
package/dist/index.mjs CHANGED
@@ -14,6 +14,10 @@ function effectiveAdapterType(configuredType, baseUrl) {
14
14
  return configuredType;
15
15
  }
16
16
 
17
+ // src/constants.ts
18
+ var MEDALSOFT_PRIVATE_GATEWAY_URL = "http://10.10.10.249:3000/v1";
19
+ var MEDALSOFT_NUGET_PRIVATE_SOURCE = "http://192.168.20.209:10010/nuget";
20
+
17
21
  // src/ai/providers.base-url.ts
18
22
  var PROVIDER_BASE_URL_PRESETS = {
19
23
  "openai-compatible": [],
@@ -95,7 +99,11 @@ var PROVIDER_BASE_URL_PRESETS = {
95
99
  { label: "\u5168\u7403", baseUrl: "https://apihub.agnes-ai.com/v1" }
96
100
  ],
97
101
  // Medalsoft internal LLM gateway — single OpenAI-compatible endpoint.
98
- medalsoft: [{ label: "\u5185\u90E8\u7F51\u5173", baseUrl: "https://nexus.servicemecloud.com/v1" }],
102
+ // 内网地址见 `constants.ts`(仅办公网可达);外网走 nexus
103
+ medalsoft: [
104
+ { label: "\u5185\u7F51", baseUrl: MEDALSOFT_PRIVATE_GATEWAY_URL },
105
+ { label: "\u5916\u7F51", baseUrl: "https://nexus.servicemecloud.com/v1" }
106
+ ],
99
107
  "vscode-builtin": []
100
108
  };
101
109
  function getProviderBaseUrlPresets(type) {
@@ -1532,6 +1540,26 @@ var CERTIFICATE_BUNDLE_FORMATS = [
1532
1540
  }
1533
1541
  ];
1534
1542
 
1543
+ // src/device-auth.ts
1544
+ import { sha256 } from "js-sha256";
1545
+ var DeviceAuthHeaders = {
1546
+ deviceId: "x-ms-device-id",
1547
+ deviceSecret: "x-ms-device-secret",
1548
+ signature: "x-ms-device-signature",
1549
+ timestamp: "x-ms-device-timestamp",
1550
+ secretVersion: "x-ms-device-secret-version"
1551
+ };
1552
+ function createDeviceRequestSignature(params) {
1553
+ const basis = [
1554
+ params.method.toUpperCase(),
1555
+ params.path,
1556
+ String(params.timestamp),
1557
+ params.body,
1558
+ params.secret
1559
+ ].join("\n");
1560
+ return sha256(basis);
1561
+ }
1562
+
1535
1563
  // src/git-utils.ts
1536
1564
  var GIT_REMOTE_HOST_ALIASES = {
1537
1565
  "github-msc": "github.com"
@@ -2000,6 +2028,7 @@ export {
2000
2028
  ByomSettingsResponse,
2001
2029
  CERTIFICATE_BUNDLE_FORMATS,
2002
2030
  CachedServerUrlResponse,
2031
+ DeviceAuthHeaders,
2003
2032
  GIT_REMOTE_HOST_ALIASES,
2004
2033
  GetByomSettings,
2005
2034
  GetCachedServerUrl,
@@ -2007,6 +2036,8 @@ export {
2007
2036
  GetUtilityModels,
2008
2037
  LISTABLE_PRESET_MODELS,
2009
2038
  LogLevel,
2039
+ MEDALSOFT_NUGET_PRIVATE_SOURCE,
2040
+ MEDALSOFT_PRIVATE_GATEWAY_URL,
2010
2041
  MODEL_METADATA,
2011
2042
  NAMESPACE_ALIASES,
2012
2043
  NAMESPACE_ALIAS_FAMILY,
@@ -2026,6 +2057,7 @@ export {
2026
2057
  buildPresetModel,
2027
2058
  checkGitHubOrgMembership,
2028
2059
  createConsoleLogger,
2060
+ createDeviceRequestSignature,
2029
2061
  currencyForBaseUrl,
2030
2062
  effectiveAdapterType,
2031
2063
  fetchGitHubUser,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serviceme/devtools-shared",
3
- "version": "0.4.10",
3
+ "version": "0.4.11",
4
4
  "description": "Shared webview↔extension message contracts and cross-package data models used by SERVICEME.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -37,6 +37,9 @@
37
37
  "tsup": "^8.5.1",
38
38
  "typescript": "^5.9.3"
39
39
  },
40
+ "dependencies": {
41
+ "js-sha256": "^1.0.0"
42
+ },
40
43
  "scripts": {
41
44
  "watch": "tsup src/index.ts --format cjs,esm --dts --watch",
42
45
  "build": "tsup src/index.ts --format cjs,esm --dts",