deepclause-sdk 0.0.89 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +417 -948
- package/dist/agent.d.ts +18 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +74 -21
- package/dist/agent.js.map +1 -1
- package/dist/cli/config.d.ts +323 -176
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +146 -188
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.d.ts +3 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +61 -425
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/login.d.ts +29 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +184 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/readline.d.ts +6 -0
- package/dist/cli/readline.d.ts.map +1 -0
- package/dist/cli/readline.js +15 -0
- package/dist/cli/readline.js.map +1 -0
- package/dist/cli/repl-bin.d.ts +9 -0
- package/dist/cli/repl-bin.d.ts.map +1 -0
- package/dist/cli/repl-bin.js +16 -0
- package/dist/cli/repl-bin.js.map +1 -0
- package/dist/cli/repl.d.ts +191 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +1232 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli/run.d.ts +17 -18
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +196 -183
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/set-backend.d.ts +53 -0
- package/dist/cli/set-backend.d.ts.map +1 -0
- package/dist/cli/set-backend.js +259 -0
- package/dist/cli/set-backend.js.map +1 -0
- package/dist/cli/visualize.d.ts +38 -0
- package/dist/cli/visualize.d.ts.map +1 -0
- package/dist/cli/visualize.js +125 -0
- package/dist/cli/visualize.js.map +1 -0
- package/dist/compiler.d.ts +5 -52
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +4 -768
- package/dist/compiler.js.map +1 -1
- package/dist/index.d.ts +27 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/prolog/bridge.d.ts +3 -1
- package/dist/prolog/bridge.d.ts.map +1 -1
- package/dist/prolog/bridge.js +8 -1
- package/dist/prolog/bridge.js.map +1 -1
- package/dist/prolog-src/deepclause_analysis.pl +10 -2
- package/dist/prolog-src/deepclause_mi.pl +2245 -41
- package/dist/repl/agent.d.ts +72 -0
- package/dist/repl/agent.d.ts.map +1 -0
- package/dist/repl/agent.js +366 -0
- package/dist/repl/agent.js.map +1 -0
- package/dist/repl/auth.d.ts +45 -0
- package/dist/repl/auth.d.ts.map +1 -0
- package/dist/repl/auth.js +116 -0
- package/dist/repl/auth.js.map +1 -0
- package/dist/repl/backend.d.ts +290 -0
- package/dist/repl/backend.d.ts.map +1 -0
- package/dist/repl/backend.js +370 -0
- package/dist/repl/backend.js.map +1 -0
- package/dist/repl/compaction.d.ts +122 -0
- package/dist/repl/compaction.d.ts.map +1 -0
- package/dist/repl/compaction.js +318 -0
- package/dist/repl/compaction.js.map +1 -0
- package/dist/repl/export.d.ts +30 -0
- package/dist/repl/export.d.ts.map +1 -0
- package/dist/repl/export.js +23 -0
- package/dist/repl/export.js.map +1 -0
- package/dist/repl/frames.d.ts +21 -0
- package/dist/repl/frames.d.ts.map +1 -0
- package/dist/repl/frames.js +79 -0
- package/dist/repl/frames.js.map +1 -0
- package/dist/repl/harness-tools.d.ts +74 -0
- package/dist/repl/harness-tools.d.ts.map +1 -0
- package/dist/repl/harness-tools.js +121 -0
- package/dist/repl/harness-tools.js.map +1 -0
- package/dist/repl/highlight.d.ts +30 -0
- package/dist/repl/highlight.d.ts.map +1 -0
- package/dist/repl/highlight.js +285 -0
- package/dist/repl/highlight.js.map +1 -0
- package/dist/repl/history.d.ts +234 -0
- package/dist/repl/history.d.ts.map +1 -0
- package/dist/repl/history.js +661 -0
- package/dist/repl/history.js.map +1 -0
- package/dist/repl/index.d.ts +120 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/repl/index.js +107 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/repl/judge.d.ts +51 -0
- package/dist/repl/judge.d.ts.map +1 -0
- package/dist/repl/judge.js +58 -0
- package/dist/repl/judge.js.map +1 -0
- package/dist/repl/markdown.d.ts +25 -0
- package/dist/repl/markdown.d.ts.map +1 -0
- package/dist/repl/markdown.js +103 -0
- package/dist/repl/markdown.js.map +1 -0
- package/dist/repl/picker.d.ts +34 -0
- package/dist/repl/picker.d.ts.map +1 -0
- package/dist/repl/picker.js +81 -0
- package/dist/repl/picker.js.map +1 -0
- package/dist/repl/project-context.d.ts +16 -0
- package/dist/repl/project-context.d.ts.map +1 -0
- package/dist/repl/project-context.js +23 -0
- package/dist/repl/project-context.js.map +1 -0
- package/dist/repl/render.d.ts +160 -0
- package/dist/repl/render.d.ts.map +1 -0
- package/dist/repl/render.js +715 -0
- package/dist/repl/render.js.map +1 -0
- package/dist/repl/session.d.ts +356 -0
- package/dist/repl/session.d.ts.map +1 -0
- package/dist/repl/session.js +1275 -0
- package/dist/repl/session.js.map +1 -0
- package/dist/repl/status.d.ts +100 -0
- package/dist/repl/status.d.ts.map +1 -0
- package/dist/repl/status.js +218 -0
- package/dist/repl/status.js.map +1 -0
- package/dist/repl/tools.d.ts +53 -0
- package/dist/repl/tools.d.ts.map +1 -0
- package/dist/repl/tools.js +307 -0
- package/dist/repl/tools.js.map +1 -0
- package/dist/repl/toolset.d.ts +32 -0
- package/dist/repl/toolset.d.ts.map +1 -0
- package/dist/repl/toolset.js +82 -0
- package/dist/repl/toolset.js.map +1 -0
- package/dist/repl/tui/editor.d.ts +17 -0
- package/dist/repl/tui/editor.d.ts.map +1 -0
- package/dist/repl/tui/editor.js +39 -0
- package/dist/repl/tui/editor.js.map +1 -0
- package/dist/repl/tui/status-bar.d.ts +26 -0
- package/dist/repl/tui/status-bar.d.ts.map +1 -0
- package/dist/repl/tui/status-bar.js +47 -0
- package/dist/repl/tui/status-bar.js.map +1 -0
- package/dist/repl/tui/theme.d.ts +30 -0
- package/dist/repl/tui/theme.d.ts.map +1 -0
- package/dist/repl/tui/theme.js +81 -0
- package/dist/repl/tui/theme.js.map +1 -0
- package/dist/repl/tui/transcript.d.ts +39 -0
- package/dist/repl/tui/transcript.d.ts.map +1 -0
- package/dist/repl/tui/transcript.js +123 -0
- package/dist/repl/tui/transcript.js.map +1 -0
- package/dist/runner.d.ts +132 -13
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +434 -277
- package/dist/runner.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +0 -32
- package/dist/sdk.js.map +1 -1
- package/dist/system/assets/docs/AGENT_PROMPT.md +1373 -0
- package/dist/system/assets/docs/DML_AUTHORING.md +195 -0
- package/dist/system/assets/docs/DML_REFERENCE.md +312 -72
- package/dist/system/assets/docs/HARNESS_EXAMPLES.md +172 -0
- package/dist/system/assets/docs/HARNESS_PATTERNS.md +562 -0
- package/dist/system/assets/docs/META_PROMPT.md +68 -0
- package/dist/system/assets/docs/PROLOG_SNIPPETS.md +117 -0
- package/dist/system/assets/index.d.ts +9 -17
- package/dist/system/assets/index.d.ts.map +1 -1
- package/dist/system/assets/index.js +26 -85
- package/dist/system/assets/index.js.map +1 -1
- package/dist/system/runtime/agentvm-manager.d.ts +9 -2
- package/dist/system/runtime/agentvm-manager.d.ts.map +1 -1
- package/dist/system/runtime/agentvm-manager.js +70 -44
- package/dist/system/runtime/agentvm-manager.js.map +1 -1
- package/dist/system/runtime/media.d.ts +23 -0
- package/dist/system/runtime/media.d.ts.map +1 -0
- package/dist/system/runtime/media.js +55 -0
- package/dist/system/runtime/media.js.map +1 -0
- package/dist/system/runtime/shell-limits.d.ts +21 -0
- package/dist/system/runtime/shell-limits.d.ts.map +1 -0
- package/dist/system/runtime/shell-limits.js +39 -0
- package/dist/system/runtime/shell-limits.js.map +1 -0
- package/dist/system/runtime/shell-manager.d.ts +8 -3
- package/dist/system/runtime/shell-manager.d.ts.map +1 -1
- package/dist/system/runtime/shell-manager.js +56 -39
- package/dist/system/runtime/shell-manager.js.map +1 -1
- package/dist/system/runtime/shell-tool-events.js +5 -0
- package/dist/system/runtime/shell-tool-events.js.map +1 -1
- package/dist/system/runtime/token-usage.d.ts +2 -0
- package/dist/system/runtime/token-usage.d.ts.map +1 -1
- package/dist/system/runtime/token-usage.js +7 -0
- package/dist/system/runtime/token-usage.js.map +1 -1
- package/dist/tools.d.ts +3 -21
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +14 -168
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +80 -118
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts +19 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +338 -0
- package/dist/validate.js.map +1 -0
- package/dist/visualize/index.d.ts +52 -0
- package/dist/visualize/index.d.ts.map +1 -0
- package/dist/visualize/index.js +189 -0
- package/dist/visualize/index.js.map +1 -0
- package/package.json +17 -15
- package/src/prolog-src/deepclause_analysis.pl +10 -2
- package/src/prolog-src/deepclause_mi.pl +2245 -41
- package/dist/cli/commands.d.ts +0 -42
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -246
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/compile.d.ts +0 -99
- package/dist/cli/compile.d.ts.map +0 -1
- package/dist/cli/compile.js +0 -363
- package/dist/cli/compile.js.map +0 -1
- package/dist/cli/default-skills.d.ts +0 -10
- package/dist/cli/default-skills.d.ts.map +0 -1
- package/dist/cli/default-skills.js +0 -206
- package/dist/cli/default-skills.js.map +0 -1
- package/dist/cli/interactive.d.ts +0 -2
- package/dist/cli/interactive.d.ts.map +0 -1
- package/dist/cli/interactive.js +0 -20
- package/dist/cli/interactive.js.map +0 -1
- package/dist/cli/mcp.d.ts +0 -56
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js +0 -138
- package/dist/cli/mcp.js.map +0 -1
- package/dist/cli/prompt.d.ts +0 -2
- package/dist/cli/prompt.d.ts.map +0 -1
- package/dist/cli/prompt.js +0 -2
- package/dist/cli/prompt.js.map +0 -1
- package/dist/cli/search.d.ts +0 -19
- package/dist/cli/search.d.ts.map +0 -1
- package/dist/cli/search.js +0 -189
- package/dist/cli/search.js.map +0 -1
- package/dist/cli/tool-args.d.ts +0 -2
- package/dist/cli/tool-args.d.ts.map +0 -1
- package/dist/cli/tool-args.js +0 -39
- package/dist/cli/tool-args.js.map +0 -1
- package/dist/cli/tools.d.ts +0 -36
- package/dist/cli/tools.d.ts.map +0 -1
- package/dist/cli/tools.js +0 -229
- package/dist/cli/tools.js.map +0 -1
- package/dist/cli/tui/index.d.ts +0 -22
- package/dist/cli/tui/index.d.ts.map +0 -1
- package/dist/cli/tui/index.js +0 -29
- package/dist/cli/tui/index.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -167
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -5228
- package/dist/cli/tui.js.map +0 -1
- package/dist/compiler_prompt.d.ts +0 -20
- package/dist/compiler_prompt.d.ts.map +0 -1
- package/dist/compiler_prompt.js +0 -870
- package/dist/compiler_prompt.js.map +0 -1
- package/dist/deepclause-cli.skill +0 -0
- package/dist/prolog-src/deepclause_mi.pl.bak +0 -570
- package/dist/system/assets/docs/CONDUCTOR_PROMPT.md +0 -105
- package/dist/system/assets/docs/DML_COMPILER_PROMPT.md +0 -700
- package/dist/system/assets/docs/TUI.md +0 -150
- package/dist/system/assets/recipes/deepclause-coding-workflow/SKILL.md +0 -100
- package/dist/system/assets/skills/conductor.dml +0 -76
- package/dist/system/assets/skills/deep-planner.dml +0 -412
- package/dist/system/assets/skills/plan.dml +0 -429
- package/dist/system/assets/skills/security-planner.dml +0 -337
- package/dist/system/assets/skills/skill-creator.dml +0 -187
- package/dist/system/runtime/catalog-recipes.d.ts +0 -24
- package/dist/system/runtime/catalog-recipes.d.ts.map +0 -1
- package/dist/system/runtime/catalog-recipes.js +0 -273
- package/dist/system/runtime/catalog-recipes.js.map +0 -1
- package/dist/system/runtime/catalog-skills.d.ts +0 -50
- package/dist/system/runtime/catalog-skills.d.ts.map +0 -1
- package/dist/system/runtime/catalog-skills.js +0 -152
- package/dist/system/runtime/catalog-skills.js.map +0 -1
- package/dist/system/runtime/conductor.d.ts +0 -105
- package/dist/system/runtime/conductor.d.ts.map +0 -1
- package/dist/system/runtime/conductor.js +0 -732
- package/dist/system/runtime/conductor.js.map +0 -1
- package/dist/system/runtime/console-capture.d.ts +0 -9
- package/dist/system/runtime/console-capture.d.ts.map +0 -1
- package/dist/system/runtime/console-capture.js +0 -67
- package/dist/system/runtime/console-capture.js.map +0 -1
- package/dist/system/runtime/dml-executor.d.ts +0 -52
- package/dist/system/runtime/dml-executor.d.ts.map +0 -1
- package/dist/system/runtime/dml-executor.js +0 -203
- package/dist/system/runtime/dml-executor.js.map +0 -1
- package/dist/system/runtime/runtime-tools.d.ts +0 -31
- package/dist/system/runtime/runtime-tools.d.ts.map +0 -1
- package/dist/system/runtime/runtime-tools.js +0 -312
- package/dist/system/runtime/runtime-tools.js.map +0 -1
- package/dist/system/runtime/skill-creator.d.ts +0 -38
- package/dist/system/runtime/skill-creator.d.ts.map +0 -1
- package/dist/system/runtime/skill-creator.js +0 -763
- package/dist/system/runtime/skill-creator.js.map +0 -1
- package/src/prolog-src/deepclause_mi.pl.bak +0 -570
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/repl/tui/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAyBxE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAGzC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,MAAM,CAMjF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,8DAA8D;AAC9D,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,mDAAmD;AACnD,wBAAgB,WAAW,IAAI,WAAW,CAWzC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal ANSI theme for the REPL TUI.
|
|
3
|
+
*
|
|
4
|
+
* The transcript is fed by `ReplRenderer` (rich mode) and the status bar is
|
|
5
|
+
* rendered as plain text; these helpers add the few colors the TUI itself owns
|
|
6
|
+
* (user-message blocks, the editor border, and the dim footer).
|
|
7
|
+
*/
|
|
8
|
+
import { visibleWidth } from '@earendil-works/pi-tui';
|
|
9
|
+
const ANSI = {
|
|
10
|
+
reset: '\u001b[0m',
|
|
11
|
+
bold: '\u001b[1m',
|
|
12
|
+
dim: '\u001b[2m',
|
|
13
|
+
cyan: '\u001b[36m',
|
|
14
|
+
yellow: '\u001b[33m',
|
|
15
|
+
/** Blueish chrome for the input/status area border. */
|
|
16
|
+
border: '\u001b[38;5;75m',
|
|
17
|
+
/** Orange "input needed" border/label for ask_user / input/2. */
|
|
18
|
+
prompt: '\u001b[38;5;214m',
|
|
19
|
+
/** pi-style user message: blue background, bright foreground. */
|
|
20
|
+
userBg: '\u001b[48;5;24m',
|
|
21
|
+
userFg: '\u001b[38;5;255m',
|
|
22
|
+
/** Steering message: distinct amber background so it reads as an interjection. */
|
|
23
|
+
steerBg: '\u001b[48;5;94m',
|
|
24
|
+
steerFg: '\u001b[38;5;230m',
|
|
25
|
+
boldOff: '\u001b[22m',
|
|
26
|
+
};
|
|
27
|
+
function paint(text, code) {
|
|
28
|
+
return `${code}${text}${ANSI.reset}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Render one line of a user message as a full-width blue block (pi-style). The
|
|
32
|
+
* text is padded to the terminal width so the background spans the row.
|
|
33
|
+
*/
|
|
34
|
+
export function renderUserLine(text, width) {
|
|
35
|
+
const body = ` ${text} `;
|
|
36
|
+
const padding = Math.max(0, width - visibleWidth(body));
|
|
37
|
+
return `${ANSI.userBg}${ANSI.userFg}${body}${' '.repeat(padding)}${ANSI.reset}`;
|
|
38
|
+
}
|
|
39
|
+
/** An `ask_user` / `input/2` answer echo (distinct from a normal prompt). */
|
|
40
|
+
export function formatInputAnswer(text) {
|
|
41
|
+
return paint(`> ${text}`, ANSI.yellow);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Render one line of a steering message as a full-width amber block, prefixed
|
|
45
|
+
* with `Steering: ` on the first line. Padded to the terminal width.
|
|
46
|
+
*/
|
|
47
|
+
export const STEER_LABEL = ' Steering: ';
|
|
48
|
+
const STEER_INDENT = ' '.repeat(STEER_LABEL.length);
|
|
49
|
+
export function renderSteerLine(text, width, first = true) {
|
|
50
|
+
const label = first ? STEER_LABEL : STEER_INDENT;
|
|
51
|
+
const visible = label.length + visibleWidth(text);
|
|
52
|
+
const padding = Math.max(0, width - visible);
|
|
53
|
+
const labelStyled = first ? `${ANSI.bold}${STEER_LABEL}${ANSI.boldOff}` : label;
|
|
54
|
+
return `${ANSI.steerBg}${ANSI.steerFg}${labelStyled}${text}${' '.repeat(padding)}${ANSI.reset}`;
|
|
55
|
+
}
|
|
56
|
+
/** The border of the editing box while the runtime needs human input. */
|
|
57
|
+
export function promptBorder(text) {
|
|
58
|
+
return paint(text, ANSI.prompt);
|
|
59
|
+
}
|
|
60
|
+
/** The question shown inside the editing box while input is needed. */
|
|
61
|
+
export function promptLabel(text) {
|
|
62
|
+
return paint(text, `${ANSI.bold}${ANSI.prompt}`);
|
|
63
|
+
}
|
|
64
|
+
/** Dim the status bar so it recedes behind the transcript. */
|
|
65
|
+
export function dim(text) {
|
|
66
|
+
return paint(text, ANSI.dim);
|
|
67
|
+
}
|
|
68
|
+
/** Editor theme: a blue border, cyan selection. */
|
|
69
|
+
export function editorTheme() {
|
|
70
|
+
return {
|
|
71
|
+
borderColor: (text) => paint(text, ANSI.border),
|
|
72
|
+
selectList: {
|
|
73
|
+
selectedPrefix: (text) => paint(text, ANSI.cyan),
|
|
74
|
+
selectedText: (text) => paint(text, `${ANSI.bold}${ANSI.cyan}`),
|
|
75
|
+
description: (text) => paint(text, ANSI.dim),
|
|
76
|
+
scrollInfo: (text) => paint(text, ANSI.dim),
|
|
77
|
+
noMatch: (text) => paint(text, ANSI.dim),
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/repl/tui/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI transcript: a bounded, append-only view of rendered REPL output.
|
|
3
|
+
*
|
|
4
|
+
* The existing `ReplRenderer` (rich mode) writes its output through the
|
|
5
|
+
* `LineSink` into this component, so all of its formatting — tool panels,
|
|
6
|
+
* wrapped bash bodies, streamed text, compaction notices — is reused unchanged.
|
|
7
|
+
* User messages are stored with a style and rendered as pi-style blue blocks.
|
|
8
|
+
*/
|
|
9
|
+
import { type Component } from '@earendil-works/pi-tui';
|
|
10
|
+
export type TranscriptLineStyle = 'user' | 'steer';
|
|
11
|
+
/** A `Component` holding committed entries plus one live (unterminated) line. */
|
|
12
|
+
export declare class TranscriptComponent implements Component {
|
|
13
|
+
private entries;
|
|
14
|
+
private pending;
|
|
15
|
+
private readonly maxLines;
|
|
16
|
+
/** Called whenever content changes so the TUI can schedule a render. */
|
|
17
|
+
onChange?: () => void;
|
|
18
|
+
constructor(maxLines?: number);
|
|
19
|
+
append(line: string, style?: TranscriptLineStyle): void;
|
|
20
|
+
setPending(line: string): void;
|
|
21
|
+
getLines(): string[];
|
|
22
|
+
clear(): void;
|
|
23
|
+
render(width: number): string[];
|
|
24
|
+
invalidate(): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A write sink that translates the renderer's stream (which uses `\r` and
|
|
28
|
+
* `\n` for in-place updates) into committed transcript lines plus one live line.
|
|
29
|
+
*
|
|
30
|
+
* ANSI color codes are preserved; the `ESC[K` "clear to end of line" sequence
|
|
31
|
+
* is dropped because the pending-line model already replaces the line.
|
|
32
|
+
*/
|
|
33
|
+
export declare class LineSink {
|
|
34
|
+
private readonly transcript;
|
|
35
|
+
private current;
|
|
36
|
+
constructor(transcript: TranscriptComponent);
|
|
37
|
+
write(chunk: string): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/repl/tui/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIxF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AAOnD,iFAAiF;AACjF,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;gBAEV,QAAQ,SAAO;IAI3B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAavD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B,QAAQ,IAAI,MAAM,EAAE;IAIpB,KAAK,IAAI,IAAI;IAMb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA8B/B,UAAU,IAAI,IAAI;CAGnB;AAED;;;;;;GAMG;AACH,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,OAAO,CAAM;gBAEQ,UAAU,EAAE,mBAAmB;IAE5D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CA4B3B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI transcript: a bounded, append-only view of rendered REPL output.
|
|
3
|
+
*
|
|
4
|
+
* The existing `ReplRenderer` (rich mode) writes its output through the
|
|
5
|
+
* `LineSink` into this component, so all of its formatting — tool panels,
|
|
6
|
+
* wrapped bash bodies, streamed text, compaction notices — is reused unchanged.
|
|
7
|
+
* User messages are stored with a style and rendered as pi-style blue blocks.
|
|
8
|
+
*/
|
|
9
|
+
import { visibleWidth, wrapTextWithAnsi } from '@earendil-works/pi-tui';
|
|
10
|
+
import { renderSteerLine, renderUserLine, STEER_LABEL } from './theme.js';
|
|
11
|
+
/** A `Component` holding committed entries plus one live (unterminated) line. */
|
|
12
|
+
export class TranscriptComponent {
|
|
13
|
+
entries = [];
|
|
14
|
+
pending = '';
|
|
15
|
+
maxLines;
|
|
16
|
+
/** Called whenever content changes so the TUI can schedule a render. */
|
|
17
|
+
onChange;
|
|
18
|
+
constructor(maxLines = 2000) {
|
|
19
|
+
this.maxLines = maxLines;
|
|
20
|
+
}
|
|
21
|
+
append(line, style) {
|
|
22
|
+
// Collapse runs of blank lines: block separators and user-message spacing
|
|
23
|
+
// can otherwise stack up.
|
|
24
|
+
if (line === '' && this.entries.length > 0 && this.entries[this.entries.length - 1].text === '') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.entries.push({ text: line, style });
|
|
28
|
+
if (this.entries.length > this.maxLines) {
|
|
29
|
+
this.entries.splice(0, this.entries.length - this.maxLines);
|
|
30
|
+
}
|
|
31
|
+
this.onChange?.();
|
|
32
|
+
}
|
|
33
|
+
setPending(line) {
|
|
34
|
+
this.pending = line;
|
|
35
|
+
this.onChange?.();
|
|
36
|
+
}
|
|
37
|
+
getLines() {
|
|
38
|
+
return this.entries.map((entry) => entry.text);
|
|
39
|
+
}
|
|
40
|
+
clear() {
|
|
41
|
+
this.entries = [];
|
|
42
|
+
this.pending = '';
|
|
43
|
+
this.onChange?.();
|
|
44
|
+
}
|
|
45
|
+
render(width) {
|
|
46
|
+
const source = this.pending
|
|
47
|
+
? [...this.entries, { text: this.pending }]
|
|
48
|
+
: this.entries;
|
|
49
|
+
if (width <= 0) {
|
|
50
|
+
return source.map((entry) => entry.text);
|
|
51
|
+
}
|
|
52
|
+
// The renderer wraps to the width captured when it was built; the terminal
|
|
53
|
+
// may resize, and streamed text is not pre-wrapped. Wrapping here guarantees
|
|
54
|
+
// every line fits, which `TuiMainScreen` requires.
|
|
55
|
+
const out = [];
|
|
56
|
+
for (const entry of source) {
|
|
57
|
+
// Styled blocks reserve room for their label/padding.
|
|
58
|
+
const wrapWidth = entry.style === 'user'
|
|
59
|
+
? Math.max(1, width - 2)
|
|
60
|
+
: entry.style === 'steer'
|
|
61
|
+
? Math.max(1, width - STEER_LABEL.length)
|
|
62
|
+
: width;
|
|
63
|
+
const wrapped = visibleWidth(entry.text) <= wrapWidth
|
|
64
|
+
? [entry.text]
|
|
65
|
+
: wrapTextWithAnsi(entry.text, wrapWidth);
|
|
66
|
+
wrapped.forEach((line, index) => {
|
|
67
|
+
if (entry.style === 'user')
|
|
68
|
+
out.push(renderUserLine(line, width));
|
|
69
|
+
else if (entry.style === 'steer')
|
|
70
|
+
out.push(renderSteerLine(line, width, index === 0));
|
|
71
|
+
else
|
|
72
|
+
out.push(line);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
invalidate() {
|
|
78
|
+
// Stateless rendering: nothing cached.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A write sink that translates the renderer's stream (which uses `\r` and
|
|
83
|
+
* `\n` for in-place updates) into committed transcript lines plus one live line.
|
|
84
|
+
*
|
|
85
|
+
* ANSI color codes are preserved; the `ESC[K` "clear to end of line" sequence
|
|
86
|
+
* is dropped because the pending-line model already replaces the line.
|
|
87
|
+
*/
|
|
88
|
+
export class LineSink {
|
|
89
|
+
transcript;
|
|
90
|
+
current = '';
|
|
91
|
+
constructor(transcript) {
|
|
92
|
+
this.transcript = transcript;
|
|
93
|
+
}
|
|
94
|
+
write(chunk) {
|
|
95
|
+
let index = 0;
|
|
96
|
+
while (index < chunk.length) {
|
|
97
|
+
const char = chunk[index];
|
|
98
|
+
if (char === '\r') {
|
|
99
|
+
this.current = '';
|
|
100
|
+
index += 1;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (char === '\n') {
|
|
104
|
+
this.transcript.append(this.current);
|
|
105
|
+
this.current = '';
|
|
106
|
+
index += 1;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
// Drop "erase in line" (ESC[K) and "erase in display" (ESC[J) requests.
|
|
110
|
+
if (char === '\u001b' && chunk[index + 1] === '[') {
|
|
111
|
+
const match = /^\u001b\[[0-9;]*[JK]/.exec(chunk.slice(index));
|
|
112
|
+
if (match) {
|
|
113
|
+
index += match[0].length;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
this.current += char;
|
|
118
|
+
index += 1;
|
|
119
|
+
}
|
|
120
|
+
this.transcript.setPending(this.current);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/repl/tui/transcript.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -2,9 +2,22 @@
|
|
|
2
2
|
* DML Runner - Executes DML code using SWI-Prolog WASM
|
|
3
3
|
*/
|
|
4
4
|
import type { SWIPLModule } from './prolog/loader.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { DMLBinding, DMLEvent, FrameKind, MemoryMessage, LLMBackend, ToolDefinition, ToolPolicy, TypedVar } from './types.js';
|
|
6
6
|
import type { JudgeSelection } from './judge/types.js';
|
|
7
7
|
import { type ReasoningType } from './system/config/model-database.js';
|
|
8
|
+
/**
|
|
9
|
+
* Convert swipl-wasm value to plain JavaScript value
|
|
10
|
+
* Handles PrologString, PrologAtom, PrologList, etc.
|
|
11
|
+
*/
|
|
12
|
+
export declare function toJsValue(value: unknown): unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Decode the `bindings` payload of a goal-mode `solution` event.
|
|
15
|
+
*
|
|
16
|
+
* `collect_bindings/2` yields a list of `Name-Text` pairs. swipl-wasm encodes
|
|
17
|
+
* that compound as `{ '$t': 't', '-': [[Name, Text]] }`; a dict/array form is
|
|
18
|
+
* also accepted for forward compatibility.
|
|
19
|
+
*/
|
|
20
|
+
export declare function decodeSolutionBindings(raw: unknown): DMLBinding[];
|
|
8
21
|
export declare function decodeAgentOutputVars(rawOutputVars: unknown): (string | TypedVar)[];
|
|
9
22
|
export interface RunnerOptions {
|
|
10
23
|
model: string;
|
|
@@ -16,7 +29,14 @@ export interface RunnerOptions {
|
|
|
16
29
|
streaming?: boolean;
|
|
17
30
|
debug?: boolean;
|
|
18
31
|
providerOptions?: Record<string, Record<string, any>>;
|
|
19
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Host-provided TypeScript compaction (the REPL path). The callback may return
|
|
34
|
+
* a `memory_compaction` event to surface in the stream.
|
|
35
|
+
*/
|
|
36
|
+
compactMessages?: (messages: MemoryMessage[], lastInputTokens?: number) => Promise<{
|
|
37
|
+
messages: MemoryMessage[];
|
|
38
|
+
event?: DMLEvent;
|
|
39
|
+
}>;
|
|
20
40
|
reasoningType?: ReasoningType;
|
|
21
41
|
reasoningBudgetMap?: Record<string, number>;
|
|
22
42
|
contextWindow?: number;
|
|
@@ -30,12 +50,31 @@ export interface InternalRunOptions {
|
|
|
30
50
|
gasLimit?: number;
|
|
31
51
|
tools: Map<string, ToolDefinition>;
|
|
32
52
|
toolPolicy: ToolPolicy | null;
|
|
33
|
-
|
|
53
|
+
/** Returns the answer, or undefined to cancel/fail the input request. */
|
|
54
|
+
onInputRequired: (prompt: string) => Promise<string | undefined>;
|
|
34
55
|
signal?: AbortSignal;
|
|
35
56
|
initialMessages?: MemoryMessage[];
|
|
36
|
-
compaction?: CompactionOptions;
|
|
37
57
|
/** Per-run default judgment backend name override. */
|
|
38
58
|
judgeBackend?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Called before each model call. Return false to abort the turn when a
|
|
61
|
+
* budget is exhausted; may be async (e.g. to ask the user to continue).
|
|
62
|
+
*/
|
|
63
|
+
onModelCall?: () => boolean | Promise<boolean>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* A frame in the runner's reentrant execution stack.
|
|
67
|
+
*
|
|
68
|
+
* Frames are strictly depth-first: a parent frame is suspended at an
|
|
69
|
+
* `engine_yield` while a child frame runs to completion, so the per-session
|
|
70
|
+
* result/signal slots (`session_agent_result/2`, `session_pending_signal/2`, …)
|
|
71
|
+
* are never concurrently pending. This is what makes keying those slots by
|
|
72
|
+
* `SessionId` (rather than `FrameId`) safe.
|
|
73
|
+
*/
|
|
74
|
+
export interface Frame {
|
|
75
|
+
id: string;
|
|
76
|
+
kind: FrameKind;
|
|
77
|
+
depth: number;
|
|
39
78
|
}
|
|
40
79
|
/**
|
|
41
80
|
* DML execution engine
|
|
@@ -48,11 +87,18 @@ export interface InternalRunOptions {
|
|
|
48
87
|
export declare class DMLRunner {
|
|
49
88
|
private swipl;
|
|
50
89
|
private options;
|
|
51
|
-
private engine;
|
|
52
90
|
private sessionId;
|
|
53
91
|
private currentMemory;
|
|
54
92
|
private stepCounter;
|
|
55
93
|
private judgeCache;
|
|
94
|
+
/**
|
|
95
|
+
* Runner-owned frame table: FrameId -> { frame, engine }.
|
|
96
|
+
* The Prolog session owns the authoritative engine handles
|
|
97
|
+
* (session_frame_engine/2); this map mirrors them for the driver.
|
|
98
|
+
*/
|
|
99
|
+
private frames;
|
|
100
|
+
/** FrameId of the session's default query frame (created by createEngine). */
|
|
101
|
+
private defaultFrameId;
|
|
56
102
|
constructor(swipl: SWIPLModule, options: RunnerOptions);
|
|
57
103
|
/**
|
|
58
104
|
* Get the current conversation memory
|
|
@@ -62,6 +108,26 @@ export declare class DMLRunner {
|
|
|
62
108
|
* Run DML code and yield events
|
|
63
109
|
*/
|
|
64
110
|
run(code: string, options: InternalRunOptions): AsyncGenerator<DMLEvent>;
|
|
111
|
+
/**
|
|
112
|
+
* Drive a single frame until it finishes or errors, yielding its events.
|
|
113
|
+
*
|
|
114
|
+
* This is the extracted, reentrant form of the original `while(true)` loop.
|
|
115
|
+
* `run()` calls it for the default query frame; `runFrame` calls it for
|
|
116
|
+
* nested frames. Because frames are read from the Prolog frame table via
|
|
117
|
+
* `step_frame/4`, stepping a different frame never disturbs a suspended
|
|
118
|
+
* parent's engine.
|
|
119
|
+
*/
|
|
120
|
+
private stepLoop;
|
|
121
|
+
private stepLoopInner;
|
|
122
|
+
/**
|
|
123
|
+
* Run a specific frame to completion, yielding its events.
|
|
124
|
+
*
|
|
125
|
+
* This is the reentrant entry point used by nested execution (the REPL's
|
|
126
|
+
* `execute` meta tool): the caller builds a child frame with
|
|
127
|
+
* `createNestedFrame`, runs it with this method while the parent frame is
|
|
128
|
+
* suspended, then posts the result back to the parent.
|
|
129
|
+
*/
|
|
130
|
+
runFrame(frameId: string, options: InternalRunOptions): AsyncGenerator<DMLEvent>;
|
|
65
131
|
/**
|
|
66
132
|
* Parse DML code into Prolog clauses
|
|
67
133
|
*/
|
|
@@ -88,9 +154,59 @@ export declare class DMLRunner {
|
|
|
88
154
|
*/
|
|
89
155
|
private createEngine;
|
|
90
156
|
/**
|
|
91
|
-
*
|
|
157
|
+
* Create a nested frame that runs a Prolog goal in this session.
|
|
158
|
+
*
|
|
159
|
+
* `goalTerm` is inserted verbatim into create_frame/6, so callers MUST pass
|
|
160
|
+
* a term built with the runner's `toPrologTerm` escaping or parsed from DML
|
|
161
|
+
* via `read_term` — never raw user text (foot gun #18). `stateTerm` is an
|
|
162
|
+
* optional Prolog `state{...}` term; the default is an empty state with no
|
|
163
|
+
* gas limit.
|
|
164
|
+
*
|
|
165
|
+
* Returns the registered frame, or null on failure. The caller is
|
|
166
|
+
* responsible for running (`runFrame`) and ending (`endFrame`) it.
|
|
167
|
+
*/
|
|
168
|
+
createNestedFrame(params: {
|
|
169
|
+
kind: FrameKind;
|
|
170
|
+
goalTerm: string;
|
|
171
|
+
depth?: number;
|
|
172
|
+
stateTerm?: string;
|
|
173
|
+
}): Frame | null;
|
|
174
|
+
/** End a frame, destroying its engine in the Prolog session. */
|
|
175
|
+
endFrame(frameId: string): void;
|
|
176
|
+
/**
|
|
177
|
+
* Bind this runner to an existing session id. Used by the REPL's
|
|
178
|
+
* DMLSession, whose session outlives a single `run()`.
|
|
179
|
+
*/
|
|
180
|
+
bindSession(sessionId: string): void;
|
|
181
|
+
/**
|
|
182
|
+
* Adopt the session's default frame (for example one created by the REPL's
|
|
183
|
+
* `query_start/5`) into the runner's frame table so `runFrame` can drive it.
|
|
184
|
+
*/
|
|
185
|
+
registerDefaultFrame(kind: FrameKind, depth?: number): Frame | null;
|
|
186
|
+
/**
|
|
187
|
+
* Adopt a Prolog-created frame into the runner's frame table. Used by the
|
|
188
|
+
* REPL for `execute` child frames (`repl_execute_frame/4`).
|
|
189
|
+
*/
|
|
190
|
+
registerFrame(frameId: string, kind: FrameKind, depth?: number): Frame;
|
|
191
|
+
/**
|
|
192
|
+
* Drop all runner-side frame bookkeeping without touching Prolog. Used after
|
|
193
|
+
* the REPL clears a session (the Prolog side already ended every frame).
|
|
194
|
+
*/
|
|
195
|
+
clearFrames(): void;
|
|
196
|
+
/**
|
|
197
|
+
* Step a specific frame exactly once and return its raw step result.
|
|
198
|
+
* Used by the reentrant driver and nested-execution tests.
|
|
92
199
|
*/
|
|
93
|
-
|
|
200
|
+
stepFrameOnce(frameId: string): {
|
|
201
|
+
status: string;
|
|
202
|
+
content?: string;
|
|
203
|
+
prompt?: string;
|
|
204
|
+
payload?: unknown;
|
|
205
|
+
} | null;
|
|
206
|
+
/**
|
|
207
|
+
* Step the cooperative engine for a frame
|
|
208
|
+
*/
|
|
209
|
+
private stepFrame;
|
|
94
210
|
/**
|
|
95
211
|
* Handle agent loop request (task() predicate)
|
|
96
212
|
*/
|
|
@@ -144,13 +260,12 @@ export declare class DMLRunner {
|
|
|
144
260
|
* @param onToolCall - Callback to emit tool call events from nested tasks
|
|
145
261
|
*/
|
|
146
262
|
private executeToolIsolated;
|
|
147
|
-
private
|
|
148
|
-
private runBoundCompactor;
|
|
149
|
-
private resolveCompactorSource;
|
|
150
|
-
/**
|
|
151
|
-
* Extract memory from payload (now passed via state threading)
|
|
152
|
-
*/
|
|
263
|
+
private applyHostCompaction;
|
|
153
264
|
private extractMessagesFromValue;
|
|
265
|
+
/** Decode `media{path:..., mime:...}` dicts into reference-only refs. */
|
|
266
|
+
private extractMediaRefs;
|
|
267
|
+
/** Resolve a message's reference-only media to base64 bytes (workspace files). */
|
|
268
|
+
private readMediaRefs;
|
|
154
269
|
private extractMemoryFromPayload;
|
|
155
270
|
private serializeMemoryMessages;
|
|
156
271
|
/**
|
|
@@ -173,10 +288,14 @@ export declare class DMLRunner {
|
|
|
173
288
|
* Post tool engine agent loop result back to Prolog
|
|
174
289
|
*/
|
|
175
290
|
private postToolAgentResult;
|
|
291
|
+
/** SDK-internal ask_user tool used by exec(ask_user(...)) in DML. */
|
|
292
|
+
private internalAskUserTool;
|
|
176
293
|
/**
|
|
177
294
|
* Provide user input to waiting Prolog
|
|
178
295
|
*/
|
|
179
296
|
private provideInput;
|
|
297
|
+
/** Signal a waiting input/2 that no human is available. */
|
|
298
|
+
private cancelInput;
|
|
180
299
|
/**
|
|
181
300
|
* Execute a Prolog query
|
|
182
301
|
*/
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|