@sentry/junior 0.217.0 → 0.219.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/{agent-CV4MPfCD.js → agent-DFeJ0yVy.js} +119 -33
  2. package/dist/{agent-hooks-BtGATjr2.js → agent-hooks-CKaIOT4I.js} +6 -6
  3. package/dist/{agent-runner-DCj_cPjl.js → agent-runner-DifJddqY.js} +5 -5
  4. package/dist/api.js +15 -15
  5. package/dist/{app-D4nNdzPG.d.ts → app-BYD2Nyji.d.ts} +1 -1
  6. package/dist/app.d.ts +2 -2
  7. package/dist/app.js +29 -29
  8. package/dist/{auth-pause-state-C7GMUpb9.js → auth-pause-state-nAyuKldT.js} +6 -6
  9. package/dist/{briefs-eG5Jo1xa.js → briefs-D2iu2JPg.js} +2 -2
  10. package/dist/{catalog-runtime-LUAIHslF.js → catalog-runtime-v3x4peOv.js} +1 -1
  11. package/dist/{checkpoint-CmkbGGiR.js → checkpoint-Cc7ba7dw.js} +6 -6
  12. package/dist/cli/chat.d.ts +1 -1
  13. package/dist/cli/chat.js +13 -13
  14. package/dist/cli/check.js +3 -3
  15. package/dist/cli/main.js +1 -1
  16. package/dist/cli/plugins.d.ts +1 -1
  17. package/dist/cli/plugins.js +3 -3
  18. package/dist/cli/snapshot-create.js +3 -3
  19. package/dist/cli/upgrade.d.ts +1 -1
  20. package/dist/cli/upgrade.js +3 -3
  21. package/dist/{client-ciJRmcY5.js → client-DVKLZG01.js} +2 -2
  22. package/dist/{config-BMwzCmw-.js → config-BXIOxlCK.js} +2 -2
  23. package/dist/{conversation-privacy-CLkpzAlt.js → conversation-privacy-8-WR4KBo.js} +1 -1
  24. package/dist/{credential-sync-BoWHpDBP.js → credential-sync-BOcckr3l.js} +20 -20
  25. package/dist/{execution-stats-C-E5FIsT.js → execution-stats-G61-pwq6.js} +3 -3
  26. package/dist/{executor-D0xETqi8.js → executor-D_aAfzGp.js} +1 -1
  27. package/dist/instrumentation.js +2 -2
  28. package/dist/{job-queue-C8FZ3LSY.js → job-queue-DjgMEeqJ.js} +1 -1
  29. package/dist/{logging-CHZ0aJXO.js → logging-1iHJtqBM.js} +1 -1
  30. package/dist/nitro.d.ts +2 -2
  31. package/dist/nitro.js +3 -3
  32. package/dist/{oauth-callback-server-D2JPUvY4.js → oauth-callback-server-wwYSbTaU.js} +2 -2
  33. package/dist/{pending-auth-HNSPyxoN.js → pending-auth-B2qOCIx1.js} +2 -2
  34. package/dist/{plugins-BI9A1vKA.d.ts → plugins-BT2l4We3.d.ts} +2 -1
  35. package/dist/{profile-6veboDue.js → profile-B4e6XN37.js} +4 -4
  36. package/dist/{registry-DR6TJe4J.js → registry-C0DT9wqc.js} +62 -18
  37. package/dist/{resolve-DprAzyQN.js → resolve-DugfbPdI.js} +2 -2
  38. package/dist/{runner-CV9Wahh9.js → runner-RE9Lp-M8.js} +9 -9
  39. package/dist/{sandbox-egress-signals-BpRsWlQP.js → sandbox-egress-signals-BqkV7azF.js} +1 -1
  40. package/dist/{short-title-XUBD7AYC.js → short-title-C7tWtQQy.js} +2 -2
  41. package/dist/{skills-DeUBvhdn.js → skills-B6OcxCOp.js} +2 -2
  42. package/dist/{spawn-BFzlrZae.js → spawn-BmZvmNYc.js} +2 -2
  43. package/dist/{stats-BvNqVRdB.js → stats-BtMLD1n8.js} +5 -5
  44. package/dist/{task-queue-CbxNVEAg.js → task-queue-a2aXjkx2.js} +3 -3
  45. package/dist/{task-runner-BH5M3JHb.js → task-runner-Bg2trvKT.js} +7 -7
  46. package/dist/{thread-state-Db98GdYL.js → thread-state-D4zlHEq1.js} +5 -5
  47. package/dist/{turn-execution-mZIWtngI.js → turn-execution-CgCTt4YP.js} +3 -3
  48. package/dist/{turn-lifecycle-CNsgouon.js → turn-lifecycle-ClF1kY55.js} +1 -1
  49. package/dist/{validation-Dy7SUhLv.js → validation-CGkLLzS9.js} +1 -1
  50. package/dist/{version-Es4nurl1.js → version-CZfM8Kly.js} +1 -1
  51. package/dist/version.js +1 -1
  52. package/dist/{web-authorization-DG2K_bpi.js → web-authorization-DCSwmiua.js} +1 -1
  53. package/dist/{web-input-CZjYeCFh.js → web-input-CQrFGEv9.js} +4 -4
  54. package/dist/{work-DTqDMGeD.js → work-lRFwhKJe.js} +9 -9
  55. package/dist/{worker-BvuVxS4T.js → worker-BV4FekSX.js} +5 -5
  56. package/package.json +4 -4
@@ -1,10 +1,10 @@
1
- import { F as isRecord$1, I as toOptionalNumber, L as toOptionalString } from "./logging-CHZ0aJXO.js";
2
- import { a as getChatConfig } from "./config-BMwzCmw-.js";
1
+ import { F as isRecord$1, I as toOptionalNumber, L as toOptionalString } from "./logging-1iHJtqBM.js";
2
+ import { a as getChatConfig } from "./config-BXIOxlCK.js";
3
3
  import { _ as parseSlackMessageTs, d as parseStoredSlackActor, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-Bplcgypl.js";
4
- import { Gt as getDb, J as withSlackRetries, U as getSlackClient, Wt as getConversationStore, fn as sameDestination, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, un as parseDestination } from "./agent-hooks-BtGATjr2.js";
4
+ import { Gt as getDb, J as withSlackRetries, U as getSlackClient, Wt as getConversationStore, fn as sameDestination, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, un as parseDestination } from "./agent-hooks-CKaIOT4I.js";
5
5
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
6
- import { E as juniorConversations, a as juniorSchedulerRuns, c as juniorStats, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorAttachments } from "./executor-D0xETqi8.js";
7
- import { C as getDefaultRedisStateAdapterFor, w as getStateAdapter } from "./profile-6veboDue.js";
6
+ import { E as juniorConversations, a as juniorSchedulerRuns, c as juniorStats, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorAttachments } from "./executor-D_aAfzGp.js";
7
+ import { C as getDefaultRedisStateAdapterFor, w as getStateAdapter } from "./profile-B4e6XN37.js";
8
8
  import "./vercel-queue-DIkVcfK4.js";
9
9
  import { z } from "zod";
10
10
  import { createHash, randomUUID } from "node:crypto";
@@ -1,6 +1,6 @@
1
- import { f as logWarn } from "./logging-CHZ0aJXO.js";
1
+ import { f as logWarn } from "./logging-1iHJtqBM.js";
2
2
  import { a as signQueueMessage, i as QUEUE_SIGNATURE_MAX_AGE_MS, o as verifyQueueMessage, s as createVercelQueueClient } from "./vercel-queue-DIkVcfK4.js";
3
- import { o as runWithTurnRequestDeadline } from "./job-queue-C8FZ3LSY.js";
3
+ import { o as runWithTurnRequestDeadline } from "./job-queue-DjgMEeqJ.js";
4
4
  import { z } from "zod";
5
5
  import { createHash } from "node:crypto";
6
6
  import { handleCallback, registerDevConsumer } from "@vercel/queue";
@@ -110,7 +110,7 @@ function pluginTaskCallback() {
110
110
  maxDeliveries: PLUGIN_TASK_MAX_DELIVERIES,
111
111
  onRejected: logPluginTaskQueueMessageRejected,
112
112
  run: async (message) => {
113
- const { processPluginTask } = await import("./task-runner-BH5M3JHb.js").then((n) => n.r);
113
+ const { processPluginTask } = await import("./task-runner-Bg2trvKT.js").then((n) => n.r);
114
114
  await processPluginTask(message);
115
115
  },
116
116
  topic: PLUGIN_TASK_QUEUE_TOPIC,
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
2
  import { _ as parseSlackMessageTs, r as credentialSubjectSchema } from "./context-Bplcgypl.js";
3
- import { At as createPluginConversationEvents, Gt as getDb, Q as readActorIdentity, Wt as getConversationStore, _t as createPluginState, bt as createPluginLogger, p as coreTaskRegistrations, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, vt as createPluginEmbedder, yt as createPluginModel } from "./agent-hooks-BtGATjr2.js";
3
+ import { At as createPluginConversationEvents, Gt as getDb, Q as readActorIdentity, Wt as getConversationStore, _t as createPluginState, bt as createPluginLogger, p as coreTaskRegistrations, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, vt as createPluginEmbedder, yt as createPluginModel } from "./agent-hooks-CKaIOT4I.js";
4
4
  import { G as sameActorIdentity } from "./conversation-BpqLg4MM.js";
5
- import { E as normalizeToolNameFromResult, O as stripRuntimeTurnContext, T as isToolResultMessage, Y as hydrateConversationMessages, _ as getPiMessageRole, s as getTurnRecord, w as isToolResultError, x as instructionTextForProjection } from "./checkpoint-CmkbGGiR.js";
6
- import { w as getStateAdapter } from "./profile-6veboDue.js";
7
- import { u as recordAutomationExecution } from "./execution-stats-C-E5FIsT.js";
8
- import { r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-Db98GdYL.js";
9
- import { i as pluginTaskParamsSchema, o as sendVercelPluginTask, r as pluginTaskId } from "./task-queue-CbxNVEAg.js";
5
+ import { E as normalizeToolNameFromResult, O as stripRuntimeTurnContext, T as isToolResultMessage, Y as hydrateConversationMessages, _ as getPiMessageRole, s as getTurnRecord, w as isToolResultError, x as instructionTextForProjection } from "./checkpoint-Cc7ba7dw.js";
6
+ import { w as getStateAdapter } from "./profile-B4e6XN37.js";
7
+ import { u as recordAutomationExecution } from "./execution-stats-G61-pwq6.js";
8
+ import { r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-D4zlHEq1.js";
9
+ import { i as pluginTaskParamsSchema, o as sendVercelPluginTask, r as pluginTaskId } from "./task-queue-a2aXjkx2.js";
10
10
  import { z } from "zod";
11
11
  import { createHash } from "node:crypto";
12
12
  import { destinationSchema, destinationVisibilitySchema, isSlackDestination, pluginRunContextSchema, replyAttributionSchema, sourceSchema, taskOutcomeSchema } from "@sentry/junior-plugin-api";
@@ -345,7 +345,7 @@ function slackSourceForDestination(args) {
345
345
  * Reads parent Conversations when this Conversation has no Destination.
346
346
  */
347
347
  async function resolveConversationRouting(args) {
348
- const conversationStore = args.conversationStore ?? (await import("./agent-hooks-BtGATjr2.js").then((n) => n.Vt)).getConversationStore();
348
+ const conversationStore = args.conversationStore ?? (await import("./agent-hooks-CKaIOT4I.js").then((n) => n.Vt)).getConversationStore();
349
349
  const chain = await loadConversationChain(args.conversationId, conversationStore);
350
350
  let destination;
351
351
  let source;
@@ -1,9 +1,9 @@
1
- import { F as isRecord, I as toOptionalNumber, L as toOptionalString } from "./logging-CHZ0aJXO.js";
2
- import { Gt as getDb, pt as JUNIOR_THREAD_STATE_TTL_MS } from "./agent-hooks-BtGATjr2.js";
1
+ import { F as isRecord, I as toOptionalNumber, L as toOptionalString } from "./logging-1iHJtqBM.js";
2
+ import { Gt as getDb, pt as JUNIOR_THREAD_STATE_TTL_MS } from "./agent-hooks-CKaIOT4I.js";
3
3
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
4
- import { u as juniorLocationConfigurations } from "./executor-D0xETqi8.js";
5
- import { X as persistConversationMessages } from "./checkpoint-CmkbGGiR.js";
6
- import { w as getStateAdapter } from "./profile-6veboDue.js";
4
+ import { u as juniorLocationConfigurations } from "./executor-D_aAfzGp.js";
5
+ import { X as persistConversationMessages } from "./checkpoint-Cc7ba7dw.js";
6
+ import { w as getStateAdapter } from "./profile-B4e6XN37.js";
7
7
  import { z } from "zod";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { and, eq, sql } from "drizzle-orm";
@@ -1,6 +1,6 @@
1
- import { Ht as getConversationEventStore } from "./agent-hooks-BtGATjr2.js";
2
- import { n as runAgentWithTimeout } from "./agent-runner-DCj_cPjl.js";
3
- import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-CNsgouon.js";
1
+ import { Ht as getConversationEventStore } from "./agent-hooks-CKaIOT4I.js";
2
+ import { n as runAgentWithTimeout } from "./agent-runner-DifJddqY.js";
3
+ import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-ClF1kY55.js";
4
4
  //#region src/chat/runtime/turn-execution.ts
5
5
  /** An error thrown while the agent advances a Run. */
6
6
  var AgentRunError = class extends Error {
@@ -1,4 +1,4 @@
1
- import { Ht as getConversationEventStore } from "./agent-hooks-BtGATjr2.js";
1
+ import { Ht as getConversationEventStore } from "./agent-hooks-CKaIOT4I.js";
2
2
  //#region src/chat/conversations/turn-lifecycle.ts
3
3
  /** Persist correlated turn lifecycle facts with retry-safe terminal exclusion. */
4
4
  var ConversationTurnLifecycleService = class {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { n as pluginCatalogRuntime } from "./catalog-runtime-LUAIHslF.js";
2
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-v3x4peOv.js";
3
3
  import { isDeepStrictEqual } from "node:util";
4
4
  //#region src/chat/plugins/validation.ts
5
5
  var validation_exports = /* @__PURE__ */ __exportAll({
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.217.0";
2
+ var version = "0.219.0";
3
3
  //#endregion
4
4
  //#region src/version.ts
5
5
  /** Installed Junior package version, or `unknown` when package metadata is unavailable. */
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as JUNIOR_VERSION } from "./version-Es4nurl1.js";
1
+ import { t as JUNIOR_VERSION } from "./version-CZfM8Kly.js";
2
2
  export { JUNIOR_VERSION };
@@ -1,4 +1,4 @@
1
- import { w as getStateAdapter } from "./profile-6veboDue.js";
1
+ import { w as getStateAdapter } from "./profile-B4e6XN37.js";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/chat/conversations/web-authorization.ts
4
4
  const WEB_AUTHORIZATION_PREFIX = "junior:web_authorization:v1";
@@ -1,8 +1,8 @@
1
- import { f as logWarn } from "./logging-CHZ0aJXO.js";
2
- import { s as getSlackBotToken } from "./config-BMwzCmw-.js";
1
+ import { f as logWarn } from "./logging-1iHJtqBM.js";
2
+ import { s as getSlackBotToken } from "./config-BXIOxlCK.js";
3
3
  import "./context-Bplcgypl.js";
4
- import { K as normalizeSlackConversationId, Wt as getConversationStore } from "./agent-hooks-BtGATjr2.js";
5
- import { c as parseSlackThreadId, ft as appendAndEnqueueExclusiveInboundMessage, pt as appendAndEnqueueInboundMessage, qt as buildDeterministicTurnId } from "./stats-BvNqVRdB.js";
4
+ import { K as normalizeSlackConversationId, Wt as getConversationStore } from "./agent-hooks-CKaIOT4I.js";
5
+ import { c as parseSlackThreadId, ft as appendAndEnqueueExclusiveInboundMessage, pt as appendAndEnqueueInboundMessage, qt as buildDeterministicTurnId } from "./stats-BtMLD1n8.js";
6
6
  import { t as healthReportSchema } from "./reporting-schema-DosTN__Q.js";
7
7
  import { z } from "zod";
8
8
  import { createHash } from "node:crypto";
@@ -1,13 +1,13 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { $ as AuthorizationFlowDisabledError, A as createAgentInvocationSchema, M as AgentInvocationLimitError, O as agentBindingSchema, f as PluginCredentialFailureError, j as AgentInvocationBusyError, k as agentInvocationSchema } from "./agent-CV4MPfCD.js";
3
- import { Ht as getConversationEventStore, Kt as getSqlExecutor, Wt as getConversationStore } from "./agent-hooks-BtGATjr2.js";
4
- import { f as juniorAgentBindings, p as juniorAgentInvocations } from "./executor-D0xETqi8.js";
5
- import { L as openConversationProjection, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, v as getTerminalAssistantMessages } from "./checkpoint-CmkbGGiR.js";
6
- import { pt as appendAndEnqueueInboundMessage } from "./stats-BvNqVRdB.js";
7
- import { _ as isTurnInputCommitLostError, h as getConversationTurnBoundaryError, p as TurnInputCommitLostError, s as getAssistantReplyText } from "./pending-auth-HNSPyxoN.js";
8
- import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-CNsgouon.js";
9
- import { n as executeTurn, t as AgentRunError } from "./turn-execution-mZIWtngI.js";
10
- import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState } from "./thread-state-Db98GdYL.js";
2
+ import { $ as AuthorizationFlowDisabledError, A as createAgentInvocationSchema, M as AgentInvocationLimitError, O as agentBindingSchema, f as PluginCredentialFailureError, j as AgentInvocationBusyError, k as agentInvocationSchema } from "./agent-DFeJ0yVy.js";
3
+ import { Ht as getConversationEventStore, Kt as getSqlExecutor, Wt as getConversationStore } from "./agent-hooks-CKaIOT4I.js";
4
+ import { f as juniorAgentBindings, p as juniorAgentInvocations } from "./executor-D_aAfzGp.js";
5
+ import { L as openConversationProjection, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, v as getTerminalAssistantMessages } from "./checkpoint-Cc7ba7dw.js";
6
+ import { pt as appendAndEnqueueInboundMessage } from "./stats-BtMLD1n8.js";
7
+ import { _ as isTurnInputCommitLostError, h as getConversationTurnBoundaryError, p as TurnInputCommitLostError, s as getAssistantReplyText } from "./pending-auth-B2qOCIx1.js";
8
+ import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-ClF1kY55.js";
9
+ import { n as executeTurn, t as AgentRunError } from "./turn-execution-CgCTt4YP.js";
10
+ import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState } from "./thread-state-D4zlHEq1.js";
11
11
  import { z } from "zod";
12
12
  import { createHash } from "node:crypto";
13
13
  import { and, asc, count, eq, inArray } from "drizzle-orm";
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { b as isProviderRetryError } from "./client-ciJRmcY5.js";
3
- import { S as withLogContext, d as logInfo, f as logWarn, u as logException } from "./logging-CHZ0aJXO.js";
4
- import { a as getChatConfig } from "./config-BMwzCmw-.js";
5
- import { At as recordConversationRetry, Ct as drainConversationMailbox, Et as getConversationWorkState, Ft as startConversationWork, Ht as isInvalidConversationRecordError, Nt as requestAnotherSlice, St as deadLetterAttempt, Vt as isFinalAttempt, _t as clearConsumedConversationWake, bt as completeConversationWork, dt as ackMessages, gt as checkInConversationWork, jt as releaseConversationWork, kt as recordAttemptFailure, mt as beginConversationResume, wt as ensureConversationWake, xt as countPendingConversationMessages, yt as completeConversationStop, zt as hasConversationStop } from "./stats-BvNqVRdB.js";
2
+ import { b as isProviderRetryError } from "./client-DVKLZG01.js";
3
+ import { S as withLogContext, d as logInfo, f as logWarn, u as logException } from "./logging-1iHJtqBM.js";
4
+ import { a as getChatConfig } from "./config-BXIOxlCK.js";
5
+ import { At as recordConversationRetry, Ct as drainConversationMailbox, Et as getConversationWorkState, Ft as startConversationWork, Ht as isInvalidConversationRecordError, Nt as requestAnotherSlice, St as deadLetterAttempt, Vt as isFinalAttempt, _t as clearConsumedConversationWake, bt as completeConversationWork, dt as ackMessages, gt as checkInConversationWork, jt as releaseConversationWork, kt as recordAttemptFailure, mt as beginConversationResume, wt as ensureConversationWake, xt as countPendingConversationMessages, yt as completeConversationStop, zt as hasConversationStop } from "./stats-BtMLD1n8.js";
6
6
  import { c as ConversationQueueMessageRejectedError } from "./vercel-queue-DIkVcfK4.js";
7
- import { a as getTurnRequestDeadline } from "./job-queue-C8FZ3LSY.js";
7
+ import { a as getTurnRequestDeadline } from "./job-queue-DjgMEeqJ.js";
8
8
  //#region src/chat/task-execution/worker.ts
9
9
  var worker_exports = /* @__PURE__ */ __exportAll({
10
10
  CONVERSATION_WORK_DEFER_DELAY_MS: () => CONVERSATION_WORK_DEFER_DELAY_MS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/junior",
3
- "version": "0.217.0",
3
+ "version": "0.219.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -85,7 +85,7 @@
85
85
  "pg": "^8.16.3",
86
86
  "yaml": "^2.9.0",
87
87
  "zod": "^4.5.4",
88
- "@sentry/junior-plugin-api": "0.217.0"
88
+ "@sentry/junior-plugin-api": "0.219.0"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@emnapi/core": "^1.10.0",
@@ -104,8 +104,8 @@
104
104
  "typescript": "^6.0.3",
105
105
  "vercel": "^54.4.0",
106
106
  "vitest": "^4.1.7",
107
- "@sentry/junior-github": "0.217.0",
108
- "@sentry/junior-memory": "0.217.0",
107
+ "@sentry/junior-github": "0.219.0",
108
+ "@sentry/junior-memory": "0.219.0",
109
109
  "@sentry/junior-testing": "0.0.0"
110
110
  },
111
111
  "scripts": {