arc402-cli 1.8.0 → 1.8.2
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/dist/chat/harness.d.ts +47 -0
- package/dist/chat/harness.d.ts.map +1 -0
- package/dist/chat/harness.js +235 -0
- package/dist/chat/harness.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +30 -208
- package/dist/commands/chat.js.map +1 -1
- package/dist/renderer/index.d.ts +1 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +1 -0
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/ink.d.ts +0 -2
- package/dist/renderer/ink.d.ts.map +1 -1
- package/dist/renderer/ink.js +15 -43
- package/dist/renderer/ink.js.map +1 -1
- package/dist/renderer/reconciler.d.ts.map +1 -1
- package/dist/renderer/reconciler.js +12 -1
- package/dist/renderer/reconciler.js.map +1 -1
- package/dist/renderer/render-frame.d.ts.map +1 -1
- package/dist/renderer/render-frame.js +12 -4
- package/dist/renderer/render-frame.js.map +1 -1
- package/dist/renderer/runtime.d.ts +23 -0
- package/dist/renderer/runtime.d.ts.map +1 -0
- package/dist/renderer/runtime.js +148 -0
- package/dist/renderer/runtime.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +43 -14
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Footer.js +1 -1
- package/dist/tui/Footer.js.map +1 -1
- package/dist/tui/InputLine.d.ts +1 -1
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +140 -132
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/components/Button.d.ts.map +1 -1
- package/dist/tui/components/Button.js +3 -4
- package/dist/tui/components/Button.js.map +1 -1
- package/dist/tui/components/ChatHarnessSelector.d.ts +11 -0
- package/dist/tui/components/ChatHarnessSelector.d.ts.map +1 -0
- package/dist/tui/components/ChatHarnessSelector.js +23 -0
- package/dist/tui/components/ChatHarnessSelector.js.map +1 -0
- package/dist/tui/components/CustomTextInput.d.ts +1 -1
- package/dist/tui/components/CustomTextInput.d.ts.map +1 -1
- package/dist/tui/components/CustomTextInput.js +15 -31
- package/dist/tui/components/CustomTextInput.js.map +1 -1
- package/dist/tui/components/InteractiveTable.d.ts.map +1 -1
- package/dist/tui/components/InteractiveTable.js +4 -5
- package/dist/tui/components/InteractiveTable.js.map +1 -1
- package/dist/tui/components/commerce/AgentPicker.d.ts.map +1 -1
- package/dist/tui/components/commerce/AgentPicker.js +5 -6
- package/dist/tui/components/commerce/AgentPicker.js.map +1 -1
- package/dist/tui/useChat.d.ts +11 -5
- package/dist/tui/useChat.d.ts.map +1 -1
- package/dist/tui/useChat.js +99 -97
- package/dist/tui/useChat.js.map +1 -1
- package/dist/tui/useScroll.d.ts.map +1 -1
- package/dist/tui/useScroll.js +0 -15
- package/dist/tui/useScroll.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatHarnessSelector.js","sourceRoot":"","sources":["../../../src/tui/components/ChatHarnessSelector.tsx"],"names":[],"mappings":";;AAYA,kDAwBC;;AAnCD,sDAA8D;AAW9D,SAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAA4B;IACnH,IAAA,mBAAQ,EAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aACpC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;YAAE,SAAS,EAAE,CAAC;aACvC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;YAAE,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,wBAAC,cAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,uBAAC,eAAI,IAAC,KAAK,EAAC,MAAM,2CAA6B,EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC7B,MAAM,QAAQ,GAAG,KAAK,KAAK,aAAa,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;gBAChE,OAAO,CACL,wBAAC,eAAI,IAAsB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,aAC5E,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC1B,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAFhD,MAAM,CAAC,OAAO,CAGlB,CACR,CAAC;YACJ,CAAC,CAAC,EACF,uBAAC,eAAI,IAAC,QAAQ,uEAA8C,IACxD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -8,7 +8,7 @@ interface CustomTextInputProps {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Minimal text input that does NOT intercept Tab, Up, Down, Escape, or Ctrl+C,
|
|
11
|
-
* allowing parent
|
|
11
|
+
* allowing parent renderer input handlers to receive those keys.
|
|
12
12
|
*/
|
|
13
13
|
export declare function CustomTextInput({ value, onChange, onSubmit, focus, suppressEnter, }: CustomTextInputProps): import("react/jsx-runtime").JSX.Element;
|
|
14
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTextInput.d.ts","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CustomTextInput.d.ts","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":"AAGA,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAY,EACZ,aAAqB,GACtB,EAAE,oBAAoB,2CA+FtB"}
|
|
@@ -4,10 +4,9 @@ exports.CustomTextInput = CustomTextInput;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const index_js_1 = require("../../renderer/index.js");
|
|
7
|
-
const ink_1 = require("ink");
|
|
8
7
|
/**
|
|
9
8
|
* Minimal text input that does NOT intercept Tab, Up, Down, Escape, or Ctrl+C,
|
|
10
|
-
* allowing parent
|
|
9
|
+
* allowing parent renderer input handlers to receive those keys.
|
|
11
10
|
*/
|
|
12
11
|
function CustomTextInput({ value, onChange, onSubmit, focus = true, suppressEnter = false, }) {
|
|
13
12
|
const [cursorPos, setCursorPos] = (0, react_1.useState)(value.length);
|
|
@@ -25,22 +24,17 @@ function CustomTextInput({ value, onChange, onSubmit, focus = true, suppressEnte
|
|
|
25
24
|
}, 530);
|
|
26
25
|
return () => clearInterval(timer);
|
|
27
26
|
}, [focus]);
|
|
28
|
-
(0,
|
|
29
|
-
|
|
30
|
-
// Tab, Up, Down, Escape, Ctrl+C
|
|
31
|
-
if (key.tab || key.upArrow || key.downArrow || key.escape)
|
|
27
|
+
(0, index_js_1.useInput)((event) => {
|
|
28
|
+
if (event.key === "tab" || event.key === "up" || event.key === "down" || event.key === "escape" || event.key === "ctrl-c") {
|
|
32
29
|
return;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// Enter/Return — submit (unless suppressed for dropdown selection)
|
|
36
|
-
if (key.return) {
|
|
30
|
+
}
|
|
31
|
+
if (event.key === "enter") {
|
|
37
32
|
if (!suppressEnter) {
|
|
38
33
|
onSubmit?.(value);
|
|
39
34
|
}
|
|
40
35
|
return;
|
|
41
36
|
}
|
|
42
|
-
|
|
43
|
-
if (key.backspace || key.delete) {
|
|
37
|
+
if (event.key === "backspace" || event.key === "delete") {
|
|
44
38
|
if (cursorPos > 0) {
|
|
45
39
|
const next = value.slice(0, cursorPos - 1) + value.slice(cursorPos);
|
|
46
40
|
setCursorPos(cursorPos - 1);
|
|
@@ -48,44 +42,34 @@ function CustomTextInput({ value, onChange, onSubmit, focus = true, suppressEnte
|
|
|
48
42
|
}
|
|
49
43
|
return;
|
|
50
44
|
}
|
|
51
|
-
|
|
52
|
-
if (key.leftArrow) {
|
|
45
|
+
if (event.key === "left") {
|
|
53
46
|
setCursorPos((p) => Math.max(0, p - 1));
|
|
54
47
|
return;
|
|
55
48
|
}
|
|
56
|
-
|
|
57
|
-
if (key.rightArrow) {
|
|
49
|
+
if (event.key === "right") {
|
|
58
50
|
setCursorPos((p) => Math.min(value.length, p + 1));
|
|
59
51
|
return;
|
|
60
52
|
}
|
|
61
|
-
|
|
62
|
-
if (input === "\x01") {
|
|
53
|
+
if (event.key === "ctrl-a" || event.key === "home") {
|
|
63
54
|
setCursorPos(0);
|
|
64
55
|
return;
|
|
65
56
|
}
|
|
66
|
-
|
|
67
|
-
if (input === "\x05") {
|
|
57
|
+
if (event.key === "ctrl-e" || event.key === "end") {
|
|
68
58
|
setCursorPos(value.length);
|
|
69
59
|
return;
|
|
70
60
|
}
|
|
71
|
-
|
|
72
|
-
if (input === "\x15") {
|
|
61
|
+
if (event.key === "ctrl-u") {
|
|
73
62
|
setCursorPos(0);
|
|
74
63
|
onChange("");
|
|
75
64
|
return;
|
|
76
65
|
}
|
|
77
|
-
|
|
78
|
-
if (input === "\x0B") {
|
|
66
|
+
if (event.key === "ctrl-k") {
|
|
79
67
|
onChange(value.slice(0, cursorPos));
|
|
80
68
|
return;
|
|
81
69
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// Regular character input (including paste)
|
|
86
|
-
if (input.length > 0) {
|
|
87
|
-
const next = value.slice(0, cursorPos) + input + value.slice(cursorPos);
|
|
88
|
-
setCursorPos(cursorPos + input.length);
|
|
70
|
+
if (event.key === "char" && event.char) {
|
|
71
|
+
const next = value.slice(0, cursorPos) + event.char + value.slice(cursorPos);
|
|
72
|
+
setCursorPos(cursorPos + event.char.length);
|
|
89
73
|
onChange(next);
|
|
90
74
|
}
|
|
91
75
|
}, { isActive: focus });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTextInput.js","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"CustomTextInput.js","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveTable.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InteractiveTable.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,EAAE,aAAa,GAC7B,EAAE,qBAAqB,2CAiFvB"}
|
|
@@ -4,19 +4,18 @@ exports.InteractiveTable = InteractiveTable;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const index_js_1 = require("../../renderer/index.js");
|
|
7
|
-
const ink_1 = require("ink");
|
|
8
7
|
const MAX_VISIBLE_ROWS = 15;
|
|
9
8
|
function InteractiveTable({ columns, rows, onSelect, selectedIndex: controlledIdx, }) {
|
|
10
9
|
const [internalIdx, setInternalIdx] = (0, react_1.useState)(0);
|
|
11
10
|
const selectedIndex = controlledIdx ?? internalIdx;
|
|
12
|
-
(0,
|
|
13
|
-
if (key
|
|
11
|
+
(0, index_js_1.useInput)((event) => {
|
|
12
|
+
if (event.key === "up") {
|
|
14
13
|
setInternalIdx((i) => Math.max(0, i - 1));
|
|
15
14
|
}
|
|
16
|
-
if (key
|
|
15
|
+
if (event.key === "down") {
|
|
17
16
|
setInternalIdx((i) => Math.min(rows.length - 1, i + 1));
|
|
18
17
|
}
|
|
19
|
-
if (key
|
|
18
|
+
if (event.key === "enter" && onSelect && rows[selectedIndex]) {
|
|
20
19
|
onSelect(rows[selectedIndex], selectedIndex);
|
|
21
20
|
}
|
|
22
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveTable.js","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"InteractiveTable.js","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPicker.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentPicker.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAkCjE"}
|
|
@@ -4,20 +4,19 @@ exports.AgentPicker = AgentPicker;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const index_js_1 = require("../../../renderer/index.js");
|
|
7
|
-
const ink_1 = require("ink");
|
|
8
7
|
function AgentPicker({ agents, onSelect }) {
|
|
9
8
|
const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
|
|
10
|
-
(0,
|
|
11
|
-
if (key
|
|
9
|
+
(0, index_js_1.useInput)((event) => {
|
|
10
|
+
if (event.key === "up") {
|
|
12
11
|
setSelectedIndex((i) => Math.max(0, i - 1));
|
|
13
12
|
}
|
|
14
|
-
else if (key
|
|
13
|
+
else if (event.key === "down") {
|
|
15
14
|
setSelectedIndex((i) => Math.min(agents.length - 1, i + 1));
|
|
16
15
|
}
|
|
17
|
-
else if (key
|
|
16
|
+
else if (event.key === "enter") {
|
|
18
17
|
onSelect(agents[selectedIndex] ?? null);
|
|
19
18
|
}
|
|
20
|
-
else if (key
|
|
19
|
+
else if (event.key === "escape" || (event.key === "char" && event.char === "q")) {
|
|
21
20
|
onSelect(null);
|
|
22
21
|
}
|
|
23
22
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPicker.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"AgentPicker.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":";;AASA,kCAkCC;;AA3CD,iCAAwC;AACxC,yDAA4D;AAQ5D,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAoB;IAChE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEtD,IAAA,mBAAQ,EAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACvB,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAChC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,wBAAC,eAAI,eACF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpC,MAAM,UAAU,GAAG,CAAC,KAAK,aAAa,CAAC;gBACvC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7G,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;gBACtC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;gBACvJ,OAAO,CACL,wBAAC,eAAI,IAAoB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,aAC9E,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,KADxC,KAAK,CAAC,MAAM,CAEhB,CACR,CAAC;YACJ,CAAC,CAAC,EACD,IAAI,EACL,uBAAC,eAAI,IAAC,QAAQ,8EAA2C,IACpD,CACR,CAAC;AACJ,CAAC"}
|
package/dist/tui/useChat.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
import { type HarnessChoice } from "../chat/harness.js";
|
|
1
2
|
interface UseChatResult {
|
|
2
|
-
send: (message: string, onLine: (line: string) => void) => Promise<void>;
|
|
3
3
|
isSending: boolean;
|
|
4
|
+
isChatMode: boolean;
|
|
5
|
+
activeHarnessLabel?: string;
|
|
6
|
+
harnessChoices: HarnessChoice[];
|
|
7
|
+
selectedHarnessIndex: number;
|
|
8
|
+
selectorVisible: boolean;
|
|
9
|
+
beginChat: (onLine: (line: string) => void, requestedHarness?: string) => void;
|
|
10
|
+
cancelSelector: () => void;
|
|
11
|
+
moveSelection: (delta: number) => void;
|
|
12
|
+
confirmSelection: (onLine: (line: string) => void) => void;
|
|
13
|
+
send: (message: string, onLine: (line: string) => void, harnessOverride?: string) => Promise<void>;
|
|
4
14
|
}
|
|
5
|
-
/**
|
|
6
|
-
* Sends messages to the OpenClaw gateway and streams responses
|
|
7
|
-
* line-by-line into the viewport buffer via onLine callback.
|
|
8
|
-
*/
|
|
9
15
|
export declare function useChat(): UseChatResult;
|
|
10
16
|
export {};
|
|
11
17
|
//# sourceMappingURL=useChat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/tui/useChat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/tui/useChat.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,aAAa;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IAC3D,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpG;AAED,wBAAgB,OAAO,IAAI,aAAa,CAoHvC"}
|
package/dist/tui/useChat.js
CHANGED
|
@@ -6,114 +6,116 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.useChat = useChat;
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const os_1 = __importDefault(require("os"));
|
|
12
|
-
const c = { failure: "✗" };
|
|
13
|
-
function resolveGatewayEndpoint() {
|
|
14
|
-
try {
|
|
15
|
-
const configPath = path_1.default.join(os_1.default.homedir(), ".openclaw", "openclaw.json");
|
|
16
|
-
const raw = fs_1.default.readFileSync(configPath, "utf-8");
|
|
17
|
-
const config = JSON.parse(raw);
|
|
18
|
-
const gateway = config["gateway"];
|
|
19
|
-
const port = gateway?.["port"] ?? 18789;
|
|
20
|
-
const token = gateway?.["auth"]?.["token"];
|
|
21
|
-
return {
|
|
22
|
-
url: `http://127.0.0.1:${port}/v1/chat/completions`,
|
|
23
|
-
token,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return { url: "http://127.0.0.1:18789/v1/chat/completions" };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Sends messages to the OpenClaw gateway and streams responses
|
|
32
|
-
* line-by-line into the viewport buffer via onLine callback.
|
|
33
|
-
*/
|
|
9
|
+
const harness_js_1 = require("../chat/harness.js");
|
|
34
10
|
function useChat() {
|
|
11
|
+
const initial = (0, react_1.useMemo)(() => (0, harness_js_1.resolveInitialChatRuntime)(), []);
|
|
12
|
+
const [runtime, setRuntime] = (0, react_1.useState)(initial.config);
|
|
35
13
|
const [isSending, setIsSending] = (0, react_1.useState)(false);
|
|
36
|
-
const
|
|
37
|
-
|
|
14
|
+
const [isChatMode, setIsChatMode] = (0, react_1.useState)(false);
|
|
15
|
+
const [selectorVisible, setSelectorVisible] = (0, react_1.useState)(initial.missingHarness || !initial.config.harness);
|
|
16
|
+
const [selectionIndex, setSelectionIndex] = (0, react_1.useState)(0);
|
|
17
|
+
const [pendingHarness, setPendingHarness] = (0, react_1.useState)(undefined);
|
|
18
|
+
const harnessChoices = (0, react_1.useMemo)(() => (0, harness_js_1.getHarnessChoices)(), []);
|
|
19
|
+
const activateHarness = (0, react_1.useCallback)((harness, onLine) => {
|
|
20
|
+
const nextRuntime = { ...runtime, harness };
|
|
21
|
+
setRuntime(nextRuntime);
|
|
22
|
+
(0, harness_js_1.persistChatHarnessSelection)(nextRuntime);
|
|
23
|
+
setSelectorVisible(false);
|
|
24
|
+
setPendingHarness(undefined);
|
|
25
|
+
setIsChatMode(true);
|
|
26
|
+
onLine(chalk_1.default.cyanBright(` ◈ Commerce Shell ready · Harness: ${(0, harness_js_1.getHarnessLabel)(harness)}`));
|
|
27
|
+
}, [runtime]);
|
|
28
|
+
const beginChat = (0, react_1.useCallback)((onLine, requestedHarness) => {
|
|
29
|
+
const explicit = (0, harness_js_1.normalizeHarness)(requestedHarness);
|
|
30
|
+
if (explicit) {
|
|
31
|
+
activateHarness(explicit, onLine);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
setIsChatMode(true);
|
|
35
|
+
if (runtime.harness) {
|
|
36
|
+
onLine(chalk_1.default.cyanBright(` ◈ Commerce Shell ready · Harness: ${(0, harness_js_1.getHarnessLabel)(runtime.harness)}`));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setSelectorVisible(true);
|
|
40
|
+
onLine(chalk_1.default.yellow(" ⚠ No chat harness selected yet. Choose one below."));
|
|
41
|
+
}, [activateHarness, runtime.harness]);
|
|
42
|
+
const cancelSelector = (0, react_1.useCallback)(() => {
|
|
43
|
+
setSelectorVisible(false);
|
|
44
|
+
setPendingHarness(undefined);
|
|
45
|
+
}, []);
|
|
46
|
+
const moveSelection = (0, react_1.useCallback)((delta) => {
|
|
47
|
+
setSelectionIndex((current) => {
|
|
48
|
+
const next = current + delta;
|
|
49
|
+
return Math.max(0, Math.min(harnessChoices.length - 1, next));
|
|
50
|
+
});
|
|
51
|
+
}, [harnessChoices.length]);
|
|
52
|
+
const confirmSelection = (0, react_1.useCallback)((onLine) => {
|
|
53
|
+
const chosen = pendingHarness ?? harnessChoices[selectionIndex]?.harness;
|
|
54
|
+
if (!chosen)
|
|
55
|
+
return;
|
|
56
|
+
activateHarness(chosen, onLine);
|
|
57
|
+
}, [activateHarness, harnessChoices, pendingHarness, selectionIndex]);
|
|
58
|
+
const send = (0, react_1.useCallback)(async (message, onLine, harnessOverride) => {
|
|
38
59
|
const trimmed = message.trim().slice(0, 10000);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
60
|
+
if (!trimmed)
|
|
61
|
+
return;
|
|
62
|
+
const explicit = (0, harness_js_1.normalizeHarness)(harnessOverride);
|
|
63
|
+
if (explicit) {
|
|
64
|
+
setPendingHarness(undefined);
|
|
65
|
+
const nextRuntime = { ...runtime, harness: explicit };
|
|
66
|
+
setRuntime(nextRuntime);
|
|
67
|
+
(0, harness_js_1.persistChatHarnessSelection)(nextRuntime);
|
|
68
|
+
}
|
|
69
|
+
const harness = explicit ?? runtime.harness;
|
|
70
|
+
if (!harness) {
|
|
71
|
+
setIsChatMode(true);
|
|
72
|
+
setSelectorVisible(true);
|
|
73
|
+
onLine(chalk_1.default.yellow(" ⚠ Choose a harness before sending chat."));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
setIsSending(true);
|
|
77
|
+
setIsChatMode(true);
|
|
78
|
+
onLine(chalk_1.default.dim(` ◈ ${(0, harness_js_1.getHarnessLabel)(harness)} thinking...`));
|
|
43
79
|
try {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
headers,
|
|
50
|
-
body: JSON.stringify({
|
|
51
|
-
model: "claude-sonnet-4-6",
|
|
52
|
-
stream: true,
|
|
53
|
-
messages: [{ role: "user", content: trimmed }],
|
|
54
|
-
}),
|
|
55
|
-
signal: AbortSignal.timeout(30000),
|
|
80
|
+
const output = await (0, harness_js_1.dispatchHarnessChat)({
|
|
81
|
+
harness,
|
|
82
|
+
message: trimmed,
|
|
83
|
+
model: runtime.model,
|
|
84
|
+
daemonUrl: runtime.daemonUrl,
|
|
56
85
|
});
|
|
86
|
+
for (const line of output.split(/\r?\n/)) {
|
|
87
|
+
if (line.trim())
|
|
88
|
+
onLine(chalk_1.default.white(` ◈ ${line}`));
|
|
89
|
+
}
|
|
90
|
+
const nextRuntime = explicit ? { ...runtime, harness: explicit } : runtime;
|
|
91
|
+
if (explicit) {
|
|
92
|
+
(0, harness_js_1.persistChatHarnessSelection)(nextRuntime);
|
|
93
|
+
}
|
|
94
|
+
setRuntime(nextRuntime);
|
|
57
95
|
}
|
|
58
96
|
catch (err) {
|
|
59
97
|
const msg = err instanceof Error ? err.message : String(err);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
msg.includes("UND_ERR_SOCKET");
|
|
64
|
-
if (isDown) {
|
|
65
|
-
onLine(" " +
|
|
66
|
-
chalk_1.default.yellow("⚠") +
|
|
67
|
-
" " +
|
|
68
|
-
chalk_1.default.dim("OpenClaw gateway not running. Start with: ") +
|
|
69
|
-
chalk_1.default.white("openclaw gateway start"));
|
|
98
|
+
onLine(chalk_1.default.red(` ✗ ${msg}`));
|
|
99
|
+
if (harness === "openclaw") {
|
|
100
|
+
onLine(chalk_1.default.dim(" Hint: make sure OpenClaw gateway is running (openclaw gateway start)."));
|
|
70
101
|
}
|
|
71
|
-
else {
|
|
72
|
-
onLine(` ${c.failure} ${chalk_1.default.red(msg)}`);
|
|
73
|
-
}
|
|
74
|
-
setIsSending(false);
|
|
75
|
-
return;
|
|
76
102
|
}
|
|
77
|
-
|
|
78
|
-
onLine(chalk_1.default.dim(" ◈ ") + chalk_1.default.white("(empty response)"));
|
|
103
|
+
finally {
|
|
79
104
|
setIsSending(false);
|
|
80
|
-
return;
|
|
81
105
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (line.trim()) {
|
|
97
|
-
onLine(chalk_1.default.dim(" ◈ ") + chalk_1.default.white(line));
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
const reader = res.body.getReader();
|
|
101
|
-
const decoder = new TextDecoder();
|
|
102
|
-
let buffer = "";
|
|
103
|
-
while (true) {
|
|
104
|
-
const { done, value } = await reader.read();
|
|
105
|
-
if (done)
|
|
106
|
-
break;
|
|
107
|
-
buffer += decoder.decode(value, { stream: true });
|
|
108
|
-
const lines = buffer.split("\n");
|
|
109
|
-
buffer = lines.pop() ?? "";
|
|
110
|
-
for (const line of lines)
|
|
111
|
-
flushLine(line);
|
|
112
|
-
}
|
|
113
|
-
if (buffer.trim())
|
|
114
|
-
flushLine(buffer);
|
|
115
|
-
setIsSending(false);
|
|
116
|
-
}, []);
|
|
117
|
-
return { send, isSending };
|
|
106
|
+
}, [runtime]);
|
|
107
|
+
return {
|
|
108
|
+
isSending,
|
|
109
|
+
isChatMode,
|
|
110
|
+
activeHarnessLabel: runtime.harness ? (0, harness_js_1.getHarnessLabel)(runtime.harness) : undefined,
|
|
111
|
+
harnessChoices,
|
|
112
|
+
selectedHarnessIndex: selectionIndex,
|
|
113
|
+
selectorVisible,
|
|
114
|
+
beginChat,
|
|
115
|
+
cancelSelector,
|
|
116
|
+
moveSelection,
|
|
117
|
+
confirmSelection,
|
|
118
|
+
send,
|
|
119
|
+
};
|
|
118
120
|
}
|
|
119
121
|
//# sourceMappingURL=useChat.js.map
|
package/dist/tui/useChat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../src/tui/useChat.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../src/tui/useChat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScroll.d.ts","sourceRoot":"","sources":["../../src/tui/useScroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScroll.d.ts","sourceRoot":"","sources":["../../src/tui/useScroll.ts"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe,CAsCjE"}
|
package/dist/tui/useScroll.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useScroll = useScroll;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
-
const index_js_1 = require("../renderer/index.js");
|
|
6
5
|
/**
|
|
7
6
|
* Manages scroll state for the Viewport.
|
|
8
7
|
* scrollOffset=0 means auto-scroll (pinned to bottom).
|
|
@@ -25,20 +24,6 @@ function useScroll(viewportHeight) {
|
|
|
25
24
|
const snapToBottom = (0, react_1.useCallback)(() => {
|
|
26
25
|
setScrollOffsetState(0);
|
|
27
26
|
}, []);
|
|
28
|
-
// Wire page up/down to InputSystem
|
|
29
|
-
(0, react_1.useEffect)(() => {
|
|
30
|
-
const inputSystem = new index_js_1.InputSystem();
|
|
31
|
-
inputSystem.on('key', (event) => {
|
|
32
|
-
if (event.key === 'pgup') {
|
|
33
|
-
scrollUp(viewportHeight);
|
|
34
|
-
}
|
|
35
|
-
else if (event.key === 'pgdn') {
|
|
36
|
-
scrollDown(viewportHeight);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
inputSystem.start();
|
|
40
|
-
return () => inputSystem.stop();
|
|
41
|
-
}, [viewportHeight, scrollUp, scrollDown]);
|
|
42
27
|
return {
|
|
43
28
|
scrollOffset,
|
|
44
29
|
setScrollOffset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScroll.js","sourceRoot":"","sources":["../../src/tui/useScroll.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useScroll.js","sourceRoot":"","sources":["../../src/tui/useScroll.ts"],"names":[],"mappings":";;AAiBA,8BAsCC;AAvDD,iCAA8C;AAY9C;;;;GAIG;AACH,SAAgB,SAAS,CAAC,cAAsB;IAC9C,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC;IAExC,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,CAAC,MAAc,EAAE,EAAE;QACrD,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAC1B,CAAC,KAAc,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,KAAK,IAAI,cAAc,CAAC;QACrC,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,CAAC,KAAc,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,KAAK,IAAI,cAAc,CAAC;QACrC,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACpC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,YAAY;QACZ,eAAe;QACf,cAAc;QACd,YAAY;QACZ,QAAQ;QACR,UAAU;QACV,YAAY;KACb,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arc402-cli",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "ARC-402 CLI for discovery, negotiation payloads, hire/remediation/dispute workflows, and network reads",
|
|
5
5
|
"bin": {
|
|
6
6
|
"arc402": "./dist/index.js"
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"prepublishOnly": "npm run prepack"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@arc402/daemon": "^
|
|
23
|
-
"@arc402/sdk": "^0.6.
|
|
22
|
+
"@arc402/daemon": "^0.9.0",
|
|
23
|
+
"@arc402/sdk": "^0.6.6",
|
|
24
24
|
"@coinbase/wallet-sdk": "^4.3.7",
|
|
25
25
|
"@types/better-sqlite3": "^7.6.13",
|
|
26
26
|
"@types/qrcode": "^1.5.6",
|