govon 1.5.1 → 1.6.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownView.tsx"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAiB,EAAE,EAAE,iBAAiB,kDAkC7E"}
|
|
@@ -1,36 +1,38 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { Box, Text } from 'ink';
|
|
4
|
-
import
|
|
4
|
+
import useStdoutDimensions from 'ink-use-stdout-dimensions';
|
|
5
|
+
import { Marked } from 'marked';
|
|
5
6
|
import { markedTerminal } from 'marked-terminal';
|
|
6
|
-
// Configure marked with the terminal renderer once at module load time.
|
|
7
|
-
// markedTerminal() returns a marked extension object compatible with the
|
|
8
|
-
// marked.use() API introduced in marked v5+ and still current in v15.
|
|
9
|
-
marked.use(markedTerminal({
|
|
10
|
-
reflowText: true,
|
|
11
|
-
width: process.stdout.columns || 80,
|
|
12
|
-
showSectionPrefix: false,
|
|
13
|
-
}));
|
|
14
7
|
// Strip ANSI escape sequences from untrusted server content
|
|
15
8
|
function stripAnsi(str) {
|
|
16
9
|
// eslint-disable-next-line no-control-regex
|
|
17
10
|
return str.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '');
|
|
18
11
|
}
|
|
19
12
|
export function MarkdownView({ content, streaming = false }) {
|
|
13
|
+
const [columns] = useStdoutDimensions();
|
|
14
|
+
const width = columns ?? 80;
|
|
20
15
|
const rendered = useMemo(() => {
|
|
21
16
|
if (!content)
|
|
22
17
|
return '';
|
|
23
18
|
try {
|
|
19
|
+
// Create a fresh Marked instance with the current terminal width so that
|
|
20
|
+
// re-renders after a terminal resize use the correct column count.
|
|
21
|
+
const md = new Marked(markedTerminal({
|
|
22
|
+
reflowText: true,
|
|
23
|
+
width,
|
|
24
|
+
showSectionPrefix: false,
|
|
25
|
+
}));
|
|
24
26
|
// marked.parse() is synchronous when the terminal renderer extension is active.
|
|
25
|
-
const result =
|
|
27
|
+
const result = md.parse(stripAnsi(content));
|
|
26
28
|
// Remove trailing newlines produced by marked's block-level output.
|
|
27
29
|
return typeof result === 'string' ? result.trimEnd() : '';
|
|
28
30
|
}
|
|
29
31
|
catch {
|
|
30
|
-
// Fall back to
|
|
31
|
-
return content;
|
|
32
|
+
// Fall back to sanitized text so the UI never goes blank on a parse error.
|
|
33
|
+
return stripAnsi(content);
|
|
32
34
|
}
|
|
33
|
-
}, [content]);
|
|
35
|
+
}, [content, width]);
|
|
34
36
|
if (!rendered)
|
|
35
37
|
return null;
|
|
36
38
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { wrap: "wrap", children: rendered }), streaming && _jsx(Text, { dimColor: true, children: '▍' })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../../src/components/MarkdownView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../../src/components/MarkdownView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASjD,4DAA4D;AAC5D,SAAS,SAAS,CAAC,GAAW;IAC5B,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAqB;IAC5E,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,yEAAyE;YACzE,mEAAmE;YACnE,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,cAAc,CAAC;gBACb,UAAU,EAAE,IAAI;gBAChB,KAAK;gBACL,iBAAiB,EAAE,KAAK;aACzB,CAAC,CACH,CAAC;YACF,gFAAgF;YAChF,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,oEAAoE;YACpE,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;YAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErB,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,QAAQ,GAAQ,EAClC,SAAS,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,GAAQ,IACrC,CACP,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -397,7 +397,7 @@ var NODE_STATUS_MESSAGES = {
|
|
|
397
397
|
persist: "\uC800\uC7A5 \uC911\u2026"
|
|
398
398
|
};
|
|
399
399
|
var TASK_TYPE_LABELS = {
|
|
400
|
-
|
|
400
|
+
domain_adapter: "\uB3C4\uBA54\uC778 \uC5B4\uB311\uD130 \uC751\uB2F5",
|
|
401
401
|
revise_response: "\uB2F5\uBCC0 \uC218\uC815",
|
|
402
402
|
lookup_stats: "\uD1B5\uACC4 \uC870\uD68C",
|
|
403
403
|
issue_detection: "\uC774\uC288 \uD0D0\uC9C0",
|
|
@@ -407,7 +407,7 @@ var TASK_TYPE_LABELS = {
|
|
|
407
407
|
default: "\uC77C\uBC18 \uC791\uC5C5"
|
|
408
408
|
};
|
|
409
409
|
var TASK_TYPE_STYLES = {
|
|
410
|
-
|
|
410
|
+
domain_adapter: "cyan",
|
|
411
411
|
revise_response: "blue",
|
|
412
412
|
lookup_stats: "magenta",
|
|
413
413
|
issue_detection: "yellow",
|
|
@@ -1031,29 +1031,32 @@ function ThinkingBlock({ content, streaming = false }) {
|
|
|
1031
1031
|
// src/components/MarkdownView.tsx
|
|
1032
1032
|
import { useMemo } from "react";
|
|
1033
1033
|
import { Box as Box4, Text as Text5 } from "ink";
|
|
1034
|
-
import
|
|
1034
|
+
import useStdoutDimensions from "ink-use-stdout-dimensions";
|
|
1035
|
+
import { Marked } from "marked";
|
|
1035
1036
|
import { markedTerminal } from "marked-terminal";
|
|
1036
1037
|
import { jsx as jsx4, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1037
|
-
marked.use(
|
|
1038
|
-
markedTerminal({
|
|
1039
|
-
reflowText: true,
|
|
1040
|
-
width: process.stdout.columns || 80,
|
|
1041
|
-
showSectionPrefix: false
|
|
1042
|
-
})
|
|
1043
|
-
);
|
|
1044
1038
|
function stripAnsi(str) {
|
|
1045
1039
|
return str.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, "");
|
|
1046
1040
|
}
|
|
1047
1041
|
function MarkdownView({ content, streaming = false }) {
|
|
1042
|
+
const [columns] = useStdoutDimensions();
|
|
1043
|
+
const width = columns ?? 80;
|
|
1048
1044
|
const rendered = useMemo(() => {
|
|
1049
1045
|
if (!content) return "";
|
|
1050
1046
|
try {
|
|
1051
|
-
const
|
|
1047
|
+
const md = new Marked(
|
|
1048
|
+
markedTerminal({
|
|
1049
|
+
reflowText: true,
|
|
1050
|
+
width,
|
|
1051
|
+
showSectionPrefix: false
|
|
1052
|
+
})
|
|
1053
|
+
);
|
|
1054
|
+
const result = md.parse(stripAnsi(content));
|
|
1052
1055
|
return typeof result === "string" ? result.trimEnd() : "";
|
|
1053
1056
|
} catch {
|
|
1054
|
-
return content;
|
|
1057
|
+
return stripAnsi(content);
|
|
1055
1058
|
}
|
|
1056
|
-
}, [content]);
|
|
1059
|
+
}, [content, width]);
|
|
1057
1060
|
if (!rendered) return null;
|
|
1058
1061
|
return /* @__PURE__ */ jsxs5(Box4, { flexDirection: "column", children: [
|
|
1059
1062
|
/* @__PURE__ */ jsx4(Text5, { wrap: "wrap", children: rendered }),
|
package/dist/types.js
CHANGED
|
@@ -32,7 +32,7 @@ export const NODE_STATUS_MESSAGES = {
|
|
|
32
32
|
* Used in approval dialogs and history views.
|
|
33
33
|
*/
|
|
34
34
|
export const TASK_TYPE_LABELS = {
|
|
35
|
-
|
|
35
|
+
domain_adapter: "도메인 어댑터 응답",
|
|
36
36
|
revise_response: "답변 수정",
|
|
37
37
|
lookup_stats: "통계 조회",
|
|
38
38
|
issue_detection: "이슈 탐지",
|
|
@@ -46,7 +46,7 @@ export const TASK_TYPE_LABELS = {
|
|
|
46
46
|
* Values correspond to Ink's `<Text color="...">` prop.
|
|
47
47
|
*/
|
|
48
48
|
export const TASK_TYPE_STYLES = {
|
|
49
|
-
|
|
49
|
+
domain_adapter: "cyan",
|
|
50
50
|
revise_response: "blue",
|
|
51
51
|
lookup_stats: "magenta",
|
|
52
52
|
issue_detection: "yellow",
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyZH,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,YAAY,EAAE,UAAU;IACxB,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,OAAO;CACR,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyZH,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,YAAY,EAAE,UAAU;IACxB,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,OAAO;CACR,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,OAAO;IACxB,YAAY,EAAE,OAAO;IACrB,eAAe,EAAE,OAAO;IACxB,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,SAAS;IAC7B,OAAO,EAAE,OAAO;CACR,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,MAAM;IACvB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,QAAQ;IACzB,WAAW,EAAE,SAAS;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,YAAY;IAChC,OAAO,EAAE,MAAM;CACP,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,YAAY,EAAE,OAAO;IACrB,gBAAgB,EAAE,QAAQ;IAC1B,mBAAmB,EAAE,MAAM;CACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "govon",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "GovOn CLI —
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "GovOn CLI — AX platform TUI for unified government infrastructure powered by React + Ink",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"govon": "./bin/govon.js"
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
],
|
|
24
24
|
"keywords": [
|
|
25
25
|
"govon",
|
|
26
|
+
"ax-platform",
|
|
26
27
|
"agentic-tui",
|
|
27
|
-
"
|
|
28
|
+
"government-infrastructure",
|
|
28
29
|
"korean-nlp",
|
|
29
|
-
"civil-complaint",
|
|
30
30
|
"react-ink"
|
|
31
31
|
],
|
|
32
32
|
"homepage": "https://github.com/GovOn-Org/GovOn#readme",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"ink": "^5.2.0",
|
|
46
46
|
"ink-spinner": "^5.0.0",
|
|
47
47
|
"ink-text-input": "^6.0.0",
|
|
48
|
+
"ink-use-stdout-dimensions": "^1.0.5",
|
|
48
49
|
"marked": "^15.0.0",
|
|
49
50
|
"marked-terminal": "^7.3.0",
|
|
50
51
|
"react": "^18.3.1",
|