micro-models-agent 0.2.34 → 0.2.36

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 (87) hide show
  1. package/dist/agent/context.d.ts.map +1 -1
  2. package/dist/agent/context.js +3 -5
  3. package/dist/agent/context.js.map +1 -1
  4. package/dist/agent/loop.d.ts.map +1 -1
  5. package/dist/agent/loop.js +78 -1
  6. package/dist/agent/loop.js.map +1 -1
  7. package/dist/agent/system-prompt.d.ts.map +1 -1
  8. package/dist/agent/system-prompt.js +141 -131
  9. package/dist/agent/system-prompt.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +8 -3
  12. package/dist/cli.js.map +1 -1
  13. package/dist/repl/commands.d.ts.map +1 -1
  14. package/dist/repl/commands.js +148 -45
  15. package/dist/repl/commands.js.map +1 -1
  16. package/dist/skills/builtin/cli-expert/SKILL.md +848 -0
  17. package/dist/skills/builtin/code-review/SKILL.md +424 -0
  18. package/dist/skills/builtin/git-expert/SKILL.md +522 -0
  19. package/dist/skills/builtin/jest-testing-expert/SKILL.md +957 -0
  20. package/dist/skills/builtin/nodejs-expert/SKILL.md +192 -0
  21. package/dist/skills/builtin/systematic-debugging/SKILL.md +296 -0
  22. package/dist/skills/builtin/test-driven-development/SKILL.md +371 -0
  23. package/dist/skills/builtin/typescript-expert/SKILL.md +429 -0
  24. package/dist/skills/loader.d.ts +7 -1
  25. package/dist/skills/loader.d.ts.map +1 -1
  26. package/dist/skills/loader.js +39 -21
  27. package/dist/skills/loader.js.map +1 -1
  28. package/dist/styling/index.d.ts +4 -1
  29. package/dist/styling/index.d.ts.map +1 -1
  30. package/dist/styling/index.js +12 -2
  31. package/dist/styling/index.js.map +1 -1
  32. package/dist/styling/loader.d.ts +5 -0
  33. package/dist/styling/loader.d.ts.map +1 -1
  34. package/dist/styling/loader.js +31 -5
  35. package/dist/styling/loader.js.map +1 -1
  36. package/dist/ui/components/status-bar.d.ts.map +1 -1
  37. package/dist/ui/components/status-bar.js +4 -6
  38. package/dist/ui/components/status-bar.js.map +1 -1
  39. package/dist/ui/index.d.ts +7 -1
  40. package/dist/ui/index.d.ts.map +1 -1
  41. package/dist/ui/index.js +13 -1
  42. package/dist/ui/index.js.map +1 -1
  43. package/dist/ui/ink/components/App.d.ts +62 -0
  44. package/dist/ui/ink/components/App.d.ts.map +1 -0
  45. package/dist/ui/ink/components/App.js +136 -0
  46. package/dist/ui/ink/components/App.js.map +1 -0
  47. package/dist/ui/ink/components/Conversation.d.ts +20 -0
  48. package/dist/ui/ink/components/Conversation.d.ts.map +1 -0
  49. package/dist/ui/ink/components/Conversation.js +15 -0
  50. package/dist/ui/ink/components/Conversation.js.map +1 -0
  51. package/dist/ui/ink/components/MessageBlock.d.ts +15 -0
  52. package/dist/ui/ink/components/MessageBlock.d.ts.map +1 -0
  53. package/dist/ui/ink/components/MessageBlock.js +45 -0
  54. package/dist/ui/ink/components/MessageBlock.js.map +1 -0
  55. package/dist/ui/ink/components/PromptInput.d.ts +12 -0
  56. package/dist/ui/ink/components/PromptInput.d.ts.map +1 -0
  57. package/dist/ui/ink/components/PromptInput.js +129 -0
  58. package/dist/ui/ink/components/PromptInput.js.map +1 -0
  59. package/dist/ui/ink/components/StatusBar.d.ts +14 -0
  60. package/dist/ui/ink/components/StatusBar.d.ts.map +1 -0
  61. package/dist/ui/ink/components/StatusBar.js +20 -0
  62. package/dist/ui/ink/components/StatusBar.js.map +1 -0
  63. package/dist/ui/ink/components/StreamBlock.d.ts +8 -0
  64. package/dist/ui/ink/components/StreamBlock.d.ts.map +1 -0
  65. package/dist/ui/ink/components/StreamBlock.js +15 -0
  66. package/dist/ui/ink/components/StreamBlock.js.map +1 -0
  67. package/dist/ui/ink/components/Tags.d.ts +26 -0
  68. package/dist/ui/ink/components/Tags.d.ts.map +1 -0
  69. package/dist/ui/ink/components/Tags.js +37 -0
  70. package/dist/ui/ink/components/Tags.js.map +1 -0
  71. package/dist/ui/ink/components/ToolCallBlock.d.ts +11 -0
  72. package/dist/ui/ink/components/ToolCallBlock.d.ts.map +1 -0
  73. package/dist/ui/ink/components/ToolCallBlock.js +8 -0
  74. package/dist/ui/ink/components/ToolCallBlock.js.map +1 -0
  75. package/dist/ui/ink/renderer.d.ts +42 -0
  76. package/dist/ui/ink/renderer.d.ts.map +1 -0
  77. package/dist/ui/ink/renderer.js +110 -0
  78. package/dist/ui/ink/renderer.js.map +1 -0
  79. package/dist/ui/ink/theme.d.ts +20 -0
  80. package/dist/ui/ink/theme.d.ts.map +1 -0
  81. package/dist/ui/ink/theme.js +45 -0
  82. package/dist/ui/ink/theme.js.map +1 -0
  83. package/dist/ui/readline-renderer.d.ts +8 -0
  84. package/dist/ui/readline-renderer.d.ts.map +1 -1
  85. package/dist/ui/readline-renderer.js +22 -1
  86. package/dist/ui/readline-renderer.js.map +1 -1
  87. package/package.json +9 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../../src/ui/ink/components/PromptInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface StatusInfo {
2
+ provider?: string;
3
+ model?: string;
4
+ tokens?: number;
5
+ contextWindow?: number;
6
+ step?: number;
7
+ maxSteps?: number;
8
+ }
9
+ export declare function StatusBar({ info, usage }: {
10
+ info: StatusInfo;
11
+ usage?: string;
12
+ }): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=StatusBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/ui/ink/components/StatusBar.tsx"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAqB9E"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getInkTheme } from '../theme.js';
4
+ export function StatusBar({ info, usage }) {
5
+ const t = getInkTheme();
6
+ const parts = [];
7
+ if (info.model) {
8
+ const short = info.model.split('/').pop() || info.model;
9
+ parts.push(short);
10
+ }
11
+ if (info.step !== undefined && info.maxSteps !== undefined) {
12
+ parts.push(`step ${info.step}/${info.maxSteps}`);
13
+ }
14
+ if (usage) {
15
+ parts.push(usage);
16
+ }
17
+ const display = parts.join(' │ ') || 'MMA';
18
+ return (_jsx(Box, { borderStyle: "single", borderColor: "gray", width: "100%", paddingX: 1, children: _jsx(Text, { ...t.colors.dim, children: display }) }));
19
+ }
20
+ //# sourceMappingURL=StatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/ui/ink/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW1C,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAwC;IAC7E,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAE3C,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,YACnE,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,YAAG,OAAO,GAAQ,GACpC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function StreamBlock({ content, isReasoning }: {
2
+ content: string;
3
+ isReasoning: boolean;
4
+ }): import("react").JSX.Element;
5
+ export declare function SpinnerLine({ text }: {
6
+ text?: string;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=StreamBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamBlock.d.ts","sourceRoot":"","sources":["../../../../src/ui/ink/components/StreamBlock.tsx"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,+BAc9F;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAQtD"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getInkTheme } from '../theme.js';
4
+ export function StreamBlock({ content, isReasoning }) {
5
+ const t = getInkTheme();
6
+ if (isReasoning) {
7
+ return (_jsx(Box, { flexDirection: "column", marginLeft: 1, children: _jsx(Text, { ...t.colors.dim, italic: true, children: content }) }));
8
+ }
9
+ return (_jsx(Box, { marginLeft: 1, children: _jsx(Text, { children: content }) }));
10
+ }
11
+ export function SpinnerLine({ text }) {
12
+ const t = getInkTheme();
13
+ return (_jsxs(Text, { children: [_jsx(Text, { ...t.colors.dim, children: "\u23F3" }), text ? _jsxs(Text, { children: [" ", text] }) : null] }));
14
+ }
15
+ //# sourceMappingURL=StreamBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamBlock.js","sourceRoot":"","sources":["../../../../src/ui/ink/components/StreamBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAA6C;IAC7F,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACvC,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,kBAAE,OAAO,GAAQ,GAC3C,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,cAAE,OAAO,GAAQ,GAClB,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAqB;IACrD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,uBAAU,EAC/B,IAAI,CAAC,CAAC,CAAC,MAAC,IAAI,oBAAG,IAAI,IAAQ,CAAC,CAAC,CAAC,IAAI,IAC9B,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ export declare function InfoTag({ children }: {
2
+ children: string;
3
+ }): import("react").JSX.Element;
4
+ export declare function SuccessTag({ children }: {
5
+ children: string;
6
+ }): import("react").JSX.Element;
7
+ export declare function WarningTag({ children }: {
8
+ children: string;
9
+ }): import("react").JSX.Element;
10
+ export declare function ErrorTag({ children }: {
11
+ children: string;
12
+ }): import("react").JSX.Element;
13
+ export declare function DimText({ children }: {
14
+ children: string;
15
+ }): import("react").JSX.Element;
16
+ export declare function HeadingTag({ children }: {
17
+ children: string;
18
+ }): import("react").JSX.Element;
19
+ export declare function BracketTag({ tag, message }: {
20
+ tag: string;
21
+ message: string;
22
+ }): import("react").JSX.Element;
23
+ export declare function LineNumbers({ text }: {
24
+ text: string;
25
+ }): import("react").JSX.Element;
26
+ //# sourceMappingURL=Tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["../../../../src/ui/ink/components/Tags.tsx"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAGzD;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAG5D;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAG5D;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAG1D;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAGzD;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAG5D;AAED,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,+BAS5E;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,+BAGrD"}
@@ -0,0 +1,37 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getInkTheme } from '../theme.js';
4
+ export function InfoTag({ children }) {
5
+ const t = getInkTheme();
6
+ return _jsxs(Text, { ...t.colors.info, children: ["\u2139 ", children] });
7
+ }
8
+ export function SuccessTag({ children }) {
9
+ const t = getInkTheme();
10
+ return _jsxs(Text, { ...t.colors.success, children: ["\u2713 ", children] });
11
+ }
12
+ export function WarningTag({ children }) {
13
+ const t = getInkTheme();
14
+ return _jsxs(Text, { ...t.colors.warning, children: ["\u26A0 ", children] });
15
+ }
16
+ export function ErrorTag({ children }) {
17
+ const t = getInkTheme();
18
+ return _jsxs(Text, { ...t.colors.error, children: ["\u2717 ", children] });
19
+ }
20
+ export function DimText({ children }) {
21
+ const t = getInkTheme();
22
+ return _jsx(Text, { ...t.colors.dim, children: children });
23
+ }
24
+ export function HeadingTag({ children }) {
25
+ const t = getInkTheme();
26
+ return _jsx(Text, { ...t.colors.heading, children: children });
27
+ }
28
+ export function BracketTag({ tag, message }) {
29
+ const t = getInkTheme();
30
+ const tagColor = tag === 'user' ? 'yellow' : 'dim';
31
+ return (_jsxs(Box, { children: [_jsxs(Text, { bold: true, color: tagColor, children: ["[", tag, "]"] }), _jsxs(Text, { children: [" ", message] })] }));
32
+ }
33
+ export function LineNumbers({ text }) {
34
+ const t = getInkTheme();
35
+ return _jsx(Text, { ...t.colors.lineNumbers, children: text });
36
+ }
37
+ //# sourceMappingURL=Tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tags.js","sourceRoot":"","sources":["../../../../src/ui/ink/components/Tags.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAwB;IACxD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,IAAI,wBAAK,QAAQ,IAAQ,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAwB;IAC3D,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAK,QAAQ,IAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAwB;IAC3D,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAK,QAAQ,IAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAwB;IACzD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,KAAK,wBAAK,QAAQ,IAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAwB;IACxD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,YAAG,QAAQ,GAAQ,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAwB;IAC3D,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,OAAO,YAAG,QAAQ,GAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAoC;IAC3E,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,QAAQ,kBAAI,GAAG,SAAS,EAC1C,MAAC,IAAI,oBAAG,OAAO,IAAQ,IACnB,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAoB;IACpD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,WAAW,YAAG,IAAI,GAAQ,CAAC;AACvD,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface ToolCallData {
2
+ name: string;
3
+ args: string;
4
+ result: string;
5
+ time: string;
6
+ exitCode?: number;
7
+ }
8
+ export declare function ToolCallBlock({ data }: {
9
+ data: ToolCallData;
10
+ }): import("react").JSX.Element;
11
+ //# sourceMappingURL=ToolCallBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCallBlock.d.ts","sourceRoot":"","sources":["../../../../src/ui/ink/components/ToolCallBlock.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,+BAqB7D"}
@@ -0,0 +1,8 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getInkTheme } from '../theme.js';
4
+ export function ToolCallBlock({ data }) {
5
+ const t = getInkTheme();
6
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", marginLeft: 1, paddingX: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { ...t.colors.toolName, children: ["tool: ", data.name] }), _jsx(Text, { ...t.colors.dim, children: " \u2500\u2500" })] }), data.args ? _jsx(Text, { ...t.colors.dim, children: data.args }) : null, data.result ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { ...t.colors.dim, children: "Result:" }), _jsx(Text, { children: data.result.slice(0, 500) }), data.result.length > 500 ? _jsxs(Text, { ...t.colors.dim, children: ["... (", data.result.length - 500, " more)"] }) : null] })) : null, data.time ? (_jsxs(Text, { ...t.colors.timing, children: ["\u23F1 ", data.time, data.exitCode !== undefined ? ` · exit ${data.exitCode}` : ''] })) : null] }));
7
+ }
8
+ //# sourceMappingURL=ToolCallBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCallBlock.js","sourceRoot":"","sources":["../../../../src/ui/ink/components/ToolCallBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU1C,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAA0B;IAC5D,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aAC3F,MAAC,IAAI,eACH,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,uBAAS,IAAI,CAAC,IAAI,IAAQ,EACrD,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,8BAAY,IAC7B,EACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,YAAG,IAAI,CAAC,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC7D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,wBAAgB,EACtC,KAAC,IAAI,cAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAQ,EACvC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,GAAG,sBAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,IACnG,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,MAAC,IAAI,OAAK,CAAC,CAAC,MAAM,CAAC,MAAM,wBAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAQ,CAC/G,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { OutputRenderer, StatusInfo } from '../renderer.js';
2
+ interface CommandInfo {
3
+ name: string;
4
+ description: string;
5
+ }
6
+ export declare class InkRenderer implements OutputRenderer {
7
+ private handle;
8
+ private handleReady;
9
+ private resolveReady;
10
+ private inkResult;
11
+ private _commands;
12
+ readonly abortSignal: AbortSignal | undefined;
13
+ constructor();
14
+ setCommands(cmds: CommandInfo[]): void;
15
+ start(): Promise<void>;
16
+ destroy(): void;
17
+ private dispatch;
18
+ write(text: string): void;
19
+ writeLine(text?: string): void;
20
+ writeNewline(): void;
21
+ writeInfo(text: string): void;
22
+ writeSuccess(text: string): void;
23
+ writeWarning(text: string): void;
24
+ writeError(text: string): void;
25
+ writeDim(text: string): void;
26
+ writeBracketTag(tag: string, message: string): void;
27
+ writeHeading(text: string): void;
28
+ writeToolHeader(name: string): void;
29
+ writeToolPreview(toolName: string, argsJson: string): void;
30
+ writeToolResult(time: string, exitCode?: number): void;
31
+ writeMarkdownChunk(chunk: string): void;
32
+ commitMarkdown(): void;
33
+ writeSpinner(text?: string): void;
34
+ clearSpinner(): void;
35
+ updateContextUsage(text: string): void;
36
+ updateStatus(info: StatusInfo): void;
37
+ clear(): void;
38
+ prompt(msg: string): Promise<string>;
39
+ writeFileOutput(lines: string[], startIndex?: number): void;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/ui/ink/renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,WAAY,YAAW,cAAc;IAChD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,SAAS,CAA2D;IAC5E,OAAO,CAAC,SAAS,CAAqB;IAEtC,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;;IAM9C,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAIhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,OAAO,IAAI,IAAI;YAMD,QAAQ;IAKtB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAInD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAItD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIpC,KAAK,IAAI,IAAI;IAIP,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,SAAI,GAAG,IAAI;CAOvD"}
@@ -0,0 +1,110 @@
1
+ import { render as inkRender } from 'ink';
2
+ import React from 'react';
3
+ import { App } from './components/App.js';
4
+ export class InkRenderer {
5
+ handle = null;
6
+ handleReady;
7
+ resolveReady;
8
+ inkResult = null;
9
+ _commands = [];
10
+ abortSignal;
11
+ constructor() {
12
+ this.handleReady = new Promise((resolve) => { this.resolveReady = resolve; });
13
+ }
14
+ setCommands(cmds) {
15
+ this._commands = cmds;
16
+ }
17
+ async start() {
18
+ this.inkResult = inkRender(React.createElement(App, {
19
+ commands: this._commands,
20
+ onReady: (handle) => {
21
+ this.handle = handle;
22
+ this.resolveReady();
23
+ },
24
+ }), { exitOnCtrlC: false });
25
+ }
26
+ destroy() {
27
+ this.inkResult?.unmount();
28
+ this.inkResult = null;
29
+ this.handle = null;
30
+ }
31
+ async dispatch(action) {
32
+ if (!this.handle)
33
+ await this.handleReady;
34
+ this.handle?.dispatch(action);
35
+ }
36
+ write(text) {
37
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'message', content: text } });
38
+ }
39
+ writeLine(text) {
40
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'message', content: text ?? '' } });
41
+ }
42
+ writeNewline() {
43
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'message', content: '' } });
44
+ }
45
+ writeInfo(text) {
46
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'info', content: text } });
47
+ }
48
+ writeSuccess(text) {
49
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'success', content: text } });
50
+ }
51
+ writeWarning(text) {
52
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'warning', content: text } });
53
+ }
54
+ writeError(text) {
55
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'error', content: text } });
56
+ }
57
+ writeDim(text) {
58
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'dim', content: text } });
59
+ }
60
+ writeBracketTag(tag, message) {
61
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'bracket', tag, message } });
62
+ }
63
+ writeHeading(text) {
64
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'heading', content: text } });
65
+ }
66
+ writeToolHeader(name) {
67
+ this.dispatch({ type: 'ADD_TOOL_CALL', data: { name } });
68
+ }
69
+ writeToolPreview(toolName, argsJson) {
70
+ this.dispatch({ type: 'TOOL_PREVIEW', data: { args: argsJson } });
71
+ }
72
+ writeToolResult(time, exitCode) {
73
+ this.dispatch({ type: 'TOOL_END', data: { time, exitCode } });
74
+ }
75
+ writeMarkdownChunk(chunk) {
76
+ this.dispatch({ type: 'STREAM_CHUNK', chunk });
77
+ }
78
+ commitMarkdown() {
79
+ this.dispatch({ type: 'STREAM_END' });
80
+ }
81
+ writeSpinner(text) {
82
+ this.dispatch({ type: 'SPINNER', show: true });
83
+ }
84
+ clearSpinner() {
85
+ this.dispatch({ type: 'SPINNER', show: false });
86
+ }
87
+ updateContextUsage(text) {
88
+ this.dispatch({ type: 'CONTEXT', text });
89
+ }
90
+ updateStatus(info) {
91
+ this.dispatch({ type: 'STATUS', info });
92
+ }
93
+ clear() {
94
+ this.dispatch({ type: 'CLEAR' });
95
+ }
96
+ async prompt(msg) {
97
+ await this.dispatch({ type: 'SHOW_PROMPT', message: msg });
98
+ return new Promise((resolve) => {
99
+ this.handle.setPromptResolve(resolve);
100
+ });
101
+ }
102
+ writeFileOutput(lines, startIndex = 1) {
103
+ const text = lines.map((line, i) => {
104
+ const lineNum = (startIndex + i).toString().padStart(4);
105
+ return `${lineNum}| ${line}`;
106
+ }).join('\n');
107
+ this.dispatch({ type: 'ADD_MESSAGE', kind: 'message', data: { type: 'message', content: text } });
108
+ }
109
+ }
110
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/ui/ink/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ interface InkStyle {
2
+ color?: string;
3
+ backgroundColor?: string;
4
+ bold?: boolean;
5
+ dim?: boolean;
6
+ italic?: boolean;
7
+ underline?: boolean;
8
+ }
9
+ interface InkTheme {
10
+ colors: Record<string, InkStyle>;
11
+ icons: Record<string, string>;
12
+ format: {
13
+ indent: string;
14
+ indentSize: number;
15
+ };
16
+ }
17
+ export declare function getInkTheme(): InkTheme;
18
+ export declare function resetInkTheme(): void;
19
+ export {};
20
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/ui/ink/theme.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AA2BD,wBAAgB,WAAW,IAAI,QAAQ,CAGtC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -0,0 +1,45 @@
1
+ import { loadThemeConfig } from '../../styling/loader.js';
2
+ const PICOLOR_TO_INK = {
3
+ dim: { dim: true },
4
+ bold: { bold: true },
5
+ italic: { italic: true },
6
+ underline: { underline: true },
7
+ black: { color: 'black' },
8
+ red: { color: 'red' },
9
+ green: { color: 'green' },
10
+ yellow: { color: 'yellow' },
11
+ blue: { color: 'blue' },
12
+ magenta: { color: 'magenta' },
13
+ cyan: { color: 'cyan' },
14
+ white: { color: 'white' },
15
+ gray: { color: 'gray' },
16
+ bgRed: { backgroundColor: 'red' },
17
+ bgGreen: { backgroundColor: 'green' },
18
+ bgYellow: { backgroundColor: 'yellow' },
19
+ bgBlue: { backgroundColor: 'blue' },
20
+ bgMagenta: { backgroundColor: 'magenta' },
21
+ bgCyan: { backgroundColor: 'cyan' },
22
+ bgWhite: { backgroundColor: 'white' },
23
+ };
24
+ let _inkTheme = null;
25
+ export function getInkTheme() {
26
+ if (!_inkTheme)
27
+ _inkTheme = buildInkTheme();
28
+ return _inkTheme;
29
+ }
30
+ export function resetInkTheme() {
31
+ _inkTheme = null;
32
+ }
33
+ function buildInkTheme() {
34
+ const config = loadThemeConfig();
35
+ const colors = {};
36
+ for (const [key, val] of Object.entries(config.colors)) {
37
+ colors[key] = PICOLOR_TO_INK[val] || {};
38
+ }
39
+ return {
40
+ colors,
41
+ icons: { ...config.icons },
42
+ format: { ...config.format },
43
+ };
44
+ }
45
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/ink/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAiB1D,MAAM,cAAc,GAA6B;IAC/C,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;IAClB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACpB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACxB,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IACzB,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;IACrB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IACzB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvB,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IACzB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvB,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;IACjC,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;IACrC,QAAQ,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE;IACvC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;IACnC,SAAS,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;IACzC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;IACnC,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;CACtC,CAAC;AAEF,IAAI,SAAS,GAAoB,IAAI,CAAC;AAEtC,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,aAAa,EAAE,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,MAAM;QACN,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE;QAC1B,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;KAC7B,CAAC;AACJ,CAAC"}
@@ -1,8 +1,15 @@
1
1
  import type { OutputRenderer, StatusInfo } from './renderer.js';
2
+ interface SlashCommandInfo {
3
+ name: string;
4
+ description: string;
5
+ }
2
6
  export declare class ReadlineRenderer implements OutputRenderer {
3
7
  private rl;
4
8
  private closed;
9
+ private commands;
10
+ setCommands(cmds: SlashCommandInfo[]): void;
5
11
  start(): Promise<void>;
12
+ private makeCompleter;
6
13
  private get theme();
7
14
  write(text: string): void;
8
15
  writeLine(text?: string): void;
@@ -28,4 +35,5 @@ export declare class ReadlineRenderer implements OutputRenderer {
28
35
  writeFileOutput(lines: string[], startIndex?: number): void;
29
36
  destroy(): void;
30
37
  }
38
+ export {};
31
39
  //# sourceMappingURL=readline-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readline-renderer.d.ts","sourceRoot":"","sources":["../../src/ui/readline-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK/D,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,EAAE,CAAkD;IAC5D,OAAO,CAAC,MAAM,CAAQ;IAEhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,KAAK,KAAK,GAEhB;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9B,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAInD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAItD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIrC,KAAK,IAAI,IAAI;IAIP,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,SAAI,GAAG,IAAI;IAOtD,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"readline-renderer.d.ts","sourceRoot":"","sources":["../../src/ui/readline-renderer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK/D,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,EAAE,CAAkD;IAC5D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAyB;IAEzC,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,OAAO,CAAC,aAAa;IAcrB,OAAO,KAAK,KAAK,GAEhB;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9B,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAInD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAItD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIrC,KAAK,IAAI,IAAI;IAIP,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,SAAI,GAAG,IAAI;IAOtD,OAAO,IAAI,IAAI;CAMhB"}
@@ -5,11 +5,32 @@ const CLEAR_LINE = '\r\x1b[K';
5
5
  export class ReadlineRenderer {
6
6
  rl = null;
7
7
  closed = false;
8
+ commands = [];
9
+ setCommands(cmds) {
10
+ this.commands = cmds;
11
+ }
8
12
  async start() {
9
- this.rl = createInterface({ input, output, prompt: '' });
13
+ this.rl = createInterface({
14
+ input,
15
+ output,
16
+ prompt: '',
17
+ completer: this.makeCompleter(),
18
+ });
10
19
  this.closed = false;
11
20
  this.rl.on('close', () => { this.closed = true; });
12
21
  }
22
+ makeCompleter() {
23
+ return (line) => {
24
+ const hit = line.startsWith('/');
25
+ if (!hit)
26
+ return [[], line];
27
+ const partial = line.slice(1);
28
+ const matches = this.commands
29
+ .filter(c => c.name.startsWith(partial))
30
+ .map(c => `/${c.name}`);
31
+ return [matches.length ? matches : [], line];
32
+ };
33
+ }
13
34
  get theme() {
14
35
  return getTheme();
15
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readline-renderer.js","sourceRoot":"","sources":["../../src/ui/readline-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,UAAU,GAAG,UAAU,CAAA;AAE7B,MAAM,OAAO,gBAAgB;IACnB,EAAE,GAA8C,IAAI,CAAA;IACpD,MAAM,GAAG,KAAK,CAAA;IAEtB,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,IAAY,KAAK;QACf,OAAO,QAAQ,EAAE,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,CAAC,IAAa;QACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,OAAe;QAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,QAAiB;QAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAED,YAAY,CAAC,IAAa;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,YAAY;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,YAAY,CAAC,KAAiB;QAC5B,wCAAwC;IAC1C,CAAC;IAED,KAAK;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,eAAe,CAAC,KAAe,EAAE,UAAU,GAAG,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACvD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"readline-renderer.js","sourceRoot":"","sources":["../../src/ui/readline-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "micro-models-agent",
3
- "version": "0.2.34",
3
+ "version": "0.2.36",
4
4
  "description": "Micro Models Agent (MMA) — LLM agent harness for small models (Qwen3.5-9B, 32K-64K context)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,14 +10,15 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "files": [
12
12
  "dist/",
13
- "README.md"
13
+ "README.md",
14
+ "dist/skills/builtin/"
14
15
  ],
15
16
  "engines": {
16
17
  "node": ">=18"
17
18
  },
18
19
  "scripts": {
19
20
  "mma": "bun run src/index.ts",
20
- "build": "tsc",
21
+ "build": "tsc -p tsconfig.build.json && node scripts/copy-builtin-skills.mjs",
21
22
  "prepublishOnly": "npm run build",
22
23
  "prepack": "npm run build",
23
24
  "dev": "bun --watch src/index.ts",
@@ -30,13 +31,17 @@
30
31
  "commander": "^12.0.0",
31
32
  "esprima": "^4.0.1",
32
33
  "execa": "^9.6.1",
34
+ "ink": "^5.2.1",
35
+ "ink-markdown-es": "^1.4.0",
33
36
  "js-tiktoken": "^1.0.0",
34
37
  "jsonrepair": "^3.15.0",
35
- "picocolors": "^1.1.1"
38
+ "picocolors": "^1.1.1",
39
+ "react": "^18.3.1"
36
40
  },
37
41
  "devDependencies": {
38
42
  "@types/esprima": "^4.0.6",
39
43
  "@types/node": "^26.1.1",
44
+ "@types/react": "^19.2.17",
40
45
  "tsx": "^4.0.0",
41
46
  "typescript": "^5.8.0",
42
47
  "vitest": "^3.0.0"