From 5eb103fd33d9d9915006107ee692de763db74f17 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Sun, 9 Aug 2026 15:23:05 -0700 Subject: [PATCH 1/2] CL-5656: Productize the seeded assistant as Myra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The assistant workflow ships in DEFAULT_WORKFLOWS for every personal bench. Its catalog display name and workflow package.json are now the productized label Myra, not the generic Assistant — so the routines picker and seeded asset both surface it as Myra. --- packages/hub-client/test/seed.test.ts | 12 +++++++++++- packages/workflow-catalog/src/index.ts | 2 +- packages/workflow-catalog/test/catalog.test.ts | 10 ++++++++++ workflows/assistant/package.json | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/hub-client/test/seed.test.ts b/packages/hub-client/test/seed.test.ts index b38cbb3ec..018c7b674 100644 --- a/packages/hub-client/test/seed.test.ts +++ b/packages/hub-client/test/seed.test.ts @@ -222,7 +222,7 @@ describe("seedTenant", () => { expect(definition.stepOrder).toEqual(["assistant"]); const output = lines.join("\n"); - expect(output).toContain("created workflow asset assistant"); + expect(output).toContain("created workflow asset assistant (Myra)"); expect(output).toContain("deployed workflow assistant as dep_2"); expect(output).toContain("confirmed workflow assistant: run run_1 started"); expect(output).toContain("seed complete: 1 workflow(s)"); @@ -439,6 +439,16 @@ describe("seedTenant", () => { expect(DEFAULT_WORKFLOWS.map((w) => w.assetName)).toContain("assistant"); }); + test("the seeded assistant is productized under the Myra display name", () => { + // Every personal bench provisioning deploys DEFAULT_WORKFLOWS, which + // includes the assistant. Its display name is the productized label + // Myra — seed stamps it onto the asset at create time, so the seeded + // assistant surfaces as Myra rather than the generic "Assistant". + const assistant = DEFAULT_WORKFLOWS.find((w) => w.assetName === "assistant"); + expect(assistant).toBeDefined(); + expect(assistant?.displayName).toBe("Myra"); + }); + test("NOOP_MODEL_SOURCE resolves to the hub's own noop-inference endpoint", () => { const resolved = NOOP_MODEL_SOURCE("http://localhost:3000"); expect(resolved.baseURL).toBe( diff --git a/packages/workflow-catalog/src/index.ts b/packages/workflow-catalog/src/index.ts index 8965e6b9b..9a639ac10 100644 --- a/packages/workflow-catalog/src/index.ts +++ b/packages/workflow-catalog/src/index.ts @@ -26,7 +26,7 @@ export const WORKFLOW_CATALOG: readonly WorkflowCatalogEntry[] = [ }, { assetName: "assistant", - displayName: "Assistant", + displayName: "Myra", automatable: false, }, { diff --git a/packages/workflow-catalog/test/catalog.test.ts b/packages/workflow-catalog/test/catalog.test.ts index a97179d46..987870dc4 100644 --- a/packages/workflow-catalog/test/catalog.test.ts +++ b/packages/workflow-catalog/test/catalog.test.ts @@ -26,6 +26,16 @@ describe("workflow catalog", () => { expect(workflowDisplayName("echo")).toBe("Echo"); }); + test("productizes the seeded assistant under the Myra display name", () => { + // The assistant workflow ships in DEFAULT_WORKFLOWS for every personal + // bench. Its catalog display name is the productized label Myra, not + // the generic "Assistant" — the routines picker and seeded asset both + // read it from here. + expect(workflowDisplayName("assistant")).toBe("Myra"); + const entry = WORKFLOW_CATALOG.find((e) => e.assetName === "assistant"); + expect(entry?.displayName).toBe("Myra"); + }); + test("falls back to description, then humanized name — never blank", () => { expect(workflowDisplayName("unknown-flow", " Weekly brief ")).toBe( "Weekly brief", diff --git a/workflows/assistant/package.json b/workflows/assistant/package.json index c57cfa71c..4b91681da 100644 --- a/workflows/assistant/package.json +++ b/workflows/assistant/package.json @@ -8,7 +8,7 @@ "corbits": { "workflow": { "assetName": "assistant", - "displayName": "Assistant", + "displayName": "Myra", "automatable": false } }, From 488324612d02a779b0d04d2d08c282dc2b701366 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Sun, 9 Aug 2026 16:25:42 -0700 Subject: [PATCH 2/2] Format with Prettier for CI --- packages/hub-client/test/seed.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/hub-client/test/seed.test.ts b/packages/hub-client/test/seed.test.ts index 018c7b674..7859ff4ff 100644 --- a/packages/hub-client/test/seed.test.ts +++ b/packages/hub-client/test/seed.test.ts @@ -444,7 +444,9 @@ describe("seedTenant", () => { // includes the assistant. Its display name is the productized label // Myra — seed stamps it onto the asset at create time, so the seeded // assistant surfaces as Myra rather than the generic "Assistant". - const assistant = DEFAULT_WORKFLOWS.find((w) => w.assetName === "assistant"); + const assistant = DEFAULT_WORKFLOWS.find( + (w) => w.assetName === "assistant", + ); expect(assistant).toBeDefined(); expect(assistant?.displayName).toBe("Myra"); });