@zhijiewang/openharness 0.6.1 → 0.7.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 +46 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/components/CybergotchiPanelConnected.d.ts +5 -1
- package/dist/components/CybergotchiPanelConnected.d.ts.map +1 -1
- package/dist/components/CybergotchiPanelConnected.js +2 -2
- package/dist/components/CybergotchiPanelConnected.js.map +1 -1
- package/dist/components/DiffView.d.ts +1 -18
- package/dist/components/DiffView.d.ts.map +1 -1
- package/dist/components/DiffView.js +1 -54
- package/dist/components/DiffView.js.map +1 -1
- package/dist/components/PermissionPrompt.d.ts.map +1 -1
- package/dist/components/PermissionPrompt.js +7 -49
- package/dist/components/PermissionPrompt.js.map +1 -1
- package/dist/components/REPL.d.ts.map +1 -1
- package/dist/components/REPL.js +41 -20
- package/dist/components/REPL.js.map +1 -1
- package/dist/components/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner.js +3 -9
- package/dist/components/Spinner.js.map +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -1
- package/dist/cybergotchi/useCybergotchi.js +3 -1
- package/dist/cybergotchi/useCybergotchi.js.map +1 -1
- package/dist/harness/config.d.ts +1 -0
- package/dist/harness/config.d.ts.map +1 -1
- package/dist/harness/config.js.map +1 -1
- package/dist/harness/context-warning.d.ts +12 -0
- package/dist/harness/context-warning.d.ts.map +1 -0
- package/dist/harness/context-warning.js +36 -0
- package/dist/harness/context-warning.js.map +1 -0
- package/dist/harness/context-warning.test.d.ts +2 -0
- package/dist/harness/context-warning.test.d.ts.map +1 -0
- package/dist/harness/context-warning.test.js +72 -0
- package/dist/harness/context-warning.test.js.map +1 -0
- package/dist/harness/submit-handler.d.ts +35 -0
- package/dist/harness/submit-handler.d.ts.map +1 -0
- package/dist/harness/submit-handler.js +86 -0
- package/dist/harness/submit-handler.js.map +1 -0
- package/dist/harness/submit-handler.test.d.ts +2 -0
- package/dist/harness/submit-handler.test.d.ts.map +1 -0
- package/dist/harness/submit-handler.test.js +62 -0
- package/dist/harness/submit-handler.test.js.map +1 -0
- package/dist/main.js +26 -3
- package/dist/main.js.map +1 -1
- package/dist/renderer/cells.d.ts +37 -0
- package/dist/renderer/cells.d.ts.map +1 -0
- package/dist/renderer/cells.js +122 -0
- package/dist/renderer/cells.js.map +1 -0
- package/dist/renderer/cells.test.d.ts +2 -0
- package/dist/renderer/cells.test.d.ts.map +1 -0
- package/dist/renderer/cells.test.js +69 -0
- package/dist/renderer/cells.test.js.map +1 -0
- package/dist/renderer/diff.d.ts +32 -0
- package/dist/renderer/diff.d.ts.map +1 -0
- package/dist/renderer/diff.js +103 -0
- package/dist/renderer/diff.js.map +1 -0
- package/dist/renderer/differ.d.ts +25 -0
- package/dist/renderer/differ.d.ts.map +1 -0
- package/dist/renderer/differ.js +91 -0
- package/dist/renderer/differ.js.map +1 -0
- package/dist/renderer/e2e.test.d.ts +6 -0
- package/dist/renderer/e2e.test.d.ts.map +1 -0
- package/dist/renderer/e2e.test.js +235 -0
- package/dist/renderer/e2e.test.js.map +1 -0
- package/dist/renderer/image.d.ts +21 -0
- package/dist/renderer/image.d.ts.map +1 -0
- package/dist/renderer/image.js +97 -0
- package/dist/renderer/image.js.map +1 -0
- package/dist/renderer/index.d.ts +73 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +331 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/input.d.ts +17 -0
- package/dist/renderer/input.d.ts.map +1 -0
- package/dist/renderer/input.js +101 -0
- package/dist/renderer/input.js.map +1 -0
- package/dist/renderer/layout.d.ts +62 -0
- package/dist/renderer/layout.d.ts.map +1 -0
- package/dist/renderer/layout.js +412 -0
- package/dist/renderer/layout.js.map +1 -0
- package/dist/renderer/markdown.d.ts +18 -0
- package/dist/renderer/markdown.d.ts.map +1 -0
- package/dist/renderer/markdown.js +430 -0
- package/dist/renderer/markdown.js.map +1 -0
- package/dist/renderer/markdown.test.d.ts +2 -0
- package/dist/renderer/markdown.test.d.ts.map +1 -0
- package/dist/renderer/markdown.test.js +81 -0
- package/dist/renderer/markdown.test.js.map +1 -0
- package/dist/renderer/perf.test.d.ts +2 -0
- package/dist/renderer/perf.test.d.ts.map +1 -0
- package/dist/renderer/perf.test.js +121 -0
- package/dist/renderer/perf.test.js.map +1 -0
- package/dist/renderer/session-browser.d.ts +30 -0
- package/dist/renderer/session-browser.d.ts.map +1 -0
- package/dist/renderer/session-browser.js +113 -0
- package/dist/renderer/session-browser.js.map +1 -0
- package/dist/repl.d.ts +20 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +464 -0
- package/dist/repl.js.map +1 -0
- package/dist/tools/GrepTool/index.d.ts +2 -2
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/utils/diff-algorithm.d.ts +24 -0
- package/dist/utils/diff-algorithm.d.ts.map +1 -0
- package/dist/utils/diff-algorithm.js +58 -0
- package/dist/utils/diff-algorithm.js.map +1 -0
- package/dist/utils/diff-algorithm.test.d.ts +2 -0
- package/dist/utils/diff-algorithm.test.d.ts.map +1 -0
- package/dist/utils/diff-algorithm.test.js +49 -0
- package/dist/utils/diff-algorithm.test.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +12 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/theme-data.d.ts +31 -0
- package/dist/utils/theme-data.d.ts.map +1 -0
- package/dist/utils/theme-data.js +55 -0
- package/dist/utils/theme-data.js.map +1 -0
- package/dist/utils/theme.d.ts +4 -21
- package/dist/utils/theme.d.ts.map +1 -1
- package/dist/utils/theme.js +4 -36
- package/dist/utils/theme.js.map +1 -1
- package/dist/utils/tool-summary.d.ts +15 -0
- package/dist/utils/tool-summary.d.ts.map +1 -0
- package/dist/utils/tool-summary.js +55 -0
- package/dist/utils/tool-summary.js.map +1 -0
- package/dist/utils/tool-summary.test.d.ts +2 -0
- package/dist/utils/tool-summary.test.d.ts.map +1 -0
- package/dist/utils/tool-summary.test.js +67 -0
- package/dist/utils/tool-summary.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { computeDiff, filterWithContext } from './diff-algorithm.js';
|
|
4
|
+
describe('computeDiff', () => {
|
|
5
|
+
it('returns empty for identical strings', () => {
|
|
6
|
+
const diff = computeDiff('hello', 'hello');
|
|
7
|
+
assert.strictEqual(diff.length, 1);
|
|
8
|
+
assert.strictEqual(diff[0].type, 'context');
|
|
9
|
+
});
|
|
10
|
+
it('detects added lines', () => {
|
|
11
|
+
const diff = computeDiff('a\nb', 'a\nb\nc');
|
|
12
|
+
const adds = diff.filter(d => d.type === 'add');
|
|
13
|
+
assert.strictEqual(adds.length, 1);
|
|
14
|
+
assert.strictEqual(adds[0].line, 'c');
|
|
15
|
+
});
|
|
16
|
+
it('detects removed lines', () => {
|
|
17
|
+
const diff = computeDiff('a\nb\nc', 'a\nc');
|
|
18
|
+
const removes = diff.filter(d => d.type === 'remove');
|
|
19
|
+
assert.strictEqual(removes.length, 1);
|
|
20
|
+
assert.strictEqual(removes[0].line, 'b');
|
|
21
|
+
});
|
|
22
|
+
it('handles empty old text', () => {
|
|
23
|
+
const diff = computeDiff('', 'new content');
|
|
24
|
+
assert.ok(diff.some(d => d.type === 'add'));
|
|
25
|
+
});
|
|
26
|
+
it('handles empty new text', () => {
|
|
27
|
+
const diff = computeDiff('old content', '');
|
|
28
|
+
assert.ok(diff.some(d => d.type === 'remove'));
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('filterWithContext', () => {
|
|
32
|
+
it('shows context around changes', () => {
|
|
33
|
+
const diff = computeDiff('a\nb\nc\nd\ne\nf\ng', 'a\nb\nX\nd\ne\nf\ng');
|
|
34
|
+
const filtered = filterWithContext(diff, 1);
|
|
35
|
+
// Should show b (context), remove c, add X, d (context)
|
|
36
|
+
assert.ok(filtered.length < diff.length);
|
|
37
|
+
assert.ok(filtered.some(d => d.line === 'X' && d.type === 'add'));
|
|
38
|
+
});
|
|
39
|
+
it('adds separator between distant changes', () => {
|
|
40
|
+
const old = Array.from({ length: 20 }, (_, i) => `line${i}`).join('\n');
|
|
41
|
+
const lines = old.split('\n');
|
|
42
|
+
lines[2] = 'CHANGED2';
|
|
43
|
+
lines[18] = 'CHANGED18';
|
|
44
|
+
const diff = computeDiff(old, lines.join('\n'));
|
|
45
|
+
const filtered = filterWithContext(diff, 1);
|
|
46
|
+
assert.ok(filtered.some(d => d.type === 'separator'));
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=diff-algorithm.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-algorithm.test.js","sourceRoot":"","sources":["../../src/utils/diff-algorithm.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared formatting utilities.
|
|
3
|
+
*/
|
|
4
|
+
/** Format a token count for display (e.g., 1500 → "1.5K") */
|
|
5
|
+
export function formatTokenCount(n) {
|
|
6
|
+
if (n >= 1_000_000)
|
|
7
|
+
return `${(n / 1_000_000).toFixed(1)}M`;
|
|
8
|
+
if (n >= 1_000)
|
|
9
|
+
return `${(n / 1_000).toFixed(1)}K`;
|
|
10
|
+
return `${n}`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,IAAI,CAAC,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme data — framework-agnostic, no React dependency.
|
|
3
|
+
* Import this in the cell renderer instead of theme.ts.
|
|
4
|
+
*/
|
|
5
|
+
export type Theme = {
|
|
6
|
+
primary: string;
|
|
7
|
+
primaryShimmer: string;
|
|
8
|
+
user: string;
|
|
9
|
+
assistant: string;
|
|
10
|
+
tool: string;
|
|
11
|
+
error: string;
|
|
12
|
+
success: string;
|
|
13
|
+
warning: string;
|
|
14
|
+
border: string;
|
|
15
|
+
dim: string;
|
|
16
|
+
text: string;
|
|
17
|
+
diffAdded: string;
|
|
18
|
+
diffRemoved: string;
|
|
19
|
+
stall: string;
|
|
20
|
+
stallShimmer: string;
|
|
21
|
+
heading: string;
|
|
22
|
+
codeBlock: string;
|
|
23
|
+
codeFence: string;
|
|
24
|
+
bullet: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const darkTheme: Theme;
|
|
27
|
+
export declare const lightTheme: Theme;
|
|
28
|
+
export declare function getTheme(): Theme;
|
|
29
|
+
/** Set the active theme. Must be called before renderer modules initialize. */
|
|
30
|
+
export declare function setActiveTheme(name: 'dark' | 'light'): void;
|
|
31
|
+
//# sourceMappingURL=theme-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-data.d.ts","sourceRoot":"","sources":["../../src/utils/theme-data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAoBvB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAoBxB,CAAC;AAIF,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAE3D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme data — framework-agnostic, no React dependency.
|
|
3
|
+
* Import this in the cell renderer instead of theme.ts.
|
|
4
|
+
*/
|
|
5
|
+
export const darkTheme = {
|
|
6
|
+
primary: "magenta",
|
|
7
|
+
primaryShimmer: "magentaBright",
|
|
8
|
+
user: "cyan",
|
|
9
|
+
assistant: "magenta",
|
|
10
|
+
tool: "yellow",
|
|
11
|
+
error: "red",
|
|
12
|
+
success: "green",
|
|
13
|
+
warning: "yellow",
|
|
14
|
+
border: "gray",
|
|
15
|
+
dim: "gray",
|
|
16
|
+
text: "white",
|
|
17
|
+
diffAdded: "green",
|
|
18
|
+
diffRemoved: "red",
|
|
19
|
+
stall: "yellow",
|
|
20
|
+
stallShimmer: "redBright",
|
|
21
|
+
heading: "cyan",
|
|
22
|
+
codeBlock: "gray",
|
|
23
|
+
codeFence: "gray",
|
|
24
|
+
bullet: "cyan",
|
|
25
|
+
};
|
|
26
|
+
export const lightTheme = {
|
|
27
|
+
primary: "magentaBright",
|
|
28
|
+
primaryShimmer: "magenta",
|
|
29
|
+
user: "cyanBright",
|
|
30
|
+
assistant: "magentaBright",
|
|
31
|
+
tool: "yellowBright",
|
|
32
|
+
error: "redBright",
|
|
33
|
+
success: "greenBright",
|
|
34
|
+
warning: "yellowBright",
|
|
35
|
+
border: "blackBright",
|
|
36
|
+
dim: "blackBright",
|
|
37
|
+
text: "black",
|
|
38
|
+
diffAdded: "greenBright",
|
|
39
|
+
diffRemoved: "redBright",
|
|
40
|
+
stall: "yellowBright",
|
|
41
|
+
stallShimmer: "red",
|
|
42
|
+
heading: "cyanBright",
|
|
43
|
+
codeBlock: "blackBright",
|
|
44
|
+
codeFence: "blackBright",
|
|
45
|
+
bullet: "cyanBright",
|
|
46
|
+
};
|
|
47
|
+
let activeTheme = darkTheme;
|
|
48
|
+
export function getTheme() {
|
|
49
|
+
return activeTheme;
|
|
50
|
+
}
|
|
51
|
+
/** Set the active theme. Must be called before renderer modules initialize. */
|
|
52
|
+
export function setActiveTheme(name) {
|
|
53
|
+
activeTheme = name === 'light' ? lightTheme : darkTheme;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=theme-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-data.js","sourceRoot":"","sources":["../../src/utils/theme-data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,eAAe;IAC/B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,WAAW;IACzB,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,OAAO,EAAE,eAAe;IACxB,cAAc,EAAE,SAAS;IACzB,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,aAAa;IACxB,WAAW,EAAE,WAAW;IACxB,KAAK,EAAE,cAAc;IACrB,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,IAAI,WAAW,GAAU,SAAS,CAAC;AAEnC,MAAM,UAAU,QAAQ;IACtB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC"}
|
package/dist/utils/theme.d.ts
CHANGED
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Theme system with React context for Ink components.
|
|
3
|
+
* Re-exports theme data from theme-data.ts (no React dependency).
|
|
4
4
|
*/
|
|
5
5
|
import React from "react";
|
|
6
|
-
export type Theme
|
|
7
|
-
|
|
8
|
-
primaryShimmer: string;
|
|
9
|
-
user: string;
|
|
10
|
-
assistant: string;
|
|
11
|
-
tool: string;
|
|
12
|
-
error: string;
|
|
13
|
-
success: string;
|
|
14
|
-
warning: string;
|
|
15
|
-
border: string;
|
|
16
|
-
dim: string;
|
|
17
|
-
text: string;
|
|
18
|
-
diffAdded: string;
|
|
19
|
-
diffRemoved: string;
|
|
20
|
-
stall: string;
|
|
21
|
-
stallShimmer: string;
|
|
22
|
-
};
|
|
23
|
-
export declare const darkTheme: Theme;
|
|
24
|
-
export declare const lightTheme: Theme;
|
|
6
|
+
export { type Theme, darkTheme, lightTheme, getTheme, setActiveTheme } from "./theme-data.js";
|
|
7
|
+
import type { Theme } from "./theme-data.js";
|
|
25
8
|
export declare const ThemeProvider: React.Provider<Theme>;
|
|
26
9
|
export declare function useTheme(): Theme;
|
|
27
10
|
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,eAAO,MAAM,aAAa,uBAAwB,CAAC;AAEnD,wBAAgB,QAAQ,IAAI,KAAK,CAEhC"}
|
package/dist/utils/theme.js
CHANGED
|
@@ -1,42 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Theme system with React context for Ink components.
|
|
3
|
+
* Re-exports theme data from theme-data.ts (no React dependency).
|
|
4
4
|
*/
|
|
5
5
|
import React from "react";
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
primaryShimmer: "magentaBright",
|
|
9
|
-
user: "cyan",
|
|
10
|
-
assistant: "magenta",
|
|
11
|
-
tool: "yellow",
|
|
12
|
-
error: "red",
|
|
13
|
-
success: "green",
|
|
14
|
-
warning: "yellow",
|
|
15
|
-
border: "gray",
|
|
16
|
-
dim: "gray",
|
|
17
|
-
text: "white",
|
|
18
|
-
diffAdded: "green",
|
|
19
|
-
diffRemoved: "red",
|
|
20
|
-
stall: "yellow",
|
|
21
|
-
stallShimmer: "redBright",
|
|
22
|
-
};
|
|
23
|
-
export const lightTheme = {
|
|
24
|
-
primary: "magentaBright",
|
|
25
|
-
primaryShimmer: "magenta",
|
|
26
|
-
user: "cyanBright",
|
|
27
|
-
assistant: "magentaBright",
|
|
28
|
-
tool: "yellowBright",
|
|
29
|
-
error: "redBright",
|
|
30
|
-
success: "greenBright",
|
|
31
|
-
warning: "yellowBright",
|
|
32
|
-
border: "blackBright",
|
|
33
|
-
dim: "blackBright",
|
|
34
|
-
text: "black",
|
|
35
|
-
diffAdded: "greenBright",
|
|
36
|
-
diffRemoved: "redBright",
|
|
37
|
-
stall: "yellowBright",
|
|
38
|
-
stallShimmer: "red",
|
|
39
|
-
};
|
|
6
|
+
export { darkTheme, lightTheme, getTheme, setActiveTheme } from "./theme-data.js";
|
|
7
|
+
import { darkTheme } from "./theme-data.js";
|
|
40
8
|
const ThemeContext = React.createContext(darkTheme);
|
|
41
9
|
export const ThemeProvider = ThemeContext.Provider;
|
|
42
10
|
export function useTheme() {
|
package/dist/utils/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAQ,SAAS,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC;AAEnD,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared tool argument summary utilities.
|
|
3
|
+
* Used by both the cell renderer and Ink permission prompt.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extract a human-readable suggestion from tool name + args JSON.
|
|
7
|
+
* Returns null if no meaningful suggestion can be derived.
|
|
8
|
+
*/
|
|
9
|
+
export declare function summarizeToolArgs(toolName: string, argsJson: string): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Extract a readable summary of tool arguments for display.
|
|
12
|
+
* Simpler version for inline display (tool call rows).
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatToolArgs(toolName: string, args: Record<string, unknown>): string;
|
|
15
|
+
//# sourceMappingURL=tool-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summary.d.ts","sourceRoot":"","sources":["../../src/utils/tool-summary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BnF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKtF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared tool argument summary utilities.
|
|
3
|
+
* Used by both the cell renderer and Ink permission prompt.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extract a human-readable suggestion from tool name + args JSON.
|
|
7
|
+
* Returns null if no meaningful suggestion can be derived.
|
|
8
|
+
*/
|
|
9
|
+
export function summarizeToolArgs(toolName, argsJson) {
|
|
10
|
+
const lower = toolName.toLowerCase();
|
|
11
|
+
if (lower === 'bash' || lower === 'shell' || lower === 'execute') {
|
|
12
|
+
const cmdMatch = argsJson.match(/command[:\s]+["`]?(.+?)["`]?(?:\n|$)/i);
|
|
13
|
+
if (cmdMatch)
|
|
14
|
+
return `$ ${cmdMatch[1]}`;
|
|
15
|
+
try {
|
|
16
|
+
const args = JSON.parse(argsJson);
|
|
17
|
+
if (args.command)
|
|
18
|
+
return `$ ${args.command.slice(0, 60)}`;
|
|
19
|
+
}
|
|
20
|
+
catch { /* ignore */ }
|
|
21
|
+
}
|
|
22
|
+
if (lower.includes('read') || lower.includes('write') || lower.includes('edit') || lower.includes('glob') || lower.includes('grep')) {
|
|
23
|
+
try {
|
|
24
|
+
const args = JSON.parse(argsJson);
|
|
25
|
+
if (args.file_path) {
|
|
26
|
+
const action = lower.includes('read') ? 'reading' : lower.includes('write') ? 'writing' : lower.includes('edit') ? 'editing' : lower;
|
|
27
|
+
return `${action} ${args.file_path}`;
|
|
28
|
+
}
|
|
29
|
+
if (args.pattern)
|
|
30
|
+
return `pattern: ${args.pattern}`;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
const pathMatch = argsJson.match(/(?:path|file)[:\s]+["`]?([^\s"`]+)/i);
|
|
34
|
+
if (pathMatch) {
|
|
35
|
+
const action = lower.includes('read') ? 'reading' : lower.includes('write') ? 'writing' : lower.includes('edit') ? 'editing' : lower;
|
|
36
|
+
return `${action} ${pathMatch[1]}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Extract a readable summary of tool arguments for display.
|
|
44
|
+
* Simpler version for inline display (tool call rows).
|
|
45
|
+
*/
|
|
46
|
+
export function formatToolArgs(toolName, args) {
|
|
47
|
+
if (args.file_path)
|
|
48
|
+
return args.file_path;
|
|
49
|
+
if (args.command)
|
|
50
|
+
return `$ ${args.command.slice(0, 60)}`;
|
|
51
|
+
if (args.pattern)
|
|
52
|
+
return `pattern: ${args.pattern}`;
|
|
53
|
+
return JSON.stringify(args).slice(0, 80);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=tool-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summary.js","sourceRoot":"","sources":["../../src/utils/tool-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summary.test.d.ts","sourceRoot":"","sources":["../../src/utils/tool-summary.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { summarizeToolArgs, formatToolArgs } from './tool-summary.js';
|
|
4
|
+
describe('summarizeToolArgs', () => {
|
|
5
|
+
it('extracts command from Bash tool', () => {
|
|
6
|
+
const result = summarizeToolArgs('Bash', JSON.stringify({ command: 'ls -la' }));
|
|
7
|
+
assert.ok(result !== null);
|
|
8
|
+
assert.ok(result.includes('ls -la'));
|
|
9
|
+
assert.ok(result.startsWith('$'));
|
|
10
|
+
});
|
|
11
|
+
it('extracts file_path from Read tool', () => {
|
|
12
|
+
const result = summarizeToolArgs('Read', JSON.stringify({ file_path: '/src/index.ts' }));
|
|
13
|
+
assert.ok(result !== null);
|
|
14
|
+
assert.ok(result.includes('/src/index.ts'));
|
|
15
|
+
assert.ok(result.includes('reading'));
|
|
16
|
+
});
|
|
17
|
+
it('extracts file_path from Write tool', () => {
|
|
18
|
+
const result = summarizeToolArgs('Write', JSON.stringify({ file_path: '/out/file.txt' }));
|
|
19
|
+
assert.ok(result !== null);
|
|
20
|
+
assert.ok(result.includes('/out/file.txt'));
|
|
21
|
+
assert.ok(result.includes('writing'));
|
|
22
|
+
});
|
|
23
|
+
it('extracts file_path from Edit tool', () => {
|
|
24
|
+
const result = summarizeToolArgs('Edit', JSON.stringify({ file_path: '/src/app.ts' }));
|
|
25
|
+
assert.ok(result !== null);
|
|
26
|
+
assert.ok(result.includes('/src/app.ts'));
|
|
27
|
+
assert.ok(result.includes('editing'));
|
|
28
|
+
});
|
|
29
|
+
it('extracts pattern from Grep tool', () => {
|
|
30
|
+
const result = summarizeToolArgs('Grep', JSON.stringify({ pattern: 'TODO' }));
|
|
31
|
+
assert.ok(result !== null);
|
|
32
|
+
assert.ok(result.includes('pattern: TODO'));
|
|
33
|
+
});
|
|
34
|
+
it('returns null for unknown tool', () => {
|
|
35
|
+
const result = summarizeToolArgs('UnknownTool', JSON.stringify({ foo: 'bar' }));
|
|
36
|
+
assert.strictEqual(result, null);
|
|
37
|
+
});
|
|
38
|
+
it('returns null for malformed JSON', () => {
|
|
39
|
+
const result = summarizeToolArgs('Bash', 'not valid json {{');
|
|
40
|
+
assert.strictEqual(result, null);
|
|
41
|
+
});
|
|
42
|
+
it('returns null for malformed JSON on file tools', () => {
|
|
43
|
+
const result = summarizeToolArgs('Read', '{broken json');
|
|
44
|
+
// Falls back to regex; if no path/file match, returns null
|
|
45
|
+
assert.ok(result === null || typeof result === 'string');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('formatToolArgs', () => {
|
|
49
|
+
it('returns file_path when present', () => {
|
|
50
|
+
const result = formatToolArgs('Read', { file_path: '/src/index.ts' });
|
|
51
|
+
assert.strictEqual(result, '/src/index.ts');
|
|
52
|
+
});
|
|
53
|
+
it('returns command prefixed with $ when present', () => {
|
|
54
|
+
const result = formatToolArgs('Bash', { command: 'echo hello' });
|
|
55
|
+
assert.strictEqual(result, '$ echo hello');
|
|
56
|
+
});
|
|
57
|
+
it('returns pattern when present', () => {
|
|
58
|
+
const result = formatToolArgs('Grep', { pattern: 'TODO' });
|
|
59
|
+
assert.strictEqual(result, 'pattern: TODO');
|
|
60
|
+
});
|
|
61
|
+
it('falls back to JSON.stringify for unknown args', () => {
|
|
62
|
+
const args = { foo: 'bar' };
|
|
63
|
+
const result = formatToolArgs('UnknownTool', args);
|
|
64
|
+
assert.strictEqual(result, JSON.stringify(args));
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=tool-summary.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summary.test.js","sourceRoot":"","sources":["../../src/utils/tool-summary.test.ts"],"names":[],"mappings":"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"}
|