@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
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const HARNESS_DIR = ".harness";
|
|
2
|
+
export declare function daemonSocketPath(systemRoot: string): string;
|
|
3
|
+
/** One append-only log for host, worker, and daemon. */
|
|
4
|
+
export declare function daemonLogPath(systemRoot: string): string;
|
|
5
|
+
export declare function projectHarnessDir(workspacePath: string): string;
|
|
6
|
+
export declare function projectSessionsDir(workspacePath: string): string;
|
|
7
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
export const HARNESS_DIR = ".harness";
|
|
3
|
+
export function daemonSocketPath(systemRoot) {
|
|
4
|
+
return join(systemRoot, "daemon.sock");
|
|
5
|
+
}
|
|
6
|
+
/** One append-only log for host, worker, and daemon. */
|
|
7
|
+
export function daemonLogPath(systemRoot) {
|
|
8
|
+
return join(systemRoot, "harness.log");
|
|
9
|
+
}
|
|
10
|
+
export function projectHarnessDir(workspacePath) {
|
|
11
|
+
return join(workspacePath, HARNESS_DIR);
|
|
12
|
+
}
|
|
13
|
+
export function projectSessionsDir(workspacePath) {
|
|
14
|
+
return join(projectHarnessDir(workspacePath), "sessions");
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask-cover copy for agent send/ask/message. Rim is dim verb + bright
|
|
3
|
+
* `{model} {Spec} agent`. Prompt (and spec one-liner) ride the composer
|
|
4
|
+
* stack — same T-join as MCP options / shell command. Not a pin.
|
|
5
|
+
*
|
|
6
|
+
* Stdlib one-liners match the named-agent bot table
|
|
7
|
+
* (`packages/harness/src/server/system-plugins/named-agents/agent-stdlib.ts`). User recipes
|
|
8
|
+
* in `KernelRoot.bots` win on the same name.
|
|
9
|
+
*/
|
|
10
|
+
import { CallJob, AgentMessageJob } from "@inhuman.tools/harness-model";
|
|
11
|
+
/** CHANGE ONLY with packages/harness/src/server/system-plugins/named-agents/agent-stdlib.ts one-liners. */
|
|
12
|
+
export declare const STDLIB_AGENT_DESCRIPTIONS: Readonly<Record<string, string>>;
|
|
13
|
+
export type AgentCoverVerb = "ask" | "send" | "message";
|
|
14
|
+
export type CoverAskContext = {
|
|
15
|
+
/** Session `kvs.model` — the worker inherits this at mint. */
|
|
16
|
+
readonly model?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function agentCoverVerb(work: CallJob | AgentMessageJob): AgentCoverVerb;
|
|
19
|
+
export declare function agentSpecKey(work: object | null | undefined): string;
|
|
20
|
+
/** `quick-search` → `Quick Search`. Sentinel `agent` is anonymous, not a spec. */
|
|
21
|
+
export declare function titleAgentSpec(spec: string): string;
|
|
22
|
+
export declare function formatAskAgentWho(spec: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Occupancy pin list. Oxford comma comes from `Intl.ListFormat` (`en-US`).
|
|
25
|
+
* Noun is English v1 — one `agent` / many `agents` on the whole list.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatWaitingForAgents(specs: readonly string[], locale?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Isolated-cover rim. Markdown: furniture verb + `**bright**` who.
|
|
30
|
+
* Message does not spawn — no model. Empty spec is still `… agent`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatAgentCoverAnnotation(opts: {
|
|
33
|
+
readonly verb: AgentCoverVerb;
|
|
34
|
+
readonly model: string;
|
|
35
|
+
readonly spec: string;
|
|
36
|
+
}): string;
|
|
37
|
+
export declare function agentCoverPrompt(work: CallJob | AgentMessageJob): string;
|
|
38
|
+
export declare function agentAskStackedBody(prompt: string, description: string): string;
|
|
39
|
+
export declare function agentExpandBlock(prompt: string, model: string): string;
|
|
40
|
+
export declare function agentRecipeDescription(bots: Readonly<Record<string, {
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
}>>, spec: string): string;
|
|
43
|
+
//# sourceMappingURL=agent-cover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-cover.d.ts","sourceRoot":"","sources":["../../src/text/agent-cover.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAgB,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAKlG,2GAA2G;AAC3G,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUtE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAG9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcpE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,SAAU,GAAG,MAAM,CASzF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAKT;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,MAAM,CAExE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EACjE,IAAI,EAAE,MAAM,GACX,MAAM,CAMR"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask-cover copy for agent send/ask/message. Rim is dim verb + bright
|
|
3
|
+
* `{model} {Spec} agent`. Prompt (and spec one-liner) ride the composer
|
|
4
|
+
* stack — same T-join as MCP options / shell command. Not a pin.
|
|
5
|
+
*
|
|
6
|
+
* Stdlib one-liners match the named-agent bot table
|
|
7
|
+
* (`packages/harness/src/server/system-plugins/named-agents/agent-stdlib.ts`). User recipes
|
|
8
|
+
* in `KernelRoot.bots` win on the same name.
|
|
9
|
+
*/
|
|
10
|
+
import { AgentCallJob, CallJob, AgentMessageJob, BotCallJob } from "@inhuman.tools/harness-model";
|
|
11
|
+
/** Wire name. Ask stamps `voidLegal` false; send and bot-call stay send. */
|
|
12
|
+
const AGENT_ASK_NAME = "agent__ask";
|
|
13
|
+
/** CHANGE ONLY with packages/harness/src/server/system-plugins/named-agents/agent-stdlib.ts one-liners. */
|
|
14
|
+
export const STDLIB_AGENT_DESCRIPTIONS = {
|
|
15
|
+
"quick-search": "cite matching paths; agent/ask for map",
|
|
16
|
+
explore: "thorough read-only repo investigation",
|
|
17
|
+
"web-research": "search and extract the public web; cite sources",
|
|
18
|
+
implementer: "isolated change from a brief; agent/ask for no history",
|
|
19
|
+
"test-writer": "write and run tests for a named surface",
|
|
20
|
+
"security-auditor": "find exploitable issues; do not patch",
|
|
21
|
+
"design-writer": "write a design doc from a brief",
|
|
22
|
+
"design-reviewer": "stress-test a design; do not rewrite it",
|
|
23
|
+
reviewer: "persistent reviewer for this session; later requests continue the same conversation",
|
|
24
|
+
};
|
|
25
|
+
export function agentCoverVerb(work) {
|
|
26
|
+
if (work instanceof AgentMessageJob)
|
|
27
|
+
return "message";
|
|
28
|
+
return !work.voidLegal || work.name === AGENT_ASK_NAME || work.name === "bot__ask" ? "ask" : "send";
|
|
29
|
+
}
|
|
30
|
+
export function agentSpecKey(work) {
|
|
31
|
+
if (work instanceof CallJob) {
|
|
32
|
+
const spec = stringArg(work.args, "spec")?.trim() ?? "";
|
|
33
|
+
if (spec !== "")
|
|
34
|
+
return spec;
|
|
35
|
+
const bot = work instanceof BotCallJob ? work.botName.trim() || work.contributionBotName.trim() : "";
|
|
36
|
+
if (bot !== "")
|
|
37
|
+
return bot;
|
|
38
|
+
const face = work instanceof AgentCallJob ? (work.faceName ?? "").trim() : "";
|
|
39
|
+
if (face !== "" && face !== "anonymous")
|
|
40
|
+
return face;
|
|
41
|
+
return "";
|
|
42
|
+
}
|
|
43
|
+
if (work instanceof AgentMessageJob) {
|
|
44
|
+
return stringArg(work.args, "targetName")?.trim() ?? "";
|
|
45
|
+
}
|
|
46
|
+
return "";
|
|
47
|
+
}
|
|
48
|
+
/** `quick-search` → `Quick Search`. Sentinel `agent` is anonymous, not a spec. */
|
|
49
|
+
export function titleAgentSpec(spec) {
|
|
50
|
+
const raw = (typeof spec === "string" ? spec : "").trim();
|
|
51
|
+
if (raw === "" || raw === "agent")
|
|
52
|
+
return "";
|
|
53
|
+
return raw
|
|
54
|
+
.split(/[-_]+/)
|
|
55
|
+
.filter((part) => part !== "")
|
|
56
|
+
.map((part) => (part.length <= 3 ? part.toUpperCase() : part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()))
|
|
57
|
+
.join(" ");
|
|
58
|
+
}
|
|
59
|
+
export function formatAskAgentWho(spec) {
|
|
60
|
+
const titled = titleAgentSpec(spec);
|
|
61
|
+
return titled === "" ? "agent" : `${titled} agent`;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Occupancy pin list. Oxford comma comes from `Intl.ListFormat` (`en-US`).
|
|
65
|
+
* Noun is English v1 — one `agent` / many `agents` on the whole list.
|
|
66
|
+
*/
|
|
67
|
+
export function formatWaitingForAgents(specs, locale = "en-US") {
|
|
68
|
+
const names = [...specs].map((spec) => titleAgentSpec(spec)).filter((name) => name !== "");
|
|
69
|
+
if (names.length === 0) {
|
|
70
|
+
if (specs.length === 0)
|
|
71
|
+
return "";
|
|
72
|
+
return specs.length === 1 ? "waiting for an agent" : "waiting for agents";
|
|
73
|
+
}
|
|
74
|
+
const who = new Intl.ListFormat(locale, { style: "long", type: "conjunction" }).format(names);
|
|
75
|
+
const noun = names.length === 1 ? "agent" : "agents";
|
|
76
|
+
return `waiting for ${who} ${noun}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Isolated-cover rim. Markdown: furniture verb + `**bright**` who.
|
|
80
|
+
* Message does not spawn — no model. Empty spec is still `… agent`.
|
|
81
|
+
*/
|
|
82
|
+
export function formatAgentCoverAnnotation(opts) {
|
|
83
|
+
const model = opts.verb === "message" ? "" : opts.model.trim();
|
|
84
|
+
const spec = titleAgentSpec(opts.spec);
|
|
85
|
+
const who = [model, spec, "agent"].filter((part) => part !== "").join(" ");
|
|
86
|
+
return `${opts.verb} **${who}**`;
|
|
87
|
+
}
|
|
88
|
+
export function agentCoverPrompt(work) {
|
|
89
|
+
return stringArg(work.args, "message") ?? "";
|
|
90
|
+
}
|
|
91
|
+
export function agentAskStackedBody(prompt, description) {
|
|
92
|
+
const desc = description.trim();
|
|
93
|
+
if (desc === "")
|
|
94
|
+
return prompt;
|
|
95
|
+
if (prompt === "")
|
|
96
|
+
return desc;
|
|
97
|
+
return `${desc}\n\n${prompt}`;
|
|
98
|
+
}
|
|
99
|
+
export function agentExpandBlock(prompt, model) {
|
|
100
|
+
const body = prompt.trim();
|
|
101
|
+
const who = model.trim();
|
|
102
|
+
if (who === "")
|
|
103
|
+
return body;
|
|
104
|
+
if (body === "")
|
|
105
|
+
return who;
|
|
106
|
+
return `${body}\n${who}`;
|
|
107
|
+
}
|
|
108
|
+
export function agentRecipeDescription(bots, spec) {
|
|
109
|
+
const key = spec.trim();
|
|
110
|
+
if (key === "")
|
|
111
|
+
return "";
|
|
112
|
+
const fromFile = (bots[key]?.description ?? "").trim();
|
|
113
|
+
if (fromFile !== "")
|
|
114
|
+
return fromFile;
|
|
115
|
+
return STDLIB_AGENT_DESCRIPTIONS[key] ?? "";
|
|
116
|
+
}
|
|
117
|
+
function stringArg(args, key) {
|
|
118
|
+
if (args === null)
|
|
119
|
+
return undefined;
|
|
120
|
+
const value = args[key];
|
|
121
|
+
return typeof value === "string" && value !== "" ? value : undefined;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=agent-cover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-cover.js","sourceRoot":"","sources":["../../src/text/agent-cover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function shellFormatGeneration(): number;
|
|
2
|
+
/** Cached reprint, or `src` until WASM print settles / if parse fails. */
|
|
3
|
+
export declare function formatShellCommand(src: string): string;
|
|
4
|
+
export declare function formatShellCommandReady(src: string): Promise<string>;
|
|
5
|
+
//# sourceMappingURL=format-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-shell.d.ts","sourceRoot":"","sources":["../../src/text/format-shell.ts"],"names":[],"mappings":"AAYA,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display-only shfmt reprint of a shell command. Never rewrite argsJson.
|
|
3
|
+
* sh-syntax instantiates WASM per print and is async — cache the result;
|
|
4
|
+
* parse failure is identity. File print's trailing newline is stripped.
|
|
5
|
+
*/
|
|
6
|
+
import { observable, runInAction } from "mobx";
|
|
7
|
+
import { print } from "sh-syntax";
|
|
8
|
+
const generation = observable.box(0);
|
|
9
|
+
const cache = new Map();
|
|
10
|
+
const pending = new Map();
|
|
11
|
+
export function shellFormatGeneration() {
|
|
12
|
+
return generation.get();
|
|
13
|
+
}
|
|
14
|
+
/** Cached reprint, or `src` until WASM print settles / if parse fails. */
|
|
15
|
+
export function formatShellCommand(src) {
|
|
16
|
+
const hit = cache.get(src);
|
|
17
|
+
if (hit !== undefined)
|
|
18
|
+
return hit;
|
|
19
|
+
generation.get(); // MobX subscribe — WASM settle increments this so reprint rerenders. Not a dead call.
|
|
20
|
+
schedule(src);
|
|
21
|
+
return src;
|
|
22
|
+
}
|
|
23
|
+
export async function formatShellCommandReady(src) {
|
|
24
|
+
const hit = cache.get(src);
|
|
25
|
+
if (hit !== undefined)
|
|
26
|
+
return hit;
|
|
27
|
+
schedule(src);
|
|
28
|
+
await pending.get(src);
|
|
29
|
+
return cache.get(src) ?? src;
|
|
30
|
+
}
|
|
31
|
+
function schedule(src) {
|
|
32
|
+
if (src === "" || pending.has(src) || cache.has(src))
|
|
33
|
+
return;
|
|
34
|
+
const work = (async () => {
|
|
35
|
+
try {
|
|
36
|
+
const out = await print(src);
|
|
37
|
+
const formatted = out.replaceAll(/\n+$/g, "");
|
|
38
|
+
const next = formatted === "" ? src : formatted;
|
|
39
|
+
cache.set(src, next);
|
|
40
|
+
if (next !== src) {
|
|
41
|
+
runInAction(() => generation.set(generation.get() + 1));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
cache.set(src, src);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
pending.delete(src);
|
|
49
|
+
}
|
|
50
|
+
})();
|
|
51
|
+
pending.set(src, work);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=format-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-shell.js","sourceRoot":"","sources":["../../src/text/format-shell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEjD,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,sFAAsF;IACxG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAW;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,GAAG,KAAK,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7D,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity line from argsJson. Never a file count. No duration.
|
|
3
|
+
* Scheme outer is sugarcoat of expr(); tools use .name + args.
|
|
4
|
+
* Shell tape skips pretty-mcp `run`/`ran` — gutter `$`, bash command
|
|
5
|
+
* (or optional `description` on the collapsed row). A cwd other than `.`
|
|
6
|
+
* is the line after that call, not a right column. No `exit N` — fail
|
|
7
|
+
* is the gutter. Command display is an shfmt reprint; argsJson is what runs.
|
|
8
|
+
*/
|
|
9
|
+
import { CallJob, type KernelRoot, ProgrammaticJob, ToolCallJob, TurnNotificationChunk } from "@inhuman.tools/harness-model";
|
|
10
|
+
import { type CoverAskContext as AgentCoverAskContext } from "./agent-cover.js";
|
|
11
|
+
export type CoverAskContext = AgentCoverAskContext & {
|
|
12
|
+
readonly kernel?: KernelRoot | null;
|
|
13
|
+
/** Recipe name when a worker tool (not the spawn) sits on the host cover. */
|
|
14
|
+
readonly agentSpec?: string;
|
|
15
|
+
};
|
|
16
|
+
/** Wire name of the scheme-repl bag. Same string as SCHEME_REPL_TOOL_NAME. */
|
|
17
|
+
export declare const SCHEME_REPL_NAME = "scheme_repl";
|
|
18
|
+
/** Wire name of the scheme-watch bag. Same string as SCHEME_WATCH_TOOL_NAME. */
|
|
19
|
+
export declare const SCHEME_WATCH_NAME = "scheme_watch";
|
|
20
|
+
/** Collapsed caption XOR the program. Both bags, not only the repl. */
|
|
21
|
+
export declare function isSchemeBagName(name: string): boolean;
|
|
22
|
+
export type IdentityLine = {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly object: string;
|
|
25
|
+
readonly status: string;
|
|
26
|
+
/** Collapsed tape token. Command / expr (`object`) is on expand. */
|
|
27
|
+
readonly caption?: string;
|
|
28
|
+
/** pretty-mcp telegram is the whole row; `name` stays the wire name. */
|
|
29
|
+
readonly pretty?: boolean;
|
|
30
|
+
readonly block?: string;
|
|
31
|
+
readonly agent?: boolean;
|
|
32
|
+
};
|
|
33
|
+
export declare const CAPTION_MAX_CODE_POINTS = 80;
|
|
34
|
+
/** TUI emits `…`. sdk glance `clampChars` does not — sharing the helper drops the ellipsis. */
|
|
35
|
+
export declare function captionFromArgs(args: Record<string, unknown> | null): string | undefined;
|
|
36
|
+
export declare function tailEllipsis(path: string, width: number): string;
|
|
37
|
+
export declare function isPathShapedName(name: string): boolean;
|
|
38
|
+
/** File mutations paint as open Diff blocks; identity is the path, not a telegram. */
|
|
39
|
+
export declare function isMutateName(name: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* True when edit/create args would paint a Diff (pin or sealed).
|
|
42
|
+
* `write_file` that existed without stored prior text is not a create Diff —
|
|
43
|
+
* same cut as `writeFileDiff` in work-cells. A prior held in a blob is stored:
|
|
44
|
+
* its text arrives after the document names it.
|
|
45
|
+
*/
|
|
46
|
+
export declare function mutateArgsHaveDiff(work: ToolCallJob): boolean;
|
|
47
|
+
export declare function pluginFaceIdentity(work: ToolCallJob | ProgrammaticJob, kernel?: KernelRoot | null): IdentityLine | null;
|
|
48
|
+
/** Path + optional status. No wire name — the gutter already marks the row. */
|
|
49
|
+
export declare function formatMutateIdentity(line: Pick<IdentityLine, "object" | "status">, width: number): string;
|
|
50
|
+
export declare function identityLine(work: ToolCallJob | ProgrammaticJob, kernel?: KernelRoot | null): IdentityLine;
|
|
51
|
+
export declare function formatIdentity(line: IdentityLine, width: number, pathShaped: boolean): string;
|
|
52
|
+
export declare function agentCallName(work: CallJob): string;
|
|
53
|
+
export declare function agentSpawnPrompt(work: CallJob): string;
|
|
54
|
+
export declare function notificationPaintText(chunk: TurnNotificationChunk): string;
|
|
55
|
+
/** Successful cutoff, or the human notice on a failed CompactJob. */
|
|
56
|
+
export declare function compactJobPaintText(notice: string, focus: string, failed: boolean): string;
|
|
57
|
+
/**
|
|
58
|
+
* Isolated-cover rim (omnibox top-right). Markdown: furniture + `**bright**`
|
|
59
|
+
* (chrome lifts emphasis to primary). MCP is server + action. Shell is
|
|
60
|
+
* `run command` plus the cwd token when set — the command itself is the
|
|
61
|
+
* composer stack, not this slot. Agent send/ask is dim `ask`/`send` + bright
|
|
62
|
+
* `{model} {Spec} agent`; the prompt rides the stack. A worker tool on the
|
|
63
|
+
* host cover prefixes `**{Spec} agent** ·` so the who is not the host.
|
|
64
|
+
*/
|
|
65
|
+
export declare function coverAskAnnotation(work: object | null | undefined, ctx?: CoverAskContext): string | undefined;
|
|
66
|
+
export declare function shellAskCommand(work: object | null | undefined): string | undefined;
|
|
67
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/text/identity.ts"],"names":[],"mappings":"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"}
|