monomind 2.0.3 → 2.1.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/package.json +9 -5
- package/packages/@monomind/cli/.claude/helpers/control-start.cjs +13 -20
- package/packages/@monomind/cli/.claude/helpers/event-logger.cjs +109 -6
- package/packages/@monomind/cli/.claude/helpers/graphify-freshen.cjs +19 -17
- package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +60 -28
- package/packages/@monomind/cli/.claude/helpers/handlers/capture-handler.cjs +75 -18
- package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +27 -9
- package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +16 -7
- package/packages/@monomind/cli/.claude/helpers/handlers/loops-status-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +4 -4
- package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +40 -22
- package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +0 -12
- package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +53 -22
- package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +54 -4
- package/packages/@monomind/cli/.claude/helpers/intelligence.cjs +94 -15
- package/packages/@monomind/cli/.claude/helpers/session.cjs +6 -1
- package/packages/@monomind/cli/.claude/helpers/statusline.cjs +10 -10
- package/packages/@monomind/cli/.claude/helpers/token-tracker.cjs +3 -3
- package/packages/@monomind/cli/.claude/helpers/utils/agent-registrations.cjs +41 -0
- package/packages/@monomind/cli/.claude/helpers/utils/fs-helpers.cjs +183 -0
- package/packages/@monomind/cli/.claude/helpers/utils/micro-agents.cjs +10 -6
- package/packages/@monomind/cli/.claude/helpers/utils/telemetry.cjs +35 -19
- package/packages/@monomind/cli/bin/cli.js +10 -1
- package/packages/@monomind/cli/dist/src/commands/agent-ops.js +9 -15
- package/packages/@monomind/cli/dist/src/commands/cleanup.js +20 -4
- package/packages/@monomind/cli/dist/src/commands/completions.js +66 -261
- package/packages/@monomind/cli/dist/src/commands/doctor.js +7 -2
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +7 -0
- package/packages/@monomind/cli/dist/src/commands/index.js +3 -0
- package/packages/@monomind/cli/dist/src/commands/mcp.js +11 -6
- package/packages/@monomind/cli/dist/src/commands/memory-admin.js +12 -6
- package/packages/@monomind/cli/dist/src/commands/memory-transfer.js +6 -13
- package/packages/@monomind/cli/dist/src/commands/monograph.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/org.d.ts +3 -1
- package/packages/@monomind/cli/dist/src/commands/org.js +306 -129
- package/packages/@monomind/cli/dist/src/commands/start.js +142 -37
- package/packages/@monomind/cli/dist/src/commands/tokens.js +21 -3
- package/packages/@monomind/cli/dist/src/config-adapter.js +37 -17
- package/packages/@monomind/cli/dist/src/index.js +64 -28
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +44 -11
- package/packages/@monomind/cli/dist/src/init/executor.js +63 -49
- package/packages/@monomind/cli/dist/src/mcp-client.d.ts +8 -3
- package/packages/@monomind/cli/dist/src/mcp-client.js +37 -3
- package/packages/@monomind/cli/dist/src/mcp-server.js +8 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.d.ts +20 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +10 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +30 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +11 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +51 -34
- package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.js +9 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +56 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +65 -43
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +6 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/types.d.ts +20 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/types.js +36 -1
- package/packages/@monomind/cli/dist/src/memory/hnsw-operations.d.ts +13 -1
- package/packages/@monomind/cli/dist/src/memory/hnsw-operations.js +66 -14
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +99 -3
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +20 -0
- package/packages/@monomind/cli/dist/src/orgrt/broker.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/orgrt/broker.js +68 -0
- package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +30 -0
- package/packages/@monomind/cli/dist/src/orgrt/daemon.js +96 -7
- package/packages/@monomind/cli/dist/src/orgrt/forwarder.d.ts +10 -5
- package/packages/@monomind/cli/dist/src/orgrt/forwarder.js +105 -8
- package/packages/@monomind/cli/dist/src/orgrt/live.html +56 -0
- package/packages/@monomind/cli/dist/src/orgrt/provider.js +1 -0
- package/packages/@monomind/cli/dist/src/orgrt/scheduler.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/orgrt/scheduler.js +48 -0
- package/packages/@monomind/cli/dist/src/orgrt/server.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/orgrt/server.js +72 -0
- package/packages/@monomind/cli/dist/src/orgrt/test-loop.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/orgrt/test-loop.js +108 -0
- package/packages/@monomind/cli/dist/src/output.js +12 -5
- package/packages/@monomind/cli/dist/src/parser.d.ts +32 -0
- package/packages/@monomind/cli/dist/src/parser.js +130 -5
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +13 -1
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +31 -0
- package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +21 -0
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +60 -7
- package/packages/@monomind/cli/dist/src/services/crash-reporter.js +2 -1
- package/packages/@monomind/cli/dist/src/ui/dashboard.html +40 -40
- package/packages/@monomind/cli/dist/src/ui/orgs.html +110 -11
- package/packages/@monomind/cli/dist/src/ui/server.mjs +304 -133
- package/packages/@monomind/cli/dist/src/utils/input-guards.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/utils/input-guards.js +39 -5
- package/packages/@monomind/cli/package.json +6 -2
|
@@ -18,6 +18,15 @@ export interface ValidateInputOpts {
|
|
|
18
18
|
maxLength?: number;
|
|
19
19
|
required?: boolean;
|
|
20
20
|
}
|
|
21
|
+
/** Resolve symlinks so the containment check below can't be bypassed by a
|
|
22
|
+
* link that lexically resolves inside cwd but physically points outside it
|
|
23
|
+
* (e.g. `./link -> /etc`). `realpathSync` requires the full path to exist,
|
|
24
|
+
* which a not-yet-created file (or a symlinked *directory* holding a
|
|
25
|
+
* not-yet-created file) would fail — so walk up to the longest existing
|
|
26
|
+
* ancestor, realpath *that* (resolving any symlink components in it), and
|
|
27
|
+
* re-append the non-existent tail. Falls back to the lexical path only when
|
|
28
|
+
* no ancestor at all can be resolved. */
|
|
29
|
+
export declare function realOrResolved(p: string): string;
|
|
21
30
|
/**
|
|
22
31
|
* Validate and sanitize an input value.
|
|
23
32
|
*
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module @monomind/cli/utils/input-guards
|
|
10
10
|
*/
|
|
11
|
-
import { resolve, isAbsolute } from 'node:path';
|
|
11
|
+
import { resolve, isAbsolute, relative, dirname, basename } from 'node:path';
|
|
12
12
|
import { cwd } from 'node:process';
|
|
13
|
+
import { realpathSync } from 'node:fs';
|
|
13
14
|
/**
|
|
14
15
|
* Strip C0 and C1 control characters (U+0000–U+001F, U+007F–U+009F)
|
|
15
16
|
* but preserve printable ASCII and extended Unicode.
|
|
@@ -52,6 +53,33 @@ function validateNumber(value, opts) {
|
|
|
52
53
|
}
|
|
53
54
|
return { valid: true, sanitized: String(parsed) };
|
|
54
55
|
}
|
|
56
|
+
/** Resolve symlinks so the containment check below can't be bypassed by a
|
|
57
|
+
* link that lexically resolves inside cwd but physically points outside it
|
|
58
|
+
* (e.g. `./link -> /etc`). `realpathSync` requires the full path to exist,
|
|
59
|
+
* which a not-yet-created file (or a symlinked *directory* holding a
|
|
60
|
+
* not-yet-created file) would fail — so walk up to the longest existing
|
|
61
|
+
* ancestor, realpath *that* (resolving any symlink components in it), and
|
|
62
|
+
* re-append the non-existent tail. Falls back to the lexical path only when
|
|
63
|
+
* no ancestor at all can be resolved. */
|
|
64
|
+
export function realOrResolved(p) {
|
|
65
|
+
let cur = p;
|
|
66
|
+
const tail = [];
|
|
67
|
+
// eslint-disable-next-line no-constant-condition
|
|
68
|
+
for (let i = 0; i < 64; i++) {
|
|
69
|
+
try {
|
|
70
|
+
const real = realpathSync(cur);
|
|
71
|
+
return tail.length ? resolve(real, ...tail.reverse()) : real;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
const parent = dirname(cur);
|
|
75
|
+
if (parent === cur)
|
|
76
|
+
return p; // reached filesystem root, nothing resolvable
|
|
77
|
+
tail.push(basename(cur));
|
|
78
|
+
cur = parent;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return p;
|
|
82
|
+
}
|
|
55
83
|
function validatePath(value, opts) {
|
|
56
84
|
if (typeof value !== 'string') {
|
|
57
85
|
return { valid: false, error: 'Path must be a string' };
|
|
@@ -63,11 +91,17 @@ function validatePath(value, opts) {
|
|
|
63
91
|
if (/(^|[\\/])\.\.($|[\\/])/.test(value)) {
|
|
64
92
|
return { valid: false, error: 'Path must not contain directory traversal (..)' };
|
|
65
93
|
}
|
|
66
|
-
// Reject absolute paths that escape cwd
|
|
94
|
+
// Reject absolute paths that escape cwd. Uses path.relative (platform-correct
|
|
95
|
+
// separator handling — the previous `startsWith(cwd + '/')` hardcoded POSIX
|
|
96
|
+
// '/' and rejected every legitimate path on Windows) plus realpathSync on
|
|
97
|
+
// both sides so a symlink that's lexically inside cwd but physically points
|
|
98
|
+
// outside it is caught too. Mirrors the pattern in
|
|
99
|
+
// src/memory/memory-bridge.ts's getDbPath().
|
|
67
100
|
if (isAbsolute(value)) {
|
|
68
|
-
const cwdPath = cwd();
|
|
69
|
-
const resolved = resolve(value);
|
|
70
|
-
|
|
101
|
+
const cwdPath = realOrResolved(cwd());
|
|
102
|
+
const resolved = realOrResolved(resolve(value));
|
|
103
|
+
const rel = relative(cwdPath, resolved);
|
|
104
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
71
105
|
return { valid: false, error: 'Absolute path must not escape the current working directory' };
|
|
72
106
|
}
|
|
73
107
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/monomindcli",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Monomind CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"types": "dist/src/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=20.0.0"
|
|
11
|
+
},
|
|
9
12
|
"bin": {
|
|
10
13
|
"cli": "./bin/cli.js",
|
|
11
14
|
"monomind": "./bin/cli.js",
|
|
@@ -80,7 +83,8 @@
|
|
|
80
83
|
"README.md"
|
|
81
84
|
],
|
|
82
85
|
"scripts": {
|
|
83
|
-
"build": "tsc
|
|
86
|
+
"build": "tsc && mkdir -p dist/src/browser/dashboard && cp src/browser/dashboard/ui.html dist/src/browser/dashboard/ui.html && mkdir -p dist/src/orgrt && cp src/orgrt/live.html dist/src/orgrt/",
|
|
87
|
+
"build:loose": "tsc --noEmitOnError false || true && mkdir -p dist/src/browser/dashboard && cp src/browser/dashboard/ui.html dist/src/browser/dashboard/ui.html && mkdir -p dist/src/orgrt && cp src/orgrt/live.html dist/src/orgrt/",
|
|
84
88
|
"test": "vitest run",
|
|
85
89
|
"test:pattern-store": "npx tsx src/transfer/store/tests/standalone-test.ts",
|
|
86
90
|
"prepublishOnly": "cp ../../../README.md ./README.md",
|