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
@@ -31,13 +31,22 @@ export function createHarnessTools(controller) {
31
31
  },
32
32
  });
33
33
  tools.set('end_turn', {
34
- description: 'Validate and commit the open transaction (opened by begin_turn) and record a harness version. Returns the predicates changed.',
34
+ description: 'Validate and commit the open transaction (opened by begin_turn) and record a harness version. Returns the predicates changed and any advisory warnings (e.g. a nondeterministic helper).',
35
35
  parameters: {
36
36
  type: 'object',
37
37
  properties: { summary: stringProp('One-line summary of the change (optional).') },
38
38
  required: [],
39
39
  },
40
- execute: async () => controller.endTurn(),
40
+ execute: async (_args, context) => {
41
+ const result = await controller.endTurn();
42
+ if (result.warnings?.length) {
43
+ context?.onEvent?.({
44
+ type: 'output',
45
+ content: result.warnings.map((warning) => `⚠ ${warning}`).join('\n'),
46
+ });
47
+ }
48
+ return result;
49
+ },
41
50
  });
42
51
  tools.set('rollback', {
43
52
  description: 'Discard every edit made in the current transaction and restore the last committed harness.',
@@ -107,6 +116,68 @@ export function createHarnessTools(controller) {
107
116
  },
108
117
  execute: async (args, context) => controller.execute(String(args.goal ?? ''), typeof args.limit === 'number' ? args.limit : undefined, context?.signal, context?.onEvent),
109
118
  });
119
+ tools.set('visualize', {
120
+ description: 'Render a diagram of a skill (predicate) showing its model calls (task/prompt), tool calls (exec), and other skills it invokes. In a terminal that supports images the diagram is displayed to the user directly; otherwise the ASCII tree is returned so you can show it. The entry defaults to agent_main/N.',
121
+ parameters: {
122
+ type: 'object',
123
+ properties: {
124
+ entry: stringProp('Entry predicate, e.g. "patch/3" (default: agent_main/N).'),
125
+ mode: stringProp('presentation (default, reader-friendly) or spec (engineering detail).'),
126
+ },
127
+ required: [],
128
+ },
129
+ execute: async (args, context) => {
130
+ const { message, event } = await controller.visualize(typeof args.entry === 'string' ? args.entry : undefined, args.mode === 'spec' ? 'spec' : args.mode === 'presentation' ? 'presentation' : undefined);
131
+ if (event)
132
+ context?.onEvent?.(event);
133
+ return text(message);
134
+ },
135
+ });
136
+ tools.set('write_file', {
137
+ description: 'Write a workspace file with the given content (parent directories are created). Use this for SVG, JSON, scripts, or any file whose content is easier to pass whole than to build inside a DML string. The content argument is an ordinary string — no DML/shell escaping.',
138
+ parameters: {
139
+ type: 'object',
140
+ properties: {
141
+ path: stringProp('Workspace-relative path, e.g. "images/foo.svg".'),
142
+ content: stringProp('The complete file content. Newlines and quotes are passed through verbatim.'),
143
+ },
144
+ required: ['path', 'content'],
145
+ },
146
+ execute: async (args) => controller.writeFile(String(args.path ?? ''), String(args.content ?? '')),
147
+ });
148
+ tools.set('show_image', {
149
+ description: 'Display a workspace image (PNG/JPEG/GIF/WebP/SVG) to the user in the terminal. Use this when the user asks to see an image, or after writing one with save_image/write_file.',
150
+ parameters: {
151
+ type: 'object',
152
+ properties: { path: stringProp('Workspace-relative path of the image to display.') },
153
+ required: ['path'],
154
+ },
155
+ execute: async (args, context) => {
156
+ const { message, event } = await controller.showImage(String(args.path ?? ''));
157
+ if (event)
158
+ context?.onEvent?.(event);
159
+ return text(message);
160
+ },
161
+ });
162
+ tools.set('generate_image', {
163
+ description: 'Generate an image from a text prompt (using the configured image model) and display it to the user. Returns the workspace path of the written image.',
164
+ parameters: {
165
+ type: 'object',
166
+ properties: { prompt: stringProp('What to depict (be specific: subject, style, composition).') },
167
+ required: ['prompt'],
168
+ },
169
+ execute: async (args, context) => {
170
+ const { message, event } = await controller.generateImage(String(args.prompt ?? ''));
171
+ if (event)
172
+ context?.onEvent?.(event);
173
+ return text(message);
174
+ },
175
+ });
176
+ tools.set('models', {
177
+ description: 'List the LLM models available in this session (those with configured credentials) and the current default. Call this before writing `with_model(Spec, Goal)` so you use a real provider:model id.',
178
+ parameters: { type: 'object', properties: {}, required: [] },
179
+ execute: async () => text(await controller.listModels()),
180
+ });
110
181
  tools.set('reference', {
111
182
  description: 'Read DeepClause language documentation. Topics: "language" (DML reference), "authoring" (authoring guide), "patterns" (harness patterns by use case), "examples" (harness examples), "snippets" (Prolog snippets), "tools" (host tool catalog).',
112
183
  parameters: {
@@ -1 +1 @@
1
- {"version":3,"file":"harness-tools.js","sourceRoot":"","sources":["../../src/repl/harness-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-tools.js","sourceRoot":"","sources":["../../src/repl/harness-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Image generation over pi's image models.
3
+ *
4
+ * Implements the injectable `ImageBackend` used by `task(…, media(X))`. It reuses
5
+ * pi's credential store and model catalog (the same one the chat backend uses),
6
+ * picks the first available image model unless one is configured, and writes the
7
+ * result into the workspace media directory. No separate API keys.
8
+ */
9
+ import type { ImageBackend } from '../types.js';
10
+ import { type PiRuntimeHandle } from './backend.js';
11
+ export interface PiImageBackendOptions {
12
+ workspacePath: string;
13
+ agentDir?: string;
14
+ modelsPath?: string | null;
15
+ authPath?: string;
16
+ /** Explicit image model as `provider:id` (or `provider/id`). */
17
+ model?: string;
18
+ /** Workspace-relative output directory (default `.deepclause/media`). */
19
+ dir?: string;
20
+ size?: number;
21
+ }
22
+ /** List the ids of available image models (for diagnostics / `/gen`). */
23
+ export declare function listImageModels(handle: PiRuntimeHandle): Promise<string[]>;
24
+ /**
25
+ * Build a pi-backed image generator, or undefined when the installed pi runtime
26
+ * cannot generate images (no image-capable provider / missing API).
27
+ */
28
+ export declare function createPiImageBackend(options: PiImageBackendOptions): Promise<ImageBackend | undefined>;
29
+ //# sourceMappingURL=imagegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imagegen.d.ts","sourceRoot":"","sources":["../../src/repl/imagegen.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AASnE,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,yEAAyE;AACzE,wBAAsB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAiD5G"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Image generation over pi's image models.
3
+ *
4
+ * Implements the injectable `ImageBackend` used by `task(…, media(X))`. It reuses
5
+ * pi's credential store and model catalog (the same one the chat backend uses),
6
+ * picks the first available image model unless one is configured, and writes the
7
+ * result into the workspace media directory. No separate API keys.
8
+ */
9
+ import * as fs from 'fs/promises';
10
+ import * as path from 'path';
11
+ import { openPiRuntime } from './backend.js';
12
+ const EXT_BY_MIME = {
13
+ 'image/png': 'png',
14
+ 'image/jpeg': 'jpg',
15
+ 'image/webp': 'webp',
16
+ 'image/gif': 'gif',
17
+ };
18
+ function parseModelRef(ref) {
19
+ if (!ref) {
20
+ return undefined;
21
+ }
22
+ const match = ref.match(/^([^:/]+)[:/](.+)$/);
23
+ return match ? { provider: match[1], id: match[2] } : undefined;
24
+ }
25
+ /** List the ids of available image models (for diagnostics / `/gen`). */
26
+ export async function listImageModels(handle) {
27
+ const runtime = handle.runtime;
28
+ if (typeof runtime.getAvailableOfType !== 'function') {
29
+ return [];
30
+ }
31
+ const models = (await runtime.getAvailableOfType('image'));
32
+ return models.map((m) => (m.provider && m.id ? `${m.provider}:${m.id}` : String(m)));
33
+ }
34
+ /**
35
+ * Build a pi-backed image generator, or undefined when the installed pi runtime
36
+ * cannot generate images (no image-capable provider / missing API).
37
+ */
38
+ export async function createPiImageBackend(options) {
39
+ const handle = await openPiRuntime({
40
+ agentDir: options.agentDir,
41
+ modelsPath: options.modelsPath ?? undefined,
42
+ authPath: options.authPath,
43
+ });
44
+ const runtime = handle.runtime;
45
+ if (typeof runtime.getAvailableOfType !== 'function' || typeof runtime.generateImages !== 'function') {
46
+ return undefined;
47
+ }
48
+ const dir = options.dir ?? '.deepclause/media';
49
+ return {
50
+ async generate(request) {
51
+ const available = (await runtime.getAvailableOfType('image'));
52
+ if (available.length === 0) {
53
+ throw new Error('no image model is available — check that a provider with image generation is signed in');
54
+ }
55
+ const wanted = parseModelRef(options.model);
56
+ let model = available[0];
57
+ if (wanted && typeof runtime.getModelOfType === 'function') {
58
+ const found = runtime.getModelOfType('image', wanted.provider, wanted.id);
59
+ if (found) {
60
+ model = found;
61
+ }
62
+ }
63
+ const input = [{ type: 'text', text: request.prompt }];
64
+ for (const ref of request.refs ?? []) {
65
+ const abs = path.resolve(options.workspacePath, ref.path);
66
+ const bytes = await fs.readFile(abs);
67
+ input.push({ type: 'image', data: bytes.toString('base64'), mimeType: ref.mimeType });
68
+ }
69
+ const result = await runtime.generateImages(model, { input }, request.signal ? { signal: request.signal } : undefined);
70
+ const image = (result.output ?? []).find((part) => part.type === 'image' && part.data);
71
+ if (!image?.data) {
72
+ throw new Error(result.errorMessage || 'image generation returned no image');
73
+ }
74
+ const mimeType = image.mimeType ?? 'image/png';
75
+ const ext = EXT_BY_MIME[mimeType] ?? 'png';
76
+ const rel = path.posix.join(dir, `image-${Date.now()}.${ext}`);
77
+ const abs = path.resolve(options.workspacePath, rel);
78
+ await fs.mkdir(path.dirname(abs), { recursive: true });
79
+ await fs.writeFile(abs, Buffer.from(image.data, 'base64'));
80
+ return { path: rel, mimeType };
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=imagegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imagegen.js","sourceRoot":"","sources":["../../src/repl/imagegen.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,16 @@
5
5
  * used by the CLI (and, later, by pi). M1 implements goal mode, loading, and
6
6
  * reset; prompt mode / freeze / export are filled in by later milestones.
7
7
  */
8
- import type { DMLEvent, LLMBackend, MemoryMessage, ToolDefinition, ToolPolicy } from '../types.js';
8
+ import type { DMLEvent, ImageBackend, LLMBackend, MemoryMessage, ToolDefinition, ToolPolicy } from '../types.js';
9
9
  import type { FrameKind } from '../types.js';
10
- import { DMLSession, type DMLQueryOptions } from './session.js';
10
+ import { DMLSession, type DMLQueryOptions, type DiagramResult } from './session.js';
11
11
  import type { HarnessExportOptions, HarnessExportResult } from './export.js';
12
12
  import { type JevJudgeOptions } from './judge.js';
13
13
  import type { HistoryOptions } from './history.js';
14
14
  import type { JudgeSelection } from '../judge/types.js';
15
15
  import type { CompactionSettings } from './compaction.js';
16
+ import type { DiagramMode } from '../visualize/index.js';
17
+ import type { ModelResolver } from './model-resolver.js';
16
18
  export type RunOpts = DMLQueryOptions;
17
19
  /** Goal-mode events are DMLEvents today; kept as a named alias for the API. */
18
20
  export type DMLQueryEvent = DMLEvent;
@@ -71,6 +73,10 @@ export interface HarnessReplOptions {
71
73
  };
72
74
  /** Active model context window, used for compaction thresholds. */
73
75
  contextWindow?: number;
76
+ /** Host image generator for `task(…, media(X))` typed outputs. */
77
+ imageBackend?: ImageBackend;
78
+ /** Resolves `with_model/2` scopes to concrete models. */
79
+ modelResolver?: ModelResolver;
74
80
  }
75
81
  export interface RollbackResult {
76
82
  ok: boolean;
@@ -109,6 +115,10 @@ export interface HarnessRepl {
109
115
  afterTokens: number;
110
116
  error?: string;
111
117
  }>;
118
+ /** Generate a diagram of an entry predicate (Mermaid → ASCII tree + SVG). */
119
+ diagram(entry?: string, mode?: DiagramMode, options?: {
120
+ signal?: AbortSignal;
121
+ }): Promise<DiagramResult>;
112
122
  /** Deliver a steering message into the running authoring turn. */
113
123
  steer(text: string): void;
114
124
  dispose(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repl/index.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,9 @@ class HarnessReplImpl {
51
51
  compact(customInstructions) {
52
52
  return this.session.compact(customInstructions);
53
53
  }
54
+ diagram(entry, mode, options) {
55
+ return this.session.diagram(entry, mode, options);
56
+ }
54
57
  steer(text) {
55
58
  this.session.steer(text);
56
59
  }
@@ -100,6 +103,8 @@ export async function createHarnessRepl(options) {
100
103
  streaming: options.streaming ?? true,
101
104
  llmBackend: options.llmBackend,
102
105
  judgeSelection,
106
+ imageBackend: options.imageBackend,
107
+ modelResolver: options.modelResolver,
103
108
  },
104
109
  });
105
110
  return new HarnessReplImpl(session);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repl/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Resolve a `with_model/2` spec (string or dict) into a concrete model profile.
3
+ *
4
+ * Two sources, matching the chat backend:
5
+ * - `PiModelResolver` — pi's live registry; authoritative for existence and
6
+ * auth (the default backend).
7
+ * - `EnvModelResolver` — the bundled model database (the `env` backend).
8
+ *
9
+ * Resolution happens on first use of a scope and is cached by the runner.
10
+ */
11
+ import type { ModelSpec, ResolvedModel } from '../types.js';
12
+ import { type PiRegistryLike } from './backend.js';
13
+ export declare class ModelResolutionError extends Error {
14
+ constructor(message: string);
15
+ }
16
+ /**
17
+ * Parse a raw `model_spec` value (from the Prolog payload) into a `ModelSpec`.
18
+ * Accepts `none`/`default`/empty (→ default), a string
19
+ * (`provider:model`, `provider/model`, `model`, each with an optional `#level`),
20
+ * or a `model{…}` dict.
21
+ */
22
+ export declare function parseModelSpec(raw: unknown): ModelSpec;
23
+ export interface ModelResolver {
24
+ /** Resolve + validate a non-default spec. Throws `ModelResolutionError`. */
25
+ resolve(spec: ModelSpec): Promise<ResolvedModel>;
26
+ /** A short list of available models, for error messages. */
27
+ describe(): string;
28
+ /** The models available in this session, with catalog prices. */
29
+ catalog(): ModelCatalogEntry[];
30
+ }
31
+ /** One entry of the session's model catalog, as shown to the agent. */
32
+ export interface ModelCatalogEntry {
33
+ /** `provider:model` id, usable in `with_model/2`. */
34
+ model: string;
35
+ /** USD per 1M input tokens. */
36
+ inputCost?: number;
37
+ /** USD per 1M output tokens. */
38
+ outputCost?: number;
39
+ contextWindow?: number;
40
+ }
41
+ /** Format a catalog entry as `provider:model ($in/$out per 1M)`. */
42
+ export declare function formatModelCatalogEntry(entry: ModelCatalogEntry): string;
43
+ /** Resolve against pi's live registry (existence + auth are authoritative). */
44
+ export declare class PiModelResolver implements ModelResolver {
45
+ private readonly registry;
46
+ constructor(registry: PiRegistryLike);
47
+ resolve(spec: ModelSpec): Promise<ResolvedModel>;
48
+ describe(): string;
49
+ catalog(): ModelCatalogEntry[];
50
+ }
51
+ /** Resolve against the bundled model database (the `env` backend). */
52
+ export declare class EnvModelResolver implements ModelResolver {
53
+ private readonly sessionProvider;
54
+ constructor(sessionProvider: string);
55
+ resolve(spec: ModelSpec): Promise<ResolvedModel>;
56
+ describe(): string;
57
+ catalog(): ModelCatalogEntry[];
58
+ }
59
+ //# sourceMappingURL=model-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/repl/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9F,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAmCtD;AAED,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,4DAA4D;IAC5D,QAAQ,IAAI,MAAM,CAAC;IACnB,iEAAiE;IACjE,OAAO,IAAI,iBAAiB,EAAE,CAAC;CAChC;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,oEAAoE;AACpE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAQxE;AAED,+EAA+E;AAC/E,qBAAa,eAAgB,YAAW,aAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc;IAE/C,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCtD,QAAQ,IAAI,MAAM;IAQlB,OAAO,IAAI,iBAAiB,EAAE;CAQ/B;AAED,sEAAsE;AACtE,qBAAa,gBAAiB,YAAW,aAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,MAAM;IAE9C,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBtD,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,iBAAiB,EAAE;CAG/B"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Resolve a `with_model/2` spec (string or dict) into a concrete model profile.
3
+ *
4
+ * Two sources, matching the chat backend:
5
+ * - `PiModelResolver` — pi's live registry; authoritative for existence and
6
+ * auth (the default backend).
7
+ * - `EnvModelResolver` — the bundled model database (the `env` backend).
8
+ *
9
+ * Resolution happens on first use of a scope and is cached by the runner.
10
+ */
11
+ import { getAllModels, lookupModel, lookupProvider } from '../system/config/model-database.js';
12
+ import { supportedThinkingLevels } from './backend.js';
13
+ export class ModelResolutionError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = 'ModelResolutionError';
17
+ }
18
+ }
19
+ /**
20
+ * Parse a raw `model_spec` value (from the Prolog payload) into a `ModelSpec`.
21
+ * Accepts `none`/`default`/empty (→ default), a string
22
+ * (`provider:model`, `provider/model`, `model`, each with an optional `#level`),
23
+ * or a `model{…}` dict.
24
+ */
25
+ export function parseModelSpec(raw) {
26
+ if (raw === null || raw === undefined) {
27
+ return 'default';
28
+ }
29
+ if (typeof raw === 'object') {
30
+ const obj = raw;
31
+ const id = typeof obj.id === 'string' ? obj.id : undefined;
32
+ if (!id) {
33
+ return 'default';
34
+ }
35
+ return {
36
+ provider: typeof obj.provider === 'string' ? obj.provider : undefined,
37
+ id,
38
+ temperature: typeof obj.temperature === 'number' ? obj.temperature : undefined,
39
+ maxTokens: typeof obj.maxTokens === 'number' ? obj.maxTokens : undefined,
40
+ reasoning: typeof obj.reasoning === 'string' ? obj.reasoning : undefined,
41
+ };
42
+ }
43
+ const text = String(raw).trim();
44
+ if (!text || text === 'none' || text === 'default') {
45
+ return 'default';
46
+ }
47
+ let body = text;
48
+ let reasoning;
49
+ // Reasoning suffix uses the last `#` (provider/model ids may contain `:`/`/`).
50
+ const hash = body.lastIndexOf('#');
51
+ if (hash > 0) {
52
+ reasoning = body.slice(hash + 1).trim() || undefined;
53
+ body = body.slice(0, hash);
54
+ }
55
+ const sep = body.search(/[:/]/);
56
+ if (sep === -1) {
57
+ return { id: body, reasoning };
58
+ }
59
+ return { provider: body.slice(0, sep), id: body.slice(sep + 1), reasoning };
60
+ }
61
+ function trimCost(value) {
62
+ return String(Number(value.toFixed(3)));
63
+ }
64
+ /** Format a catalog entry as `provider:model ($in/$out per 1M)`. */
65
+ export function formatModelCatalogEntry(entry) {
66
+ const hasCost = typeof entry.inputCost === 'number' || typeof entry.outputCost === 'number';
67
+ if (!hasCost) {
68
+ return entry.model;
69
+ }
70
+ const input = typeof entry.inputCost === 'number' ? `$${trimCost(entry.inputCost)}` : '?';
71
+ const output = typeof entry.outputCost === 'number' ? `$${trimCost(entry.outputCost)}` : '?';
72
+ return `${entry.model} (${input}/${output} per 1M)`;
73
+ }
74
+ /** Resolve against pi's live registry (existence + auth are authoritative). */
75
+ export class PiModelResolver {
76
+ registry;
77
+ constructor(registry) {
78
+ this.registry = registry;
79
+ }
80
+ async resolve(spec) {
81
+ if (spec === 'default') {
82
+ throw new ModelResolutionError('internal: default spec resolved by the runner');
83
+ }
84
+ const available = this.registry.getAvailable();
85
+ const matches = available.filter((model) => model.id === spec.id && (spec.provider ? model.provider === spec.provider : true));
86
+ const label = spec.provider ? `${spec.provider}:${spec.id}` : spec.id;
87
+ if (matches.length === 0) {
88
+ throw new ModelResolutionError(`unknown model "${label}" — available: ${this.describe() || '(none)'}`);
89
+ }
90
+ if (matches.length > 1) {
91
+ throw new ModelResolutionError(`"${spec.id}" is ambiguous (${matches.map((m) => m.provider).join(', ')}) — use "provider:model"`);
92
+ }
93
+ const model = matches[0];
94
+ if (!this.registry.hasConfiguredAuth(model)) {
95
+ throw new ModelResolutionError(`provider "${model.provider}" is not signed in — run \`deepclause login\``);
96
+ }
97
+ return {
98
+ provider: model.provider,
99
+ id: model.id,
100
+ temperature: spec.temperature,
101
+ maxTokens: spec.maxTokens ?? model.maxTokens,
102
+ contextWindow: model.contextWindow,
103
+ reasoning: Boolean(model.reasoning),
104
+ reasoningLevel: spec.reasoning,
105
+ supportedThinkingLevels: supportedThinkingLevels(model),
106
+ };
107
+ }
108
+ describe() {
109
+ return this.registry
110
+ .getAvailable()
111
+ .map((model) => `${model.provider}:${model.id}`)
112
+ .slice(0, 12)
113
+ .join(', ');
114
+ }
115
+ catalog() {
116
+ return this.registry.getAvailable().map((model) => ({
117
+ model: `${model.provider}:${model.id}`,
118
+ inputCost: model.cost?.input,
119
+ outputCost: model.cost?.output,
120
+ contextWindow: model.contextWindow,
121
+ }));
122
+ }
123
+ }
124
+ /** Resolve against the bundled model database (the `env` backend). */
125
+ export class EnvModelResolver {
126
+ sessionProvider;
127
+ constructor(sessionProvider) {
128
+ this.sessionProvider = sessionProvider;
129
+ }
130
+ async resolve(spec) {
131
+ if (spec === 'default') {
132
+ throw new ModelResolutionError('internal: default spec resolved by the runner');
133
+ }
134
+ const provider = spec.provider ?? this.sessionProvider;
135
+ const entry = lookupModel(spec.id);
136
+ const providerEntry = lookupProvider(provider);
137
+ return {
138
+ provider,
139
+ id: spec.id,
140
+ temperature: spec.temperature,
141
+ maxTokens: spec.maxTokens ?? entry?.limit.output,
142
+ contextWindow: entry?.limit.context,
143
+ reasoning: entry?.reasoning ?? false,
144
+ reasoningLevel: spec.reasoning,
145
+ reasoningType: providerEntry?.reasoning_type ?? 'none',
146
+ reasoningBudgetMap: providerEntry?.budget_map,
147
+ };
148
+ }
149
+ describe() {
150
+ return Object.keys(getAllModels()).slice(0, 12).join(', ');
151
+ }
152
+ catalog() {
153
+ return Object.keys(getAllModels()).map((id) => ({ model: id }));
154
+ }
155
+ }
156
+ //# sourceMappingURL=model-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/repl/model-resolver.ts"],"names":[],"mappings":"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"}