Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move stable globals out of execution loop #649

Merged
merged 4 commits into from
Aug 23, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions docs/genaisrc/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions genaisrc/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions packages/cli/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { installGlobals } from "../../core/src/globals"

Check failure on line 1 in packages/cli/src/main.ts

View workflow job for this annotation

GitHub Actions / build

You have imported the `installGlobals` function but it is not used anywhere in the file. Please ensure to use it or remove the import to keep the code clean. 🧹
pelikhan marked this conversation as resolved.
Show resolved Hide resolved
import { cli } from "./cli"

installGlobals()
cli()
7 changes: 0 additions & 7 deletions packages/core/src/genaisrc/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

59 changes: 59 additions & 0 deletions packages/core/src/globals.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { YAMLParse, YAMLStringify } from "./yaml"
import { CSVParse, CSVToMarkdown } from "./csv"
import { INIParse, INIStringify } from "./ini"
import { XMLParse } from "./xml"
import {
frontmatterTryParse,
splitMarkdown,
updateFrontmatter,
} from "./frontmatter"
import { JSONLStringify, JSONLTryParse } from "./jsonl"

export function resolveGlobal(): any {
if (typeof window !== "undefined")
return window // Browser environment
else if (typeof self !== "undefined") return self
else if (typeof global !== "undefined") return global // Node.js environment
throw new Error("Could not find global")
}

export function installGlobals() {
const glb = resolveGlobal()

glb.YAML = Object.freeze<YAML>({
stringify: YAMLStringify,
parse: YAMLParse,
})
glb.CSV = Object.freeze<CSV>({
parse: CSVParse,
markdownify: CSVToMarkdown,
})
glb.INI = Object.freeze<INI>({
parse: INIParse,
stringify: INIStringify,
})
glb.XML = Object.freeze<XML>({
parse: XMLParse,
})
glb.MD = Object.freeze<MD>({
frontmatter: (text, format) =>
frontmatterTryParse(text, { format })?.value ?? {},
content: (text) => splitMarkdown(text)?.content,
updateFrontmatter: (text, frontmatter, format): string =>
updateFrontmatter(text, frontmatter, { format }),
})
glb.JSONL = Object.freeze<JSONL>({
parse: JSONLTryParse,
stringify: JSONLStringify,
})
glb.AICI = Object.freeze<AICI>({
gen: (options: AICIGenOptions) => {
// validate options
return {
type: "aici",
name: "gen",
options,
}
},
})
}

Check failure on line 59 in packages/core/src/globals.ts

View workflow job for this annotation

GitHub Actions / build

The `installGlobals` function is adding a lot of properties to the global object. This can lead to potential conflicts and makes the code harder to reason about. Consider using a more encapsulated approach. 🌐
pelikhan marked this conversation as resolved.
Show resolved Hide resolved
18 changes: 2 additions & 16 deletions packages/core/src/importprompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,8 @@
import { host } from "./host"
import { logError } from "./util"
import { TraceOptions } from "./trace"
import { fileURLToPath, pathToFileURL } from "url"

function resolveGlobal(): any {
if (typeof window !== "undefined")
return window // Browser environment
else if (typeof self !== "undefined") return self
else if (typeof global !== "undefined") return global // Node.js environment
throw new Error("Could not find global")
}
import { pathToFileURL } from "url"
import { resolveGlobal } from "./globals"

Check failure on line 6 in packages/core/src/importprompt.ts

View workflow job for this annotation

GitHub Actions / build

The `resolveGlobal` function has been moved to a different file and is imported here, but the old implementation is not removed. Please remove the old implementation to avoid confusion. 🗑️
pelikhan marked this conversation as resolved.
Show resolved Hide resolved
pelikhan marked this conversation as resolved.
Show resolved Hide resolved

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function resolveGlobal() has been moved to a different file. Make sure that this function is not used elsewhere in the codebase, as this could potentially break functionality.

generated by pr-review-commit import_change


export async function importPrompt(
ctx0: PromptContext,
Expand All @@ -30,13 +23,6 @@
"parsers",
"env",
"retrieval",
"YAML",
"INI",
"CSV",
"XML",
"MD",
"JSONL",
"AICI",
"fetchText",
"cancel",
]
Expand Down
43 changes: 0 additions & 43 deletions packages/core/src/promptcontext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,42 +74,6 @@ export async function createPromptContext(
const { generator, ...varsNoGenerator } = vars
const env = { generator, ...structuredClone(varsNoGenerator) }
const parsers = await createParsers({ trace, model })
const YAML = Object.freeze<YAML>({
stringify: YAMLStringify,
parse: YAMLParse,
})
const CSV = Object.freeze<CSV>({
parse: CSVParse,
markdownify: CSVToMarkdown,
})
const INI = Object.freeze<INI>({
parse: INIParse,
stringify: INIStringify,
})
const XML = Object.freeze<XML>({
parse: XMLParse,
})
const MD = Object.freeze<MD>({
frontmatter: (text, format) =>
frontmatterTryParse(text, { format })?.value ?? {},
content: (text) => splitMarkdown(text)?.content,
updateFrontmatter: (text, frontmatter, format): string =>
updateFrontmatter(text, frontmatter, { format }),
})
const JSONL = Object.freeze<JSONL>({
parse: JSONLTryParse,
stringify: JSONLStringify,
})
const AICI = Object.freeze<AICI>({
gen: (options: AICIGenOptions) => {
// validate options
return {
type: "aici",
name: "gen",
options,
}
},
})
const path = runtimeHost.path
const workspace: WorkspaceFileSystem = {
readText: (f) => runtimeHost.workspace.readText(f),
Expand Down Expand Up @@ -254,13 +218,6 @@ export async function createPromptContext(
fs: workspace,
workspace,
parsers,
YAML,
CSV,
INI,
AICI,
XML,
MD,
JSONL,
retrieval,
host: promptHost,
defOutputProcessor,
Expand Down
7 changes: 0 additions & 7 deletions packages/core/src/types/prompt_template.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1708,12 +1708,5 @@ interface PromptContext extends ChatGenerationContext {
*/
fs: WorkspaceFileSystem
workspace: WorkspaceFileSystem
YAML: YAML
XML: XML
JSONL: JSONL
CSV: CSV
INI: INI
AICI: AICI
MD: MD
host: PromptHost
}
7 changes: 0 additions & 7 deletions packages/sample/genaisrc/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/genaisrc/node/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/genaisrc/python/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/genaisrc/style/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/src/aici/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/src/errors/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/src/makecode/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/src/tla/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions packages/sample/src/vision/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions slides/genaisrc/genaiscript.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading