cotal-ai 0.99.0 → 0.99.3
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/package.json +18 -18
- package/seeded-connectors/claude/dist/index.js +23 -12
- package/seeded-connectors/claude/dist/mcp.cjs +50 -14
- package/seeded-connectors/claude/dist/mcp.d.ts.map +1 -1
- package/seeded-connectors/claude/dist/setup.d.ts.map +1 -1
- package/seeded-connectors/claude/package.json +1 -1
- package/seeded-connectors/codex/dist/host.js +48 -13
- package/seeded-connectors/codex/package.json +1 -1
- package/seeded-connectors/hermes/dist/launch.js +48 -13
- package/seeded-connectors/hermes/package.json +1 -1
- package/seeded-connectors/hermes/plugin/cotal/_sidecar/standalone.cjs +48 -13
- package/seeded-connectors/jcode/dist/host.js +48 -13
- package/seeded-connectors/jcode/dist/mcp.js +8 -8
- package/seeded-connectors/jcode/package.json +1 -1
- package/seeded-connectors/opencode/dist/plugin/index.js +48 -13
- package/seeded-connectors/opencode/package.json +1 -1
- package/seeded-connectors/pi/dist/index.js +8 -8
- package/seeded-connectors/pi/dist/standalone.js +48 -13
- package/seeded-connectors/pi/package.json +1 -1
- package/seeded-connectors/web/package.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cotal-ai",
|
|
3
|
-
"version": "0.99.
|
|
3
|
+
"version": "0.99.3",
|
|
4
4
|
"description": "Cotal — lateral agent coordination over NATS. Run `npx cotal-ai` for the CLI.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -33,26 +33,26 @@
|
|
|
33
33
|
"node": ">=22"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@cotal-ai/auth": "0.99.
|
|
37
|
-
"@cotal-ai/cli": "0.99.
|
|
38
|
-
"@cotal-ai/connector-core": "0.99.
|
|
39
|
-
"@cotal-ai/core": "0.99.
|
|
40
|
-
"@cotal-ai/delivery": "0.99.
|
|
41
|
-
"@cotal-ai/manager": "0.99.
|
|
42
|
-
"@cotal-ai/runtime": "0.99.
|
|
43
|
-
"@cotal-ai/seat": "0.99.
|
|
44
|
-
"@cotal-ai/workspace": "0.99.
|
|
36
|
+
"@cotal-ai/auth": "0.99.3",
|
|
37
|
+
"@cotal-ai/cli": "0.99.3",
|
|
38
|
+
"@cotal-ai/connector-core": "0.99.3",
|
|
39
|
+
"@cotal-ai/core": "0.99.3",
|
|
40
|
+
"@cotal-ai/delivery": "0.99.3",
|
|
41
|
+
"@cotal-ai/manager": "0.99.3",
|
|
42
|
+
"@cotal-ai/runtime": "0.99.3",
|
|
43
|
+
"@cotal-ai/seat": "0.99.3",
|
|
44
|
+
"@cotal-ai/workspace": "0.99.3"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@cotal-ai/connector-claude-code": "0.99.
|
|
48
|
-
"@cotal-ai/connector-codex": "0.99.
|
|
49
|
-
"@cotal-ai/connector-hermes": "0.99.
|
|
50
|
-
"@cotal-ai/connector-jcode": "0.99.
|
|
51
|
-
"@cotal-ai/connector-opencode": "0.99.
|
|
52
|
-
"@cotal-ai/linear": "0.99.
|
|
53
|
-
"@cotal-ai/pi": "0.99.
|
|
47
|
+
"@cotal-ai/connector-claude-code": "0.99.3",
|
|
48
|
+
"@cotal-ai/connector-codex": "0.99.3",
|
|
49
|
+
"@cotal-ai/connector-hermes": "0.99.3",
|
|
50
|
+
"@cotal-ai/connector-jcode": "0.99.3",
|
|
51
|
+
"@cotal-ai/connector-opencode": "0.99.3",
|
|
52
|
+
"@cotal-ai/linear": "0.99.3",
|
|
53
|
+
"@cotal-ai/pi": "0.99.3",
|
|
54
54
|
"@cotal-ai/smoke-kit": "0.0.0",
|
|
55
|
-
"@cotal-ai/web": "0.99.
|
|
55
|
+
"@cotal-ai/web": "0.99.3",
|
|
56
56
|
"@nats-io/jetstream": "^3.4.0",
|
|
57
57
|
"@nats-io/transport-node": "^3.4.0",
|
|
58
58
|
"typescript": "^5.9.3"
|
|
@@ -23677,9 +23677,14 @@ function desktopEntry(cotal) {
|
|
|
23677
23677
|
...process.env.COTAL_HOME ? { env: { COTAL_HOME: process.env.COTAL_HOME } } : {}
|
|
23678
23678
|
};
|
|
23679
23679
|
}
|
|
23680
|
-
function
|
|
23680
|
+
function hostedConnector(s) {
|
|
23681
|
+
const next = s.hostedConnector ? `add ${s.hostedConnector} under Settings > Connectors > Add custom connector` : s.unread ? `its hosted connector could not be read (${s.unread})` : `"${s.space}" advertises no hosted connector`;
|
|
23682
|
+
return `chat joins signed-in space "${s.space}" only through a hosted connector: ${next}`;
|
|
23683
|
+
}
|
|
23684
|
+
function desktop(cotal, add, signedIn) {
|
|
23681
23685
|
const path = desktopConfigPath();
|
|
23682
23686
|
if (!path || !existsSync3(dirname2(path))) return void 0;
|
|
23687
|
+
if (signedIn) return `Claude Desktop ${hostedConnector(signedIn)}`;
|
|
23683
23688
|
if (!add && readDesktopEntry(path) === void 0) return void 0;
|
|
23684
23689
|
const state = writeDesktopEntry(path, desktopEntry(cotal));
|
|
23685
23690
|
return `Claude Desktop ${state}${state === "current" ? "" : "; quit and reopen Claude Desktop to load it"}`;
|
|
@@ -23872,6 +23877,7 @@ ${update.output}`);
|
|
|
23872
23877
|
verify(name, scope, expectedVersion);
|
|
23873
23878
|
}
|
|
23874
23879
|
function refreshInstalls(name, entries, version2) {
|
|
23880
|
+
const warnings = [];
|
|
23875
23881
|
for (const entry of entries) {
|
|
23876
23882
|
const scope = entry.scope;
|
|
23877
23883
|
if (scope !== "user" && scope !== "local" && scope !== "project")
|
|
@@ -23880,13 +23886,17 @@ function refreshInstalls(name, entries, version2) {
|
|
|
23880
23886
|
if (typeof cwd !== "string") throw new Error(`${name}@${MARKETPLACE} (${scope} scope) has no project path`);
|
|
23881
23887
|
if (!statSync2(cwd, { throwIfNoEntry: false })?.isDirectory()) continue;
|
|
23882
23888
|
if (resolvedPluginCurrent(entry, version2, name)) continue;
|
|
23889
|
+
const where = scope === "user" ? "user scope" : `${scope} scope, ${cwd}`;
|
|
23883
23890
|
const update = commandIn(cwd, "plugin", "update", `${name}@${MARKETPLACE}`, "--scope", scope);
|
|
23884
|
-
if (update.status !== 0) throw new Error(`plugin update failed (${name}, ${
|
|
23891
|
+
if (update.status !== 0) throw new Error(`plugin update failed (${name}, ${where}):
|
|
23885
23892
|
${update.output}`);
|
|
23886
23893
|
const current = listPlugins(cwd).find((candidate) => candidate.id === entry.id && candidate.scope === scope && (scope === "user" || candidate.projectPath === entry.projectPath));
|
|
23887
|
-
if (
|
|
23888
|
-
|
|
23894
|
+
if (current && resolvedPluginCurrent(current, version2, name)) continue;
|
|
23895
|
+
const stale = `${name}@${MARKETPLACE} (${where}) did not load the updated plugin ${version2}`;
|
|
23896
|
+
if (scope === "user") throw new Error(stale);
|
|
23897
|
+
warnings.push(`warning: ${stale}; to remove it, run \`claude plugin uninstall ${name}@${MARKETPLACE} --scope ${scope}\` in that directory`);
|
|
23889
23898
|
}
|
|
23899
|
+
return warnings;
|
|
23890
23900
|
}
|
|
23891
23901
|
function resolvedPluginCurrent(entry, version2, name = "cotal") {
|
|
23892
23902
|
const sourceRoot = name === "cotal" ? PACKAGE_ROOT : join4(marketplaceDir(), name);
|
|
@@ -23972,7 +23982,7 @@ function pluginRow(entries, { version: version2 }) {
|
|
|
23972
23982
|
if (installs.some((entry) => entry.scope === "user")) return row("ok", "current (user scope)");
|
|
23973
23983
|
return row("ok", `current (${installs.length} install${installs.length === 1 ? "" : "s"})`);
|
|
23974
23984
|
}
|
|
23975
|
-
function desktopRow() {
|
|
23985
|
+
function desktopRow(signedIn) {
|
|
23976
23986
|
const path = desktopConfigPath();
|
|
23977
23987
|
if (!path || !existsSync3(dirname2(path))) return void 0;
|
|
23978
23988
|
const row = (state, text) => ({ label: "Claude Desktop", state, text });
|
|
@@ -23982,6 +23992,7 @@ function desktopRow() {
|
|
|
23982
23992
|
} catch (e) {
|
|
23983
23993
|
return row("error", e.message);
|
|
23984
23994
|
}
|
|
23995
|
+
if (signedIn) return entry === void 0 ? row("off", hostedConnector(signedIn)) : row("warn", `added, but Desktop ${hostedConnector(signedIn)}`);
|
|
23985
23996
|
if (entry === void 0) return row("off", "not added \xB7 run `cotal setup`");
|
|
23986
23997
|
const server = entry.args;
|
|
23987
23998
|
const expected = join4(marketplaceDir(), "cotal", "dist", "mcp.cjs");
|
|
@@ -24019,11 +24030,11 @@ var claudeSetupProvider = {
|
|
|
24019
24030
|
title: "Install the Claude Code plugin",
|
|
24020
24031
|
explain: "Installs Cotal messaging for Claude Code, including supported local sessions in Desktop's Code tab. Reopen Claude after setup.",
|
|
24021
24032
|
context: [DOCS_URL],
|
|
24022
|
-
run({ cotal }) {
|
|
24033
|
+
run({ cotal, signedIn }) {
|
|
24023
24034
|
return withPluginLock(() => {
|
|
24024
24035
|
const version2 = materializeCotal(cotal);
|
|
24025
24036
|
install("cotal", "user", version2);
|
|
24026
|
-
const app = desktop(cotal, true);
|
|
24037
|
+
const app = desktop(cotal, true, signedIn);
|
|
24027
24038
|
const removed = retireProjectInstalls();
|
|
24028
24039
|
const replaced = removed ? `, replacing ${removed} project install${removed === 1 ? "" : "s"}` : "";
|
|
24029
24040
|
return `cotal@${MARKETPLACE} (user scope${replaced})${app ? `; ${app}` : ""}`;
|
|
@@ -24049,12 +24060,12 @@ var claudeSetupProvider = {
|
|
|
24049
24060
|
if (installs.length || skillInstalls.length) writeMarketplace();
|
|
24050
24061
|
const parts = [];
|
|
24051
24062
|
if (installs.length) {
|
|
24052
|
-
refreshInstalls("cotal", installs, version2);
|
|
24053
|
-
parts.push(`cotal@${MARKETPLACE} ${version2}; reload plugins or reopen Claude to load it in running sessions
|
|
24063
|
+
const warnings = refreshInstalls("cotal", installs, version2);
|
|
24064
|
+
parts.push(`cotal@${MARKETPLACE} ${version2}; reload plugins or reopen Claude to load it in running sessions`, ...warnings);
|
|
24054
24065
|
}
|
|
24055
24066
|
if (skillInstalls.length) {
|
|
24056
|
-
refreshInstalls("cotal-skills", skillInstalls, skills.version);
|
|
24057
|
-
parts.push(`cotal-skills@${MARKETPLACE} ${skills.version}
|
|
24067
|
+
const warnings = refreshInstalls("cotal-skills", skillInstalls, skills.version);
|
|
24068
|
+
parts.push(`cotal-skills@${MARKETPLACE} ${skills.version}`, ...warnings);
|
|
24058
24069
|
}
|
|
24059
24070
|
const desktopText = app ? desktop(cotal, false) : void 0;
|
|
24060
24071
|
if (desktopText) parts.push(desktopText);
|
|
@@ -24105,7 +24116,7 @@ var claudeSetupProvider = {
|
|
|
24105
24116
|
},
|
|
24106
24117
|
status(input) {
|
|
24107
24118
|
const plugins = pluginList();
|
|
24108
|
-
const app = desktopRow();
|
|
24119
|
+
const app = desktopRow(input.signedIn);
|
|
24109
24120
|
return [pluginRow(plugins, input), ...app ? [app] : [], skillsRow(plugins, input)];
|
|
24110
24121
|
}
|
|
24111
24122
|
};
|