Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
79a25b8
feat(tui): reactive state overhaul — all phases complete
ruttydm Apr 8, 2026
433e886
refactor(signal): extract to OpenCompany\Signal namespace + productio…
ruttydm Apr 8, 2026
11ad9a1
perf(signal): batch signal writes in animation timer callbacks
ruttydm Apr 8, 2026
39c543a
refactor(signal): rename OpenCompany\Signal to Rubedo namespace
ruttydm Apr 8, 2026
6127ca9
refactor(signal): rename Rubedo to Athanor namespace
ruttydm Apr 8, 2026
2ef6f2d
feat: subagent batch mode docs + Lua docs + TUI overhaul plans
ruttydm Apr 8, 2026
ab3670e
docs: add audits, proposals, website docs, and config updates
ruttydm Apr 8, 2026
43c56a1
feat: headless CLI mode — non-interactive execution for CI/CD and scr…
ruttydm Apr 8, 2026
03c7079
refactor(tui): extract reactive builders and consolidate animation ti…
ruttydm Apr 9, 2026
407ce2b
fix: improve LLM retry logging and clear discovery batch state
ruttydm Apr 9, 2026
42809ef
feat(tui): SwiftUI-style reactive primitive layer + ReactiveBridge wi…
ruttydm Apr 9, 2026
ab9864a
refactor(tui): delete StatusBarBuilder and TaskBarBuilder
ruttydm Apr 9, 2026
52e426f
fix(tui): ReactiveBridge — recreate EffectScope on restart
ruttydm Apr 9, 2026
7a73d8d
fix(tui): null-safe ReactiveBridge::stop()
ruttydm Apr 9, 2026
0e46eb9
refactor(tui): migrate HistoryStatusWidget to ReactiveWidget
ruttydm Apr 9, 2026
3a7f582
refactor(tui): eliminate all Effects from TuiCoreRenderer
ruttydm Apr 9, 2026
f54a35a
refactor(tui): signal-only TuiAnimationManager + reactive loader widgets
ruttydm Apr 9, 2026
7180117
test(tui): add 71 tests for reactive primitives and compositions
ruttydm Apr 9, 2026
23206be
fix(lua): skip file_read cache when called from Lua scripts
ruttydm Apr 9, 2026
466aad5
refactor(tool): remove file_read cache entirely
ruttydm Apr 9, 2026
fc1b7de
feat: session search tool, enhanced memory/context, logging/security …
ruttydm Apr 10, 2026
5e6d0a4
feat: overhaul integrations and lua docs workflow
ruttydm Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .wrangler/cache/pages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"account_id": "90236e329056579681dbfbc661bbaa06",
"project_name": "kosmokrator-docs"
}
16 changes: 15 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,21 @@ php vendor/bin/pint # Code style (Laravel Pint)

Config loaded from `config/kosmokrator.yaml`, overridable via `~/.kosmokrator/config.yaml` or `.kosmokrator.yaml` in the working directory.

`README.md`, `docs/architecture/overview.md`, `docs/architecture/permission-modes.md`, and `AGENTS.md` are the main current-truth docs. Files in `docs/proposals/` and `docs/audits/` are proposals or historical notes unless explicitly marked otherwise.
`README.md`, `docs/architecture/overview.md`, `docs/architecture/permission-modes.md`, and `AGENTS.md` are the main current-truth docs. Files in `docs/proposals/` are design notes. Actionable backlog is tracked in Plane, not in repo audit/todo docs.

## MCP CLI

- MCP CLI is installed at `~/.local/bin/mcp-cli`.
- Config is at `~/.config/mcp/mcp_servers.json`.
- Common usage:
- `mcp-cli`
- `mcp-cli info <server>`
- `mcp-cli call <server> <tool> '<json>'`
- Connected servers currently include:
- `founder-mode`
- `notion`
- `vibe_kanban`
- `plane`

### Building a PHAR

Expand Down
10 changes: 9 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,15 @@ php vendor/bin/pint # Code style (Laravel Pint)

Config loaded from `config/kosmokrator.yaml`, overridable via `~/.kosmokrator/config.yaml` or `.kosmokrator.yaml` in the working directory.

`README.md`, `docs/architecture/overview.md`, `docs/architecture/permission-modes.md`, and `AGENTS.md` are the main current-truth docs. Files in `docs/proposals/` and `docs/audits/` are proposals or historical notes unless explicitly marked otherwise.
`README.md`, `docs/architecture/overview.md`, `docs/architecture/permission-modes.md`, and `AGENTS.md` are the main current-truth docs. Files in `docs/proposals/` are design notes. Actionable backlog is tracked in Plane, not in repo audit/todo docs.

## CLI Tools

### mcp-cli
- Installed at `~/.local/bin/mcp-cli` — a lightweight CLI for testing and calling MCP servers
- Config: `~/.config/mcp/mcp_servers.json`
- Usage: `mcp-cli` (list all), `mcp-cli info <server>` (details), `mcp-cli call <server> <tool> '<json>'` (call a tool)
- Connected servers: `founder-mode`, `notion`, `vibe_kanban`, `plane`

### Building a PHAR

Expand Down
48 changes: 30 additions & 18 deletions bin/kosmokrator
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,51 @@

declare(strict_types=1);

use Kosmokrator\Command\AgentCommand;
use Kosmokrator\Command\AuthCommand;
use Kosmokrator\Command\CodexLoginCommand;
use Kosmokrator\Command\CodexLogoutCommand;
use Kosmokrator\Command\CodexStatusCommand;
use Kosmokrator\Command\ConfigCommand;
use Kosmokrator\Command\SetupCommand;
use Kosmokrator\Kernel;
use NunoMaduro\Collision\Provider;

define('KOSMOKRATOR_START', microtime(true));

// Autoloader
$autoloader = require file_exists(__DIR__ . '/../vendor/autoload.php')
? __DIR__ . '/../vendor/autoload.php'
: __DIR__ . '/../../../autoload.php';
$autoloader = require file_exists(__DIR__.'/../vendor/autoload.php')
? __DIR__.'/../vendor/autoload.php'
: __DIR__.'/../../../autoload.php';

// Pretty error rendering (dev)
if (class_exists(\NunoMaduro\Collision\Provider::class)) {
(new \NunoMaduro\Collision\Provider())->register();
if (class_exists(Provider::class)) {
(new Provider)->register();
}

// Boot the kernel
$kernel = new Kosmokrator\Kernel(dirname(__DIR__));
$kernel = new Kernel(dirname(__DIR__));
$kernel->boot();

// Register commands
$console = $kernel->getConsole();
$console->addCommand(new Kosmokrator\Command\AgentCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\CodexLoginCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\CodexStatusCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\CodexLogoutCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\SetupCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\ConfigCommand($kernel->getContainer()));
$console->addCommand(new Kosmokrator\Command\AuthCommand($kernel->getContainer()));

// Run setup if explicitly requested, otherwise default to agent (single-command style)
$console->addCommand(new AgentCommand($kernel->getContainer()));
$console->addCommand(new CodexLoginCommand($kernel->getContainer()));
$console->addCommand(new CodexStatusCommand($kernel->getContainer()));
$console->addCommand(new CodexLogoutCommand($kernel->getContainer()));
$console->addCommand(new SetupCommand($kernel->getContainer()));
$console->addCommand(new ConfigCommand($kernel->getContainer()));
$console->addCommand(new AuthCommand($kernel->getContainer()));

// Default to agent in single-command mode unless another explicit command is requested.
// 'agent' is removed from the explicit list so that `kosmokrator agent "prompt"`
// enters single-command mode correctly (positional prompt binds to the command).
$args = $_SERVER['argv'] ?? [];
$explicitCommands = ['agent', 'setup', 'config', 'auth', 'codex:login', 'codex:status', 'codex:logout', 'list', 'help', '_complete', 'completion'];
$explicitCommands = ['setup', 'config', 'auth', 'codex:login', 'codex:status', 'codex:logout', 'list', 'help', '_complete', 'completion'];
$requestedCommand = $args[1] ?? null;
$isExplicitCommand = is_string($requestedCommand) && in_array($requestedCommand, $explicitCommands, true);
$isExplicitCommand = is_string($requestedCommand) && ! str_starts_with($requestedCommand, '-') && in_array($requestedCommand, $explicitCommands, true);

if ($requestedCommand === null || str_starts_with($requestedCommand, '-') || ! $isExplicitCommand) {
if (! $isExplicitCommand) {
$console->setDefaultCommand('agent', true);
}

Expand Down
13 changes: 13 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@
"amphp/http-client": "^5.3",
"league/commonmark": "^2.9",
"opencompany/prism-codex": "dev-main",
"opencompanyapp/integration-clickup": "@dev",
"opencompanyapp/integration-coingecko": "@dev",
"opencompanyapp/integration-core": "@dev",
"opencompanyapp/integration-plane": "@dev",
"opencompanyapp/integration-plausible": "@dev",
"opencompanyapp/prism-relay": "dev-main",
"prism-php/prism": "^0.100",
"revolt/event-loop": "^1.0",
Expand All @@ -41,6 +45,14 @@
"type": "path",
"url": "/Users/rutger/Sites/integrations/core"
},
{
"name": "integrations-monorepo",
"type": "path",
"url": "/Users/rutger/Sites/integrations/packages/*",
"options": {
"symlink": true
}
},
{
"type": "vcs",
"url": "https://github.com/OpenCompanyApp/symfony.git"
Expand All @@ -57,6 +69,7 @@
"autoload": {
"psr-4": {
"Kosmokrator\\": "src/",
"Athanor\\": "src/Athanor/",
"Symfony\\Component\\Tui\\": "vendor/symfony/tui/src/Symfony/Component/Tui/"
}
},
Expand Down
207 changes: 205 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading