cortex-engine 0.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/LICENSE +21 -0
- package/README.md +154 -0
- package/dist/bin/cli.d.ts +13 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +92 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/config-cmd.d.ts +12 -0
- package/dist/bin/config-cmd.d.ts.map +1 -0
- package/dist/bin/config-cmd.js +184 -0
- package/dist/bin/config-cmd.js.map +1 -0
- package/dist/bin/config-loader.d.ts +12 -0
- package/dist/bin/config-loader.d.ts.map +1 -0
- package/dist/bin/config-loader.js +42 -0
- package/dist/bin/config-loader.js.map +1 -0
- package/dist/bin/digest-cmd.d.ts +13 -0
- package/dist/bin/digest-cmd.d.ts.map +1 -0
- package/dist/bin/digest-cmd.js +286 -0
- package/dist/bin/digest-cmd.js.map +1 -0
- package/dist/bin/init.d.ts +33 -0
- package/dist/bin/init.d.ts.map +1 -0
- package/dist/bin/init.js +355 -0
- package/dist/bin/init.js.map +1 -0
- package/dist/bin/serve.d.ts +15 -0
- package/dist/bin/serve.d.ts.map +1 -0
- package/dist/bin/serve.js +21 -0
- package/dist/bin/serve.js.map +1 -0
- package/dist/bridges/bridge.d.ts +46 -0
- package/dist/bridges/bridge.d.ts.map +1 -0
- package/dist/bridges/bridge.js +128 -0
- package/dist/bridges/bridge.js.map +1 -0
- package/dist/bridges/registry.d.ts +19 -0
- package/dist/bridges/registry.d.ts.map +1 -0
- package/dist/bridges/registry.js +36 -0
- package/dist/bridges/registry.js.map +1 -0
- package/dist/core/config.d.ts +108 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +29 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/embed.d.ts +16 -0
- package/dist/core/embed.d.ts.map +1 -0
- package/dist/core/embed.js +7 -0
- package/dist/core/embed.js.map +1 -0
- package/dist/core/llm.d.ts +31 -0
- package/dist/core/llm.d.ts.map +1 -0
- package/dist/core/llm.js +13 -0
- package/dist/core/llm.js.map +1 -0
- package/dist/core/nli.d.ts +26 -0
- package/dist/core/nli.d.ts.map +1 -0
- package/dist/core/nli.js +11 -0
- package/dist/core/nli.js.map +1 -0
- package/dist/core/session.d.ts +26 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +71 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/store.d.ts +58 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +8 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/types.d.ts +148 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/engines/cognition.d.ts +76 -0
- package/dist/engines/cognition.d.ts.map +1 -0
- package/dist/engines/cognition.js +441 -0
- package/dist/engines/cognition.js.map +1 -0
- package/dist/engines/digest.d.ts +52 -0
- package/dist/engines/digest.d.ts.map +1 -0
- package/dist/engines/digest.js +351 -0
- package/dist/engines/digest.js.map +1 -0
- package/dist/engines/fsrs.d.ts +44 -0
- package/dist/engines/fsrs.d.ts.map +1 -0
- package/dist/engines/fsrs.js +122 -0
- package/dist/engines/fsrs.js.map +1 -0
- package/dist/engines/keywords.d.ts +12 -0
- package/dist/engines/keywords.d.ts.map +1 -0
- package/dist/engines/keywords.js +45 -0
- package/dist/engines/keywords.js.map +1 -0
- package/dist/engines/memory.d.ts +55 -0
- package/dist/engines/memory.d.ts.map +1 -0
- package/dist/engines/memory.js +147 -0
- package/dist/engines/memory.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +12 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +173 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +45 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +814 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/namespace/manager.d.ts +28 -0
- package/dist/namespace/manager.d.ts.map +1 -0
- package/dist/namespace/manager.js +73 -0
- package/dist/namespace/manager.js.map +1 -0
- package/dist/namespace/scoped-store.d.ts +43 -0
- package/dist/namespace/scoped-store.d.ts.map +1 -0
- package/dist/namespace/scoped-store.js +91 -0
- package/dist/namespace/scoped-store.js.map +1 -0
- package/dist/plugins/loader.d.ts +18 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +71 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/providers/nli-http.d.ts +34 -0
- package/dist/providers/nli-http.d.ts.map +1 -0
- package/dist/providers/nli-http.js +83 -0
- package/dist/providers/nli-http.js.map +1 -0
- package/dist/providers/ollama.d.ts +37 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +103 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/vertex-embed.d.ts +38 -0
- package/dist/providers/vertex-embed.d.ts.map +1 -0
- package/dist/providers/vertex-embed.js +69 -0
- package/dist/providers/vertex-embed.js.map +1 -0
- package/dist/providers/vertex-llm.d.ts +25 -0
- package/dist/providers/vertex-llm.d.ts.map +1 -0
- package/dist/providers/vertex-llm.js +75 -0
- package/dist/providers/vertex-llm.js.map +1 -0
- package/dist/stores/firestore.d.ts +59 -0
- package/dist/stores/firestore.d.ts.map +1 -0
- package/dist/stores/firestore.js +530 -0
- package/dist/stores/firestore.js.map +1 -0
- package/dist/stores/sqlite.d.ts +43 -0
- package/dist/stores/sqlite.d.ts.map +1 -0
- package/dist/stores/sqlite.js +593 -0
- package/dist/stores/sqlite.js.map +1 -0
- package/dist/triggers/pipeline.d.ts +21 -0
- package/dist/triggers/pipeline.d.ts.map +1 -0
- package/dist/triggers/pipeline.js +30 -0
- package/dist/triggers/pipeline.js.map +1 -0
- package/dist/triggers/registry.d.ts +17 -0
- package/dist/triggers/registry.d.ts.map +1 -0
- package/dist/triggers/registry.js +32 -0
- package/dist/triggers/registry.js.map +1 -0
- package/package.json +94 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright 2026 Idapixl
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# cortex-engine
|
|
2
|
+
|
|
3
|
+
Cognitive engine for AI agents — semantic memory, observations, embeddings, dream consolidation. Cloud Run service + MCP tools.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
`cortex-engine` is a portable TypeScript service that gives AI agents persistent, structured memory. It handles:
|
|
8
|
+
|
|
9
|
+
- **Semantic memory graph** — store and retrieve observations as interconnected nodes
|
|
10
|
+
- **Embeddings** — vector representations via pluggable providers (OpenAI, Vertex AI, Anthropic)
|
|
11
|
+
- **Dream consolidation** — background process that reinforces and connects memories over time
|
|
12
|
+
- **FSRS scheduling** — spaced-repetition scheduling for memory retention
|
|
13
|
+
- **MCP server** — exposes cognitive tools (`query`, `observe`, `believe`, `wander`, etc.) over the Model Context Protocol
|
|
14
|
+
|
|
15
|
+
Runs as a standalone Cloud Run service or embedded in any Node.js environment.
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
|
|
19
|
+
| Module | Role |
|
|
20
|
+
|--------|------|
|
|
21
|
+
| `core` | Foundational types, config, and shared utilities |
|
|
22
|
+
| `engines` | Cognitive processing: memory consolidation, FSRS, graph traversal |
|
|
23
|
+
| `stores` | Persistence layer — SQLite (local) and Firestore (cloud) |
|
|
24
|
+
| `mcp` | MCP server and tool definitions |
|
|
25
|
+
| `cognitive` | Higher-order cognitive operations (dream, wander, validate) |
|
|
26
|
+
| `triggers` | Scheduled and event-driven triggers |
|
|
27
|
+
| `bridges` | Adapters for external services and APIs |
|
|
28
|
+
| `providers` | Embedding provider implementations |
|
|
29
|
+
| `bin` | Entry points: `serve.js` (HTTP + MCP), `cli.js` (admin CLI) |
|
|
30
|
+
|
|
31
|
+
## Getting Started
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git clone https://github.com/fozikio/cortex-engine.git
|
|
35
|
+
cd cortex-engine
|
|
36
|
+
npm install
|
|
37
|
+
npm run build
|
|
38
|
+
npm run serve
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Requires Node.js 20 or later.
|
|
42
|
+
|
|
43
|
+
### Agent-First Setup
|
|
44
|
+
|
|
45
|
+
The fastest path: open an AI agent in an empty directory and say *"set up a cortex workspace."* The agent runs `npx cortex-kit init`, reads the generated files, and is immediately productive. See **[docs/agent-first-setup.md](docs/agent-first-setup.md)** for the full guide.
|
|
46
|
+
|
|
47
|
+
### Development
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm run dev # tsc --watch
|
|
51
|
+
npm test # vitest run
|
|
52
|
+
npm run test:watch
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Environment Variables
|
|
56
|
+
|
|
57
|
+
| Variable | Required | Description |
|
|
58
|
+
|----------|----------|-------------|
|
|
59
|
+
| `CORTEX_API_TOKEN` | Yes | Authentication token for the HTTP API |
|
|
60
|
+
|
|
61
|
+
Additional variables are required depending on which providers you enable (Firestore, Vertex AI, OpenAI, etc.). See `docs/` for provider-specific configuration.
|
|
62
|
+
|
|
63
|
+
## Hooks, Skills & Agents
|
|
64
|
+
|
|
65
|
+
`cortex-kit init` automatically installs hooks, skills, and agent definitions from the `cortex-kit.json` manifest into the target workspace. These live in `.claude/hooks/` and `.claude/skills/` after init.
|
|
66
|
+
|
|
67
|
+
### Hooks
|
|
68
|
+
|
|
69
|
+
Hooks are shell scripts that integrate into Claude Code's event system. They fire automatically — no agent action required.
|
|
70
|
+
|
|
71
|
+
| Hook | Event | What It Does | Requires |
|
|
72
|
+
|------|-------|-------------|----------|
|
|
73
|
+
| `cognitive-grounding.sh` | `UserPromptSubmit` | Nudges the agent to call `query()` before evaluation, design, review, or creation work | — |
|
|
74
|
+
| `observe-first.sh` | `PreToolUse` (Write/Edit) | Warns if writing to Mind/, Journal/, or memory/ without calling `observe()` or `query()` first | — |
|
|
75
|
+
| `cortex-telemetry.sh` | `PostToolUse` | Tracks cortex retrieval calls and detects retries (2 calls within 60s), sends feedback to the cortex API | `CORTEX_API_URL`, `CORTEX_API_TOKEN` (optional) |
|
|
76
|
+
| `session-lifecycle.sh` | `SessionStart` | Resets session-scoped state files (telemetry log, push-gate state) | — |
|
|
77
|
+
| `project-board-gate.sh` | `PreToolUse` (Bash) | Blocks `git push` to tracked repos until board updates and/or ops logging are done | `.claude/state/project-boards.json` config |
|
|
78
|
+
|
|
79
|
+
**To disable a hook:** Delete the `.sh` file from `.claude/hooks/`. No other config changes needed.
|
|
80
|
+
|
|
81
|
+
**To customize project-board-gate:** Create `.claude/state/project-boards.json` with your repos and requirements:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"enabled": true,
|
|
86
|
+
"strength": "block",
|
|
87
|
+
"on_push": {
|
|
88
|
+
"require_board_update": true,
|
|
89
|
+
"require_ops_log": false
|
|
90
|
+
},
|
|
91
|
+
"repos": {
|
|
92
|
+
"my-repo": {
|
|
93
|
+
"board_number": 5,
|
|
94
|
+
"board_owner": "my-org",
|
|
95
|
+
"description": "My project"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Set `"strength": "off"` to disable the gate without removing the hook.
|
|
102
|
+
|
|
103
|
+
### Skills
|
|
104
|
+
|
|
105
|
+
Skills are invocable workflows that agents can use via `/skill-name`.
|
|
106
|
+
|
|
107
|
+
| Skill | When to Use | What It Provides |
|
|
108
|
+
|-------|-------------|-----------------|
|
|
109
|
+
| `cortex-query` | Before evaluation, review, design, or creation work | Best practices for querying cortex — specificity, keyword mode, neighbor exploration, anti-patterns |
|
|
110
|
+
| `cortex-review` | When reviewing code, designs, or proposals | A structured review workflow that grounds feedback in cortex memory, with a standard output format |
|
|
111
|
+
|
|
112
|
+
### Hookify Rules
|
|
113
|
+
|
|
114
|
+
The manifest declares hookify rules — declarative hook patterns managed by the [hookify](https://github.com/fozikio/hookify) tool. These are **not** auto-installed by `cortex-kit init` (hookify needs its own setup). Init prints a reminder:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Recommended hookify rules available. Run `cortex-kit install-rules` to install.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
| Rule | Purpose |
|
|
121
|
+
|------|---------|
|
|
122
|
+
| `cognitive-grounding` | Declarative version of the cognitive-grounding hook |
|
|
123
|
+
| `observe-first` | Declarative version of the observe-first hook |
|
|
124
|
+
| `note-about-doing` | Reminds agents to observe what they're doing as they work |
|
|
125
|
+
|
|
126
|
+
### Agents
|
|
127
|
+
|
|
128
|
+
| Agent | Description |
|
|
129
|
+
|-------|-------------|
|
|
130
|
+
| `cortex-researcher` | Deep research agent that queries cortex before external sources, observes novel findings back into memory |
|
|
131
|
+
|
|
132
|
+
### How Auto-Install Works
|
|
133
|
+
|
|
134
|
+
1. `cortex-kit init` reads `cortex-kit.json` from the package root
|
|
135
|
+
2. For each hook in `contents.hooks`: copies `hooks/{name}.sh` into `{workspace}/.claude/hooks/`
|
|
136
|
+
3. For each skill in `contents.skills`: copies `skills/{name}/` directory into `{workspace}/.claude/skills/`
|
|
137
|
+
4. If `contents.hookify_rules` is non-empty: prints a message (no interactive prompts)
|
|
138
|
+
5. Missing source files are skipped with a warning — init never fails due to missing assets
|
|
139
|
+
|
|
140
|
+
### Overriding Cortex Hooks
|
|
141
|
+
|
|
142
|
+
To override a hook's behavior without removing it:
|
|
143
|
+
1. Edit the `.sh` file in your workspace's `.claude/hooks/` directly — it's a plain copy, not a symlink
|
|
144
|
+
2. Re-running `cortex-kit init --here` will overwrite your changes (it copies fresh from the package)
|
|
145
|
+
3. To preserve customizations across re-init, rename the hook file (hooks are matched by filename in Claude Code settings, not by the cortex-kit manifest)
|
|
146
|
+
|
|
147
|
+
## Related Projects
|
|
148
|
+
|
|
149
|
+
- [idapixl/idapixl-cortex](https://github.com/idapixl/idapixl-cortex) — private production instance of cortex-engine, deployed on Cloud Run
|
|
150
|
+
- [fozikio/dashboard](https://github.com/fozikio/dashboard) — agent workspace dashboard backed by cortex-engine
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
MIT — see [LICENSE](LICENSE)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* cortex-kit CLI — setup and management for cortex-engine agents.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init <name> Scaffold a new agent workspace
|
|
7
|
+
* serve Start the MCP server
|
|
8
|
+
* config View or edit configuration
|
|
9
|
+
* digest Process documents through cortex
|
|
10
|
+
* help Show help
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
|
package/dist/bin/cli.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* cortex-kit CLI — setup and management for cortex-engine agents.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init <name> Scaffold a new agent workspace
|
|
7
|
+
* serve Start the MCP server
|
|
8
|
+
* config View or edit configuration
|
|
9
|
+
* digest Process documents through cortex
|
|
10
|
+
* help Show help
|
|
11
|
+
*/
|
|
12
|
+
import { loadConfig } from './config-loader.js';
|
|
13
|
+
import { runInit } from './init.js';
|
|
14
|
+
import { runDigest } from './digest-cmd.js';
|
|
15
|
+
import { runConfig } from './config-cmd.js';
|
|
16
|
+
import { startServer } from '../mcp/server.js';
|
|
17
|
+
// ─── Help ──────────────────────────────────────────────────────────────────
|
|
18
|
+
function printHelp() {
|
|
19
|
+
console.error(`cortex-kit — setup and management for cortex-engine agents
|
|
20
|
+
|
|
21
|
+
Usage:
|
|
22
|
+
cortex-kit <command> [options]
|
|
23
|
+
|
|
24
|
+
Commands:
|
|
25
|
+
init <name> Scaffold a new agent workspace
|
|
26
|
+
serve Start the MCP server (stdio)
|
|
27
|
+
config View or edit configuration
|
|
28
|
+
digest Process documents through cortex
|
|
29
|
+
help Show this help message
|
|
30
|
+
|
|
31
|
+
Init options:
|
|
32
|
+
--store sqlite|firestore Storage backend (default: sqlite)
|
|
33
|
+
--embed ollama|vertex|openai Embedding provider (default: ollama)
|
|
34
|
+
--llm ollama|gemini|anthropic|openai LLM provider (default: ollama)
|
|
35
|
+
--namespace <name> Default namespace name (default: default)
|
|
36
|
+
--here Scaffold into current directory
|
|
37
|
+
--obsidian Create .obsidian/ structure
|
|
38
|
+
|
|
39
|
+
Examples:
|
|
40
|
+
cortex-kit init my-agent
|
|
41
|
+
cortex-kit init my-agent --store firestore --embed vertex --llm gemini
|
|
42
|
+
cortex-kit init --here --obsidian
|
|
43
|
+
cortex-kit serve
|
|
44
|
+
cortex-kit config
|
|
45
|
+
cortex-kit config --store sqlite --embed ollama
|
|
46
|
+
cortex-kit digest path/to/file.md
|
|
47
|
+
cortex-kit digest --pending
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
// ─── Dispatch ──────────────────────────────────────────────────────────────
|
|
51
|
+
const [, , command, ...rest] = process.argv;
|
|
52
|
+
switch (command) {
|
|
53
|
+
case 'init':
|
|
54
|
+
runInit(rest);
|
|
55
|
+
break;
|
|
56
|
+
case 'serve':
|
|
57
|
+
(async () => {
|
|
58
|
+
const config = loadConfig();
|
|
59
|
+
await startServer(config);
|
|
60
|
+
})().catch(err => {
|
|
61
|
+
console.error('[cortex-kit] Fatal error:', err);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
break;
|
|
65
|
+
case 'config':
|
|
66
|
+
runConfig(rest).catch(err => {
|
|
67
|
+
console.error('[cortex-kit] Config error:', err);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
});
|
|
70
|
+
break;
|
|
71
|
+
case 'digest':
|
|
72
|
+
runDigest(rest).catch(err => {
|
|
73
|
+
console.error('[cortex-kit] Digest error:', err);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
});
|
|
76
|
+
break;
|
|
77
|
+
case 'help':
|
|
78
|
+
case '--help':
|
|
79
|
+
case '-h':
|
|
80
|
+
printHelp();
|
|
81
|
+
break;
|
|
82
|
+
case undefined:
|
|
83
|
+
console.error('[cortex-kit] No command provided.\n');
|
|
84
|
+
printHelp();
|
|
85
|
+
process.exit(1);
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
console.error(`[cortex-kit] Unknown command: ${command}\n`);
|
|
89
|
+
printHelp();
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,8EAA8E;AAE9E,SAAS,SAAS;IAChB,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bf,CAAC,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,MAAM,CAAC,EAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE3C,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,MAAM;QACT,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM;IAER,KAAK,OAAO;QACV,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IAER,KAAK,QAAQ;QACX,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IAER,KAAK,QAAQ;QACX,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM;IAER,KAAK,MAAM,CAAC;IACZ,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,SAAS,EAAE,CAAC;QACZ,MAAM;IAER,KAAK,SAAS;QACZ,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM;IAER;QACE,OAAO,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;QAC5D,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config-cmd.ts — cortex-kit config command handler.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* cortex-kit config Show current config
|
|
6
|
+
* cortex-kit config --store sqlite Set storage backend
|
|
7
|
+
* cortex-kit config --embed ollama Set embedding provider
|
|
8
|
+
* cortex-kit config --llm ollama Set LLM provider
|
|
9
|
+
* cortex-kit config --path Show config file path
|
|
10
|
+
*/
|
|
11
|
+
export declare function runConfig(args: string[]): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=config-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/bin/config-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgKH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD7D"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config-cmd.ts — cortex-kit config command handler.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* cortex-kit config Show current config
|
|
6
|
+
* cortex-kit config --store sqlite Set storage backend
|
|
7
|
+
* cortex-kit config --embed ollama Set embedding provider
|
|
8
|
+
* cortex-kit config --llm ollama Set LLM provider
|
|
9
|
+
* cortex-kit config --path Show config file path
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
12
|
+
import { resolve, dirname } from 'node:path';
|
|
13
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
14
|
+
import { loadConfig } from './config-loader.js';
|
|
15
|
+
import { DEFAULT_CONFIG } from '../core/config.js';
|
|
16
|
+
// ─── Config File Discovery ────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Find the config file path — mirrors the search order in config-loader.ts.
|
|
19
|
+
* Returns null if no config file exists (defaults are in use).
|
|
20
|
+
*/
|
|
21
|
+
function findConfigPath(cwd = process.cwd()) {
|
|
22
|
+
const searchPaths = [
|
|
23
|
+
resolve(cwd, '.fozikio', 'config.yaml'),
|
|
24
|
+
resolve(cwd, 'cortex.config.yaml'),
|
|
25
|
+
resolve(cwd, 'config.yaml'),
|
|
26
|
+
];
|
|
27
|
+
for (const p of searchPaths) {
|
|
28
|
+
if (existsSync(p))
|
|
29
|
+
return p;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Default write location when no config exists yet.
|
|
35
|
+
*/
|
|
36
|
+
function defaultConfigPath(cwd = process.cwd()) {
|
|
37
|
+
return resolve(cwd, '.fozikio', 'config.yaml');
|
|
38
|
+
}
|
|
39
|
+
function readRawConfig(configPath) {
|
|
40
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
41
|
+
const parsed = parseYaml(raw);
|
|
42
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
43
|
+
return {
|
|
44
|
+
path: configPath,
|
|
45
|
+
wrapped: false,
|
|
46
|
+
agentMeta: undefined,
|
|
47
|
+
cortexConfig: {},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if ('cortex' in parsed && parsed.cortex) {
|
|
51
|
+
const agentParsed = parsed;
|
|
52
|
+
return {
|
|
53
|
+
path: configPath,
|
|
54
|
+
wrapped: true,
|
|
55
|
+
agentMeta: agentParsed.agent,
|
|
56
|
+
cortexConfig: agentParsed.cortex,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
path: configPath,
|
|
61
|
+
wrapped: false,
|
|
62
|
+
agentMeta: undefined,
|
|
63
|
+
cortexConfig: parsed,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Write config back to the file, preserving agent wrapper if present.
|
|
68
|
+
*/
|
|
69
|
+
function writeConfig(raw, updates) {
|
|
70
|
+
const merged = { ...raw.cortexConfig, ...updates };
|
|
71
|
+
let outObject;
|
|
72
|
+
if (raw.wrapped) {
|
|
73
|
+
outObject = {
|
|
74
|
+
...(raw.agentMeta !== undefined ? { agent: raw.agentMeta } : {}),
|
|
75
|
+
cortex: merged,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
outObject = merged;
|
|
80
|
+
}
|
|
81
|
+
const yaml = stringifyYaml(outObject);
|
|
82
|
+
const dir = dirname(raw.path);
|
|
83
|
+
if (!existsSync(dir)) {
|
|
84
|
+
mkdirSync(dir, { recursive: true });
|
|
85
|
+
}
|
|
86
|
+
writeFileSync(raw.path, yaml, 'utf-8');
|
|
87
|
+
}
|
|
88
|
+
const VALID_STORES = ['sqlite', 'firestore'];
|
|
89
|
+
const VALID_EMBEDS = ['ollama', 'vertex', 'openai'];
|
|
90
|
+
const VALID_LLMS = ['ollama', 'gemini', 'anthropic', 'openai'];
|
|
91
|
+
function parseArgs(args) {
|
|
92
|
+
let showPath = false;
|
|
93
|
+
let store = null;
|
|
94
|
+
let embed = null;
|
|
95
|
+
let llm = null;
|
|
96
|
+
for (let i = 0; i < args.length; i++) {
|
|
97
|
+
const arg = args[i];
|
|
98
|
+
if (arg === '--path') {
|
|
99
|
+
showPath = true;
|
|
100
|
+
}
|
|
101
|
+
else if (arg === '--store' && args[i + 1]) {
|
|
102
|
+
const val = args[++i];
|
|
103
|
+
if (!VALID_STORES.includes(val)) {
|
|
104
|
+
process.stderr.write(`Error: invalid store "${val}". Valid values: ${VALID_STORES.join(', ')}\n`);
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
store = val;
|
|
108
|
+
}
|
|
109
|
+
else if (arg === '--embed' && args[i + 1]) {
|
|
110
|
+
const val = args[++i];
|
|
111
|
+
if (!VALID_EMBEDS.includes(val)) {
|
|
112
|
+
process.stderr.write(`Error: invalid embed provider "${val}". Valid values: ${VALID_EMBEDS.join(', ')}\n`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
embed = val;
|
|
116
|
+
}
|
|
117
|
+
else if (arg === '--llm' && args[i + 1]) {
|
|
118
|
+
const val = args[++i];
|
|
119
|
+
if (!VALID_LLMS.includes(val)) {
|
|
120
|
+
process.stderr.write(`Error: invalid LLM provider "${val}". Valid values: ${VALID_LLMS.join(', ')}\n`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
llm = val;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { showPath, store, embed, llm };
|
|
127
|
+
}
|
|
128
|
+
// ─── Main Export ─────────────────────────────────────────────────────────────
|
|
129
|
+
export async function runConfig(args) {
|
|
130
|
+
const parsed = parseArgs(args);
|
|
131
|
+
const hasUpdates = parsed.store !== null || parsed.embed !== null || parsed.llm !== null;
|
|
132
|
+
// --path: just print the config file path.
|
|
133
|
+
if (parsed.showPath) {
|
|
134
|
+
const configPath = findConfigPath();
|
|
135
|
+
if (configPath) {
|
|
136
|
+
process.stdout.write(configPath + '\n');
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
process.stderr.write('No config file found. Default path would be:\n');
|
|
140
|
+
process.stdout.write(defaultConfigPath() + '\n');
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
// Setting flags: update config.
|
|
145
|
+
if (hasUpdates) {
|
|
146
|
+
const configPath = findConfigPath();
|
|
147
|
+
const targetPath = configPath ?? defaultConfigPath();
|
|
148
|
+
let raw;
|
|
149
|
+
if (configPath) {
|
|
150
|
+
raw = readRawConfig(configPath);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// No config file yet — start from defaults, write to default path.
|
|
154
|
+
raw = {
|
|
155
|
+
path: targetPath,
|
|
156
|
+
wrapped: false,
|
|
157
|
+
agentMeta: undefined,
|
|
158
|
+
cortexConfig: { ...DEFAULT_CONFIG },
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const updates = {};
|
|
162
|
+
if (parsed.store !== null)
|
|
163
|
+
updates.store = parsed.store;
|
|
164
|
+
if (parsed.embed !== null)
|
|
165
|
+
updates.embed = parsed.embed;
|
|
166
|
+
if (parsed.llm !== null)
|
|
167
|
+
updates.llm = parsed.llm;
|
|
168
|
+
writeConfig(raw, updates);
|
|
169
|
+
process.stderr.write(`Config updated: ${targetPath}\n`);
|
|
170
|
+
const parts = [];
|
|
171
|
+
if (parsed.store !== null)
|
|
172
|
+
parts.push(`store=${parsed.store}`);
|
|
173
|
+
if (parsed.embed !== null)
|
|
174
|
+
parts.push(`embed=${parsed.embed}`);
|
|
175
|
+
if (parsed.llm !== null)
|
|
176
|
+
parts.push(`llm=${parsed.llm}`);
|
|
177
|
+
process.stderr.write(` ${parts.join(', ')}\n`);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
// Default: show current config as YAML.
|
|
181
|
+
const config = loadConfig();
|
|
182
|
+
process.stdout.write(stringifyYaml(config));
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/bin/config-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config-loader.ts — shared config loading for cortex-engine.
|
|
3
|
+
*
|
|
4
|
+
* Config search order:
|
|
5
|
+
* 1. .fozikio/config.yaml (agent workspace)
|
|
6
|
+
* 2. cortex.config.yaml (project root)
|
|
7
|
+
* 3. config.yaml (project root)
|
|
8
|
+
* 4. defaults (sqlite + ollama)
|
|
9
|
+
*/
|
|
10
|
+
import type { CortexConfig } from '../core/config.js';
|
|
11
|
+
export declare function loadConfig(cwd?: string): CortexConfig;
|
|
12
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/bin/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAEnE,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,YAAY,CA8BpE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config-loader.ts — shared config loading for cortex-engine.
|
|
3
|
+
*
|
|
4
|
+
* Config search order:
|
|
5
|
+
* 1. .fozikio/config.yaml (agent workspace)
|
|
6
|
+
* 2. cortex.config.yaml (project root)
|
|
7
|
+
* 3. config.yaml (project root)
|
|
8
|
+
* 4. defaults (sqlite + ollama)
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
12
|
+
import { parse as parseYaml } from 'yaml';
|
|
13
|
+
import { DEFAULT_CONFIG } from '../core/config.js';
|
|
14
|
+
export function loadConfig(cwd = process.cwd()) {
|
|
15
|
+
const searchPaths = [
|
|
16
|
+
resolve(cwd, '.fozikio', 'config.yaml'),
|
|
17
|
+
resolve(cwd, 'cortex.config.yaml'),
|
|
18
|
+
resolve(cwd, 'config.yaml'),
|
|
19
|
+
];
|
|
20
|
+
for (const configPath of searchPaths) {
|
|
21
|
+
if (existsSync(configPath)) {
|
|
22
|
+
try {
|
|
23
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
24
|
+
const parsed = parseYaml(raw);
|
|
25
|
+
if (parsed && typeof parsed === 'object' && 'cortex' in parsed && parsed.cortex) {
|
|
26
|
+
// Wrapped AgentConfig format
|
|
27
|
+
return { ...DEFAULT_CONFIG, ...parsed.cortex };
|
|
28
|
+
}
|
|
29
|
+
// Top-level CortexConfig format
|
|
30
|
+
return { ...DEFAULT_CONFIG, ...parsed };
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
console.error(`[cortex-engine] Failed to parse config at ${configPath}: ${message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// No config found — use defaults
|
|
39
|
+
console.error('[cortex-engine] No config file found, using defaults (sqlite + ollama)');
|
|
40
|
+
return DEFAULT_CONFIG;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/bin/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,UAAU,UAAU,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACpD,MAAM,WAAW,GAAG;QAClB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC;QACvC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAClC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;KAC5B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAA+B,CAAC;gBAE5D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChF,6BAA6B;oBAC7B,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjD,CAAC;gBAED,gCAAgC;gBAChC,OAAO,EAAE,GAAG,cAAc,EAAE,GAAI,MAAgC,EAAE,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,6CAA6C,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;IACxF,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* digest-cmd.ts — cortex-kit digest command handler.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* cortex-kit digest <file> Process a single file
|
|
6
|
+
* cortex-kit digest --pending Process files with directive: digest
|
|
7
|
+
* cortex-kit digest --dry-run Show what would be processed
|
|
8
|
+
* cortex-kit digest --pipeline observe,reflect,predict Custom pipeline
|
|
9
|
+
* cortex-kit digest --namespace prediction Target namespace
|
|
10
|
+
* cortex-kit digest --dir <path> Directory to scan for --pending
|
|
11
|
+
*/
|
|
12
|
+
export declare function runDigest(args: string[]): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=digest-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-cmd.d.ts","sourceRoot":"","sources":["../../src/bin/digest-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2SH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF7D"}
|