@intrect/openswarm 0.12.0 → 0.14.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.
Files changed (45) hide show
  1. package/README.md +2 -2
  2. package/dist/automation/longRunningMonitor.d.ts.map +1 -1
  3. package/dist/automation/longRunningMonitor.js +1 -0
  4. package/dist/automation/longRunningMonitor.js.map +1 -1
  5. package/dist/cli/checkHandler.d.ts.map +1 -1
  6. package/dist/cli/checkHandler.js +113 -125
  7. package/dist/cli/checkHandler.js.map +1 -1
  8. package/dist/cli/fixCommand.d.ts +8 -0
  9. package/dist/cli/fixCommand.d.ts.map +1 -1
  10. package/dist/cli/fixCommand.js +19 -0
  11. package/dist/cli/fixCommand.js.map +1 -1
  12. package/dist/cli/reviewMaxCommand.d.ts +2 -0
  13. package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
  14. package/dist/cli/reviewMaxCommand.js +12 -0
  15. package/dist/cli/reviewMaxCommand.js.map +1 -1
  16. package/dist/cli.js +11 -1
  17. package/dist/cli.js.map +1 -1
  18. package/dist/discord/discordCore.d.ts.map +1 -1
  19. package/dist/discord/discordCore.js.map +1 -1
  20. package/dist/issues/linearBridge.d.ts.map +1 -1
  21. package/dist/issues/linearBridge.js +0 -1
  22. package/dist/issues/linearBridge.js.map +1 -1
  23. package/dist/issues/memoryBridge.d.ts.map +1 -1
  24. package/dist/issues/memoryBridge.js +0 -2
  25. package/dist/issues/memoryBridge.js.map +1 -1
  26. package/dist/knowledge/scanner.js +3 -3
  27. package/dist/knowledge/scanner.js.map +1 -1
  28. package/dist/memory/repoKnowledge.d.ts +12 -1
  29. package/dist/memory/repoKnowledge.d.ts.map +1 -1
  30. package/dist/memory/repoKnowledge.js +32 -0
  31. package/dist/memory/repoKnowledge.js.map +1 -1
  32. package/dist/registry/bsDetector.js +2 -2
  33. package/dist/registry/bsDetector.js.map +1 -1
  34. package/dist/runners/cliRunner.d.ts +2 -0
  35. package/dist/runners/cliRunner.d.ts.map +1 -1
  36. package/dist/runners/cliRunner.js +20 -0
  37. package/dist/runners/cliRunner.js.map +1 -1
  38. package/dist/support/chatMemory.d.ts.map +1 -1
  39. package/dist/support/chatMemory.js +0 -9
  40. package/dist/support/chatMemory.js.map +1 -1
  41. package/dist/support/updateNotifier.d.ts +29 -0
  42. package/dist/support/updateNotifier.d.ts.map +1 -0
  43. package/dist/support/updateNotifier.js +119 -0
  44. package/dist/support/updateNotifier.js.map +1 -0
  45. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateNotifier.d.ts","sourceRoot":"","sources":["../../src/support/updateNotifier.ts"],"names":[],"mappings":"AAmBA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAShE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAO1F;AAoCD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/F"}
@@ -0,0 +1,119 @@
1
+ // ============================================
2
+ // OpenSwarm - Update notifier (INT-2270)
3
+ // ============================================
4
+ //
5
+ // Tell a user on an older version that a newer one is on npm. Reads a 24h cache
6
+ // (~/.openswarm/update-check.json) so almost every run is instant; at most once
7
+ // a day it does a short-timeout registry fetch. Silent on any error, non-TTY,
8
+ // CI, `--version`/`--help`, or `NO_UPDATE_NOTIFIER` — it must never slow down or
9
+ // break the CLI. The network/fs/clock are injectable for tests.
10
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
11
+ import { join, dirname } from 'node:path';
12
+ import { homedir } from 'node:os';
13
+ import { c } from './colors.js';
14
+ const PKG = '@intrect/openswarm';
15
+ const DAY_MS = 24 * 60 * 60 * 1000;
16
+ const CACHE_PATH = join(homedir(), '.openswarm', 'update-check.json');
17
+ /** Numeric semver compare (pre-release tags ignored). `latest` strictly newer? Pure. */
18
+ export function isNewer(latest, current) {
19
+ const parse = (v) => v.split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
20
+ const a = parse(latest);
21
+ const b = parse(current);
22
+ for (let i = 0; i < 3; i++) {
23
+ if ((a[i] ?? 0) > (b[i] ?? 0))
24
+ return true;
25
+ if ((a[i] ?? 0) < (b[i] ?? 0))
26
+ return false;
27
+ }
28
+ return false;
29
+ }
30
+ /** Skip the check for non-interactive, CI, opted-out, or meta/help invocations. Pure. */
31
+ export function shouldSkip(argv, env, isTTY) {
32
+ if (!isTTY)
33
+ return true;
34
+ if (env.CI || env.NO_UPDATE_NOTIFIER || env.OPENSWARM_NO_UPDATE_NOTIFIER)
35
+ return true;
36
+ const args = argv.slice(2);
37
+ const META = new Set(['--version', '-V', '--help', '-h', 'help', 'completion']);
38
+ if (args.some((a) => META.has(a)))
39
+ return true;
40
+ return false;
41
+ }
42
+ /** Fetch the latest published version from the npm registry (short timeout). */
43
+ async function fetchLatest(timeoutMs = 1200) {
44
+ const ctrl = new AbortController();
45
+ const timer = setTimeout(() => ctrl.abort(), timeoutMs);
46
+ try {
47
+ const res = await fetch(`https://registry.npmjs.org/${PKG}/latest`, { signal: ctrl.signal });
48
+ if (!res.ok)
49
+ return null;
50
+ const body = (await res.json());
51
+ return typeof body.version === 'string' ? body.version : null;
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ finally {
57
+ clearTimeout(timer);
58
+ }
59
+ }
60
+ function readCache() {
61
+ try {
62
+ const obj = JSON.parse(readFileSync(CACHE_PATH, 'utf8'));
63
+ return typeof obj?.latest === 'string' && typeof obj?.checkedAt === 'number' ? obj : null;
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ function writeCache(cache) {
70
+ try {
71
+ mkdirSync(dirname(CACHE_PATH), { recursive: true });
72
+ writeFileSync(CACHE_PATH, JSON.stringify(cache));
73
+ }
74
+ catch {
75
+ // Cache is best-effort; a read-only home must not break the CLI.
76
+ }
77
+ }
78
+ /** The two-line notice, styled with the shared console colors. Pure. */
79
+ export function formatUpdateNotice(current, latest) {
80
+ return (`\n ${c.dim('Update available')} ${c.dim(current)} ${c.dim('→')} ${c.green(latest)}\n` +
81
+ ` Run ${c.cyan(`npm i -g ${PKG}`)} to update.\n`);
82
+ }
83
+ /**
84
+ * Print an "update available" notice if the running version is behind the latest
85
+ * on npm. Uses the 24h cache; only fetches when the cache is stale (and backs off
86
+ * — stamping checkedAt even on a failed fetch — so it never refetches every run).
87
+ * Never throws. (INT-2270)
88
+ */
89
+ export async function maybeNotifyUpdate(current, deps = {}) {
90
+ try {
91
+ const argv = deps.argv ?? process.argv;
92
+ const env = deps.env ?? process.env;
93
+ const isTTY = deps.isTTY ?? !!process.stdout.isTTY;
94
+ if (shouldSkip(argv, env, isTTY))
95
+ return;
96
+ const now = deps.now ?? (() => Date.now());
97
+ const read = deps.readCache ?? readCache;
98
+ const write = deps.writeCache ?? writeCache;
99
+ const fetchFn = deps.fetchLatest ?? fetchLatest;
100
+ const out = deps.write ?? ((s) => process.stderr.write(s));
101
+ const cache = read();
102
+ let latest = cache?.latest ?? null;
103
+ const fresh = cache != null && now() - cache.checkedAt < DAY_MS;
104
+ if (!fresh) {
105
+ const fetched = await fetchFn();
106
+ // Back off even on failure (reuse the last known latest, or the current
107
+ // version) so a registry hiccup doesn't make every run hit the network.
108
+ write({ latest: fetched ?? latest ?? current, checkedAt: now() });
109
+ if (fetched)
110
+ latest = fetched;
111
+ }
112
+ if (latest && isNewer(latest, current))
113
+ out(formatUpdateNotice(current, latest));
114
+ }
115
+ catch {
116
+ // A notifier must never break the CLI.
117
+ }
118
+ }
119
+ //# sourceMappingURL=updateNotifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateNotifier.js","sourceRoot":"","sources":["../../src/support/updateNotifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intrect/openswarm",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Autonomous AI agent orchestrator — Claude, GPT, Codex, and local models (Ollama/LMStudio/llama.cpp)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -20,6 +20,7 @@
20
20
  "dev": "node --env-file=.env --import=tsx src/index.ts",
21
21
  "prestart": "pkill -f 'dist/index.js' 2>/dev/null || true",
22
22
  "build": "tsc",
23
+ "postbuild": "chmod +x dist/cli.js",
23
24
  "start": "node --env-file=.env dist/index.js",
24
25
  "stop": "pkill -f 'node --env-file=.env.*openswarm' 2>/dev/null || echo 'No process running'",
25
26
  "lint": "oxlint src/",