diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 9dfc9cbeb6..8f08f7338a 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -226,7 +226,7 @@ relaunch are separate passes. An agent's capability set grows through what it is granted, not through code changes: Skills are installable, tenant- or principal-scoped capabilities layered onto a definition or a workbench, resolved live -rather than baked in at deploy time (see `packages/skills`). Plugins are +rather than baked in at deploy time (see `skills/skills`). Plugins are installed globally rather than per bench or workbench (CL-6272.2). Every external side effect — anything leaving the platform's own boundary — sits behind a human approval gate. Approval diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md index 09c8e97b10..03e7a4fa2f 100644 --- a/IMPLEMENTATION.md +++ b/IMPLEMENTATION.md @@ -237,7 +237,7 @@ appends `toolCount` to the Plugins return query. The Canva row (`packages/plugins-ui/src/mcp-preset-cards.tsx`) shows that count when it is a non-negative integer; otherwise the row stays "Connected". `@corbits/mcp-tools` per-request timeout is two minutes -(`MCP_REQUEST_TIMEOUT_MS` in `packages/mcp-tools/src/mcp-client.ts`) — +(`MCP_REQUEST_TIMEOUT_MS` in `tools/mcp/src/mcp-client.ts`) — above the SDK's 60s default, below a five-minute chat turn. These are unit-tested control-flow facts. Live Canva OAuth against @@ -281,7 +281,7 @@ a plain object whose keys are only `name` plus exactly one of declared set. Unknown names, no-tools requests, extra keys, arrays, mixed prose, fenced JSON, and incomplete objects stay text. -The assistant definition (`workflows/assistant`) also tells Myra to +The assistant definition (`agents/assistant`) also tells Myra to invoke tools only through tool calls — never by writing a JSON object with a tool name into the reply — and not to `memory_search` a bare greeting. diff --git a/PRODUCT.md b/PRODUCT.md index 295a6566c9..d4a2d7753b 100644 --- a/PRODUCT.md +++ b/PRODUCT.md @@ -151,7 +151,7 @@ thread. Other people's prompts have no Edit. A **Skill** is a named, reusable capability — instructions an agent can pin and a workbench can install, backed by the platform's native -`kind:"skill"` asset (see `packages/skills`). Skills are visible only to +`kind:"skill"` asset (see `skills/skills`). Skills are visible only to the principal or tenant that owns them; nothing crosses tenant boundaries implicitly. Plugins extend what a workbench can do the same way Skills extend what an agent knows — both are installable, both are scoped to the diff --git a/README.md b/README.md index 0f66363cb9..bcf2ea52e9 100644 --- a/README.md +++ b/README.md @@ -135,11 +135,14 @@ each OAuth app and what redirect URI to configure. ## Repo layout -| Path | What lives here | -| ------------ | ---------------------------------------------------------- | -| `apps/` | Deployable services (hub API, web UI, Interchange sidecar) | -| `packages/` | Domain packages — all product logic lives here | -| `workflows/` | Workflow definition packages, deployed as assets | +| Path | What lives here | +| ------------ | ---------------------------------------------------------------------- | +| `apps/` | Deployable services (hub API, web UI, Interchange sidecar) | +| `packages/` | Domain packages — Workbench UI/composition and other product logic | +| `tools/` | Individually publishable `@corbits/*` agent-tool packages | +| `agents/` | Individually publishable `@corbits/*` interactive-agent packages | +| `skills/` | Individually publishable `@corbits/*` skill packages | +| `workflows/` | Workflow definition packages, deployed as assets | Chat — the shared conversation surface humans and agents both use — is documented separately in [docs/CHAT.md](docs/CHAT.md). diff --git a/packages/access-tools/LICENSE b/agents/assistant/LICENSE similarity index 100% rename from packages/access-tools/LICENSE rename to agents/assistant/LICENSE diff --git a/workflows/assistant/README.md b/agents/assistant/README.md similarity index 100% rename from workflows/assistant/README.md rename to agents/assistant/README.md diff --git a/workflows/assistant/package.json b/agents/assistant/package.json similarity index 97% rename from workflows/assistant/package.json rename to agents/assistant/package.json index c69952bc76..c529dc9cb5 100644 --- a/workflows/assistant/package.json +++ b/agents/assistant/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "workflows/assistant" + "directory": "agents/assistant" }, "files": [ "src", diff --git a/workflows/assistant/src/index.ts b/agents/assistant/src/index.ts similarity index 100% rename from workflows/assistant/src/index.ts rename to agents/assistant/src/index.ts diff --git a/workflows/assistant/src/prompt.ts b/agents/assistant/src/prompt.ts similarity index 100% rename from workflows/assistant/src/prompt.ts rename to agents/assistant/src/prompt.ts diff --git a/workflows/assistant/test/boundary.test.ts b/agents/assistant/test/boundary.test.ts similarity index 100% rename from workflows/assistant/test/boundary.test.ts rename to agents/assistant/test/boundary.test.ts diff --git a/workflows/assistant/test/definition.test.ts b/agents/assistant/test/definition.test.ts similarity index 100% rename from workflows/assistant/test/definition.test.ts rename to agents/assistant/test/definition.test.ts diff --git a/workflows/assistant/test/manager-tools-scenario.test.ts b/agents/assistant/test/manager-tools-scenario.test.ts similarity index 99% rename from workflows/assistant/test/manager-tools-scenario.test.ts rename to agents/assistant/test/manager-tools-scenario.test.ts index 12845f1b02..cb963d8f0b 100644 --- a/workflows/assistant/test/manager-tools-scenario.test.ts +++ b/agents/assistant/test/manager-tools-scenario.test.ts @@ -204,7 +204,7 @@ test("GTM scenario: connect three services, then create two specialist agents", // `fetchImpl` test seam (only their `client.ts`'s own config type // does, never threaded from `env`) — the established pattern this // repo's other tool-bundle tests use instead (see - // `packages/capability-tools/src/tool.test.ts`) is to monkey-patch + // `tools/capability/src/tool.test.ts`) is to monkey-patch // `globalThis.fetch` for the call, restored in a `finally`. const originalFetch = globalThis.fetch; globalThis.fetch = hub.fetchImpl; diff --git a/packages/granola-tools/tsconfig.json b/agents/assistant/tsconfig.json similarity index 100% rename from packages/granola-tools/tsconfig.json rename to agents/assistant/tsconfig.json diff --git a/packages/agent-directory-tools/tsconfig.src.json b/agents/assistant/tsconfig.src.json similarity index 100% rename from packages/agent-directory-tools/tsconfig.src.json rename to agents/assistant/tsconfig.src.json diff --git a/packages/agent-directory-tools/LICENSE b/agents/jimmy/LICENSE similarity index 100% rename from packages/agent-directory-tools/LICENSE rename to agents/jimmy/LICENSE diff --git a/packages/jimmy-agent/README.md b/agents/jimmy/README.md similarity index 100% rename from packages/jimmy-agent/README.md rename to agents/jimmy/README.md diff --git a/agents/jimmy/package.json b/agents/jimmy/package.json new file mode 100644 index 0000000000..c0c85859e3 --- /dev/null +++ b/agents/jimmy/package.json @@ -0,0 +1,48 @@ +{ + "name": "@corbits/jimmy-agent", + "version": "0.0.3", + "description": "Jimmy: a one-shot chat agent that searches Giphy and replies with a GIF", + "license": "LGPL-2.1-or-later", + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "agents/jimmy" + }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "type": "module", + "exports": { + ".": "./src/index.ts", + "./metadata": "./src/metadata.ts" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "typecheck": "tsc --noEmit", + "test": "bun test" + }, + "dependencies": { + "arktype": "catalog:" + }, + "devDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + "@types/bun": "catalog:", + "typescript": "catalog:" + }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0" + }, + "interchange": { + "credentials": [ + { + "handle": "giphy" + } + ] + } +} diff --git a/packages/jimmy-agent/src/agent.ts b/agents/jimmy/src/agent.ts similarity index 100% rename from packages/jimmy-agent/src/agent.ts rename to agents/jimmy/src/agent.ts diff --git a/packages/jimmy-agent/src/gif-search-tool.test.ts b/agents/jimmy/src/gif-search-tool.test.ts similarity index 100% rename from packages/jimmy-agent/src/gif-search-tool.test.ts rename to agents/jimmy/src/gif-search-tool.test.ts diff --git a/packages/jimmy-agent/src/gif-search-tool.ts b/agents/jimmy/src/gif-search-tool.ts similarity index 100% rename from packages/jimmy-agent/src/gif-search-tool.ts rename to agents/jimmy/src/gif-search-tool.ts diff --git a/packages/jimmy-agent/src/index.ts b/agents/jimmy/src/index.ts similarity index 100% rename from packages/jimmy-agent/src/index.ts rename to agents/jimmy/src/index.ts diff --git a/packages/jimmy-agent/src/metadata.ts b/agents/jimmy/src/metadata.ts similarity index 100% rename from packages/jimmy-agent/src/metadata.ts rename to agents/jimmy/src/metadata.ts diff --git a/packages/access-tools/tsconfig.json b/agents/jimmy/tsconfig.json similarity index 100% rename from packages/access-tools/tsconfig.json rename to agents/jimmy/tsconfig.json diff --git a/packages/catalog-tools/tsconfig.src.json b/agents/jimmy/tsconfig.src.json similarity index 100% rename from packages/catalog-tools/tsconfig.src.json rename to agents/jimmy/tsconfig.src.json diff --git a/packages/capability-tools/LICENSE b/agents/scout/LICENSE similarity index 100% rename from packages/capability-tools/LICENSE rename to agents/scout/LICENSE diff --git a/packages/scout-agent/README.md b/agents/scout/README.md similarity index 100% rename from packages/scout-agent/README.md rename to agents/scout/README.md diff --git a/packages/scout-agent/package.json b/agents/scout/package.json similarity index 66% rename from packages/scout-agent/package.json rename to agents/scout/package.json index 47dfc6908f..150af8fd8a 100644 --- a/packages/scout-agent/package.json +++ b/agents/scout/package.json @@ -1,27 +1,43 @@ { "name": "@corbits/scout-agent", "version": "0.0.6", - "private": true, "description": "Scout, the research/due-diligence agent: a ported system prompt plus its firm-memory, web-research, and Library-artifact tool declarations for a workbench chat agent", "license": "LGPL-2.1-or-later", + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "agents/scout" + }, + "files": [ + "src", + "LICENSE", + "README.md" + ], "type": "module", "exports": { ".": "./src/index.ts", "./definition": "./src/definition.ts" }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", "arktype": "catalog:" }, "devDependencies": { "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", "@corbits/web-search-tools": "workspace:*", + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", "@types/bun": "catalog:", "typescript": "catalog:" + }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0" } } diff --git a/packages/scout-agent/src/artifact-client.test.ts b/agents/scout/src/artifact-client.test.ts similarity index 100% rename from packages/scout-agent/src/artifact-client.test.ts rename to agents/scout/src/artifact-client.test.ts diff --git a/packages/scout-agent/src/artifact-client.ts b/agents/scout/src/artifact-client.ts similarity index 100% rename from packages/scout-agent/src/artifact-client.ts rename to agents/scout/src/artifact-client.ts diff --git a/packages/scout-agent/src/artifact-tool.test.ts b/agents/scout/src/artifact-tool.test.ts similarity index 100% rename from packages/scout-agent/src/artifact-tool.test.ts rename to agents/scout/src/artifact-tool.test.ts diff --git a/packages/scout-agent/src/artifact-tool.ts b/agents/scout/src/artifact-tool.ts similarity index 100% rename from packages/scout-agent/src/artifact-tool.ts rename to agents/scout/src/artifact-tool.ts diff --git a/packages/scout-agent/src/definition.test.ts b/agents/scout/src/definition.test.ts similarity index 100% rename from packages/scout-agent/src/definition.test.ts rename to agents/scout/src/definition.test.ts diff --git a/packages/scout-agent/src/definition.ts b/agents/scout/src/definition.ts similarity index 100% rename from packages/scout-agent/src/definition.ts rename to agents/scout/src/definition.ts diff --git a/packages/scout-agent/src/index.ts b/agents/scout/src/index.ts similarity index 100% rename from packages/scout-agent/src/index.ts rename to agents/scout/src/index.ts diff --git a/packages/scout-agent/src/system-prompt.ts b/agents/scout/src/system-prompt.ts similarity index 100% rename from packages/scout-agent/src/system-prompt.ts rename to agents/scout/src/system-prompt.ts diff --git a/packages/scout-agent/test/web-research-integration.test.ts b/agents/scout/test/web-research-integration.test.ts similarity index 100% rename from packages/scout-agent/test/web-research-integration.test.ts rename to agents/scout/test/web-research-integration.test.ts diff --git a/packages/linear-tools/tsconfig.json b/agents/scout/tsconfig.json similarity index 100% rename from packages/linear-tools/tsconfig.json rename to agents/scout/tsconfig.json diff --git a/packages/github-tools/tsconfig.src.json b/agents/scout/tsconfig.src.json similarity index 100% rename from packages/github-tools/tsconfig.src.json rename to agents/scout/tsconfig.src.json diff --git a/apps/hub/src/index.ts b/apps/hub/src/index.ts index 79eb53e7ea..fb9c5d7972 100644 --- a/apps/hub/src/index.ts +++ b/apps/hub/src/index.ts @@ -219,8 +219,8 @@ function createWorkflowRunAuthenticator(deps: { db: DB["db"] }) { }, }; } -// In-repo tool packages (`packages/granola-tools`, `packages/linear-tools`, -// `packages/skills-tools`) are unpublished to npm and stay that way: +// In-repo tool packages (`tools/granola`, `tools/linear`, +// `tools/skills-tools`) are unpublished to npm and stay that way: // they are integration bundles for this product's own routes, not // general-purpose npm packages, so publishing them to a public registry would be the // wrong distribution surface for what they are. `@intx/hub-sessions` diff --git a/apps/sidecar/src/step-agent-tools.test.ts b/apps/sidecar/src/step-agent-tools.test.ts index b4ea854bdb..419784e005 100644 --- a/apps/sidecar/src/step-agent-tools.test.ts +++ b/apps/sidecar/src/step-agent-tools.test.ts @@ -6,8 +6,8 @@ // `createToolBearingAgentFactory` does inside its `credentialCapabilityFor` // closure. These tests exercise that composition directly -- a fake // `CredentialWiring` in, a shaped `credentials` capability out -- without -// standing up a full `Agent`, which `packages/granola-tools` and -// `packages/linear-tools`'s own `tool.test.ts` suites already cover from +// standing up a full `Agent`, which `tools/granola` and +// `tools/linear`'s own `tool.test.ts` suites already cover from // the tool side (a `CredentialCapability` in, a `ToolResult` out). import { describe, expect, test } from "bun:test"; diff --git a/apps/web/src/myra-deploy.ts b/apps/web/src/myra-deploy.ts index 69060d8191..3b2f84f742 100644 --- a/apps/web/src/myra-deploy.ts +++ b/apps/web/src/myra-deploy.ts @@ -178,7 +178,7 @@ const ASSISTANT_TURN_TIMEOUT_MS = 2 * 60 * 1000; * `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 `workflows/assistant`'s own + * `apps/web/src/myra-deploy.test.ts` and `agents/assistant`'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 5349016287..fd5fec3daf 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 (CL-8154). // -// `@corbits/assistant-workflow` (workflows/assistant) is `private: true` +// `@corbits/assistant-workflow` (agents/assistant) is `private: true` // and unpublished, so `WorkflowDefinitionRegistrySource` (the `registry` // variant) has no external npm registry to resolve it from yet — that is // CL-8151's job. The package also exports builder functions diff --git a/apps/web/src/pages/plugins-page.tsx b/apps/web/src/pages/plugins-page.tsx index 683c6cd528..6702ae3b4c 100644 --- a/apps/web/src/pages/plugins-page.tsx +++ b/apps/web/src/pages/plugins-page.tsx @@ -207,7 +207,7 @@ export function PluginsRoute({ // with (e.g. an in-flight `mcpOauth` return) must survive the rewrite. // A curated MCP preset (Exa, Granola, Linear, ...) has no fixed // `CONNECTOR_REGISTRY` id, so its own deep link is `mcp:` - // (`presetDeepLink` in `packages/connections-tools/src/tool.ts`) and + // (`presetDeepLink` in `tools/connections/src/tool.ts`) and // is matched against the preset catalog instead. An id neither side // recognizes (typo, stale link) is ignored rather than surfaced as a // notice. diff --git a/apps/web/test/plugins-page.test.tsx b/apps/web/test/plugins-page.test.tsx index 7137c22b03..84a2320f82 100644 --- a/apps/web/test/plugins-page.test.tsx +++ b/apps/web/test/plugins-page.test.tsx @@ -660,7 +660,7 @@ describe("PluginsRoute", () => { expect(window.location.search).toBe("?foo=bar"); }); - // CL-7141: `presetDeepLink` in `packages/connections-tools/src/tool.ts` + // CL-7141: `presetDeepLink` in `tools/connections/src/tool.ts` // emits `/plugins?connect=mcp:` for a curated MCP preset (Exa, // Granola, Linear, ...) — this page resolves that against the preset // catalog and focuses the matching card's own Connect button once it diff --git a/bun.lock b/bun.lock index 4e67f99599..02cbbaa4e4 100644 --- a/bun.lock +++ b/bun.lock @@ -29,6 +29,63 @@ "typescript": "6.0.3", }, }, + "agents/assistant": { + "name": "@corbits/assistant-workflow", + "version": "0.0.2", + "dependencies": { + "@corbits/catalog-tools": "0.1.1", + "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", + }, + "devDependencies": { + "@corbits/agent-directory-tools": "workspace:*", + "@corbits/connections": "workspace:*", + "@corbits/connections-tools": "workspace:*", + "@corbits/interaction-tools": "workspace:*", + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + "@intx/workflow": "0.3.0", + }, + }, + "agents/jimmy": { + "name": "@corbits/jimmy-agent", + "version": "0.0.3", + "dependencies": { + "arktype": "catalog:", + }, + "devDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, + }, + "agents/scout": { + "name": "@corbits/scout-agent", + "version": "0.0.6", + "dependencies": { + "arktype": "catalog:", + }, + "devDependencies": { + "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", + "@corbits/web-search-tools": "workspace:*", + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, + }, "apps/hub": { "name": "@workbench/hub", "version": "0.0.1", @@ -184,26 +241,6 @@ "vite": "^7.1.0", }, }, - "packages/access-tools": { - "name": "@corbits/access-tools", - "version": "0.0.6", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@corbits/agent-directory": "workspace:*", - "@corbits/agent-directory-tools": "workspace:*", - "@corbits/tool-registry-publish": "workspace:*", - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@corbits/error-sink": "0.0.2", - "@intx/agent": "0.3.0", - "@intx/authz": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/agent-directory": { "name": "@corbits/agent-directory", "version": "0.0.1", @@ -238,21 +275,6 @@ "typescript": "catalog:", }, }, - "packages/agent-directory-tools": { - "name": "@corbits/agent-directory-tools", - "version": "0.0.7", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/agent-events": { "name": "@corbits/agent-events", "version": "0.0.1", @@ -355,37 +377,6 @@ "typescript": "catalog:", }, }, - "packages/capability-tools": { - "name": "@corbits/capability-tools", - "version": "0.0.7", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, - "packages/catalog-tools": { - "name": "@corbits/catalog-tools", - "version": "0.1.1", - "dependencies": { - "@corbits/inference-catalog": "0.1.0", - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/chat": { "name": "@corbits/chat", "version": "0.0.1", @@ -560,21 +551,6 @@ "typescript": "catalog:", }, }, - "packages/connections-tools": { - "name": "@corbits/connections-tools", - "version": "0.0.12", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/context-menu": { "name": "@corbits/context-menu", "version": "0.0.1", @@ -678,21 +654,6 @@ "typescript": "catalog:", }, }, - "packages/github-tools": { - "name": "@corbits/github-tools", - "version": "0.0.11", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/gotenberg-render": { "name": "@corbits/gotenberg-render", "version": "0.0.1", @@ -705,26 +666,6 @@ "typescript": "catalog:", }, }, - "packages/granola-tools": { - "name": "@corbits/granola-tools", - "version": "0.0.5", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@corbits/credential-providers": "workspace:*", - "@intx/authz": "0.3.0", - "@intx/crypto": "0.3.0", - "@intx/db": "workspace:*", - "@intx/harness": "workspace:*", - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/hub-api-client": { "name": "@corbits/hub-api-client", "version": "0.0.1", @@ -799,86 +740,6 @@ "typescript": "catalog:", }, }, - "packages/interaction-tools": { - "name": "@corbits/interaction-tools", - "version": "0.0.10", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@corbits/error-sink": "0.0.2", - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, - "packages/jimmy-agent": { - "name": "@corbits/jimmy-agent", - "version": "0.0.3", - "dependencies": { - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - }, - "packages/linear-tools": { - "name": "@corbits/linear-tools", - "version": "0.0.5", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@corbits/credential-providers": "workspace:*", - "@intx/authz": "0.3.0", - "@intx/crypto": "0.3.0", - "@intx/db": "workspace:*", - "@intx/harness": "workspace:*", - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, - "packages/manus-tools": { - "name": "@corbits/manus-tools", - "version": "0.0.12", - "dependencies": { - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, - "packages/mcp-tools": { - "name": "@corbits/mcp-tools", - "version": "0.0.12", - "dependencies": { - "@modelcontextprotocol/sdk": "catalog:", - "arktype": "catalog:", - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - }, - }, "packages/migration-runner": { "name": "@corbits/migration-runner", "version": "0.0.1", @@ -1008,108 +869,277 @@ "typescript": "catalog:", }, }, - "packages/provider-pricing": { - "name": "@corbits/provider-pricing", - "version": "0.0.1", + "packages/provider-pricing": { + "name": "@corbits/provider-pricing", + "version": "0.0.1", + "dependencies": { + "@corbits/connections": "workspace:*", + "@intx/inference-catalog": "0.3.0", + }, + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/sandbox-sidecar": { + "name": "@corbits/sandbox-sidecar", + "version": "0.0.1", + "dependencies": { + "@intx/crypto": "0.3.0", + "@intx/hub-sessions": "workspace:*", + "@intx/log": "0.3.0", + "@intx/types": "workspace:*", + "arktype": "catalog:", + }, + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/settings-ui": { + "name": "@corbits/settings-ui", + "version": "0.0.1", + "dependencies": { + "@corbits/api-query": "workspace:*", + "@corbits/bench-ui": "workspace:*", + "@corbits/chat-ui": "workspace:*", + "@corbits/connections": "workspace:*", + "@corbits/error-sink": "workspace:*", + "@corbits/icons": "workspace:*", + "@corbits/inference-settings": "workspace:*", + "@corbits/react-ui": "github:corbitsdev/react-ui#3b122812a307ccb35be31386f7696020c5a84635", + "@corbits/workflows": "workspace:*", + "@intx/types": "workspace:*", + "arktype": "catalog:", + "react": "^19.2.0", + "react-dom": "^19.2.0", + }, + "devDependencies": { + "@happy-dom/global-registrator": "^20.11.2", + "@types/bun": "catalog:", + "@types/react": "^19.2.2", + "@types/react-dom": "catalog:", + "react-dom": "^19.2.0", + "typescript": "catalog:", + }, + }, + "packages/shell-layout": { + "name": "@corbits/shell-layout", + "version": "0.0.1", + "dependencies": { + "react": "^19.2.0", + }, + "devDependencies": { + "@happy-dom/global-registrator": "^20.11.2", + "@types/bun": "catalog:", + "@types/react": "^19.2.2", + "@types/react-dom": "catalog:", + "react-dom": "^19.2.0", + "typescript": "catalog:", + }, + }, + "packages/slug": { + "name": "@corbits/slug", + "version": "0.0.1", + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/text-diff": { + "name": "@corbits/text-diff", + "version": "0.0.1", + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/tool-registry-publish": { + "name": "@corbits/tool-registry-publish", + "version": "0.0.1", + "dependencies": { + "@intx/inference": "workspace:*", + "@intx/log": "0.3.0", + "@intx/types": "workspace:*", + "arktype": "catalog:", + "tar": "catalog:", + }, + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/turn-artifacts": { + "name": "@corbits/turn-artifacts", + "version": "0.0.1", + "dependencies": { + "arktype": "catalog:", + }, + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/url-path": { + "name": "@corbits/url-path", + "version": "0.0.1", + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/webhook-triggers": { + "name": "@corbits/webhook-triggers", + "version": "0.0.1", + "dependencies": { + "@corbits/agent-runtime": "workspace:*", + "@corbits/error-sink": "workspace:*", + "@corbits/migration-runner": "workspace:*", + "@corbits/workflows": "workspace:*", + "@intx/db": "workspace:*", + "@intx/hub-api": "workspace:*", + "@intx/hub-common": "0.3.0", + "@intx/hub-sessions": "workspace:*", + "@intx/log": "0.3.0", + "@intx/types": "workspace:*", + "arktype": "catalog:", + "drizzle-orm": "catalog:", + "hono": "catalog:", + "postgres": "catalog:", + }, + "devDependencies": { + "@intx/crypto": "0.3.0", + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/workflow-schedule": { + "name": "@corbits/workflow-schedule", + "version": "0.0.1", + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/workflows": { + "name": "@corbits/workflows", + "version": "0.0.1", + "dependencies": { + "@corbits/error-sink": "workspace:*", + "@corbits/workflow-schedule": "workspace:*", + "@intx/authz": "0.3.0", + "@intx/db": "workspace:*", + "@intx/hub-api": "workspace:*", + "@intx/hub-common": "0.3.0", + "@intx/hub-sessions": "workspace:*", + "@intx/types": "workspace:*", + "@intx/workflow-deploy": "workspace:*", + "arktype": "catalog:", + "cronstrue": "^3.24.0", + "drizzle-orm": "catalog:", + "hono": "catalog:", + }, + "devDependencies": { + "@corbits/connections": "workspace:*", + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "packages/xai-provider": { + "name": "@corbits/xai-provider", + "version": "0.1.0", + "dependencies": { + "@corbits/oauth-core": "github:corbitsdev/corbits-oauth-core#v0.1.1", + "@corbits/openai-responses": "github:corbitsdev/corbits-openai-responses#v0.1.0", + "@intx/inference": "workspace:*", + "@intx/types": "workspace:*", + "arktype": "catalog:", + }, + "devDependencies": { + "@types/bun": "catalog:", + "typescript": "catalog:", + }, + }, + "skills/skills": { + "name": "@corbits/skills", + "version": "0.0.2", "dependencies": { - "@corbits/connections": "workspace:*", - "@intx/inference-catalog": "0.3.0", + "arktype": "catalog:", }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:", }, }, - "packages/reddit-tools": { - "name": "@corbits/reddit-tools", - "version": "0.0.2", + "tools/access": { + "name": "@corbits/access-tools", + "version": "0.0.6", "dependencies": { "arktype": "catalog:", }, "devDependencies": { + "@corbits/agent-directory": "workspace:*", + "@corbits/agent-directory-tools": "workspace:*", + "@corbits/tool-registry-publish": "workspace:*", "@types/bun": "catalog:", "typescript": "catalog:", }, "peerDependencies": { + "@corbits/error-sink": "0.0.2", "@intx/agent": "0.3.0", + "@intx/authz": "0.3.0", "@intx/types": "0.3.0", }, }, - "packages/sandbox-sidecar": { - "name": "@corbits/sandbox-sidecar", - "version": "0.0.1", + "tools/agent-directory": { + "name": "@corbits/agent-directory-tools", + "version": "0.0.7", "dependencies": { - "@intx/crypto": "0.3.0", - "@intx/hub-sessions": "workspace:*", - "@intx/log": "0.3.0", - "@intx/types": "workspace:*", "arktype": "catalog:", }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/scout-agent": { - "name": "@corbits/scout-agent", - "version": "0.0.5", + "tools/capability": { + "name": "@corbits/capability-tools", + "version": "0.0.7", "dependencies": { - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", "arktype": "catalog:", }, "devDependencies": { - "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", - "@corbits/web-search-tools": "workspace:*", "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/settings-ui": { - "name": "@corbits/settings-ui", - "version": "0.0.1", + "tools/catalog": { + "name": "@corbits/catalog-tools", + "version": "0.1.1", "dependencies": { - "@corbits/api-query": "workspace:*", - "@corbits/bench-ui": "workspace:*", - "@corbits/chat-ui": "workspace:*", - "@corbits/connections": "workspace:*", - "@corbits/error-sink": "workspace:*", - "@corbits/icons": "workspace:*", - "@corbits/inference-settings": "workspace:*", - "@corbits/react-ui": "github:corbitsdev/react-ui#3b122812a307ccb35be31386f7696020c5a84635", - "@corbits/workflows": "workspace:*", - "@intx/types": "workspace:*", + "@corbits/inference-catalog": "0.1.0", "arktype": "catalog:", - "react": "^19.2.0", - "react-dom": "^19.2.0", }, "devDependencies": { - "@happy-dom/global-registrator": "^20.11.2", "@types/bun": "catalog:", - "@types/react": "^19.2.2", - "@types/react-dom": "catalog:", - "react-dom": "^19.2.0", "typescript": "catalog:", }, - }, - "packages/shell-layout": { - "name": "@corbits/shell-layout", - "version": "0.0.1", - "dependencies": { - "react": "^19.2.0", - }, - "devDependencies": { - "@happy-dom/global-registrator": "^20.11.2", - "@types/bun": "catalog:", - "@types/react": "^19.2.2", - "@types/react-dom": "catalog:", - "react-dom": "^19.2.0", - "typescript": "catalog:", + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", }, }, - "packages/skills": { - "name": "@corbits/skills", - "version": "0.0.2", + "tools/connections": { + "name": "@corbits/connections-tools", + "version": "0.0.12", "dependencies": { "arktype": "catalog:", }, @@ -1117,10 +1147,14 @@ "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/skills-tools": { - "name": "@corbits/skills-tools", - "version": "0.0.8", + "tools/github": { + "name": "@corbits/github-tools", + "version": "0.0.11", "dependencies": { "arktype": "catalog:", }, @@ -1133,44 +1167,54 @@ "@intx/types": "0.3.0", }, }, - "packages/slug": { - "name": "@corbits/slug", - "version": "0.0.1", - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", + "tools/granola": { + "name": "@corbits/granola-tools", + "version": "0.0.5", + "dependencies": { + "arktype": "catalog:", }, - }, - "packages/text-diff": { - "name": "@corbits/text-diff", - "version": "0.0.1", "devDependencies": { + "@corbits/credential-providers": "workspace:*", + "@intx/authz": "0.3.0", + "@intx/crypto": "0.3.0", + "@intx/db": "workspace:*", + "@intx/harness": "workspace:*", "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/tool-registry-publish": { - "name": "@corbits/tool-registry-publish", - "version": "0.0.1", + "tools/interaction": { + "name": "@corbits/interaction-tools", + "version": "0.0.11", "dependencies": { - "@intx/inference": "workspace:*", - "@intx/log": "0.3.0", - "@intx/types": "workspace:*", "arktype": "catalog:", - "tar": "catalog:", }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@corbits/error-sink": "0.0.2", + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/tools-skills": { - "name": "@corbits/tools-skills", - "version": "0.0.4", + "tools/linear": { + "name": "@corbits/linear-tools", + "version": "0.0.5", "dependencies": { "arktype": "catalog:", }, "devDependencies": { + "@corbits/credential-providers": "workspace:*", + "@intx/authz": "0.3.0", + "@intx/crypto": "0.3.0", + "@intx/db": "workspace:*", + "@intx/harness": "workspace:*", "@types/bun": "catalog:", "typescript": "catalog:", }, @@ -1179,9 +1223,9 @@ "@intx/types": "0.3.0", }, }, - "packages/turn-artifacts": { - "name": "@corbits/turn-artifacts", - "version": "0.0.1", + "tools/manus": { + "name": "@corbits/manus-tools", + "version": "0.0.12", "dependencies": { "arktype": "catalog:", }, @@ -1189,19 +1233,16 @@ "@types/bun": "catalog:", "typescript": "catalog:", }, - }, - "packages/url-path": { - "name": "@corbits/url-path", - "version": "0.0.1", - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:", + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", }, }, - "packages/web-search-tools": { - "name": "@corbits/web-search-tools", - "version": "0.0.4", + "tools/mcp": { + "name": "@corbits/mcp-tools", + "version": "0.0.12", "dependencies": { + "@modelcontextprotocol/sdk": "catalog:", "arktype": "catalog:", }, "devDependencies": { @@ -1213,33 +1254,23 @@ "@intx/types": "0.3.0", }, }, - "packages/webhook-triggers": { - "name": "@corbits/webhook-triggers", - "version": "0.0.1", + "tools/reddit": { + "name": "@corbits/reddit-tools", + "version": "0.0.2", "dependencies": { - "@corbits/agent-runtime": "workspace:*", - "@corbits/error-sink": "workspace:*", - "@corbits/migration-runner": "workspace:*", - "@corbits/workflows": "workspace:*", - "@intx/db": "workspace:*", - "@intx/hub-api": "workspace:*", - "@intx/hub-common": "0.3.0", - "@intx/hub-sessions": "workspace:*", - "@intx/log": "0.3.0", - "@intx/types": "workspace:*", "arktype": "catalog:", - "drizzle-orm": "catalog:", - "hono": "catalog:", - "postgres": "catalog:", }, "devDependencies": { - "@intx/crypto": "0.3.0", "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/workflow-authoring-tools": { - "name": "@corbits/workflow-authoring-tools", + "tools/skills-tools": { + "name": "@corbits/skills-tools", "version": "0.0.8", "dependencies": { "arktype": "catalog:", @@ -1253,52 +1284,50 @@ "@intx/types": "0.3.0", }, }, - "packages/workflow-schedule": { - "name": "@corbits/workflow-schedule", - "version": "0.0.1", + "tools/tools-skills": { + "name": "@corbits/tools-skills", + "version": "0.0.4", + "dependencies": { + "arktype": "catalog:", + }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/workflows": { - "name": "@corbits/workflows", - "version": "0.0.1", + "tools/web-search": { + "name": "@corbits/web-search-tools", + "version": "0.0.4", "dependencies": { - "@corbits/error-sink": "workspace:*", - "@corbits/workflow-schedule": "workspace:*", - "@intx/authz": "0.3.0", - "@intx/db": "workspace:*", - "@intx/hub-api": "workspace:*", - "@intx/hub-common": "0.3.0", - "@intx/hub-sessions": "workspace:*", - "@intx/types": "workspace:*", - "@intx/workflow-deploy": "workspace:*", "arktype": "catalog:", - "cronstrue": "^3.24.0", - "drizzle-orm": "catalog:", - "hono": "catalog:", }, "devDependencies": { - "@corbits/connections": "workspace:*", "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, - "packages/xai-provider": { - "name": "@corbits/xai-provider", - "version": "0.1.0", + "tools/workflow-authoring": { + "name": "@corbits/workflow-authoring-tools", + "version": "0.0.8", "dependencies": { - "@corbits/oauth-core": "github:corbitsdev/corbits-oauth-core#v0.1.1", - "@corbits/openai-responses": "github:corbitsdev/corbits-openai-responses#v0.1.0", - "@intx/inference": "workspace:*", - "@intx/types": "workspace:*", "arktype": "catalog:", }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0", + }, }, "vendor/intx/agent": { "name": "@intx/agent", @@ -1561,27 +1590,6 @@ "typescript": "catalog:", }, }, - "workflows/assistant": { - "name": "@corbits/assistant-workflow", - "version": "0.0.2", - "dependencies": { - "@corbits/catalog-tools": "0.1.1", - "@corbits/memory": "github:corbitsdev/corbits-memory#9e6f213fa2c002b531d3f6af1aa0abd737b8afe3", - }, - "devDependencies": { - "@corbits/agent-directory-tools": "workspace:*", - "@corbits/connections": "workspace:*", - "@corbits/connections-tools": "workspace:*", - "@corbits/interaction-tools": "workspace:*", - "@types/bun": "catalog:", - "typescript": "catalog:", - }, - "peerDependencies": { - "@intx/agent": "0.3.0", - "@intx/types": "0.3.0", - "@intx/workflow": "0.3.0", - }, - }, "workflows/attio-task-agent": { "name": "@corbits/attio-task-agent-workflow", "version": "0.0.1", @@ -1927,11 +1935,11 @@ "@connectrpc/connect-web": ["@connectrpc/connect-web@2.2.0", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0", "@connectrpc/connect": "2.2.0" } }, "sha512-uuBUcBTYfb/r1o98LzCCZk1H90yx0vmZ5m21dpw/q4EUwsKwkCDGI8H0aEdjcZld+Q2jJ5A5ADvPqfb6lzQ/sg=="], - "@corbits/access-tools": ["@corbits/access-tools@workspace:packages/access-tools"], + "@corbits/access-tools": ["@corbits/access-tools@workspace:tools/access"], "@corbits/agent-directory": ["@corbits/agent-directory@workspace:packages/agent-directory"], - "@corbits/agent-directory-tools": ["@corbits/agent-directory-tools@workspace:packages/agent-directory-tools"], + "@corbits/agent-directory-tools": ["@corbits/agent-directory-tools@workspace:tools/agent-directory"], "@corbits/agent-events": ["@corbits/agent-events@workspace:packages/agent-events"], @@ -1945,15 +1953,15 @@ "@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:workflows/assistant"], + "@corbits/assistant-workflow": ["@corbits/assistant-workflow@workspace:agents/assistant"], "@corbits/attio-task-agent-workflow": ["@corbits/attio-task-agent-workflow@workspace:workflows/attio-task-agent"], "@corbits/bench-ui": ["@corbits/bench-ui@workspace:packages/bench-ui"], - "@corbits/capability-tools": ["@corbits/capability-tools@workspace:packages/capability-tools"], + "@corbits/capability-tools": ["@corbits/capability-tools@workspace:tools/capability"], - "@corbits/catalog-tools": ["@corbits/catalog-tools@workspace:packages/catalog-tools"], + "@corbits/catalog-tools": ["@corbits/catalog-tools@workspace:tools/catalog"], "@corbits/chat": ["@corbits/chat@workspace:packages/chat"], @@ -1977,7 +1985,7 @@ "@corbits/connections": ["@corbits/connections@workspace:packages/connections"], - "@corbits/connections-tools": ["@corbits/connections-tools@workspace:packages/connections-tools"], + "@corbits/connections-tools": ["@corbits/connections-tools@workspace:tools/connections"], "@corbits/context-menu": ["@corbits/context-menu@workspace:packages/context-menu"], @@ -1999,13 +2007,13 @@ "@corbits/exa-topic-watch-workflow": ["@corbits/exa-topic-watch-workflow@workspace:workflows/exa-topic-watch"], - "@corbits/github-tools": ["@corbits/github-tools@workspace:packages/github-tools"], + "@corbits/github-tools": ["@corbits/github-tools@workspace:tools/github"], "@corbits/gotenberg-render": ["@corbits/gotenberg-render@workspace:packages/gotenberg-render"], "@corbits/granola-call-workflow": ["@corbits/granola-call-workflow@workspace:workflows/granola-call"], - "@corbits/granola-tools": ["@corbits/granola-tools@workspace:packages/granola-tools"], + "@corbits/granola-tools": ["@corbits/granola-tools@workspace:tools/granola"], "@corbits/heartbeat-workflow": ["@corbits/heartbeat-workflow@workspace:workflows/heartbeat"], @@ -2019,19 +2027,19 @@ "@corbits/inference-settings": ["@corbits/inference-settings@workspace:packages/inference-settings"], - "@corbits/interaction-tools": ["@corbits/interaction-tools@workspace:packages/interaction-tools"], + "@corbits/interaction-tools": ["@corbits/interaction-tools@workspace:tools/interaction"], - "@corbits/jimmy-agent": ["@corbits/jimmy-agent@workspace:packages/jimmy-agent"], + "@corbits/jimmy-agent": ["@corbits/jimmy-agent@workspace:agents/jimmy"], "@corbits/last-30-days-research-workflow": ["@corbits/last-30-days-research-workflow@workspace:workflows/last-30-days-research"], - "@corbits/linear-tools": ["@corbits/linear-tools@workspace:packages/linear-tools"], + "@corbits/linear-tools": ["@corbits/linear-tools@workspace:tools/linear"], "@corbits/mailbox": ["@corbits/mailbox@github:corbitsdev/corbits-mailbox#bc96404", { "dependencies": { "@hono/standard-validator": "0.2.3", "@standard-community/standard-json": "0.3.5", "@standard-community/standard-openapi": "0.2.9", "arktype": "2.1.29", "hono-openapi": "1.3.1" }, "peerDependencies": { "@intx/log": "^0.2.2", "@intx/mime": "^0.2.2", "@intx/types": "^0.2.2", "drizzle-orm": "^0.45.2", "hono": "^4.12.0", "postgres": "^3.4.0" } }, "corbitsdev-corbits-mailbox-bc96404", "sha512-NEeNP2XsjIKOUbRr5szrCDWAYPQSmMNSu33ODyLUCiXdnq12HYWYG/C+0DcAMELlY+9Ktqf543Kg/Qb22NtjWQ=="], - "@corbits/manus-tools": ["@corbits/manus-tools@workspace:packages/manus-tools"], + "@corbits/manus-tools": ["@corbits/manus-tools@workspace:tools/manus"], - "@corbits/mcp-tools": ["@corbits/mcp-tools@workspace:packages/mcp-tools"], + "@corbits/mcp-tools": ["@corbits/mcp-tools@workspace:tools/mcp"], "@corbits/memory": ["@corbits/memory@github:corbitsdev/corbits-memory#9e6f213", { "dependencies": { "@intx/agent": "0.2.2", "@intx/authz": "0.2.2", "@intx/hub-api": "0.2.2", "@intx/log": "0.2.2", "@intx/workflow": "0.2.2", "arktype": "^2.1.29", "drizzle-orm": "^0.45.1", "hono": "^4.9.0", "hono-openapi": "^1.3.1", "postgres": "^3.4.7" } }, "corbitsdev-corbits-memory-9e6f213", "sha512-utnM4ZT2zmslcPXYWAAqxlDNLcpGsXFiTOtj8h7+OXnhCP0Eaw8yl25+yCTyHpvt3jcdeG4h5uFsSj7ou0BZCA=="], @@ -2063,19 +2071,19 @@ "@corbits/reddit-opportunity-scanner-workflow": ["@corbits/reddit-opportunity-scanner-workflow@workspace:workflows/reddit-opportunity-scanner"], - "@corbits/reddit-tools": ["@corbits/reddit-tools@workspace:packages/reddit-tools"], + "@corbits/reddit-tools": ["@corbits/reddit-tools@workspace:tools/reddit"], "@corbits/sandbox-sidecar": ["@corbits/sandbox-sidecar@workspace:packages/sandbox-sidecar"], - "@corbits/scout-agent": ["@corbits/scout-agent@workspace:packages/scout-agent"], + "@corbits/scout-agent": ["@corbits/scout-agent@workspace:agents/scout"], "@corbits/settings-ui": ["@corbits/settings-ui@workspace:packages/settings-ui"], "@corbits/shell-layout": ["@corbits/shell-layout@workspace:packages/shell-layout"], - "@corbits/skills": ["@corbits/skills@workspace:packages/skills"], + "@corbits/skills": ["@corbits/skills@workspace:skills/skills"], - "@corbits/skills-tools": ["@corbits/skills-tools@workspace:packages/skills-tools"], + "@corbits/skills-tools": ["@corbits/skills-tools@workspace:tools/skills-tools"], "@corbits/slug": ["@corbits/slug@workspace:packages/slug"], @@ -2083,19 +2091,19 @@ "@corbits/tool-registry-publish": ["@corbits/tool-registry-publish@workspace:packages/tool-registry-publish"], - "@corbits/tools-skills": ["@corbits/tools-skills@workspace:packages/tools-skills"], + "@corbits/tools-skills": ["@corbits/tools-skills@workspace:tools/tools-skills"], "@corbits/turn-artifacts": ["@corbits/turn-artifacts@workspace:packages/turn-artifacts"], "@corbits/url-path": ["@corbits/url-path@workspace:packages/url-path"], - "@corbits/web-search-tools": ["@corbits/web-search-tools@workspace:packages/web-search-tools"], + "@corbits/web-search-tools": ["@corbits/web-search-tools@workspace:tools/web-search"], "@corbits/webhook-triggers": ["@corbits/webhook-triggers@workspace:packages/webhook-triggers"], "@corbits/workbench-digest-workflow": ["@corbits/workbench-digest-workflow@workspace:workflows/workbench-digest"], - "@corbits/workflow-authoring-tools": ["@corbits/workflow-authoring-tools@workspace:packages/workflow-authoring-tools"], + "@corbits/workflow-authoring-tools": ["@corbits/workflow-authoring-tools@workspace:tools/workflow-authoring"], "@corbits/workflow-schedule": ["@corbits/workflow-schedule@workspace:packages/workflow-schedule"], @@ -3277,6 +3285,8 @@ "@corbits/mailbox/hono-openapi": ["hono-openapi@1.3.1", "", { "peerDependencies": { "@hono/standard-validator": "^0.2.0", "@standard-community/standard-json": "^0.3.5", "@standard-community/standard-openapi": "^0.2.9", "@types/json-schema": "^7.0.15", "hono": "^4.11.2", "openapi-types": "^12.1.3" }, "optionalPeers": ["@hono/standard-validator", "hono"] }, "sha512-NLVeVkhKZ3drmQNEIPac8HX8Y54uf1hJAgIM/7MfDsaeVVmB+QILWQxx5x3R3NvRHgedcbEbOCGY2uR7WQYyMw=="], + "@corbits/scout-agent/@corbits/memory": ["@corbits/memory@github:corbitsdev/corbits-memory#9e6f213", { "dependencies": { "@intx/agent": "0.2.2", "@intx/authz": "0.2.2", "@intx/hub-api": "0.2.2", "@intx/log": "0.2.2", "@intx/workflow": "0.2.2", "arktype": "^2.1.29", "drizzle-orm": "^0.45.1", "hono": "^4.9.0", "hono-openapi": "^1.3.1", "postgres": "^3.4.7" } }, "corbitsdev-corbits-memory-9e6f213", "sha512-utnM4ZT2zmslcPXYWAAqxlDNLcpGsXFiTOtj8h7+OXnhCP0Eaw8yl25+yCTyHpvt3jcdeG4h5uFsSj7ou0BZCA=="], + "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], diff --git a/docs/connect-cards.md b/docs/connect-cards.md index 1c6df9915b..533acdbf60 100644 --- a/docs/connect-cards.md +++ b/docs/connect-cards.md @@ -20,7 +20,7 @@ the agent — no settings page round-trip, no "report back when done". keyless MCP presets, an inline key-paste for api-key connectors. `apps/web/src/connect-service-actions.ts` is the workbench binding. - **Emission** — `request_connection` - (`packages/connections-tools/src/tool.ts`) posts the block into the + (`tools/connections/src/tool.ts`) posts the block into the caller's own room through the same `participants/messages` route `ask_user` uses, and tells the model to keep helping in the meantime (draft now, finish once connected). A run with no room of its own diff --git a/docs/local-rip.md b/docs/local-rip.md index f881633075..0e113a1c42 100644 --- a/docs/local-rip.md +++ b/docs/local-rip.md @@ -102,7 +102,7 @@ a "Meet Myra" button into the bench itself. ### Publishing the corbits-tools registry The **assistant** default workflow pins the `@corbits/memory-tools` tool -package (`workflows/assistant/src/index.ts`), and that pin only resolves +package (`agents/assistant/src/index.ts`), and that pin only resolves once a `package-registry`-kind asset named `corbits-tools` carries its tarball (see `apps/hub/src/index.ts`'s `CORBITS_TOOLS_REGISTRY` comment). Hub boot does not publish that asset, and neither does anything diff --git a/docs/revendor-inventory.md b/docs/revendor-inventory.md index 9fff62c60f..7f67bb5d15 100644 --- a/docs/revendor-inventory.md +++ b/docs/revendor-inventory.md @@ -183,7 +183,7 @@ numbers searched — flagged as NOT FOUND rather than guessed at. | Self-anchoring, `packages/folded-runs/launch.ts` + marker table + `reconnect.ts` | **CHANGED (confirmed, not retirable)** | Post-merge check against the landed `55c4431e` pin: `vendor/intx/hub-sessions/src/hub-session-lookups.ts:374` still gates `receiveWorkflowRunPack` on `anchor.anchorRunId === anchor.id` — the exact check self-anchoring exists to satisfy — so the mechanism itself is still required, not just the doc citation. The dead citation is fixed: `packages/folded-runs/src/launch.ts`'s header comment pointed at `vendor/intx/hub-api/src/routes/instances.ts` (deleted by `b5c1525b`); the route moved to `vendor/intx/hub-api/src/routes/runs.ts`, confirmed still self-anchoring at line 291/307/840, and the comment now cites that file with a note on the rename. The marker table (`packages/folded-runs/src/schema.ts`) and `reconnect.ts`'s `lookupFoldedRunReconnectKey` patch are both still needed — upstream has no per-chat-launch concept and its `isLiveWorkflowRunStatus` reconnect gate is unchanged since the old pin. Nothing here was deleted; this is a doc-accuracy fix only. | | Chat write-claims (`packages/chat/src/write-claims.ts`, CL-6039) | **STILL-OPEN** | Redelivery-dedup via `tryClaim`/`release` (`write-claims.ts:24-49`) has no upstream equivalent; no dedup/idempotency commits touching this surface since the pin. | | Tasks chain in-process hand-off (`packages/tasks/src/chain.ts:1-27`, CL-6059/6060) | **RETIRED** | `@corbits/tasks` was deleted (tasks primitive removed in favor of workflows/routines) — the citing code no longer exists in this repo. The upstream gaps it named (no `sidecar_allocation` row minted for folded runs, `buildRuntimeEnv` never binding `invokeAction`) may still be real for `@corbits/folded-runs`' own dispatch path; re-file against that package if a future workaround needs them. | -| Skills consumption (CL-6021) | **NOT FOUND** | No "CL-6021" or comparable marker in `packages/skills` / `packages/tools-skills`; likely workbench's own feature build, not a documented upstream-gap workaround. | +| Skills consumption (CL-6021) | **NOT FOUND** | No "CL-6021" or comparable marker in `skills/skills` / `tools/tools-skills`; likely workbench's own feature build, not a documented upstream-gap workaround. | | Approvals scope always (CL-5956) | **NOT FOUND** | No "CL-5956", `approvalScope`, or "scope: always" workaround found anywhere in the worktree. | | Asset delete (CL-6040) | **NOT FOUND** | No "CL-6040", `deleteAsset`, or asset package at all in the worktree. | | Tenant-mint gating (`apps/hub/src/tenant-create-guard.ts`, CL-6041) | **STILL-OPEN** | Wraps the native `POST /api/tenants` because it's ungated; `git log 26ae23e8..origin/main -- packages/hub-api/src/routes/tenants.ts` upstream shows zero commits — route unchanged. | @@ -191,7 +191,7 @@ numbers searched — flagged as NOT FOUND rather than guessed at. | `receiveWorkflowRunPack` anchors (`packages/folded-runs/src/launch.ts:240-247`, CL-6044) | **STILL-OPEN mechanism / CHANGED context** | Upstream `vendor/intx/hub-sessions/src/hub-session-lookups.ts:369-373` still requires `anchor.anchorRunId === anchor.id` before accepting a pack — same check the workaround targets. But per `e2732d32`'s commit message, the folded-launch surface it mimics (stop, mail send/history, turns, event stream) is being retired upstream in favor of run-first surfaces — the ground workbench stands on is shifting even though the specific check hasn't. **2026-08-28:** `hub-session-lookups.ts` is still untouched upstream at `a8bc06ae` (`git -C ~/abklabs/interchange log --oneline b5580a02..a8bc06ae -- packages/hub-sessions/src/hub-session-lookups.ts` is empty), so this row's verdict stands unchanged. | | Mail-trigger anchor (CL-6020) | **NOT FOUND** | No "CL-6020" or comparable mail-trigger-anchor workaround found. | | Abort race (CL-5960) | **NOT FOUND** | No "CL-5960" or abort/race workaround found. | -| Self-update grants (`packages/agent-directory/src/workflow-capability-routes.ts:16-40`, `packages/capability-tools/src/client.ts:14-22`, CL-6085) | **STILL-OPEN** | A run's own `kind: "workflow"` principal is never seeded a `workflow-definition:/update` grant; upstream's `715c8be6` (removes unenforced approved-grant shipment) and `09d4cfd1` (freezes per-deployment grant walk) don't add own-definition self-update grant materialization — unrelated to this gap. | +| Self-update grants (`packages/agent-directory/src/workflow-capability-routes.ts:16-40`, `tools/capability/src/client.ts:14-22`, CL-6085) | **STILL-OPEN** | A run's own `kind: "workflow"` principal is never seeded a `workflow-definition:/update` grant; upstream's `715c8be6` (removes unenforced approved-grant shipment) and `09d4cfd1` (freezes per-deployment grant walk) don't add own-definition self-update grant materialization — unrelated to this gap. | | Tool-id binding (CL-6034) | **NOT FOUND** | No "CL-6034" or tool-id-binding workaround found. | | Audit API (CL-6025) | **NOT FOUND** | No "CL-6025" or dedicated audit-log workaround found; only generic, unrelated `audit` string hits in logging/telemetry code. | diff --git a/docs/workbenches.md b/docs/workbenches.md index a45f142cd7..51bec06c1d 100644 --- a/docs/workbenches.md +++ b/docs/workbenches.md @@ -23,7 +23,7 @@ teammate in its reply. ## Myra as standing host -Myra (the `assistant` default workflow, `workflows/assistant/src/index.ts`) +Myra (the `assistant` default workflow, `agents/assistant/src/index.ts`) is the host every new workbench starts with. Her triage clause decides, on every message, whether to answer directly or delegate: answer directly for questions, drafting, or anything reasoned through in the conversation; diff --git a/package.json b/package.json index 9798c25b50..7dc57a25e2 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,10 @@ "private": true, "license": "SEE LICENSE IN LICENSE.md", "workspaces": [ + "agents/*", "apps/*", "packages/*", + "skills/*", "tools/*", "vendor/intx/*", "workflows/*" @@ -13,9 +15,9 @@ "scripts": { "check": "bun run typecheck && bun run lint && bun run fmt:check && bun run check:structural && bun run test", "typecheck": "bun run scripts/typecheck.ts", - "lint": "oxlint apps packages workflows scripts test", - "fmt": "oxfmt apps packages workflows scripts test", - "fmt:check": "oxfmt --check apps packages workflows scripts test", + "lint": "oxlint apps packages tools agents skills workflows scripts test", + "fmt": "oxfmt apps packages tools agents skills workflows scripts test", + "fmt:check": "oxfmt --check apps packages tools agents skills workflows scripts test", "hooks:install": "bun run scripts/hooks-install.ts", "prepare": "bun run hooks:install", "build": "bun run scripts/run-all.ts build", diff --git a/packages/agent-runtime/src/chat-orchestrator.ts b/packages/agent-runtime/src/chat-orchestrator.ts index 5b3a74809e..df69a6cc73 100644 --- a/packages/agent-runtime/src/chat-orchestrator.ts +++ b/packages/agent-runtime/src/chat-orchestrator.ts @@ -1185,7 +1185,7 @@ async function postFinalizedTurnMemoryEntries( * day's first reply as an honest, lightweight digest of workbench * activity — never a fabricated summary. Chosen over an "on thread * completion" trigger because this repo's single-step conversational - * workflows (`workflows/assistant`) keep one warm agent address across + * workflows (`agents/assistant`) keep one warm agent address across * an entire workbench's lifetime (see that package's header comment): a * "thread" never observably completes here, so there is no cheap event * to hook without inventing one. A once-per-workbench-per-day bound is diff --git a/packages/chat-ui/src/tool-activity.ts b/packages/chat-ui/src/tool-activity.ts index 71398bce33..93b9cc5c69 100644 --- a/packages/chat-ui/src/tool-activity.ts +++ b/packages/chat-ui/src/tool-activity.ts @@ -249,7 +249,7 @@ function splitQualifiedName(name: string): { * describing what it does. * * `mcp_read`/`mcp_call` are the generic MCP dispatch tools - * (`packages/mcp-tools/src/tool.ts`): every downstream call arrives under + * (`tools/mcp/src/tool.ts`): every downstream call arrives under * one of those two names, with the tool it actually invoked sitting in its * `{server, tool}` arguments — so those are read first, or a whole * conversation's worth of calls would all read alike. diff --git a/packages/connections/test/mcp-server-store.drizzle.test.ts b/packages/connections/test/mcp-server-store.drizzle.test.ts index 889e42dee1..f35f4fedb8 100644 --- a/packages/connections/test/mcp-server-store.drizzle.test.ts +++ b/packages/connections/test/mcp-server-store.drizzle.test.ts @@ -1,6 +1,6 @@ // DB-gated: skipped when no DATABASE_URL is reachable (a fresh checkout // still runs the unit gates), mirroring -// `packages/granola-tools/test/credential-delivery.drizzle.test.ts`. Runs +// `tools/granola/test/credential-delivery.drizzle.test.ts`. Runs // against its own Postgres schema, never the developer's or the // walking-skeleton suite's. // diff --git a/packages/evals/src/fakes/mcp-fake-server.ts b/packages/evals/src/fakes/mcp-fake-server.ts index 06bf2926fd..cecaf652e3 100644 --- a/packages/evals/src/fakes/mcp-fake-server.ts +++ b/packages/evals/src/fakes/mcp-fake-server.ts @@ -1,6 +1,6 @@ // Stands up a real MCP server (CL-6338) — same SDK pieces // `@corbits/mcp-tools`' own test double already proves against -// (`packages/mcp-tools/test/stub-mcp-server.ts`) — that replays a +// (`tools/mcp/test/stub-mcp-server.ts`) — that replays a // checked-in `McpFakeRecording` (./recording.ts) instead of a // hand-written tool set. Connected into a tenant through the exact // same `POST /mcp-servers` route real users use diff --git a/packages/jimmy-agent/package.json b/packages/jimmy-agent/package.json deleted file mode 100644 index be7c759f3f..0000000000 --- a/packages/jimmy-agent/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@corbits/jimmy-agent", - "version": "0.0.3", - "private": true, - "description": "Jimmy: a one-shot chat agent that searches Giphy and replies with a GIF", - "license": "LGPL-2.1-or-later", - "type": "module", - "exports": { - ".": "./src/index.ts", - "./metadata": "./src/metadata.ts" - }, - "scripts": { - "typecheck": "tsc --noEmit", - "test": "bun test" - }, - "dependencies": { - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", - "arktype": "catalog:" - }, - "devDependencies": { - "@types/bun": "catalog:", - "typescript": "catalog:" - }, - "interchange": { - "credentials": [ - { - "handle": "giphy" - } - ] - } -} diff --git a/packages/mocks/src/ollama/scenarios.ts b/packages/mocks/src/ollama/scenarios.ts index c11a39d56c..ab38874c9d 100644 --- a/packages/mocks/src/ollama/scenarios.ts +++ b/packages/mocks/src/ollama/scenarios.ts @@ -12,7 +12,7 @@ import type { OllamaChatReply } from "./types"; const CL_6478_MALFORMED_TOOL_NAME = "@intx/tools-posix/sidecar-bundle:run_shell\n { throw new HubApiError( "publishing the corbits-tools package-registry asset failed: " + "tool-package freshness: @corbits/capability-tools@1.2.0 changed " + - "src/ without bumping version.\n /Users/alice/abklabs/workbench/packages/capability-tools", + "src/ without bumping version.\n /Users/alice/abklabs/workbench/tools/capability", "check the hub logs for the underlying failure, then re-run: workbench seed", ); }, @@ -556,7 +556,7 @@ describe("POST /complete", () => { lines.some( (line) => line.includes(body.error.refId) && - line.includes("/Users/alice/abklabs/workbench/packages/capability-tools"), + line.includes("/Users/alice/abklabs/workbench/tools/capability"), ), ).toBe(true); }); diff --git a/packages/tool-registry-publish/src/registry.ts b/packages/tool-registry-publish/src/registry.ts index 0a7dc49943..9858e9551a 100644 --- a/packages/tool-registry-publish/src/registry.ts +++ b/packages/tool-registry-publish/src/registry.ts @@ -56,25 +56,25 @@ export function tarballsCoverRequiredSeedPackages(filenames: Iterable): * README for how its request_capability tool reaches the hub. */ export const CORBITS_TOOL_PACKAGE_DIRS: readonly string[] = [ - new URL("../../capability-tools", import.meta.url).pathname, - new URL("../../connections-tools", import.meta.url).pathname, - new URL("../../catalog-tools", import.meta.url).pathname, - new URL("../../agent-directory-tools", import.meta.url).pathname, - new URL("../../access-tools", import.meta.url).pathname, - new URL("../../interaction-tools", import.meta.url).pathname, - new URL("../../skills-tools", import.meta.url).pathname, - new URL("../../mcp-tools", import.meta.url).pathname, - new URL("../../tools-skills", import.meta.url).pathname, - new URL("../../github-tools", import.meta.url).pathname, - new URL("../../web-search-tools", import.meta.url).pathname, - new URL("../../granola-tools", import.meta.url).pathname, - new URL("../../manus-tools", import.meta.url).pathname, - new URL("../../linear-tools", import.meta.url).pathname, - new URL("../../workflow-authoring-tools", import.meta.url).pathname, + new URL("../../../tools/capability", import.meta.url).pathname, + new URL("../../../tools/connections", import.meta.url).pathname, + new URL("../../../tools/catalog", import.meta.url).pathname, + new URL("../../../tools/agent-directory", import.meta.url).pathname, + new URL("../../../tools/access", import.meta.url).pathname, + new URL("../../../tools/interaction", import.meta.url).pathname, + new URL("../../../tools/skills-tools", import.meta.url).pathname, + new URL("../../../tools/mcp", import.meta.url).pathname, + new URL("../../../tools/tools-skills", import.meta.url).pathname, + new URL("../../../tools/github", import.meta.url).pathname, + new URL("../../../tools/web-search", import.meta.url).pathname, + new URL("../../../tools/granola", import.meta.url).pathname, + new URL("../../../tools/manus", import.meta.url).pathname, + new URL("../../../tools/linear", import.meta.url).pathname, + new URL("../../../tools/workflow-authoring", import.meta.url).pathname, // Scout's own artifact-save/list tool bundle (`scoutArtifactTools`) and // Jimmy's `gif_search` bundle: each package pins itself in its own // `toolPackagePins` (`SCOUT_TOOL_PACKAGE_PINS`, `JIMMY_TOOL_PACKAGE_PINS`), // so each must publish here too or that self-pin never resolves. - new URL("../../scout-agent", import.meta.url).pathname, - new URL("../../jimmy-agent", import.meta.url).pathname, + new URL("../../../agents/scout", import.meta.url).pathname, + new URL("../../../agents/jimmy", import.meta.url).pathname, ]; diff --git a/packages/tool-registry-publish/src/surface-reader.test.ts b/packages/tool-registry-publish/src/surface-reader.test.ts index c4ac3e90c7..7ea4d66a1d 100644 --- a/packages/tool-registry-publish/src/surface-reader.test.ts +++ b/packages/tool-registry-publish/src/surface-reader.test.ts @@ -39,7 +39,7 @@ function memorySource(files: Map) { describe("readToolSurfaceManifests", () => { test("round-trips a packed tarball into a validated manifest", async () => { const tarball = await packToolPackageTarball( - new URL("../../capability-tools", import.meta.url).pathname, + new URL("../../../tools/capability", import.meta.url).pathname, ); const source = memorySource(new Map([[`tarballs/${tarball.filename}`, tarball.bytes]])); const manifests = await readToolSurfaceManifests({ @@ -61,7 +61,7 @@ describe("readToolSurfaceManifests", () => { test("skips a tarball whose package.json is not a valid manifest", async () => { const tarball = await packToolPackageTarball( - new URL("../../capability-tools", import.meta.url).pathname, + new URL("../../../tools/capability", import.meta.url).pathname, ); // Corrupt the packaged manifest by re-packing a tampered file is // overkill; a truncated tarball is enough to prove the reader skips @@ -75,7 +75,7 @@ describe("readToolSurfaceManifests", () => { test("returns the valid manifests and skips the manifest-less legacy ones", async () => { const tarball = await packToolPackageTarball( - new URL("../../capability-tools", import.meta.url).pathname, + new URL("../../../tools/capability", import.meta.url).pathname, ); const source = memorySource( new Map([ diff --git a/packages/workflows/src/catalog.ts b/packages/workflows/src/catalog.ts index 924b929b39..38fba65d35 100644 --- a/packages/workflows/src/catalog.ts +++ b/packages/workflows/src/catalog.ts @@ -18,7 +18,7 @@ import { type } from "arktype"; import echoPkg from "../../../workflows/echo/package.json"; import codeReviewPkg from "../../../workflows/code-review/package.json"; -import assistantPkg from "../../../workflows/assistant/package.json"; +import assistantPkg from "../../../agents/assistant/package.json"; import heartbeatPkg from "../../../workflows/heartbeat/package.json"; import workbenchDigestPkg from "../../../workflows/workbench-digest/package.json"; import granolaCallPkg from "../../../workflows/granola-call/package.json"; diff --git a/packages/workflows/test/agent-session.test.ts b/packages/workflows/test/agent-session.test.ts index 5a377998fc..54267e20a9 100644 --- a/packages/workflows/test/agent-session.test.ts +++ b/packages/workflows/test/agent-session.test.ts @@ -1,6 +1,6 @@ // DB-gated: skipped when DATABASE_URL is unreachable, matching this // repo's convention for tests that talk to a real Postgres (see -// `packages/access-tools/test/routes.test.ts`). +// `tools/access/test/routes.test.ts`). // // CL-7481: `recordAgentSessionAtProvision` is the eager write every // native launcher makes right after `prepareProvisionedDeployment` diff --git a/scripts/checks/publishable-workflows.ts b/scripts/checks/publishable-workflows.ts index 1321c9be6d..758022ff26 100644 --- a/scripts/checks/publishable-workflows.ts +++ b/scripts/checks/publishable-workflows.ts @@ -1,7 +1,8 @@ -// check:publishable-workflows — every workflows/* package and every -// packages/*-tools (or packages/tools-*) package must stay an -// individually publishable npm package: a standalone tarball with no -// dependency that only resolves inside this monorepo (CL-8157). +// check:publishable-workflows — every workflows/*, tools/*, agents/*, and +// skills/* package (plus any remaining packages/*-tools or +// packages/tools-* holdout) must stay an individually publishable npm +// package: a standalone tarball with no dependency that only resolves +// inside this monorepo (CL-8157, CL-8217). // // A package opts out of this check entirely by staying `private: true` — // that's the escape hatch for a package with a runtime dependency this @@ -28,10 +29,19 @@ const PackageJson = type({ }); type PackageJson = typeof PackageJson.infer; -const PUBLISHABLE_GLOBS = ["workflows/*/package.json", "packages/*/package.json"]; +const PUBLISHABLE_GLOBS = [ + "workflows/*/package.json", + "tools/*/package.json", + "agents/*/package.json", + "skills/*/package.json", + "packages/*/package.json", +]; function isInScope(dir: string): boolean { if (dir.startsWith("workflows/")) return true; + if (dir.startsWith("tools/") || dir.startsWith("agents/") || dir.startsWith("skills/")) { + return true; + } const base = path.basename(dir); return base.endsWith("-tools") || base.startsWith("tools-"); } diff --git a/scripts/checks/report-error-baseline.txt b/scripts/checks/report-error-baseline.txt index aaf3ca5179..b75f7b9269 100644 --- a/scripts/checks/report-error-baseline.txt +++ b/scripts/checks/report-error-baseline.txt @@ -77,17 +77,9 @@ apps/web/src/session.ts 3 return { apps/web/src/shell/context-menu/items.tsx 1 toast("Couldn't copy the link"); apps/web/src/shell/workbench-list.tsx 1 // Revert the optimistic title on failure; the list will refetch on apps/web/src/shell/workbench-list.tsx 1 setPinned(!next); -packages/agent-directory-tools/src/tool.ts 1 // The agent was genuinely created — that half-success must never -packages/agent-directory-tools/src/tool.ts 1 if (err instanceof CreateAgentDefinitionError) { -packages/agent-directory-tools/src/tool.ts 1 return errorResult(call.id, err); packages/agent-directory/src/definition-history.ts 1 return null; packages/approvals/src/allowance.ts 1 deps.log( packages/approvals/src/allowance.ts 1 return { outcome: "park", reason: "classification_failed" }; -packages/capability-tools/src/tool.ts 1 if (err instanceof CapabilityOutOfInventoryError) { -packages/capability-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/catalog-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/catalog-tools/src/tool.ts 2 return errorResult(call.id, err); -packages/catalog-tools/src/tool.ts 3 return errorResult(call.id, err); packages/chat-ui/src/composer.tsx 1 if (attachGenerationRef.current !== generation) return; packages/chat-ui/src/default-agent-workbench.ts 1 return { packages/chat-ui/src/invite-agent-dialog.tsx 1 setInviteError( @@ -111,10 +103,6 @@ packages/code-review/src/review-run.ts 1 return { reviewer, ok: false, reason: r packages/command-palette/src/recents.ts 1 // A full or disabled store (private browsing, quota) loses packages/command-palette/src/recents.ts 1 // As above — loses persistence, not function. packages/command-palette/src/recents.ts 1 return []; -packages/connections-tools/src/tool.ts 1 if (err instanceof NoOwnRoomError) { -packages/connections-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/connections-tools/src/tool.ts 2 return errorResult(call.id, err); -packages/connections-tools/src/tool.ts 3 return errorResult(call.id, err); packages/connections/src/connect-github-routes.ts 1 // A repoId `state.repos` doesn't carry means the card's own packages/connections/src/connect-github-routes.ts 1 // The GitHub client's own errors (transport, HTTP status, shape packages/connections/src/credential-test.ts 1 // Not JSON, or didn't match either shape — fall through to the @@ -122,61 +110,20 @@ packages/connections/src/credential-test.ts 1 return []; packages/connections/src/credential-test.ts 1 return undefined; packages/connections/src/credential-test.ts 1 return { packages/error-sink/src/index.ts 1 return context.refId ?? UNKNOWN_OPERATION; -packages/github-tools/src/pull-request-tools.ts 1 return errorResult(call.id, failureMessage(err)); -packages/github-tools/src/pull-request-tools.ts 1 return null; -packages/github-tools/src/pull-request-tools.ts 2 return errorResult(call.id, failureMessage(err)); -packages/github-tools/src/tool.ts 1 return null; -packages/github-tools/src/tool.ts 1 return { -packages/granola-tools/src/tool.ts 1 return null; -packages/granola-tools/src/tool.ts 1 return { -packages/granola-tools/src/tool.ts 2 return { packages/inbox/src/routes.ts 1 publishLog.error( -packages/jimmy-agent/src/gif-search-tool.ts 1 return false; -packages/jimmy-agent/src/gif-search-tool.ts 1 return null; -packages/jimmy-agent/src/gif-search-tool.ts 1 return { -packages/linear-tools/src/tool.ts 1 return null; -packages/linear-tools/src/tool.ts 1 return { -packages/manus-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/manus-tools/src/tool.ts 1 return null; -packages/manus-tools/src/tool.ts 2 return errorResult(call.id, err); -packages/manus-tools/src/tool.ts 3 return errorResult(call.id, err); -packages/manus-tools/src/tool.ts 4 return errorResult(call.id, err); -packages/manus-tools/src/tool.ts 5 return errorResult(call.id, err); -packages/manus-tools/src/tool.ts 6 return errorResult(call.id, err); -packages/mcp-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/mcp-tools/src/tool.ts 1 return errorResult(call.id, new Error(`"${pattern}" is not a valid regex: ${String(err)}`)); -packages/mcp-tools/src/tool.ts 1 return { -packages/mcp-tools/src/tool.ts 2 return errorResult(call.id, err); -packages/mcp-tools/src/tool.ts 3 return errorResult(call.id, err); -packages/mcp-tools/src/tool.ts 4 return errorResult(call.id, err); packages/mocks/src/ollama/capture.ts 1 return raw; packages/ollama-adapter/src/inline-tool-json.ts 1 return false; packages/ollama-adapter/src/inline-tool-json.ts 1 return { kind: "incomplete" }; packages/onboarding/src/pending-seed.ts 1 return drop(); packages/onboarding/src/routes.ts 1 // Neither `ProvisionError` nor `CliError` messages are safe to show packages/onboarding/src/routes.ts 1 return c.json( -packages/reddit-tools/src/tool.ts 1 return null; -packages/reddit-tools/src/tool.ts 1 return { -packages/reddit-tools/src/tool.ts 2 return { packages/sandbox-sidecar/src/provisioner.ts 1 log.error`failed to sweep obsolete unit ${externalRef} for allocation ${allocationId}: ${ packages/sandbox-sidecar/src/provisioner.ts 1 return rejected(...classify(error, "destroy_unit_failed")); packages/sandbox-sidecar/src/provisioner.ts 1 return rejected(...classify(error, "start_unit_failed")); -packages/scout-agent/src/artifact-tool.ts 1 return { -packages/scout-agent/src/artifact-tool.ts 2 return { packages/settings-ui/src/account-section.tsx 1 toast(SETTINGS_STRINGS.accountEmailCopyError); -packages/skills-tools/src/tool.ts 1 return errorResult(call.id, err); -packages/skills-tools/src/tool.ts 2 return errorResult(call.id, err); -packages/skills-tools/src/tool.ts 3 return errorResult(call.id, err); -packages/skills-tools/src/tool.ts 4 return errorResult(call.id, err); -packages/skills-tools/src/tool.ts 5 return errorResult(call.id, err); packages/tool-registry-publish/src/freshness-check.ts 1 log.error`${err instanceof Error ? err.message : String(err)}`; -packages/tools-skills/src/tool.ts 1 return errorResult(call.id, err); -packages/tools-skills/src/tool.ts 2 return errorResult(call.id, err); -packages/tools-skills/src/tool.ts 3 return errorResult(call.id, err); packages/turn-artifacts/src/index.ts 1 return []; packages/url-path/src/decoded-or-null.ts 1 return null; -packages/web-search-tools/src/tool.ts 1 return null; -packages/web-search-tools/src/tool.ts 1 return { packages/webhook-triggers/src/ingress-routes.ts 1 return c.json( packages/webhook-triggers/src/signature.ts 1 return false; workflows/attio-task-agent/src/finalize-tool.ts 1 return { diff --git a/scripts/checks/test/error-envelope.test.ts b/scripts/checks/test/error-envelope.test.ts index e2358dd118..583648c231 100644 --- a/scripts/checks/test/error-envelope.test.ts +++ b/scripts/checks/test/error-envelope.test.ts @@ -28,14 +28,14 @@ test("an arrow ErrorEnvelope factory is a violation naming the file", () => { test("a function errorEnvelope factory is a violation naming the file", () => { const report = auditLocalErrorEnvelopeFactories([ { - relPath: "packages/skills/src/routes.ts", + relPath: "skills/skills/src/routes.ts", contents: `function errorEnvelope(code: string, message: string) { return { error: { code, message } }; }`, }, ]); expect(report.violations).toHaveLength(1); - expect(report.violations[0]).toContain("packages/skills/src/routes.ts"); + expect(report.violations[0]).toContain("skills/skills/src/routes.ts"); }); test("an arktype parser named ErrorEnvelope is not a factory", () => { diff --git a/scripts/checks/test/tool-package-freshness.test.ts b/scripts/checks/test/tool-package-freshness.test.ts index 98af0f9e54..ca7e0c0c6e 100644 --- a/scripts/checks/test/tool-package-freshness.test.ts +++ b/scripts/checks/test/tool-package-freshness.test.ts @@ -11,7 +11,7 @@ import { readToolPackageNames, } from "../tool-package-freshness"; -const TOOL_PACKAGES = ["github-tools", "memory-tools"]; +const TOOL_PACKAGES = ["tools/github", "tools/memory"]; test("rejects stale source already on main and accepts a version bump", () => { const root = mkdtempSync(path.join(tmpdir(), "tool-freshness-main-")); @@ -47,7 +47,7 @@ test("rejects stale source already on main and accepts a version bump", () => { }, ); try { - mkdirSync(path.join(root, "packages/github-tools/src"), { + mkdirSync(path.join(root, "tools/github/src"), { recursive: true, }); mkdirSync(path.join(root, "packages/tool-registry-publish/src"), { @@ -55,11 +55,11 @@ test("rejects stale source already on main and accepts a version bump", () => { }); writeFileSync( path.join(root, "packages/tool-registry-publish/src/registry.ts"), - 'const CORBITS_TOOL_PACKAGE_DIRS = ["../../github-tools"];', + 'const CORBITS_TOOL_PACKAGE_DIRS = ["../../../tools/github"];', ); - const manifest = path.join(root, "packages/github-tools/package.json"); + const manifest = path.join(root, "tools/github/package.json"); writeFileSync(manifest, JSON.stringify({ name: "@corbits/github-tools", version: "1.0.0" })); - const source = path.join(root, "packages/github-tools/src/index.ts"); + const source = path.join(root, "tools/github/src/index.ts"); writeFileSync(source, "export const value = 1;"); git("init"); git("add", "."); @@ -83,15 +83,15 @@ test("rejects stale source already on main and accepts a version bump", () => { describe("packagesWithChangedSource", () => { test("names a package whose src/ moved", () => { - expect( - packagesWithChangedSource(["packages/github-tools/src/client.ts"], TOOL_PACKAGES), - ).toEqual(["github-tools"]); + expect(packagesWithChangedSource(["tools/github/src/client.ts"], TOOL_PACKAGES)).toEqual([ + "tools/github", + ]); }); test("ignores tests — they ship no source an agent resolves", () => { expect( packagesWithChangedSource( - ["packages/github-tools/src/client.test.ts", "packages/chat-ui/src/timeline.test.tsx"], + ["tools/github/src/client.test.ts", "packages/chat-ui/src/timeline.test.tsx"], TOOL_PACKAGES, ), ).toEqual([]); @@ -100,11 +100,7 @@ describe("packagesWithChangedSource", () => { test("ignores everything outside a package's src/", () => { expect( packagesWithChangedSource( - [ - "packages/github-tools/README.md", - "apps/hub/src/index.ts", - "workflows/code-review/src/index.ts", - ], + ["tools/github/README.md", "apps/hub/src/index.ts", "workflows/code-review/src/index.ts"], TOOL_PACKAGES, ), ).toEqual([]); @@ -114,31 +110,31 @@ describe("packagesWithChangedSource", () => { describe("auditFreshness", () => { test("the recurring incident: src moved, version did not", () => { const report = auditFreshness([ - { name: "github-tools", baseVersion: "0.0.5", headVersion: "0.0.5" }, + { name: "tools/github", baseVersion: "0.0.5", headVersion: "0.0.5" }, ]); expect(report.violations).toHaveLength(1); - expect(report.violations[0]).toContain("packages/github-tools"); + expect(report.violations[0]).toContain("tools/github"); expect(report.violations[0]).toContain("stayed at 0.0.5"); }); test("a bumped package passes", () => { const report = auditFreshness([ - { name: "github-tools", baseVersion: "0.0.5", headVersion: "0.0.6" }, + { name: "tools/github", baseVersion: "0.0.5", headVersion: "0.0.6" }, ]); expect(report.violations).toEqual([]); }); test("a package that did not exist at the base ref is new, not stale", () => { const report = auditFreshness([ - { name: "scout-agent", baseVersion: undefined, headVersion: "0.0.1" }, + { name: "agents/scout", baseVersion: undefined, headVersion: "0.0.1" }, ]); expect(report.violations).toEqual([]); }); test("names every stale package, not just the first", () => { const report = auditFreshness([ - { name: "github-tools", baseVersion: "0.0.5", headVersion: "0.0.5" }, - { name: "memory-tools", baseVersion: "0.0.4", headVersion: "0.0.4" }, + { name: "tools/github", baseVersion: "0.0.5", headVersion: "0.0.5" }, + { name: "tools/memory", baseVersion: "0.0.4", headVersion: "0.0.4" }, ]); expect(report.violations).toHaveLength(2); }); @@ -154,11 +150,11 @@ describe("scope", () => { test("reads the publisher's own list so the two cannot disagree", () => { const names = readToolPackageNames(` export const CORBITS_TOOL_PACKAGE_DIRS: readonly string[] = [ - new URL("../../memory-tools", import.meta.url).pathname, - new URL("../../github-tools", import.meta.url).pathname, + new URL("../../../tools/memory", import.meta.url).pathname, + new URL("../../../tools/github", import.meta.url).pathname, ]; `); - expect(names).toEqual(["github-tools", "memory-tools"]); + expect(names).toEqual(["tools/github", "tools/memory"]); }); }); diff --git a/scripts/checks/test/tool-package-pins.test.ts b/scripts/checks/test/tool-package-pins.test.ts index adad7163ee..5b660c0451 100644 --- a/scripts/checks/test/tool-package-pins.test.ts +++ b/scripts/checks/test/tool-package-pins.test.ts @@ -8,16 +8,16 @@ test("extractPins reads a single-line array-entry pin literal", () => { ' { name: "@corbits/mcp-tools", version: "0.0.8" },', "];", ].join("\n"); - const pins = extractPins("workflows/assistant/src/index.ts", contents); + const pins = extractPins("agents/assistant/src/index.ts", contents); expect(pins).toEqual([ { - relPath: "workflows/assistant/src/index.ts", + relPath: "agents/assistant/src/index.ts", line: 2, name: "@corbits/memory-tools", version: "0.0.4", }, { - relPath: "workflows/assistant/src/index.ts", + relPath: "agents/assistant/src/index.ts", line: 3, name: "@corbits/mcp-tools", version: "0.0.8", @@ -55,7 +55,7 @@ test("a pin matching its package's manifest version is not a violation", () => { const report = auditToolPackagePins( [ { - relPath: "workflows/assistant/src/index.ts", + relPath: "agents/assistant/src/index.ts", line: 47, name: "@corbits/agent-directory-tools", version: "0.0.4", @@ -70,7 +70,7 @@ test("a pin behind its package's manifest version is a violation naming the file const report = auditToolPackagePins( [ { - relPath: "workflows/assistant/src/index.ts", + relPath: "agents/assistant/src/index.ts", line: 49, name: "@corbits/connections-tools", version: "0.0.4", @@ -79,7 +79,7 @@ test("a pin behind its package's manifest version is a violation naming the file new Map([["@corbits/connections-tools", "0.0.5"]]), ); expect(report.violations).toHaveLength(1); - expect(report.violations[0]).toContain("workflows/assistant/src/index.ts:49"); + expect(report.violations[0]).toContain("agents/assistant/src/index.ts:49"); expect(report.violations[0]).toContain("0.0.4"); expect(report.violations[0]).toContain("0.0.5"); }); @@ -88,7 +88,7 @@ test("a pin naming a package with no workspace manifest is a violation", () => { const report = auditToolPackagePins( [ { - relPath: "workflows/assistant/src/index.ts", + relPath: "agents/assistant/src/index.ts", line: 60, name: "@corbits/does-not-exist", version: "0.0.1", diff --git a/scripts/checks/tool-package-freshness.ts b/scripts/checks/tool-package-freshness.ts index 67142ae0cd..886af06895 100644 --- a/scripts/checks/tool-package-freshness.ts +++ b/scripts/checks/tool-package-freshness.ts @@ -25,22 +25,21 @@ import { StaleToolPackageError, } from "../../packages/tool-registry-publish/src/freshness-check"; -const PACKAGE_ROOT = "packages"; - /** - * The packages the hub publishes to its tool registry and that workflows - * pin by `{ name, version }`. Sourced from `CORBITS_TOOL_PACKAGE_DIRS` - * (`packages/tool-registry-publish/src/registry.ts`) — the same list the - * publish step walks, so this check and the publisher agree on what a - * "tool package" is. Every other workspace package is resolved by path, - * not by version, and is deliberately out of scope. + * The package directories (repo-root-relative) the hub publishes to its + * tool registry and that workflows pin by `{ name, version }`. Sourced + * from `CORBITS_TOOL_PACKAGE_DIRS` (`packages/tool-registry-publish/src/ + * registry.ts`) — the same list the publish step walks, so this check + * and the publisher agree on what a "tool package" is. Every other + * workspace package is resolved by path, not by version, and is + * deliberately out of scope. */ const TOOL_PACKAGE_REGISTRY = "packages/tool-registry-publish/src/registry.ts"; export function readToolPackageNames(source: string): string[] { const block = source.match(/CORBITS_TOOL_PACKAGE_DIRS[^=]*=\s*\[([\s\S]*?)\]/); if (block === null) return []; - return [...(block[1] ?? "").matchAll(/\.\.\/\.\.\/([a-z0-9-]+)/g)] + return [...(block[1] ?? "").matchAll(/\.\.\/\.\.\/\.\.\/([a-z0-9/-]+)/g)] .map((match) => match[1] ?? "") .filter((name) => name.length > 0) .sort(); @@ -105,21 +104,20 @@ export function resolveBaseRef(root: string): string | undefined { } /** - * The package names whose non-test `src/` files appear in a changed-file - * list. Test files are excluded: they ship no source an agent resolves. + * The package directories (repo-root-relative) whose non-test `src/` + * files appear in a changed-file list. Test files are excluded: they + * ship no source an agent resolves. */ export function packagesWithChangedSource( changedFiles: readonly string[], toolPackages: readonly string[], ): string[] { - const isToolPackage = new Set(toolPackages); const touched = new Set(); for (const file of changedFiles) { - const [root, name, dir] = file.split("/"); - if (root !== PACKAGE_ROOT || name === undefined || dir !== "src") continue; if (file.endsWith(".test.ts") || file.endsWith(".test.tsx")) continue; - if (!isToolPackage.has(name)) continue; - touched.add(name); + for (const dir of toolPackages) { + if (file.startsWith(`${dir}/src/`)) touched.add(dir); + } } return [...touched].sort(); } @@ -134,7 +132,7 @@ export function auditFreshness(changes: readonly PackageChange[]): CheckReport { if (change.baseVersion === undefined) continue; if (change.headVersion !== change.baseVersion) continue; report.violations.push( - `packages/${change.name}: src/ changed but package.json stayed at ` + + `${change.name}: src/ changed but package.json stayed at ` + `${change.baseVersion}. Tool resolution keys on name@version, so new ` + `source under an unchanged version never reaches a running or ` + `freshly launched agent and the hub rejects it at publish time. ` + @@ -145,14 +143,14 @@ export function auditFreshness(changes: readonly PackageChange[]): CheckReport { return report; } -function versionAtRef(root: string, ref: string, name: string): string | undefined { - const shown = git(root, ["show", `${ref}:${PACKAGE_ROOT}/${name}/package.json`]); +function versionAtRef(root: string, ref: string, dir: string): string | undefined { + const shown = git(root, ["show", `${ref}:${dir}/package.json`]); if (shown === undefined) return undefined; return (JSON.parse(shown) as { version?: string }).version; } -async function versionAtHead(root: string, name: string): Promise { - const manifest = Bun.file(path.join(root, PACKAGE_ROOT, name, "package.json")); +async function versionAtHead(root: string, dir: string): Promise { + const manifest = Bun.file(path.join(root, dir, "package.json")); if (!(await manifest.exists())) return undefined; return ((await manifest.json()) as { version?: string }).version; } @@ -164,20 +162,20 @@ async function main(): Promise { const toolPackages = (await registry.exists()) ? readToolPackageNames(await registry.text()) : []; const diff = baseRef === undefined ? undefined : git(root, ["diff", "--name-only", `${baseRef}...HEAD`]); - const names = packagesWithChangedSource((diff ?? "").split("\n"), toolPackages); + const dirs = packagesWithChangedSource((diff ?? "").split("\n"), toolPackages); const changes: PackageChange[] = []; - for (const name of names) { + for (const dir of dirs) { changes.push({ - name, - baseVersion: baseRef === undefined ? undefined : versionAtRef(root, baseRef, name), - headVersion: await versionAtHead(root, name), + name: dir, + baseVersion: baseRef === undefined ? undefined : versionAtRef(root, baseRef, dir), + headVersion: await versionAtHead(root, dir), }); } const report = auditFreshness(changes); try { await checkToolPackageFreshness({ - packageDirs: toolPackages.map((name) => path.join(root, PACKAGE_ROOT, name)), + packageDirs: toolPackages.map((dir) => path.join(root, dir)), }); } catch (error) { if (!(error instanceof StaleToolPackageError)) throw error; diff --git a/scripts/checks/tool-package-pins.ts b/scripts/checks/tool-package-pins.ts index 278913ef9c..5a59974a3d 100644 --- a/scripts/checks/tool-package-pins.ts +++ b/scripts/checks/tool-package-pins.ts @@ -4,7 +4,7 @@ // Tool resolution keys on `name@version`, and every pin is hand-maintained // (CL-6437): nothing ripples a version bump to the workflows that pin it. // PR #165 bumped `@corbits/connections-tools` to 0.0.5 and left -// `workflows/assistant/src/index.ts` pinning 0.0.4, breaking that +// `agents/assistant/src/index.ts` pinning 0.0.4, breaking that // workflow's deploy; the same drift hit `@corbits/mcp-tools` during // CL-6456. Nothing caught either at merge time. This check is the static, // cheap half of that class (CL-6497): every `{ name: "@corbits/x", @@ -21,7 +21,7 @@ import { Glob } from "bun"; import path from "node:path"; import { emptyReport, reportAndExit, rootFromArgs, type CheckReport } from "./lib/repo"; -const SCAN_DIRS = ["apps", "packages", "tools", "workflows"]; +const SCAN_DIRS = ["apps", "packages", "tools", "agents", "skills", "workflows"]; const EXCLUDED_SEGMENTS = ["node_modules", "dist", ".worktrees", "vendor"]; @@ -100,7 +100,7 @@ export function auditToolPackagePins( async function manifestVersions(root: string): Promise> { const versions = new Map(); - const glob = new Glob("{apps,packages,tools,workflows}/*/package.json"); + const glob = new Glob("{apps,packages,tools,agents,skills,workflows}/*/package.json"); for await (const relPath of glob.scan(root)) { if (relPath.includes("node_modules/")) continue; const manifest = (await Bun.file(path.join(root, relPath)).json()) as { @@ -132,7 +132,7 @@ async function addVendoredDependencyVersions( root: string, versions: Map, ): Promise { - const glob = new Glob("{apps,packages,tools,workflows}/*/package.json"); + const glob = new Glob("{apps,packages,tools,agents,skills,workflows}/*/package.json"); const corbitsDepNames = new Set(); for await (const relPath of glob.scan(root)) { if (relPath.includes("node_modules/")) continue; @@ -167,7 +167,15 @@ async function addVendoredDependencyVersions( * falls back to the root's. */ async function installedVersion(root: string, name: string): Promise { - const candidateDirs = [".", "apps/*", "packages/*", "tools/*", "workflows/*"]; + const candidateDirs = [ + ".", + "apps/*", + "packages/*", + "tools/*", + "agents/*", + "skills/*", + "workflows/*", + ]; for (const dir of candidateDirs) { const glob = new Glob(`${dir}/node_modules/${name}/package.json`); for await (const relPath of glob.scan(root)) { diff --git a/scripts/generate-tsconfig-references.ts b/scripts/generate-tsconfig-references.ts index d6105f2e6d..ce6c5170c0 100644 --- a/scripts/generate-tsconfig-references.ts +++ b/scripts/generate-tsconfig-references.ts @@ -33,7 +33,15 @@ import { existsSync } from "node:fs"; import { relative } from "node:path"; import { Glob } from "bun"; -const WORKSPACE_ROOTS = ["apps", "packages", "tools", "workflows", "vendor/intx"] as const; +const WORKSPACE_ROOTS = [ + "apps", + "packages", + "tools", + "agents", + "skills", + "workflows", + "vendor/intx", +] as const; const SRC_CONFIG_NAME = "tsconfig.src.json"; diff --git a/scripts/run-all.ts b/scripts/run-all.ts index 05b4c97de5..1a53b276b6 100644 --- a/scripts/run-all.ts +++ b/scripts/run-all.ts @@ -43,6 +43,8 @@ const WORKSPACE_ROOTS = [ "apps/*/package.json", "packages/*/package.json", "tools/*/package.json", + "agents/*/package.json", + "skills/*/package.json", "workflows/*/package.json", "vendor/intx/*/package.json", ]; diff --git a/packages/catalog-tools/LICENSE b/skills/skills/LICENSE similarity index 100% rename from packages/catalog-tools/LICENSE rename to skills/skills/LICENSE diff --git a/packages/skills/README.md b/skills/skills/README.md similarity index 98% rename from packages/skills/README.md rename to skills/skills/README.md index c92aea63ce..01e812181c 100644 --- a/packages/skills/README.md +++ b/skills/skills/README.md @@ -34,7 +34,7 @@ convention, with `@intx/hub-sessions` for session-authenticated calls. ## Running tests ``` -cd packages/skills && bun test +cd skills/skills && bun test ``` No drizzle suite in this package's `test/` directory and no migrations diff --git a/packages/skills/package.json b/skills/skills/package.json similarity index 71% rename from packages/skills/package.json rename to skills/skills/package.json index c0e2444aee..0616ab7d2f 100644 --- a/packages/skills/package.json +++ b/skills/skills/package.json @@ -1,13 +1,25 @@ { "name": "@corbits/skills", "version": "0.0.2", - "private": true, "description": "SKILL.md authoring (parse/build against native kind:\"skill\" hub assets) and the pinned-skills prompt index. Storage, listing, and access to skill assets themselves are native Interchange asset routes, not this package.", "license": "LGPL-2.1-or-later", + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "skills/skills" + }, + "files": [ + "src", + "LICENSE", + "README.md" + ], "type": "module", "exports": { ".": "./src/index.ts" }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" diff --git a/packages/skills/src/index.ts b/skills/skills/src/index.ts similarity index 100% rename from packages/skills/src/index.ts rename to skills/skills/src/index.ts diff --git a/packages/skills/src/prompt.test.ts b/skills/skills/src/prompt.test.ts similarity index 100% rename from packages/skills/src/prompt.test.ts rename to skills/skills/src/prompt.test.ts diff --git a/packages/skills/src/prompt.ts b/skills/skills/src/prompt.ts similarity index 100% rename from packages/skills/src/prompt.ts rename to skills/skills/src/prompt.ts diff --git a/packages/skills/src/skill-md.test.ts b/skills/skills/src/skill-md.test.ts similarity index 100% rename from packages/skills/src/skill-md.test.ts rename to skills/skills/src/skill-md.test.ts diff --git a/packages/skills/src/skill-md.ts b/skills/skills/src/skill-md.ts similarity index 100% rename from packages/skills/src/skill-md.ts rename to skills/skills/src/skill-md.ts diff --git a/packages/agent-directory-tools/tsconfig.json b/skills/skills/tsconfig.json similarity index 100% rename from packages/agent-directory-tools/tsconfig.json rename to skills/skills/tsconfig.json diff --git a/packages/granola-tools/tsconfig.src.json b/skills/skills/tsconfig.src.json similarity index 100% rename from packages/granola-tools/tsconfig.src.json rename to skills/skills/tsconfig.src.json diff --git a/tools/.gitkeep b/tools/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/connections-tools/LICENSE b/tools/access/LICENSE similarity index 100% rename from packages/connections-tools/LICENSE rename to tools/access/LICENSE diff --git a/packages/access-tools/README.md b/tools/access/README.md similarity index 100% rename from packages/access-tools/README.md rename to tools/access/README.md diff --git a/packages/access-tools/package.json b/tools/access/package.json similarity index 96% rename from packages/access-tools/package.json rename to tools/access/package.json index 0d36a13cdd..49fa026c0d 100644 --- a/packages/access-tools/package.json +++ b/tools/access/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/access-tools" + "directory": "tools/access" }, "files": [ "src", diff --git a/packages/access-tools/src/client.test.ts b/tools/access/src/client.test.ts similarity index 100% rename from packages/access-tools/src/client.test.ts rename to tools/access/src/client.test.ts diff --git a/packages/access-tools/src/client.ts b/tools/access/src/client.ts similarity index 100% rename from packages/access-tools/src/client.ts rename to tools/access/src/client.ts diff --git a/packages/access-tools/src/index.ts b/tools/access/src/index.ts similarity index 100% rename from packages/access-tools/src/index.ts rename to tools/access/src/index.ts diff --git a/packages/access-tools/src/tool.test.ts b/tools/access/src/tool.test.ts similarity index 100% rename from packages/access-tools/src/tool.test.ts rename to tools/access/src/tool.test.ts diff --git a/packages/access-tools/src/tool.ts b/tools/access/src/tool.ts similarity index 100% rename from packages/access-tools/src/tool.ts rename to tools/access/src/tool.ts diff --git a/packages/capability-tools/tsconfig.json b/tools/access/tsconfig.json similarity index 100% rename from packages/capability-tools/tsconfig.json rename to tools/access/tsconfig.json diff --git a/packages/access-tools/tsconfig.src.json b/tools/access/tsconfig.src.json similarity index 100% rename from packages/access-tools/tsconfig.src.json rename to tools/access/tsconfig.src.json diff --git a/packages/github-tools/LICENSE b/tools/agent-directory/LICENSE similarity index 100% rename from packages/github-tools/LICENSE rename to tools/agent-directory/LICENSE diff --git a/packages/agent-directory-tools/package.json b/tools/agent-directory/package.json similarity index 95% rename from packages/agent-directory-tools/package.json rename to tools/agent-directory/package.json index 15905ee743..679e77016a 100644 --- a/packages/agent-directory-tools/package.json +++ b/tools/agent-directory/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/agent-directory-tools" + "directory": "tools/agent-directory" }, "files": [ "src", diff --git a/packages/agent-directory-tools/src/client.test.ts b/tools/agent-directory/src/client.test.ts similarity index 100% rename from packages/agent-directory-tools/src/client.test.ts rename to tools/agent-directory/src/client.test.ts diff --git a/packages/agent-directory-tools/src/client.ts b/tools/agent-directory/src/client.ts similarity index 100% rename from packages/agent-directory-tools/src/client.ts rename to tools/agent-directory/src/client.ts diff --git a/packages/agent-directory-tools/src/index.ts b/tools/agent-directory/src/index.ts similarity index 100% rename from packages/agent-directory-tools/src/index.ts rename to tools/agent-directory/src/index.ts diff --git a/packages/agent-directory-tools/src/tool.test.ts b/tools/agent-directory/src/tool.test.ts similarity index 100% rename from packages/agent-directory-tools/src/tool.test.ts rename to tools/agent-directory/src/tool.test.ts diff --git a/packages/agent-directory-tools/src/tool.ts b/tools/agent-directory/src/tool.ts similarity index 100% rename from packages/agent-directory-tools/src/tool.ts rename to tools/agent-directory/src/tool.ts diff --git a/packages/catalog-tools/tsconfig.json b/tools/agent-directory/tsconfig.json similarity index 100% rename from packages/catalog-tools/tsconfig.json rename to tools/agent-directory/tsconfig.json diff --git a/packages/interaction-tools/tsconfig.src.json b/tools/agent-directory/tsconfig.src.json similarity index 100% rename from packages/interaction-tools/tsconfig.src.json rename to tools/agent-directory/tsconfig.src.json diff --git a/packages/granola-tools/LICENSE b/tools/capability/LICENSE similarity index 100% rename from packages/granola-tools/LICENSE rename to tools/capability/LICENSE diff --git a/packages/capability-tools/README.md b/tools/capability/README.md similarity index 98% rename from packages/capability-tools/README.md rename to tools/capability/README.md index a25c7819d4..621bad4330 100644 --- a/packages/capability-tools/README.md +++ b/tools/capability/README.md @@ -73,7 +73,7 @@ const agent = defineAgent({ ## Running tests ```sh -cd packages/capability-tools && bun test +cd tools/capability && bun test ``` Tests run against a mocked fetch/`WorkflowCapabilityEnv`; no `DATABASE_URL` diff --git a/packages/capability-tools/package.json b/tools/capability/package.json similarity index 95% rename from packages/capability-tools/package.json rename to tools/capability/package.json index 3f30af3002..e28c42f1a8 100644 --- a/packages/capability-tools/package.json +++ b/tools/capability/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/capability-tools" + "directory": "tools/capability" }, "files": [ "src", diff --git a/packages/capability-tools/src/client.test.ts b/tools/capability/src/client.test.ts similarity index 100% rename from packages/capability-tools/src/client.test.ts rename to tools/capability/src/client.test.ts diff --git a/packages/capability-tools/src/client.ts b/tools/capability/src/client.ts similarity index 100% rename from packages/capability-tools/src/client.ts rename to tools/capability/src/client.ts diff --git a/packages/capability-tools/src/index.ts b/tools/capability/src/index.ts similarity index 100% rename from packages/capability-tools/src/index.ts rename to tools/capability/src/index.ts diff --git a/packages/capability-tools/src/run-bearer.ts b/tools/capability/src/run-bearer.ts similarity index 100% rename from packages/capability-tools/src/run-bearer.ts rename to tools/capability/src/run-bearer.ts diff --git a/packages/capability-tools/src/tool.test.ts b/tools/capability/src/tool.test.ts similarity index 100% rename from packages/capability-tools/src/tool.test.ts rename to tools/capability/src/tool.test.ts diff --git a/packages/capability-tools/src/tool.ts b/tools/capability/src/tool.ts similarity index 100% rename from packages/capability-tools/src/tool.ts rename to tools/capability/src/tool.ts diff --git a/packages/connections-tools/tsconfig.json b/tools/capability/tsconfig.json similarity index 100% rename from packages/connections-tools/tsconfig.json rename to tools/capability/tsconfig.json diff --git a/packages/capability-tools/tsconfig.src.json b/tools/capability/tsconfig.src.json similarity index 100% rename from packages/capability-tools/tsconfig.src.json rename to tools/capability/tsconfig.src.json diff --git a/packages/interaction-tools/LICENSE b/tools/catalog/LICENSE similarity index 100% rename from packages/interaction-tools/LICENSE rename to tools/catalog/LICENSE diff --git a/packages/catalog-tools/README.md b/tools/catalog/README.md similarity index 100% rename from packages/catalog-tools/README.md rename to tools/catalog/README.md diff --git a/packages/catalog-tools/package.json b/tools/catalog/package.json similarity index 95% rename from packages/catalog-tools/package.json rename to tools/catalog/package.json index e968479fdc..4f2ee5c461 100644 --- a/packages/catalog-tools/package.json +++ b/tools/catalog/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/catalog-tools" + "directory": "tools/catalog" }, "files": [ "src", diff --git a/packages/catalog-tools/src/chain.ts b/tools/catalog/src/chain.ts similarity index 100% rename from packages/catalog-tools/src/chain.ts rename to tools/catalog/src/chain.ts diff --git a/packages/catalog-tools/src/client.test.ts b/tools/catalog/src/client.test.ts similarity index 100% rename from packages/catalog-tools/src/client.test.ts rename to tools/catalog/src/client.test.ts diff --git a/packages/catalog-tools/src/client.ts b/tools/catalog/src/client.ts similarity index 100% rename from packages/catalog-tools/src/client.ts rename to tools/catalog/src/client.ts diff --git a/packages/catalog-tools/src/index.ts b/tools/catalog/src/index.ts similarity index 100% rename from packages/catalog-tools/src/index.ts rename to tools/catalog/src/index.ts diff --git a/packages/catalog-tools/src/tool.test.ts b/tools/catalog/src/tool.test.ts similarity index 100% rename from packages/catalog-tools/src/tool.test.ts rename to tools/catalog/src/tool.test.ts diff --git a/packages/catalog-tools/src/tool.ts b/tools/catalog/src/tool.ts similarity index 100% rename from packages/catalog-tools/src/tool.ts rename to tools/catalog/src/tool.ts diff --git a/packages/github-tools/tsconfig.json b/tools/catalog/tsconfig.json similarity index 100% rename from packages/github-tools/tsconfig.json rename to tools/catalog/tsconfig.json diff --git a/packages/linear-tools/tsconfig.src.json b/tools/catalog/tsconfig.src.json similarity index 100% rename from packages/linear-tools/tsconfig.src.json rename to tools/catalog/tsconfig.src.json diff --git a/packages/jimmy-agent/LICENSE b/tools/connections/LICENSE similarity index 100% rename from packages/jimmy-agent/LICENSE rename to tools/connections/LICENSE diff --git a/packages/connections-tools/README.md b/tools/connections/README.md similarity index 100% rename from packages/connections-tools/README.md rename to tools/connections/README.md diff --git a/packages/connections-tools/package.json b/tools/connections/package.json similarity index 95% rename from packages/connections-tools/package.json rename to tools/connections/package.json index 50f1f063b0..f5f5877cf6 100644 --- a/packages/connections-tools/package.json +++ b/tools/connections/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/connections-tools" + "directory": "tools/connections" }, "files": [ "src", diff --git a/packages/connections-tools/src/client.test.ts b/tools/connections/src/client.test.ts similarity index 100% rename from packages/connections-tools/src/client.test.ts rename to tools/connections/src/client.test.ts diff --git a/packages/connections-tools/src/client.ts b/tools/connections/src/client.ts similarity index 100% rename from packages/connections-tools/src/client.ts rename to tools/connections/src/client.ts diff --git a/packages/connections-tools/src/index.ts b/tools/connections/src/index.ts similarity index 100% rename from packages/connections-tools/src/index.ts rename to tools/connections/src/index.ts diff --git a/packages/connections-tools/src/registry-shape.ts b/tools/connections/src/registry-shape.ts similarity index 100% rename from packages/connections-tools/src/registry-shape.ts rename to tools/connections/src/registry-shape.ts diff --git a/packages/connections-tools/src/tool.test.ts b/tools/connections/src/tool.test.ts similarity index 100% rename from packages/connections-tools/src/tool.test.ts rename to tools/connections/src/tool.test.ts diff --git a/packages/connections-tools/src/tool.ts b/tools/connections/src/tool.ts similarity index 100% rename from packages/connections-tools/src/tool.ts rename to tools/connections/src/tool.ts diff --git a/packages/interaction-tools/tsconfig.json b/tools/connections/tsconfig.json similarity index 100% rename from packages/interaction-tools/tsconfig.json rename to tools/connections/tsconfig.json diff --git a/packages/connections-tools/tsconfig.src.json b/tools/connections/tsconfig.src.json similarity index 100% rename from packages/connections-tools/tsconfig.src.json rename to tools/connections/tsconfig.src.json diff --git a/packages/linear-tools/LICENSE b/tools/github/LICENSE similarity index 100% rename from packages/linear-tools/LICENSE rename to tools/github/LICENSE diff --git a/packages/github-tools/README.md b/tools/github/README.md similarity index 98% rename from packages/github-tools/README.md rename to tools/github/README.md index e9106fc4bd..3d4dcf79b3 100644 --- a/packages/github-tools/README.md +++ b/tools/github/README.md @@ -54,7 +54,7 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/github-tools && bun test +cd tools/github && bun test ``` No live database or real credentials required. diff --git a/packages/github-tools/package.json b/tools/github/package.json similarity index 95% rename from packages/github-tools/package.json rename to tools/github/package.json index 07c852ce14..9bb7d55039 100644 --- a/packages/github-tools/package.json +++ b/tools/github/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/github-tools" + "directory": "tools/github" }, "files": [ "src", diff --git a/packages/github-tools/src/client.test.ts b/tools/github/src/client.test.ts similarity index 100% rename from packages/github-tools/src/client.test.ts rename to tools/github/src/client.test.ts diff --git a/packages/github-tools/src/client.ts b/tools/github/src/client.ts similarity index 100% rename from packages/github-tools/src/client.ts rename to tools/github/src/client.ts diff --git a/packages/github-tools/src/index.ts b/tools/github/src/index.ts similarity index 100% rename from packages/github-tools/src/index.ts rename to tools/github/src/index.ts diff --git a/packages/github-tools/src/manifest.test.ts b/tools/github/src/manifest.test.ts similarity index 100% rename from packages/github-tools/src/manifest.test.ts rename to tools/github/src/manifest.test.ts diff --git a/packages/github-tools/src/pull-request-tools.test.ts b/tools/github/src/pull-request-tools.test.ts similarity index 100% rename from packages/github-tools/src/pull-request-tools.test.ts rename to tools/github/src/pull-request-tools.test.ts diff --git a/packages/github-tools/src/pull-request-tools.ts b/tools/github/src/pull-request-tools.ts similarity index 100% rename from packages/github-tools/src/pull-request-tools.ts rename to tools/github/src/pull-request-tools.ts diff --git a/packages/github-tools/src/pull-requests.test.ts b/tools/github/src/pull-requests.test.ts similarity index 100% rename from packages/github-tools/src/pull-requests.test.ts rename to tools/github/src/pull-requests.test.ts diff --git a/packages/github-tools/src/pull-requests.ts b/tools/github/src/pull-requests.ts similarity index 100% rename from packages/github-tools/src/pull-requests.ts rename to tools/github/src/pull-requests.ts diff --git a/packages/github-tools/src/repos.test.ts b/tools/github/src/repos.test.ts similarity index 100% rename from packages/github-tools/src/repos.test.ts rename to tools/github/src/repos.test.ts diff --git a/packages/github-tools/src/repos.ts b/tools/github/src/repos.ts similarity index 100% rename from packages/github-tools/src/repos.ts rename to tools/github/src/repos.ts diff --git a/packages/github-tools/src/tool.test.ts b/tools/github/src/tool.test.ts similarity index 100% rename from packages/github-tools/src/tool.test.ts rename to tools/github/src/tool.test.ts diff --git a/packages/github-tools/src/tool.ts b/tools/github/src/tool.ts similarity index 100% rename from packages/github-tools/src/tool.ts rename to tools/github/src/tool.ts diff --git a/packages/manus-tools/tsconfig.json b/tools/github/tsconfig.json similarity index 100% rename from packages/manus-tools/tsconfig.json rename to tools/github/tsconfig.json diff --git a/packages/manus-tools/tsconfig.src.json b/tools/github/tsconfig.src.json similarity index 100% rename from packages/manus-tools/tsconfig.src.json rename to tools/github/tsconfig.src.json diff --git a/packages/manus-tools/LICENSE b/tools/granola/LICENSE similarity index 100% rename from packages/manus-tools/LICENSE rename to tools/granola/LICENSE diff --git a/packages/granola-tools/README.md b/tools/granola/README.md similarity index 98% rename from packages/granola-tools/README.md rename to tools/granola/README.md index b462e8b2ae..0f544cceed 100644 --- a/packages/granola-tools/README.md +++ b/tools/granola/README.md @@ -56,7 +56,7 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/granola-tools && bun test +cd tools/granola && bun test ``` `test/credential-delivery.drizzle.test.ts` and diff --git a/packages/granola-tools/package.json b/tools/granola/package.json similarity index 96% rename from packages/granola-tools/package.json rename to tools/granola/package.json index 1a017345ae..0601ae60e3 100644 --- a/packages/granola-tools/package.json +++ b/tools/granola/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/granola-tools" + "directory": "tools/granola" }, "files": [ "src", diff --git a/packages/granola-tools/src/client.test.ts b/tools/granola/src/client.test.ts similarity index 100% rename from packages/granola-tools/src/client.test.ts rename to tools/granola/src/client.test.ts diff --git a/packages/granola-tools/src/client.ts b/tools/granola/src/client.ts similarity index 100% rename from packages/granola-tools/src/client.ts rename to tools/granola/src/client.ts diff --git a/packages/granola-tools/src/index.ts b/tools/granola/src/index.ts similarity index 100% rename from packages/granola-tools/src/index.ts rename to tools/granola/src/index.ts diff --git a/packages/granola-tools/src/manifest.test.ts b/tools/granola/src/manifest.test.ts similarity index 100% rename from packages/granola-tools/src/manifest.test.ts rename to tools/granola/src/manifest.test.ts diff --git a/packages/granola-tools/src/tool.test.ts b/tools/granola/src/tool.test.ts similarity index 100% rename from packages/granola-tools/src/tool.test.ts rename to tools/granola/src/tool.test.ts diff --git a/packages/granola-tools/src/tool.ts b/tools/granola/src/tool.ts similarity index 100% rename from packages/granola-tools/src/tool.ts rename to tools/granola/src/tool.ts diff --git a/packages/granola-tools/test/credential-delivery.drizzle.test.ts b/tools/granola/test/credential-delivery.drizzle.test.ts similarity index 100% rename from packages/granola-tools/test/credential-delivery.drizzle.test.ts rename to tools/granola/test/credential-delivery.drizzle.test.ts diff --git a/packages/granola-tools/test/credential-wiring-e2e.drizzle.test.ts b/tools/granola/test/credential-wiring-e2e.drizzle.test.ts similarity index 100% rename from packages/granola-tools/test/credential-wiring-e2e.drizzle.test.ts rename to tools/granola/test/credential-wiring-e2e.drizzle.test.ts diff --git a/packages/mcp-tools/tsconfig.json b/tools/granola/tsconfig.json similarity index 100% rename from packages/mcp-tools/tsconfig.json rename to tools/granola/tsconfig.json diff --git a/packages/mcp-tools/tsconfig.src.json b/tools/granola/tsconfig.src.json similarity index 100% rename from packages/mcp-tools/tsconfig.src.json rename to tools/granola/tsconfig.src.json diff --git a/packages/mcp-tools/LICENSE b/tools/interaction/LICENSE similarity index 100% rename from packages/mcp-tools/LICENSE rename to tools/interaction/LICENSE diff --git a/packages/interaction-tools/README.md b/tools/interaction/README.md similarity index 100% rename from packages/interaction-tools/README.md rename to tools/interaction/README.md diff --git a/packages/interaction-tools/package.json b/tools/interaction/package.json similarity index 95% rename from packages/interaction-tools/package.json rename to tools/interaction/package.json index 2f4daef054..efac3b5d98 100644 --- a/packages/interaction-tools/package.json +++ b/tools/interaction/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/interaction-tools" + "directory": "tools/interaction" }, "files": [ "src", diff --git a/packages/interaction-tools/src/client.test.ts b/tools/interaction/src/client.test.ts similarity index 100% rename from packages/interaction-tools/src/client.test.ts rename to tools/interaction/src/client.test.ts diff --git a/packages/interaction-tools/src/client.ts b/tools/interaction/src/client.ts similarity index 100% rename from packages/interaction-tools/src/client.ts rename to tools/interaction/src/client.ts diff --git a/packages/interaction-tools/src/index.ts b/tools/interaction/src/index.ts similarity index 100% rename from packages/interaction-tools/src/index.ts rename to tools/interaction/src/index.ts diff --git a/packages/interaction-tools/src/tool.test.ts b/tools/interaction/src/tool.test.ts similarity index 100% rename from packages/interaction-tools/src/tool.test.ts rename to tools/interaction/src/tool.test.ts diff --git a/packages/interaction-tools/src/tool.ts b/tools/interaction/src/tool.ts similarity index 100% rename from packages/interaction-tools/src/tool.ts rename to tools/interaction/src/tool.ts diff --git a/packages/reddit-tools/tsconfig.json b/tools/interaction/tsconfig.json similarity index 100% rename from packages/reddit-tools/tsconfig.json rename to tools/interaction/tsconfig.json diff --git a/packages/reddit-tools/tsconfig.src.json b/tools/interaction/tsconfig.src.json similarity index 100% rename from packages/reddit-tools/tsconfig.src.json rename to tools/interaction/tsconfig.src.json diff --git a/packages/reddit-tools/LICENSE b/tools/linear/LICENSE similarity index 100% rename from packages/reddit-tools/LICENSE rename to tools/linear/LICENSE diff --git a/packages/linear-tools/README.md b/tools/linear/README.md similarity index 98% rename from packages/linear-tools/README.md rename to tools/linear/README.md index 8352d44b00..478af52c48 100644 --- a/packages/linear-tools/README.md +++ b/tools/linear/README.md @@ -59,7 +59,7 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/linear-tools && bun test +cd tools/linear && bun test ``` `test/credential-delivery.drizzle.test.ts` and diff --git a/packages/linear-tools/package.json b/tools/linear/package.json similarity index 96% rename from packages/linear-tools/package.json rename to tools/linear/package.json index 43179ad0f6..0a54b9abde 100644 --- a/packages/linear-tools/package.json +++ b/tools/linear/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/linear-tools" + "directory": "tools/linear" }, "files": [ "src", diff --git a/packages/linear-tools/src/client.test.ts b/tools/linear/src/client.test.ts similarity index 100% rename from packages/linear-tools/src/client.test.ts rename to tools/linear/src/client.test.ts diff --git a/packages/linear-tools/src/client.ts b/tools/linear/src/client.ts similarity index 100% rename from packages/linear-tools/src/client.ts rename to tools/linear/src/client.ts diff --git a/packages/linear-tools/src/index.ts b/tools/linear/src/index.ts similarity index 100% rename from packages/linear-tools/src/index.ts rename to tools/linear/src/index.ts diff --git a/packages/linear-tools/src/manifest.test.ts b/tools/linear/src/manifest.test.ts similarity index 100% rename from packages/linear-tools/src/manifest.test.ts rename to tools/linear/src/manifest.test.ts diff --git a/packages/linear-tools/src/tool.test.ts b/tools/linear/src/tool.test.ts similarity index 100% rename from packages/linear-tools/src/tool.test.ts rename to tools/linear/src/tool.test.ts diff --git a/packages/linear-tools/src/tool.ts b/tools/linear/src/tool.ts similarity index 100% rename from packages/linear-tools/src/tool.ts rename to tools/linear/src/tool.ts diff --git a/packages/linear-tools/test/credential-delivery.drizzle.test.ts b/tools/linear/test/credential-delivery.drizzle.test.ts similarity index 100% rename from packages/linear-tools/test/credential-delivery.drizzle.test.ts rename to tools/linear/test/credential-delivery.drizzle.test.ts diff --git a/packages/linear-tools/test/credential-wiring-e2e.drizzle.test.ts b/tools/linear/test/credential-wiring-e2e.drizzle.test.ts similarity index 100% rename from packages/linear-tools/test/credential-wiring-e2e.drizzle.test.ts rename to tools/linear/test/credential-wiring-e2e.drizzle.test.ts diff --git a/packages/linear-tools/test/linear-raw-authorization-regression.test.ts b/tools/linear/test/linear-raw-authorization-regression.test.ts similarity index 100% rename from packages/linear-tools/test/linear-raw-authorization-regression.test.ts rename to tools/linear/test/linear-raw-authorization-regression.test.ts diff --git a/workflows/assistant/tsconfig.json b/tools/linear/tsconfig.json similarity index 100% rename from workflows/assistant/tsconfig.json rename to tools/linear/tsconfig.json diff --git a/packages/skills-tools/tsconfig.src.json b/tools/linear/tsconfig.src.json similarity index 100% rename from packages/skills-tools/tsconfig.src.json rename to tools/linear/tsconfig.src.json diff --git a/packages/scout-agent/LICENSE b/tools/manus/LICENSE similarity index 100% rename from packages/scout-agent/LICENSE rename to tools/manus/LICENSE diff --git a/packages/manus-tools/README.md b/tools/manus/README.md similarity index 97% rename from packages/manus-tools/README.md rename to tools/manus/README.md index 219937af3f..f30920da89 100644 --- a/packages/manus-tools/README.md +++ b/tools/manus/README.md @@ -36,5 +36,5 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/manus-tools && bun test +cd tools/manus && bun test ``` diff --git a/packages/manus-tools/package.json b/tools/manus/package.json similarity index 95% rename from packages/manus-tools/package.json rename to tools/manus/package.json index e3e31e1a30..f5e37dae8d 100644 --- a/packages/manus-tools/package.json +++ b/tools/manus/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/manus-tools" + "directory": "tools/manus" }, "files": [ "src", diff --git a/packages/manus-tools/src/client.test.ts b/tools/manus/src/client.test.ts similarity index 100% rename from packages/manus-tools/src/client.test.ts rename to tools/manus/src/client.test.ts diff --git a/packages/manus-tools/src/client.ts b/tools/manus/src/client.ts similarity index 100% rename from packages/manus-tools/src/client.ts rename to tools/manus/src/client.ts diff --git a/packages/manus-tools/src/index.ts b/tools/manus/src/index.ts similarity index 100% rename from packages/manus-tools/src/index.ts rename to tools/manus/src/index.ts diff --git a/packages/manus-tools/src/manifest.test.ts b/tools/manus/src/manifest.test.ts similarity index 100% rename from packages/manus-tools/src/manifest.test.ts rename to tools/manus/src/manifest.test.ts diff --git a/packages/manus-tools/src/tool.test.ts b/tools/manus/src/tool.test.ts similarity index 100% rename from packages/manus-tools/src/tool.test.ts rename to tools/manus/src/tool.test.ts diff --git a/packages/manus-tools/src/tool.ts b/tools/manus/src/tool.ts similarity index 100% rename from packages/manus-tools/src/tool.ts rename to tools/manus/src/tool.ts diff --git a/packages/skills-tools/tsconfig.json b/tools/manus/tsconfig.json similarity index 100% rename from packages/skills-tools/tsconfig.json rename to tools/manus/tsconfig.json diff --git a/packages/skills/tsconfig.src.json b/tools/manus/tsconfig.src.json similarity index 100% rename from packages/skills/tsconfig.src.json rename to tools/manus/tsconfig.src.json diff --git a/packages/skills-tools/LICENSE b/tools/mcp/LICENSE similarity index 100% rename from packages/skills-tools/LICENSE rename to tools/mcp/LICENSE diff --git a/packages/mcp-tools/README.md b/tools/mcp/README.md similarity index 100% rename from packages/mcp-tools/README.md rename to tools/mcp/README.md diff --git a/packages/mcp-tools/package.json b/tools/mcp/package.json similarity index 95% rename from packages/mcp-tools/package.json rename to tools/mcp/package.json index ccfcdd1bf4..7f8f88f53d 100644 --- a/packages/mcp-tools/package.json +++ b/tools/mcp/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/mcp-tools" + "directory": "tools/mcp" }, "files": [ "src", diff --git a/packages/mcp-tools/src/allowance.test.ts b/tools/mcp/src/allowance.test.ts similarity index 100% rename from packages/mcp-tools/src/allowance.test.ts rename to tools/mcp/src/allowance.test.ts diff --git a/packages/mcp-tools/src/allowance.ts b/tools/mcp/src/allowance.ts similarity index 100% rename from packages/mcp-tools/src/allowance.ts rename to tools/mcp/src/allowance.ts diff --git a/packages/mcp-tools/src/index.ts b/tools/mcp/src/index.ts similarity index 100% rename from packages/mcp-tools/src/index.ts rename to tools/mcp/src/index.ts diff --git a/packages/mcp-tools/src/manifest.test.ts b/tools/mcp/src/manifest.test.ts similarity index 100% rename from packages/mcp-tools/src/manifest.test.ts rename to tools/mcp/src/manifest.test.ts diff --git a/packages/mcp-tools/src/mcp-client.test.ts b/tools/mcp/src/mcp-client.test.ts similarity index 100% rename from packages/mcp-tools/src/mcp-client.test.ts rename to tools/mcp/src/mcp-client.test.ts diff --git a/packages/mcp-tools/src/mcp-client.ts b/tools/mcp/src/mcp-client.ts similarity index 100% rename from packages/mcp-tools/src/mcp-client.ts rename to tools/mcp/src/mcp-client.ts diff --git a/packages/mcp-tools/src/registry-client.test.ts b/tools/mcp/src/registry-client.test.ts similarity index 100% rename from packages/mcp-tools/src/registry-client.test.ts rename to tools/mcp/src/registry-client.test.ts diff --git a/packages/mcp-tools/src/registry-client.ts b/tools/mcp/src/registry-client.ts similarity index 100% rename from packages/mcp-tools/src/registry-client.ts rename to tools/mcp/src/registry-client.ts diff --git a/packages/mcp-tools/src/tool.test.ts b/tools/mcp/src/tool.test.ts similarity index 100% rename from packages/mcp-tools/src/tool.test.ts rename to tools/mcp/src/tool.test.ts diff --git a/packages/mcp-tools/src/tool.ts b/tools/mcp/src/tool.ts similarity index 100% rename from packages/mcp-tools/src/tool.ts rename to tools/mcp/src/tool.ts diff --git a/packages/mcp-tools/test/scenario.test.ts b/tools/mcp/test/scenario.test.ts similarity index 100% rename from packages/mcp-tools/test/scenario.test.ts rename to tools/mcp/test/scenario.test.ts diff --git a/packages/mcp-tools/test/stub-mcp-server.ts b/tools/mcp/test/stub-mcp-server.ts similarity index 100% rename from packages/mcp-tools/test/stub-mcp-server.ts rename to tools/mcp/test/stub-mcp-server.ts diff --git a/packages/scout-agent/tsconfig.json b/tools/mcp/tsconfig.json similarity index 66% rename from packages/scout-agent/tsconfig.json rename to tools/mcp/tsconfig.json index 47f02b5162..a8c2b9966d 100644 --- a/packages/scout-agent/tsconfig.json +++ b/tools/mcp/tsconfig.json @@ -11,13 +11,5 @@ "rootDir": "../.." }, "include": ["src", "test"], - "exclude": [], - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - } - ] + "exclude": [] } diff --git a/packages/tools-skills/tsconfig.src.json b/tools/mcp/tsconfig.src.json similarity index 100% rename from packages/tools-skills/tsconfig.src.json rename to tools/mcp/tsconfig.src.json diff --git a/packages/skills/LICENSE b/tools/reddit/LICENSE similarity index 100% rename from packages/skills/LICENSE rename to tools/reddit/LICENSE diff --git a/packages/reddit-tools/README.md b/tools/reddit/README.md similarity index 97% rename from packages/reddit-tools/README.md rename to tools/reddit/README.md index 6ba605bddc..f69158a332 100644 --- a/packages/reddit-tools/README.md +++ b/tools/reddit/README.md @@ -48,7 +48,7 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/reddit-tools && bun test +cd tools/reddit && bun test ``` No live database required. diff --git a/packages/reddit-tools/package.json b/tools/reddit/package.json similarity index 95% rename from packages/reddit-tools/package.json rename to tools/reddit/package.json index 237ecfaa58..9ac165e93c 100644 --- a/packages/reddit-tools/package.json +++ b/tools/reddit/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/reddit-tools" + "directory": "tools/reddit" }, "files": [ "src", diff --git a/packages/reddit-tools/src/client.test.ts b/tools/reddit/src/client.test.ts similarity index 100% rename from packages/reddit-tools/src/client.test.ts rename to tools/reddit/src/client.test.ts diff --git a/packages/reddit-tools/src/client.ts b/tools/reddit/src/client.ts similarity index 100% rename from packages/reddit-tools/src/client.ts rename to tools/reddit/src/client.ts diff --git a/packages/reddit-tools/src/index.ts b/tools/reddit/src/index.ts similarity index 100% rename from packages/reddit-tools/src/index.ts rename to tools/reddit/src/index.ts diff --git a/packages/reddit-tools/src/manifest.test.ts b/tools/reddit/src/manifest.test.ts similarity index 100% rename from packages/reddit-tools/src/manifest.test.ts rename to tools/reddit/src/manifest.test.ts diff --git a/packages/reddit-tools/src/tool.test.ts b/tools/reddit/src/tool.test.ts similarity index 100% rename from packages/reddit-tools/src/tool.test.ts rename to tools/reddit/src/tool.test.ts diff --git a/packages/reddit-tools/src/tool.ts b/tools/reddit/src/tool.ts similarity index 100% rename from packages/reddit-tools/src/tool.ts rename to tools/reddit/src/tool.ts diff --git a/packages/skills/tsconfig.json b/tools/reddit/tsconfig.json similarity index 100% rename from packages/skills/tsconfig.json rename to tools/reddit/tsconfig.json diff --git a/packages/web-search-tools/tsconfig.src.json b/tools/reddit/tsconfig.src.json similarity index 100% rename from packages/web-search-tools/tsconfig.src.json rename to tools/reddit/tsconfig.src.json diff --git a/packages/tools-skills/LICENSE b/tools/skills-tools/LICENSE similarity index 100% rename from packages/tools-skills/LICENSE rename to tools/skills-tools/LICENSE diff --git a/packages/skills-tools/package.json b/tools/skills-tools/package.json similarity index 95% rename from packages/skills-tools/package.json rename to tools/skills-tools/package.json index 7e4389f0d5..25a8de6a07 100644 --- a/packages/skills-tools/package.json +++ b/tools/skills-tools/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/skills-tools" + "directory": "tools/skills-tools" }, "files": [ "src", diff --git a/packages/skills-tools/src/client.test.ts b/tools/skills-tools/src/client.test.ts similarity index 100% rename from packages/skills-tools/src/client.test.ts rename to tools/skills-tools/src/client.test.ts diff --git a/packages/skills-tools/src/client.ts b/tools/skills-tools/src/client.ts similarity index 100% rename from packages/skills-tools/src/client.ts rename to tools/skills-tools/src/client.ts diff --git a/packages/skills-tools/src/index.ts b/tools/skills-tools/src/index.ts similarity index 100% rename from packages/skills-tools/src/index.ts rename to tools/skills-tools/src/index.ts diff --git a/packages/skills-tools/src/tool.test.ts b/tools/skills-tools/src/tool.test.ts similarity index 100% rename from packages/skills-tools/src/tool.test.ts rename to tools/skills-tools/src/tool.test.ts diff --git a/packages/skills-tools/src/tool.ts b/tools/skills-tools/src/tool.ts similarity index 100% rename from packages/skills-tools/src/tool.ts rename to tools/skills-tools/src/tool.ts diff --git a/packages/tools-skills/tsconfig.json b/tools/skills-tools/tsconfig.json similarity index 100% rename from packages/tools-skills/tsconfig.json rename to tools/skills-tools/tsconfig.json diff --git a/workflows/assistant/tsconfig.src.json b/tools/skills-tools/tsconfig.src.json similarity index 100% rename from workflows/assistant/tsconfig.src.json rename to tools/skills-tools/tsconfig.src.json diff --git a/packages/web-search-tools/LICENSE b/tools/tools-skills/LICENSE similarity index 100% rename from packages/web-search-tools/LICENSE rename to tools/tools-skills/LICENSE diff --git a/packages/tools-skills/README.md b/tools/tools-skills/README.md similarity index 97% rename from packages/tools-skills/README.md rename to tools/tools-skills/README.md index 06dd445674..76c8a21dad 100644 --- a/packages/tools-skills/README.md +++ b/tools/tools-skills/README.md @@ -29,7 +29,7 @@ unreachable," and only the second is honest. ## Running tests ```sh -cd packages/tools-skills && bun test +cd tools/tools-skills && bun test ``` Tests run against a mocked `FetchLike`; no `DATABASE_URL` or live hub is diff --git a/packages/tools-skills/package.json b/tools/tools-skills/package.json similarity index 95% rename from packages/tools-skills/package.json rename to tools/tools-skills/package.json index 0d2b4fc302..575eb6ed4c 100644 --- a/packages/tools-skills/package.json +++ b/tools/tools-skills/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/tools-skills" + "directory": "tools/tools-skills" }, "files": [ "src", diff --git a/packages/tools-skills/src/client.test.ts b/tools/tools-skills/src/client.test.ts similarity index 100% rename from packages/tools-skills/src/client.test.ts rename to tools/tools-skills/src/client.test.ts diff --git a/packages/tools-skills/src/client.ts b/tools/tools-skills/src/client.ts similarity index 100% rename from packages/tools-skills/src/client.ts rename to tools/tools-skills/src/client.ts diff --git a/packages/tools-skills/src/index.ts b/tools/tools-skills/src/index.ts similarity index 100% rename from packages/tools-skills/src/index.ts rename to tools/tools-skills/src/index.ts diff --git a/packages/tools-skills/src/tool.test.ts b/tools/tools-skills/src/tool.test.ts similarity index 100% rename from packages/tools-skills/src/tool.test.ts rename to tools/tools-skills/src/tool.test.ts diff --git a/packages/tools-skills/src/tool.ts b/tools/tools-skills/src/tool.ts similarity index 100% rename from packages/tools-skills/src/tool.ts rename to tools/tools-skills/src/tool.ts diff --git a/packages/web-search-tools/tsconfig.json b/tools/tools-skills/tsconfig.json similarity index 100% rename from packages/web-search-tools/tsconfig.json rename to tools/tools-skills/tsconfig.json diff --git a/packages/jimmy-agent/tsconfig.src.json b/tools/tools-skills/tsconfig.src.json similarity index 66% rename from packages/jimmy-agent/tsconfig.src.json rename to tools/tools-skills/tsconfig.src.json index 3959f6247b..fc8724305f 100644 --- a/packages/jimmy-agent/tsconfig.src.json +++ b/tools/tools-skills/tsconfig.src.json @@ -8,13 +8,5 @@ "emitDeclarationOnly": true, "outDir": "dist", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" - }, - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - } - ] + } } diff --git a/packages/workflow-authoring-tools/LICENSE b/tools/web-search/LICENSE similarity index 100% rename from packages/workflow-authoring-tools/LICENSE rename to tools/web-search/LICENSE diff --git a/packages/web-search-tools/README.md b/tools/web-search/README.md similarity index 96% rename from packages/web-search-tools/README.md rename to tools/web-search/README.md index c56a78212b..90cda2c984 100644 --- a/packages/web-search-tools/README.md +++ b/tools/web-search/README.md @@ -35,7 +35,7 @@ const agent = defineAgent({ ## Running tests ``` -cd packages/web-search-tools && bun test +cd tools/web-search && bun test ``` No live database required. diff --git a/packages/web-search-tools/package.json b/tools/web-search/package.json similarity index 95% rename from packages/web-search-tools/package.json rename to tools/web-search/package.json index 70ba114721..4e80eec55e 100644 --- a/packages/web-search-tools/package.json +++ b/tools/web-search/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/web-search-tools" + "directory": "tools/web-search" }, "files": [ "src", diff --git a/packages/web-search-tools/src/client.test.ts b/tools/web-search/src/client.test.ts similarity index 100% rename from packages/web-search-tools/src/client.test.ts rename to tools/web-search/src/client.test.ts diff --git a/packages/web-search-tools/src/client.ts b/tools/web-search/src/client.ts similarity index 100% rename from packages/web-search-tools/src/client.ts rename to tools/web-search/src/client.ts diff --git a/packages/web-search-tools/src/index.ts b/tools/web-search/src/index.ts similarity index 100% rename from packages/web-search-tools/src/index.ts rename to tools/web-search/src/index.ts diff --git a/packages/web-search-tools/src/manifest.test.ts b/tools/web-search/src/manifest.test.ts similarity index 100% rename from packages/web-search-tools/src/manifest.test.ts rename to tools/web-search/src/manifest.test.ts diff --git a/packages/web-search-tools/src/tool.test.ts b/tools/web-search/src/tool.test.ts similarity index 100% rename from packages/web-search-tools/src/tool.test.ts rename to tools/web-search/src/tool.test.ts diff --git a/packages/web-search-tools/src/tool.ts b/tools/web-search/src/tool.ts similarity index 100% rename from packages/web-search-tools/src/tool.ts rename to tools/web-search/src/tool.ts diff --git a/packages/workflow-authoring-tools/tsconfig.json b/tools/web-search/tsconfig.json similarity index 100% rename from packages/workflow-authoring-tools/tsconfig.json rename to tools/web-search/tsconfig.json diff --git a/packages/scout-agent/tsconfig.src.json b/tools/web-search/tsconfig.src.json similarity index 66% rename from packages/scout-agent/tsconfig.src.json rename to tools/web-search/tsconfig.src.json index 3959f6247b..fc8724305f 100644 --- a/packages/scout-agent/tsconfig.src.json +++ b/tools/web-search/tsconfig.src.json @@ -8,13 +8,5 @@ "emitDeclarationOnly": true, "outDir": "dist", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" - }, - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - } - ] + } } diff --git a/workflows/assistant/LICENSE b/tools/workflow-authoring/LICENSE similarity index 100% rename from workflows/assistant/LICENSE rename to tools/workflow-authoring/LICENSE diff --git a/packages/workflow-authoring-tools/README.md b/tools/workflow-authoring/README.md similarity index 98% rename from packages/workflow-authoring-tools/README.md rename to tools/workflow-authoring/README.md index bc1424f0ae..9e7e0bcfc6 100644 --- a/packages/workflow-authoring-tools/README.md +++ b/tools/workflow-authoring/README.md @@ -83,7 +83,7 @@ the qualified `:` must fit OpenAI's 64-character wire cap after ## Running tests ```sh -cd packages/workflow-authoring-tools && bun test +cd tools/workflow-authoring && bun test ``` Tests run against a mocked fetch; no `DATABASE_URL` or live hub is required. diff --git a/packages/workflow-authoring-tools/package.json b/tools/workflow-authoring/package.json similarity index 95% rename from packages/workflow-authoring-tools/package.json rename to tools/workflow-authoring/package.json index 98d6ebe01f..28c4f6e607 100644 --- a/packages/workflow-authoring-tools/package.json +++ b/tools/workflow-authoring/package.json @@ -6,7 +6,7 @@ "repository": { "type": "git", "url": "https://github.com/corbitsdev/workbench.git", - "directory": "packages/workflow-authoring-tools" + "directory": "tools/workflow-authoring" }, "files": [ "src", diff --git a/packages/workflow-authoring-tools/src/client.test.ts b/tools/workflow-authoring/src/client.test.ts similarity index 100% rename from packages/workflow-authoring-tools/src/client.test.ts rename to tools/workflow-authoring/src/client.test.ts diff --git a/packages/workflow-authoring-tools/src/client.ts b/tools/workflow-authoring/src/client.ts similarity index 100% rename from packages/workflow-authoring-tools/src/client.ts rename to tools/workflow-authoring/src/client.ts diff --git a/packages/workflow-authoring-tools/src/index.ts b/tools/workflow-authoring/src/index.ts similarity index 100% rename from packages/workflow-authoring-tools/src/index.ts rename to tools/workflow-authoring/src/index.ts diff --git a/packages/workflow-authoring-tools/src/run-bearer.ts b/tools/workflow-authoring/src/run-bearer.ts similarity index 100% rename from packages/workflow-authoring-tools/src/run-bearer.ts rename to tools/workflow-authoring/src/run-bearer.ts diff --git a/packages/workflow-authoring-tools/src/tool.test.ts b/tools/workflow-authoring/src/tool.test.ts similarity index 100% rename from packages/workflow-authoring-tools/src/tool.test.ts rename to tools/workflow-authoring/src/tool.test.ts diff --git a/packages/workflow-authoring-tools/src/tool.ts b/tools/workflow-authoring/src/tool.ts similarity index 100% rename from packages/workflow-authoring-tools/src/tool.ts rename to tools/workflow-authoring/src/tool.ts diff --git a/packages/jimmy-agent/tsconfig.json b/tools/workflow-authoring/tsconfig.json similarity index 65% rename from packages/jimmy-agent/tsconfig.json rename to tools/workflow-authoring/tsconfig.json index 0815303630..e125e90614 100644 --- a/packages/jimmy-agent/tsconfig.json +++ b/tools/workflow-authoring/tsconfig.json @@ -11,13 +11,5 @@ "rootDir": "../.." }, "include": ["src"], - "exclude": [], - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - } - ] + "exclude": [] } diff --git a/packages/workflow-authoring-tools/tsconfig.src.json b/tools/workflow-authoring/tsconfig.src.json similarity index 100% rename from packages/workflow-authoring-tools/tsconfig.src.json rename to tools/workflow-authoring/tsconfig.src.json diff --git a/tsconfig.build.json b/tsconfig.build.json index e33db8dc61..3a6eb1e90a 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -2,13 +2,16 @@ "files": [], "references": [ { - "path": "./apps/sidecar/tsconfig.src.json" + "path": "./agents/assistant/tsconfig.src.json" + }, + { + "path": "./agents/jimmy/tsconfig.src.json" }, { - "path": "./packages/access-tools/tsconfig.src.json" + "path": "./agents/scout/tsconfig.src.json" }, { - "path": "./packages/agent-directory-tools/tsconfig.src.json" + "path": "./apps/sidecar/tsconfig.src.json" }, { "path": "./packages/agent-events/tsconfig.src.json" @@ -25,12 +28,6 @@ { "path": "./packages/bench-ui/tsconfig.src.json" }, - { - "path": "./packages/capability-tools/tsconfig.src.json" - }, - { - "path": "./packages/catalog-tools/tsconfig.src.json" - }, { "path": "./packages/client-log/tsconfig.src.json" }, @@ -49,9 +46,6 @@ { "path": "./packages/commands/tsconfig.src.json" }, - { - "path": "./packages/connections-tools/tsconfig.src.json" - }, { "path": "./packages/context-menu/tsconfig.src.json" }, @@ -67,15 +61,9 @@ { "path": "./packages/error-sink/tsconfig.src.json" }, - { - "path": "./packages/github-tools/tsconfig.src.json" - }, { "path": "./packages/gotenberg-render/tsconfig.src.json" }, - { - "path": "./packages/granola-tools/tsconfig.src.json" - }, { "path": "./packages/hub-api-client/tsconfig.src.json" }, @@ -89,85 +77,100 @@ "path": "./packages/inference-catalog/tsconfig.src.json" }, { - "path": "./packages/interaction-tools/tsconfig.src.json" + "path": "./packages/migration-runner/tsconfig.src.json" }, { - "path": "./packages/jimmy-agent/tsconfig.src.json" + "path": "./packages/mocks/tsconfig.src.json" }, { - "path": "./packages/linear-tools/tsconfig.src.json" + "path": "./packages/notify/tsconfig.src.json" }, { - "path": "./packages/manus-tools/tsconfig.src.json" + "path": "./packages/ollama-adapter/tsconfig.src.json" }, { - "path": "./packages/mcp-tools/tsconfig.src.json" + "path": "./packages/process-provisioner/tsconfig.src.json" }, { - "path": "./packages/migration-runner/tsconfig.src.json" + "path": "./packages/sandbox-sidecar/tsconfig.src.json" }, { - "path": "./packages/mocks/tsconfig.src.json" + "path": "./packages/shell-layout/tsconfig.src.json" }, { - "path": "./packages/notify/tsconfig.src.json" + "path": "./packages/slug/tsconfig.src.json" }, { - "path": "./packages/ollama-adapter/tsconfig.src.json" + "path": "./packages/text-diff/tsconfig.src.json" }, { - "path": "./packages/process-provisioner/tsconfig.src.json" + "path": "./packages/tool-registry-publish/tsconfig.src.json" }, { - "path": "./packages/reddit-tools/tsconfig.src.json" + "path": "./packages/turn-artifacts/tsconfig.src.json" }, { - "path": "./packages/sandbox-sidecar/tsconfig.src.json" + "path": "./packages/url-path/tsconfig.src.json" }, { - "path": "./packages/scout-agent/tsconfig.src.json" + "path": "./packages/workflow-schedule/tsconfig.src.json" }, { - "path": "./packages/shell-layout/tsconfig.src.json" + "path": "./packages/workflows/tsconfig.src.json" }, { - "path": "./packages/skills/tsconfig.src.json" + "path": "./packages/xai-provider/tsconfig.src.json" }, { - "path": "./packages/skills-tools/tsconfig.src.json" + "path": "./skills/skills/tsconfig.src.json" }, { - "path": "./packages/slug/tsconfig.src.json" + "path": "./tools/access/tsconfig.src.json" }, { - "path": "./packages/text-diff/tsconfig.src.json" + "path": "./tools/agent-directory/tsconfig.src.json" }, { - "path": "./packages/tool-registry-publish/tsconfig.src.json" + "path": "./tools/capability/tsconfig.src.json" }, { - "path": "./packages/tools-skills/tsconfig.src.json" + "path": "./tools/catalog/tsconfig.src.json" }, { - "path": "./packages/turn-artifacts/tsconfig.src.json" + "path": "./tools/connections/tsconfig.src.json" }, { - "path": "./packages/url-path/tsconfig.src.json" + "path": "./tools/github/tsconfig.src.json" }, { - "path": "./packages/web-search-tools/tsconfig.src.json" + "path": "./tools/granola/tsconfig.src.json" }, { - "path": "./packages/workflow-authoring-tools/tsconfig.src.json" + "path": "./tools/interaction/tsconfig.src.json" }, { - "path": "./packages/workflow-schedule/tsconfig.src.json" + "path": "./tools/linear/tsconfig.src.json" }, { - "path": "./packages/workflows/tsconfig.src.json" + "path": "./tools/manus/tsconfig.src.json" }, { - "path": "./packages/xai-provider/tsconfig.src.json" + "path": "./tools/mcp/tsconfig.src.json" + }, + { + "path": "./tools/reddit/tsconfig.src.json" + }, + { + "path": "./tools/skills-tools/tsconfig.src.json" + }, + { + "path": "./tools/tools-skills/tsconfig.src.json" + }, + { + "path": "./tools/web-search/tsconfig.src.json" + }, + { + "path": "./tools/workflow-authoring/tsconfig.src.json" }, { "path": "./vendor/intx/agent/tsconfig.src.json" @@ -214,9 +217,6 @@ { "path": "./vendor/intx/workflow-host/tsconfig.src.json" }, - { - "path": "./workflows/assistant/tsconfig.src.json" - }, { "path": "./workflows/attio-task-agent/tsconfig.src.json" }, diff --git a/workflows/credential-expiry/src/client.ts b/workflows/credential-expiry/src/client.ts index 289812bd6b..0d669f7bb4 100644 --- a/workflows/credential-expiry/src/client.ts +++ b/workflows/credential-expiry/src/client.ts @@ -2,7 +2,7 @@ // reads: `GET /api/tenants/:tenantId/credentials` and `/providers`, with // the workflow run's own bearer (sidecar token plus run address), the // same pairing `@corbits/connections-tools`' `listConnectedProviders` -// uses (`packages/connections-tools/src/client.ts`) — this package +// uses (`tools/connections/src/client.ts`) — this package // cannot depend on that one directly (a workflow ships as its own npm // tarball; `@corbits/connections-tools` is not part of that surface), // so the fetch/paginate shape is duplicated rather than imported. diff --git a/workflows/granola-call/src/index.ts b/workflows/granola-call/src/index.ts index 25ad192f4a..d0885abd74 100644 --- a/workflows/granola-call/src/index.ts +++ b/workflows/granola-call/src/index.ts @@ -84,7 +84,7 @@ export const GRANOLA_CALL_TOOL_PACKAGE_PINS: readonly ToolPackagePin[] = [ * tenant-owned Granola credential (CL-6028). The launch resolves this * against `buildCredentialDelivery`, materializing a consumer-scoped * `credential:{id}` / `use` grant for the pinned package — see - * `packages/granola-tools/src/tool.ts`'s header comment for the runtime + * `tools/granola/src/tool.ts`'s header comment for the runtime * gap that still separates a binding resolved at launch and a credential * actually reachable by the tool at call time. */