@integrity-labs/agt-cli 0.28.892 → 0.28.893
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-FZ6KIIYX.js → chunk-5464FJVN.js} +32 -8
- package/dist/{chunk-FZ6KIIYX.js.map → chunk-5464FJVN.js.map} +1 -1
- package/dist/{chunk-SUVQ2KSP.js → chunk-5YD7HEY7.js} +4 -4
- package/dist/{chunk-WMJBXN6N.js → chunk-RAEBKUW2.js} +2 -2
- package/dist/{claude-pair-runtime-RTD7ZCVS.js → claude-pair-runtime-3MK5MUPN.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/mcp/augmented-admin.js +22 -6
- package/dist/mcp/direct-chat-channel.js +31 -7
- package/dist/mcp/index.js +31 -7
- package/dist/mcp/origami.js +31 -7
- package/dist/mcp/slack-channel.js +31 -7
- package/dist/mcp/telegram-channel.js +31 -7
- package/dist/{persistent-session-ARKZDYMX.js → persistent-session-5HSYQBF7.js} +3 -3
- package/dist/{responsiveness-probe-X2WXPIUI.js → responsiveness-probe-ZSB3DLLI.js} +3 -3
- package/dist/{session-auth-dead-BLEV4AUJ.js → session-auth-dead-J7SQAYRR.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-SUVQ2KSP.js.map → chunk-5YD7HEY7.js.map} +0 -0
- /package/dist/{chunk-WMJBXN6N.js.map → chunk-RAEBKUW2.js.map} +0 -0
- /package/dist/{claude-pair-runtime-RTD7ZCVS.js.map → claude-pair-runtime-3MK5MUPN.js.map} +0 -0
- /package/dist/{persistent-session-ARKZDYMX.js.map → persistent-session-5HSYQBF7.js.map} +0 -0
- /package/dist/{responsiveness-probe-X2WXPIUI.js.map → responsiveness-probe-ZSB3DLLI.js.map} +0 -0
- /package/dist/{session-auth-dead-BLEV4AUJ.js.map → session-auth-dead-J7SQAYRR.js.map} +0 -0
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
parseEnvIntegrations,
|
|
17
17
|
shellQuote,
|
|
18
18
|
summarizeUnanswerablePane
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RAEBKUW2.js";
|
|
20
20
|
import {
|
|
21
21
|
BIND_FAILURE_QUARANTINE_THRESHOLD,
|
|
22
22
|
INTEGRATIONS_SECTION_END,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
sessionTranscriptDir,
|
|
77
77
|
worseConnectivityOutcome,
|
|
78
78
|
wrapScheduledTaskPrompt
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-5464FJVN.js";
|
|
80
80
|
import {
|
|
81
81
|
parsePsRows
|
|
82
82
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -6841,7 +6841,7 @@ function exchangeFailureKind(err) {
|
|
|
6841
6841
|
}
|
|
6842
6842
|
|
|
6843
6843
|
// src/lib/api-client.ts
|
|
6844
|
-
var agtCliVersion = true ? "0.28.
|
|
6844
|
+
var agtCliVersion = true ? "0.28.893" : "dev";
|
|
6845
6845
|
var lastConfigHash = null;
|
|
6846
6846
|
function setConfigHash(hash) {
|
|
6847
6847
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -11451,4 +11451,4 @@ export {
|
|
|
11451
11451
|
managerInstallSystemUnitCommand,
|
|
11452
11452
|
managerUninstallSystemUnitCommand
|
|
11453
11453
|
};
|
|
11454
|
-
//# sourceMappingURL=chunk-
|
|
11454
|
+
//# sourceMappingURL=chunk-5YD7HEY7.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
rotateDailySession,
|
|
20
20
|
sessionFileExists,
|
|
21
21
|
todayLocalIso
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-5464FJVN.js";
|
|
23
23
|
import {
|
|
24
24
|
reapOrphanChannelMcps
|
|
25
25
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -5730,4 +5730,4 @@ export {
|
|
|
5730
5730
|
stopAllSessionsAndWait,
|
|
5731
5731
|
getProjectDir
|
|
5732
5732
|
};
|
|
5733
|
-
//# sourceMappingURL=chunk-
|
|
5733
|
+
//# sourceMappingURL=chunk-RAEBKUW2.js.map
|
|
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
|
|
|
100
100
|
return { ok: true };
|
|
101
101
|
} catch {
|
|
102
102
|
}
|
|
103
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-5HSYQBF7.js");
|
|
104
104
|
const claudeBin = resolveClaudeBinary();
|
|
105
105
|
const pairEnv = {
|
|
106
106
|
...process.env,
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
startClaudePair,
|
|
374
374
|
submitClaudePairCode
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
376
|
+
//# sourceMappingURL=claude-pair-runtime-3MK5MUPN.js.map
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
safeWriteJsonAtomic,
|
|
64
64
|
setConfigHash,
|
|
65
65
|
tripClass
|
|
66
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-5YD7HEY7.js";
|
|
67
67
|
import {
|
|
68
68
|
getProjectDir as getProjectDir2,
|
|
69
69
|
getReadyTasks,
|
|
@@ -136,7 +136,7 @@ import {
|
|
|
136
136
|
takeZombieDetection,
|
|
137
137
|
toOpencodeModel,
|
|
138
138
|
writeEgressAllowlist
|
|
139
|
-
} from "../chunk-
|
|
139
|
+
} from "../chunk-RAEBKUW2.js";
|
|
140
140
|
import {
|
|
141
141
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
142
142
|
AnchorSessionClient,
|
|
@@ -231,7 +231,7 @@ import {
|
|
|
231
231
|
subagentActivityAgeSeconds,
|
|
232
232
|
sumTranscriptUsageInWindow,
|
|
233
233
|
transcriptActivityAgeSeconds
|
|
234
|
-
} from "../chunk-
|
|
234
|
+
} from "../chunk-5464FJVN.js";
|
|
235
235
|
import {
|
|
236
236
|
reapOrphanChannelMcps
|
|
237
237
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -13003,7 +13003,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
13003
13003
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
13004
13004
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
13005
13005
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
13006
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
13006
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-ZSB3DLLI.js");
|
|
13007
13007
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
13008
13008
|
if (newest === null) return null;
|
|
13009
13009
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -13671,7 +13671,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13671
13671
|
var lastVersionCheckAt = 0;
|
|
13672
13672
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13673
13673
|
var lastResponsivenessProbeAt = 0;
|
|
13674
|
-
var agtCliVersion = true ? "0.28.
|
|
13674
|
+
var agtCliVersion = true ? "0.28.893" : "dev";
|
|
13675
13675
|
function resolveBrewPath(execFileSync2) {
|
|
13676
13676
|
try {
|
|
13677
13677
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -15261,7 +15261,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
15261
15261
|
if (codeNames.length === 0) return;
|
|
15262
15262
|
void (async () => {
|
|
15263
15263
|
try {
|
|
15264
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15264
|
+
const { collectDiagnostics } = await import("../persistent-session-5HSYQBF7.js");
|
|
15265
15265
|
await api.post("/host/heartbeat", {
|
|
15266
15266
|
host_id: hostId,
|
|
15267
15267
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -15403,7 +15403,7 @@ async function pollCycleInner() {
|
|
|
15403
15403
|
}
|
|
15404
15404
|
try {
|
|
15405
15405
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
15406
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15406
|
+
const { collectDiagnostics } = await import("../persistent-session-5HSYQBF7.js");
|
|
15407
15407
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
15408
15408
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
|
|
15409
15409
|
let tailscaleHostname;
|
|
@@ -15572,7 +15572,7 @@ async function pollCycleInner() {
|
|
|
15572
15572
|
collectPanelessActivityProbes,
|
|
15573
15573
|
getResponsivenessIntervalMs,
|
|
15574
15574
|
occupancyQualificationClassifications
|
|
15575
|
-
} = await import("../responsiveness-probe-
|
|
15575
|
+
} = await import("../responsiveness-probe-ZSB3DLLI.js");
|
|
15576
15576
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
15577
15577
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
15578
15578
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -15689,7 +15689,7 @@ async function pollCycleInner() {
|
|
|
15689
15689
|
collectResponsivenessProbes,
|
|
15690
15690
|
livePendingInboundOldestAgeSeconds,
|
|
15691
15691
|
parkPendingInbound
|
|
15692
|
-
} = await import("../responsiveness-probe-
|
|
15692
|
+
} = await import("../responsiveness-probe-ZSB3DLLI.js");
|
|
15693
15693
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
15694
15694
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
15695
15695
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -15845,7 +15845,7 @@ async function pollCycleInner() {
|
|
|
15845
15845
|
}
|
|
15846
15846
|
try {
|
|
15847
15847
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
15848
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
15848
|
+
const { probeSessionAuth } = await import("../session-auth-dead-J7SQAYRR.js");
|
|
15849
15849
|
const observations = [];
|
|
15850
15850
|
const pendingCacheCommits = [];
|
|
15851
15851
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -20103,7 +20103,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20103
20103
|
try {
|
|
20104
20104
|
const freshId = rotateSessionForWedge(codeName);
|
|
20105
20105
|
consecutiveWedgeCycles.delete(codeName);
|
|
20106
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
20106
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-ZSB3DLLI.js");
|
|
20107
20107
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
20108
20108
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
20109
20109
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -20146,7 +20146,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20146
20146
|
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}`));
|
|
20147
20147
|
void (async () => {
|
|
20148
20148
|
try {
|
|
20149
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20149
|
+
const { collectDiagnostics } = await import("../persistent-session-5HSYQBF7.js");
|
|
20150
20150
|
await api.post("/host/heartbeat", {
|
|
20151
20151
|
host_id: hostId,
|
|
20152
20152
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20197,7 +20197,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
20197
20197
|
}
|
|
20198
20198
|
try {
|
|
20199
20199
|
const hostId = await getHostId();
|
|
20200
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20200
|
+
const { collectDiagnostics } = await import("../persistent-session-5HSYQBF7.js");
|
|
20201
20201
|
await api.post("/host/heartbeat", {
|
|
20202
20202
|
host_id: hostId,
|
|
20203
20203
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20839,7 +20839,7 @@ async function processClaudePairSessions(agents) {
|
|
|
20839
20839
|
killPairSession,
|
|
20840
20840
|
pairTmuxSession,
|
|
20841
20841
|
finalizeClaudePairOnboarding
|
|
20842
|
-
} = await import("../claude-pair-runtime-
|
|
20842
|
+
} = await import("../claude-pair-runtime-3MK5MUPN.js");
|
|
20843
20843
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
20844
20844
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
20845
20845
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -21478,14 +21478,30 @@ var resumeAgentSchema = strictObject({
|
|
|
21478
21478
|
});
|
|
21479
21479
|
var listAlertsSchema = strictObject({
|
|
21480
21480
|
severity: external_exports.string().max(16).optional().describe("Filter by severity (critical | warning | info)."),
|
|
21481
|
-
// ENG-8566: without this, an
|
|
21482
|
-
// the listing is
|
|
21483
|
-
//
|
|
21481
|
+
// ENG-8566: without this, an alert of a specific kind could be unreachable —
|
|
21482
|
+
// the listing is capped at 100 and the open board exceeds that. Twelve
|
|
21483
|
+
// slack_manifest_drift warnings sat unfindable for 48 days.
|
|
21484
|
+
//
|
|
21485
|
+
// ENG-10379 corrected the ordering claim this comment used to carry ("the
|
|
21486
|
+
// listing is newest-first"). It is severity-first, then OLDEST-first within a
|
|
21487
|
+
// severity, so the rows a truncated page drops are the NEWEST of the lowest
|
|
21488
|
+
// severity present. `cursor` below is now the general escape hatch; `kind`
|
|
21489
|
+
// remains the narrow one for when you already know what you are hunting.
|
|
21484
21490
|
kind: external_exports.string().max(64).optional().describe(
|
|
21485
|
-
"Filter by alert kind, exact match (e.g. slack_manifest_drift, host_down, integration_down).
|
|
21491
|
+
"Filter by alert kind, exact match (e.g. slack_manifest_drift, host_down, integration_down). ENG-10379: ordering is severity first (critical, then warning, then info) and OLDEST-first within each severity, so the rows a truncated page drops are the NEWEST of the lowest severity present - not the oldest. Page with `cursor` to reach them; `kind` narrows the set when you already know what you are looking for."
|
|
21486
21492
|
),
|
|
21487
21493
|
open: external_exports.boolean().optional().describe("When true, only currently-open (unclosed) alerts."),
|
|
21488
|
-
limit: limitSchema
|
|
21494
|
+
limit: limitSchema,
|
|
21495
|
+
// ENG-10379: the API has accepted a keyset `cursor` since ENG-9295 and returns
|
|
21496
|
+
// `next_cursor`, but this schema never exposed one - and these schemas are
|
|
21497
|
+
// STRICT, so a caller passing `cursor` was REJECTED rather than ignored. The
|
|
21498
|
+
// paging existed and could not be driven from here, which is what left rows
|
|
21499
|
+
// past the 100-row cap unreachable: on a board over the cap those are the
|
|
21500
|
+
// NEWEST alerts of the lowest severity present, and one of them was a 25-hour
|
|
21501
|
+
// channel outage nobody could see.
|
|
21502
|
+
cursor: external_exports.string().min(1).max(512).optional().describe(
|
|
21503
|
+
"Keyset cursor from a previous response's `next_cursor`. Pass it to fetch the NEXT page, and repeat until `next_cursor` is null to walk the whole board. Opaque: it encodes (severity_rank, opened_at, id) as one string, and a malformed cursor is refused rather than silently serving page one again."
|
|
21504
|
+
)
|
|
21489
21505
|
});
|
|
21490
21506
|
var requestAccessSchema = strictObject({
|
|
21491
21507
|
target_org_id: external_exports.string().min(1).max(64).describe("UUID of the customer organization to open scoped read access to."),
|
|
@@ -21693,7 +21709,7 @@ server.registerTool(
|
|
|
21693
21709
|
);
|
|
21694
21710
|
server.registerTool(
|
|
21695
21711
|
"debug_list_alerts",
|
|
21696
|
-
{ description: "List recent platform alerts across authorized orgs (host-down, agent-stale, probe-timeout, auth-failed), including NULL-team host alerts. Returns a projection per alert (kind, severity, message, source, open/closed state), plus { count, total, truncated } \u2014 `total` is the matches before the 100-row cap, so `truncated: true` means you are NOT seeing everything. Filter with { kind, severity, open, limit }. **ENG-10030 \u2014 two fields that change how you read `message`.** `dedupe_key` is the alert's identity (`<kind>:<subject id>`), so it tells you which ROW an alert is about, not just which agent. `updated_at` tells you whether `message` is CURRENT: `open_alert` overwrites `message` on every re-raise but never touches `opened_at`, so a message is a snapshot unless the monitor re-raised that `(kind, dedupe_key)` since the alert opened \u2014 and it reads like live output either way. ONE DIRECTION IS PROOF, THE OTHER IS A HINT: `updated_at === opened_at` is CONCLUSIVE (never written since insert, so never re-raised, so `message` is frozen at `opened_at` \u2014 check this before proposing a fix for what a message describes, because the code may have moved since); `updated_at > opened_at` is SUGGESTIVE ONLY, because the `alerts_set_updated_at` trigger fires on EVERY write \u2014 an acknowledge, a snooze, a close, or a backfill migration. Compare against `acknowledged_at` / `snoozed_until` / `closed_at`: if `updated_at` matches one of them, that write was the human action, not a re-raise. Matching NONE of them is evidence of a re-raise but not proof, because a migration that touches the row leaves no timestamp of its own. Reading it as a biconditional is expensive: on one measured board 63 of 98 open alerts were acknowledged, so ~64% would falsely report current text. Two reads an hour apart remain the only unambiguous positive test. **
|
|
21712
|
+
{ description: "List recent platform alerts across authorized orgs (host-down, agent-stale, probe-timeout, auth-failed), including NULL-team host alerts. Returns a projection per alert (kind, severity, message, source, open/closed state), plus { count, total, truncated } \u2014 `total` is the matches before the 100-row cap, so `truncated: true` means you are NOT seeing everything. Filter with { kind, severity, open, limit }. **ENG-10030 \u2014 two fields that change how you read `message`.** `dedupe_key` is the alert's identity (`<kind>:<subject id>`), so it tells you which ROW an alert is about, not just which agent. `updated_at` tells you whether `message` is CURRENT: `open_alert` overwrites `message` on every re-raise but never touches `opened_at`, so a message is a snapshot unless the monitor re-raised that `(kind, dedupe_key)` since the alert opened \u2014 and it reads like live output either way. ONE DIRECTION IS PROOF, THE OTHER IS A HINT: `updated_at === opened_at` is CONCLUSIVE (never written since insert, so never re-raised, so `message` is frozen at `opened_at` \u2014 check this before proposing a fix for what a message describes, because the code may have moved since); `updated_at > opened_at` is SUGGESTIVE ONLY, because the `alerts_set_updated_at` trigger fires on EVERY write \u2014 an acknowledge, a snooze, a close, or a backfill migration. Compare against `acknowledged_at` / `snoozed_until` / `closed_at`: if `updated_at` matches one of them, that write was the human action, not a re-raise. Matching NONE of them is evidence of a re-raise but not proof, because a migration that touches the row leaves no timestamp of its own. Reading it as a biconditional is expensive: on one measured board 63 of 98 open alerts were acknowledged, so ~64% would falsely report current text. Two reads an hour apart remain the only unambiguous positive test. **ORDERING AND PAGING - ENG-10379, and the previous text here was wrong.** Results are ordered by SEVERITY first (critical, then warning, then info) and OLDEST-FIRST within each severity. They are not ordered newest first. So on a board past the 100-row cap, the rows dropped are the NEWEST alerts of the lowest severity present - which is how a sweep that reads one page missed a live 25-hour channel outage. `truncated: true` still means exactly what it always did (more matches exist than this page carries); to REACH them, pass `cursor` set to this response's `next_cursor` and repeat until `next_cursor` comes back null, which walks the whole board in order. `kind` still narrows the set when you already know what you are looking for (ENG-8566: 12 slack_manifest_drift warnings sat unfindable for 48 days).", inputSchema: listAlertsSchema },
|
|
21697
21713
|
async (args) => {
|
|
21698
21714
|
try {
|
|
21699
21715
|
const result = await client.listAlerts(args);
|
|
@@ -37526,14 +37526,38 @@ var FLAG_REGISTRY = [
|
|
|
37526
37526
|
},
|
|
37527
37527
|
{
|
|
37528
37528
|
key: "app-top-nav-shell",
|
|
37529
|
-
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488).
|
|
37529
|
+
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488). NO LONGER DARK: ENG-9831 cutover step 1 flipped the default to true, so an org with no override now gets the top-nav shell. The key survives only until cutover step 2 deletes it.",
|
|
37530
37530
|
flagType: "boolean",
|
|
37531
|
-
//
|
|
37532
|
-
//
|
|
37533
|
-
|
|
37534
|
-
//
|
|
37535
|
-
//
|
|
37536
|
-
//
|
|
37531
|
+
// ENG-9831 (cutover step 1): flipped `false` -> `true`. The comment this
|
|
37532
|
+
// replaces called `false` the fail-closed direction — "the shell that ships
|
|
37533
|
+
// today". That was true while the sidebar was the shell that shipped; the
|
|
37534
|
+
// top nav is now the one being cut over to, so `false` points at the layout
|
|
37535
|
+
// being retired. The old rationale is recorded rather than deleted because
|
|
37536
|
+
// it was correct under a premise that has expired.
|
|
37537
|
+
//
|
|
37538
|
+
// NOTE the same split as ninjafy-brand below: this value is consulted by the
|
|
37539
|
+
// API evaluator when building the `GET /flags` map for an org with no
|
|
37540
|
+
// override. It is NOT the fallback the webapp uses on an outage — that is
|
|
37541
|
+
// the argument passed at the call site. Four call sites carry `true` to
|
|
37542
|
+
// match: (dashboard)/layout.tsx and the three legacy redirect hubs
|
|
37543
|
+
// (settings, team, organization/settings). Flipping the registry alone
|
|
37544
|
+
// leaves the cutover half-applied.
|
|
37545
|
+
defaultValue: true,
|
|
37546
|
+
// ENG-9831: NO LONGER read client-side. It was — via usePublicBooleanFlag in
|
|
37547
|
+
// sidebar.tsx (twice) and top-nav.tsx — and that is precisely what this
|
|
37548
|
+
// slice removed: a client hook starts at its default and corrects after an
|
|
37549
|
+
// async GET /flags, so the console painted the sidebar and then replaced the
|
|
37550
|
+
// WHOLE dashboard chrome after hydration. The ENG-8858/ENG-9227 flash at
|
|
37551
|
+
// layout scale. It is now resolved once server-side in (dashboard)/
|
|
37552
|
+
// layout.tsx and passed to both shells as a required prop.
|
|
37553
|
+
//
|
|
37554
|
+
// `public` MUST STAY ANYWAY — the same trap documented on ninjafy-brand.
|
|
37555
|
+
// getPublicBooleanFlagServer resolves against the very same public-filtered
|
|
37556
|
+
// `GET /flags` the browser uses (routes/flags.ts filters to
|
|
37557
|
+
// listPublicFlagKeys()). Drop `public` and the key is simply absent from the
|
|
37558
|
+
// map, the server helper falls through to its default forever, and every org
|
|
37559
|
+
// silently gets whatever that default happens to be with no error anywhere.
|
|
37560
|
+
// `public` means "readable through the public map", not "read by a browser".
|
|
37537
37561
|
public: true
|
|
37538
37562
|
},
|
|
37539
37563
|
{
|
package/dist/mcp/index.js
CHANGED
|
@@ -29821,14 +29821,38 @@ var FLAG_REGISTRY = [
|
|
|
29821
29821
|
},
|
|
29822
29822
|
{
|
|
29823
29823
|
key: "app-top-nav-shell",
|
|
29824
|
-
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488).
|
|
29824
|
+
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488). NO LONGER DARK: ENG-9831 cutover step 1 flipped the default to true, so an org with no override now gets the top-nav shell. The key survives only until cutover step 2 deletes it.",
|
|
29825
29825
|
flagType: "boolean",
|
|
29826
|
-
//
|
|
29827
|
-
//
|
|
29828
|
-
|
|
29829
|
-
//
|
|
29830
|
-
//
|
|
29831
|
-
//
|
|
29826
|
+
// ENG-9831 (cutover step 1): flipped `false` -> `true`. The comment this
|
|
29827
|
+
// replaces called `false` the fail-closed direction — "the shell that ships
|
|
29828
|
+
// today". That was true while the sidebar was the shell that shipped; the
|
|
29829
|
+
// top nav is now the one being cut over to, so `false` points at the layout
|
|
29830
|
+
// being retired. The old rationale is recorded rather than deleted because
|
|
29831
|
+
// it was correct under a premise that has expired.
|
|
29832
|
+
//
|
|
29833
|
+
// NOTE the same split as ninjafy-brand below: this value is consulted by the
|
|
29834
|
+
// API evaluator when building the `GET /flags` map for an org with no
|
|
29835
|
+
// override. It is NOT the fallback the webapp uses on an outage — that is
|
|
29836
|
+
// the argument passed at the call site. Four call sites carry `true` to
|
|
29837
|
+
// match: (dashboard)/layout.tsx and the three legacy redirect hubs
|
|
29838
|
+
// (settings, team, organization/settings). Flipping the registry alone
|
|
29839
|
+
// leaves the cutover half-applied.
|
|
29840
|
+
defaultValue: true,
|
|
29841
|
+
// ENG-9831: NO LONGER read client-side. It was — via usePublicBooleanFlag in
|
|
29842
|
+
// sidebar.tsx (twice) and top-nav.tsx — and that is precisely what this
|
|
29843
|
+
// slice removed: a client hook starts at its default and corrects after an
|
|
29844
|
+
// async GET /flags, so the console painted the sidebar and then replaced the
|
|
29845
|
+
// WHOLE dashboard chrome after hydration. The ENG-8858/ENG-9227 flash at
|
|
29846
|
+
// layout scale. It is now resolved once server-side in (dashboard)/
|
|
29847
|
+
// layout.tsx and passed to both shells as a required prop.
|
|
29848
|
+
//
|
|
29849
|
+
// `public` MUST STAY ANYWAY — the same trap documented on ninjafy-brand.
|
|
29850
|
+
// getPublicBooleanFlagServer resolves against the very same public-filtered
|
|
29851
|
+
// `GET /flags` the browser uses (routes/flags.ts filters to
|
|
29852
|
+
// listPublicFlagKeys()). Drop `public` and the key is simply absent from the
|
|
29853
|
+
// map, the server helper falls through to its default forever, and every org
|
|
29854
|
+
// silently gets whatever that default happens to be with no error anywhere.
|
|
29855
|
+
// `public` means "readable through the public map", not "read by a browser".
|
|
29832
29856
|
public: true
|
|
29833
29857
|
},
|
|
29834
29858
|
{
|
package/dist/mcp/origami.js
CHANGED
|
@@ -43749,14 +43749,38 @@ var FLAG_REGISTRY = [
|
|
|
43749
43749
|
},
|
|
43750
43750
|
{
|
|
43751
43751
|
key: "app-top-nav-shell",
|
|
43752
|
-
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488).
|
|
43752
|
+
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488). NO LONGER DARK: ENG-9831 cutover step 1 flipped the default to true, so an org with no override now gets the top-nav shell. The key survives only until cutover step 2 deletes it.",
|
|
43753
43753
|
flagType: "boolean",
|
|
43754
|
-
//
|
|
43755
|
-
//
|
|
43756
|
-
|
|
43757
|
-
//
|
|
43758
|
-
//
|
|
43759
|
-
//
|
|
43754
|
+
// ENG-9831 (cutover step 1): flipped `false` -> `true`. The comment this
|
|
43755
|
+
// replaces called `false` the fail-closed direction — "the shell that ships
|
|
43756
|
+
// today". That was true while the sidebar was the shell that shipped; the
|
|
43757
|
+
// top nav is now the one being cut over to, so `false` points at the layout
|
|
43758
|
+
// being retired. The old rationale is recorded rather than deleted because
|
|
43759
|
+
// it was correct under a premise that has expired.
|
|
43760
|
+
//
|
|
43761
|
+
// NOTE the same split as ninjafy-brand below: this value is consulted by the
|
|
43762
|
+
// API evaluator when building the `GET /flags` map for an org with no
|
|
43763
|
+
// override. It is NOT the fallback the webapp uses on an outage — that is
|
|
43764
|
+
// the argument passed at the call site. Four call sites carry `true` to
|
|
43765
|
+
// match: (dashboard)/layout.tsx and the three legacy redirect hubs
|
|
43766
|
+
// (settings, team, organization/settings). Flipping the registry alone
|
|
43767
|
+
// leaves the cutover half-applied.
|
|
43768
|
+
defaultValue: true,
|
|
43769
|
+
// ENG-9831: NO LONGER read client-side. It was — via usePublicBooleanFlag in
|
|
43770
|
+
// sidebar.tsx (twice) and top-nav.tsx — and that is precisely what this
|
|
43771
|
+
// slice removed: a client hook starts at its default and corrects after an
|
|
43772
|
+
// async GET /flags, so the console painted the sidebar and then replaced the
|
|
43773
|
+
// WHOLE dashboard chrome after hydration. The ENG-8858/ENG-9227 flash at
|
|
43774
|
+
// layout scale. It is now resolved once server-side in (dashboard)/
|
|
43775
|
+
// layout.tsx and passed to both shells as a required prop.
|
|
43776
|
+
//
|
|
43777
|
+
// `public` MUST STAY ANYWAY — the same trap documented on ninjafy-brand.
|
|
43778
|
+
// getPublicBooleanFlagServer resolves against the very same public-filtered
|
|
43779
|
+
// `GET /flags` the browser uses (routes/flags.ts filters to
|
|
43780
|
+
// listPublicFlagKeys()). Drop `public` and the key is simply absent from the
|
|
43781
|
+
// map, the server helper falls through to its default forever, and every org
|
|
43782
|
+
// silently gets whatever that default happens to be with no error anywhere.
|
|
43783
|
+
// `public` means "readable through the public map", not "read by a browser".
|
|
43760
43784
|
public: true
|
|
43761
43785
|
},
|
|
43762
43786
|
{
|
|
@@ -38386,14 +38386,38 @@ var FLAG_REGISTRY = [
|
|
|
38386
38386
|
},
|
|
38387
38387
|
{
|
|
38388
38388
|
key: "app-top-nav-shell",
|
|
38389
|
-
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488).
|
|
38389
|
+
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488). NO LONGER DARK: ENG-9831 cutover step 1 flipped the default to true, so an org with no override now gets the top-nav shell. The key survives only until cutover step 2 deletes it.",
|
|
38390
38390
|
flagType: "boolean",
|
|
38391
|
-
//
|
|
38392
|
-
//
|
|
38393
|
-
|
|
38394
|
-
//
|
|
38395
|
-
//
|
|
38396
|
-
//
|
|
38391
|
+
// ENG-9831 (cutover step 1): flipped `false` -> `true`. The comment this
|
|
38392
|
+
// replaces called `false` the fail-closed direction — "the shell that ships
|
|
38393
|
+
// today". That was true while the sidebar was the shell that shipped; the
|
|
38394
|
+
// top nav is now the one being cut over to, so `false` points at the layout
|
|
38395
|
+
// being retired. The old rationale is recorded rather than deleted because
|
|
38396
|
+
// it was correct under a premise that has expired.
|
|
38397
|
+
//
|
|
38398
|
+
// NOTE the same split as ninjafy-brand below: this value is consulted by the
|
|
38399
|
+
// API evaluator when building the `GET /flags` map for an org with no
|
|
38400
|
+
// override. It is NOT the fallback the webapp uses on an outage — that is
|
|
38401
|
+
// the argument passed at the call site. Four call sites carry `true` to
|
|
38402
|
+
// match: (dashboard)/layout.tsx and the three legacy redirect hubs
|
|
38403
|
+
// (settings, team, organization/settings). Flipping the registry alone
|
|
38404
|
+
// leaves the cutover half-applied.
|
|
38405
|
+
defaultValue: true,
|
|
38406
|
+
// ENG-9831: NO LONGER read client-side. It was — via usePublicBooleanFlag in
|
|
38407
|
+
// sidebar.tsx (twice) and top-nav.tsx — and that is precisely what this
|
|
38408
|
+
// slice removed: a client hook starts at its default and corrects after an
|
|
38409
|
+
// async GET /flags, so the console painted the sidebar and then replaced the
|
|
38410
|
+
// WHOLE dashboard chrome after hydration. The ENG-8858/ENG-9227 flash at
|
|
38411
|
+
// layout scale. It is now resolved once server-side in (dashboard)/
|
|
38412
|
+
// layout.tsx and passed to both shells as a required prop.
|
|
38413
|
+
//
|
|
38414
|
+
// `public` MUST STAY ANYWAY — the same trap documented on ninjafy-brand.
|
|
38415
|
+
// getPublicBooleanFlagServer resolves against the very same public-filtered
|
|
38416
|
+
// `GET /flags` the browser uses (routes/flags.ts filters to
|
|
38417
|
+
// listPublicFlagKeys()). Drop `public` and the key is simply absent from the
|
|
38418
|
+
// map, the server helper falls through to its default forever, and every org
|
|
38419
|
+
// silently gets whatever that default happens to be with no error anywhere.
|
|
38420
|
+
// `public` means "readable through the public map", not "read by a browser".
|
|
38397
38421
|
public: true
|
|
38398
38422
|
},
|
|
38399
38423
|
{
|
|
@@ -38436,14 +38436,38 @@ var FLAG_REGISTRY = [
|
|
|
38436
38436
|
},
|
|
38437
38437
|
{
|
|
38438
38438
|
key: "app-top-nav-shell",
|
|
38439
|
-
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488).
|
|
38439
|
+
description: "Global top-navigation shell redesign (ENG-8478 epic / ENG-8486). When ON, the dashboard chrome replaces the left sidebar with a top navigation bar (team switcher \xB7 destinations \xB7 command palette + account) so the left side is free for an agent-scoped rail; when OFF, the existing left sidebar is unchanged. Additive layout gate \u2014 no data-model change. Composes independently with agent-unified-screen (the two flags are reconciled in ENG-8488). NO LONGER DARK: ENG-9831 cutover step 1 flipped the default to true, so an org with no override now gets the top-nav shell. The key survives only until cutover step 2 deletes it.",
|
|
38440
38440
|
flagType: "boolean",
|
|
38441
|
-
//
|
|
38442
|
-
//
|
|
38443
|
-
|
|
38444
|
-
//
|
|
38445
|
-
//
|
|
38446
|
-
//
|
|
38441
|
+
// ENG-9831 (cutover step 1): flipped `false` -> `true`. The comment this
|
|
38442
|
+
// replaces called `false` the fail-closed direction — "the shell that ships
|
|
38443
|
+
// today". That was true while the sidebar was the shell that shipped; the
|
|
38444
|
+
// top nav is now the one being cut over to, so `false` points at the layout
|
|
38445
|
+
// being retired. The old rationale is recorded rather than deleted because
|
|
38446
|
+
// it was correct under a premise that has expired.
|
|
38447
|
+
//
|
|
38448
|
+
// NOTE the same split as ninjafy-brand below: this value is consulted by the
|
|
38449
|
+
// API evaluator when building the `GET /flags` map for an org with no
|
|
38450
|
+
// override. It is NOT the fallback the webapp uses on an outage — that is
|
|
38451
|
+
// the argument passed at the call site. Four call sites carry `true` to
|
|
38452
|
+
// match: (dashboard)/layout.tsx and the three legacy redirect hubs
|
|
38453
|
+
// (settings, team, organization/settings). Flipping the registry alone
|
|
38454
|
+
// leaves the cutover half-applied.
|
|
38455
|
+
defaultValue: true,
|
|
38456
|
+
// ENG-9831: NO LONGER read client-side. It was — via usePublicBooleanFlag in
|
|
38457
|
+
// sidebar.tsx (twice) and top-nav.tsx — and that is precisely what this
|
|
38458
|
+
// slice removed: a client hook starts at its default and corrects after an
|
|
38459
|
+
// async GET /flags, so the console painted the sidebar and then replaced the
|
|
38460
|
+
// WHOLE dashboard chrome after hydration. The ENG-8858/ENG-9227 flash at
|
|
38461
|
+
// layout scale. It is now resolved once server-side in (dashboard)/
|
|
38462
|
+
// layout.tsx and passed to both shells as a required prop.
|
|
38463
|
+
//
|
|
38464
|
+
// `public` MUST STAY ANYWAY — the same trap documented on ninjafy-brand.
|
|
38465
|
+
// getPublicBooleanFlagServer resolves against the very same public-filtered
|
|
38466
|
+
// `GET /flags` the browser uses (routes/flags.ts filters to
|
|
38467
|
+
// listPublicFlagKeys()). Drop `public` and the key is simply absent from the
|
|
38468
|
+
// map, the server helper falls through to its default forever, and every org
|
|
38469
|
+
// silently gets whatever that default happens to be with no error anywhere.
|
|
38470
|
+
// `public` means "readable through the public map", not "read by a browser".
|
|
38447
38471
|
public: true
|
|
38448
38472
|
},
|
|
38449
38473
|
{
|
|
@@ -62,8 +62,8 @@ import {
|
|
|
62
62
|
writeDirectChatSessionState,
|
|
63
63
|
writeEgressAllowlist,
|
|
64
64
|
writePersistentClaudeWrapper
|
|
65
|
-
} from "./chunk-
|
|
66
|
-
import "./chunk-
|
|
65
|
+
} from "./chunk-RAEBKUW2.js";
|
|
66
|
+
import "./chunk-5464FJVN.js";
|
|
67
67
|
import "./chunk-XWVM4KPK.js";
|
|
68
68
|
export {
|
|
69
69
|
CLAUDE_HOST_WIDE,
|
|
@@ -130,4 +130,4 @@ export {
|
|
|
130
130
|
writeEgressAllowlist,
|
|
131
131
|
writePersistentClaudeWrapper
|
|
132
132
|
};
|
|
133
|
-
//# sourceMappingURL=persistent-session-
|
|
133
|
+
//# sourceMappingURL=persistent-session-5HSYQBF7.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RAEBKUW2.js";
|
|
4
|
+
import "./chunk-5464FJVN.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -764,4 +764,4 @@ export {
|
|
|
764
764
|
readAndResetSlackReplyBindingClassifications,
|
|
765
765
|
readAndResetSlackReplyTargetClassifications
|
|
766
766
|
};
|
|
767
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
767
|
+
//# sourceMappingURL=responsiveness-probe-ZSB3DLLI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5464FJVN.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-J7SQAYRR.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|