@integrity-labs/agt-cli 0.28.432 → 0.28.434
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 -5
- package/dist/bin/agt.js.map +1 -1
- package/dist/{chunk-X6OWJOAL.js → chunk-CDF3NQLR.js} +6 -8
- package/dist/chunk-CDF3NQLR.js.map +1 -0
- package/dist/{chunk-6A5BDKCN.js → chunk-TTEKDLQ7.js} +128 -98
- package/dist/chunk-TTEKDLQ7.js.map +1 -0
- package/dist/{claude-pair-runtime-WZU2YZ3I.js → claude-pair-runtime-S4BYKFKG.js} +2 -2
- package/dist/lib/manager-worker.js +238 -197
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +101 -26
- package/dist/mcp/slack-channel.js +236 -128
- package/dist/mcp/telegram-channel.js +187 -91
- package/dist/{persistent-session-7XQDAZW5.js → persistent-session-FWCSJ7ZQ.js} +2 -2
- package/dist/{responsiveness-probe-QL66KMNI.js → responsiveness-probe-44JJ7O7D.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-6A5BDKCN.js.map +0 -1
- package/dist/chunk-X6OWJOAL.js.map +0 -1
- /package/dist/{claude-pair-runtime-WZU2YZ3I.js.map → claude-pair-runtime-S4BYKFKG.js.map} +0 -0
- /package/dist/{persistent-session-7XQDAZW5.js.map → persistent-session-FWCSJ7ZQ.js.map} +0 -0
- /package/dist/{responsiveness-probe-QL66KMNI.js.map → responsiveness-probe-44JJ7O7D.js.map} +0 -0
|
@@ -50,103 +50,6 @@ function sanitizeMcpJson(mcpConfigPath, apiHost) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
// src/lib/claude-tools.ts
|
|
54
|
-
var BASE_TOOLS = ["Bash", "Read", "Write", "Edit", "Grep", "Glob", "Agent", "Skill", "ToolSearch"];
|
|
55
|
-
function buildAllowedTools(mcpServerNames) {
|
|
56
|
-
const mcpPatterns = mcpServerNames.map((name) => `mcp__${name.replace(/-/g, "_")}__*`);
|
|
57
|
-
return [...mcpPatterns, ...BASE_TOOLS].join(",");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// src/lib/mcp-env-probe.ts
|
|
61
|
-
import { existsSync, readFileSync as readFileSync2 } from "fs";
|
|
62
|
-
var LATE_BOUND_VARS = /* @__PURE__ */ new Set([
|
|
63
|
-
"AGT_RUN_ID",
|
|
64
|
-
"AGT_TOKEN",
|
|
65
|
-
"ANCHOR_BROWSER_SESSION_ID"
|
|
66
|
-
]);
|
|
67
|
-
var TEMPLATE_VAR_RE = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
68
|
-
function collectVarsFromValue(value, into) {
|
|
69
|
-
if (typeof value === "string") {
|
|
70
|
-
for (const m of value.matchAll(TEMPLATE_VAR_RE)) into.add(m[1]);
|
|
71
|
-
} else if (Array.isArray(value)) {
|
|
72
|
-
for (const v of value) collectVarsFromValue(v, into);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function findMissingSubstitutionVars(mcpConfig, env2) {
|
|
76
|
-
const findings = [];
|
|
77
|
-
if (typeof mcpConfig !== "object" || mcpConfig === null) return findings;
|
|
78
|
-
const servers = mcpConfig.mcpServers;
|
|
79
|
-
if (typeof servers !== "object" || servers === null) return findings;
|
|
80
|
-
for (const [server, raw] of Object.entries(servers)) {
|
|
81
|
-
if (typeof raw !== "object" || raw === null) continue;
|
|
82
|
-
const entry = raw;
|
|
83
|
-
const vars = /* @__PURE__ */ new Set();
|
|
84
|
-
collectVarsFromValue(entry["command"], vars);
|
|
85
|
-
collectVarsFromValue(entry["args"], vars);
|
|
86
|
-
collectVarsFromValue(entry["url"], vars);
|
|
87
|
-
for (const block of [entry["env"], entry["headers"]]) {
|
|
88
|
-
if (typeof block !== "object" || block === null) continue;
|
|
89
|
-
for (const v of Object.values(block)) collectVarsFromValue(v, vars);
|
|
90
|
-
}
|
|
91
|
-
for (const varName of vars) {
|
|
92
|
-
if (LATE_BOUND_VARS.has(varName)) continue;
|
|
93
|
-
const value = env2[varName];
|
|
94
|
-
if (value === void 0) {
|
|
95
|
-
findings.push({ varName, server, state: "unset" });
|
|
96
|
-
} else if (value.trim() === "") {
|
|
97
|
-
findings.push({ varName, server, state: "empty" });
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return findings;
|
|
102
|
-
}
|
|
103
|
-
function formatMissingVar(f) {
|
|
104
|
-
return `[mcp-env-substitution] missing var=${f.varName} server=${f.server} state=${f.state}`;
|
|
105
|
-
}
|
|
106
|
-
function expandTemplateVars(value, env2) {
|
|
107
|
-
const unresolved = /* @__PURE__ */ new Set();
|
|
108
|
-
const expanded = value.replace(TEMPLATE_VAR_RE, (literal, name) => {
|
|
109
|
-
if (LATE_BOUND_VARS.has(name)) {
|
|
110
|
-
unresolved.add(name);
|
|
111
|
-
return literal;
|
|
112
|
-
}
|
|
113
|
-
const resolved = env2[name];
|
|
114
|
-
if (resolved !== void 0 && resolved.trim() !== "") return resolved;
|
|
115
|
-
unresolved.add(name);
|
|
116
|
-
return literal;
|
|
117
|
-
});
|
|
118
|
-
return { value: expanded, unresolved: [...unresolved] };
|
|
119
|
-
}
|
|
120
|
-
function parseEnvIntegrations(content) {
|
|
121
|
-
const out = {};
|
|
122
|
-
for (const line2 of content.split("\n")) {
|
|
123
|
-
if (!line2 || line2.startsWith("#") || !line2.includes("=")) continue;
|
|
124
|
-
const eqIdx = line2.indexOf("=");
|
|
125
|
-
const key = line2.slice(0, eqIdx);
|
|
126
|
-
let value = line2.slice(eqIdx + 1);
|
|
127
|
-
if (value.length >= 2 && value.startsWith("'") && value.endsWith("'")) {
|
|
128
|
-
value = value.slice(1, -1).replaceAll("'\\''", "'");
|
|
129
|
-
}
|
|
130
|
-
out[key] = value;
|
|
131
|
-
}
|
|
132
|
-
return out;
|
|
133
|
-
}
|
|
134
|
-
function probeMcpEnvSubstitution(args) {
|
|
135
|
-
try {
|
|
136
|
-
const config = JSON.parse(readFileSync2(args.mcpConfigPath, "utf-8"));
|
|
137
|
-
let env2 = args.baseEnv;
|
|
138
|
-
if (args.envIntegrationsPath && existsSync(args.envIntegrationsPath)) {
|
|
139
|
-
env2 = {
|
|
140
|
-
...args.baseEnv,
|
|
141
|
-
...parseEnvIntegrations(readFileSync2(args.envIntegrationsPath, "utf-8"))
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
return findMissingSubstitutionVars(config, env2);
|
|
145
|
-
} catch {
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
53
|
// ../../packages/core/dist/types/agent.js
|
|
151
54
|
var DEFAULT_FRAMEWORK = "claude-code";
|
|
152
55
|
var FRAMEWORK_DEPRECATION = {
|
|
@@ -4075,6 +3978,22 @@ ${frontmatter.environment === "prod" ? "- Production environment: exercise extra
|
|
|
4075
3978
|
return body;
|
|
4076
3979
|
}
|
|
4077
3980
|
|
|
3981
|
+
// ../../packages/core/dist/provisioning/mcp-tool-patterns.js
|
|
3982
|
+
function sanitizeMcpName(name) {
|
|
3983
|
+
return name.replace(/-/g, "_");
|
|
3984
|
+
}
|
|
3985
|
+
function mcpWildcardsForServer(serverKey) {
|
|
3986
|
+
const raw = `mcp__${serverKey}__*`;
|
|
3987
|
+
const sanitized = `mcp__${sanitizeMcpName(serverKey)}__*`;
|
|
3988
|
+
return sanitized === raw ? [raw] : [raw, sanitized];
|
|
3989
|
+
}
|
|
3990
|
+
function mcpWildcardsForServers(serverKeys) {
|
|
3991
|
+
return Array.from(new Set(serverKeys.flatMap((k) => mcpWildcardsForServer(k))));
|
|
3992
|
+
}
|
|
3993
|
+
function requiredMcpWildcard(serverKey) {
|
|
3994
|
+
return `mcp__${serverKey}__*`;
|
|
3995
|
+
}
|
|
3996
|
+
|
|
4078
3997
|
// ../../packages/core/dist/integrations/context-validator.js
|
|
4079
3998
|
import Ajv20202 from "ajv/dist/2020.js";
|
|
4080
3999
|
import addFormats2 from "ajv-formats";
|
|
@@ -8526,6 +8445,17 @@ function serializeUsageLimitMarker(limitedUntil) {
|
|
|
8526
8445
|
return JSON.stringify(marker);
|
|
8527
8446
|
}
|
|
8528
8447
|
|
|
8448
|
+
// ../../packages/core/dist/account-enforcement/marker.js
|
|
8449
|
+
var ACCOUNT_ENFORCEMENT_MARKER_FILENAME = "account-enforcement.json";
|
|
8450
|
+
var ACCOUNT_ENFORCEMENT_MARKER_VERSION = 1;
|
|
8451
|
+
function serializeAccountEnforcementMarker(level) {
|
|
8452
|
+
const marker = {
|
|
8453
|
+
version: ACCOUNT_ENFORCEMENT_MARKER_VERSION,
|
|
8454
|
+
level
|
|
8455
|
+
};
|
|
8456
|
+
return JSON.stringify(marker);
|
|
8457
|
+
}
|
|
8458
|
+
|
|
8529
8459
|
// ../../packages/core/dist/loops/kanban-check.js
|
|
8530
8460
|
var KANBAN_CHECK_COMMAND = "kanban_list \u2014 pick up any actionable items if you are free.";
|
|
8531
8461
|
var KANBAN_NUDGE_ACTIONABLE_STATUSES = ["todo", "in_progress"];
|
|
@@ -9908,6 +9838,102 @@ function computeFlagsSchemaVersion() {
|
|
|
9908
9838
|
}
|
|
9909
9839
|
var FLAGS_SCHEMA_VERSION = computeFlagsSchemaVersion();
|
|
9910
9840
|
|
|
9841
|
+
// src/lib/claude-tools.ts
|
|
9842
|
+
var BASE_TOOLS = ["Bash", "Read", "Write", "Edit", "Grep", "Glob", "Agent", "Skill", "ToolSearch"];
|
|
9843
|
+
function buildAllowedTools(mcpServerNames) {
|
|
9844
|
+
return [...mcpWildcardsForServers(mcpServerNames), ...BASE_TOOLS].join(",");
|
|
9845
|
+
}
|
|
9846
|
+
|
|
9847
|
+
// src/lib/mcp-env-probe.ts
|
|
9848
|
+
import { existsSync, readFileSync as readFileSync2 } from "fs";
|
|
9849
|
+
var LATE_BOUND_VARS = /* @__PURE__ */ new Set([
|
|
9850
|
+
"AGT_RUN_ID",
|
|
9851
|
+
"AGT_TOKEN",
|
|
9852
|
+
"ANCHOR_BROWSER_SESSION_ID"
|
|
9853
|
+
]);
|
|
9854
|
+
var TEMPLATE_VAR_RE = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
9855
|
+
function collectVarsFromValue(value, into) {
|
|
9856
|
+
if (typeof value === "string") {
|
|
9857
|
+
for (const m of value.matchAll(TEMPLATE_VAR_RE)) into.add(m[1]);
|
|
9858
|
+
} else if (Array.isArray(value)) {
|
|
9859
|
+
for (const v of value) collectVarsFromValue(v, into);
|
|
9860
|
+
}
|
|
9861
|
+
}
|
|
9862
|
+
function findMissingSubstitutionVars(mcpConfig, env2) {
|
|
9863
|
+
const findings = [];
|
|
9864
|
+
if (typeof mcpConfig !== "object" || mcpConfig === null) return findings;
|
|
9865
|
+
const servers = mcpConfig.mcpServers;
|
|
9866
|
+
if (typeof servers !== "object" || servers === null) return findings;
|
|
9867
|
+
for (const [server, raw] of Object.entries(servers)) {
|
|
9868
|
+
if (typeof raw !== "object" || raw === null) continue;
|
|
9869
|
+
const entry = raw;
|
|
9870
|
+
const vars = /* @__PURE__ */ new Set();
|
|
9871
|
+
collectVarsFromValue(entry["command"], vars);
|
|
9872
|
+
collectVarsFromValue(entry["args"], vars);
|
|
9873
|
+
collectVarsFromValue(entry["url"], vars);
|
|
9874
|
+
for (const block of [entry["env"], entry["headers"]]) {
|
|
9875
|
+
if (typeof block !== "object" || block === null) continue;
|
|
9876
|
+
for (const v of Object.values(block)) collectVarsFromValue(v, vars);
|
|
9877
|
+
}
|
|
9878
|
+
for (const varName of vars) {
|
|
9879
|
+
if (LATE_BOUND_VARS.has(varName)) continue;
|
|
9880
|
+
const value = env2[varName];
|
|
9881
|
+
if (value === void 0) {
|
|
9882
|
+
findings.push({ varName, server, state: "unset" });
|
|
9883
|
+
} else if (value.trim() === "") {
|
|
9884
|
+
findings.push({ varName, server, state: "empty" });
|
|
9885
|
+
}
|
|
9886
|
+
}
|
|
9887
|
+
}
|
|
9888
|
+
return findings;
|
|
9889
|
+
}
|
|
9890
|
+
function formatMissingVar(f) {
|
|
9891
|
+
return `[mcp-env-substitution] missing var=${f.varName} server=${f.server} state=${f.state}`;
|
|
9892
|
+
}
|
|
9893
|
+
function expandTemplateVars(value, env2) {
|
|
9894
|
+
const unresolved = /* @__PURE__ */ new Set();
|
|
9895
|
+
const expanded = value.replace(TEMPLATE_VAR_RE, (literal, name) => {
|
|
9896
|
+
if (LATE_BOUND_VARS.has(name)) {
|
|
9897
|
+
unresolved.add(name);
|
|
9898
|
+
return literal;
|
|
9899
|
+
}
|
|
9900
|
+
const resolved = env2[name];
|
|
9901
|
+
if (resolved !== void 0 && resolved.trim() !== "") return resolved;
|
|
9902
|
+
unresolved.add(name);
|
|
9903
|
+
return literal;
|
|
9904
|
+
});
|
|
9905
|
+
return { value: expanded, unresolved: [...unresolved] };
|
|
9906
|
+
}
|
|
9907
|
+
function parseEnvIntegrations(content) {
|
|
9908
|
+
const out = {};
|
|
9909
|
+
for (const line2 of content.split("\n")) {
|
|
9910
|
+
if (!line2 || line2.startsWith("#") || !line2.includes("=")) continue;
|
|
9911
|
+
const eqIdx = line2.indexOf("=");
|
|
9912
|
+
const key = line2.slice(0, eqIdx);
|
|
9913
|
+
let value = line2.slice(eqIdx + 1);
|
|
9914
|
+
if (value.length >= 2 && value.startsWith("'") && value.endsWith("'")) {
|
|
9915
|
+
value = value.slice(1, -1).replaceAll("'\\''", "'");
|
|
9916
|
+
}
|
|
9917
|
+
out[key] = value;
|
|
9918
|
+
}
|
|
9919
|
+
return out;
|
|
9920
|
+
}
|
|
9921
|
+
function probeMcpEnvSubstitution(args) {
|
|
9922
|
+
try {
|
|
9923
|
+
const config = JSON.parse(readFileSync2(args.mcpConfigPath, "utf-8"));
|
|
9924
|
+
let env2 = args.baseEnv;
|
|
9925
|
+
if (args.envIntegrationsPath && existsSync(args.envIntegrationsPath)) {
|
|
9926
|
+
env2 = {
|
|
9927
|
+
...args.baseEnv,
|
|
9928
|
+
...parseEnvIntegrations(readFileSync2(args.envIntegrationsPath, "utf-8"))
|
|
9929
|
+
};
|
|
9930
|
+
}
|
|
9931
|
+
return findMissingSubstitutionVars(config, env2);
|
|
9932
|
+
} catch {
|
|
9933
|
+
return [];
|
|
9934
|
+
}
|
|
9935
|
+
}
|
|
9936
|
+
|
|
9911
9937
|
// src/lib/opencode-session.ts
|
|
9912
9938
|
import { spawn, execSync } from "child_process";
|
|
9913
9939
|
import { createServer } from "net";
|
|
@@ -13898,6 +13924,8 @@ export {
|
|
|
13898
13924
|
DEFAULT_FRAMEWORK,
|
|
13899
13925
|
registerFramework,
|
|
13900
13926
|
getFramework,
|
|
13927
|
+
mcpWildcardsForServers,
|
|
13928
|
+
requiredMcpWildcard,
|
|
13901
13929
|
MAX_AVATAR_ENV_URL_BYTES,
|
|
13902
13930
|
resolveAvatarEnvUrl,
|
|
13903
13931
|
CLAUDE_MD_MAX_CHARS,
|
|
@@ -13973,6 +14001,8 @@ export {
|
|
|
13973
14001
|
attributeTranscriptUsageByRun,
|
|
13974
14002
|
USAGE_LIMIT_MARKER_FILENAME,
|
|
13975
14003
|
serializeUsageLimitMarker,
|
|
14004
|
+
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
14005
|
+
serializeAccountEnforcementMarker,
|
|
13976
14006
|
KANBAN_CHECK_COMMAND,
|
|
13977
14007
|
KANBAN_NUDGE_ACTIONABLE_STATUSES,
|
|
13978
14008
|
isSystemInjectedContent,
|
|
@@ -14051,4 +14081,4 @@ export {
|
|
|
14051
14081
|
stopAllSessionsAndWait,
|
|
14052
14082
|
getProjectDir
|
|
14053
14083
|
};
|
|
14054
|
-
//# sourceMappingURL=chunk-
|
|
14084
|
+
//# sourceMappingURL=chunk-TTEKDLQ7.js.map
|