@integrity-labs/agt-cli 0.28.914 → 0.28.916

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.
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-3WTA477Y.js";
66
+ } from "../chunk-OJK2OMY7.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -13818,7 +13818,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13818
13818
  var lastVersionCheckAt = 0;
13819
13819
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13820
13820
  var lastResponsivenessProbeAt = 0;
13821
- var agtCliVersion = true ? "0.28.914" : "dev";
13821
+ var agtCliVersion = true ? "0.28.916" : "dev";
13822
13822
  function resolveBrewPath(execFileSync2) {
13823
13823
  try {
13824
13824
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -88,6 +88,68 @@ function logErr(msg) {
88
88
  process.stderr.write(`[remote-oauth-proxy:${label}] ${msg}
89
89
  `);
90
90
  }
91
+ function describeWriteError(err) {
92
+ const code = err?.code;
93
+ const msg = err instanceof Error ? err.message : String(err);
94
+ return typeof code === "string" ? `${code}: ${msg}` : msg;
95
+ }
96
+ var stdoutWriteFailures = 0;
97
+ function writeFailureCount() {
98
+ return stdoutWriteFailures;
99
+ }
100
+ function handleStdoutWriteFailure(err) {
101
+ stdoutWriteFailures += 1;
102
+ logErr(`stdout write FAILED (${describeWriteError(err)}); reply dropped, proxy continuing`);
103
+ if (err?.code === "EPIPE") {
104
+ logErr("stdout is closed (EPIPE) - the transport peer is gone; exiting rather than running silent");
105
+ process.exit(1);
106
+ }
107
+ }
108
+ function createReplyWriter(write, onFailure, waitForDrain = () => Promise.resolve()) {
109
+ const report = (err) => {
110
+ try {
111
+ onFailure(err);
112
+ } catch {
113
+ }
114
+ };
115
+ let writeLock = Promise.resolve();
116
+ return (replies) => {
117
+ writeLock = writeLock.then(async () => {
118
+ for (const reply of replies) {
119
+ try {
120
+ if (write(reply + "\n") === false) await waitForDrain();
121
+ } catch (err) {
122
+ report(err);
123
+ }
124
+ }
125
+ }).catch((err) => {
126
+ report(err);
127
+ });
128
+ return writeLock;
129
+ };
130
+ }
131
+ function awaitDrain(out) {
132
+ if (out.destroyed) return Promise.resolve();
133
+ return new Promise((resolve) => {
134
+ const done = () => {
135
+ out.off("drain", done);
136
+ out.off("error", done);
137
+ out.off("close", done);
138
+ resolve();
139
+ };
140
+ out.on("drain", done);
141
+ out.on("error", done);
142
+ out.on("close", done);
143
+ });
144
+ }
145
+ function createStdoutReplyWriter(out = process.stdout) {
146
+ out.on("error", handleStdoutWriteFailure);
147
+ return createReplyWriter(
148
+ (chunk) => out.write(chunk),
149
+ handleStdoutWriteFailure,
150
+ () => awaitDrain(out)
151
+ );
152
+ }
91
153
  function parsePreEnableToolsets(raw) {
92
154
  const seen = /* @__PURE__ */ new Set();
93
155
  const out = [];
@@ -500,13 +562,7 @@ async function main() {
500
562
  process.exit(1);
501
563
  }
502
564
  const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
503
- let writeLock = Promise.resolve();
504
- const writeReplies = (replies) => {
505
- writeLock = writeLock.then(() => {
506
- for (const reply of replies) process.stdout.write(reply + "\n");
507
- });
508
- return writeLock;
509
- };
565
+ const writeReplies = createStdoutReplyWriter();
510
566
  const inflight = /* @__PURE__ */ new Set();
511
567
  rl.on("line", (line) => {
512
568
  const text = line.trim();
@@ -539,7 +595,7 @@ async function main() {
539
595
  });
540
596
  await new Promise((resolve) => rl.on("close", () => resolve()));
541
597
  await Promise.all([...inflight]);
542
- await writeLock;
598
+ await writeReplies([]);
543
599
  }
544
600
  var invokedDirectly = (() => {
545
601
  try {
@@ -556,15 +612,20 @@ if (invokedDirectly) {
556
612
  export {
557
613
  ACTIVATION_TOOL,
558
614
  activationRefusalMessage,
615
+ awaitDrain,
559
616
  buildEnableToolsetRequest,
560
617
  buildForwardHeaders,
561
618
  buildToolsListRequest,
562
619
  callRefusal,
563
620
  claimGroupTools,
621
+ createReplyWriter,
622
+ createStdoutReplyWriter,
623
+ describeWriteError,
564
624
  extractJsonRpcMessages,
565
625
  extractToolsArray,
566
626
  filterToolsListMessage,
567
627
  forward,
628
+ handleStdoutWriteFailure,
568
629
  isManagedActivationCall,
569
630
  isToolArgRejected,
570
631
  isToolCallBlocked,
@@ -576,5 +637,6 @@ export {
576
637
  parseToolAllowlist,
577
638
  readCurrentToken,
578
639
  stripActivationTool,
579
- toolName
640
+ toolName,
641
+ writeFailureCount
580
642
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.914",
3
+ "version": "0.28.916",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {