@tacuchi/agent-workflow-cli 10.5.0 → 11.0.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 (30) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +5 -1
  3. package/package.json +2 -2
  4. package/skills/agent-workflow/LICENSE +661 -21
  5. package/skills/agent-workflow/README.md +2 -2
  6. package/dist/cli/tui/components/command-palette.d.ts +0 -18
  7. package/dist/cli/tui/components/command-palette.d.ts.map +0 -1
  8. package/dist/cli/tui/components/command-palette.js +0 -23
  9. package/dist/cli/tui/components/command-palette.js.map +0 -1
  10. package/dist/cli/tui/components/sidebar.d.ts +0 -27
  11. package/dist/cli/tui/components/sidebar.d.ts.map +0 -1
  12. package/dist/cli/tui/components/sidebar.js +0 -37
  13. package/dist/cli/tui/components/sidebar.js.map +0 -1
  14. package/dist/cli/tui/components/toast-stack.d.ts +0 -41
  15. package/dist/cli/tui/components/toast-stack.d.ts.map +0 -1
  16. package/dist/cli/tui/components/toast-stack.js +0 -61
  17. package/dist/cli/tui/components/toast-stack.js.map +0 -1
  18. package/dist/cli/tui/components/toast.d.ts +0 -7
  19. package/dist/cli/tui/components/toast.d.ts.map +0 -1
  20. package/dist/cli/tui/components/toast.js +0 -17
  21. package/dist/cli/tui/components/toast.js.map +0 -1
  22. package/skills/agent-workflow/doctrine/doctor/SKILL.md.tmp +0 -0
  23. package/skills/agent-workflow/doctrine/hub-init/SKILL.md.tmp +0 -0
  24. package/skills/agent-workflow/doctrine/migrate/SKILL.md.tmp +0 -0
  25. package/skills/agent-workflow/doctrine/project-init/SKILL.md.tmp +0 -0
  26. package/skills/agent-workflow/doctrine/rules/SKILL.md.tmp +0 -0
  27. package/skills/agent-workflow/exports/export-arq/SKILL.md.tmp +0 -0
  28. package/skills/agent-workflow/exports/export-report/SKILL.md.tmp +0 -0
  29. package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md.tmp +0 -0
  30. package/skills/agent-workflow/standards/coding-standards/SKILL.md.tmp +0 -0
@@ -36,7 +36,7 @@ agent-workflow self install-skill --from /path/to/agent-workflow-cli/skills/agen
36
36
  skills/agent-workflow/
37
37
  ├── SKILL.md # Skill entry point with frontmatter
38
38
  ├── README.md # This file
39
- ├── LICENSE # MIT
39
+ ├── LICENSE # AGPL-3.0-or-later
40
40
  └── references/ # Per-family command documentation
41
41
  ├── session-mgmt.md # sessions, session-create, session-resume, session-close, session-artifacts
42
42
  ├── objetivo-tasks.md # objetivo-data, tasks-data, decisiones-list, dependencias-list
@@ -71,4 +71,4 @@ rm -rf ~/.claude/skills/agent-workflow
71
71
 
72
72
  ## License
73
73
 
74
- MIT — see [LICENSE](./LICENSE).
74
+ Copyright © 2026 Jesús Loayza (Tacuchi). Licensed under **AGPL-3.0-or-later** — see [LICENSE](./LICENSE).
@@ -1,18 +0,0 @@
1
- export interface PaletteCommand {
2
- id: string;
3
- label: string;
4
- category: string;
5
- hint?: string;
6
- alert?: boolean;
7
- }
8
- export interface CommandPaletteProps {
9
- filter: string;
10
- commands: PaletteCommand[];
11
- cursor: number;
12
- groups?: Array<{
13
- category: string;
14
- commands: PaletteCommand[];
15
- }>;
16
- }
17
- export declare function CommandPalette({ filter, commands, cursor }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element;
18
- //# sourceMappingURL=command-palette.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/command-palette.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC;CAClE;AAID,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA6E/E"}
@@ -1,23 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { colors, icons } from "../theme.js";
4
- const PLACEHOLDER = "type to filter…";
5
- export function CommandPalette({ filter, commands, cursor }) {
6
- const groups = [];
7
- for (const c of commands) {
8
- const last = groups[groups.length - 1];
9
- if (last && last.category === c.category) {
10
- last.rows.push(c);
11
- }
12
- else {
13
- groups.push({ category: c.category, rows: [c] });
14
- }
15
- }
16
- let runningIdx = 0;
17
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Text, { color: colors.mute, children: "search " }), _jsxs(Text, { color: colors.accent, bold: true, children: ["\u203A", " "] }), filter ? (_jsx(Text, { color: colors.bright, children: filter })) : (_jsx(Text, { color: colors.faint, children: PLACEHOLDER })), _jsx(Text, { color: colors.accent, children: icons.caret }), _jsx(Box, { flexGrow: 1 }), _jsxs(Text, { color: colors.mute, children: [commands.length, " match", commands.length === 1 ? "" : "es"] })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.borderFaint, children: "─".repeat(70) }) }), commands.length === 0 ? (_jsxs(Text, { color: colors.dim, children: ["No matches for \"", filter || "…", "\"."] })) : null, groups.map((g) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.mute, children: g.category.toUpperCase() }), g.rows.map((c) => {
18
- const idx = runningIdx++;
19
- const active = idx === cursor;
20
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: active ? colors.accent : colors.bright, bold: active, children: c.label }) }), c.hint ? (_jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.dim, children: c.hint }) })) : null, c.alert ? (_jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.err, children: "\u25CF" }) })) : null] }, c.id));
21
- })] }, g.category)))] }));
22
- }
23
- //# sourceMappingURL=command-palette.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/command-palette.tsx"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- export type SidebarTabId = "status" | "workflow" | "project" | "mcp" | "skills";
2
- export interface SidebarTab {
3
- id: SidebarTabId;
4
- key: string;
5
- label: string;
6
- badge?: string;
7
- alert?: boolean;
8
- }
9
- export interface WorkspaceContext {
10
- modeLabel: string;
11
- branchLabel: string;
12
- sessionsLabel: string;
13
- }
14
- export interface KeymapEntry {
15
- key: string;
16
- action: string;
17
- }
18
- export interface SidebarProps {
19
- activeTab: SidebarTabId;
20
- tabs: SidebarTab[];
21
- workspaceContext: WorkspaceContext;
22
- cliVersion: string;
23
- globalKeys: KeymapEntry[];
24
- width?: number;
25
- }
26
- export declare function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
27
- //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,KAAqB,GACtB,EAAE,YAAY,2CAiEd"}
@@ -1,37 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { colors, icons } from "../theme.js";
4
- const DEFAULT_WIDTH = 24;
5
- // Reservado para alinear los `entry.action` en la columna de keymap. 3 cells es
6
- // suficiente para los keys más anchos (`↑↓`, `^K`).
7
- const KEY_COL_WIDTH = 4;
8
- export function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width = DEFAULT_WIDTH, }) {
9
- return (_jsxs(Box, { flexDirection: "column", width: width, flexShrink: 0, paddingX: 1, paddingY: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: colors.accent, bold: true, children: icons.brand }), _jsxs(Text, { color: colors.bright, bold: true, children: [" ", "agent-workflow"] })] }), _jsxs(Text, { color: colors.faint, wrap: "truncate-end", children: ["v", cliVersion, " \u00B7 @tacuchi"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: tabs.map((tab) => (_jsx(SidebarTabRow, { tab: tab, active: tab.id === activeTab }, tab.id))) }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.mute, children: "WORKSPACE" }), _jsx(Text, { color: colors.text, wrap: "truncate-end", children: workspaceContext.modeLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.branchLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.sessionsLabel })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: globalKeys.map((entry) => (_jsxs(Box, { children: [_jsx(Box, { width: KEY_COL_WIDTH, children: _jsx(Text, { color: colors.accent, children: entry.key }) }), _jsx(Text, { color: colors.dim, children: entry.action })] }, `${entry.key}-${entry.action}`))) })] }));
10
- }
11
- // Width interior del sidebar: width - paddingX*2 = 22, menos 2 cells de safety
12
- // margin para variabilidad de ancho visual de glyphs + inner padding.
13
- const SIDEBAR_INNER_WIDTH = DEFAULT_WIDTH - 4;
14
- const SIDEBAR_INNER_PAD = 1;
15
- function SidebarTabRow({ tab, active }) {
16
- const focusGlyph = active ? icons.focusBar : " ";
17
- const bg = active ? colors.bgHighlight : undefined;
18
- const bgProp = bg ? { backgroundColor: bg } : {};
19
- const innerPad = " ".repeat(SIDEBAR_INNER_PAD);
20
- // Layout: bar + gap + inner_pad + key + space + label + ... + inner_pad.
21
- // Bar va AFUERA del bg; el bg empieza en inner_pad.
22
- const FOCUS_OUTER = 2;
23
- const used = FOCUS_OUTER +
24
- SIDEBAR_INNER_PAD * 2 +
25
- [...tab.key].length +
26
- 1 +
27
- [...tab.label].length +
28
- (tab.badge ? [...tab.badge].length + 1 : 0) +
29
- (tab.alert ? 2 : 0);
30
- const spacerLen = Math.max(1, SIDEBAR_INNER_WIDTH - used);
31
- const spacer = " ".repeat(spacerLen);
32
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.accent, bold: active, children: focusGlyph }), _jsx(Text, { children: " " }), _jsx(Text, { ...bgProp, children: innerPad }), _jsx(Text, { ...bgProp, color: active ? colors.accent : colors.dim, bold: active, children: tab.key }), _jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: active ? colors.bright : colors.text, bold: active, children: tab.label }), _jsx(Text, { ...bgProp, wrap: "truncate-end", children: spacer }), tab.badge ? (_jsx(Text, { ...bgProp, color: active ? colors.accentSoft : colors.mute, children: tab.badge })) : null, tab.alert ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: colors.err, children: "\u25CF" })] })) : null, _jsx(Text, { ...bgProp, children: innerPad })] }));
33
- }
34
- function Divider() {
35
- return _jsx(Text, { color: colors.borderFaint, children: "─".repeat(DEFAULT_WIDTH - 2) });
36
- }
37
- //# sourceMappingURL=sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- export type ToastTone = "ok" | "info" | "err";
2
- export interface ToastEntry {
3
- id: number;
4
- tone: ToastTone;
5
- title: string;
6
- body?: string;
7
- /** Duración en ms; default 3200 */
8
- duration?: number;
9
- }
10
- export interface ToastInput {
11
- tone?: ToastTone;
12
- title: string;
13
- body?: string;
14
- duration?: number;
15
- }
16
- /**
17
- * useToasts — hook que mantiene una pila de toasts y expone `push(toast)`.
18
- *
19
- * Auto-elimina cada toast después de `duration` (default 3.2s). El stack se
20
- * renderiza inline encima del footer cuando `toasts.length > 0`.
21
- */
22
- export declare function useToasts(): {
23
- toasts: ToastEntry[];
24
- push: (input: ToastInput) => void;
25
- dismiss: (id: number) => void;
26
- clear: () => void;
27
- };
28
- export interface ToastStackProps {
29
- toasts: ToastEntry[];
30
- /** Máximo de toasts visibles (los más nuevos arriba). Default 3. */
31
- max?: number;
32
- }
33
- /**
34
- * ToastStack — render inline de los toasts activos.
35
- *
36
- * En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
37
- * pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
38
- * con borde left del color del tone + título bold + body dim.
39
- */
40
- export declare function ToastStack({ toasts, max }: ToastStackProps): import("react/jsx-runtime").JSX.Element | null;
41
- //# sourceMappingURL=toast-stack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast-stack.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast-stack.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS;;kBAIU,UAAU;kBAiBV,MAAM;;EASxC;AAcD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAO,EAAE,EAAE,eAAe,kDAoB9D"}
@@ -1,61 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { useCallback, useRef, useState } from "react";
4
- import { colors, icons } from "../theme.js";
5
- /**
6
- * useToasts — hook que mantiene una pila de toasts y expone `push(toast)`.
7
- *
8
- * Auto-elimina cada toast después de `duration` (default 3.2s). El stack se
9
- * renderiza inline encima del footer cuando `toasts.length > 0`.
10
- */
11
- export function useToasts() {
12
- const [toasts, setToasts] = useState([]);
13
- const seq = useRef(0);
14
- const push = useCallback((input) => {
15
- const id = ++seq.current;
16
- const tone = input.tone ?? "info";
17
- const duration = input.duration ?? 3200;
18
- const entry = {
19
- id,
20
- tone,
21
- title: input.title,
22
- duration,
23
- ...(input.body !== undefined ? { body: input.body } : {}),
24
- };
25
- setToasts((prev) => [...prev, entry]);
26
- setTimeout(() => {
27
- setToasts((prev) => prev.filter((t) => t.id !== id));
28
- }, duration);
29
- }, []);
30
- const dismiss = useCallback((id) => {
31
- setToasts((prev) => prev.filter((t) => t.id !== id));
32
- }, []);
33
- const clear = useCallback(() => {
34
- setToasts([]);
35
- }, []);
36
- return { toasts, push, dismiss, clear };
37
- }
38
- const TONE_COLOR = {
39
- ok: colors.success,
40
- info: colors.info,
41
- err: colors.error,
42
- };
43
- const TONE_ICON = {
44
- ok: icons.check,
45
- info: icons.bullet,
46
- err: icons.cross,
47
- };
48
- /**
49
- * ToastStack — render inline de los toasts activos.
50
- *
51
- * En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
52
- * pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
53
- * con borde left del color del tone + título bold + body dim.
54
- */
55
- export function ToastStack({ toasts, max = 3 }) {
56
- if (toasts.length === 0)
57
- return null;
58
- const visible = toasts.slice(-max);
59
- return (_jsx(Box, { flexDirection: "column", marginTop: 1, children: visible.map((t) => (_jsxs(Box, { marginTop: 0, children: [_jsxs(Text, { color: TONE_COLOR[t.tone], bold: true, children: [TONE_ICON[t.tone], " "] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.fgBright, bold: true, children: t.title }), t.body ? _jsx(Text, { color: colors.fgSubtle, children: t.body }) : null] })] }, t.id))) }));
60
- }
61
- //# sourceMappingURL=toast-stack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast-stack.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast-stack.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export type ToastTone = "success" | "error" | "info";
2
- export interface ToastProps {
3
- tone: ToastTone;
4
- message: string;
5
- }
6
- export declare function Toast({ tone, message }: ToastProps): import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=toast.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,2CASlD"}
@@ -1,17 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { colors, icons } from "../theme.js";
4
- const TONE_TO_COLOR = {
5
- success: colors.success,
6
- error: colors.error,
7
- info: colors.info,
8
- };
9
- const TONE_TO_ICON = {
10
- success: icons.check,
11
- error: icons.cross,
12
- info: icons.bullet,
13
- };
14
- export function Toast({ tone, message }) {
15
- return (_jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { color: TONE_TO_COLOR[tone], bold: true, children: [TONE_TO_ICON[tone], " "] }), _jsx(Text, { color: colors.fg, children: message })] }));
16
- }
17
- //# sourceMappingURL=toast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/toast.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,aAAa,GAA8B;IAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,IAAI,EAAE,MAAM,CAAC,IAAI;CAClB,CAAC;AAEF,MAAM,YAAY,GAA8B;IAC9C,OAAO,EAAE,KAAK,CAAC,KAAK;IACpB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,IAAI,EAAE,KAAK,CAAC,MAAM;CACnB,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAc;IACjD,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,MAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,mBACnC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IACnB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,EAAE,YAAG,OAAO,GAAQ,IACpC,CACP,CAAC;AACJ,CAAC"}
File without changes