@sayknow-cli/coding-agent 0.3.5 → 0.3.7
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 +76 -0
- package/dist/types/capability/mcp.d.ts +2 -0
- package/dist/types/cli/local-provider-smoke.d.ts +59 -0
- package/dist/types/cli/notify-cli.d.ts +1 -1
- package/dist/types/cli/telegram-cli.d.ts +13 -0
- package/dist/types/cli/update-cli.d.ts +24 -1
- package/dist/types/commands/local-provider.d.ts +34 -0
- package/dist/types/commands/telegram.d.ts +22 -0
- package/dist/types/config/keybindings.d.ts +12 -6
- package/dist/types/config/model-registry.d.ts +5 -0
- package/dist/types/config/models-config-schema.d.ts +5 -0
- package/dist/types/config/settings-schema.d.ts +284 -4
- package/dist/types/config/settings.d.ts +7 -0
- package/dist/types/config/telegram-autostart.d.ts +14 -0
- package/dist/types/config/telegram-env-bridge.d.ts +18 -0
- package/dist/types/coordinator-mcp/server.d.ts +8 -0
- package/dist/types/defaults/skc-defaults.d.ts +7 -0
- package/dist/types/discovery/cursor.d.ts +4 -1
- package/dist/types/discovery/index.d.ts +0 -1
- package/dist/types/discovery/windsurf.d.ts +3 -1
- package/dist/types/extensibility/extensions/types.d.ts +11 -0
- package/dist/types/i18n/messages/en.d.ts +1 -0
- package/dist/types/modes/components/custom-editor.d.ts +6 -1
- package/dist/types/modes/components/custom-model-preset-wizard.d.ts +1 -1
- package/dist/types/modes/components/hook-selector.d.ts +5 -0
- package/dist/types/modes/components/model-selector.d.ts +2 -0
- package/dist/types/modes/components/settings-selector.d.ts +5 -1
- package/dist/types/modes/components/skill-message.d.ts +1 -0
- package/dist/types/modes/components/status-line/types.d.ts +5 -7
- package/dist/types/modes/components/status-line.d.ts +15 -3
- package/dist/types/modes/components/two-column-body.d.ts +9 -0
- package/dist/types/modes/components/welcome.d.ts +9 -1
- package/dist/types/modes/controllers/command-controller.d.ts +1 -0
- package/dist/types/modes/controllers/input-controller.d.ts +6 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +10 -1
- package/dist/types/modes/interactive-mode.d.ts +2 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +3 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +1 -0
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +41 -7
- package/dist/types/modes/slash-command-visibility.d.ts +1 -0
- package/dist/types/modes/theme/theme.d.ts +1 -1
- package/dist/types/modes/tmux-scroll.d.ts +18 -0
- package/dist/types/modes/types.d.ts +5 -1
- package/dist/types/modes/utils/terminal-bell.d.ts +3 -0
- package/dist/types/notifications/daemon-paths.d.ts +9 -0
- package/dist/types/notifications/html-format.d.ts +2 -0
- package/dist/types/notifications/recent-activity.d.ts +5 -1
- package/dist/types/notifications/telegram-daemon-cli.d.ts +21 -4
- package/dist/types/notifications/telegram-daemon-control.d.ts +8 -0
- package/dist/types/notifications/telegram-daemon.d.ts +4 -10
- package/dist/types/notifications/telegram-reference.d.ts +4 -0
- package/dist/types/notifications/threaded-render.d.ts +1 -0
- package/dist/types/runtime-mcp/config-writer.d.ts +9 -0
- package/dist/types/runtime-mcp/config.d.ts +2 -0
- package/dist/types/runtime-mcp/loader.d.ts +2 -0
- package/dist/types/runtime-mcp/manager.d.ts +2 -0
- package/dist/types/runtime-mcp/types.d.ts +6 -0
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/skc-runtime/launch-tmux.d.ts +2 -2
- package/dist/types/skc-runtime/ralplan-runtime.d.ts +3 -2
- package/dist/types/skc-runtime/restricted-role-agent-bash.d.ts +1 -0
- package/dist/types/skc-runtime/session-state-sidecar.d.ts +5 -0
- package/dist/types/skc-runtime/state-writer.d.ts +1 -0
- package/dist/types/skc-runtime/team-runtime.d.ts +1 -1
- package/dist/types/skc-runtime/tmux-common.d.ts +12 -0
- package/dist/types/skc-runtime/ultragoal-guard.d.ts +7 -1
- package/dist/types/skc-runtime/ultragoal-runtime.d.ts +0 -4
- package/dist/types/slash-commands/types.d.ts +2 -0
- package/dist/types/system-prompt.d.ts +7 -0
- package/dist/types/tools/skill.d.ts +1 -1
- package/dist/types/utils/cmux-workspace.d.ts +52 -0
- package/dist/types/web/search/index.d.ts +4 -2
- package/dist/types/web/search/provider.d.ts +14 -0
- package/dist/types/web/search/providers/utils.d.ts +42 -13
- package/dist/types/web/search/render.d.ts +1 -0
- package/dist/types/workflow/workflow-intent-diff.d.ts +19 -0
- package/package.json +8 -8
- package/scripts/build-binary.ts +3 -0
- package/scripts/verify-insane-vendor.ts +0 -5
- package/src/capability/mcp.ts +2 -0
- package/src/cli/local-provider-smoke.ts +632 -0
- package/src/cli/notify-cli.ts +4 -2
- package/src/cli/telegram-cli.ts +156 -0
- package/src/cli/update-cli.ts +179 -13
- package/src/cli/web-search-cli.ts +5 -7
- package/src/cli.ts +20 -1
- package/src/commands/launch.ts +47 -2
- package/src/commands/local-provider.ts +62 -0
- package/src/commands/notify.ts +1 -1
- package/src/commands/ralplan.ts +1 -0
- package/src/commands/telegram.ts +47 -0
- package/src/config/keybindings.ts +15 -6
- package/src/config/mcp-schema.json +4 -0
- package/src/config/model-registry.ts +55 -1
- package/src/config/models-config-schema.ts +9 -0
- package/src/config/settings-schema.ts +256 -4
- package/src/config/settings.ts +11 -0
- package/src/config/telegram-autostart.ts +107 -0
- package/src/config/telegram-env-bridge.ts +92 -0
- package/src/coordinator-mcp/server.ts +276 -34
- package/src/defaults/skc/skills/ralplan/SKILL.md +29 -20
- package/src/defaults/skc/skills/ultragoal/SKILL.md +37 -112
- package/src/defaults/skc-defaults.ts +16 -0
- package/src/discovery/builtin.ts +12 -0
- package/src/discovery/cursor.ts +5 -84
- package/src/discovery/gemini.ts +3 -89
- package/src/discovery/index.ts +4 -1
- package/src/discovery/mcp-json.ts +11 -0
- package/src/discovery/opencode.ts +5 -122
- package/src/discovery/windsurf.ts +4 -82
- package/src/edit/read-file.ts +9 -1
- package/src/extensibility/extensions/runner.ts +2 -1
- package/src/extensibility/extensions/types.ts +11 -0
- package/src/extensibility/skills.ts +30 -2
- package/src/hooks/skill-state.ts +33 -73
- package/src/i18n/messages/de.ts +1 -0
- package/src/i18n/messages/en.ts +1 -0
- package/src/i18n/messages/es.ts +1 -0
- package/src/i18n/messages/fr.ts +1 -0
- package/src/i18n/messages/ja.settings.ts +28 -0
- package/src/i18n/messages/ja.ts +1 -0
- package/src/i18n/messages/ko.settings.ts +28 -0
- package/src/i18n/messages/ko.ts +1 -0
- package/src/i18n/messages/zh.settings.ts +28 -0
- package/src/i18n/messages/zh.ts +1 -0
- package/src/internal-urls/docs-index.generated.ts +12 -7
- package/src/main.ts +5 -2
- package/src/migrate/executor.ts +23 -6
- package/src/modes/acp/acp-agent.ts +7 -6
- package/src/modes/components/agent-dashboard.ts +3 -35
- package/src/modes/components/custom-editor.ts +26 -0
- package/src/modes/components/custom-model-preset-wizard.ts +30 -189
- package/src/modes/components/extensions/extension-dashboard.ts +2 -48
- package/src/modes/components/hook-selector.ts +21 -3
- package/src/modes/components/model-selector.ts +246 -11
- package/src/modes/components/session-observer-overlay.ts +3 -3
- package/src/modes/components/session-selector.ts +19 -9
- package/src/modes/components/settings-selector.ts +551 -11
- package/src/modes/components/skill-message.ts +18 -10
- package/src/modes/components/status-line/presets.ts +11 -0
- package/src/modes/components/status-line/segments.ts +16 -19
- package/src/modes/components/status-line/types.ts +6 -2
- package/src/modes/components/status-line.ts +281 -117
- package/src/modes/components/tree-selector.ts +28 -8
- package/src/modes/components/two-column-body.ts +36 -0
- package/src/modes/components/welcome.ts +165 -30
- package/src/modes/controllers/command-controller.ts +26 -2
- package/src/modes/controllers/event-controller.ts +102 -4
- package/src/modes/controllers/extension-ui-controller.ts +21 -2
- package/src/modes/controllers/input-controller.ts +214 -47
- package/src/modes/controllers/selector-controller.ts +35 -33
- package/src/modes/interactive-mode.ts +36 -30
- package/src/modes/prompt-action-autocomplete.ts +48 -8
- package/src/modes/rpc/rpc-types.ts +1 -0
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +72 -15
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +20 -0
- package/src/modes/slash-command-visibility.ts +9 -0
- package/src/modes/theme/theme.ts +5 -1
- package/src/modes/tmux-scroll.ts +92 -0
- package/src/modes/types.ts +8 -1
- package/src/modes/utils/hotkeys-markdown.ts +5 -2
- package/src/modes/utils/terminal-bell.ts +48 -0
- package/src/modes/utils/ui-helpers.ts +76 -3
- package/src/notifications/daemon-paths.ts +22 -0
- package/src/notifications/html-format.ts +75 -1
- package/src/notifications/index.ts +32 -2
- package/src/notifications/lifecycle-control-runtime.ts +12 -3
- package/src/notifications/recent-activity.ts +32 -8
- package/src/notifications/telegram-daemon-cli.ts +125 -13
- package/src/notifications/telegram-daemon-control.ts +9 -0
- package/src/notifications/telegram-daemon.ts +88 -46
- package/src/notifications/telegram-reference.ts +36 -14
- package/src/notifications/threaded-render.ts +14 -6
- package/src/prompts/agents/architect.md +7 -4
- package/src/prompts/agents/critic.md +15 -6
- package/src/prompts/agents/planner.md +8 -3
- package/src/prompts/system/system-prompt.md +20 -2
- package/src/prompts/tools/bash.md +1 -1
- package/src/runtime-mcp/config-writer.ts +28 -0
- package/src/runtime-mcp/config.ts +7 -0
- package/src/runtime-mcp/loader.ts +3 -0
- package/src/runtime-mcp/manager.ts +3 -0
- package/src/runtime-mcp/types.ts +6 -0
- package/src/sdk.ts +10 -11
- package/src/session/agent-session.ts +103 -13
- package/src/session/session-manager.ts +58 -18
- package/src/skc-runtime/launch-tmux.ts +34 -8
- package/src/skc-runtime/launch-worktree.ts +16 -2
- package/src/skc-runtime/ralplan-runtime.ts +22 -6
- package/src/skc-runtime/restricted-role-agent-bash.ts +1 -0
- package/src/skc-runtime/session-state-sidecar.ts +167 -24
- package/src/skc-runtime/state-runtime.ts +8 -5
- package/src/skc-runtime/state-writer.ts +5 -5
- package/src/skc-runtime/team-runtime.ts +21 -6
- package/src/skc-runtime/tmux-common.ts +16 -0
- package/src/skc-runtime/tmux-sessions.ts +13 -9
- package/src/skc-runtime/ultragoal-guard.ts +150 -24
- package/src/skc-runtime/ultragoal-runtime.ts +16 -124
- package/src/skc-runtime/workflow-manifest.generated.json +0 -8
- package/src/skc-runtime/workflow-manifest.ts +0 -1
- package/src/slash-commands/builtin-registry.ts +136 -23
- package/src/slash-commands/types.ts +2 -0
- package/src/system-prompt.ts +8 -0
- package/src/task/executor.ts +5 -0
- package/src/tools/ast-grep.ts +10 -7
- package/src/tools/bash.ts +39 -14
- package/src/tools/index.ts +8 -1
- package/src/tools/skill.ts +1 -1
- package/src/utils/cmux-workspace.ts +233 -0
- package/src/utils/title-generator.ts +2 -0
- package/src/web/kagi.ts +1 -1
- package/src/web/parallel.ts +2 -2
- package/src/web/search/index.ts +137 -52
- package/src/web/search/provider.ts +80 -0
- package/src/web/search/providers/anthropic.ts +1 -1
- package/src/web/search/providers/brave.ts +1 -1
- package/src/web/search/providers/codex.ts +1 -1
- package/src/web/search/providers/duckduckgo.ts +1 -1
- package/src/web/search/providers/exa.ts +1 -1
- package/src/web/search/providers/gemini.ts +7 -3
- package/src/web/search/providers/jina.ts +1 -1
- package/src/web/search/providers/kimi.ts +6 -1
- package/src/web/search/providers/openai-compatible.ts +1 -1
- package/src/web/search/providers/parallel.ts +1 -1
- package/src/web/search/providers/perplexity.ts +2 -2
- package/src/web/search/providers/searxng.ts +1 -1
- package/src/web/search/providers/synthetic.ts +1 -1
- package/src/web/search/providers/tavily.ts +1 -1
- package/src/web/search/providers/utils.ts +67 -17
- package/src/web/search/providers/xai.ts +1 -1
- package/src/web/search/providers/zai.ts +1 -1
- package/src/web/search/render.ts +3 -0
- package/src/workflow/workflow-intent-diff.ts +199 -0
- package/vendor/insane-search/MANIFEST.json +1 -3
- package/vendor/insane-search/engine/tests/test_u1.py +0 -28
- package/vendor/insane-search/engine/transport.py +2 -3
- package/vendor/insane-search/engine/validators.py +0 -14
- package/src/defaults/skc/rules/ponytail.md +0 -68
|
@@ -13,18 +13,20 @@ import {
|
|
|
13
13
|
import { getMarkdownTheme, theme } from "../../modes/theme/theme";
|
|
14
14
|
import type { CustomMessage, SkillPromptDetails } from "../../session/messages";
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const DEFAULT_COLLAPSED_ARGS_PREVIEW_WIDTH = 96;
|
|
17
17
|
const COLLAPSED_ARGS_PREVIEW_LINES = 6;
|
|
18
|
+
const SKILL_BOX_HORIZONTAL_PADDING = 1;
|
|
18
19
|
export class SkillMessageComponent extends Container {
|
|
19
20
|
#box: Box;
|
|
20
21
|
#contentComponent?: Component;
|
|
21
22
|
#expanded = false;
|
|
23
|
+
#argsPreviewWidth = DEFAULT_COLLAPSED_ARGS_PREVIEW_WIDTH;
|
|
22
24
|
|
|
23
25
|
constructor(private readonly message: CustomMessage<SkillPromptDetails>) {
|
|
24
26
|
super();
|
|
25
27
|
this.addChild(new Spacer(1));
|
|
26
28
|
|
|
27
|
-
this.#box = new Box(
|
|
29
|
+
this.#box = new Box(SKILL_BOX_HORIZONTAL_PADDING, 1, t => theme.bg("customMessageBg", t));
|
|
28
30
|
this.#rebuild();
|
|
29
31
|
}
|
|
30
32
|
|
|
@@ -40,6 +42,15 @@ export class SkillMessageComponent extends Container {
|
|
|
40
42
|
this.#rebuild();
|
|
41
43
|
}
|
|
42
44
|
|
|
45
|
+
override render(width: number): string[] {
|
|
46
|
+
const contentWidth = Math.max(1, width - SKILL_BOX_HORIZONTAL_PADDING * 2);
|
|
47
|
+
if (this.#argsPreviewWidth !== contentWidth) {
|
|
48
|
+
this.#argsPreviewWidth = contentWidth;
|
|
49
|
+
this.#rebuild();
|
|
50
|
+
}
|
|
51
|
+
return super.render(width);
|
|
52
|
+
}
|
|
53
|
+
|
|
43
54
|
#rebuild(): void {
|
|
44
55
|
if (this.#contentComponent) {
|
|
45
56
|
this.removeChild(this.#contentComponent);
|
|
@@ -57,7 +68,7 @@ export class SkillMessageComponent extends Container {
|
|
|
57
68
|
// Collapsed view keeps args readable without exposing the full prompt body.
|
|
58
69
|
// Each visual line is bounded, but multi-line arguments remain multi-line so
|
|
59
70
|
// the invocation context is not mistaken for a one-line truncated payload.
|
|
60
|
-
const argsPreview = args ? this.#formatArgsPreview(args) : [];
|
|
71
|
+
const argsPreview = args ? this.#formatArgsPreview(args, this.#argsPreviewWidth) : [];
|
|
61
72
|
const header = `${theme.fg("customMessageLabel", theme.bold("[skill]"))} ${theme.fg("customMessageText", name)}`;
|
|
62
73
|
this.#box.addChild(new Text(header, 0, 0));
|
|
63
74
|
if (argsPreview.length > 0) {
|
|
@@ -111,19 +122,19 @@ export class SkillMessageComponent extends Container {
|
|
|
111
122
|
this.#box.addChild(this.#contentComponent);
|
|
112
123
|
}
|
|
113
124
|
|
|
114
|
-
#formatArgsPreview(args: string): string[] {
|
|
125
|
+
#formatArgsPreview(args: string, width: number): string[] {
|
|
115
126
|
const preview: string[] = [];
|
|
116
127
|
let omitted = false;
|
|
117
128
|
const sourceLines = replaceTabs(args).split(/\r?\n/);
|
|
118
129
|
for (let index = 0; index < sourceLines.length; index += 1) {
|
|
119
130
|
const sourceLine = sourceLines[index]?.trimEnd() ?? "";
|
|
120
|
-
const wrapped = wrapTextWithAnsi(sourceLine.length > 0 ? sourceLine : " ",
|
|
131
|
+
const wrapped = wrapTextWithAnsi(sourceLine.length > 0 ? sourceLine : " ", width);
|
|
121
132
|
for (const line of wrapped.length > 0 ? wrapped : [""]) {
|
|
122
133
|
if (preview.length >= COLLAPSED_ARGS_PREVIEW_LINES) {
|
|
123
134
|
omitted = true;
|
|
124
135
|
break;
|
|
125
136
|
}
|
|
126
|
-
preview.push(truncateToWidth(line,
|
|
137
|
+
preview.push(truncateToWidth(line, width));
|
|
127
138
|
}
|
|
128
139
|
if (omitted) break;
|
|
129
140
|
}
|
|
@@ -132,10 +143,7 @@ export class SkillMessageComponent extends Container {
|
|
|
132
143
|
omitted ||= replaceTabs(args).trimEnd().length > visibleSource.trimEnd().length;
|
|
133
144
|
}
|
|
134
145
|
if (omitted && preview.length > 0) {
|
|
135
|
-
preview[preview.length - 1] = truncateToWidth(
|
|
136
|
-
`${preview[preview.length - 1]} …`,
|
|
137
|
-
COLLAPSED_ARGS_PREVIEW_WIDTH,
|
|
138
|
-
);
|
|
146
|
+
preview[preview.length - 1] = truncateToWidth(`${preview[preview.length - 1]} …`, width);
|
|
139
147
|
}
|
|
140
148
|
return preview;
|
|
141
149
|
}
|
|
@@ -24,6 +24,17 @@ export const STATUS_LINE_PRESETS: Record<StatusLinePreset, PresetDef> = {
|
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
26
|
|
|
27
|
+
"default-usage": {
|
|
28
|
+
leftSegments: ["model", "mode", "git", "pr", "path"],
|
|
29
|
+
rightSegments: ["session_name", "jobs", "token_rate", "usage", "context_pct", "cost"],
|
|
30
|
+
separator: "slash",
|
|
31
|
+
segmentOptions: {
|
|
32
|
+
model: { showThinkingLevel: true },
|
|
33
|
+
path: { abbreviate: true, maxLength: 32, stripWorkPrefix: true },
|
|
34
|
+
git: { showBranch: true, showStaged: true, showUnstaged: true, showUntracked: true },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
|
|
27
38
|
minimal: {
|
|
28
39
|
leftSegments: ["path", "git"],
|
|
29
40
|
rightSegments: ["session_name", "jobs", "mode", "context_pct"],
|
|
@@ -495,7 +495,12 @@ const sessionNameSegment: StatusLineSegment = {
|
|
|
495
495
|
},
|
|
496
496
|
};
|
|
497
497
|
|
|
498
|
-
function pickUsageColor(percent: number): "muted" | "warning" | "error" {
|
|
498
|
+
function pickUsageColor(percent: number, mode: "used" | "remaining"): "muted" | "warning" | "error" {
|
|
499
|
+
if (mode === "remaining") {
|
|
500
|
+
if (percent <= 20) return "error";
|
|
501
|
+
if (percent <= 50) return "warning";
|
|
502
|
+
return "muted";
|
|
503
|
+
}
|
|
499
504
|
if (percent >= 80) return "error";
|
|
500
505
|
if (percent >= 50) return "warning";
|
|
501
506
|
return "muted";
|
|
@@ -520,28 +525,20 @@ const usageSegment: StatusLineSegment = {
|
|
|
520
525
|
id: "usage",
|
|
521
526
|
render(ctx) {
|
|
522
527
|
const u = ctx.usage;
|
|
523
|
-
if (!u ||
|
|
528
|
+
if (!u || u.windows.length === 0) {
|
|
524
529
|
return { content: "", visible: false };
|
|
525
530
|
}
|
|
526
|
-
const
|
|
527
|
-
|
|
528
|
-
const
|
|
529
|
-
|
|
530
|
-
const
|
|
531
|
-
u.fiveHour.resetMinutes !== undefined
|
|
532
|
-
? theme.fg("muted", ` (${formatUsageReset(u.fiveHour.resetMinutes, "m")})`)
|
|
533
|
-
: "";
|
|
534
|
-
parts.push(`5h ${pctText}${reset}`);
|
|
535
|
-
}
|
|
536
|
-
if (u.sevenDay) {
|
|
537
|
-
const pct = u.sevenDay.percent;
|
|
538
|
-
const pctText = theme.fg(pickUsageColor(pct), `${Math.round(pct)}%`);
|
|
531
|
+
const mode = ctx.options.usage?.mode === "remaining" ? "remaining" : "used";
|
|
532
|
+
const parts = u.windows.map(window => {
|
|
533
|
+
const displayPercent =
|
|
534
|
+
mode === "remaining" ? Math.max(0, Math.min(100, 100 - window.percent)) : window.percent;
|
|
535
|
+
const pctText = theme.fg(pickUsageColor(displayPercent, mode), `${Math.round(displayPercent)}%`);
|
|
539
536
|
const reset =
|
|
540
|
-
|
|
541
|
-
? theme.fg("muted", ` (${formatUsageReset(
|
|
537
|
+
window.resetValue !== undefined && window.resetUnit !== undefined
|
|
538
|
+
? theme.fg("muted", ` (${formatUsageReset(window.resetValue, window.resetUnit)})`)
|
|
542
539
|
: "";
|
|
543
|
-
|
|
544
|
-
}
|
|
540
|
+
return `${window.label} ${pctText}${reset}`;
|
|
541
|
+
});
|
|
545
542
|
const content = withIcon(theme.icon.time, parts.join(theme.sep.dot));
|
|
546
543
|
return { content, visible: true };
|
|
547
544
|
},
|
|
@@ -51,8 +51,12 @@ export interface SegmentContext {
|
|
|
51
51
|
pr: { number: number; url: string } | null;
|
|
52
52
|
};
|
|
53
53
|
usage: {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
windows: Array<{
|
|
55
|
+
label: string;
|
|
56
|
+
percent: number;
|
|
57
|
+
resetValue?: number;
|
|
58
|
+
resetUnit?: "m" | "h";
|
|
59
|
+
}>;
|
|
56
60
|
} | null;
|
|
57
61
|
}
|
|
58
62
|
|