deepclause-sdk 0.1.0 → 0.1.1

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.
Files changed (106) hide show
  1. package/README.md +83 -12
  2. package/dist/agent.d.ts +2 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +1 -0
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli/config.d.ts +62 -2
  7. package/dist/cli/config.d.ts.map +1 -1
  8. package/dist/cli/config.js +15 -0
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.js +38 -0
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/repl.d.ts +25 -0
  13. package/dist/cli/repl.d.ts.map +1 -1
  14. package/dist/cli/repl.js +165 -5
  15. package/dist/cli/repl.js.map +1 -1
  16. package/dist/cli/run.d.ts.map +1 -1
  17. package/dist/cli/run.js +6 -0
  18. package/dist/cli/run.js.map +1 -1
  19. package/dist/cli/visualize.d.ts +4 -0
  20. package/dist/cli/visualize.d.ts.map +1 -1
  21. package/dist/cli/visualize.js +29 -4
  22. package/dist/cli/visualize.js.map +1 -1
  23. package/dist/prolog/bridge.d.ts +3 -1
  24. package/dist/prolog/bridge.d.ts.map +1 -1
  25. package/dist/prolog/bridge.js +2 -0
  26. package/dist/prolog/bridge.js.map +1 -1
  27. package/dist/prolog-src/deepclause_mi.pl +196 -9
  28. package/dist/repl/agent.d.ts +18 -0
  29. package/dist/repl/agent.d.ts.map +1 -1
  30. package/dist/repl/agent.js +47 -3
  31. package/dist/repl/agent.js.map +1 -1
  32. package/dist/repl/backend.d.ts +31 -0
  33. package/dist/repl/backend.d.ts.map +1 -1
  34. package/dist/repl/backend.js +122 -77
  35. package/dist/repl/backend.js.map +1 -1
  36. package/dist/repl/harness-tools.d.ts +25 -0
  37. package/dist/repl/harness-tools.d.ts.map +1 -1
  38. package/dist/repl/harness-tools.js +73 -2
  39. package/dist/repl/harness-tools.js.map +1 -1
  40. package/dist/repl/imagegen.d.ts +29 -0
  41. package/dist/repl/imagegen.d.ts.map +1 -0
  42. package/dist/repl/imagegen.js +84 -0
  43. package/dist/repl/imagegen.js.map +1 -0
  44. package/dist/repl/index.d.ts +12 -2
  45. package/dist/repl/index.d.ts.map +1 -1
  46. package/dist/repl/index.js +5 -0
  47. package/dist/repl/index.js.map +1 -1
  48. package/dist/repl/model-resolver.d.ts +59 -0
  49. package/dist/repl/model-resolver.d.ts.map +1 -0
  50. package/dist/repl/model-resolver.js +156 -0
  51. package/dist/repl/model-resolver.js.map +1 -0
  52. package/dist/repl/render.d.ts +28 -1
  53. package/dist/repl/render.d.ts.map +1 -1
  54. package/dist/repl/render.js +94 -1
  55. package/dist/repl/render.js.map +1 -1
  56. package/dist/repl/session.d.ts +68 -0
  57. package/dist/repl/session.d.ts.map +1 -1
  58. package/dist/repl/session.js +206 -8
  59. package/dist/repl/session.js.map +1 -1
  60. package/dist/repl/tui/transcript.d.ts +2 -0
  61. package/dist/repl/tui/transcript.d.ts.map +1 -1
  62. package/dist/repl/tui/transcript.js +16 -0
  63. package/dist/repl/tui/transcript.js.map +1 -1
  64. package/dist/runner.d.ts +13 -2
  65. package/dist/runner.d.ts.map +1 -1
  66. package/dist/runner.js +101 -16
  67. package/dist/runner.js.map +1 -1
  68. package/dist/system/assets/docs/AGENT_PROMPT.md +75 -1
  69. package/dist/system/assets/docs/DML_REFERENCE.md +32 -0
  70. package/dist/types.d.ts +56 -1
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/visualize/ascii.d.ts +55 -0
  73. package/dist/visualize/ascii.d.ts.map +1 -0
  74. package/dist/visualize/ascii.js +242 -0
  75. package/dist/visualize/ascii.js.map +1 -0
  76. package/dist/visualize/display.d.ts +24 -0
  77. package/dist/visualize/display.d.ts.map +1 -0
  78. package/dist/visualize/display.js +29 -0
  79. package/dist/visualize/display.js.map +1 -0
  80. package/dist/visualize/graphics.d.ts +35 -0
  81. package/dist/visualize/graphics.d.ts.map +1 -0
  82. package/dist/visualize/graphics.js +96 -0
  83. package/dist/visualize/graphics.js.map +1 -0
  84. package/dist/visualize/image.d.ts +38 -0
  85. package/dist/visualize/image.d.ts.map +1 -0
  86. package/dist/visualize/image.js +95 -0
  87. package/dist/visualize/image.js.map +1 -0
  88. package/dist/visualize/index.d.ts +7 -0
  89. package/dist/visualize/index.d.ts.map +1 -1
  90. package/dist/visualize/index.js +9 -0
  91. package/dist/visualize/index.js.map +1 -1
  92. package/dist/visualize/raster.d.ts +23 -0
  93. package/dist/visualize/raster.d.ts.map +1 -0
  94. package/dist/visualize/raster.js +47 -0
  95. package/dist/visualize/raster.js.map +1 -0
  96. package/dist/visualize/svg.d.ts +39 -0
  97. package/dist/visualize/svg.d.ts.map +1 -0
  98. package/dist/visualize/svg.js +148 -0
  99. package/dist/visualize/svg.js.map +1 -0
  100. package/dist/visualize/transcode.d.ts +13 -0
  101. package/dist/visualize/transcode.d.ts.map +1 -0
  102. package/dist/visualize/transcode.js +40 -0
  103. package/dist/visualize/transcode.js.map +1 -0
  104. package/docs/images/repl.png +0 -0
  105. package/package.json +7 -5
  106. package/src/prolog-src/deepclause_mi.pl +196 -9
@@ -74,7 +74,11 @@ Editing is a **transaction**:
74
74
  - `assert(clause)` — add one clause (new predicates only).
75
75
  - `assert_many(clauses)` — add a block of clauses in written order.
76
76
  - `retract(clause)` / `delete("Name/Arity")` — remove clauses / a whole predicate.
77
- - `end_turn` — validate and commit the change (records a version).
77
+ - `end_turn` — validate and commit the change (records a version). It also
78
+ probes the predicates you changed and returns a `warnings` list (shown as `⚠`)
79
+ when a helper looks nondeterministic — e.g. yields many solutions on fresh
80
+ variables because it is missing a commit. Fix such warnings with `once/1` or
81
+ `!` before moving on; they are exactly the predicates that flood `execute`.
78
82
  - `rollback` — discard the transaction and restore the last committed module.
79
83
 
80
84
  Edits are **refused** while no transaction is open, and after `end_turn` you must
@@ -88,6 +92,44 @@ Other tools: `reference(topic)` reads the DeepClause docs (`language`,
88
92
  End your turn by replying with text and no tool call. To ask the human a
89
93
  question, write it in that final message.
90
94
 
95
+ # Writing files and images
96
+
97
+ - `write_file(path, content)` writes any workspace file (creating parent
98
+ directories). The content is an ordinary string, so use it for SVG, JSON, or
99
+ scripts instead of building them inside a shell command. Then
100
+ `show_image(path)` displays an image.
101
+ - From DML, `output(media("path.png"))` shows a workspace image and
102
+ `output(media{svg: Svg})` shows inline SVG. `save_image(Media, "out.svg")`
103
+ writes a reference to a file.
104
+ - `task("a red fox in snow", media(X))` generates an image and binds `X` to its
105
+ workspace path; display it with `output(media(X))`.
106
+ - Avoid multi-line literals inside `exec(bash(command: "…"))` (heredocs): `\n`
107
+ and `"` must be escaped for DML and again for the shell, and it breaks easily.
108
+ Use `write_file` for content; if you must use the shell, write the file with a
109
+ single-line `printf '%s' '…' > path`, not a heredoc.
110
+
111
+ # Choosing models
112
+
113
+ `with_model(Spec, Goal)` runs `Goal` on a different model, optionally at a
114
+ reasoning level. It applies to the `task/N`, `prompt/N` and `sample_token/N`
115
+ calls inside `Goal` (not to judgments):
116
+
117
+ ```prolog
118
+ with_model("openai:gpt-4o-mini", prompt("Classify as billing/orders: {Msg}", Team)).
119
+ with_model("anthropic:claude-sonnet-4#high", task("Reason carefully: {Q}", Out)).
120
+ with_model(model{provider: "google", id: "gemini-2.5-pro", temperature: 0.2}, Goal).
121
+ ```
122
+
123
+ Use it to route cheap work to a small model and hard work to a strong one, or to
124
+ tune a harness to a specific model. The innermost `with_model` wins; a nested
125
+ `with_reasoning/2` overrides the spec's reasoning level.
126
+
127
+ The models available this session are listed under **AVAILABLE MODELS** (above),
128
+ including their catalog price in USD per 1M tokens (input/output); call the
129
+ `models` tool for the current list and the active default. Prefer the cheapest
130
+ model that can do the job, and a `with_model` spec must name one of those
131
+ `provider:model` ids.
132
+
91
133
  # Your goal
92
134
 
93
135
  Satisfy the user's request — by answering directly, by running existing module
@@ -407,6 +449,7 @@ More patterns: `reference("patterns")`; shapes: `reference("examples")`.
407
449
  - [exec/2](#exec2)
408
450
  - [Tool Definitions](#tool-definitions)
409
451
  - [Tool Scoping](#tool-scoping)
452
+ - [Model Selection](#model-selection)
410
453
  - [system/1, user/1](#memory-predicates)
411
454
  - [output/1, yield/1, log/1](#output-predicates)
412
455
  - [answer/1](#answer1)
@@ -767,6 +810,37 @@ agent_main :-
767
810
 
768
811
  ---
769
812
 
813
+ ### Model Selection
814
+
815
+ #### `with_model(+Spec, +Goal)`
816
+
817
+ Run `Goal` with a different model — and optionally a reasoning level — for every
818
+ `task/N`, `prompt/N` and `sample_token/N` call inside it. Judgments
819
+ (`choose/rate/verify/probability`) are not affected.
820
+
821
+ ```prolog
822
+ % a cheap model for classification
823
+ with_model("openai:gpt-4o-mini",
824
+ prompt("Classify as billing/orders/account: {Message}", Team)).
825
+
826
+ % a strong model with high reasoning, only for the hard step
827
+ with_model("anthropic:claude-sonnet-4#high",
828
+ task("Review this diff and list defects:\n{Diff}", Notes)).
829
+
830
+ % full control with a dict
831
+ with_model(model{provider: "google", id: "gemini-2.5-pro",
832
+ temperature: 0.2, maxTokens: 8192}, Goal).
833
+ ```
834
+
835
+ `Spec` is a string — `"provider:model"`, `"provider/model"`, `"model"`, each with
836
+ an optional `#reasoning` suffix (`off|minimal|low|medium|high|xhigh|max`) — or a
837
+ `model{provider, id, temperature, maxTokens, reasoning}` dict. The innermost
838
+ `with_model` wins, and a nested `with_reasoning/2` overrides the spec's reasoning.
839
+ The default is the session's active model. An unknown or unsigned-in model fails
840
+ with a clear error.
841
+
842
+ ---
843
+
770
844
  ### Memory Predicates
771
845
 
772
846
  Memory predicates build the conversation context sent to the LLM.
@@ -11,6 +11,7 @@
11
11
  - [exec/2](#exec2)
12
12
  - [Tool Definitions](#tool-definitions)
13
13
  - [Tool Scoping](#tool-scoping)
14
+ - [Model Selection](#model-selection)
14
15
  - [system/1, user/1](#memory-predicates)
15
16
  - [output/1, yield/1, log/1](#output-predicates)
16
17
  - [answer/1](#answer1)
@@ -371,6 +372,37 @@ agent_main :-
371
372
 
372
373
  ---
373
374
 
375
+ ### Model Selection
376
+
377
+ #### `with_model(+Spec, +Goal)`
378
+
379
+ Run `Goal` with a different model — and optionally a reasoning level — for every
380
+ `task/N`, `prompt/N` and `sample_token/N` call inside it. Judgments
381
+ (`choose/rate/verify/probability`) are not affected.
382
+
383
+ ```prolog
384
+ % a cheap model for classification
385
+ with_model("openai:gpt-4o-mini",
386
+ prompt("Classify as billing/orders/account: {Message}", Team)).
387
+
388
+ % a strong model with high reasoning, only for the hard step
389
+ with_model("anthropic:claude-sonnet-4#high",
390
+ task("Review this diff and list defects:\n{Diff}", Notes)).
391
+
392
+ % full control with a dict
393
+ with_model(model{provider: "google", id: "gemini-2.5-pro",
394
+ temperature: 0.2, maxTokens: 8192}, Goal).
395
+ ```
396
+
397
+ `Spec` is a string — `"provider:model"`, `"provider/model"`, `"model"`, each with
398
+ an optional `#reasoning` suffix (`off|minimal|low|medium|high|xhigh|max`) — or a
399
+ `model{provider, id, temperature, maxTokens, reasoning}` dict. The innermost
400
+ `with_model` wins, and a nested `with_reasoning/2` overrides the spec's reasoning.
401
+ The default is the session's active model. An unknown or unsigned-in model fails
402
+ with a clear error.
403
+
404
+ ---
405
+
374
406
  ### Memory Predicates
375
407
 
376
408
  Memory predicates build the conversation context sent to the LLM.
package/dist/types.d.ts CHANGED
@@ -48,6 +48,58 @@ export interface MediaRef {
48
48
  path: string;
49
49
  mimeType: string;
50
50
  }
51
+ /**
52
+ * A parsed `model_spec` from a `with_model/2` scope: a provider+id with optional
53
+ * temperature/maxTokens/reasoning overrides. `default`/`none` means "no override".
54
+ */
55
+ export type ModelSpec = 'default' | {
56
+ provider?: string;
57
+ id: string;
58
+ temperature?: number;
59
+ maxTokens?: number;
60
+ /** Reasoning level (`off|minimal|low|medium|high|xhigh|max`). */
61
+ reasoning?: string;
62
+ };
63
+ /** A fully resolved model profile used for one call. */
64
+ export interface ResolvedModel {
65
+ provider: string;
66
+ id: string;
67
+ temperature?: number;
68
+ maxTokens?: number;
69
+ /** Context window, for nested compaction thresholds. */
70
+ contextWindow?: number;
71
+ /** Whether the model supports a reasoning/thinking mode. */
72
+ reasoning: boolean;
73
+ /** Requested reasoning level for this scope, if any. */
74
+ reasoningLevel?: string;
75
+ /** For the env backend: how reasoning maps to provider options. */
76
+ reasoningType?: 'effort' | 'budget_tokens' | 'thinking_config' | 'none';
77
+ reasoningBudgetMap?: Record<string, number>;
78
+ /** For the pi backend: thinking levels the model accepts. */
79
+ supportedThinkingLevels?: string[];
80
+ }
81
+ /** Request passed to an injected image-generation backend (see `task/…, media(X))`). */
82
+ export interface ImageGenerationRequest {
83
+ /** The prompt (the task description, interpolated). */
84
+ prompt: string;
85
+ /** Attached input images, for image-to-image. */
86
+ refs?: MediaRef[];
87
+ /** Optional square/edge size in px. */
88
+ size?: number;
89
+ signal?: AbortSignal;
90
+ }
91
+ export interface ImageGenerationResult {
92
+ /** Workspace-relative path of the written image. */
93
+ path: string;
94
+ mimeType: string;
95
+ }
96
+ /**
97
+ * A host image generator. The pi backend implements this on top of pi's image
98
+ * models and credential store; tests inject a canned one.
99
+ */
100
+ export interface ImageBackend {
101
+ generate(request: ImageGenerationRequest): Promise<ImageGenerationResult>;
102
+ }
51
103
  /** Resolved media bytes attached to a backend message (base64). */
52
104
  export interface LLMBackendMedia {
53
105
  mimeType: string;
@@ -86,6 +138,8 @@ export interface LLMBackendRequest {
86
138
  onText?: (chunk: string) => void;
87
139
  /** Receives reasoning/thinking text as it becomes available (display only). */
88
140
  onReasoning?: (chunk: string) => void;
141
+ /** Per-call model override from `with_model/2`. */
142
+ target?: ResolvedModel;
89
143
  }
90
144
  export interface LLMBackendResponse {
91
145
  text: string;
@@ -187,6 +241,7 @@ export interface DMLEvent extends FrameEventMeta {
187
241
  path?: string;
188
242
  mimeType: string;
189
243
  data?: string;
244
+ kind?: string;
190
245
  };
191
246
  /** Model-call lifecycle (only for 'model_call' events). */
192
247
  modelCallState?: 'started' | 'completed' | 'failed';
@@ -364,7 +419,7 @@ export type FrameKind = 'query' | 'nested' | 'object';
364
419
  */
365
420
  export interface TypedVar {
366
421
  name: string;
367
- type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
422
+ type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'media';
368
423
  itemType?: TypedVar['type'];
369
424
  }
370
425
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Render a Mermaid `flowchart` (the subset `visualize` asks the model for) as a
3
+ * Unicode tree, so a diagram can be shown inline in the REPL, in a tool result,
4
+ * or over a terminal that has no image protocol.
5
+ *
6
+ * No dependencies and no browser: the diagram is parsed into nodes and edges and
7
+ * laid out as an indented flow. `parseMermaidFlowchart` / `buildFlowTree` are
8
+ * also consumed by `svg.ts` for the terminal-image path.
9
+ *
10
+ * Supported: `flowchart TD|TB|BT|LR|RL`, node shapes `[..] (..) {..} ([..])
11
+ * [[..]] ((..)) {{..}}`, quoted labels, chained edges (`A --> B --> C`),
12
+ * connectors `--> --- -.-> ==> -.- ===`, edge labels (`-->|x|`, `-- x -->`),
13
+ * and `subgraph`/`end` (grouping is flattened).
14
+ */
15
+ export type NodeShape = 'rect' | 'round' | 'diamond' | 'stadium' | 'subroutine' | 'circle' | 'hexagon';
16
+ export interface MermaidNode {
17
+ id: string;
18
+ /** The display label (defaults to the node id). */
19
+ label: string;
20
+ shape: NodeShape;
21
+ }
22
+ export interface MermaidEdge {
23
+ from: string;
24
+ to: string;
25
+ /** Edge label (`-->|yes|` or `-- yes -->`). */
26
+ label?: string;
27
+ }
28
+ export interface ParsedFlowchart {
29
+ /** `TD`, `LR`, … (defaults to `TD`). */
30
+ direction: string;
31
+ nodes: MermaidNode[];
32
+ edges: MermaidEdge[];
33
+ }
34
+ export interface FlowTreeNode {
35
+ id: string;
36
+ label: string;
37
+ shape: NodeShape;
38
+ /** Label on the edge from the parent (undefined for a root). */
39
+ edgeLabel?: string;
40
+ /** True for a back/duplicate reference (the subtree is not expanded again). */
41
+ repeated?: boolean;
42
+ children: FlowTreeNode[];
43
+ }
44
+ /** Parse a Mermaid flowchart into nodes and edges. */
45
+ export declare function parseMermaidFlowchart(source: string): ParsedFlowchart;
46
+ /** Build the root(s) of a tree view, marking back/duplicate references. */
47
+ export declare function buildFlowTree(parsed: ParsedFlowchart): FlowTreeNode[];
48
+ /** Lay a tree view out as indented Unicode lines. */
49
+ export declare function renderFlowTree(roots: FlowTreeNode[]): string[];
50
+ /**
51
+ * Render Mermaid flowchart source as terminal text. Falls back to the trimmed
52
+ * source when the input is not a recognizable flowchart.
53
+ */
54
+ export declare function renderMermaidAscii(source: string): string;
55
+ //# sourceMappingURL=ascii.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii.d.ts","sourceRoot":"","sources":["../../src/visualize/ascii.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AA0HD,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAsCrE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,EAAE,CA+CrE;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAkB9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Render a Mermaid `flowchart` (the subset `visualize` asks the model for) as a
3
+ * Unicode tree, so a diagram can be shown inline in the REPL, in a tool result,
4
+ * or over a terminal that has no image protocol.
5
+ *
6
+ * No dependencies and no browser: the diagram is parsed into nodes and edges and
7
+ * laid out as an indented flow. `parseMermaidFlowchart` / `buildFlowTree` are
8
+ * also consumed by `svg.ts` for the terminal-image path.
9
+ *
10
+ * Supported: `flowchart TD|TB|BT|LR|RL`, node shapes `[..] (..) {..} ([..])
11
+ * [[..]] ((..)) {{..}}`, quoted labels, chained edges (`A --> B --> C`),
12
+ * connectors `--> --- -.-> ==> -.- ===`, edge labels (`-->|x|`, `-- x -->`),
13
+ * and `subgraph`/`end` (grouping is flattened).
14
+ */
15
+ const HEADER = /^\s*(?:flowchart|graph)\s+(TD|TB|BT|LR|RL)\b/i;
16
+ const CONNECTOR = /^(-{2,3}>|={2,}>|-\.-+>|-\.-|--o|--x|-{2,}|={2,})/;
17
+ /** Shape open/close pairs, longest opener first. */
18
+ const SHAPES = [
19
+ { open: '([', close: '])', shape: 'stadium' },
20
+ { open: '[[', close: ']]', shape: 'subroutine' },
21
+ { open: '((', close: '))', shape: 'circle' },
22
+ { open: '{{', close: '}}', shape: 'hexagon' },
23
+ { open: '[', close: ']', shape: 'rect' },
24
+ { open: '(', close: ')', shape: 'round' },
25
+ { open: '{', close: '}', shape: 'diamond' },
26
+ ];
27
+ /** Normalize `-- label -->` into `-->|label|` so one edge form is parsed. */
28
+ function normalizeEdgeLabels(line) {
29
+ return line
30
+ .replace(/--\s+([^|>{}[\]]+?)\s+-->/g, '-->|$1|')
31
+ .replace(/--\s+([^|>{}[\]]+?)\s+---/g, '---|$1|');
32
+ }
33
+ /** Read one node reference (`id` plus an optional shape) starting at `i`. */
34
+ function readNode(text, i) {
35
+ let j = i;
36
+ while (j < text.length && /\s/.test(text[j])) {
37
+ j += 1;
38
+ }
39
+ const idMatch = /^([A-Za-z_][A-Za-z0-9_-]*|\d+)/.exec(text.slice(j));
40
+ if (!idMatch) {
41
+ return undefined;
42
+ }
43
+ const id = idMatch[1];
44
+ j += id.length;
45
+ let label = id;
46
+ let shape = 'rect';
47
+ const spec = SHAPES.find((s) => text.startsWith(s.open, j));
48
+ if (spec) {
49
+ const start = j + spec.open.length;
50
+ const close = text.indexOf(spec.close, start);
51
+ if (close !== -1) {
52
+ label = text.slice(start, close).trim();
53
+ shape = spec.shape;
54
+ j = close + spec.close.length;
55
+ }
56
+ }
57
+ if ((label.startsWith('"') && label.endsWith('"')) || (label.startsWith("'") && label.endsWith("'"))) {
58
+ label = label.slice(1, -1);
59
+ }
60
+ return { node: { id, label: label || id, shape }, next: j };
61
+ }
62
+ /** Parse a single flowchart line into edges (and register any new nodes). */
63
+ function parseLine(line, nodes, edges) {
64
+ const text = normalizeEdgeLabels(line.trim().replace(/;+\s*$/, ''));
65
+ if (!text) {
66
+ return;
67
+ }
68
+ const register = (node) => {
69
+ const existing = nodes.get(node.id);
70
+ if (existing) {
71
+ // Prefer a real label over a bare id reference.
72
+ if (node.label !== node.id && existing.label === existing.id) {
73
+ nodes.set(node.id, { ...existing, label: node.label, shape: node.shape });
74
+ }
75
+ return;
76
+ }
77
+ nodes.set(node.id, node);
78
+ };
79
+ let cursor = 0;
80
+ let prev = readNode(text, cursor);
81
+ if (!prev) {
82
+ return;
83
+ }
84
+ register(prev.node);
85
+ cursor = prev.next;
86
+ for (;;) {
87
+ while (cursor < text.length && /\s/.test(text[cursor])) {
88
+ cursor += 1;
89
+ }
90
+ if (cursor >= text.length) {
91
+ return;
92
+ }
93
+ const connector = CONNECTOR.exec(text.slice(cursor));
94
+ if (!connector) {
95
+ const extra = readNode(text, cursor);
96
+ if (!extra) {
97
+ return;
98
+ }
99
+ register(extra.node);
100
+ prev = extra;
101
+ cursor = extra.next;
102
+ continue;
103
+ }
104
+ cursor += connector[1].length;
105
+ while (cursor < text.length && /\s/.test(text[cursor])) {
106
+ cursor += 1;
107
+ }
108
+ let label;
109
+ if (text[cursor] === '|') {
110
+ const close = text.indexOf('|', cursor + 1);
111
+ if (close !== -1) {
112
+ label = text.slice(cursor + 1, close).trim() || undefined;
113
+ cursor = close + 1;
114
+ }
115
+ }
116
+ const next = readNode(text, cursor);
117
+ if (!next) {
118
+ return;
119
+ }
120
+ register(next.node);
121
+ edges.push({ from: prev.node.id, to: next.node.id, label });
122
+ prev = next;
123
+ cursor = next.next;
124
+ }
125
+ }
126
+ /** Parse a Mermaid flowchart into nodes and edges. */
127
+ export function parseMermaidFlowchart(source) {
128
+ const nodes = new Map();
129
+ const edges = [];
130
+ let direction = 'TD';
131
+ let subgraphs = 0;
132
+ let sawHeader = false;
133
+ for (const rawLine of (source ?? '').split('\n')) {
134
+ const trimmed = rawLine.replace(/\s+$/, '').trim();
135
+ if (!trimmed || trimmed.startsWith('%%')) {
136
+ continue;
137
+ }
138
+ const header = HEADER.exec(trimmed);
139
+ if (header) {
140
+ direction = header[1].toUpperCase() === 'TB' ? 'TD' : header[1].toUpperCase();
141
+ sawHeader = true;
142
+ continue;
143
+ }
144
+ // Only parse a body once a flowchart header has been seen, so prose that
145
+ // was not a diagram is not mistaken for a list of bare nodes.
146
+ if (!sawHeader) {
147
+ continue;
148
+ }
149
+ if (/^subgraph\b/i.test(trimmed)) {
150
+ subgraphs += 1;
151
+ continue;
152
+ }
153
+ if (/^end\b/i.test(trimmed) && subgraphs > 0) {
154
+ subgraphs -= 1;
155
+ continue;
156
+ }
157
+ if (/^(classDef|class|style|linkStyle|click|direction)\b/i.test(trimmed)) {
158
+ continue;
159
+ }
160
+ parseLine(trimmed, nodes, edges);
161
+ }
162
+ return { direction, nodes: [...nodes.values()], edges };
163
+ }
164
+ /** Build the root(s) of a tree view, marking back/duplicate references. */
165
+ export function buildFlowTree(parsed) {
166
+ const byId = new Map(parsed.nodes.map((n) => [n.id, n]));
167
+ const children = new Map();
168
+ const indegree = new Map();
169
+ for (const node of parsed.nodes) {
170
+ children.set(node.id, []);
171
+ indegree.set(node.id, 0);
172
+ }
173
+ for (const edge of parsed.edges) {
174
+ if (!byId.has(edge.from)) {
175
+ byId.set(edge.from, { id: edge.from, label: edge.from, shape: 'rect' });
176
+ }
177
+ if (!byId.has(edge.to)) {
178
+ byId.set(edge.to, { id: edge.to, label: edge.to, shape: 'rect' });
179
+ }
180
+ indegree.set(edge.to, (indegree.get(edge.to) ?? 0) + 1);
181
+ indegree.set(edge.from, indegree.get(edge.from) ?? 0);
182
+ if (!children.has(edge.from)) {
183
+ children.set(edge.from, []);
184
+ }
185
+ children.get(edge.from).push(edge);
186
+ }
187
+ const build = (id, edgeLabel, seen) => {
188
+ const node = byId.get(id) ?? { id, label: id, shape: 'rect' };
189
+ const repeated = seen.has(id);
190
+ const treeNode = {
191
+ id,
192
+ label: node.label,
193
+ shape: node.shape,
194
+ edgeLabel,
195
+ repeated,
196
+ children: [],
197
+ };
198
+ if (repeated) {
199
+ return treeNode;
200
+ }
201
+ seen.add(id);
202
+ for (const edge of children.get(id) ?? []) {
203
+ treeNode.children.push(build(edge.to, edge.label, seen));
204
+ }
205
+ return treeNode;
206
+ };
207
+ const roots = parsed.nodes.filter((n) => (indegree.get(n.id) ?? 0) === 0).map((n) => n.id);
208
+ const rootIds = roots.length > 0 ? roots : parsed.nodes.slice(0, 1).map((n) => n.id);
209
+ return rootIds.map((id) => build(id, undefined, new Set()));
210
+ }
211
+ /** Lay a tree view out as indented Unicode lines. */
212
+ export function renderFlowTree(roots) {
213
+ const lines = [];
214
+ const emit = (node, prefix, isLast) => {
215
+ const edge = node.edgeLabel ? `(${node.edgeLabel}) ` : '';
216
+ lines.push(`${prefix}${isLast ? '└─▶ ' : '├─▶ '}${edge}${node.label}${node.repeated ? ' ↻' : ''}`);
217
+ const childPrefix = prefix + (isLast ? ' ' : '│ ');
218
+ node.children.forEach((child, index) => emit(child, childPrefix, index === node.children.length - 1));
219
+ };
220
+ for (const root of roots) {
221
+ if (roots.length === 1) {
222
+ lines.push(root.label);
223
+ root.children.forEach((child, index) => emit(child, '', index === root.children.length - 1));
224
+ }
225
+ else {
226
+ emit(root, '', root === roots[roots.length - 1]);
227
+ }
228
+ }
229
+ return lines;
230
+ }
231
+ /**
232
+ * Render Mermaid flowchart source as terminal text. Falls back to the trimmed
233
+ * source when the input is not a recognizable flowchart.
234
+ */
235
+ export function renderMermaidAscii(source) {
236
+ const parsed = parseMermaidFlowchart(source);
237
+ if (parsed.nodes.length === 0) {
238
+ return (source ?? '').trim();
239
+ }
240
+ return renderFlowTree(buildFlowTree(parsed)).join('\n');
241
+ }
242
+ //# sourceMappingURL=ascii.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../src/visualize/ascii.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared "diagram → terminal image" step.
3
+ *
4
+ * Both `/viz` (user-typed) and the authoring agent's `visualize` tool use this,
5
+ * so a diagram is painted the same way everywhere: resolve the terminal's image
6
+ * protocol, rasterize the SVG (no browser), and encode an inline image. Returns
7
+ * undefined when the terminal has no image support or no rasterizer is
8
+ * installed, so the caller can fall back to the ASCII tree.
9
+ */
10
+ import { type GraphicsMode } from './graphics.js';
11
+ export interface DiagramImageSource {
12
+ svg: string;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export interface DiagramImageOptions {
17
+ /** `auto` (default) or a forced protocol; `ascii`/`off` disable the image. */
18
+ graphics?: GraphicsMode;
19
+ maxWidthCells?: number;
20
+ maxHeightCells?: number;
21
+ }
22
+ /** Encode a diagram as inline terminal-image lines, or undefined. */
23
+ export declare function renderDiagramImage(source: DiagramImageSource, options?: DiagramImageOptions): Promise<string[] | undefined>;
24
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/visualize/display.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhG,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qEAAqE;AACrE,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAe/B"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared "diagram → terminal image" step.
3
+ *
4
+ * Both `/viz` (user-typed) and the authoring agent's `visualize` tool use this,
5
+ * so a diagram is painted the same way everywhere: resolve the terminal's image
6
+ * protocol, rasterize the SVG (no browser), and encode an inline image. Returns
7
+ * undefined when the terminal has no image support or no rasterizer is
8
+ * installed, so the caller can fall back to the ASCII tree.
9
+ */
10
+ import { rasterizeSvg } from './raster.js';
11
+ import { renderTerminalImage, resolveGraphicsProtocol } from './graphics.js';
12
+ /** Encode a diagram as inline terminal-image lines, or undefined. */
13
+ export async function renderDiagramImage(source, options = {}) {
14
+ const protocol = resolveGraphicsProtocol(options.graphics ?? 'auto');
15
+ if (!protocol) {
16
+ return undefined;
17
+ }
18
+ const png = await rasterizeSvg(source.svg, { width: source.width, height: source.height });
19
+ if (!png) {
20
+ return undefined;
21
+ }
22
+ const image = renderTerminalImage(png, {
23
+ protocol,
24
+ maxWidthCells: options.maxWidthCells ?? 80,
25
+ maxHeightCells: options.maxHeightCells,
26
+ });
27
+ return image?.lines;
28
+ }
29
+ //# sourceMappingURL=display.js.map