@pentoshi/clai 4.11.16 → 4.11.18
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/README.md +31 -22
- package/dist/agent/compaction/summary-execution.d.ts +1 -0
- package/dist/agent/compaction/summary-execution.js +25 -16
- package/dist/agent/compaction/summary-execution.js.map +1 -1
- package/dist/agent/context/compact-with-summary.js +18 -0
- package/dist/agent/context/compact-with-summary.js.map +1 -1
- package/dist/agent/context/compaction-source-prefix.d.ts +8 -0
- package/dist/agent/context/compaction-source-prefix.js +26 -0
- package/dist/agent/context/compaction-source-prefix.js.map +1 -0
- package/dist/agent/plan-decision.js +5 -1
- package/dist/agent/plan-decision.js.map +1 -1
- package/dist/agent/runner.js +3 -0
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/subagents/manager.d.ts +5 -0
- package/dist/agent/subagents/manager.js +52 -5
- package/dist/agent/subagents/manager.js.map +1 -1
- package/dist/agent/subagents/model-chain.d.ts +31 -0
- package/dist/agent/subagents/model-chain.js +146 -0
- package/dist/agent/subagents/model-chain.js.map +1 -0
- package/dist/agent/subagents/read-only-tools.js +362 -54
- package/dist/agent/subagents/read-only-tools.js.map +1 -1
- package/dist/agent/subagents/tools.js +21 -1
- package/dist/agent/subagents/tools.js.map +1 -1
- package/dist/agent/subagents/types.d.ts +5 -0
- package/dist/agent/subagents/worker.js +106 -45
- package/dist/agent/subagents/worker.js.map +1 -1
- package/dist/agent/turn/compaction-summarizer.d.ts +1 -0
- package/dist/agent/turn/compaction-summarizer.js +2 -0
- package/dist/agent/turn/compaction-summarizer.js.map +1 -1
- package/dist/agent/turn/loop/run-rounds.js +2 -0
- package/dist/agent/turn/loop/run-rounds.js.map +1 -1
- package/dist/agent/turn/loop/stream-request.js +1 -0
- package/dist/agent/turn/loop/stream-request.js.map +1 -1
- package/dist/agent/turn/setup/compaction-services.d.ts +2 -1
- package/dist/agent/turn/setup/compaction-services.js +14 -0
- package/dist/agent/turn/setup/compaction-services.js.map +1 -1
- package/dist/agent/turn/setup/turn-budget.js +1 -9
- package/dist/agent/turn/setup/turn-budget.js.map +1 -1
- package/dist/agent/turn/subagent-inbox.d.ts +1 -0
- package/dist/agent/turn/subagent-inbox.js +12 -1
- package/dist/agent/turn/subagent-inbox.js.map +1 -1
- package/dist/app/commands/catalog.js +2 -1
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/session-compact-helper.d.ts +2 -0
- package/dist/app/controllers/session-compact-helper.js +7 -3
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-context-usage.d.ts +2 -5
- package/dist/app/controllers/session-context-usage.js +28 -101
- package/dist/app/controllers/session-context-usage.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +8 -1
- package/dist/app/controllers/session-controller.js +14 -11
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-subagents.d.ts +1 -0
- package/dist/app/controllers/session-subagents.js +7 -1
- package/dist/app/controllers/session-subagents.js.map +1 -1
- package/dist/classic/app/ClassicApp.js +4 -0
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/chrome/Chrome.d.ts +1 -1
- package/dist/classic/chrome/Chrome.js +1 -0
- package/dist/classic/chrome/Chrome.js.map +1 -1
- package/dist/classic/chrome/SubagentsStrip.d.ts +3 -0
- package/dist/classic/chrome/SubagentsStrip.js +9 -0
- package/dist/classic/chrome/SubagentsStrip.js.map +1 -0
- package/dist/classic/chrome/row-budget.d.ts +2 -0
- package/dist/classic/chrome/row-budget.js +4 -1
- package/dist/classic/chrome/row-budget.js.map +1 -1
- package/dist/classic/chrome/subagents-row.d.ts +9 -0
- package/dist/classic/chrome/subagents-row.js +13 -0
- package/dist/classic/chrome/subagents-row.js.map +1 -0
- package/dist/classic/panels/keys-panel.d.ts +2 -2
- package/dist/classic/panels/keys-panel.js +24 -8
- package/dist/classic/panels/keys-panel.js.map +1 -1
- package/dist/classic/panels/pager-panel.d.ts +2 -2
- package/dist/classic/panels/pager-panel.js +7 -6
- package/dist/classic/panels/pager-panel.js.map +1 -1
- package/dist/classic/panels/panel-host.js +7 -2
- package/dist/classic/panels/panel-host.js.map +1 -1
- package/dist/commands/providers.js +8 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/llm/anthropic.js +29 -1
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/bynara.js +9 -20
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +6 -1
- package/dist/llm/capabilities.js +130 -6
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/capability/state.d.ts +1 -1
- package/dist/llm/capability/state.js +16 -2
- package/dist/llm/capability/state.js.map +1 -1
- package/dist/llm/capability/tool-dialect.js +4 -0
- package/dist/llm/capability/tool-dialect.js.map +1 -1
- package/dist/llm/capability/vision-patterns.d.ts +1 -0
- package/dist/llm/capability/vision-patterns.js +31 -1
- package/dist/llm/capability/vision-patterns.js.map +1 -1
- package/dist/llm/capability/vision-registry.js +8 -2
- package/dist/llm/capability/vision-registry.js.map +1 -1
- package/dist/llm/context-windows.js +1 -0
- package/dist/llm/context-windows.js.map +1 -1
- package/dist/llm/deepseek.d.ts +2 -0
- package/dist/llm/deepseek.js +91 -0
- package/dist/llm/deepseek.js.map +1 -0
- package/dist/llm/glm.d.ts +2 -0
- package/dist/llm/glm.js +91 -0
- package/dist/llm/glm.js.map +1 -0
- package/dist/llm/kimi.d.ts +2 -0
- package/dist/llm/kimi.js +91 -0
- package/dist/llm/kimi.js.map +1 -0
- package/dist/llm/learned-capabilities.js +9 -3
- package/dist/llm/learned-capabilities.js.map +1 -1
- package/dist/llm/lowest-reasoning.js +20 -7
- package/dist/llm/lowest-reasoning.js.map +1 -1
- package/dist/llm/minimax.d.ts +2 -0
- package/dist/llm/minimax.js +91 -0
- package/dist/llm/minimax.js.map +1 -0
- package/dist/llm/modal.js +5 -0
- package/dist/llm/modal.js.map +1 -1
- package/dist/llm/model-layers/model-rules.js +24 -0
- package/dist/llm/model-layers/model-rules.js.map +1 -1
- package/dist/llm/ollama.js +26 -1
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/provider-identity.js +25 -0
- package/dist/llm/provider-identity.js.map +1 -1
- package/dist/llm/provider-info-text.js +121 -3
- package/dist/llm/provider-info-text.js.map +1 -1
- package/dist/llm/provider-profile-layers.js +118 -0
- package/dist/llm/provider-profile-layers.js.map +1 -1
- package/dist/llm/provider.js +14 -2
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/reasoning-capability.js +4 -0
- package/dist/llm/reasoning-capability.js.map +1 -1
- package/dist/llm/reasoning-errors.js +1 -1
- package/dist/llm/reasoning-errors.js.map +1 -1
- package/dist/llm/request-purpose.d.ts +3 -0
- package/dist/llm/request-purpose.js +11 -0
- package/dist/llm/request-purpose.js.map +1 -0
- package/dist/llm/responses-config.d.ts +1 -0
- package/dist/llm/responses-config.js +6 -0
- package/dist/llm/responses-config.js.map +1 -1
- package/dist/llm/responses-http.d.ts +1 -1
- package/dist/llm/responses-http.js +2 -1
- package/dist/llm/responses-http.js.map +1 -1
- package/dist/llm/responses-stream.d.ts +2 -2
- package/dist/llm/responses-stream.js +3 -2
- package/dist/llm/responses-stream.js.map +1 -1
- package/dist/llm/routing/attempt-complete.js +15 -3
- package/dist/llm/routing/attempt-complete.js.map +1 -1
- package/dist/llm/routing/attempt-request.d.ts +11 -0
- package/dist/llm/routing/attempt-request.js +56 -5
- package/dist/llm/routing/attempt-request.js.map +1 -1
- package/dist/llm/routing/attempt-stream.js +15 -3
- package/dist/llm/routing/attempt-stream.js.map +1 -1
- package/dist/llm/routing/error-classification.d.ts +2 -0
- package/dist/llm/routing/error-classification.js +26 -6
- package/dist/llm/routing/error-classification.js.map +1 -1
- package/dist/llm/routing/key-rotation.js +26 -11
- package/dist/llm/routing/key-rotation.js.map +1 -1
- package/dist/llm/routing/provider-selection.js +12 -0
- package/dist/llm/routing/provider-selection.js.map +1 -1
- package/dist/llm/session-affinity.d.ts +1 -0
- package/dist/llm/session-affinity.js +4 -0
- package/dist/llm/session-affinity.js.map +1 -1
- package/dist/llm/session-route.d.ts +7 -0
- package/dist/llm/session-route.js +16 -0
- package/dist/llm/session-route.js.map +1 -0
- package/dist/llm/wire/capability-errors.js +4 -4
- package/dist/llm/wire/capability-errors.js.map +1 -1
- package/dist/llm/wire/chat-body.js +5 -4
- package/dist/llm/wire/chat-body.js.map +1 -1
- package/dist/llm/wire/effort-preflight.d.ts +15 -0
- package/dist/llm/wire/effort-preflight.js +141 -0
- package/dist/llm/wire/effort-preflight.js.map +1 -0
- package/dist/llm/wire/image-payloads.d.ts +2 -0
- package/dist/llm/wire/image-payloads.js +34 -0
- package/dist/llm/wire/image-payloads.js.map +1 -0
- package/dist/llm/wire/openai-complete.d.ts +4 -1
- package/dist/llm/wire/openai-complete.js +11 -3
- package/dist/llm/wire/openai-complete.js.map +1 -1
- package/dist/llm/wire/openai-stream.d.ts +5 -2
- package/dist/llm/wire/openai-stream.js +17 -8
- package/dist/llm/wire/openai-stream.js.map +1 -1
- package/dist/llm/wire/responses-first.d.ts +4 -1
- package/dist/llm/wire/responses-first.js +11 -7
- package/dist/llm/wire/responses-first.js.map +1 -1
- package/dist/llm/wire/responses-preflight.js +29 -12
- package/dist/llm/wire/responses-preflight.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/index.js +42 -21
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +3 -3
- package/dist/store/config/endpoints.d.ts +11 -0
- package/dist/store/config/endpoints.js +19 -1
- package/dist/store/config/endpoints.js.map +1 -1
- package/dist/store/config/subagent-models.d.ts +7 -0
- package/dist/store/config/subagent-models.js +73 -0
- package/dist/store/config/subagent-models.js.map +1 -0
- package/dist/store/config.d.ts +4 -3
- package/dist/store/config.js +7 -2
- package/dist/store/config.js.map +1 -1
- package/dist/store/keys.js +8 -1
- package/dist/store/keys.js.map +1 -1
- package/dist/store/subagents.js +8 -1
- package/dist/store/subagents.js.map +1 -1
- package/dist/tools/definitions/subagents.d.ts +1 -1
- package/dist/tools/definitions/subagents.js +15 -6
- package/dist/tools/definitions/subagents.js.map +1 -1
- package/dist/tui-v2/app/App.js +4 -0
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/bootstrap/patch-opentui-text.js +14 -13
- package/dist/tui-v2/bootstrap/patch-opentui-text.js.map +1 -1
- package/dist/tui-v2/bootstrap/renderer-handle.d.ts +1 -0
- package/dist/tui-v2/bootstrap/renderer-handle.js +2 -1
- package/dist/tui-v2/bootstrap/renderer-handle.js.map +1 -1
- package/dist/tui-v2/bootstrap/shrink-resize-guard.d.ts +27 -0
- package/dist/tui-v2/bootstrap/shrink-resize-guard.js +118 -0
- package/dist/tui-v2/bootstrap/shrink-resize-guard.js.map +1 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js +3 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/jobs/subagents-panel.d.ts +11 -0
- package/dist/tui-v2/components/jobs/subagents-panel.js +80 -0
- package/dist/tui-v2/components/jobs/subagents-panel.js.map +1 -0
- package/dist/tui-v2/components/modal/keys-modal-pick.d.ts +9 -0
- package/dist/tui-v2/components/modal/keys-modal-pick.js +15 -0
- package/dist/tui-v2/components/modal/keys-modal-pick.js.map +1 -0
- package/dist/tui-v2/components/modal/keys-modal.js +46 -12
- package/dist/tui-v2/components/modal/keys-modal.js.map +1 -1
- package/dist/tui-v2/components/pager/pager-line.js +3 -2
- package/dist/tui-v2/components/pager/pager-line.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.js +47 -35
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/transcript/thinking-block.js +1 -3
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
- package/dist/tui-v2/components/transcript/thinking-presentation.d.ts +0 -1
- package/dist/tui-v2/components/transcript/thinking-presentation.js +1 -3
- package/dist/tui-v2/components/transcript/thinking-presentation.js.map +1 -1
- package/dist/tui-v2/rendering/pager-markdown.d.ts +2 -0
- package/dist/tui-v2/rendering/pager-markdown.js +10 -6
- package/dist/tui-v2/rendering/pager-markdown.js.map +1 -1
- package/dist/tui-v2/rendering/subagent-ansi.d.ts +4 -0
- package/dist/tui-v2/rendering/subagent-ansi.js +10 -0
- package/dist/tui-v2/rendering/subagent-ansi.js.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/ui-core/commands/picker-commands.d.ts +12 -0
- package/dist/ui-core/commands/picker-commands.js +9 -5
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/ui-core/commands/session-commands.js +5 -3
- package/dist/ui-core/commands/session-commands.js.map +1 -1
- package/dist/ui-core/commands/subagent-commands.d.ts +8 -0
- package/dist/ui-core/commands/subagent-commands.js +81 -21
- package/dist/ui-core/commands/subagent-commands.js.map +1 -1
- package/dist/ui-core/commands/subagent-models-editor.d.ts +2 -0
- package/dist/ui-core/commands/subagent-models-editor.js +123 -0
- package/dist/ui-core/commands/subagent-models-editor.js.map +1 -0
- package/dist/ui-core/controllers/overlay-controller.d.ts +10 -0
- package/dist/ui-core/controllers/overlay-controller.js.map +1 -1
- package/dist/ui-core/rendering/format-usage.js +5 -0
- package/dist/ui-core/rendering/format-usage.js.map +1 -1
- package/dist/ui-core/rendering/markdown.d.ts +2 -0
- package/dist/ui-core/rendering/markdown.js +1 -1
- package/dist/ui-core/rendering/markdown.js.map +1 -1
- package/dist/ui-core/rendering/sanitize-display.d.ts +3 -0
- package/dist/ui-core/rendering/sanitize-display.js +33 -2
- package/dist/ui-core/rendering/sanitize-display.js.map +1 -1
- package/dist/ui-core/rendering/status-segments.js +3 -1
- package/dist/ui-core/rendering/status-segments.js.map +1 -1
- package/dist/ui-core/rendering/subagent-presentation.d.ts +2 -0
- package/dist/ui-core/rendering/subagent-presentation.js +9 -0
- package/dist/ui-core/rendering/subagent-presentation.js.map +1 -1
- package/dist/ui-core/rendering/subagent-source.d.ts +2 -0
- package/dist/ui-core/rendering/subagent-source.js +10 -1
- package/dist/ui-core/rendering/subagent-source.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
- package/dist/llm/effort-fallback.d.ts +0 -6
- package/dist/llm/effort-fallback.js +0 -67
- package/dist/llm/effort-fallback.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TextRenderable, stringToStyledText, StyledText } from "@opentui/core";
|
|
2
|
-
import { sanitizeDisplayText } from "../../ui-core/rendering/sanitize-display.js";
|
|
1
|
+
import { TextBuffer, TextRenderable, stringToStyledText, StyledText } from "@opentui/core";
|
|
2
|
+
import { sanitizeDisplayText, sanitizeDisplayTextChunks } from "../../ui-core/rendering/sanitize-display.js";
|
|
3
3
|
let patched = false;
|
|
4
4
|
function isStyledText(value) {
|
|
5
5
|
return (value instanceof StyledText ||
|
|
@@ -17,17 +17,8 @@ export function sanitizeOpenTuiTextContent(value) {
|
|
|
17
17
|
if (isStyledText(value)) {
|
|
18
18
|
if (!value.chunks || value.chunks.length === 0)
|
|
19
19
|
return " ";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const sanitized = sanitizeDisplayText(chunk.text);
|
|
23
|
-
if (sanitized === chunk.text)
|
|
24
|
-
return chunk;
|
|
25
|
-
changed = true;
|
|
26
|
-
return { ...chunk, text: sanitized };
|
|
27
|
-
});
|
|
28
|
-
if (chunks.every((chunk) => chunk.text.length === 0))
|
|
29
|
-
return " ";
|
|
30
|
-
return changed ? new StyledText(chunks) : value;
|
|
20
|
+
const sanitized = sanitizeStyledText(value);
|
|
21
|
+
return sanitized.chunks.length === 0 ? " " : sanitized;
|
|
31
22
|
}
|
|
32
23
|
try {
|
|
33
24
|
const sanitized = sanitizeDisplayText(String(value));
|
|
@@ -37,10 +28,20 @@ export function sanitizeOpenTuiTextContent(value) {
|
|
|
37
28
|
return " ";
|
|
38
29
|
}
|
|
39
30
|
}
|
|
31
|
+
function sanitizeStyledText(value) {
|
|
32
|
+
const chunks = sanitizeDisplayTextChunks(value.chunks).filter((chunk) => chunk.text.length > 0);
|
|
33
|
+
return chunks.length === value.chunks.length && chunks.every((chunk, index) => chunk === value.chunks[index])
|
|
34
|
+
? value
|
|
35
|
+
: new StyledText(chunks);
|
|
36
|
+
}
|
|
40
37
|
export function patchOpenTuiTextContent() {
|
|
41
38
|
if (patched)
|
|
42
39
|
return;
|
|
43
40
|
patched = true;
|
|
41
|
+
const setStyledText = TextBuffer.prototype.setStyledText;
|
|
42
|
+
TextBuffer.prototype.setStyledText = function (value) {
|
|
43
|
+
setStyledText.call(this, sanitizeStyledText(value));
|
|
44
|
+
};
|
|
44
45
|
const proto = TextRenderable.prototype;
|
|
45
46
|
const desc = Object.getOwnPropertyDescriptor(proto, "content");
|
|
46
47
|
if (!desc?.set || !desc.get)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-opentui-text.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/patch-opentui-text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"patch-opentui-text.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/patch-opentui-text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAE7G,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,KAAK,YAAY,UAAU;QAC3B,CAAC,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAK,KAAK,IAAI;YACd,KAAK,CAAC,OAAO,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IACD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,kBAAkB,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAiB;IAC3C,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChG,OAAO,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3G,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IAEf,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC;IACzD,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAiB;QAC9D,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,cAAc,CAAC,SAE5B,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;IAC7B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE;QACtC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACnC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,CAAC,KAAc;YAChB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -16,8 +16,9 @@ export function createOpenTuiRendererHandle(parts) {
|
|
|
16
16
|
unmountError = error;
|
|
17
17
|
}
|
|
18
18
|
try {
|
|
19
|
-
parts.renderer.
|
|
19
|
+
parts.renderer.pause();
|
|
20
20
|
await parts.renderer.idle();
|
|
21
|
+
parts.renderer.suspend();
|
|
21
22
|
parts.renderer.destroy();
|
|
22
23
|
await parts.finalized;
|
|
23
24
|
parts.disarmTerminalRescue();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-handle.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/renderer-handle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer-handle.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/renderer-handle.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,2BAA2B,CACzC,KAAiC;IAEjC,IAAI,WAAW,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACzC,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAmB;QAC7B,KAAK;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,IAAI,YAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;YACD,IAAI,CAAC;gBACH,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzB,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,KAAK,CAAC,SAAS,CAAC;gBACtB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,WAAW,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,YAAY,KAAK,SAAS;gBAAE,MAAM,YAAY,CAAC;QACrD,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface RenderBufferLike {
|
|
2
|
+
clear?(color?: unknown): void;
|
|
3
|
+
}
|
|
4
|
+
export interface ShrinkResizeRenderer {
|
|
5
|
+
resize(columns: number, rows: number): void;
|
|
6
|
+
requestRender(): void;
|
|
7
|
+
readonly isDestroyed?: boolean | undefined;
|
|
8
|
+
readonly currentRenderBuffer?: RenderBufferLike | undefined;
|
|
9
|
+
readonly nextRenderBuffer?: RenderBufferLike | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface ResizeSignalSource {
|
|
12
|
+
on(event: "SIGWINCH", listener: () => void): unknown;
|
|
13
|
+
off(event: "SIGWINCH", listener: () => void): unknown;
|
|
14
|
+
}
|
|
15
|
+
export interface TerminalSizeSource {
|
|
16
|
+
getWindowSize?(): [number, number] | undefined;
|
|
17
|
+
readonly columns?: number | undefined;
|
|
18
|
+
readonly rows?: number | undefined;
|
|
19
|
+
write?(text: string): unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface ShrinkResizeGuardOptions {
|
|
22
|
+
readonly renderer: ShrinkResizeRenderer;
|
|
23
|
+
readonly terminal?: TerminalSizeSource | undefined;
|
|
24
|
+
readonly signals?: ResizeSignalSource | undefined;
|
|
25
|
+
readonly settleMs?: number | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare function installShrinkResizeGuard(options: ShrinkResizeGuardOptions): () => void;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { writeTerminalDirect } from "../../os/terminal-write.js";
|
|
2
|
+
import { forceFullRepaint } from "./resize-repaint.js";
|
|
3
|
+
const DEFAULT_SETTLE_MS = 150;
|
|
4
|
+
const CLEAR_SCREEN_SEQUENCE = "\x1b[r\x1b[0m\x1b[H\x1b[2J\x1b[3J\x1b[H";
|
|
5
|
+
function readSize(source) {
|
|
6
|
+
const windowSize = source.getWindowSize?.();
|
|
7
|
+
return {
|
|
8
|
+
columns: windowSize?.[0] ?? source.columns ?? 0,
|
|
9
|
+
rows: windowSize?.[1] ?? source.rows ?? 0,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function isShrink(previous, next) {
|
|
13
|
+
if (next.columns <= 0 || next.rows <= 0)
|
|
14
|
+
return false;
|
|
15
|
+
const narrower = previous.columns > 0 && next.columns < previous.columns;
|
|
16
|
+
const shorter = previous.rows > 0 && next.rows < previous.rows;
|
|
17
|
+
return narrower || shorter;
|
|
18
|
+
}
|
|
19
|
+
function clearScreen(renderer, terminal) {
|
|
20
|
+
const writeOut = renderer
|
|
21
|
+
.writeOut;
|
|
22
|
+
if (typeof writeOut === "function") {
|
|
23
|
+
writeOut.call(renderer, CLEAR_SCREEN_SEQUENCE);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (typeof terminal?.write === "function") {
|
|
27
|
+
terminal.write(CLEAR_SCREEN_SEQUENCE);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
writeTerminalDirect(CLEAR_SCREEN_SEQUENCE);
|
|
31
|
+
}
|
|
32
|
+
function cancelPendingRendererResize(renderer) {
|
|
33
|
+
const target = renderer;
|
|
34
|
+
if (target.resizeTimeoutId == null)
|
|
35
|
+
return;
|
|
36
|
+
if (target.clock && typeof target.clock.clearTimeout === "function") {
|
|
37
|
+
target.clock.clearTimeout(target.resizeTimeoutId);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
clearTimeout(target.resizeTimeoutId);
|
|
41
|
+
}
|
|
42
|
+
target.resizeTimeoutId = null;
|
|
43
|
+
}
|
|
44
|
+
export function installShrinkResizeGuard(options) {
|
|
45
|
+
const terminal = options.terminal ?? process.stdout;
|
|
46
|
+
const signals = options.signals ?? process;
|
|
47
|
+
const settleMs = options.settleMs ?? DEFAULT_SETTLE_MS;
|
|
48
|
+
let active = true;
|
|
49
|
+
let previous = readSize(terminal);
|
|
50
|
+
let settling;
|
|
51
|
+
let suppressed = false;
|
|
52
|
+
let originalRequestRender;
|
|
53
|
+
const restore = () => {
|
|
54
|
+
if (!suppressed)
|
|
55
|
+
return;
|
|
56
|
+
suppressed = false;
|
|
57
|
+
if (originalRequestRender !== undefined) {
|
|
58
|
+
options.renderer.requestRender = originalRequestRender;
|
|
59
|
+
originalRequestRender = undefined;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const heal = () => {
|
|
63
|
+
if (options.renderer.isDestroyed)
|
|
64
|
+
return;
|
|
65
|
+
cancelPendingRendererResize(options.renderer);
|
|
66
|
+
clearScreen(options.renderer, terminal);
|
|
67
|
+
const bgColor = options.renderer.backgroundColor;
|
|
68
|
+
options.renderer.currentRenderBuffer?.clear?.(bgColor);
|
|
69
|
+
options.renderer.nextRenderBuffer?.clear?.(bgColor);
|
|
70
|
+
if (!forceFullRepaint(options.renderer))
|
|
71
|
+
options.renderer.requestRender();
|
|
72
|
+
};
|
|
73
|
+
const onSettled = () => {
|
|
74
|
+
settling = undefined;
|
|
75
|
+
restore();
|
|
76
|
+
if (!active)
|
|
77
|
+
return;
|
|
78
|
+
heal();
|
|
79
|
+
};
|
|
80
|
+
const onResizeSignal = () => {
|
|
81
|
+
if (!active || options.renderer.isDestroyed)
|
|
82
|
+
return;
|
|
83
|
+
const next = readSize(terminal);
|
|
84
|
+
const shrunk = isShrink(previous, next);
|
|
85
|
+
previous = next;
|
|
86
|
+
if (!shrunk) {
|
|
87
|
+
if (!suppressed)
|
|
88
|
+
return;
|
|
89
|
+
if (settling !== undefined)
|
|
90
|
+
clearTimeout(settling);
|
|
91
|
+
onSettled();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!suppressed) {
|
|
95
|
+
suppressed = true;
|
|
96
|
+
originalRequestRender = options.renderer.requestRender.bind(options.renderer);
|
|
97
|
+
options.renderer.requestRender = () => undefined;
|
|
98
|
+
}
|
|
99
|
+
cancelPendingRendererResize(options.renderer);
|
|
100
|
+
options.renderer.resize(next.columns, next.rows);
|
|
101
|
+
if (settling !== undefined)
|
|
102
|
+
clearTimeout(settling);
|
|
103
|
+
settling = setTimeout(onSettled, settleMs);
|
|
104
|
+
};
|
|
105
|
+
signals.on("SIGWINCH", onResizeSignal);
|
|
106
|
+
return () => {
|
|
107
|
+
if (!active)
|
|
108
|
+
return;
|
|
109
|
+
active = false;
|
|
110
|
+
if (settling !== undefined) {
|
|
111
|
+
clearTimeout(settling);
|
|
112
|
+
settling = undefined;
|
|
113
|
+
}
|
|
114
|
+
restore();
|
|
115
|
+
signals.off("SIGWINCH", onResizeSignal);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=shrink-resize-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shrink-resize-guard.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/shrink-resize-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ import { bindRuntimeChildBridge } from "../../session-runtime/binding.js";
|
|
|
26
26
|
import { seedSessionModel } from "../../store/session-model.js";
|
|
27
27
|
import { createOpenTuiRendererHandle } from "./renderer-handle.js";
|
|
28
28
|
import { repaintAttachedScreen } from "./resize-repaint.js";
|
|
29
|
+
import { installShrinkResizeGuard } from "./shrink-resize-guard.js";
|
|
29
30
|
export async function startTuiV2(options = {}) {
|
|
30
31
|
patchOpenTuiTextContent();
|
|
31
32
|
setAllowInteractiveStdinInherit(false);
|
|
@@ -144,9 +145,11 @@ export async function startTuiV2(options = {}) {
|
|
|
144
145
|
disarmTerminalRescue,
|
|
145
146
|
disposeServices: () => services.dispose(),
|
|
146
147
|
});
|
|
148
|
+
const disposeShrinkResizeGuard = installShrinkResizeGuard({ renderer });
|
|
147
149
|
const lifecycle = new RendererLifecycle({
|
|
148
150
|
handle,
|
|
149
151
|
disposers: [
|
|
152
|
+
disposeShrinkResizeGuard,
|
|
150
153
|
() => disposeRuntimeBridge(),
|
|
151
154
|
epilogue.capture,
|
|
152
155
|
async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-tui-v2.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/start-tui-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAE9F,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EACL,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"start-tui-v2.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/start-tui-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @jsxImportSource @opentui/react */
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import type { AppServices } from "../../../ui-core/bootstrap/composition-root.js";
|
|
4
|
+
import type { Theme } from "../../../ui-core/rendering/theme.js";
|
|
5
|
+
export interface SubagentsPanelProps {
|
|
6
|
+
readonly services: AppServices;
|
|
7
|
+
readonly theme: Theme;
|
|
8
|
+
readonly width: number;
|
|
9
|
+
readonly blockingOverlay?: boolean | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare const SubagentsPanel: import("react").MemoExoticComponent<(props: SubagentsPanelProps) => ReactNode>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
/** @jsxImportSource @opentui/react */
|
|
3
|
+
import { memo, useEffect, useState } from "react";
|
|
4
|
+
import { TextAttributes } from "@opentui/core";
|
|
5
|
+
import { useSessionState } from "../../../ui-core/react/use-session-state.js";
|
|
6
|
+
import { orderSubagentRuns, subagentsBarVisible, watchSubagents } from "../../../ui-core/rendering/subagent-source.js";
|
|
7
|
+
import { openSubagentRun, SUBAGENT_STATUS_ICON } from "../../../ui-core/commands/subagent-commands.js";
|
|
8
|
+
const MAX_ROWS = 3;
|
|
9
|
+
function statusColor(run, theme) {
|
|
10
|
+
const status = SUBAGENT_STATUS_ICON[run.status];
|
|
11
|
+
if (status?.tone === "success")
|
|
12
|
+
return theme.success;
|
|
13
|
+
if (status?.tone === "error")
|
|
14
|
+
return theme.failedBg;
|
|
15
|
+
if (status?.tone === "warn")
|
|
16
|
+
return theme.accent;
|
|
17
|
+
return theme.muted;
|
|
18
|
+
}
|
|
19
|
+
export const SubagentsPanel = memo(function SubagentsPanel(props) {
|
|
20
|
+
const { services, theme, width, blockingOverlay } = props;
|
|
21
|
+
const session = useSessionState(services.session);
|
|
22
|
+
const manager = services.session.subagents;
|
|
23
|
+
const [collapsed, setCollapsed] = useState(true);
|
|
24
|
+
const [runs, setRuns] = useState(() => manager.list());
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const refresh = () => {
|
|
27
|
+
if (services.session.subagents !== manager)
|
|
28
|
+
return;
|
|
29
|
+
setRuns(manager.list());
|
|
30
|
+
};
|
|
31
|
+
refresh();
|
|
32
|
+
const stopManager = manager.subscribe(refresh);
|
|
33
|
+
const stopWatch = watchSubagents(manager, refresh);
|
|
34
|
+
const stopSession = services.session.subscribe(() => {
|
|
35
|
+
if (services.session.subagents === manager)
|
|
36
|
+
refresh();
|
|
37
|
+
else
|
|
38
|
+
setRuns([]);
|
|
39
|
+
});
|
|
40
|
+
return () => {
|
|
41
|
+
stopManager();
|
|
42
|
+
stopWatch();
|
|
43
|
+
stopSession();
|
|
44
|
+
};
|
|
45
|
+
}, [services.session, manager]);
|
|
46
|
+
if (blockingOverlay || !subagentsBarVisible(runs))
|
|
47
|
+
return null;
|
|
48
|
+
const ordered = orderSubagentRuns(runs);
|
|
49
|
+
const running = ordered.filter((run) => run.status === "running" || run.status === "stopping").length;
|
|
50
|
+
const settled = ordered.length - running;
|
|
51
|
+
const shown = ordered.slice(0, MAX_ROWS);
|
|
52
|
+
const hidden = Math.max(0, ordered.length - shown.length);
|
|
53
|
+
const stateColor = running > 0 ? theme.cyan : settled > 0 ? theme.success : theme.muted;
|
|
54
|
+
const header = `${collapsed ? "▸" : "▾"} Subagents: ${running} running · ${settled} done`;
|
|
55
|
+
function toggle(event) {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
setCollapsed((value) => !value);
|
|
59
|
+
}
|
|
60
|
+
return (_jsxs("box", { border: true, borderStyle: "rounded", style: {
|
|
61
|
+
flexDirection: "column",
|
|
62
|
+
width,
|
|
63
|
+
flexShrink: 0,
|
|
64
|
+
borderColor: stateColor,
|
|
65
|
+
backgroundColor: theme.statusBackground,
|
|
66
|
+
paddingLeft: 1,
|
|
67
|
+
paddingRight: 1,
|
|
68
|
+
}, children: [_jsx("box", { onMouseDown: toggle, style: { width: "100%", height: 1, flexShrink: 0 }, children: _jsx("text", { content: header, wrapMode: "none", style: { width: "100%", height: 1, fg: stateColor, attributes: TextAttributes.BOLD } }) }), !collapsed
|
|
69
|
+
? shown.map((run) => {
|
|
70
|
+
const icon = SUBAGENT_STATUS_ICON[run.status]?.icon ?? "•";
|
|
71
|
+
const route = `${run.activeProvider ?? run.provider}/${run.activeModel ?? run.model}`;
|
|
72
|
+
return (_jsxs("box", { onMouseDown: (event) => {
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
openSubagentRun(services, manager, run.id);
|
|
76
|
+
}, style: { flexDirection: "column", width: "100%", flexShrink: 0 }, children: [_jsx("text", { content: ` ${icon} ${run.title}`, wrapMode: "none", style: { width: "100%", height: 1, fg: statusColor(run, theme) } }), _jsx("text", { content: ` ${run.status} · ${route}`, wrapMode: "none", style: { width: "100%", height: 1, fg: theme.muted } })] }, `${run.id}:${run.attempt}`));
|
|
77
|
+
})
|
|
78
|
+
: null, !collapsed && hidden > 0 ? (_jsx("text", { content: ` +${hidden} more · /agents`, wrapMode: "none", style: { width: "100%", height: 1, fg: theme.muted } })) : null] }));
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=subagents-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagents-panel.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/jobs/subagents-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KeysEditorAnswer } from "../../../ui-core/controllers/overlay-controller.js";
|
|
2
|
+
export interface KeysModalPickRow {
|
|
3
|
+
readonly slotId?: string | undefined;
|
|
4
|
+
readonly placeholder: string;
|
|
5
|
+
readonly text: string;
|
|
6
|
+
readonly disabled: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildKeysPickerAnswer(rows: readonly KeysModalPickRow[], activeIndex: number): KeysEditorAnswer;
|
|
9
|
+
export declare function keysAddAtCapacity(rows: readonly KeysModalPickRow[], maxRows: number): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function buildKeysPickerAnswer(rows, activeIndex) {
|
|
2
|
+
return {
|
|
3
|
+
action: "pick",
|
|
4
|
+
rows: rows.map((row) => ({
|
|
5
|
+
...(row.slotId ? { slotId: row.slotId } : {}),
|
|
6
|
+
value: row.text.trim() || row.placeholder,
|
|
7
|
+
disabled: row.disabled,
|
|
8
|
+
})),
|
|
9
|
+
activeIndex,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function keysAddAtCapacity(rows, maxRows) {
|
|
13
|
+
return rows.filter((row) => row.slotId !== undefined || row.text.trim().length > 0).length >= maxRows;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=keys-modal-pick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys-modal-pick.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/modal/keys-modal-pick.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,qBAAqB,CACnC,IAAiC,EACjC,WAAmB;IAEnB,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,WAAW;YACzC,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAiC,EACjC,OAAe;IAEf,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;AACxG,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { useKeyboard } from "@opentui/react";
|
|
|
5
5
|
import { TextAttributes } from "@opentui/core";
|
|
6
6
|
import { chordFromKeyEvent } from "../../input/chord-from-opentui-key.js";
|
|
7
7
|
import { MAX_PROVIDER_KEYS } from "../../../llm/key-rotation.js";
|
|
8
|
+
import { buildKeysPickerAnswer, keysAddAtCapacity } from "./keys-modal-pick.js";
|
|
8
9
|
const ACCENT = "#e0b000";
|
|
9
10
|
const ACTIVE_FG = "#f5c542";
|
|
10
11
|
let nextRowId = 1;
|
|
@@ -13,6 +14,15 @@ function itemLabelOf(request) {
|
|
|
13
14
|
}
|
|
14
15
|
function rowsFromRequest(request) {
|
|
15
16
|
const label = itemLabelOf(request);
|
|
17
|
+
if (request.addViaPicker) {
|
|
18
|
+
return request.initialKeys.map((k) => ({
|
|
19
|
+
id: nextRowId++,
|
|
20
|
+
slotId: k.id,
|
|
21
|
+
placeholder: k.masked,
|
|
22
|
+
text: "",
|
|
23
|
+
disabled: k.disabled === true,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
16
26
|
if (request.initialKeys.length === 0) {
|
|
17
27
|
return [{ id: nextRowId++, placeholder: `paste ${label}`, text: "", disabled: false }];
|
|
18
28
|
}
|
|
@@ -81,9 +91,13 @@ export function KeysModal(props) {
|
|
|
81
91
|
}
|
|
82
92
|
function addRow() {
|
|
83
93
|
const synced = syncFromInputs();
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
86
|
-
services.session.notice("warn", `at most ${
|
|
94
|
+
const maxRows = request.maxRows ?? MAX_PROVIDER_KEYS;
|
|
95
|
+
if (keysAddAtCapacity(synced, maxRows)) {
|
|
96
|
+
services.session.notice("warn", `at most ${maxRows} ${itemLabelPlural} per provider`);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (request.addViaPicker) {
|
|
100
|
+
services.overlay.answerKeys(buildKeysPickerAnswer(synced, activeKeyIdx));
|
|
87
101
|
return;
|
|
88
102
|
}
|
|
89
103
|
const next = [
|
|
@@ -95,6 +109,12 @@ export function KeysModal(props) {
|
|
|
95
109
|
}
|
|
96
110
|
function removeRow(index) {
|
|
97
111
|
const synced = syncFromInputs();
|
|
112
|
+
if (request.addViaPicker && synced.length <= 1) {
|
|
113
|
+
setRows([]);
|
|
114
|
+
setFocusIdx(0);
|
|
115
|
+
setActiveKeyIdx(0);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
98
118
|
if (synced.length <= 1) {
|
|
99
119
|
const only = {
|
|
100
120
|
id: nextRowId++,
|
|
@@ -131,7 +151,7 @@ export function KeysModal(props) {
|
|
|
131
151
|
const synced = syncFromInputs();
|
|
132
152
|
const out = [];
|
|
133
153
|
for (const row of synced) {
|
|
134
|
-
const value = row.text.trim();
|
|
154
|
+
const value = request.addViaPicker ? row.text.trim() || row.placeholder : row.text.trim();
|
|
135
155
|
if (row.slotId) {
|
|
136
156
|
out.push({ slotId: row.slotId, value, disabled: row.disabled });
|
|
137
157
|
}
|
|
@@ -168,9 +188,17 @@ export function KeysModal(props) {
|
|
|
168
188
|
resetAll();
|
|
169
189
|
return;
|
|
170
190
|
}
|
|
171
|
-
if (chord === "ctrl+enter" || chord === "meta+enter"
|
|
191
|
+
if (chord === "ctrl+enter" || chord === "meta+enter") {
|
|
172
192
|
key.preventDefault();
|
|
173
193
|
submit();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (chord === "enter") {
|
|
197
|
+
key.preventDefault();
|
|
198
|
+
if (request.addViaPicker)
|
|
199
|
+
addRow();
|
|
200
|
+
else
|
|
201
|
+
submit();
|
|
174
202
|
}
|
|
175
203
|
});
|
|
176
204
|
const typedCount = rows.filter((r) => r.text.trim().length > 0).length;
|
|
@@ -188,9 +216,11 @@ export function KeysModal(props) {
|
|
|
188
216
|
fg: theme.background,
|
|
189
217
|
bg: ACCENT,
|
|
190
218
|
attributes: TextAttributes.BOLD,
|
|
191
|
-
}, children: ` ${request.heading ?? "KEYS"} ` }), _jsx("text", { content: " " }), _jsxs("text", { style: { fg: theme.muted, attributes: TextAttributes.DIM }, children: [request.provider, " \u00B7 multi ", itemLabelPlural, " \u00B7 empty existing = keep"] })] }), _jsx("text", { content:
|
|
192
|
-
? `${existingCount} stored ·
|
|
193
|
-
:
|
|
219
|
+
}, children: ` ${request.heading ?? "KEYS"} ` }), _jsx("text", { content: " " }), _jsxs("text", { style: { fg: theme.muted, attributes: TextAttributes.DIM }, children: [request.provider, " \u00B7 multi ", itemLabelPlural, " \u00B7 empty existing = keep"] })] }), _jsx("text", { content: request.addViaPicker
|
|
220
|
+
? `${existingCount} stored · choose models from the catalogue${showActiveToggle ? " · ★ = active" : ""}`
|
|
221
|
+
: existingCount > 0
|
|
222
|
+
? `${existingCount} stored · type to replace a slot · + adds another (max ${MAX_PROVIDER_KEYS})${showActiveToggle ? " · ★ = active" : ""}`
|
|
223
|
+
: `Nothing stored yet · paste one or more ${itemLabelPlural} (max ${MAX_PROVIDER_KEYS})`, style: { fg: theme.muted, attributes: TextAttributes.DIM } }), rows.map((row, index) => {
|
|
194
224
|
const isExisting = Boolean(row.slotId);
|
|
195
225
|
const isActive = isExisting && index === activeKeyIdx;
|
|
196
226
|
return (_jsxs("box", { style: { flexDirection: "row", width: "100%", alignItems: "center" }, children: [_jsx("text", { content: `${index + 1}. `, style: { fg: theme.muted, width: 4, flexShrink: 0 } }), _jsx("text", { content: row.disabled ? " ⊘ " : " ○ ", style: {
|
|
@@ -205,19 +235,23 @@ export function KeysModal(props) {
|
|
|
205
235
|
}, onMouseDown: () => {
|
|
206
236
|
if (isExisting)
|
|
207
237
|
setActiveKeyIdx(index);
|
|
208
|
-
} })) : null, _jsx("
|
|
238
|
+
} })) : null, request.addViaPicker ? (_jsx("text", { content: row.placeholder, style: {
|
|
239
|
+
fg: row.disabled ? theme.muted : theme.foreground,
|
|
240
|
+
flexGrow: 1,
|
|
241
|
+
minWidth: 20,
|
|
242
|
+
} })) : (_jsx("input", { ref: (el) => {
|
|
209
243
|
inputRefs.current.set(row.id, el);
|
|
210
244
|
}, focused: focusIdx === index, placeholder: row.placeholder, onContentChange: () => {
|
|
211
245
|
const el = inputRefs.current.get(row.id);
|
|
212
246
|
updateRowText(row.id, el?.plainText ?? "");
|
|
213
247
|
setFocusIdx(index);
|
|
214
|
-
}, backgroundColor: theme.background, textColor: row.disabled ? theme.muted : theme.foreground, focusedBackgroundColor: theme.background, focusedTextColor: row.disabled ? theme.muted : theme.foreground, cursorColor: ACCENT, style: { flexGrow: 1, minWidth: 20 } }), _jsx("text", { content: " " }), _jsx("text", { content: " \u2715 ", style: {
|
|
248
|
+
}, backgroundColor: theme.background, textColor: row.disabled ? theme.muted : theme.foreground, focusedBackgroundColor: theme.background, focusedTextColor: row.disabled ? theme.muted : theme.foreground, cursorColor: ACCENT, style: { flexGrow: 1, minWidth: 20 } })), _jsx("text", { content: " " }), _jsx("text", { content: " \u2715 ", style: {
|
|
215
249
|
fg: theme.white,
|
|
216
250
|
bg: theme.failedBg,
|
|
217
251
|
attributes: TextAttributes.BOLD,
|
|
218
252
|
flexShrink: 0,
|
|
219
253
|
}, onMouseDown: () => removeRow(index) })] }, row.id));
|
|
220
|
-
}), _jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { content: " + add ", style: {
|
|
254
|
+
}), _jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { content: request.addViaPicker ? " + add from models " : " + add ", style: {
|
|
221
255
|
fg: theme.background,
|
|
222
256
|
bg: ACCENT,
|
|
223
257
|
attributes: TextAttributes.BOLD,
|
|
@@ -229,6 +263,6 @@ export function KeysModal(props) {
|
|
|
229
263
|
fg: theme.white,
|
|
230
264
|
bg: theme.failedBg,
|
|
231
265
|
attributes: TextAttributes.BOLD,
|
|
232
|
-
}, onMouseDown: () => resetAll() }), _jsx("text", { content: " " }), _jsx("text", { content: " Cancel ", style: { fg: theme.foreground, bg: theme.chip }, onMouseDown: () => services.overlay.answerKeys(undefined) })] }), _jsx("text", { content:
|
|
266
|
+
}, onMouseDown: () => resetAll() }), _jsx("text", { content: " " }), _jsx("text", { content: " Cancel ", style: { fg: theme.foreground, bg: theme.chip }, onMouseDown: () => services.overlay.answerKeys(undefined) })] }), _jsx("text", { content: `${request.addViaPicker ? "enter:add from models · ^a:add from models" : "enter:save · ^a / +:add"} · ✕:remove${showActiveToggle ? " · ★:set active" : ""} · ^d / ○:disable · ^r:reset all · esc:cancel${typedCount ? ` · ${typedCount} new/edited` : ""}`, style: { fg: theme.muted, attributes: TextAttributes.DIM } })] }));
|
|
233
267
|
}
|
|
234
268
|
//# sourceMappingURL=keys-modal.js.map
|