primcli 3.0.0-preview.2 → 3.0.0-preview.3

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/README.md CHANGED
@@ -261,7 +261,7 @@ primitive keys revoke <id>
261
261
 
262
262
  `keys create` needs you to say what the key can do: a `--preset`, or `--permission` with the mail it reaches (`--address`, `--domain`, `--rule`, each repeatable, or `--all-mailboxes`). There is no default, and a super admin key needs `--preset super_admin`. A key never holds more than you do, and your organization's credential policy applies. `keys update` adds or removes permissions (`--add`, `--remove`) or replaces the key's email rules (`--rule`); the key keeps its id and secret. A request already held open with that key, such as a long poll or a wait, ends once when its permissions change.
263
263
 
264
- Creating, rotating and changing a key need your approval in the browser. The command prints the approval link, opens it where it can, and waits for the one-time token the page shows. In a script, approve first and pass the token with `--step-up-token`. The new secret is printed once, alone on stdout (or in the JSON with `--json`), and the CLI never saves it, so store it right away. `keys revoke` asks for confirmation; pass `--yes` in scripts.
264
+ Creating, rotating and changing a key run directly. If your organization requires approval, the command prints the approval link, opens it where it can, and waits for the one-time token the page shows. In a script it prints the link and exits: approve, then run it again with `--step-up-token`. The new secret is printed once, alone on stdout (or in the JSON with `--json`), and the CLI never saves it, so store it right away. `keys revoke` asks for confirmation; pass `--yes` in scripts.
265
265
 
266
266
  `primitive roles list`, `primitive roles groups`, `primitive roles mailbox-access` and `primitive roles access-mode` read roles, groups, mailbox access and the access mode. Where the server has not enabled them, they print `feature_disabled`. The built-in roles are `owner`, `admin`, `operator` and `member`. `operator` has every permission `admin` has except managing members, changing roles, sending invitations and billing. By default, owners, admins and operators may use the CLI. An organization can open it to every member by setting `cli_access` to `all_members` in its credential policy.
267
267
 
@@ -1,4 +1,4 @@
1
- import { $ as AutomatedFilterUnsupportedError, F as assertAwaitingFilterRows, G as WEBHOOK_EVENT_TYPES, I as awaitingRejectedError, Jt as getThread, L as ensureSearchReportsReplyState, Lt as getEmail, P as ReplyStateUnsupportedError, Pn as sdk_gen_exports, U as replyStateSurfaceForOperation, V as isAwaitingRejectedError, W as SENT_EMAIL_EVENT_TYPES, et as assertAutomatedVerdict, it as expectedAutomatedVerdicts, nt as automatedSurfaceForOperation, ot as isAutomatedRejectedError, rt as ensureSearchReportsAutomated, sn as listEndpoints, tt as automatedRejectedError, v as parseRetryAfter } from "./repeats-Dj_o6c-X-BzXj5ICh.js";
1
+ import { $ as AutomatedFilterUnsupportedError, F as assertAwaitingFilterRows, G as WEBHOOK_EVENT_TYPES, I as awaitingRejectedError, Jt as getThread, L as ensureSearchReportsReplyState, Lt as getEmail, P as ReplyStateUnsupportedError, Pn as sdk_gen_exports, U as replyStateSurfaceForOperation, V as isAwaitingRejectedError, W as SENT_EMAIL_EVENT_TYPES, et as assertAutomatedVerdict, it as expectedAutomatedVerdicts, nt as automatedSurfaceForOperation, ot as isAutomatedRejectedError, rt as ensureSearchReportsAutomated, sn as listEndpoints, tt as automatedRejectedError, v as parseRetryAfter } from "./repeats-Dj_o6c-X-BKHiZsYv.js";
2
2
  import { C as saveCliCredentials, F as agentProfilesDirectory, H as requireDefaultLoginProfile, N as agentProfileDirectory, R as loadConnectedAgentProfile, S as resolveCliAuth, W as PrimitiveApiClient, _ as deleteCliCredentials, b as loadCliCredentials, c as resolveConfigEnvironment, d as validateCliHeaderName, f as validateCliHeaderValue, i as loadCliConfig, j as AGENT_PROFILE_ENV, m as cliAccessTokenExpiresAt, p as acquireCliCredentialsLock, w as saveSignupCredentials, x as normalizeApiBaseUrl, y as detectPrimitiveKeyEnvMisname } from "./cli-config-Ms_0vNjq.js";
3
3
  import "./oclif/global-org-flag.js";
4
4
  import { d as readMailJson, h as writeMailJson, m as withMailLock, p as syncMailDirectory, u as privateMailPermissions } from "./shared-mail-files-BAQSGxxz.js";
@@ -2735,7 +2735,7 @@ function savedConnectedProfiles(configDir, exclude) {
2735
2735
  */
2736
2736
  async function otherProfiles(configDir, session, current) {
2737
2737
  if (session) try {
2738
- const { connectedProfilesForSession } = await import("./machine-session-g-xPd3X0.js").then((n) => n.s);
2738
+ const { connectedProfilesForSession } = await import("./machine-session-BG4getHB.js").then((n) => n.s);
2739
2739
  return {
2740
2740
  inSession: true,
2741
2741
  profiles: connectedProfilesForSession(configDir, session, current)
@@ -2896,6 +2896,43 @@ function collectHeaderFlags(parsedFlags, headerFlagToName) {
2896
2896
  function flagDescription(parameter) {
2897
2897
  return parameter.description ?? parameter.name;
2898
2898
  }
2899
+ const EMAIL_ID_NOT_SENT = "The id of the received email (from `primitive emails list`), not a sent email id. --id is accepted too.";
2900
+ const OPERATION_PATH_FLAGS = {
2901
+ listEmailRuleResults: { id: {
2902
+ flag: "email-id",
2903
+ description: "The id of the email (from `primitive emails list`), not a rule id: lists what every rule you can see decided about this email, and why a rule did not run. --id is accepted too."
2904
+ } },
2905
+ replyToEmail: { id: {
2906
+ flag: "email-id",
2907
+ description: EMAIL_ID_NOT_SENT
2908
+ } },
2909
+ signalEmail: { id: {
2910
+ flag: "email-id",
2911
+ description: EMAIL_ID_NOT_SENT
2912
+ } },
2913
+ stopRepeatFromEmail: { id: {
2914
+ flag: "email-id",
2915
+ description: EMAIL_ID_NOT_SENT
2916
+ } }
2917
+ };
2918
+ /** The flag a path or query parameter is read from. */
2919
+ function parameterFlagName(sdkName, parameterName) {
2920
+ return (sdkName ? OPERATION_PATH_FLAGS[sdkName]?.[parameterName]?.flag : void 0) ?? flagName(parameterName);
2921
+ }
2922
+ /**
2923
+ * Paging help for a list operation whose data is an array and whose next
2924
+ * cursor is meta.cursor: the page cap on --limit, and where the next cursor is
2925
+ * printed, since the --json output of such a list is the data array alone.
2926
+ * The spec's own text is kept. A list that returns its cursor inside the data
2927
+ * (next_cursor) prints it already and is left as the spec describes it.
2928
+ */
2929
+ function pagingFlagOverride(operation, parameter) {
2930
+ if (!operation.queryParams.some((p) => p.name === "cursor")) return void 0;
2931
+ if (operation.responseSchema?.type !== "array") return void 0;
2932
+ const described = flagDescription(parameter).trim().replace(/\.$/, "");
2933
+ if (parameter.name === "cursor") return { description: `${described}. The next page's cursor is meta.cursor, null on the last page: without --json it is printed on stderr as \`next cursor: <value>\`; with --json, add --envelope to get it, since the bare --json output is the data array alone.` };
2934
+ if (parameter.name === "limit" && typeof parameter.maximum === "number") return { description: `${described}.${described.includes(String(parameter.maximum)) ? "" : ` At most ${parameter.maximum} per page;`} for more, page with --cursor.`.replace(". for more", ". For more") };
2935
+ }
2899
2936
  const numberFlag = Flags.custom({ async parse(input, _context, options) {
2900
2937
  const trimmed = input.trim();
2901
2938
  if (trimmed === "") throw new Errors.CLIError(`Expected a number but received: ${input}`);
@@ -3006,10 +3043,11 @@ function renderRequestSchemaSummary(schema) {
3006
3043
  lines.push("(* = required. Scalar body fields are exposed as individual --flag-name flags; see FLAGS above.)");
3007
3044
  return lines.join("\n");
3008
3045
  }
3009
- function flagForParameter(parameter) {
3046
+ function flagForParameter(parameter, override) {
3010
3047
  const common = {
3011
- description: flagDescription(parameter),
3012
- required: parameter.required
3048
+ description: override?.description ?? flagDescription(parameter),
3049
+ required: parameter.required,
3050
+ ...override?.flag ? { aliases: [flagName(parameter.name)] } : {}
3013
3051
  };
3014
3052
  if (parameter.type === "boolean") return Flags.boolean(common);
3015
3053
  if (parameter.type === "integer") return Flags.integer({
@@ -3278,7 +3316,10 @@ function buildFlags(operation) {
3278
3316
  flags.json = Flags.boolean({ description: "Print exactly one JSON document on stdout, on success and on failure, and nothing on stderr. Stdout keeps its usual shape: the data payload, or with --envelope the full response envelope (data plus meta, including meta.cursor, and empty-result hints in summary). The next-cursor line is not printed; use --envelope to page. A failure prints the error with exit_code. Without --json, the cursor and notices go to stderr." });
3279
3317
  flags.envelope = Flags.boolean({ description: "Print the full response envelope, including pagination metadata such as meta.cursor. Defaults to printing only the data payload for backward compatibility." });
3280
3318
  }
3281
- for (const parameter of [...operation.pathParams, ...operation.queryParams]) flags[flagName(parameter.name)] = flagForParameter(parameter);
3319
+ for (const parameter of [...operation.pathParams, ...operation.queryParams]) {
3320
+ const override = OPERATION_PATH_FLAGS[operation.sdkName]?.[parameter.name];
3321
+ flags[parameterFlagName(operation.sdkName, parameter.name)] = flagForParameter(parameter, override ?? pagingFlagOverride(operation, parameter));
3322
+ }
3282
3323
  const bodyFieldFlagToProperty = /* @__PURE__ */ new Map();
3283
3324
  if (operation.hasJsonBody) {
3284
3325
  flags["raw-body"] = Flags.string({ description: "Full request body as raw JSON. Escape hatch for nested or complex fields (e.g. arrays); prefer per-field flags (e.g. --to, --from, --body-text) when available." });
@@ -3346,10 +3387,10 @@ async function applyEventTypesFlag(params) {
3346
3387
  throw error;
3347
3388
  }
3348
3389
  }
3349
- function collectValues(parameters, flags) {
3390
+ function collectValues(parameters, flags, sdkName) {
3350
3391
  const values = {};
3351
3392
  for (const parameter of parameters) {
3352
- const value = coerceParameterValue(parameter, flags[flagName(parameter.name)]);
3393
+ const value = coerceParameterValue(parameter, flags[parameterFlagName(sdkName, parameter.name)]);
3353
3394
  if (value !== void 0) values[parameter.name] = value;
3354
3395
  }
3355
3396
  return values;
@@ -3488,7 +3529,7 @@ function createOperationCommand(operation) {
3488
3529
  });
3489
3530
  if (operation.bodyRequired && body === void 0) throw new Errors.CLIError(`Operation ${operation.operationId} requires a body. Pass each field as a --flag (see --help) or supply JSON via --raw-body / --body-file.`);
3490
3531
  const operationFn = sdk_gen_exports[operation.sdkName];
3491
- const query = collectValues(operation.queryParams, parsedFlags);
3532
+ const query = collectValues(operation.queryParams, parsedFlags, operation.sdkName);
3492
3533
  const replyStateSurface = replyStateSurfaceForOperation(operation.sdkName, query);
3493
3534
  const automatedSurface = automatedSurfaceForOperation(operation.sdkName, query);
3494
3535
  const fromVerified = fromVerifiedExpectation(operation.sdkName, query);
@@ -3497,7 +3538,7 @@ function createOperationCommand(operation) {
3497
3538
  client: apiClient.client,
3498
3539
  ...Object.keys(headers).length > 0 ? { headers } : {},
3499
3540
  parseAs: operation.binaryResponse ? "blob" : "auto",
3500
- path: collectValues(operation.pathParams, parsedFlags),
3541
+ path: collectValues(operation.pathParams, parsedFlags, operation.sdkName),
3501
3542
  query,
3502
3543
  responseStyle: "fields"
3503
3544
  });
@@ -3631,4 +3672,4 @@ const EMPTY_RESULT_HINTS = {
3631
3672
  function canonicalizeCliReferences(description) {
3632
3673
  return description.replaceAll("`primitive emails:latest`", "`primitive emails latest`").replaceAll("`primitive describe emails:get-email | jq '.responseSchema.properties'`", "`primitive describe emails:get | jq '.responseSchema.properties'`");
3633
3674
  }
3634
- export { followUpCommandPrefix as $, clearConsumedPendingMail as A, ConnectedAgentKeyRequiredError as At, replyInteractionWarning as B, fetchCliOrgs as Bt, serverMuted as C, detectRuntimeSession as Ct, wakeRecipientField as D, ATTACHMENT_WAIT_FLAG_DESCRIPTION as Dt, wakeReadCommand as E, withFlagSuggestion as Et, removePendingMail as F, refuseOrgSelectionForProfile as Ft, apiResultHttpStatus as G, IDEMPOTENCY_KEY_FLAG_DESCRIPTION as H, switchCurrentOrg as Ht, interactionHumanLine as I, resolveCliApiRequestConfig as It, buildThrownSendFailureEnvelope as J, assertValidIdempotencyKey as K, interactionNextActions as L, selectedOrgFromEnv as Lt, pendingMailPath as M, createAuthenticatedCliApiClient as Mt, readPendingMail as N, createCliApiClient as Nt, wakeRelationship as O, ATTACHMENT_WAIT_MAX_MS as Ot, recordPendingMail as P, refreshStoredCliCredentials as Pt, excludeSignalReplies as Q, readEmailInteraction as R, CliOrgRefusedError as Rt, sentInThread as S, detectAgentRuntime as St, skillFirstLine as T, formatAlreadySentNotice as Tt, MAX_SEND_WAIT_TIMEOUT_MS as U, wakeInteractionSentence as V, revokeUserLogin as Vt, SEND_OUTCOME_HELP as W, classifySendError as X, checkPriorReplies as Y, deriveSendIdempotencyKey as Z, describeWake as _, defaultConnectionName as _t, extractErrorCode as a, priorRepliesThatWentOut as at, latestOwnOutbound as b, loadSkillLine as bt, hasControlCharacter as c, sendOutcomeExitCode as ct, readTextFileFlag as d, serializeErrorPayload as dt, formatDeletedEarlierSendNotice as et, runWithTiming as f, successfulSendOutcome as ft, bareAddress$1 as g, connectNextSteps as gt, explainPendingMailNotFound as h, cliInvocation as ht, createOperationCommand as i, formatSendRecordFailureSummary as it, clearReadPendingMail as j, SAVED_CLI_OAUTH_SESSION_EXPIRED_MESSAGE as jt, claimPendingMail as k, withAttachmentWait as kt, headerFlagName as l, sendWaitClampNotice as lt, writeErrorWithHints as m, DEFAULT_ENROLL_NAME as mt, API_ERROR_CODES as n, formatPriorRepliesWarning as nt, extractErrorPayload as o, reportSendCommandResult as ot, surfaceUnauthorizedHint as p, thrownErrorExitCode as pt, buildFollowUpCommand as q, TIME_FLAG_DESCRIPTION as r, formatSendFailureSummary as rt, formatErrorPayload as s, sendIdentityFields as st, API_BASE_URL_FLAG_DESCRIPTION as t, formatPriorRepliesCheckSkipped as tt, isGrantRefusal as u, sentHistoryWindowStart as ut, displayAddress as v, generatedAgentName as vt, serverRelationship as w, runtimeSessionVariableList as wt, readThreadContext as x, currentMailSessionKey as xt, formatMailWakeLine as y, identitySuggestions as yt, replyExpectation as z, credentialsFromUserLogin as zt };
3675
+ export { deriveSendIdempotencyKey as $, wakeRelationship as A, ATTACHMENT_WAIT_MAX_MS as At, readEmailInteraction as B, CliOrgRefusedError as Bt, readThreadContext as C, currentMailSessionKey as Ct, skillFirstLine as D, formatAlreadySentNotice as Dt, serverRelationship as E, runtimeSessionVariableList as Et, readPendingMail as F, createCliApiClient as Ft, MAX_SEND_WAIT_TIMEOUT_MS as G, replyInteractionWarning as H, fetchCliOrgs as Ht, recordPendingMail as I, refreshStoredCliCredentials as It, assertValidIdempotencyKey as J, SEND_OUTCOME_HELP as K, removePendingMail as L, refuseOrgSelectionForProfile as Lt, clearConsumedPendingMail as M, ConnectedAgentKeyRequiredError as Mt, clearReadPendingMail as N, SAVED_CLI_OAUTH_SESSION_EXPIRED_MESSAGE as Nt, wakeReadCommand as O, withFlagSuggestion as Ot, pendingMailPath as P, createAuthenticatedCliApiClient as Pt, classifySendError as Q, interactionHumanLine as R, resolveCliApiRequestConfig as Rt, latestOwnOutbound as S, loadSkillLine as St, serverMuted as T, detectRuntimeSession as Tt, wakeInteractionSentence as U, revokeUserLogin as Ut, replyExpectation as V, credentialsFromUserLogin as Vt, IDEMPOTENCY_KEY_FLAG_DESCRIPTION as W, switchCurrentOrg as Wt, buildThrownSendFailureEnvelope as X, buildFollowUpCommand as Y, checkPriorReplies as Z, explainPendingMailNotFound as _, cliInvocation as _t, createOperationCommand as a, formatSendFailureSummary as at, displayAddress as b, generatedAgentName as bt, formatErrorPayload as c, reportSendCommandResult as ct, isGrantRefusal as d, sendWaitClampNotice as dt, excludeSignalReplies as et, parameterFlagName as f, sentHistoryWindowStart as ft, writeErrorWithHints as g, DEFAULT_ENROLL_NAME as gt, surfaceUnauthorizedHint as h, thrownErrorExitCode as ht, TIME_FLAG_DESCRIPTION as i, formatPriorRepliesWarning as it, claimPendingMail as j, withAttachmentWait as jt, wakeRecipientField as k, ATTACHMENT_WAIT_FLAG_DESCRIPTION as kt, hasControlCharacter as l, sendIdentityFields as lt, runWithTiming as m, successfulSendOutcome as mt, API_ERROR_CODES as n, formatDeletedEarlierSendNotice as nt, extractErrorCode as o, formatSendRecordFailureSummary as ot, readTextFileFlag as p, serializeErrorPayload as pt, apiResultHttpStatus as q, OPERATION_PATH_FLAGS as r, formatPriorRepliesCheckSkipped as rt, extractErrorPayload as s, priorRepliesThatWentOut as st, API_BASE_URL_FLAG_DESCRIPTION as t, followUpCommandPrefix as tt, headerFlagName as u, sendOutcomeExitCode as ut, bareAddress$1 as v, connectNextSteps as vt, sentInThread as w, detectAgentRuntime as wt, formatMailWakeLine as x, identitySuggestions as xt, describeWake as y, defaultConnectionName as yt, interactionNextActions as z, selectedOrgFromEnv as zt };
@@ -1,3 +1,4 @@
1
+ import { Flags } from "@oclif/core";
1
2
  import { format } from "node:util";
2
3
  // src/oclif/json-output.ts
3
4
  /**
@@ -22,6 +23,11 @@ import { format } from "node:util";
22
23
  * line per result on stdout, and on failure one more JSON line carrying
23
24
  * `error` and `exit_code`.
24
25
  */
26
+ /**
27
+ * The `--json` flag for a hand-rolled command whose output is already JSON.
28
+ * Declaring it is enough: the registry guards every command that has it.
29
+ */
30
+ const JSON_OUTPUT_FLAG = Flags.boolean({ description: "Print exactly one JSON document on stdout, on success and on failure, and nothing on stderr. A failure prints the error with exit_code." });
25
31
  const GUARDED = Symbol.for("primitive.cli.jsonOutputGuard");
26
32
  /** True when `--json` appears before any `--` separator. */
27
33
  function jsonOutputRequested(argv) {
@@ -318,4 +324,4 @@ function guardJsonOutputCommands(commands) {
318
324
  if (flags && "json" in flags || enableJsonFlag === true) guardJsonOutput(command);
319
325
  }
320
326
  }
321
- export { jsonOutputRequested as n, runStreamingJson as r, guardJsonOutputCommands as t };
327
+ export { runStreamingJson as i, guardJsonOutputCommands as n, jsonOutputRequested as r, JSON_OUTPUT_FLAG as t };
@@ -1,12 +1,12 @@
1
1
  import { B as parseOwnerMemberAddress, F as agentProfilesDirectory, I as connectedAgentIdentity, L as connectedApiBaseUrl, M as AgentConnectionSetupError, N as agentProfileDirectory, P as agentProfileName, R as loadConnectedAgentProfile, U as saveConnectedAgentProfile, V as profileAlreadyConnectedMessage, W as PrimitiveApiClient, b as loadCliCredentials, j as AGENT_PROFILE_ENV, z as parseConnectedAgentProfile } from "./cli-config-Ms_0vNjq.js";
2
- import { $t as listAgentContacts, Cn as putAgentContact, Fn as searchEmails, Lt as getEmail, Mt as getAgentContactPolicy, Nt as getContact, Qt as listAgentConnections, Rn as sendEmail, Tn as putContact, Xt as inviteAgentConnection, _n as listSentEmails, bt as deleteContact, in as listDomains, ir as __exportAll, tn as listContacts, wn as putAgentContactPolicy, yt as deleteAgentContact } from "./repeats-Dj_o6c-X-BzXj5ICh.js";
3
- import { Ft as refuseOrgSelectionForProfile, Pt as refreshStoredCliCredentials, St as detectAgentRuntime, _t as defaultConnectionName, ht as cliInvocation } from "./api-command-B37DPKFA.js";
2
+ import { $t as listAgentContacts, Cn as putAgentContact, Fn as searchEmails, Lt as getEmail, Mt as getAgentContactPolicy, Nt as getContact, Qt as listAgentConnections, Rn as sendEmail, Tn as putContact, Xt as inviteAgentConnection, _n as listSentEmails, bt as deleteContact, in as listDomains, ir as __exportAll, tn as listContacts, wn as putAgentContactPolicy, yt as deleteAgentContact } from "./repeats-Dj_o6c-X-BKHiZsYv.js";
3
+ import { It as refreshStoredCliCredentials, Lt as refuseOrgSelectionForProfile, _t as cliInvocation, wt as detectAgentRuntime, yt as defaultConnectionName } from "./api-command-DWjtyqH9.js";
4
4
  import { _ as acquireListenLock, b as listenLockHeld, c as mailTime, d as readMailJson, f as removeMailFile, g as ListenStateError, h as writeMailJson, i as mailId, l as privateMailDirectory, o as mailObject, p as syncMailDirectory, r as mailAddress, s as mailString } from "./shared-mail-files-BAQSGxxz.js";
5
- import { S as readBundledConnectSkill, a as NotificationRetryError, d as SESSION_UUID, f as connectNativeSession, m as NativeSessionDisconnectedError, p as defaultSessionSocket, t as notificationScope, y as installConnectSkill } from "./notify-session-Bo8WgG3q.js";
5
+ import { S as readBundledConnectSkill, a as NotificationRetryError, d as SESSION_UUID, f as connectNativeSession, m as NativeSessionDisconnectedError, p as defaultSessionSocket, t as notificationScope, y as installConnectSkill } from "./notify-session-8Jv4jJzI.js";
6
6
  import { l as stopBackgroundListen, r as backgroundListenStatus } from "./listen-background-C0F9gNDD.js";
7
7
  import { t as readSharedMailOwner } from "./shared-mail-watch-BAPMsFNv.js";
8
8
  import { withoutOrgSelection } from "./oclif/global-org-flag.js";
9
- import { o as scopedChatSenderTrust } from "./scoped-chat-TJlyUTi7.js";
9
+ import { o as scopedChatSenderTrust } from "./scoped-chat-_AEpylPV.js";
10
10
  import { accessSync, chmodSync, closeSync, constants, copyFileSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
11
11
  import { createHash, randomUUID } from "node:crypto";
12
12
  import { basename, delimiter, dirname, isAbsolute, join, resolve } from "node:path";
@@ -1,5 +1,5 @@
1
- import { Dt as downloadEmailAttachmentPart, J as parseWebhookEvent, K as isEmailReceivedEvent, c as classifySignalContent, q as isTrustedSender } from "./repeats-Dj_o6c-X-BzXj5ICh.js";
2
- import { E as wakeReadCommand, T as skillFirstLine, V as wakeInteractionSentence } from "./api-command-B37DPKFA.js";
1
+ import { Dt as downloadEmailAttachmentPart, J as parseWebhookEvent, K as isEmailReceivedEvent, c as classifySignalContent, q as isTrustedSender } from "./repeats-Dj_o6c-X-BKHiZsYv.js";
2
+ import { D as skillFirstLine, O as wakeReadCommand, U as wakeInteractionSentence } from "./api-command-DWjtyqH9.js";
3
3
  import { _ as acquireListenLock, g as ListenStateError, y as listenIdentity } from "./shared-mail-files-BAQSGxxz.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,8 +1,8 @@
1
- import { qt as getSentEmail } from "../repeats-Dj_o6c-X-BzXj5ICh.js";
2
- import { Mt as createAuthenticatedCliApiClient, x as readThreadContext } from "../api-command-B37DPKFA.js";
1
+ import { qt as getSentEmail } from "../repeats-Dj_o6c-X-BKHiZsYv.js";
2
+ import { C as readThreadContext, Pt as createAuthenticatedCliApiClient } from "../api-command-DWjtyqH9.js";
3
3
  import { AUTO_SIGNAL_KIND_ENV, AUTO_WORKING_RENEW_MS, autoSignalsDisabled, clearWorkingSending, markWorkingSending, readAutoClaim, readWorkingLease, recordRenewer, stopWorkingLease, writeWorkingLease } from "./auto-signals.js";
4
4
  import { _ as acquireListenLock } from "../shared-mail-files-BAQSGxxz.js";
5
- import { t as sendSignal } from "../signal-command-BO93dM2Q.js";
5
+ import { t as sendSignal } from "../signal-command-CBHAR7zj.js";
6
6
  import { join } from "node:path";
7
7
  import { homedir } from "node:os";
8
8
  // src/oclif/auto-signal-worker.ts
@@ -1,4 +1,4 @@
1
- import { n as isPlainChatReply, o as scopedChatSenderTrust } from "../scoped-chat-TJlyUTi7.js";
1
+ import { n as isPlainChatReply, o as scopedChatSenderTrust } from "../scoped-chat-_AEpylPV.js";
2
2
  import { d as readMailJson, h as writeMailJson, i as mailId, l as privateMailDirectory, r as mailAddress } from "../shared-mail-files-BAQSGxxz.js";
3
3
  import { existsSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { randomUUID } from "node:crypto";