ikarmic-forge 4.4.0 → 4.5.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.
Files changed (45) hide show
  1. package/README.md +4 -0
  2. package/dist/acp/server.d.ts +3 -1
  3. package/dist/acp/server.d.ts.map +1 -1
  4. package/dist/acp/server.js +45 -4
  5. package/dist/acp/server.js.map +1 -1
  6. package/dist/bin/forge.js +45 -6
  7. package/dist/bin/forge.js.map +1 -1
  8. package/dist/chat-files.d.ts +8 -0
  9. package/dist/chat-files.d.ts.map +1 -1
  10. package/dist/chat-files.js +41 -4
  11. package/dist/chat-files.js.map +1 -1
  12. package/dist/clipboard.d.ts +38 -0
  13. package/dist/clipboard.d.ts.map +1 -0
  14. package/dist/clipboard.js +63 -0
  15. package/dist/clipboard.js.map +1 -0
  16. package/dist/commands/memory.d.ts +10 -0
  17. package/dist/commands/memory.d.ts.map +1 -0
  18. package/dist/commands/memory.js +77 -0
  19. package/dist/commands/memory.js.map +1 -0
  20. package/dist/commands/spec.d.ts +13 -3
  21. package/dist/commands/spec.d.ts.map +1 -1
  22. package/dist/commands/spec.js +76 -5
  23. package/dist/commands/spec.js.map +1 -1
  24. package/dist/components/Approval.d.ts.map +1 -1
  25. package/dist/components/Approval.js +2 -0
  26. package/dist/components/Approval.js.map +1 -1
  27. package/dist/options.d.ts +45 -3
  28. package/dist/options.d.ts.map +1 -1
  29. package/dist/options.js +90 -11
  30. package/dist/options.js.map +1 -1
  31. package/dist/repl-commands.d.ts +39 -0
  32. package/dist/repl-commands.d.ts.map +1 -1
  33. package/dist/repl-commands.js +91 -4
  34. package/dist/repl-commands.js.map +1 -1
  35. package/dist/repl-extras.d.ts +39 -0
  36. package/dist/repl-extras.d.ts.map +1 -0
  37. package/dist/repl-extras.js +120 -0
  38. package/dist/repl-extras.js.map +1 -0
  39. package/dist/repl.d.ts +25 -1
  40. package/dist/repl.d.ts.map +1 -1
  41. package/dist/repl.js +419 -86
  42. package/dist/repl.js.map +1 -1
  43. package/dist/session-checkpoints.js +1 -1
  44. package/dist/session-checkpoints.js.map +1 -1
  45. package/package.json +2 -2
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Pure helpers for the REPL's I/O commands: /copy, /copy-context, /editor, /report and /help <question>.
3
+ */
4
+ import { spawn } from 'node:child_process';
5
+ import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
6
+ import { tmpdir } from 'node:os';
7
+ import path from 'node:path';
8
+ /** Text of one message's content: a string, or the text parts of a structured message. */
9
+ function textOf(content) {
10
+ if (typeof content === 'string')
11
+ return content;
12
+ if (!Array.isArray(content))
13
+ return '';
14
+ return content
15
+ .filter((p) => typeof p === 'object' && p !== null && p.type === 'text' && typeof p.text === 'string')
16
+ .map((p) => p.text)
17
+ .join('');
18
+ }
19
+ /** The last assistant reply that has text (a turn that only called tools has none). */
20
+ export function lastAssistantText(history) {
21
+ for (let i = history.length - 1; i >= 0; i--) {
22
+ const m = history[i];
23
+ if (m.role !== 'assistant')
24
+ continue;
25
+ const text = textOf(m.content).trim();
26
+ if (text)
27
+ return text;
28
+ }
29
+ return null;
30
+ }
31
+ function toolCallNames(content) {
32
+ if (!Array.isArray(content))
33
+ return [];
34
+ return content
35
+ .filter((p) => typeof p === 'object' && p !== null && p.type === 'tool-call')
36
+ .map((p) => p.toolName);
37
+ }
38
+ /** The conversation as Markdown, to paste into a web chat. Tool results and the system prompt are left out. */
39
+ export function conversationMarkdown(history) {
40
+ const parts = [];
41
+ for (const m of history) {
42
+ if (m.role === 'user') {
43
+ const text = textOf(m.content).trim();
44
+ if (text)
45
+ parts.push(`#### User\n\n${text}`);
46
+ }
47
+ else if (m.role === 'assistant') {
48
+ const text = textOf(m.content).trim();
49
+ const tools = toolCallNames(m.content);
50
+ const note = tools.length > 0 ? `*(used: ${[...new Set(tools)].join(', ')})*` : '';
51
+ const body = [text, note].filter(Boolean).join('\n\n');
52
+ if (body)
53
+ parts.push(`#### Assistant\n\n${body}`);
54
+ }
55
+ }
56
+ return parts.join('\n\n');
57
+ }
58
+ /** `$VISUAL`, then `$EDITOR`, then a platform default. */
59
+ export function resolveEditor(env = process.env, platform = process.platform) {
60
+ return env.VISUAL?.trim() || env.EDITOR?.trim() || (platform === 'win32' ? 'notepad' : 'vi');
61
+ }
62
+ export const spawnEditor = (command, file) => new Promise((resolve) => {
63
+ const quoted = /^[A-Za-z0-9_./\\:-]+$/.test(file) ? file : `"${file}"`;
64
+ const child = spawn(`${command} ${quoted}`, { shell: true, stdio: 'inherit' });
65
+ child.on('error', () => resolve(null));
66
+ child.on('close', (code) => resolve(code));
67
+ });
68
+ /**
69
+ * Let the user write a prompt in their editor: a temp file seeded with `initial`, opened in the editor,
70
+ * read back when it closes. An empty result (or a failing editor) is reported, not sent.
71
+ */
72
+ export async function composeInEditor(initial, opts = {}) {
73
+ const editor = resolveEditor(opts.env, opts.platform);
74
+ const spawner = opts.spawner ?? spawnEditor;
75
+ const dir = await mkdtemp(path.join(tmpdir(), 'forge-editor-'));
76
+ const file = path.join(dir, 'prompt.md');
77
+ try {
78
+ await writeFile(file, initial, 'utf8');
79
+ const code = await spawner(editor, file);
80
+ if (code === null)
81
+ return { ok: false, error: `could not start "${editor}" (set $VISUAL or $EDITOR)` };
82
+ if (code !== 0)
83
+ return { ok: false, error: `"${editor}" exited with code ${code}` };
84
+ const text = (await readFile(file, 'utf8')).trim();
85
+ return text ? { ok: true, text } : { ok: false, error: 'the file was empty, so nothing was sent' };
86
+ }
87
+ finally {
88
+ await rm(dir, { recursive: true, force: true }).catch(() => undefined);
89
+ }
90
+ }
91
+ const ISSUES_URL = 'https://github.com/ikarmicai/ikarmic-forge/issues/new';
92
+ /** A prefilled "new issue" link. Diagnostics only: no keys, paths, prompts or file contents. */
93
+ export function reportUrl(info) {
94
+ const body = [
95
+ '**What happened**',
96
+ '',
97
+ '',
98
+ '**What I expected**',
99
+ '',
100
+ '',
101
+ '**Diagnostics**',
102
+ `- Forge: ${info.version}`,
103
+ `- Platform: ${info.platform}`,
104
+ `- Node: ${info.node}`,
105
+ `- Model: ${info.model.provider}:${info.model.model}`,
106
+ ].join('\n');
107
+ return `${ISSUES_URL}?${new URLSearchParams({ title: '', body }).toString()}`;
108
+ }
109
+ /** The task for `/help <question>`: answer from the command reference only. */
110
+ export function helpQuestionTask(question, reference) {
111
+ return [
112
+ 'Answer this question about how to use Forge, the coding agent this conversation is running in.',
113
+ 'Use only the reference below. If it does not cover the question, say so instead of guessing.',
114
+ '',
115
+ `Question: ${question}`,
116
+ '',
117
+ `<forge-reference>\n${reference.trim()}\n</forge-reference>`,
118
+ ].join('\n');
119
+ }
120
+ //# sourceMappingURL=repl-extras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl-extras.js","sourceRoot":"","sources":["../src/repl-extras.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,0FAA0F;AAC1F,SAAS,MAAM,CAAC,OAAgB;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAwB,CAAC,IAAI,KAAK,MAAM,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,CAAC;SAC1L,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,OAAgC;IAChE,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAgD,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAwB,CAAC,IAAI,KAAK,WAAW,CAAC;SAClJ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,oBAAoB,CAAC,OAAgC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,WAA4B,OAAO,CAAC,QAAQ;IAC9G,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/F,CAAC;AAKD,MAAM,CAAC,MAAM,WAAW,GAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAC1D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAIL;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,OAAyF,EAAE;IAE3F,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,MAAM,4BAA4B,EAAE,CAAC;QACvG,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,MAAM,sBAAsB,IAAI,EAAE,EAAE,CAAC;QACpF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IACrG,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAUD,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAE3E,gGAAgG;AAChG,MAAM,UAAU,SAAS,CAAC,IAAgB;IACxC,MAAM,IAAI,GAAG;QACX,mBAAmB;QACnB,EAAE;QACF,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,EAAE;QACF,iBAAiB;QACjB,YAAY,IAAI,CAAC,OAAO,EAAE;QAC1B,eAAe,IAAI,CAAC,QAAQ,EAAE;QAC9B,WAAW,IAAI,CAAC,IAAI,EAAE;QACtB,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;KACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,GAAG,UAAU,IAAI,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;IAClE,OAAO;QACL,gGAAgG;QAChG,8FAA8F;QAC9F,EAAE;QACF,aAAa,QAAQ,EAAE;QACvB,EAAE;QACF,sBAAsB,SAAS,CAAC,IAAI,EAAE,sBAAsB;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/dist/repl.d.ts CHANGED
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import type { ModelMessage } from 'ai';
3
3
  import { type AgentConfig, type ForgeConfigFile, type ModelConfig } from '@ikarmic/forge-core';
4
4
  import type { Notifier } from './notify.js';
5
+ import { copyToClipboard, readClipboard } from './clipboard.js';
6
+ import { type EditorResult } from './repl-extras.js';
5
7
  import type { GitWorkflow } from './git-workflow.js';
6
8
  /**
7
9
  * Persistent interactive REPL: multi-turn chat with the agent.
@@ -17,6 +19,20 @@ import type { GitWorkflow } from './git-workflow.js';
17
19
  * The conversation history is what enables multi-turn context: every tool
18
20
  * result the agent saw is preserved across turns.
19
21
  */
22
+ export interface PageFetch {
23
+ url: string;
24
+ title?: string;
25
+ status: number;
26
+ excerpt: string;
27
+ truncated: boolean;
28
+ }
29
+ export interface ReplServices {
30
+ copy?: typeof copyToClipboard;
31
+ read?: typeof readClipboard;
32
+ /** Open the user's editor on `initial` and return what they wrote. */
33
+ edit?: (initial: string) => Promise<EditorResult>;
34
+ fetchPage?: (url: string, cwd: string) => Promise<PageFetch>;
35
+ }
20
36
  export interface ReplProps {
21
37
  baseConfig: AgentConfig;
22
38
  model: ModelConfig;
@@ -47,6 +63,14 @@ export interface ReplProps {
47
63
  commitModel?: ModelConfig;
48
64
  /** `aliases` from ~/.forge/config.json, for `/model` and `/models`. */
49
65
  aliases?: Record<string, string>;
66
+ /** Forge's version, for `/report`. */
67
+ version?: string;
68
+ /** Replaceable system access (clipboard, editor, web), for tests. */
69
+ services?: ReplServices;
70
+ /** `--lint-cmd` commands: what `/lint` runs with no argument. */
71
+ lintCmds?: string[];
72
+ /** `--test-cmd` commands: what `/test` runs with no argument. */
73
+ testCmds?: string[];
50
74
  }
51
- export declare function Repl({ baseConfig, model: initialModel, onExit, sessionId, initialHistory, initialLabel, sessionDir, display, gitWorkflow, gitOptions, commitModel, notify, aliases, }: ReplProps): React.ReactElement;
75
+ export declare function Repl({ baseConfig, model: initialModel, onExit, sessionId, initialHistory, initialLabel, sessionDir, display, gitWorkflow, gitOptions, commitModel, notify, aliases, version, services, lintCmds, testCmds, }: ReplProps): React.ReactElement;
52
76
  //# sourceMappingURL=repl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC,OAAO,EAEL,KAAK,WAAW,EAKhB,KAAK,eAAe,EACpB,KAAK,WAAW,EAUjB,MAAM,qBAAqB,CAAC;AAe7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgB5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACrC,sDAAsD;IACtD,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,6DAA6D;IAC7D,UAAU,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,CAAC;IAChE,uDAAuD;IACvD,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,uDAAuD;IACvD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAuBD,wBAAgB,IAAI,CAAC,EACnB,UAAU,EACV,KAAK,EAAE,YAAY,EACnB,MAAM,EACN,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,OAAY,EACZ,WAAkB,EAClB,UAA2D,EAC3D,WAAW,EACX,MAAM,EACN,OAAO,GACR,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAwlChC"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC,OAAO,EAEL,KAAK,WAAW,EAKhB,KAAK,eAAe,EACpB,KAAK,WAAW,EAgBjB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAkB1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,eAAe,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,aAAa,CAAC;IAC5B,sEAAsE;IACtE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9D;AA+BD,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACrC,sDAAsD;IACtD,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,6DAA6D;IAC7D,UAAU,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,CAAC;IAChE,uDAAuD;IACvD,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,uDAAuD;IACvD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAuBD,wBAAgB,IAAI,CAAC,EACnB,UAAU,EACV,KAAK,EAAE,YAAY,EACnB,MAAM,EACN,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,OAAY,EACZ,WAAkB,EAClB,UAA2D,EAC3D,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAmB,EACnB,QAAQ,EACR,QAAa,EACb,QAAa,GACd,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CA04ChC"}