@lucascouts/claude-agent-acp-plus 0.27.0 → 0.29.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/dist/tools.js CHANGED
@@ -4,6 +4,10 @@ import path from "node:path";
4
4
  * Returns the original path if it's outside the project directory or if no cwd is provided.
5
5
  */
6
6
  export function toDisplayPath(filePath, cwd) {
7
+ // `path.resolve` throws on a non-string (upstream issue #1308); the type says
8
+ // string, but the value is a model's tool input.
9
+ if (typeof filePath !== "string")
10
+ return displayValueOf(filePath) ?? "";
7
11
  if (!cwd)
8
12
  return filePath;
9
13
  const resolvedCwd = path.resolve(cwd);
@@ -13,6 +17,30 @@ export function toDisplayPath(filePath, cwd) {
13
17
  }
14
18
  return filePath;
15
19
  }
20
+ /** A tool input's path, when it is one: a non-empty string. Anything else — a
21
+ * model can emit `{"file_path": 12345}`, which Claude Code rejects — is no
22
+ * path, so it is neither resolved nor sent as a location or a diff target
23
+ * (parity item 104, upstream issue #1308). */
24
+ function pathOf(value) {
25
+ return typeof value === "string" && value.length > 0 ? value : undefined;
26
+ }
27
+ /** How a tool input value that is not a path still shows in a title: a number
28
+ * or boolean as its text, so the failed call names what the model sent;
29
+ * anything else (an object, null) as nothing. */
30
+ function displayValueOf(value) {
31
+ if (typeof value === "string")
32
+ return value.length > 0 ? value : undefined;
33
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
34
+ return String(value);
35
+ }
36
+ return undefined;
37
+ }
38
+ /** The title form of a tool input's path: project-relative when it is a path
39
+ * under `cwd`, the value's text when it is a scalar that is not a path. */
40
+ function displayPathOf(value, cwd) {
41
+ const filePath = pathOf(value);
42
+ return filePath !== undefined ? toDisplayPath(filePath, cwd) : displayValueOf(value);
43
+ }
16
44
  /** Read a Write tool_use input the way the CLI validates it. Since 2.1.280 the
17
45
  * CLI accepts `path` for `file_path` and `file_text`/`file_content` for
18
46
  * `content` when a model sends those spellings, but the streamed tool_use
@@ -72,15 +100,16 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
72
100
  else if (input?.offset) {
73
101
  limit = " (from line " + input.offset + ")";
74
102
  }
75
- const displayPath = input?.file_path ? toDisplayPath(input.file_path, cwd) : "File";
103
+ const filePath = pathOf(input?.file_path);
104
+ const displayPath = displayPathOf(input?.file_path, cwd) ?? "File";
76
105
  return {
77
106
  title: "Read " + displayPath + limit,
78
107
  kind: "read",
79
- locations: input?.file_path
108
+ locations: filePath
80
109
  ? [
81
110
  {
82
- path: input.file_path,
83
- line: input.offset ?? 1,
111
+ path: filePath,
112
+ line: input?.offset ?? 1,
84
113
  },
85
114
  ]
86
115
  : [],
@@ -89,12 +118,13 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
89
118
  }
90
119
  case "Write": {
91
120
  const input = normalizeWriteInput(toolUse.input);
121
+ const filePath = pathOf(input?.file_path);
92
122
  let content = [];
93
- if (input && input.file_path) {
123
+ if (input && filePath) {
94
124
  content = [
95
125
  {
96
126
  type: "diff",
97
- path: input.file_path,
127
+ path: filePath,
98
128
  oldText: null,
99
129
  newText: input.content,
100
130
  },
@@ -108,37 +138,39 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
108
138
  },
109
139
  ];
110
140
  }
111
- const displayPath = input?.file_path ? toDisplayPath(input.file_path, cwd) : undefined;
141
+ const displayPath = displayPathOf(input?.file_path, cwd);
112
142
  return {
113
143
  title: displayPath ? `Write ${displayPath}` : "Preparing file…",
114
144
  kind: "edit",
115
145
  content,
116
- locations: input?.file_path ? [{ path: input.file_path }] : [],
146
+ locations: filePath ? [{ path: filePath }] : [],
117
147
  };
118
148
  }
119
149
  case "Edit": {
120
150
  const input = toolUse.input;
151
+ const filePath = pathOf(input?.file_path);
121
152
  let content = [];
122
- if (input && input.file_path && (input.old_string || input.new_string)) {
153
+ if (input && filePath && (input.old_string || input.new_string)) {
123
154
  content = [
124
155
  {
125
156
  type: "diff",
126
- path: input.file_path,
157
+ path: filePath,
127
158
  oldText: input.old_string || null,
128
159
  newText: input.new_string ?? "",
129
160
  },
130
161
  ];
131
162
  }
132
- const displayPath = input?.file_path ? toDisplayPath(input.file_path, cwd) : undefined;
163
+ const displayPath = displayPathOf(input?.file_path, cwd);
133
164
  return {
134
165
  title: displayPath ? `Edit ${displayPath}` : "Edit",
135
166
  kind: "edit",
136
167
  content,
137
- locations: input?.file_path ? [{ path: input.file_path }] : [],
168
+ locations: filePath ? [{ path: filePath }] : [],
138
169
  };
139
170
  }
140
171
  case "Glob": {
141
172
  const input = toolUse.input;
173
+ const globPath = pathOf(input?.path);
142
174
  let label = "Find";
143
175
  if (input?.path) {
144
176
  label += ` \`${input.path}\``;
@@ -150,7 +182,7 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
150
182
  title: label,
151
183
  kind: "search",
152
184
  content: [],
153
- locations: input?.path ? [{ path: input.path }] : [],
185
+ locations: globPath ? [{ path: globPath }] : [],
154
186
  };
155
187
  }
156
188
  case "Grep": {
@@ -546,7 +578,13 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
546
578
  // or [{ type: "image", source: {...} }] when the local Bash tool
547
579
  // produces an image, e.g. piping a base64 data URI)
548
580
  let output = "";
581
+ // Parity item 92 (upstream #1252): the code is the one the result names.
582
+ // `null` means "not known" — `TerminalExitStatus` allows it — and is used
583
+ // only where the command did NOT fail: a client such as Zeo marks a
584
+ // command failed only on a non-null, non-zero code, so a known failure
585
+ // keeps a number (the `Exit code N` the text names, else 1).
549
586
  let exitCode = isError ? 1 : 0;
587
+ let codeFromResult = false;
550
588
  const structuredBash = structuredResult(toolUseResult);
551
589
  if (structuredBash &&
552
590
  typeof structuredBash.stdout === "string" &&
@@ -563,6 +601,11 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
563
601
  output = [output, "[Command was aborted before completion]"].filter(Boolean).join("\n");
564
602
  exitCode = 1;
565
603
  }
604
+ else if (structuredBash.returnCodeInterpretation !== undefined && !isError) {
605
+ // Claude Code accepted a non-zero code as a success (grep's "No
606
+ // matches found"); the result does not carry which code it was.
607
+ exitCode = null;
608
+ }
566
609
  // Structured stdout is clipped (~30k chars) when the full output was
567
610
  // persisted to disk; without this note the clip is silent and the
568
611
  // path to the full output is lost.
@@ -585,6 +628,7 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
585
628
  const bashResult = result;
586
629
  output = [bashResult.stdout, bashResult.stderr].filter(Boolean).join("\n");
587
630
  exitCode = bashResult.return_code;
631
+ codeFromResult = true;
588
632
  }
589
633
  else if (typeof result === "string") {
590
634
  output = result;
@@ -603,6 +647,13 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
603
647
  return toAcpContentUpdate(result, isError);
604
648
  }
605
649
  }
650
+ if (isError && !codeFromResult)
651
+ exitCode = failureExitCode(output) ?? 1;
652
+ // A command sent to the background is still running: the result only
653
+ // announces it. The consumer withholds this exit while the task is live
654
+ // and sends the real one when the task ends (`backgroundTerminals`).
655
+ if (structuredBash?.backgroundTaskId !== undefined)
656
+ exitCode = null;
606
657
  // Without a terminal id there is nothing the client can reconcile these
607
658
  // metas against, and emitting them anyway strands the output: a client that
608
659
  // buffers output/exit for terminals it has not been told about (Zed keeps
@@ -816,6 +867,15 @@ function toAcpContentBlock(content, isError) {
816
867
  return wrapText(JSON.stringify(content));
817
868
  }
818
869
  }
870
+ /**
871
+ * The exit code the text of a failed command names. Claude Code starts the text
872
+ * of a command that exited with a failing code with `Exit code N`; other
873
+ * failures, such as a denial or a command that could not start, name none.
874
+ */
875
+ export function failureExitCode(text) {
876
+ const match = /^Exit code (\d+)(?:\n|$)/.exec(text);
877
+ return match ? Number(match[1]) : undefined;
878
+ }
819
879
  export function planEntries(input) {
820
880
  return (input?.todos ?? []).map((todo) => ({
821
881
  content: todo.status === "in_progress" && todo.activeForm ? todo.activeForm : todo.content,
@@ -1,100 +1,166 @@
1
1
  /**
2
- * The "Ultracode" entry of the Effort picker.
2
+ * Ultracode — an independent, session-scoped boolean option.
3
3
  *
4
- * **Ultracode is not a sixth effort level, and reading it as one produces the
5
- * wrong control.** Claude Code's VS Code extension models it as a boolean that
6
- * turns on two things at once — `xhigh` effort *and* standing dynamic-workflow
7
- * orchestration — and its own tooltip says so: `"Ultracode - xhigh +
8
- * workflows"`. Its five real levels are `low` `medium` `high` `xhigh` `max`;
9
- * Ultracode is drawn as one extra notch past the last of them, styled
10
- * differently, and selecting any ordinary level clears it.
4
+ * **What it is.** The SDK's `Settings.ultracode` is *"standing
5
+ * dynamic-workflow orchestration at any effort level"*, session-scoped and
6
+ * applied through `apply_flag_settings`. It is not an effort level and it does
7
+ * not imply one: the CLI (`/effort ultracode on|off`, "any effort level, this
8
+ * session only") and the VS Code extension (a switch in the effort popover)
9
+ * both model it as a toggle beside effort. An earlier version of this module
10
+ * followed an older extension tooltip ("xhigh + workflows") and drew it as a
11
+ * notch in the effort select that forced `xhigh`; that silently raised the
12
+ * effort of a session started with `ultracode: true`, cleared it on any effort
13
+ * pick, and lost it on a model switch (PARITY-REPORT §21.2).
11
14
  *
12
- * ACP has no compound control to carry that, so the adapter projects it the way
13
- * the extension's UI reads rather than the way its state is stored: one more
14
- * entry in the `effort` select. The compound stays here, in one module, instead
15
- * of being spread across the three places `acp-agent.ts` applies effort.
15
+ * **The wire contract** (`applyFlagSettings`, unchanged SDK 0.3.285..0.3.299):
16
+ * - `ultracode: true|false` turns it on or off and leaves effort alone;
17
+ * - an `effortLevel` change sent WITHOUT the key turns it off;
18
+ * - `null` resets it to off.
19
+ * Hence the two payload rules below: the toggle sends `{ultracode:true}` or
20
+ * `{ultracode:null}`, and every effort change re-sends `ultracode:true` while
21
+ * the intent is on — and never `null`.
16
22
  *
17
- * The SDK carries both halves and names the channel: `Settings.ultracode` is
18
- * *"xhigh effort plus standing dynamic-workflow orchestration. Session-scoped —
19
- * typically provided via --settings or the apply_flag_settings control
20
- * request"*. `apply_flag_settings` is already how the effort option is applied,
21
- * so no new transport is involved.
23
+ * **Intent is not availability.** The CLI keeps the request and computes "in
24
+ * effect = requested and available", where available means workflows are
25
+ * enabled and the model supports `xhigh`. The adapter mirrors that: the
26
+ * session holds the intent, the option is shown only while available, and a
27
+ * model switch never drops the intent. The CLI reports both through the
28
+ * `get_settings` control request (`applied.{ultracode, ultracodeRequested,
29
+ * ultracodeAvailable}`), which the SDK runtime exposes as `Query.getSettings()`
30
+ * but `sdk.d.ts` does not declare — {@link readUltracodeState} wraps it.
22
31
  *
23
32
  * Kept self-contained — no import from `acp-agent.ts` — for the reason
24
- * `thinking-option.ts` and `rewind-command.ts` state: that file is ~9,900 lines
25
- * and moves upstream almost daily, so every coupling to it is paid again at
26
- * each sync.
33
+ * `thinking-option.ts` and `rewind-command.ts` state: that file is ~10,000
34
+ * lines and moves upstream almost daily, so every coupling to it is paid again
35
+ * at each sync.
27
36
  */
37
+ import type { SessionConfigOption, SetSessionConfigOptionRequest } from "@agentclientprotocol/sdk";
28
38
  import type { EffortLevel, Settings } from "@anthropic-ai/claude-agent-sdk";
29
- /** Value of the synthetic "Ultracode" entry in the effort picker. It is a
30
- * reserved sentinel: no `EffortLevel` is spelled this way, so it cannot
31
- * collide with a level the SDK reports in `supportedEffortLevels`. */
32
- export declare const ULTRACODE_OPTION_VALUE = "ultracode";
33
- /** Display name of that entry, matching the extension's own label. */
39
+ /** Config option id. */
40
+ export declare const ULTRACODE_CONFIG_ID = "ultracode";
41
+ /** Display name, matching the CLI's and the extension's label. */
34
42
  export declare const ULTRACODE_OPTION_NAME = "Ultracode";
35
- /** The effort level Ultracode implies. Not configurable: the extension hardcodes
36
- * `xhigh` in `enableUltracode()`, and the SDK's own description of the setting
37
- * names the same level. A different level here would silently mean something
38
- * else than it does in the reference client. */
43
+ /** Select-fallback values for clients without boolean config options. The
44
+ * same spelling Fast mode uses, so one client-side mapping serves both. */
45
+ export declare const ULTRACODE_ON = "on";
46
+ export declare const ULTRACODE_OFF = "off";
47
+ /** The effort level the model must support for Ultracode to be available.
48
+ * Availability only: Ultracode never SETS this level. */
39
49
  export declare const ULTRACODE_EFFORT_LEVEL: EffortLevel;
40
- /** Display state for the Ultracode entry, resolved by the caller. Mirrors the
41
- * shape `FastModeOptionState` uses for the same job — availability and current
42
- * value are two different questions, and folding them into one boolean loses
43
- * the case where the entry should render but not be selected. */
50
+ /** The value the old effort-select notch carried. Accepted for one release
51
+ * from clients that still send it (see {@link isLegacyUltracodeEffort}). */
52
+ export declare const LEGACY_ULTRACODE_EFFORT_VALUE = "ultracode";
53
+ /** Display state for the option, resolved by the caller. Mirrors
54
+ * `FastModeOptionState`: availability and value are different questions. */
44
55
  export interface UltracodeOptionState {
45
- /** Whether the entry should appear at all. */
56
+ /** Whether the option is shown at all. */
46
57
  available: boolean;
47
- /** Whether it is the currently selected effort. */
48
- enabled: boolean;
58
+ /** The session's intent — shown as the option's value. */
59
+ requested: boolean;
60
+ /** Whether the client opted into boolean config options. */
61
+ useBooleanOption: boolean;
49
62
  }
50
63
  /**
51
- * Whether the Ultracode entry may be offered, under the same two conditions the
52
- * extension checks in its own `ultracodeAvailable`:
64
+ * The fallback availability check, used until (or instead of) the CLI's own
65
+ * `applied.ultracodeAvailable`:
53
66
  *
54
- * 1. workflows are not disabled — Ultracode *is* the workflow half, so offering
55
- * it where `disableWorkflows` is set would advertise something that cannot
56
- * happen;
57
- * 2. the current model supports `xhigh` — Ultracode has no meaning on a model
58
- * that cannot reach the level it implies.
67
+ * 1. workflows are not disabled — Ultracode *is* workflow orchestration;
68
+ * 2. the current model supports `xhigh`.
59
69
  *
60
- * Both are read rather than assumed: an unknown settings shape leaves
61
- * `disableWorkflows` undefined, which is *not* `true`, so the gate opens — the
62
- * same direction the extension's `=== !0` comparison takes.
70
+ * Partial by nature: the CLI also checks managed settings, org policy,
71
+ * `enableWorkflows` and `CLAUDE_CODE_DISABLE_WORKFLOWS`. An absent
72
+ * `disableWorkflows` opens the gate, the same direction the extension's
73
+ * `=== !0` comparison takes.
63
74
  */
64
75
  export declare function isUltracodeAvailable(supportedEffortLevels: readonly string[], settings: Pick<Settings, "disableWorkflows"> | undefined): boolean;
65
- /** Whether a picker value denotes Ultracode rather than a plain effort level. */
66
- export declare function isUltracodeValue(value: string | undefined): boolean;
76
+ /** Build the option: a native boolean for clients that opted in, an on/off
77
+ * select otherwise (the ACP boolean-config-option RFD makes that a MUST). */
78
+ export declare function createUltracodeConfigOption(requested: boolean, useBooleanOption: boolean): SessionConfigOption;
79
+ /** The option for a resolved state, or `undefined` while unavailable. */
80
+ export declare function ultracodeConfigOption(state: UltracodeOptionState | undefined): SessionConfigOption | undefined;
67
81
  /**
68
- * The `apply_flag_settings` payload for an effort selection, Ultracode included.
82
+ * Put the option where it belongs in an existing list — right after `effort`
83
+ * (after `model` when the model has no effort option), before `fast` — or
84
+ * remove it when `next` is undefined. Used when a background readback changes
85
+ * availability without a full rebuild.
86
+ */
87
+ export declare function placeUltracodeOption(options: SessionConfigOption[], next: SessionConfigOption | undefined): SessionConfigOption[];
88
+ /** Resolve the requested value from `session/set_config_option`: a native
89
+ * boolean, or the on/off select-fallback strings. */
90
+ export declare function resolveUltracodeRequested(params: SetSessionConfigOptionRequest): boolean;
91
+ /** The toggle's payload. Off is an explicit `null`: `undefined` is dropped by
92
+ * JSON transport, and the SDK only clears a flag on `null`. */
93
+ export declare function ultracodeTogglePayload(requested: boolean): {
94
+ ultracode: true | null;
95
+ };
96
+ /**
97
+ * The `apply_flag_settings` payload for an effort change — a user pick, the
98
+ * model-switch fallback, the initial effort, or a recreate's replay.
69
99
  *
70
- * **The `null` is the load-bearing part.** The SDK shallow-merges flag settings
71
- * and only clears a key when an explicit `null` arrives — `undefined` is dropped
72
- * by JSON transport and leaves the previous value standing. So every selection
73
- * has to say something about `ultracode`, not just the one that turns it on:
74
- * without the clear, picking `High` after Ultracode would lower the effort and
75
- * leave workflow orchestration running, which is a state no picker entry names.
76
- * The same reasoning applies to `effortLevel` — this function absorbed the older
77
- * `toSdkEffortLevel` helper for exactly that reason: both keys are decided in
78
- * one place, so neither can be forgotten on a path the other takes.
100
+ * An `effortLevel` change sent without `ultracode` turns Ultracode off, so the
101
+ * key rides along whenever the intent is on. It is never sent as `null` here:
102
+ * an effort change is not a request to turn Ultracode off.
79
103
  *
80
- * @param value the picker value — `"default"`, an `EffortLevel`, or the
81
- * Ultracode sentinel. `undefined` means the option is absent for this model.
104
+ * @param value the effort select's value — `"default"`, an `EffortLevel`, or
105
+ * `undefined` when the model has no effort option.
82
106
  */
83
- export declare function ultracodeFlagSettings(value: string | undefined): {
107
+ export declare function effortFlagSettings(value: string | undefined, ultracodeRequested: boolean): {
84
108
  effortLevel: EffortLevel | null;
85
- ultracode: boolean | null;
109
+ ultracode?: true;
86
110
  };
111
+ /** Whether an effort value is the retired Ultracode notch. Clients that saved
112
+ * it get `{effortLevel:'xhigh', ultracode:true}` for one release. */
113
+ export declare function isLegacyUltracodeEffort(value: unknown): boolean;
114
+ /** What the CLI reported. Each field is absent when the CLI did not say. */
115
+ export interface UltracodeReadback {
116
+ requested?: boolean;
117
+ available?: boolean;
118
+ }
87
119
  /**
88
- * The picker value to display, given the persisted effort level and whether the
89
- * Ultracode flag is on.
120
+ * Read `applied.{ultracodeRequested, ultracodeAvailable}` through the SDK's
121
+ * untyped `Query.getSettings()`.
122
+ *
123
+ * Structural, never trusting: an SDK without the method, a rejected request,
124
+ * or a response without `applied` all resolve to `undefined`, and the caller
125
+ * keeps the heuristic. Never rejects.
90
126
  *
91
- * The flag wins over the level, and only when it is *available*: a session that
92
- * carries `ultracode: true` from settings while the current model cannot reach
93
- * `xhigh` must not show an entry the picker is not rendering. The extension
94
- * reaches the same state through `adoptAppliedEffort`, which reads
95
- * `applied.ultracode` first and falls back to inferring it from `xhigh`; we do
96
- * not infer, because `xhigh` alone is a legitimate selection that is not
97
- * Ultracode, and guessing would silently turn workflows on in the label.
127
+ * **Call it in the background, never inline.** Control requests are
128
+ * serialized and queue ahead of interrupt and close (upstream #1216), and on a
129
+ * fresh session the CLI does not service them until the first turn.
130
+ */
131
+ export declare function readUltracodeState(query: unknown, onError?: (error: unknown) => void): Promise<UltracodeReadback | undefined>;
132
+ /**
133
+ * The slice of a session these helpers read and write. Structural, so this
134
+ * module does not import the `Session` type from `acp-agent.ts`.
135
+ */
136
+ export interface UltracodeSession {
137
+ query: {
138
+ applyFlagSettings(settings: Record<string, unknown>): Promise<void>;
139
+ };
140
+ configOptions: SessionConfigOption[];
141
+ /** The intent: what the user (or settings, or the CLI's readback) asked for. */
142
+ ultracodeRequested: boolean;
143
+ /** Whether the option is shown: the CLI's `applied.ultracodeAvailable` when
144
+ * read, else {@link isUltracodeAvailable}'s heuristic. */
145
+ ultracodeAvailable: boolean;
146
+ }
147
+ /** Rebuild the option in place from the session's state. */
148
+ export declare function refreshUltracodeOption(session: UltracodeSession, useBooleanOption: boolean): void;
149
+ /** Toggle the intent. Applies first, then records — a rejected control
150
+ * request leaves the session and its option untouched, as Fast mode does. */
151
+ export declare function applyUltracodeToggle(session: UltracodeSession, requested: boolean, useBooleanOption: boolean): Promise<void>;
152
+ /**
153
+ * The one-release migration for clients that still send the retired notch:
154
+ * `effort = "ultracode"` becomes `{effortLevel:'xhigh', ultracode:true}`.
155
+ * Returns `false`, sending nothing, when this model's effort select does not
156
+ * offer `xhigh` — the caller then rejects the value like any other.
157
+ */
158
+ export declare function applyLegacyUltracodeEffort(session: UltracodeSession, useBooleanOption: boolean): Promise<boolean>;
159
+ /**
160
+ * Fold a CLI readback into the session. Availability is always taken; the
161
+ * intent only when `seedIntent` (session start — a model switch keeps the
162
+ * intent it has). Returns whether the option the client sees changed, i.e.
163
+ * whether a `config_option_update` is owed.
98
164
  */
99
- export declare function effortOptionValue(effortLevel: string | undefined, ultracode: UltracodeOptionState | undefined): string | undefined;
165
+ export declare function applyUltracodeReadback(session: UltracodeSession, readback: UltracodeReadback, seedIntent: boolean, useBooleanOption: boolean): boolean;
100
166
  //# sourceMappingURL=ultracode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ultracode.d.ts","sourceRoot":"","sources":["../src/ultracode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;uEAEuE;AACvE,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD;;;iDAGiD;AACjD,eAAO,MAAM,sBAAsB,EAAE,WAAqB,CAAC;AAE3D;;;kEAGkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,qBAAqB,EAAE,SAAS,MAAM,EAAE,EACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,SAAS,GACvD,OAAO,CAGT;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEnE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAChE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAQA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAC1C,MAAM,GAAG,SAAS,CAGpB"}
1
+ {"version":3,"file":"ultracode.d.ts","sourceRoot":"","sources":["../src/ultracode.ts"],"names":[],"mappings":"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"}