test(codemode): drop leftover $codemode references (#36451)
This commit is contained in:
parent
b9f39dd751
commit
75e8fd4da2
3 changed files with 10 additions and 23 deletions
|
|
@ -1,13 +1,14 @@
|
|||
# @opencode-ai/codemode
|
||||
|
||||
CodeMode is a lightweight, JavaScript-like DSL for model-written orchestration programs, backed by a pure JavaScript
|
||||
interpreter - no `eval`, no VM, no code generation. A program can only call the schema-described tools its host
|
||||
supplies: it can sequence calls, transform plain data, branch, loop, and run independent calls in parallel, without
|
||||
ambient filesystem, process, network, module, or application authority. Instead of many model round trips, the model
|
||||
writes one small program that does the orchestration in code.
|
||||
This is our take on code mode. Programs are written in a lightweight, JavaScript-like DSL and run in the package's
|
||||
own interpreter. They never execute as actual JavaScript, so there is no runtime to escape into. The interpreter
|
||||
itself can reach nothing; every effect a program has goes through a tool you explicitly supplied. The tradeoff is a
|
||||
bounded language rather than full JavaScript: the [interpreter support checklist](./interpreter-support.md) documents
|
||||
exactly what is supported.
|
||||
|
||||
The supported language and standard-library surface is documented exhaustively in the
|
||||
[interpreter support checklist](./interpreter-support.md).
|
||||
[Cloudflare's post](https://blog.cloudflare.com/code-mode/) introduced the idea. Their implementation executes
|
||||
generated code in isolate sandboxes. We took a lighter route: a pure interpreter that runs wherever your application
|
||||
runs, no sandbox required.
|
||||
|
||||
## How it differs from JavaScript
|
||||
|
||||
|
|
|
|||
|
|
@ -761,11 +761,6 @@ describe("CodeMode public contract", () => {
|
|||
"tools.thread.generateImage",
|
||||
)
|
||||
}
|
||||
|
||||
// The retired $codemode namespace is gone from the tools tree entirely.
|
||||
const removed = await Effect.runPromise(runtime.execute(`return await tools.$codemode.search({ query: "file" })`))
|
||||
expect(removed.ok).toBe(false)
|
||||
if (!removed.ok) expect(removed.error.kind).toBe("UnknownTool")
|
||||
})
|
||||
|
||||
test("search is a counted tool call: it burns maxToolCalls and fires the hooks", async () => {
|
||||
|
|
@ -1195,11 +1190,4 @@ describe("CodeMode public contract", () => {
|
|||
}
|
||||
expect(elapsedMs).toBeLessThan(3_000)
|
||||
})
|
||||
|
||||
test("a host $codemode namespace is an ordinary namespace now that search is a built-in", async () => {
|
||||
const runtime = CodeMode.make({ tools: { $codemode: { lookup } } })
|
||||
const result = await Effect.runPromise(runtime.execute(`return await tools.$codemode.lookup({ id: "order_1" })`))
|
||||
expect(result.ok).toBe(true)
|
||||
if (result.ok) expect(result.value).toStrictEqual({ id: "order_1", status: "open" })
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -52,10 +52,8 @@ describe("Object.keys over tool references", () => {
|
|||
expect(await value(`return Object.keys(tools.github.list_issues)`)).toEqual([])
|
||||
})
|
||||
|
||||
test("search is a global built-in function, not a tools namespace", async () => {
|
||||
test("search is a global built-in function", async () => {
|
||||
expect(await value(`return typeof search`)).toBe("function")
|
||||
const failure = await error(`return Object.keys(tools.$codemode)`)
|
||||
expect(failure.kind).toBe("UnknownTool")
|
||||
})
|
||||
|
||||
test("an unknown namespace is an UnknownTool error pointing at the discovery idioms", async () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue