comisai 1.0.15 → 1.0.16

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.
Files changed (47) hide show
  1. package/node_modules/@comis/agent/dist/bootstrap/types.d.ts +1 -1
  2. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +12 -11
  3. package/node_modules/@comis/agent/dist/context-engine/constants.d.ts +11 -0
  4. package/node_modules/@comis/agent/dist/context-engine/constants.js +11 -0
  5. package/node_modules/@comis/agent/dist/context-engine/index.d.ts +1 -1
  6. package/node_modules/@comis/agent/dist/context-engine/index.js +1 -1
  7. package/node_modules/@comis/agent/dist/context-engine/llm-compaction.js +32 -18
  8. package/node_modules/@comis/agent/dist/executor/cache-break-diff-writer.d.ts +2 -0
  9. package/node_modules/@comis/agent/dist/executor/cache-break-diff-writer.js +36 -0
  10. package/node_modules/@comis/agent/dist/executor/executor-post-execution.d.ts +12 -0
  11. package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +117 -27
  12. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +1 -0
  13. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +16 -4
  14. package/node_modules/@comis/agent/dist/executor/executor-stream-setup.js +17 -1
  15. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +27 -1
  16. package/node_modules/@comis/agent/dist/executor/session-snapshot-cleanup.js +3 -1
  17. package/node_modules/@comis/agent/dist/executor/stream-wrappers/index.d.ts +2 -0
  18. package/node_modules/@comis/agent/dist/executor/stream-wrappers/index.js +2 -0
  19. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.d.ts +9 -0
  20. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +65 -3
  21. package/node_modules/@comis/agent/dist/executor/stream-wrappers/stub-filter-injector.d.ts +28 -0
  22. package/node_modules/@comis/agent/dist/executor/stream-wrappers/stub-filter-injector.js +63 -0
  23. package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +18 -1
  24. package/node_modules/@comis/agent/dist/executor/tool-deferral.js +275 -133
  25. package/node_modules/@comis/agent/dist/executor/ttl-guard.d.ts +6 -0
  26. package/node_modules/@comis/agent/dist/executor/ttl-guard.js +8 -0
  27. package/node_modules/@comis/agent/package.json +1 -1
  28. package/node_modules/@comis/channels/dist/shared/typing-controller.d.ts +7 -0
  29. package/node_modules/@comis/channels/dist/shared/typing-controller.js +33 -0
  30. package/node_modules/@comis/channels/package.json +1 -1
  31. package/node_modules/@comis/cli/dist/commands/daemon.js +116 -28
  32. package/node_modules/@comis/cli/package.json +1 -1
  33. package/node_modules/@comis/core/dist/config/schema-agent.d.ts +10 -0
  34. package/node_modules/@comis/core/dist/config/schema-agent.js +8 -0
  35. package/node_modules/@comis/core/dist/config/schema-skills.d.ts +16 -2
  36. package/node_modules/@comis/core/dist/config/schema-skills.js +9 -2
  37. package/node_modules/@comis/core/dist/config/schema.d.ts +6 -3
  38. package/node_modules/@comis/core/package.json +1 -1
  39. package/node_modules/@comis/daemon/package.json +1 -1
  40. package/node_modules/@comis/gateway/package.json +1 -1
  41. package/node_modules/@comis/infra/package.json +1 -1
  42. package/node_modules/@comis/memory/package.json +1 -1
  43. package/node_modules/@comis/scheduler/package.json +1 -1
  44. package/node_modules/@comis/shared/package.json +1 -1
  45. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +1 -1
  46. package/node_modules/@comis/skills/package.json +1 -1
  47. package/package.json +12 -12
@@ -12,7 +12,9 @@
12
12
  import { execFile, spawn } from "node:child_process";
13
13
  import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdirSync, openSync } from "node:fs";
14
14
  import * as os from "node:os";
15
+ import { createInterface } from "node:readline";
15
16
  import { promisify } from "node:util";
17
+ import chalk from "chalk";
16
18
  import { safePath } from "@comis/core";
17
19
  import { withClient } from "../client/rpc-client.js";
18
20
  import { success, error, info, warn } from "../output/format.js";
@@ -23,6 +25,63 @@ const PID_FILE = safePath(COMIS_DIR, "daemon.pid");
23
25
  const LOG_FILE = safePath(COMIS_DIR, "daemon.log");
24
26
  /** Max time to wait for daemon gateway to become ready (ms). */
25
27
  const READY_TIMEOUT_MS = 15_000;
28
+ // ---------- Log formatting ----------
29
+ const PINO_LEVELS = {
30
+ 10: { label: "TRACE", color: chalk.gray },
31
+ 20: { label: "DEBUG", color: chalk.gray },
32
+ 30: { label: "INFO", color: chalk.cyan },
33
+ 40: { label: "WARN", color: chalk.yellow },
34
+ 50: { label: "ERROR", color: chalk.red },
35
+ 60: { label: "FATAL", color: chalk.bgRed.white },
36
+ };
37
+ const PINO_META_KEYS = new Set([
38
+ "level", "time", "pid", "hostname", "name", "msg", "module",
39
+ "levelValue", "instanceId",
40
+ ]);
41
+ function formatPinoLine(line) {
42
+ const trimmed = line.trim();
43
+ if (!trimmed.startsWith("{"))
44
+ return line;
45
+ let record;
46
+ try {
47
+ record = JSON.parse(trimmed);
48
+ }
49
+ catch {
50
+ return line;
51
+ }
52
+ if (typeof record["level"] !== "number" && typeof record["level"] !== "string")
53
+ return line;
54
+ const levelNum = typeof record["level"] === "number"
55
+ ? record["level"]
56
+ : ({ trace: 10, debug: 20, info: 30, warn: 40, error: 50, fatal: 60 }[record["level"]] ?? 30);
57
+ const levelInfo = PINO_LEVELS[levelNum] ?? { label: String(record["level"]), color: chalk.white };
58
+ const time = record["time"]
59
+ ? new Date(record["time"]).toLocaleTimeString()
60
+ : "";
61
+ const mod = record["module"] ? `[${record["module"]}]` : "";
62
+ const msg = record["msg"] ?? "";
63
+ const extra = {};
64
+ for (const [k, v] of Object.entries(record)) {
65
+ if (!PINO_META_KEYS.has(k))
66
+ extra[k] = v;
67
+ }
68
+ const extraStr = Object.keys(extra).length > 0
69
+ ? chalk.gray(` ${JSON.stringify(extra)}`)
70
+ : "";
71
+ return `${chalk.dim(time)} ${levelInfo.color(levelInfo.label.padEnd(5))} ${chalk.blue(mod)} ${msg}${extraStr}`;
72
+ }
73
+ function formatLogOutput(raw) {
74
+ return raw
75
+ .split("\n")
76
+ .map((line) => (line.trim() ? formatPinoLine(line) : line))
77
+ .join("\n");
78
+ }
79
+ function pipeFormatted(child) {
80
+ if (!child.stdout)
81
+ return;
82
+ const rl = createInterface({ input: child.stdout });
83
+ rl.on("line", (line) => console.log(formatPinoLine(line)));
84
+ }
26
85
  /** Interval between readiness polls (ms). */
27
86
  const READY_POLL_MS = 500;
28
87
  /**
@@ -533,40 +592,48 @@ async function handleDaemonLogs(options) {
533
592
  }
534
593
  }
535
594
  async function streamSystemdLogs(scope, options) {
536
- const jArgs = ["--unit=comis", "--no-pager", `-n${options.lines}`];
595
+ const jArgs = ["--unit=comis", "--no-pager", `-n${options.lines}`, "--output=cat"];
537
596
  if (scope === "systemd-user")
538
597
  jArgs.push("--user");
539
598
  if (options.follow)
540
599
  jArgs.push("--follow");
541
600
  if (options.follow) {
542
- const child = spawn("journalctl", jArgs, { stdio: "inherit" });
543
- child.on("error", (err) => {
544
- error(`Failed to read logs: ${err.message}`);
545
- process.exit(1);
546
- });
601
+ if (options.raw) {
602
+ const child = spawn("journalctl", jArgs, { stdio: "inherit" });
603
+ child.on("error", (err) => {
604
+ error(`Failed to read logs: ${err.message}`);
605
+ process.exit(1);
606
+ });
607
+ }
608
+ else {
609
+ const child = spawn("journalctl", jArgs, { stdio: ["ignore", "pipe", "inherit"] });
610
+ child.on("error", (err) => {
611
+ error(`Failed to read logs: ${err.message}`);
612
+ process.exit(1);
613
+ });
614
+ pipeFormatted(child);
615
+ }
547
616
  return;
548
617
  }
549
- // Try journalctl directly first (works when user is in systemd-journal group),
550
- // then fall back to sudo for system-scope journals.
551
- try {
552
- const { stdout } = await exec("journalctl", jArgs, { timeout: 10_000 });
618
+ const printOutput = (stdout) => {
553
619
  if (stdout.trim()) {
554
- console.log(stdout);
620
+ console.log(options.raw ? stdout : formatLogOutput(stdout));
555
621
  }
556
622
  else {
557
623
  info("No logs found");
558
624
  }
625
+ };
626
+ // Try journalctl directly first (works when user is in systemd-journal group),
627
+ // then fall back to sudo for system-scope journals.
628
+ try {
629
+ const { stdout } = await exec("journalctl", jArgs, { timeout: 10_000 });
630
+ printOutput(stdout);
559
631
  }
560
632
  catch {
561
633
  // eslint-disable-next-line no-restricted-syntax -- CLI bootstrap before SecretManager
562
634
  if (scope === "systemd" && process.getuid?.() !== 0) {
563
635
  const { stdout } = await exec("sudo", ["journalctl", ...jArgs], { timeout: 10_000 });
564
- if (stdout.trim()) {
565
- console.log(stdout);
566
- }
567
- else {
568
- info("No logs found");
569
- }
636
+ printOutput(stdout);
570
637
  }
571
638
  else {
572
639
  throw new Error("Failed to read journal logs");
@@ -577,11 +644,21 @@ function streamPm2Logs(options) {
577
644
  const args = ["logs", "comis", "--lines", options.lines];
578
645
  if (!options.follow)
579
646
  args.push("--nostream");
580
- const child = spawn("pm2", args, { stdio: "inherit" });
581
- child.on("error", (err) => {
582
- error(`Failed to read logs: ${err.message}`);
583
- process.exit(1);
584
- });
647
+ if (options.raw) {
648
+ const child = spawn("pm2", args, { stdio: "inherit" });
649
+ child.on("error", (err) => {
650
+ error(`Failed to read logs: ${err.message}`);
651
+ process.exit(1);
652
+ });
653
+ }
654
+ else {
655
+ const child = spawn("pm2", args, { stdio: ["ignore", "pipe", "inherit"] });
656
+ child.on("error", (err) => {
657
+ error(`Failed to read logs: ${err.message}`);
658
+ process.exit(1);
659
+ });
660
+ pipeFormatted(child);
661
+ }
585
662
  }
586
663
  async function streamDirectLogs(options) {
587
664
  // eslint-disable-next-line no-restricted-syntax -- CLI bootstrap before SecretManager
@@ -594,16 +671,26 @@ async function streamDirectLogs(options) {
594
671
  const args = ["-n", options.lines, logPath];
595
672
  if (options.follow) {
596
673
  args.unshift("-f");
597
- const child = spawn("tail", args, { stdio: "inherit" });
598
- child.on("error", (err) => {
599
- error(`Failed to read logs: ${err.message}`);
600
- process.exit(1);
601
- });
674
+ if (options.raw) {
675
+ const child = spawn("tail", args, { stdio: "inherit" });
676
+ child.on("error", (err) => {
677
+ error(`Failed to read logs: ${err.message}`);
678
+ process.exit(1);
679
+ });
680
+ }
681
+ else {
682
+ const child = spawn("tail", args, { stdio: ["ignore", "pipe", "inherit"] });
683
+ child.on("error", (err) => {
684
+ error(`Failed to read logs: ${err.message}`);
685
+ process.exit(1);
686
+ });
687
+ pipeFormatted(child);
688
+ }
602
689
  return;
603
690
  }
604
691
  const { stdout } = await exec("tail", args, { timeout: 5_000 });
605
692
  if (stdout.trim()) {
606
- console.log(stdout);
693
+ console.log(options.raw ? stdout : formatLogOutput(stdout));
607
694
  }
608
695
  else {
609
696
  info("No logs found");
@@ -634,5 +721,6 @@ export function registerDaemonCommand(program) {
634
721
  .description("Show daemon logs")
635
722
  .option("-f, --follow", "Follow log output")
636
723
  .option("-n, --lines <n>", "Number of lines to show", "50")
724
+ .option("--raw", "Show raw JSON output without formatting")
637
725
  .action(handleDaemonLogs);
638
726
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/cli",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Command-line interface for the Comis AI agent platform",
@@ -737,6 +737,10 @@ export declare const AgentConfigSchema: z.ZodObject<{
737
737
  "multi-zone": "multi-zone";
738
738
  single: "single";
739
739
  }>>;
740
+ /** Advanced cache optimization options for interactive sessions. */
741
+ advancedCacheOptimization: z.ZodDefault<z.ZodObject<{
742
+ enableRecentZonePromotion: z.ZodDefault<z.ZodBoolean>;
743
+ }, z.core.$strip>>;
740
744
  /** Gemini explicit cache configuration (CachedContent lifecycle). */
741
745
  geminiCache: z.ZodDefault<z.ZodObject<{
742
746
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1102,6 +1106,9 @@ export declare const PerAgentConfigSchema: z.ZodObject<{
1102
1106
  "multi-zone": "multi-zone";
1103
1107
  single: "single";
1104
1108
  }>>;
1109
+ advancedCacheOptimization: z.ZodDefault<z.ZodObject<{
1110
+ enableRecentZonePromotion: z.ZodDefault<z.ZodBoolean>;
1111
+ }, z.core.$strip>>;
1105
1112
  geminiCache: z.ZodDefault<z.ZodObject<{
1106
1113
  enabled: z.ZodDefault<z.ZodBoolean>;
1107
1114
  maxActiveCaches: z.ZodDefault<z.ZodNumber>;
@@ -1773,6 +1780,9 @@ export declare const AgentsMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
1773
1780
  "multi-zone": "multi-zone";
1774
1781
  single: "single";
1775
1782
  }>>;
1783
+ advancedCacheOptimization: z.ZodDefault<z.ZodObject<{
1784
+ enableRecentZonePromotion: z.ZodDefault<z.ZodBoolean>;
1785
+ }, z.core.$strip>>;
1776
1786
  geminiCache: z.ZodDefault<z.ZodObject<{
1777
1787
  enabled: z.ZodDefault<z.ZodBoolean>;
1778
1788
  maxActiveCaches: z.ZodDefault<z.ZodNumber>;
@@ -574,6 +574,14 @@ export const AgentConfigSchema = z.strictObject({
574
574
  * 'auto' resolves to 'single' for direct Anthropic and 'multi-zone' for Bedrock/Vertex.
575
575
  * 'multi-zone' places breakpoints across system, tools, and messages. */
576
576
  cacheBreakpointStrategy: z.enum(["auto", "multi-zone", "single"]).default("single"),
577
+ /** Advanced cache optimization options for interactive sessions. */
578
+ advancedCacheOptimization: z.object({
579
+ /** When true, the recent-zone message breakpoint may be promoted from
580
+ * "short" (5m) to "long" (1h) TTL when observed inter-turn gaps
581
+ * consistently exceed 5 minutes. Prevents repeated cache rewrite costs
582
+ * in slow-cadence channels like Telegram. Default: true. */
583
+ enableRecentZonePromotion: z.boolean().default(true),
584
+ }).default(() => ({ enableRecentZonePromotion: true })),
577
585
  /** Gemini explicit cache configuration (CachedContent lifecycle). */
578
586
  geminiCache: GeminiCacheConfigSchema.default(() => GeminiCacheConfigSchema.parse({})),
579
587
  /** When true, only content inside <final> blocks reaches users (streaming + non-streaming). Default: false. */
@@ -23,7 +23,14 @@ export declare const PromptSkillsConfigSchema: z.ZodObject<{
23
23
  * per-deployment without a rebuild.
24
24
  */
25
25
  declare const ToolDiscoverySchema: z.ZodObject<{
26
- /** Minimum BM25 score to consider a match (BM25-only mode). Default 0.8. */
26
+ /** Minimum BM25 score as FRACTION OF TOP MATCH (0..1). Default 0.8.
27
+ * As of 2026-04-23, BM25 scores are normalized to [0, 1] before this floor
28
+ * applies, matching the semantics of minHybridScore. A value of 0.8 means
29
+ * "return only tools scoring >= 80% of the top match". Values > 1.0 fail
30
+ * validation at config load (stale raw-score overrides would produce zero
31
+ * matches under the new normalized semantics; fail-fast surfaces the
32
+ * error immediately per AGENTS.md §3.4). See design §5.6:
33
+ * .planning/design/discover-tools-bm25-fallback-fix.md */
27
34
  minBm25Score: z.ZodDefault<z.ZodNumber>;
28
35
  /** Minimum combined score (0..1 normalized) for hybrid mode. Default 0.35. */
29
36
  minHybridScore: z.ZodDefault<z.ZodNumber>;
@@ -115,7 +122,14 @@ export declare const SkillsConfigSchema: z.ZodObject<{
115
122
  }, z.core.$strict>>;
116
123
  /** discover_tools score-floor thresholds (BM25 + hybrid). */
117
124
  toolDiscovery: z.ZodDefault<z.ZodObject<{
118
- /** Minimum BM25 score to consider a match (BM25-only mode). Default 0.8. */
125
+ /** Minimum BM25 score as FRACTION OF TOP MATCH (0..1). Default 0.8.
126
+ * As of 2026-04-23, BM25 scores are normalized to [0, 1] before this floor
127
+ * applies, matching the semantics of minHybridScore. A value of 0.8 means
128
+ * "return only tools scoring >= 80% of the top match". Values > 1.0 fail
129
+ * validation at config load (stale raw-score overrides would produce zero
130
+ * matches under the new normalized semantics; fail-fast surfaces the
131
+ * error immediately per AGENTS.md §3.4). See design §5.6:
132
+ * .planning/design/discover-tools-bm25-fallback-fix.md */
119
133
  minBm25Score: z.ZodDefault<z.ZodNumber>;
120
134
  /** Minimum combined score (0..1 normalized) for hybrid mode. Default 0.35. */
121
135
  minHybridScore: z.ZodDefault<z.ZodNumber>;
@@ -93,8 +93,15 @@ const ExecSandboxSchema = z.strictObject({
93
93
  * per-deployment without a rebuild.
94
94
  */
95
95
  const ToolDiscoverySchema = z.strictObject({
96
- /** Minimum BM25 score to consider a match (BM25-only mode). Default 0.8. */
97
- minBm25Score: z.number().min(0).default(0.8),
96
+ /** Minimum BM25 score as FRACTION OF TOP MATCH (0..1). Default 0.8.
97
+ * As of 2026-04-23, BM25 scores are normalized to [0, 1] before this floor
98
+ * applies, matching the semantics of minHybridScore. A value of 0.8 means
99
+ * "return only tools scoring >= 80% of the top match". Values > 1.0 fail
100
+ * validation at config load (stale raw-score overrides would produce zero
101
+ * matches under the new normalized semantics; fail-fast surfaces the
102
+ * error immediately per AGENTS.md §3.4). See design §5.6:
103
+ * .planning/design/discover-tools-bm25-fallback-fix.md */
104
+ minBm25Score: z.number().min(0).max(1).default(0.8),
98
105
  /** Minimum combined score (0..1 normalized) for hybrid mode. Default 0.35. */
99
106
  minHybridScore: z.number().min(0).max(1).default(0.35),
100
107
  });
@@ -54,6 +54,9 @@ export declare const AppConfigSchema: z.ZodObject<{
54
54
  "multi-zone": "multi-zone";
55
55
  single: "single";
56
56
  }>>;
57
+ advancedCacheOptimization: z.ZodDefault<z.ZodObject<{
58
+ enableRecentZonePromotion: z.ZodDefault<z.ZodBoolean>;
59
+ }, z.core.$strip>>;
57
60
  geminiCache: z.ZodDefault<z.ZodObject<{
58
61
  enabled: z.ZodDefault<z.ZodBoolean>;
59
62
  maxActiveCaches: z.ZodDefault<z.ZodNumber>;
@@ -1619,8 +1622,8 @@ export declare const AppConfigSchema: z.ZodObject<{
1619
1622
  defaultUseMarkdownIR: z.ZodDefault<z.ZodBoolean>;
1620
1623
  defaultReplyMode: z.ZodDefault<z.ZodEnum<{
1621
1624
  off: "off";
1622
- all: "all";
1623
1625
  first: "first";
1626
+ all: "all";
1624
1627
  }>>;
1625
1628
  perChannel: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
1626
1629
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1671,8 +1674,8 @@ export declare const AppConfigSchema: z.ZodObject<{
1671
1674
  }>>;
1672
1675
  replyMode: z.ZodDefault<z.ZodEnum<{
1673
1676
  off: "off";
1674
- all: "all";
1675
1677
  first: "first";
1678
+ all: "all";
1676
1679
  }>>;
1677
1680
  replyModeByChatType: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
1678
1681
  dm: "dm";
@@ -1682,8 +1685,8 @@ export declare const AppConfigSchema: z.ZodObject<{
1682
1685
  forum: "forum";
1683
1686
  }>, z.ZodEnum<{
1684
1687
  off: "off";
1685
- all: "all";
1686
1688
  first: "first";
1689
+ all: "all";
1687
1690
  }>>>;
1688
1691
  }, z.core.$strict>>>;
1689
1692
  }, z.core.$strict>>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/core",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Core domain types, ports, event bus, security, and config for Comis",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/daemon",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Background daemon and orchestrator for the Comis platform",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/gateway",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "HTTP, JSON-RPC, and WebSocket gateway for Comis",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/infra",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Structured logging infrastructure for Comis",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/memory",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "SQLite memory, embeddings, and RAG storage for Comis agents",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/scheduler",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Task scheduling and cron management for Comis",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/shared",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Shared types and utilities for the Comis platform",
@@ -21,7 +21,7 @@ import type { RpcCall } from "./cron-tool.js";
21
21
  export declare const GATEWAY_ACTIONS: readonly ["read", "patch", "apply", "restart", "schema", "status", "history", "diff", "rollback", "env_set", "env_list"];
22
22
  export type GatewayAction = typeof GATEWAY_ACTIONS[number];
23
23
  declare const GatewayToolParams: import("@sinclair/typebox").TObject<{
24
- action: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"read" | "status" | "patch" | "apply" | "restart" | "schema" | "history" | "diff" | "rollback" | "env_set" | "env_list">[]>;
24
+ action: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"status" | "read" | "patch" | "apply" | "restart" | "schema" | "history" | "diff" | "rollback" | "env_set" | "env_list">[]>;
25
25
  section: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
26
  key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
27
  value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/skills",
3
3
  "private": true,
4
- "version": "1.0.15",
4
+ "version": "1.0.16",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Skill system, MCP integration, and tool sandbox for Comis agents",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comisai",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "author": "Moshe Anconina",
5
5
  "license": "Apache-2.0",
6
6
  "description": "Security-first AI agent platform — connects AI agents to Discord, Telegram, Slack, WhatsApp, and more",
@@ -115,17 +115,17 @@
115
115
  "@comis/daemon"
116
116
  ],
117
117
  "dependencies": {
118
- "@comis/shared": "1.0.15",
119
- "@comis/core": "1.0.15",
120
- "@comis/infra": "1.0.15",
121
- "@comis/memory": "1.0.15",
122
- "@comis/gateway": "1.0.15",
123
- "@comis/skills": "1.0.15",
124
- "@comis/scheduler": "1.0.15",
125
- "@comis/agent": "1.0.15",
126
- "@comis/channels": "1.0.15",
127
- "@comis/cli": "1.0.15",
128
- "@comis/daemon": "1.0.15",
118
+ "@comis/shared": "1.0.16",
119
+ "@comis/core": "1.0.16",
120
+ "@comis/infra": "1.0.16",
121
+ "@comis/memory": "1.0.16",
122
+ "@comis/gateway": "1.0.16",
123
+ "@comis/skills": "1.0.16",
124
+ "@comis/scheduler": "1.0.16",
125
+ "@comis/agent": "1.0.16",
126
+ "@comis/channels": "1.0.16",
127
+ "@comis/cli": "1.0.16",
128
+ "@comis/daemon": "1.0.16",
129
129
  "@agentclientprotocol/sdk": "^0.15.0",
130
130
  "@clack/core": "^1.1.0",
131
131
  "@clack/prompts": "^1.1.0",