primcli 1.38.0 → 1.39.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.
@@ -1,4 +1,4 @@
1
- import { _ as isTrustedSender, c as classifySignalContent } from "./repeats-CQmyvUGQ-CMnOmWgL.js";
1
+ import { _ as isTrustedSender, c as classifySignalContent } from "./repeats-CoK0tpCK-Bx7nmyRi.js";
2
2
  import { d as readMailJson, h as writeMailJson, i as mailId, l as privateMailDirectory, r as mailAddress } from "./shared-mail-files-CZqI1kj6.js";
3
3
  import { existsSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { randomUUID } from "node:crypto";
@@ -1,5 +1,5 @@
1
- import { _ as isTrustedSender, c as classifySignalContent, g as isEmailReceivedEvent, v as parseWebhookEvent } from "./repeats-CQmyvUGQ-CMnOmWgL.js";
2
- import { g as downloadEmailAttachmentPart } from "./sdk.gen-CugwPoCf.js";
1
+ import { _ as isTrustedSender, c as classifySignalContent, g as isEmailReceivedEvent, v as parseWebhookEvent } from "./repeats-CoK0tpCK-Bx7nmyRi.js";
2
+ import { g as downloadEmailAttachmentPart } from "./sdk.gen-CgKZwHs3.js";
3
3
  import { _ as acquireListenLock, g as ListenStateError, y as listenIdentity } from "./shared-mail-files-CZqI1kj6.js";
4
4
  import { closeSync, copyFileSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, opendirSync, readFileSync, readdirSync, readlinkSync, renameSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
5
5
  import { createHash, randomUUID, scryptSync } from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { j as getSentEmail } from "../sdk.gen-CugwPoCf.js";
1
+ import { j as getSentEmail } from "../sdk.gen-CgKZwHs3.js";
2
2
  import { _ as acquireListenLock } from "../shared-mail-files-CZqI1kj6.js";
3
- import { Mt as createAuthenticatedCliApiClient, t as sendSignal, z as readThreadContext } from "../signal-command-CKaEqXro.js";
4
- import { A as stopWorkingLease, b as readWorkingLease, d as autoSignalsDisabled, j as writeWorkingLease, p as clearWorkingSending, r as AUTO_SIGNAL_KIND_ENV, s as AUTO_WORKING_RENEW_MS, v as markWorkingSending, x as recordRenewer, y as readAutoClaim } from "../auto-signals-UPcJmV3j.js";
3
+ import { Mt as createAuthenticatedCliApiClient, t as sendSignal, z as readThreadContext } from "../signal-command-C8Ph0ylh.js";
4
+ import { A as stopWorkingLease, b as readWorkingLease, d as autoSignalsDisabled, j as writeWorkingLease, p as clearWorkingSending, r as AUTO_SIGNAL_KIND_ENV, s as AUTO_WORKING_RENEW_MS, v as markWorkingSending, x as recordRenewer, y as readAutoClaim } from "../auto-signals-C8nMME8J.js";
5
5
  import { join } from "node:path";
6
6
  import { homedir } from "node:os";
7
7
  //#region src/oclif/auto-signal-worker.ts
@@ -1,2 +1,2 @@
1
- import { A as stopWorkingLease, C as releaseStopHold, D as resumeAutoWorking, E as restoreWorkingLease, O as spawnAutoSignalWorker, S as recordSentSignal, T as restoreAutoWorking, _ as isSentSignal, a as AUTO_WORKING_CAP_MS, b as readWorkingLease, c as activeWorkingLeases, d as autoSignalsDisabled, f as claimAutoRead, g as haltAutoWorking, h as dispatchAutoWorking, i as AUTO_SIGNAL_WORKER_ENV, j as writeWorkingLease, k as startWorkingLease, l as autoSignalEligible, m as dispatchAutoRead, n as AUTO_SIGNAL_EMAIL_ENV, o as AUTO_WORKING_EXPIRES_SECONDS, p as clearWorkingSending, r as AUTO_SIGNAL_KIND_ENV, s as AUTO_WORKING_RENEW_MS, t as AUTO_SIGNALS_OPT_OUT_ENV, u as autoSignalEntrypoint, v as markWorkingSending, w as renewerAlive, x as recordRenewer, y as readAutoClaim } from "../auto-signals-UPcJmV3j.js";
1
+ import { A as stopWorkingLease, C as releaseStopHold, D as resumeAutoWorking, E as restoreWorkingLease, O as spawnAutoSignalWorker, S as recordSentSignal, T as restoreAutoWorking, _ as isSentSignal, a as AUTO_WORKING_CAP_MS, b as readWorkingLease, c as activeWorkingLeases, d as autoSignalsDisabled, f as claimAutoRead, g as haltAutoWorking, h as dispatchAutoWorking, i as AUTO_SIGNAL_WORKER_ENV, j as writeWorkingLease, k as startWorkingLease, l as autoSignalEligible, m as dispatchAutoRead, n as AUTO_SIGNAL_EMAIL_ENV, o as AUTO_WORKING_EXPIRES_SECONDS, p as clearWorkingSending, r as AUTO_SIGNAL_KIND_ENV, s as AUTO_WORKING_RENEW_MS, t as AUTO_SIGNALS_OPT_OUT_ENV, u as autoSignalEntrypoint, v as markWorkingSending, w as renewerAlive, x as recordRenewer, y as readAutoClaim } from "../auto-signals-C8nMME8J.js";
2
2
  export { AUTO_SIGNALS_OPT_OUT_ENV, AUTO_SIGNAL_EMAIL_ENV, AUTO_SIGNAL_KIND_ENV, AUTO_SIGNAL_WORKER_ENV, AUTO_WORKING_CAP_MS, AUTO_WORKING_EXPIRES_SECONDS, AUTO_WORKING_RENEW_MS, activeWorkingLeases, autoSignalEligible, autoSignalEntrypoint, autoSignalsDisabled, claimAutoRead, clearWorkingSending, dispatchAutoRead, dispatchAutoWorking, haltAutoWorking, isSentSignal, markWorkingSending, readAutoClaim, readWorkingLease, recordRenewer, recordSentSignal, releaseStopHold, renewerAlive, restoreAutoWorking, restoreWorkingLease, resumeAutoWorking, spawnAutoSignalWorker, startWorkingLease, stopWorkingLease, writeWorkingLease };
@@ -1,12 +1,12 @@
1
- import { a as REPEAT_IDLE_MAX_MINUTES, d as parseRepeatTick, f as preparePresenceAliveEmail, g as isEmailReceivedEvent, i as REPEAT_EVERY_MAX_MINUTES, l as parseInteractionEnvelope$1, m as repeatStopCommand, o as REPEAT_MAX_SENDS_MAX, p as prepareSignalEmail, s as buildRepeatStopBody, u as parsePresenceEnvelope, v as parseWebhookEvent, y as parseFromHeader } from "../repeats-CQmyvUGQ-CMnOmWgL.js";
1
+ import { a as REPEAT_IDLE_MAX_MINUTES, d as parseRepeatTick, f as preparePresenceAliveEmail, g as isEmailReceivedEvent, i as REPEAT_EVERY_MAX_MINUTES, l as parseInteractionEnvelope$1, m as repeatStopCommand, o as REPEAT_MAX_SENDS_MAX, p as prepareSignalEmail, s as buildRepeatStopBody, u as parsePresenceEnvelope, v as parseWebhookEvent, y as parseFromHeader } from "../repeats-CoK0tpCK-Bx7nmyRi.js";
2
2
  import { a as agentProfilesDirectory, c as loadConnectedAgentProfile, d as requireDefaultLoginProfile, f as saveConnectedAgentProfile, i as agentProfileName, l as parseConnectedAgentProfile, n as AgentConnectionSetupError, o as connectedAgentIdentity, r as agentProfileDirectory, s as connectedApiBaseUrl, t as AGENT_PROFILE_ENV, u as parseOwnerMemberAddress } from "../connected-agent-profile-8tpOMdq3.js";
3
- import { $ as putAgentContactPolicy, A as getRepeatingSend, B as listEmails, C as getEmail, Ct as updateFunction, D as getInboxStatus, Dt as updateWakeSchedule, E as getFunctionTestRunTrace, Et as updateWakeAuthorization, F as listAgentNetworks, G as listRoutes, H as listFunctionLogs, I as listContacts, J as listWakeDispatches, K as listSentEmails, L as listDefaultNetworkAgents, M as getThread, N as getWakeSchedule, O as getMemory, Ot as verifyAgentClaim, P as listAgentContacts, Q as putAgentContact, R as listDefaultNetworkMembers, S as getDefaultNetworkAgent, St as updateDefaultNetworkMember, T as getFunctionRouting, Tt as updateRoute, U as listFunctions, V as listEndpoints, W as listRepeatingSends, X as pollCliLogin, Y as listWakeSchedules, Z as pullWebhookEvent, _ as getAccount, _t as startAgentSignup, a as createEndpoint, at as resendAgentSignupVerification, b as getConversation, bt as testFunction, c as createWakeAuthorization, ct as searchEmails, d as deleteContact, dt as sendEmail, et as putContact, f as deleteMemory, ft as setFunctionRoute, gt as startAgentClaim, h as deleteWakeSchedule, ht as simulateRoute, i as completeWebhookEvent, it as replyToEmail, j as getSentEmail, k as getOrgRoutingTopology, kt as verifyAgentSignup, l as createWakeSchedule, lt as searchMemories, m as deleteWakeAuthorization, mt as setMemory, n as checkDefaultNetworkContactAdmission, nt as removeDefaultNetworkMember, o as createFunction, ot as runWakeSchedule, p as deleteRoute, pt as setFunctionSecret, q as listWakeAuthorizations, r as cliLogout, rt as reorderRoutes, s as createRoute, t as addDefaultNetworkMember, tt as redeemCreditCode, u as deleteAgentContact, ut as semanticSearch, v as getAgentContactPolicy, vt as startCliLogin, w as getFunction, wt as updateRepeatingSend, x as getCreditBalance, xt as unsetFunctionRoute, y as getContact, yt as stopRepeatFromEmail, z as listDomains } from "../sdk.gen-CugwPoCf.js";
3
+ import { $ as putAgentContactPolicy, A as getRepeatingSend, B as listEmails, C as getEmail, Ct as updateFunction, D as getInboxStatus, Dt as updateWakeSchedule, E as getFunctionTestRunTrace, Et as updateWakeAuthorization, F as listAgentNetworks, G as listRoutes, H as listFunctionLogs, I as listContacts, J as listWakeDispatches, K as listSentEmails, L as listDefaultNetworkAgents, M as getThread, N as getWakeSchedule, O as getMemory, Ot as verifyAgentClaim, P as listAgentContacts, Q as putAgentContact, R as listDefaultNetworkMembers, S as getDefaultNetworkAgent, St as updateDefaultNetworkMember, T as getFunctionRouting, Tt as updateRoute, U as listFunctions, V as listEndpoints, W as listRepeatingSends, X as pollCliLogin, Y as listWakeSchedules, Z as pullWebhookEvent, _ as getAccount, _t as startAgentSignup, a as createEndpoint, at as resendAgentSignupVerification, b as getConversation, bt as testFunction, c as createWakeAuthorization, ct as searchEmails, d as deleteContact, dt as sendEmail, et as putContact, f as deleteMemory, ft as setFunctionRoute, gt as startAgentClaim, h as deleteWakeSchedule, ht as simulateRoute, i as completeWebhookEvent, it as replyToEmail, j as getSentEmail, k as getOrgRoutingTopology, kt as verifyAgentSignup, l as createWakeSchedule, lt as searchMemories, m as deleteWakeAuthorization, mt as setMemory, n as checkDefaultNetworkContactAdmission, nt as removeDefaultNetworkMember, o as createFunction, ot as runWakeSchedule, p as deleteRoute, pt as setFunctionSecret, q as listWakeAuthorizations, r as cliLogout, rt as reorderRoutes, s as createRoute, t as addDefaultNetworkMember, tt as redeemCreditCode, u as deleteAgentContact, ut as semanticSearch, v as getAgentContactPolicy, vt as startCliLogin, w as getFunction, wt as updateRepeatingSend, x as getCreditBalance, xt as unsetFunctionRoute, y as getContact, yt as stopRepeatFromEmail, z as listDomains } from "../sdk.gen-CgKZwHs3.js";
4
4
  import { A as saveActiveChatState, C as resolveCliAuth, D as deleteChatState, E as chatStatePath, O as loadActiveChatState, T as saveSignupCredentials, _ as deleteCliCredentials, a as normalizeCliEnvironmentName, b as hasStoredCliLogin, c as resolveConfigEnvironment, g as credentialsPath, h as credentialsLockPath, i as loadCliConfig, j as PrimitiveApiClient, k as loadChatConversationByLocalId, l as saveCliConfig, m as cliAccessTokenExpiresAt, n as deleteCliConfig, o as redactCliEnvironment, p as acquireCliCredentialsLock, r as emptyCliConfig, s as removeCliEnvironment, u as upsertCliEnvironment, v as deleteCliCredentialsLock, w as saveCliCredentials, x as loadCliCredentials, y as detectPrimitiveKeyEnvMisname } from "../cli-config-UOlrfcPz.js";
5
5
  import { S as resolveListenSubscription, _ as acquireListenLock, a as mailLockBusy, c as mailTime, d as readMailJson, f as removeMailFile, g as ListenStateError, h as writeMailJson, i as mailId, l as privateMailDirectory, m as withMailLock, o as mailObject, p as syncMailDirectory, r as mailAddress, s as mailString, u as privateMailPermissions, x as normalizeListenOrigin, y as listenIdentity } from "../shared-mail-files-CZqI1kj6.js";
6
- import { $ as extractErrorCode, A as reserveSharedMailSubscription, At as queryUsesAutomated, B as sentInThread, C as thrownErrorExitCode, Ct as AutomatedFilterUnsupportedError, D as ensureSharedMailSubscription, Dt as expectedAutomatedVerdicts, E as sharedMailScope, Et as ensureSearchReportsAutomated, F as describeWake, Ft as resolveCliApiRequestConfig, G as EventConnection, H as serverRelationship, I as displayAddress, J as pushFile, K as EventReceiverError, L as formatWakeContext, M as readConversationFollow, Mt as createAuthenticatedCliApiClient, N as otherParticipants, Nt as createCliApiClient, O as createSharedMailWaiter, Ot as hasAutomatedVerdict, P as bareAddress, Pt as refreshStoredCliCredentials, Q as createOperationCommand, R as latestOwnOutbound, S as successfulSendOutcome, St as AUTOMATED_VALUES, T as openSharedMailReceiver, Tt as automatedRejectedError, U as wakeRelationship, V as serverMuted, W as readSharedMailOwner, X as API_ERROR_CODES, Y as API_BASE_URL_FLAG_DESCRIPTION, Z as TIME_FLAG_DESCRIPTION, _ as reportSendCommandResult, _t as queryUsesAwaiting, a as assertValidIdempotencyKey, at as writeErrorWithHints, b as sentHistoryWindowStart, bt as AUTOMATED_FILTER_UNSUPPORTED_CODE, c as checkPriorReplies, ct as REPLY_STATE_UNSUPPORTED_CODE, d as formatDeletedEarlierSendNotice, dt as awaitingRejectedError, et as extractErrorPayload, f as formatPriorRepliesCheckSkipped, ft as ensureSearchReportsReplyState, g as priorRepliesThatWentOut, gt as isAwaitingRejectedError, h as formatSendRecordFailureSummary, ht as hasReplyState, i as apiResultHttpStatus, it as surfaceUnauthorizedHint, j as followEmailConversation, k as openSharedMailStore, kt as isAutomatedRejectedError, l as classifySendError, lt as ReplyStateUnsupportedError, m as formatSendFailureSummary, mt as formatRepliesCell, n as IDEMPOTENCY_KEY_FLAG_DESCRIPTION, nt as readTextFileFlag, o as buildFollowUpCommand, ot as AWAITING_FLAG_DESCRIPTION, p as formatPriorRepliesWarning, pt as formatAwaitingCell, q as pullFile, r as SEND_OUTCOME_HELP, rt as runWithTiming, s as buildThrownSendFailureEnvelope, st as AWAITING_VALUES, t as sendSignal, tt as formatErrorPayload, u as deriveSendIdempotencyKey, ut as assertAwaitingFilterRows, v as sendIdentityFields, vt as formatAlreadySentNotice, w as reconcileChatSend, wt as assertAutomatedVerdict, x as serializeErrorPayload, xt as AUTOMATED_FLAG_DESCRIPTION, y as sendOutcomeExitCode, yt as writeIdempotentReplayBannerIfReplay, z as readThreadContext } from "../signal-command-CKaEqXro.js";
7
- import { _ as NativeSessionDisconnectedError, a as readBundledConnectSkill, b as NotificationOutcomeUnknownError, c as openSessionNotifications, d as isRoutineNotificationContent, f as notificationPartReader, g as defaultSessionSocket, h as connectNativeSession, i as installedVersion, l as notificationReceiptPage, m as SESSION_UUID$1, n as detectAgentRuntime, o as notificationScope, p as readConversationStatusContent, r as installConnectSkill, s as notificationSenders, t as connectSkillTarget, u as NotificationRetryError, v as NativeSessionError, y as NativeSessionNotLoadedError } from "../connect-skill-HJNQC3A9.js";
6
+ import { $ as extractErrorCode, A as reserveSharedMailSubscription, At as queryUsesAutomated, B as sentInThread, C as thrownErrorExitCode, Ct as AutomatedFilterUnsupportedError, D as ensureSharedMailSubscription, Dt as expectedAutomatedVerdicts, E as sharedMailScope, Et as ensureSearchReportsAutomated, F as describeWake, Ft as resolveCliApiRequestConfig, G as EventConnection, H as serverRelationship, I as displayAddress, J as pushFile, K as EventReceiverError, L as formatWakeContext, M as readConversationFollow, Mt as createAuthenticatedCliApiClient, N as otherParticipants, Nt as createCliApiClient, O as createSharedMailWaiter, Ot as hasAutomatedVerdict, P as bareAddress, Pt as refreshStoredCliCredentials, Q as createOperationCommand, R as latestOwnOutbound, S as successfulSendOutcome, St as AUTOMATED_VALUES, T as openSharedMailReceiver, Tt as automatedRejectedError, U as wakeRelationship, V as serverMuted, W as readSharedMailOwner, X as API_ERROR_CODES, Y as API_BASE_URL_FLAG_DESCRIPTION, Z as TIME_FLAG_DESCRIPTION, _ as reportSendCommandResult, _t as queryUsesAwaiting, a as assertValidIdempotencyKey, at as writeErrorWithHints, b as sentHistoryWindowStart, bt as AUTOMATED_FILTER_UNSUPPORTED_CODE, c as checkPriorReplies, ct as REPLY_STATE_UNSUPPORTED_CODE, d as formatDeletedEarlierSendNotice, dt as awaitingRejectedError, et as extractErrorPayload, f as formatPriorRepliesCheckSkipped, ft as ensureSearchReportsReplyState, g as priorRepliesThatWentOut, gt as isAwaitingRejectedError, h as formatSendRecordFailureSummary, ht as hasReplyState, i as apiResultHttpStatus, it as surfaceUnauthorizedHint, j as followEmailConversation, k as openSharedMailStore, kt as isAutomatedRejectedError, l as classifySendError, lt as ReplyStateUnsupportedError, m as formatSendFailureSummary, mt as formatRepliesCell, n as IDEMPOTENCY_KEY_FLAG_DESCRIPTION, nt as readTextFileFlag, o as buildFollowUpCommand, ot as AWAITING_FLAG_DESCRIPTION, p as formatPriorRepliesWarning, pt as formatAwaitingCell, q as pullFile, r as SEND_OUTCOME_HELP, rt as runWithTiming, s as buildThrownSendFailureEnvelope, st as AWAITING_VALUES, t as sendSignal, tt as formatErrorPayload, u as deriveSendIdempotencyKey, ut as assertAwaitingFilterRows, v as sendIdentityFields, vt as formatAlreadySentNotice, w as reconcileChatSend, wt as assertAutomatedVerdict, x as serializeErrorPayload, xt as AUTOMATED_FLAG_DESCRIPTION, y as sendOutcomeExitCode, yt as writeIdempotentReplayBannerIfReplay, z as readThreadContext } from "../signal-command-C8Ph0ylh.js";
7
+ import { _ as NativeSessionDisconnectedError, a as readBundledConnectSkill, b as NotificationOutcomeUnknownError, c as openSessionNotifications, d as isRoutineNotificationContent, f as notificationPartReader, g as defaultSessionSocket, h as connectNativeSession, i as installedVersion, l as notificationReceiptPage, m as SESSION_UUID$1, n as detectAgentRuntime, o as notificationScope, p as readConversationStatusContent, r as installConnectSkill, s as notificationSenders, t as connectSkillTarget, u as NotificationRetryError, v as NativeSessionError, y as NativeSessionNotLoadedError } from "../connect-skill-DjKt8NC8.js";
8
8
  import { c as startBackgroundListen, i as backgroundListenToken, l as stopBackgroundListen, o as runBackgroundListen, r as backgroundListenStatus, u as verifyBackgroundListenTarget } from "../listen-background-Bsofqq_6.js";
9
- import { F as readBeforeDeadline, I as scopedChatSenderTrust, L as presenceDisposition, M as isConnectedChatCredential, N as isPlainChatReply, P as isScopedChatReply, R as readPresenceProjection, T as restoreAutoWorking, g as haltAutoWorking, h as dispatchAutoWorking, l as autoSignalEligible, m as dispatchAutoRead } from "../auto-signals-UPcJmV3j.js";
9
+ import { F as readBeforeDeadline, I as scopedChatSenderTrust, L as presenceDisposition, M as isConnectedChatCredential, N as isPlainChatReply, P as isScopedChatReply, R as readPresenceProjection, T as restoreAutoWorking, g as haltAutoWorking, h as dispatchAutoWorking, l as autoSignalEligible, m as dispatchAutoRead } from "../auto-signals-C8nMME8J.js";
10
10
  import { t as guardJsonOutputCommands } from "../json-output-BVRgl6jf.js";
11
11
  import { Args, Command, Errors, Flags, ux } from "@oclif/core";
12
12
  import { accessSync, chmodSync, closeSync, constants, copyFileSync, cpSync, existsSync, fstatSync, fsyncSync, linkSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
@@ -10741,11 +10741,27 @@ const openapiDocument = {
10741
10741
  },
10742
10742
  "quota_mb": {
10743
10743
  "type": "number",
10744
- "description": "Storage quota in megabytes (based on plan)"
10744
+ "description": "The plan's included storage in megabytes, the same value as included_mb. It is an allowance, not a limit; see limit_mb."
10745
10745
  },
10746
10746
  "percentage": {
10747
10747
  "type": "number",
10748
- "description": "Percentage of quota used (1 decimal)"
10748
+ "description": "Storage used as a percentage of the included storage (1 decimal). Can exceed 100."
10749
+ },
10750
+ "included_mb": {
10751
+ "type": "number",
10752
+ "description": "Storage included with the plan, in megabytes."
10753
+ },
10754
+ "limit_mb": {
10755
+ "type": ["number", "null"],
10756
+ "description": "Storage in megabytes past which inbound email is refused. Null when inbound email is never refused for storage."
10757
+ },
10758
+ "overage_mb": {
10759
+ "type": "number",
10760
+ "description": "Storage past included_mb, in megabytes, counting stored email and the search index."
10761
+ },
10762
+ "search_index_bytes": {
10763
+ "type": "integer",
10764
+ "description": "Storage attributed to the semantic search index, in bytes. Counted toward included_mb and overage_mb, never toward limit_mb."
10749
10765
  },
10750
10766
  "emails_count": {
10751
10767
  "type": "integer",
@@ -13258,7 +13274,7 @@ const openapiDocument = {
13258
13274
  "properties": {
13259
13275
  "every_minutes": {
13260
13276
  "type": "integer",
13261
- "minimum": 5,
13277
+ "minimum": 1,
13262
13278
  "maximum": 10080
13263
13279
  },
13264
13280
  "only_if_recipient_idle_minutes": {
@@ -13396,7 +13412,7 @@ const openapiDocument = {
13396
13412
  },
13397
13413
  "every_minutes": {
13398
13414
  "type": "integer",
13399
- "minimum": 5,
13415
+ "minimum": 1,
13400
13416
  "maximum": 10080
13401
13417
  },
13402
13418
  "only_if_recipient_idle_minutes": {
@@ -16888,11 +16904,27 @@ const operationManifest = [
16888
16904
  },
16889
16905
  "quota_mb": {
16890
16906
  "type": "number",
16891
- "description": "Storage quota in megabytes (based on plan)"
16907
+ "description": "The plan's included storage in megabytes, the same value as included_mb. It is an allowance, not a limit; see limit_mb."
16892
16908
  },
16893
16909
  "percentage": {
16894
16910
  "type": "number",
16895
- "description": "Percentage of quota used (1 decimal)"
16911
+ "description": "Storage used as a percentage of the included storage (1 decimal). Can exceed 100."
16912
+ },
16913
+ "included_mb": {
16914
+ "type": "number",
16915
+ "description": "Storage included with the plan, in megabytes."
16916
+ },
16917
+ "limit_mb": {
16918
+ "type": ["number", "null"],
16919
+ "description": "Storage in megabytes past which inbound email is refused. Null when inbound email is never refused for storage."
16920
+ },
16921
+ "overage_mb": {
16922
+ "type": "number",
16923
+ "description": "Storage past included_mb, in megabytes, counting stored email and the search index."
16924
+ },
16925
+ "search_index_bytes": {
16926
+ "type": "integer",
16927
+ "description": "Storage attributed to the semantic search index, in bytes. Counted toward included_mb and overage_mb, never toward limit_mb."
16896
16928
  },
16897
16929
  "emails_count": {
16898
16930
  "type": "integer",
@@ -29796,7 +29828,7 @@ const operationManifest = [
29796
29828
  },
29797
29829
  "every_minutes": {
29798
29830
  "type": "integer",
29799
- "minimum": 5,
29831
+ "minimum": 1,
29800
29832
  "maximum": 10080
29801
29833
  },
29802
29834
  "only_if_recipient_idle_minutes": {
@@ -32354,7 +32386,7 @@ const operationManifest = [
32354
32386
  "properties": {
32355
32387
  "every_minutes": {
32356
32388
  "type": "integer",
32357
- "minimum": 5,
32389
+ "minimum": 1,
32358
32390
  "maximum": 10080
32359
32391
  },
32360
32392
  "only_if_recipient_idle_minutes": {
@@ -32927,7 +32959,7 @@ const operationManifest = [
32927
32959
  "properties": {
32928
32960
  "every_minutes": {
32929
32961
  "type": "integer",
32930
- "minimum": 5,
32962
+ "minimum": 1,
32931
32963
  "maximum": 10080
32932
32964
  },
32933
32965
  "only_if_recipient_idle_minutes": {
@@ -45850,7 +45882,7 @@ const PRIMITIVE_TEAM_AUTHOR = {
45850
45882
  url: "https://primitive.dev"
45851
45883
  };
45852
45884
  const SDK_VERSION_RANGE = "^1.34.0";
45853
- const CLI_VERSION_RANGE = "^1.38.0";
45885
+ const CLI_VERSION_RANGE = "^1.39.0";
45854
45886
  const ESBUILD_VERSION_RANGE = "^0.27.0";
45855
45887
  function renderHandler() {
45856
45888
  return `// env.PRIMITIVE_API_KEY, env.PRIMITIVE_WEBHOOK_SECRET, and
@@ -51081,6 +51113,52 @@ function retryAfterSeconds$1(result) {
51081
51113
  const parsed = Number.parseInt(raw, 10);
51082
51114
  return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
51083
51115
  }
51116
+ const SIGN_IN_EMAIL_CHANGE_REQUIRED = "sign_in_email_change_required";
51117
+ const SIGN_IN_EMAIL_CHANGE_REQUIRED_FALLBACK = "Your Primitive sign-in email is on a domain Primitive receives mail for. Change it to an external address in the browser, then log in again.";
51118
+ function errorMessage$1(payload) {
51119
+ if (!payload || typeof payload !== "object") return null;
51120
+ const inner = payload.error;
51121
+ const message = (inner && typeof inner === "object" ? inner : payload).message;
51122
+ return typeof message === "string" && message.trim() !== "" ? message.trim() : null;
51123
+ }
51124
+ async function pollCliLoginUntilApproved(params) {
51125
+ const wait = params.sleep ?? sleep;
51126
+ const { retryCommand, start } = params;
51127
+ const deadline = Date.now() + start.expires_in * 1e3;
51128
+ let interval = Math.min(Math.max(1, start.interval), MAX_CLI_LOGIN_POLL_INTERVAL_SECONDS);
51129
+ let nextPollDelay = 1;
51130
+ while (Date.now() < deadline) {
51131
+ await wait(nextPollDelay * 1e3);
51132
+ nextPollDelay = interval;
51133
+ const polled = await params.poll(start.device_code);
51134
+ if (polled.data) {
51135
+ const login = unwrapData$2(polled.data);
51136
+ if (!login) throw cliError$3("Primitive API returned an empty CLI poll response.");
51137
+ return login;
51138
+ }
51139
+ const payload = extractErrorPayload(polled.error);
51140
+ const code = extractErrorCode(payload);
51141
+ if (code === API_ERROR_CODES.authorizationPending) {
51142
+ nextPollDelay = interval;
51143
+ continue;
51144
+ }
51145
+ if (code === API_ERROR_CODES.slowDown) {
51146
+ interval = Math.min(retryAfterSeconds$1(polled) ?? interval + 5, MAX_CLI_LOGIN_POLL_INTERVAL_SECONDS);
51147
+ nextPollDelay = interval;
51148
+ continue;
51149
+ }
51150
+ if (code === "sign_in_email_change_required") throw new Errors.CLIError(errorMessage$1(payload) ?? SIGN_IN_EMAIL_CHANGE_REQUIRED_FALLBACK, {
51151
+ code: SIGN_IN_EMAIL_CHANGE_REQUIRED,
51152
+ exit: 1
51153
+ });
51154
+ if (code === API_ERROR_CODES.accessDenied) throw cliError$3("Primitive CLI login was denied in the browser.");
51155
+ if (code === API_ERROR_CODES.expiredToken) throw cliError$3(`Primitive CLI login expired. Run \`primitive ${retryCommand}\` again.`);
51156
+ if (code === API_ERROR_CODES.invalidDeviceCode) throw cliError$3(`Primitive CLI login device code is invalid. Run \`primitive ${retryCommand}\` again.`);
51157
+ writeErrorWithHints(payload);
51158
+ throw cliError$3("Primitive CLI login failed while polling for approval.");
51159
+ }
51160
+ throw cliError$3(`Primitive CLI login expired. Run \`primitive ${retryCommand}\` again.`);
51161
+ }
51084
51162
  async function checkExistingLogin(params) {
51085
51163
  const requestConfig = resolveCliApiRequestConfig({
51086
51164
  apiBaseUrl: params.apiBaseUrl,
@@ -51217,57 +51295,32 @@ var LoginCommand$1 = class extends Command {
51217
51295
  }
51218
51296
  process.stderr.write(`If the browser did not open, visit: ${start.verification_uri_complete}\n`);
51219
51297
  process.stderr.write("Waiting for browser approval...\n");
51220
- const deadline = Date.now() + start.expires_in * 1e3;
51221
- let interval = Math.min(Math.max(1, start.interval), MAX_CLI_LOGIN_POLL_INTERVAL_SECONDS);
51222
- let nextPollDelay = 1;
51223
- while (Date.now() < deadline) {
51224
- await sleep(nextPollDelay * 1e3);
51225
- nextPollDelay = interval;
51226
- const polled = await pollCliLogin({
51227
- body: { device_code: start.device_code },
51298
+ const login = await pollCliLoginUntilApproved({
51299
+ poll: (deviceCode) => pollCliLogin({
51300
+ body: { device_code: deviceCode },
51228
51301
  client: apiClient.client,
51229
51302
  responseStyle: "fields"
51230
- });
51231
- if (polled.data) {
51232
- const login = unwrapData$2(polled.data);
51233
- if (!login) throw cliError$3("Primitive API returned an empty CLI poll response.");
51234
- deleteChatState(this.config.configDir);
51235
- saveCliCredentials(this.config.configDir, {
51236
- access_token: login.access_token,
51237
- api_base_url: apiBaseUrl,
51238
- auth_method: "oauth",
51239
- created_at: (/* @__PURE__ */ new Date()).toISOString(),
51240
- expires_at: cliAccessTokenExpiresAt(login.expires_in),
51241
- oauth_client_id: login.oauth_client_id,
51242
- oauth_grant_id: login.oauth_grant_id,
51243
- org_id: login.org_id,
51244
- org_name: login.org_name,
51245
- refresh_token: login.refresh_token,
51246
- token_type: login.token_type
51247
- });
51248
- const org = login.org_name ? ` (${login.org_name})` : "";
51249
- process.stderr.write(`Logged in to org ${login.org_id}${org}.\n`);
51250
- process.stderr.write(`Saved credentials to ${credentialsPath(this.config.configDir)}.\n`);
51251
- return;
51252
- }
51253
- const payload = extractErrorPayload(polled.error);
51254
- const code = extractErrorCode(payload);
51255
- if (code === API_ERROR_CODES.authorizationPending) {
51256
- nextPollDelay = interval;
51257
- continue;
51258
- }
51259
- if (code === API_ERROR_CODES.slowDown) {
51260
- interval = Math.min(retryAfterSeconds$1(polled) ?? interval + 5, MAX_CLI_LOGIN_POLL_INTERVAL_SECONDS);
51261
- nextPollDelay = interval;
51262
- continue;
51263
- }
51264
- if (code === API_ERROR_CODES.accessDenied) throw cliError$3("Primitive CLI login was denied in the browser.");
51265
- if (code === API_ERROR_CODES.expiredToken) throw cliError$3(`Primitive CLI login expired. Run \`primitive ${retryCommand}\` again.`);
51266
- if (code === API_ERROR_CODES.invalidDeviceCode) throw cliError$3(`Primitive CLI login device code is invalid. Run \`primitive ${retryCommand}\` again.`);
51267
- writeErrorWithHints(payload);
51268
- throw cliError$3("Primitive CLI login failed while polling for approval.");
51269
- }
51270
- throw cliError$3(`Primitive CLI login expired. Run \`primitive ${retryCommand}\` again.`);
51303
+ }),
51304
+ retryCommand,
51305
+ start
51306
+ });
51307
+ deleteChatState(this.config.configDir);
51308
+ saveCliCredentials(this.config.configDir, {
51309
+ access_token: login.access_token,
51310
+ api_base_url: apiBaseUrl,
51311
+ auth_method: "oauth",
51312
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
51313
+ expires_at: cliAccessTokenExpiresAt(login.expires_in),
51314
+ oauth_client_id: login.oauth_client_id,
51315
+ oauth_grant_id: login.oauth_grant_id,
51316
+ org_id: login.org_id,
51317
+ org_name: login.org_name,
51318
+ refresh_token: login.refresh_token,
51319
+ token_type: login.token_type
51320
+ });
51321
+ const org = login.org_name ? ` (${login.org_name})` : "";
51322
+ process.stderr.write(`Logged in to org ${login.org_id}${org}.\n`);
51323
+ process.stderr.write(`Saved credentials to ${credentialsPath(this.config.configDir)}.\n`);
51271
51324
  }
51272
51325
  };
51273
51326
  //#endregion
@@ -56691,8 +56744,8 @@ var PaymentsRegisterPayoutAddressCommand = class PaymentsRegisterPayoutAddressCo
56691
56744
  function repeatFlags(exclusive, requirement) {
56692
56745
  return {
56693
56746
  "repeat-every": Flags.integer({
56694
- description: `Send this message now and then again every N minutes (5 to ${REPEAT_EVERY_MAX_MINUTES}) in the same thread. ${requirement} Manage it later with \`primitive repeats\`.`,
56695
- min: 5,
56747
+ description: `Send this message now and then again every N minutes (1 to ${REPEAT_EVERY_MAX_MINUTES}) in the same thread. ${requirement} Manage it later with \`primitive repeats\`.`,
56748
+ min: 1,
56696
56749
  max: REPEAT_EVERY_MAX_MINUTES,
56697
56750
  exclusive
56698
56751
  }),
@@ -1,6 +1,6 @@
1
1
  import { c as loadConnectedAgentProfile, i as agentProfileName, r as agentProfileDirectory, t as AGENT_PROFILE_ENV } from "../connected-agent-profile-8tpOMdq3.js";
2
2
  import { d as readMailJson } from "../shared-mail-files-CZqI1kj6.js";
3
- import { m as SESSION_UUID, n as detectAgentRuntime, o as notificationScope } from "../connect-skill-HJNQC3A9.js";
3
+ import { m as SESSION_UUID, n as detectAgentRuntime, o as notificationScope } from "../connect-skill-DjKt8NC8.js";
4
4
  import { a as claimBackgroundListenRestart, n as backgroundListenRestartable, r as backgroundListenStatus } from "../listen-background-Bsofqq_6.js";
5
5
  import { join } from "node:path";
6
6
  import { spawn } from "node:child_process";
@@ -9676,7 +9676,7 @@ function normalizeOptions(options) {
9676
9676
  };
9677
9677
  }
9678
9678
  //#endregion
9679
- //#region ../sdk-node/dist/repeats-CQmyvUGQ.js
9679
+ //#region ../sdk-node/dist/repeats-CoK0tpCK.js
9680
9680
  const UUID$3 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
9681
9681
  const ATOM = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+";
9682
9682
  const MAILBOX$1 = new RegExp(`^${ATOM}(?:\\.${ATOM})*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$`);
@@ -10378,7 +10378,7 @@ function readRepeatTick(envelope) {
10378
10378
  status: "invalid",
10379
10379
  reason: "invalid_payload"
10380
10380
  };
10381
- if (!p || typeof p.repeat_id !== "string" || !UUID.test(p.repeat_id) || !integerIn(p.sequence, 1, Number.MAX_SAFE_INTEGER) || !integerIn(p.every_minutes, 5, 10080) || !(p.only_if_recipient_idle_minutes === null || integerIn(p.only_if_recipient_idle_minutes, 1, 10080)) || typeof p.stoppable_by_recipient !== "boolean") return invalid;
10381
+ if (!p || typeof p.repeat_id !== "string" || !UUID.test(p.repeat_id) || !integerIn(p.sequence, 1, Number.MAX_SAFE_INTEGER) || !integerIn(p.every_minutes, 1, 10080) || !(p.only_if_recipient_idle_minutes === null || integerIn(p.only_if_recipient_idle_minutes, 1, 10080)) || typeof p.stoppable_by_recipient !== "boolean") return invalid;
10382
10382
  return {
10383
10383
  status: "valid",
10384
10384
  tick: {
@@ -1,4 +1,4 @@
1
- import { b as __exportAll } from "./repeats-CQmyvUGQ-CMnOmWgL.js";
1
+ import { b as __exportAll } from "./repeats-CoK0tpCK-Bx7nmyRi.js";
2
2
  import { m as createConfig, p as createClient } from "./connected-agent-profile-8tpOMdq3.js";
3
3
  //#region ../packages/api-core/src/api/client.gen.ts
4
4
  const client = createClient(createConfig({ baseUrl: "https://api.primitive.dev/v1" }));
@@ -1,9 +1,9 @@
1
- import { h as sendPreparedSignal, p as prepareSignalEmail } from "./repeats-CQmyvUGQ-CMnOmWgL.js";
1
+ import { h as sendPreparedSignal, p as prepareSignalEmail } from "./repeats-CoK0tpCK-Bx7nmyRi.js";
2
2
  import { d as requireDefaultLoginProfile } from "./connected-agent-profile-8tpOMdq3.js";
3
- import { C as getEmail, K as listSentEmails, V as listEndpoints, a as createEndpoint, ct as searchEmails, dt as sendEmail, st as sdk_gen_exports } from "./sdk.gen-CugwPoCf.js";
3
+ import { C as getEmail, K as listSentEmails, V as listEndpoints, a as createEndpoint, ct as searchEmails, dt as sendEmail, st as sdk_gen_exports } from "./sdk.gen-CgKZwHs3.js";
4
4
  import { C as resolveCliAuth, S as normalizeApiBaseUrl, T as saveSignupCredentials, _ as deleteCliCredentials, c as resolveConfigEnvironment, d as validateCliHeaderName, f as validateCliHeaderValue, i as loadCliConfig, j as PrimitiveApiClient, m as cliAccessTokenExpiresAt, p as acquireCliCredentialsLock, w as saveCliCredentials, x as loadCliCredentials, y as detectPrimitiveKeyEnvMisname } from "./cli-config-UOlrfcPz.js";
5
5
  import { _ as acquireListenLock, a as mailLockBusy, b as listenProcessIdentity, c as mailTime, d as readMailJson, f as removeMailFile, h as writeMailJson, i as mailId, l as privateMailDirectory, m as withMailLock, n as invalidSharedMail, o as mailObject, p as syncMailDirectory, r as mailAddress, s as mailString, t as SharedMailStateError, v as compareListenProcessIdentity, y as listenIdentity } from "./shared-mail-files-CZqI1kj6.js";
6
- import { F as readBeforeDeadline, I as scopedChatSenderTrust, N as isPlainChatReply, S as recordSentSignal } from "./auto-signals-UPcJmV3j.js";
6
+ import { F as readBeforeDeadline, I as scopedChatSenderTrust, N as isPlainChatReply, S as recordSentSignal } from "./auto-signals-C8nMME8J.js";
7
7
  import { Command, Errors, Flags } from "@oclif/core";
8
8
  import { opendirSync, readFileSync, watch, writeFileSync } from "node:fs";
9
9
  import { createHash, randomUUID, scryptSync } from "node:crypto";
@@ -1542,7 +1542,7 @@ async function pullFile(root, outPath, opts) {
1542
1542
  return manifest;
1543
1543
  }
1544
1544
  //#endregion
1545
- //#region ../sdk-node/dist/api-DIgE1sxv.js
1545
+ //#region ../sdk-node/dist/api-CV59-Ci2.js
1546
1546
  const jsonBodySerializer = { bodySerializer: (body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value) };
1547
1547
  function createSseClient({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) {
1548
1548
  let lastEventId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "primcli",
3
- "version": "1.38.0",
3
+ "version": "1.39.0",
4
4
  "description": "Official Primitive CLI: deploy Primitive Functions, send and inspect mail, manage endpoints, all from the terminal. Wraps the @primitivedotdev/sdk runtime client with one-shot commands.",
5
5
  "type": "module",
6
6
  "sideEffects": false,