@synsci/sdk 1.3.4 → 1.3.5-test.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -5,7 +5,7 @@ export async function createOpenScienceServer(options) {
5
5
  port: 4096,
6
6
  timeout: 5000,
7
7
  }, options ?? {});
8
- const args = [`serve`, `--hostname=${options.hostname}`, `--port=${options.port}`];
8
+ const args = [`serve`, `--port=${options.port}`];
9
9
  if (options.config?.logLevel)
10
10
  args.push(`--log-level=${options.config.logLevel}`);
11
11
  const proc = spawn(`openscience`, args, {
@@ -27,7 +27,9 @@ export async function createOpenScienceServer(options) {
27
27
  if (line.startsWith("openscience server listening")) {
28
28
  const match = line.match(/on\s+(https?:\/\/[^\s]+)/);
29
29
  if (!match) {
30
- throw new Error(`Failed to parse server url from output: ${line}`);
30
+ clearTimeout(id);
31
+ reject(new Error(`Failed to parse server url from output: ${line}`));
32
+ return;
31
33
  }
32
34
  clearTimeout(id);
33
35
  resolve(match[1]);
@@ -1,5 +1,5 @@
1
1
  import { type Client, type Options as Options2, type TDataShape } from "./client/index.js";
2
- import type { AccountBalanceResponses, AccountBillingModeGetResponses, AccountBillingModeSetResponses, AccountDeviceRevokeResponses, AccountDevicesResponses, AccountGetResponses, AccountLoginKeyResponses, AccountLogoutResponses, AgentPartInput, AppAgentsResponses, AppLogErrors, AppLogResponses, AppSkillDeleteResponses, AppSkillsResponses, AppSkillWriteResponses, Auth as Auth3, AuthRemoveErrors, AuthRemoveResponses, AuthSetErrors, AuthSetResponses, CommandListResponses, Config as Config4, ConfigGetResponses, ConfigProvidersResponses, ConfigUpdateErrors, ConfigUpdateResponses, EventSubscribeResponses, ExperimentalResourceListResponses, FileListResponses, FilePartInput, FilePartSource, FileReadResponses, FileStatusResponses, FileWriteResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, FormatterStatusResponses, GlobalConfigGetResponses, GlobalConfigRawGetResponses, GlobalConfigRawSetErrors, GlobalConfigRawSetResponses, GlobalConfigUnsetErrors, GlobalConfigUnsetResponses, GlobalConfigUpdateErrors, GlobalConfigUpdateResponses, GlobalDisposeResponses, GlobalEventResponses, GlobalHealthResponses, GlobalSyncResponses, InstanceDisposeResponses, LspStatusResponses, McpAddErrors, McpAddResponses, McpAuthAuthenticateErrors, McpAuthAuthenticateResponses, McpAuthCallbackErrors, McpAuthCallbackResponses, McpAuthRemoveErrors, McpAuthRemoveResponses, McpAuthStartErrors, McpAuthStartResponses, McpConfigRemoveErrors, McpConfigRemoveResponses, McpConfigSetErrors, McpConfigSetResponses, McpConnectResponses, McpDisconnectResponses, McpLocalConfig, McpRemoteConfig, McpStatusResponses, Part as Part2, PartDeleteErrors, PartDeleteResponses, PartUpdateErrors, PartUpdateResponses, PathGetResponses, PermissionListResponses, PermissionReplyErrors, PermissionReplyResponses, PermissionRespondErrors, PermissionRespondResponses, PermissionRuleset, PostSettingsLocalModelsResponses, PostSettingsLocalResponses, PostSettingsLocalStartResponses, ProjectCurrentResponses, ProjectListResponses, ProjectUpdateErrors, ProjectUpdateResponses, ProviderAuthResponses, ProviderListResponses, ProviderOauthAuthorizeErrors, ProviderOauthAuthorizeResponses, ProviderOauthCallbackErrors, ProviderOauthCallbackResponses, PtyConnectErrors, PtyConnectResponses, PtyCreateErrors, PtyCreateResponses, PtyGetErrors, PtyGetResponses, PtyListResponses, PtyRemoveErrors, PtyRemoveResponses, PtyUpdateErrors, PtyUpdateResponses, PutSettingsSandboxResponses, QuestionAnswer, QuestionListResponses, QuestionRejectErrors, QuestionRejectResponses, QuestionReplyErrors, QuestionReplyResponses, SessionAbortErrors, SessionAbortResponses, SessionChildrenErrors, SessionChildrenResponses, SessionCommandErrors, SessionCommandResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteErrors, SessionDeleteResponses, SessionDiffResponses, SessionForkResponses, SessionGetErrors, SessionGetResponses, SessionInitErrors, SessionInitResponses, SessionListResponses, SessionMessageErrors, SessionMessageResponses, SessionMessagesErrors, SessionMessagesResponses, SessionPromptAsyncErrors, SessionPromptAsyncResponses, SessionPromptErrors, SessionPromptResponses, SessionRevertErrors, SessionRevertResponses, SessionShellErrors, SessionShellResponses, SessionStatusErrors, SessionStatusResponses, SessionSummarizeErrors, SessionSummarizeResponses, SessionTodoErrors, SessionTodoResponses, SessionUnrevertErrors, SessionUnrevertResponses, SessionUpdateErrors, SessionUpdateResponses, SettingsBillingGetResponses, SettingsBillingUpdateResponses, SettingsComputeEndpointAddErrors, SettingsComputeEndpointAddResponses, SettingsComputeEndpointRemoveResponses, SettingsComputeGetResponses, SettingsComputeProviderConnectErrors, SettingsComputeProviderConnectResponses, SettingsComputeProviderDisconnectResponses, SettingsComputeSshAddErrors, SettingsComputeSshAddResponses, SettingsComputeSshRemoveResponses, SettingsCredentialsListResponses, SettingsCredentialsRemoveResponses, SettingsCredentialsSetResponses, SettingsMemoryGetResponses, SettingsMemorySetResponses, SettingsNetworkGetResponses, SettingsNetworkSetResponses, SettingsPermissionsGetResponses, SettingsPermissionsRevokeAllErrors, SettingsPermissionsRevokeAllResponses, SettingsPermissionsSetErrors, SettingsPermissionsSetResponses, SettingsPreferencesGetResponses, SettingsPreferencesUpdateResponses, SettingsSkillsInstallErrors, SettingsSkillsInstallResponses, SettingsStorageRelocateResponses, SettingsStorageResetLocationResponses, SettingsStorageUsageResponses, SettingsUsageGetResponses, SettingsWalletGetResponses, SubtaskPartInput, TextPartInput, ToolIdsErrors, ToolIdsResponses, ToolListErrors, ToolListResponses, VcsGetResponses, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, WorktreeListResponses, WorktreeRemoveErrors, WorktreeRemoveInput, WorktreeRemoveResponses, WorktreeResetErrors, WorktreeResetInput, WorktreeResetResponses } from "./types.gen.js";
2
+ import type { AccountBalanceResponses, AccountBillingModeGetResponses, AccountBillingModeSetResponses, AccountDeviceRevokeResponses, AccountDevicesResponses, AccountGetResponses, AccountLoginKeyResponses, AccountLogoutResponses, AccountSessionResponses, AgentPartInput, AppAgentsResponses, AppLogErrors, AppLogResponses, AppSkillDeleteResponses, AppSkillsResponses, AppSkillWriteResponses, Auth as Auth3, AuthRemoveErrors, AuthRemoveResponses, AuthSetErrors, AuthSetResponses, CommandListResponses, Config as Config4, ConfigGetResponses, ConfigProvidersResponses, ConfigUpdateErrors, ConfigUpdateResponses, EventSubscribeResponses, ExperimentalResourceListResponses, FileListResponses, FilePartInput, FilePartSource, FileReadResponses, FileStatusResponses, FileWriteResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, FormatterStatusResponses, GlobalConfigGetResponses, GlobalConfigRawGetResponses, GlobalConfigRawSetErrors, GlobalConfigRawSetResponses, GlobalConfigUnsetErrors, GlobalConfigUnsetResponses, GlobalConfigUpdateErrors, GlobalConfigUpdateResponses, GlobalDisposeResponses, GlobalEventResponses, GlobalHealthResponses, GlobalSyncResponses, InstanceDisposeResponses, LspStatusResponses, McpAddErrors, McpAddResponses, McpAuthAuthenticateErrors, McpAuthAuthenticateResponses, McpAuthCallbackErrors, McpAuthCallbackResponses, McpAuthRemoveErrors, McpAuthRemoveResponses, McpAuthStartErrors, McpAuthStartResponses, McpConfigRemoveErrors, McpConfigRemoveResponses, McpConfigSetErrors, McpConfigSetResponses, McpConnectResponses, McpDisconnectResponses, McpLocalConfig, McpRemoteConfig, McpStatusResponses, Part as Part2, PartDeleteErrors, PartDeleteResponses, PartUpdateErrors, PartUpdateResponses, PathGetResponses, PermissionListResponses, PermissionReplyErrors, PermissionReplyResponses, PermissionRespondErrors, PermissionRespondResponses, PermissionRuleset, PostSettingsLocalModelsResponses, PostSettingsLocalResponses, PostSettingsLocalStartResponses, ProjectCurrentResponses, ProjectListResponses, ProjectUpdateErrors, ProjectUpdateResponses, ProviderAuthResponses, ProviderListResponses, ProviderOauthAuthorizeErrors, ProviderOauthAuthorizeResponses, ProviderOauthCallbackErrors, ProviderOauthCallbackResponses, PtyConnectErrors, PtyConnectResponses, PtyCreateErrors, PtyCreateResponses, PtyGetErrors, PtyGetResponses, PtyListResponses, PtyRemoveErrors, PtyRemoveResponses, PtyUpdateErrors, PtyUpdateResponses, PutSettingsSandboxResponses, QuestionAnswer, QuestionListResponses, QuestionRejectErrors, QuestionRejectResponses, QuestionReplyErrors, QuestionReplyResponses, SessionAbortErrors, SessionAbortResponses, SessionChildrenErrors, SessionChildrenResponses, SessionCommandErrors, SessionCommandResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteErrors, SessionDeleteResponses, SessionDiffResponses, SessionForkResponses, SessionGetErrors, SessionGetResponses, SessionInitErrors, SessionInitResponses, SessionListResponses, SessionMessageErrors, SessionMessageResponses, SessionMessagesErrors, SessionMessagesResponses, SessionPromptAsyncErrors, SessionPromptAsyncResponses, SessionPromptErrors, SessionPromptResponses, SessionRevertErrors, SessionRevertResponses, SessionShellErrors, SessionShellResponses, SessionStatusErrors, SessionStatusResponses, SessionSummarizeErrors, SessionSummarizeResponses, SessionTodoErrors, SessionTodoResponses, SessionUnrevertErrors, SessionUnrevertResponses, SessionUpdateErrors, SessionUpdateResponses, SettingsBillingGetResponses, SettingsBillingUpdateResponses, SettingsComputeEndpointAddErrors, SettingsComputeEndpointAddResponses, SettingsComputeEndpointRemoveResponses, SettingsComputeGetResponses, SettingsComputeProviderConnectErrors, SettingsComputeProviderConnectResponses, SettingsComputeProviderDisconnectResponses, SettingsComputeSshAddErrors, SettingsComputeSshAddResponses, SettingsComputeSshRemoveResponses, SettingsCredentialsListResponses, SettingsCredentialsRemoveResponses, SettingsCredentialsSetResponses, SettingsMemoryGetResponses, SettingsMemorySetResponses, SettingsNetworkGetResponses, SettingsNetworkSetResponses, SettingsPermissionsGetResponses, SettingsPermissionsRevokeAllErrors, SettingsPermissionsRevokeAllResponses, SettingsPermissionsSetErrors, SettingsPermissionsSetResponses, SettingsPreferencesGetResponses, SettingsPreferencesUpdateResponses, SettingsSkillsInstallErrors, SettingsSkillsInstallResponses, SettingsStorageRelocateResponses, SettingsStorageResetLocationResponses, SettingsStorageUsageResponses, SettingsUsageGetResponses, SettingsWalletGetResponses, SubtaskPartInput, TextPartInput, ToolIdsErrors, ToolIdsResponses, ToolListErrors, ToolListResponses, VcsGetResponses, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, WorktreeListResponses, WorktreeRemoveErrors, WorktreeRemoveInput, WorktreeRemoveResponses, WorktreeResetErrors, WorktreeResetInput, WorktreeResetResponses } from "./types.gen.js";
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -112,6 +112,12 @@ export declare class BillingMode extends HeyApiClient {
112
112
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<AccountBillingModeSetResponses, unknown, ThrowOnError, "fields">;
113
113
  }
114
114
  export declare class Account extends HeyApiClient {
115
+ /**
116
+ * Get local session status
117
+ *
118
+ * Check whether this OpenScience server has a local Atlas session without contacting Atlas.
119
+ */
120
+ session<ThrowOnError extends boolean = false>(options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<AccountSessionResponses, unknown, ThrowOnError, "fields">;
115
121
  /**
116
122
  * Get account
117
123
  *
@@ -299,7 +305,7 @@ export declare class Billing extends HeyApiClient {
299
305
  }
300
306
  export declare class Wallet extends HeyApiClient {
301
307
  /**
302
- * Get Atlas wallet balance, plan mode, and recent transactions
308
+ * Get credit balance, plan mode, and recent transactions
303
309
  */
304
310
  get<ThrowOnError extends boolean = false>(options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<SettingsWalletGetResponses, unknown, ThrowOnError, "fields">;
305
311
  }
@@ -190,6 +190,17 @@ export class BillingMode extends HeyApiClient {
190
190
  }
191
191
  }
192
192
  export class Account extends HeyApiClient {
193
+ /**
194
+ * Get local session status
195
+ *
196
+ * Check whether this OpenScience server has a local Atlas session without contacting Atlas.
197
+ */
198
+ session(options) {
199
+ return (options?.client ?? this.client).get({
200
+ url: "/account/session",
201
+ ...options,
202
+ });
203
+ }
193
204
  /**
194
205
  * Get account
195
206
  *
@@ -602,7 +613,7 @@ export class Billing extends HeyApiClient {
602
613
  }
603
614
  export class Wallet extends HeyApiClient {
604
615
  /**
605
- * Get Atlas wallet balance, plan mode, and recent transactions
616
+ * Get credit balance, plan mode, and recent transactions
606
617
  */
607
618
  get(options) {
608
619
  return (options?.client ?? this.client).get({
@@ -1,6 +1,18 @@
1
1
  export type ClientOptions = {
2
2
  baseUrl: `${string}://${string}` | (string & {});
3
3
  };
4
+ export type EventServerConnected = {
5
+ type: "server.connected";
6
+ properties: {
7
+ [key: string]: unknown;
8
+ };
9
+ };
10
+ export type EventGlobalDisposed = {
11
+ type: "global.disposed";
12
+ properties: {
13
+ [key: string]: unknown;
14
+ };
15
+ };
4
16
  export type EventInstallationUpdated = {
5
17
  type: "installation.updated";
6
18
  properties: {
@@ -46,18 +58,6 @@ export type EventServerInstanceDisposed = {
46
58
  directory: string;
47
59
  };
48
60
  };
49
- export type EventServerConnected = {
50
- type: "server.connected";
51
- properties: {
52
- [key: string]: unknown;
53
- };
54
- };
55
- export type EventGlobalDisposed = {
56
- type: "global.disposed";
57
- properties: {
58
- [key: string]: unknown;
59
- };
60
- };
61
61
  export type EventLspClientDiagnostics = {
62
62
  type: "lsp.client.diagnostics";
63
63
  properties: {
@@ -90,32 +90,6 @@ export type EventVcsBranchUpdated = {
90
90
  branch?: string;
91
91
  };
92
92
  };
93
- export type PermissionRequest = {
94
- id: string;
95
- sessionID: string;
96
- permission: string;
97
- patterns: Array<string>;
98
- metadata: {
99
- [key: string]: unknown;
100
- };
101
- always: Array<string>;
102
- tool?: {
103
- messageID: string;
104
- callID: string;
105
- };
106
- };
107
- export type EventPermissionAsked = {
108
- type: "permission.asked";
109
- properties: PermissionRequest;
110
- };
111
- export type EventPermissionReplied = {
112
- type: "permission.replied";
113
- properties: {
114
- sessionID: string;
115
- requestID: string;
116
- reply: "once" | "always" | "reject";
117
- };
118
- };
119
93
  export type FileDiff = {
120
94
  file: string;
121
95
  before: string;
@@ -475,6 +449,32 @@ export type EventMessagePartRemoved = {
475
449
  partID: string;
476
450
  };
477
451
  };
452
+ export type PermissionRequest = {
453
+ id: string;
454
+ sessionID: string;
455
+ permission: string;
456
+ patterns: Array<string>;
457
+ metadata: {
458
+ [key: string]: unknown;
459
+ };
460
+ always: Array<string>;
461
+ tool?: {
462
+ messageID: string;
463
+ callID: string;
464
+ };
465
+ };
466
+ export type EventPermissionAsked = {
467
+ type: "permission.asked";
468
+ properties: PermissionRequest;
469
+ };
470
+ export type EventPermissionReplied = {
471
+ type: "permission.replied";
472
+ properties: {
473
+ sessionID: string;
474
+ requestID: string;
475
+ reply: "once" | "always" | "reject";
476
+ };
477
+ };
478
478
  export type SessionStatus = {
479
479
  type: "idle";
480
480
  } | {
@@ -767,7 +767,7 @@ export type EventWorktreeFailed = {
767
767
  message: string;
768
768
  };
769
769
  };
770
- export type Event = EventInstallationUpdated | EventInstallationUpdateAvailable | EventProjectUpdated | EventServerInstanceDisposed | EventServerConnected | EventGlobalDisposed | EventLspClientDiagnostics | EventLspUpdated | EventFileWatcherUpdated | EventFileEdited | EventVcsBranchUpdated | EventPermissionAsked | EventPermissionReplied | EventMessageUpdated | EventMessageRemoved | EventMessagePartUpdated | EventMessagePartRemoved | EventSessionStatus | EventSessionIdle | EventQuestionAsked | EventQuestionReplied | EventQuestionRejected | EventSessionContext | EventSessionCompaction | EventSessionCompacted | EventTodoUpdated | EventMcpToolsChanged | EventMcpBrowserOpenFailed | EventCommandExecuted | EventSessionCreated | EventSessionUpdated | EventSessionDeleted | EventSessionDiff | EventSessionError | EventSkillUpdated | EventPtyCreated | EventPtyUpdated | EventPtyExited | EventPtyDeleted | EventWorktreeReady | EventWorktreeFailed;
770
+ export type Event = EventServerConnected | EventGlobalDisposed | EventInstallationUpdated | EventInstallationUpdateAvailable | EventProjectUpdated | EventServerInstanceDisposed | EventLspClientDiagnostics | EventLspUpdated | EventFileWatcherUpdated | EventFileEdited | EventVcsBranchUpdated | EventMessageUpdated | EventMessageRemoved | EventMessagePartUpdated | EventMessagePartRemoved | EventPermissionAsked | EventPermissionReplied | EventSessionStatus | EventSessionIdle | EventQuestionAsked | EventQuestionReplied | EventQuestionRejected | EventSessionContext | EventSessionCompaction | EventSessionCompacted | EventTodoUpdated | EventMcpToolsChanged | EventMcpBrowserOpenFailed | EventCommandExecuted | EventSessionCreated | EventSessionUpdated | EventSessionDeleted | EventSessionDiff | EventSessionError | EventSkillUpdated | EventPtyCreated | EventPtyUpdated | EventPtyExited | EventPtyDeleted | EventWorktreeReady | EventWorktreeFailed;
771
771
  export type GlobalEvent = {
772
772
  directory: string;
773
773
  payload: Event;
@@ -1486,11 +1486,11 @@ export type Config = {
1486
1486
  */
1487
1487
  default_agent?: string;
1488
1488
  /**
1489
- * Managed (Atlas wallet) vs bring-your-own-key spend, toggled independently for LLM inference and compute.
1489
+ * Managed Credits vs bring-your-own-key spend, toggled independently for LLM inference and compute.
1490
1490
  */
1491
1491
  billing?: {
1492
1492
  /**
1493
- * How LLM inference is paid for. 'managed' routes through the Atlas wallet (metered credits); 'byok' uses your own provider API keys or first-party OAuth (ChatGPT/Claude Pro/Copilot) and is never billed. Unset or null = auto-detect from the resolved credential.
1493
+ * How LLM inference is paid for. 'managed' uses Credits; 'byok' uses your own provider API keys or first-party OAuth (ChatGPT/Claude Pro/Copilot) and is never billed. Unset or null = auto-detect from the resolved credential.
1494
1494
  */
1495
1495
  llm?: "managed" | "byok" | null;
1496
1496
  /**
@@ -2115,6 +2115,21 @@ export type GlobalSyncResponses = {
2115
2115
  };
2116
2116
  };
2117
2117
  export type GlobalSyncResponse = GlobalSyncResponses[keyof GlobalSyncResponses];
2118
+ export type AccountSessionData = {
2119
+ body?: never;
2120
+ path?: never;
2121
+ query?: never;
2122
+ url: "/account/session";
2123
+ };
2124
+ export type AccountSessionResponses = {
2125
+ /**
2126
+ * Local session status
2127
+ */
2128
+ 200: {
2129
+ session: boolean;
2130
+ };
2131
+ };
2132
+ export type AccountSessionResponse = AccountSessionResponses[keyof AccountSessionResponses];
2118
2133
  export type AccountGetData = {
2119
2134
  body?: never;
2120
2135
  path?: never;
@@ -2896,7 +2911,7 @@ export type SettingsBillingGetResponses = {
2896
2911
  */
2897
2912
  signedIn: boolean;
2898
2913
  /**
2899
- * CLI wallet balance in USD; -1 when signed out or unavailable
2914
+ * Credit balance in USD; -1 when signed out or unavailable
2900
2915
  */
2901
2916
  balanceUsd: number;
2902
2917
  };
@@ -2925,7 +2940,7 @@ export type SettingsBillingUpdateResponses = {
2925
2940
  */
2926
2941
  signedIn: boolean;
2927
2942
  /**
2928
- * CLI wallet balance in USD; -1 when signed out or unavailable
2943
+ * Credit balance in USD; -1 when signed out or unavailable
2929
2944
  */
2930
2945
  balanceUsd: number;
2931
2946
  };
package/dist/v2/server.js CHANGED
@@ -5,7 +5,7 @@ export async function createOpenScienceServer(options) {
5
5
  port: 4096,
6
6
  timeout: 5000,
7
7
  }, options ?? {});
8
- const args = [`serve`, `--hostname=${options.hostname}`, `--port=${options.port}`];
8
+ const args = [`serve`, `--port=${options.port}`];
9
9
  if (options.config?.logLevel)
10
10
  args.push(`--log-level=${options.config.logLevel}`);
11
11
  const proc = spawn(`openscience`, args, {
@@ -27,7 +27,9 @@ export async function createOpenScienceServer(options) {
27
27
  if (line.startsWith("openscience server listening")) {
28
28
  const match = line.match(/on\s+(https?:\/\/[^\s]+)/);
29
29
  if (!match) {
30
- throw new Error(`Failed to parse server url from output: ${line}`);
30
+ clearTimeout(id);
31
+ reject(new Error(`Failed to parse server url from output: ${line}`));
32
+ return;
31
33
  }
32
34
  clearTimeout(id);
33
35
  resolve(match[1]);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@synsci/sdk",
4
- "version": "1.3.4",
4
+ "version": "1.3.5-test.3.1",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "scripts": {