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":"AAgBA,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,kDAsB7E"}
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 { marked } from 'marked';
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 = marked.parse(stripAnsi(content));
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 raw text so the UI never goes blank on a parse error.
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,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,CAAC,GAAG,CACR,cAAc,CAAC;IACb,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;IACnC,iBAAiB,EAAE,KAAK;CACzB,CAAC,CACH,CAAC;AASF,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,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,gFAAgF;YAChF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,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,qEAAqE;YACrE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,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"}
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
- draft_response: "\uB2F5\uBCC0 \uCD08\uC548 \uC791\uC131",
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
- draft_response: "cyan",
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 { marked } from "marked";
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 result = marked.parse(stripAnsi(content));
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
- draft_response: "답변 초안 작성",
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
- draft_response: "cyan",
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,UAAU;IAC1B,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"}
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.5.1",
4
- "description": "GovOn CLI — Agentic TUI for Korean civil complaint assistance powered by React + Ink",
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
- "cli",
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",