Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions IMPLEMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion PRODUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"repository": {
"type": "git",
"url": "https://github.com/corbitsdev/workbench.git",
"directory": "workflows/assistant"
"directory": "agents/assistant"
},
"files": [
"src",
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
48 changes: 48 additions & 0 deletions agents/jimmy/package.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
22 changes: 19 additions & 3 deletions packages/scout-agent/package.json → agents/scout/package.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions apps/hub/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
4 changes: 2 additions & 2 deletions apps/sidecar/src/step-agent-tools.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/myra-deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`/
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/myra-source.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/pages/plugins-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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:<slug>`
// (`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.
Expand Down
2 changes: 1 addition & 1 deletion apps/web/test/plugins-page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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:<slug>` 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
Expand Down
Loading
Loading