cotal-ai 0.91.0 → 0.92.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/dist/run.js +4 -7
- package/package.json +17 -17
- package/seeded-connectors/claude/dist/index.js +47 -32
- package/seeded-connectors/claude/dist/mcp.cjs +842 -640
- package/seeded-connectors/claude/dist/mcp.d.ts.map +1 -1
- package/seeded-connectors/claude/dist/monitor.cjs +14 -3
- package/seeded-connectors/claude/dist/setup.d.ts.map +1 -1
- package/seeded-connectors/claude/dist/wake-feed.d.ts +3 -2
- package/seeded-connectors/claude/dist/wake-feed.d.ts.map +1 -1
- package/seeded-connectors/claude/hooks/native-wake.js +20 -3
- package/seeded-connectors/claude/package.json +2 -2
- package/seeded-connectors/codex/dist/host.d.ts.map +1 -1
- package/seeded-connectors/codex/dist/host.js +896 -710
- package/seeded-connectors/codex/dist/index.js +1 -1
- package/seeded-connectors/codex/package.json +1 -1
- package/seeded-connectors/hermes/dist/index.js +1 -1
- package/seeded-connectors/hermes/dist/launch.js +812 -624
- package/seeded-connectors/hermes/package.json +1 -1
- package/seeded-connectors/hermes/plugin/cotal/_sidecar/standalone.cjs +809 -624
- package/seeded-connectors/jcode/dist/host.d.ts.map +1 -1
- package/seeded-connectors/jcode/dist/host.js +818 -632
- package/seeded-connectors/jcode/dist/index.js +1 -1
- package/seeded-connectors/jcode/dist/mcp.js +578 -534
- package/seeded-connectors/jcode/package.json +1 -1
- package/seeded-connectors/opencode/dist/index.js +1 -1
- package/seeded-connectors/opencode/dist/plugin/index.js +821 -631
- package/seeded-connectors/opencode/dist/plugin.d.ts.map +1 -1
- package/seeded-connectors/opencode/dist/plugin2.d.ts.map +1 -1
- package/seeded-connectors/opencode/package.json +1 -1
- package/seeded-connectors/pi/dist/index.js +194 -155
- package/seeded-connectors/pi/dist/standalone.js +816 -631
- package/seeded-connectors/pi/package.json +1 -1
- package/seeded-connectors/web/dist/web.d.ts +3 -0
- package/seeded-connectors/web/dist/web.d.ts.map +1 -1
- package/seeded-connectors/web/dist/web.js +19 -3
- package/seeded-connectors/web/dist/web.js.map +1 -1
- package/seeded-connectors/web/package.json +1 -1
package/dist/run.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// NOTE: registration order across these imports is NOT guaranteed (tsx's entry interop can
|
|
13
13
|
// evaluate the smaller daemon graphs first) — display order is a non-goal here; `help` ranks
|
|
14
14
|
// its groups explicitly (GROUP_ORDER in @cotal-ai/cli).
|
|
15
|
-
import { runCli } from "@cotal-ai/cli"; // self-registers the base surface incl. spawn (foreground + --detach) / stop / ps / attach
|
|
15
|
+
import { runCli, stdoutError } from "@cotal-ai/cli"; // self-registers the base surface incl. spawn (foreground + --detach) / stop / ps / attach
|
|
16
16
|
import "@cotal-ai/manager"; // self-registers `supervise` — the agent-supervisor daemon
|
|
17
17
|
import "@cotal-ai/delivery"; // self-registers `deliver` — the server-side Plane-3 delivery daemon
|
|
18
18
|
import "@cotal-ai/runtime"; // self-registers `run` — the workflow-run operator surface (start/resume/ps/journal/answer)
|
|
@@ -34,12 +34,9 @@ import { registry } from "@cotal-ai/core";
|
|
|
34
34
|
// A CLI must exit quietly when its stdout is closed early — piped to `head`, a pager that quits,
|
|
35
35
|
// or a shell's process substitution (`source <(cotal completion script bash)`). Node otherwise turns the
|
|
36
36
|
// closed-pipe write into a fatal unhandled 'error' event with a stack trace. Mirror SIGPIPE: exit
|
|
37
|
-
// 0.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
process.exit(0);
|
|
41
|
-
throw e;
|
|
42
|
-
});
|
|
37
|
+
// 0. A command that must close something first, such as a chat session, owns stdout's errors while
|
|
38
|
+
// it runs, and this listener stands down for it. Registered before any command can write.
|
|
39
|
+
process.stdout.on("error", stdoutError);
|
|
43
40
|
// The four agent connectors (claude/opencode/hermes/pi) are NOT imported here: they are removable,
|
|
44
41
|
// install-seeded `cotal ext` plugins loaded through the manifest, exactly like a third-party
|
|
45
42
|
// connector (and like the `@cotal-ai/orca` runtime already is). `runCli` seeds them on first run and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cotal-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.92.0",
|
|
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,25 +33,25 @@
|
|
|
33
33
|
"node": ">=22"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@cotal-ai/auth": "0.
|
|
37
|
-
"@cotal-ai/cli": "0.
|
|
38
|
-
"@cotal-ai/connector-core": "0.
|
|
39
|
-
"@cotal-ai/core": "0.
|
|
40
|
-
"@cotal-ai/delivery": "0.
|
|
41
|
-
"@cotal-ai/manager": "0.
|
|
42
|
-
"@cotal-ai/runtime": "0.
|
|
43
|
-
"@cotal-ai/workspace": "0.
|
|
36
|
+
"@cotal-ai/auth": "0.92.0",
|
|
37
|
+
"@cotal-ai/cli": "0.92.0",
|
|
38
|
+
"@cotal-ai/connector-core": "0.92.0",
|
|
39
|
+
"@cotal-ai/core": "0.92.0",
|
|
40
|
+
"@cotal-ai/delivery": "0.92.0",
|
|
41
|
+
"@cotal-ai/manager": "0.92.0",
|
|
42
|
+
"@cotal-ai/runtime": "0.92.0",
|
|
43
|
+
"@cotal-ai/workspace": "0.92.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@cotal-ai/connector-claude-code": "0.
|
|
47
|
-
"@cotal-ai/connector-codex": "0.
|
|
48
|
-
"@cotal-ai/connector-hermes": "0.
|
|
49
|
-
"@cotal-ai/connector-jcode": "0.
|
|
50
|
-
"@cotal-ai/connector-opencode": "0.
|
|
51
|
-
"@cotal-ai/linear": "0.
|
|
52
|
-
"@cotal-ai/pi": "0.
|
|
46
|
+
"@cotal-ai/connector-claude-code": "0.92.0",
|
|
47
|
+
"@cotal-ai/connector-codex": "0.92.0",
|
|
48
|
+
"@cotal-ai/connector-hermes": "0.92.0",
|
|
49
|
+
"@cotal-ai/connector-jcode": "0.92.0",
|
|
50
|
+
"@cotal-ai/connector-opencode": "0.92.0",
|
|
51
|
+
"@cotal-ai/linear": "0.92.0",
|
|
52
|
+
"@cotal-ai/pi": "0.92.0",
|
|
53
53
|
"@cotal-ai/smoke-kit": "0.0.0",
|
|
54
|
-
"@cotal-ai/web": "0.
|
|
54
|
+
"@cotal-ai/web": "0.92.0",
|
|
55
55
|
"@nats-io/jetstream": "^3.4.0",
|
|
56
56
|
"@nats-io/transport-node": "^3.4.0",
|
|
57
57
|
"typescript": "^5.9.3"
|
|
@@ -6892,6 +6892,7 @@ import { homedir as homedir3 } from "node:os";
|
|
|
6892
6892
|
import { dirname as dirname2, join as join4, relative } from "node:path";
|
|
6893
6893
|
import { fileURLToPath } from "node:url";
|
|
6894
6894
|
import {
|
|
6895
|
+
acquireLock,
|
|
6895
6896
|
globalConfigPath,
|
|
6896
6897
|
mcpServerProblem as mcpServerProblem2,
|
|
6897
6898
|
registry as registry3,
|
|
@@ -21781,7 +21782,7 @@ config(en_default());
|
|
|
21781
21782
|
import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAllow3, AmbiguousPeerError, peerLabel as peerLabel4, assertLifecycleToken as assertLifecycleToken3, isPermissionDenied as isPermissionDenied2, renderLifecycleBlocked, EpEnvelopeError as EpEnvelopeError3, LANG_PROBLEM_DETAIL_KIND, formatAge, presenceAges, presenceText } from "@cotal-ai/core";
|
|
21782
21783
|
|
|
21783
21784
|
// ../connector-core/dist/orientation.js
|
|
21784
|
-
import { peerLabel as peerLabel3 } from "@cotal-ai/core";
|
|
21785
|
+
import { parsePrincipalKey as parsePrincipalKey2, peerLabel as peerLabel3 } from "@cotal-ai/core";
|
|
21785
21786
|
|
|
21786
21787
|
// ../connector-core/dist/docs.js
|
|
21787
21788
|
var STOP = new Set("a an and are as at be by do for from has how in is it of on or that the this to use using was what when where which who with you your".split(" "));
|
|
@@ -23697,6 +23698,14 @@ function cotalHome() {
|
|
|
23697
23698
|
function marketplaceDir() {
|
|
23698
23699
|
return join4(cotalHome(), "claude-plugin");
|
|
23699
23700
|
}
|
|
23701
|
+
function withPluginLock(run) {
|
|
23702
|
+
const lock = acquireLock(join4(marketplaceDir(), ".setup.lock"), { label: "Claude plugin setup" });
|
|
23703
|
+
try {
|
|
23704
|
+
return run();
|
|
23705
|
+
} finally {
|
|
23706
|
+
lock.release();
|
|
23707
|
+
}
|
|
23708
|
+
}
|
|
23700
23709
|
function materialize(name, root, assets, version2, files = {}) {
|
|
23701
23710
|
const market = marketplaceDir();
|
|
23702
23711
|
mkdirSync(market, { recursive: true });
|
|
@@ -23981,12 +23990,14 @@ var claudeSetupProvider = {
|
|
|
23981
23990
|
explain: "Installs Cotal messaging for Claude Code, including supported local sessions in Desktop's Code tab. Reopen Claude after setup.",
|
|
23982
23991
|
context: [DOCS_URL],
|
|
23983
23992
|
run({ cotal }) {
|
|
23984
|
-
|
|
23985
|
-
|
|
23986
|
-
|
|
23987
|
-
|
|
23988
|
-
|
|
23989
|
-
|
|
23993
|
+
return withPluginLock(() => {
|
|
23994
|
+
const version2 = materializeCotal(cotal);
|
|
23995
|
+
install("cotal", "user", version2);
|
|
23996
|
+
const app = desktop(cotal, true);
|
|
23997
|
+
const removed = retireProjectInstalls();
|
|
23998
|
+
const replaced = removed ? `, replacing ${removed} project install${removed === 1 ? "" : "s"}` : "";
|
|
23999
|
+
return `cotal@${MARKETPLACE} (user scope${replaced})${app ? `; ${app}` : ""}`;
|
|
24000
|
+
});
|
|
23990
24001
|
}
|
|
23991
24002
|
},
|
|
23992
24003
|
refresh: {
|
|
@@ -23995,28 +24006,30 @@ var claudeSetupProvider = {
|
|
|
23995
24006
|
explain: "Rewrites the copy of the Cotal plugin that Claude Code sessions load, and Cotal's entry in Claude Desktop, for this release.",
|
|
23996
24007
|
context: [DOCS_URL],
|
|
23997
24008
|
run({ cotal, skills }) {
|
|
23998
|
-
|
|
23999
|
-
|
|
24000
|
-
|
|
24001
|
-
|
|
24002
|
-
|
|
24003
|
-
|
|
24004
|
-
|
|
24005
|
-
|
|
24006
|
-
|
|
24007
|
-
|
|
24008
|
-
|
|
24009
|
-
|
|
24010
|
-
|
|
24011
|
-
|
|
24012
|
-
|
|
24013
|
-
|
|
24014
|
-
|
|
24015
|
-
|
|
24016
|
-
|
|
24017
|
-
|
|
24018
|
-
|
|
24019
|
-
|
|
24009
|
+
return withPluginLock(() => {
|
|
24010
|
+
const entries = installedForRefresh();
|
|
24011
|
+
const installs = entries.filter((entry) => entry.id === `cotal@${MARKETPLACE}`);
|
|
24012
|
+
const skillInstalls = entries.filter((entry) => entry.id === `cotal-skills@${MARKETPLACE}`);
|
|
24013
|
+
const path = desktopConfigPath();
|
|
24014
|
+
const app = path !== void 0 && readDesktopEntry(path) !== void 0;
|
|
24015
|
+
if (!installs.length && !skillInstalls.length && !app) return "not installed";
|
|
24016
|
+
if (skillInstalls.length && !skills) throw new Error("current skills are required to refresh the installed Claude skills plugin");
|
|
24017
|
+
const version2 = installs.length || app ? materializeCotal(cotal) : void 0;
|
|
24018
|
+
if (skillInstalls.length) materializeSkills(skills);
|
|
24019
|
+
if (installs.length || skillInstalls.length) writeMarketplace();
|
|
24020
|
+
const parts = [];
|
|
24021
|
+
if (installs.length) {
|
|
24022
|
+
refreshInstalls("cotal", installs, version2);
|
|
24023
|
+
parts.push(`cotal@${MARKETPLACE} ${version2}; reload plugins or reopen Claude to load it in running sessions`);
|
|
24024
|
+
}
|
|
24025
|
+
if (skillInstalls.length) {
|
|
24026
|
+
refreshInstalls("cotal-skills", skillInstalls, skills.version);
|
|
24027
|
+
parts.push(`cotal-skills@${MARKETPLACE} ${skills.version}`);
|
|
24028
|
+
}
|
|
24029
|
+
const desktopText = app ? desktop(cotal, false) : void 0;
|
|
24030
|
+
if (desktopText) parts.push(desktopText);
|
|
24031
|
+
return parts.join("; ");
|
|
24032
|
+
});
|
|
24020
24033
|
}
|
|
24021
24034
|
},
|
|
24022
24035
|
skills: {
|
|
@@ -24025,9 +24038,11 @@ var claudeSetupProvider = {
|
|
|
24025
24038
|
explain: "Installs Cotal's authored skills as a Claude Code plugin.",
|
|
24026
24039
|
context: [DOCS_URL],
|
|
24027
24040
|
run(input) {
|
|
24028
|
-
|
|
24029
|
-
|
|
24030
|
-
|
|
24041
|
+
return withPluginLock(() => {
|
|
24042
|
+
materializeSkills(input);
|
|
24043
|
+
install("cotal-skills", "user", input.version);
|
|
24044
|
+
return `cotal-skills@${MARKETPLACE} (user scope)`;
|
|
24045
|
+
});
|
|
24031
24046
|
}
|
|
24032
24047
|
},
|
|
24033
24048
|
mcpServers: {
|