@tutti-os/agent-gui 0.0.198 → 0.0.200

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.
Files changed (48) hide show
  1. package/README.md +23 -0
  2. package/dist/{AgentRichTextReadonly-2BWVTYD3.js → AgentRichTextReadonly-YU6STDUX.js} +5 -5
  3. package/dist/agent-conversation/index.js +7 -7
  4. package/dist/agent-gui.d.ts +1 -0
  5. package/dist/agent-gui.js +14 -14
  6. package/dist/agent-message-center/index.js +6 -6
  7. package/dist/app/renderer/agentactivity.css +66 -1
  8. package/dist/{chunk-JH6OERDW.js → chunk-3FA5JIDL.js} +2 -2
  9. package/dist/{chunk-D7WWGXPJ.js → chunk-5ZO3H4C5.js} +4 -4
  10. package/dist/{chunk-CTZPHYKU.js → chunk-7NUEEGAA.js} +3 -3
  11. package/dist/{chunk-NTY3JIYS.js → chunk-DAP74J63.js} +3695 -3612
  12. package/dist/chunk-DAP74J63.js.map +1 -0
  13. package/dist/{chunk-P4LUYDRL.js → chunk-EOGTJQID.js} +2 -2
  14. package/dist/{chunk-QCNCNAZT.js → chunk-F5ARZZES.js} +4 -4
  15. package/dist/{chunk-AEMVCADI.js → chunk-GWKXYGUN.js} +2 -2
  16. package/dist/{chunk-D5HAVQME.js → chunk-JXFOFJYI.js} +2 -2
  17. package/dist/{chunk-GIF2V624.js → chunk-MFQB4LR5.js} +4 -4
  18. package/dist/{chunk-GKKXAO7O.js → chunk-PWPVYNGO.js} +3 -3
  19. package/dist/{chunk-FFLXJ5RU.js → chunk-RJMCV7OR.js} +13 -7
  20. package/dist/chunk-RJMCV7OR.js.map +1 -0
  21. package/dist/{chunk-HU3Q2FQK.js → chunk-UEBPMWKS.js} +2 -2
  22. package/dist/{chunk-T3RMAGAE.js → chunk-XD5NTTFJ.js} +2 -2
  23. package/dist/{chunk-YC33LHRB.js → chunk-ZADHMOME.js} +51 -13
  24. package/dist/{chunk-YC33LHRB.js.map → chunk-ZADHMOME.js.map} +1 -1
  25. package/dist/context-mention-palette/index.js +7 -7
  26. package/dist/i18n/index.d.ts +12 -6
  27. package/dist/i18n/index.js +2 -2
  28. package/dist/index.d.ts +13 -6
  29. package/dist/index.js +14 -14
  30. package/dist/mention-search.js +5 -5
  31. package/dist/workbench/contribution.js +3 -3
  32. package/dist/workbench/index.js +3 -3
  33. package/dist/workbench/sessionTitle.js +2 -2
  34. package/package.json +16 -16
  35. package/dist/chunk-FFLXJ5RU.js.map +0 -1
  36. package/dist/chunk-NTY3JIYS.js.map +0 -1
  37. /package/dist/{AgentRichTextReadonly-2BWVTYD3.js.map → AgentRichTextReadonly-YU6STDUX.js.map} +0 -0
  38. /package/dist/{chunk-JH6OERDW.js.map → chunk-3FA5JIDL.js.map} +0 -0
  39. /package/dist/{chunk-D7WWGXPJ.js.map → chunk-5ZO3H4C5.js.map} +0 -0
  40. /package/dist/{chunk-CTZPHYKU.js.map → chunk-7NUEEGAA.js.map} +0 -0
  41. /package/dist/{chunk-P4LUYDRL.js.map → chunk-EOGTJQID.js.map} +0 -0
  42. /package/dist/{chunk-QCNCNAZT.js.map → chunk-F5ARZZES.js.map} +0 -0
  43. /package/dist/{chunk-AEMVCADI.js.map → chunk-GWKXYGUN.js.map} +0 -0
  44. /package/dist/{chunk-D5HAVQME.js.map → chunk-JXFOFJYI.js.map} +0 -0
  45. /package/dist/{chunk-GIF2V624.js.map → chunk-MFQB4LR5.js.map} +0 -0
  46. /package/dist/{chunk-GKKXAO7O.js.map → chunk-PWPVYNGO.js.map} +0 -0
  47. /package/dist/{chunk-HU3Q2FQK.js.map → chunk-UEBPMWKS.js.map} +0 -0
  48. /package/dist/{chunk-T3RMAGAE.js.map → chunk-XD5NTTFJ.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  formatAgentMentionMarkdown,
7
7
  mentionItemToAttrs,
8
8
  parseAgentMentionMarkdown
9
- } from "./chunk-D5HAVQME.js";
9
+ } from "./chunk-JXFOFJYI.js";
10
10
  import {
11
11
  cn,
12
12
  resolveAgentTargetPresentation,
@@ -733,4 +733,4 @@ export {
733
733
  agentRichTextContentToPromptText,
734
734
  AgentRichTextReadonly
735
735
  };
736
- //# sourceMappingURL=chunk-T3RMAGAE.js.map
736
+ //# sourceMappingURL=chunk-XD5NTTFJ.js.map
@@ -2,7 +2,7 @@ import {
2
2
  AgentRichTextReadonly,
3
3
  promptForProviderSkills,
4
4
  skillTriggerForPrefix
5
- } from "./chunk-T3RMAGAE.js";
5
+ } from "./chunk-XD5NTTFJ.js";
6
6
  import {
7
7
  classifyRecoverableAgentMessage,
8
8
  isProviderPlanLimitMessage,
@@ -27,7 +27,7 @@ import {
27
27
  agentPromptFileBlocks,
28
28
  agentPromptPastedTextBlocks,
29
29
  materializeAgentComposerFileMentions
30
- } from "./chunk-D5HAVQME.js";
30
+ } from "./chunk-JXFOFJYI.js";
31
31
  import {
32
32
  AGENT_PASTED_TEXT_BLOCK_KIND,
33
33
  AGENT_PASTED_TEXT_MENTION_KIND
@@ -47,7 +47,7 @@ import {
47
47
  resolveWorkspaceFileLinkAction,
48
48
  resolveWorkspaceFilePathCandidate,
49
49
  resolveWorkspaceLinkAction
50
- } from "./chunk-GKKXAO7O.js";
50
+ } from "./chunk-PWPVYNGO.js";
51
51
  import {
52
52
  cn
53
53
  } from "./chunk-ZVYUTXQJ.js";
@@ -55,7 +55,7 @@ import {
55
55
  useOptionalAgentActivityRuntime,
56
56
  useOptionalAgentHostApi,
57
57
  workspaceAgentProviderLabel
58
- } from "./chunk-JH6OERDW.js";
58
+ } from "./chunk-3FA5JIDL.js";
59
59
  import {
60
60
  fileChangeCountFromChanges,
61
61
  fileChangeEntriesFromChanges,
@@ -65,7 +65,7 @@ import {
65
65
  getActiveUiLanguage,
66
66
  translate,
67
67
  useTranslation
68
- } from "./chunk-P4LUYDRL.js";
68
+ } from "./chunk-EOGTJQID.js";
69
69
  import {
70
70
  normalizeAgentTitleText
71
71
  } from "./chunk-MIJXEELH.js";
@@ -13823,22 +13823,23 @@ import { Button as Button2 } from "@tutti-os/ui-system/components";
13823
13823
  import { ChevronDownIcon } from "@tutti-os/ui-system/icons";
13824
13824
 
13825
13825
  // shared/agentConversation/components/agentTurnWorkSectionModel.ts
13826
- function resolveAgentTurnTiming(turn, isActiveTurn) {
13826
+ function resolveAgentTurnTiming(turn, isActiveTurn, submittedAtUnixMs) {
13827
13827
  if (!turn || !Number.isFinite(turn.startedAtUnixMs)) {
13828
13828
  return null;
13829
13829
  }
13830
+ const timingStartedAtUnixMs = Number.isFinite(submittedAtUnixMs) && submittedAtUnixMs <= turn.startedAtUnixMs ? submittedAtUnixMs : turn.startedAtUnixMs;
13830
13831
  if (turn.phase !== "settled") {
13831
- return isActiveTurn ? { kind: "live", startedAtUnixMs: turn.startedAtUnixMs } : null;
13832
+ return isActiveTurn ? { kind: "live", startedAtUnixMs: timingStartedAtUnixMs } : null;
13832
13833
  }
13833
13834
  const endUnixMs = turn.settledAtUnixMs;
13834
- if (!Number.isFinite(endUnixMs) || endUnixMs < turn.startedAtUnixMs) {
13835
+ if (!Number.isFinite(endUnixMs) || endUnixMs < timingStartedAtUnixMs) {
13835
13836
  return null;
13836
13837
  }
13837
13838
  return {
13838
13839
  kind: "settled",
13839
13840
  elapsedSeconds: Math.max(
13840
13841
  0,
13841
- Math.floor((endUnixMs - turn.startedAtUnixMs) / 1e3)
13842
+ Math.floor((endUnixMs - timingStartedAtUnixMs) / 1e3)
13842
13843
  )
13843
13844
  };
13844
13845
  }
@@ -13855,12 +13856,16 @@ function formatAgentTurnDuration(elapsedSeconds) {
13855
13856
  return { kind: "minutes-seconds", minutes, seconds };
13856
13857
  }
13857
13858
  function buildAgentTurnWorkSectionModel(group, turn, isActiveTurn = false, options = {}) {
13858
- const timing = resolveAgentTurnTiming(turn, isActiveTurn);
13859
+ const leadingRowCount = countLeadingUserRows(group.rows);
13860
+ const leadingRows = group.rows.slice(0, leadingRowCount);
13861
+ const submittedAtUnixMs = resolveTurnSubmittedAtUnixMs(
13862
+ leadingRows,
13863
+ turn?.startedAtUnixMs
13864
+ );
13865
+ const timing = resolveAgentTurnTiming(turn, isActiveTurn, submittedAtUnixMs);
13859
13866
  if (!timing) {
13860
13867
  return null;
13861
13868
  }
13862
- const leadingRowCount = countLeadingUserRows(group.rows);
13863
- const leadingRows = group.rows.slice(0, leadingRowCount);
13864
13869
  const finalTarget = findFinalAssistantTextTarget(group.rows);
13865
13870
  const sections = buildOrderedSections(
13866
13871
  group.rows,
@@ -13879,6 +13884,39 @@ function buildAgentTurnWorkSectionModel(group, turn, isActiveTurn = false, optio
13879
13884
  collapseEligible
13880
13885
  };
13881
13886
  }
13887
+ function resolveTurnSubmittedAtUnixMs(leadingRows, fallbackUnixMs) {
13888
+ const exactTimestamps = leadingRows.flatMap(({ row }) => {
13889
+ if (row.kind !== "message" || row.speaker !== "user") {
13890
+ return [];
13891
+ }
13892
+ return row.messages.flatMap(
13893
+ (message) => (message.sourceTimelineItems ?? []).flatMap((item) => {
13894
+ const value = item.payload?.clientSubmittedAtUnixMs;
13895
+ return validUnixMs(value) ? [value] : [];
13896
+ })
13897
+ );
13898
+ });
13899
+ const exact = minimumTimestamp(exactTimestamps);
13900
+ if (exact !== null) {
13901
+ return exact;
13902
+ }
13903
+ const projected = minimumTimestamp(
13904
+ leadingRows.flatMap(
13905
+ ({ row }) => row.kind === "message" && row.speaker === "user" ? [
13906
+ row.occurredAtUnixMs,
13907
+ ...row.messages.map((message) => message.occurredAtUnixMs)
13908
+ ] : []
13909
+ )
13910
+ );
13911
+ return projected ?? (validUnixMs(fallbackUnixMs) ? fallbackUnixMs : null);
13912
+ }
13913
+ function minimumTimestamp(values) {
13914
+ const valid = values.filter(validUnixMs);
13915
+ return valid.length > 0 ? Math.min(...valid) : null;
13916
+ }
13917
+ function validUnixMs(value) {
13918
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
13919
+ }
13882
13920
  function countLeadingUserRows(rows) {
13883
13921
  let count = 0;
13884
13922
  while (isUserMessageRow(rows[count]?.row)) {
@@ -15652,4 +15690,4 @@ export {
15652
15690
  AgentConversationFlow,
15653
15691
  useProjectedAgentConversation
15654
15692
  };
15655
- //# sourceMappingURL=chunk-YC33LHRB.js.map
15693
+ //# sourceMappingURL=chunk-ZADHMOME.js.map