@integrity-labs/agt-cli 0.28.1057 → 0.28.1059
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/bin/agt.js +5 -5
- package/dist/{chunk-A7HDJW23.js → chunk-E3XTUL7S.js} +2 -2
- package/dist/{chunk-BWN4QFSK.js → chunk-EWJ6A7AO.js} +4 -4
- package/dist/{chunk-P544KDE3.js → chunk-VQITKTZU.js} +13 -1
- package/dist/{chunk-P544KDE3.js.map → chunk-VQITKTZU.js.map} +1 -1
- package/dist/{claude-pair-runtime-TSRRFBNJ.js → claude-pair-runtime-SRFW7LK5.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/mcp/direct-chat-channel.js +12 -0
- package/dist/mcp/index.js +12 -0
- package/dist/mcp/origami.js +12 -0
- package/dist/mcp/slack-channel.js +12 -0
- package/dist/mcp/telegram-channel.js +12 -0
- package/dist/{persistent-session-WSJVCGEO.js → persistent-session-3YXKX45E.js} +3 -3
- package/dist/{responsiveness-probe-7MQI6SUF.js → responsiveness-probe-CJ4Y5IS2.js} +3 -3
- package/dist/{session-auth-dead-NFVTUFPI.js → session-auth-dead-MKVXSMXZ.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-A7HDJW23.js.map → chunk-E3XTUL7S.js.map} +0 -0
- /package/dist/{chunk-BWN4QFSK.js.map → chunk-EWJ6A7AO.js.map} +0 -0
- /package/dist/{claude-pair-runtime-TSRRFBNJ.js.map → claude-pair-runtime-SRFW7LK5.js.map} +0 -0
- /package/dist/{persistent-session-WSJVCGEO.js.map → persistent-session-3YXKX45E.js.map} +0 -0
- /package/dist/{responsiveness-probe-7MQI6SUF.js.map → responsiveness-probe-CJ4Y5IS2.js.map} +0 -0
- /package/dist/{session-auth-dead-NFVTUFPI.js.map → session-auth-dead-MKVXSMXZ.js.map} +0 -0
|
@@ -266,7 +266,7 @@ async function spawnPairSession(session) {
|
|
|
266
266
|
return { ok: true };
|
|
267
267
|
} catch {
|
|
268
268
|
}
|
|
269
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
269
|
+
const { resolveClaudeBinary } = await import("./persistent-session-3YXKX45E.js");
|
|
270
270
|
const claudeBin = resolveClaudeBinary();
|
|
271
271
|
const pairEnv = {
|
|
272
272
|
...process.env,
|
|
@@ -734,4 +734,4 @@ export {
|
|
|
734
734
|
startClaudePair,
|
|
735
735
|
submitClaudePairCode
|
|
736
736
|
};
|
|
737
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
737
|
+
//# sourceMappingURL=claude-pair-runtime-SRFW7LK5.js.map
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
safeWriteJsonAtomic,
|
|
68
68
|
setConfigHash,
|
|
69
69
|
tripClass
|
|
70
|
-
} from "../chunk-
|
|
70
|
+
} from "../chunk-EWJ6A7AO.js";
|
|
71
71
|
import {
|
|
72
72
|
getProjectDir as getProjectDir2,
|
|
73
73
|
getReadyTasks,
|
|
@@ -154,7 +154,7 @@ import {
|
|
|
154
154
|
webFetchBaselineValue,
|
|
155
155
|
webFetchRestartNeeded,
|
|
156
156
|
writeEgressAllowlist
|
|
157
|
-
} from "../chunk-
|
|
157
|
+
} from "../chunk-E3XTUL7S.js";
|
|
158
158
|
import {
|
|
159
159
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
160
160
|
AnchorSessionClient,
|
|
@@ -263,7 +263,7 @@ import {
|
|
|
263
263
|
subagentActivityAgeSeconds,
|
|
264
264
|
sumTranscriptUsageInWindow,
|
|
265
265
|
transcriptActivityAgeSeconds
|
|
266
|
-
} from "../chunk-
|
|
266
|
+
} from "../chunk-VQITKTZU.js";
|
|
267
267
|
import {
|
|
268
268
|
classifyUnanswerablePane,
|
|
269
269
|
paneRemedy
|
|
@@ -14123,7 +14123,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
14123
14123
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
14124
14124
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
14125
14125
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
14126
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
14126
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-CJ4Y5IS2.js");
|
|
14127
14127
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
14128
14128
|
if (newest === null) return null;
|
|
14129
14129
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -14871,7 +14871,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
14871
14871
|
var lastVersionCheckAt = 0;
|
|
14872
14872
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
14873
14873
|
var lastResponsivenessProbeAt = 0;
|
|
14874
|
-
var agtCliVersion = true ? "0.28.
|
|
14874
|
+
var agtCliVersion = true ? "0.28.1059" : "dev";
|
|
14875
14875
|
function resolveBrewPath(execFileSync3) {
|
|
14876
14876
|
try {
|
|
14877
14877
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -16506,7 +16506,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
16506
16506
|
if (codeNames.length === 0) return;
|
|
16507
16507
|
void (async () => {
|
|
16508
16508
|
try {
|
|
16509
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16509
|
+
const { collectDiagnostics } = await import("../persistent-session-3YXKX45E.js");
|
|
16510
16510
|
await api.post("/host/heartbeat", {
|
|
16511
16511
|
host_id: hostId,
|
|
16512
16512
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -16648,7 +16648,7 @@ async function pollCycleInner() {
|
|
|
16648
16648
|
}
|
|
16649
16649
|
try {
|
|
16650
16650
|
const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
|
|
16651
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16651
|
+
const { collectDiagnostics } = await import("../persistent-session-3YXKX45E.js");
|
|
16652
16652
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
16653
16653
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
|
|
16654
16654
|
let tailscaleHostname;
|
|
@@ -16856,7 +16856,7 @@ async function pollCycleInner() {
|
|
|
16856
16856
|
collectPanelessActivityProbes,
|
|
16857
16857
|
getResponsivenessIntervalMs,
|
|
16858
16858
|
occupancyQualificationClassifications
|
|
16859
|
-
} = await import("../responsiveness-probe-
|
|
16859
|
+
} = await import("../responsiveness-probe-CJ4Y5IS2.js");
|
|
16860
16860
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
16861
16861
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
16862
16862
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -16973,7 +16973,7 @@ async function pollCycleInner() {
|
|
|
16973
16973
|
collectResponsivenessProbes,
|
|
16974
16974
|
livePendingInboundOldestAgeSeconds,
|
|
16975
16975
|
parkPendingInbound
|
|
16976
|
-
} = await import("../responsiveness-probe-
|
|
16976
|
+
} = await import("../responsiveness-probe-CJ4Y5IS2.js");
|
|
16977
16977
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
|
|
16978
16978
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
16979
16979
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -17129,7 +17129,7 @@ async function pollCycleInner() {
|
|
|
17129
17129
|
}
|
|
17130
17130
|
try {
|
|
17131
17131
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
|
|
17132
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
17132
|
+
const { probeSessionAuth } = await import("../session-auth-dead-MKVXSMXZ.js");
|
|
17133
17133
|
const observations = [];
|
|
17134
17134
|
const pendingCacheCommits = [];
|
|
17135
17135
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -21694,7 +21694,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21694
21694
|
try {
|
|
21695
21695
|
const freshId = rotateSessionForWedge(codeName);
|
|
21696
21696
|
consecutiveWedgeCycles.delete(codeName);
|
|
21697
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
21697
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-CJ4Y5IS2.js");
|
|
21698
21698
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
21699
21699
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
21700
21700
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -21737,7 +21737,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
21737
21737
|
void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
|
|
21738
21738
|
void (async () => {
|
|
21739
21739
|
try {
|
|
21740
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21740
|
+
const { collectDiagnostics } = await import("../persistent-session-3YXKX45E.js");
|
|
21741
21741
|
await api.post("/host/heartbeat", {
|
|
21742
21742
|
host_id: hostId,
|
|
21743
21743
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -21788,7 +21788,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
21788
21788
|
}
|
|
21789
21789
|
try {
|
|
21790
21790
|
const hostId = await getHostId();
|
|
21791
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
21791
|
+
const { collectDiagnostics } = await import("../persistent-session-3YXKX45E.js");
|
|
21792
21792
|
await api.post("/host/heartbeat", {
|
|
21793
21793
|
host_id: hostId,
|
|
21794
21794
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -22460,7 +22460,7 @@ async function processClaudePairSessions(agents) {
|
|
|
22460
22460
|
// cannot take it for itself — by the time it runs, the write it is looking
|
|
22461
22461
|
// for may already have happened.
|
|
22462
22462
|
snapshotPairConfig
|
|
22463
|
-
} = await import("../claude-pair-runtime-
|
|
22463
|
+
} = await import("../claude-pair-runtime-SRFW7LK5.js");
|
|
22464
22464
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
22465
22465
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
22466
22466
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -37898,6 +37898,18 @@ var FLAG_REGISTRY = [
|
|
|
37898
37898
|
// put a first-of-its-kind classifier in front of real customer traffic with nothing
|
|
37899
37899
|
// observed. Arm per-org, then revisit once there is evidence.
|
|
37900
37900
|
},
|
|
37901
|
+
{
|
|
37902
|
+
key: "email-draft-recipient-resolution",
|
|
37903
|
+
description: "ENG-11238: resolve the recipients of a draft-send (OUTLOOK_SEND_DRAFT / GMAIL_SEND_DRAFT) by reading the stored draft over the SAME Composio connection the send will use, so the email-domain guard and the internal-only tier bypass (ENG-11190) can judge it. Without this a draft-send carries only an id, so both controls treat it as un-inspectable and EVERY draft-send is held, including one addressed only to colleagues. off = today, byte for byte (no fetch). shadow = fetch and write a guardrail audit row with the decision it WOULD make (counts and an all-internal boolean, never addresses), but keep today's hold. enforce = feed the resolved To/Cc/Bcc into both controls; any external recipient, zero recipients, a fetch error/timeout, a malformed response or an absent Bcc field keeps the hold, and the draft is re-read right before dispatch so an edit in between is held too. Evaluated per-org. Ships dark.",
|
|
37904
|
+
flagType: "enum",
|
|
37905
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
37906
|
+
// Declared safe value is `off`: today's behaviour, where every draft-send is held. A flag-DB
|
|
37907
|
+
// read error degrades here, so a flags outage can only ever ADD holds back, never lift one.
|
|
37908
|
+
defaultValue: "off",
|
|
37909
|
+
// enforce lifts a human hold on real customer email, so flipping it is a deliberate, audited
|
|
37910
|
+
// per-org change (ADR-0022 §4). No envVar: net-new control with no pre-flags env gate.
|
|
37911
|
+
sensitive: true
|
|
37912
|
+
},
|
|
37901
37913
|
{
|
|
37902
37914
|
key: "heartbeat-writes-claude-account-email",
|
|
37903
37915
|
description: "ENG-10796 (#6382): when ON, the host heartbeat writes the Claude account address it reads from the host (oauthAccount.emailAddress) into hosts.claude_account_email, so the Tokens label self-heals. OFF (default) the heartbeat never writes the column and the label stays whatever an operator set. Ships DARK because the column must first sit behind column-level grants (ENG-11162, #6596): until then any org member, and every co-tenant org on a pool host, can read it raw through Supabase REST, and on an IL-provisioned box the harvested address is a staff login (Obi Wan ecad15b6eff5). Evaluated at PLATFORM scope only: the heartbeat does not know the host org before its UPDATE, so flip the platform value once ENG-11162 is live.",
|
package/dist/mcp/index.js
CHANGED
|
@@ -30229,6 +30229,18 @@ var FLAG_REGISTRY = [
|
|
|
30229
30229
|
// put a first-of-its-kind classifier in front of real customer traffic with nothing
|
|
30230
30230
|
// observed. Arm per-org, then revisit once there is evidence.
|
|
30231
30231
|
},
|
|
30232
|
+
{
|
|
30233
|
+
key: "email-draft-recipient-resolution",
|
|
30234
|
+
description: "ENG-11238: resolve the recipients of a draft-send (OUTLOOK_SEND_DRAFT / GMAIL_SEND_DRAFT) by reading the stored draft over the SAME Composio connection the send will use, so the email-domain guard and the internal-only tier bypass (ENG-11190) can judge it. Without this a draft-send carries only an id, so both controls treat it as un-inspectable and EVERY draft-send is held, including one addressed only to colleagues. off = today, byte for byte (no fetch). shadow = fetch and write a guardrail audit row with the decision it WOULD make (counts and an all-internal boolean, never addresses), but keep today's hold. enforce = feed the resolved To/Cc/Bcc into both controls; any external recipient, zero recipients, a fetch error/timeout, a malformed response or an absent Bcc field keeps the hold, and the draft is re-read right before dispatch so an edit in between is held too. Evaluated per-org. Ships dark.",
|
|
30235
|
+
flagType: "enum",
|
|
30236
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
30237
|
+
// Declared safe value is `off`: today's behaviour, where every draft-send is held. A flag-DB
|
|
30238
|
+
// read error degrades here, so a flags outage can only ever ADD holds back, never lift one.
|
|
30239
|
+
defaultValue: "off",
|
|
30240
|
+
// enforce lifts a human hold on real customer email, so flipping it is a deliberate, audited
|
|
30241
|
+
// per-org change (ADR-0022 §4). No envVar: net-new control with no pre-flags env gate.
|
|
30242
|
+
sensitive: true
|
|
30243
|
+
},
|
|
30232
30244
|
{
|
|
30233
30245
|
key: "heartbeat-writes-claude-account-email",
|
|
30234
30246
|
description: "ENG-10796 (#6382): when ON, the host heartbeat writes the Claude account address it reads from the host (oauthAccount.emailAddress) into hosts.claude_account_email, so the Tokens label self-heals. OFF (default) the heartbeat never writes the column and the label stays whatever an operator set. Ships DARK because the column must first sit behind column-level grants (ENG-11162, #6596): until then any org member, and every co-tenant org on a pool host, can read it raw through Supabase REST, and on an IL-provisioned box the harvested address is a staff login (Obi Wan ecad15b6eff5). Evaluated at PLATFORM scope only: the heartbeat does not know the host org before its UPDATE, so flip the platform value once ENG-11162 is live.",
|
package/dist/mcp/origami.js
CHANGED
|
@@ -44143,6 +44143,18 @@ var FLAG_REGISTRY = [
|
|
|
44143
44143
|
// put a first-of-its-kind classifier in front of real customer traffic with nothing
|
|
44144
44144
|
// observed. Arm per-org, then revisit once there is evidence.
|
|
44145
44145
|
},
|
|
44146
|
+
{
|
|
44147
|
+
key: "email-draft-recipient-resolution",
|
|
44148
|
+
description: "ENG-11238: resolve the recipients of a draft-send (OUTLOOK_SEND_DRAFT / GMAIL_SEND_DRAFT) by reading the stored draft over the SAME Composio connection the send will use, so the email-domain guard and the internal-only tier bypass (ENG-11190) can judge it. Without this a draft-send carries only an id, so both controls treat it as un-inspectable and EVERY draft-send is held, including one addressed only to colleagues. off = today, byte for byte (no fetch). shadow = fetch and write a guardrail audit row with the decision it WOULD make (counts and an all-internal boolean, never addresses), but keep today's hold. enforce = feed the resolved To/Cc/Bcc into both controls; any external recipient, zero recipients, a fetch error/timeout, a malformed response or an absent Bcc field keeps the hold, and the draft is re-read right before dispatch so an edit in between is held too. Evaluated per-org. Ships dark.",
|
|
44149
|
+
flagType: "enum",
|
|
44150
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
44151
|
+
// Declared safe value is `off`: today's behaviour, where every draft-send is held. A flag-DB
|
|
44152
|
+
// read error degrades here, so a flags outage can only ever ADD holds back, never lift one.
|
|
44153
|
+
defaultValue: "off",
|
|
44154
|
+
// enforce lifts a human hold on real customer email, so flipping it is a deliberate, audited
|
|
44155
|
+
// per-org change (ADR-0022 §4). No envVar: net-new control with no pre-flags env gate.
|
|
44156
|
+
sensitive: true
|
|
44157
|
+
},
|
|
44146
44158
|
{
|
|
44147
44159
|
key: "heartbeat-writes-claude-account-email",
|
|
44148
44160
|
description: "ENG-10796 (#6382): when ON, the host heartbeat writes the Claude account address it reads from the host (oauthAccount.emailAddress) into hosts.claude_account_email, so the Tokens label self-heals. OFF (default) the heartbeat never writes the column and the label stays whatever an operator set. Ships DARK because the column must first sit behind column-level grants (ENG-11162, #6596): until then any org member, and every co-tenant org on a pool host, can read it raw through Supabase REST, and on an IL-provisioned box the harvested address is a staff login (Obi Wan ecad15b6eff5). Evaluated at PLATFORM scope only: the heartbeat does not know the host org before its UPDATE, so flip the platform value once ENG-11162 is live.",
|
|
@@ -38782,6 +38782,18 @@ var FLAG_REGISTRY = [
|
|
|
38782
38782
|
// put a first-of-its-kind classifier in front of real customer traffic with nothing
|
|
38783
38783
|
// observed. Arm per-org, then revisit once there is evidence.
|
|
38784
38784
|
},
|
|
38785
|
+
{
|
|
38786
|
+
key: "email-draft-recipient-resolution",
|
|
38787
|
+
description: "ENG-11238: resolve the recipients of a draft-send (OUTLOOK_SEND_DRAFT / GMAIL_SEND_DRAFT) by reading the stored draft over the SAME Composio connection the send will use, so the email-domain guard and the internal-only tier bypass (ENG-11190) can judge it. Without this a draft-send carries only an id, so both controls treat it as un-inspectable and EVERY draft-send is held, including one addressed only to colleagues. off = today, byte for byte (no fetch). shadow = fetch and write a guardrail audit row with the decision it WOULD make (counts and an all-internal boolean, never addresses), but keep today's hold. enforce = feed the resolved To/Cc/Bcc into both controls; any external recipient, zero recipients, a fetch error/timeout, a malformed response or an absent Bcc field keeps the hold, and the draft is re-read right before dispatch so an edit in between is held too. Evaluated per-org. Ships dark.",
|
|
38788
|
+
flagType: "enum",
|
|
38789
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
38790
|
+
// Declared safe value is `off`: today's behaviour, where every draft-send is held. A flag-DB
|
|
38791
|
+
// read error degrades here, so a flags outage can only ever ADD holds back, never lift one.
|
|
38792
|
+
defaultValue: "off",
|
|
38793
|
+
// enforce lifts a human hold on real customer email, so flipping it is a deliberate, audited
|
|
38794
|
+
// per-org change (ADR-0022 §4). No envVar: net-new control with no pre-flags env gate.
|
|
38795
|
+
sensitive: true
|
|
38796
|
+
},
|
|
38785
38797
|
{
|
|
38786
38798
|
key: "heartbeat-writes-claude-account-email",
|
|
38787
38799
|
description: "ENG-10796 (#6382): when ON, the host heartbeat writes the Claude account address it reads from the host (oauthAccount.emailAddress) into hosts.claude_account_email, so the Tokens label self-heals. OFF (default) the heartbeat never writes the column and the label stays whatever an operator set. Ships DARK because the column must first sit behind column-level grants (ENG-11162, #6596): until then any org member, and every co-tenant org on a pool host, can read it raw through Supabase REST, and on an IL-provisioned box the harvested address is a staff login (Obi Wan ecad15b6eff5). Evaluated at PLATFORM scope only: the heartbeat does not know the host org before its UPDATE, so flip the platform value once ENG-11162 is live.",
|
|
@@ -38888,6 +38888,18 @@ var FLAG_REGISTRY = [
|
|
|
38888
38888
|
// put a first-of-its-kind classifier in front of real customer traffic with nothing
|
|
38889
38889
|
// observed. Arm per-org, then revisit once there is evidence.
|
|
38890
38890
|
},
|
|
38891
|
+
{
|
|
38892
|
+
key: "email-draft-recipient-resolution",
|
|
38893
|
+
description: "ENG-11238: resolve the recipients of a draft-send (OUTLOOK_SEND_DRAFT / GMAIL_SEND_DRAFT) by reading the stored draft over the SAME Composio connection the send will use, so the email-domain guard and the internal-only tier bypass (ENG-11190) can judge it. Without this a draft-send carries only an id, so both controls treat it as un-inspectable and EVERY draft-send is held, including one addressed only to colleagues. off = today, byte for byte (no fetch). shadow = fetch and write a guardrail audit row with the decision it WOULD make (counts and an all-internal boolean, never addresses), but keep today's hold. enforce = feed the resolved To/Cc/Bcc into both controls; any external recipient, zero recipients, a fetch error/timeout, a malformed response or an absent Bcc field keeps the hold, and the draft is re-read right before dispatch so an edit in between is held too. Evaluated per-org. Ships dark.",
|
|
38894
|
+
flagType: "enum",
|
|
38895
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
38896
|
+
// Declared safe value is `off`: today's behaviour, where every draft-send is held. A flag-DB
|
|
38897
|
+
// read error degrades here, so a flags outage can only ever ADD holds back, never lift one.
|
|
38898
|
+
defaultValue: "off",
|
|
38899
|
+
// enforce lifts a human hold on real customer email, so flipping it is a deliberate, audited
|
|
38900
|
+
// per-org change (ADR-0022 §4). No envVar: net-new control with no pre-flags env gate.
|
|
38901
|
+
sensitive: true
|
|
38902
|
+
},
|
|
38891
38903
|
{
|
|
38892
38904
|
key: "heartbeat-writes-claude-account-email",
|
|
38893
38905
|
description: "ENG-10796 (#6382): when ON, the host heartbeat writes the Claude account address it reads from the host (oauthAccount.emailAddress) into hosts.claude_account_email, so the Tokens label self-heals. OFF (default) the heartbeat never writes the column and the label stays whatever an operator set. Ships DARK because the column must first sit behind column-level grants (ENG-11162, #6596): until then any org member, and every co-tenant org on a pool host, can read it raw through Supabase REST, and on an IL-provisioned box the harvested address is a staff login (Obi Wan ecad15b6eff5). Evaluated at PLATFORM scope only: the heartbeat does not know the host org before its UPDATE, so flip the platform value once ENG-11162 is live.",
|
|
@@ -65,8 +65,8 @@ import {
|
|
|
65
65
|
writeDirectChatSessionState,
|
|
66
66
|
writeEgressAllowlist,
|
|
67
67
|
writePersistentClaudeWrapper
|
|
68
|
-
} from "./chunk-
|
|
69
|
-
import "./chunk-
|
|
68
|
+
} from "./chunk-E3XTUL7S.js";
|
|
69
|
+
import "./chunk-VQITKTZU.js";
|
|
70
70
|
import "./chunk-OCMJ5E6J.js";
|
|
71
71
|
import "./chunk-XWVM4KPK.js";
|
|
72
72
|
import "./chunk-EL5MWGGH.js";
|
|
@@ -139,4 +139,4 @@ export {
|
|
|
139
139
|
writeEgressAllowlist,
|
|
140
140
|
writePersistentClaudeWrapper
|
|
141
141
|
};
|
|
142
|
-
//# sourceMappingURL=persistent-session-
|
|
142
|
+
//# sourceMappingURL=persistent-session-3YXKX45E.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-E3XTUL7S.js";
|
|
4
|
+
import "./chunk-VQITKTZU.js";
|
|
5
5
|
import "./chunk-OCMJ5E6J.js";
|
|
6
6
|
import "./chunk-XWVM4KPK.js";
|
|
7
7
|
import "./chunk-EL5MWGGH.js";
|
|
@@ -802,4 +802,4 @@ export {
|
|
|
802
802
|
readAndResetSlackReplyBindingClassifications,
|
|
803
803
|
readAndResetSlackReplyTargetClassifications
|
|
804
804
|
};
|
|
805
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
805
|
+
//# sourceMappingURL=responsiveness-probe-CJ4Y5IS2.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VQITKTZU.js";
|
|
4
4
|
import "./chunk-DGUM43GV.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/session-auth-dead.ts
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
decideSessionAuthState,
|
|
205
205
|
probeSessionAuth
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=session-auth-dead-
|
|
207
|
+
//# sourceMappingURL=session-auth-dead-MKVXSMXZ.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|