too-many-cooks 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/build/bin/server.js +3 -3
- package/build/bin/server.js.map +1 -1
- package/build/src/backend.d.ts +1 -1
- package/build/src/backend.d.ts.map +1 -1
- package/build/src/backend.js +50 -0
- package/build/src/backend.js.map +1 -1
- package/build/src/cloud-config.d.ts +1 -1
- package/build/src/cloud-config.d.ts.map +1 -1
- package/build/src/cloud-config.js +48 -0
- package/build/src/cloud-config.js.map +1 -1
- package/build/src/config.d.ts +2 -2
- package/build/src/config.d.ts.map +1 -1
- package/build/src/config.js +1 -1
- package/build/src/config.js.map +1 -1
- package/build/src/crypto.d.ts +1 -1
- package/build/src/crypto.d.ts.map +1 -1
- package/build/src/crypto.js +90 -0
- package/build/src/crypto.js.map +1 -1
- package/build/src/db-cloud.d.ts +1 -1
- package/build/src/db-cloud.d.ts.map +1 -1
- package/build/src/db-cloud.js +142 -0
- package/build/src/db-cloud.js.map +1 -1
- package/build/src/db-sqlite.d.ts +1 -1
- package/build/src/db-sqlite.d.ts.map +1 -1
- package/build/src/db-sqlite.js +7 -1
- package/build/src/db-sqlite.js.map +1 -1
- package/build/src/encryption-middleware.d.ts +1 -1
- package/build/src/encryption-middleware.d.ts.map +1 -1
- package/build/src/encryption-middleware.js +144 -0
- package/build/src/encryption-middleware.js.map +1 -1
- package/build/src/index.d.ts +8 -1
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +9 -2
- package/build/src/index.js.map +1 -1
- package/build/src/server.d.ts +3 -3
- package/build/src/server.d.ts.map +1 -1
- package/build/src/server.js +8 -8
- package/build/src/server.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/backend.ts +88 -0
- package/src/cloud-config.ts +84 -0
- package/src/config.ts +2 -2
- package/src/crypto.ts +149 -0
- package/src/db-cloud.ts +305 -0
- package/src/db-sqlite.ts +7 -1
- package/src/encryption-middleware.ts +244 -0
- package/src/index.ts +13 -2
- package/src/server.ts +8 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 NIMBLESITE PTY LTD
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Too Many Cooks
|
|
2
|
+
|
|
3
|
+
Multi-agent coordination MCP server. Lets multiple AI agents safely edit the same codebase simultaneously using file locking, messaging, and shared plans.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Add to Claude Code over HTTP (Streamable HTTP transport)
|
|
9
|
+
claude mcp add --transport http too-many-cooks http://localhost:4040/mcp
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Set `TMC_WORKSPACE` to target a specific workspace folder (defaults to `process.cwd()`).
|
|
13
|
+
|
|
14
|
+
## Packages
|
|
15
|
+
|
|
16
|
+
| Package | Description |
|
|
17
|
+
|---------|-------------|
|
|
18
|
+
| [too-many-cooks](too-many-cooks/) | MCP server + data layer (TypeScript/Node.js) |
|
|
19
|
+
| [too_many_cooks_vscode_extension](too_many_cooks_vscode_extension/) | VSCode extension for monitoring agent coordination |
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- **File locking** - agents acquire/release locks to prevent conflicting edits
|
|
24
|
+
- **Messaging** - agents communicate intent and coordinate via messages
|
|
25
|
+
- **Plans** - agents publish plans so others can see what's happening
|
|
26
|
+
- **Admin dashboard** - VSCode extension with tree views for agents, locks, messages, and plans
|
|
27
|
+
- **Real-time push** - state changes delivered via MCP Streamable HTTP transport
|
|
28
|
+
|
|
29
|
+
## Project Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
too-many-cooks/ # MCP server (TypeScript/Node.js)
|
|
33
|
+
too_many_cooks_vscode_extension/ # VSCode extension (TypeScript)
|
|
34
|
+
docs/ # Specification
|
|
35
|
+
website/ # Documentation website (Eleventy)
|
|
36
|
+
scripts/ # Build/test scripts
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Documentation
|
|
40
|
+
|
|
41
|
+
See the [spec](docs/spec.md) for the full protocol specification.
|
|
42
|
+
|
|
43
|
+
[tmc-mcp.dev](https://tmc-mcp.dev)
|
|
44
|
+
|
|
45
|
+
## License
|
|
46
|
+
|
|
47
|
+
MIT
|
package/build/bin/server.js
CHANGED
|
@@ -11,8 +11,8 @@ import net from "node:net";
|
|
|
11
11
|
import express from "express";
|
|
12
12
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
13
13
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
14
|
-
import { LogLevel, createAdminEventHub, createAgentEventHub, createLoggerWithContext, createLoggingContext, createMcpServerForDb, defaultConfig, getServerPort, getWorkspaceFolder, logLevelName, logTransport, pathJoin, registerAdminRoutes, } from "
|
|
15
|
-
import {
|
|
14
|
+
import { LogLevel, createAdminEventHub, createAgentEventHub, createLoggerWithContext, createLoggingContext, createMcpServerForDb, defaultConfig, getServerPort, getWorkspaceFolder, logLevelName, logTransport, pathJoin, registerAdminRoutes, } from "too-many-cooks-core";
|
|
15
|
+
import { createBackend } from "../src/backend.js";
|
|
16
16
|
/** JSON-RPC bad request error response. */
|
|
17
17
|
const BAD_REQUEST_JSON = '{"jsonrpc":"2.0","error":{"code":-32000,"message":"Bad Request"},"id":null}';
|
|
18
18
|
/** JSON-RPC session-not-found error response (404). */
|
|
@@ -78,7 +78,7 @@ const killExistingProcess = async (port, log) => {
|
|
|
78
78
|
const startServer = async (log) => {
|
|
79
79
|
log.info("Creating server...");
|
|
80
80
|
const cfg = defaultConfig;
|
|
81
|
-
const dbResult =
|
|
81
|
+
const dbResult = createBackend(cfg, log);
|
|
82
82
|
if (!dbResult.ok) {
|
|
83
83
|
throw new Error(dbResult.error);
|
|
84
84
|
}
|
package/build/bin/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../bin/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../bin/server.ts"],"names":[],"mappings":"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"}
|
package/build/src/backend.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Logger, type Result, type TooManyCooksDataConfig, type TooManyCooksDb } from "
|
|
1
|
+
import { type Logger, type Result, type TooManyCooksDataConfig, type TooManyCooksDb } from "too-many-cooks-core";
|
|
2
2
|
/** Check whether cloud mode env vars are present. */
|
|
3
3
|
export declare const isCloudMode: (env: Record<string, string | undefined>) => boolean;
|
|
4
4
|
/** Create a TooManyCooksDb for the active backend (SQLite or cloud). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAGpB,MAAM,
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAmB7B,qDAAqD;AACrD,eAAO,MAAM,WAAW,EAAE,CACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACpC,OAGJ,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,CAC1B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACrC,MAAM,CAAC,cAAc,EAAE,MAAM,CAWjC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/// Backend abstraction — creates a TooManyCooksDb from environment.
|
|
2
|
+
///
|
|
3
|
+
/// If cloud env vars (TMC_API_KEY, TMC_WORKSPACE_ID, TMC_WORKSPACE_SECRET)
|
|
4
|
+
/// are present, creates an encrypted cloud backend. Otherwise, creates SQLite.
|
|
5
|
+
/// Tool handlers are identical regardless of backend.
|
|
6
|
+
import { error, success, } from "too-many-cooks-core";
|
|
7
|
+
import { parseConfig } from "./cloud-config.js";
|
|
8
|
+
import { createCloudDb } from "./db-cloud.js";
|
|
9
|
+
import { createDb } from "./db-sqlite.js";
|
|
10
|
+
import { withEncryption } from "./encryption-middleware.js";
|
|
11
|
+
/** Read process.env without type assertion. */
|
|
12
|
+
const processEnv = () => {
|
|
13
|
+
const result = {};
|
|
14
|
+
for (const key of Object.keys(process.env)) {
|
|
15
|
+
result[key] = process.env[key];
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
/** Environment variable that signals cloud mode. */
|
|
20
|
+
const CLOUD_MODE_ENV_KEY = "TMC_API_KEY";
|
|
21
|
+
/** Check whether cloud mode env vars are present. */
|
|
22
|
+
export const isCloudMode = (env) => {
|
|
23
|
+
const val = env[CLOUD_MODE_ENV_KEY];
|
|
24
|
+
return val !== undefined && val !== "";
|
|
25
|
+
};
|
|
26
|
+
/** Create a TooManyCooksDb for the active backend (SQLite or cloud). */
|
|
27
|
+
export const createBackend = (config, log, env) => {
|
|
28
|
+
const resolvedEnv = env ?? processEnv();
|
|
29
|
+
return isCloudMode(resolvedEnv)
|
|
30
|
+
? createCloudBackend(resolvedEnv, log)
|
|
31
|
+
: createLocalBackend(config, log);
|
|
32
|
+
};
|
|
33
|
+
/** Create a local SQLite backend. */
|
|
34
|
+
const createLocalBackend = (config, log) => {
|
|
35
|
+
log.info("Backend: SQLite (local mode)");
|
|
36
|
+
return createDb(config);
|
|
37
|
+
};
|
|
38
|
+
/** Create an encrypted cloud backend. */
|
|
39
|
+
const createCloudBackend = (env, log) => {
|
|
40
|
+
const configResult = parseConfig(env);
|
|
41
|
+
if (!configResult.ok) {
|
|
42
|
+
return error(configResult.error);
|
|
43
|
+
}
|
|
44
|
+
const cfg = configResult.value;
|
|
45
|
+
log.info("Backend: Cloud (encrypted)", { apiUrl: cfg.apiUrl });
|
|
46
|
+
const rawDb = createCloudDb(cfg.apiUrl, cfg.apiKey, cfg.workspaceId);
|
|
47
|
+
const db = withEncryption(rawDb, cfg.currentKey, cfg.keychain);
|
|
48
|
+
return success(db);
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=backend.js.map
|
package/build/src/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,GAAG;AACH,2EAA2E;AAC3E,+EAA+E;AAC/E,sDAAsD;AAEtD,OAAO,EAKL,KAAK,EACL,OAAO,GACR,MAAM,
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,GAAG;AACH,2EAA2E;AAC3E,+EAA+E;AAC/E,sDAAsD;AAEtD,OAAO,EAKL,KAAK,EACL,OAAO,GACR,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAyB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,+CAA+C;AAC/C,MAAM,UAAU,GAA6C,GAAuC,EAAE;IACpG,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,oDAAoD;AACpD,MAAM,kBAAkB,GAAW,aAAa,CAAC;AAEjD,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAET,CAAC,GAAuC,EAAW,EAAE;IAClE,MAAM,GAAG,GAAuB,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAIY,CACpC,MAA8B,EAC9B,GAAW,EACX,GAAwC,EACR,EAAE;IAClC,MAAM,WAAW,GACf,GAAG,IAAI,UAAU,EAAE,CAAC;IAEtB,OAAO,WAAW,CAAC,WAAW,CAAC;QAC7B,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC;QACtC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,qCAAqC;AACrC,MAAM,kBAAkB,GAGc,CACpC,MAA8B,EAC9B,GAAW,EACqB,EAAE;IAClC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,kBAAkB,GAGc,CACpC,GAAuC,EACvC,GAAW,EACqB,EAAE;IAClC,MAAM,YAAY,GAAqC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAC3D,MAAM,GAAG,GAAqB,YAAY,CAAC,KAAK,CAAC;IAEjD,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAmB,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACrF,MAAM,EAAE,GAAmB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/cloud-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/cloud-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAsB,MAAM,aAAa,CAAC;AAwBnF,iCAAiC;AACjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;CACnC,CAAC;AAuBF,8DAA8D;AAC9D,eAAO,MAAM,WAAW,EAAE,CACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACpC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAsBnC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/// Cloud proxy configuration from environment variables.
|
|
2
|
+
import { error, success } from "too-many-cooks-core";
|
|
3
|
+
import { deriveWorkspaceKey } from "./crypto.js";
|
|
4
|
+
/** Environment variable name for the API key. */
|
|
5
|
+
const ENV_API_KEY = "TMC_API_KEY";
|
|
6
|
+
/** Environment variable name for the workspace ID. */
|
|
7
|
+
const ENV_WORKSPACE_ID = "TMC_WORKSPACE_ID";
|
|
8
|
+
/** Environment variable name for the workspace secret (current). */
|
|
9
|
+
const ENV_WORKSPACE_SECRET = "TMC_WORKSPACE_SECRET";
|
|
10
|
+
/** Environment variable name for the previous workspace secret (rotation). */
|
|
11
|
+
const ENV_WORKSPACE_SECRET_V1 = "TMC_WORKSPACE_SECRET_V1";
|
|
12
|
+
/** Environment variable name for the cloud API URL. */
|
|
13
|
+
const ENV_API_URL = "TMC_API_URL";
|
|
14
|
+
/** Error prefix for missing environment variables. */
|
|
15
|
+
const ERR_MISSING_ENV = "Missing required env var: ";
|
|
16
|
+
/** Default production API URL. */
|
|
17
|
+
const DEFAULT_API_URL = "https://your-project.supabase.co/functions/v1/tmc-api";
|
|
18
|
+
/** Build a keychain from current + optional previous passphrase. */
|
|
19
|
+
const buildKeychain = (currentPassphrase, workspaceId, previousPassphrase) => {
|
|
20
|
+
const currentKey = deriveWorkspaceKey(currentPassphrase, workspaceId);
|
|
21
|
+
const keys = [currentKey];
|
|
22
|
+
if (previousPassphrase !== undefined) {
|
|
23
|
+
keys.push({
|
|
24
|
+
...deriveWorkspaceKey(previousPassphrase, workspaceId),
|
|
25
|
+
version: currentKey.version - 1,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return { keychain: keys, currentKey };
|
|
29
|
+
};
|
|
30
|
+
/** Parse and validate cloud proxy config from environment. */
|
|
31
|
+
export const parseConfig = (env) => {
|
|
32
|
+
const apiKey = env[ENV_API_KEY];
|
|
33
|
+
if (apiKey === undefined || apiKey === "") {
|
|
34
|
+
return error(`${ERR_MISSING_ENV}${ENV_API_KEY}`);
|
|
35
|
+
}
|
|
36
|
+
const workspaceId = env[ENV_WORKSPACE_ID];
|
|
37
|
+
if (workspaceId === undefined || workspaceId === "") {
|
|
38
|
+
return error(`${ERR_MISSING_ENV}${ENV_WORKSPACE_ID}`);
|
|
39
|
+
}
|
|
40
|
+
const secret = env[ENV_WORKSPACE_SECRET];
|
|
41
|
+
if (secret === undefined || secret === "") {
|
|
42
|
+
return error(`${ERR_MISSING_ENV}${ENV_WORKSPACE_SECRET}`);
|
|
43
|
+
}
|
|
44
|
+
const apiUrl = env[ENV_API_URL] ?? DEFAULT_API_URL;
|
|
45
|
+
const { keychain, currentKey } = buildKeychain(secret, workspaceId, env[ENV_WORKSPACE_SECRET_V1]);
|
|
46
|
+
return success({ apiKey, workspaceId, apiUrl, keychain, currentKey });
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=cloud-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-config.js","sourceRoot":"","sources":["../../src/cloud-config.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAe,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cloud-config.js","sourceRoot":"","sources":["../../src/cloud-config.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAe,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAoC,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnF,iDAAiD;AACjD,MAAM,WAAW,GAAW,aAAa,CAAC;AAE1C,sDAAsD;AACtD,MAAM,gBAAgB,GAAW,kBAAkB,CAAC;AAEpD,oEAAoE;AACpE,MAAM,oBAAoB,GAAW,sBAAsB,CAAC;AAE5D,8EAA8E;AAC9E,MAAM,uBAAuB,GAAW,yBAAyB,CAAC;AAElE,uDAAuD;AACvD,MAAM,WAAW,GAAW,aAAa,CAAC;AAE1C,sDAAsD;AACtD,MAAM,eAAe,GAAW,4BAA4B,CAAC;AAE7D,kCAAkC;AAClC,MAAM,eAAe,GACnB,uDAAuD,CAAC;AAW1D,oEAAoE;AACpE,MAAM,aAAa,GAIuD,CACxE,iBAAyB,EACzB,WAAmB,EACnB,kBAAsC,EAC8B,EAAE;IACtE,MAAM,UAAU,GAAiB,kBAAkB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IACpF,MAAM,IAAI,GAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,kBAAkB,CAAC,kBAAkB,EAAE,WAAW,CAAC;YACtD,OAAO,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAEgB,CACtC,GAAuC,EACL,EAAE;IACpC,MAAM,MAAM,GAAuB,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,GAAG,eAAe,GAAG,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,WAAW,GAAuB,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC,GAAG,eAAe,GAAG,gBAAgB,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,MAAM,GAAuB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,GAAG,eAAe,GAAG,oBAAoB,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAW,GAAG,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC;IAC3D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAuE,aAAa,CAChH,MAAM,EACN,WAAW,EACX,GAAG,CAAC,uBAAuB,CAAC,CAC7B,CAAC;IACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC"}
|
package/build/src/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { type TooManyCooksDataConfig, createDataConfig, createDataConfigFromWorkspace, defaultConfig, DEFAULT_PORT as defaultPort, getServerPort, getWorkspaceFolder, resolveDbPath, pathJoin, } from "
|
|
2
|
-
import type { TooManyCooksDataConfig } from "
|
|
1
|
+
export { type TooManyCooksDataConfig, createDataConfig, createDataConfigFromWorkspace, defaultConfig, DEFAULT_PORT as defaultPort, getServerPort, getWorkspaceFolder, resolveDbPath, pathJoin, } from "too-many-cooks-core";
|
|
2
|
+
import type { TooManyCooksDataConfig } from "too-many-cooks-core";
|
|
3
3
|
/** Server configuration type alias for backwards compatibility. */
|
|
4
4
|
export type TooManyCooksConfig = TooManyCooksDataConfig;
|
|
5
5
|
/** Server entry point relative path. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,6BAA6B,EAC7B,aAAa,EACb,YAAY,IAAI,WAAW,EAC3B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACT,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,6BAA6B,EAC7B,aAAa,EACb,YAAY,IAAI,WAAW,EAC3B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wCAAwC;AACxC,eAAO,MAAM,aAAa,EAAE,MAAwB,CAAC;AAErD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAAiC,CAAC"}
|
package/build/src/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// Configuration for Too Many Cooks MCP server.
|
|
2
2
|
///
|
|
3
3
|
/// Re-exports core config and adds local-specific constants.
|
|
4
|
-
export { createDataConfig, createDataConfigFromWorkspace, defaultConfig, DEFAULT_PORT as defaultPort, getServerPort, getWorkspaceFolder, resolveDbPath, pathJoin, } from "
|
|
4
|
+
export { createDataConfig, createDataConfigFromWorkspace, defaultConfig, DEFAULT_PORT as defaultPort, getServerPort, getWorkspaceFolder, resolveDbPath, pathJoin, } from "too-many-cooks-core";
|
|
5
5
|
/** Server entry point relative path. */
|
|
6
6
|
export const SERVER_BINARY = "bin/server.ts";
|
|
7
7
|
/** Node args needed to run the server (tsx loader for TypeScript). */
|
package/build/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,GAAG;AACH,6DAA6D;AAE7D,OAAO,EAEL,gBAAgB,EAChB,6BAA6B,EAC7B,aAAa,EACb,YAAY,IAAI,WAAW,EAC3B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACT,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,GAAG;AACH,6DAA6D;AAE7D,OAAO,EAEL,gBAAgB,EAChB,6BAA6B,EAC7B,aAAa,EACb,YAAY,IAAI,WAAW,EAC3B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAO7B,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAW,eAAe,CAAC;AAErD,sEAAsE;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAsB,CAAC,UAAU,EAAE,KAAK,CAAU,CAAC"}
|
package/build/src/crypto.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,qBAAqB,CAAC;AAmDlE,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG,SAAS,YAAY,EAAE,CAAC;AAE/C,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,EAAE,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,KAChB,YAYJ,CAAC;AAEF;2DAC2D;AAC3D,eAAO,MAAM,OAAO,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,YAAY,KACb,MAkBJ,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,KACf,MAAM,CAAC,MAAM,EAAE,MAAM,CA2BzB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/// E2E encryption module for TMC Cloud.
|
|
2
|
+
///
|
|
3
|
+
/// Zero-knowledge architecture: all crypto happens LOCAL, never on server.
|
|
4
|
+
/// Uses HKDF-SHA256 for key derivation and AES-256-GCM for encryption.
|
|
5
|
+
import { createCipheriv, createDecipheriv, hkdfSync, randomBytes, } from "node:crypto";
|
|
6
|
+
import { error, success } from "too-many-cooks-core";
|
|
7
|
+
/** Current key version for new encryptions. */
|
|
8
|
+
const CURRENT_KEY_VERSION = 1;
|
|
9
|
+
/** AES-256-GCM algorithm identifier. */
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/typedef -- literal const; typedef + prefer-as-const conflict
|
|
11
|
+
const ALGORITHM = "aes-256-gcm";
|
|
12
|
+
/** GCM initialization vector length in bytes. */
|
|
13
|
+
const IV_LENGTH = 12;
|
|
14
|
+
/** GCM authentication tag length in bytes. */
|
|
15
|
+
const AUTH_TAG_LENGTH = 16;
|
|
16
|
+
/** Version byte length in the ciphertext envelope. */
|
|
17
|
+
const VERSION_BYTE_LENGTH = 1;
|
|
18
|
+
/** Offset where IV starts in the ciphertext envelope. */
|
|
19
|
+
const IV_OFFSET = VERSION_BYTE_LENGTH;
|
|
20
|
+
/** Offset where auth tag starts in the ciphertext envelope. */
|
|
21
|
+
const AUTH_TAG_OFFSET = IV_OFFSET + IV_LENGTH;
|
|
22
|
+
/** Offset where ciphertext starts in the ciphertext envelope. */
|
|
23
|
+
const CIPHERTEXT_OFFSET = AUTH_TAG_OFFSET + AUTH_TAG_LENGTH;
|
|
24
|
+
/** HKDF hash algorithm. */
|
|
25
|
+
const HKDF_HASH = "sha256";
|
|
26
|
+
/** HKDF info string for workspace key derivation. */
|
|
27
|
+
const HKDF_INFO = "tmc-cloud-workspace-key-v1";
|
|
28
|
+
/** Derived key length in bytes (256 bits). */
|
|
29
|
+
const HKDF_KEY_LENGTH = 32;
|
|
30
|
+
/** Encoding used for plaintext strings. */
|
|
31
|
+
const TEXT_ENCODING = "utf8";
|
|
32
|
+
/** Encoding used for the ciphertext envelope. */
|
|
33
|
+
const ENVELOPE_ENCODING = "base64";
|
|
34
|
+
/** Error message for empty ciphertext input. */
|
|
35
|
+
const ERR_EMPTY_ENVELOPE = "Empty ciphertext envelope";
|
|
36
|
+
/** Error message prefix for unknown key versions. */
|
|
37
|
+
const ERR_UNKNOWN_VERSION_PREFIX = "Unknown key version: ";
|
|
38
|
+
/** Error message for decryption failure. */
|
|
39
|
+
const ERR_DECRYPT_FAILED = "Decryption failed: invalid key or corrupted data";
|
|
40
|
+
/** Derive a workspace key from a passphrase and workspace ID via HKDF. */
|
|
41
|
+
export const deriveWorkspaceKey = (passphrase, workspaceId) => {
|
|
42
|
+
const key = hkdfSync(HKDF_HASH, Buffer.from(passphrase, TEXT_ENCODING), Buffer.from(workspaceId, TEXT_ENCODING), Buffer.from(HKDF_INFO, TEXT_ENCODING), HKDF_KEY_LENGTH);
|
|
43
|
+
return { version: CURRENT_KEY_VERSION, key: Buffer.from(key) };
|
|
44
|
+
};
|
|
45
|
+
/** Encrypt plaintext to a base64 ciphertext envelope.
|
|
46
|
+
* Format: [version:1][iv:12][authTag:16][ciphertext:N] */
|
|
47
|
+
export const encrypt = (plaintext, wk) => {
|
|
48
|
+
const iv = randomBytes(IV_LENGTH);
|
|
49
|
+
const cipher = createCipheriv(ALGORITHM, wk.key, iv);
|
|
50
|
+
const encrypted = Buffer.concat([
|
|
51
|
+
cipher.update(plaintext, TEXT_ENCODING),
|
|
52
|
+
cipher.final(),
|
|
53
|
+
]);
|
|
54
|
+
const authTag = cipher.getAuthTag();
|
|
55
|
+
const envelope = Buffer.concat([
|
|
56
|
+
Buffer.from([wk.version]),
|
|
57
|
+
iv,
|
|
58
|
+
authTag,
|
|
59
|
+
encrypted,
|
|
60
|
+
]);
|
|
61
|
+
return envelope.toString(ENVELOPE_ENCODING);
|
|
62
|
+
};
|
|
63
|
+
/** Decrypt a base64 ciphertext envelope back to plaintext. */
|
|
64
|
+
export const decrypt = (blob, keychain) => {
|
|
65
|
+
const data = Buffer.from(blob, ENVELOPE_ENCODING);
|
|
66
|
+
const [version] = [data[0]];
|
|
67
|
+
if (version === undefined) {
|
|
68
|
+
return error(ERR_EMPTY_ENVELOPE);
|
|
69
|
+
}
|
|
70
|
+
const iv = data.subarray(IV_OFFSET, AUTH_TAG_OFFSET);
|
|
71
|
+
const authTag = data.subarray(AUTH_TAG_OFFSET, CIPHERTEXT_OFFSET);
|
|
72
|
+
const ciphertext = data.subarray(CIPHERTEXT_OFFSET);
|
|
73
|
+
const wk = keychain.find((wkEntry) => { return wkEntry.version === version; });
|
|
74
|
+
if (wk === undefined) {
|
|
75
|
+
return error(`${ERR_UNKNOWN_VERSION_PREFIX}${String(version)}`);
|
|
76
|
+
}
|
|
77
|
+
const decipher = createDecipheriv(ALGORITHM, wk.key, iv);
|
|
78
|
+
decipher.setAuthTag(authTag);
|
|
79
|
+
try {
|
|
80
|
+
const decrypted = Buffer.concat([
|
|
81
|
+
decipher.update(ciphertext),
|
|
82
|
+
decipher.final(),
|
|
83
|
+
]);
|
|
84
|
+
return success(decrypted.toString(TEXT_ENCODING));
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return error(ERR_DECRYPT_FAILED);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=crypto.js.map
|
package/build/src/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,GAAG;AACH,2EAA2E;AAC3E,uEAAuE;AAEvE,OAAO,EAGL,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAe,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/build/src/db-cloud.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TooManyCooksDb } from "
|
|
1
|
+
import type { TooManyCooksDb } from "too-many-cooks-core";
|
|
2
2
|
/** Create a cloud-backed TooManyCooksDb that calls the Edge Function. */
|
|
3
3
|
export declare const createCloudDb: (apiUrl: string, apiKey: string, workspaceId: string) => TooManyCooksDb;
|
|
4
4
|
//# sourceMappingURL=db-cloud.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-cloud.d.ts","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,cAAc,EAOf,MAAM,
|
|
1
|
+
{"version":3,"file":"db-cloud.d.ts","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,cAAc,EAOf,MAAM,qBAAqB,CAAC;AA+Q7B,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,KAChB,cAaJ,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/// Cloud TooManyCooksDb implementation.
|
|
2
|
+
///
|
|
3
|
+
/// Makes HTTPS calls to the TMC Cloud Edge Function instead of SQLite queries.
|
|
4
|
+
/// Each method maps 1:1 to a POST endpoint on the Edge Function.
|
|
5
|
+
import { agentIdentityFromJson, agentPlanFromJson, agentRegistrationFromJson, fileLockFromJson, lockResultFromJson, messageFromJson, } from "too-many-cooks-core";
|
|
6
|
+
/** Content-Type header value for JSON requests. */
|
|
7
|
+
const CONTENT_TYPE_JSON = "application/json";
|
|
8
|
+
/** Authorization header prefix. */
|
|
9
|
+
const AUTH_BEARER_PREFIX = "Bearer ";
|
|
10
|
+
/** Custom header for workspace ID. */
|
|
11
|
+
const WORKSPACE_ID_HEADER = "X-Workspace-Id";
|
|
12
|
+
/** HTTP method for all API calls. */
|
|
13
|
+
const HTTP_METHOD = "POST";
|
|
14
|
+
/** Error code for network/HTTP failures. */
|
|
15
|
+
const ERR_NETWORK = "NETWORK_ERROR";
|
|
16
|
+
/** Default error message when API returns no details. */
|
|
17
|
+
const ERR_UNKNOWN_API = "Unknown API error";
|
|
18
|
+
/** Content-Type header key. */
|
|
19
|
+
const CONTENT_TYPE_HEADER = "Content-Type";
|
|
20
|
+
/** Authorization header key. */
|
|
21
|
+
const AUTHORIZATION_HEADER = "Authorization";
|
|
22
|
+
/** API endpoint names. Mirror TooManyCooksDb interface methods. */
|
|
23
|
+
const EP_REGISTER = "register";
|
|
24
|
+
const EP_AUTHENTICATE = "authenticate";
|
|
25
|
+
const EP_LOOKUP_BY_KEY = "lookupByKey";
|
|
26
|
+
const EP_LIST_AGENTS = "listAgents";
|
|
27
|
+
const EP_ACQUIRE_LOCK = "acquireLock";
|
|
28
|
+
const EP_RELEASE_LOCK = "releaseLock";
|
|
29
|
+
const EP_FORCE_RELEASE_LOCK = "forceReleaseLock";
|
|
30
|
+
const EP_QUERY_LOCK = "queryLock";
|
|
31
|
+
const EP_LIST_LOCKS = "listLocks";
|
|
32
|
+
const EP_RENEW_LOCK = "renewLock";
|
|
33
|
+
const EP_SEND_MESSAGE = "sendMessage";
|
|
34
|
+
const EP_GET_MESSAGES = "getMessages";
|
|
35
|
+
const EP_MARK_READ = "markRead";
|
|
36
|
+
const EP_UPDATE_PLAN = "updatePlan";
|
|
37
|
+
const EP_GET_PLAN = "getPlan";
|
|
38
|
+
const EP_LIST_PLANS = "listPlans";
|
|
39
|
+
const EP_LIST_ALL_MESSAGES = "listAllMessages";
|
|
40
|
+
const EP_ACTIVATE = "activate";
|
|
41
|
+
const EP_DEACTIVATE = "deactivate";
|
|
42
|
+
const EP_DEACTIVATE_ALL = "deactivateAll";
|
|
43
|
+
const EP_CLOSE = "close";
|
|
44
|
+
const EP_ADMIN_DELETE_LOCK = "adminDeleteLock";
|
|
45
|
+
const EP_ADMIN_DELETE_AGENT = "adminDeleteAgent";
|
|
46
|
+
const EP_ADMIN_RESET_KEY = "adminResetKey";
|
|
47
|
+
const EP_ADMIN_SEND_MESSAGE = "adminSendMessage";
|
|
48
|
+
const EP_ADMIN_RESET = "adminReset";
|
|
49
|
+
/** Type guard: value is a plain object (Record). */
|
|
50
|
+
const isRecord = (val) => typeof val === "object" && val !== null && !Array.isArray(val);
|
|
51
|
+
/** Type guard: validates an unknown JSON payload is an ApiResponse. */
|
|
52
|
+
const isApiResponse = (val) => isRecord(val) && typeof val.ok === "boolean";
|
|
53
|
+
/** Extract a DbError from an API error response. */
|
|
54
|
+
const extractDbError = (body) => ({
|
|
55
|
+
code: body.error?.code ?? ERR_NETWORK,
|
|
56
|
+
message: body.error?.message ?? ERR_UNKNOWN_API,
|
|
57
|
+
});
|
|
58
|
+
/** Value extractor: ignores payload, returns void. */
|
|
59
|
+
const extractVoid = () => undefined;
|
|
60
|
+
/** Value extractor: narrows to string via type guard. */
|
|
61
|
+
const extractString = (val) => typeof val === "string" ? val : "";
|
|
62
|
+
/** Create a value extractor that applies a mapper to a Record. */
|
|
63
|
+
const mapped = (mapper) => (val) => mapper(isRecord(val) ? val : {});
|
|
64
|
+
/** Create a value extractor that maps an array of Records. */
|
|
65
|
+
const mappedArray = (mapper) => (val) => Array.isArray(val)
|
|
66
|
+
? val.map((item) => mapper(isRecord(item) ? item : {}))
|
|
67
|
+
: [];
|
|
68
|
+
/** Create a value extractor for nullable single-item responses. */
|
|
69
|
+
const mappedNullable = (mapper) => (val) => val === null || val === undefined ? null : mapper(isRecord(val) ? val : {});
|
|
70
|
+
/** Generic API response parser. Replaces 5 specialized parse functions. */
|
|
71
|
+
const parseApiResponse = (body, extract) => body.ok
|
|
72
|
+
? { ok: true, value: extract(body.value) }
|
|
73
|
+
: { ok: false, error: extractDbError(body) };
|
|
74
|
+
/** Create an HTTP API caller bound to a specific endpoint. */
|
|
75
|
+
const createApiCaller = (apiUrl, apiKey, workspaceId) => async (method, args) => {
|
|
76
|
+
const response = await fetch(`${apiUrl}/${method}`, {
|
|
77
|
+
method: HTTP_METHOD,
|
|
78
|
+
headers: {
|
|
79
|
+
[CONTENT_TYPE_HEADER]: CONTENT_TYPE_JSON,
|
|
80
|
+
[AUTHORIZATION_HEADER]: `${AUTH_BEARER_PREFIX}${apiKey}`,
|
|
81
|
+
[WORKSPACE_ID_HEADER]: workspaceId,
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify(args),
|
|
84
|
+
});
|
|
85
|
+
const json = await response.json();
|
|
86
|
+
return isApiResponse(json)
|
|
87
|
+
? json
|
|
88
|
+
: { ok: false, error: { code: ERR_NETWORK, message: ERR_UNKNOWN_API } };
|
|
89
|
+
};
|
|
90
|
+
/** Build the identity/auth methods for TooManyCooksDb. */
|
|
91
|
+
const buildIdentityMethods = (call) => ({
|
|
92
|
+
register: async (agentName) => parseApiResponse(await call(EP_REGISTER, { agentName }), mapped(agentRegistrationFromJson)),
|
|
93
|
+
authenticate: async (agentName, agentKey) => parseApiResponse(await call(EP_AUTHENTICATE, { agentName, agentKey }), mapped(agentIdentityFromJson)),
|
|
94
|
+
lookupByKey: async (agentKey) => parseApiResponse(await call(EP_LOOKUP_BY_KEY, { agentKey }), extractString),
|
|
95
|
+
listAgents: async () => parseApiResponse(await call(EP_LIST_AGENTS, {}), mappedArray(agentIdentityFromJson)),
|
|
96
|
+
activate: async (agentName) => parseApiResponse(await call(EP_ACTIVATE, { agentName }), extractVoid),
|
|
97
|
+
deactivate: async (agentName) => parseApiResponse(await call(EP_DEACTIVATE, { agentName }), extractVoid),
|
|
98
|
+
deactivateAll: async () => parseApiResponse(await call(EP_DEACTIVATE_ALL, {}), extractVoid),
|
|
99
|
+
close: async () => parseApiResponse(await call(EP_CLOSE, {}), extractVoid),
|
|
100
|
+
});
|
|
101
|
+
/** Build the lock methods for TooManyCooksDb. */
|
|
102
|
+
const buildLockMethods = (call) => ({
|
|
103
|
+
acquireLock: async (filePath, agentName, agentKey, reason, timeoutMs) => parseApiResponse(await call(EP_ACQUIRE_LOCK, { filePath, agentName, agentKey, reason, timeoutMs }), mapped(lockResultFromJson)),
|
|
104
|
+
releaseLock: async (fp, an, ak) => parseApiResponse(await call(EP_RELEASE_LOCK, { filePath: fp, agentName: an, agentKey: ak }), extractVoid),
|
|
105
|
+
forceReleaseLock: async (fp, an, ak) => parseApiResponse(await call(EP_FORCE_RELEASE_LOCK, { filePath: fp, agentName: an, agentKey: ak }), extractVoid),
|
|
106
|
+
queryLock: async (filePath) => parseApiResponse(await call(EP_QUERY_LOCK, { filePath }), mappedNullable(fileLockFromJson)),
|
|
107
|
+
listLocks: async () => parseApiResponse(await call(EP_LIST_LOCKS, {}), mappedArray(fileLockFromJson)),
|
|
108
|
+
renewLock: async (fp, an, ak, timeoutMs) => parseApiResponse(await call(EP_RENEW_LOCK, { filePath: fp, agentName: an, agentKey: ak, timeoutMs }), extractVoid),
|
|
109
|
+
});
|
|
110
|
+
/** Build the message methods for TooManyCooksDb. */
|
|
111
|
+
const buildMessageMethods = (call) => ({
|
|
112
|
+
sendMessage: async (fromAgent, fromKey, toAgent, content) => parseApiResponse(await call(EP_SEND_MESSAGE, { fromAgent, fromKey, toAgent, content }), extractString),
|
|
113
|
+
getMessages: async (agentName, agentKey, options) => parseApiResponse(await call(EP_GET_MESSAGES, { agentName, agentKey, unreadOnly: options?.unreadOnly }), mappedArray(messageFromJson)),
|
|
114
|
+
markRead: async (messageId, agentName, agentKey) => parseApiResponse(await call(EP_MARK_READ, { messageId, agentName, agentKey }), extractVoid),
|
|
115
|
+
listAllMessages: async () => parseApiResponse(await call(EP_LIST_ALL_MESSAGES, {}), mappedArray(messageFromJson)),
|
|
116
|
+
});
|
|
117
|
+
/** Build the plan methods for TooManyCooksDb. */
|
|
118
|
+
const buildPlanMethods = (call) => ({
|
|
119
|
+
updatePlan: async (agentName, agentKey, goal, currentTask) => parseApiResponse(await call(EP_UPDATE_PLAN, { agentName, agentKey, goal, currentTask }), extractVoid),
|
|
120
|
+
getPlan: async (agentName) => parseApiResponse(await call(EP_GET_PLAN, { agentName }), mappedNullable(agentPlanFromJson)),
|
|
121
|
+
listPlans: async () => parseApiResponse(await call(EP_LIST_PLANS, {}), mappedArray(agentPlanFromJson)),
|
|
122
|
+
});
|
|
123
|
+
/** Build the admin methods for TooManyCooksDb. */
|
|
124
|
+
const buildAdminMethods = (call) => ({
|
|
125
|
+
adminDeleteLock: async (filePath) => parseApiResponse(await call(EP_ADMIN_DELETE_LOCK, { filePath }), extractVoid),
|
|
126
|
+
adminDeleteAgent: async (agentName) => parseApiResponse(await call(EP_ADMIN_DELETE_AGENT, { agentName }), extractVoid),
|
|
127
|
+
adminResetKey: async (agentName) => parseApiResponse(await call(EP_ADMIN_RESET_KEY, { agentName }), mapped(agentRegistrationFromJson)),
|
|
128
|
+
adminSendMessage: async (fromAgent, toAgent, content) => parseApiResponse(await call(EP_ADMIN_SEND_MESSAGE, { fromAgent, toAgent, content }), extractString),
|
|
129
|
+
adminReset: async () => parseApiResponse(await call(EP_ADMIN_RESET, {}), extractVoid),
|
|
130
|
+
});
|
|
131
|
+
/** Create a cloud-backed TooManyCooksDb that calls the Edge Function. */
|
|
132
|
+
export const createCloudDb = (apiUrl, apiKey, workspaceId) => {
|
|
133
|
+
const call = createApiCaller(apiUrl, apiKey, workspaceId);
|
|
134
|
+
return {
|
|
135
|
+
...buildIdentityMethods(call),
|
|
136
|
+
...buildLockMethods(call),
|
|
137
|
+
...buildMessageMethods(call),
|
|
138
|
+
...buildPlanMethods(call),
|
|
139
|
+
...buildAdminMethods(call),
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=db-cloud.js.map
|