@integrity-labs/agt-cli 0.28.1088 → 0.28.1090
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-JAXSZCTH.js → chunk-3YZWZJZR.js} +4 -4
- package/dist/{chunk-YOIJFB4J.js → chunk-DAZBANX7.js} +4 -2
- package/dist/{chunk-YOIJFB4J.js.map → chunk-DAZBANX7.js.map} +1 -1
- package/dist/{chunk-HN6B5G5V.js → chunk-YBOORROA.js} +2 -2
- package/dist/{claude-pair-runtime-XZXUHC4Q.js → claude-pair-runtime-U3QGHO36.js} +2 -2
- package/dist/lib/manager-worker.js +16 -16
- package/dist/mcp/direct-chat-channel.js +176 -133
- package/dist/mcp/index.js +175 -41
- package/dist/mcp/origami.js +3 -1
- package/dist/mcp/slack-channel.js +347 -262
- package/dist/mcp/teams-channel.js +210 -86
- package/dist/mcp/telegram-channel.js +290 -207
- package/dist/mcp/whatsapp-channel.js +194 -69
- package/dist/{persistent-session-QVJASJSQ.js → persistent-session-V3AMSH7S.js} +3 -3
- package/dist/{responsiveness-probe-AZSZBDKL.js → responsiveness-probe-MZBID4WC.js} +3 -3
- package/dist/{session-auth-dead-VY7AZM77.js → session-auth-dead-OCGA6YZW.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-JAXSZCTH.js.map → chunk-3YZWZJZR.js.map} +0 -0
- /package/dist/{chunk-HN6B5G5V.js.map → chunk-YBOORROA.js.map} +0 -0
- /package/dist/{claude-pair-runtime-XZXUHC4Q.js.map → claude-pair-runtime-U3QGHO36.js.map} +0 -0
- /package/dist/{persistent-session-QVJASJSQ.js.map → persistent-session-V3AMSH7S.js.map} +0 -0
- /package/dist/{responsiveness-probe-AZSZBDKL.js.map → responsiveness-probe-MZBID4WC.js.map} +0 -0
- /package/dist/{session-auth-dead-VY7AZM77.js.map → session-auth-dead-OCGA6YZW.js.map} +0 -0
|
@@ -3599,49 +3599,49 @@ var require_fast_uri = __commonJS({
|
|
|
3599
3599
|
schemelessOptions.skipEscape = true;
|
|
3600
3600
|
return serialize(resolved, schemelessOptions);
|
|
3601
3601
|
}
|
|
3602
|
-
function resolveComponent(base,
|
|
3602
|
+
function resolveComponent(base, relative2, options, skipNormalization) {
|
|
3603
3603
|
const target = {};
|
|
3604
3604
|
if (!skipNormalization) {
|
|
3605
3605
|
base = parse3(serialize(base, options), options);
|
|
3606
|
-
|
|
3606
|
+
relative2 = parse3(serialize(relative2, options), options);
|
|
3607
3607
|
}
|
|
3608
3608
|
options = options || {};
|
|
3609
|
-
if (!options.tolerant &&
|
|
3610
|
-
target.scheme =
|
|
3611
|
-
target.userinfo =
|
|
3612
|
-
target.host =
|
|
3613
|
-
target.port =
|
|
3614
|
-
target.path = removeDotSegments(
|
|
3615
|
-
target.query =
|
|
3609
|
+
if (!options.tolerant && relative2.scheme) {
|
|
3610
|
+
target.scheme = relative2.scheme;
|
|
3611
|
+
target.userinfo = relative2.userinfo;
|
|
3612
|
+
target.host = relative2.host;
|
|
3613
|
+
target.port = relative2.port;
|
|
3614
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
3615
|
+
target.query = relative2.query;
|
|
3616
3616
|
} else {
|
|
3617
|
-
if (
|
|
3618
|
-
target.userinfo =
|
|
3619
|
-
target.host =
|
|
3620
|
-
target.port =
|
|
3621
|
-
target.path = removeDotSegments(
|
|
3622
|
-
target.query =
|
|
3617
|
+
if (relative2.userinfo !== void 0 || relative2.host !== void 0 || relative2.port !== void 0) {
|
|
3618
|
+
target.userinfo = relative2.userinfo;
|
|
3619
|
+
target.host = relative2.host;
|
|
3620
|
+
target.port = relative2.port;
|
|
3621
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
3622
|
+
target.query = relative2.query;
|
|
3623
3623
|
} else {
|
|
3624
|
-
if (!
|
|
3624
|
+
if (!relative2.path) {
|
|
3625
3625
|
target.path = base.path;
|
|
3626
|
-
if (
|
|
3627
|
-
target.query =
|
|
3626
|
+
if (relative2.query !== void 0) {
|
|
3627
|
+
target.query = relative2.query;
|
|
3628
3628
|
} else {
|
|
3629
3629
|
target.query = base.query;
|
|
3630
3630
|
}
|
|
3631
3631
|
} else {
|
|
3632
|
-
if (
|
|
3633
|
-
target.path = removeDotSegments(
|
|
3632
|
+
if (relative2.path[0] === "/") {
|
|
3633
|
+
target.path = removeDotSegments(relative2.path);
|
|
3634
3634
|
} else {
|
|
3635
3635
|
if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
|
|
3636
|
-
target.path = "/" +
|
|
3636
|
+
target.path = "/" + relative2.path;
|
|
3637
3637
|
} else if (!base.path) {
|
|
3638
|
-
target.path =
|
|
3638
|
+
target.path = relative2.path;
|
|
3639
3639
|
} else {
|
|
3640
|
-
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) +
|
|
3640
|
+
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative2.path;
|
|
3641
3641
|
}
|
|
3642
3642
|
target.path = removeDotSegments(target.path);
|
|
3643
3643
|
}
|
|
3644
|
-
target.query =
|
|
3644
|
+
target.query = relative2.query;
|
|
3645
3645
|
}
|
|
3646
3646
|
target.userinfo = base.userinfo;
|
|
3647
3647
|
target.host = base.host;
|
|
@@ -3649,7 +3649,7 @@ var require_fast_uri = __commonJS({
|
|
|
3649
3649
|
}
|
|
3650
3650
|
target.scheme = base.scheme;
|
|
3651
3651
|
}
|
|
3652
|
-
target.fragment =
|
|
3652
|
+
target.fragment = relative2.fragment;
|
|
3653
3653
|
return target;
|
|
3654
3654
|
}
|
|
3655
3655
|
function equal(uriA, uriB, options) {
|
|
@@ -11656,10 +11656,10 @@ var require_resolve_block_map = __commonJS({
|
|
|
11656
11656
|
let offset = bm.offset;
|
|
11657
11657
|
let commentEnd = null;
|
|
11658
11658
|
for (const collItem of bm.items) {
|
|
11659
|
-
const { start, key: key2, sep:
|
|
11659
|
+
const { start, key: key2, sep: sep3, value } = collItem;
|
|
11660
11660
|
const keyProps = resolveProps.resolveProps(start, {
|
|
11661
11661
|
indicator: "explicit-key-ind",
|
|
11662
|
-
next: key2 ??
|
|
11662
|
+
next: key2 ?? sep3?.[0],
|
|
11663
11663
|
offset,
|
|
11664
11664
|
onError,
|
|
11665
11665
|
parentIndent: bm.indent,
|
|
@@ -11673,7 +11673,7 @@ var require_resolve_block_map = __commonJS({
|
|
|
11673
11673
|
else if ("indent" in key2 && key2.indent !== bm.indent)
|
|
11674
11674
|
onError(offset, "BAD_INDENT", startColMsg);
|
|
11675
11675
|
}
|
|
11676
|
-
if (!keyProps.anchor && !keyProps.tag && !
|
|
11676
|
+
if (!keyProps.anchor && !keyProps.tag && !sep3) {
|
|
11677
11677
|
commentEnd = keyProps.end;
|
|
11678
11678
|
if (keyProps.comment) {
|
|
11679
11679
|
if (map.comment)
|
|
@@ -11697,7 +11697,7 @@ var require_resolve_block_map = __commonJS({
|
|
|
11697
11697
|
ctx.atKey = false;
|
|
11698
11698
|
if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
|
|
11699
11699
|
onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique");
|
|
11700
|
-
const valueProps = resolveProps.resolveProps(
|
|
11700
|
+
const valueProps = resolveProps.resolveProps(sep3 ?? [], {
|
|
11701
11701
|
indicator: "map-value-ind",
|
|
11702
11702
|
next: value,
|
|
11703
11703
|
offset: keyNode.range[2],
|
|
@@ -11713,7 +11713,7 @@ var require_resolve_block_map = __commonJS({
|
|
|
11713
11713
|
if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024)
|
|
11714
11714
|
onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key");
|
|
11715
11715
|
}
|
|
11716
|
-
const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset,
|
|
11716
|
+
const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep3, null, valueProps, onError);
|
|
11717
11717
|
if (ctx.schema.compat)
|
|
11718
11718
|
utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);
|
|
11719
11719
|
offset = valueNode.range[2];
|
|
@@ -11804,7 +11804,7 @@ var require_resolve_end = __commonJS({
|
|
|
11804
11804
|
let comment = "";
|
|
11805
11805
|
if (end) {
|
|
11806
11806
|
let hasSpace = false;
|
|
11807
|
-
let
|
|
11807
|
+
let sep3 = "";
|
|
11808
11808
|
for (const token of end) {
|
|
11809
11809
|
const { source, type } = token;
|
|
11810
11810
|
switch (type) {
|
|
@@ -11818,13 +11818,13 @@ var require_resolve_end = __commonJS({
|
|
|
11818
11818
|
if (!comment)
|
|
11819
11819
|
comment = cb;
|
|
11820
11820
|
else
|
|
11821
|
-
comment +=
|
|
11822
|
-
|
|
11821
|
+
comment += sep3 + cb;
|
|
11822
|
+
sep3 = "";
|
|
11823
11823
|
break;
|
|
11824
11824
|
}
|
|
11825
11825
|
case "newline":
|
|
11826
11826
|
if (comment)
|
|
11827
|
-
|
|
11827
|
+
sep3 += source;
|
|
11828
11828
|
hasSpace = true;
|
|
11829
11829
|
break;
|
|
11830
11830
|
default:
|
|
@@ -11867,18 +11867,18 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
11867
11867
|
let offset = fc.offset + fc.start.source.length;
|
|
11868
11868
|
for (let i = 0; i < fc.items.length; ++i) {
|
|
11869
11869
|
const collItem = fc.items[i];
|
|
11870
|
-
const { start, key: key2, sep:
|
|
11870
|
+
const { start, key: key2, sep: sep3, value } = collItem;
|
|
11871
11871
|
const props = resolveProps.resolveProps(start, {
|
|
11872
11872
|
flow: fcName,
|
|
11873
11873
|
indicator: "explicit-key-ind",
|
|
11874
|
-
next: key2 ??
|
|
11874
|
+
next: key2 ?? sep3?.[0],
|
|
11875
11875
|
offset,
|
|
11876
11876
|
onError,
|
|
11877
11877
|
parentIndent: fc.indent,
|
|
11878
11878
|
startOnNewline: false
|
|
11879
11879
|
});
|
|
11880
11880
|
if (!props.found) {
|
|
11881
|
-
if (!props.anchor && !props.tag && !
|
|
11881
|
+
if (!props.anchor && !props.tag && !sep3 && !value) {
|
|
11882
11882
|
if (i === 0 && props.comma)
|
|
11883
11883
|
onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`);
|
|
11884
11884
|
else if (i < fc.items.length - 1)
|
|
@@ -11932,8 +11932,8 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
11932
11932
|
}
|
|
11933
11933
|
}
|
|
11934
11934
|
}
|
|
11935
|
-
if (!isMap && !
|
|
11936
|
-
const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end,
|
|
11935
|
+
if (!isMap && !sep3 && !props.found) {
|
|
11936
|
+
const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep3, null, props, onError);
|
|
11937
11937
|
coll.items.push(valueNode);
|
|
11938
11938
|
offset = valueNode.range[2];
|
|
11939
11939
|
if (isBlock(value))
|
|
@@ -11945,7 +11945,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
11945
11945
|
if (isBlock(key2))
|
|
11946
11946
|
onError(keyNode.range, "BLOCK_IN_FLOW", blockMsg);
|
|
11947
11947
|
ctx.atKey = false;
|
|
11948
|
-
const valueProps = resolveProps.resolveProps(
|
|
11948
|
+
const valueProps = resolveProps.resolveProps(sep3 ?? [], {
|
|
11949
11949
|
flow: fcName,
|
|
11950
11950
|
indicator: "map-value-ind",
|
|
11951
11951
|
next: value,
|
|
@@ -11956,8 +11956,8 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
11956
11956
|
});
|
|
11957
11957
|
if (valueProps.found) {
|
|
11958
11958
|
if (!isMap && !props.found && ctx.options.strict) {
|
|
11959
|
-
if (
|
|
11960
|
-
for (const st of
|
|
11959
|
+
if (sep3)
|
|
11960
|
+
for (const st of sep3) {
|
|
11961
11961
|
if (st === valueProps.found)
|
|
11962
11962
|
break;
|
|
11963
11963
|
if (st.type === "newline") {
|
|
@@ -11974,7 +11974,7 @@ var require_resolve_flow_collection = __commonJS({
|
|
|
11974
11974
|
else
|
|
11975
11975
|
onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`);
|
|
11976
11976
|
}
|
|
11977
|
-
const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end,
|
|
11977
|
+
const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep3, null, valueProps, onError) : null;
|
|
11978
11978
|
if (valueNode) {
|
|
11979
11979
|
if (isBlock(value))
|
|
11980
11980
|
onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg);
|
|
@@ -12154,7 +12154,7 @@ var require_resolve_block_scalar = __commonJS({
|
|
|
12154
12154
|
chompStart = i + 1;
|
|
12155
12155
|
}
|
|
12156
12156
|
let value = "";
|
|
12157
|
-
let
|
|
12157
|
+
let sep3 = "";
|
|
12158
12158
|
let prevMoreIndented = false;
|
|
12159
12159
|
for (let i = 0; i < contentStart; ++i)
|
|
12160
12160
|
value += lines[i][0].slice(trimIndent) + "\n";
|
|
@@ -12171,24 +12171,24 @@ var require_resolve_block_scalar = __commonJS({
|
|
|
12171
12171
|
indent = "";
|
|
12172
12172
|
}
|
|
12173
12173
|
if (type === Scalar.Scalar.BLOCK_LITERAL) {
|
|
12174
|
-
value +=
|
|
12175
|
-
|
|
12174
|
+
value += sep3 + indent.slice(trimIndent) + content;
|
|
12175
|
+
sep3 = "\n";
|
|
12176
12176
|
} else if (indent.length > trimIndent || content[0] === " ") {
|
|
12177
|
-
if (
|
|
12178
|
-
|
|
12179
|
-
else if (!prevMoreIndented &&
|
|
12180
|
-
|
|
12181
|
-
value +=
|
|
12182
|
-
|
|
12177
|
+
if (sep3 === " ")
|
|
12178
|
+
sep3 = "\n";
|
|
12179
|
+
else if (!prevMoreIndented && sep3 === "\n")
|
|
12180
|
+
sep3 = "\n\n";
|
|
12181
|
+
value += sep3 + indent.slice(trimIndent) + content;
|
|
12182
|
+
sep3 = "\n";
|
|
12183
12183
|
prevMoreIndented = true;
|
|
12184
12184
|
} else if (content === "") {
|
|
12185
|
-
if (
|
|
12185
|
+
if (sep3 === "\n")
|
|
12186
12186
|
value += "\n";
|
|
12187
12187
|
else
|
|
12188
|
-
|
|
12188
|
+
sep3 = "\n";
|
|
12189
12189
|
} else {
|
|
12190
|
-
value +=
|
|
12191
|
-
|
|
12190
|
+
value += sep3 + content;
|
|
12191
|
+
sep3 = " ";
|
|
12192
12192
|
prevMoreIndented = false;
|
|
12193
12193
|
}
|
|
12194
12194
|
}
|
|
@@ -12370,25 +12370,25 @@ var require_resolve_flow_scalar = __commonJS({
|
|
|
12370
12370
|
if (!match)
|
|
12371
12371
|
return source;
|
|
12372
12372
|
let res = match[1];
|
|
12373
|
-
let
|
|
12373
|
+
let sep3 = " ";
|
|
12374
12374
|
let pos = first.lastIndex;
|
|
12375
12375
|
line.lastIndex = pos;
|
|
12376
12376
|
while (match = line.exec(source)) {
|
|
12377
12377
|
if (match[1] === "") {
|
|
12378
|
-
if (
|
|
12379
|
-
res +=
|
|
12378
|
+
if (sep3 === "\n")
|
|
12379
|
+
res += sep3;
|
|
12380
12380
|
else
|
|
12381
|
-
|
|
12381
|
+
sep3 = "\n";
|
|
12382
12382
|
} else {
|
|
12383
|
-
res +=
|
|
12384
|
-
|
|
12383
|
+
res += sep3 + match[1];
|
|
12384
|
+
sep3 = " ";
|
|
12385
12385
|
}
|
|
12386
12386
|
pos = line.lastIndex;
|
|
12387
12387
|
}
|
|
12388
12388
|
const last = /[ \t]*(.*)/sy;
|
|
12389
12389
|
last.lastIndex = pos;
|
|
12390
12390
|
match = last.exec(source);
|
|
12391
|
-
return res +
|
|
12391
|
+
return res + sep3 + (match?.[1] ?? "");
|
|
12392
12392
|
}
|
|
12393
12393
|
function doubleQuotedValue(source, onError) {
|
|
12394
12394
|
let res = "";
|
|
@@ -13196,14 +13196,14 @@ var require_cst_stringify = __commonJS({
|
|
|
13196
13196
|
}
|
|
13197
13197
|
}
|
|
13198
13198
|
}
|
|
13199
|
-
function stringifyItem({ start, key: key2, sep:
|
|
13199
|
+
function stringifyItem({ start, key: key2, sep: sep3, value }) {
|
|
13200
13200
|
let res = "";
|
|
13201
13201
|
for (const st of start)
|
|
13202
13202
|
res += st.source;
|
|
13203
13203
|
if (key2)
|
|
13204
13204
|
res += stringifyToken(key2);
|
|
13205
|
-
if (
|
|
13206
|
-
for (const st of
|
|
13205
|
+
if (sep3)
|
|
13206
|
+
for (const st of sep3)
|
|
13207
13207
|
res += st.source;
|
|
13208
13208
|
if (value)
|
|
13209
13209
|
res += stringifyToken(value);
|
|
@@ -14353,18 +14353,18 @@ var require_parser = __commonJS({
|
|
|
14353
14353
|
if (this.type === "map-value-ind") {
|
|
14354
14354
|
const prev = getPrevProps(this.peek(2));
|
|
14355
14355
|
const start = getFirstKeyStartProps(prev);
|
|
14356
|
-
let
|
|
14356
|
+
let sep3;
|
|
14357
14357
|
if (scalar.end) {
|
|
14358
|
-
|
|
14359
|
-
|
|
14358
|
+
sep3 = scalar.end;
|
|
14359
|
+
sep3.push(this.sourceToken);
|
|
14360
14360
|
delete scalar.end;
|
|
14361
14361
|
} else
|
|
14362
|
-
|
|
14362
|
+
sep3 = [this.sourceToken];
|
|
14363
14363
|
const map = {
|
|
14364
14364
|
type: "block-map",
|
|
14365
14365
|
offset: scalar.offset,
|
|
14366
14366
|
indent: scalar.indent,
|
|
14367
|
-
items: [{ start, key: scalar, sep:
|
|
14367
|
+
items: [{ start, key: scalar, sep: sep3 }]
|
|
14368
14368
|
};
|
|
14369
14369
|
this.onKeyLine = true;
|
|
14370
14370
|
this.stack[this.stack.length - 1] = map;
|
|
@@ -14517,15 +14517,15 @@ var require_parser = __commonJS({
|
|
|
14517
14517
|
} else if (isFlowToken(it.key) && !includesToken(it.sep, "newline")) {
|
|
14518
14518
|
const start2 = getFirstKeyStartProps(it.start);
|
|
14519
14519
|
const key2 = it.key;
|
|
14520
|
-
const
|
|
14521
|
-
|
|
14520
|
+
const sep3 = it.sep;
|
|
14521
|
+
sep3.push(this.sourceToken);
|
|
14522
14522
|
delete it.key;
|
|
14523
14523
|
delete it.sep;
|
|
14524
14524
|
this.stack.push({
|
|
14525
14525
|
type: "block-map",
|
|
14526
14526
|
offset: this.offset,
|
|
14527
14527
|
indent: this.indent,
|
|
14528
|
-
items: [{ start: start2, key: key2, sep:
|
|
14528
|
+
items: [{ start: start2, key: key2, sep: sep3 }]
|
|
14529
14529
|
});
|
|
14530
14530
|
} else if (start.length > 0) {
|
|
14531
14531
|
it.sep = it.sep.concat(start, this.sourceToken);
|
|
@@ -14719,13 +14719,13 @@ var require_parser = __commonJS({
|
|
|
14719
14719
|
const prev = getPrevProps(parent);
|
|
14720
14720
|
const start = getFirstKeyStartProps(prev);
|
|
14721
14721
|
fixFlowSeqItems(fc);
|
|
14722
|
-
const
|
|
14723
|
-
|
|
14722
|
+
const sep3 = fc.end.splice(1, fc.end.length);
|
|
14723
|
+
sep3.push(this.sourceToken);
|
|
14724
14724
|
const map = {
|
|
14725
14725
|
type: "block-map",
|
|
14726
14726
|
offset: fc.offset,
|
|
14727
14727
|
indent: fc.indent,
|
|
14728
|
-
items: [{ start, key: fc, sep:
|
|
14728
|
+
items: [{ start, key: fc, sep: sep3 }]
|
|
14729
14729
|
};
|
|
14730
14730
|
this.onKeyLine = true;
|
|
14731
14731
|
this.stack[this.stack.length - 1] = map;
|
|
@@ -18932,7 +18932,7 @@ var require_filters = __commonJS({
|
|
|
18932
18932
|
return r.copySafeness(str2, res);
|
|
18933
18933
|
}
|
|
18934
18934
|
_exports.indent = indent;
|
|
18935
|
-
function
|
|
18935
|
+
function join23(arr, del, attr) {
|
|
18936
18936
|
del = del || "";
|
|
18937
18937
|
if (attr) {
|
|
18938
18938
|
arr = lib.map(arr, function(v) {
|
|
@@ -18941,7 +18941,7 @@ var require_filters = __commonJS({
|
|
|
18941
18941
|
}
|
|
18942
18942
|
return arr.join(del);
|
|
18943
18943
|
}
|
|
18944
|
-
_exports.join =
|
|
18944
|
+
_exports.join = join23;
|
|
18945
18945
|
function last(arr) {
|
|
18946
18946
|
return arr[arr.length - 1];
|
|
18947
18947
|
}
|
|
@@ -20107,9 +20107,9 @@ var require_handler = __commonJS({
|
|
|
20107
20107
|
if (this.fsw.closed) {
|
|
20108
20108
|
return;
|
|
20109
20109
|
}
|
|
20110
|
-
const
|
|
20110
|
+
const dirname7 = sysPath.dirname(file);
|
|
20111
20111
|
const basename2 = sysPath.basename(file);
|
|
20112
|
-
const parent = this.fsw._getWatchedDir(
|
|
20112
|
+
const parent = this.fsw._getWatchedDir(dirname7);
|
|
20113
20113
|
let prevStats = stats;
|
|
20114
20114
|
if (parent.has(basename2))
|
|
20115
20115
|
return;
|
|
@@ -20136,7 +20136,7 @@ var require_handler = __commonJS({
|
|
|
20136
20136
|
prevStats = newStats2;
|
|
20137
20137
|
}
|
|
20138
20138
|
} catch (error2) {
|
|
20139
|
-
this.fsw._remove(
|
|
20139
|
+
this.fsw._remove(dirname7, basename2);
|
|
20140
20140
|
}
|
|
20141
20141
|
} else if (parent.has(basename2)) {
|
|
20142
20142
|
const at = newStats.atimeMs;
|
|
@@ -20400,11 +20400,11 @@ var require_chokidar = __commonJS({
|
|
|
20400
20400
|
if (matcher.path === string3)
|
|
20401
20401
|
return true;
|
|
20402
20402
|
if (matcher.recursive) {
|
|
20403
|
-
const
|
|
20404
|
-
if (!
|
|
20403
|
+
const relative2 = sysPath.relative(matcher.path, string3);
|
|
20404
|
+
if (!relative2) {
|
|
20405
20405
|
return false;
|
|
20406
20406
|
}
|
|
20407
|
-
return !
|
|
20407
|
+
return !relative2.startsWith("..") && !sysPath.isAbsolute(relative2);
|
|
20408
20408
|
}
|
|
20409
20409
|
return false;
|
|
20410
20410
|
};
|
|
@@ -21372,11 +21372,11 @@ var require_globals = __commonJS({
|
|
|
21372
21372
|
}
|
|
21373
21373
|
};
|
|
21374
21374
|
}
|
|
21375
|
-
function _joiner(
|
|
21376
|
-
|
|
21375
|
+
function _joiner(sep3) {
|
|
21376
|
+
sep3 = sep3 || ",";
|
|
21377
21377
|
var first = true;
|
|
21378
21378
|
return function() {
|
|
21379
|
-
var val = first ? "" :
|
|
21379
|
+
var val = first ? "" : sep3;
|
|
21380
21380
|
first = false;
|
|
21381
21381
|
return val;
|
|
21382
21382
|
};
|
|
@@ -21406,8 +21406,8 @@ var require_globals = __commonJS({
|
|
|
21406
21406
|
cycler: function cycler() {
|
|
21407
21407
|
return _cycler(Array.prototype.slice.call(arguments));
|
|
21408
21408
|
},
|
|
21409
|
-
joiner: function joiner(
|
|
21410
|
-
return _joiner(
|
|
21409
|
+
joiner: function joiner(sep3) {
|
|
21410
|
+
return _joiner(sep3);
|
|
21411
21411
|
}
|
|
21412
21412
|
};
|
|
21413
21413
|
}
|
|
@@ -30475,10 +30475,10 @@ function leadingAddresseeIds(text) {
|
|
|
30475
30475
|
ids.push(id);
|
|
30476
30476
|
if (after.length === 0)
|
|
30477
30477
|
break;
|
|
30478
|
-
const
|
|
30479
|
-
if (!
|
|
30478
|
+
const sep3 = ADDRESSEE_SEPARATOR.exec(after);
|
|
30479
|
+
if (!sep3)
|
|
30480
30480
|
break;
|
|
30481
|
-
rest = after.slice(
|
|
30481
|
+
rest = after.slice(sep3[0].length);
|
|
30482
30482
|
}
|
|
30483
30483
|
return ids;
|
|
30484
30484
|
}
|
|
@@ -33509,7 +33509,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
33509
33509
|
})();</script>`;
|
|
33510
33510
|
|
|
33511
33511
|
// ../core/dist/integrations/augmented-live/publisher.js
|
|
33512
|
-
var PRESENTER_CHROME_SELECTORS = "#al-download, .al-launcher, .al-stats-btn, .al-edit-btn";
|
|
33512
|
+
var PRESENTER_CHROME_SELECTORS = "#al-download, #al-vis, .al-launcher, .al-stats-btn, .al-edit-btn";
|
|
33513
33513
|
var presenterChromeCss = `
|
|
33514
33514
|
/* ENG-9516: presenter mode. */
|
|
33515
33515
|
${PRESENTER_CHROME_SELECTORS}{transition:opacity .25s ease,visibility .25s ease}
|
|
@@ -33540,6 +33540,8 @@ var DECK_ATTRIBUTION_BOTTOM_PX = DECK_HUD_TOP_PX + DECK_CHROME_GAP_PX;
|
|
|
33540
33540
|
var DOWNLOAD_BOTTOM_PX = 72;
|
|
33541
33541
|
var DOWNLOAD_MOBILE_MIN_HEIGHT_PX = 44;
|
|
33542
33542
|
var DECK_ATTRIBUTION_NARROW_BOTTOM_PX = DOWNLOAD_BOTTOM_PX + DOWNLOAD_MOBILE_MIN_HEIGHT_PX + DECK_CHROME_GAP_PX;
|
|
33543
|
+
var VISIBILITY_BOTTOM_PX = DOWNLOAD_BOTTOM_PX + DOWNLOAD_MOBILE_MIN_HEIGHT_PX + DECK_CHROME_GAP_PX;
|
|
33544
|
+
var DECK_ATTRIBUTION_NARROW_WITH_VISIBILITY_BOTTOM_PX = VISIBILITY_BOTTOM_PX + DOWNLOAD_MOBILE_MIN_HEIGHT_PX + DECK_CHROME_GAP_PX;
|
|
33543
33545
|
|
|
33544
33546
|
// ../core/dist/integrations/augmented-live/asset.js
|
|
33545
33547
|
var MB = 1024 * 1024;
|
|
@@ -41362,9 +41364,9 @@ function resolveEgressTargets(toolName, args, registry2) {
|
|
|
41362
41364
|
for (const field of spec.channelThread ?? []) {
|
|
41363
41365
|
const raw = str(a[field]);
|
|
41364
41366
|
if (!raw) continue;
|
|
41365
|
-
const
|
|
41366
|
-
if (
|
|
41367
|
-
push(raw.slice(0,
|
|
41367
|
+
const sep3 = raw.indexOf(":");
|
|
41368
|
+
if (sep3 <= 0) continue;
|
|
41369
|
+
push(raw.slice(0, sep3), str(raw.slice(sep3 + 1)));
|
|
41368
41370
|
}
|
|
41369
41371
|
for (const field of spec.inboundId ?? []) {
|
|
41370
41372
|
const id = str(a[field]);
|
|
@@ -42996,9 +42998,9 @@ import {
|
|
|
42996
42998
|
createWriteStream,
|
|
42997
42999
|
existsSync as existsSync10,
|
|
42998
43000
|
ftruncateSync,
|
|
42999
|
-
mkdirSync as
|
|
43001
|
+
mkdirSync as mkdirSync10,
|
|
43000
43002
|
openSync as openSync2,
|
|
43001
|
-
readFileSync as
|
|
43003
|
+
readFileSync as readFileSync19,
|
|
43002
43004
|
readdirSync as readdirSync7,
|
|
43003
43005
|
renameSync as renameSync5,
|
|
43004
43006
|
statSync as statSync5,
|
|
@@ -43007,8 +43009,8 @@ import {
|
|
|
43007
43009
|
writeFileSync as writeFileSync14,
|
|
43008
43010
|
writeSync
|
|
43009
43011
|
} from "fs";
|
|
43010
|
-
import { basename, join as
|
|
43011
|
-
import { homedir as
|
|
43012
|
+
import { basename, join as join22, resolve as resolve2 } from "path";
|
|
43013
|
+
import { homedir as homedir7 } from "os";
|
|
43012
43014
|
import { createHash as createHash3, randomUUID as randomUUID2 } from "crypto";
|
|
43013
43015
|
|
|
43014
43016
|
// src/slack-thread-store.ts
|
|
@@ -43312,7 +43314,7 @@ function reconnectDelayMs(attempt, opts = {}) {
|
|
|
43312
43314
|
function redactSocketUrl(text) {
|
|
43313
43315
|
return text.replace(
|
|
43314
43316
|
/([?&])(ticket|token|app_id_key)=[^&\s"']*/gi,
|
|
43315
|
-
(_m,
|
|
43317
|
+
(_m, sep3, key2) => `${sep3}${key2}=<redacted>`
|
|
43316
43318
|
);
|
|
43317
43319
|
}
|
|
43318
43320
|
function describeWebSocketError(err) {
|
|
@@ -43402,6 +43404,9 @@ function foldTurnInitiatorLedger(existing, marker, maxAgeMs = TURN_INITIATOR_MAX
|
|
|
43402
43404
|
sender_id: marker.sender_id,
|
|
43403
43405
|
...marker.sender_name ? { sender_name: marker.sender_name } : {},
|
|
43404
43406
|
...marker.channel_ref ? { channel_ref: marker.channel_ref } : {},
|
|
43407
|
+
...marker.chat_kind ? { chat_kind: marker.chat_kind } : {},
|
|
43408
|
+
...marker.chat_id ? { chat_id: marker.chat_id } : {},
|
|
43409
|
+
...marker.unattributed ? { unattributed: true } : {},
|
|
43405
43410
|
ts: marker.ts
|
|
43406
43411
|
});
|
|
43407
43412
|
kept.sort((a, b) => b.ts - a.ts);
|
|
@@ -43416,7 +43421,7 @@ function updateTurnInitiatorLedger(singleSlotFile, marker) {
|
|
|
43416
43421
|
} catch {
|
|
43417
43422
|
}
|
|
43418
43423
|
const next = foldTurnInitiatorLedger(existing, marker);
|
|
43419
|
-
const tmp = `${ledgerFile}.tmp`;
|
|
43424
|
+
const tmp = `${ledgerFile}.${process.pid}.${Date.now()}.tmp`;
|
|
43420
43425
|
writeFileSync7(tmp, JSON.stringify(next), "utf8");
|
|
43421
43426
|
renameSync2(tmp, ledgerFile);
|
|
43422
43427
|
}
|
|
@@ -43437,9 +43442,137 @@ function writeTurnInitiatorMarker(input) {
|
|
|
43437
43442
|
}
|
|
43438
43443
|
}
|
|
43439
43444
|
|
|
43445
|
+
// src/turn-context.ts
|
|
43446
|
+
import { mkdirSync as mkdirSync6, readFileSync as readFileSync11 } from "fs";
|
|
43447
|
+
import { homedir as homedir6 } from "os";
|
|
43448
|
+
import { dirname as dirname5, join as join15 } from "path";
|
|
43449
|
+
|
|
43450
|
+
// ../core/dist/provisioning/frameworks/claudecode/agent-dir-alias.js
|
|
43451
|
+
import { isAbsolute, join as join13, relative, sep as sep2 } from "path";
|
|
43452
|
+
var VALID_CODE_NAME = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
43453
|
+
var VALID_AGENT_ID = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
|
|
43454
|
+
var INITIATOR_BASENAME = ".current-turn-initiator.json";
|
|
43455
|
+
function isSafeAgentSegment(segment) {
|
|
43456
|
+
return VALID_CODE_NAME.test(segment) || VALID_AGENT_ID.test(segment);
|
|
43457
|
+
}
|
|
43458
|
+
function initiatorDirSegment(initiatorFile, homeDir) {
|
|
43459
|
+
const rel = relative(join13(homeDir, ".augmented"), initiatorFile);
|
|
43460
|
+
if (!rel || isAbsolute(rel))
|
|
43461
|
+
return null;
|
|
43462
|
+
const parts = rel.split(sep2);
|
|
43463
|
+
if (parts.length !== 2 || parts[1] !== INITIATOR_BASENAME)
|
|
43464
|
+
return null;
|
|
43465
|
+
const segment = parts[0];
|
|
43466
|
+
if (segment === void 0)
|
|
43467
|
+
return null;
|
|
43468
|
+
return isSafeAgentSegment(segment) ? segment : null;
|
|
43469
|
+
}
|
|
43470
|
+
function resolveAgentDirAlias(input) {
|
|
43471
|
+
const { codeName, turnInitiatorFile, agentId, homeDir } = input;
|
|
43472
|
+
const codeNameTrimmed = typeof codeName === "string" ? codeName.trim() : "";
|
|
43473
|
+
if (codeNameTrimmed && VALID_CODE_NAME.test(codeNameTrimmed)) {
|
|
43474
|
+
return join13(homeDir, ".augmented", codeNameTrimmed);
|
|
43475
|
+
}
|
|
43476
|
+
const initiator = typeof turnInitiatorFile === "string" ? turnInitiatorFile.trim() : "";
|
|
43477
|
+
if (initiator) {
|
|
43478
|
+
const segment = initiatorDirSegment(initiator, homeDir);
|
|
43479
|
+
if (segment)
|
|
43480
|
+
return join13(homeDir, ".augmented", segment);
|
|
43481
|
+
}
|
|
43482
|
+
const agentIdTrimmed = typeof agentId === "string" ? agentId.trim() : "";
|
|
43483
|
+
if (agentIdTrimmed && VALID_AGENT_ID.test(agentIdTrimmed)) {
|
|
43484
|
+
return join13(homeDir, ".augmented", agentIdTrimmed);
|
|
43485
|
+
}
|
|
43486
|
+
return null;
|
|
43487
|
+
}
|
|
43488
|
+
|
|
43489
|
+
// src/scheduled-turn-marker.ts
|
|
43490
|
+
import { readFileSync as readFileSync10, unlinkSync as unlinkSync5 } from "fs";
|
|
43491
|
+
import { join as join14 } from "path";
|
|
43492
|
+
var SCHEDULED_TURN_MARKER_FILENAME2 = ".current-scheduled-turn.json";
|
|
43493
|
+
var SCHEDULED_TURN_MAX_AGE_MS = 15 * 60 * 1e3;
|
|
43494
|
+
function validateScheduledTurnMarker(raw, now, maxAgeMs = SCHEDULED_TURN_MAX_AGE_MS) {
|
|
43495
|
+
if (!raw || typeof raw !== "object") return null;
|
|
43496
|
+
const m = raw;
|
|
43497
|
+
if (typeof m.ts !== "number" || !Number.isFinite(m.ts)) return null;
|
|
43498
|
+
if (now - m.ts > maxAgeMs || now - m.ts < 0) return null;
|
|
43499
|
+
const out = { ts: m.ts };
|
|
43500
|
+
if (typeof m.task_id === "string" && m.task_id.length > 0) out.task_id = m.task_id;
|
|
43501
|
+
const t = m.target;
|
|
43502
|
+
if (t && typeof t === "object") {
|
|
43503
|
+
const tc = t;
|
|
43504
|
+
if (typeof tc.channel_id === "string" && tc.channel_id.length > 0) {
|
|
43505
|
+
out.target = {
|
|
43506
|
+
channel_id: tc.channel_id,
|
|
43507
|
+
...typeof tc.thread_ts === "string" && tc.thread_ts.length > 0 ? { thread_ts: tc.thread_ts } : {}
|
|
43508
|
+
};
|
|
43509
|
+
}
|
|
43510
|
+
}
|
|
43511
|
+
return out;
|
|
43512
|
+
}
|
|
43513
|
+
function resolveScheduledTurnDestination(marker, requested) {
|
|
43514
|
+
if (marker.target) {
|
|
43515
|
+
const channel = marker.target.channel_id;
|
|
43516
|
+
const thread_ts = marker.target.thread_ts;
|
|
43517
|
+
return {
|
|
43518
|
+
channel,
|
|
43519
|
+
thread_ts,
|
|
43520
|
+
retargeted: channel !== requested.channel || thread_ts !== requested.thread_ts
|
|
43521
|
+
};
|
|
43522
|
+
}
|
|
43523
|
+
return { channel: requested.channel, thread_ts: void 0, retargeted: Boolean(requested.thread_ts) };
|
|
43524
|
+
}
|
|
43525
|
+
function readScheduledTurnMarker(agentDir, now = Date.now()) {
|
|
43526
|
+
if (!agentDir) return null;
|
|
43527
|
+
try {
|
|
43528
|
+
const raw = JSON.parse(
|
|
43529
|
+
readFileSync10(join14(agentDir, SCHEDULED_TURN_MARKER_FILENAME2), "utf8")
|
|
43530
|
+
);
|
|
43531
|
+
return validateScheduledTurnMarker(raw, now);
|
|
43532
|
+
} catch {
|
|
43533
|
+
return null;
|
|
43534
|
+
}
|
|
43535
|
+
}
|
|
43536
|
+
function clearScheduledTurnMarker(agentDir) {
|
|
43537
|
+
if (!agentDir) return;
|
|
43538
|
+
try {
|
|
43539
|
+
unlinkSync5(join14(agentDir, SCHEDULED_TURN_MARKER_FILENAME2));
|
|
43540
|
+
} catch {
|
|
43541
|
+
}
|
|
43542
|
+
}
|
|
43543
|
+
|
|
43544
|
+
// src/turn-context.ts
|
|
43545
|
+
var TURN_INITIATOR_MARKER_FILENAME = ".current-turn-initiator.json";
|
|
43546
|
+
function writeUnattributedTurnMarker(channel, opts = {}) {
|
|
43547
|
+
try {
|
|
43548
|
+
const file = resolveTurnInitiatorFile(opts.env ?? process.env, opts.home ?? homedir6());
|
|
43549
|
+
if (!file) return;
|
|
43550
|
+
mkdirSync6(dirname5(file), { recursive: true });
|
|
43551
|
+
updateTurnInitiatorLedger(file, {
|
|
43552
|
+
channel,
|
|
43553
|
+
sender_id: "",
|
|
43554
|
+
channel_ref: "unattributed",
|
|
43555
|
+
unattributed: true,
|
|
43556
|
+
ts: opts.now ?? Date.now()
|
|
43557
|
+
});
|
|
43558
|
+
} catch {
|
|
43559
|
+
}
|
|
43560
|
+
}
|
|
43561
|
+
function resolveTurnInitiatorFile(env2 = process.env, home = homedir6()) {
|
|
43562
|
+
const injected = env2["AGT_TURN_INITIATOR_FILE"]?.trim();
|
|
43563
|
+
if (injected) return injected;
|
|
43564
|
+
const dir = resolveAgentDirAlias({
|
|
43565
|
+
codeName: env2["AGT_AGENT_CODE_NAME"],
|
|
43566
|
+
agentId: env2["AGT_AGENT_ID"],
|
|
43567
|
+
turnInitiatorFile: null,
|
|
43568
|
+
homeDir: home
|
|
43569
|
+
});
|
|
43570
|
+
return dir ? join15(dir, TURN_INITIATOR_MARKER_FILENAME) : null;
|
|
43571
|
+
}
|
|
43572
|
+
|
|
43440
43573
|
// src/slack-bot-photo.ts
|
|
43441
|
-
import { existsSync as existsSync7, mkdirSync as
|
|
43442
|
-
import { dirname as
|
|
43574
|
+
import { existsSync as existsSync7, mkdirSync as mkdirSync7, readFileSync as readFileSync12, writeFileSync as writeFileSync8 } from "fs";
|
|
43575
|
+
import { dirname as dirname6 } from "path";
|
|
43443
43576
|
async function applyBotPhoto(opts) {
|
|
43444
43577
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
43445
43578
|
const log = opts.log ?? ((m) => {
|
|
@@ -43448,7 +43581,7 @@ async function applyBotPhoto(opts) {
|
|
|
43448
43581
|
const { token, avatarUrl, markerPath } = opts;
|
|
43449
43582
|
if (markerPath && existsSync7(markerPath)) {
|
|
43450
43583
|
try {
|
|
43451
|
-
if (
|
|
43584
|
+
if (readFileSync12(markerPath, "utf-8").trim() === avatarUrl) {
|
|
43452
43585
|
return { status: "skipped-unchanged" };
|
|
43453
43586
|
}
|
|
43454
43587
|
} catch {
|
|
@@ -43489,7 +43622,7 @@ async function applyBotPhoto(opts) {
|
|
|
43489
43622
|
}
|
|
43490
43623
|
if (markerPath) {
|
|
43491
43624
|
try {
|
|
43492
|
-
|
|
43625
|
+
mkdirSync7(dirname6(markerPath), { recursive: true, mode: 448 });
|
|
43493
43626
|
writeFileSync8(markerPath, avatarUrl, { mode: 384 });
|
|
43494
43627
|
} catch {
|
|
43495
43628
|
}
|
|
@@ -43573,8 +43706,8 @@ function conversationalLaneMeta(expectsReply = true) {
|
|
|
43573
43706
|
}
|
|
43574
43707
|
|
|
43575
43708
|
// src/inbound-lane-telemetry.ts
|
|
43576
|
-
import { readFileSync as
|
|
43577
|
-
import { join as
|
|
43709
|
+
import { readFileSync as readFileSync13, writeFileSync as writeFileSync9 } from "fs";
|
|
43710
|
+
import { join as join16 } from "path";
|
|
43578
43711
|
var LANE_CLASSIFICATION_COUNTER_SUFFIX = "-lane-classifications.json";
|
|
43579
43712
|
var SUSPECTED_MISCLASSIFICATION_KEY = "suspected_misclassification";
|
|
43580
43713
|
var HUMAN_CHANNEL_SOURCES = /* @__PURE__ */ new Set([
|
|
@@ -43591,10 +43724,10 @@ function isSuspectedMisclassification(lane, source) {
|
|
|
43591
43724
|
}
|
|
43592
43725
|
function recordLaneClassification(agentDir, channel, classification) {
|
|
43593
43726
|
if (!agentDir) return;
|
|
43594
|
-
const path =
|
|
43727
|
+
const path = join16(agentDir, `${channel}${LANE_CLASSIFICATION_COUNTER_SUFFIX}`);
|
|
43595
43728
|
let counts = {};
|
|
43596
43729
|
try {
|
|
43597
|
-
const parsed = JSON.parse(
|
|
43730
|
+
const parsed = JSON.parse(readFileSync13(path, "utf-8"));
|
|
43598
43731
|
if (parsed && typeof parsed === "object") counts = parsed;
|
|
43599
43732
|
} catch {
|
|
43600
43733
|
}
|
|
@@ -43610,8 +43743,8 @@ function recordLaneClassification(agentDir, channel, classification) {
|
|
|
43610
43743
|
}
|
|
43611
43744
|
|
|
43612
43745
|
// src/slack-inbound-registry.ts
|
|
43613
|
-
import { readdirSync as readdirSync5, readFileSync as
|
|
43614
|
-
import { join as
|
|
43746
|
+
import { readdirSync as readdirSync5, readFileSync as readFileSync14 } from "fs";
|
|
43747
|
+
import { join as join17 } from "path";
|
|
43615
43748
|
var DEFAULT_MAX_ENTRIES = 500;
|
|
43616
43749
|
var DEFAULT_CLEARED_TTL_MS = 6 * 60 * 60 * 1e3;
|
|
43617
43750
|
function entryKey(channel, messageTs) {
|
|
@@ -43732,7 +43865,7 @@ function createInboundRegistry(opts = {}) {
|
|
|
43732
43865
|
if (name.includes(".retry-") || name.includes(".poison")) continue;
|
|
43733
43866
|
let marker;
|
|
43734
43867
|
try {
|
|
43735
|
-
marker = JSON.parse(
|
|
43868
|
+
marker = JSON.parse(readFileSync14(join17(dir, name), "utf-8"));
|
|
43736
43869
|
} catch {
|
|
43737
43870
|
continue;
|
|
43738
43871
|
}
|
|
@@ -43777,17 +43910,17 @@ function slackInboundId(channel, threadTs, messageTs) {
|
|
|
43777
43910
|
}
|
|
43778
43911
|
|
|
43779
43912
|
// src/inbound-delivery-ledger.ts
|
|
43780
|
-
import { existsSync as existsSync8, mkdirSync as
|
|
43781
|
-
import { join as
|
|
43913
|
+
import { existsSync as existsSync8, mkdirSync as mkdirSync8, readdirSync as readdirSync6, readFileSync as readFileSync15, renameSync as renameSync3, writeFileSync as writeFileSync10 } from "fs";
|
|
43914
|
+
import { join as join18 } from "path";
|
|
43782
43915
|
function safeInboundId(inboundId) {
|
|
43783
43916
|
return inboundId.replace(/[^A-Za-z0-9_-]/g, "_");
|
|
43784
43917
|
}
|
|
43785
43918
|
var defaultDeps = {
|
|
43786
|
-
mkdir: (dir) =>
|
|
43919
|
+
mkdir: (dir) => mkdirSync8(dir, { recursive: true }),
|
|
43787
43920
|
writeFile: (path, data) => writeFileSync10(path, data, "utf8"),
|
|
43788
43921
|
rename: (from, to) => renameSync3(from, to),
|
|
43789
43922
|
readdir: (dir) => readdirSync6(dir),
|
|
43790
|
-
readFile: (path) =>
|
|
43923
|
+
readFile: (path) => readFileSync15(path, "utf8"),
|
|
43791
43924
|
exists: (path) => existsSync8(path)
|
|
43792
43925
|
};
|
|
43793
43926
|
function writeInboundDeliveryLedgerEntry(dir, record2, deps = defaultDeps) {
|
|
@@ -43796,7 +43929,7 @@ function writeInboundDeliveryLedgerEntry(dir, record2, deps = defaultDeps) {
|
|
|
43796
43929
|
if (!safe || safe.includes("/") || safe.includes("\\") || safe.includes("..")) return;
|
|
43797
43930
|
try {
|
|
43798
43931
|
deps.mkdir(dir);
|
|
43799
|
-
const final =
|
|
43932
|
+
const final = join18(dir, `${safe}.json`);
|
|
43800
43933
|
const tmp = `${final}.tmp`;
|
|
43801
43934
|
deps.writeFile(tmp, JSON.stringify(record2));
|
|
43802
43935
|
deps.rename(tmp, final);
|
|
@@ -43981,8 +44114,8 @@ function describeSendOutcome(dest) {
|
|
|
43981
44114
|
}
|
|
43982
44115
|
|
|
43983
44116
|
// src/slack-reply-binding-telemetry.ts
|
|
43984
|
-
import { readFileSync as
|
|
43985
|
-
import { join as
|
|
44117
|
+
import { readFileSync as readFileSync16, writeFileSync as writeFileSync11 } from "fs";
|
|
44118
|
+
import { join as join19 } from "path";
|
|
43986
44119
|
var REPLY_BINDING_CLASSIFICATION_COUNTER_SUFFIX = "-reply-binding-classifications.json";
|
|
43987
44120
|
var UNKNOWN_INBOUND_ID_KEY = "unknown_inbound_id";
|
|
43988
44121
|
var CHANNEL_MISTARGET_CORRECTED_KEY = "channel_mistarget_corrected";
|
|
@@ -43997,10 +44130,10 @@ function slackReplyBindingMode() {
|
|
|
43997
44130
|
}
|
|
43998
44131
|
function recordReplyBindingClassification(agentDir, channel, input) {
|
|
43999
44132
|
if (!agentDir) return;
|
|
44000
|
-
const path =
|
|
44133
|
+
const path = join19(agentDir, `${channel}${REPLY_BINDING_CLASSIFICATION_COUNTER_SUFFIX}`);
|
|
44001
44134
|
let counts = {};
|
|
44002
44135
|
try {
|
|
44003
|
-
const parsed = JSON.parse(
|
|
44136
|
+
const parsed = JSON.parse(readFileSync16(path, "utf-8"));
|
|
44004
44137
|
if (parsed && typeof parsed === "object") counts = parsed;
|
|
44005
44138
|
} catch {
|
|
44006
44139
|
}
|
|
@@ -44015,10 +44148,10 @@ function recordReplyBindingClassification(agentDir, channel, input) {
|
|
|
44015
44148
|
}
|
|
44016
44149
|
function recordScheduledChannelOverride(agentDir, channel, input) {
|
|
44017
44150
|
if (!agentDir) return;
|
|
44018
|
-
const path =
|
|
44151
|
+
const path = join19(agentDir, `${channel}${REPLY_BINDING_CLASSIFICATION_COUNTER_SUFFIX}`);
|
|
44019
44152
|
let counts = {};
|
|
44020
44153
|
try {
|
|
44021
|
-
const parsed = JSON.parse(
|
|
44154
|
+
const parsed = JSON.parse(readFileSync16(path, "utf-8"));
|
|
44022
44155
|
if (parsed && typeof parsed === "object") counts = parsed;
|
|
44023
44156
|
} catch {
|
|
44024
44157
|
}
|
|
@@ -44031,10 +44164,10 @@ function recordScheduledChannelOverride(agentDir, channel, input) {
|
|
|
44031
44164
|
}
|
|
44032
44165
|
function recordChannelMistarget(agentDir, channel, input) {
|
|
44033
44166
|
if (!agentDir) return;
|
|
44034
|
-
const path =
|
|
44167
|
+
const path = join19(agentDir, `${channel}${REPLY_BINDING_CLASSIFICATION_COUNTER_SUFFIX}`);
|
|
44035
44168
|
let counts = {};
|
|
44036
44169
|
try {
|
|
44037
|
-
const parsed = JSON.parse(
|
|
44170
|
+
const parsed = JSON.parse(readFileSync16(path, "utf-8"));
|
|
44038
44171
|
if (parsed && typeof parsed === "object") counts = parsed;
|
|
44039
44172
|
} catch {
|
|
44040
44173
|
}
|
|
@@ -44049,8 +44182,8 @@ function recordChannelMistarget(agentDir, channel, input) {
|
|
|
44049
44182
|
}
|
|
44050
44183
|
|
|
44051
44184
|
// src/slack-reply-target-telemetry.ts
|
|
44052
|
-
import { readFileSync as
|
|
44053
|
-
import { join as
|
|
44185
|
+
import { readFileSync as readFileSync17, writeFileSync as writeFileSync12 } from "fs";
|
|
44186
|
+
import { join as join20 } from "path";
|
|
44054
44187
|
var REPLY_TARGET_CLASSIFICATION_COUNTER_SUFFIX = "-reply-target-classifications.json";
|
|
44055
44188
|
function pendingThreadsBucket(n) {
|
|
44056
44189
|
if (n <= 0) return "0";
|
|
@@ -44083,10 +44216,10 @@ function classifyReplyTarget(input) {
|
|
|
44083
44216
|
}
|
|
44084
44217
|
function recordReplyTargetClassification(agentDir, channel, classification) {
|
|
44085
44218
|
if (!agentDir) return;
|
|
44086
|
-
const path =
|
|
44219
|
+
const path = join20(agentDir, `${channel}${REPLY_TARGET_CLASSIFICATION_COUNTER_SUFFIX}`);
|
|
44087
44220
|
let counts = {};
|
|
44088
44221
|
try {
|
|
44089
|
-
const parsed = JSON.parse(
|
|
44222
|
+
const parsed = JSON.parse(readFileSync17(path, "utf-8"));
|
|
44090
44223
|
if (parsed && typeof parsed === "object") counts = parsed;
|
|
44091
44224
|
} catch {
|
|
44092
44225
|
}
|
|
@@ -44101,61 +44234,6 @@ function recordReplyTargetClassification(agentDir, channel, classification) {
|
|
|
44101
44234
|
}
|
|
44102
44235
|
}
|
|
44103
44236
|
|
|
44104
|
-
// src/scheduled-turn-marker.ts
|
|
44105
|
-
import { readFileSync as readFileSync16, unlinkSync as unlinkSync5 } from "fs";
|
|
44106
|
-
import { join as join18 } from "path";
|
|
44107
|
-
var SCHEDULED_TURN_MARKER_FILENAME2 = ".current-scheduled-turn.json";
|
|
44108
|
-
var SCHEDULED_TURN_MAX_AGE_MS = 15 * 60 * 1e3;
|
|
44109
|
-
function validateScheduledTurnMarker(raw, now, maxAgeMs = SCHEDULED_TURN_MAX_AGE_MS) {
|
|
44110
|
-
if (!raw || typeof raw !== "object") return null;
|
|
44111
|
-
const m = raw;
|
|
44112
|
-
if (typeof m.ts !== "number" || !Number.isFinite(m.ts)) return null;
|
|
44113
|
-
if (now - m.ts > maxAgeMs || now - m.ts < 0) return null;
|
|
44114
|
-
const out = { ts: m.ts };
|
|
44115
|
-
if (typeof m.task_id === "string" && m.task_id.length > 0) out.task_id = m.task_id;
|
|
44116
|
-
const t = m.target;
|
|
44117
|
-
if (t && typeof t === "object") {
|
|
44118
|
-
const tc = t;
|
|
44119
|
-
if (typeof tc.channel_id === "string" && tc.channel_id.length > 0) {
|
|
44120
|
-
out.target = {
|
|
44121
|
-
channel_id: tc.channel_id,
|
|
44122
|
-
...typeof tc.thread_ts === "string" && tc.thread_ts.length > 0 ? { thread_ts: tc.thread_ts } : {}
|
|
44123
|
-
};
|
|
44124
|
-
}
|
|
44125
|
-
}
|
|
44126
|
-
return out;
|
|
44127
|
-
}
|
|
44128
|
-
function resolveScheduledTurnDestination(marker, requested) {
|
|
44129
|
-
if (marker.target) {
|
|
44130
|
-
const channel = marker.target.channel_id;
|
|
44131
|
-
const thread_ts = marker.target.thread_ts;
|
|
44132
|
-
return {
|
|
44133
|
-
channel,
|
|
44134
|
-
thread_ts,
|
|
44135
|
-
retargeted: channel !== requested.channel || thread_ts !== requested.thread_ts
|
|
44136
|
-
};
|
|
44137
|
-
}
|
|
44138
|
-
return { channel: requested.channel, thread_ts: void 0, retargeted: Boolean(requested.thread_ts) };
|
|
44139
|
-
}
|
|
44140
|
-
function readScheduledTurnMarker(agentDir, now = Date.now()) {
|
|
44141
|
-
if (!agentDir) return null;
|
|
44142
|
-
try {
|
|
44143
|
-
const raw = JSON.parse(
|
|
44144
|
-
readFileSync16(join18(agentDir, SCHEDULED_TURN_MARKER_FILENAME2), "utf8")
|
|
44145
|
-
);
|
|
44146
|
-
return validateScheduledTurnMarker(raw, now);
|
|
44147
|
-
} catch {
|
|
44148
|
-
return null;
|
|
44149
|
-
}
|
|
44150
|
-
}
|
|
44151
|
-
function clearScheduledTurnMarker(agentDir) {
|
|
44152
|
-
if (!agentDir) return;
|
|
44153
|
-
try {
|
|
44154
|
-
unlinkSync5(join18(agentDir, SCHEDULED_TURN_MARKER_FILENAME2));
|
|
44155
|
-
} catch {
|
|
44156
|
-
}
|
|
44157
|
-
}
|
|
44158
|
-
|
|
44159
44237
|
// src/slack-reply-scheduled-priority.ts
|
|
44160
44238
|
function scheduledDestOverridesNamedChannel(opts) {
|
|
44161
44239
|
if (opts.inboundId || opts.enforceBound) return false;
|
|
@@ -45088,15 +45166,15 @@ function textMentionsBot(text, botId) {
|
|
|
45088
45166
|
// src/mcp-spawn-lock.ts
|
|
45089
45167
|
import {
|
|
45090
45168
|
existsSync as existsSync9,
|
|
45091
|
-
mkdirSync as
|
|
45092
|
-
readFileSync as
|
|
45169
|
+
mkdirSync as mkdirSync9,
|
|
45170
|
+
readFileSync as readFileSync18,
|
|
45093
45171
|
renameSync as renameSync4,
|
|
45094
45172
|
statSync as statSync4,
|
|
45095
45173
|
unlinkSync as unlinkSync6,
|
|
45096
45174
|
utimesSync,
|
|
45097
45175
|
writeFileSync as writeFileSync13
|
|
45098
45176
|
} from "fs";
|
|
45099
|
-
import { join as
|
|
45177
|
+
import { join as join21 } from "path";
|
|
45100
45178
|
var STALE_LOCK_MS = 9e4;
|
|
45101
45179
|
var HEARTBEAT_INTERVAL_MS = 3e4;
|
|
45102
45180
|
function defaultIsPidAlive(pid) {
|
|
@@ -45119,7 +45197,7 @@ function acquireMcpSpawnLock(args) {
|
|
|
45119
45197
|
const nowMs = options.nowMs ?? (() => Date.now());
|
|
45120
45198
|
const lockMtimeMs = options.lockMtimeMs ?? defaultLockMtimeMs;
|
|
45121
45199
|
const staleMs = options.staleMs ?? STALE_LOCK_MS;
|
|
45122
|
-
const path =
|
|
45200
|
+
const path = join21(agentDir, basename2);
|
|
45123
45201
|
const existing = readLockHolder(path);
|
|
45124
45202
|
if (existing) {
|
|
45125
45203
|
if (existing.pid === selfPid) {
|
|
@@ -45133,7 +45211,7 @@ function acquireMcpSpawnLock(args) {
|
|
|
45133
45211
|
}
|
|
45134
45212
|
}
|
|
45135
45213
|
}
|
|
45136
|
-
|
|
45214
|
+
mkdirSync9(agentDir, { recursive: true, mode: 448 });
|
|
45137
45215
|
const tmpPath = `${path}.${selfPid}.tmp`;
|
|
45138
45216
|
const payload = { pid: selfPid, started_at: now() };
|
|
45139
45217
|
writeFileSync13(tmpPath, JSON.stringify(payload), { mode: 384 });
|
|
@@ -45186,7 +45264,7 @@ function defaultLockMtimeMs(path) {
|
|
|
45186
45264
|
function readLockHolder(path) {
|
|
45187
45265
|
if (!existsSync9(path)) return null;
|
|
45188
45266
|
try {
|
|
45189
|
-
const raw =
|
|
45267
|
+
const raw = readFileSync18(path, "utf8");
|
|
45190
45268
|
const parsed = JSON.parse(raw);
|
|
45191
45269
|
const pid = typeof parsed.pid === "number" ? parsed.pid : Number(parsed.pid);
|
|
45192
45270
|
if (!Number.isFinite(pid) || pid <= 0) return null;
|
|
@@ -45639,8 +45717,8 @@ var SLACK_TEAM_PEER_USER_IDS = parseTeamPeerUserIdsEnv(
|
|
|
45639
45717
|
process.env.SLACK_TEAM_PEER_USER_IDS
|
|
45640
45718
|
);
|
|
45641
45719
|
var PEER_HINT_SEEN = /* @__PURE__ */ new Set();
|
|
45642
|
-
var SLACK_AGENT_DIR = AGENT_CODE_NAME ?
|
|
45643
|
-
var SLACK_MCP_CONFIG_PATH = SLACK_AGENT_DIR ?
|
|
45720
|
+
var SLACK_AGENT_DIR = AGENT_CODE_NAME ? join22(homedir7(), ".augmented", AGENT_CODE_NAME) : null;
|
|
45721
|
+
var SLACK_MCP_CONFIG_PATH = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "project", ".mcp.json") : null;
|
|
45644
45722
|
var liveAllowedUsersCache = null;
|
|
45645
45723
|
function readLiveAllowedUsers() {
|
|
45646
45724
|
if (!SLACK_MCP_CONFIG_PATH) return null;
|
|
@@ -45650,7 +45728,7 @@ function readLiveAllowedUsers() {
|
|
|
45650
45728
|
return liveAllowedUsersCache.value;
|
|
45651
45729
|
}
|
|
45652
45730
|
const value = extractAllowedUsersFromMcpJson(
|
|
45653
|
-
|
|
45731
|
+
readFileSync19(SLACK_MCP_CONFIG_PATH, "utf-8")
|
|
45654
45732
|
);
|
|
45655
45733
|
if (value === null) return null;
|
|
45656
45734
|
liveAllowedUsersCache = { mtimeMs, value };
|
|
@@ -45671,7 +45749,7 @@ function readLivePingAllowedUsers() {
|
|
|
45671
45749
|
return livePingAllowedUsersCache.value;
|
|
45672
45750
|
}
|
|
45673
45751
|
const value = extractPingAllowedUsersFromMcpJson(
|
|
45674
|
-
|
|
45752
|
+
readFileSync19(SLACK_MCP_CONFIG_PATH, "utf-8")
|
|
45675
45753
|
);
|
|
45676
45754
|
if (value === null) return null;
|
|
45677
45755
|
livePingAllowedUsersCache = { mtimeMs, value };
|
|
@@ -45683,18 +45761,18 @@ function readLivePingAllowedUsers() {
|
|
|
45683
45761
|
function getEffectivePingAllowedUsers() {
|
|
45684
45762
|
return readLivePingAllowedUsers() ?? PING_ALLOWED_USERS;
|
|
45685
45763
|
}
|
|
45686
|
-
var SLACK_PENDING_INBOUND_DIR = SLACK_AGENT_DIR ?
|
|
45687
|
-
var SLACK_PENDING_INBOUND_STALE_DIR = SLACK_AGENT_DIR ?
|
|
45688
|
-
var SLACK_RESTART_CONTEXT_DIR = SLACK_AGENT_DIR ?
|
|
45689
|
-
var SLACK_RECOVERY_OUTBOX_DIR = SLACK_AGENT_DIR ?
|
|
45690
|
-
var SLACK_RECOVERY_LEDGER_DIR = SLACK_AGENT_DIR ?
|
|
45691
|
-
var SLACK_DELIVERY_LEDGER_DIR = SLACK_AGENT_DIR ?
|
|
45764
|
+
var SLACK_PENDING_INBOUND_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-pending-inbound") : null;
|
|
45765
|
+
var SLACK_PENDING_INBOUND_STALE_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-pending-inbound-stale") : null;
|
|
45766
|
+
var SLACK_RESTART_CONTEXT_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-restart-context") : null;
|
|
45767
|
+
var SLACK_RECOVERY_OUTBOX_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-recovery-outbox") : null;
|
|
45768
|
+
var SLACK_RECOVERY_LEDGER_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, ".agt-slack-recovery-ledger") : null;
|
|
45769
|
+
var SLACK_DELIVERY_LEDGER_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, ".agt-inbound-delivery-ledger") : null;
|
|
45692
45770
|
var slackInboundRegistry = createInboundRegistry();
|
|
45693
|
-
var SLACK_RESTART_CONFIRM_FILE = SLACK_AGENT_DIR ?
|
|
45694
|
-
var SLACK_RECENT_DMS_FILE = SLACK_AGENT_DIR ?
|
|
45695
|
-
var SLACK_CHANNEL_ADD_RESTART_FILE = SLACK_AGENT_DIR ?
|
|
45771
|
+
var SLACK_RESTART_CONFIRM_FILE = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-restart-confirm.json") : null;
|
|
45772
|
+
var SLACK_RECENT_DMS_FILE = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-recent-dms.json") : null;
|
|
45773
|
+
var SLACK_CHANNEL_ADD_RESTART_FILE = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-channel-add-restart.json") : null;
|
|
45696
45774
|
var SLACK_MAX_RECOVERY_ATTEMPTS = 3;
|
|
45697
|
-
var SLACK_AVATAR_MARKER_PATH = SLACK_AGENT_DIR ?
|
|
45775
|
+
var SLACK_AVATAR_MARKER_PATH = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-avatar-applied") : null;
|
|
45698
45776
|
function redactSlackId(id) {
|
|
45699
45777
|
if (!id) return "<none>";
|
|
45700
45778
|
return createHash3("sha256").update(id).digest("hex").slice(0, 8);
|
|
@@ -45705,7 +45783,7 @@ function safeSlackMarkerName(channel, threadTs, messageTs) {
|
|
|
45705
45783
|
}
|
|
45706
45784
|
function slackPendingInboundPath(channel, threadTs, messageTs) {
|
|
45707
45785
|
if (!SLACK_PENDING_INBOUND_DIR) return null;
|
|
45708
|
-
return
|
|
45786
|
+
return join22(SLACK_PENDING_INBOUND_DIR, safeSlackMarkerName(channel, threadTs, messageTs));
|
|
45709
45787
|
}
|
|
45710
45788
|
function writeSlackPendingInboundMarker(channel, threadTs, messageTs, undeliverable = false, discretionary = false, payload) {
|
|
45711
45789
|
const path = slackPendingInboundPath(channel, threadTs, messageTs);
|
|
@@ -45728,7 +45806,7 @@ function writeSlackPendingInboundMarker(channel, threadTs, messageTs, undelivera
|
|
|
45728
45806
|
...ingressOnlyThreads.isIngressOnly(channel, threadTs) ? { ingress_only: true } : {}
|
|
45729
45807
|
};
|
|
45730
45808
|
try {
|
|
45731
|
-
|
|
45809
|
+
mkdirSync10(SLACK_PENDING_INBOUND_DIR, { recursive: true, mode: 448 });
|
|
45732
45810
|
writeFileSync14(path, JSON.stringify(marker), { mode: 384 });
|
|
45733
45811
|
} catch (err) {
|
|
45734
45812
|
process.stderr.write(
|
|
@@ -45763,7 +45841,7 @@ function markSlackMarkerPromisedInPlace(fullPath) {
|
|
|
45763
45841
|
function markSlackMarkerEngagedInPlace(fullPath, opts) {
|
|
45764
45842
|
let marker;
|
|
45765
45843
|
try {
|
|
45766
|
-
marker = JSON.parse(
|
|
45844
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
45767
45845
|
} catch {
|
|
45768
45846
|
return false;
|
|
45769
45847
|
}
|
|
@@ -45778,7 +45856,7 @@ function markSlackMarkerEngagedInPlace(fullPath, opts) {
|
|
|
45778
45856
|
rewriteSlackMarkerInPlace(fullPath, marker);
|
|
45779
45857
|
if (!opts.promise) return false;
|
|
45780
45858
|
try {
|
|
45781
|
-
const readBack = JSON.parse(
|
|
45859
|
+
const readBack = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
45782
45860
|
return typeof readBack.promised_at === "string" && readBack.promised_at.length > 0;
|
|
45783
45861
|
} catch {
|
|
45784
45862
|
return false;
|
|
@@ -45789,7 +45867,7 @@ function attachSlackReplayPayload(channel, threadTs, messageTs, payload) {
|
|
|
45789
45867
|
if (!path) return;
|
|
45790
45868
|
let marker;
|
|
45791
45869
|
try {
|
|
45792
|
-
marker = JSON.parse(
|
|
45870
|
+
marker = JSON.parse(readFileSync19(path, "utf-8"));
|
|
45793
45871
|
} catch {
|
|
45794
45872
|
return;
|
|
45795
45873
|
}
|
|
@@ -45800,7 +45878,7 @@ function readSlackPendingInboundMarker(channel, threadTs, messageTs) {
|
|
|
45800
45878
|
const path = slackPendingInboundPath(channel, threadTs, messageTs);
|
|
45801
45879
|
if (!path || !existsSync10(path)) return null;
|
|
45802
45880
|
try {
|
|
45803
|
-
return JSON.parse(
|
|
45881
|
+
return JSON.parse(readFileSync19(path, "utf-8"));
|
|
45804
45882
|
} catch {
|
|
45805
45883
|
return null;
|
|
45806
45884
|
}
|
|
@@ -45850,7 +45928,7 @@ function slackConversationReplayFacts(channel, threadTs) {
|
|
|
45850
45928
|
threadTs,
|
|
45851
45929
|
(fullPath) => {
|
|
45852
45930
|
try {
|
|
45853
|
-
const marker = JSON.parse(
|
|
45931
|
+
const marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
45854
45932
|
found.push({ hasPayload: Boolean(marker.payload), discretionary: marker.discretionary });
|
|
45855
45933
|
} catch {
|
|
45856
45934
|
found.push({ hasPayload: false });
|
|
@@ -45983,7 +46061,7 @@ function scheduleBusyAck(channel, threadTs, messageTs, isThreadReply, arrivedWhi
|
|
|
45983
46061
|
let paneLogFreshAgeMs = null;
|
|
45984
46062
|
if (SLACK_AGENT_DIR) {
|
|
45985
46063
|
try {
|
|
45986
|
-
const paneMtimeMs = statSync5(
|
|
46064
|
+
const paneMtimeMs = statSync5(join22(SLACK_AGENT_DIR, "pane.log")).mtimeMs;
|
|
45987
46065
|
paneLogFreshAgeMs = Math.max(0, Date.now() - paneMtimeMs);
|
|
45988
46066
|
} catch {
|
|
45989
46067
|
}
|
|
@@ -46019,7 +46097,7 @@ function __resetSlackBusyAckNoticeThrottle() {
|
|
|
46019
46097
|
function clearSlackMarkerFileWithHeal(fullPath) {
|
|
46020
46098
|
let marker = null;
|
|
46021
46099
|
try {
|
|
46022
|
-
marker = JSON.parse(
|
|
46100
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46023
46101
|
} catch {
|
|
46024
46102
|
}
|
|
46025
46103
|
if (marker?.channel) {
|
|
@@ -46051,7 +46129,7 @@ var slackPromiseStampOutcome = { attempted: 0, stamped: 0 };
|
|
|
46051
46129
|
function healThenEngageSlackMarker(fullPath, opts) {
|
|
46052
46130
|
let marker = null;
|
|
46053
46131
|
try {
|
|
46054
|
-
marker = JSON.parse(
|
|
46132
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46055
46133
|
} catch {
|
|
46056
46134
|
return false;
|
|
46057
46135
|
}
|
|
@@ -46149,7 +46227,7 @@ function readSlackThreadMarkerState(channel, threadTs) {
|
|
|
46149
46227
|
threadTs,
|
|
46150
46228
|
(fullPath) => {
|
|
46151
46229
|
try {
|
|
46152
|
-
const m = JSON.parse(
|
|
46230
|
+
const m = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46153
46231
|
markers.push({ ingress_only: m.ingress_only });
|
|
46154
46232
|
} catch {
|
|
46155
46233
|
markers.push({});
|
|
@@ -46167,10 +46245,10 @@ function readSlackThreadMarkerState(channel, threadTs) {
|
|
|
46167
46245
|
async function processSlackRecoveryOutboxFile(filename) {
|
|
46168
46246
|
if (!SLACK_RECOVERY_OUTBOX_DIR) return;
|
|
46169
46247
|
if (filename.endsWith(".poison.json") || filename.endsWith(".tmp")) return;
|
|
46170
|
-
const fullPath =
|
|
46248
|
+
const fullPath = join22(SLACK_RECOVERY_OUTBOX_DIR, filename);
|
|
46171
46249
|
let payload;
|
|
46172
46250
|
try {
|
|
46173
|
-
payload = JSON.parse(
|
|
46251
|
+
payload = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46174
46252
|
} catch (err) {
|
|
46175
46253
|
process.stderr.write(
|
|
46176
46254
|
`slack-channel(${AGENT_CODE_NAME}): recovery outbox parse failed (${filename}): ${err.message}
|
|
@@ -46300,7 +46378,7 @@ async function processSlackRecoveryOutboxFile(filename) {
|
|
|
46300
46378
|
const next = slackNextRetryName(filename);
|
|
46301
46379
|
if (next) {
|
|
46302
46380
|
try {
|
|
46303
|
-
renameSync5(fullPath,
|
|
46381
|
+
renameSync5(fullPath, join22(SLACK_RECOVERY_OUTBOX_DIR, next.next));
|
|
46304
46382
|
if (next.attempt >= SLACK_MAX_RECOVERY_ATTEMPTS) {
|
|
46305
46383
|
process.stderr.write(
|
|
46306
46384
|
`slack-channel(${AGENT_CODE_NAME}): ghost-reply recovery exhausted retries \u2014 moved to ${next.next}
|
|
@@ -46340,7 +46418,7 @@ function scanSlackRecoveryRetries() {
|
|
|
46340
46418
|
if (!f.includes(".retry-") || f.endsWith(".poison.json")) continue;
|
|
46341
46419
|
let mtimeMs;
|
|
46342
46420
|
try {
|
|
46343
|
-
mtimeMs = statSync5(
|
|
46421
|
+
mtimeMs = statSync5(join22(SLACK_RECOVERY_OUTBOX_DIR, f)).mtimeMs;
|
|
46344
46422
|
} catch {
|
|
46345
46423
|
continue;
|
|
46346
46424
|
}
|
|
@@ -46352,7 +46430,7 @@ function scanSlackRecoveryRetries() {
|
|
|
46352
46430
|
function startSlackRecoveryOutboxWatcher() {
|
|
46353
46431
|
if (!SLACK_RECOVERY_OUTBOX_DIR) return;
|
|
46354
46432
|
try {
|
|
46355
|
-
|
|
46433
|
+
mkdirSync10(SLACK_RECOVERY_OUTBOX_DIR, { recursive: true, mode: 448 });
|
|
46356
46434
|
} catch (err) {
|
|
46357
46435
|
process.stderr.write(
|
|
46358
46436
|
`slack-channel(${AGENT_CODE_NAME}): recovery outbox mkdir failed: ${err.message}
|
|
@@ -46370,7 +46448,7 @@ function startSlackRecoveryOutboxWatcher() {
|
|
|
46370
46448
|
const watcher = watch(SLACK_RECOVERY_OUTBOX_DIR, (event, filename) => {
|
|
46371
46449
|
if (event !== "rename" || !filename) return;
|
|
46372
46450
|
if (!isFirstAttemptSlackOutboxFile(filename)) return;
|
|
46373
|
-
if (existsSync10(
|
|
46451
|
+
if (existsSync10(join22(SLACK_RECOVERY_OUTBOX_DIR, filename))) {
|
|
46374
46452
|
void processSlackRecoveryOutboxFile(filename);
|
|
46375
46453
|
}
|
|
46376
46454
|
});
|
|
@@ -46385,7 +46463,7 @@ function startSlackRecoveryOutboxWatcher() {
|
|
|
46385
46463
|
retryTimer.unref?.();
|
|
46386
46464
|
}
|
|
46387
46465
|
startSlackRecoveryOutboxWatcher();
|
|
46388
|
-
var SLACK_NOTICE_OUTBOX_DIR = SLACK_AGENT_DIR ?
|
|
46466
|
+
var SLACK_NOTICE_OUTBOX_DIR = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "slack-notice-outbox") : null;
|
|
46389
46467
|
var SLACK_NOTICE_MAX_AGE_MS = 9e4;
|
|
46390
46468
|
var SLACK_NOTICE_INFLIGHT = /* @__PURE__ */ new Set();
|
|
46391
46469
|
async function processSlackNoticeOutboxFile(filename) {
|
|
@@ -46393,7 +46471,7 @@ async function processSlackNoticeOutboxFile(filename) {
|
|
|
46393
46471
|
if (filename.startsWith(".") || filename.endsWith(".tmp") || !filename.endsWith(".json")) return;
|
|
46394
46472
|
if (SLACK_NOTICE_INFLIGHT.has(filename)) return;
|
|
46395
46473
|
SLACK_NOTICE_INFLIGHT.add(filename);
|
|
46396
|
-
const fullPath =
|
|
46474
|
+
const fullPath = join22(SLACK_NOTICE_OUTBOX_DIR, filename);
|
|
46397
46475
|
try {
|
|
46398
46476
|
let mtimeMs;
|
|
46399
46477
|
try {
|
|
@@ -46410,7 +46488,7 @@ async function processSlackNoticeOutboxFile(filename) {
|
|
|
46410
46488
|
}
|
|
46411
46489
|
let payload;
|
|
46412
46490
|
try {
|
|
46413
|
-
const parsed = JSON.parse(
|
|
46491
|
+
const parsed = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46414
46492
|
if (!parsed || typeof parsed !== "object") throw new Error("not an object");
|
|
46415
46493
|
payload = parsed;
|
|
46416
46494
|
} catch {
|
|
@@ -46484,7 +46562,7 @@ async function processSlackNoticeOutboxFile(filename) {
|
|
|
46484
46562
|
function startSlackNoticeOutboxWatcher() {
|
|
46485
46563
|
if (!SLACK_NOTICE_OUTBOX_DIR) return;
|
|
46486
46564
|
try {
|
|
46487
|
-
|
|
46565
|
+
mkdirSync10(SLACK_NOTICE_OUTBOX_DIR, { recursive: true, mode: 448 });
|
|
46488
46566
|
} catch (err) {
|
|
46489
46567
|
process.stderr.write(
|
|
46490
46568
|
`slack-channel(${AGENT_CODE_NAME}): notice outbox mkdir failed: ${err.message}
|
|
@@ -46499,7 +46577,7 @@ function startSlackNoticeOutboxWatcher() {
|
|
|
46499
46577
|
try {
|
|
46500
46578
|
const watcher = watch(SLACK_NOTICE_OUTBOX_DIR, (event, filename) => {
|
|
46501
46579
|
if (event !== "rename" || !filename) return;
|
|
46502
|
-
if (existsSync10(
|
|
46580
|
+
if (existsSync10(join22(SLACK_NOTICE_OUTBOX_DIR, filename))) {
|
|
46503
46581
|
void processSlackNoticeOutboxFile(filename);
|
|
46504
46582
|
}
|
|
46505
46583
|
});
|
|
@@ -46520,11 +46598,11 @@ function trackPendingMessage(channel, threadTs, messageTs, undeliverable = false
|
|
|
46520
46598
|
function deadLetterSlackMarker(fullPath, filename) {
|
|
46521
46599
|
if (!SLACK_PENDING_INBOUND_STALE_DIR) return false;
|
|
46522
46600
|
try {
|
|
46523
|
-
|
|
46601
|
+
mkdirSync10(SLACK_PENDING_INBOUND_STALE_DIR, { recursive: true, mode: 448 });
|
|
46524
46602
|
} catch {
|
|
46525
46603
|
return false;
|
|
46526
46604
|
}
|
|
46527
|
-
const target =
|
|
46605
|
+
const target = join22(SLACK_PENDING_INBOUND_STALE_DIR, filename);
|
|
46528
46606
|
try {
|
|
46529
46607
|
if (!existsSync10(target)) {
|
|
46530
46608
|
renameSync5(fullPath, target);
|
|
@@ -46566,10 +46644,10 @@ function sweepSlackStaleMarkers(thresholdMs) {
|
|
|
46566
46644
|
capped = true;
|
|
46567
46645
|
break;
|
|
46568
46646
|
}
|
|
46569
|
-
const fullPath =
|
|
46647
|
+
const fullPath = join22(SLACK_PENDING_INBOUND_DIR, filename);
|
|
46570
46648
|
let marker;
|
|
46571
46649
|
try {
|
|
46572
|
-
marker = JSON.parse(
|
|
46650
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
46573
46651
|
} catch (err) {
|
|
46574
46652
|
process.stderr.write(
|
|
46575
46653
|
`slack-channel(${AGENT_CODE_NAME}): stale-marker parse failed for ${redactSlackId(filename)}: ${err.message}
|
|
@@ -46643,13 +46721,13 @@ var slackOrphanSweepTimer = setInterval(() => {
|
|
|
46643
46721
|
checkSlackWatchdogGiveUpNotice();
|
|
46644
46722
|
}, orphanSweepIntervalMs());
|
|
46645
46723
|
slackOrphanSweepTimer.unref?.();
|
|
46646
|
-
var SLACK_PROGRESS_HEARTBEAT_PATH = SLACK_AGENT_DIR ?
|
|
46724
|
+
var SLACK_PROGRESS_HEARTBEAT_PATH = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, "channel-progress-heartbeat.json") : null;
|
|
46647
46725
|
var slackTrackedProgress = null;
|
|
46648
46726
|
var slackProgressTickRunning = false;
|
|
46649
46727
|
function readSlackProgressHeartbeat() {
|
|
46650
46728
|
if (!SLACK_PROGRESS_HEARTBEAT_PATH || !existsSync10(SLACK_PROGRESS_HEARTBEAT_PATH)) return null;
|
|
46651
46729
|
try {
|
|
46652
|
-
return parseProgressHeartbeat(
|
|
46730
|
+
return parseProgressHeartbeat(readFileSync19(SLACK_PROGRESS_HEARTBEAT_PATH, "utf-8"));
|
|
46653
46731
|
} catch {
|
|
46654
46732
|
return null;
|
|
46655
46733
|
}
|
|
@@ -46676,7 +46754,7 @@ function findSlackProgressTarget() {
|
|
|
46676
46754
|
if (!name.endsWith(".json")) continue;
|
|
46677
46755
|
let m;
|
|
46678
46756
|
try {
|
|
46679
|
-
m = JSON.parse(
|
|
46757
|
+
m = JSON.parse(readFileSync19(join22(SLACK_PENDING_INBOUND_DIR, name), "utf-8"));
|
|
46680
46758
|
} catch {
|
|
46681
46759
|
continue;
|
|
46682
46760
|
}
|
|
@@ -46827,7 +46905,7 @@ function listPendingSlackConversations() {
|
|
|
46827
46905
|
if (!name.endsWith(".json")) continue;
|
|
46828
46906
|
try {
|
|
46829
46907
|
const marker = JSON.parse(
|
|
46830
|
-
|
|
46908
|
+
readFileSync19(join22(SLACK_PENDING_INBOUND_DIR, name), "utf8")
|
|
46831
46909
|
);
|
|
46832
46910
|
if (typeof marker.channel !== "string" || !marker.channel) continue;
|
|
46833
46911
|
if (typeof marker.thread_ts !== "string" || !marker.thread_ts) continue;
|
|
@@ -46965,7 +47043,7 @@ function postSlackWatchdogGiveUpNotice(channel, threadTs, isThreadReply, reason,
|
|
|
46965
47043
|
}
|
|
46966
47044
|
function checkSlackWatchdogGiveUpNotice() {
|
|
46967
47045
|
if (!SLACK_AGENT_DIR) return;
|
|
46968
|
-
const signal = readGiveUpSignal(
|
|
47046
|
+
const signal = readGiveUpSignal(join22(SLACK_AGENT_DIR, GIVE_UP_SIGNAL_FILENAME));
|
|
46969
47047
|
const signalAtMs = signal?.atMs ?? null;
|
|
46970
47048
|
const act = decideGiveUpNotice({
|
|
46971
47049
|
signalAtMs,
|
|
@@ -46998,7 +47076,7 @@ function readRestartTopicForMarker(filename, channel, threadTs) {
|
|
|
46998
47076
|
if (!SLACK_RESTART_CONTEXT_DIR) return null;
|
|
46999
47077
|
let raw;
|
|
47000
47078
|
try {
|
|
47001
|
-
raw =
|
|
47079
|
+
raw = readFileSync19(join22(SLACK_RESTART_CONTEXT_DIR, filename), "utf-8");
|
|
47002
47080
|
} catch {
|
|
47003
47081
|
return null;
|
|
47004
47082
|
}
|
|
@@ -47007,7 +47085,7 @@ function readRestartTopicForMarker(filename, channel, threadTs) {
|
|
|
47007
47085
|
function removeRestartContextHint(filename) {
|
|
47008
47086
|
if (!SLACK_RESTART_CONTEXT_DIR) return;
|
|
47009
47087
|
try {
|
|
47010
|
-
unlinkSync7(
|
|
47088
|
+
unlinkSync7(join22(SLACK_RESTART_CONTEXT_DIR, filename));
|
|
47011
47089
|
} catch {
|
|
47012
47090
|
}
|
|
47013
47091
|
}
|
|
@@ -47022,7 +47100,7 @@ function clearAllRestartContextHints() {
|
|
|
47022
47100
|
for (const name of names) {
|
|
47023
47101
|
if (!name.endsWith(".json")) continue;
|
|
47024
47102
|
try {
|
|
47025
|
-
unlinkSync7(
|
|
47103
|
+
unlinkSync7(join22(SLACK_RESTART_CONTEXT_DIR, name));
|
|
47026
47104
|
} catch {
|
|
47027
47105
|
}
|
|
47028
47106
|
}
|
|
@@ -47049,10 +47127,10 @@ async function notifyStrandedInboundsOnFirstConnect() {
|
|
|
47049
47127
|
let notified = 0;
|
|
47050
47128
|
for (const filename of filenames) {
|
|
47051
47129
|
if (!filename.endsWith(".json")) continue;
|
|
47052
|
-
const fullPath =
|
|
47130
|
+
const fullPath = join22(SLACK_PENDING_INBOUND_DIR, filename);
|
|
47053
47131
|
let marker;
|
|
47054
47132
|
try {
|
|
47055
|
-
marker = JSON.parse(
|
|
47133
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
47056
47134
|
} catch {
|
|
47057
47135
|
continue;
|
|
47058
47136
|
}
|
|
@@ -47226,7 +47304,7 @@ function noteThreadActivityByMessageTs(channel, messageTs) {
|
|
|
47226
47304
|
markSeenAllSlackPendingMarkersForThread2(channel, messageTs);
|
|
47227
47305
|
markSeenSlackPendingMarkerByMessageTs2(channel, messageTs);
|
|
47228
47306
|
}
|
|
47229
|
-
var RESTART_FLAGS_DIR =
|
|
47307
|
+
var RESTART_FLAGS_DIR = join22(homedir7(), ".augmented", "restart-flags");
|
|
47230
47308
|
function actuateHostRestartSlack() {
|
|
47231
47309
|
return actuateHostRestart({
|
|
47232
47310
|
agtHost: AGT_HOST,
|
|
@@ -47828,9 +47906,9 @@ async function handleSlashCommandEnvelope(payload) {
|
|
|
47828
47906
|
} else {
|
|
47829
47907
|
writeSlackRestartConfirm(confirmReply, payload.user_name);
|
|
47830
47908
|
if (!existsSync10(RESTART_FLAGS_DIR)) {
|
|
47831
|
-
|
|
47909
|
+
mkdirSync10(RESTART_FLAGS_DIR, { recursive: true });
|
|
47832
47910
|
}
|
|
47833
|
-
const flagPath =
|
|
47911
|
+
const flagPath = join22(RESTART_FLAGS_DIR, `${codeName}.flag`);
|
|
47834
47912
|
const flag = {
|
|
47835
47913
|
codeName,
|
|
47836
47914
|
source: "slack",
|
|
@@ -47971,9 +48049,9 @@ async function handleRestartCommand(opts) {
|
|
|
47971
48049
|
} else {
|
|
47972
48050
|
writeSlackRestartConfirm(confirmReply, opts.requesterName);
|
|
47973
48051
|
if (!existsSync10(RESTART_FLAGS_DIR)) {
|
|
47974
|
-
|
|
48052
|
+
mkdirSync10(RESTART_FLAGS_DIR, { recursive: true });
|
|
47975
48053
|
}
|
|
47976
|
-
const flagPath =
|
|
48054
|
+
const flagPath = join22(RESTART_FLAGS_DIR, `${codeName}.flag`);
|
|
47977
48055
|
const flag = {
|
|
47978
48056
|
codeName,
|
|
47979
48057
|
source: "slack",
|
|
@@ -48095,7 +48173,7 @@ var SLACK_HOT_THREAD_WINDOW_MS = parseHotThreadWindowMs(
|
|
|
48095
48173
|
);
|
|
48096
48174
|
function resolveThreadStorePath() {
|
|
48097
48175
|
if (!AGENT_CODE_NAME) return null;
|
|
48098
|
-
return
|
|
48176
|
+
return join22(homedir7(), ".augmented", AGENT_CODE_NAME, "slack-tracked-threads.json");
|
|
48099
48177
|
}
|
|
48100
48178
|
function parseTtlDays(raw) {
|
|
48101
48179
|
if (!raw) return void 0;
|
|
@@ -48134,9 +48212,9 @@ if (!BOT_TOKEN || !APP_TOKEN) {
|
|
|
48134
48212
|
var slackStderrLogStream = null;
|
|
48135
48213
|
if (AGENT_CODE_NAME) {
|
|
48136
48214
|
try {
|
|
48137
|
-
const logDir =
|
|
48138
|
-
|
|
48139
|
-
slackStderrLogStream = createWriteStream(
|
|
48215
|
+
const logDir = join22(homedir7(), ".augmented", AGENT_CODE_NAME);
|
|
48216
|
+
mkdirSync10(logDir, { recursive: true });
|
|
48217
|
+
slackStderrLogStream = createWriteStream(join22(logDir, "slack-channel-stderr.log"), {
|
|
48140
48218
|
flags: "a",
|
|
48141
48219
|
mode: 384
|
|
48142
48220
|
});
|
|
@@ -49120,7 +49198,7 @@ ${result.formatted}` : "No messages in range, or the bot is not a member of this
|
|
|
49120
49198
|
isError: true
|
|
49121
49199
|
};
|
|
49122
49200
|
}
|
|
49123
|
-
const allowedRoot = resolve2(
|
|
49201
|
+
const allowedRoot = resolve2(homedir7(), ".augmented", AGENT_CODE_NAME, "project") + "/";
|
|
49124
49202
|
const resolvedPath = resolve2(path);
|
|
49125
49203
|
if (!resolvedPath.startsWith(allowedRoot)) {
|
|
49126
49204
|
return {
|
|
@@ -49142,7 +49220,7 @@ ${result.formatted}` : "No messages in range, or the bot is not a member of this
|
|
|
49142
49220
|
};
|
|
49143
49221
|
}
|
|
49144
49222
|
size = stat2.size;
|
|
49145
|
-
bytes =
|
|
49223
|
+
bytes = readFileSync19(resolvedPath);
|
|
49146
49224
|
} catch (err) {
|
|
49147
49225
|
return {
|
|
49148
49226
|
content: [{ type: "text", text: `Failed to read file: ${err.message}` }],
|
|
@@ -49810,7 +49888,7 @@ function isDownloadableFileId(fileId, channel) {
|
|
|
49810
49888
|
}
|
|
49811
49889
|
function redactAugmentedPaths2(msg) {
|
|
49812
49890
|
return msg.replaceAll(
|
|
49813
|
-
new RegExp(`${
|
|
49891
|
+
new RegExp(`${homedir7().replace(/[.*+?^${}()|[\\]\\\\]/g, "\\\\$&")}/\\.augmented/[^\\s'"\`]*`, "g"),
|
|
49814
49892
|
"<augmented-path>"
|
|
49815
49893
|
);
|
|
49816
49894
|
}
|
|
@@ -49868,7 +49946,7 @@ async function downloadSlackFile(fileId, codeName) {
|
|
|
49868
49946
|
if (!isPathInside(savedPath, dir)) {
|
|
49869
49947
|
throw new Error(`refusing to write ${savedPath} outside ${dir}`);
|
|
49870
49948
|
}
|
|
49871
|
-
|
|
49949
|
+
mkdirSync10(dir, { recursive: true });
|
|
49872
49950
|
writeFileSync14(savedPath, bytes, { mode: 384 });
|
|
49873
49951
|
try {
|
|
49874
49952
|
chmodSync(savedPath, 384);
|
|
@@ -49941,7 +50019,7 @@ async function replayPendingSlackMarkers() {
|
|
|
49941
50019
|
let paneFreshAgeMs = null;
|
|
49942
50020
|
if (SLACK_AGENT_DIR) {
|
|
49943
50021
|
try {
|
|
49944
|
-
paneFreshAgeMs = Math.max(0, now - statSync5(
|
|
50022
|
+
paneFreshAgeMs = Math.max(0, now - statSync5(join22(SLACK_AGENT_DIR, "pane.log")).mtimeMs);
|
|
49945
50023
|
} catch {
|
|
49946
50024
|
}
|
|
49947
50025
|
}
|
|
@@ -49949,10 +50027,10 @@ async function replayPendingSlackMarkers() {
|
|
|
49949
50027
|
const entries = [];
|
|
49950
50028
|
for (const name of filenames) {
|
|
49951
50029
|
if (!name.endsWith(".json") || name.endsWith(".tmp")) continue;
|
|
49952
|
-
const fullPath =
|
|
50030
|
+
const fullPath = join22(SLACK_PENDING_INBOUND_DIR, name);
|
|
49953
50031
|
let marker;
|
|
49954
50032
|
try {
|
|
49955
|
-
marker = JSON.parse(
|
|
50033
|
+
marker = JSON.parse(readFileSync19(fullPath, "utf-8"));
|
|
49956
50034
|
} catch {
|
|
49957
50035
|
continue;
|
|
49958
50036
|
}
|
|
@@ -49986,6 +50064,7 @@ async function replayPendingSlackMarkers() {
|
|
|
49986
50064
|
...payload,
|
|
49987
50065
|
meta: { ...payload.meta, replayed: "true" }
|
|
49988
50066
|
};
|
|
50067
|
+
writeUnattributedTurnMarker("slack");
|
|
49989
50068
|
try {
|
|
49990
50069
|
await mcp.notification({
|
|
49991
50070
|
method: "notifications/claude/channel",
|
|
@@ -50094,12 +50173,12 @@ function armOpenWatchdog(ws) {
|
|
|
50094
50173
|
function socketDownForMs() {
|
|
50095
50174
|
return reconnectScheduler.downForMs(isSocketConnected());
|
|
50096
50175
|
}
|
|
50097
|
-
var SLACK_SOCKET_STATE_PATH = SLACK_AGENT_DIR ?
|
|
50176
|
+
var SLACK_SOCKET_STATE_PATH = SLACK_AGENT_DIR ? join22(SLACK_AGENT_DIR, SLACK_SOCKET_STATE_FILENAME) : null;
|
|
50098
50177
|
function publishSocketState() {
|
|
50099
50178
|
if (!SLACK_SOCKET_STATE_PATH || !SLACK_AGENT_DIR) return;
|
|
50100
50179
|
const tmp = `${SLACK_SOCKET_STATE_PATH}.${process.pid}.tmp`;
|
|
50101
50180
|
try {
|
|
50102
|
-
|
|
50181
|
+
mkdirSync10(SLACK_AGENT_DIR, { recursive: true, mode: 448 });
|
|
50103
50182
|
writeFileSync14(
|
|
50104
50183
|
tmp,
|
|
50105
50184
|
serializeSlackSocketState({
|
|
@@ -50701,7 +50780,7 @@ async function connectSocketMode() {
|
|
|
50701
50780
|
let paneLogFreshAgeMs = null;
|
|
50702
50781
|
if (SLACK_AGENT_DIR) {
|
|
50703
50782
|
try {
|
|
50704
|
-
const paneMtimeMs = statSync5(
|
|
50783
|
+
const paneMtimeMs = statSync5(join22(SLACK_AGENT_DIR, "pane.log")).mtimeMs;
|
|
50705
50784
|
paneLogFreshAgeMs = Math.max(0, Date.now() - paneMtimeMs);
|
|
50706
50785
|
} catch {
|
|
50707
50786
|
}
|
|
@@ -50871,9 +50950,15 @@ async function connectSocketMode() {
|
|
|
50871
50950
|
channel: "slack",
|
|
50872
50951
|
sender_id: evt.user,
|
|
50873
50952
|
sender_name: userName,
|
|
50874
|
-
channel_ref: threadTs
|
|
50953
|
+
channel_ref: threadTs,
|
|
50954
|
+
// ENG-11348: only a 1:1 IM (`D…`) is one-to-one; a channel or group DM is not.
|
|
50955
|
+
chat_kind: isSlackDirectMessage(channel) ? "direct" : "group",
|
|
50956
|
+
// ENG-11348: the server verifies the asker with Slack using this.
|
|
50957
|
+
chat_id: channel
|
|
50875
50958
|
});
|
|
50876
50959
|
clearScheduledTurnMarker(SLACK_AGENT_DIR);
|
|
50960
|
+
} else {
|
|
50961
|
+
writeUnattributedTurnMarker("slack");
|
|
50877
50962
|
}
|
|
50878
50963
|
const dispatchedAtMs = Date.now();
|
|
50879
50964
|
await mcp.notification({
|