diff --git a/bun.lock b/bun.lock index 6c3fd60537..fe84dc8877 100644 --- a/bun.lock +++ b/bun.lock @@ -198,12 +198,8 @@ }, "packages/access-tools": { "name": "@corbits/access-tools", - "version": "0.0.4", + "version": "0.0.5", "dependencies": { - "@corbits/error-sink": "workspace:*", - "@intx/agent": "workspace:*", - "@intx/authz": "0.3.0", - "@intx/types": "workspace:*", "arktype": "catalog:", }, "devDependencies": { @@ -213,6 +209,12 @@ "@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", @@ -512,9 +514,8 @@ }, "packages/code-review": { "name": "@corbits/code-review", - "version": "0.0.1", + "version": "0.0.2", "dependencies": { - "@corbits/github-tools": "workspace:*", "arktype": "catalog:", }, "devDependencies": { @@ -522,6 +523,9 @@ "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@corbits/github-tools": "0.0.10", + }, }, "packages/codex-provider": { "name": "@corbits/codex-provider", @@ -611,17 +615,18 @@ }, "packages/connections-tools": { "name": "@corbits/connections-tools", - "version": "0.0.10", + "version": "0.0.11", "dependencies": { - "@corbits/connections": "workspace:*", - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", "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", @@ -680,9 +685,8 @@ }, "packages/error-sink": { "name": "@corbits/error-sink", - "version": "0.0.1", + "version": "0.0.2", "dependencies": { - "@intx/log": "0.3.0", "arktype": "catalog:", }, "devDependencies": { @@ -690,6 +694,9 @@ "@types/bun": "catalog:", "typescript": "catalog:", }, + "peerDependencies": { + "@intx/log": "0.3.0", + }, }, "packages/evals": { "name": "@corbits/evals", @@ -877,17 +884,19 @@ }, "packages/interaction-tools": { "name": "@corbits/interaction-tools", - "version": "0.0.8", + "version": "0.0.9", "dependencies": { - "@corbits/error-sink": "workspace:*", - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", "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", @@ -3469,8 +3478,12 @@ "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@corbits/inbox/@corbits/mailbox": ["@corbits/mailbox@github:corbitsdev/corbits-mailbox#118a2cd", { "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-118a2cd", "sha512-jVRl6/IH34JBPVUz7mqWyBm1w7uJxvYAI27gjw7zL1dFO4L+D0E5q/8b+mpwKMNOKKlGXU6UF5pdHnY8ilYx8g=="], + "@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/memory-hub/@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=="], "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], @@ -3491,6 +3504,12 @@ "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.9", "", {}, "sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw=="], + "@workbench/hub/@corbits/mailbox": ["@corbits/mailbox@github:corbitsdev/corbits-mailbox#118a2cd", { "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-118a2cd", "sha512-jVRl6/IH34JBPVUz7mqWyBm1w7uJxvYAI27gjw7zL1dFO4L+D0E5q/8b+mpwKMNOKKlGXU6UF5pdHnY8ilYx8g=="], + + "@workbench/hub/@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=="], + + "@workbench/sidecar/@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#e1e69e6", { "dependencies": { "arktype": "2.2.3" } }, "corbitsdev-corbits-oauth-core-e1e69e6", "sha512-wUrD73iVyk/Dtb4yRn3hCh6N8syfsEvAkRz4XYqT0FIB3sYDSMYEWHcDMJx9nq64my/HBOeN1J6PHIOtpjhtPg=="], + "ajv-formats/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], "better-call/@better-auth/utils": ["@better-auth/utils@0.5.0", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-BL8W4EfIZFwlu0r54m3v1ztjDhu6dDe/amLTm0xybmbZaNgYUqhD3SjpAsnq0q8YD6/ki4iwIgxJNLP/N3TxiA=="], @@ -3539,6 +3558,8 @@ "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@corbits/inbox/@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=="], + "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], @@ -3585,6 +3606,8 @@ "@modelcontextprotocol/sdk/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "@workbench/hub/@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=="], + "ajv-formats/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], diff --git a/packages/access-tools/package.json b/packages/access-tools/package.json index 7da816805f..52d95dedc5 100644 --- a/packages/access-tools/package.json +++ b/packages/access-tools/package.json @@ -1,24 +1,38 @@ { "name": "@corbits/access-tools", - "private": true, "description": "Myra's principal and grant tools: list_principals, list_grants, grant_access, and revoke_access as an @intx/agent tool bundle, calling stock Interchange tenant routes with the workflow run's own bearer credential and enforcing a delegation ceiling before it grants", - "version": "0.0.4", + "version": "0.0.5", "license": "LGPL-2.1-or-later", "type": "module", "exports": { ".": "./src/index.ts" }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "packages/access-tools" + }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@corbits/error-sink": "workspace:*", - "@intx/agent": "workspace:*", - "@intx/authz": "0.3.0", - "@intx/types": "workspace:*", "arktype": "catalog:" }, + "peerDependencies": { + "@corbits/error-sink": "0.0.2", + "@intx/agent": "0.3.0", + "@intx/authz": "0.3.0", + "@intx/types": "0.3.0" + }, "devDependencies": { "@corbits/agent-directory": "workspace:*", "@corbits/agent-directory-tools": "workspace:*", diff --git a/packages/access-tools/tsconfig.json b/packages/access-tools/tsconfig.json index 8d56256d5d..e125e90614 100644 --- a/packages/access-tools/tsconfig.json +++ b/packages/access-tools/tsconfig.json @@ -11,16 +11,5 @@ "rootDir": "../.." }, "include": ["src"], - "exclude": [], - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - }, - { - "path": "../error-sink/tsconfig.src.json" - } - ] + "exclude": [] } diff --git a/packages/access-tools/tsconfig.src.json b/packages/access-tools/tsconfig.src.json index fba5f774c3..d84257c8f8 100644 --- a/packages/access-tools/tsconfig.src.json +++ b/packages/access-tools/tsconfig.src.json @@ -9,16 +9,5 @@ "emitDeclarationOnly": true, "outDir": "dist", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" - }, - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - }, - { - "path": "../error-sink/tsconfig.src.json" - } - ] + } } diff --git a/packages/code-review/package.json b/packages/code-review/package.json index d711a9bb01..e8830b93e6 100644 --- a/packages/code-review/package.json +++ b/packages/code-review/package.json @@ -1,8 +1,7 @@ { "name": "@corbits/code-review", - "private": true, "description": "Multi-reviewer pull-request review: three reviewer definitions, one aggregated review, posted to GitHub", - "version": "0.0.1", + "version": "0.0.2", "license": "LGPL-2.1-or-later", "type": "module", "exports": { @@ -11,14 +10,29 @@ "./agent-requests": "./src/agent-requests.ts", "./introductions": "./src/introductions.ts" }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "packages/code-review" + }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@corbits/github-tools": "workspace:*", "arktype": "catalog:" }, + "peerDependencies": { + "@corbits/github-tools": "0.0.10" + }, "devDependencies": { "@corbits/agent-directory": "workspace:*", "@types/bun": "catalog:", diff --git a/packages/code-review/tsconfig.json b/packages/code-review/tsconfig.json index 98a883d4a7..e125e90614 100644 --- a/packages/code-review/tsconfig.json +++ b/packages/code-review/tsconfig.json @@ -11,10 +11,5 @@ "rootDir": "../.." }, "include": ["src"], - "exclude": [], - "references": [ - { - "path": "../github-tools/tsconfig.src.json" - } - ] + "exclude": [] } diff --git a/packages/code-review/tsconfig.src.json b/packages/code-review/tsconfig.src.json index 9f53d58beb..fc8724305f 100644 --- a/packages/code-review/tsconfig.src.json +++ b/packages/code-review/tsconfig.src.json @@ -8,10 +8,5 @@ "emitDeclarationOnly": true, "outDir": "dist", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" - }, - "references": [ - { - "path": "../github-tools/tsconfig.src.json" - } - ] + } } diff --git a/packages/connections-tools/README.md b/packages/connections-tools/README.md new file mode 100644 index 0000000000..3574dd73b4 --- /dev/null +++ b/packages/connections-tools/README.md @@ -0,0 +1,19 @@ +# @corbits/connections-tools + +`list_connections` and `request_connection`, an agent's in-chat way to +see which third-party connections (Attio, Exa, Granola, ...) a workbench +already has live, and to hand a human a link to connect one that isn't. +Neither tool completes OAuth or invents new state; connecting itself +always finishes in the browser. + +This package carries no connector set of its own. The deploying build +wires its own registry/preset list into `WorkflowConnectionEnv` +(Workbench passes its own `@corbits/connections` `CONNECTOR_REGISTRY` and +`MCP_PRESETS`), so `./src/registry-shape.ts` declares only the minimal +`ConnectorRegistry`/`McpPreset` field shapes this tool actually reads +plus the one lookup helper (`mcpPresetByName`) — the caller's richer +descriptor objects satisfy these structurally. + +`list_connections` is read-only. `request_connection` posts a +connect-service card into the caller's own room; neither tool is +approval-gated (see `./src/tool.ts`'s header comment for why). diff --git a/packages/connections-tools/package.json b/packages/connections-tools/package.json index 3fb396a529..7ad3e678d9 100644 --- a/packages/connections-tools/package.json +++ b/packages/connections-tools/package.json @@ -1,23 +1,36 @@ { "name": "@corbits/connections-tools", - "private": true, "description": "The list_connections and request_connection tools as an @intx/agent tool bundle: an agent sees which third-party connections this workbench already has live and hands the human a deep link to connect one that isn't, reusing the existing connections plane and never inventing new state or completing OAuth itself", - "version": "0.0.10", + "version": "0.0.11", "license": "LGPL-2.1-or-later", "type": "module", "exports": { ".": "./src/index.ts" }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "packages/connections-tools" + }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", - "@corbits/connections": "workspace:*", "arktype": "catalog:" }, + "peerDependencies": { + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0" + }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:" diff --git a/packages/connections-tools/src/registry-shape.ts b/packages/connections-tools/src/registry-shape.ts new file mode 100644 index 0000000000..6d1a221f7b --- /dev/null +++ b/packages/connections-tools/src/registry-shape.ts @@ -0,0 +1,35 @@ +// This tool bundle carries no connector set of its own — the deploying +// build wires its own registry/preset list into `WorkflowConnectionEnv` +// (e.g. Workbench's `@corbits/connections` `CONNECTOR_REGISTRY` and +// `MCP_PRESETS`). All this tool needs from either shape is the handful +// of fields it actually reads (`id`/`displayName` off a descriptor, +// `slug`/`displayName`/`description` off a preset) plus the one lookup +// helper — so those live here instead of a runtime dependency on +// `@corbits/connections`, which this publishable package cannot carry +// (it is a private, hub-only library). A caller's richer descriptor/ +// preset objects satisfy these structurally; nothing here needs to +// change when that caller adds fields of its own. + +export interface ConnectorDescriptor { + readonly id: string; + readonly displayName: string; +} + +export type ConnectorRegistry = Readonly>; + +export interface McpPreset { + readonly slug: string; + readonly displayName: string; + readonly description: string; +} + +export function mcpPresetByName( + presets: readonly McpPreset[], + name: string, +): McpPreset | undefined { + const needle = name.trim().toLowerCase(); + return presets.find( + (preset) => + preset.slug === needle || preset.displayName.toLowerCase() === needle, + ); +} diff --git a/packages/connections-tools/src/tool.test.ts b/packages/connections-tools/src/tool.test.ts index be535b72c0..755f413abd 100644 --- a/packages/connections-tools/src/tool.test.ts +++ b/packages/connections-tools/src/tool.test.ts @@ -1,8 +1,7 @@ import { expect, test } from "bun:test"; import type { ToolCall } from "@intx/types/runtime"; -import { createConnectorRegistry } from "@corbits/connections/registry"; -import type { McpPreset } from "@corbits/connections/mcp-presets"; +import type { ConnectorRegistry, McpPreset } from "./registry-shape"; import { connectionsTools, LIST_CONNECTIONS_TOOL, @@ -15,44 +14,28 @@ import { // `@corbits/connections/registry` `CONNECTOR_REGISTRY`) — this package // carries no default of its own, so its tests exercise the lookup logic // against a small stand-in. -const TEST_CONNECTOR_REGISTRY = createConnectorRegistry({ +const TEST_CONNECTOR_REGISTRY: ConnectorRegistry = { github: { id: "github", - credentialPlugin: "http", displayName: "GitHub", - authKind: "api-key", - docsUrl: "https://github.com/settings/tokens", - feedsTools: ["@corbits/github-tools"], - probe: async () => ({ ok: true }), }, -}); +}; const TEST_MCP_PRESETS: readonly McpPreset[] = [ { slug: "granola", displayName: "Granola", description: "Search meeting notes, transcripts, and action items.", - url: "https://mcp.granola.ai/mcp", - connectionMode: "oauth", - docsUrl: "https://docs.granola.ai/help-center/sharing/integrations/mcp", - nativeConnectorId: "granola", }, { slug: "exa", displayName: "Exa", description: "Search and research the live web.", - url: "https://mcp.exa.ai/mcp", - connectionMode: "keyless", - docsUrl: "https://docs.exa.ai/reference/exa-mcp", - nativeConnectorId: "exa", }, { slug: "notion", displayName: "Notion", description: "Search and update pages, databases, and workspace content.", - url: "https://mcp.notion.com/mcp", - connectionMode: "oauth", - docsUrl: "https://developers.notion.com/guides/mcp/get-started-with-mcp", }, ]; diff --git a/packages/connections-tools/src/tool.ts b/packages/connections-tools/src/tool.ts index cd4a8b1f15..01374466dc 100644 --- a/packages/connections-tools/src/tool.ts +++ b/packages/connections-tools/src/tool.ts @@ -31,9 +31,6 @@ import { defineTool } from "@intx/agent"; import type { BaseEnv } from "@intx/agent"; import type { ToolCall, ToolResult } from "@intx/types/runtime"; -import { mcpPresetByName } from "@corbits/connections/mcp-presets"; -import type { ConnectorRegistry } from "@corbits/connections/registry"; -import type { McpPreset } from "@corbits/connections/mcp-presets"; import { type } from "arktype"; import { @@ -41,6 +38,11 @@ import { NoOwnRoomError, postConnectServiceBlock, } from "./client"; +import { + mcpPresetByName, + type ConnectorRegistry, + type McpPreset, +} from "./registry-shape"; export const LIST_CONNECTIONS_TOOL = "list_connections"; export const REQUEST_CONNECTION_TOOL = "request_connection"; diff --git a/packages/connections-tools/tsconfig.json b/packages/connections-tools/tsconfig.json index d7611c1229..e125e90614 100644 --- a/packages/connections-tools/tsconfig.json +++ b/packages/connections-tools/tsconfig.json @@ -1,8 +1,15 @@ { - "extends": "../../tsconfig.base.json", - "include": ["src", "test"], + "extends": "./tsconfig.src.json", "compilerOptions": { - "types": ["bun"], - "noEmit": true - } + "composite": false, + "noEmit": true, + "disableSourceOfProjectReferenceRedirect": true, + "declaration": false, + "declarationMap": false, + "emitDeclarationOnly": false, + "tsBuildInfoFile": "tsconfig.tsbuildinfo", + "rootDir": "../.." + }, + "include": ["src"], + "exclude": [] } diff --git a/packages/connections-tools/tsconfig.src.json b/packages/connections-tools/tsconfig.src.json new file mode 100644 index 0000000000..d84257c8f8 --- /dev/null +++ b/packages/connections-tools/tsconfig.src.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src", "package.json", "src/**/*.json"], + "exclude": ["src/**/*.test.ts", "src/**/*.test.tsx"], + "compilerOptions": { + "types": ["bun"], + "noEmit": true, + "composite": true, + "emitDeclarationOnly": true, + "outDir": "dist", + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + } +} diff --git a/packages/error-sink/package.json b/packages/error-sink/package.json index ec14f53752..242e724fca 100644 --- a/packages/error-sink/package.json +++ b/packages/error-sink/package.json @@ -1,21 +1,35 @@ { "name": "@corbits/error-sink", - "private": true, "description": "The structured error-reporting convention every catch block calls instead of swallowing a failure (CL-6496): operation + tenant/room/agent context, a refId a person can quote to support, and secret redaction, all delivered through @intx/log so OTEL/Sentry attach later as a LogTape sink -- no call site changes", - "version": "0.0.1", + "version": "0.0.2", "license": "LGPL-2.1-or-later", "type": "module", "exports": { ".": "./src/index.ts" }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "packages/error-sink" + }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@intx/log": "0.3.0", "arktype": "catalog:" }, + "peerDependencies": { + "@intx/log": "0.3.0" + }, "devDependencies": { "@logtape/logtape": "^2.2.4", "@types/bun": "catalog:", diff --git a/packages/interaction-tools/README.md b/packages/interaction-tools/README.md new file mode 100644 index 0000000000..edbb239647 --- /dev/null +++ b/packages/interaction-tools/README.md @@ -0,0 +1,10 @@ +# @corbits/interaction-tools + +The `ask_user` tool: an `@intx/agent` bundle that poses an interview +question in-thread as an interactive question block, then ends the turn. +A Workbench agent treats "ask a person" as native — post the question +and stop — rather than a structural park: the person's answer arrives as +the agent's next inbound message, not as this call's result. + +See `./src/tool.ts` for the tool definition and `./src/client.ts` for +the hub call that posts the question block. diff --git a/packages/interaction-tools/package.json b/packages/interaction-tools/package.json index ddd9e54a88..2fbf2decb2 100644 --- a/packages/interaction-tools/package.json +++ b/packages/interaction-tools/package.json @@ -1,23 +1,37 @@ { "name": "@corbits/interaction-tools", - "private": true, "description": "The ask_user tool: an @intx/agent bundle that poses an interview question in-thread as a question block, then ends the turn — the user's answer arrives as the agent's next message, not this call's result", - "version": "0.0.8", + "version": "0.0.9", "license": "LGPL-2.1-or-later", "type": "module", "exports": { ".": "./src/index.ts" }, + "files": [ + "src", + "LICENSE", + "README.md" + ], + "repository": { + "type": "git", + "url": "https://github.com/corbitsdev/workbench.git", + "directory": "packages/interaction-tools" + }, + "publishConfig": { + "access": "public" + }, "scripts": { "typecheck": "tsc --noEmit", "test": "bun test" }, "dependencies": { - "@corbits/error-sink": "workspace:*", - "@intx/agent": "workspace:*", - "@intx/types": "workspace:*", "arktype": "catalog:" }, + "peerDependencies": { + "@corbits/error-sink": "0.0.2", + "@intx/agent": "0.3.0", + "@intx/types": "0.3.0" + }, "devDependencies": { "@types/bun": "catalog:", "typescript": "catalog:" diff --git a/packages/interaction-tools/tsconfig.json b/packages/interaction-tools/tsconfig.json index 8d56256d5d..e125e90614 100644 --- a/packages/interaction-tools/tsconfig.json +++ b/packages/interaction-tools/tsconfig.json @@ -11,16 +11,5 @@ "rootDir": "../.." }, "include": ["src"], - "exclude": [], - "references": [ - { - "path": "../../vendor/intx/agent/tsconfig.src.json" - }, - { - "path": "../../vendor/intx/types/tsconfig.src.json" - }, - { - "path": "../error-sink/tsconfig.src.json" - } - ] + "exclude": [] } diff --git a/packages/interaction-tools/tsconfig.src.json b/packages/interaction-tools/tsconfig.src.json index 2a035d55f9..fc8724305f 100644 --- a/packages/interaction-tools/tsconfig.src.json +++ b/packages/interaction-tools/tsconfig.src.json @@ -8,16 +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" - }, - { - "path": "../error-sink/tsconfig.src.json" - } - ] + } } diff --git a/scripts/checks/report-error-baseline.txt b/scripts/checks/report-error-baseline.txt index a000afd775..207f03ceb0 100644 --- a/scripts/checks/report-error-baseline.txt +++ b/scripts/checks/report-error-baseline.txt @@ -125,7 +125,6 @@ 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-tools/src/tool.ts 4 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 diff --git a/tsconfig.build.json b/tsconfig.build.json index eb75dd66ff..33ac79eddd 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -58,6 +58,9 @@ { "path": "./packages/commands/tsconfig.src.json" }, + { + "path": "./packages/connections-tools/tsconfig.src.json" + }, { "path": "./packages/context-menu/tsconfig.src.json" }, diff --git a/workflows/assistant/src/prompt.ts b/workflows/assistant/src/prompt.ts index cf82b15ea4..69accbb87c 100644 --- a/workflows/assistant/src/prompt.ts +++ b/workflows/assistant/src/prompt.ts @@ -33,14 +33,14 @@ export const ASSISTANT_TOOL_PACKAGE_PINS: readonly ToolPackagePin[] = [ { name: "@corbits/memory-tools", version: "0.0.4" }, { name: "@corbits/capability-tools", version: "0.0.6" }, { name: "@corbits/agent-directory-tools", version: "0.0.6" }, - { name: "@corbits/connections-tools", version: "0.0.10" }, + { name: "@corbits/connections-tools", version: "0.0.11" }, { name: "@corbits/catalog-tools", version: "0.0.6" }, { name: "@corbits/skills-tools", version: "0.0.7" }, { name: "@corbits/mcp-tools", version: "0.0.11" }, - { name: "@corbits/interaction-tools", version: "0.0.8" }, + { name: "@corbits/interaction-tools", version: "0.0.9" }, { name: "@corbits/manus-tools", version: "0.0.11" }, { name: "@corbits/workflow-authoring-tools", version: "0.0.6" }, - { name: "@corbits/access-tools", version: "0.0.4" }, + { name: "@corbits/access-tools", version: "0.0.5" }, ]; /** diff --git a/workflows/code-review/package.json b/workflows/code-review/package.json index 6f93a8e917..f8b07f90a9 100644 --- a/workflows/code-review/package.json +++ b/workflows/code-review/package.json @@ -35,7 +35,7 @@ "test": "bun test" }, "dependencies": { - "@corbits/code-review": "0.0.1" + "@corbits/code-review": "0.0.2" }, "peerDependencies": { "@intx/agent": "0.3.0",