@corenel/web-ui 0.13.2 → 0.14.0

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 (193) hide show
  1. package/dist/Composer.d.ts +30 -1
  2. package/dist/Composer.d.ts.map +1 -1
  3. package/dist/Composer.js +111 -19
  4. package/dist/Composer.js.map +1 -1
  5. package/dist/ContextBar.d.ts +9 -3
  6. package/dist/ContextBar.d.ts.map +1 -1
  7. package/dist/ContextBar.js +14 -7
  8. package/dist/ContextBar.js.map +1 -1
  9. package/dist/ContextManager.d.ts +10 -2
  10. package/dist/ContextManager.d.ts.map +1 -1
  11. package/dist/ContextManager.js +14 -10
  12. package/dist/ContextManager.js.map +1 -1
  13. package/dist/DictateButton.d.ts +21 -1
  14. package/dist/DictateButton.d.ts.map +1 -1
  15. package/dist/DictateButton.js +73 -10
  16. package/dist/DictateButton.js.map +1 -1
  17. package/dist/PickChips.d.ts +6 -0
  18. package/dist/PickChips.d.ts.map +1 -0
  19. package/dist/PickChips.js +55 -0
  20. package/dist/PickChips.js.map +1 -0
  21. package/dist/ProcessDock.d.ts +10 -0
  22. package/dist/ProcessDock.d.ts.map +1 -1
  23. package/dist/ProcessDock.js +24 -1
  24. package/dist/ProcessDock.js.map +1 -1
  25. package/dist/RichContent.d.ts.map +1 -1
  26. package/dist/RichContent.js +102 -24
  27. package/dist/RichContent.js.map +1 -1
  28. package/dist/SummaryTranscript.d.ts +5 -1
  29. package/dist/SummaryTranscript.d.ts.map +1 -1
  30. package/dist/SummaryTranscript.js +5 -3
  31. package/dist/SummaryTranscript.js.map +1 -1
  32. package/dist/TodoBar.d.ts +2 -0
  33. package/dist/TodoBar.d.ts.map +1 -1
  34. package/dist/TodoBar.js +8 -0
  35. package/dist/TodoBar.js.map +1 -1
  36. package/dist/TodoLine.d.ts +11 -0
  37. package/dist/TodoLine.d.ts.map +1 -0
  38. package/dist/TodoLine.js +55 -0
  39. package/dist/TodoLine.js.map +1 -0
  40. package/dist/ToolFold.js +1 -1
  41. package/dist/ToolFold.js.map +1 -1
  42. package/dist/Transcript.d.ts +19 -1
  43. package/dist/Transcript.d.ts.map +1 -1
  44. package/dist/Transcript.js +127 -58
  45. package/dist/Transcript.js.map +1 -1
  46. package/dist/agentChat/AgentChat.d.ts +42 -0
  47. package/dist/agentChat/AgentChat.d.ts.map +1 -1
  48. package/dist/agentChat/AgentChat.js +573 -100
  49. package/dist/agentChat/AgentChat.js.map +1 -1
  50. package/dist/agentChat/ChatSettingsSheet.d.ts +9 -0
  51. package/dist/agentChat/ChatSettingsSheet.d.ts.map +1 -0
  52. package/dist/agentChat/ChatSettingsSheet.js +103 -0
  53. package/dist/agentChat/ChatSettingsSheet.js.map +1 -0
  54. package/dist/agentChat/OptionsDrawer.d.ts +8 -0
  55. package/dist/agentChat/OptionsDrawer.d.ts.map +1 -1
  56. package/dist/agentChat/OptionsDrawer.js +24 -215
  57. package/dist/agentChat/OptionsDrawer.js.map +1 -1
  58. package/dist/agentChat/PlanReview.d.ts +1 -1
  59. package/dist/agentChat/PlanReview.d.ts.map +1 -1
  60. package/dist/agentChat/PlanReview.js +1 -1
  61. package/dist/agentChat/PlanReview.js.map +1 -1
  62. package/dist/agentChat/SourceGroups.d.ts +24 -0
  63. package/dist/agentChat/SourceGroups.d.ts.map +1 -0
  64. package/dist/agentChat/SourceGroups.js +117 -0
  65. package/dist/agentChat/SourceGroups.js.map +1 -0
  66. package/dist/agentChat/controller.d.ts +30 -1
  67. package/dist/agentChat/controller.d.ts.map +1 -1
  68. package/dist/agentChat/controller.js.map +1 -1
  69. package/dist/agentChat/pendingQueue.d.ts +4 -0
  70. package/dist/agentChat/pendingQueue.d.ts.map +1 -1
  71. package/dist/agentChat/pendingQueue.js +7 -0
  72. package/dist/agentChat/pendingQueue.js.map +1 -1
  73. package/dist/agentChat/planTool.d.ts +4 -0
  74. package/dist/agentChat/planTool.d.ts.map +1 -0
  75. package/dist/agentChat/planTool.js +4 -0
  76. package/dist/agentChat/planTool.js.map +1 -0
  77. package/dist/agentChat/testSheetHost.d.ts +3 -0
  78. package/dist/agentChat/testSheetHost.d.ts.map +1 -0
  79. package/dist/agentChat/testSheetHost.js +9 -0
  80. package/dist/agentChat/testSheetHost.js.map +1 -0
  81. package/dist/agentChat/useChatOptions.d.ts +63 -0
  82. package/dist/agentChat/useChatOptions.d.ts.map +1 -0
  83. package/dist/agentChat/useChatOptions.js +156 -0
  84. package/dist/agentChat/useChatOptions.js.map +1 -0
  85. package/dist/chatRefreshContext.d.ts +8 -0
  86. package/dist/chatRefreshContext.d.ts.map +1 -0
  87. package/dist/chatRefreshContext.js +14 -0
  88. package/dist/chatRefreshContext.js.map +1 -0
  89. package/dist/chatSkinContext.d.ts +13 -6
  90. package/dist/chatSkinContext.d.ts.map +1 -1
  91. package/dist/chatSkinContext.js +18 -4
  92. package/dist/chatSkinContext.js.map +1 -1
  93. package/dist/chatSkinCss.d.ts.map +1 -1
  94. package/dist/chatSkinCss.js +108 -22
  95. package/dist/chatSkinCss.js.map +1 -1
  96. package/dist/composerAction.d.ts +16 -0
  97. package/dist/composerAction.d.ts.map +1 -0
  98. package/dist/composerAction.js +20 -0
  99. package/dist/composerAction.js.map +1 -0
  100. package/dist/composerHistory.d.ts.map +1 -1
  101. package/dist/composerHistory.js +4 -1
  102. package/dist/composerHistory.js.map +1 -1
  103. package/dist/fx/LiveAnswer.d.ts.map +1 -1
  104. package/dist/fx/LiveAnswer.js +324 -59
  105. package/dist/fx/LiveAnswer.js.map +1 -1
  106. package/dist/fx/arrivalModes.d.ts +17 -2
  107. package/dist/fx/arrivalModes.d.ts.map +1 -1
  108. package/dist/fx/arrivalModes.js +46 -4
  109. package/dist/fx/arrivalModes.js.map +1 -1
  110. package/dist/fx/pacer.d.ts +41 -0
  111. package/dist/fx/pacer.d.ts.map +1 -0
  112. package/dist/fx/pacer.js +66 -0
  113. package/dist/fx/pacer.js.map +1 -0
  114. package/dist/fx/useReveal.d.ts +16 -1
  115. package/dist/fx/useReveal.d.ts.map +1 -1
  116. package/dist/fx/useReveal.js +101 -41
  117. package/dist/fx/useReveal.js.map +1 -1
  118. package/dist/localAddress.d.ts +2 -0
  119. package/dist/localAddress.d.ts.map +1 -0
  120. package/dist/localAddress.js +56 -0
  121. package/dist/localAddress.js.map +1 -0
  122. package/dist/steps/AfterReply.d.ts +67 -0
  123. package/dist/steps/AfterReply.d.ts.map +1 -0
  124. package/dist/steps/AfterReply.js +217 -0
  125. package/dist/steps/AfterReply.js.map +1 -0
  126. package/dist/steps/ChatApproval.d.ts +18 -0
  127. package/dist/steps/ChatApproval.d.ts.map +1 -0
  128. package/dist/steps/ChatApproval.js +35 -0
  129. package/dist/steps/ChatApproval.js.map +1 -0
  130. package/dist/steps/Delegation.d.ts +77 -0
  131. package/dist/steps/Delegation.d.ts.map +1 -0
  132. package/dist/steps/Delegation.js +188 -0
  133. package/dist/steps/Delegation.js.map +1 -0
  134. package/dist/steps/LiveRail.d.ts +14 -0
  135. package/dist/steps/LiveRail.d.ts.map +1 -0
  136. package/dist/steps/LiveRail.js +16 -0
  137. package/dist/steps/LiveRail.js.map +1 -0
  138. package/dist/steps/StepDetail.d.ts +23 -0
  139. package/dist/steps/StepDetail.d.ts.map +1 -0
  140. package/dist/steps/StepDetail.js +195 -0
  141. package/dist/steps/StepDetail.js.map +1 -0
  142. package/dist/steps/StepDetailHost.d.ts +54 -0
  143. package/dist/steps/StepDetailHost.d.ts.map +1 -0
  144. package/dist/steps/StepDetailHost.js +175 -0
  145. package/dist/steps/StepDetailHost.js.map +1 -0
  146. package/dist/steps/StepRail.d.ts +38 -0
  147. package/dist/steps/StepRail.d.ts.map +1 -0
  148. package/dist/steps/StepRail.js +238 -0
  149. package/dist/steps/StepRail.js.map +1 -0
  150. package/dist/steps/approval.d.ts +73 -0
  151. package/dist/steps/approval.d.ts.map +1 -0
  152. package/dist/steps/approval.js +81 -0
  153. package/dist/steps/approval.js.map +1 -0
  154. package/dist/steps/model.d.ts +140 -0
  155. package/dist/steps/model.d.ts.map +1 -0
  156. package/dist/steps/model.js +433 -0
  157. package/dist/steps/model.js.map +1 -0
  158. package/dist/steps/outcome.d.ts +5 -0
  159. package/dist/steps/outcome.d.ts.map +1 -0
  160. package/dist/steps/outcome.js +34 -0
  161. package/dist/steps/outcome.js.map +1 -0
  162. package/dist/steps/peek.d.ts +35 -0
  163. package/dist/steps/peek.d.ts.map +1 -0
  164. package/dist/steps/peek.js +219 -0
  165. package/dist/steps/peek.js.map +1 -0
  166. package/dist/steps/plan.d.ts +50 -0
  167. package/dist/steps/plan.d.ts.map +1 -0
  168. package/dist/steps/plan.js +242 -0
  169. package/dist/steps/plan.js.map +1 -0
  170. package/dist/steps/useRailDetail.d.ts +25 -0
  171. package/dist/steps/useRailDetail.d.ts.map +1 -0
  172. package/dist/steps/useRailDetail.js +108 -0
  173. package/dist/steps/useRailDetail.js.map +1 -0
  174. package/dist/steps/words.d.ts +40 -0
  175. package/dist/steps/words.d.ts.map +1 -0
  176. package/dist/steps/words.js +247 -0
  177. package/dist/steps/words.js.map +1 -0
  178. package/dist/toolRender.d.ts +27 -1
  179. package/dist/toolRender.d.ts.map +1 -1
  180. package/dist/toolRender.js +72 -4
  181. package/dist/toolRender.js.map +1 -1
  182. package/dist/transcriptSkin.d.ts.map +1 -1
  183. package/dist/transcriptSkin.js +66 -0
  184. package/dist/transcriptSkin.js.map +1 -1
  185. package/dist/transcriptSkinCss.d.ts +35 -0
  186. package/dist/transcriptSkinCss.d.ts.map +1 -1
  187. package/dist/transcriptSkinCss.js +360 -19
  188. package/dist/transcriptSkinCss.js.map +1 -1
  189. package/dist/useHoldPress.d.ts +24 -0
  190. package/dist/useHoldPress.d.ts.map +1 -0
  191. package/dist/useHoldPress.js +85 -0
  192. package/dist/useHoldPress.js.map +1 -0
  193. package/package.json +5 -5
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import { useDetailHold, useStepDetail } from './StepDetailHost';
4
+ import { StepDetailBody, stepTitle } from './StepDetail';
5
+ /** The step's cwd/root, or undefined when it names neither. */
6
+ function whereOf(args) {
7
+ const where = {};
8
+ if (typeof args.cwd === 'string')
9
+ where.cwd = args.cwd;
10
+ if (typeof args.root === 'string')
11
+ where.root = args.root;
12
+ return where.cwd !== undefined || where.root !== undefined ? where : undefined;
13
+ }
14
+ /** Every step in `items`, nested ones included, by Step.id. */
15
+ export function collectSteps(items, into) {
16
+ for (const item of items) {
17
+ if (item.kind === 'step')
18
+ into.set(item.step.id, item.step);
19
+ else if (item.kind === 'explored')
20
+ for (const s of item.steps)
21
+ into.set(s.id, s);
22
+ else if (item.kind === 'task')
23
+ collectSteps(item.items, into);
24
+ }
25
+ }
26
+ /** The detail body for `step`, with Run again when the command can be rerun. */
27
+ export function stepDetailBody(step, rerun) {
28
+ return () => {
29
+ const command = typeof step.args.command === 'string' ? step.args.command : '';
30
+ const { onRerun, canRerun } = rerun;
31
+ const where = whereOf(step.args);
32
+ const again = onRerun && step.words.kind === 'run' && command && (!canRerun || canRerun(step.name, command, where))
33
+ ? () => (where ? onRerun(step.name, command, where) : onRerun(step.name, command))
34
+ : undefined;
35
+ return _jsx(StepDetailBody, { step: step, onRerun: again });
36
+ };
37
+ }
38
+ /** `scope` prefixes every detail id this rail opens (providers reuse call ids
39
+ * across turns). Returns the selected step's id within the scope, and the opener. */
40
+ export function useRailDetail(scope, blocks, rerun) {
41
+ const detail = useStepDetail();
42
+ const openId = detail?.openId ?? null;
43
+ const inScope = openId && openId.startsWith(scope) ? openId.slice(scope.length) : null;
44
+ const step = useMemo(() => {
45
+ if (!inScope)
46
+ return undefined;
47
+ const now = new Map();
48
+ for (const b of blocks)
49
+ if (b.kind === 'rail')
50
+ collectSteps(b.items, now);
51
+ return now.get(inScope);
52
+ }, [blocks, inScope]);
53
+ // Hosts pass Run again as fresh closures each render; the detail reads the
54
+ // newest through a ref, so a new closure alone neither re-registers the open
55
+ // detail nor makes the opener a new function (StepLine is memoized on it).
56
+ const rerunRef = useRef(rerun);
57
+ rerunRef.current = rerun;
58
+ const hasRerun = !!rerun.onRerun;
59
+ const hasCanRerun = !!rerun.canRerun;
60
+ const stableRerun = useMemo(() => ({
61
+ ...(hasRerun ? {
62
+ onRerun: (tool, command, where) => {
63
+ const f = rerunRef.current.onRerun;
64
+ if (f) {
65
+ if (where)
66
+ f(tool, command, where);
67
+ else
68
+ f(tool, command);
69
+ }
70
+ },
71
+ } : {}),
72
+ ...(hasCanRerun ? {
73
+ canRerun: (tool, command, where) => {
74
+ const f = rerunRef.current.canRerun;
75
+ return f ? (where ? f(tool, command, where) : f(tool, command)) : true;
76
+ },
77
+ } : {}),
78
+ }), [hasRerun, hasCanRerun]);
79
+ // Held while this rail still has the step: when it goes (the turn or step was
80
+ // removed), the detail closes instead of showing a frozen body.
81
+ useDetailHold(step ? scope + step.id : null);
82
+ // While a step's detail is open, the host draws it from this rail's step, so a
83
+ // running step's detail follows its result as it arrives. Registered only
84
+ // when the step (or what the detail is built from) changed, not every render.
85
+ const registered = useRef(null);
86
+ useLayoutEffect(() => {
87
+ if (!detail || !step) {
88
+ registered.current = null;
89
+ return;
90
+ }
91
+ const id = scope + step.id;
92
+ const last = registered.current;
93
+ if (last && last.id === id && last.step === step && last.rerun === stableRerun)
94
+ return;
95
+ registered.current = { id, step, rerun: stableRerun };
96
+ detail.register(id, { body: stepDetailBody(step, stableRerun), status: step.status });
97
+ });
98
+ const detailRef = useRef(detail);
99
+ detailRef.current = detail;
100
+ const openStep = useCallback((s) => {
101
+ const d = detailRef.current;
102
+ if (!d)
103
+ return;
104
+ d.open({ id: scope + s.id, title: stepTitle(s), status: s.status, body: stepDetailBody(s, stableRerun) });
105
+ }, [scope, stableRerun]);
106
+ return { selectedId: inScope, openStep };
107
+ }
108
+ //# sourceMappingURL=useRailDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRailDetail.js","sourceRoot":"","sources":["../../steps/useRailDetail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ComponentType } from 'react';
2
+ import { type ToolCheckMark, type ToolHooksMark } from '@corenel/protocol';
3
+ export type StepKind = 'read' | 'search' | 'list' | 'run' | 'edit' | 'write' | 'delete' | 'delegate' | 'plan' | 'ask' | 'web' | 'git' | 'memory' | 'other';
4
+ export interface StepWords {
5
+ verb: string;
6
+ object: string;
7
+ kind: StepKind;
8
+ /** Only read, search and list: these fold into Explored. */
9
+ quiet: boolean;
10
+ icon: ComponentType<{
11
+ size?: number;
12
+ }>;
13
+ }
14
+ /** A tool name as words. A name with a space or a capital (an ACP title) is kept
15
+ * as given; otherwise underscores become spaces and the first letter is capitalized. */
16
+ export declare function displayName(name: string): string;
17
+ export declare function stepWords(name: string, args: Record<string, unknown>, running: boolean): StepWords;
18
+ /** What a permission ask is, in plain words. */
19
+ export declare function approvalTitle(tool: string): string;
20
+ /** What a tool card says about its System One check and hooks. */
21
+ export declare const HOOK_WORDS: {
22
+ readonly noted: "Note added";
23
+ readonly allowed: "Asked, allowed";
24
+ readonly off: "Hooks off for this run";
25
+ readonly show: "Show the result";
26
+ readonly hide: "Hide the result";
27
+ readonly gone: "The blocked result is no longer available.";
28
+ };
29
+ /** The card's System One states, from the stitched marks. `blocked`: the
30
+ * call was refused by a check or hook. `withheld`: a tool result was blocked
31
+ * (the page may still hold it). A block stops the chain, so a blocked call
32
+ * says only who blocked it: a block hook, else the injection check when it
33
+ * blocked (a withheld result with no blocked hook was the check too, even
34
+ * one that could not be scored), else the first ask hook answered Block. */
35
+ export declare function hookSummary(hooks: ToolHooksMark | undefined, check: ToolCheckMark | undefined): {
36
+ states: string[];
37
+ blocked: boolean;
38
+ withheld: boolean;
39
+ };
40
+ //# sourceMappingURL=words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../steps/words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,EAA2C,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMpH,MAAM,MAAM,QAAQ,GAChB,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAChE,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,4DAA4D;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxC;AAwKD;wFACwF;AACxF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAkBlG;AAuBD,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBlD;AAID,kEAAkE;AAClE,eAAO,MAAM,UAAU;;;;;;;CAOb,CAAC;AAKX;;;;;4EAK4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAczJ"}
@@ -0,0 +1,247 @@
1
+ import { IcFileText, IcFile, IcPackage, IcFolder, IcSearch, IcPlay, IcCode, IcStop, IcSave, IcFilePlus, IcEdit, IcTrash, IcUsers, IcCheck, IcHelp, IcEye, IcRefresh, IcExternal, IcGit, IcZap, IcUser, IcClock, IcWrench, } from '@corenel/ui-kit/icons';
2
+ import { parseMcpWireName } from '@corenel/protocol/mcpToolNames';
3
+ import { INJECTION_CHECK_NAME } from '@corenel/protocol';
4
+ const OBJECT_MAX = 200;
5
+ const TASK_MAX = 48;
6
+ function argsOf(raw) {
7
+ return raw !== null && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
8
+ }
9
+ /** First non-empty line of a string or number argument, clipped; '' for anything else. */
10
+ function str(a, key, max = OBJECT_MAX) {
11
+ const v = a[key];
12
+ const text = typeof v === 'string' ? v : typeof v === 'number' && Number.isFinite(v) ? String(v) : '';
13
+ if (!text)
14
+ return '';
15
+ const head = text.length > max * 4 ? text.slice(0, max * 4) : text;
16
+ const line = head.split(/\r?\n/).find((l) => l.trim())?.trim() ?? '';
17
+ return clip(line, max);
18
+ }
19
+ function clip(text, max) {
20
+ return text.length > max ? `${text.slice(0, max - 1)}…` : text;
21
+ }
22
+ function first(...parts) {
23
+ return parts.find((p) => p) ?? '';
24
+ }
25
+ function baseName(path) {
26
+ const parts = path.split(/[\\/]/).filter(Boolean);
27
+ return parts.length ? parts[parts.length - 1] : path;
28
+ }
29
+ function count(a, key, one, many) {
30
+ const v = a[key];
31
+ const n = Array.isArray(v) ? v.length : 0;
32
+ return n === 0 ? '' : n === 1 ? `1 ${one}` : `${n} ${many}`;
33
+ }
34
+ function quoted(text) {
35
+ return text ? `“${text}”` : '';
36
+ }
37
+ const def = (run, done, kind, icon, obj = () => '') => ({ run, done, kind, icon, obj });
38
+ const path = (a) => str(a, 'path');
39
+ const fixed = (text) => () => text;
40
+ const READ = def('Reading', 'Read', 'read', IcFileText, path);
41
+ const LIST = (what) => def('Listing', 'Listed', 'list', IcFolder, fixed(what));
42
+ const SEARCH_Q = def('Searching', 'Searched', 'search', IcSearch, (a) => quoted(str(a, 'query')));
43
+ const SHELL = def('Running', 'Ran', 'run', IcPlay, (a) => str(a, 'command'));
44
+ const WRITE = def('Writing', 'Wrote', 'write', IcSave, path);
45
+ const DELETE = def('Deleting', 'Deleted', 'delete', IcTrash, path);
46
+ const TOOLS = {
47
+ read_file: READ,
48
+ sidecar_fs_read_file: READ,
49
+ sidecar_fs_read_bytes: READ,
50
+ stat_file: def('Checking', 'Checked', 'read', IcFile, path),
51
+ memory_read: def('Reading', 'Read', 'read', IcFileText, (a) => str(a, 'name')),
52
+ kv_get: def('Reading', 'Read', 'read', IcFileText, (a) => str(a, 'key')),
53
+ recall_result: def('Reading', 'Read', 'read', IcFileText, (a) => str(a, 'id')),
54
+ view_strategy: def('Reading', 'Read', 'read', IcFileText, fixed('the strategy')),
55
+ browser_read: def('Reading', 'Read', 'read', IcFileText, fixed('the page')),
56
+ use_skill: def('Loading', 'Loaded', 'read', IcPackage, (a) => { const n = str(a, 'name'); return n ? `skill ${n}` : ''; }),
57
+ list_files: def('Listing', 'Listed', 'list', IcFolder, (a) => first(str(a, 'dir'), path(a), 'workspace')),
58
+ sidecar_fs_list_dir: def('Listing', 'Listed', 'list', IcFolder, (a) => first(str(a, 'dir'), path(a), 'workspace')),
59
+ list_tools: LIST('tools'),
60
+ list_agents: LIST('agents'),
61
+ list_crew: LIST('agents'),
62
+ list_strategies: LIST('strategies'),
63
+ list_saved_strategies: LIST('saved strategies'),
64
+ proc_list: LIST('processes'),
65
+ search_files: SEARCH_Q,
66
+ search_sessions: SEARCH_Q,
67
+ recall_history: SEARCH_Q,
68
+ recall_memory: SEARCH_Q,
69
+ tool_search: SEARCH_Q,
70
+ related_files: def('Searching', 'Searched', 'search', IcSearch, path),
71
+ project_graph: def('Searching', 'Searched', 'search', IcSearch, fixed('the project')),
72
+ find_agent: def('Searching', 'Searched', 'search', IcSearch, (a) => str(a, 'job')),
73
+ sidecar_shell_exec: SHELL,
74
+ shell: SHELL,
75
+ proc_start: SHELL,
76
+ console_command: SHELL,
77
+ sidecar_run_check: def('Checking', 'Checked', 'run', IcPlay, (a) => str(a, 'name')),
78
+ run_tests: def('Testing', 'Tested', 'run', IcPlay, path),
79
+ compile_prompd: def('Compiling', 'Compiled', 'run', IcCode, (a) => first(path(a), 'inline source')),
80
+ proc_stop: def('Stopping', 'Stopped', 'run', IcStop, (a) => str(a, 'proc_id')),
81
+ write_file: WRITE,
82
+ sidecar_fs_write_file: WRITE,
83
+ sidecar_fs_write_bytes: WRITE,
84
+ create_file: def('Creating', 'Created', 'write', IcFilePlus, path),
85
+ propose_edit: def('Proposing', 'Proposed an edit to', 'edit', IcEdit, path),
86
+ rename_file: def('Renaming', 'Renamed', 'edit', IcEdit, (a) => {
87
+ const from = str(a, 'from');
88
+ const to = str(a, 'to');
89
+ return from && to ? `${baseName(from)} → ${baseName(to)}` : first(from && baseName(from), to && baseName(to));
90
+ }),
91
+ delete_file: DELETE,
92
+ sidecar_fs_delete: DELETE,
93
+ forget_memory: def('Forgetting', 'Forgot', 'delete', IcTrash, (a) => str(a, 'name')),
94
+ spawn_agent: def('Delegating', 'Delegated', 'delegate', IcUsers, (a) => first(str(a, 'title', TASK_MAX), str(a, 'task', TASK_MAX))),
95
+ spawn_agents: def('Delegating', 'Delegated', 'delegate', IcUsers, (a) => count(a, 'tasks', 'sub-agent', 'sub-agents')),
96
+ call_agent: def('Calling', 'Called', 'delegate', IcUsers, (a) => str(a, 'agent')),
97
+ run_strategy: def('Calling', 'Called', 'delegate', IcUsers, (a) => str(a, 'name')),
98
+ todo_write: def('Planning', 'Planned', 'plan', IcCheck, (a) => count(a, 'todos', 'task', 'tasks')),
99
+ set_task: def('Setting', 'Set the task', 'plan', IcCheck, (a) => str(a, 'title')),
100
+ submit_plan: def('Submitting', 'Submitted the plan', 'plan', IcCheck),
101
+ orchestrate: def('Preparing', 'Prepared a task', 'plan', IcCheck, (a) => str(a, 'title')),
102
+ create_strategy: def('Drafting', 'Drafted a strategy', 'plan', IcCheck, (a) => str(a, 'goal')),
103
+ edit_strategy: def('Editing', 'Edited the strategy', 'plan', IcCheck),
104
+ update_directives: def('Updating', 'Updated directives', 'plan', IcCheck),
105
+ ask_user: def('Asking', 'Asked you', 'ask', IcHelp, (a) => {
106
+ const qs = a.questions;
107
+ const q = Array.isArray(qs) ? argsOf(qs[0]) : {};
108
+ return first(str(q, 'header'), str(q, 'question'));
109
+ }),
110
+ web_search: def('Searching', 'Searched the web', 'web', IcSearch, (a) => quoted(str(a, 'query'))),
111
+ browser_open: def('Opening', 'Opened', 'web', IcEye, (a) => str(a, 'url')),
112
+ browser_reload: def('Reloading', 'Reloaded the page', 'web', IcRefresh),
113
+ api_request: def('Calling', 'Called', 'web', IcExternal, (a) => {
114
+ const url = str(a, 'url');
115
+ return url ? `${str(a, 'method').toUpperCase() || 'GET'} ${url}` : '';
116
+ }),
117
+ search_packages: def('Searching', 'Searched packages', 'web', IcPackage, (a) => quoted(str(a, 'query'))),
118
+ sidecar_git_branch: def('Branching', 'Branched', 'git', IcGit, (a) => str(a, 'root')),
119
+ sidecar_git_commit: def('Committing', 'Committed', 'git', IcGit, (a) => str(a, 'message')),
120
+ sidecar_git_push: def('Pushing', 'Pushed', 'git', IcGit),
121
+ sidecar_open_pr: def('Opening', 'Opened a pull request', 'git', IcGit, (a) => str(a, 'title')),
122
+ save_memory: def('Saving', 'Saved memory', 'memory', IcSave, (a) => str(a, 'name')),
123
+ kv_set: def('Setting', 'Set', 'memory', IcSave, (a) => str(a, 'key')),
124
+ start_project: def('Starting', 'Started project', 'other', IcZap, (a) => str(a, 'name')),
125
+ create_crew_agent: def('Creating', 'Created agent', 'other', IcUser, (a) => str(a, 'name')),
126
+ schedule_self: def('Scheduling', 'Scheduled the next run', 'other', IcClock, (a) => str(a, 'when')),
127
+ address_participant: def('Handing', 'Handed the floor to', 'other', IcUser, (a) => str(a, 'participant')),
128
+ record_finding: def('Recording', 'Recorded a decision', 'other', IcSave),
129
+ withdraw_finding: def('Withdrawing', 'Withdrew a decision', 'other', IcTrash, (a) => str(a, 'finding_id')),
130
+ close_room: def('Closing', 'Closed the room', 'other', IcCheck),
131
+ };
132
+ const QUIET = new Set(['read', 'search', 'list']);
133
+ /** A tool name as words. A name with a space or a capital (an ACP title) is kept
134
+ * as given; otherwise underscores become spaces and the first letter is capitalized. */
135
+ export function displayName(name) {
136
+ if (typeof name !== 'string')
137
+ return '';
138
+ if (/[\sA-Z]/.test(name))
139
+ return name;
140
+ const spaced = name.replace(/_/g, ' ').trim();
141
+ return spaced ? spaced[0].toUpperCase() + spaced.slice(1) : '';
142
+ }
143
+ export function stepWords(name, args, running) {
144
+ const toolName = typeof name === 'string' ? name : '';
145
+ const a = argsOf(args);
146
+ const known = Object.prototype.hasOwnProperty.call(TOOLS, toolName) ? TOOLS[toolName] : undefined;
147
+ if (known) {
148
+ return { verb: running ? known.run : known.done, object: known.obj(a), kind: known.kind, quiet: QUIET.has(known.kind), icon: known.icon };
149
+ }
150
+ const mcp = parseMcpWireName(toolName);
151
+ if (mcp) {
152
+ return {
153
+ verb: running ? 'Using' : 'Used',
154
+ // Mid-sentence, so lower case (C8): "Used create issue on github".
155
+ object: `${plainWords(mcp.tool) || mcp.tool} on ${mcp.server}`,
156
+ kind: 'other', quiet: false, icon: IcWrench,
157
+ };
158
+ }
159
+ const label = displayName(toolName) || 'Used a tool';
160
+ return { verb: label, object: '', kind: 'other', quiet: false, icon: IcZap };
161
+ }
162
+ /* Plan 1's whole-word rules for the plain title of an ask. Whole words of the
163
+ * tool name (split on _ - . and spaces), so "truncate" is not a delete and
164
+ * "credit" is not an edit. */
165
+ const WEB_TOOLS = new Set([
166
+ 'web_search', 'browser_open', 'browser_reload', 'browser_read', 'api_request', 'search_packages',
167
+ ]);
168
+ const AGENT_TOOLS = new Set(['call_agent', 'spawn_agent', 'spawn_agents']);
169
+ /** A tool name mid-sentence ("Use list runs"): underscores, dots, hyphens and
170
+ * camelCase joins become spaces, all lower case. A name with a space (an ACP
171
+ * title) is kept as given. */
172
+ function plainWords(name) {
173
+ if (/\s/.test(name))
174
+ return name;
175
+ return name
176
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
177
+ .replace(/[_.-]+/g, ' ')
178
+ .trim()
179
+ .replace(/ +/g, ' ')
180
+ .toLowerCase();
181
+ }
182
+ /** What a permission ask is, in plain words. */
183
+ export function approvalTitle(tool) {
184
+ const id = typeof tool === 'string' ? tool : '';
185
+ const mcp = parseMcpWireName(id);
186
+ if (mcp)
187
+ return `Use ${plainWords(mcp.tool) || mcp.tool} on ${mcp.server}`;
188
+ if (AGENT_TOOLS.has(id))
189
+ return 'Call an agent';
190
+ if (WEB_TOOLS.has(id))
191
+ return 'Use the web';
192
+ const words = new Set(id.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean));
193
+ const has = (...w) => w.some((x) => words.has(x));
194
+ if (has('delete', 'remove', 'rm', 'unlink'))
195
+ return 'Delete a file';
196
+ if (has('mkdir') || (has('create') && has('folder', 'dir', 'directory')))
197
+ return 'Create a folder';
198
+ // create_file writes a file; any other create_* (an issue, a branch) is
199
+ // named by its tool rather than guessed at.
200
+ if (has('create'))
201
+ return has('file') ? 'Write a file' : `Use ${plainWords(id)}`;
202
+ if (has('write', 'edit', 'patch', 'save', 'append'))
203
+ return 'Write a file';
204
+ if (has('fetch', 'http', 'web', 'browse', 'url'))
205
+ return 'Fetch a web page';
206
+ if (has('shell', 'bash', 'exec', 'run', 'command', 'terminal', 'powershell', 'cmd'))
207
+ return 'Run a command';
208
+ return `Use ${plainWords(id) || 'a tool'}`;
209
+ }
210
+ /* ---- System One on a tool card ---- */
211
+ /** What a tool card says about its System One check and hooks. */
212
+ export const HOOK_WORDS = {
213
+ noted: 'Note added',
214
+ allowed: 'Asked, allowed',
215
+ off: 'Hooks off for this run',
216
+ show: 'Show the result',
217
+ hide: 'Hide the result',
218
+ gone: 'The blocked result is no longer available.',
219
+ };
220
+ const CHECK_BLOCKED = new Set(['blocked', 'asked-blocked', 'failed-asked-blocked']);
221
+ const CHECK_ALLOWED = new Set(['asked-allowed', 'failed-asked-allowed']);
222
+ /** The card's System One states, from the stitched marks. `blocked`: the
223
+ * call was refused by a check or hook. `withheld`: a tool result was blocked
224
+ * (the page may still hold it). A block stops the chain, so a blocked call
225
+ * says only who blocked it: a block hook, else the injection check when it
226
+ * blocked (a withheld result with no blocked hook was the check too, even
227
+ * one that could not be scored), else the first ask hook answered Block. */
228
+ export function hookSummary(hooks, check) {
229
+ const marks = hooks?.marks ?? [];
230
+ const withheld = hooks?.withheld === true;
231
+ const checkBlocked = check?.outcome !== undefined && CHECK_BLOCKED.has(check.outcome);
232
+ const blocker = marks.find((m) => m.action === 'block' && m.outcome === 'blocked')?.name
233
+ ?? (checkBlocked ? INJECTION_CHECK_NAME : undefined)
234
+ ?? marks.find((m) => m.outcome === 'blocked')?.name
235
+ ?? (withheld ? INJECTION_CHECK_NAME : undefined);
236
+ if (blocker !== undefined)
237
+ return { states: [`Blocked by ${blocker}`], blocked: true, withheld };
238
+ const states = [];
239
+ if (hooks?.off)
240
+ states.push(HOOK_WORDS.off);
241
+ if (marks.some((m) => m.outcome === 'allowed') || (check?.outcome !== undefined && CHECK_ALLOWED.has(check.outcome)))
242
+ states.push(HOOK_WORDS.allowed);
243
+ if (marks.some((m) => m.outcome === 'noted'))
244
+ states.push(HOOK_WORDS.noted);
245
+ return { states, blocked: false, withheld };
246
+ }
247
+ //# sourceMappingURL=words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.js","sourceRoot":"","sources":["../../steps/words.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { ArrivalEffect } from './arrivalEffect';
3
+ import type { ToolCheckMark, ToolHooksMark } from '@corenel/protocol';
3
4
  /** A tool call normalized for rendering — surface-agnostic. */
4
5
  export interface ToolInvocation {
5
6
  name: string;
@@ -9,18 +10,43 @@ export interface ToolInvocation {
9
10
  running?: boolean;
10
11
  /** Duration in ms, when the surface tracks it. */
11
12
  ms?: number;
13
+ /** Injection check score of the output, when one came back. */
14
+ check?: ToolCheckMark;
15
+ /** What the System One hooks did for this call (`_hooks`), when any ran. */
16
+ hooks?: ToolHooksMark;
17
+ /** The provider's call id, for a blocked result the page still holds. */
18
+ callId?: string;
12
19
  }
20
+ /** Looks up a tool result a System One check or hook blocked in this page
21
+ * (the controller's blockedResult, bound to the session). Null: none held. */
22
+ export declare const BlockedResults: React.Context<((callId: string) => string | undefined) | null>;
23
+ /** A blocked tool result, behind "Show the result" while this page holds it;
24
+ * after a reload it is gone and the card says so. Nothing for a call whose
25
+ * result was not withheld. */
26
+ export declare function BlockedResult({ callId, hooks, check }: {
27
+ callId?: string;
28
+ hooks?: ToolHooksMark;
29
+ check?: ToolCheckMark;
30
+ }): React.JSX.Element | null;
31
+ /** A check at or above this reads as flagged. Display only; nothing acts on it.
32
+ * Same line as the API's INJECTION_FLAG_SCORE (TelemetryQueries.js). */
33
+ export declare const CHECK_FLAG_AT = 0.5;
34
+ /** The check in words: "injection 0.03", plus "flagged" and "(start)" when
35
+ * they apply. The tool card's badge and the step rail's detail both say this. */
36
+ export declare function checkText(check: ToolCheckMark): string;
13
37
  type ToolStatus = 'running' | 'ok' | 'warn' | 'error';
14
38
  export declare function toolStatusOf(name: string, result: string, isError: boolean): ToolStatus;
15
39
  /** One tool's glanceable status line. Shared by the card header, the summary
16
40
  * renderer, and AgentPanel's live (in-flight) list so a call resolves in place. */
17
- export declare function ToolLine({ name, args, result, isError, running, ms, nameFx }: {
41
+ export declare function ToolLine({ name, args, result, isError, running, ms, check, hooks, nameFx }: {
18
42
  name: string;
19
43
  args: Record<string, unknown>;
20
44
  result?: string;
21
45
  isError?: boolean;
22
46
  running?: boolean;
23
47
  ms?: number;
48
+ check?: ToolCheckMark;
49
+ hooks?: ToolHooksMark;
24
50
  /** Animate the name in once (live turn under an arrival effect). */
25
51
  nameFx?: ArrivalEffect;
26
52
  }): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"toolRender.d.ts","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASrD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAoEtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAQvF;AA0BD;mFACmF;AACnF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAe,EAAE,EAAE;IACtF,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAChH,oEAAoE;IACpE,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,qBA8BA;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,WAAmB,EAAE,MAAe,EAAE,EAAE;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,qBAcnJ;AAED;;wEAEwE;AACxE,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,qBAYnH"}
1
+ {"version":3,"file":"toolRender.d.ts","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAK9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQrD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtE,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;8EAC8E;AAC9E,eAAO,MAAM,cAAc,0BAA2B,MAAM,KAAK,MAAM,GAAG,SAAS,SAAe,CAAC;AAUnG;;8BAE8B;AAC9B,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,4BAcxH;AAED;wEACwE;AACxE,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;iFACiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAItD;AAgBD,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAoEtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAQvF;AA0BD;mFACmF;AACnF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;IACpG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IACvI,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,qBAkCA;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,WAAmB,EAAE,MAAe,EAAE,EAAE;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,qBAenJ;AAED;;wEAEwE;AACxE,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,qBAYnH"}
@@ -13,13 +13,60 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  * - `ToolLine` — the dense status line the SUMMARY renderer uses on its own (and
14
14
  * the card header reuses), plus the live in-flight list in AgentPanel.
15
15
  */
16
- import { useContext, useEffect, useState } from 'react';
16
+ import { createContext, useContext, useEffect, useState } from 'react';
17
17
  import { isToolErrorResult } from '@corenel/harness/core/recovery';
18
18
  import { RichResult, RichArgs, CopyBtn } from './RichContent';
19
19
  import { FxText } from './fx/FxText';
20
20
  import { IcCheck, IcChevronRight, IcZap, IcGit, IcRefresh, IcAlert, IcCode, IcPackage, IcSave, IcSearch, IcFileText, IcFile, IcFilePlus, IcTrash, IcEdit, IcFolder, IcDownload, IcHelp, IcUser, IcEye, } from '@corenel/ui-kit/icons';
21
21
  import { txMeta } from './transcriptSkin';
22
22
  import { credentialProblemLine, ToolOwnerLabel } from './credentialLines';
23
+ import { hookSummary, HOOK_WORDS } from './steps/words';
24
+ /** Looks up a tool result a System One check or hook blocked in this page
25
+ * (the controller's blockedResult, bound to the session). Null: none held. */
26
+ export const BlockedResults = createContext(null);
27
+ /** The System One states on a tool line: "Blocked by <name>", "Asked,
28
+ * allowed", "Note added", "Hooks off for this run". */
29
+ function HookStates({ hooks, check }) {
30
+ const { states, blocked } = hookSummary(hooks, check);
31
+ if (!states.length)
32
+ return null;
33
+ return _jsx("span", { style: S.hookState(blocked), "data-tx-part": "hook-state", children: states.join(', ') });
34
+ }
35
+ /** A blocked tool result, behind "Show the result" while this page holds it;
36
+ * after a reload it is gone and the card says so. Nothing for a call whose
37
+ * result was not withheld. */
38
+ export function BlockedResult({ callId, hooks, check }) {
39
+ const lookup = useContext(BlockedResults);
40
+ const [open, setOpen] = useState(false);
41
+ if (!hookSummary(hooks, check).withheld)
42
+ return null;
43
+ const text = callId && lookup ? lookup(callId) : undefined;
44
+ if (text === undefined)
45
+ return _jsx("div", { style: S.blockedGone, "data-tx-part": "blocked-gone", children: HOOK_WORDS.gone });
46
+ return (_jsxs("div", { "data-tx-part": "blocked-result", children: [_jsx("button", { type: "button", style: S.blockedToggle, "aria-expanded": open, onClick: () => setOpen((o) => !o), children: open ? HOOK_WORDS.hide : HOOK_WORDS.show }), open && _jsx("pre", { style: S.blockedText, children: text })] }));
47
+ }
48
+ /** A check at or above this reads as flagged. Display only; nothing acts on it.
49
+ * Same line as the API's INJECTION_FLAG_SCORE (TelemetryQueries.js). */
50
+ export const CHECK_FLAG_AT = 0.5;
51
+ /** The check in words: "injection 0.03", plus "flagged" and "(start)" when
52
+ * they apply. The tool card's badge and the step rail's detail both say this. */
53
+ export function checkText(check) {
54
+ if (!('score' in check))
55
+ return 'injection not scored';
56
+ const flagged = check.score >= CHECK_FLAG_AT;
57
+ return `injection ${check.score.toFixed(2)}${flagged ? ' flagged' : ''}${check.cut ? ' (start)' : ''}`;
58
+ }
59
+ /** The injection check badge: "injection 0.03". */
60
+ /* Flagged and cut are words in the text, not only colour and a title, so they
61
+ * read on touch screens and to screen readers. */
62
+ function CheckBadge({ check }) {
63
+ const flagged = 'score' in check && check.score >= CHECK_FLAG_AT;
64
+ const title = !('score' in check)
65
+ ? 'Injection check: System One did not answer for this output, so you were asked.'
66
+ : 'Injection check: how likely this output is to contain instructions aimed at the AI, from 0 to 1.'
67
+ + (check.cut ? ' Only the start of this output was checked.' : '');
68
+ return _jsx("span", { style: S.check(flagged), title: title, "data-tx-check": flagged ? 'flagged' : 'clear', children: checkText(check) });
69
+ }
23
70
  const TOOLS = {
24
71
  compile_prompd: { label: 'Compile', icon: IcCode },
25
72
  propose_edit: { label: 'Propose edit', icon: IcGit },
@@ -145,7 +192,7 @@ function StatusGlyph({ status }) {
145
192
  }
146
193
  /** One tool's glanceable status line. Shared by the card header, the summary
147
194
  * renderer, and AgentPanel's live (in-flight) list so a call resolves in place. */
148
- export function ToolLine({ name, args, result, isError, running, ms, nameFx = 'none' }) {
195
+ export function ToolLine({ name, args, result, isError, running, ms, check, hooks, nameFx = 'none' }) {
149
196
  const def = TOOLS[name];
150
197
  const Icon = def?.icon ?? IcZap;
151
198
  const label = def?.label ?? name;
@@ -161,7 +208,9 @@ export function ToolLine({ name, args, result, isError, running, ms, nameFx = 'n
161
208
  // found...", or 1 item / 1 note for the other metric-bearing tools.
162
209
  const outcome = running || status === 'error' ? '' : toolMeta(name, args, result || '');
163
210
  const dur = !running && typeof ms === 'number' ? fmtMs(ms) : '';
164
- return (_jsxs("span", { style: S.toolLine, children: [_jsx(StatusGlyph, { status: status }), _jsx("span", { style: S.toolIcon, children: _jsx(Icon, { size: 13 }) }), _jsx("span", { "data-tx-part": "tool-name", style: S.toolName, children: nameFx === 'none' ? label : _jsx(FxText, { text: label, effect: nameFx }) }), detail && _jsx("span", { style: status === 'error' ? S.toolDetailErr : S.toolDetail, children: detail }), (outcome || dur) && (_jsxs("span", { style: S.toolRight, children: [outcome && _jsx("span", { style: S.toolMeta, children: outcome }), dur && _jsx("span", { style: S.toolDur, title: "Time the tool took to run", children: dur })] }))] }));
211
+ const shownCheck = !running && check ? check : null;
212
+ const shownHooks = !running && (hooks || check) ? hookSummary(hooks, check).states.length > 0 : false;
213
+ return (_jsxs("span", { style: S.toolLine, children: [_jsx(StatusGlyph, { status: status }), _jsx("span", { style: S.toolIcon, children: _jsx(Icon, { size: 13 }) }), _jsx("span", { "data-tx-part": "tool-name", style: S.toolName, children: nameFx === 'none' ? label : _jsx(FxText, { text: label, effect: nameFx }) }), detail && _jsx("span", { style: status === 'error' ? S.toolDetailErr : S.toolDetail, children: detail }), (outcome || dur || shownCheck || shownHooks) && (_jsxs("span", { style: S.toolRight, children: [shownHooks && _jsx(HookStates, { hooks: hooks, check: check }), shownCheck && _jsx(CheckBadge, { check: shownCheck }), outcome && _jsx("span", { style: S.toolMeta, children: outcome }), dur && _jsx("span", { style: S.toolDur, title: "Time the tool took to run", children: dur })] }))] }));
165
214
  }
166
215
  /** STANDARD tool renderer (normal + expanded): a collapsible card. `defaultOpen`
167
216
  * is the only difference between the two views — expanded opens every card. */
@@ -170,7 +219,7 @@ export function ToolResultCard({ inv, defaultOpen = false, nameFx = 'none' }) {
170
219
  const [open, setOpen] = useState(defaultOpen);
171
220
  // Switching the transcript view re-syncs every card's open state.
172
221
  useEffect(() => setOpen(defaultOpen), [defaultOpen]);
173
- return (_jsxs("div", { style: S.tool(status), "data-tx-part": "tool", "data-tx-status": status, children: [_jsxs("button", { style: S.toolHead, onClick: () => setOpen((o) => !o), "aria-expanded": open, "data-tx-part": "tool-head", children: [_jsx(ToolLine, { name: inv.name, args: inv.args, result: inv.result, isError: inv.isError, running: inv.running, ms: inv.ms, nameFx: nameFx }), _jsx("span", { style: { ...S.chev, marginLeft: 8, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), open && _jsx(ToolDetails, { name: inv.name, args: inv.args, result: inv.result })] }));
222
+ return (_jsxs("div", { style: S.tool(status), "data-tx-part": "tool", "data-tx-status": status, children: [_jsxs("button", { style: S.toolHead, onClick: () => setOpen((o) => !o), "aria-expanded": open, "data-tx-part": "tool-head", children: [_jsx(ToolLine, { name: inv.name, args: inv.args, result: inv.result, isError: inv.isError, running: inv.running, ms: inv.ms, check: inv.check, hooks: inv.hooks, nameFx: nameFx }), _jsx("span", { style: { ...S.chev, marginLeft: 8, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), open && !inv.running && _jsx("div", { style: S.blockedWrap, children: _jsx(BlockedResult, { callId: inv.callId, hooks: inv.hooks, check: inv.check }) }), open && _jsx(ToolDetails, { name: inv.name, args: inv.args, result: inv.result })] }));
174
223
  }
175
224
  /** The expandable body of a tool invocation — arguments (JSON) + the rich result
176
225
  * renderer. Shared by ToolResultCard and any other surface that wants the SAME
@@ -198,6 +247,25 @@ const S = {
198
247
  toolDetailErr: { fontFamily: mono, fontSize: txMeta(11.5), color: 'var(--danger)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', minWidth: 0 },
199
248
  toolRight: { marginLeft: 'auto', display: 'inline-flex', alignItems: 'center', gap: 8, flexShrink: 0, paddingLeft: 8 },
200
249
  toolMeta: { fontSize: txMeta(11), color: 'var(--text-tertiary)', fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
250
+ check: (flagged) => ({
251
+ fontFamily: mono, fontSize: txMeta(10.5), fontVariantNumeric: 'tabular-nums', flexShrink: 0,
252
+ padding: '0 6px', borderRadius: 999,
253
+ color: flagged ? 'var(--warning, #f59e0b)' : 'var(--text-disabled)',
254
+ border: flagged ? '1px solid var(--warning, #f59e0b)' : '1px solid var(--border-subtle)',
255
+ }),
256
+ hookState: (blocked) => ({
257
+ fontSize: txMeta(10.5), flexShrink: 0, color: blocked ? 'var(--danger)' : 'var(--text-tertiary)',
258
+ }),
259
+ blockedWrap: { padding: 'var(--tx-tool-body-pad, 0 10px 0)' },
260
+ blockedGone: { fontSize: txMeta(11.5), color: 'var(--text-tertiary)', padding: '4px 0' },
261
+ blockedToggle: {
262
+ minHeight: 44, padding: '0 12px', borderRadius: 8, border: '1px solid var(--border-subtle)',
263
+ background: 'transparent', color: 'var(--text-primary)', fontFamily: 'inherit', fontSize: txMeta(12), cursor: 'pointer',
264
+ },
265
+ blockedText: {
266
+ margin: '6px 0 0', padding: 8, maxHeight: 240, overflow: 'auto', whiteSpace: 'pre-wrap', overflowWrap: 'anywhere',
267
+ fontFamily: mono, fontSize: txMeta(11.5), color: 'var(--text-secondary)', background: 'var(--bg-subtle, transparent)', borderRadius: 6,
268
+ },
201
269
  toolDur: { fontSize: txMeta(10.5), color: 'var(--text-disabled)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
202
270
  resultHead: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginTop: 8 },
203
271
  glyph: (status) => ({