@integrity-labs/agt-cli 0.28.1162 → 0.28.1164
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 +6 -6
- package/dist/{chunk-JMA2UNUS.js → chunk-6SIOI32E.js} +5 -5
- package/dist/{chunk-QRFACFSH.js → chunk-CHTG2VLG.js} +3 -3
- package/dist/{chunk-D55RMQTG.js → chunk-DR7PAO2Y.js} +2 -2
- package/dist/{chunk-D55RMQTG.js.map → chunk-DR7PAO2Y.js.map} +1 -1
- package/dist/{chunk-CXEP3UC7.js → chunk-J3LCXQGY.js} +2 -2
- package/dist/{chunk-3DISC7BU.js → chunk-WPNCOXIB.js} +2 -2
- package/dist/{claude-code-updater-DXLSLDHW.js → claude-code-updater-L7C3DZJ3.js} +3 -3
- package/dist/{claude-pair-runtime-BCZPQPWP.js → claude-pair-runtime-EQVMQMTF.js} +3 -3
- package/dist/lib/manager-worker.js +19 -19
- package/dist/mcp/direct-chat-channel.js +75 -21
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/origami.js +1 -1
- package/dist/mcp/slack-channel.js +1 -1
- package/dist/mcp/telegram-channel.js +1 -1
- package/dist/{persistent-session-XCV7VQWS.js → persistent-session-BP3EXMFT.js} +4 -4
- package/dist/{responsiveness-probe-WZVS3U5H.js → responsiveness-probe-ASP2NY2K.js} +4 -4
- package/dist/{session-auth-dead-AR7G7XZZ.js → session-auth-dead-KR2CABKC.js} +3 -3
- package/package.json +1 -1
- /package/dist/{chunk-JMA2UNUS.js.map → chunk-6SIOI32E.js.map} +0 -0
- /package/dist/{chunk-QRFACFSH.js.map → chunk-CHTG2VLG.js.map} +0 -0
- /package/dist/{chunk-CXEP3UC7.js.map → chunk-J3LCXQGY.js.map} +0 -0
- /package/dist/{chunk-3DISC7BU.js.map → chunk-WPNCOXIB.js.map} +0 -0
- /package/dist/{claude-code-updater-DXLSLDHW.js.map → claude-code-updater-L7C3DZJ3.js.map} +0 -0
- /package/dist/{claude-pair-runtime-BCZPQPWP.js.map → claude-pair-runtime-EQVMQMTF.js.map} +0 -0
- /package/dist/{persistent-session-XCV7VQWS.js.map → persistent-session-BP3EXMFT.js.map} +0 -0
- /package/dist/{responsiveness-probe-WZVS3U5H.js.map → responsiveness-probe-ASP2NY2K.js.map} +0 -0
- /package/dist/{session-auth-dead-AR7G7XZZ.js.map → session-auth-dead-KR2CABKC.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
encodeClaudeProjectPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DR7PAO2Y.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/daily-session.ts
|
|
6
6
|
import { randomUUID } from "crypto";
|
|
@@ -235,4 +235,4 @@ export {
|
|
|
235
235
|
peekCurrentSession,
|
|
236
236
|
readDailySessionPin
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-J3LCXQGY.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-XWVM4KPK.js";
|
|
5
5
|
import {
|
|
6
6
|
FORCED_UPDATE_HARD_DEADLINE_MS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DR7PAO2Y.js";
|
|
8
8
|
import {
|
|
9
9
|
effectiveClaudeJsonPath
|
|
10
10
|
} from "./chunk-EL5MWGGH.js";
|
|
@@ -714,4 +714,4 @@ export {
|
|
|
714
714
|
probeClaudeInstalls,
|
|
715
715
|
maybeUpdateClaudeCode
|
|
716
716
|
};
|
|
717
|
-
//# sourceMappingURL=chunk-
|
|
717
|
+
//# sourceMappingURL=chunk-WPNCOXIB.js.map
|
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
probeClaudeInstalls,
|
|
13
13
|
readsAsNativeInstall,
|
|
14
14
|
shouldRunClaudeCodeUpdater
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WPNCOXIB.js";
|
|
16
16
|
import "./chunk-XWVM4KPK.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-DR7PAO2Y.js";
|
|
18
18
|
import "./chunk-EL5MWGGH.js";
|
|
19
19
|
import "./chunk-DGUM43GV.js";
|
|
20
20
|
export {
|
|
@@ -32,4 +32,4 @@ export {
|
|
|
32
32
|
readsAsNativeInstall,
|
|
33
33
|
shouldRunClaudeCodeUpdater
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=claude-code-updater-
|
|
35
|
+
//# sourceMappingURL=claude-code-updater-L7C3DZJ3.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
redactPaneFrame,
|
|
10
10
|
sanitizeTerminalFrame
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-DR7PAO2Y.js";
|
|
12
12
|
import {
|
|
13
13
|
CLAUDE_CONFIG_DIR_ENV,
|
|
14
14
|
claudeConfigDirFor,
|
|
@@ -321,7 +321,7 @@ async function spawnPairSession(session) {
|
|
|
321
321
|
return { ok: true };
|
|
322
322
|
} catch {
|
|
323
323
|
}
|
|
324
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
324
|
+
const { resolveClaudeBinary } = await import("./persistent-session-BP3EXMFT.js");
|
|
325
325
|
const claudeBin = resolveClaudeBinary();
|
|
326
326
|
const pairEnv = {
|
|
327
327
|
...process.env,
|
|
@@ -836,4 +836,4 @@ export {
|
|
|
836
836
|
startClaudePair,
|
|
837
837
|
submitClaudePairCode
|
|
838
838
|
};
|
|
839
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
839
|
+
//# sourceMappingURL=claude-pair-runtime-EQVMQMTF.js.map
|
|
@@ -77,7 +77,7 @@ import {
|
|
|
77
77
|
setConfigHash,
|
|
78
78
|
shellGuard,
|
|
79
79
|
tripClass
|
|
80
|
-
} from "../chunk-
|
|
80
|
+
} from "../chunk-6SIOI32E.js";
|
|
81
81
|
import {
|
|
82
82
|
CLAUDE_CODE_SECURITY_FLOOR,
|
|
83
83
|
SELF_UPDATE_TIMEOUTS,
|
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
runSafeCleanup,
|
|
91
91
|
tightestDiskStat,
|
|
92
92
|
withPackageCacheLock
|
|
93
|
-
} from "../chunk-
|
|
93
|
+
} from "../chunk-WPNCOXIB.js";
|
|
94
94
|
import {
|
|
95
95
|
getProjectDir as getProjectDir2,
|
|
96
96
|
getReadyTasks,
|
|
@@ -177,7 +177,7 @@ import {
|
|
|
177
177
|
webFetchBaselineValue,
|
|
178
178
|
webFetchRestartNeeded,
|
|
179
179
|
writeEgressAllowlist
|
|
180
|
-
} from "../chunk-
|
|
180
|
+
} from "../chunk-CHTG2VLG.js";
|
|
181
181
|
import {
|
|
182
182
|
isAgentIdle,
|
|
183
183
|
isStaleForToday,
|
|
@@ -186,7 +186,7 @@ import {
|
|
|
186
186
|
sessionTranscriptDir,
|
|
187
187
|
subagentActivityAgeSeconds,
|
|
188
188
|
transcriptActivityAgeSeconds
|
|
189
|
-
} from "../chunk-
|
|
189
|
+
} from "../chunk-J3LCXQGY.js";
|
|
190
190
|
import {
|
|
191
191
|
classifyUnanswerablePane,
|
|
192
192
|
focusedConfirmDialogBlock,
|
|
@@ -304,7 +304,7 @@ import {
|
|
|
304
304
|
serializeAccountEnforcementMarker,
|
|
305
305
|
stabiliseResetInstant,
|
|
306
306
|
sumTranscriptUsageInWindow
|
|
307
|
-
} from "../chunk-
|
|
307
|
+
} from "../chunk-DR7PAO2Y.js";
|
|
308
308
|
import {
|
|
309
309
|
CLAUDE_CONFIG_DIR_ENV,
|
|
310
310
|
claudeConfigDirFor,
|
|
@@ -15082,7 +15082,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
15082
15082
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
15083
15083
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
15084
15084
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
15085
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
15085
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-ASP2NY2K.js");
|
|
15086
15086
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
15087
15087
|
if (newest === null) return null;
|
|
15088
15088
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -15874,7 +15874,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
15874
15874
|
var lastVersionCheckAt = 0;
|
|
15875
15875
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
15876
15876
|
var lastResponsivenessProbeAt = 0;
|
|
15877
|
-
var agtCliVersion = true ? "0.28.
|
|
15877
|
+
var agtCliVersion = true ? "0.28.1164" : "dev";
|
|
15878
15878
|
function resolveBrewPath(execFileSync3) {
|
|
15879
15879
|
try {
|
|
15880
15880
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -17674,7 +17674,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
17674
17674
|
if (codeNames.length === 0) return;
|
|
17675
17675
|
void (async () => {
|
|
17676
17676
|
try {
|
|
17677
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17677
|
+
const { collectDiagnostics } = await import("../persistent-session-BP3EXMFT.js");
|
|
17678
17678
|
await api.post("/host/heartbeat", {
|
|
17679
17679
|
host_id: hostId,
|
|
17680
17680
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -17817,7 +17817,7 @@ async function pollCycleInner() {
|
|
|
17817
17817
|
}
|
|
17818
17818
|
try {
|
|
17819
17819
|
const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
|
|
17820
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17820
|
+
const { collectDiagnostics } = await import("../persistent-session-BP3EXMFT.js");
|
|
17821
17821
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
17822
17822
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
|
|
17823
17823
|
let tailscaleHostname;
|
|
@@ -18017,7 +18017,7 @@ async function pollCycleInner() {
|
|
|
18017
18017
|
setConfigHash(hbResp?.config_hash ?? null);
|
|
18018
18018
|
try {
|
|
18019
18019
|
const desiredClaudeCodeVersion = hbResp?.desired_claude_code_version?.trim();
|
|
18020
|
-
const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-
|
|
18020
|
+
const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-L7C3DZJ3.js");
|
|
18021
18021
|
claudeUpdaterInFlight = true;
|
|
18022
18022
|
if (desiredClaudeCodeVersion && (claudePairLoop.busy || claudePairingInProgress())) {
|
|
18023
18023
|
log(
|
|
@@ -18049,7 +18049,7 @@ async function pollCycleInner() {
|
|
|
18049
18049
|
collectPanelessActivityProbes,
|
|
18050
18050
|
getResponsivenessIntervalMs,
|
|
18051
18051
|
occupancyQualificationClassifications
|
|
18052
|
-
} = await import("../responsiveness-probe-
|
|
18052
|
+
} = await import("../responsiveness-probe-ASP2NY2K.js");
|
|
18053
18053
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
18054
18054
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
18055
18055
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -18166,7 +18166,7 @@ async function pollCycleInner() {
|
|
|
18166
18166
|
collectResponsivenessProbes,
|
|
18167
18167
|
livePendingInboundOldestAgeSeconds,
|
|
18168
18168
|
parkPendingInbound
|
|
18169
|
-
} = await import("../responsiveness-probe-
|
|
18169
|
+
} = await import("../responsiveness-probe-ASP2NY2K.js");
|
|
18170
18170
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
|
|
18171
18171
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
18172
18172
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -18452,7 +18452,7 @@ async function pollCycleInner() {
|
|
|
18452
18452
|
}
|
|
18453
18453
|
}
|
|
18454
18454
|
);
|
|
18455
|
-
const { parkPendingInbound } = await import("../responsiveness-probe-
|
|
18455
|
+
const { parkPendingInbound } = await import("../responsiveness-probe-ASP2NY2K.js");
|
|
18456
18456
|
const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
|
|
18457
18457
|
paneFatalStreak.delete(codeName);
|
|
18458
18458
|
paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
|
|
@@ -18483,7 +18483,7 @@ async function pollCycleInner() {
|
|
|
18483
18483
|
TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
|
|
18484
18484
|
bindSourceEscalations
|
|
18485
18485
|
} = await import("../transcript-mount-health-OHE6IVJV.js");
|
|
18486
|
-
const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-
|
|
18486
|
+
const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-BP3EXMFT.js");
|
|
18487
18487
|
const mountConfig = resolveTranscriptMountConfig();
|
|
18488
18488
|
const liveAgents = agentState.persistentSessionAgents;
|
|
18489
18489
|
for (const tracked of [
|
|
@@ -18648,7 +18648,7 @@ async function pollCycleInner() {
|
|
|
18648
18648
|
}
|
|
18649
18649
|
try {
|
|
18650
18650
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
|
|
18651
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
18651
|
+
const { probeSessionAuth } = await import("../session-auth-dead-KR2CABKC.js");
|
|
18652
18652
|
const observations = [];
|
|
18653
18653
|
const pendingCacheCommits = [];
|
|
18654
18654
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -23316,7 +23316,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
23316
23316
|
try {
|
|
23317
23317
|
const freshId = rotateSessionForWedge(codeName);
|
|
23318
23318
|
consecutiveWedgeCycles.delete(codeName);
|
|
23319
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
23319
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-ASP2NY2K.js");
|
|
23320
23320
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
23321
23321
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
23322
23322
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -23359,7 +23359,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
23359
23359
|
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}`));
|
|
23360
23360
|
void (async () => {
|
|
23361
23361
|
try {
|
|
23362
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
23362
|
+
const { collectDiagnostics } = await import("../persistent-session-BP3EXMFT.js");
|
|
23363
23363
|
await api.post("/host/heartbeat", {
|
|
23364
23364
|
host_id: hostId,
|
|
23365
23365
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -23410,7 +23410,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
23410
23410
|
}
|
|
23411
23411
|
try {
|
|
23412
23412
|
const hostId = await getHostId();
|
|
23413
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
23413
|
+
const { collectDiagnostics } = await import("../persistent-session-BP3EXMFT.js");
|
|
23414
23414
|
await api.post("/host/heartbeat", {
|
|
23415
23415
|
host_id: hostId,
|
|
23416
23416
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -24104,7 +24104,7 @@ async function processClaudePairSessions(agents) {
|
|
|
24104
24104
|
snapshotPairConfig,
|
|
24105
24105
|
// ENG-11659: result -> report body + the manager.log line that records it.
|
|
24106
24106
|
planPairStartReport
|
|
24107
|
-
} = await import("../claude-pair-runtime-
|
|
24107
|
+
} = await import("../claude-pair-runtime-EQVMQMTF.js");
|
|
24108
24108
|
const { resetClaudeSignin, describeSigninResetForLog, describeSigninResetFailure } = await import("../claude-signin-reset-EF3UO5IK.js");
|
|
24109
24109
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
24110
24110
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
@@ -19448,10 +19448,10 @@ var require_readdirp = __commonJS({
|
|
|
19448
19448
|
}
|
|
19449
19449
|
async _formatEntry(dirent, path) {
|
|
19450
19450
|
let entry;
|
|
19451
|
-
const
|
|
19451
|
+
const basename3 = this._isDirent ? dirent.name : dirent;
|
|
19452
19452
|
try {
|
|
19453
|
-
const fullPath = (0, node_path_1.resolve)((0, node_path_1.join)(path,
|
|
19454
|
-
entry = { path: (0, node_path_1.relative)(this._root, fullPath), fullPath, basename:
|
|
19453
|
+
const fullPath = (0, node_path_1.resolve)((0, node_path_1.join)(path, basename3));
|
|
19454
|
+
entry = { path: (0, node_path_1.relative)(this._root, fullPath), fullPath, basename: basename3 };
|
|
19455
19455
|
entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
|
|
19456
19456
|
} catch (err) {
|
|
19457
19457
|
this._onError(err);
|
|
@@ -20008,9 +20008,9 @@ var require_handler = __commonJS({
|
|
|
20008
20008
|
_watchWithNodeFs(path, listener) {
|
|
20009
20009
|
const opts = this.fsw.options;
|
|
20010
20010
|
const directory = sysPath.dirname(path);
|
|
20011
|
-
const
|
|
20011
|
+
const basename3 = sysPath.basename(path);
|
|
20012
20012
|
const parent = this.fsw._getWatchedDir(directory);
|
|
20013
|
-
parent.add(
|
|
20013
|
+
parent.add(basename3);
|
|
20014
20014
|
const absolutePath = sysPath.resolve(path);
|
|
20015
20015
|
const options = {
|
|
20016
20016
|
persistent: opts.persistent
|
|
@@ -20020,7 +20020,7 @@ var require_handler = __commonJS({
|
|
|
20020
20020
|
let closer;
|
|
20021
20021
|
if (opts.usePolling) {
|
|
20022
20022
|
const enableBin = opts.interval !== opts.binaryInterval;
|
|
20023
|
-
options.interval = enableBin && isBinaryPath(
|
|
20023
|
+
options.interval = enableBin && isBinaryPath(basename3) ? opts.binaryInterval : opts.interval;
|
|
20024
20024
|
closer = setFsWatchFileListener(path, absolutePath, options, {
|
|
20025
20025
|
listener,
|
|
20026
20026
|
rawEmitter: this.fsw._emitRaw
|
|
@@ -20043,10 +20043,10 @@ var require_handler = __commonJS({
|
|
|
20043
20043
|
return;
|
|
20044
20044
|
}
|
|
20045
20045
|
const dirname4 = sysPath.dirname(file);
|
|
20046
|
-
const
|
|
20046
|
+
const basename3 = sysPath.basename(file);
|
|
20047
20047
|
const parent = this.fsw._getWatchedDir(dirname4);
|
|
20048
20048
|
let prevStats = stats;
|
|
20049
|
-
if (parent.has(
|
|
20049
|
+
if (parent.has(basename3))
|
|
20050
20050
|
return;
|
|
20051
20051
|
const listener = async (path, newStats) => {
|
|
20052
20052
|
if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5))
|
|
@@ -20071,9 +20071,9 @@ var require_handler = __commonJS({
|
|
|
20071
20071
|
prevStats = newStats2;
|
|
20072
20072
|
}
|
|
20073
20073
|
} catch (error2) {
|
|
20074
|
-
this.fsw._remove(dirname4,
|
|
20074
|
+
this.fsw._remove(dirname4, basename3);
|
|
20075
20075
|
}
|
|
20076
|
-
} else if (parent.has(
|
|
20076
|
+
} else if (parent.has(basename3)) {
|
|
20077
20077
|
const at = newStats.atimeMs;
|
|
20078
20078
|
const mt = newStats.mtimeMs;
|
|
20079
20079
|
if (!at || at <= mt || mt !== prevStats.mtimeMs) {
|
|
@@ -45480,7 +45480,7 @@ var FLAG_REGISTRY = [
|
|
|
45480
45480
|
},
|
|
45481
45481
|
{
|
|
45482
45482
|
key: "ninja-lists",
|
|
45483
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "
|
|
45483
|
+
description: 'Apps, formerly Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Apps" nav item, the /apps pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
45484
45484
|
flagType: "boolean",
|
|
45485
45485
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
45486
45486
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -47584,6 +47584,16 @@ function probeAgentSessionCached(codeName, ttlMs = SESSION_PROBE_TTL_MS, now = D
|
|
|
47584
47584
|
}
|
|
47585
47585
|
|
|
47586
47586
|
// src/direct-chat-poll-guard.ts
|
|
47587
|
+
var SAFETY_NET_POLL_MS = 12e4;
|
|
47588
|
+
var DOORBELL_UNWATCHED_POLL_MS = 3e4;
|
|
47589
|
+
function safetyNetIntervalMs(doorbellWatchAttached) {
|
|
47590
|
+
return doorbellWatchAttached ? SAFETY_NET_POLL_MS : DOORBELL_UNWATCHED_POLL_MS;
|
|
47591
|
+
}
|
|
47592
|
+
function doorbellWatchLost(attachedId, currentId) {
|
|
47593
|
+
if (attachedId === null) return false;
|
|
47594
|
+
return currentId !== attachedId;
|
|
47595
|
+
}
|
|
47596
|
+
var POLL_STUCK_MS = 9e4;
|
|
47587
47597
|
function evaluatePollGuard(state, nowMs, stuckMs) {
|
|
47588
47598
|
if (!state.inFlight) return { run: true, stuck: false };
|
|
47589
47599
|
if (state.leaseUntilMs != null && nowMs < state.leaseUntilMs) return { run: false, stuck: false };
|
|
@@ -47640,7 +47650,7 @@ function defaultIsPidAlive(pid) {
|
|
|
47640
47650
|
}
|
|
47641
47651
|
}
|
|
47642
47652
|
function acquireMcpSpawnLock(args) {
|
|
47643
|
-
const { agentDir, basename:
|
|
47653
|
+
const { agentDir, basename: basename3, options = {} } = args;
|
|
47644
47654
|
if (!agentDir) return { kind: "no-agent-dir" };
|
|
47645
47655
|
const isPidAlive = options.isPidAlive ?? defaultIsPidAlive;
|
|
47646
47656
|
const selfPid = options.selfPid ?? process.pid;
|
|
@@ -47648,7 +47658,7 @@ function acquireMcpSpawnLock(args) {
|
|
|
47648
47658
|
const nowMs = options.nowMs ?? (() => Date.now());
|
|
47649
47659
|
const lockMtimeMs = options.lockMtimeMs ?? defaultLockMtimeMs;
|
|
47650
47660
|
const staleMs = options.staleMs ?? STALE_LOCK_MS;
|
|
47651
|
-
const path = join13(agentDir,
|
|
47661
|
+
const path = join13(agentDir, basename3);
|
|
47652
47662
|
const existing = readLockHolder(path);
|
|
47653
47663
|
if (existing) {
|
|
47654
47664
|
if (existing.pid === selfPid) {
|
|
@@ -47728,7 +47738,7 @@ function readLockHolder(path) {
|
|
|
47728
47738
|
|
|
47729
47739
|
// src/direct-chat-channel.ts
|
|
47730
47740
|
import { homedir as homedir5 } from "os";
|
|
47731
|
-
import { join as join17 } from "path";
|
|
47741
|
+
import { basename as basename2, join as join17 } from "path";
|
|
47732
47742
|
import { randomUUID } from "crypto";
|
|
47733
47743
|
import {
|
|
47734
47744
|
watch,
|
|
@@ -55169,8 +55179,6 @@ var DOORBELL_ENABLED = resolveHostBooleanFlag({
|
|
|
55169
55179
|
defaultValue: false
|
|
55170
55180
|
});
|
|
55171
55181
|
var DOORBELL_FILE = "direct-chat-doorbell";
|
|
55172
|
-
var SAFETY_NET_POLL_MS = 3e4;
|
|
55173
|
-
var POLL_STUCK_MS = 9e4;
|
|
55174
55182
|
var pollGuard = { inFlight: false, inFlightSinceMs: null, leaseUntilMs: null };
|
|
55175
55183
|
async function pollOnce(sinceMs) {
|
|
55176
55184
|
const decision = evaluatePollGuard(pollGuard, Date.now(), POLL_STUCK_MS);
|
|
@@ -55193,8 +55201,40 @@ async function pollOnce(sinceMs) {
|
|
|
55193
55201
|
}
|
|
55194
55202
|
}
|
|
55195
55203
|
var doorbellWatcher = null;
|
|
55204
|
+
function dirInode(path) {
|
|
55205
|
+
if (!path) return null;
|
|
55206
|
+
try {
|
|
55207
|
+
const st = statSync4(path);
|
|
55208
|
+
return `${st.dev}:${st.ino}`;
|
|
55209
|
+
} catch {
|
|
55210
|
+
return null;
|
|
55211
|
+
}
|
|
55212
|
+
}
|
|
55196
55213
|
var safetyNetTimer = null;
|
|
55197
55214
|
if (DOORBELL_ENABLED && DIRECT_CHAT_AGENT_DIR) {
|
|
55215
|
+
let safetyNetTick = function() {
|
|
55216
|
+
if (doorbellWatchAttached && doorbellWatchLost(watchedDirIno, dirInode(DIRECT_CHAT_AGENT_DIR))) {
|
|
55217
|
+
degradeDoorbell("the watched directory was removed or replaced");
|
|
55218
|
+
}
|
|
55219
|
+
void pollOnce(sinceMs);
|
|
55220
|
+
}, degradeDoorbell = function(reason) {
|
|
55221
|
+
if (!doorbellWatchAttached) return;
|
|
55222
|
+
doorbellWatchAttached = false;
|
|
55223
|
+
try {
|
|
55224
|
+
doorbellWatcher?.close();
|
|
55225
|
+
} catch {
|
|
55226
|
+
}
|
|
55227
|
+
doorbellWatcher = null;
|
|
55228
|
+
const fallbackMs = safetyNetIntervalMs(false);
|
|
55229
|
+
process.stderr.write(
|
|
55230
|
+
`direct-chat-channel: doorbell watch lost (${reason}) \u2014 falling back to safety-net poll every ${fallbackMs}ms
|
|
55231
|
+
`
|
|
55232
|
+
);
|
|
55233
|
+
if (safetyNetTimer) clearInterval(safetyNetTimer);
|
|
55234
|
+
safetyNetTimer = setInterval(safetyNetTick, fallbackMs);
|
|
55235
|
+
safetyNetTimer.unref?.();
|
|
55236
|
+
};
|
|
55237
|
+
safetyNetTick2 = safetyNetTick, degradeDoorbell2 = degradeDoorbell;
|
|
55198
55238
|
try {
|
|
55199
55239
|
mkdirSync7(DIRECT_CHAT_AGENT_DIR, { recursive: true });
|
|
55200
55240
|
} catch {
|
|
@@ -55216,23 +55256,35 @@ if (DOORBELL_ENABLED && DIRECT_CHAT_AGENT_DIR) {
|
|
|
55216
55256
|
resetDirectChatClaims(DIRECT_CHAT_CLAIMS_PATH);
|
|
55217
55257
|
}
|
|
55218
55258
|
let debounce = null;
|
|
55259
|
+
let doorbellWatchAttached = false;
|
|
55219
55260
|
try {
|
|
55220
|
-
|
|
55261
|
+
const watchedDirName = basename2(DIRECT_CHAT_AGENT_DIR);
|
|
55262
|
+
doorbellWatcher = watch(DIRECT_CHAT_AGENT_DIR, (event, filename) => {
|
|
55263
|
+
if (event === "rename" && filename === watchedDirName) {
|
|
55264
|
+
degradeDoorbell("the watched directory was removed");
|
|
55265
|
+
return;
|
|
55266
|
+
}
|
|
55221
55267
|
if (filename !== DOORBELL_FILE) return;
|
|
55222
55268
|
if (debounce) clearTimeout(debounce);
|
|
55223
55269
|
debounce = setTimeout(() => {
|
|
55224
55270
|
void pollOnce(sinceMs);
|
|
55225
55271
|
}, 50);
|
|
55226
55272
|
});
|
|
55273
|
+
doorbellWatchAttached = true;
|
|
55274
|
+
doorbellWatcher.on("error", (err) => {
|
|
55275
|
+
degradeDoorbell(`watcher error: ${err.message}`);
|
|
55276
|
+
});
|
|
55227
55277
|
} catch (err) {
|
|
55228
55278
|
process.stderr.write(
|
|
55229
|
-
`direct-chat-channel: doorbell watch failed (${err.message}) \u2014 relying on safety-net poll
|
|
55279
|
+
`direct-chat-channel: doorbell watch failed (${err.message}) \u2014 relying on safety-net poll every ${safetyNetIntervalMs(false)}ms
|
|
55230
55280
|
`
|
|
55231
55281
|
);
|
|
55232
55282
|
}
|
|
55283
|
+
const safetyNetMs = safetyNetIntervalMs(doorbellWatchAttached);
|
|
55284
|
+
const watchedDirIno = doorbellWatchAttached ? dirInode(DIRECT_CHAT_AGENT_DIR) : null;
|
|
55233
55285
|
safetyNetTimer = setInterval(() => {
|
|
55234
|
-
|
|
55235
|
-
},
|
|
55286
|
+
safetyNetTick();
|
|
55287
|
+
}, safetyNetMs);
|
|
55236
55288
|
safetyNetTimer.unref?.();
|
|
55237
55289
|
if (sessionState.fresh) {
|
|
55238
55290
|
void runBacklogDrain({
|
|
@@ -55246,7 +55298,7 @@ if (DOORBELL_ENABLED && DIRECT_CHAT_AGENT_DIR) {
|
|
|
55246
55298
|
});
|
|
55247
55299
|
}
|
|
55248
55300
|
process.stderr.write(
|
|
55249
|
-
`direct-chat-channel: Started (agent=${AGT_AGENT_ID}, delivery=doorbell+pull, session=${sessionState.fresh ? "fresh\u2192backlog-drain (unscoped, retried)" : "resumed\u2192new-only"}, new_message_watermark_since=${sinceMs} \u2014 watching ${DOORBELL_FILE}, safety-net ${
|
|
55301
|
+
`direct-chat-channel: Started (agent=${AGT_AGENT_ID}, delivery=doorbell+pull, session=${sessionState.fresh ? "fresh\u2192backlog-drain (unscoped, retried)" : "resumed\u2192new-only"}, new_message_watermark_since=${sinceMs} \u2014 watching ${DOORBELL_FILE}, safety-net ${safetyNetMs}ms)
|
|
55250
55302
|
`
|
|
55251
55303
|
);
|
|
55252
55304
|
} else {
|
|
@@ -55255,6 +55307,8 @@ if (DOORBELL_ENABLED && DIRECT_CHAT_AGENT_DIR) {
|
|
|
55255
55307
|
`
|
|
55256
55308
|
);
|
|
55257
55309
|
}
|
|
55310
|
+
var safetyNetTick2;
|
|
55311
|
+
var degradeDoorbell2;
|
|
55258
55312
|
var progressTickTimer = null;
|
|
55259
55313
|
if (PROGRESS_HEARTBEAT_PATH) {
|
|
55260
55314
|
progressTickTimer = setInterval(() => {
|
package/dist/mcp/index.js
CHANGED
|
@@ -31077,7 +31077,7 @@ var FLAG_REGISTRY = [
|
|
|
31077
31077
|
},
|
|
31078
31078
|
{
|
|
31079
31079
|
key: "ninja-lists",
|
|
31080
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "
|
|
31080
|
+
description: 'Apps, formerly Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Apps" nav item, the /apps pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
31081
31081
|
flagType: "boolean",
|
|
31082
31082
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
31083
31083
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
package/dist/mcp/origami.js
CHANGED
|
@@ -44986,7 +44986,7 @@ var FLAG_REGISTRY = [
|
|
|
44986
44986
|
},
|
|
44987
44987
|
{
|
|
44988
44988
|
key: "ninja-lists",
|
|
44989
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "
|
|
44989
|
+
description: 'Apps, formerly Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Apps" nav item, the /apps pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
44990
44990
|
flagType: "boolean",
|
|
44991
44991
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
44992
44992
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -39813,7 +39813,7 @@ var FLAG_REGISTRY = [
|
|
|
39813
39813
|
},
|
|
39814
39814
|
{
|
|
39815
39815
|
key: "ninja-lists",
|
|
39816
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "
|
|
39816
|
+
description: 'Apps, formerly Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Apps" nav item, the /apps pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
39817
39817
|
flagType: "boolean",
|
|
39818
39818
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
39819
39819
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -40024,7 +40024,7 @@ var FLAG_REGISTRY = [
|
|
|
40024
40024
|
},
|
|
40025
40025
|
{
|
|
40026
40026
|
key: "ninja-lists",
|
|
40027
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "
|
|
40027
|
+
description: 'Apps, formerly Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Apps" nav item, the /apps pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
40028
40028
|
flagType: "boolean",
|
|
40029
40029
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
40030
40030
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -68,12 +68,12 @@ import {
|
|
|
68
68
|
writeDirectChatSessionState,
|
|
69
69
|
writeEgressAllowlist,
|
|
70
70
|
writePersistentClaudeWrapper
|
|
71
|
-
} from "./chunk-
|
|
72
|
-
import "./chunk-
|
|
71
|
+
} from "./chunk-CHTG2VLG.js";
|
|
72
|
+
import "./chunk-J3LCXQGY.js";
|
|
73
73
|
import "./chunk-B6UYVEMD.js";
|
|
74
74
|
import "./chunk-OAWK4OBN.js";
|
|
75
75
|
import "./chunk-XWVM4KPK.js";
|
|
76
|
-
import "./chunk-
|
|
76
|
+
import "./chunk-DR7PAO2Y.js";
|
|
77
77
|
import "./chunk-EL5MWGGH.js";
|
|
78
78
|
import "./chunk-DGUM43GV.js";
|
|
79
79
|
export {
|
|
@@ -147,4 +147,4 @@ export {
|
|
|
147
147
|
writeEgressAllowlist,
|
|
148
148
|
writePersistentClaudeWrapper
|
|
149
149
|
};
|
|
150
|
-
//# sourceMappingURL=persistent-session-
|
|
150
|
+
//# sourceMappingURL=persistent-session-BP3EXMFT.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-CHTG2VLG.js";
|
|
4
|
+
import "./chunk-J3LCXQGY.js";
|
|
5
5
|
import "./chunk-B6UYVEMD.js";
|
|
6
6
|
import "./chunk-OAWK4OBN.js";
|
|
7
7
|
import "./chunk-XWVM4KPK.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-DR7PAO2Y.js";
|
|
9
9
|
import "./chunk-EL5MWGGH.js";
|
|
10
10
|
import "./chunk-DGUM43GV.js";
|
|
11
11
|
|
|
@@ -804,4 +804,4 @@ export {
|
|
|
804
804
|
readAndResetSlackReplyBindingClassifications,
|
|
805
805
|
readAndResetSlackReplyTargetClassifications
|
|
806
806
|
};
|
|
807
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
807
|
+
//# sourceMappingURL=responsiveness-probe-ASP2NY2K.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-J3LCXQGY.js";
|
|
4
|
+
import "./chunk-DR7PAO2Y.js";
|
|
5
5
|
import "./chunk-DGUM43GV.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/session-auth-dead.ts
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
decideSessionAuthState,
|
|
206
206
|
probeSessionAuth
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=session-auth-dead-
|
|
208
|
+
//# sourceMappingURL=session-auth-dead-KR2CABKC.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|