@integrity-labs/agt-cli 0.28.652 → 0.28.654
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-HRMF6VUK.js → chunk-6KCM6UPT.js} +4 -4
- package/dist/chunk-6KCM6UPT.js.map +1 -0
- package/dist/{chunk-6PR2K3XB.js → chunk-TUG3MPJW.js} +4 -4
- package/dist/{chunk-E26EKDFP.js → chunk-XGTAGSBI.js} +2 -2
- package/dist/{claude-pair-runtime-E6BFNZUV.js → claude-pair-runtime-IK66PNDU.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +3 -3
- package/dist/mcp/index.js +57 -33
- package/dist/mcp/origami.js +3 -3
- package/dist/mcp/slack-channel.js +3 -3
- package/dist/mcp/telegram-channel.js +3 -3
- package/dist/{persistent-session-XXP4NGEP.js → persistent-session-3O72XXK5.js} +3 -3
- package/dist/{responsiveness-probe-QSJ263ZW.js → responsiveness-probe-D4OHFUWH.js} +3 -3
- package/dist/{session-auth-dead-HHZT5KIM.js → session-auth-dead-T3EAAOKZ.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-HRMF6VUK.js.map +0 -1
- /package/dist/{chunk-6PR2K3XB.js.map → chunk-TUG3MPJW.js.map} +0 -0
- /package/dist/{chunk-E26EKDFP.js.map → chunk-XGTAGSBI.js.map} +0 -0
- /package/dist/{claude-pair-runtime-E6BFNZUV.js.map → claude-pair-runtime-IK66PNDU.js.map} +0 -0
- /package/dist/{persistent-session-XXP4NGEP.js.map → persistent-session-3O72XXK5.js.map} +0 -0
- /package/dist/{responsiveness-probe-QSJ263ZW.js.map → responsiveness-probe-D4OHFUWH.js.map} +0 -0
- /package/dist/{session-auth-dead-HHZT5KIM.js.map → session-auth-dead-T3EAAOKZ.js.map} +0 -0
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
isolationMode,
|
|
9
9
|
log,
|
|
10
10
|
parseEnvIntegrations
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XGTAGSBI.js";
|
|
12
12
|
import {
|
|
13
13
|
BIND_FAILURE_QUARANTINE_THRESHOLD,
|
|
14
14
|
INTEGRATIONS_SECTION_END,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
resolveConnectivityProbe,
|
|
56
56
|
worseConnectivityOutcome,
|
|
57
57
|
wrapScheduledTaskPrompt
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-6KCM6UPT.js";
|
|
59
59
|
import {
|
|
60
60
|
parsePsRows
|
|
61
61
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -6073,7 +6073,7 @@ function exchangeFailureKind(err) {
|
|
|
6073
6073
|
}
|
|
6074
6074
|
|
|
6075
6075
|
// src/lib/api-client.ts
|
|
6076
|
-
var agtCliVersion = true ? "0.28.
|
|
6076
|
+
var agtCliVersion = true ? "0.28.654" : "dev";
|
|
6077
6077
|
var lastConfigHash = null;
|
|
6078
6078
|
function setConfigHash(hash) {
|
|
6079
6079
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -9815,4 +9815,4 @@ export {
|
|
|
9815
9815
|
managerInstallSystemUnitCommand,
|
|
9816
9816
|
managerUninstallSystemUnitCommand
|
|
9817
9817
|
};
|
|
9818
|
-
//# sourceMappingURL=chunk-
|
|
9818
|
+
//# sourceMappingURL=chunk-TUG3MPJW.js.map
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
rotateDailySession,
|
|
17
17
|
sessionFileExists,
|
|
18
18
|
todayLocalIso
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-6KCM6UPT.js";
|
|
20
20
|
import {
|
|
21
21
|
reapOrphanChannelMcps
|
|
22
22
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -4322,4 +4322,4 @@ export {
|
|
|
4322
4322
|
stopAllSessionsAndWait,
|
|
4323
4323
|
getProjectDir
|
|
4324
4324
|
};
|
|
4325
|
-
//# sourceMappingURL=chunk-
|
|
4325
|
+
//# sourceMappingURL=chunk-XGTAGSBI.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-3O72XXK5.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-IK66PNDU.js.map
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
safeWriteJsonAtomic,
|
|
56
56
|
setConfigHash,
|
|
57
57
|
tripClass
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-TUG3MPJW.js";
|
|
59
59
|
import {
|
|
60
60
|
getProjectDir as getProjectDir2,
|
|
61
61
|
getReadyTasks,
|
|
@@ -111,7 +111,7 @@ import {
|
|
|
111
111
|
takeZombieDetection,
|
|
112
112
|
toOpencodeModel,
|
|
113
113
|
writeEgressAllowlist
|
|
114
|
-
} from "../chunk-
|
|
114
|
+
} from "../chunk-XGTAGSBI.js";
|
|
115
115
|
import {
|
|
116
116
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
117
117
|
AnchorSessionClient,
|
|
@@ -192,7 +192,7 @@ import {
|
|
|
192
192
|
subagentActivityAgeSeconds,
|
|
193
193
|
sumTranscriptUsageInWindow,
|
|
194
194
|
transcriptActivityAgeSeconds
|
|
195
|
-
} from "../chunk-
|
|
195
|
+
} from "../chunk-6KCM6UPT.js";
|
|
196
196
|
import {
|
|
197
197
|
reapOrphanChannelMcps
|
|
198
198
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -11609,7 +11609,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
11609
11609
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
11610
11610
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
11611
11611
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
11612
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
11612
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-D4OHFUWH.js");
|
|
11613
11613
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
11614
11614
|
if (newest === null) return null;
|
|
11615
11615
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -12252,7 +12252,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
12252
12252
|
var lastVersionCheckAt = 0;
|
|
12253
12253
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
12254
12254
|
var lastResponsivenessProbeAt = 0;
|
|
12255
|
-
var agtCliVersion = true ? "0.28.
|
|
12255
|
+
var agtCliVersion = true ? "0.28.654" : "dev";
|
|
12256
12256
|
function resolveBrewPath(execFileSync3) {
|
|
12257
12257
|
try {
|
|
12258
12258
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -13560,7 +13560,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
13560
13560
|
if (codeNames.length === 0) return;
|
|
13561
13561
|
void (async () => {
|
|
13562
13562
|
try {
|
|
13563
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13563
|
+
const { collectDiagnostics } = await import("../persistent-session-3O72XXK5.js");
|
|
13564
13564
|
await api.post("/host/heartbeat", {
|
|
13565
13565
|
host_id: hostId,
|
|
13566
13566
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -13676,7 +13676,7 @@ async function pollCycleInner() {
|
|
|
13676
13676
|
}
|
|
13677
13677
|
try {
|
|
13678
13678
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
13679
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13679
|
+
const { collectDiagnostics } = await import("../persistent-session-3O72XXK5.js");
|
|
13680
13680
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
13681
13681
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
|
|
13682
13682
|
let tailscaleHostname;
|
|
@@ -13799,7 +13799,7 @@ async function pollCycleInner() {
|
|
|
13799
13799
|
collectPanelessActivityProbes,
|
|
13800
13800
|
getResponsivenessIntervalMs,
|
|
13801
13801
|
occupancyQualificationClassifications
|
|
13802
|
-
} = await import("../responsiveness-probe-
|
|
13802
|
+
} = await import("../responsiveness-probe-D4OHFUWH.js");
|
|
13803
13803
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
13804
13804
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
13805
13805
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -13909,7 +13909,7 @@ async function pollCycleInner() {
|
|
|
13909
13909
|
collectResponsivenessProbes,
|
|
13910
13910
|
livePendingInboundOldestAgeSeconds,
|
|
13911
13911
|
parkPendingInbound
|
|
13912
|
-
} = await import("../responsiveness-probe-
|
|
13912
|
+
} = await import("../responsiveness-probe-D4OHFUWH.js");
|
|
13913
13913
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
13914
13914
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
13915
13915
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -14065,7 +14065,7 @@ async function pollCycleInner() {
|
|
|
14065
14065
|
}
|
|
14066
14066
|
try {
|
|
14067
14067
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
14068
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
14068
|
+
const { probeSessionAuth } = await import("../session-auth-dead-T3EAAOKZ.js");
|
|
14069
14069
|
const observations = [];
|
|
14070
14070
|
const pendingCacheCommits = [];
|
|
14071
14071
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -17698,7 +17698,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
17698
17698
|
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}`));
|
|
17699
17699
|
void (async () => {
|
|
17700
17700
|
try {
|
|
17701
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17701
|
+
const { collectDiagnostics } = await import("../persistent-session-3O72XXK5.js");
|
|
17702
17702
|
await api.post("/host/heartbeat", {
|
|
17703
17703
|
host_id: hostId,
|
|
17704
17704
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -17749,7 +17749,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
17749
17749
|
}
|
|
17750
17750
|
try {
|
|
17751
17751
|
const hostId = await getHostId();
|
|
17752
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17752
|
+
const { collectDiagnostics } = await import("../persistent-session-3O72XXK5.js");
|
|
17753
17753
|
await api.post("/host/heartbeat", {
|
|
17754
17754
|
host_id: hostId,
|
|
17755
17755
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -18346,7 +18346,7 @@ async function processClaudePairSessions(agents) {
|
|
|
18346
18346
|
killPairSession,
|
|
18347
18347
|
pairTmuxSession,
|
|
18348
18348
|
finalizeClaudePairOnboarding
|
|
18349
|
-
} = await import("../claude-pair-runtime-
|
|
18349
|
+
} = await import("../claude-pair-runtime-IK66PNDU.js");
|
|
18350
18350
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
18351
18351
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
18352
18352
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -33926,7 +33926,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
33926
33926
|
}
|
|
33927
33927
|
},
|
|
33928
33928
|
{
|
|
33929
|
-
//
|
|
33929
|
+
// Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
|
|
33930
33930
|
// delivered to an agent as a tag-granted note the agent reads and summarises.
|
|
33931
33931
|
//
|
|
33932
33932
|
// No `installable` here, on purpose: ninjafy-notes is a Direct-HTTP SEED
|
|
@@ -33960,9 +33960,9 @@ var INTEGRATION_REGISTRY = [
|
|
|
33960
33960
|
// first integration to need `pricing: 'included'`, which is why that value
|
|
33961
33961
|
// now exists.
|
|
33962
33962
|
id: "ninjafy-notes",
|
|
33963
|
-
name: "
|
|
33963
|
+
name: "Ninja Notes",
|
|
33964
33964
|
category: "workspace-productivity",
|
|
33965
|
-
description: "Meeting notes captured on your Mac and sent to an agent.
|
|
33965
|
+
description: "Meeting notes captured on your Mac and sent to an agent. Ninja Notes records and transcribes a meeting on-device \u2014 the audio never leaves your machine \u2014 then hands the transcript to the agents you choose, which read it with your organization's context and write their own summary. Notes are private by default; sending one to an agent is the only thing that grants access.",
|
|
33966
33966
|
supported_auth_types: ["none"],
|
|
33967
33967
|
capabilities: [
|
|
33968
33968
|
{
|
package/dist/mcp/index.js
CHANGED
|
@@ -22397,10 +22397,32 @@ ${first.duplicate_hint}` : added;
|
|
|
22397
22397
|
import { homedir as homedir3, tmpdir } from "os";
|
|
22398
22398
|
import { basename, isAbsolute, join as join3, resolve as pathResolve, sep } from "path";
|
|
22399
22399
|
|
|
22400
|
-
// src/
|
|
22401
|
-
var SKILL_BODY_PATH_TOOLS = /* @__PURE__ */ new Set(["skill_create", "skill_update"]);
|
|
22400
|
+
// src/host-file-path.ts
|
|
22402
22401
|
var SKILL_BODY_PATH_MAX_BYTES = 512 * 1024;
|
|
22403
|
-
|
|
22402
|
+
var AGT_LIVE_CONTENT_PATH_MAX_BYTES = 2 * 1024 * 1024;
|
|
22403
|
+
var HOST_FILE_PATH_TOOLS = /* @__PURE__ */ new Map([
|
|
22404
|
+
[
|
|
22405
|
+
"skill_create",
|
|
22406
|
+
{ pathArg: "body_path", targetArg: "body", maxBytes: SKILL_BODY_PATH_MAX_BYTES, label: "a skill body" }
|
|
22407
|
+
],
|
|
22408
|
+
[
|
|
22409
|
+
"skill_update",
|
|
22410
|
+
{ pathArg: "body_path", targetArg: "body", maxBytes: SKILL_BODY_PATH_MAX_BYTES, label: "a skill body" }
|
|
22411
|
+
],
|
|
22412
|
+
[
|
|
22413
|
+
"agt_live_publish",
|
|
22414
|
+
{
|
|
22415
|
+
pathArg: "content_path",
|
|
22416
|
+
targetArg: "content",
|
|
22417
|
+
maxBytes: AGT_LIVE_CONTENT_PATH_MAX_BYTES,
|
|
22418
|
+
label: "a published page"
|
|
22419
|
+
}
|
|
22420
|
+
]
|
|
22421
|
+
]);
|
|
22422
|
+
function hostFilePathArg(toolName) {
|
|
22423
|
+
return HOST_FILE_PATH_TOOLS.get(toolName)?.pathArg;
|
|
22424
|
+
}
|
|
22425
|
+
function allowedHostFileRoots(agentDir, path) {
|
|
22404
22426
|
return [path.join(agentDir, "project"), path.join(agentDir, "scratch")];
|
|
22405
22427
|
}
|
|
22406
22428
|
function assertNoSymlinkComponents(target, roots, path, fs) {
|
|
@@ -22425,48 +22447,49 @@ function isContained(candidate, root, sep2) {
|
|
|
22425
22447
|
const rootWithSep = root.endsWith(sep2) ? root : root + sep2;
|
|
22426
22448
|
return candidate.startsWith(rootWithSep);
|
|
22427
22449
|
}
|
|
22428
|
-
function
|
|
22429
|
-
|
|
22430
|
-
|
|
22450
|
+
function resolveHostFilePath(toolName, args, opts) {
|
|
22451
|
+
const spec = HOST_FILE_PATH_TOOLS.get(toolName);
|
|
22452
|
+
if (!spec) return { ok: true, args };
|
|
22453
|
+
const raw = args[spec.pathArg];
|
|
22431
22454
|
if (raw === void 0 || raw === null) return { ok: true, args };
|
|
22432
22455
|
if (typeof raw !== "string" || raw.trim() === "") {
|
|
22433
|
-
return { ok: false, error:
|
|
22456
|
+
return { ok: false, error: `${spec.pathArg} must be a non-empty string.` };
|
|
22434
22457
|
}
|
|
22435
|
-
if (typeof args[
|
|
22458
|
+
if (typeof args[spec.targetArg] === "string") {
|
|
22436
22459
|
return {
|
|
22437
22460
|
ok: false,
|
|
22438
|
-
error:
|
|
22461
|
+
error: `Pass either ${spec.targetArg} or ${spec.pathArg}, not both \u2014 they are two ways to say the same thing and I will not guess which one you meant.`
|
|
22439
22462
|
};
|
|
22440
22463
|
}
|
|
22441
22464
|
const { agentDir, path, fs } = opts;
|
|
22442
|
-
const maxBytes = opts.maxBytes ??
|
|
22443
|
-
const roots =
|
|
22465
|
+
const maxBytes = opts.maxBytes ?? spec.maxBytes;
|
|
22466
|
+
const roots = allowedHostFileRoots(agentDir, path);
|
|
22444
22467
|
const absolute = path.isAbsolute(raw) ? path.resolve(raw) : path.resolve(path.join(agentDir, "project"), raw);
|
|
22445
22468
|
if (!roots.some((r) => isContained(absolute, r, path.sep))) {
|
|
22446
22469
|
return {
|
|
22447
22470
|
ok: false,
|
|
22448
|
-
error:
|
|
22471
|
+
error: `${spec.pathArg} must be inside your own project or scratch directory. Got '${raw}'. Allowed: ${roots.join(", ")}`
|
|
22449
22472
|
};
|
|
22450
22473
|
}
|
|
22451
22474
|
let real;
|
|
22452
22475
|
try {
|
|
22453
22476
|
real = fs.realpathSync(absolute);
|
|
22454
22477
|
} catch {
|
|
22455
|
-
return { ok: false, error:
|
|
22478
|
+
return { ok: false, error: `${spec.pathArg} does not exist or is unreadable: '${raw}'` };
|
|
22456
22479
|
}
|
|
22457
22480
|
if (!roots.some((r) => isContained(real, r, path.sep))) {
|
|
22458
22481
|
return {
|
|
22459
22482
|
ok: false,
|
|
22460
|
-
error:
|
|
22483
|
+
error: `${spec.pathArg} resolves outside your own directories (symlink?). '${raw}' \u2192 '${real}'. Allowed: ${roots.join(", ")}`
|
|
22461
22484
|
};
|
|
22462
22485
|
}
|
|
22463
22486
|
const walkError = assertNoSymlinkComponents(real, roots, path, fs);
|
|
22464
|
-
if (walkError) return { ok: false, error:
|
|
22487
|
+
if (walkError) return { ok: false, error: `${spec.pathArg}: ${walkError}` };
|
|
22465
22488
|
let vetted = null;
|
|
22466
22489
|
try {
|
|
22467
22490
|
vetted = fs.lstatSync(real);
|
|
22468
22491
|
} catch {
|
|
22469
|
-
return { ok: false, error:
|
|
22492
|
+
return { ok: false, error: `${spec.pathArg} vanished before it could be read: '${raw}'` };
|
|
22470
22493
|
}
|
|
22471
22494
|
let fd;
|
|
22472
22495
|
try {
|
|
@@ -22475,7 +22498,7 @@ function resolveSkillBodyPath(toolName, args, opts) {
|
|
|
22475
22498
|
const msg = err.message;
|
|
22476
22499
|
return {
|
|
22477
22500
|
ok: false,
|
|
22478
|
-
error:
|
|
22501
|
+
error: `${spec.pathArg} could not be opened (it may have been replaced mid-check): '${raw}' \u2014 ${msg}`
|
|
22479
22502
|
};
|
|
22480
22503
|
}
|
|
22481
22504
|
try {
|
|
@@ -22483,37 +22506,37 @@ function resolveSkillBodyPath(toolName, args, opts) {
|
|
|
22483
22506
|
try {
|
|
22484
22507
|
stat = fs.fstatSync(fd);
|
|
22485
22508
|
} catch {
|
|
22486
|
-
return { ok: false, error:
|
|
22509
|
+
return { ok: false, error: `${spec.pathArg} could not be inspected: '${raw}'` };
|
|
22487
22510
|
}
|
|
22488
22511
|
if (!stat.isFile()) {
|
|
22489
|
-
return { ok: false, error:
|
|
22512
|
+
return { ok: false, error: `${spec.pathArg} is not a regular file: '${raw}'` };
|
|
22490
22513
|
}
|
|
22491
22514
|
if (stat.ino !== void 0 && vetted.ino !== void 0) {
|
|
22492
22515
|
if (stat.ino !== vetted.ino || stat.dev !== vetted.dev) {
|
|
22493
22516
|
return {
|
|
22494
22517
|
ok: false,
|
|
22495
|
-
error:
|
|
22518
|
+
error: `${spec.pathArg} changed identity between the check and the open (it was replaced): '${raw}'`
|
|
22496
22519
|
};
|
|
22497
22520
|
}
|
|
22498
22521
|
}
|
|
22499
22522
|
if (stat.size > maxBytes) {
|
|
22500
22523
|
return {
|
|
22501
22524
|
ok: false,
|
|
22502
|
-
error:
|
|
22525
|
+
error: `${spec.pathArg} is ${stat.size} bytes, over the ${maxBytes}-byte limit for ${spec.label}.`
|
|
22503
22526
|
};
|
|
22504
22527
|
}
|
|
22505
22528
|
let bytes;
|
|
22506
22529
|
try {
|
|
22507
22530
|
bytes = fs.readFdSync(fd, maxBytes);
|
|
22508
22531
|
} catch (err) {
|
|
22509
|
-
return { ok: false, error:
|
|
22532
|
+
return { ok: false, error: `${spec.pathArg} could not be read: ${err.message}` };
|
|
22510
22533
|
}
|
|
22511
22534
|
if (bytes.byteLength > maxBytes) {
|
|
22512
|
-
return { ok: false, error:
|
|
22535
|
+
return { ok: false, error: `${spec.pathArg} grew past the ${maxBytes}-byte limit while being read.` };
|
|
22513
22536
|
}
|
|
22514
|
-
const
|
|
22515
|
-
const next = { ...args,
|
|
22516
|
-
delete next[
|
|
22537
|
+
const value = fs.decodeUtf8(bytes);
|
|
22538
|
+
const next = { ...args, [spec.targetArg]: value };
|
|
22539
|
+
delete next[spec.pathArg];
|
|
22517
22540
|
return { ok: true, args: next };
|
|
22518
22541
|
} finally {
|
|
22519
22542
|
try {
|
|
@@ -41265,7 +41288,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
41265
41288
|
}
|
|
41266
41289
|
},
|
|
41267
41290
|
{
|
|
41268
|
-
//
|
|
41291
|
+
// Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
|
|
41269
41292
|
// delivered to an agent as a tag-granted note the agent reads and summarises.
|
|
41270
41293
|
//
|
|
41271
41294
|
// No `installable` here, on purpose: ninjafy-notes is a Direct-HTTP SEED
|
|
@@ -41299,9 +41322,9 @@ var INTEGRATION_REGISTRY = [
|
|
|
41299
41322
|
// first integration to need `pricing: 'included'`, which is why that value
|
|
41300
41323
|
// now exists.
|
|
41301
41324
|
id: "ninjafy-notes",
|
|
41302
|
-
name: "
|
|
41325
|
+
name: "Ninja Notes",
|
|
41303
41326
|
category: "workspace-productivity",
|
|
41304
|
-
description: "Meeting notes captured on your Mac and sent to an agent.
|
|
41327
|
+
description: "Meeting notes captured on your Mac and sent to an agent. Ninja Notes records and transcribes a meeting on-device \u2014 the audio never leaves your machine \u2014 then hands the transcript to the agents you choose, which read it with your organization's context and write their own summary. Notes are private by default; sending one to an agent is the only thing that grants access.",
|
|
41305
41328
|
supported_auth_types: ["none"],
|
|
41306
41329
|
capabilities: [
|
|
41307
41330
|
{
|
|
@@ -45938,11 +45961,12 @@ async function forwardToolCall(toolName, args) {
|
|
|
45938
45961
|
throw new Error("Cannot forward tool call: AGT_AGENT_ID is not set");
|
|
45939
45962
|
}
|
|
45940
45963
|
let outgoing = args;
|
|
45941
|
-
|
|
45964
|
+
const pathArg = hostFilePathArg(toolName);
|
|
45965
|
+
if (pathArg && args[pathArg] !== void 0) {
|
|
45942
45966
|
if (!AGT_AGENT_CODE_NAME) {
|
|
45943
|
-
throw new Error(
|
|
45967
|
+
throw new Error(`Cannot resolve ${pathArg}: AGT_AGENT_CODE_NAME is not set`);
|
|
45944
45968
|
}
|
|
45945
|
-
const resolved =
|
|
45969
|
+
const resolved = resolveHostFilePath(toolName, args, {
|
|
45946
45970
|
// ADR-0049 / ENG-7891: the per-agent host dir is agent_id-keyed and the
|
|
45947
45971
|
// codename path is only a compatibility SYMLINK. That is not a style
|
|
45948
45972
|
// point here, it is a correctness one: the containment check below
|
|
@@ -45968,7 +45992,7 @@ async function forwardToolCall(toolName, args) {
|
|
|
45968
45992
|
// so an oversize file is detected rather than buffered whole.
|
|
45969
45993
|
lstatSync,
|
|
45970
45994
|
// Raw bytes, decoded only after the byte-length check — see
|
|
45971
|
-
// readFdSync's docblock in
|
|
45995
|
+
// readFdSync's docblock in host-file-path.ts.
|
|
45972
45996
|
readFdSync: (fd, maxBytes) => {
|
|
45973
45997
|
const buf = Buffer.alloc(maxBytes + 1);
|
|
45974
45998
|
let read = 0;
|
package/dist/mcp/origami.js
CHANGED
|
@@ -40146,7 +40146,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
40146
40146
|
}
|
|
40147
40147
|
},
|
|
40148
40148
|
{
|
|
40149
|
-
//
|
|
40149
|
+
// Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
|
|
40150
40150
|
// delivered to an agent as a tag-granted note the agent reads and summarises.
|
|
40151
40151
|
//
|
|
40152
40152
|
// No `installable` here, on purpose: ninjafy-notes is a Direct-HTTP SEED
|
|
@@ -40180,9 +40180,9 @@ var INTEGRATION_REGISTRY = [
|
|
|
40180
40180
|
// first integration to need `pricing: 'included'`, which is why that value
|
|
40181
40181
|
// now exists.
|
|
40182
40182
|
id: "ninjafy-notes",
|
|
40183
|
-
name: "
|
|
40183
|
+
name: "Ninja Notes",
|
|
40184
40184
|
category: "workspace-productivity",
|
|
40185
|
-
description: "Meeting notes captured on your Mac and sent to an agent.
|
|
40185
|
+
description: "Meeting notes captured on your Mac and sent to an agent. Ninja Notes records and transcribes a meeting on-device \u2014 the audio never leaves your machine \u2014 then hands the transcript to the agents you choose, which read it with your organization's context and write their own summary. Notes are private by default; sending one to an agent is the only thing that grants access.",
|
|
40186
40186
|
supported_auth_types: ["none"],
|
|
40187
40187
|
capabilities: [
|
|
40188
40188
|
{
|
|
@@ -34212,7 +34212,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
34212
34212
|
}
|
|
34213
34213
|
},
|
|
34214
34214
|
{
|
|
34215
|
-
//
|
|
34215
|
+
// Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
|
|
34216
34216
|
// delivered to an agent as a tag-granted note the agent reads and summarises.
|
|
34217
34217
|
//
|
|
34218
34218
|
// No `installable` here, on purpose: ninjafy-notes is a Direct-HTTP SEED
|
|
@@ -34246,9 +34246,9 @@ var INTEGRATION_REGISTRY = [
|
|
|
34246
34246
|
// first integration to need `pricing: 'included'`, which is why that value
|
|
34247
34247
|
// now exists.
|
|
34248
34248
|
id: "ninjafy-notes",
|
|
34249
|
-
name: "
|
|
34249
|
+
name: "Ninja Notes",
|
|
34250
34250
|
category: "workspace-productivity",
|
|
34251
|
-
description: "Meeting notes captured on your Mac and sent to an agent.
|
|
34251
|
+
description: "Meeting notes captured on your Mac and sent to an agent. Ninja Notes records and transcribes a meeting on-device \u2014 the audio never leaves your machine \u2014 then hands the transcript to the agents you choose, which read it with your organization's context and write their own summary. Notes are private by default; sending one to an agent is the only thing that grants access.",
|
|
34252
34252
|
supported_auth_types: ["none"],
|
|
34253
34253
|
capabilities: [
|
|
34254
34254
|
{
|
|
@@ -34356,7 +34356,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
34356
34356
|
}
|
|
34357
34357
|
},
|
|
34358
34358
|
{
|
|
34359
|
-
//
|
|
34359
|
+
// Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
|
|
34360
34360
|
// delivered to an agent as a tag-granted note the agent reads and summarises.
|
|
34361
34361
|
//
|
|
34362
34362
|
// No `installable` here, on purpose: ninjafy-notes is a Direct-HTTP SEED
|
|
@@ -34390,9 +34390,9 @@ var INTEGRATION_REGISTRY = [
|
|
|
34390
34390
|
// first integration to need `pricing: 'included'`, which is why that value
|
|
34391
34391
|
// now exists.
|
|
34392
34392
|
id: "ninjafy-notes",
|
|
34393
|
-
name: "
|
|
34393
|
+
name: "Ninja Notes",
|
|
34394
34394
|
category: "workspace-productivity",
|
|
34395
|
-
description: "Meeting notes captured on your Mac and sent to an agent.
|
|
34395
|
+
description: "Meeting notes captured on your Mac and sent to an agent. Ninja Notes records and transcribes a meeting on-device \u2014 the audio never leaves your machine \u2014 then hands the transcript to the agents you choose, which read it with your organization's context and write their own summary. Notes are private by default; sending one to an agent is the only thing that grants access.",
|
|
34396
34396
|
supported_auth_types: ["none"],
|
|
34397
34397
|
capabilities: [
|
|
34398
34398
|
{
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
writeDirectChatSessionState,
|
|
44
44
|
writeEgressAllowlist,
|
|
45
45
|
writePersistentClaudeWrapper
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-XGTAGSBI.js";
|
|
47
|
+
import "./chunk-6KCM6UPT.js";
|
|
48
48
|
import "./chunk-XWVM4KPK.js";
|
|
49
49
|
export {
|
|
50
50
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
writeEgressAllowlist,
|
|
93
93
|
writePersistentClaudeWrapper
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=persistent-session-
|
|
95
|
+
//# sourceMappingURL=persistent-session-3O72XXK5.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-XGTAGSBI.js";
|
|
4
|
+
import "./chunk-6KCM6UPT.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -727,4 +727,4 @@ export {
|
|
|
727
727
|
readAndResetSlackReplyBindingClassifications,
|
|
728
728
|
readAndResetSlackReplyTargetClassifications
|
|
729
729
|
};
|
|
730
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
730
|
+
//# sourceMappingURL=responsiveness-probe-D4OHFUWH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6KCM6UPT.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-T3EAAOKZ.js.map
|