From 69a4f63c1f6a42ebc97a91f9946f77fa36bdbd71 Mon Sep 17 00:00:00 2001 From: Sawyer Date: Thu, 17 Sep 2026 17:06:55 -0700 Subject: [PATCH] refactor(agents)!: rename agents/assistant to agents/myra (CL-8323) --- AGENTS.md | 2 +- ARCHITECTURE.md | 2 +- PRODUCT.md | 2 +- agents/{assistant => myra}/LICENSE | 0 agents/{assistant => myra}/README.md | 6 +++--- agents/{assistant => myra}/package.json | 6 +++--- agents/{assistant => myra}/src/index.ts | 0 agents/{assistant => myra}/src/system-prompt.ts | 0 agents/{assistant => myra}/test/boundary.test.ts | 0 agents/{assistant => myra}/test/definition.test.ts | 0 .../test/manager-tools-scenario.test.ts | 0 agents/{assistant => myra}/tsconfig.json | 0 agents/{assistant => myra}/tsconfig.src.json | 0 apps/web/package.json | 2 +- apps/web/src/myra-deploy.ts | 8 ++++---- apps/web/src/myra-source.ts | 4 ++-- bun.lock | 14 +++++++------- packages/agent-directory/src/agent-workflow.ts | 2 +- packages/agent-directory/src/routes.ts | 2 +- packages/evals/package.json | 2 +- packages/workflows/src/catalog.ts | 2 +- tsconfig.build.json | 2 +- workflows/README.md | 4 ++-- 23 files changed, 30 insertions(+), 30 deletions(-) rename agents/{assistant => myra}/LICENSE (100%) rename agents/{assistant => myra}/README.md (79%) rename agents/{assistant => myra}/package.json (92%) rename agents/{assistant => myra}/src/index.ts (100%) rename agents/{assistant => myra}/src/system-prompt.ts (100%) rename agents/{assistant => myra}/test/boundary.test.ts (100%) rename agents/{assistant => myra}/test/definition.test.ts (100%) rename agents/{assistant => myra}/test/manager-tools-scenario.test.ts (100%) rename agents/{assistant => myra}/tsconfig.json (100%) rename agents/{assistant => myra}/tsconfig.src.json (100%) diff --git a/AGENTS.md b/AGENTS.md index 471f630649..1f5be5c7d9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -22,7 +22,7 @@ never seeds data on a client's behalf. `apps/*` belongs in a package. `workflows/*` are plain npm-shaped packages, deployable to any stock Interchange hub through the stock deploy route — this repo does not publish them to npm. -- **Myra is the one default agent.** `agents/assistant` is the assistant +- **Myra is the one default agent.** `agents/myra` is the assistant that uses Workbench on the person's behalf; every agent package under `agents/*` is trim — `index.ts` (plus `system-prompt.ts` when the prompt is large) — with no agent-owned artifact client/tool code of its own. diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 2641b3ae14..70937d2d46 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -39,7 +39,7 @@ address. ## Agents and workflows -Myra (`agents/assistant`) is the only agent Workbench ships. There is no +Myra (`agents/myra`) is the only agent Workbench ships. There is no workflow catalog to browse — Myra creates a workflow, tool, or skill dynamically, as code, when a job needs one, and deploys it through the stock workflow-deploy route. `tools/*` and `skills/*` are ordinary diff --git a/PRODUCT.md b/PRODUCT.md index ac4033a9db..84e789a2e9 100644 --- a/PRODUCT.md +++ b/PRODUCT.md @@ -6,7 +6,7 @@ builder. ## Myra -Myra (`agents/assistant`) is the one agent Workbench ships. She isn't a +Myra (`agents/myra`) is the one agent Workbench ships. She isn't a template you configure — she's a coworker you talk to. Ask her for a capability the team doesn't have yet, and she writes it: a new tool, a new skill, or a scheduled workflow, deployed as code, granted only the diff --git a/agents/assistant/LICENSE b/agents/myra/LICENSE similarity index 100% rename from agents/assistant/LICENSE rename to agents/myra/LICENSE diff --git a/agents/assistant/README.md b/agents/myra/README.md similarity index 79% rename from agents/assistant/README.md rename to agents/myra/README.md index b57a92e6ad..7f98b6853f 100644 --- a/agents/assistant/README.md +++ b/agents/myra/README.md @@ -1,4 +1,4 @@ -# @corbits/assistant-workflow +# @corbits/myra Mail-triggered conversational workflow with a general-purpose assistant agent @@ -12,13 +12,13 @@ POST /api/tenants/:id/workflows/deployments { "source": { "kind": "registry", "registry": "npm" }, "entry": "./src/index.ts", - "pin": "@corbits/assistant-workflow@0.0.2", + "pin": "@corbits/myra@0.0.3", "sourceOfferingIds": ["", ...], "defaultSourceOfferingId": "" } ``` `entry` is the package's `interchange.workflow` module path; `pin` is -`"@corbits/assistant-workflow@0.0.2"` or a semver range on the same name. The hub +`"@corbits/myra@0.0.3"` or a semver range on the same name. The hub installs, probes, gates, and freezes the definition from the registry tarball before creating the deployment. diff --git a/agents/assistant/package.json b/agents/myra/package.json similarity index 92% rename from agents/assistant/package.json rename to agents/myra/package.json index 281a02728b..b1c5132847 100644 --- a/agents/assistant/package.json +++ b/agents/myra/package.json @@ -1,12 +1,12 @@ { - "name": "@corbits/assistant-workflow", - "version": "0.0.2", + "name": "@corbits/myra", + "version": "0.0.3", "description": "Mail-triggered conversational workflow with a general-purpose assistant agent", "license": "LGPL-2.1-only", "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "agents/assistant" + "directory": "agents/myra" }, "files": [ "src", diff --git a/agents/assistant/src/index.ts b/agents/myra/src/index.ts similarity index 100% rename from agents/assistant/src/index.ts rename to agents/myra/src/index.ts diff --git a/agents/assistant/src/system-prompt.ts b/agents/myra/src/system-prompt.ts similarity index 100% rename from agents/assistant/src/system-prompt.ts rename to agents/myra/src/system-prompt.ts diff --git a/agents/assistant/test/boundary.test.ts b/agents/myra/test/boundary.test.ts similarity index 100% rename from agents/assistant/test/boundary.test.ts rename to agents/myra/test/boundary.test.ts diff --git a/agents/assistant/test/definition.test.ts b/agents/myra/test/definition.test.ts similarity index 100% rename from agents/assistant/test/definition.test.ts rename to agents/myra/test/definition.test.ts diff --git a/agents/assistant/test/manager-tools-scenario.test.ts b/agents/myra/test/manager-tools-scenario.test.ts similarity index 100% rename from agents/assistant/test/manager-tools-scenario.test.ts rename to agents/myra/test/manager-tools-scenario.test.ts diff --git a/agents/assistant/tsconfig.json b/agents/myra/tsconfig.json similarity index 100% rename from agents/assistant/tsconfig.json rename to agents/myra/tsconfig.json diff --git a/agents/assistant/tsconfig.src.json b/agents/myra/tsconfig.src.json similarity index 100% rename from agents/assistant/tsconfig.src.json rename to agents/myra/tsconfig.src.json diff --git a/apps/web/package.json b/apps/web/package.json index 76dcebf498..56c7a9b8fe 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,9 +20,9 @@ "@corbits/agent-directory": "workspace:*", "@corbits/approvals": "workspace:*", "@corbits/artifact-ui": "workspace:*", - "@corbits/assistant-workflow": "workspace:*", "@corbits/connections": "workspace:*", "@corbits/error-sink": "workspace:*", + "@corbits/myra": "workspace:*", "@corbits/react-ui": "github:corbitsdev/react-ui#3b122812a307ccb35be31386f7696020c5a84635", "@corbits/url-path": "workspace:*", "@corbits/workflows": "workspace:*", diff --git a/apps/web/src/myra-deploy.ts b/apps/web/src/myra-deploy.ts index aedb7efbe7..f2e4149779 100644 --- a/apps/web/src/myra-deploy.ts +++ b/apps/web/src/myra-deploy.ts @@ -16,7 +16,7 @@ import { ASSISTANT_SYSTEM_PROMPT, ASSISTANT_TOOL_PACKAGE_PINS, ASSISTANT_WORKFLOW_ID, -} from "@corbits/assistant-workflow/prompt"; +} from "@corbits/myra/prompt"; import { renderWorkflowSourceTree } from "@corbits/workflows/client"; import { type } from "arktype"; @@ -171,14 +171,14 @@ function tarballFilename(): string { const ASSISTANT_TURN_TIMEOUT_MS = 2 * 60 * 1000; /** - * The exact `WorkflowDefinition` JSON `@corbits/assistant-workflow`'s + * The exact `WorkflowDefinition` JSON `@corbits/myra`'s * `buildAssistantWorkflow` would produce for a single-step, mail-triggered, * unbounded-turn assistant — hand-built here rather than calling that * function, because `buildAssistantWorkflow` goes through `@intx/workflow`'s * `defineWorkflow`/`step`, which pull in `@intx/agent`'s Node-bound runtime * (file locking) that a browser bundle cannot resolve (confirmed by a failed - * `apps/web` build importing `@corbits/assistant-workflow` directly). - * `apps/web/src/myra-deploy.test.ts` and `agents/assistant`'s own + * `apps/web` build importing `@corbits/myra` directly). + * `apps/web/src/myra-deploy.test.ts` and `agents/myra`'s own * `validate-push.test.ts`-style round-trip both guard this shape against * drift from `defineWorkflow`'s own normalization * (`vendor/intx/workflow/src/definition/workflow.ts`'s `normalize`/ diff --git a/apps/web/src/myra-source.ts b/apps/web/src/myra-source.ts index a2e0ee9aa4..1d97458e81 100644 --- a/apps/web/src/myra-source.ts +++ b/apps/web/src/myra-source.ts @@ -1,7 +1,7 @@ // Myra's deploy source, pinned to what this hub can actually install // today. // -// `@corbits/assistant-workflow` (agents/assistant) is `private: true` +// `@corbits/myra` (agents/myra) is `private: true` // and unpublished, so `WorkflowDefinitionRegistrySource` (the `registry` // variant) has no external npm registry to resolve it from yet — that is // its job. The package also exports builder functions @@ -39,7 +39,7 @@ const parsed = MyraSourceConfig({ // tenant's own asset. assetName: "myra-deploy-source", displayName: "Myra", - // The rendered package's own name — never `@corbits/assistant-workflow` + // The rendered package's own name — never `@corbits/myra` // itself, which names the real, un-deployable workspace package this // module explicitly does not source from (see the module doc above). packageName: "@workbench-onboarding/myra", diff --git a/bun.lock b/bun.lock index 860525c29a..9a30f35ab9 100644 --- a/bun.lock +++ b/bun.lock @@ -30,9 +30,9 @@ "typescript": "6.0.3", }, }, - "agents/assistant": { - "name": "@corbits/assistant-workflow", - "version": "0.0.2", + "agents/myra": { + "name": "@corbits/myra", + "version": "0.0.3", "dependencies": { "@corbits/catalog-tools": "0.1.1", "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", @@ -144,9 +144,9 @@ "@corbits/agent-directory": "workspace:*", "@corbits/approvals": "workspace:*", "@corbits/artifact-ui": "workspace:*", - "@corbits/assistant-workflow": "workspace:*", "@corbits/connections": "workspace:*", "@corbits/error-sink": "workspace:*", + "@corbits/myra": "workspace:*", "@corbits/react-ui": "github:corbitsdev/react-ui#3b122812a307ccb35be31386f7696020c5a84635", "@corbits/url-path": "workspace:*", "@corbits/workflows": "workspace:*", @@ -373,11 +373,11 @@ "version": "0.0.1", "dependencies": { "@corbits/agent-directory": "workspace:*", - "@corbits/assistant-workflow": "workspace:*", "@corbits/connections": "workspace:*", "@corbits/error-sink": "workspace:*", "@corbits/hub-api-client": "workspace:*", "@corbits/migration-runner": "workspace:*", + "@corbits/myra": "workspace:*", "@corbits/webhook-triggers": "workspace:*", "@corbits/workflows": "workspace:*", "@intx/agent": "workspace:*", @@ -1230,8 +1230,6 @@ "@corbits/artifacts": ["@corbits/artifacts@github:corbitsdev/corbits-artifacts#5309a15", { "dependencies": { "@hono/standard-validator": "^0.2.3" }, "peerDependencies": { "@intx/hub-api": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "^2.1.29", "drizzle-orm": "^0.45.2", "hono": "^4.12.32", "hono-openapi": "^1.2.0", "postgres": "^3.4.9" } }, "corbitsdev-corbits-artifacts-5309a15", "sha512-zGHkq++juclUrOd0O8/Z5ziTldmJZ6gqyH/c9cs5S10UPU4gqn8CHwq174SiJXY0ujJ3cNpJXnrr+0fcqlfQ1w=="], - "@corbits/assistant-workflow": ["@corbits/assistant-workflow@workspace:agents/assistant"], - "@corbits/capability-tools": ["@corbits/capability-tools@workspace:tools/capability"], "@corbits/catalog-tools": ["@corbits/catalog-tools@workspace:tools/catalog"], @@ -1282,6 +1280,8 @@ "@corbits/migration-runner": ["@corbits/migration-runner@workspace:packages/migration-runner"], + "@corbits/myra": ["@corbits/myra@workspace:agents/myra"], + "@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#e1e69e6", { "dependencies": { "arktype": "2.2.3" } }, "corbitsdev-corbits-oauth-core-e1e69e6", "sha512-wUrD73iVyk/Dtb4yRn3hCh6N8syfsEvAkRz4XYqT0FIB3sYDSMYEWHcDMJx9nq64my/HBOeN1J6PHIOtpjhtPg=="], "@corbits/ollama-adapter": ["@corbits/ollama-adapter@workspace:packages/ollama-adapter"], diff --git a/packages/agent-directory/src/agent-workflow.ts b/packages/agent-directory/src/agent-workflow.ts index 2ce5a59a2a..ef041288bc 100644 --- a/packages/agent-directory/src/agent-workflow.ts +++ b/packages/agent-directory/src/agent-workflow.ts @@ -1,6 +1,6 @@ // Builds the single-step, folded workflow definition a hand-authored // agent materializes as: exactly the shape `@corbits/chat`'s own -// `buildWorkbenchHostWorkflow`/`@corbits/assistant-workflow`'s +// `buildWorkbenchHostWorkflow`/`@corbits/myra`'s // `buildAssistantWorkflow` produce, but with the system prompt and // model left to the caller instead of fixed at build time — this is // the one difference that makes a defined-by-a-person agent possible diff --git a/packages/agent-directory/src/routes.ts b/packages/agent-directory/src/routes.ts index 54d84c9bd3..2cd5e334bf 100644 --- a/packages/agent-directory/src/routes.ts +++ b/packages/agent-directory/src/routes.ts @@ -1,7 +1,7 @@ // The create-agent-definition surface: a tenant member submits a // name/handle/description/system-prompt/model, and this route // materializes it exactly the way the platform's own starter agents -// (`@corbits/assistant-workflow`, `@corbits/chat`'s workbench host) are +// (`@corbits/myra`, `@corbits/chat`'s workbench host) are // materialized — a `workflow`-kind asset carrying a single-step // definition as a source codebase (see `./definition-asset.ts`), // projected onto a first-class `workflow_definition` row. No git subprocess: `AssetService.populateAsset` writes the diff --git a/packages/evals/package.json b/packages/evals/package.json index 49285c8b16..09cd8e84ab 100644 --- a/packages/evals/package.json +++ b/packages/evals/package.json @@ -14,11 +14,11 @@ }, "dependencies": { "@corbits/agent-directory": "workspace:*", - "@corbits/assistant-workflow": "workspace:*", "@corbits/connections": "workspace:*", "@corbits/error-sink": "workspace:*", "@corbits/hub-api-client": "workspace:*", "@corbits/migration-runner": "workspace:*", + "@corbits/myra": "workspace:*", "@corbits/webhook-triggers": "workspace:*", "@corbits/workflows": "workspace:*", "@intx/agent": "workspace:*", diff --git a/packages/workflows/src/catalog.ts b/packages/workflows/src/catalog.ts index f2dfa4843e..ad528e197d 100644 --- a/packages/workflows/src/catalog.ts +++ b/packages/workflows/src/catalog.ts @@ -16,7 +16,7 @@ // only here, so there is no second copy for them to drift from. import { type } from "arktype"; -import assistantPkg from "../../../agents/assistant/package.json"; +import assistantPkg from "../../../agents/myra/package.json"; const CorbitsWorkflowBlock = type({ assetName: "string > 0", diff --git a/tsconfig.build.json b/tsconfig.build.json index e251909078..6da1aab2ae 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -2,7 +2,7 @@ "files": [], "references": [ { - "path": "./agents/assistant/tsconfig.src.json" + "path": "./agents/myra/tsconfig.src.json" }, { "path": "./apps/sidecar/tsconfig.src.json" diff --git a/workflows/README.md b/workflows/README.md index d81f5b042a..c05062bcc8 100644 --- a/workflows/README.md +++ b/workflows/README.md @@ -1,10 +1,10 @@ # Workflow packages Owner ruling (2026-09-17, LESS IS MORE): the shipped workflow catalog is -deleted. Myra (`agents/assistant`) creates workflows dynamically for a +deleted. Myra (`agents/myra`) creates workflows dynamically for a tenant's own needs; there is no seeded catalog of ready-made workflows any more. The `echo` fixture workflow is gone too — the e2e smoke suites -now deploy Myra's own `agents/assistant` definition to prove the +now deploy Myra's own `agents/myra` definition to prove the mail-triggered contract works. Each subdirectory is a deployable workflow package: an Interchange