@inhuman.tools/harness-sdk 0.0.0-stage → 0.2.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/LICENSE.md +7 -0
- package/dist/client-agents-tree.d.ts +123 -0
- package/dist/client-agents-tree.d.ts.map +1 -0
- package/dist/client-agents-tree.js +504 -0
- package/dist/client-agents-tree.js.map +1 -0
- package/dist/client-agents.d.ts +50 -0
- package/dist/client-agents.d.ts.map +1 -0
- package/dist/client-agents.js +299 -0
- package/dist/client-agents.js.map +1 -0
- package/dist/client.d.ts +89 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +589 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/launch/continue-pick.d.ts +17 -0
- package/dist/launch/continue-pick.d.ts.map +1 -0
- package/dist/launch/continue-pick.js +20 -0
- package/dist/launch/continue-pick.js.map +1 -0
- package/dist/launch/index.d.ts +6 -0
- package/dist/launch/index.d.ts.map +1 -0
- package/dist/launch/index.js +6 -0
- package/dist/launch/index.js.map +1 -0
- package/dist/launch/model-flags.d.ts +44 -0
- package/dist/launch/model-flags.d.ts.map +1 -0
- package/dist/launch/model-flags.js +216 -0
- package/dist/launch/model-flags.js.map +1 -0
- package/dist/launch/streams.d.ts +15 -0
- package/dist/launch/streams.d.ts.map +1 -0
- package/dist/launch/streams.js +2 -0
- package/dist/launch/streams.js.map +1 -0
- package/dist/launch/term-continue.d.ts +13 -0
- package/dist/launch/term-continue.d.ts.map +1 -0
- package/dist/launch/term-continue.js +17 -0
- package/dist/launch/term-continue.js.map +1 -0
- package/dist/launch/term-session-key.d.ts +8 -0
- package/dist/launch/term-session-key.d.ts.map +1 -0
- package/dist/launch/term-session-key.js +76 -0
- package/dist/launch/term-session-key.js.map +1 -0
- package/dist/observable-abort-signal.d.ts +7 -0
- package/dist/observable-abort-signal.d.ts.map +1 -0
- package/dist/observable-abort-signal.js +56 -0
- package/dist/observable-abort-signal.js.map +1 -0
- package/dist/open-external.d.ts +2 -0
- package/dist/open-external.d.ts.map +1 -0
- package/dist/open-external.js +24 -0
- package/dist/open-external.js.map +1 -0
- package/dist/paths.d.ts +7 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +16 -0
- package/dist/paths.js.map +1 -0
- package/dist/text/agent-cover.d.ts +43 -0
- package/dist/text/agent-cover.d.ts.map +1 -0
- package/dist/text/agent-cover.js +123 -0
- package/dist/text/agent-cover.js.map +1 -0
- package/dist/text/format-shell.d.ts +5 -0
- package/dist/text/format-shell.d.ts.map +1 -0
- package/dist/text/format-shell.js +53 -0
- package/dist/text/format-shell.js.map +1 -0
- package/dist/text/identity.d.ts +67 -0
- package/dist/text/identity.d.ts.map +1 -0
- package/dist/text/identity.js +433 -0
- package/dist/text/identity.js.map +1 -0
- package/dist/text/index.d.ts +14 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +15 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/liveness.d.ts +62 -0
- package/dist/text/liveness.d.ts.map +1 -0
- package/dist/text/liveness.js +270 -0
- package/dist/text/liveness.js.map +1 -0
- package/dist/text/mcp-identity.d.ts +25 -0
- package/dist/text/mcp-identity.d.ts.map +1 -0
- package/dist/text/mcp-identity.js +133 -0
- package/dist/text/mcp-identity.js.map +1 -0
- package/dist/text/pretty-identity.d.ts +15 -0
- package/dist/text/pretty-identity.d.ts.map +1 -0
- package/dist/text/pretty-identity.js +112 -0
- package/dist/text/pretty-identity.js.map +1 -0
- package/dist/text/sugarcoat.d.ts +29 -0
- package/dist/text/sugarcoat.d.ts.map +1 -0
- package/dist/text/sugarcoat.js +148 -0
- package/dist/text/sugarcoat.js.map +1 -0
- package/dist/text/unwrap-program.d.ts +2 -0
- package/dist/text/unwrap-program.d.ts.map +1 -0
- package/dist/text/unwrap-program.js +137 -0
- package/dist/text/unwrap-program.js.map +1 -0
- package/dist/text/work-text.d.ts +72 -0
- package/dist/text/work-text.d.ts.map +1 -0
- package/dist/text/work-text.js +337 -0
- package/dist/text/work-text.js.map +1 -0
- package/dist/transport/unix.d.ts +19 -0
- package/dist/transport/unix.d.ts.map +1 -0
- package/dist/transport/unix.js +68 -0
- package/dist/transport/unix.js.map +1 -0
- package/package.json +79 -3
- package/src/client-agents-tree.ts +642 -0
- package/src/client-agents.ts +230 -0
- package/src/client.ts +686 -0
- package/src/index.ts +27 -0
- package/src/launch/continue-pick.ts +28 -0
- package/src/launch/index.ts +5 -0
- package/src/launch/model-flags.ts +273 -0
- package/src/launch/streams.ts +13 -0
- package/src/launch/term-continue.ts +31 -0
- package/src/launch/term-session-key.ts +70 -0
- package/src/observable-abort-signal.ts +66 -0
- package/src/open-external.ts +22 -0
- package/src/paths.ts +20 -0
- package/src/text/agent-cover.ts +136 -0
- package/src/text/format-shell.ts +52 -0
- package/src/text/identity.ts +473 -0
- package/src/text/index.ts +29 -0
- package/src/text/liveness.ts +322 -0
- package/src/text/mcp-identity.ts +148 -0
- package/src/text/pretty-identity.ts +120 -0
- package/src/text/sugarcoat.ts +165 -0
- package/src/text/unwrap-program.ts +133 -0
- package/src/text/work-text.ts +388 -0
- package/src/transport/unix.ts +84 -0
- package/README.md +0 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheme result projection for the tape and for plain-text clients: sugarcoat the
|
|
3
|
+
* stored source, and classify printed values into typed parts. No colour and no
|
|
4
|
+
* widget types. `sugarcoat-paint.ts` adds those, so a headless client can read this
|
|
5
|
+
* file without loading the paint substrate.
|
|
6
|
+
*/
|
|
7
|
+
import { toSExprString } from "@here.build/arrival-serializer";
|
|
8
|
+
import { schemeToSugarcoat } from "@here.build/arrival-sugarcoat";
|
|
9
|
+
import { unwrapTopLevelSource } from "./unwrap-program.js";
|
|
10
|
+
export function sugarcoatSource(src) {
|
|
11
|
+
if (src.trim() === "")
|
|
12
|
+
return src;
|
|
13
|
+
try {
|
|
14
|
+
const sweet = schemeToSugarcoat(src);
|
|
15
|
+
return sweet === "" ? src : sweet;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return src;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Tape/object paint for a scheme_repl program. Splices wrapping begin/list/`[]` first. */
|
|
22
|
+
export function sugarcoatProgram(src) {
|
|
23
|
+
return sugarcoatSource(unwrapTopLevelSource(src));
|
|
24
|
+
}
|
|
25
|
+
/** JSON-quoted payloads (`"a\\nb"`) become the string with real newlines. Bare `C:\\new` stays. */
|
|
26
|
+
export function decodeDisplayString(text) {
|
|
27
|
+
const trimmed = text.trim();
|
|
28
|
+
if (trimmed.length < 2 || !trimmed.startsWith('"') || !trimmed.endsWith('"'))
|
|
29
|
+
return text;
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(trimmed);
|
|
32
|
+
return typeof parsed === "string" ? parsed : text;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return text;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Scheme boolean spellings. The highlighter colours the same atoms. */
|
|
39
|
+
export const BOOLEAN_ATOMS = new Set(["#t", "#f", "#true", "#false"]);
|
|
40
|
+
/** Prefixes `toSExprString` emits. A cut marker is recognized anywhere so a
|
|
41
|
+
* leading display note does not hide it. */
|
|
42
|
+
function serializerForm(text) {
|
|
43
|
+
if (text.includes("\n#| … output hard-truncated at ") || text.includes("…(+"))
|
|
44
|
+
return true;
|
|
45
|
+
const trimmed = text.trimStart();
|
|
46
|
+
return (trimmed.startsWith(";;") ||
|
|
47
|
+
trimmed.startsWith("#|") ||
|
|
48
|
+
trimmed.startsWith("(") ||
|
|
49
|
+
trimmed.startsWith("[") ||
|
|
50
|
+
trimmed.startsWith("{") ||
|
|
51
|
+
trimmed.startsWith('"') ||
|
|
52
|
+
trimmed.startsWith("'") ||
|
|
53
|
+
trimmed.startsWith("#\\") ||
|
|
54
|
+
trimmed.startsWith(":"));
|
|
55
|
+
}
|
|
56
|
+
export function formatSchemeResult(snap) {
|
|
57
|
+
const painted = schemePaintReceipt(snap);
|
|
58
|
+
if (painted.kind === "none")
|
|
59
|
+
return "";
|
|
60
|
+
if (painted.kind === "parts")
|
|
61
|
+
return painted.parts.map((part) => part.text).join("\n");
|
|
62
|
+
return painted.text;
|
|
63
|
+
}
|
|
64
|
+
/** One receipt per printed value. A display string stays plain. Serializer text is syntax. */
|
|
65
|
+
export function schemePaintReceipt(snap, hints = []) {
|
|
66
|
+
if (snap == null)
|
|
67
|
+
return { kind: "none" };
|
|
68
|
+
if (snap.ok === false) {
|
|
69
|
+
const text = decodeDisplayString(snap.text ?? "");
|
|
70
|
+
return text === "" ? { kind: "none" } : { kind: "text", text };
|
|
71
|
+
}
|
|
72
|
+
if (!("value" in snap) || snap.value === undefined) {
|
|
73
|
+
const text = decodeDisplayString(typeof snap.text === "string" ? snap.text : "");
|
|
74
|
+
return text === "" ? { kind: "none" } : { kind: "text", text };
|
|
75
|
+
}
|
|
76
|
+
const items = Array.isArray(snap.value) ? snap.value : [snap.value];
|
|
77
|
+
const parts = items
|
|
78
|
+
.map((item) => schemePart(item, hints))
|
|
79
|
+
.filter((part) => part !== undefined);
|
|
80
|
+
if (parts.length === 0)
|
|
81
|
+
return { kind: "none" };
|
|
82
|
+
if (parts.length === 1) {
|
|
83
|
+
const only = parts[0];
|
|
84
|
+
return only === undefined ? { kind: "none" } : only;
|
|
85
|
+
}
|
|
86
|
+
return { kind: "parts", parts };
|
|
87
|
+
}
|
|
88
|
+
export function isMarkdownPath(path) {
|
|
89
|
+
return path.endsWith(".md") || path.endsWith(".mdx");
|
|
90
|
+
}
|
|
91
|
+
export function fileSchemePart(path, text) {
|
|
92
|
+
const body = decodeDisplayString(text);
|
|
93
|
+
if (body === "")
|
|
94
|
+
return undefined;
|
|
95
|
+
return isMarkdownPath(path) ? { kind: "markdown", text: body } : { kind: "text", text: body };
|
|
96
|
+
}
|
|
97
|
+
function isFilePrint(value) {
|
|
98
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
99
|
+
return false;
|
|
100
|
+
const rec = value;
|
|
101
|
+
return typeof rec.text === "string" && rec.face?.kind === "file" && typeof rec.face.path === "string";
|
|
102
|
+
}
|
|
103
|
+
function hintedFilePart(text, hints) {
|
|
104
|
+
const matched = new Set(hints.filter((hint) => hint.text === text).map((hint) => hint.path));
|
|
105
|
+
if (matched.size !== 1)
|
|
106
|
+
return undefined;
|
|
107
|
+
const [path] = matched;
|
|
108
|
+
return path === undefined ? undefined : fileSchemePart(path, text);
|
|
109
|
+
}
|
|
110
|
+
function schemePart(value, hints = []) {
|
|
111
|
+
if (typeof value === "boolean")
|
|
112
|
+
return { kind: "boolean", text: value ? "#t" : "#f" };
|
|
113
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
114
|
+
return { kind: "number", text: String(value) };
|
|
115
|
+
if (typeof value === "bigint")
|
|
116
|
+
return { kind: "number", text: String(value) };
|
|
117
|
+
if (isFilePrint(value))
|
|
118
|
+
return fileSchemePart(value.face.path, value.text);
|
|
119
|
+
if (typeof value === "string") {
|
|
120
|
+
const text = decodeDisplayString(value);
|
|
121
|
+
const hinted = hintedFilePart(text, hints);
|
|
122
|
+
if (hinted !== undefined)
|
|
123
|
+
return hinted;
|
|
124
|
+
if (BOOLEAN_ATOMS.has(text))
|
|
125
|
+
return { kind: "boolean", text };
|
|
126
|
+
// Whole-value number, not a tokenizer prefix. `#t` is a boolean, not `#`+digit.
|
|
127
|
+
if (text !== "" &&
|
|
128
|
+
!/\s/.test(text) &&
|
|
129
|
+
!BOOLEAN_ATOMS.has(text) &&
|
|
130
|
+
(Number.isFinite(Number(text)) || /^[+-]?#[xbodei]/i.test(text))) {
|
|
131
|
+
return { kind: "number", text };
|
|
132
|
+
}
|
|
133
|
+
if (text === "")
|
|
134
|
+
return undefined;
|
|
135
|
+
// Eval already stored `toSExprString` as a string. Those forms highlight;
|
|
136
|
+
// a display sentence and a file body do not start this way.
|
|
137
|
+
return serializerForm(text) ? { kind: "syntax", text } : { kind: "text", text };
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
const text = toSExprString(value);
|
|
141
|
+
return text === "" ? undefined : { kind: "syntax", text };
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
const text = decodeDisplayString(String(value));
|
|
145
|
+
return text === "" ? undefined : { kind: "text", text };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=sugarcoat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sugarcoat.js","sourceRoot":"","sources":["../../src/text/sugarcoat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrap-program.d.ts","sourceRoot":"","sources":["../../src/text/unwrap-program.ts"],"names":[],"mappings":"AAiHA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBxD"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// Tape projection of substrate `unwrap-begin.ts`. Execution splices the AST;
|
|
2
|
+
// this file splices the stored expr so the identity line matches what ran.
|
|
3
|
+
// CHANGE ONLY with that file — same three wrappers, same quote/dot refusals.
|
|
4
|
+
import { tokenize } from "@here.build/arrival/lsp-internals";
|
|
5
|
+
const SPLICE_HEADS = new Set(["begin", "list"]);
|
|
6
|
+
const CLOSE = new Set([")", "]", "}"]);
|
|
7
|
+
const QUOTE_PREFIX = new Set(["'", "`", ",", ",@"]);
|
|
8
|
+
function isOpen(tok) {
|
|
9
|
+
return (tok === "(" || tok === "[" || tok === "{" || (tok.startsWith("#") && !tok.startsWith("#\\") && tok.endsWith("(")));
|
|
10
|
+
}
|
|
11
|
+
function isSkippable(tok) {
|
|
12
|
+
return /^\s+$/.test(tok) || tok.startsWith(";") || tok.startsWith("#|") || tok.startsWith("#;");
|
|
13
|
+
}
|
|
14
|
+
function tokenAt(tokens, index) {
|
|
15
|
+
return tokens[index];
|
|
16
|
+
}
|
|
17
|
+
function skipSkippable(tokens, index) {
|
|
18
|
+
let i = index;
|
|
19
|
+
for (;;) {
|
|
20
|
+
const tok = tokenAt(tokens, i);
|
|
21
|
+
if (tok == null || !isSkippable(tok.token))
|
|
22
|
+
return i;
|
|
23
|
+
i += 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function splitTopLevel(source) {
|
|
27
|
+
const tokens = tokenize(source, true);
|
|
28
|
+
const starts = [];
|
|
29
|
+
let depth = 0;
|
|
30
|
+
let between = true;
|
|
31
|
+
for (const { token, offset } of tokens) {
|
|
32
|
+
if (isSkippable(token))
|
|
33
|
+
continue;
|
|
34
|
+
if (between) {
|
|
35
|
+
starts.push(offset);
|
|
36
|
+
between = false;
|
|
37
|
+
}
|
|
38
|
+
if (isOpen(token))
|
|
39
|
+
depth++;
|
|
40
|
+
else if (CLOSE.has(token)) {
|
|
41
|
+
if (depth > 0)
|
|
42
|
+
depth--;
|
|
43
|
+
if (depth === 0)
|
|
44
|
+
between = true;
|
|
45
|
+
}
|
|
46
|
+
else if (depth === 0 && !QUOTE_PREFIX.has(token)) {
|
|
47
|
+
between = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return starts.map((s, i) => source.slice(s, starts[i + 1] ?? source.length).trim()).filter(Boolean);
|
|
51
|
+
}
|
|
52
|
+
function matchGroup(tokens, openIdx, closeTok) {
|
|
53
|
+
let depth = 0;
|
|
54
|
+
let dotted = false;
|
|
55
|
+
for (let i = openIdx; i < tokens.length; i++) {
|
|
56
|
+
const row = tokenAt(tokens, i);
|
|
57
|
+
if (row == null)
|
|
58
|
+
return undefined;
|
|
59
|
+
const tok = row.token;
|
|
60
|
+
if (isSkippable(tok))
|
|
61
|
+
continue;
|
|
62
|
+
if (isOpen(tok)) {
|
|
63
|
+
depth += 1;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (CLOSE.has(tok)) {
|
|
67
|
+
depth -= 1;
|
|
68
|
+
if (depth === 0) {
|
|
69
|
+
if (tok !== closeTok)
|
|
70
|
+
return undefined;
|
|
71
|
+
return { closeIdx: i, dotted };
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (depth === 1 && tok === ".")
|
|
76
|
+
dotted = true;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
function wrapperInterior(src) {
|
|
81
|
+
const tokens = tokenize(src, true);
|
|
82
|
+
const firstIdx = skipSkippable(tokens, 0);
|
|
83
|
+
const first = tokenAt(tokens, firstIdx);
|
|
84
|
+
if (first == null || QUOTE_PREFIX.has(first.token))
|
|
85
|
+
return undefined;
|
|
86
|
+
if (first.token === "[" || first.token === "#(") {
|
|
87
|
+
const closed = matchGroup(tokens, firstIdx, first.token === "[" ? "]" : ")");
|
|
88
|
+
if (closed == null || closed.dotted)
|
|
89
|
+
return undefined;
|
|
90
|
+
if (skipSkippable(tokens, closed.closeIdx + 1) < tokens.length)
|
|
91
|
+
return undefined;
|
|
92
|
+
const closer = tokenAt(tokens, closed.closeIdx);
|
|
93
|
+
if (closer == null)
|
|
94
|
+
return undefined;
|
|
95
|
+
return splitTopLevel(src.slice(first.offset + first.token.length, closer.offset));
|
|
96
|
+
}
|
|
97
|
+
if (first.token !== "(")
|
|
98
|
+
return undefined;
|
|
99
|
+
const nameIdx = skipSkippable(tokens, firstIdx + 1);
|
|
100
|
+
const name = tokenAt(tokens, nameIdx);
|
|
101
|
+
if (name == null || !SPLICE_HEADS.has(name.token.toLowerCase()))
|
|
102
|
+
return undefined;
|
|
103
|
+
const closed = matchGroup(tokens, firstIdx, ")");
|
|
104
|
+
if (closed == null || closed.dotted)
|
|
105
|
+
return undefined;
|
|
106
|
+
if (skipSkippable(tokens, closed.closeIdx + 1) < tokens.length)
|
|
107
|
+
return undefined;
|
|
108
|
+
const closer = tokenAt(tokens, closed.closeIdx);
|
|
109
|
+
if (closer == null)
|
|
110
|
+
return undefined;
|
|
111
|
+
return splitTopLevel(src.slice(name.offset + name.token.length, closer.offset));
|
|
112
|
+
}
|
|
113
|
+
export function unwrapTopLevelSource(src) {
|
|
114
|
+
if (src.trim() === "")
|
|
115
|
+
return src;
|
|
116
|
+
try {
|
|
117
|
+
const out = [];
|
|
118
|
+
let spliced = false;
|
|
119
|
+
const visit = (stmt) => {
|
|
120
|
+
const body = wrapperInterior(stmt);
|
|
121
|
+
if (body === undefined) {
|
|
122
|
+
out.push(stmt);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
spliced = true;
|
|
126
|
+
for (const inner of body)
|
|
127
|
+
visit(inner);
|
|
128
|
+
};
|
|
129
|
+
for (const stmt of splitTopLevel(src))
|
|
130
|
+
visit(stmt);
|
|
131
|
+
return spliced ? out.join("\n") : src;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return src;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=unwrap-program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrap-program.js","sourceRoot":"","sources":["../../src/text/unwrap-program.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a tool or scheme call says, as plain data: state, identity, receipt. No
|
|
3
|
+
* paint. `work-cells.ts` turns a `WorkCellFace` into layout nodes; the headless
|
|
4
|
+
* eval client prints the same face as text. Nothing here may import quickdraw —
|
|
5
|
+
* a helper that needs it belongs in `work-cells.ts`.
|
|
6
|
+
*/
|
|
7
|
+
import { type BlobPeek, type KernelRoot, ProgrammaticJob, ToolCallJob } from "@inhuman.tools/harness-model";
|
|
8
|
+
import { type SchemeCellState, type ToolCellState } from "./liveness.js";
|
|
9
|
+
import { type SchemePaintPart } from "./sugarcoat.js";
|
|
10
|
+
export type WorkCellState = ToolCellState | SchemeCellState;
|
|
11
|
+
export type ReceiptFace = {
|
|
12
|
+
readonly kind: "none";
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "text";
|
|
15
|
+
readonly text: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "markdown";
|
|
18
|
+
readonly text: string;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "stream";
|
|
21
|
+
readonly text: string;
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: "syntax";
|
|
24
|
+
readonly text: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: "number";
|
|
27
|
+
readonly text: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: "boolean";
|
|
30
|
+
readonly text: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "parts";
|
|
33
|
+
readonly parts: readonly SchemePaintPart[];
|
|
34
|
+
} | {
|
|
35
|
+
readonly kind: "diff";
|
|
36
|
+
readonly old: string;
|
|
37
|
+
readonly new: string;
|
|
38
|
+
readonly path: string;
|
|
39
|
+
/** 1-based file line of the span. Omitted when the span is the whole file. */
|
|
40
|
+
readonly lineStart?: number;
|
|
41
|
+
};
|
|
42
|
+
export declare function receiptPlainText(receipt: ReceiptFace): string;
|
|
43
|
+
export type WorkCellFace = {
|
|
44
|
+
readonly key: string;
|
|
45
|
+
readonly state: WorkCellState;
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly object: string;
|
|
48
|
+
readonly status: string;
|
|
49
|
+
readonly caption: string;
|
|
50
|
+
readonly pathShaped: boolean;
|
|
51
|
+
/** Quiet server / louder action (MCP). Plain tools stay one voice Text. */
|
|
52
|
+
readonly split: boolean;
|
|
53
|
+
readonly agent: boolean;
|
|
54
|
+
readonly pretty: boolean;
|
|
55
|
+
readonly prettyBlock: string;
|
|
56
|
+
/** What the worker actually answered. Empty until a reply lands. */
|
|
57
|
+
readonly response: string;
|
|
58
|
+
readonly indent: boolean;
|
|
59
|
+
readonly collapsed: boolean;
|
|
60
|
+
readonly receipt: ReceiptFace;
|
|
61
|
+
/** Cover rim already names this work (`coverAskAnnotation`). */
|
|
62
|
+
readonly rimNamed: boolean;
|
|
63
|
+
};
|
|
64
|
+
/** Suggestion Diff from args. Pin uses this even after `approved`, while tape live does not. */
|
|
65
|
+
export declare function mutateSuggestionReceipt(work: ToolCallJob, blobs?: BlobPeek): ReceiptFace;
|
|
66
|
+
/** Kernel glance overlay for a named-agent call. `status` is the dim suffix. */
|
|
67
|
+
export type CallStatus = {
|
|
68
|
+
readonly status?: string;
|
|
69
|
+
readonly model?: string;
|
|
70
|
+
};
|
|
71
|
+
export declare function workCellFace(work: ToolCallJob | ProgrammaticJob, key: string, indent: boolean, collapsed?: boolean, glance?: CallStatus | string, kernel?: KernelRoot | null, blobs?: BlobPeek): WorkCellFace;
|
|
72
|
+
//# sourceMappingURL=work-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-text.d.ts","sourceRoot":"","sources":["../../src/text/work-text.ts"],"names":[],"mappings":"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"}
|