Merge pull request 'chore(rebrand): brand caps MokoGit -> MokoGIT' (#347) from fix/brand-mokogit-caps into main

This commit was merged in pull request #347.
This commit is contained in:
2026-07-14 21:15:38 +00:00
51 changed files with 114 additions and 114 deletions
+3 -3
View File
@@ -38,7 +38,7 @@ composer check # Run all checks
| `lib/Enterprise/Plugins/` | 11 platform plugins (Joomla, Dolibarr, Node.js, Python, etc.) |
| `deploy/` | SFTP deployment scripts (Joomla, Dolibarr, health checks) |
| `templates/` | Universal templates, configs, governance schema |
| `.mokogit/workflows/` | CI/CD workflows (MokoGit Actions) |
| `.mokogit/workflows/` | CI/CD workflows (MokoGIT Actions) |
| `bin/moko` | Unified CLI dispatcher — `php bin/moko <command>` |
| `monitoring/sites.json` | Sites list for mcp_mokomonitor |
@@ -50,7 +50,7 @@ After adding a CLI tool, register it in `bin/moko` COMMAND_MAP.
### Platform Adapters
- `MokoGitAdapter` — git.mokoconsulting.tech (primary)
- `MokoGITAdapter` — git.mokoconsulting.tech (primary)
- `GitHubAdapter` — github.com mirrors
### Plugin System
@@ -71,6 +71,6 @@ PHPStan runs with `--memory-limit=512M`. CI enforces PHPCS errors; PHPStan is `c
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **New CLI tools**: extend `CliFramework`, not `CLIApp` (legacy)
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/auto-bump.yml
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/auto-release.yml
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Universal
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/branch-cleanup.yml
+3 -3
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Cascade
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/cascade-dev.yml
@@ -91,7 +91,7 @@ jobs:
"${NTFY_URL}/${NTFY_TOPIC}" || true
}
# 3. wait for MokoGit to compute mergeability (conflict detection)
# 3. wait for MokoGIT to compute mergeability (conflict detection)
MERGEABLE=""
for _ in 1 2 3 4 5 6; do
MERGEABLE=$(curl -sf -H "$AUTH" "${API}/pulls/${PR}" | jqget mergeable)
@@ -115,7 +115,7 @@ jobs:
# 4b. conflicts -> try to auto-resolve if they are ONLY VERSION-stamp lines.
echo "PR not cleanly mergeable; checking whether conflicts are VERSION-stamp-only..."
git config user.name "MokoGit Cascade"
git config user.name "MokoGIT Cascade"
git config user.email "actions@mokoconsulting.tech"
git fetch --quiet origin main dev
git checkout -B dev origin/dev
+2 -2
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.CI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/ci-generic.yml
@@ -131,7 +131,7 @@ jobs:
test:
name: Tests
runs-on: ubuntu-latest
# Independent job (no `needs: lint`): the MokoGit Actions scheduler does not
# Independent job (no `needs: lint`): the MokoGIT Actions scheduler does not
# offer the dependent 2nd job of a needs-chain to runners, so it stalls in
# "waiting" and is reaped by ABANDONED_JOB_TIMEOUT. Guard template repos
# directly (same condition lint uses) instead of gating on lint's result.
+2 -2
View File
@@ -3,12 +3,12 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Universal
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/ci-issue-reporter.yml
# VERSION: 01.00.00
# BRIEF: Reusable workflow — creates/updates a MokoGit issue when a CI gate fails.
# BRIEF: Reusable workflow — creates/updates a MokoGIT issue when a CI gate fails.
# Clones MokoCLI and runs cli/ci_issue_reporter.sh.
name: "Universal: CI Issue Reporter"
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Maintenance
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogit/workflows/cleanup.yml
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Security
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogit/workflows/gitleaks.yml
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Automation
# VERSION: 01.00.00
# BRIEF: Auto-create feature branch when an issue is opened
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Notifications
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogit/workflows/notify.yml
+4 -4
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.CI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/pr-check.yml
@@ -224,7 +224,7 @@ jobs:
- name: Detect platform
id: platform
run: |
# Platform comes from the MokoGit metadata API (public GET).
# Platform comes from the MokoGIT metadata API (public GET).
API="${GITHUB_SERVER_URL:-https://git.mokoconsulting.tech}/api/v1/repos/${GITHUB_REPOSITORY}/metadata"
PLATFORM="$(curl -sf "$API" 2>/dev/null | python3 -c "import sys, json; print(json.load(sys.stdin).get('platform') or '')" 2>/dev/null || true)"
[ -z "$PLATFORM" ] && PLATFORM="generic"
@@ -361,10 +361,10 @@ jobs:
for ELEMENT in name version description; do
grep -q "<${ELEMENT}>" "$MANIFEST" || { echo "::error::Missing <${ELEMENT}> in manifest"; exit 1; }
done
# Block legacy raw/branch update server URLs on MokoGit
# Block legacy raw/branch update server URLs on MokoGIT
RAW_URLS=$(grep -n 'raw/branch' "$MANIFEST" | grep -i 'mokoconsulting\|mokogit\|git\.mokoconsulting\.tech' || true)
if [ -n "$RAW_URLS" ]; then
echo "::error::Manifest contains legacy raw/branch update server URL on MokoGit. Use the MokoGit Pages URL instead (e.g. /{REPO}/updates.xml not /{REPO}/raw/branch/main/updates.xml)"
echo "::error::Manifest contains legacy raw/branch update server URL on MokoGIT. Use the MokoGIT Pages URL instead (e.g. /{REPO}/updates.xml not /{REPO}/raw/branch/main/updates.xml)"
echo "$RAW_URLS"
exit 1
fi
+2 -2
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/pre-release.yml
@@ -251,7 +251,7 @@ jobs:
--token "${{ secrets.MOKOGIT_TOKEN }}" --api-base "$API_BASE" \
--repo "${GIT_REPO}" --output /tmp || true
# updates.xml is generated dynamically by MokoGit license server
# updates.xml is generated dynamically by MokoGIT license server
# No need to build, commit, or sync updates.xml from workflows
- name: "Delete lesser pre-release channels (cascade)"
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Universal
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/rc-revert.yml
+2 -2
View File
@@ -6,7 +6,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow
# DEFGROUP: MokoGIT.Workflow
# INGROUP: MokoCLI.Validation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Generic
# PATH: /.mokogit/workflows/repo-health.yml
@@ -605,7 +605,7 @@ jobs:
printf '%s\n' '| Domain | Status | Notes |'
printf '%s\n' '|---|---|---|'
printf '%s\n' '| Access control | OK | Admin-only execution gate |'
printf '%s\n' '| Release policy | N/A | Releases handled by MokoGit |'
printf '%s\n' '| Release policy | N/A | Releases handled by MokoGIT |'
printf '%s\n' '| Scripts governance | OK | Directory policy and advisory reporting |'
printf '%s\n' '| Repo required artifacts | OK | Required, optional, disallowed enforcement |'
printf '%s\n' '| Repo content heuristics | OK | Brand, license, changelog structure |'
+1 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
# FILE INFORMATION
# DEFGROUP: MokoGit.Workflow.Template
# DEFGROUP: MokoGIT.Workflow.Template
# INGROUP: MokoCLI.CI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla
# PATH: /.mokogit/workflows/version-set.yml
+1 -1
View File
@@ -34,7 +34,7 @@ feature/* ──PR──> dev ──draft PR──> (renamed to rc) ──merge
7. **Merging to main** triggers the stable release pipeline:
- Minor version bump (e.g., `02.09.xx` → `02.10.00`)
- Stability suffix stripped (clean version)
- MokoGit release created with ZIP/tar.gz packages
- MokoGIT release created with ZIP/tar.gz packages
- `updates.xml` updated (Joomla extensions)
- `dev` branch recreated from `main`
+6 -6
View File
@@ -16,7 +16,7 @@ BRIEF: Project overview and documentation
PHP implementation of mokocli — enterprise standards, automation framework, workflow templates, and bulk sync tooling.
> **Primary platform**: [MokoGit — git.mokoconsulting.tech](https://git.mokoconsulting.tech/MokoConsulting/MokoCli-API)
> **Primary platform**: [MokoGIT — git.mokoconsulting.tech](https://git.mokoconsulting.tech/MokoConsulting/MokoCli-API)
> **Backup mirror**: [GitHub](https://github.com/MokoConsulting/MokoCli-API) *(read-only mirror)*
## What Lives Here
@@ -25,7 +25,7 @@ PHP implementation of mokocli — enterprise standards, automation framework, wo
|-----------|---------|
| `lib/Enterprise/` | 38 PHP enterprise library classes (platform adapters, sync, validation, plugins) |
| `cli/` | CLI scripts (archive, create, release, sync rulesets, version management) |
| `automation/` | Bulk sync, push files, repo cleanup, MokoGit migration |
| `automation/` | Bulk sync, push files, repo cleanup, MokoGIT migration |
| `validate/` | 18 validation scripts (health, structure, secrets, syntax, drift) |
| `templates/` | **Workflow templates** and config templates synced to governed repos |
| `definitions/` | Repository structure definitions (`.tf` format) |
@@ -42,7 +42,7 @@ composer require mokoconsulting-tech/enterprise
### Composer Registry
This package is served from MokoGit package registry. Add this to your `composer.json`:
This package is served from MokoGIT package registry. Add this to your `composer.json`:
```json
{
@@ -73,10 +73,10 @@ vendor/bin/moko inventory -- --path .
| Variable | Purpose |
|----------|---------|
| `GIT_PLATFORM` | `git` (default) or `github` |
| `GA_TOKEN` | MokoGit API / MokoGit Actions token |
| `GA_TOKEN` | MokoGIT API / MokoGIT Actions token |
| `GH_TOKEN` | GitHub API token (for mirror sync) |
| `GIT_URL` | MokoGit instance URL (default: `https://git.mokoconsulting.tech`) |
| `GIT_ORG` | MokoGit organization (default: `MokoConsulting`) |
| `GIT_URL` | MokoGIT instance URL (default: `https://git.mokoconsulting.tech`) |
| `GIT_ORG` | MokoGIT organization (default: `MokoConsulting`) |
## License
+8 -8
View File
@@ -11,7 +11,7 @@
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/joomla_metadata_validate.php
* VERSION: 09.43.00
* BRIEF: Validate MokoGit repo metadata against Joomla extension manifest XML
* BRIEF: Validate MokoGIT repo metadata against Joomla extension manifest XML
*/
declare(strict_types=1);
@@ -22,7 +22,7 @@ use MokoCli\CliFramework;
class JoomlaMetadataValidateCli extends CliFramework
{
/** Joomla element prefix map — must match MokoGit's cleanJoomlaElement() */
/** Joomla element prefix map — must match MokoGIT's cleanJoomlaElement() */
private const JOOMLA_PREFIX = [
'package' => 'pkg_',
'component' => 'com_',
@@ -34,7 +34,7 @@ class JoomlaMetadataValidateCli extends CliFramework
protected function configure(): void
{
$this->setDescription('Validate MokoGit repo metadata against Joomla extension manifest XML');
$this->setDescription('Validate MokoGIT repo metadata against Joomla extension manifest XML');
$this->addArgument('--path', 'Repo root path (default: current directory)', '.');
$this->addArgument('--token', 'Git API token (or GIT_TOKEN env)', '');
$this->addArgument('--org', 'Git org', 'MokoConsulting');
@@ -73,11 +73,11 @@ class JoomlaMetadataValidateCli extends CliFramework
$this->log('INFO', "Joomla manifest: {$joomlaXml['path']}");
// ── Step 2: Load MokoGit metadata ─────────────────────────
// ── Step 2: Load MokoGIT metadata ─────────────────────────
$metadata = $this->loadMetadata($path, $org, $repoName, $token, $apiBase);
if ($metadata === null) {
$this->log('ERROR', 'Could not load MokoGit metadata');
$this->log('ERROR', 'Could not load MokoGIT metadata');
return 1;
}
@@ -202,7 +202,7 @@ class JoomlaMetadataValidateCli extends CliFramework
if ($httpCode === 404) {
$this->log('ERROR', "API endpoint not found: {$url}");
$this->log('ERROR', 'Server may need MokoGit-Fork >= #650 (metadata endpoint rename)');
$this->log('ERROR', 'Server may need MokoGIT-Fork >= #650 (metadata endpoint rename)');
return null;
}
@@ -328,7 +328,7 @@ class JoomlaMetadataValidateCli extends CliFramework
// =================================================================
/**
* Normalize extension_type — map MokoGit types to Joomla types.
* Normalize extension_type — map MokoGIT types to Joomla types.
*/
private function normalizeExtensionType(string $type): string
{
@@ -340,7 +340,7 @@ class JoomlaMetadataValidateCli extends CliFramework
/**
* Derive the Joomla element name from type + name.
* Replicates MokoGit's cleanJoomlaElement() + prefix logic.
* Replicates MokoGIT's cleanJoomlaElement() + prefix logic.
*/
private function deriveElement(string $type, string $name): string
{
+3 -3
View File
@@ -10,7 +10,7 @@
* INGROUP: mokocli
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/license_manage.php
* BRIEF: Manage license packages and keys via MokoGit licensing API
* BRIEF: Manage license packages and keys via MokoGIT licensing API
*
* Usage:
* php bin/moko license:list --org MokoConsulting
@@ -38,7 +38,7 @@ class LicenseManage extends CliFramework
protected function configure(): void
{
$this->setDescription('Manage license packages and keys via MokoGit licensing API');
$this->setDescription('Manage license packages and keys via MokoGIT licensing API');
$this->addArgument('--org', 'Organization name', '');
$this->addArgument('--api-base', 'Git API base URL', '');
$this->addArgument('--token', 'API token (or set GH_TOKEN env)', '');
@@ -657,7 +657,7 @@ HELP;
if ($httpCode === 404) {
$this->log("API endpoint not found: {$path}", 'ERROR');
$this->log('The licensing API may not be deployed yet. Check MokoGit version.', 'WARN');
$this->log('The licensing API may not be deployed yet. Check MokoGIT version.', 'WARN');
return null;
}
+1 -1
View File
@@ -166,7 +166,7 @@ if (is_file($manifest)) {
if ($server === '') {
$fail('<updateservers><server> is missing');
} elseif (strpos($server, '/raw/branch/') !== false) {
$fail('update server uses a legacy raw/branch URL; use the dynamic MokoGit feed');
$fail('update server uses a legacy raw/branch URL; use the dynamic MokoGIT feed');
} else {
$ok("update server: $server");
}
+1 -1
View File
@@ -594,7 +594,7 @@ class WorkflowSyncCli extends CliFramework
}
/**
* Read a repo's platform from the MokoGit metadata API.
* Read a repo's platform from the MokoGIT metadata API.
* Returns 'generic' if metadata is missing or has no platform field.
* (Replaces the retired .mokogit/manifest.xml lookup — platform now lives
* in the repo Metadata endpoint: GET /api/v1/repos/{owner}/{repo}/metadata.)
+1 -1
View File
@@ -61,7 +61,7 @@ Shared library code
- GitHub client
### [Wiki](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki)
All documentation lives in the MokoGit wiki.
All documentation lives in the MokoGIT wiki.
### [Tests](tests/)
Test scripts
+1 -1
View File
@@ -22,7 +22,7 @@ namespace MokoCli;
* Git Platform Adapter Interface
*
* Defines all platform operations required by mokocli automation.
* Implementations exist for GitHub (GitHubAdapter) and Git (MokoGitAdapter),
* Implementations exist for GitHub (GitHubAdapter) and Git (MokoGITAdapter),
* allowing scripts to work against either platform transparently.
*
* @package MokoCLI\Enterprise
+2 -2
View File
@@ -10,7 +10,7 @@
* DEFGROUP: MokoCLI.Enterprise.Platform
* INGROUP: MokoCLI.Enterprise
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /lib/Enterprise/MokoGitAdapter.php
* PATH: /lib/Enterprise/MokoGITAdapter.php
* BRIEF: Git implementation of GitPlatformAdapter
*/
@@ -37,7 +37,7 @@ use RuntimeException;
* @since 04.06.10
* @see GitPlatformAdapter
*/
class MokoGitAdapter implements GitPlatformAdapter
class MokoGITAdapter implements GitPlatformAdapter
{
/** @var ApiClient HTTP client for Git API calls. */
private ApiClient $apiClient;
+7 -7
View File
@@ -54,7 +54,7 @@ class PlatformAdapterFactory
return match ($platform) {
'github' => self::createGitHubAdapter($config),
'git' => self::createMokoGitAdapter($config),
'git' => self::createMokoGITAdapter($config),
default => throw new RuntimeException("Unsupported git platform: {$platform}. Use 'github' or 'git'."),
};
}
@@ -87,13 +87,13 @@ class PlatformAdapterFactory
}
/**
* Create a MokoGitAdapter with configured ApiClient.
* Create a MokoGITAdapter with configured ApiClient.
*
* @param Config $config Configuration instance
* @return MokoGitAdapter Configured Git adapter
* @return MokoGITAdapter Configured Git adapter
* @throws RuntimeException If Git token is not available
*/
private static function createMokoGitAdapter(Config $config): MokoGitAdapter
private static function createMokoGITAdapter(Config $config): MokoGITAdapter
{
$token = $config->getString('git.token', '');
if (empty($token)) {
@@ -113,21 +113,21 @@ class PlatformAdapterFactory
authScheme: 'token'
);
return new MokoGitAdapter($apiClient, $apiBaseUrl);
return new MokoGITAdapter($apiClient, $apiBaseUrl);
}
/**
* Create adapters for both platforms (useful during migration).
*
* @param Config $config Configuration instance
* @return array{github: GitHubAdapter, git: MokoGitAdapter} Both adapters
* @return array{github: GitHubAdapter, git: MokoGITAdapter} Both adapters
* @throws RuntimeException If either token is missing
*/
public static function createBoth(Config $config): array
{
return [
'github' => self::createGitHubAdapter($config),
'git' => self::createMokoGitAdapter($config),
'git' => self::createMokoGITAdapter($config),
];
}
+1 -1
View File
@@ -62,7 +62,7 @@ class RepositorySynchronizer
?CheckpointManager $checkpoints = null,
?GitPlatformAdapter $adapter = null
) {
$this->adapter = $adapter ?? new MokoGitAdapter($apiClient);
$this->adapter = $adapter ?? new MokoGITAdapter($apiClient);
$this->logger = $logger;
$this->metrics = $metrics;
$this->checkpoints = $checkpoints ?? new CheckpointManager('.checkpoints');
+1 -1
View File
@@ -84,7 +84,7 @@ class SourceResolver
}
/**
* Query the MokoGit Manifest API for the entry_point field.
* Query the MokoGIT Manifest API for the entry_point field.
*
* Only attempts the call when GA_TOKEN or GIT_TOKEN is set. Results are
* cached per org/repo for the lifetime of the process.
+2 -2
View File
@@ -1,6 +1,6 @@
# mcp_mokobackup
MCP server for database and file backups across Dolibarr, Joomla/Akeeba, MokoGit, and file-based environments.
MCP server for database and file backups across Dolibarr, Joomla/Akeeba, MokoGIT, and file-based environments.
## Quick Reference
@@ -45,5 +45,5 @@ Default config at `~/.mcp_mokobackup.json`. Client repos override via `BACKUP_MC
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -15,7 +15,7 @@ Model Context Protocol server for database dumps, file backups, and Akeeba Backu
| **Language** | Node.js |
| **Tools** | 11 tools (6 SSH-based + 5 Akeeba API) |
| **License** | GPL-3.0-or-later |
| **Platform** | [MokoGit](https://git.mokoconsulting.tech/MokoConsulting/backup-mcp) (primary) |
| **Platform** | [MokoGIT](https://git.mokoconsulting.tech/MokoConsulting/backup-mcp) (primary) |
---
+1 -1
View File
@@ -40,5 +40,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -53,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- SQL filter builder (`buildSqlFilter`, `searchFilter`) for safe query construction
- Full documentation: README, INSTALLATION, ARCHITECTURE, API reference
- MokoCli-compliant project structure
- 12 MokoGit Actions CI/CD workflows
- 12 MokoGIT Actions CI/CD workflows
## Revision History
+2 -2
View File
@@ -48,7 +48,7 @@ This project adheres to the Contributor Covenant Code of Conduct. By participati
### Reporting Bugs
- Use the MokoGit issue tracker
- Use the MokoGIT issue tracker
- Describe the bug clearly with steps to reproduce
- Include the Dolibarr version you're connecting to
- Include relevant logs or error messages
@@ -143,7 +143,7 @@ Every repo maintains 5 standard release channel tags:
### CI/CD
- MokoGit Actions runs all CI workflows
- MokoGIT Actions runs all CI workflows
- Workflows live in `.gitea/workflows/`
### Secrets
+1 -1
View File
@@ -8,7 +8,7 @@ MCP server for Dolibarr ERP/CRM REST API operations
|---|---|
| **Language** | TypeScript |
| **License** | GPL-3.0-or-later |
| **Platform** | [MokoGit](https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp) |
| **Platform** | [MokoGIT](https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp) |
| **Node.js** | >= 20.0.0 |
| **MCP SDK** | @modelcontextprotocol/sdk ^1.12.1 |
+1 -1
View File
@@ -31,7 +31,7 @@ Only the current major version receives security updates.
## Reporting a Vulnerability
Report security vulnerabilities via MokoGit issue (preferred):
Report security vulnerabilities via MokoGIT issue (preferred):
https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp/issues/new?template=security.yaml
Or email: hello@mokoconsulting.tech
+1 -1
View File
@@ -38,5 +38,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
@@ -1,6 +1,6 @@
---
name: new-client
description: Scaffold a new MokoSuite client — MokoGit org, theme repo, MCP config, wiki, SSH key
description: Scaffold a new MokoSuite client — MokoGIT org, theme repo, MCP config, wiki, SSH key
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
---
@@ -22,7 +22,7 @@ Ask the user for:
Then execute these steps:
### 1. Create MokoGit Organization
### 1. Create MokoGIT Organization
- Use `mcp_mokogit_api` tool `git_org_create`
- Org name: PascalCase of slug (e.g. "AcmeCorp")
- Description: "MokoSuite client: {Client name}"
@@ -44,7 +44,7 @@ Then execute these steps:
### 4. Create SSH Key
- Generate key pair at `C:/Users/jmill/OneDrive/Documents/Keys/repos/client-{slug}`
- Add public key as deploy key on the MokoGit repo
- Add public key as deploy key on the MokoGIT repo
### 5. Setup GitHub Mirror
- Use `git_repo_mirror_setup_github_backup_full` to create GitHub backup mirror
@@ -1,6 +1,6 @@
---
name: release
description: Create a release — build ZIP, tag, update updates.xml, create MokoGit release
description: Create a release — build ZIP, tag, update updates.xml, create MokoGIT release
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
---
@@ -42,12 +42,12 @@ Create a release for the current repository.
- Create annotated tag: `git tag -a vX.Y.Z -m "Release X.Y.Z"`
- Push commits and tags: `git push origin && git push origin --tags`
6. **Create MokoGit release:**
6. **Create MokoGIT release:**
- Use `mcp_mokogit_api` tool `git_release_create` with the tag
- Upload the built ZIP as a release asset via `git_release_upload_asset`
7. **Joomla-specific: update updates.xml:**
- Prepend new `<update>` block with version, download URL pointing to MokoGit release asset
- Prepend new `<update>` block with version, download URL pointing to MokoGIT release asset
- ZIP filename follows Joomla convention from feedback_joomla_release_naming memory
- Commit and push the updates.xml change
@@ -1,6 +1,6 @@
---
name: server-health
description: Run health checks across all MokoGit infrastructure servers
description: Run health checks across all MokoGIT infrastructure servers
allowed-tools: Bash, Read, Glob, Grep
---
@@ -17,10 +17,10 @@ Run health checks across all infrastructure servers using SSH.
Use `mcp_mokossh` MCP tools to run health checks on each server:
### 1. GIT Server (git.mokoconsulting.tech)
- `systemctl status git` — is MokoGit running?
- `systemctl status git` — is MokoGIT running?
- `systemctl status act_runner` — is the Actions runner running?
- `df -h /` — disk space
- `du -sh /var/lib/git/repositories/ /var/lib/git/data/ /var/lib/git/log/` — MokoGit storage breakdown
- `du -sh /var/lib/git/repositories/ /var/lib/git/data/ /var/lib/git/log/` — MokoGIT storage breakdown
- `uptime` — load average
- `free -h` — memory usage
- `certbot certificates 2>/dev/null | grep -E "Expiry|Domains"` — SSL cert expiry
@@ -1,18 +1,18 @@
---
name: mokogit
description: "MokoGit server infrastructure, SSH commands, deployment, backup, and administration. Use when the user mentions: git, mokogit, git server, deploy, deployment, restart git, ssh into, server status, backup git, restore, mirror, github backup, update server, git actions, CI/CD, runner, mokosuite server, crm server, server health, disk space, systemctl, nginx, certbot, fail2ban, firewall, server logs, git logs, or any remote server operation."
when_to_use: "Auto-trigger when discussing: server management, SSH operations, MokoGit administration, deployments, backups, mirrors, CI runners, or any infrastructure task involving git.mokoconsulting.tech or the MokoGit instance."
description: "MokoGIT server infrastructure, SSH commands, deployment, backup, and administration. Use when the user mentions: git, mokogit, git server, deploy, deployment, restart git, ssh into, server status, backup git, restore, mirror, github backup, update server, git actions, CI/CD, runner, mokosuite server, crm server, server health, disk space, systemctl, nginx, certbot, fail2ban, firewall, server logs, git logs, or any remote server operation."
when_to_use: "Auto-trigger when discussing: server management, SSH operations, MokoGIT administration, deployments, backups, mirrors, CI runners, or any infrastructure task involving git.mokoconsulting.tech or the MokoGIT instance."
---
# MokoGit Infrastructure Reference
# MokoGIT Infrastructure Reference
You are helping with MokoGit server infrastructure. Use the `mcp_mokossh` MCP tools for SSH commands and `mcp_mokogit_api` tools for MokoGit API operations.
You are helping with MokoGIT server infrastructure. Use the `mcp_mokossh` MCP tools for SSH commands and `mcp_mokogit_api` tools for MokoGIT API operations.
## Server Map
| Name | Host | User | Port | Purpose |
|---|---|---|---|---|
| GIT | git.mokoconsulting.tech | mokoconsulting | 2918 | MokoGit instance (MokoGit fork) |
| GIT | git.mokoconsulting.tech | mokoconsulting | 2918 | MokoGIT instance (MokoGIT fork) |
| WAAS_DEV | mokosuite.dev.mokoconsulting.tech | mokoconsulting_dev | 22 | MokoSuite dev (Joomla + Dolibarr) |
| WAAS_DEMO | mokosuite.demo.mokoconsulting.tech | mokoconsulting_demo | 22 | MokoSuite demo |
| WAAS_LIVE | mokoconsulting.tech | mokoconsulting | 22 | MokoSuite production |
@@ -23,7 +23,7 @@ SSH key: `jmiller_private.openssh` (all MCP connections)
## Common SSH Commands
### MokoGit Server (GIT)
### MokoGIT Server (GIT)
```bash
# Service management
@@ -35,12 +35,12 @@ sudo systemctl stop git
sudo journalctl -u git -f # Follow live logs
sudo journalctl -u git --since "1 hour ago" # Recent logs
# MokoGit CLI (run as git user)
# MokoGIT CLI (run as git user)
sudo -u git /usr/local/bin/git admin user list
sudo -u git /usr/local/bin/git admin auth list
sudo -u git /usr/local/bin/git doctor check
# MokoGit Actions runner
# MokoGIT Actions runner
sudo systemctl status act_runner
sudo systemctl restart act_runner
sudo journalctl -u act_runner -f
@@ -125,7 +125,7 @@ ls htdocs/custom/
mysql -u root dolibarr -e "SELECT name, value FROM llx_const WHERE name LIKE '%VERSION%';"
```
## MokoGit API Operations
## MokoGIT API Operations
Use `mcp_mokogit_api` MCP tools for API operations:
@@ -144,7 +144,7 @@ Use `mcp_mokobackup` MCP tools:
| Target | Type | What it backs up |
|---|---|---|
| git-db | mysql | MokoGit MySQL database |
| git-db | mysql | MokoGIT MySQL database |
| git-files | files | `/var/lib/git/` (repos, data, avatars) |
| mokosuite-dev | akeeba | Joomla dev site via Akeeba API |
| mokosuite-demo | akeeba | Joomla demo site |
@@ -154,7 +154,7 @@ Use `mcp_mokobackup` MCP tools:
## Deployment
Deployments are handled by **MokoGit Actions workflows** (not manual SSH):
Deployments are handled by **MokoGIT Actions workflows** (not manual SSH):
- Push to `dev` → CI runs (lint, build, validate)
- Merge PR to `main` → release workflow builds ZIP, creates release, deploys via SFTP
- Client sites: `client-release.yml` workflow handles theme package deployment
@@ -171,12 +171,12 @@ All repos mirror to GitHub (mokoconsulting-tech org) as backup:
| Path | Contents |
|---|---|
| `/usr/local/bin/git` | MokoGit binary |
| `/usr/local/bin/git` | MokoGIT binary |
| `/etc/git/app.ini` | Main configuration |
| `/var/lib/git/` | All MokoGit data |
| `/var/lib/git/` | All MokoGIT data |
| `/var/lib/git/repositories/` | Git bare repos |
| `/var/lib/git/data/` | Attachments, avatars, LFS |
| `/var/lib/git/log/` | MokoGit logs |
| `/var/lib/git/log/` | MokoGIT logs |
| `/var/lib/git/custom/` | Custom templates, public files |
| `/etc/nginx/sites-enabled/git.conf` | Nginx reverse proxy config |
| `/home/git/.act_runner/` | Actions runner config |
@@ -184,7 +184,7 @@ All repos mirror to GitHub (mokoconsulting-tech org) as backup:
## Important Notes
- Port 2918 on GIT server is **shell SSH** (not just git protocol) — full command execution
- MokoGit repo names on server use **hyphens** (e.g. `mcp-mokobackup`), local dirs use **underscores**
- MokoGIT repo names on server use **hyphens** (e.g. `mcp-mokobackup`), local dirs use **underscores**
- `mokocli` CLI tools handle CI checks — don't inline bash in workflows
- All infra docs live in **mokogit-private wiki**, not public repos
- Two master SSH keys (jmiller + moko) on all servers
+1 -1
View File
@@ -40,5 +40,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -15,7 +15,7 @@ MCP server for infrastructure monitoring -- server health, Grafana dashboards, a
| **Language** | Node.js |
| **License** | GPL-3.0-or-later |
| **Config** | `~/.monitor-mcp.json` |
| **Platform** | [MokoGit](https://git.mokoconsulting.tech/MokoConsulting/monitor-mcp) (primary) |
| **Platform** | [MokoGIT](https://git.mokoconsulting.tech/MokoConsulting/monitor-mcp) (primary) |
---
@@ -40,5 +40,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -16,7 +16,7 @@ Model Context Protocol server for SSH remote server management -- execute comman
| **Tools** | 37 tools across 6 groups |
| **License** | MIT |
| **Upstream** | [bvisible/mcp-ssh-manager](https://github.com/bvisible/mcp-ssh-manager) v3.4.0 |
| **Platform** | [MokoGit](https://git.mokoconsulting.tech/MokoConsulting/ssh-mcp) (primary) |
| **Platform** | [MokoGIT](https://git.mokoconsulting.tech/MokoConsulting/ssh-mcp) (primary) |
---
+1 -1
View File
@@ -39,5 +39,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+2 -2
View File
@@ -148,13 +148,13 @@ Every repo maintains 5 standard release channel tags:
### CI/CD
- MokoGit Actions runs all CI workflows
- MokoGIT Actions runs all CI workflows
- GitHub Actions are disabled on mirrored repos
- Workflows live in both `.github/workflows/` and `.gitea/workflows/`
### Update Servers (Joomla)
In manifest `<updateservers>`, MokoGit must be priority 1, GitHub priority 2.
In manifest `<updateservers>`, MokoGIT must be priority 1, GitHub priority 2.
### Secrets
+1 -1
View File
@@ -15,7 +15,7 @@ Model Context Protocol server for the Joomla Web Services API -- full CRUD for a
| **Language** | Node.js |
| **Tools** | 67 tools across 15 resource groups |
| **License** | GPL-3.0-or-later |
| **Platform** | [MokoGit](https://git.mokoconsulting.tech/MokoConsulting/joomla-api-mcp) (primary) |
| **Platform** | [MokoGIT](https://git.mokoconsulting.tech/MokoConsulting/joomla-api-mcp) (primary) |
---
+1 -1
View File
@@ -46,7 +46,7 @@ Only the current major version receives security updates. Users should upgrade t
## Reporting a Vulnerability
Report security vulnerabilities via MokoGit issue (preferred):
Report security vulnerabilities via MokoGIT issue (preferred):
https://git.mokoconsulting.tech/MokoConsulting/MokoCli-Template-Generic/issues/new?template=security.yaml
Or email: hello@mokoconsulting.tech
+1 -1
View File
@@ -40,5 +40,5 @@ src/
- **Never commit** `.claude/`, `.mcp.json`, `TODO.md`, `*.min.css`/`*.min.js`
- **Attribution**: `Authored-by: Moko Consulting`
- **Workflow directory**: `.mokogit/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the MokoGit wiki, not `docs/` files
- **Wiki**: documentation lives in the MokoGIT wiki, not `docs/` files
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
+1 -1
View File
@@ -772,7 +772,7 @@ parameters:
message: '#^Call to function is_int\(\) with string will always evaluate to false\.$#'
identifier: function.impossibleType
count: 1
path: lib/Enterprise/MokoGitAdapter.php
path: lib/Enterprise/MokoGITAdapter.php
-
message: '#^Method MokoCli\\MokoCliParser\:\:generate\(\) has parameter \$params with no value type specified in iterable type array\.$#'
+9 -9
View File
@@ -19,7 +19,7 @@ use MokoCli\ApiClient;
use MokoCli\Config;
use MokoCli\GitPlatformAdapter;
use MokoCli\GitHubAdapter;
use MokoCli\MokoGitAdapter;
use MokoCli\MokoGITAdapter;
use MokoCli\PlatformAdapterFactory;
echo "Testing GitPlatformAdapter Interface Compliance\n";
@@ -58,8 +58,8 @@ assert_true($ghAdapter->getWorkflowDir() === '.github/workflows', 'getWorkflowDi
assert_true($ghAdapter->getApiClient() === $ghClient, 'getApiClient() returns injected client');
echo "\n";
// ── Test 2: MokoGitAdapter implements GitPlatformAdapter ──────────────────
echo "2. Testing MokoGitAdapter interface compliance...\n";
// ── Test 2: MokoGITAdapter implements GitPlatformAdapter ──────────────────
echo "2. Testing MokoGITAdapter interface compliance...\n";
$gitClient = new ApiClient(
baseUrl: 'https://git.mokoconsulting.tech/api/v1',
@@ -67,9 +67,9 @@ $gitClient = new ApiClient(
enableCaching: false,
authScheme: 'token'
);
$gitAdapter = new MokoGitAdapter($gitClient);
$gitAdapter = new MokoGITAdapter($gitClient);
assert_true($gitAdapter instanceof GitPlatformAdapter, 'MokoGitAdapter implements GitPlatformAdapter');
assert_true($gitAdapter instanceof GitPlatformAdapter, 'MokoGITAdapter implements GitPlatformAdapter');
assert_true($gitAdapter->getPlatformName() === 'git', 'getPlatformName() returns "git"');
assert_true($gitAdapter->getBaseUrl() === 'https://git.mokoconsulting.tech/api/v1', 'getBaseUrl() returns Git API URL');
assert_true($gitAdapter->getWorkflowDir() === '.mokogit/workflows', 'getWorkflowDir() returns .gitea/workflows');
@@ -125,10 +125,10 @@ try {
$config->set('git.token', 'test-git-token');
try {
$adapter = PlatformAdapterFactory::create($config, 'git');
assert_true($adapter instanceof MokoGitAdapter, 'Factory creates MokoGitAdapter for platform=git');
assert_true($adapter instanceof MokoGITAdapter, 'Factory creates MokoGITAdapter for platform=git');
assert_true($adapter->getPlatformName() === 'git', 'Created adapter identifies as git');
} catch (\Exception $e) {
assert_true(false, 'Factory creates MokoGitAdapter: ' . $e->getMessage());
assert_true(false, 'Factory creates MokoGITAdapter: ' . $e->getMessage());
}
// Test invalid platform
@@ -185,9 +185,9 @@ try {
assert_true(true, 'GitHubAdapter.migrateRepository() throws RuntimeException');
}
// MokoGitAdapter.migrateRepository() should NOT throw (it calls the API)
// MokoGITAdapter.migrateRepository() should NOT throw (it calls the API)
// We can't test it without a real server, but verify the method exists
assert_true(method_exists($gitAdapter, 'migrateRepository'), 'MokoGitAdapter.migrateRepository() exists');
assert_true(method_exists($gitAdapter, 'migrateRepository'), 'MokoGITAdapter.migrateRepository() exists');
echo "\n";
// ── Summary ─────────────────────────────────────────────────────────────