cotal-ai 0.41.3 → 0.41.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cotal-ai",
3
- "version": "0.41.3",
3
+ "version": "0.41.4",
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,27 +33,27 @@
33
33
  "node": ">=22"
34
34
  },
35
35
  "dependencies": {
36
- "@cotal-ai/auth": "0.41.3",
37
- "@cotal-ai/cli": "0.41.3",
38
- "@cotal-ai/connector-core": "0.41.3",
39
- "@cotal-ai/core": "0.41.3",
40
- "@cotal-ai/workspace": "0.41.3",
41
- "@cotal-ai/manager": "0.41.3",
42
- "@cotal-ai/delivery": "0.41.3",
43
- "@cotal-ai/runtime": "0.41.3"
36
+ "@cotal-ai/cli": "0.41.4",
37
+ "@cotal-ai/connector-core": "0.41.4",
38
+ "@cotal-ai/auth": "0.41.4",
39
+ "@cotal-ai/core": "0.41.4",
40
+ "@cotal-ai/delivery": "0.41.4",
41
+ "@cotal-ai/manager": "0.41.4",
42
+ "@cotal-ai/workspace": "0.41.4",
43
+ "@cotal-ai/runtime": "0.41.4"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@nats-io/jetstream": "^3.4.0",
47
47
  "@nats-io/transport-node": "^3.4.0",
48
48
  "typescript": "^5.9.3",
49
- "@cotal-ai/connector-codex": "0.41.3",
50
- "@cotal-ai/connector-claude-code": "0.41.3",
51
- "@cotal-ai/connector-hermes": "0.41.3",
52
- "@cotal-ai/pi": "0.41.3",
53
- "@cotal-ai/connector-jcode": "0.41.3",
54
- "@cotal-ai/connector-opencode": "0.41.3",
55
- "@cotal-ai/web": "0.41.3",
56
- "@cotal-ai/smoke-kit": "0.0.0"
49
+ "@cotal-ai/connector-codex": "0.41.4",
50
+ "@cotal-ai/connector-hermes": "0.41.4",
51
+ "@cotal-ai/connector-jcode": "0.41.4",
52
+ "@cotal-ai/connector-opencode": "0.41.4",
53
+ "@cotal-ai/pi": "0.41.4",
54
+ "@cotal-ai/connector-claude-code": "0.41.4",
55
+ "@cotal-ai/smoke-kit": "0.0.0",
56
+ "@cotal-ai/web": "0.41.4"
57
57
  },
58
58
  "files": [
59
59
  "dist",
@@ -41163,7 +41163,7 @@ config(en_default());
41163
41163
 
41164
41164
  // ../connector-core/dist/docs-bundle.generated.js
41165
41165
  var DOCS_BUNDLE = {
41166
- "version": "0.41.3",
41166
+ "version": "0.41.4",
41167
41167
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
41168
41168
  "pages": [
41169
41169
  {
@@ -14995,7 +14995,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
14995
14995
 
14996
14996
  // ../connector-core/dist/docs-bundle.generated.js
14997
14997
  var DOCS_BUNDLE = {
14998
- "version": "0.41.3",
14998
+ "version": "0.41.4",
14999
14999
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
15000
15000
  "pages": [
15001
15001
  {
@@ -68730,7 +68730,7 @@ var import_node_child_process2 = require("node:child_process");
68730
68730
 
68731
68731
  // ../connector-core/dist/docs-bundle.generated.js
68732
68732
  var DOCS_BUNDLE = {
68733
- "version": "0.41.3",
68733
+ "version": "0.41.4",
68734
68734
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
68735
68735
  "pages": [
68736
68736
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-claude-code",
3
3
  "description": "Cotal connector for Claude Code: an installed plugin that joins a session to the mesh.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -62938,7 +62938,7 @@ config(en_default());
62938
62938
 
62939
62939
  // ../connector-core/dist/docs-bundle.generated.js
62940
62940
  var DOCS_BUNDLE = {
62941
- "version": "0.41.3",
62941
+ "version": "0.41.4",
62942
62942
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
62943
62943
  "pages": [
62944
62944
  {
@@ -14821,7 +14821,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
14821
14821
 
14822
14822
  // ../connector-core/dist/docs-bundle.generated.js
14823
14823
  var DOCS_BUNDLE = {
14824
- "version": "0.41.3",
14824
+ "version": "0.41.4",
14825
14825
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
14826
14826
  "pages": [
14827
14827
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-codex",
3
3
  "description": "Cotal connector for OpenAI Codex: a host-mode peer driving codex app-server, with Codex's own TUI attached and the cotal_* tools served over a loopback MCP endpoint.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -14806,7 +14806,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
14806
14806
 
14807
14807
  // ../connector-core/dist/docs-bundle.generated.js
14808
14808
  var DOCS_BUNDLE = {
14809
- "version": "0.41.3",
14809
+ "version": "0.41.4",
14810
14810
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
14811
14811
  "pages": [
14812
14812
  {
@@ -56728,7 +56728,7 @@ config(en_default());
56728
56728
 
56729
56729
  // ../connector-core/dist/docs-bundle.generated.js
56730
56730
  var DOCS_BUNDLE = {
56731
- "version": "0.41.3",
56731
+ "version": "0.41.4",
56732
56732
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
56733
56733
  "pages": [
56734
56734
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-hermes",
3
3
  "description": "Cotal connector for the Hermes (Nous Research) agent.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -56623,7 +56623,7 @@ config(en_default());
56623
56623
 
56624
56624
  // ../connector-core/dist/docs-bundle.generated.js
56625
56625
  var DOCS_BUNDLE = {
56626
- "version": "0.41.3",
56626
+ "version": "0.41.4",
56627
56627
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
56628
56628
  "pages": [
56629
56629
  {
@@ -42764,6 +42764,7 @@ function processPids() {
42764
42764
  throw new Error(`jcode connector: cannot prove Jcode process ownership on unsupported platform ${process.platform}`);
42765
42765
  }
42766
42766
  var processIdentityProbe = {
42767
+ readEnviron: (pid) => readFileSync3(`/proc/${pid}/environ`, "utf8"),
42767
42768
  ps: (pid) => execFileSync2("/bin/ps", ["eww", "-p", String(pid), "-o", "command="], {
42768
42769
  encoding: "utf8",
42769
42770
  stdio: ["ignore", "pipe", "ignore"]
@@ -42790,18 +42791,28 @@ function processHasLaunchIdentityFromPs(pid, identityValue, probe) {
42790
42791
  throw error51;
42791
42792
  }
42792
42793
  }
42793
- function processHasLaunchIdentity(pid, identityValue) {
42794
- if (process.platform === "linux")
42795
- return readFileSync3(`/proc/${pid}/environ`, "utf8").split("\0").includes(`${LAUNCH_IDENTITY_ENV}=${identityValue}`);
42794
+ function launchIdentityProof(pid, identityValue, probe) {
42795
+ if (process.platform === "linux") {
42796
+ let environ;
42797
+ try {
42798
+ environ = probe.readEnviron(pid);
42799
+ } catch (error51) {
42800
+ const code = error51.code;
42801
+ if (code === "ENOENT" || code === "ESRCH" || code === "EACCES" || code === "EPERM") return void 0;
42802
+ throw error51;
42803
+ }
42804
+ if (environ.length === 0) return void 0;
42805
+ return environ.split("\0").includes(`${LAUNCH_IDENTITY_ENV}=${identityValue}`);
42806
+ }
42796
42807
  if (process.platform === "darwin" || process.platform.endsWith("bsd"))
42797
- return processHasLaunchIdentityFromPs(pid, identityValue, processIdentityProbe);
42808
+ return processHasLaunchIdentityFromPs(pid, identityValue, probe);
42798
42809
  throw new Error(`jcode connector: launch-bound process identity is unavailable on ${process.platform}`);
42799
42810
  }
42800
- function captureLaunchProcesses(identityValue) {
42811
+ function captureLaunchProcesses(identityValue, probe = processIdentityProbe) {
42801
42812
  const owned = [];
42802
42813
  for (const pid of processPids()) {
42803
42814
  try {
42804
- if (!processHasLaunchIdentity(pid, identityValue)) continue;
42815
+ if (launchIdentityProof(pid, identityValue, probe) !== true) continue;
42805
42816
  const stat = processStat(pid);
42806
42817
  if (stat) owned.push({ pid: stat.pid, start: stat.start });
42807
42818
  } catch (error51) {
@@ -42917,13 +42928,21 @@ async function stopOrphanedTree(options) {
42917
42928
  return targets;
42918
42929
  }
42919
42930
  async function stopPrivateTree(options) {
42920
- const { jcodeHome, launch, identityValue, gracefulWaitMs = 3e3, killWaitMs = 2e3, settleMs = 500 } = options;
42931
+ const {
42932
+ jcodeHome,
42933
+ launch,
42934
+ identityValue,
42935
+ gracefulWaitMs = 3e3,
42936
+ killWaitMs = 2e3,
42937
+ settleMs = 500,
42938
+ identityProbe = processIdentityProbe
42939
+ } = options;
42921
42940
  const owned = /* @__PURE__ */ new Map();
42922
42941
  const refreshOwned = () => {
42923
- for (const identity of captureLaunchProcesses(identityValue)) owned.set(identity.pid, identity);
42942
+ for (const identity of captureLaunchProcesses(identityValue, identityProbe)) owned.set(identity.pid, identity);
42924
42943
  };
42925
42944
  refreshOwned();
42926
- if (alive(launch.pid) && processMatches(launch) && !owned.has(launch.pid))
42945
+ if (alive(launch.pid) && processMatches(launch) && launchIdentityProof(launch.pid, identityValue, identityProbe) === false)
42927
42946
  throw new Error(`jcode connector: spawned Jcode bridge ${launch.pid} does not carry its launch-bound identity \u2014 refusing unsafe teardown`);
42928
42947
  if (processMatches(launch)) {
42929
42948
  signalPid(launch.pid, "SIGTERM");
@@ -59253,7 +59272,7 @@ config(en_default());
59253
59272
 
59254
59273
  // ../connector-core/dist/docs-bundle.generated.js
59255
59274
  var DOCS_BUNDLE = {
59256
- "version": "0.41.3",
59275
+ "version": "0.41.4",
59257
59276
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
59258
59277
  "pages": [
59259
59278
  {
@@ -14840,7 +14840,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
14840
14840
 
14841
14841
  // ../connector-core/dist/docs-bundle.generated.js
14842
14842
  var DOCS_BUNDLE = {
14843
- "version": "0.41.3",
14843
+ "version": "0.41.4",
14844
14844
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
14845
14845
  "pages": [
14846
14846
  {
@@ -57487,7 +57487,7 @@ import { execFileSync } from "node:child_process";
57487
57487
 
57488
57488
  // ../connector-core/dist/docs-bundle.generated.js
57489
57489
  var DOCS_BUNDLE = {
57490
- "version": "0.41.3",
57490
+ "version": "0.41.4",
57491
57491
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
57492
57492
  "pages": [
57493
57493
  {
@@ -8,11 +8,12 @@ export declare function launchIdentityEnv(): {
8
8
  };
9
9
  /** Immutable identity of one process at capture time; throws when the platform cannot prove it. */
10
10
  export declare function captureProcessIdentity(pid: number): ProcessIdentity;
11
- interface ProcessIdentityProbe {
11
+ export interface ProcessIdentityProbe {
12
+ readEnviron: (pid: number) => string;
12
13
  ps: (pid: number) => string;
13
14
  pidExists: (pid: number) => boolean;
14
15
  }
15
- export declare const processHasLaunchIdentityForTest: (pid: number, identityValue: string, probe: ProcessIdentityProbe) => boolean;
16
+ export declare const processHasLaunchIdentityForTest: (pid: number, identityValue: string, probe: Pick<ProcessIdentityProbe, "ps" | "pidExists">) => boolean;
16
17
  /** Every PID this seat's private home records. The caller must still prove ownership. */
17
18
  export declare function recordedTreePids(jcodeHome: string): number[];
18
19
  export interface LaunchRecord {
@@ -63,10 +64,11 @@ export interface StopPrivateTreeOptions {
63
64
  killWaitMs?: number;
64
65
  /** Records must remain absent for this long after the bridge is gone (default 500ms). */
65
66
  settleMs?: number;
67
+ /** Injectable process proof source for direct lifecycle tests. */
68
+ identityProbe?: ProcessIdentityProbe;
66
69
  }
67
70
  /** SIGTERM the launch-owned tree, escalate survivors to SIGKILL, and only return once its records
68
71
  * remain quiescent after the bridge is gone. A stale or reused registry PID is skipped, never
69
72
  * signalled; an unprovable live process is not converted into ownership by location alone. */
70
73
  export declare function stopPrivateTree(options: StopPrivateTreeOptions): Promise<void>;
71
- export {};
72
74
  //# sourceMappingURL=private-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"private-lifecycle.d.ts","sourceRoot":"","sources":["../src/private-lifecycle.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAiCD,wBAAgB,iBAAiB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAElE;AAED,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAMnE;AAoBD,UAAU,oBAAoB;IAC5B,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACrC;AA0CD,eAAO,MAAM,+BAA+B,GAC1C,KAAK,MAAM,EACX,eAAe,MAAM,EACrB,OAAO,oBAAoB,KAC1B,OAAoE,CAAC;AAkBxE,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB5D;AA4DD,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;+EAC+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAYvE;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB1F;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;8FAE8F;AAC9F,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEpF"}
1
+ {"version":3,"file":"private-lifecycle.d.ts","sourceRoot":"","sources":["../src/private-lifecycle.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAiCD,wBAAgB,iBAAiB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAElE;AAED,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAMnE;AAoBD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACrC;AAiED,eAAO,MAAM,+BAA+B,GAC1C,KAAK,MAAM,EACX,eAAe,MAAM,EACrB,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,WAAW,CAAC,KACpD,OAAoE,CAAC;AAkBxE,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB5D;AA4DD,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;+EAC+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAYvE;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB1F;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;8FAE8F;AAC9F,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFpF"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-jcode",
3
3
  "description": "Cotal connector for Jcode: a host-mode mesh peer driven through Jcode's Harness API bridge.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -14828,7 +14828,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
14828
14828
 
14829
14829
  // ../connector-core/dist/docs-bundle.generated.js
14830
14830
  var DOCS_BUNDLE = {
14831
- "version": "0.41.3",
14831
+ "version": "0.41.4",
14832
14832
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
14833
14833
  "pages": [
14834
14834
  {
@@ -58477,7 +58477,7 @@ config(en_default());
58477
58477
 
58478
58478
  // ../connector-core/dist/docs-bundle.generated.js
58479
58479
  var DOCS_BUNDLE = {
58480
- "version": "0.41.3",
58480
+ "version": "0.41.4",
58481
58481
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
58482
58482
  "pages": [
58483
58483
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-opencode",
3
3
  "description": "Cotal connector for OpenCode: a native in-process plugin that joins a session to the mesh.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -16322,7 +16322,7 @@ import { isConcreteChannel as isConcreteChannel3, channelInAllow as channelInAll
16322
16322
 
16323
16323
  // ../connector-core/dist/docs-bundle.generated.js
16324
16324
  var DOCS_BUNDLE = {
16325
- "version": "0.41.3",
16325
+ "version": "0.41.4",
16326
16326
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
16327
16327
  "pages": [
16328
16328
  {
@@ -56733,7 +56733,7 @@ config(en_default());
56733
56733
 
56734
56734
  // ../connector-core/dist/docs-bundle.generated.js
56735
56735
  var DOCS_BUNDLE = {
56736
- "version": "0.41.3",
56736
+ "version": "0.41.4",
56737
56737
  "generatedFrom": "docs/*.md + SPEC.md + spec/cotal-lang.md + spec/cotal.schema.json",
56738
56738
  "pages": [
56739
56739
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cotal-ai/pi",
3
- "version": "0.41.3",
3
+ "version": "0.41.4",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/web",
3
3
  "description": "Cotal browser observability dashboard: adds the `web` command to the cotal CLI.",
4
- "version": "0.41.3",
4
+ "version": "0.41.4",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",