document360-writer 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/cli.js +23 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/help.js +1 -0
  4. package/dist/commands/help.js.map +1 -1
  5. package/dist/commands/index.js +2 -0
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/commands/logsCli.d.ts +2 -0
  8. package/dist/commands/logsCli.js +31 -0
  9. package/dist/commands/logsCli.js.map +1 -0
  10. package/dist/commands/workspace.d.ts +3 -0
  11. package/dist/commands/workspace.js +8 -0
  12. package/dist/commands/workspace.js.map +1 -0
  13. package/dist/d360/authCli.js +16 -1
  14. package/dist/d360/authCli.js.map +1 -1
  15. package/dist/d360/portalLink.d.ts +18 -0
  16. package/dist/d360/portalLink.js +43 -0
  17. package/dist/d360/portalLink.js.map +1 -0
  18. package/dist/d360/workspaceCli.d.ts +15 -0
  19. package/dist/d360/workspaceCli.js +72 -0
  20. package/dist/d360/workspaceCli.js.map +1 -0
  21. package/dist/lib/mdRender.d.ts +7 -0
  22. package/dist/lib/mdRender.js +172 -0
  23. package/dist/lib/mdRender.js.map +1 -0
  24. package/dist/lib/streaming.d.ts +23 -0
  25. package/dist/lib/streaming.js +51 -0
  26. package/dist/lib/streaming.js.map +1 -0
  27. package/dist/lib/toolFormat.d.ts +26 -0
  28. package/dist/lib/toolFormat.js +115 -0
  29. package/dist/lib/toolFormat.js.map +1 -0
  30. package/dist/repl.js +49 -6
  31. package/dist/repl.js.map +1 -1
  32. package/dist/tui/App.js +257 -63
  33. package/dist/tui/App.js.map +1 -1
  34. package/dist/tui/catalog.js +2 -0
  35. package/dist/tui/catalog.js.map +1 -1
  36. package/dist/tui/itemRender.d.ts +56 -0
  37. package/dist/tui/itemRender.js +72 -0
  38. package/dist/tui/itemRender.js.map +1 -0
  39. package/package.json +5 -3
  40. package/dist/tui/markdown.d.ts +0 -4
  41. package/dist/tui/markdown.js +0 -139
  42. package/dist/tui/markdown.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ export type BannerInfo = {
2
+ version: string;
3
+ claude: string;
4
+ who: string | null;
5
+ profile: string;
6
+ apiUrl: string;
7
+ project: string;
8
+ cwd: string;
9
+ prod: boolean;
10
+ loggedOut: boolean;
11
+ };
12
+ export type Item = {
13
+ kind: 'banner';
14
+ info: BannerInfo;
15
+ } | {
16
+ kind: 'user';
17
+ text: string;
18
+ } | {
19
+ kind: 'assistant';
20
+ text: string;
21
+ } | {
22
+ kind: 'tool';
23
+ title: string;
24
+ sep: string;
25
+ arg: string | null;
26
+ } | {
27
+ kind: 'tool-result';
28
+ lines: string[];
29
+ hidden: number;
30
+ isError: boolean;
31
+ } | {
32
+ kind: 'link';
33
+ lines: string[];
34
+ } | {
35
+ kind: 'preview';
36
+ name: string;
37
+ text: string;
38
+ } | {
39
+ kind: 'note';
40
+ text: string;
41
+ tone: 'info' | 'warn' | 'error' | 'ok';
42
+ } | {
43
+ kind: 'done';
44
+ seconds: number;
45
+ tokens: number;
46
+ ok: boolean;
47
+ };
48
+ export declare function formatDuration(seconds: number): string;
49
+ /**
50
+ * Render one item to an ANSI string. Each item owns the single blank line ABOVE
51
+ * itself (leading \n) — except tool-result/link, which attach directly under their
52
+ * tool header, and the banner, which is always first.
53
+ */
54
+ export declare function renderItem(item: Item, width: number): string;
55
+ /** Re-render the whole transcript (resize replay). */
56
+ export declare function renderTranscript(items: Item[], width: number): string;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Transcript item model + ANSI string rendering. The TUI prints finalized items
3
+ * through Ink's console patch (console.log → Ink erases its dynamic frame, writes,
4
+ * repaints) instead of <Static>, so the whole transcript can be re-rendered and
5
+ * REPLAYED at the new width on resize — <Static> can never do that safely (see
6
+ * .claude/docs/gotchas-writer-tui.md).
7
+ */
8
+ import pc from 'picocolors';
9
+ import wrapAnsi from 'wrap-ansi';
10
+ import { renderMarkdown } from '../lib/mdRender.js';
11
+ export function formatDuration(seconds) {
12
+ if (seconds < 60)
13
+ return `${seconds}s`;
14
+ return `${Math.floor(seconds / 60)}m ${seconds % 60}s`;
15
+ }
16
+ const row = (label, value) => ` ${label.padEnd(13)}${value}`;
17
+ function renderBanner(info) {
18
+ const lines = [
19
+ pc.bold(pc.cyan('✎ document360-writer')) + pc.gray(` v${info.version}`),
20
+ pc.gray(' Reads your code, writes your docs.'),
21
+ '',
22
+ row('Claude:', info.claude),
23
+ row('Document360:', info.loggedOut ? pc.yellow('not logged in — run: d360-writer login') : (info.who ?? '')),
24
+ row('Profile:', `${info.profile}${pc.gray(` (${info.apiUrl})`)}${info.prod ? pc.bold(pc.yellow(' ⚠ PRODUCTION')) : ''}`),
25
+ row('Project:', info.project),
26
+ row('cwd:', pc.gray(info.cwd)),
27
+ ];
28
+ return lines.join('\n');
29
+ }
30
+ const NOTE_COLOR = { error: pc.red, warn: pc.yellow, ok: pc.green, info: pc.gray };
31
+ /**
32
+ * Render one item to an ANSI string. Each item owns the single blank line ABOVE
33
+ * itself (leading \n) — except tool-result/link, which attach directly under their
34
+ * tool header, and the banner, which is always first.
35
+ */
36
+ export function renderItem(item, width) {
37
+ const w = Math.max(20, width);
38
+ switch (item.kind) {
39
+ case 'banner':
40
+ return renderBanner(item.info);
41
+ case 'user':
42
+ return '\n' + pc.cyan('❯ ') + item.text;
43
+ case 'assistant':
44
+ return '\n' + renderMarkdown(item.text, w);
45
+ case 'tool': {
46
+ const arg = item.arg !== null ? pc.gray(`${item.sep}(${item.arg})`) : '';
47
+ return '\n' + wrapAnsi(pc.green('● ') + pc.bold(item.title) + arg, w);
48
+ }
49
+ case 'tool-result': {
50
+ const paint = item.isError ? pc.red : pc.gray;
51
+ const lines = item.lines.map((l, i) => paint((i === 0 ? ' ⎿ ' : ' ') + l));
52
+ if (item.hidden > 0)
53
+ lines.push(pc.dim(` … +${item.hidden} lines`));
54
+ return lines.join('\n');
55
+ }
56
+ case 'link':
57
+ return item.lines.map(l => pc.cyan(` ⮕ ${l}`)).join('\n');
58
+ case 'preview':
59
+ return '\n' + pc.bold(pc.cyan(`▣ Preview — ${item.name}`)) + '\n\n' + renderMarkdown(item.text, w);
60
+ case 'note':
61
+ return '\n' + NOTE_COLOR[item.tone](item.text);
62
+ case 'done':
63
+ return ('\n' +
64
+ (item.ok ? pc.magenta('✶ ') : pc.red('✶ ')) +
65
+ pc.gray(`Cooked for ${formatDuration(item.seconds)} · ${item.tokens} tokens`));
66
+ }
67
+ }
68
+ /** Re-render the whole transcript (resize replay). */
69
+ export function renderTranscript(items, width) {
70
+ return items.map(i => renderItem(i, width)).join('\n');
71
+ }
72
+ //# sourceMappingURL=itemRender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemRender.js","sourceRoot":"","sources":["../../src/tui/itemRender.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "document360-writer",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Standalone documentation agent CLI. Reads your code, writes your docs. Specialized for Document360 publishing.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -33,10 +33,12 @@
33
33
  "dependencies": {
34
34
  "@inquirer/prompts": "^8.4.3",
35
35
  "commander": "^14.0.3",
36
- "document360-engine": "^0.1.0",
36
+ "document360-engine": "^0.2.0",
37
37
  "ink": "^5.2.1",
38
38
  "picocolors": "^1.1.1",
39
- "react": "^18.3.1"
39
+ "react": "^18.3.1",
40
+ "string-width": "^7.2.0",
41
+ "wrap-ansi": "^9.0.2"
40
42
  },
41
43
  "devDependencies": {
42
44
  "@types/node": "^22.10.0",
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- export declare function Markdown({ text }: {
3
- text: string;
4
- }): React.ReactElement;
@@ -1,139 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text, useStdout } from 'ink';
3
- const isTableSep = (line) => /^\s*\|?[\s:|-]*-[\s:|-]*\|?\s*$/.test(line) && line.includes('-');
4
- const splitCells = (line) => line.replace(/^\s*\|/, '').replace(/\|\s*$/, '').split('|').map(c => c.trim());
5
- function parseBlocks(md) {
6
- const lines = md.replace(/\r/g, '').split('\n');
7
- const blocks = [];
8
- let i = 0;
9
- while (i < lines.length) {
10
- const line = lines[i];
11
- // fenced code
12
- if (/^\s*```/.test(line)) {
13
- const code = [];
14
- i++;
15
- while (i < lines.length && !/^\s*```/.test(lines[i]))
16
- code.push(lines[i++]);
17
- i++; // closing fence
18
- blocks.push({ kind: 'code', lines: code });
19
- continue;
20
- }
21
- // table: a `| … |`-ish line followed by a separator row
22
- if (line.includes('|') && i + 1 < lines.length && isTableSep(lines[i + 1])) {
23
- const header = splitCells(line);
24
- i += 2;
25
- const rows = [];
26
- while (i < lines.length && lines[i].includes('|') && lines[i].trim() !== '') {
27
- rows.push(splitCells(lines[i++]));
28
- }
29
- blocks.push({ kind: 'table', header, rows });
30
- continue;
31
- }
32
- // heading
33
- const h = line.match(/^(#{1,6})\s+(.*)$/);
34
- if (h) {
35
- blocks.push({ kind: 'heading', level: h[1].length, text: h[2] });
36
- i++;
37
- continue;
38
- }
39
- // list (consecutive bullet / numbered lines)
40
- if (/^\s*([-*]|\d+\.)\s+/.test(line)) {
41
- const items = [];
42
- while (i < lines.length && /^\s*([-*]|\d+\.)\s+/.test(lines[i])) {
43
- items.push(lines[i++].replace(/^\s*([-*]|\d+\.)\s+/, ''));
44
- }
45
- blocks.push({ kind: 'list', items });
46
- continue;
47
- }
48
- // blank
49
- if (line.trim() === '') {
50
- i++;
51
- continue;
52
- }
53
- // paragraph (gather until blank / block boundary)
54
- const para = [];
55
- while (i < lines.length &&
56
- lines[i].trim() !== '' &&
57
- !/^\s*```/.test(lines[i]) &&
58
- !/^(#{1,6})\s/.test(lines[i]) &&
59
- !/^\s*([-*]|\d+\.)\s+/.test(lines[i]) &&
60
- !(lines[i].includes('|') && i + 1 < lines.length && isTableSep(lines[i + 1]))) {
61
- para.push(lines[i++]);
62
- }
63
- blocks.push({ kind: 'para', text: para.join(' ') });
64
- }
65
- return blocks;
66
- }
67
- /** Render inline **bold**, *italic*, `code` as styled spans. */
68
- function Inline({ text }) {
69
- const parts = [];
70
- const re = /(\*\*[^*]+\*\*|`[^`]+`|\*[^*]+\*)/g;
71
- let last = 0;
72
- let m;
73
- let k = 0;
74
- while ((m = re.exec(text)) !== null) {
75
- if (m.index > last)
76
- parts.push(_jsx(Text, { children: text.slice(last, m.index) }, k++));
77
- const tok = m[0];
78
- if (tok.startsWith('**'))
79
- parts.push(_jsx(Text, { bold: true, children: tok.slice(2, -2) }, k++));
80
- else if (tok.startsWith('`'))
81
- parts.push(_jsx(Text, { color: "cyan", children: tok.slice(1, -1) }, k++));
82
- else
83
- parts.push(_jsx(Text, { italic: true, children: tok.slice(1, -1) }, k++));
84
- last = m.index + tok.length;
85
- }
86
- if (last < text.length)
87
- parts.push(_jsx(Text, { children: text.slice(last) }, k++));
88
- return _jsx(Text, { children: parts });
89
- }
90
- const GAP = 2;
91
- function MdTable({ header, rows }) {
92
- const { stdout } = useStdout();
93
- const cols = header.length;
94
- // Natural width = widest cell per column. If the table exceeds the terminal, scale
95
- // columns down proportionally (min 6) and let cells WRAP inside their fixed-width box,
96
- // so columns stay aligned no matter how long a cell's content is.
97
- const natural = header.map((h, c) => Math.max(h.length, ...rows.map(r => (r[c] ?? '').length)));
98
- const avail = Math.max(24, (stdout.columns ?? 80) - 2);
99
- const gaps = GAP * (cols - 1);
100
- const widths = [...natural];
101
- const total = () => widths.reduce((a, b) => a + b, 0) + gaps;
102
- // Shrink the WIDEST column by 1 until the table fits — narrow columns keep their
103
- // natural width (so short labels don't wrap), only the offenders get squeezed.
104
- let guard = 0;
105
- while (total() > avail && guard++ < 10000) {
106
- let idx = -1;
107
- let max = 6; // floor
108
- for (let c = 0; c < cols; c++) {
109
- if (widths[c] > max) {
110
- max = widths[c];
111
- idx = c;
112
- }
113
- }
114
- if (idx === -1)
115
- break; // all at floor
116
- widths[idx] -= 1;
117
- }
118
- const ruleWidth = Math.min(avail, widths.reduce((a, b) => a + b, 0) + gaps);
119
- const cell = (text, c, header) => (_jsx(Box, { width: widths[c], marginRight: c < cols - 1 ? GAP : 0, children: _jsx(Text, { wrap: "wrap", bold: header, color: header ? 'cyan' : undefined, children: text }) }, c));
120
- return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Box, { children: header.map((h, c) => cell(h, c, true)) }), _jsx(Text, { color: "gray", children: '─'.repeat(ruleWidth) }), rows.map((r, ri) => (_jsx(Box, { children: widths.map((_w, c) => cell(r[c] ?? '', c, false)) }, ri)))] }));
121
- }
122
- export function Markdown({ text }) {
123
- const blocks = parseBlocks(text);
124
- return (_jsx(Box, { flexDirection: "column", children: blocks.map((b, i) => {
125
- switch (b.kind) {
126
- case 'heading':
127
- return (_jsx(Box, { marginTop: b.level <= 2 ? 1 : 0, children: _jsx(Text, { color: "cyan", bold: true, children: b.text }) }, i));
128
- case 'para':
129
- return (_jsx(Box, { children: _jsx(Inline, { text: b.text }) }, i));
130
- case 'list':
131
- return (_jsx(Box, { flexDirection: "column", children: b.items.map((it, j) => (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: ' • ' }), _jsx(Inline, { text: it })] }, j))) }, i));
132
- case 'code':
133
- return (_jsx(Box, { flexDirection: "column", marginY: 1, paddingLeft: 2, children: b.lines.map((l, j) => (_jsx(Text, { color: "gray", children: l || ' ' }, j))) }, i));
134
- case 'table':
135
- return _jsx(MdTable, { header: b.header, rows: b.rows }, i);
136
- }
137
- }) }));
138
- }
139
- //# sourceMappingURL=markdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/tui/markdown.tsx"],"names":[],"mappings":"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"}