@autonav/core 1.1.4 → 1.3.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.
- package/README.md +33 -0
- package/dist/adapter/claude-adapter.d.ts +30 -0
- package/dist/adapter/claude-adapter.d.ts.map +1 -1
- package/dist/adapter/claude-adapter.js +155 -0
- package/dist/adapter/claude-adapter.js.map +1 -1
- package/dist/cli/autonav.d.ts +1 -0
- package/dist/cli/autonav.d.ts.map +1 -1
- package/dist/cli/autonav.js +23 -4
- package/dist/cli/autonav.js.map +1 -1
- package/dist/cli/nav-init.js +19 -10
- package/dist/cli/nav-init.js.map +1 -1
- package/dist/cli/nav-install.d.ts +3 -0
- package/dist/cli/nav-install.d.ts.map +1 -0
- package/dist/cli/nav-install.js +101 -0
- package/dist/cli/nav-install.js.map +1 -0
- package/dist/cli/nav-uninstall.d.ts +3 -0
- package/dist/cli/nav-uninstall.d.ts.map +1 -0
- package/dist/cli/nav-uninstall.js +123 -0
- package/dist/cli/nav-uninstall.js.map +1 -0
- package/dist/cli/nav-update.d.ts +3 -0
- package/dist/cli/nav-update.d.ts.map +1 -0
- package/dist/cli/nav-update.js +131 -0
- package/dist/cli/nav-update.js.map +1 -0
- package/dist/interview/App.d.ts.map +1 -1
- package/dist/interview/App.js +141 -38
- package/dist/interview/App.js.map +1 -1
- package/dist/interview/ui/ActivityIndicator.d.ts +23 -0
- package/dist/interview/ui/ActivityIndicator.d.ts.map +1 -0
- package/dist/interview/ui/ActivityIndicator.js +81 -0
- package/dist/interview/ui/ActivityIndicator.js.map +1 -0
- package/dist/interview/ui/Banner.d.ts +14 -0
- package/dist/interview/ui/Banner.d.ts.map +1 -0
- package/dist/interview/ui/Banner.js +23 -0
- package/dist/interview/ui/Banner.js.map +1 -0
- package/dist/interview/ui/CompletionScreen.d.ts +12 -0
- package/dist/interview/ui/CompletionScreen.d.ts.map +1 -0
- package/dist/interview/ui/CompletionScreen.js +43 -0
- package/dist/interview/ui/CompletionScreen.js.map +1 -0
- package/dist/interview/ui/Divider.d.ts +7 -0
- package/dist/interview/ui/Divider.d.ts.map +1 -0
- package/dist/interview/ui/Divider.js +15 -0
- package/dist/interview/ui/Divider.js.map +1 -0
- package/dist/interview/ui/SystemMessage.d.ts +13 -0
- package/dist/interview/ui/SystemMessage.d.ts.map +1 -0
- package/dist/interview/ui/SystemMessage.js +37 -0
- package/dist/interview/ui/SystemMessage.js.map +1 -0
- package/dist/interview/ui/UserResponse.d.ts +12 -0
- package/dist/interview/ui/UserResponse.d.ts.map +1 -0
- package/dist/interview/ui/UserResponse.js +25 -0
- package/dist/interview/ui/UserResponse.js.map +1 -0
- package/dist/interview/ui/index.d.ts +12 -0
- package/dist/interview/ui/index.d.ts.map +1 -0
- package/dist/interview/ui/index.js +12 -0
- package/dist/interview/ui/index.js.map +1 -0
- package/dist/interview/ui/test-indicator.d.ts +9 -0
- package/dist/interview/ui/test-indicator.d.ts.map +1 -0
- package/dist/interview/ui/test-indicator.js +18 -0
- package/dist/interview/ui/test-indicator.js.map +1 -0
- package/dist/interview/ui/text-utils.d.ts +12 -0
- package/dist/interview/ui/text-utils.d.ts.map +1 -0
- package/dist/interview/ui/text-utils.js +60 -0
- package/dist/interview/ui/text-utils.js.map +1 -0
- package/dist/interview/ui/theme.d.ts +90 -0
- package/dist/interview/ui/theme.d.ts.map +1 -0
- package/dist/interview/ui/theme.js +114 -0
- package/dist/interview/ui/theme.js.map +1 -0
- package/dist/skill-generator/index.d.ts +89 -4
- package/dist/skill-generator/index.d.ts.map +1 -1
- package/dist/skill-generator/index.js +364 -143
- package/dist/skill-generator/index.js.map +1 -1
- package/package.json +11 -2
- package/dist/templates/CLAUDE-import.md.template +0 -90
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* System/assistant message display with glitch-corner borders
|
|
4
|
+
*
|
|
5
|
+
* Uses single-line box characters with decorative glitch blocks at corners.
|
|
6
|
+
* The glitch effect is achieved by replacing part of the horizontal border.
|
|
7
|
+
*/
|
|
8
|
+
import { Box, Text } from "ink";
|
|
9
|
+
import { colors, boxChars, glitchBlocks } from "./theme.js";
|
|
10
|
+
import { wrapText } from "./text-utils.js";
|
|
11
|
+
/** Maximum content width (will wrap text to fit) */
|
|
12
|
+
const MAX_WIDTH = 76;
|
|
13
|
+
/** Number of glitch characters to show at corners */
|
|
14
|
+
const GLITCH_COUNT = 3;
|
|
15
|
+
export function SystemMessage({ content }) {
|
|
16
|
+
const { single } = boxChars;
|
|
17
|
+
const glitch = glitchBlocks[3]; // Solid block for corners
|
|
18
|
+
// Wrap text to fit within max width
|
|
19
|
+
const lines = wrapText(content, MAX_WIDTH);
|
|
20
|
+
const contentWidth = MAX_WIDTH;
|
|
21
|
+
// Total inner width includes 1 space padding on each side
|
|
22
|
+
const innerWidth = contentWidth + 2;
|
|
23
|
+
// Build borders - glitch replaces part of the horizontal line, not added to it
|
|
24
|
+
// Top: corner + (horizontal - glitch) + glitch + corner
|
|
25
|
+
// Bottom: corner + glitch + (horizontal - glitch) + corner
|
|
26
|
+
const horizontalLength = innerWidth - GLITCH_COUNT;
|
|
27
|
+
const topBorder = single.topLeft +
|
|
28
|
+
single.horizontal.repeat(horizontalLength) +
|
|
29
|
+
glitch.repeat(GLITCH_COUNT) +
|
|
30
|
+
single.topRight;
|
|
31
|
+
const bottomBorder = single.bottomLeft +
|
|
32
|
+
glitch.repeat(GLITCH_COUNT) +
|
|
33
|
+
single.horizontal.repeat(horizontalLength) +
|
|
34
|
+
single.bottomRight;
|
|
35
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.dimmed, children: topBorder }), lines.map((line, i) => (_jsxs(Text, { color: colors.dimmed, children: [single.vertical + " ", _jsx(Text, { color: "white", children: line.padEnd(contentWidth) }), " " + single.vertical] }, i))), _jsx(Text, { color: colors.dimmed, children: bottomBorder })] }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SystemMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemMessage.js","sourceRoot":"","sources":["../../../src/interview/ui/SystemMessage.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,oDAAoD;AACpD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,qDAAqD;AACrD,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAsB;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;IAE1D,oCAAoC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,SAAS,CAAC;IAE/B,0DAA0D;IAC1D,MAAM,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;IAEpC,+EAA+E;IAC/E,wDAAwD;IACxD,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,CAAC;IACnD,MAAM,SAAS,GACb,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC;IAClB,MAAM,YAAY,GAChB,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC;IAErB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,SAAS,GAAQ,EAC7C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,IAAI,IAAS,KAAK,EAAE,MAAM,CAAC,MAAM,aAC/B,MAAM,CAAC,QAAQ,GAAG,GAAG,EACtB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAQ,EACrD,GAAG,GAAG,MAAM,CAAC,QAAQ,KAHb,CAAC,CAIL,CACR,CAAC,EACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,YAAY,GAAQ,IAC7C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User response display with rounded borders
|
|
3
|
+
*
|
|
4
|
+
* Shows user input with a prompt indicator and rounded box styling.
|
|
5
|
+
*/
|
|
6
|
+
interface UserResponseProps {
|
|
7
|
+
/** User's response text */
|
|
8
|
+
content: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function UserResponse({ content }: UserResponseProps): React.ReactNode;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=UserResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserResponse.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/UserResponse.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,UAAU,iBAAiB;IACzB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS,CA6B5E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* User response display with rounded borders
|
|
4
|
+
*
|
|
5
|
+
* Shows user input with a prompt indicator and rounded box styling.
|
|
6
|
+
*/
|
|
7
|
+
import { Box, Text } from "ink";
|
|
8
|
+
import { colors, boxChars } from "./theme.js";
|
|
9
|
+
import { wrapText } from "./text-utils.js";
|
|
10
|
+
/** Maximum content width (will wrap text to fit) */
|
|
11
|
+
const MAX_WIDTH = 76;
|
|
12
|
+
/** Prompt indicator shown before user text */
|
|
13
|
+
const PROMPT = "▸ ";
|
|
14
|
+
export function UserResponse({ content }) {
|
|
15
|
+
const { rounded } = boxChars;
|
|
16
|
+
// Wrap text to fit within max width (accounting for prompt on first line)
|
|
17
|
+
const lines = wrapText(content, MAX_WIDTH - PROMPT.length);
|
|
18
|
+
const contentWidth = MAX_WIDTH;
|
|
19
|
+
// Inner width includes 1 space padding on each side
|
|
20
|
+
const innerWidth = contentWidth + 2;
|
|
21
|
+
const topBorder = rounded.topLeft + rounded.horizontal.repeat(innerWidth) + rounded.topRight;
|
|
22
|
+
const bottomBorder = rounded.bottomLeft + rounded.horizontal.repeat(innerWidth) + rounded.bottomRight;
|
|
23
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.dimmed, children: topBorder }), lines.map((line, i) => (_jsxs(Text, { color: colors.dimmed, children: [rounded.vertical + " ", i === 0 && _jsx(Text, { color: colors.primary, children: PROMPT }), _jsx(Text, { color: "white", children: i === 0 ? line.padEnd(contentWidth - PROMPT.length) : line.padEnd(contentWidth) }), " " + rounded.vertical] }, i))), _jsx(Text, { color: colors.dimmed, children: bottomBorder })] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=UserResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserResponse.js","sourceRoot":"","sources":["../../../src/interview/ui/UserResponse.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,oDAAoD;AACpD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,8CAA8C;AAC9C,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAqB;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAE7B,0EAA0E;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,SAAS,CAAC;IAE/B,oDAAoD;IACpD,MAAM,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7F,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAEtG,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,SAAS,GAAQ,EAC7C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,IAAI,IAAS,KAAK,EAAE,MAAM,CAAC,MAAM,aAC/B,OAAO,CAAC,QAAQ,GAAG,GAAG,EACtB,CAAC,KAAK,CAAC,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,MAAM,GAAQ,EACxD,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAChB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAC3E,EACN,GAAG,GAAG,OAAO,CAAC,QAAQ,KANd,CAAC,CAOL,CACR,CAAC,EACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,YAAY,GAAQ,IAC7C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI components for interview TUI
|
|
3
|
+
*/
|
|
4
|
+
export { ActivityIndicator } from "./ActivityIndicator.js";
|
|
5
|
+
export { Banner } from "./Banner.js";
|
|
6
|
+
export { SystemMessage } from "./SystemMessage.js";
|
|
7
|
+
export { UserResponse } from "./UserResponse.js";
|
|
8
|
+
export { Divider } from "./Divider.js";
|
|
9
|
+
export { CompletionScreen } from "./CompletionScreen.js";
|
|
10
|
+
export * from "./theme.js";
|
|
11
|
+
export * from "./text-utils.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI components for interview TUI
|
|
3
|
+
*/
|
|
4
|
+
export { ActivityIndicator } from "./ActivityIndicator.js";
|
|
5
|
+
export { Banner } from "./Banner.js";
|
|
6
|
+
export { SystemMessage } from "./SystemMessage.js";
|
|
7
|
+
export { UserResponse } from "./UserResponse.js";
|
|
8
|
+
export { Divider } from "./Divider.js";
|
|
9
|
+
export { CompletionScreen } from "./CompletionScreen.js";
|
|
10
|
+
export * from "./theme.js";
|
|
11
|
+
export * from "./text-utils.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interview/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-indicator.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/test-indicator.tsx"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Test script for Matrix-style ActivityIndicator
|
|
5
|
+
*
|
|
6
|
+
* Shows all combinations of glyph sets and line counts
|
|
7
|
+
* Run with: npm run test:indicator
|
|
8
|
+
*/
|
|
9
|
+
import { createElement } from "react";
|
|
10
|
+
import { render, Box, Text } from "ink";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
import { ActivityIndicator } from "./ActivityIndicator.js";
|
|
13
|
+
import { glyphSetA, glyphSetB, glyphSetC, glyphSetD, glyphSetE } from "./theme.js";
|
|
14
|
+
function TestApp() {
|
|
15
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: chalk.rgb(0, 255, 70)("▓▒░ MATRIX ACTIVITY INDICATOR TEST ░▒▓") }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "Compare glyph sets (A-E) and line counts (1-3). Press Ctrl+C to exit." }) }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "A. Classic Mix (Letters + Numbers + Symbols + Blocks)" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "green", children: "A1. Single line" }) }), _jsx(ActivityIndicator, { message: "thinking...", width: 50, lines: 1, glyphSet: glyphSetA }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "A2. Two lines" }) }), _jsx(ActivityIndicator, { message: "processing...", width: 50, lines: 2, glyphSet: glyphSetA }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "A3. Three lines" }) }), _jsx(ActivityIndicator, { message: "analyzing...", width: 50, lines: 3, glyphSet: glyphSetA }), _jsx(Box, { marginTop: 2, marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "B. Block Heavy (Mostly blocks + symbols)" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "green", children: "B1. Single line" }) }), _jsx(ActivityIndicator, { message: "thinking...", width: 50, lines: 1, glyphSet: glyphSetB }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "B2. Two lines" }) }), _jsx(ActivityIndicator, { message: "processing...", width: 50, lines: 2, glyphSet: glyphSetB }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "B3. Three lines" }) }), _jsx(ActivityIndicator, { message: "analyzing...", width: 50, lines: 3, glyphSet: glyphSetB }), _jsx(Box, { marginTop: 2, marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "C. Digital (Numbers + Symbols)" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "green", children: "C1. Single line" }) }), _jsx(ActivityIndicator, { message: "thinking...", width: 50, lines: 1, glyphSet: glyphSetC }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "C2. Two lines" }) }), _jsx(ActivityIndicator, { message: "processing...", width: 50, lines: 2, glyphSet: glyphSetC }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "C3. Three lines" }) }), _jsx(ActivityIndicator, { message: "analyzing...", width: 50, lines: 3, glyphSet: glyphSetC }), _jsx(Box, { marginTop: 2, marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "D. Geometric (Box drawing + blocks)" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "green", children: "D1. Single line" }) }), _jsx(ActivityIndicator, { message: "thinking...", width: 50, lines: 1, glyphSet: glyphSetD }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "D2. Two lines" }) }), _jsx(ActivityIndicator, { message: "processing...", width: 50, lines: 2, glyphSet: glyphSetD }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "D3. Three lines" }) }), _jsx(ActivityIndicator, { message: "analyzing...", width: 50, lines: 3, glyphSet: glyphSetD }), _jsx(Box, { marginTop: 2, marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: "E. Minimal (Blocks + Numbers only)" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "green", children: "E1. Single line" }) }), _jsx(ActivityIndicator, { message: "thinking...", width: 50, lines: 1, glyphSet: glyphSetE }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "E2. Two lines" }) }), _jsx(ActivityIndicator, { message: "processing...", width: 50, lines: 2, glyphSet: glyphSetE }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "green", children: "E3. Three lines" }) }), _jsx(ActivityIndicator, { message: "analyzing...", width: 50, lines: 3, glyphSet: glyphSetE })] }));
|
|
16
|
+
}
|
|
17
|
+
render(createElement(TestApp));
|
|
18
|
+
//# sourceMappingURL=test-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-indicator.js","sourceRoot":"","sources":["../../../src/interview/ui/test-indicator.tsx"],"names":[],"mappings":";;AACA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnF,SAAS,OAAO;IACd,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,kBACP,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,wCAAwC,CAAC,GAC3D,GACH,EAEN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sFAEX,GACH,EAGN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,sEAA6D,GAChF,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACrF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,8BAAqB,GACpC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACvF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EAGtF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,yDAAgD,GACnE,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACrF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,8BAAqB,GACpC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACvF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EAGtF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,+CAAsC,GACzD,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACrF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,8BAAqB,GACpC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACvF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EAGtF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,oDAA2C,GAC9D,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACrF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,8BAAqB,GACpC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACvF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EAGtF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,mDAA0C,GAC7D,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACrF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,8BAAqB,GACpC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,EACvF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gCAAuB,GACtC,EACN,KAAC,iBAAiB,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,IAClF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text utility functions for UI components
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Wrap text to fit within a maximum width, breaking at word boundaries
|
|
6
|
+
*
|
|
7
|
+
* @param text - Text to wrap
|
|
8
|
+
* @param maxWidth - Maximum width per line
|
|
9
|
+
* @returns Array of wrapped lines
|
|
10
|
+
*/
|
|
11
|
+
export declare function wrapText(text: string, maxWidth: number): string[];
|
|
12
|
+
//# sourceMappingURL=text-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-utils.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/text-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAwDjE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text utility functions for UI components
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Wrap text to fit within a maximum width, breaking at word boundaries
|
|
6
|
+
*
|
|
7
|
+
* @param text - Text to wrap
|
|
8
|
+
* @param maxWidth - Maximum width per line
|
|
9
|
+
* @returns Array of wrapped lines
|
|
10
|
+
*/
|
|
11
|
+
export function wrapText(text, maxWidth) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
// Split by existing newlines first
|
|
14
|
+
const paragraphs = text.split('\n');
|
|
15
|
+
for (const paragraph of paragraphs) {
|
|
16
|
+
if (paragraph.length === 0) {
|
|
17
|
+
lines.push('');
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (paragraph.length <= maxWidth) {
|
|
21
|
+
lines.push(paragraph);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Need to wrap this paragraph
|
|
25
|
+
const words = paragraph.split(' ');
|
|
26
|
+
let currentLine = '';
|
|
27
|
+
for (const word of words) {
|
|
28
|
+
// If word itself is longer than maxWidth, we have to break it
|
|
29
|
+
if (word.length > maxWidth) {
|
|
30
|
+
if (currentLine) {
|
|
31
|
+
lines.push(currentLine.trim());
|
|
32
|
+
currentLine = '';
|
|
33
|
+
}
|
|
34
|
+
// Break the long word into chunks
|
|
35
|
+
for (let i = 0; i < word.length; i += maxWidth) {
|
|
36
|
+
lines.push(word.slice(i, i + maxWidth));
|
|
37
|
+
}
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
// Try adding word to current line
|
|
41
|
+
const testLine = currentLine ? `${currentLine} ${word}` : word;
|
|
42
|
+
if (testLine.length <= maxWidth) {
|
|
43
|
+
currentLine = testLine;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Current line is full, start new line
|
|
47
|
+
if (currentLine) {
|
|
48
|
+
lines.push(currentLine);
|
|
49
|
+
}
|
|
50
|
+
currentLine = word;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Add remaining text
|
|
54
|
+
if (currentLine) {
|
|
55
|
+
lines.push(currentLine);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return lines;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=text-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../../src/interview/ui/text-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAgB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,8DAA8D;YAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC3B,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC/B,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,kCAAkC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;oBAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,kCAAkC;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAE/D,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAChC,WAAW,GAAG,QAAQ,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1B,CAAC;gBACD,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme configuration for cyberpunk glitch UI
|
|
3
|
+
*
|
|
4
|
+
* Provides colors, characters, and glyphs for the interview TUI
|
|
5
|
+
*/
|
|
6
|
+
/** Color palette */
|
|
7
|
+
export declare const colors: {
|
|
8
|
+
readonly primary: "green";
|
|
9
|
+
readonly accent: "cyan";
|
|
10
|
+
readonly dimmed: "gray";
|
|
11
|
+
readonly error: "red";
|
|
12
|
+
readonly warning: "yellow";
|
|
13
|
+
};
|
|
14
|
+
/** Box-drawing characters */
|
|
15
|
+
export declare const boxChars: {
|
|
16
|
+
readonly double: {
|
|
17
|
+
readonly topLeft: "╔";
|
|
18
|
+
readonly topRight: "╗";
|
|
19
|
+
readonly bottomLeft: "╚";
|
|
20
|
+
readonly bottomRight: "╝";
|
|
21
|
+
readonly horizontal: "═";
|
|
22
|
+
readonly vertical: "║";
|
|
23
|
+
readonly leftT: "╠";
|
|
24
|
+
readonly rightT: "╣";
|
|
25
|
+
};
|
|
26
|
+
readonly single: {
|
|
27
|
+
readonly topLeft: "┌";
|
|
28
|
+
readonly topRight: "┐";
|
|
29
|
+
readonly bottomLeft: "└";
|
|
30
|
+
readonly bottomRight: "┘";
|
|
31
|
+
readonly horizontal: "─";
|
|
32
|
+
readonly vertical: "│";
|
|
33
|
+
readonly leftT: "├";
|
|
34
|
+
readonly rightT: "┤";
|
|
35
|
+
};
|
|
36
|
+
readonly rounded: {
|
|
37
|
+
readonly topLeft: "╭";
|
|
38
|
+
readonly topRight: "╮";
|
|
39
|
+
readonly bottomLeft: "╰";
|
|
40
|
+
readonly bottomRight: "╯";
|
|
41
|
+
readonly horizontal: "─";
|
|
42
|
+
readonly vertical: "│";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/** Glitch block characters for decorations */
|
|
46
|
+
export declare const glitchBlocks: readonly ["░", "▒", "▓", "█"];
|
|
47
|
+
/** Matrix-style glyph sets for animated activity indicator */
|
|
48
|
+
export declare const glyphSetA: readonly ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ".", "=", "*", "+", "-", "<", ">", "|", "/", "\\", "^", "~", "_", "│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌", "░", "▒", "▓", "█", "▀", "▄", "■", "□"];
|
|
49
|
+
export declare const glyphSetB: readonly ["░", "▒", "▓", "█", "▀", "▄", "■", "□", "▪", "▫", "░", "▒", "▓", "█", "▀", "▄", "■", "□", "▪", "▫", "│", "─", "║", "═", "╬", "╪", "┼", "╔", "╗", "╚", "╝", ":", ".", "*", "#", "@", "$", "%", "&", "=", "+", "-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
50
|
+
export declare const glyphSetC: readonly ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ".", "=", "*", "+", "-", "<", ">", "|", "/", "\\", "░", "▒", "▓", "█", "#", "@", "$", "%", "&", "^", "~"];
|
|
51
|
+
export declare const glyphSetD: readonly ["│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌", "║", "═", "╬", "╪", "╔", "╗", "╚", "╝", "╠", "╣", "╦", "╩", "│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌", "░", "▒", "▓", "█", "▀", "▄", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
52
|
+
export declare const glyphSetE: readonly ["░", "▒", "▓", "█", "▀", "▄", "■", "□", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "░", "▒", "▓", "█", "▀", "▄", "■", "□"];
|
|
53
|
+
export declare const matrixGlyphs: readonly ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ".", "=", "*", "+", "-", "<", ">", "|", "/", "\\", "^", "~", "_", "│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌", "░", "▒", "▓", "█", "▀", "▄", "■", "□"];
|
|
54
|
+
/** Brightness levels for Matrix fade effect */
|
|
55
|
+
export declare const matrixBrightness: {
|
|
56
|
+
readonly bright: {
|
|
57
|
+
readonly r: 0;
|
|
58
|
+
readonly g: 255;
|
|
59
|
+
readonly b: 70;
|
|
60
|
+
};
|
|
61
|
+
readonly medium: {
|
|
62
|
+
readonly r: 0;
|
|
63
|
+
readonly g: 190;
|
|
64
|
+
readonly b: 0;
|
|
65
|
+
};
|
|
66
|
+
readonly dim: {
|
|
67
|
+
readonly r: 0;
|
|
68
|
+
readonly g: 100;
|
|
69
|
+
readonly b: 0;
|
|
70
|
+
};
|
|
71
|
+
readonly darkest: {
|
|
72
|
+
readonly r: 0;
|
|
73
|
+
readonly g: 40;
|
|
74
|
+
readonly b: 0;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
/** Block-letter alphabet for ASCII art headers */
|
|
78
|
+
export declare const blockLetters: {
|
|
79
|
+
readonly A: readonly ["▄▀█", "█▀█"];
|
|
80
|
+
readonly U: readonly ["█░█", "█▄█"];
|
|
81
|
+
readonly T: readonly ["▀█▀", "░█░"];
|
|
82
|
+
readonly O: readonly ["█▀█", "█▄█"];
|
|
83
|
+
readonly N: readonly ["█▄░█", "█░▀█"];
|
|
84
|
+
readonly V: readonly ["█░█", "▀▄▀"];
|
|
85
|
+
readonly C: readonly ["█▀▀", "█░░", "▀▀▀"];
|
|
86
|
+
readonly R: readonly ["█▀█", "█▀▄", "▀░▀"];
|
|
87
|
+
readonly E: readonly ["█▀▀", "█▀▀", "▀▀▀"];
|
|
88
|
+
readonly D: readonly ["█▀▄", "█░█", "▀▀░"];
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/interview/ui/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAoB;AACpB,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,6BAA6B;AAC7B,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCX,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,YAAY,+BAAgC,CAAC;AAE1D,8DAA8D;AAG9D,eAAO,MAAM,SAAS,qWAOZ,CAAC;AAGX,eAAO,MAAM,SAAS,+QAMZ,CAAC;AAGX,eAAO,MAAM,SAAS,8NAMZ,CAAC;AAGX,eAAO,MAAM,SAAS,qQAMZ,CAAC;AAGX,eAAO,MAAM,SAAS,6IAIZ,CAAC;AAGX,eAAO,MAAM,YAAY,qWAAY,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,YAAY;;;;;;;;;;;CAYf,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme configuration for cyberpunk glitch UI
|
|
3
|
+
*
|
|
4
|
+
* Provides colors, characters, and glyphs for the interview TUI
|
|
5
|
+
*/
|
|
6
|
+
/** Color palette */
|
|
7
|
+
export const colors = {
|
|
8
|
+
primary: "green",
|
|
9
|
+
accent: "cyan",
|
|
10
|
+
dimmed: "gray",
|
|
11
|
+
error: "red",
|
|
12
|
+
warning: "yellow",
|
|
13
|
+
};
|
|
14
|
+
/** Box-drawing characters */
|
|
15
|
+
export const boxChars = {
|
|
16
|
+
// Double-line borders
|
|
17
|
+
double: {
|
|
18
|
+
topLeft: "╔",
|
|
19
|
+
topRight: "╗",
|
|
20
|
+
bottomLeft: "╚",
|
|
21
|
+
bottomRight: "╝",
|
|
22
|
+
horizontal: "═",
|
|
23
|
+
vertical: "║",
|
|
24
|
+
leftT: "╠",
|
|
25
|
+
rightT: "╣",
|
|
26
|
+
},
|
|
27
|
+
// Single-line borders
|
|
28
|
+
single: {
|
|
29
|
+
topLeft: "┌",
|
|
30
|
+
topRight: "┐",
|
|
31
|
+
bottomLeft: "└",
|
|
32
|
+
bottomRight: "┘",
|
|
33
|
+
horizontal: "─",
|
|
34
|
+
vertical: "│",
|
|
35
|
+
leftT: "├",
|
|
36
|
+
rightT: "┤",
|
|
37
|
+
},
|
|
38
|
+
// Rounded borders
|
|
39
|
+
rounded: {
|
|
40
|
+
topLeft: "╭",
|
|
41
|
+
topRight: "╮",
|
|
42
|
+
bottomLeft: "╰",
|
|
43
|
+
bottomRight: "╯",
|
|
44
|
+
horizontal: "─",
|
|
45
|
+
vertical: "│",
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
/** Glitch block characters for decorations */
|
|
49
|
+
export const glitchBlocks = ["░", "▒", "▓", "█"];
|
|
50
|
+
/** Matrix-style glyph sets for animated activity indicator */
|
|
51
|
+
// A. Classic Mix: Letters + Numbers + Symbols + Blocks
|
|
52
|
+
export const glyphSetA = [
|
|
53
|
+
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
|
|
54
|
+
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
|
|
55
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
56
|
+
":", ".", "=", "*", "+", "-", "<", ">", "|", "/", "\\", "^", "~", "_",
|
|
57
|
+
"│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌",
|
|
58
|
+
"░", "▒", "▓", "█", "▀", "▄", "■", "□",
|
|
59
|
+
];
|
|
60
|
+
// B. Block Heavy: Mostly blocks and symbols
|
|
61
|
+
export const glyphSetB = [
|
|
62
|
+
"░", "▒", "▓", "█", "▀", "▄", "■", "□", "▪", "▫",
|
|
63
|
+
"░", "▒", "▓", "█", "▀", "▄", "■", "□", "▪", "▫", // Repeat for density
|
|
64
|
+
"│", "─", "║", "═", "╬", "╪", "┼", "╔", "╗", "╚", "╝",
|
|
65
|
+
":", ".", "*", "#", "@", "$", "%", "&", "=", "+", "-",
|
|
66
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
67
|
+
];
|
|
68
|
+
// C. Numbers + Symbols: Digital/binary feel
|
|
69
|
+
export const glyphSetC = [
|
|
70
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
71
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", // More numbers
|
|
72
|
+
":", ".", "=", "*", "+", "-", "<", ">", "|", "/", "\\",
|
|
73
|
+
"░", "▒", "▓", "█",
|
|
74
|
+
"#", "@", "$", "%", "&", "^", "~",
|
|
75
|
+
];
|
|
76
|
+
// D. Box Drawing: Geometric/architectural
|
|
77
|
+
export const glyphSetD = [
|
|
78
|
+
"│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌",
|
|
79
|
+
"║", "═", "╬", "╪", "╔", "╗", "╚", "╝", "╠", "╣", "╦", "╩",
|
|
80
|
+
"│", "─", "┤", "┐", "└", "┴", "┬", "├", "┼", "┘", "┌", // Repeat
|
|
81
|
+
"░", "▒", "▓", "█", "▀", "▄",
|
|
82
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
83
|
+
];
|
|
84
|
+
// E. Minimal: Just blocks and numbers
|
|
85
|
+
export const glyphSetE = [
|
|
86
|
+
"░", "▒", "▓", "█", "▀", "▄", "■", "□",
|
|
87
|
+
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
88
|
+
"░", "▒", "▓", "█", "▀", "▄", "■", "□", // Repeat for more blocks
|
|
89
|
+
];
|
|
90
|
+
// Default export for backwards compatibility
|
|
91
|
+
export const matrixGlyphs = glyphSetA;
|
|
92
|
+
/** Brightness levels for Matrix fade effect */
|
|
93
|
+
export const matrixBrightness = {
|
|
94
|
+
// RGB values for green fade: bright → medium → dark
|
|
95
|
+
bright: { r: 0, g: 255, b: 70 }, // Bright white-green
|
|
96
|
+
medium: { r: 0, g: 190, b: 0 }, // Medium green
|
|
97
|
+
dim: { r: 0, g: 100, b: 0 }, // Dark green
|
|
98
|
+
darkest: { r: 0, g: 40, b: 0 }, // Nearly black
|
|
99
|
+
};
|
|
100
|
+
/** Block-letter alphabet for ASCII art headers */
|
|
101
|
+
export const blockLetters = {
|
|
102
|
+
A: ["▄▀█", "█▀█"],
|
|
103
|
+
U: ["█░█", "█▄█"],
|
|
104
|
+
T: ["▀█▀", "░█░"],
|
|
105
|
+
O: ["█▀█", "█▄█"],
|
|
106
|
+
N: ["█▄░█", "█░▀█"],
|
|
107
|
+
V: ["█░█", "▀▄▀"],
|
|
108
|
+
C: ["█▀▀", "█░░", "▀▀▀"],
|
|
109
|
+
R: ["█▀█", "█▀▄", "▀░▀"],
|
|
110
|
+
E: ["█▀▀", "█▀▀", "▀▀▀"],
|
|
111
|
+
D: ["█▀▄", "█░█", "▀▀░"],
|
|
112
|
+
// Add more as needed
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/interview/ui/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Skill Generator
|
|
3
3
|
*
|
|
4
|
-
* Generates
|
|
4
|
+
* Generates Claude Code skills for navigators, enabling
|
|
5
5
|
* inter-navigator communication via the "ask <navname>" pattern.
|
|
6
|
+
*
|
|
7
|
+
* Skills are stored locally in the navigator directory (.autonav/skills/)
|
|
8
|
+
* and symlinked to the global skills directory (~/.claude/skills/) for
|
|
9
|
+
* discovery by Claude Code.
|
|
6
10
|
*/
|
|
7
11
|
export interface SkillConfig {
|
|
8
12
|
/** Navigator name (used for skill name: ask-<navname>) */
|
|
@@ -17,21 +21,49 @@ export interface SkillConfig {
|
|
|
17
21
|
audience?: string;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
|
-
* Get the global skills directory path
|
|
24
|
+
* Get the global skills directory path (~/.claude/skills/)
|
|
21
25
|
*/
|
|
22
26
|
export declare function getGlobalSkillsDir(): string;
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
28
|
+
* Get the local skills directory path for a navigator (.autonav/skills/)
|
|
29
|
+
*/
|
|
30
|
+
export declare function getLocalSkillsDir(navigatorPath: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Get the full path to a local skill directory
|
|
33
|
+
*/
|
|
34
|
+
export declare function getLocalSkillPath(navigatorPath: string, skillName: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a skill already exists globally
|
|
25
37
|
*/
|
|
26
38
|
export declare function skillExists(skillName: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a skill exists locally in a navigator
|
|
41
|
+
*/
|
|
42
|
+
export declare function localSkillExists(navigatorPath: string, skillName: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a global skill is a symlink
|
|
45
|
+
*/
|
|
46
|
+
export declare function isSkillSymlink(skillName: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get the target of a global skill symlink
|
|
49
|
+
*/
|
|
50
|
+
export declare function getSkillSymlinkTarget(skillName: string): string | null;
|
|
27
51
|
/**
|
|
28
52
|
* Generate the skill name from navigator name
|
|
29
53
|
*/
|
|
30
54
|
export declare function getSkillName(navigatorName: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Generate the update skill name from navigator name
|
|
57
|
+
*/
|
|
58
|
+
export declare function getUpdateSkillName(navigatorName: string): string;
|
|
31
59
|
/**
|
|
32
60
|
* Generate the SKILL.md content for a navigator
|
|
33
61
|
*/
|
|
34
62
|
export declare function generateSkillContent(config: SkillConfig): string;
|
|
63
|
+
/**
|
|
64
|
+
* Generate the update skill content for a navigator (with write permissions)
|
|
65
|
+
*/
|
|
66
|
+
export declare function generateUpdateSkillContent(config: SkillConfig): string;
|
|
35
67
|
/**
|
|
36
68
|
* Create a global skill for a navigator
|
|
37
69
|
*
|
|
@@ -44,9 +76,62 @@ export declare function createNavigatorSkill(config: SkillConfig, options?: {
|
|
|
44
76
|
quiet?: boolean;
|
|
45
77
|
}): Promise<string | null>;
|
|
46
78
|
/**
|
|
47
|
-
* Remove a navigator skill
|
|
79
|
+
* Remove a navigator skill (both ask and update skills, global only)
|
|
48
80
|
*/
|
|
49
81
|
export declare function removeNavigatorSkill(navigatorName: string, options?: {
|
|
50
82
|
quiet?: boolean;
|
|
51
83
|
}): boolean;
|
|
84
|
+
export interface SymlinkResult {
|
|
85
|
+
success: boolean;
|
|
86
|
+
action: "created" | "already_linked" | "conflict" | "error";
|
|
87
|
+
message: string;
|
|
88
|
+
skillName: string;
|
|
89
|
+
localPath?: string;
|
|
90
|
+
globalPath?: string;
|
|
91
|
+
conflictTarget?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create a skill locally in the navigator's .autonav/skills/ directory
|
|
95
|
+
*/
|
|
96
|
+
export declare function createLocalSkill(navigatorPath: string, config: SkillConfig, options?: {
|
|
97
|
+
force?: boolean;
|
|
98
|
+
quiet?: boolean;
|
|
99
|
+
}): Promise<string | null>;
|
|
100
|
+
/**
|
|
101
|
+
* Create a symlink from global skills directory to local skill
|
|
102
|
+
*
|
|
103
|
+
* @returns SymlinkResult with status and details
|
|
104
|
+
*/
|
|
105
|
+
export declare function symlinkSkillToGlobal(localSkillPath: string, skillName: string, options?: {
|
|
106
|
+
force?: boolean;
|
|
107
|
+
quiet?: boolean;
|
|
108
|
+
}): SymlinkResult;
|
|
109
|
+
/**
|
|
110
|
+
* Remove the global symlink for a skill (preserves local skill)
|
|
111
|
+
*/
|
|
112
|
+
export declare function removeSkillSymlink(skillName: string, options?: {
|
|
113
|
+
quiet?: boolean;
|
|
114
|
+
}): {
|
|
115
|
+
success: boolean;
|
|
116
|
+
wasSymlink: boolean;
|
|
117
|
+
message: string;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Create a skill locally AND symlink it globally (recommended for new navigators)
|
|
121
|
+
*
|
|
122
|
+
* This is the preferred method for creating skills as it:
|
|
123
|
+
* 1. Stores the skill in the navigator's .autonav/skills/ (version-controlled)
|
|
124
|
+
* 2. Symlinks to ~/.claude/skills/ for global discovery
|
|
125
|
+
*/
|
|
126
|
+
export declare function createAndSymlinkSkill(navigatorPath: string, config: SkillConfig, options?: {
|
|
127
|
+
force?: boolean;
|
|
128
|
+
quiet?: boolean;
|
|
129
|
+
}): Promise<{
|
|
130
|
+
localPath: string | null;
|
|
131
|
+
symlinkResult: SymlinkResult | null;
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* Discover all local skills in a navigator
|
|
135
|
+
*/
|
|
136
|
+
export declare function discoverLocalSkills(navigatorPath: string): string[];
|
|
52
137
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-generator/index.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-generator/index.ts"],"names":[],"mappings":"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"}
|