@integrity-labs/agt-cli 0.28.931 → 0.28.933
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-HC3EDWKC.js → chunk-3ZYWTOUW.js} +2 -2
- package/dist/{chunk-7F32775G.js → chunk-TH3HADAH.js} +98 -9
- package/dist/chunk-TH3HADAH.js.map +1 -0
- package/dist/{chunk-HSXAGIVO.js → chunk-UAC3N4QQ.js} +4 -4
- package/dist/{claude-pair-runtime-TDP2NJTT.js → claude-pair-runtime-GMAY5E45.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/mcp/direct-chat-channel.js +10 -1
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/origami.js +37 -2
- package/dist/mcp/slack-channel.js +10 -1
- package/dist/mcp/teams-channel.js +1 -1
- package/dist/mcp/telegram-channel.js +10 -1
- package/dist/mcp/whatsapp-channel.js +2 -2
- package/dist/{persistent-session-Z7S2MMRH.js → persistent-session-JL7QVQJH.js} +3 -3
- package/dist/{responsiveness-probe-SR62Y32C.js → responsiveness-probe-H5HCW7HT.js} +3 -3
- package/dist/{session-auth-dead-25KP23AU.js → session-auth-dead-PRK7BNLU.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-7F32775G.js.map +0 -1
- /package/dist/{chunk-HC3EDWKC.js.map → chunk-3ZYWTOUW.js.map} +0 -0
- /package/dist/{chunk-HSXAGIVO.js.map → chunk-UAC3N4QQ.js.map} +0 -0
- /package/dist/{claude-pair-runtime-TDP2NJTT.js.map → claude-pair-runtime-GMAY5E45.js.map} +0 -0
- /package/dist/{persistent-session-Z7S2MMRH.js.map → persistent-session-JL7QVQJH.js.map} +0 -0
- /package/dist/{responsiveness-probe-SR62Y32C.js.map → responsiveness-probe-H5HCW7HT.js.map} +0 -0
- /package/dist/{session-auth-dead-25KP23AU.js.map → session-auth-dead-PRK7BNLU.js.map} +0 -0
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
parseEnvIntegrations,
|
|
17
17
|
shellQuote,
|
|
18
18
|
summarizeUnanswerablePane
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-3ZYWTOUW.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-TH3HADAH.js";
|
|
80
80
|
import {
|
|
81
81
|
parsePsRows
|
|
82
82
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -6942,7 +6942,7 @@ function exchangeFailureKind(err) {
|
|
|
6942
6942
|
}
|
|
6943
6943
|
|
|
6944
6944
|
// src/lib/api-client.ts
|
|
6945
|
-
var agtCliVersion = true ? "0.28.
|
|
6945
|
+
var agtCliVersion = true ? "0.28.933" : "dev";
|
|
6946
6946
|
var lastConfigHash = null;
|
|
6947
6947
|
function setConfigHash(hash) {
|
|
6948
6948
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -11567,4 +11567,4 @@ export {
|
|
|
11567
11567
|
managerInstallSystemUnitCommand,
|
|
11568
11568
|
managerUninstallSystemUnitCommand
|
|
11569
11569
|
};
|
|
11570
|
-
//# sourceMappingURL=chunk-
|
|
11570
|
+
//# sourceMappingURL=chunk-UAC3N4QQ.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-JL7QVQJH.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-GMAY5E45.js.map
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
safeWriteJsonAtomic,
|
|
64
64
|
setConfigHash,
|
|
65
65
|
tripClass
|
|
66
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-UAC3N4QQ.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-3ZYWTOUW.js";
|
|
140
140
|
import {
|
|
141
141
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
142
142
|
AnchorSessionClient,
|
|
@@ -232,7 +232,7 @@ import {
|
|
|
232
232
|
subagentActivityAgeSeconds,
|
|
233
233
|
sumTranscriptUsageInWindow,
|
|
234
234
|
transcriptActivityAgeSeconds
|
|
235
|
-
} from "../chunk-
|
|
235
|
+
} from "../chunk-TH3HADAH.js";
|
|
236
236
|
import {
|
|
237
237
|
reapOrphanChannelMcps
|
|
238
238
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -13230,7 +13230,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
13230
13230
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
13231
13231
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
13232
13232
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
13233
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
13233
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-H5HCW7HT.js");
|
|
13234
13234
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
13235
13235
|
if (newest === null) return null;
|
|
13236
13236
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -13915,7 +13915,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13915
13915
|
var lastVersionCheckAt = 0;
|
|
13916
13916
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13917
13917
|
var lastResponsivenessProbeAt = 0;
|
|
13918
|
-
var agtCliVersion = true ? "0.28.
|
|
13918
|
+
var agtCliVersion = true ? "0.28.933" : "dev";
|
|
13919
13919
|
function resolveBrewPath(execFileSync2) {
|
|
13920
13920
|
try {
|
|
13921
13921
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -15505,7 +15505,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
15505
15505
|
if (codeNames.length === 0) return;
|
|
15506
15506
|
void (async () => {
|
|
15507
15507
|
try {
|
|
15508
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15508
|
+
const { collectDiagnostics } = await import("../persistent-session-JL7QVQJH.js");
|
|
15509
15509
|
await api.post("/host/heartbeat", {
|
|
15510
15510
|
host_id: hostId,
|
|
15511
15511
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -15647,7 +15647,7 @@ async function pollCycleInner() {
|
|
|
15647
15647
|
}
|
|
15648
15648
|
try {
|
|
15649
15649
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
15650
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15650
|
+
const { collectDiagnostics } = await import("../persistent-session-JL7QVQJH.js");
|
|
15651
15651
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
15652
15652
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
|
|
15653
15653
|
let tailscaleHostname;
|
|
@@ -15822,7 +15822,7 @@ async function pollCycleInner() {
|
|
|
15822
15822
|
collectPanelessActivityProbes,
|
|
15823
15823
|
getResponsivenessIntervalMs,
|
|
15824
15824
|
occupancyQualificationClassifications
|
|
15825
|
-
} = await import("../responsiveness-probe-
|
|
15825
|
+
} = await import("../responsiveness-probe-H5HCW7HT.js");
|
|
15826
15826
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
15827
15827
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
15828
15828
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -15939,7 +15939,7 @@ async function pollCycleInner() {
|
|
|
15939
15939
|
collectResponsivenessProbes,
|
|
15940
15940
|
livePendingInboundOldestAgeSeconds,
|
|
15941
15941
|
parkPendingInbound
|
|
15942
|
-
} = await import("../responsiveness-probe-
|
|
15942
|
+
} = await import("../responsiveness-probe-H5HCW7HT.js");
|
|
15943
15943
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
15944
15944
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
15945
15945
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -16095,7 +16095,7 @@ async function pollCycleInner() {
|
|
|
16095
16095
|
}
|
|
16096
16096
|
try {
|
|
16097
16097
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
16098
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
16098
|
+
const { probeSessionAuth } = await import("../session-auth-dead-PRK7BNLU.js");
|
|
16099
16099
|
const observations = [];
|
|
16100
16100
|
const pendingCacheCommits = [];
|
|
16101
16101
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -20359,7 +20359,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20359
20359
|
try {
|
|
20360
20360
|
const freshId = rotateSessionForWedge(codeName);
|
|
20361
20361
|
consecutiveWedgeCycles.delete(codeName);
|
|
20362
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
20362
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-H5HCW7HT.js");
|
|
20363
20363
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
20364
20364
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
20365
20365
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -20402,7 +20402,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20402
20402
|
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}`));
|
|
20403
20403
|
void (async () => {
|
|
20404
20404
|
try {
|
|
20405
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20405
|
+
const { collectDiagnostics } = await import("../persistent-session-JL7QVQJH.js");
|
|
20406
20406
|
await api.post("/host/heartbeat", {
|
|
20407
20407
|
host_id: hostId,
|
|
20408
20408
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20453,7 +20453,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
20453
20453
|
}
|
|
20454
20454
|
try {
|
|
20455
20455
|
const hostId = await getHostId();
|
|
20456
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20456
|
+
const { collectDiagnostics } = await import("../persistent-session-JL7QVQJH.js");
|
|
20457
20457
|
await api.post("/host/heartbeat", {
|
|
20458
20458
|
host_id: hostId,
|
|
20459
20459
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -21095,7 +21095,7 @@ async function processClaudePairSessions(agents) {
|
|
|
21095
21095
|
killPairSession,
|
|
21096
21096
|
pairTmuxSession,
|
|
21097
21097
|
finalizeClaudePairOnboarding
|
|
21098
|
-
} = await import("../claude-pair-runtime-
|
|
21098
|
+
} = await import("../claude-pair-runtime-GMAY5E45.js");
|
|
21099
21099
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
21100
21100
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
21101
21101
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -30596,6 +30596,11 @@ var integration_metadata_v1_default = {
|
|
|
30596
30596
|
pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
|
|
30597
30597
|
description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
|
|
30598
30598
|
},
|
|
30599
|
+
auth_encoding: {
|
|
30600
|
+
type: "string",
|
|
30601
|
+
enum: ["basic_username"],
|
|
30602
|
+
description: "How the credential is encoded into Authorization (ENG-10524). `basic_username` sends it as the HTTP Basic username with an empty password (`Authorization: Basic base64(<credential>:)`), Sportsyear's API-key form. Omit for `<auth_scheme> <credential>`. Must not be combined with `auth_scheme`."
|
|
30603
|
+
},
|
|
30599
30604
|
runtime_scopes: {
|
|
30600
30605
|
type: "object",
|
|
30601
30606
|
description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
|
|
@@ -30630,6 +30635,10 @@ var integration_metadata_v1_default = {
|
|
|
30630
30635
|
required: ["tools"]
|
|
30631
30636
|
},
|
|
30632
30637
|
then: { required: ["base_url"] },
|
|
30638
|
+
not: {
|
|
30639
|
+
description: "auth_scheme and auth_encoding are mutually exclusive (ENG-10524). The templater refuses the combination on every call, so catalog validation refuses it first.",
|
|
30640
|
+
required: ["auth_scheme", "auth_encoding"]
|
|
30641
|
+
},
|
|
30633
30642
|
$defs: {
|
|
30634
30643
|
scopeConfig: {
|
|
30635
30644
|
oneOf: [
|
|
@@ -39891,7 +39900,7 @@ async function readCursorAdvanceBody(res) {
|
|
|
39891
39900
|
function buildDirectChatMcpInstructions() {
|
|
39892
39901
|
return [
|
|
39893
39902
|
"CRITICAL: every response to a direct-chat <channel> tag MUST go through direct_chat.reply (passing the session_id verbatim). Text in your session WITHOUT a direct_chat.reply call never reaches the operator \u2014 the reply dies inside the agent process.",
|
|
39894
|
-
|
|
39903
|
+
"Messages from the webapp Direct Chat arrive as a channel tag whose source is direct-chat, carrying session_id and user.",
|
|
39895
39904
|
"When the tag carries user_name (and sometimes user_email / user_role), that is the verified human you are talking with; address them by name and tailor your reply to who they are. If those attributes are absent, the sender is unknown, so just reply helpfully without personalization.",
|
|
39896
39905
|
"Reply using the direct_chat.reply tool, passing the session_id from the tag.",
|
|
39897
39906
|
"Always reply to every direct chat message that expects a reply (its meta has requires_reply=true, or no requires_reply field) \u2014 the user is waiting in the webapp.",
|
package/dist/mcp/index.js
CHANGED
|
@@ -23172,6 +23172,11 @@ var integration_metadata_v1_default = {
|
|
|
23172
23172
|
pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
|
|
23173
23173
|
description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
|
|
23174
23174
|
},
|
|
23175
|
+
auth_encoding: {
|
|
23176
|
+
type: "string",
|
|
23177
|
+
enum: ["basic_username"],
|
|
23178
|
+
description: "How the credential is encoded into Authorization (ENG-10524). `basic_username` sends it as the HTTP Basic username with an empty password (`Authorization: Basic base64(<credential>:)`), Sportsyear's API-key form. Omit for `<auth_scheme> <credential>`. Must not be combined with `auth_scheme`."
|
|
23179
|
+
},
|
|
23175
23180
|
runtime_scopes: {
|
|
23176
23181
|
type: "object",
|
|
23177
23182
|
description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
|
|
@@ -23206,6 +23211,10 @@ var integration_metadata_v1_default = {
|
|
|
23206
23211
|
required: ["tools"]
|
|
23207
23212
|
},
|
|
23208
23213
|
then: { required: ["base_url"] },
|
|
23214
|
+
not: {
|
|
23215
|
+
description: "auth_scheme and auth_encoding are mutually exclusive (ENG-10524). The templater refuses the combination on every call, so catalog validation refuses it first.",
|
|
23216
|
+
required: ["auth_scheme", "auth_encoding"]
|
|
23217
|
+
},
|
|
23209
23218
|
$defs: {
|
|
23210
23219
|
scopeConfig: {
|
|
23211
23220
|
oneOf: [
|
package/dist/mcp/origami.js
CHANGED
|
@@ -37118,6 +37118,11 @@ var integration_metadata_v1_default = {
|
|
|
37118
37118
|
pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
|
|
37119
37119
|
description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
|
|
37120
37120
|
},
|
|
37121
|
+
auth_encoding: {
|
|
37122
|
+
type: "string",
|
|
37123
|
+
enum: ["basic_username"],
|
|
37124
|
+
description: "How the credential is encoded into Authorization (ENG-10524). `basic_username` sends it as the HTTP Basic username with an empty password (`Authorization: Basic base64(<credential>:)`), Sportsyear's API-key form. Omit for `<auth_scheme> <credential>`. Must not be combined with `auth_scheme`."
|
|
37125
|
+
},
|
|
37121
37126
|
runtime_scopes: {
|
|
37122
37127
|
type: "object",
|
|
37123
37128
|
description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
|
|
@@ -37152,6 +37157,10 @@ var integration_metadata_v1_default = {
|
|
|
37152
37157
|
required: ["tools"]
|
|
37153
37158
|
},
|
|
37154
37159
|
then: { required: ["base_url"] },
|
|
37160
|
+
not: {
|
|
37161
|
+
description: "auth_scheme and auth_encoding are mutually exclusive (ENG-10524). The templater refuses the combination on every call, so catalog validation refuses it first.",
|
|
37162
|
+
required: ["auth_scheme", "auth_encoding"]
|
|
37163
|
+
},
|
|
37155
37164
|
$defs: {
|
|
37156
37165
|
scopeConfig: {
|
|
37157
37166
|
oneOf: [
|
|
@@ -37284,7 +37293,7 @@ var FIXED_SECONDS = {
|
|
|
37284
37293
|
// ../core/dist/integrations/integration-broker/http-templater.js
|
|
37285
37294
|
var PLACEHOLDER_RE = /\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g;
|
|
37286
37295
|
function buildHttpRequest(input) {
|
|
37287
|
-
const { tool, args, baseUrl, bearerToken, authScheme, requestId, extraHeaders } = input;
|
|
37296
|
+
const { tool, args, baseUrl, bearerToken, authScheme, authEncoding, requestId, extraHeaders } = input;
|
|
37288
37297
|
const { method, path_template, query_template, headers_template, body_template, idempotency_key_header } = tool.http;
|
|
37289
37298
|
const path = templatePath(path_template, args);
|
|
37290
37299
|
const query = query_template ? buildQueryString(query_template, args) : "";
|
|
@@ -37293,7 +37302,7 @@ function buildHttpRequest(input) {
|
|
|
37293
37302
|
Accept: "application/json"
|
|
37294
37303
|
};
|
|
37295
37304
|
if (bearerToken) {
|
|
37296
|
-
headers["Authorization"] =
|
|
37305
|
+
headers["Authorization"] = authorizationValue(bearerToken, authScheme, authEncoding);
|
|
37297
37306
|
}
|
|
37298
37307
|
if (method !== "GET") {
|
|
37299
37308
|
const headerName = idempotency_key_header ?? "Idempotency-Key";
|
|
@@ -37371,6 +37380,32 @@ function omitKeys(args, keys) {
|
|
|
37371
37380
|
}
|
|
37372
37381
|
return out;
|
|
37373
37382
|
}
|
|
37383
|
+
function authorizationValue(token, scheme, encoding) {
|
|
37384
|
+
if (encoding === void 0 || encoding.trim() === "") {
|
|
37385
|
+
return `${resolveAuthScheme(scheme)} ${token}`;
|
|
37386
|
+
}
|
|
37387
|
+
const trimmed = encoding.trim();
|
|
37388
|
+
if (trimmed !== "basic_username") {
|
|
37389
|
+
throw new TemplateError(`unsupported auth_encoding: ${trimmed}`);
|
|
37390
|
+
}
|
|
37391
|
+
if (scheme !== void 0 && scheme.trim() !== "") {
|
|
37392
|
+
throw new TemplateError("auth_scheme cannot be combined with auth_encoding");
|
|
37393
|
+
}
|
|
37394
|
+
return basicUsernameAuthorization(token);
|
|
37395
|
+
}
|
|
37396
|
+
function basicUsernameAuthorization(credential) {
|
|
37397
|
+
if (credential.includes(":")) {
|
|
37398
|
+
throw new TemplateError('credential for basic_username auth must not contain ":"');
|
|
37399
|
+
}
|
|
37400
|
+
if (!isValidHeaderValue(credential)) {
|
|
37401
|
+
throw new TemplateError("credential for basic_username auth contains control characters");
|
|
37402
|
+
}
|
|
37403
|
+
const bytes = new TextEncoder().encode(`${credential}:`);
|
|
37404
|
+
let binary = "";
|
|
37405
|
+
for (const b of bytes)
|
|
37406
|
+
binary += String.fromCharCode(b);
|
|
37407
|
+
return `Basic ${btoa(binary)}`;
|
|
37408
|
+
}
|
|
37374
37409
|
function resolveAuthScheme(scheme) {
|
|
37375
37410
|
if (scheme === void 0)
|
|
37376
37411
|
return "Bearer";
|
|
@@ -31542,6 +31542,11 @@ var integration_metadata_v1_default = {
|
|
|
31542
31542
|
pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
|
|
31543
31543
|
description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
|
|
31544
31544
|
},
|
|
31545
|
+
auth_encoding: {
|
|
31546
|
+
type: "string",
|
|
31547
|
+
enum: ["basic_username"],
|
|
31548
|
+
description: "How the credential is encoded into Authorization (ENG-10524). `basic_username` sends it as the HTTP Basic username with an empty password (`Authorization: Basic base64(<credential>:)`), Sportsyear's API-key form. Omit for `<auth_scheme> <credential>`. Must not be combined with `auth_scheme`."
|
|
31549
|
+
},
|
|
31545
31550
|
runtime_scopes: {
|
|
31546
31551
|
type: "object",
|
|
31547
31552
|
description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
|
|
@@ -31576,6 +31581,10 @@ var integration_metadata_v1_default = {
|
|
|
31576
31581
|
required: ["tools"]
|
|
31577
31582
|
},
|
|
31578
31583
|
then: { required: ["base_url"] },
|
|
31584
|
+
not: {
|
|
31585
|
+
description: "auth_scheme and auth_encoding are mutually exclusive (ENG-10524). The templater refuses the combination on every call, so catalog validation refuses it first.",
|
|
31586
|
+
required: ["auth_scheme", "auth_encoding"]
|
|
31587
|
+
},
|
|
31579
31588
|
$defs: {
|
|
31580
31589
|
scopeConfig: {
|
|
31581
31590
|
oneOf: [
|
|
@@ -42842,7 +42851,7 @@ function buildSlackMcpInstructions(opts) {
|
|
|
42842
42851
|
const { ackReaction, skipReactionOn, skipReaction } = opts;
|
|
42843
42852
|
return [
|
|
42844
42853
|
"CRITICAL: every response to a Slack <channel> tag MUST go through slack.reply - typed text never reaches the user. Slow work: interim ack (slack.reply interim:true), then your FINAL answer as a separate slack.reply (interim omitted). An ack is not the answer.",
|
|
42845
|
-
|
|
42854
|
+
"Each inbound tag carries inbound_id and message_ts, and sometimes thread_context. Reply with slack.reply passing inbound_id (copy it verbatim from the tag you are answering) + text; the server routes it to the right thread. Multiple <channel> tags = separate conversations: NEVER answer one user in another's inbound_id/thread. thread_context = pre-loaded thread; ground replies ONLY in it. For a self-initiated message (not a reply) set proactive:true.",
|
|
42846
42855
|
"Attachments: <channel> `files` is a JSON string - JSON.parse it. Entry with `path` (or a top-level `image_path`) is already downloaded - Read it; do NOT call slack.download_attachment. Only entries with `file_id` and no `path` (PDF/docx/csv) need slack.download_attachment (pass file_id + channel), then Read the returned path. Don't surface file-handling errors that don't affect the answer.",
|
|
42847
42856
|
"Address users by user_name, never raw user ID. In multi-participant threads the CURRENT speaker is on the latest <channel> tag.",
|
|
42848
42857
|
`Reactions (slack.react sparingly - prefer a reply): :${ackReaction}: = ack (auto-added on inbound, don't duplicate); \u2705 = success.` + (skipReactionOn ? ` "${skipReaction}" = seen, not replying.` : "") + " NEVER react to signal failure of your work - on failure slack.reply one sentence explaining it (no stack traces/secrets). \u23F3 and \u274C are system-only; never add them.",
|
|
@@ -15707,7 +15707,7 @@ var mcp = new Server(
|
|
|
15707
15707
|
// High-priority lines first — Claude Code truncates instructions at
|
|
15708
15708
|
// 2048 chars, so anything appended late silently disappears.
|
|
15709
15709
|
"CRITICAL: every response to an MS Teams <channel> tag MUST go through teams.reply. Text in your session without a teams.reply call never reaches the user.",
|
|
15710
|
-
|
|
15710
|
+
"Messages from Teams arrive as a channel tag carrying user (an AAD id), user_name, conversation_id, service_url and reply_to_id. Pass conversation_id + service_url + reply_to_id from the tag to teams.reply verbatim; threaded replies must include reply_to_id.",
|
|
15711
15711
|
"Address users by user_name, never by raw user id (AAD object ids leak directory information).",
|
|
15712
15712
|
"service_url is region-specific and arrives on every inbound \u2014 NEVER hardcode it, always echo the inbound value.",
|
|
15713
15713
|
'Channel message + auto_followed="true": only reply if you have something useful to add; otherwise silently skip.',
|
|
@@ -31584,6 +31584,11 @@ var integration_metadata_v1_default = {
|
|
|
31584
31584
|
pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
|
|
31585
31585
|
description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
|
|
31586
31586
|
},
|
|
31587
|
+
auth_encoding: {
|
|
31588
|
+
type: "string",
|
|
31589
|
+
enum: ["basic_username"],
|
|
31590
|
+
description: "How the credential is encoded into Authorization (ENG-10524). `basic_username` sends it as the HTTP Basic username with an empty password (`Authorization: Basic base64(<credential>:)`), Sportsyear's API-key form. Omit for `<auth_scheme> <credential>`. Must not be combined with `auth_scheme`."
|
|
31591
|
+
},
|
|
31587
31592
|
runtime_scopes: {
|
|
31588
31593
|
type: "object",
|
|
31589
31594
|
description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
|
|
@@ -31618,6 +31623,10 @@ var integration_metadata_v1_default = {
|
|
|
31618
31623
|
required: ["tools"]
|
|
31619
31624
|
},
|
|
31620
31625
|
then: { required: ["base_url"] },
|
|
31626
|
+
not: {
|
|
31627
|
+
description: "auth_scheme and auth_encoding are mutually exclusive (ENG-10524). The templater refuses the combination on every call, so catalog validation refuses it first.",
|
|
31628
|
+
required: ["auth_scheme", "auth_encoding"]
|
|
31629
|
+
},
|
|
31621
31630
|
$defs: {
|
|
31622
31631
|
scopeConfig: {
|
|
31623
31632
|
oneOf: [
|
|
@@ -42288,7 +42297,7 @@ function buildTelegramMcpInstructions(opts) {
|
|
|
42288
42297
|
const skipReactionOn = opts.skipReactionOn && emoji2.length > 0 && emoji2.length <= MAX_SKIP_REACTION_UNITS;
|
|
42289
42298
|
return [
|
|
42290
42299
|
"CRITICAL: every response to a Telegram <channel> tag MUST go through telegram.reply with the chat_id from the tag \u2014 typed text never reaches the user. Slow work: interim ack (telegram.reply interim:true), then your FINAL answer as a separate telegram.reply (interim omitted). An ack is not the answer.",
|
|
42291
|
-
|
|
42300
|
+
"Messages from Telegram arrive as a channel tag carrying chat_id, user, user_name and message_id. Pass reply_to_message_id from the tag so the response lands as a quote-reply in busy chats.",
|
|
42292
42301
|
"Deliberately NOT replying (a standing rule bars you from that chat, or the message only changed state)? Call telegram.consume with the chat_id and a short reason: it settles the message without posting anything. Without a reply or a consume it counts as undelivered and re-delivers to you forever.",
|
|
42293
42302
|
"Inbound attachments: `files` on the tag is a JSON string \u2014 JSON.parse it. An entry with `path` (or top-level `image_path`) is already downloaded \u2014 Read it. Entries with `file_id` and no `path` need telegram.download_attachment (file_id + chat_id), then Read the returned path.",
|
|
42294
42303
|
'For work >30s follow the CLAUDE.md kanban flow: kanban_add \u2192 reply "On it \u2014 tracking here: <kanban URL>" \u2192 in_progress \u2192 reply the result. Simple lookups skip kanban but still reply.',
|
|
@@ -156050,11 +156050,11 @@ var mcp = new Server(
|
|
|
156050
156050
|
},
|
|
156051
156051
|
instructions: (IS_BAILEYS ? [
|
|
156052
156052
|
"CRITICAL: every response to a WhatsApp <channel> tag MUST go through whatsapp.reply. Text in your session without a tool call never reaches the user.",
|
|
156053
|
-
|
|
156053
|
+
"Messages arrive as a channel tag carrying sender (a JID), conversation_id and message_id. Pass the `sender` value verbatim as the `to` argument to whatsapp.reply.",
|
|
156054
156054
|
"whatsapp.reply sends free-form text with no restrictions (this is a linked personal number, not a business template flow)."
|
|
156055
156055
|
] : [
|
|
156056
156056
|
"CRITICAL: every response to a WhatsApp <channel> tag MUST go through whatsapp.reply (or whatsapp.send_template). Text in your session without a tool call never reaches the user.",
|
|
156057
|
-
|
|
156057
|
+
"Messages arrive as a channel tag carrying sender, conversation_id and message_id. Pass the `sender` value verbatim as the `to` argument to whatsapp.reply.",
|
|
156058
156058
|
"whatsapp.reply sends free-form text and only works inside the 24h customer-service window (24h since the user last messaged). If it reports the window is closed, use whatsapp.send_template with a pre-approved template instead."
|
|
156059
156059
|
]).join(" ")
|
|
156060
156060
|
}
|
|
@@ -62,8 +62,8 @@ import {
|
|
|
62
62
|
writeDirectChatSessionState,
|
|
63
63
|
writeEgressAllowlist,
|
|
64
64
|
writePersistentClaudeWrapper
|
|
65
|
-
} from "./chunk-
|
|
66
|
-
import "./chunk-
|
|
65
|
+
} from "./chunk-3ZYWTOUW.js";
|
|
66
|
+
import "./chunk-TH3HADAH.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-JL7QVQJH.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-3ZYWTOUW.js";
|
|
4
|
+
import "./chunk-TH3HADAH.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -799,4 +799,4 @@ export {
|
|
|
799
799
|
readAndResetSlackReplyBindingClassifications,
|
|
800
800
|
readAndResetSlackReplyTargetClassifications
|
|
801
801
|
};
|
|
802
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
802
|
+
//# sourceMappingURL=responsiveness-probe-H5HCW7HT.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TH3HADAH.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-PRK7BNLU.js.map
|