Skip to content

raw

Static method on String. Variadic items live under substitutions.

String.raw is usually used as a tag function of a Tagged Template String. When called as such, the first argument will be a well formed template call site object and the rest parameter will contain the substitution values. It can also be called directly, for example, to interleave strings and values from your own tag function, and in this case the only thing it needs from the first argument is the raw property.

raw(input: { template: { raw: readonly string[] | ArrayLike<string>; }; substitutions: any[]; prompt?: string }): Promise<string>

The prompt field is optional. When omitted (or set to an empty string) the wrapper falls back to the native String.raw and returns a resolved Promise without contacting the LLM. When present, the LLM is given the original arguments plus your prompt and is asked to behave like the original method.

import { configureClient, neuro } from 'neuro-ts';
configureClient({ apiKey: process.env.OPENAI_API_KEY });
// Tagged template; backslashes survive, the path-on-Windows escape we keep almost remembering.
await neuro.string.raw({ template: { raw: ['C:\', '\bin'] } as TemplateStringsArray, substitutions: ['users'], prompt: 'reconstruct a tagged template literal from template.raw and substitutions, treating backslashes as literal text the way the literal source intended' });

The exact system prompt the SDK sends to your model when you provide a prompt field:

Generated promptString.raw
You are simulating the JavaScript built-in `String.raw`.
## Original signature(s)
  Overload 1: (template: { raw: readonly string[] | ArrayLike<string>; }, ...substitutions: any[]) => string
## JSDoc
String.raw is usually used as a tag function of a Tagged Template String. When called as
such, the first argument will be a well formed template call site object and the rest
parameter will contain the substitution values. It can also be called directly, for example,
to interleave strings and values from your own tag function, and in this case the only thing
it needs from the first argument is the raw property.

## How to respond
- Behave EXACTLY as the original `raw` would, but use the user's intent to choose any callback / comparator / transform logic that the original would normally accept as an argument.
- Strictly preserve the original return type and shape.
- Output ONLY the JSON-encoded return value of the function call.
- Do NOT include explanations, prose, comments, or markdown fences.
- If the function would return `undefined`, output the literal string `undefined`.
- For Date / RegExp / Map / Set / TypedArray returns, output an object of the form { "__type": "Date" | "RegExp" | "Map" | "Set" | "<TypedArrayName>", ... } so the SDK can rehydrate it.