summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-01-15 18:21:01 -0500
committerFrank <[email protected]>2026-01-15 18:21:19 -0500
commit12ae80856e2011bd7bbb1d041c304a892c59ce07 (patch)
tree5d4d116f6f8578f26ed799a72741003ca633d2b3
parent7e619a9302fe78e9219b50220d8b150a3e6b22b6 (diff)
downloadopencode-12ae80856e2011bd7bbb1d041c304a892c59ce07.tar.gz
opencode-12ae80856e2011bd7bbb1d041c304a892c59ce07.zip
wip: zen
-rw-r--r--infra/console.ts1
-rwxr-xr-xpackages/console/core/script/promote-models.ts36
-rwxr-xr-xpackages/console/core/script/pull-models.ts37
-rwxr-xr-xpackages/console/core/script/update-models.ts54
-rw-r--r--packages/console/core/src/model.ts3
5 files changed, 50 insertions, 81 deletions
diff --git a/infra/console.ts b/infra/console.ts
index 17e4deab6..539b86f5d 100644
--- a/infra/console.ts
+++ b/infra/console.ts
@@ -119,6 +119,7 @@ const ZEN_MODELS = [
new sst.Secret("ZEN_MODELS5"),
new sst.Secret("ZEN_MODELS6"),
new sst.Secret("ZEN_MODELS7"),
+ new sst.Secret("ZEN_MODELS8"),
]
const ZEN_BLACK = new sst.Secret("ZEN_BLACK")
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
diff --git a/packages/console/core/script/promote-models.ts b/packages/console/core/script/promote-models.ts
index 5949efd5c..bc57fc5bb 100755
--- a/packages/console/core/script/promote-models.ts
+++ b/packages/console/core/script/promote-models.ts
@@ -8,33 +8,25 @@ const stage = process.argv[2]
if (!stage) throw new Error("Stage is required")
const root = path.resolve(process.cwd(), "..", "..", "..")
+const PARTS = 8
// read the secret
const ret = await $`bun sst secret list`.cwd(root).text()
const lines = ret.split("\n")
-const value1 = lines.find((line) => line.startsWith("ZEN_MODELS1"))?.split("=")[1]
-const value2 = lines.find((line) => line.startsWith("ZEN_MODELS2"))?.split("=")[1]
-const value3 = lines.find((line) => line.startsWith("ZEN_MODELS3"))?.split("=")[1]
-const value4 = lines.find((line) => line.startsWith("ZEN_MODELS4"))?.split("=")[1]
-const value5 = lines.find((line) => line.startsWith("ZEN_MODELS5"))?.split("=")[1]
-const value6 = lines.find((line) => line.startsWith("ZEN_MODELS6"))?.split("=")[1]
-const value7 = lines.find((line) => line.startsWith("ZEN_MODELS7"))?.split("=")[1]
-if (!value1) throw new Error("ZEN_MODELS1 not found")
-if (!value2) throw new Error("ZEN_MODELS2 not found")
-if (!value3) throw new Error("ZEN_MODELS3 not found")
-if (!value4) throw new Error("ZEN_MODELS4 not found")
-if (!value5) throw new Error("ZEN_MODELS5 not found")
-if (!value6) throw new Error("ZEN_MODELS6 not found")
-if (!value7) throw new Error("ZEN_MODELS7 not found")
+const values = Array.from({ length: PARTS }, (_, i) => {
+ const value = lines
+ .find((line) => line.startsWith(`ZEN_MODELS${i + 1}`))
+ ?.split("=")
+ .slice(1)
+ .join("=")
+ if (!value) throw new Error(`ZEN_MODELS${i + 1} not found`)
+ return value
+})
// validate value
-ZenData.validate(JSON.parse(value1 + value2 + value3 + value4 + value5 + value6 + value7))
+ZenData.validate(JSON.parse(values.join("")))
// update the secret
-await $`bun sst secret set ZEN_MODELS1 ${value1} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS2 ${value2} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS3 ${value3} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS4 ${value4} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS5 ${value5} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS6 ${value6} --stage ${stage}`
-await $`bun sst secret set ZEN_MODELS7 ${value7} --stage ${stage}`
+for (let i = 0; i < PARTS; i++) {
+ await $`bun sst secret set ZEN_MODELS${i + 1} --stage ${stage} -- ${values[i]}`
+}
diff --git a/packages/console/core/script/pull-models.ts b/packages/console/core/script/pull-models.ts
index 91899482a..f360b8186 100755
--- a/packages/console/core/script/pull-models.ts
+++ b/packages/console/core/script/pull-models.ts
@@ -8,32 +8,25 @@ const stage = process.argv[2]
if (!stage) throw new Error("Stage is required")
const root = path.resolve(process.cwd(), "..", "..", "..")
+const PARTS = 8
// read the secret
const ret = await $`bun sst secret list --stage ${stage}`.cwd(root).text()
const lines = ret.split("\n")
-const value1 = lines.find((line) => line.startsWith("ZEN_MODELS1"))?.split("=")[1]
-const value2 = lines.find((line) => line.startsWith("ZEN_MODELS2"))?.split("=")[1]
-const value3 = lines.find((line) => line.startsWith("ZEN_MODELS3"))?.split("=")[1]
-const value4 = lines.find((line) => line.startsWith("ZEN_MODELS4"))?.split("=")[1]
-const value5 = lines.find((line) => line.startsWith("ZEN_MODELS5"))?.split("=")[1]
-const value6 = lines.find((line) => line.startsWith("ZEN_MODELS6"))?.split("=")[1]
-const value7 = lines.find((line) => line.startsWith("ZEN_MODELS7"))?.split("=")[1]
-if (!value1) throw new Error("ZEN_MODELS1 not found")
-if (!value2) throw new Error("ZEN_MODELS2 not found")
-if (!value3) throw new Error("ZEN_MODELS3 not found")
-if (!value4) throw new Error("ZEN_MODELS4 not found")
-if (!value5) throw new Error("ZEN_MODELS5 not found")
-if (!value6) throw new Error("ZEN_MODELS6 not found")
-if (!value7) throw new Error("ZEN_MODELS7 not found")
+const values = Array.from({ length: PARTS }, (_, i) => {
+ const value = lines
+ .find((line) => line.startsWith(`ZEN_MODELS${i + 1}`))
+ ?.split("=")
+ .slice(1)
+ .join("=")
+ if (!value) throw new Error(`ZEN_MODELS${i + 1} not found`)
+ return value
+})
+
// validate value
-ZenData.validate(JSON.parse(value1 + value2 + value3 + value4 + value5 + value6 + value7))
+ZenData.validate(JSON.parse(values.join("")))
// update the secret
-await $`bun sst secret set ZEN_MODELS1 ${value1}`
-await $`bun sst secret set ZEN_MODELS2 ${value2}`
-await $`bun sst secret set ZEN_MODELS3 ${value3}`
-await $`bun sst secret set ZEN_MODELS4 ${value4}`
-await $`bun sst secret set ZEN_MODELS5 ${value5}`
-await $`bun sst secret set ZEN_MODELS6 ${value6}`
-await $`bun sst secret set ZEN_MODELS7 ${value7}`
+for (let i = 0; i < PARTS; i++) {
+ await $`bun sst secret set ZEN_MODELS${i + 1} -- ${values[i]}`
+}
diff --git a/packages/console/core/script/update-models.ts b/packages/console/core/script/update-models.ts
index 68038fd4d..56940af25 100755
--- a/packages/console/core/script/update-models.ts
+++ b/packages/console/core/script/update-models.ts
@@ -7,34 +7,24 @@ import { ZenData } from "../src/model"
const root = path.resolve(process.cwd(), "..", "..", "..")
const models = await $`bun sst secret list`.cwd(root).text()
+const PARTS = 8
// read the line starting with "ZEN_MODELS"
const lines = models.split("\n")
-const oldValue1 = lines.find((line) => line.startsWith("ZEN_MODELS1"))?.split("=")[1]
-const oldValue2 = lines.find((line) => line.startsWith("ZEN_MODELS2"))?.split("=")[1]
-const oldValue3 = lines.find((line) => line.startsWith("ZEN_MODELS3"))?.split("=")[1]
-const oldValue4 = lines.find((line) => line.startsWith("ZEN_MODELS4"))?.split("=")[1]
-const oldValue5 = lines.find((line) => line.startsWith("ZEN_MODELS5"))?.split("=")[1]
-const oldValue6 = lines.find((line) => line.startsWith("ZEN_MODELS6"))?.split("=")[1]
-const oldValue7 = lines.find((line) => line.startsWith("ZEN_MODELS7"))?.split("=")[1]
-if (!oldValue1) throw new Error("ZEN_MODELS1 not found")
-if (!oldValue2) throw new Error("ZEN_MODELS2 not found")
-if (!oldValue3) throw new Error("ZEN_MODELS3 not found")
-if (!oldValue4) throw new Error("ZEN_MODELS4 not found")
-if (!oldValue5) throw new Error("ZEN_MODELS5 not found")
-if (!oldValue6) throw new Error("ZEN_MODELS6 not found")
-if (!oldValue7) throw new Error("ZEN_MODELS7 not found")
+const oldValues = Array.from({ length: PARTS }, (_, i) => {
+ const value = lines
+ .find((line) => line.startsWith(`ZEN_MODELS${i + 1}`))
+ ?.split("=")
+ .slice(1)
+ .join("=")
+ if (!value) throw new Error(`ZEN_MODELS${i + 1} not found`)
+ return value
+})
// store the prettified json to a temp file
const filename = `models-${Date.now()}.json`
const tempFile = Bun.file(path.join(os.tmpdir(), filename))
-await tempFile.write(
- JSON.stringify(
- JSON.parse(oldValue1 + oldValue2 + oldValue3 + oldValue4 + oldValue5 + oldValue6 + oldValue7),
- null,
- 2,
- ),
-)
+await tempFile.write(JSON.stringify(JSON.parse(oldValues.join("")), null, 2))
console.log("tempFile", tempFile.name)
// open temp file in vim and read the file on close
@@ -43,19 +33,11 @@ const newValue = JSON.stringify(JSON.parse(await tempFile.text()))
ZenData.validate(JSON.parse(newValue))
// update the secret
-const chunk = Math.ceil(newValue.length / 7)
-const newValue1 = newValue.slice(0, chunk)
-const newValue2 = newValue.slice(chunk, chunk * 2)
-const newValue3 = newValue.slice(chunk * 2, chunk * 3)
-const newValue4 = newValue.slice(chunk * 3, chunk * 4)
-const newValue5 = newValue.slice(chunk * 4, chunk * 5)
-const newValue6 = newValue.slice(chunk * 5, chunk * 6)
-const newValue7 = newValue.slice(chunk * 6)
+const chunk = Math.ceil(newValue.length / PARTS)
+const newValues = Array.from({ length: PARTS }, (_, i) =>
+ newValue.slice(chunk * i, i === PARTS - 1 ? undefined : chunk * (i + 1)),
+)
-await $`bun sst secret set ZEN_MODELS1 ${newValue1}`
-await $`bun sst secret set ZEN_MODELS2 ${newValue2}`
-await $`bun sst secret set ZEN_MODELS3 ${newValue3}`
-await $`bun sst secret set ZEN_MODELS4 ${newValue4}`
-await $`bun sst secret set ZEN_MODELS5 ${newValue5}`
-await $`bun sst secret set ZEN_MODELS6 ${newValue6}`
-await $`bun sst secret set ZEN_MODELS7 ${newValue7}`
+for (let i = 0; i < PARTS; i++) {
+ await $`bun sst secret set ZEN_MODELS${i + 1} -- ${newValues[i]}`
+}
diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts
index 5d4b755cb..2c150c7c4 100644
--- a/packages/console/core/src/model.ts
+++ b/packages/console/core/src/model.ts
@@ -74,7 +74,8 @@ export namespace ZenData {
Resource.ZEN_MODELS4.value +
Resource.ZEN_MODELS5.value +
Resource.ZEN_MODELS6.value +
- Resource.ZEN_MODELS7.value,
+ Resource.ZEN_MODELS7.value +
+ Resource.ZEN_MODELS8.value,
)
return ModelsSchema.parse(json)
})