@integrity-labs/agt-cli 0.28.1034 → 0.28.1036

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 CHANGED
@@ -40,12 +40,12 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-6AEWTLG7.js";
43
+ } from "../chunk-WVEJYAUR.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-V74YKGXU.js";
48
+ } from "../chunk-C5PPGNMX.js";
49
49
  import {
50
50
  AnchorSessionClient,
51
51
  CHANNEL_REGISTRY,
@@ -79,7 +79,7 @@ import {
79
79
  serializeManifestForSlackCli,
80
80
  sessionFileExists,
81
81
  sessionTranscriptDir
82
- } from "../chunk-H54FYWAK.js";
82
+ } from "../chunk-KH72B4TN.js";
83
83
  import "../chunk-TQDIIS3X.js";
84
84
  import "../chunk-XWVM4KPK.js";
85
85
  import "../chunk-EL5MWGGH.js";
@@ -5474,7 +5474,7 @@ import { execFileSync, execSync } from "child_process";
5474
5474
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5475
5475
  import chalk18 from "chalk";
5476
5476
  import ora16 from "ora";
5477
- var cliVersion = true ? "0.28.1034" : "dev";
5477
+ var cliVersion = true ? "0.28.1036" : "dev";
5478
5478
  async function fetchLatestVersion() {
5479
5479
  const host2 = getHost();
5480
5480
  if (!host2) return null;
@@ -6734,7 +6734,7 @@ function handleError(err) {
6734
6734
  }
6735
6735
 
6736
6736
  // src/bin/agt.ts
6737
- var cliVersion2 = true ? "0.28.1034" : "dev";
6737
+ var cliVersion2 = true ? "0.28.1036" : "dev";
6738
6738
  var program = new Command();
6739
6739
  program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
6740
6740
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -23,7 +23,7 @@ import {
23
23
  rotateDailySession,
24
24
  sessionFileExists,
25
25
  todayLocalIso
26
- } from "./chunk-H54FYWAK.js";
26
+ } from "./chunk-KH72B4TN.js";
27
27
  import {
28
28
  classifyUnanswerablePane,
29
29
  findUsageLimitResetHint,
@@ -5930,4 +5930,4 @@ export {
5930
5930
  stopAllSessionsAndWait,
5931
5931
  getProjectDir
5932
5932
  };
5933
- //# sourceMappingURL=chunk-V74YKGXU.js.map
5933
+ //# sourceMappingURL=chunk-C5PPGNMX.js.map
@@ -3953,9 +3953,32 @@ var SCOPE_TO_EVENTS = {
3953
3953
  "pins:read": ["pin_added", "pin_removed"],
3954
3954
  "metadata.message:read": ["message_metadata_posted"]
3955
3955
  };
3956
+ var SLACK_LONG_DESCRIPTION_MAX_BYTES = 3800;
3957
+ var SLACK_LONG_DESCRIPTION_MIN_CHARS = 175;
3958
+ function slackTextSize(text) {
3959
+ return new TextEncoder().encode(text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")).length;
3960
+ }
3961
+ function truncateGraphemes(text, fits) {
3962
+ if (fits(text))
3963
+ return text;
3964
+ let out = "";
3965
+ for (const { segment } of new Intl.Segmenter(void 0, { granularity: "grapheme" }).segment(text)) {
3966
+ if (!fits(out + segment))
3967
+ break;
3968
+ out += segment;
3969
+ }
3970
+ return out;
3971
+ }
3972
+ function truncateSlackLongDescription(text) {
3973
+ return truncateGraphemes(text, (c) => slackTextSize(c) <= SLACK_LONG_DESCRIPTION_MAX_BYTES);
3974
+ }
3975
+ function truncateUtf16(text, max) {
3976
+ return truncateGraphemes(text, (c) => c.length <= max);
3977
+ }
3956
3978
  function generateSlackAppManifest(input) {
3957
3979
  const { agent_name, description, long_description, scopes, socket_mode = true, redirect_urls, interactivity_request_url, slash_command_url, agent_code_name } = input;
3958
- const botDisplayName = agent_name.length > 35 ? agent_name.slice(0, 35) : agent_name;
3980
+ const truncatedLongDescription = long_description ? truncateSlackLongDescription(long_description) : void 0;
3981
+ const botDisplayName = truncateUtf16(agent_name, 35);
3959
3982
  const botEvents = /* @__PURE__ */ new Set();
3960
3983
  for (const scope of scopes) {
3961
3984
  const events = SCOPE_TO_EVENTS[scope];
@@ -3968,8 +3991,12 @@ function generateSlackAppManifest(input) {
3968
3991
  const manifest = {
3969
3992
  display_information: {
3970
3993
  name: agent_name,
3971
- ...description ? { description: description.slice(0, 140) } : {},
3972
- ...long_description && long_description.length >= 175 ? { long_description: long_description.slice(0, 4e3) } : {}
3994
+ ...description ? { description: truncateUtf16(description, 140) } : {},
3995
+ // ENG-10907: cut by the conservative byte measure, not `.slice(0, 4000)`,
3996
+ // then apply the 175 minimum (UTF-16 units, unchanged) to the CUT value.
3997
+ // Checking the input alone let a single oversized grapheme truncate to ''
3998
+ // and still be sent (CodeRabbit on #6546).
3999
+ ...truncatedLongDescription && truncatedLongDescription.length >= SLACK_LONG_DESCRIPTION_MIN_CHARS ? { long_description: truncatedLongDescription } : {}
3973
4000
  },
3974
4001
  features: {
3975
4002
  app_home: {
@@ -15595,4 +15622,4 @@ export {
15595
15622
  peekCurrentSession,
15596
15623
  readDailySessionPin
15597
15624
  };
15598
- //# sourceMappingURL=chunk-H54FYWAK.js.map
15625
+ //# sourceMappingURL=chunk-KH72B4TN.js.map