@metaphi-ai/hum 0.1.33 → 0.1.35
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/cli.mjs +99 -16
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -75838,7 +75838,7 @@ function runningVersion(candidates = engineCandidates(), opts = {}) {
|
|
|
75838
75838
|
}
|
|
75839
75839
|
return null;
|
|
75840
75840
|
}
|
|
75841
|
-
function startFailure(failures, { npm = /^(node|bun)(\.exe)?$/i.test(String(process.execPath).split(/[\\/]/).pop()), platform: platform2 = process.platform, version = true ? "0.1.
|
|
75841
|
+
function startFailure(failures, { npm = /^(node|bun)(\.exe)?$/i.test(String(process.execPath).split(/[\\/]/).pop()), platform: platform2 = process.platform, version = true ? "0.1.35" : "" } = {}) {
|
|
75842
75842
|
const refused = failures.find((f) => f.error && f.error.code !== "ENOENT");
|
|
75843
75843
|
const fix = npm ? npmFix(version) : updateCommand({ kind: "native" }, platform2);
|
|
75844
75844
|
if (!refused) {
|
|
@@ -84541,7 +84541,7 @@ var input_default = MultilineInput;
|
|
|
84541
84541
|
|
|
84542
84542
|
// src/app.jsx
|
|
84543
84543
|
var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
|
|
84544
|
-
var MINE = true ? "0.1.
|
|
84544
|
+
var MINE = true ? "0.1.35" : "";
|
|
84545
84545
|
var fmtDur = (s) => s < 60 ? `${Math.max(1, Math.round(s))}s` : `${Math.floor(s / 60)}m ${Math.round(s % 60)}s`;
|
|
84546
84546
|
var plural = (n, w) => `${n} ${w}${n === 1 ? "" : "s"}`;
|
|
84547
84547
|
var firstResp = (e) => e.first_response_s ? ` \xB7 first response ${e.first_response_s.toFixed(1)}s` : "";
|
|
@@ -84633,8 +84633,8 @@ var REWIND_CHOICES = [
|
|
|
84633
84633
|
{ key: "chat", label: "restore the conversation", desc: "hum carries on from what you said, on a new branch; nothing is deleted" },
|
|
84634
84634
|
{ key: "both", label: "both", desc: "" }
|
|
84635
84635
|
];
|
|
84636
|
-
var OUTPUT_MAX_LINES = 200;
|
|
84637
84636
|
var ERR_TAIL_LINES = 5;
|
|
84637
|
+
var THOUGHT_TAIL_LINES = 3;
|
|
84638
84638
|
var diagLine = (d) => `${d.file ? `${d.file}${d.line != null ? `:${d.line}` : ""}: ` : ""}${d.severity || "error"}: ${d.message || ""}`;
|
|
84639
84639
|
var tallyLine = (tally) => Object.entries(tally).map(([name, t]) => {
|
|
84640
84640
|
const short = name.includes("__") ? name.split("__")[1] : name;
|
|
@@ -84668,6 +84668,9 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
84668
84668
|
const [confirm, setConfirm] = (0, import_react24.useState)(null);
|
|
84669
84669
|
const [gate, setGate] = (0, import_react24.useState)("off");
|
|
84670
84670
|
const [paused, setPaused] = (0, import_react24.useState)(false);
|
|
84671
|
+
const [reflections, setReflections] = (0, import_react24.useState)([]);
|
|
84672
|
+
const [why, setWhy] = (0, import_react24.useState)(null);
|
|
84673
|
+
const reflection = phase === "idle" && !proposal && !question ? reflections[0] || null : null;
|
|
84671
84674
|
const attachRef = (0, import_react24.useRef)([]);
|
|
84672
84675
|
const inputRef = (0, import_react24.useRef)(null);
|
|
84673
84676
|
const nextId = (0, import_react24.useRef)(0);
|
|
@@ -84987,6 +84990,9 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
84987
84990
|
case "proposal":
|
|
84988
84991
|
foldThinking();
|
|
84989
84992
|
flushDraft();
|
|
84993
|
+
(ev.calls || []).forEach((c) => {
|
|
84994
|
+
if (c.diff) append({ kind: "output", name: `${c.desc} \xB7 the whole change`, lines: c.diff.split("\n"), diff: true });
|
|
84995
|
+
});
|
|
84990
84996
|
setProposal({ content: ev.content || "", calls: ev.calls || [], remember: ev.remember || [], remember_text: ev.remember_text || "" });
|
|
84991
84997
|
setStatus("waiting for your decision");
|
|
84992
84998
|
break;
|
|
@@ -85013,6 +85019,16 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85013
85019
|
setQCursor(0);
|
|
85014
85020
|
append({ kind: "info", text: `answered: ${ev.answer}` });
|
|
85015
85021
|
break;
|
|
85022
|
+
case "mcp":
|
|
85023
|
+
append({ kind: "mcp", servers: ev.servers || [] });
|
|
85024
|
+
break;
|
|
85025
|
+
case "reflection":
|
|
85026
|
+
setReflections((rs) => rs.some((r) => r.id === ev.id) ? rs : [...rs, { id: ev.id, category: ev.category || "other", title: ev.title || "", details: ev.details || "", area: ev.area || "" }]);
|
|
85027
|
+
break;
|
|
85028
|
+
case "reflection_closed":
|
|
85029
|
+
setReflections((rs) => rs.filter((r) => r.id !== ev.id));
|
|
85030
|
+
if (ev.vote !== "dismiss") append({ kind: "info", text: ev.vote === "up" ? "marked true" : "marked false" });
|
|
85031
|
+
break;
|
|
85016
85032
|
case "paused":
|
|
85017
85033
|
foldThinking();
|
|
85018
85034
|
flushDraft();
|
|
@@ -85181,8 +85197,7 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85181
85197
|
if (key.ctrl && input === "o") {
|
|
85182
85198
|
const last = lastOutRef.current;
|
|
85183
85199
|
if (last && last.content) {
|
|
85184
|
-
|
|
85185
|
-
append({ kind: "output", name: last.name, lines: ls.slice(0, OUTPUT_MAX_LINES), more: Math.max(0, ls.length - OUTPUT_MAX_LINES) });
|
|
85200
|
+
append({ kind: "output", name: last.name, lines: last.content.split("\n") });
|
|
85186
85201
|
}
|
|
85187
85202
|
return;
|
|
85188
85203
|
}
|
|
@@ -85227,6 +85242,23 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85227
85242
|
else if (/^[1-3]$/.test(input)) pick(REWIND_CHOICES[Number(input) - 1].key);
|
|
85228
85243
|
return;
|
|
85229
85244
|
}
|
|
85245
|
+
if (reflection && !picker && !value.trim()) {
|
|
85246
|
+
if (why === reflection.id) {
|
|
85247
|
+
if (key.escape) {
|
|
85248
|
+
closeReflection(reflection.id, "down");
|
|
85249
|
+
}
|
|
85250
|
+
return;
|
|
85251
|
+
}
|
|
85252
|
+
const vote = input === "1" ? "up" : input === "2" ? "down" : key.return || key.escape ? "dismiss" : null;
|
|
85253
|
+
if (vote === "down") {
|
|
85254
|
+
setWhy(reflection.id);
|
|
85255
|
+
return;
|
|
85256
|
+
}
|
|
85257
|
+
if (vote) {
|
|
85258
|
+
closeReflection(reflection.id, vote);
|
|
85259
|
+
return;
|
|
85260
|
+
}
|
|
85261
|
+
}
|
|
85230
85262
|
if (proposal && !picker) {
|
|
85231
85263
|
if (key.return && !value.trim()) {
|
|
85232
85264
|
decide("accept");
|
|
@@ -85458,12 +85490,22 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85458
85490
|
break;
|
|
85459
85491
|
}
|
|
85460
85492
|
};
|
|
85493
|
+
const closeReflection = (id, vote, reason = "") => {
|
|
85494
|
+
engine2.send({ cmd: "reflect_vote", id, vote, ...reason ? { why: reason } : {} });
|
|
85495
|
+
setReflections((rs) => rs.filter((r) => r.id !== id));
|
|
85496
|
+
setWhy((w) => w === id ? null : w);
|
|
85497
|
+
setValue("");
|
|
85498
|
+
};
|
|
85461
85499
|
const onSubmit = (line) => {
|
|
85462
85500
|
const text = line.trim();
|
|
85463
85501
|
setValue("");
|
|
85464
85502
|
const queued = attachRef.current;
|
|
85465
85503
|
const attached = text ? queued.filter((a) => text.includes(a.chip)) : queued;
|
|
85466
85504
|
const dropped = queued.filter((a) => !attached.includes(a));
|
|
85505
|
+
if (why && reflection && why === reflection.id) {
|
|
85506
|
+
closeReflection(reflection.id, "down", text);
|
|
85507
|
+
return;
|
|
85508
|
+
}
|
|
85467
85509
|
if (!text && attached.length === 0) return;
|
|
85468
85510
|
if (!text && proposal) return;
|
|
85469
85511
|
const hist = historyRef.current;
|
|
@@ -85479,6 +85521,7 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85479
85521
|
answerStep(text);
|
|
85480
85522
|
return;
|
|
85481
85523
|
}
|
|
85524
|
+
if (reflection) closeReflection(reflection.id, "dismiss");
|
|
85482
85525
|
if (text.startsWith("/")) {
|
|
85483
85526
|
runCommand(text);
|
|
85484
85527
|
return;
|
|
@@ -85489,10 +85532,6 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85489
85532
|
if (phaseRef.current === "idle") setPhaseBoth("busy");
|
|
85490
85533
|
return;
|
|
85491
85534
|
}
|
|
85492
|
-
if (paused && /^(continue|go on|carry on|keep going)\.?$/i.test(text)) {
|
|
85493
|
-
runCommand("/continue");
|
|
85494
|
-
return;
|
|
85495
|
-
}
|
|
85496
85535
|
if (paused) setPaused(false);
|
|
85497
85536
|
if (dropped.length) append({ kind: "info", text: `not sent (chip removed): ${dropped.map((a) => a.label).join(", ")}` });
|
|
85498
85537
|
append({ kind: "you", text, images: attached.map((a) => `#${a.n} ${a.label}`), steering: phaseRef.current === "busy" });
|
|
@@ -85620,8 +85659,7 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85620
85659
|
item.kind === "errtail" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Box_default, { flexDirection: "column", paddingLeft: 6, children: item.lines.map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: "red", dimColor: true, children: l }, i)) }),
|
|
85621
85660
|
item.kind === "output" && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", paddingLeft: 4, children: [
|
|
85622
85661
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: `full output \xB7 ${item.name}` }),
|
|
85623
|
-
item.lines.map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: l || " " }, i))
|
|
85624
|
-
item.more > 0 ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: `\u2026 +${item.more} more lines (the session file keeps everything)` }) : null
|
|
85662
|
+
item.lines.map((l, i) => item.diff ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: l.startsWith("+") ? "green" : l.startsWith("-") ? "red" : void 0, dimColor: !l.startsWith("+") && !l.startsWith("-"), children: l || " " }, i) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: l || " " }, i))
|
|
85625
85663
|
] }),
|
|
85626
85664
|
item.kind === "turn" && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85627
85665
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, children: "\u273B " }),
|
|
@@ -85635,6 +85673,28 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85635
85673
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { children: item.text }),
|
|
85636
85674
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: "say what to do next \xB7 /continue lets it carry on" })
|
|
85637
85675
|
] }),
|
|
85676
|
+
item.kind === "mcp" && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", children: [
|
|
85677
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85678
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { bold: true, color: ACCENT, children: "MCP servers" }),
|
|
85679
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: ` \xB7 ${item.servers.length} in this session` })
|
|
85680
|
+
] }),
|
|
85681
|
+
item.servers.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: " none \xB7 add [[mcp]] with a name and a url or a command to ~/.hum/config.toml; the ones your deployment provides arrive when you sign in" }) : null,
|
|
85682
|
+
[["deployment", "from your deployment"], ["config", "from your config (~/.hum/config.toml or the project's .hum/config.toml)"]].map(([src, label]) => {
|
|
85683
|
+
const rows = item.servers.filter((s) => (s.source || "config") === src);
|
|
85684
|
+
if (!rows.length) return null;
|
|
85685
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
|
|
85686
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: ` ${label}` }),
|
|
85687
|
+
rows.map((s) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", paddingLeft: 2, children: [
|
|
85688
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85689
|
+
s.error ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: "red", children: "\u2717 " }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: "green", children: "\u2714 " }),
|
|
85690
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { bold: true, children: s.name }),
|
|
85691
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: s.error ? ` \xB7 not mounted \xB7 ${s.error}` : ` \xB7 connected \xB7 ${s.tools.length} tool${s.tools.length === 1 ? "" : "s"}${s.instructions ? " \xB7 with instructions" : ""} \xB7 ${s.at}` })
|
|
85692
|
+
] }),
|
|
85693
|
+
s.tools.length ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: ` ${s.tools.join(" \xB7 ")}` }) : null
|
|
85694
|
+
] }, s.name))
|
|
85695
|
+
] }, src);
|
|
85696
|
+
})
|
|
85697
|
+
] }),
|
|
85638
85698
|
item.kind === "info" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: item.text }),
|
|
85639
85699
|
item.kind === "warn" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: "yellow", children: item.text }),
|
|
85640
85700
|
item.kind === "error" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: "red", children: item.text })
|
|
@@ -85647,6 +85707,9 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85647
85707
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, dimColor: true, children: "\u25CF" }) }),
|
|
85648
85708
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { children: tail(renderMarkdown(draft, width - 2), DRAFT_TAIL_LINES) })
|
|
85649
85709
|
] }),
|
|
85710
|
+
phase === "busy" && thinking && // the thought as it streams: its newest lines, dim, so a long think is never a blank screen.
|
|
85711
|
+
// It folds into one line under the reply the moment the reply starts
|
|
85712
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Box_default, { flexDirection: "column", marginTop: 1, paddingLeft: 2, width, children: thinking.slice(-600).split("\n").filter((l) => l.trim()).slice(-THOUGHT_TAIL_LINES).map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, wrap: "truncate-start", children: l }, i)) }),
|
|
85650
85713
|
(phase === "busy" || phase === "connecting") && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { marginTop: 1, children: [
|
|
85651
85714
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(build_default, { type: "dots" }) }),
|
|
85652
85715
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: spinnerLabel })
|
|
@@ -85682,6 +85745,25 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85682
85745
|
step.secret ? " \xB7 it is not shown and not recorded" : ""
|
|
85683
85746
|
] })
|
|
85684
85747
|
] }),
|
|
85748
|
+
reflection && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { borderStyle: "round", borderColor: ACCENT, paddingX: 1, marginTop: 1, children: [
|
|
85749
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Box_default, { flexDirection: "column", width: MASCOT_WIDTH + 1, flexShrink: 0, marginRight: 1, children: MASCOT.map((row, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, bold: true, children: row }, i)) }),
|
|
85750
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", flexGrow: 1, children: [
|
|
85751
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85752
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, bold: true, children: "\u2726 hum on its own work" }),
|
|
85753
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: ` \xB7 ${reflection.category.replace(/_/g, " ")}${reflection.area ? ` \xB7 ${reflection.area}` : ""}` })
|
|
85754
|
+
] }),
|
|
85755
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { bold: true, children: reflection.title }),
|
|
85756
|
+
reflection.details.split("\n").map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { children: ` ${l}` }, `d${i}`)),
|
|
85757
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { children: " " }),
|
|
85758
|
+
why === reflection.id ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85759
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { bold: true, children: "What did it get wrong? " }),
|
|
85760
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: "type a line and press enter \xB7 enter alone records the no without a reason" })
|
|
85761
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85762
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { bold: true, children: "Is this true? " }),
|
|
85763
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: `press 1 for yes \xB7 2 for no \xB7 enter to skip${reflections.length > 1 ? ` \xB7 ${reflections.length - 1} more after this` : ""}` })
|
|
85764
|
+
] })
|
|
85765
|
+
] })
|
|
85766
|
+
] }),
|
|
85685
85767
|
proposal && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", borderStyle: "round", borderColor: ACCENT, paddingX: 1, marginTop: 1, children: [
|
|
85686
85768
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { children: [
|
|
85687
85769
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: ACCENT, bold: true, children: "? " }),
|
|
@@ -85710,7 +85792,7 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85710
85792
|
] }),
|
|
85711
85793
|
(c.name === "bash" || c.name === "powershell") && c.desc !== `$ ${String(c.args?.command || "")}` ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { color: "cyan", children: [
|
|
85712
85794
|
" $ ",
|
|
85713
|
-
String(c.args?.command || "").split("\n").join(" \u23CE ")
|
|
85795
|
+
String(c.args?.command || "").split("\n").join(" \u23CE ")
|
|
85714
85796
|
] }) : null,
|
|
85715
85797
|
c.escape ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Text, { color: "yellow", children: [
|
|
85716
85798
|
" outside the sandbox \u2014 ",
|
|
@@ -85728,7 +85810,7 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85728
85810
|
},
|
|
85729
85811
|
i
|
|
85730
85812
|
)) : null,
|
|
85731
|
-
c.diff && c.diff.split("\n").length > DIFF_TAIL_LINES ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: `
|
|
85813
|
+
c.diff && c.diff.split("\n").length > DIFF_TAIL_LINES ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { dimColor: true, children: ` the whole change (${c.diff.split("\n").length} lines) is above` }) : null
|
|
85732
85814
|
] }, c.id))
|
|
85733
85815
|
] }),
|
|
85734
85816
|
picker && picker.kind === "model" && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [
|
|
@@ -85888,12 +85970,13 @@ function App2({ engine: engine2, task, resume, images = [] }) {
|
|
|
85888
85970
|
mask: !!(step && step.secret),
|
|
85889
85971
|
swallow: (input, key) => {
|
|
85890
85972
|
if (picker || value.trim()) return false;
|
|
85973
|
+
if (reflection && why !== reflection.id && (input === "1" || input === "2")) return true;
|
|
85891
85974
|
if (proposal && (input === "a" || input === "p") && (proposal.remember || []).length) return true;
|
|
85892
85975
|
if (!question || !step) return false;
|
|
85893
85976
|
if (/^[1-9]$/.test(input) && Number(input) <= stepLabels.length) return true;
|
|
85894
85977
|
return !!(step.multi && stepLabels.length && input === " ");
|
|
85895
85978
|
},
|
|
85896
|
-
placeholder: question && step ? stepLabels.length ? "a number, or your answer" : "your answer" : proposal ? (proposal.remember || []).length ? "enter approves \xB7 a / p allow this shape \xB7 or type why not" : "enter to approve \xB7 or type why not" : paused ? "paused \xB7 say what to do, or /continue" : phase === "busy" ? "type to steer \xB7 esc to stop \xB7 !cmd runs a command" : session ? "what next?" : "what are we doing?"
|
|
85979
|
+
placeholder: why && reflection && why === reflection.id ? "what did it get wrong? (enter alone: just the no)" : question && step ? stepLabels.length ? "a number, or your answer" : "your answer" : proposal ? (proposal.remember || []).length ? "enter approves \xB7 a / p allow this shape \xB7 or type why not" : "enter to approve \xB7 or type why not" : paused ? "paused \xB7 say what to do, or /continue" : phase === "busy" ? "type to steer \xB7 esc to stop \xB7 !cmd runs a command" : session ? "what next?" : "what are we doing?"
|
|
85897
85980
|
}
|
|
85898
85981
|
)
|
|
85899
85982
|
] }),
|
|
@@ -85917,7 +86000,7 @@ init_update();
|
|
|
85917
86000
|
init_install();
|
|
85918
86001
|
var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
|
|
85919
86002
|
import { spawnSync as spawnSync5 } from "node:child_process";
|
|
85920
|
-
var MINE2 = true ? "0.1.
|
|
86003
|
+
var MINE2 = true ? "0.1.35" : "0.0.0";
|
|
85921
86004
|
var layout = installLayout();
|
|
85922
86005
|
function completeInstall() {
|
|
85923
86006
|
if (layout.kind !== "npm" || !needsInstall(MINE2)) return;
|
|
@@ -85927,7 +86010,7 @@ function completeInstall() {
|
|
|
85927
86010
|
const r = installEngine(MINE2, { say });
|
|
85928
86011
|
if (!r.ok) say(`the update did not finish: ${r.error} \xB7 ${npmFix(MINE2)}`);
|
|
85929
86012
|
}
|
|
85930
|
-
var ENGINE_COMMANDS = /* @__PURE__ */ new Set(["run", "login", "logout", "whoami", "model", "key", "sessions", "show", "sync", "skill", "ps", "stop", "hooks", "engine"]);
|
|
86013
|
+
var ENGINE_COMMANDS = /* @__PURE__ */ new Set(["run", "login", "logout", "whoami", "model", "key", "sessions", "show", "sync", "skill", "persona", "ps", "stop", "hooks", "engine"]);
|
|
85931
86014
|
var argv0 = process.argv.slice(2);
|
|
85932
86015
|
if (argv0[0] === "--version" || argv0[0] === "-V") {
|
|
85933
86016
|
process.stdout.write(`hum ${MINE2}
|