@bonginkan/maria 4.2.6 → 4.2.7
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 +301 -106
- package/README.md +1478 -1408
- package/dist/READY.manifest.json +75 -82
- package/dist/bin/maria.cjs +366 -1285
- package/dist/bin/maria.cjs.map +1 -1
- package/dist/cli.cjs +370 -1294
- package/dist/cli.cjs.map +1 -1
- package/dist/index.js +557 -1351
- package/dist/index.js.map +1 -1
- package/package.json +25 -22
- package/src/slash-commands/READY.manifest.json +75 -82
package/dist/cli.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var fs = require('fs');
|
|
5
|
-
var
|
|
5
|
+
var path10 = require('path');
|
|
6
6
|
var dotenv = require('dotenv');
|
|
7
7
|
var chalk17 = require('chalk');
|
|
8
8
|
var os = require('os');
|
|
@@ -20,6 +20,7 @@ var net = require('net');
|
|
|
20
20
|
var https = require('https');
|
|
21
21
|
var zlib = require('zlib');
|
|
22
22
|
var readline = require('readline');
|
|
23
|
+
var fs8 = require('fs-extra');
|
|
23
24
|
var zod = require('zod');
|
|
24
25
|
require('strip-ansi');
|
|
25
26
|
require('string-width');
|
|
@@ -50,7 +51,7 @@ function _interopNamespace(e) {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
|
|
53
|
-
var
|
|
54
|
+
var path10__namespace = /*#__PURE__*/_interopNamespace(path10);
|
|
54
55
|
var dotenv__namespace = /*#__PURE__*/_interopNamespace(dotenv);
|
|
55
56
|
var chalk17__default = /*#__PURE__*/_interopDefault(chalk17);
|
|
56
57
|
var os__namespace = /*#__PURE__*/_interopNamespace(os);
|
|
@@ -62,6 +63,7 @@ var Stream__default = /*#__PURE__*/_interopDefault(Stream);
|
|
|
62
63
|
var https__default = /*#__PURE__*/_interopDefault(https);
|
|
63
64
|
var zlib__default = /*#__PURE__*/_interopDefault(zlib);
|
|
64
65
|
var readline__namespace = /*#__PURE__*/_interopNamespace(readline);
|
|
66
|
+
var fs8__namespace = /*#__PURE__*/_interopNamespace(fs8);
|
|
65
67
|
var ora__default = /*#__PURE__*/_interopDefault(ora);
|
|
66
68
|
var readline5__namespace = /*#__PURE__*/_interopNamespace(readline5);
|
|
67
69
|
|
|
@@ -104,14 +106,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
104
106
|
mod
|
|
105
107
|
));
|
|
106
108
|
function loadEnvironmentVariables() {
|
|
107
|
-
const _envPath =
|
|
109
|
+
const _envPath = path10__namespace.join(process.cwd(), ".env");
|
|
108
110
|
if (fs__namespace.existsSync(_envPath)) {
|
|
109
111
|
const _result = dotenv__namespace.config({ path: _envPath });
|
|
110
112
|
if (_result.error) {
|
|
111
113
|
console.warn("Error loading .env:", _result.error);
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
|
-
const _lmstudioEnvPath =
|
|
116
|
+
const _lmstudioEnvPath = path10__namespace.join(process.cwd(), ".env.lmstudio");
|
|
115
117
|
if (fs__namespace.existsSync(_lmstudioEnvPath)) {
|
|
116
118
|
const _result = dotenv__namespace.config({ path: _lmstudioEnvPath, override: false });
|
|
117
119
|
if (_result.error) {
|
|
@@ -143,25 +145,25 @@ function getPackageJson() {
|
|
|
143
145
|
try {
|
|
144
146
|
const possiblePaths = [
|
|
145
147
|
// When running from built dist/
|
|
146
|
-
|
|
148
|
+
path10.join(__dirname, "../../package.json"),
|
|
147
149
|
// When running from source
|
|
148
|
-
|
|
150
|
+
path10.join(__dirname, "../../../package.json"),
|
|
149
151
|
// Current working directory
|
|
150
|
-
|
|
152
|
+
path10.join(process.cwd(), "package.json"),
|
|
151
153
|
// One level up from current working directory
|
|
152
|
-
|
|
154
|
+
path10.join(process.cwd(), "../package.json"),
|
|
153
155
|
// For globally installed packages
|
|
154
|
-
|
|
155
|
-
|
|
156
|
+
path10.join(__dirname, "../../../../package.json"),
|
|
157
|
+
path10.join(__dirname, "../../../../../package.json"),
|
|
156
158
|
// npm global install locations
|
|
157
159
|
"/usr/local/lib/node_modules/@bonginkan/maria/package.json",
|
|
158
160
|
"/usr/lib/node_modules/@bonginkan/maria/package.json",
|
|
159
161
|
// User home npm global
|
|
160
|
-
|
|
162
|
+
path10.join(
|
|
161
163
|
process.env.HOME || "",
|
|
162
164
|
".npm-global/lib/node_modules/@bonginkan/maria/package.json"
|
|
163
165
|
),
|
|
164
|
-
|
|
166
|
+
path10.join(
|
|
165
167
|
process.env.HOME || "",
|
|
166
168
|
".nvm/versions/node",
|
|
167
169
|
process.version,
|
|
@@ -169,13 +171,13 @@ function getPackageJson() {
|
|
|
169
171
|
)
|
|
170
172
|
];
|
|
171
173
|
let packageJsonPath = null;
|
|
172
|
-
for (const
|
|
173
|
-
if (fs.existsSync(
|
|
174
|
+
for (const path14 of possiblePaths) {
|
|
175
|
+
if (fs.existsSync(path14)) {
|
|
174
176
|
try {
|
|
175
|
-
const content = fs.readFileSync(
|
|
177
|
+
const content = fs.readFileSync(path14, "utf-8");
|
|
176
178
|
const parsed = JSON.parse(content);
|
|
177
179
|
if (parsed.name === "@bonginkan/maria") {
|
|
178
|
-
packageJsonPath =
|
|
180
|
+
packageJsonPath = path14;
|
|
179
181
|
break;
|
|
180
182
|
}
|
|
181
183
|
} catch {
|
|
@@ -546,8 +548,8 @@ var init_TokenStorage = __esm({
|
|
|
546
548
|
TokenStorage = class {
|
|
547
549
|
SERVICE_NAME = "maria-cli";
|
|
548
550
|
ACCOUNT_NAME = "default";
|
|
549
|
-
CONFIG_DIR =
|
|
550
|
-
TOKEN_FILE =
|
|
551
|
+
CONFIG_DIR = path10__namespace.default.join(os__namespace.default.homedir(), ".maria");
|
|
552
|
+
TOKEN_FILE = path10__namespace.default.join(this.CONFIG_DIR, "auth-tokens.json");
|
|
551
553
|
/**
|
|
552
554
|
* Save tokens securely
|
|
553
555
|
*/
|
|
@@ -689,15 +691,34 @@ var AuthSecretManager;
|
|
|
689
691
|
var init_AuthSecretManager = __esm({
|
|
690
692
|
"src/services/cli-auth/AuthSecretManager.ts"() {
|
|
691
693
|
AuthSecretManager = class {
|
|
692
|
-
client;
|
|
694
|
+
client = null;
|
|
693
695
|
cache = /* @__PURE__ */ new Map();
|
|
694
696
|
cacheExpiry = /* @__PURE__ */ new Map();
|
|
695
697
|
CACHE_TTL = 36e5;
|
|
696
698
|
// 1 hour
|
|
697
699
|
projectId;
|
|
700
|
+
useGsm;
|
|
698
701
|
constructor() {
|
|
699
702
|
this.projectId = process.env.GCLOUD_PROJECT || "maria-code-470602";
|
|
700
|
-
this.
|
|
703
|
+
this.useGsm = this.shouldUseGsm();
|
|
704
|
+
if (this.useGsm) {
|
|
705
|
+
try {
|
|
706
|
+
this.client = new secretManager.SecretManagerServiceClient();
|
|
707
|
+
} catch {
|
|
708
|
+
this.client = null;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Determine whether to use Google Secret Manager in this environment
|
|
714
|
+
*/
|
|
715
|
+
shouldUseGsm() {
|
|
716
|
+
if (process.env.MARIA_DISABLE_GSM === "true") return false;
|
|
717
|
+
if (process.env.GOOGLE_APPLICATION_CREDENTIALS) return true;
|
|
718
|
+
if (process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT) return true;
|
|
719
|
+
if (process.env.CLOUD_RUN_SERVICE || process.env.K_SERVICE) return true;
|
|
720
|
+
if (process.env.GCE_METADATA_HOST) return true;
|
|
721
|
+
return false;
|
|
701
722
|
}
|
|
702
723
|
/**
|
|
703
724
|
* Get authentication configuration from Secret Manager
|
|
@@ -718,6 +739,9 @@ var init_AuthSecretManager = __esm({
|
|
|
718
739
|
* Get a specific secret from Secret Manager
|
|
719
740
|
*/
|
|
720
741
|
async getSecret(secretName) {
|
|
742
|
+
if (!this.useGsm || !this.client) {
|
|
743
|
+
return null;
|
|
744
|
+
}
|
|
721
745
|
const cached = this.getCachedSecret(secretName);
|
|
722
746
|
if (cached) {
|
|
723
747
|
return cached;
|
|
@@ -798,7 +822,7 @@ var init_AuthSecretManager = __esm({
|
|
|
798
822
|
if (process.env.MARIA_AUTH_BASE) {
|
|
799
823
|
return process.env.MARIA_AUTH_BASE;
|
|
800
824
|
}
|
|
801
|
-
const cloudRunUrl = "https://auth-
|
|
825
|
+
const cloudRunUrl = "https://auth.maria-code.ai";
|
|
802
826
|
return cloudRunUrl;
|
|
803
827
|
}
|
|
804
828
|
/**
|
|
@@ -811,7 +835,7 @@ var init_AuthSecretManager = __esm({
|
|
|
811
835
|
if (process.env.MARIA_API_BASE) {
|
|
812
836
|
return process.env.MARIA_API_BASE;
|
|
813
837
|
}
|
|
814
|
-
const cloudRunApiUrl = "https://maria-code
|
|
838
|
+
const cloudRunApiUrl = "https://api.maria-code.ai";
|
|
815
839
|
return cloudRunApiUrl;
|
|
816
840
|
}
|
|
817
841
|
};
|
|
@@ -870,7 +894,7 @@ var init_AuthenticationManager = __esm({
|
|
|
870
894
|
if (process.env.MARIA_AUTH_MODE === "local") {
|
|
871
895
|
return "http://localhost:3001";
|
|
872
896
|
}
|
|
873
|
-
const cloudRunUrl = "https://auth-
|
|
897
|
+
const cloudRunUrl = "https://auth.maria-code.ai";
|
|
874
898
|
if (process.env.MARIA_USE_CUSTOM_DOMAIN === "true") {
|
|
875
899
|
return "https://auth.maria-code.ai";
|
|
876
900
|
}
|
|
@@ -880,7 +904,7 @@ var init_AuthenticationManager = __esm({
|
|
|
880
904
|
if (process.env.MARIA_AUTH_MODE === "local") {
|
|
881
905
|
return "http://localhost:3000/api";
|
|
882
906
|
}
|
|
883
|
-
const cloudRunApiUrl = "https://maria-code
|
|
907
|
+
const cloudRunApiUrl = "https://api.maria-code.ai";
|
|
884
908
|
if (process.env.MARIA_USE_CUSTOM_DOMAIN === "true") {
|
|
885
909
|
return "https://api.maria-code.ai";
|
|
886
910
|
}
|
|
@@ -1615,7 +1639,7 @@ var init_chat_context_service = __esm({
|
|
|
1615
1639
|
maxTokens: config2?.maxTokens || 128e3,
|
|
1616
1640
|
compressionThreshold: config2?.compressionThreshold || 0.8,
|
|
1617
1641
|
summaryTokenLimit: config2?.summaryTokenLimit || 2e3,
|
|
1618
|
-
persistPath: config2?.persistPath ||
|
|
1642
|
+
persistPath: config2?.persistPath || path10__namespace.join(process.env["HOME"] || "", ".maria", "context")
|
|
1619
1643
|
};
|
|
1620
1644
|
this.sessionId = this.generateSessionId();
|
|
1621
1645
|
}
|
|
@@ -1735,7 +1759,7 @@ var init_chat_context_service = __esm({
|
|
|
1735
1759
|
if (!this.config.persistPath) return;
|
|
1736
1760
|
try {
|
|
1737
1761
|
await fsp__namespace.mkdir(this.config.persistPath, { recursive: true });
|
|
1738
|
-
const sessionFile =
|
|
1762
|
+
const sessionFile = path10__namespace.join(
|
|
1739
1763
|
this.config.persistPath,
|
|
1740
1764
|
`${this.sessionId}.json`
|
|
1741
1765
|
);
|
|
@@ -1794,8 +1818,8 @@ var init_conversation_persistence = __esm({
|
|
|
1794
1818
|
autoSaveInterval = null;
|
|
1795
1819
|
pendingWrites = [];
|
|
1796
1820
|
constructor(maxHistorySize = 100) {
|
|
1797
|
-
const configDir =
|
|
1798
|
-
this.sessionFile =
|
|
1821
|
+
const configDir = path10__namespace.join(os__namespace.homedir(), ".maria");
|
|
1822
|
+
this.sessionFile = path10__namespace.join(configDir, "conversation-history.json");
|
|
1799
1823
|
this.maxHistorySize = maxHistorySize;
|
|
1800
1824
|
this.ensureConfigDir();
|
|
1801
1825
|
this.startAutoSave();
|
|
@@ -1805,7 +1829,7 @@ var init_conversation_persistence = __esm({
|
|
|
1805
1829
|
*/
|
|
1806
1830
|
async ensureConfigDir() {
|
|
1807
1831
|
try {
|
|
1808
|
-
const configDir =
|
|
1832
|
+
const configDir = path10__namespace.dirname(this.sessionFile);
|
|
1809
1833
|
await fs.promises.mkdir(configDir, { recursive: true });
|
|
1810
1834
|
} catch (error2) {
|
|
1811
1835
|
console.warn("Failed to create config directory:", error2);
|
|
@@ -2836,22 +2860,22 @@ function dataUriToBuffer(uri) {
|
|
|
2836
2860
|
if (firstComma === -1 || firstComma <= 4) {
|
|
2837
2861
|
throw new TypeError("malformed data: URI");
|
|
2838
2862
|
}
|
|
2839
|
-
const
|
|
2863
|
+
const meta4 = uri.substring(5, firstComma).split(";");
|
|
2840
2864
|
let charset = "";
|
|
2841
2865
|
let base64 = false;
|
|
2842
|
-
const type =
|
|
2866
|
+
const type = meta4[0] || "text/plain";
|
|
2843
2867
|
let typeFull = type;
|
|
2844
|
-
for (let i2 = 1; i2 <
|
|
2845
|
-
if (
|
|
2868
|
+
for (let i2 = 1; i2 < meta4.length; i2++) {
|
|
2869
|
+
if (meta4[i2] === "base64") {
|
|
2846
2870
|
base64 = true;
|
|
2847
|
-
} else if (
|
|
2848
|
-
typeFull += `;${
|
|
2849
|
-
if (
|
|
2850
|
-
charset =
|
|
2871
|
+
} else if (meta4[i2]) {
|
|
2872
|
+
typeFull += `;${meta4[i2]}`;
|
|
2873
|
+
if (meta4[i2].indexOf("charset=") === 0) {
|
|
2874
|
+
charset = meta4[i2].substring(8);
|
|
2851
2875
|
}
|
|
2852
2876
|
}
|
|
2853
2877
|
}
|
|
2854
|
-
if (!
|
|
2878
|
+
if (!meta4[0] && !charset.length) {
|
|
2855
2879
|
typeFull += ";charset=US-ASCII";
|
|
2856
2880
|
charset = "US-ASCII";
|
|
2857
2881
|
}
|
|
@@ -7625,22 +7649,22 @@ var init_from = __esm({
|
|
|
7625
7649
|
init_file();
|
|
7626
7650
|
init_fetch_blob();
|
|
7627
7651
|
({ stat } = fs.promises);
|
|
7628
|
-
blobFromSync = (
|
|
7629
|
-
blobFrom = (
|
|
7630
|
-
fileFrom = (
|
|
7631
|
-
fileFromSync = (
|
|
7632
|
-
fromBlob = (stat2,
|
|
7633
|
-
path:
|
|
7652
|
+
blobFromSync = (path14, type) => fromBlob(fs.statSync(path14), path14, type);
|
|
7653
|
+
blobFrom = (path14, type) => stat(path14).then((stat2) => fromBlob(stat2, path14, type));
|
|
7654
|
+
fileFrom = (path14, type) => stat(path14).then((stat2) => fromFile(stat2, path14, type));
|
|
7655
|
+
fileFromSync = (path14, type) => fromFile(fs.statSync(path14), path14, type);
|
|
7656
|
+
fromBlob = (stat2, path14, type = "") => new fetch_blob_default([new BlobDataItem({
|
|
7657
|
+
path: path14,
|
|
7634
7658
|
size: stat2.size,
|
|
7635
7659
|
lastModified: stat2.mtimeMs,
|
|
7636
7660
|
start: 0
|
|
7637
7661
|
})], { type });
|
|
7638
|
-
fromFile = (stat2,
|
|
7639
|
-
path:
|
|
7662
|
+
fromFile = (stat2, path14, type = "") => new file_default([new BlobDataItem({
|
|
7663
|
+
path: path14,
|
|
7640
7664
|
size: stat2.size,
|
|
7641
7665
|
lastModified: stat2.mtimeMs,
|
|
7642
7666
|
start: 0
|
|
7643
|
-
})],
|
|
7667
|
+
})], path10.basename(path14), { type, lastModified: stat2.mtimeMs });
|
|
7644
7668
|
BlobDataItem = class _BlobDataItem {
|
|
7645
7669
|
#path;
|
|
7646
7670
|
#start;
|
|
@@ -9901,6 +9925,7 @@ var init_groq_provider = __esm({
|
|
|
9901
9925
|
const _modelPricing = _pricing[_model] || _pricing["mixtral-8x7b-32768"];
|
|
9902
9926
|
return _tokens * 0.75 * _modelPricing.input + _tokens * 0.25 * _modelPricing.output;
|
|
9903
9927
|
}
|
|
9928
|
+
// Note: complete() and stream() methods are already implemented above (lines 105-200)
|
|
9904
9929
|
};
|
|
9905
9930
|
}
|
|
9906
9931
|
});
|
|
@@ -10950,11 +10975,11 @@ export async function DELETE(
|
|
|
10950
10975
|
runCommands: isJapanese ? [
|
|
10951
10976
|
"Next.js \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u914D\u7F6E",
|
|
10952
10977
|
"pnpm dev \u3067\u30B5\u30FC\u30D0\u30FC\u8D77\u52D5",
|
|
10953
|
-
"curl
|
|
10978
|
+
"curl https://maria-code.ai/api/users \u3067\u30C6\u30B9\u30C8"
|
|
10954
10979
|
] : [
|
|
10955
10980
|
"Place in Next.js project",
|
|
10956
10981
|
"Run server with npm run dev",
|
|
10957
|
-
"Test with curl
|
|
10982
|
+
"Test with curl https://maria-code.ai/api/users"
|
|
10958
10983
|
],
|
|
10959
10984
|
notes: isJapanese ? [
|
|
10960
10985
|
"App Router (Next.js 13+) \u3092\u4F7F\u7528",
|
|
@@ -11677,1033 +11702,85 @@ ${options.map((opt, i2) => `${i2 + 1}) ${opt}`).join("\n")}`;
|
|
|
11677
11702
|
});
|
|
11678
11703
|
|
|
11679
11704
|
// src/lib/command-groups.ts
|
|
11680
|
-
function
|
|
11681
|
-
|
|
11682
|
-
|
|
11683
|
-
|
|
11684
|
-
|
|
11685
|
-
|
|
11686
|
-
|
|
11687
|
-
if (!brain?.deprecated) {
|
|
11688
|
-
throw new Error("/brain must be deprecated");
|
|
11689
|
-
}
|
|
11690
|
-
for (const [alias, _info] of _ALIAS_MAP) {
|
|
11691
|
-
if (_NAME_MAP.has(alias)) {
|
|
11692
|
-
throw new Error(`alias conflicts with command name: ${alias}`);
|
|
11693
|
-
}
|
|
11705
|
+
function getCommandInfo(command) {
|
|
11706
|
+
const normalizedCommand = command.startsWith("/") ? command.slice(1) : command;
|
|
11707
|
+
if (commandInfo[normalizedCommand]) {
|
|
11708
|
+
return {
|
|
11709
|
+
name: `/${normalizedCommand}`,
|
|
11710
|
+
...commandInfo[normalizedCommand]
|
|
11711
|
+
};
|
|
11694
11712
|
}
|
|
11695
|
-
for (const [
|
|
11696
|
-
if (
|
|
11697
|
-
|
|
11713
|
+
for (const [key2, info] of Object.entries(commandInfo)) {
|
|
11714
|
+
if (info.aliases?.includes(normalizedCommand)) {
|
|
11715
|
+
return {
|
|
11716
|
+
name: `/${key2}`,
|
|
11717
|
+
...info
|
|
11718
|
+
};
|
|
11698
11719
|
}
|
|
11699
11720
|
}
|
|
11721
|
+
return void 0;
|
|
11700
11722
|
}
|
|
11701
|
-
|
|
11702
|
-
const key2 = _keyOf(commandName.trim());
|
|
11703
|
-
return _NAME_MAP.get(key2) ?? _ALIAS_MAP.get(key2);
|
|
11704
|
-
}
|
|
11705
|
-
var commandInfo, _normToken, _withSlash, _keyOf, _NAME_MAP, _ALIAS_MAP, _CATEGORY_MAP;
|
|
11723
|
+
var commandGroups, commandInfo;
|
|
11706
11724
|
var init_command_groups = __esm({
|
|
11707
11725
|
"src/lib/command-groups.ts"() {
|
|
11708
|
-
|
|
11709
|
-
|
|
11710
|
-
|
|
11711
|
-
|
|
11712
|
-
|
|
11713
|
-
|
|
11714
|
-
|
|
11715
|
-
examples
|
|
11716
|
-
|
|
11717
|
-
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
|
|
11726
|
-
|
|
11727
|
-
|
|
11728
|
-
|
|
11729
|
-
|
|
11730
|
-
|
|
11731
|
-
"
|
|
11732
|
-
|
|
11733
|
-
|
|
11734
|
-
|
|
11735
|
-
|
|
11736
|
-
|
|
11737
|
-
|
|
11738
|
-
|
|
11739
|
-
"
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
|
|
11744
|
-
|
|
11745
|
-
|
|
11746
|
-
|
|
11747
|
-
|
|
11748
|
-
|
|
11749
|
-
|
|
11750
|
-
},
|
|
11751
|
-
"/test": {
|
|
11752
|
-
name: "/test",
|
|
11753
|
-
description: "Generate tests for code",
|
|
11754
|
-
category: "generation",
|
|
11755
|
-
usage: "/test [file|function]",
|
|
11756
|
-
examples: ["/test src/utils.ts", "/test calculateTotal function"]
|
|
11757
|
-
},
|
|
11758
|
-
"/paper": {
|
|
11759
|
-
name: "/paper",
|
|
11760
|
-
description: "Process research papers and generate code",
|
|
11761
|
-
category: "generation",
|
|
11762
|
-
usage: "/paper [content] [--source type] [--language lang]",
|
|
11763
|
-
examples: ['/paper "Implement QuickSort algorithm"', "/paper --source pdf paper.pdf"]
|
|
11764
|
-
},
|
|
11765
|
-
// Multimodal Generation (Cloud-Ready)
|
|
11766
|
-
"/image": {
|
|
11767
|
-
name: "/image",
|
|
11768
|
-
description: "Generate images using AI (cloud-only, FREE tier)",
|
|
11769
|
-
category: "multimodal",
|
|
11770
|
-
usage: "/image <prompt> [--style=realistic|artistic|cartoon] [--size=1024x1024]",
|
|
11771
|
-
examples: ["/image sunset over mountains --style=realistic", "/image Logo design for tech company --style=artistic", "/image Abstract art --size=512x512"]
|
|
11772
|
-
},
|
|
11773
|
-
"/video": {
|
|
11774
|
-
name: "/video",
|
|
11775
|
-
description: "Generate videos using AI (cloud-only, PRO+ required)",
|
|
11776
|
-
category: "multimodal",
|
|
11777
|
-
usage: "/video <prompt> [--duration=5|10|15] [--style=cinematic|documentary|cartoon]",
|
|
11778
|
-
examples: ['/video "A cat playing piano" --duration=10', '/video "Sunset timelapse" --style=cinematic']
|
|
11779
|
-
},
|
|
11780
|
-
"/voice": {
|
|
11781
|
-
name: "/voice",
|
|
11782
|
-
description: "Generate speech from text (cloud-only, STARTER+ required)",
|
|
11783
|
-
category: "multimodal",
|
|
11784
|
-
usage: "/voice <text> [--voice=alloy|echo|fable|nova] [--speed=0.5-2.0]",
|
|
11785
|
-
examples: ['/voice "Hello world" --voice=nova', '/voice "Welcome to MARIA" --speed=1.2']
|
|
11786
|
-
},
|
|
11787
|
-
"/avatar": {
|
|
11788
|
-
name: "/avatar",
|
|
11789
|
-
description: "Interactive ASCII avatar",
|
|
11790
|
-
category: "media",
|
|
11791
|
-
usage: "/avatar",
|
|
11792
|
-
examples: ["/avatar"]
|
|
11793
|
-
},
|
|
11794
|
-
// Analysis & Review
|
|
11795
|
-
"/review": {
|
|
11796
|
-
name: "/review",
|
|
11797
|
-
description: "Review code or pull requests",
|
|
11798
|
-
category: "analysis",
|
|
11799
|
-
usage: "/review [file|url]",
|
|
11800
|
-
examples: ["/review src/app.ts", "/review https://github.com/user/repo/pull/123"]
|
|
11801
|
-
},
|
|
11802
|
-
"/pr-comments": {
|
|
11803
|
-
name: "/pr-comments",
|
|
11804
|
-
description: "Generate PR comments",
|
|
11805
|
-
category: "analysis",
|
|
11806
|
-
usage: "/pr-comments [pr-url]",
|
|
11807
|
-
examples: ["/pr-comments https://github.com/user/repo/pull/123"]
|
|
11808
|
-
},
|
|
11809
|
-
// Code Quality
|
|
11810
|
-
"/bug": {
|
|
11811
|
-
name: "/bug",
|
|
11812
|
-
description: "AI-powered error analysis and solution recommendation system (Enhanced POC #4)",
|
|
11813
|
-
category: "quality",
|
|
11814
|
-
usage: '/bug "<error message>" [--from-output] [--solution-id <id>] [--dry-run] [--verbose]',
|
|
11815
|
-
examples: [
|
|
11816
|
-
`/bug "Property 'name' does not exist on type 'User'"`,
|
|
11817
|
-
`/bug "Cannot read property 'id' of undefined" --file src/user.ts`,
|
|
11818
|
-
"/bug --from-output --verbose",
|
|
11819
|
-
"/bug --solution-id typescript-fix-0 --dry-run"
|
|
11820
|
-
]
|
|
11821
|
-
},
|
|
11822
|
-
"/lint": {
|
|
11823
|
-
name: "/lint",
|
|
11824
|
-
description: "ESLint analysis and auto-fix",
|
|
11825
|
-
category: "quality",
|
|
11826
|
-
usage: "/lint [file]",
|
|
11827
|
-
examples: ["/lint src/app.ts", "/lint"]
|
|
11828
|
-
},
|
|
11829
|
-
"/typecheck": {
|
|
11830
|
-
name: "/typecheck",
|
|
11831
|
-
description: "TypeScript type safety analysis",
|
|
11832
|
-
category: "quality",
|
|
11833
|
-
usage: "/typecheck [file]",
|
|
11834
|
-
examples: ["/typecheck src/app.ts", "/typecheck"]
|
|
11835
|
-
},
|
|
11836
|
-
"/security-review": {
|
|
11837
|
-
name: "/security-review",
|
|
11838
|
-
description: "Security vulnerability assessment",
|
|
11839
|
-
category: "quality",
|
|
11840
|
-
usage: "/security-review [file]",
|
|
11841
|
-
examples: ["/security-review src/auth.ts"]
|
|
11842
|
-
},
|
|
11843
|
-
// Configuration & Setup
|
|
11844
|
-
"/config": {
|
|
11845
|
-
name: "/config",
|
|
11846
|
-
description: "Show configuration settings",
|
|
11847
|
-
category: "configuration",
|
|
11848
|
-
usage: "/config [key] [value]",
|
|
11849
|
-
examples: ["/config", "/config model gpt-4"]
|
|
11850
|
-
},
|
|
11851
|
-
"/init": {
|
|
11852
|
-
name: "/init",
|
|
11853
|
-
description: "Initialize MARIA configuration and analyze project",
|
|
11854
|
-
category: "configuration",
|
|
11855
|
-
usage: "/init [--force] [--scan] [--graph-rag]",
|
|
11856
|
-
examples: ["/init", "/init --force", "/init --scan"]
|
|
11857
|
-
},
|
|
11858
|
-
"/setup": {
|
|
11859
|
-
name: "/setup",
|
|
11860
|
-
description: "First-time environment setup wizard",
|
|
11861
|
-
category: "configuration",
|
|
11862
|
-
usage: "/setup",
|
|
11863
|
-
examples: ["/setup"]
|
|
11864
|
-
},
|
|
11865
|
-
"/settings": {
|
|
11866
|
-
name: "/settings",
|
|
11867
|
-
description: "Environment variable setup",
|
|
11868
|
-
category: "configuration",
|
|
11869
|
-
usage: "/settings",
|
|
11870
|
-
examples: ["/settings"]
|
|
11871
|
-
},
|
|
11872
|
-
"/brain": {
|
|
11873
|
-
name: "/brain",
|
|
11874
|
-
description: "Switch between cognitive & operation modes",
|
|
11875
|
-
category: "configuration",
|
|
11876
|
-
usage: "/brain [mode-name]",
|
|
11877
|
-
examples: ["/brain", "/brain creative", "/brain analytical"],
|
|
11878
|
-
deprecated: {
|
|
11879
|
-
since: "v2.5.0",
|
|
11880
|
-
replacedBy: "/mode",
|
|
11881
|
-
message: "Use /mode for switching AI modes"
|
|
11882
|
-
},
|
|
11883
|
-
hidden: true
|
|
11884
|
-
// Hidden from help display
|
|
11885
|
-
},
|
|
11886
|
-
"/model": {
|
|
11887
|
-
name: "/model",
|
|
11888
|
-
description: "Interactive AI model selector",
|
|
11889
|
-
category: "configuration",
|
|
11890
|
-
aliases: ["/m", "/models"],
|
|
11891
|
-
usage: "/model [list|set|info|test|benchmark|cost|current] [model-id] [options]",
|
|
11892
|
-
examples: [
|
|
11893
|
-
"/model",
|
|
11894
|
-
"/model list",
|
|
11895
|
-
"/model set claude-3-sonnet",
|
|
11896
|
-
"/model info gpt-4"
|
|
11897
|
-
]
|
|
11898
|
-
},
|
|
11899
|
-
"/add-dir": {
|
|
11900
|
-
name: "/add-dir",
|
|
11901
|
-
description: "Add directory to project",
|
|
11902
|
-
category: "configuration",
|
|
11903
|
-
usage: "/add-dir [path]",
|
|
11904
|
-
examples: ["/add-dir src", "/add-dir lib/utils"]
|
|
11905
|
-
},
|
|
11906
|
-
// Authentication
|
|
11907
|
-
"/login": {
|
|
11908
|
-
name: "/login",
|
|
11909
|
-
description: "Login to services",
|
|
11910
|
-
category: "auth",
|
|
11911
|
-
usage: "/login [service]",
|
|
11912
|
-
examples: ["/login", "/login github"]
|
|
11913
|
-
},
|
|
11914
|
-
"/logout": {
|
|
11915
|
-
name: "/logout",
|
|
11916
|
-
description: "Logout from services",
|
|
11917
|
-
category: "auth",
|
|
11918
|
-
usage: "/logout [service]",
|
|
11919
|
-
examples: ["/logout", "/logout github"]
|
|
11920
|
-
},
|
|
11921
|
-
"/permissions": {
|
|
11922
|
-
name: "/permissions",
|
|
11923
|
-
description: "Manage permissions",
|
|
11924
|
-
category: "auth",
|
|
11925
|
-
usage: "/permissions [permission] [value]",
|
|
11926
|
-
examples: ["/permissions", "/permissions fileAccess true"]
|
|
11927
|
-
},
|
|
11928
|
-
"/auth": {
|
|
11929
|
-
name: "/auth",
|
|
11930
|
-
description: "Authentication management hub",
|
|
11931
|
-
category: "auth",
|
|
11932
|
-
usage: "/auth [action]",
|
|
11933
|
-
examples: ["/auth", "/auth status"]
|
|
11934
|
-
},
|
|
11935
|
-
"/signin": {
|
|
11936
|
-
name: "/signin",
|
|
11937
|
-
description: "Sign in to services (alias for /login)",
|
|
11938
|
-
category: "auth",
|
|
11939
|
-
usage: "/signin [service]",
|
|
11940
|
-
examples: ["/signin", "/signin github"]
|
|
11941
|
-
},
|
|
11942
|
-
"/signout": {
|
|
11943
|
-
name: "/signout",
|
|
11944
|
-
description: "Sign out from services (alias for /logout)",
|
|
11945
|
-
category: "auth",
|
|
11946
|
-
usage: "/signout [service]",
|
|
11947
|
-
examples: ["/signout", "/signout github"]
|
|
11948
|
-
},
|
|
11949
|
-
// Workflow Automation
|
|
11950
|
-
"/nl": {
|
|
11951
|
-
name: "/nl",
|
|
11952
|
-
description: "Natural language command translation - Convert plain English to executable commands (POC)",
|
|
11953
|
-
category: "workflow",
|
|
11954
|
-
usage: '/nl "<natural language description>" [options]',
|
|
11955
|
-
examples: [
|
|
11956
|
-
'/nl "commit my changes and run tests"',
|
|
11957
|
-
'/nl "fix typescript errors" --dry-run',
|
|
11958
|
-
'/nl "show system status" --explain'
|
|
11959
|
-
]
|
|
11960
|
-
},
|
|
11961
|
-
"/chain": {
|
|
11962
|
-
name: "/chain",
|
|
11963
|
-
description: "Execute command chains",
|
|
11964
|
-
category: "workflow",
|
|
11965
|
-
usage: "/chain [chain-name] [--interactive]",
|
|
11966
|
-
examples: ["/chain projectSetup", "/chain analysis --interactive"]
|
|
11967
|
-
},
|
|
11968
|
-
"/suggest": {
|
|
11969
|
-
name: "/suggest",
|
|
11970
|
-
description: "Get intelligent command suggestions",
|
|
11971
|
-
category: "workflow",
|
|
11972
|
-
usage: "/suggest",
|
|
11973
|
-
examples: ["/suggest"]
|
|
11974
|
-
},
|
|
11975
|
-
"/alias": {
|
|
11976
|
-
name: "/alias",
|
|
11977
|
-
description: "Manage command aliases",
|
|
11978
|
-
category: "workflow",
|
|
11979
|
-
usage: "/alias [add|remove|list] [alias] [command]",
|
|
11980
|
-
examples: ['/alias add /gs "/git status"', "/alias list"]
|
|
11981
|
-
},
|
|
11982
|
-
"/template": {
|
|
11983
|
-
name: "/template",
|
|
11984
|
-
description: "Command templates management",
|
|
11985
|
-
category: "workflow",
|
|
11986
|
-
usage: "/template [run|save|list] [name] [commands]",
|
|
11987
|
-
examples: ["/template list", "/template run myTemplate"]
|
|
11988
|
-
},
|
|
11989
|
-
"/batch": {
|
|
11990
|
-
name: "/batch",
|
|
11991
|
-
description: "Execute multiple commands",
|
|
11992
|
-
category: "workflow",
|
|
11993
|
-
usage: "/batch [commands...]",
|
|
11994
|
-
examples: ["/batch /status /model /config"]
|
|
11995
|
-
},
|
|
11996
|
-
"/hotkey": {
|
|
11997
|
-
name: "/hotkey",
|
|
11998
|
-
description: "Manage keyboard shortcuts",
|
|
11999
|
-
category: "workflow",
|
|
12000
|
-
usage: "/hotkey [add|remove|list] [key] [command]",
|
|
12001
|
-
examples: ["/hotkey add ctrl+s /status", "/hotkey list"]
|
|
12002
|
-
},
|
|
12003
|
-
"/compact": {
|
|
12004
|
-
name: "/compact",
|
|
12005
|
-
description: "Compact session data",
|
|
12006
|
-
category: "workflow",
|
|
12007
|
-
usage: "/compact",
|
|
12008
|
-
examples: ["/compact"]
|
|
12009
|
-
},
|
|
12010
|
-
"/resume": {
|
|
12011
|
-
name: "/resume",
|
|
12012
|
-
description: "Resume previous session",
|
|
12013
|
-
category: "workflow",
|
|
12014
|
-
usage: "/resume [session-id]",
|
|
12015
|
-
examples: ["/resume", "/resume last"]
|
|
12016
|
-
},
|
|
12017
|
-
// Development Tools
|
|
12018
|
-
"/memory": {
|
|
12019
|
-
name: "/memory",
|
|
12020
|
-
description: "Show memory usage statistics and health",
|
|
12021
|
-
category: "development",
|
|
12022
|
-
usage: "/memory",
|
|
12023
|
-
examples: ["/memory"]
|
|
12024
|
-
},
|
|
12025
|
-
"/remember": {
|
|
12026
|
-
name: "/remember",
|
|
12027
|
-
description: "Store important information in persistent memory",
|
|
12028
|
-
category: "memory",
|
|
12029
|
-
usage: "/remember <content> [--tag=<tag>] [--importance=<level>]",
|
|
12030
|
-
examples: ['/remember "API endpoint is /api/v1/users"', '/remember "Database password is in .env" --importance=high --tag=security']
|
|
12031
|
-
},
|
|
12032
|
-
"/recall": {
|
|
12033
|
-
name: "/recall",
|
|
12034
|
-
description: "Retrieve stored memories from persistent storage",
|
|
12035
|
-
category: "memory",
|
|
12036
|
-
usage: "/recall [query] [--tag=<tag>] [--limit=<n>]",
|
|
12037
|
-
examples: ["/recall API", "/recall --tag=security", "/recall database --limit=5"]
|
|
12038
|
-
},
|
|
12039
|
-
"/forget": {
|
|
12040
|
-
name: "/forget",
|
|
12041
|
-
description: "Remove memories from persistent storage",
|
|
12042
|
-
category: "memory",
|
|
12043
|
-
usage: "/forget <pattern> [--tag=<tag>] [--older-than=<days>] [--confirm]",
|
|
12044
|
-
examples: ['/forget "old data"', "/forget --tag=temp --confirm", "/forget --older-than=30 --confirm"]
|
|
12045
|
-
},
|
|
12046
|
-
"/memory-status": {
|
|
12047
|
-
name: "/memory-status",
|
|
12048
|
-
description: "Show memory usage statistics and health",
|
|
12049
|
-
category: "memory",
|
|
12050
|
-
aliases: ["/mem-status"],
|
|
12051
|
-
usage: "/memory-status",
|
|
12052
|
-
examples: ["/memory-status"]
|
|
12053
|
-
},
|
|
12054
|
-
"/export": {
|
|
12055
|
-
name: "/export",
|
|
12056
|
-
description: "Export project data",
|
|
12057
|
-
category: "development",
|
|
12058
|
-
usage: "/export [format] [--clipboard]",
|
|
12059
|
-
examples: ["/export json", "/export --clipboard"]
|
|
12060
|
-
},
|
|
12061
|
-
// Learning & Training
|
|
12062
|
-
"/l2r": {
|
|
12063
|
-
name: "/l2r",
|
|
12064
|
-
description: "Learning-to-Rank operations with 44-dimension feature system *GPU needed - Local LLM only (Pro+ members only)",
|
|
12065
|
-
category: "learning",
|
|
12066
|
-
aliases: ["/ltr", "/rank", "/learn"],
|
|
12067
|
-
usage: "/l2r [train|predict|status|features|explain] [options]",
|
|
12068
|
-
examples: [
|
|
12069
|
-
"/l2r status",
|
|
12070
|
-
"/l2r train --interactions 1000",
|
|
12071
|
-
'/l2r predict "API documentation security"',
|
|
12072
|
-
"/l2r features --top 10 --category semantic"
|
|
12073
|
-
]
|
|
12074
|
-
},
|
|
12075
|
-
// GraphRAG Operations
|
|
12076
|
-
"/search": {
|
|
12077
|
-
name: "/search",
|
|
12078
|
-
description: "GraphRAG-powered semantic search across codebase *GPU needed - Local LLM only (Pro+ members only)",
|
|
12079
|
-
category: "graphrag",
|
|
12080
|
-
usage: "/search <query> [--limit=<n>] [--threshold=<score>]",
|
|
12081
|
-
examples: [
|
|
12082
|
-
'/search "authentication implementation"',
|
|
12083
|
-
'/search "database connection" --limit 5',
|
|
12084
|
-
'/search "error handling" --threshold 0.8'
|
|
12085
|
-
]
|
|
12086
|
-
},
|
|
12087
|
-
// Language Operations
|
|
12088
|
-
"/language": {
|
|
12089
|
-
name: "/language",
|
|
12090
|
-
description: "Multilingual operations and translation",
|
|
12091
|
-
category: "multimodal",
|
|
12092
|
-
usage: "/language [translate|detect|switch] [options]",
|
|
12093
|
-
examples: [
|
|
12094
|
-
'/language translate "Hello world" --to=ja',
|
|
12095
|
-
'/language detect "Bonjour le monde"',
|
|
12096
|
-
"/language switch ja"
|
|
12097
|
-
]
|
|
12098
|
-
},
|
|
12099
|
-
// File Operations
|
|
12100
|
-
"/save": {
|
|
12101
|
-
name: "/save",
|
|
12102
|
-
description: "Save last AI response to a file",
|
|
12103
|
-
category: "file",
|
|
12104
|
-
aliases: ["/write"],
|
|
12105
|
-
usage: "/save <filename>",
|
|
12106
|
-
examples: ["/save tetris.html", "/save code.js", "/save output.txt"]
|
|
12107
|
-
},
|
|
12108
|
-
"/saveto": {
|
|
12109
|
-
name: "/saveto",
|
|
12110
|
-
description: "Save response to specified directory",
|
|
12111
|
-
category: "file",
|
|
12112
|
-
aliases: ["/writeto"],
|
|
12113
|
-
usage: "/saveto <path/to/filename>",
|
|
12114
|
-
examples: ["/saveto ~/Documents/code.js", "/saveto ./output/report.md"]
|
|
12115
|
-
},
|
|
12116
|
-
"/hooks": {
|
|
12117
|
-
name: "/hooks",
|
|
12118
|
-
description: "Manage Git hooks integration",
|
|
12119
|
-
category: "development",
|
|
12120
|
-
usage: "/hooks [list|add|remove]",
|
|
12121
|
-
examples: ["/hooks list", "/hooks add pre-commit"]
|
|
12122
|
-
},
|
|
12123
|
-
"/terminal-setup": {
|
|
12124
|
-
name: "/terminal-setup",
|
|
12125
|
-
description: "Setup terminal integration",
|
|
12126
|
-
category: "development",
|
|
12127
|
-
usage: "/terminal-setup",
|
|
12128
|
-
examples: ["/terminal-setup"]
|
|
12129
|
-
},
|
|
12130
|
-
"/vim": {
|
|
12131
|
-
name: "/vim",
|
|
12132
|
-
description: "Vim editor integration",
|
|
12133
|
-
category: "development",
|
|
12134
|
-
usage: "/vim [file]",
|
|
12135
|
-
examples: ["/vim src/app.ts", "/vim"]
|
|
12136
|
-
},
|
|
12137
|
-
"/release-notes": {
|
|
12138
|
-
name: "/release-notes",
|
|
12139
|
-
description: "Generate release notes",
|
|
12140
|
-
category: "development",
|
|
12141
|
-
usage: "/release-notes [version]",
|
|
12142
|
-
examples: ["/release-notes v1.2.0", "/release-notes"]
|
|
12143
|
-
},
|
|
12144
|
-
// Integration
|
|
12145
|
-
"/agents": {
|
|
12146
|
-
name: "/agents",
|
|
12147
|
-
description: "Manage AI agents",
|
|
12148
|
-
category: "integration",
|
|
12149
|
-
usage: "/agents [list|start|stop] [agent-name]",
|
|
12150
|
-
examples: ["/agents list", "/agents start codeReview"]
|
|
12151
|
-
},
|
|
12152
|
-
"/mcp": {
|
|
12153
|
-
name: "/mcp",
|
|
12154
|
-
description: "MCP integrations",
|
|
12155
|
-
category: "integration",
|
|
12156
|
-
usage: "/mcp [status|start|stop] [server]",
|
|
12157
|
-
examples: ["/mcp status", "/mcp start myServer"]
|
|
12158
|
-
},
|
|
12159
|
-
"/migrate-installer": {
|
|
12160
|
-
name: "/migrate-installer",
|
|
12161
|
-
description: "Migrate installer configuration",
|
|
12162
|
-
category: "integration",
|
|
12163
|
-
usage: "/migrate-installer",
|
|
12164
|
-
examples: ["/migrate-installer"]
|
|
12165
|
-
},
|
|
12166
|
-
// System & Diagnostics (Enhanced)
|
|
12167
|
-
"/status": {
|
|
12168
|
-
name: "/status",
|
|
12169
|
-
description: "System health monitoring with API connectivity checks",
|
|
12170
|
-
category: "system",
|
|
12171
|
-
usage: "/status [--json] [--exit-code]",
|
|
12172
|
-
examples: ["/status", "/status --json", "/status --exit-code"]
|
|
12173
|
-
},
|
|
12174
|
-
"/doctor": {
|
|
12175
|
-
name: "/doctor",
|
|
12176
|
-
description: "Comprehensive system diagnostics with actionable fixes",
|
|
12177
|
-
category: "system",
|
|
12178
|
-
usage: "/doctor [--verbose] [--fix]",
|
|
12179
|
-
examples: ["/doctor", "/doctor --verbose", "/doctor --fix"]
|
|
12180
|
-
},
|
|
12181
|
-
"/cost": {
|
|
12182
|
-
name: "/cost",
|
|
12183
|
-
description: "Show usage costs",
|
|
12184
|
-
category: "system",
|
|
12185
|
-
usage: "/cost",
|
|
12186
|
-
examples: ["/cost"]
|
|
12187
|
-
},
|
|
12188
|
-
"/upgrade": {
|
|
12189
|
-
name: "/upgrade",
|
|
12190
|
-
description: "Upgrade MARIA to latest version",
|
|
12191
|
-
category: "system",
|
|
12192
|
-
usage: "/upgrade",
|
|
12193
|
-
examples: ["/upgrade"]
|
|
12194
|
-
},
|
|
12195
|
-
"/shell": {
|
|
12196
|
-
name: "/shell",
|
|
12197
|
-
description: "Execute natural language shell operations safely (Phase B: with patch support)",
|
|
12198
|
-
category: "system",
|
|
12199
|
-
aliases: ["/sh"],
|
|
12200
|
-
usage: '/shell "<natural language instruction>" [--dry] [--phase B]',
|
|
12201
|
-
examples: [
|
|
12202
|
-
'/shell "show README file"',
|
|
12203
|
-
'/shell "list TypeScript files in src"',
|
|
12204
|
-
'/shell "search for TODO in package.json"',
|
|
12205
|
-
'/shell "find all .md files" --dry',
|
|
12206
|
-
`/shell "replace 'old' with 'new' in test.txt" --phase B`
|
|
12207
|
-
]
|
|
12208
|
-
},
|
|
12209
|
-
"/approval": {
|
|
12210
|
-
name: "/approval",
|
|
12211
|
-
description: "Review and approve pending patch operations (Phase B)",
|
|
12212
|
-
category: "system",
|
|
12213
|
-
aliases: ["/approve"],
|
|
12214
|
-
usage: "/approval [--auto] [--colorize] [--line-numbers]",
|
|
12215
|
-
examples: [
|
|
12216
|
-
"/approval",
|
|
12217
|
-
"/approval --auto",
|
|
12218
|
-
"/approval --colorize --line-numbers"
|
|
12219
|
-
]
|
|
12220
|
-
},
|
|
12221
|
-
// Math and Computational Commands
|
|
12222
|
-
"/calc": {
|
|
12223
|
-
name: "/calc",
|
|
12224
|
-
description: "Calculate mathematical expressions safely without eval()",
|
|
12225
|
-
category: "development",
|
|
12226
|
-
aliases: [],
|
|
12227
|
-
usage: '/calc "<expression>" [--vars <variables>]',
|
|
12228
|
-
examples: [
|
|
12229
|
-
'/calc "2 + 3 * 4"',
|
|
12230
|
-
'/calc "sin(pi/4) + cos(pi/4)"',
|
|
12231
|
-
'/calc "sqrt(x^2 + y^2)" --vars x=3 y=4'
|
|
12232
|
-
]
|
|
12233
|
-
},
|
|
12234
|
-
"/solve": {
|
|
12235
|
-
name: "/solve",
|
|
12236
|
-
description: "Solve equations and systems of equations using numerical methods",
|
|
12237
|
-
category: "development",
|
|
12238
|
-
aliases: [],
|
|
12239
|
-
usage: '/solve "<equation>" [--vars <variables>] [--x0 <initial>]',
|
|
12240
|
-
examples: [
|
|
12241
|
-
'/solve "x^2 - 4" --vars x --x0 2',
|
|
12242
|
-
'/solve "x^2 + y^2 - 25" "x + y - 7" --vars x y'
|
|
12243
|
-
]
|
|
12244
|
-
},
|
|
12245
|
-
"/plot": {
|
|
12246
|
-
name: "/plot",
|
|
12247
|
-
description: "Plot and visualize mathematical functions",
|
|
12248
|
-
category: "development",
|
|
12249
|
-
aliases: [],
|
|
12250
|
-
usage: '/plot "<function>" [--range <min> <max>] [--svg <file>]',
|
|
12251
|
-
examples: [
|
|
12252
|
-
'/plot "sin(x)" --range -3 3',
|
|
12253
|
-
'/plot "x^2 - 4*x + 3" --range -2 6 --svg output.svg'
|
|
12254
|
-
]
|
|
12255
|
-
},
|
|
12256
|
-
// Performance Optimization Commands
|
|
12257
|
-
"/benchmark": {
|
|
12258
|
-
name: "/benchmark",
|
|
12259
|
-
description: "Performance analysis and benchmarking",
|
|
12260
|
-
category: "optimization",
|
|
12261
|
-
usage: "/benchmark [code] [--options]",
|
|
12262
|
-
examples: [
|
|
12263
|
-
"/benchmark quicksort",
|
|
12264
|
-
'/benchmark compare "bubble sort" vs "merge sort"',
|
|
12265
|
-
"/benchmark --profile complex-algorithm"
|
|
12266
|
-
]
|
|
12267
|
-
},
|
|
12268
|
-
// Creative Tools Commands
|
|
12269
|
-
"/diagram": {
|
|
12270
|
-
name: "/diagram",
|
|
12271
|
-
description: "Generate visual diagrams and charts",
|
|
12272
|
-
category: "creative",
|
|
12273
|
-
usage: "/diagram [type] [description]",
|
|
12274
|
-
examples: [
|
|
12275
|
-
"/diagram flowchart login process",
|
|
12276
|
-
"/diagram architecture microservices",
|
|
12277
|
-
"/diagram er user database",
|
|
12278
|
-
"/diagram sequence API request"
|
|
12279
|
-
]
|
|
12280
|
-
},
|
|
12281
|
-
// Implementation Utilities Commands
|
|
12282
|
-
"/snippet": {
|
|
12283
|
-
name: "/snippet",
|
|
12284
|
-
description: "Code snippet management",
|
|
12285
|
-
category: "implementation",
|
|
12286
|
-
usage: "/snippet [command] [args]",
|
|
12287
|
-
examples: [
|
|
12288
|
-
'/snippet save "quicksort" "function quicksort..."',
|
|
12289
|
-
"/snippet search authentication",
|
|
12290
|
-
"/snippet list --tags=react",
|
|
12291
|
-
"/snippet export ./my-snippets.json"
|
|
12292
|
-
]
|
|
12293
|
-
},
|
|
12294
|
-
// GPU Management Commands
|
|
12295
|
-
"/gpu": {
|
|
12296
|
-
name: "/gpu",
|
|
12297
|
-
description: "\u{1F3AE} GPU management and monitoring for AI acceleration *GPU needed - Local LLM only (Pro+ members only)",
|
|
12298
|
-
category: "ai",
|
|
12299
|
-
aliases: ["/graphics", "/device"],
|
|
12300
|
-
usage: "/gpu [status|benchmark|devices|memory] [options]",
|
|
12301
|
-
examples: [
|
|
12302
|
-
"/gpu status",
|
|
12303
|
-
"/gpu benchmark",
|
|
12304
|
-
"/gpu devices",
|
|
12305
|
-
"/gpu memory"
|
|
12306
|
-
]
|
|
12307
|
-
},
|
|
12308
|
-
// LLM Management Commands - Phase 10 v2.0
|
|
12309
|
-
"/llm": {
|
|
12310
|
-
name: "/llm",
|
|
12311
|
-
description: "Advanced LLM management and model operations *GPU needed - Local LLM only (Pro+ members only)",
|
|
12312
|
-
category: "ai",
|
|
12313
|
-
usage: "/llm <command> [options]",
|
|
12314
|
-
examples: [
|
|
12315
|
-
"/llm list",
|
|
12316
|
-
"/llm use gpt-oss-20b",
|
|
12317
|
-
"/llm bench --detailed",
|
|
12318
|
-
"/llm coop run --iterations 5",
|
|
12319
|
-
"/llm studio status"
|
|
12320
|
-
]
|
|
12321
|
-
},
|
|
12322
|
-
// RL Evolution Commands
|
|
12323
|
-
"/evolve": {
|
|
12324
|
-
name: "/evolve",
|
|
12325
|
-
description: "Autonomous system evolution and optimization controls *GPU needed - Local LLM only (Pro+ members only)",
|
|
12326
|
-
category: "evolution",
|
|
12327
|
-
aliases: ["/evolution", "/auto-evolve"],
|
|
12328
|
-
usage: "/evolve <on|off|status|plan|history|revert|approve|reject> [options]",
|
|
12329
|
-
examples: [
|
|
12330
|
-
"/evolve on nightly",
|
|
12331
|
-
"/evolve status",
|
|
12332
|
-
"/evolve plan",
|
|
12333
|
-
"/evolve history 30",
|
|
12334
|
-
"/evolve approve approval_123",
|
|
12335
|
-
"/evolve revert v1.0.5",
|
|
12336
|
-
"/evolve run canary",
|
|
12337
|
-
"/evolve off"
|
|
12338
|
-
]
|
|
12339
|
-
},
|
|
12340
|
-
// Real-time Monitoring Commands
|
|
12341
|
-
"/monitor": {
|
|
12342
|
-
name: "/monitor",
|
|
12343
|
-
description: "Start real-time monitoring dashboard",
|
|
12344
|
-
category: "monitoring",
|
|
12345
|
-
usage: "/monitor [options]",
|
|
12346
|
-
examples: [
|
|
12347
|
-
"/monitor --format ascii --refresh 5",
|
|
12348
|
-
"/monitor system --template system-overview",
|
|
12349
|
-
"/monitor --port 3001 --auth"
|
|
12350
|
-
]
|
|
12351
|
-
},
|
|
12352
|
-
"/dashboard": {
|
|
12353
|
-
name: "/dashboard",
|
|
12354
|
-
description: "Create and manage monitoring dashboards",
|
|
12355
|
-
category: "monitoring",
|
|
12356
|
-
aliases: ["/dash"],
|
|
12357
|
-
usage: "/dashboard <action> [options]",
|
|
12358
|
-
examples: [
|
|
12359
|
-
"/dashboard create --template system-overview",
|
|
12360
|
-
"/dashboard list",
|
|
12361
|
-
"/dashboard show my-dashboard --format html",
|
|
12362
|
-
"/dashboard export my-dashboard"
|
|
12363
|
-
]
|
|
12364
|
-
},
|
|
12365
|
-
"/stream": {
|
|
12366
|
-
name: "/stream",
|
|
12367
|
-
description: "Manage real-time data streams",
|
|
12368
|
-
category: "monitoring",
|
|
12369
|
-
usage: "/stream <action> [channel] [options]",
|
|
12370
|
-
examples: [
|
|
12371
|
-
"/stream start system:metrics",
|
|
12372
|
-
"/stream list",
|
|
12373
|
-
"/stream subscribe app:logs --filter error",
|
|
12374
|
-
"/stream stop system:metrics"
|
|
12375
|
-
]
|
|
12376
|
-
},
|
|
12377
|
-
"/chart": {
|
|
12378
|
-
name: "/chart",
|
|
12379
|
-
description: "Create and display charts from data",
|
|
12380
|
-
category: "monitoring",
|
|
12381
|
-
usage: "/chart <type> [data] [options]",
|
|
12382
|
-
examples: [
|
|
12383
|
-
'/chart line --data "./metrics.json" --format ascii',
|
|
12384
|
-
'/chart bar --data "cpu,memory,disk" --format html',
|
|
12385
|
-
"/chart gauge system.cpu --threshold 80"
|
|
12386
|
-
]
|
|
12387
|
-
},
|
|
12388
|
-
"/templates": {
|
|
12389
|
-
name: "/templates",
|
|
12390
|
-
description: "Manage dashboard templates",
|
|
12391
|
-
category: "monitoring",
|
|
12392
|
-
usage: "/templates <action> [options]",
|
|
12393
|
-
examples: [
|
|
12394
|
-
"/templates list",
|
|
12395
|
-
"/templates show system-overview",
|
|
12396
|
-
"/templates create --name my-template",
|
|
12397
|
-
"/templates generate --from-data metrics.json"
|
|
12398
|
-
]
|
|
12399
|
-
},
|
|
12400
|
-
// AI Coding Agent Commands
|
|
12401
|
-
"/create-feature": {
|
|
12402
|
-
name: "/create-feature",
|
|
12403
|
-
description: "Generate complete feature with all necessary files and folders",
|
|
12404
|
-
category: "coding-agent",
|
|
12405
|
-
usage: "/create-feature [feature-description]",
|
|
12406
|
-
examples: [
|
|
12407
|
-
'/create-feature "user authentication"',
|
|
12408
|
-
'/create-feature "shopping cart functionality"',
|
|
12409
|
-
'/create-feature "file upload system"'
|
|
12410
|
-
]
|
|
12411
|
-
},
|
|
12412
|
-
"/setup-project": {
|
|
12413
|
-
name: "/setup-project",
|
|
12414
|
-
description: "Automatically setup project structure and dependencies",
|
|
12415
|
-
category: "coding-agent",
|
|
12416
|
-
usage: "/setup-project [project-type]",
|
|
12417
|
-
examples: [
|
|
12418
|
-
'/setup-project "react-typescript"',
|
|
12419
|
-
'/setup-project "node-express-api"',
|
|
12420
|
-
'/setup-project "python-flask"'
|
|
12421
|
-
]
|
|
12422
|
-
},
|
|
12423
|
-
"/auto-organize": {
|
|
12424
|
-
name: "/auto-organize",
|
|
12425
|
-
description: "Automatically organize files and folders following best practices",
|
|
12426
|
-
category: "coding-agent",
|
|
12427
|
-
usage: "/auto-organize [--dry-run]",
|
|
12428
|
-
examples: [
|
|
12429
|
-
"/auto-organize",
|
|
12430
|
-
"/auto-organize --dry-run"
|
|
12431
|
-
]
|
|
12432
|
-
},
|
|
12433
|
-
"/generate-docs": {
|
|
12434
|
-
name: "/generate-docs",
|
|
12435
|
-
description: "Generate comprehensive documentation for the project",
|
|
12436
|
-
category: "coding-agent",
|
|
12437
|
-
usage: "/generate-docs [--type] [--format]",
|
|
12438
|
-
examples: [
|
|
12439
|
-
"/generate-docs",
|
|
12440
|
-
"/generate-docs --type api",
|
|
12441
|
-
"/generate-docs --format markdown"
|
|
12442
|
-
]
|
|
12443
|
-
},
|
|
12444
|
-
"/optimize-structure": {
|
|
12445
|
-
name: "/optimize-structure",
|
|
12446
|
-
description: "Analyze and optimize project structure for better maintainability",
|
|
12447
|
-
category: "coding-agent",
|
|
12448
|
-
usage: "/optimize-structure [--suggestions] [--apply]",
|
|
12449
|
-
examples: [
|
|
12450
|
-
"/optimize-structure",
|
|
12451
|
-
"/optimize-structure --suggestions",
|
|
12452
|
-
"/optimize-structure --apply"
|
|
12453
|
-
]
|
|
12454
|
-
},
|
|
12455
|
-
// Business Operations (Enhanced)
|
|
12456
|
-
"/battlecard": {
|
|
12457
|
-
name: "/battlecard",
|
|
12458
|
-
description: "Generate competitive battlecards with talk scripts (PRO+ required)",
|
|
12459
|
-
category: "business",
|
|
12460
|
-
usage: "/battlecard --competitor <name> [--customer <company>] [--industry <type>] [--size <enterprise|mid-market|smb>]",
|
|
12461
|
-
examples: [
|
|
12462
|
-
'/battlecard --competitor "CompetitorX"',
|
|
12463
|
-
'/battlecard -c "CompetitorY" --customer "ABC Manufacturing" --industry manufacturing',
|
|
12464
|
-
'/battlecard -c "CompetitorZ" --size enterprise'
|
|
12465
|
-
]
|
|
12466
|
-
},
|
|
12467
|
-
"/tune": {
|
|
12468
|
-
name: "/tune",
|
|
12469
|
-
description: "Natural language reward tuning - Optimize AI agent behavior patterns",
|
|
12470
|
-
category: "business",
|
|
12471
|
-
usage: '/tune "<adjustment_description>" [options]',
|
|
12472
|
-
examples: [
|
|
12473
|
-
'/tune "Prioritize customer relationship building to improve sales"',
|
|
12474
|
-
'/tune "Focus on cost reduction while maintaining quality" --intensity high',
|
|
12475
|
-
"/tune --metric conversion_rate --direction increase --scope team"
|
|
12476
|
-
]
|
|
12477
|
-
},
|
|
12478
|
-
"/sales-dashboard": {
|
|
12479
|
-
name: "/sales-dashboard",
|
|
12480
|
-
description: "Interactive TUI sales dashboard with real-time updates (STARTER+ required)",
|
|
12481
|
-
category: "business",
|
|
12482
|
-
usage: "/sales-dashboard [--profile=executive|manager|rep] [--theme=light|dark] [--format=tui|json|slack]",
|
|
12483
|
-
examples: [
|
|
12484
|
-
"/sales-dashboard",
|
|
12485
|
-
"/sales-dashboard --profile executive --theme light",
|
|
12486
|
-
"/sales-dashboard --format json",
|
|
12487
|
-
"/sales-dashboard --format slack"
|
|
12488
|
-
]
|
|
12489
|
-
},
|
|
12490
|
-
"/pilot-setup": {
|
|
12491
|
-
name: "/pilot-setup",
|
|
12492
|
-
description: "Sales team pilot setup - Supports 5-person teams",
|
|
12493
|
-
category: "business",
|
|
12494
|
-
usage: "/pilot-setup [action] [options]",
|
|
12495
|
-
examples: [
|
|
12496
|
-
"/pilot-setup template",
|
|
12497
|
-
"/pilot-setup setup --config ./pilot-config.json",
|
|
12498
|
-
"/pilot-setup onboard --pilot-id pilot_123 --member-id member_001",
|
|
12499
|
-
"/pilot-setup start --pilot-id pilot_123"
|
|
12500
|
-
]
|
|
12501
|
-
},
|
|
12502
|
-
// Project Management Commands
|
|
12503
|
-
"/pm": {
|
|
12504
|
-
name: "/pm",
|
|
12505
|
-
description: "Project Management Suite - SOW and Gantt chart generation from natural language",
|
|
12506
|
-
category: "business",
|
|
12507
|
-
usage: "/pm <command> [options]",
|
|
12508
|
-
examples: [
|
|
12509
|
-
"/pm analyze --source all --days 30",
|
|
12510
|
-
'/pm sow "Improve search latency by 20% with GPU acceleration"',
|
|
12511
|
-
"/pm gantt --sow docs/SOW_AUTO.md --ics out/schedule.ics",
|
|
12512
|
-
"/pm update --since 2025-08-01 --create-pr",
|
|
12513
|
-
"/pm export --format mermaid"
|
|
12514
|
-
]
|
|
12515
|
-
},
|
|
12516
|
-
"/pm analyze": {
|
|
12517
|
-
name: "/pm analyze",
|
|
12518
|
-
description: "Analyze repository for PM insights (WBS, risks, dependencies)",
|
|
12519
|
-
category: "business",
|
|
12520
|
-
usage: "/pm analyze [--source repo|issues|notes|all] [--days N] [--json]",
|
|
12521
|
-
examples: [
|
|
12522
|
-
"/pm analyze",
|
|
12523
|
-
"/pm analyze --source issues --days 7",
|
|
12524
|
-
"/pm analyze --json > analysis.json"
|
|
12525
|
-
]
|
|
12526
|
-
},
|
|
12527
|
-
"/pm sow": {
|
|
12528
|
-
name: "/pm sow",
|
|
12529
|
-
description: "Generate Statement of Work from natural language description",
|
|
12530
|
-
category: "business",
|
|
12531
|
-
usage: '/pm sow "<description>" [--out path]',
|
|
12532
|
-
examples: [
|
|
12533
|
-
'/pm sow "Implement GPU acceleration for search reranking"',
|
|
12534
|
-
'/pm sow "Improve API latency by 20%" --out docs/Q4_SOW.md'
|
|
12535
|
-
]
|
|
12536
|
-
},
|
|
12537
|
-
"/pm gantt": {
|
|
12538
|
-
name: "/pm gantt",
|
|
12539
|
-
description: "Generate Mermaid Gantt chart and optional ICS calendar from SOW",
|
|
12540
|
-
category: "business",
|
|
12541
|
-
usage: "/pm gantt [--sow path] [--out path] [--ics path]",
|
|
12542
|
-
examples: [
|
|
12543
|
-
"/pm gantt",
|
|
12544
|
-
"/pm gantt --sow docs/SOW_Q4.md --ics out/timeline.ics"
|
|
12545
|
-
]
|
|
12546
|
-
},
|
|
12547
|
-
"/pm update": {
|
|
12548
|
-
name: "/pm update",
|
|
12549
|
-
description: "Update SOW/Gantt with recent repository changes",
|
|
12550
|
-
category: "business",
|
|
12551
|
-
usage: "/pm update [--since date] [--create-pr]",
|
|
12552
|
-
examples: [
|
|
12553
|
-
"/pm update --since 2025-08-01",
|
|
12554
|
-
"/pm update --create-pr"
|
|
12555
|
-
]
|
|
12556
|
-
},
|
|
12557
|
-
"/pm export": {
|
|
12558
|
-
name: "/pm export",
|
|
12559
|
-
description: "Export PM artifacts in various formats (mermaid, ics, json)",
|
|
12560
|
-
category: "business",
|
|
12561
|
-
usage: "/pm export --format <format> [--out path]",
|
|
12562
|
-
examples: [
|
|
12563
|
-
"/pm export --format mermaid",
|
|
12564
|
-
"/pm export --format ics --out calendar.ics",
|
|
12565
|
-
"/pm export --format json"
|
|
12566
|
-
]
|
|
12567
|
-
},
|
|
12568
|
-
// System Update Commands
|
|
12569
|
-
"/update": {
|
|
12570
|
-
name: "/update",
|
|
12571
|
-
description: "Update project dependencies, configurations, and system components",
|
|
12572
|
-
category: "configuration",
|
|
12573
|
-
usage: "/update [target] [options]",
|
|
12574
|
-
examples: [
|
|
12575
|
-
"/update",
|
|
12576
|
-
"/update --deps",
|
|
12577
|
-
"/update --config",
|
|
12578
|
-
"/update --system"
|
|
12579
|
-
]
|
|
12580
|
-
},
|
|
12581
|
-
// Design System Commands
|
|
12582
|
-
"/design": {
|
|
12583
|
-
name: "/design",
|
|
12584
|
-
description: "Design System Suite - Creative brief, analysis, and asset generation",
|
|
12585
|
-
category: "creative",
|
|
12586
|
-
usage: "/design <command> [options]",
|
|
12587
|
-
examples: [
|
|
12588
|
-
'/design brief "Modern B2B SaaS landing page"',
|
|
12589
|
-
"/design analyze --brand ./brand.md --competitor ./competitors.txt",
|
|
12590
|
-
"/design web --profile=landing --a11y --perf",
|
|
12591
|
-
"/design wireframe --pages Home,Pricing,Contact"
|
|
12592
|
-
]
|
|
12593
|
-
},
|
|
12594
|
-
"/design brief": {
|
|
12595
|
-
name: "/design brief",
|
|
12596
|
-
description: "Generate creative brief from natural language prompt",
|
|
12597
|
-
category: "creative",
|
|
12598
|
-
usage: '/design brief "<description>"',
|
|
12599
|
-
examples: [
|
|
12600
|
-
'/design brief "Professional B2B SaaS landing page"',
|
|
12601
|
-
'/design brief "Minimal e-commerce product showcase"'
|
|
12602
|
-
]
|
|
12603
|
-
},
|
|
12604
|
-
"/design analyze": {
|
|
12605
|
-
name: "/design analyze",
|
|
12606
|
-
description: "Analyze brand guidelines and competitor designs",
|
|
12607
|
-
category: "creative",
|
|
12608
|
-
usage: "/design analyze [--brand path] [--competitor path]",
|
|
12609
|
-
examples: [
|
|
12610
|
-
"/design analyze --brand ./brand-guide.md",
|
|
12611
|
-
"/design analyze --competitor ./competitors.txt",
|
|
12612
|
-
"/design analyze --brand ./brand.md --competitor ./competitors.txt"
|
|
12613
|
-
]
|
|
12614
|
-
},
|
|
12615
|
-
"/design web": {
|
|
12616
|
-
name: "/design web",
|
|
12617
|
-
description: "Generate Web SOW with accessibility and performance options",
|
|
12618
|
-
category: "creative",
|
|
12619
|
-
usage: "/design web [--profile type] [--a11y] [--perf] [--out path]",
|
|
12620
|
-
examples: [
|
|
12621
|
-
"/design web --profile=landing --a11y --perf",
|
|
12622
|
-
"/design web --profile=site --out ./docs/web-sow.md"
|
|
12623
|
-
]
|
|
12624
|
-
},
|
|
12625
|
-
// POC Commands (Production Ready)
|
|
12626
|
-
"/nl-poc": {
|
|
12627
|
-
name: "/nl-poc",
|
|
12628
|
-
description: "Natural Language Command Translation (POC #1) - Production ready with 0.2ms response time",
|
|
12629
|
-
category: "workflow",
|
|
12630
|
-
usage: '/nl-poc "<natural language description>" [options]',
|
|
12631
|
-
examples: [
|
|
12632
|
-
'/nl-poc "commit my changes and run tests"',
|
|
12633
|
-
'/nl-poc "fix typescript errors" --dry-run',
|
|
12634
|
-
'/nl-poc "show system status" --explain --verbose'
|
|
12635
|
-
]
|
|
12636
|
-
},
|
|
12637
|
-
"/bug-poc": {
|
|
12638
|
-
name: "/bug-poc",
|
|
12639
|
-
description: "AI-powered error analysis and solution system (POC #4) - 80% accuracy, 0.2ms response time",
|
|
12640
|
-
category: "quality",
|
|
12641
|
-
usage: '/bug-poc "<error message>" [options]',
|
|
12642
|
-
examples: [
|
|
12643
|
-
`/bug-poc "Property 'name' does not exist on type 'User'"`,
|
|
12644
|
-
`/bug-poc "Cannot read property 'id' of undefined" --file src/user.ts`,
|
|
12645
|
-
"/bug-poc --from-output --verbose",
|
|
12646
|
-
"/bug-poc --solution-id typescript-fix-0 --dry-run"
|
|
12647
|
-
]
|
|
12648
|
-
},
|
|
12649
|
-
// Intelligence System Commands
|
|
12650
|
-
"/intelligence-dashboard": {
|
|
12651
|
-
name: "/intelligence-dashboard",
|
|
12652
|
-
description: "Start real-time MARIA Intelligence monitoring dashboard",
|
|
12653
|
-
category: "intelligence",
|
|
12654
|
-
usage: "/intelligence-dashboard [--format=ascii|html|json] [--duration=<minutes>] [--export=<file>]",
|
|
12655
|
-
examples: [
|
|
12656
|
-
"/intelligence-dashboard",
|
|
12657
|
-
"/intelligence-dashboard --format html --export report.html",
|
|
12658
|
-
"/intelligence-dashboard --duration 5 --format ascii"
|
|
12659
|
-
]
|
|
12660
|
-
},
|
|
12661
|
-
"/canary": {
|
|
12662
|
-
name: "/canary",
|
|
12663
|
-
description: "Manage MARIA Intelligence canary deployments for zero-downtime releases",
|
|
12664
|
-
category: "intelligence",
|
|
12665
|
-
usage: "/canary <action> [options]",
|
|
12666
|
-
examples: [
|
|
12667
|
-
"/canary deploy v4.2.0 --traffic 20 --duration 15",
|
|
12668
|
-
"/canary status",
|
|
12669
|
-
"/canary stop",
|
|
12670
|
-
"/canary test"
|
|
12671
|
-
]
|
|
12672
|
-
},
|
|
12673
|
-
"/quality-gate": {
|
|
12674
|
-
name: "/quality-gate",
|
|
12675
|
-
description: "Run MARIA Intelligence quality gate validation with automated testing",
|
|
12676
|
-
category: "intelligence",
|
|
12677
|
-
usage: "/quality-gate [--threshold=<score>] [--verbose] [--report=<file>]",
|
|
12678
|
-
examples: [
|
|
12679
|
-
"/quality-gate",
|
|
12680
|
-
"/quality-gate --threshold 85 --verbose",
|
|
12681
|
-
"/quality-gate --report results.json"
|
|
12682
|
-
]
|
|
12683
|
-
}
|
|
11726
|
+
commandGroups = {
|
|
11727
|
+
core: [
|
|
11728
|
+
"about",
|
|
11729
|
+
"changelog",
|
|
11730
|
+
"config",
|
|
11731
|
+
"contact",
|
|
11732
|
+
"doctor",
|
|
11733
|
+
"examples",
|
|
11734
|
+
"help",
|
|
11735
|
+
"history",
|
|
11736
|
+
"list",
|
|
11737
|
+
"logout",
|
|
11738
|
+
"model",
|
|
11739
|
+
"ping",
|
|
11740
|
+
"plan",
|
|
11741
|
+
"plugins",
|
|
11742
|
+
"status",
|
|
11743
|
+
"tutorial",
|
|
11744
|
+
"usage",
|
|
11745
|
+
"verify",
|
|
11746
|
+
"version"
|
|
11747
|
+
],
|
|
11748
|
+
auth: ["login", "logout", "whoami"],
|
|
11749
|
+
code: ["code", "mm", "multimodal"],
|
|
11750
|
+
configuration: ["config", "hooks", "model", "permissions", "settings", "theme"],
|
|
11751
|
+
multimodal: ["face", "image", "mm", "multimodal", "screenshot", "video", "voice"],
|
|
11752
|
+
evolution: ["benchmark", "evolve", "quality"],
|
|
11753
|
+
memory: ["forget", "memory", "recall", "remember"],
|
|
11754
|
+
analysis: ["analyze", "diagram", "diff", "visualize"],
|
|
11755
|
+
system: ["doctor", "health", "manifest", "selftest"],
|
|
11756
|
+
workflow: ["nl", "nl-poc"],
|
|
11757
|
+
safety: ["check"],
|
|
11758
|
+
evaluation: ["run"],
|
|
11759
|
+
assistant: ["ask", "chat", "think"],
|
|
11760
|
+
data: ["db", "export", "import", "sync"],
|
|
11761
|
+
utilities: ["alias", "clear", "history", "reset"],
|
|
11762
|
+
experimental: ["preview", "test"],
|
|
11763
|
+
business: ["battlecard", "sales-dashboard", "tune", "pilot-setup"],
|
|
11764
|
+
plugins: ["plugins"],
|
|
11765
|
+
search: ["search"],
|
|
11766
|
+
enterprise: ["admin", "audit", "compliance", "security"],
|
|
11767
|
+
development: ["debug", "profile", "trace"]
|
|
12684
11768
|
};
|
|
12685
|
-
|
|
12686
|
-
|
|
12687
|
-
|
|
12688
|
-
|
|
12689
|
-
|
|
12690
|
-
|
|
12691
|
-
|
|
12692
|
-
|
|
12693
|
-
|
|
12694
|
-
|
|
12695
|
-
|
|
12696
|
-
|
|
12697
|
-
|
|
12698
|
-
|
|
12699
|
-
|
|
12700
|
-
for (const a2 of info.aliases) {
|
|
12701
|
-
_ALIAS_MAP.set(_keyOf(a2), info);
|
|
12702
|
-
}
|
|
12703
|
-
}
|
|
12704
|
-
}
|
|
12705
|
-
assertRegistry();
|
|
12706
|
-
})();
|
|
11769
|
+
Object.values(commandGroups).flat();
|
|
11770
|
+
commandInfo = {};
|
|
11771
|
+
for (const [category, commands] of Object.entries(commandGroups)) {
|
|
11772
|
+
for (const command of commands) {
|
|
11773
|
+
commandInfo[command] = {
|
|
11774
|
+
name: `/${command}`,
|
|
11775
|
+
category
|
|
11776
|
+
};
|
|
11777
|
+
}
|
|
11778
|
+
}
|
|
11779
|
+
commandInfo["model"] = { ...commandInfo["model"], aliases: ["/m", "/models"] };
|
|
11780
|
+
commandInfo["memory"] = { ...commandInfo["memory"], aliases: ["/mem"] };
|
|
11781
|
+
commandInfo["login"] = { ...commandInfo["login"], aliases: ["/signin"] };
|
|
11782
|
+
commandInfo["logout"] = { ...commandInfo["logout"], aliases: ["/signout"] };
|
|
11783
|
+
commandInfo["evolve"] = { ...commandInfo["evolve"], aliases: ["/evolution", "/auto-evolve"] };
|
|
12707
11784
|
}
|
|
12708
11785
|
});
|
|
12709
11786
|
var AutocompleteDropdown;
|
|
@@ -13007,7 +12084,7 @@ var init_interactive_cli = __esm({
|
|
|
13007
12084
|
*/
|
|
13008
12085
|
async loadConfiguration() {
|
|
13009
12086
|
try {
|
|
13010
|
-
const configPath =
|
|
12087
|
+
const configPath = path10__namespace.default.join(os__namespace.default.homedir(), ".maria", "config.json");
|
|
13011
12088
|
const content = await fsp__namespace.default.readFile(configPath, "utf-8");
|
|
13012
12089
|
return JSON.parse(content);
|
|
13013
12090
|
} catch {
|
|
@@ -13851,8 +12928,8 @@ ${this.description}
|
|
|
13851
12928
|
var DIR, FILE, QuickPersistence;
|
|
13852
12929
|
var init_quick_persistence = __esm({
|
|
13853
12930
|
"src/services/memory-system/quick-persistence.ts"() {
|
|
13854
|
-
DIR =
|
|
13855
|
-
FILE =
|
|
12931
|
+
DIR = path10__namespace.join(os__namespace.homedir(), ".maria", "memory");
|
|
12932
|
+
FILE = path10__namespace.join(DIR, "memories.jsonl");
|
|
13856
12933
|
QuickPersistence = class {
|
|
13857
12934
|
static async init() {
|
|
13858
12935
|
await fsp__namespace.mkdir(DIR, { recursive: true });
|
|
@@ -13974,8 +13051,8 @@ var init_quick_persistence = __esm({
|
|
|
13974
13051
|
const mine = rows.filter((r2) => r2.userId === userId);
|
|
13975
13052
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
13976
13053
|
const filename = `maria-memory-export-${timestamp}.${format}`;
|
|
13977
|
-
const exportDir =
|
|
13978
|
-
const exportPath =
|
|
13054
|
+
const exportDir = path10__namespace.join(os__namespace.homedir(), ".maria", "exports");
|
|
13055
|
+
const exportPath = path10__namespace.join(exportDir, filename);
|
|
13979
13056
|
await fsp__namespace.mkdir(exportDir, { recursive: true });
|
|
13980
13057
|
if (format === "jsonl") {
|
|
13981
13058
|
await fsp__namespace.writeFile(
|
|
@@ -14062,11 +13139,41 @@ async function loadBigQuery() {
|
|
|
14062
13139
|
}
|
|
14063
13140
|
return BigQuery;
|
|
14064
13141
|
}
|
|
14065
|
-
|
|
13142
|
+
async function loadFirebaseAdmin() {
|
|
13143
|
+
if (firebaseLoadAttempted) return { adminFirestore, FieldValue, Timestamp };
|
|
13144
|
+
firebaseLoadAttempted = true;
|
|
13145
|
+
try {
|
|
13146
|
+
const firebaseAdminModule = await import('firebase-admin/app');
|
|
13147
|
+
const firestoreModule = await import('firebase-admin/firestore');
|
|
13148
|
+
const keyPath = path10__namespace.join(process.cwd(), "config", "maria-cli-firestore-key.json");
|
|
13149
|
+
if (!adminApp && firebaseAdminModule.getApps().length === 0) {
|
|
13150
|
+
adminApp = firebaseAdminModule.initializeApp({
|
|
13151
|
+
credential: firebaseAdminModule.cert(keyPath),
|
|
13152
|
+
projectId: "maria-code-470602"
|
|
13153
|
+
});
|
|
13154
|
+
} else if (firebaseAdminModule.getApps().length > 0) {
|
|
13155
|
+
adminApp = firebaseAdminModule.getApps()[0];
|
|
13156
|
+
}
|
|
13157
|
+
if (adminApp) {
|
|
13158
|
+
adminFirestore = firestoreModule.getFirestore(adminApp);
|
|
13159
|
+
FieldValue = firestoreModule.FieldValue;
|
|
13160
|
+
Timestamp = firestoreModule.Timestamp;
|
|
13161
|
+
}
|
|
13162
|
+
} catch (error2) {
|
|
13163
|
+
console.warn("[Firestore] Firebase Admin not available for CLI telemetry:", error2.message);
|
|
13164
|
+
}
|
|
13165
|
+
return { adminFirestore, FieldValue, Timestamp };
|
|
13166
|
+
}
|
|
13167
|
+
var BigQuery, bigQueryLoadAttempted, adminApp, adminFirestore, FieldValue, Timestamp, firebaseLoadAttempted, BigQueryTelemetryService, bigQueryTelemetry;
|
|
14066
13168
|
var init_bigquery_telemetry = __esm({
|
|
14067
13169
|
"src/services/telemetry/bigquery-telemetry.ts"() {
|
|
14068
13170
|
BigQuery = null;
|
|
14069
13171
|
bigQueryLoadAttempted = false;
|
|
13172
|
+
adminApp = null;
|
|
13173
|
+
adminFirestore = null;
|
|
13174
|
+
FieldValue = null;
|
|
13175
|
+
Timestamp = null;
|
|
13176
|
+
firebaseLoadAttempted = false;
|
|
14070
13177
|
BigQueryTelemetryService = class _BigQueryTelemetryService extends events.EventEmitter {
|
|
14071
13178
|
static instance;
|
|
14072
13179
|
bigquery = null;
|
|
@@ -14134,6 +13241,9 @@ var init_bigquery_telemetry = __esm({
|
|
|
14134
13241
|
args: data2.args?.slice(0, 3)
|
|
14135
13242
|
};
|
|
14136
13243
|
this.telemetryQueue.push(telemetryData);
|
|
13244
|
+
this.syncToFirestore(telemetryData).catch((error2) => {
|
|
13245
|
+
console.warn("[Firestore Sync] Failed:", error2.message);
|
|
13246
|
+
});
|
|
14137
13247
|
this.emit("command:tracked", telemetryData);
|
|
14138
13248
|
if (this.telemetryQueue.length >= this.config.batchSize) {
|
|
14139
13249
|
await this.flush();
|
|
@@ -14223,6 +13333,48 @@ var init_bigquery_telemetry = __esm({
|
|
|
14223
13333
|
throw new Error(`HTTP flush failed: ${response2.status}`);
|
|
14224
13334
|
}
|
|
14225
13335
|
}
|
|
13336
|
+
/**
|
|
13337
|
+
* Sync telemetry data to Firestore for real-time dashboard
|
|
13338
|
+
*/
|
|
13339
|
+
async syncToFirestore(data2) {
|
|
13340
|
+
if (!data2.userId) return;
|
|
13341
|
+
const { adminFirestore: adminFirestore2, FieldValue: FieldValue2, Timestamp: Timestamp2 } = await loadFirebaseAdmin();
|
|
13342
|
+
if (!adminFirestore2) return;
|
|
13343
|
+
try {
|
|
13344
|
+
const now = new Date(data2.timestamp);
|
|
13345
|
+
const periodId = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}`;
|
|
13346
|
+
const userUsageRef = adminFirestore2.collection("users").doc(data2.userId).collection("usage").doc(periodId);
|
|
13347
|
+
const updateData = {
|
|
13348
|
+
lastUpdated: FieldValue2.serverTimestamp(),
|
|
13349
|
+
"used.requests": FieldValue2.increment(1)
|
|
13350
|
+
};
|
|
13351
|
+
if (data2.cmd === "code" || data2.cmd.includes("code")) {
|
|
13352
|
+
updateData["used.commands"] = FieldValue2.increment(1);
|
|
13353
|
+
}
|
|
13354
|
+
if (data2.quotaLeft) {
|
|
13355
|
+
const estimatedTokensUsed = Math.max(10, data2.latencyMs / 10);
|
|
13356
|
+
updateData["used.tokens"] = FieldValue2.increment(estimatedTokensUsed);
|
|
13357
|
+
}
|
|
13358
|
+
updateData["providers.maria-cli.requests"] = FieldValue2.increment(1);
|
|
13359
|
+
if (data2.quotaLeft) {
|
|
13360
|
+
const estimatedTokensUsed = Math.max(10, data2.latencyMs / 10);
|
|
13361
|
+
updateData["providers.maria-cli.tokens"] = FieldValue2.increment(estimatedTokensUsed);
|
|
13362
|
+
updateData["providers.maria-cli.cost"] = FieldValue2.increment(1e-4);
|
|
13363
|
+
}
|
|
13364
|
+
updateData["models.maria-cli.requests"] = FieldValue2.increment(1);
|
|
13365
|
+
if (data2.quotaLeft) {
|
|
13366
|
+
const estimatedTokensUsed = Math.max(10, data2.latencyMs / 10);
|
|
13367
|
+
updateData["models.maria-cli.tokens"] = FieldValue2.increment(estimatedTokensUsed);
|
|
13368
|
+
}
|
|
13369
|
+
updateData[`commands.${data2.cmd}`] = FieldValue2.increment(1);
|
|
13370
|
+
updateData["totalCost"] = FieldValue2.increment(1e-4);
|
|
13371
|
+
await userUsageRef.set(updateData, { merge: true });
|
|
13372
|
+
console.log(`[Firestore Sync] Updated usage for user ${data2.userId}, command ${data2.cmd}`);
|
|
13373
|
+
} catch (error2) {
|
|
13374
|
+
console.warn(`[Firestore Sync] Failed to update usage for user ${data2.userId}:`, error2);
|
|
13375
|
+
throw error2;
|
|
13376
|
+
}
|
|
13377
|
+
}
|
|
14226
13378
|
/**
|
|
14227
13379
|
* Start flush timer
|
|
14228
13380
|
*/
|
|
@@ -14355,10 +13507,30 @@ var init_bigquery_telemetry = __esm({
|
|
|
14355
13507
|
bigQueryTelemetry = BigQueryTelemetryService.getInstance();
|
|
14356
13508
|
}
|
|
14357
13509
|
});
|
|
14358
|
-
|
|
14359
|
-
|
|
13510
|
+
async function getUserContext() {
|
|
13511
|
+
try {
|
|
13512
|
+
const configDir = path10__namespace.join(process.env.HOME || process.env.USERPROFILE || "", ".maria");
|
|
13513
|
+
const authFile = path10__namespace.join(configDir, "auth.json");
|
|
13514
|
+
if (await fs8__namespace.pathExists(authFile)) {
|
|
13515
|
+
const authData = await fs8__namespace.readJson(authFile);
|
|
13516
|
+
return {
|
|
13517
|
+
userId: authData.userId || authData.user?.id,
|
|
13518
|
+
userEmail: authData.userEmail || authData.user?.email,
|
|
13519
|
+
sessionId: authData.sessionId || authData.token
|
|
13520
|
+
};
|
|
13521
|
+
}
|
|
13522
|
+
return {
|
|
13523
|
+
userId: process.env.MARIA_USER_ID,
|
|
13524
|
+
userEmail: process.env.MARIA_USER_EMAIL,
|
|
13525
|
+
sessionId: process.env.MARIA_SESSION_ID
|
|
13526
|
+
};
|
|
13527
|
+
} catch (error2) {
|
|
13528
|
+
return {};
|
|
13529
|
+
}
|
|
13530
|
+
}
|
|
14360
13531
|
async function trackCommand(data2) {
|
|
14361
13532
|
try {
|
|
13533
|
+
const userContext = await getUserContext();
|
|
14362
13534
|
await bigQueryTelemetry.trackCommandExecution({
|
|
14363
13535
|
cmd: data2.cmd,
|
|
14364
13536
|
status: data2.status,
|
|
@@ -14366,7 +13538,10 @@ async function trackCommand(data2) {
|
|
|
14366
13538
|
plan: data2.plan,
|
|
14367
13539
|
quotaLeft: data2.quotaLeft,
|
|
14368
13540
|
errorType: data2.errorType,
|
|
14369
|
-
args: data2.args
|
|
13541
|
+
args: data2.args,
|
|
13542
|
+
userId: data2.userId || userContext.userId,
|
|
13543
|
+
userEmail: data2.userEmail || userContext.userEmail,
|
|
13544
|
+
sessionId: data2.sessionId || userContext.sessionId
|
|
14370
13545
|
});
|
|
14371
13546
|
fetch("/v1/telemetry", {
|
|
14372
13547
|
method: "POST",
|
|
@@ -15450,14 +14625,14 @@ var init_ReadyCommandsService = __esm({
|
|
|
15450
14625
|
} else {
|
|
15451
14626
|
const possiblePaths = [
|
|
15452
14627
|
// For bundled dist version
|
|
15453
|
-
|
|
15454
|
-
|
|
15455
|
-
|
|
14628
|
+
path10__namespace.join(__dirname, "READY.manifest.json"),
|
|
14629
|
+
path10__namespace.join(__dirname, "../READY.manifest.json"),
|
|
14630
|
+
path10__namespace.join(process.cwd(), "dist/READY.manifest.json"),
|
|
15456
14631
|
// For development/source version
|
|
15457
|
-
|
|
15458
|
-
|
|
15459
|
-
|
|
15460
|
-
|
|
14632
|
+
path10__namespace.join(__dirname, "../../../src/slash-commands/READY.manifest.json"),
|
|
14633
|
+
path10__namespace.join(__dirname, "../../slash-commands/READY.manifest.json"),
|
|
14634
|
+
path10__namespace.join(process.cwd(), "src/slash-commands/READY.manifest.json"),
|
|
14635
|
+
path10__namespace.join(process.cwd(), "READY.manifest.json")
|
|
15461
14636
|
];
|
|
15462
14637
|
this.manifestPath = possiblePaths[0];
|
|
15463
14638
|
}
|
|
@@ -15468,17 +14643,17 @@ var init_ReadyCommandsService = __esm({
|
|
|
15468
14643
|
async findManifestPath() {
|
|
15469
14644
|
const possiblePaths = [
|
|
15470
14645
|
// For bundled dist version
|
|
15471
|
-
|
|
15472
|
-
|
|
15473
|
-
|
|
14646
|
+
path10__namespace.join(__dirname, "READY.manifest.json"),
|
|
14647
|
+
path10__namespace.join(__dirname, "../READY.manifest.json"),
|
|
14648
|
+
path10__namespace.join(process.cwd(), "dist/READY.manifest.json"),
|
|
15474
14649
|
// For development/source version
|
|
15475
|
-
|
|
15476
|
-
|
|
15477
|
-
|
|
15478
|
-
|
|
14650
|
+
path10__namespace.join(__dirname, "../../../src/slash-commands/READY.manifest.json"),
|
|
14651
|
+
path10__namespace.join(__dirname, "../../slash-commands/READY.manifest.json"),
|
|
14652
|
+
path10__namespace.join(process.cwd(), "src/slash-commands/READY.manifest.json"),
|
|
14653
|
+
path10__namespace.join(process.cwd(), "READY.manifest.json"),
|
|
15479
14654
|
// Additional paths for different build scenarios
|
|
15480
|
-
|
|
15481
|
-
|
|
14655
|
+
path10__namespace.resolve(__dirname, "../../../src/slash-commands/READY.manifest.json"),
|
|
14656
|
+
path10__namespace.resolve(process.cwd(), "src/slash-commands/READY.manifest.json")
|
|
15482
14657
|
];
|
|
15483
14658
|
for (const testPath of possiblePaths) {
|
|
15484
14659
|
try {
|
|
@@ -15771,9 +14946,9 @@ var init_ReadyCommandsService = __esm({
|
|
|
15771
14946
|
if (this.readyCommands.length === 0) {
|
|
15772
14947
|
await this.loadReadyCommands();
|
|
15773
14948
|
}
|
|
15774
|
-
const
|
|
14949
|
+
const categories2 = [];
|
|
15775
14950
|
for (const [categoryName, commands] of this.commandsByCategory) {
|
|
15776
|
-
|
|
14951
|
+
categories2.push({
|
|
15777
14952
|
name: categoryName,
|
|
15778
14953
|
emoji: "",
|
|
15779
14954
|
// Remove emojis for simplicity
|
|
@@ -15781,7 +14956,7 @@ var init_ReadyCommandsService = __esm({
|
|
|
15781
14956
|
count: commands.length
|
|
15782
14957
|
});
|
|
15783
14958
|
}
|
|
15784
|
-
|
|
14959
|
+
categories2.sort((a2, b) => {
|
|
15785
14960
|
const aPriority = this.getCategoryPriority(a2.name);
|
|
15786
14961
|
const bPriority = this.getCategoryPriority(b.name);
|
|
15787
14962
|
if (aPriority !== bPriority) {
|
|
@@ -15789,7 +14964,7 @@ var init_ReadyCommandsService = __esm({
|
|
|
15789
14964
|
}
|
|
15790
14965
|
return a2.name.localeCompare(b.name);
|
|
15791
14966
|
});
|
|
15792
|
-
return
|
|
14967
|
+
return categories2;
|
|
15793
14968
|
}
|
|
15794
14969
|
/**
|
|
15795
14970
|
* Search commands with fuzzy matching
|
|
@@ -16124,7 +15299,7 @@ var init_HelpCommand = __esm({
|
|
|
16124
15299
|
* Show general help with READY commands only
|
|
16125
15300
|
*/
|
|
16126
15301
|
async showGeneralHelp() {
|
|
16127
|
-
const
|
|
15302
|
+
const categories2 = await this.readyService.getCategories();
|
|
16128
15303
|
const stats = await this.readyService.getStatistics();
|
|
16129
15304
|
const lines = [];
|
|
16130
15305
|
lines.push("\u2550".repeat(60));
|
|
@@ -16137,14 +15312,14 @@ var init_HelpCommand = __esm({
|
|
|
16137
15312
|
lines.push(" /help --search <term> - Search with fuzzy matching");
|
|
16138
15313
|
lines.push("");
|
|
16139
15314
|
let globalMaxNameLength = 0;
|
|
16140
|
-
for (const category of
|
|
15315
|
+
for (const category of categories2) {
|
|
16141
15316
|
const showCommands = category.commands.slice(0, 4);
|
|
16142
15317
|
for (const cmd of showCommands) {
|
|
16143
15318
|
globalMaxNameLength = Math.max(globalMaxNameLength, cmd.name.length);
|
|
16144
15319
|
}
|
|
16145
15320
|
}
|
|
16146
15321
|
globalMaxNameLength = Math.max(globalMaxNameLength, 18) + 1;
|
|
16147
|
-
for (const category of
|
|
15322
|
+
for (const category of categories2) {
|
|
16148
15323
|
lines.push(chalk17__default.default.bold(`${category.name.toUpperCase()} (${category.count})`));
|
|
16149
15324
|
const showCommands = category.commands.slice(0, 4);
|
|
16150
15325
|
for (const cmd of showCommands) {
|
|
@@ -16245,8 +15420,8 @@ var init_HelpCommand = __esm({
|
|
|
16245
15420
|
async showCategoryHelp(categoryName) {
|
|
16246
15421
|
const commands = await this.readyService.getCommandsByCategory(categoryName);
|
|
16247
15422
|
if (commands.length === 0) {
|
|
16248
|
-
const
|
|
16249
|
-
const availableCategories =
|
|
15423
|
+
const categories2 = await this.readyService.getCategories();
|
|
15424
|
+
const availableCategories = categories2.map((c) => c.name);
|
|
16250
15425
|
return this.error(
|
|
16251
15426
|
`No READY commands in category: ${categoryName}. Available: ${availableCategories.join(", ")}`,
|
|
16252
15427
|
"CATEGORY_NOT_FOUND"
|
|
@@ -16382,7 +15557,7 @@ var init_HelpCommand = __esm({
|
|
|
16382
15557
|
*/
|
|
16383
15558
|
async showStatistics() {
|
|
16384
15559
|
const stats = await this.readyService.getStatistics();
|
|
16385
|
-
const
|
|
15560
|
+
const categories2 = await this.readyService.getCategories();
|
|
16386
15561
|
const lines = [];
|
|
16387
15562
|
lines.push("");
|
|
16388
15563
|
lines.push(`\u{1F4CA} ${chalk17__default.default.bold("READY COMMANDS STATISTICS")}`);
|
|
@@ -16399,7 +15574,7 @@ var init_HelpCommand = __esm({
|
|
|
16399
15574
|
lines.push(` Slowest Command: /${stats.slowestCommand}`);
|
|
16400
15575
|
lines.push("");
|
|
16401
15576
|
lines.push(chalk17__default.default.bold("\u{1F4CB} By Category:"));
|
|
16402
|
-
for (const category of
|
|
15577
|
+
for (const category of categories2) {
|
|
16403
15578
|
const avgTime = Math.round(
|
|
16404
15579
|
category.commands.reduce((sum, cmd) => sum + cmd.contract.maxResponseTime, 0) / category.commands.length
|
|
16405
15580
|
);
|
|
@@ -16537,91 +15712,6 @@ Command: /voice ${args.join(" ")}`,
|
|
|
16537
15712
|
}
|
|
16538
15713
|
});
|
|
16539
15714
|
|
|
16540
|
-
// src/slash-commands/categories/auth/LoginCommand.ts
|
|
16541
|
-
var LoginCommand_exports = {};
|
|
16542
|
-
__export(LoginCommand_exports, {
|
|
16543
|
-
LoginCommand: () => LoginCommand,
|
|
16544
|
-
meta: () => meta2
|
|
16545
|
-
});
|
|
16546
|
-
var LoginCommand, meta2;
|
|
16547
|
-
var init_LoginCommand = __esm({
|
|
16548
|
-
"src/slash-commands/categories/auth/LoginCommand.ts"() {
|
|
16549
|
-
init_base_command();
|
|
16550
|
-
init_cli_auth();
|
|
16551
|
-
init_telemetry_helper();
|
|
16552
|
-
init_subscription_manager();
|
|
16553
|
-
LoginCommand = class extends BaseCommand {
|
|
16554
|
-
name = "login";
|
|
16555
|
-
category = "auth";
|
|
16556
|
-
description = "Sign in to MARIA";
|
|
16557
|
-
aliases = ["signin"];
|
|
16558
|
-
usage = "";
|
|
16559
|
-
examples = [
|
|
16560
|
-
{
|
|
16561
|
-
input: "/login",
|
|
16562
|
-
description: "Sign in to MARIA",
|
|
16563
|
-
output: "Logged in with plan and quota info"
|
|
16564
|
-
}
|
|
16565
|
-
];
|
|
16566
|
-
async execute(args, context2) {
|
|
16567
|
-
const startTime = Date.now();
|
|
16568
|
-
try {
|
|
16569
|
-
const isAuthenticated = await authManager.isAuthenticated();
|
|
16570
|
-
if (isAuthenticated) {
|
|
16571
|
-
try {
|
|
16572
|
-
const user = await authManager.getCurrentUser();
|
|
16573
|
-
const plan2 = user.plan || "Free";
|
|
16574
|
-
const quotaLeft2 = user.usage?.requestsRemaining || 100;
|
|
16575
|
-
return this.success(`Already logged in \xB7 Plan: ${plan2} \xB7 ${quotaLeft2} req left`);
|
|
16576
|
-
} catch {
|
|
16577
|
-
}
|
|
16578
|
-
}
|
|
16579
|
-
const authResult = await authManager.login();
|
|
16580
|
-
if (!authResult.success) {
|
|
16581
|
-
return this.error(authResult.error || "Authentication failed \xB7 Try again", void 0, void 0, 2);
|
|
16582
|
-
}
|
|
16583
|
-
const userInfo2 = authResult.user;
|
|
16584
|
-
const plan = userInfo2?.plan || "Free";
|
|
16585
|
-
const quotaLeft = userInfo2?.usage?.requestsRemaining || 100;
|
|
16586
|
-
const email = userInfo2?.email || "user";
|
|
16587
|
-
await trackCommand({
|
|
16588
|
-
cmd: "login",
|
|
16589
|
-
status: "success",
|
|
16590
|
-
latencyMs: Date.now() - startTime,
|
|
16591
|
-
plan,
|
|
16592
|
-
quotaLeft
|
|
16593
|
-
});
|
|
16594
|
-
const message = `\u2705 Logged in as ${email} \xB7 Plan: ${plan} \xB7 ${quotaLeft} req left`;
|
|
16595
|
-
return this.success(withQuotaFooter(message, quotaLeft));
|
|
16596
|
-
} catch (error2) {
|
|
16597
|
-
await trackCommand({
|
|
16598
|
-
cmd: "login",
|
|
16599
|
-
status: "error",
|
|
16600
|
-
latencyMs: Date.now() - startTime,
|
|
16601
|
-
plan: getUserPlan(),
|
|
16602
|
-
quotaLeft: 999
|
|
16603
|
-
});
|
|
16604
|
-
if (error2.message?.includes("User cancelled")) {
|
|
16605
|
-
return this.success("Login cancelled");
|
|
16606
|
-
}
|
|
16607
|
-
return this.error("Login failed \xB7 Check your connection and try again", void 0, void 0, 2);
|
|
16608
|
-
}
|
|
16609
|
-
}
|
|
16610
|
-
};
|
|
16611
|
-
meta2 = {
|
|
16612
|
-
name: "login",
|
|
16613
|
-
category: "auth",
|
|
16614
|
-
description: "Sign in to MARIA",
|
|
16615
|
-
aliases: ["signin"],
|
|
16616
|
-
usage: "",
|
|
16617
|
-
examples: [
|
|
16618
|
-
"/login"
|
|
16619
|
-
],
|
|
16620
|
-
deps: []
|
|
16621
|
-
};
|
|
16622
|
-
}
|
|
16623
|
-
});
|
|
16624
|
-
|
|
16625
15715
|
// src/utils/import-helper.ts
|
|
16626
15716
|
var import_helper_exports = {};
|
|
16627
15717
|
__export(import_helper_exports, {
|
|
@@ -17098,12 +16188,12 @@ ${this.toYamlLike(value, indent + 1)}`;
|
|
|
17098
16188
|
}
|
|
17099
16189
|
static async loadFromFile(configPath) {
|
|
17100
16190
|
const { importNodeBuiltin: importNodeBuiltin2 } = await Promise.resolve().then(() => (init_import_helper(), import_helper_exports));
|
|
17101
|
-
const
|
|
16191
|
+
const fs13 = await importNodeBuiltin2("fs");
|
|
17102
16192
|
const _path = await importNodeBuiltin2("path");
|
|
17103
16193
|
const os9 = await importNodeBuiltin2("os");
|
|
17104
16194
|
const targetPath = configPath || _path.join(os9.homedir(), ".maria", "config.json");
|
|
17105
16195
|
try {
|
|
17106
|
-
const data2 = await
|
|
16196
|
+
const data2 = await fs13.promises.readFile(targetPath, "utf-8");
|
|
17107
16197
|
return JSON.parse(data2);
|
|
17108
16198
|
} catch (innerError) {
|
|
17109
16199
|
if (error?.code === "ENOENT") {
|
|
@@ -17117,25 +16207,25 @@ ${this.toYamlLike(value, indent + 1)}`;
|
|
|
17117
16207
|
}
|
|
17118
16208
|
async save(configPath, options) {
|
|
17119
16209
|
const { importNodeBuiltin: importNodeBuiltin2 } = await Promise.resolve().then(() => (init_import_helper(), import_helper_exports));
|
|
17120
|
-
const
|
|
16210
|
+
const fs13 = await importNodeBuiltin2("fs");
|
|
17121
16211
|
const _path = await importNodeBuiltin2("path");
|
|
17122
16212
|
const os9 = await importNodeBuiltin2("os");
|
|
17123
16213
|
const targetPath = configPath || _path.join(os9.homedir(), ".maria", "config.json");
|
|
17124
16214
|
try {
|
|
17125
16215
|
if (options?.backup) {
|
|
17126
16216
|
try {
|
|
17127
|
-
await
|
|
16217
|
+
await fs13.promises.access(targetPath);
|
|
17128
16218
|
const backupPath = `${targetPath}.backup.${Date.now()}`;
|
|
17129
|
-
await
|
|
16219
|
+
await fs13.promises.copyFile(targetPath, backupPath);
|
|
17130
16220
|
} catch {
|
|
17131
16221
|
}
|
|
17132
16222
|
}
|
|
17133
|
-
await
|
|
16223
|
+
await fs13.promises.mkdir(_path.dirname(targetPath), { recursive: true });
|
|
17134
16224
|
const dataToSave = this.getAll({
|
|
17135
16225
|
maskSensitive: options?.maskSensitive ?? true,
|
|
17136
16226
|
includeSourceMap: options?.includeSourceMap ?? false
|
|
17137
16227
|
});
|
|
17138
|
-
await
|
|
16228
|
+
await fs13.promises.writeFile(
|
|
17139
16229
|
targetPath,
|
|
17140
16230
|
JSON.stringify(dataToSave, null, 2),
|
|
17141
16231
|
{ mode: 384 }
|
|
@@ -17179,12 +16269,12 @@ ${this.toYamlLike(value, indent + 1)}`;
|
|
|
17179
16269
|
}
|
|
17180
16270
|
if (outputPath) {
|
|
17181
16271
|
const { importNodeBuiltin: importNodeBuiltin2 } = await Promise.resolve().then(() => (init_import_helper(), import_helper_exports));
|
|
17182
|
-
const
|
|
16272
|
+
const fs13 = await importNodeBuiltin2("fs");
|
|
17183
16273
|
const _path = await importNodeBuiltin2(
|
|
17184
16274
|
"path"
|
|
17185
16275
|
);
|
|
17186
|
-
await
|
|
17187
|
-
await
|
|
16276
|
+
await fs13.promises.mkdir(_path.dirname(outputPath), { recursive: true });
|
|
16277
|
+
await fs13.promises.writeFile(outputPath, content, "utf-8");
|
|
17188
16278
|
console.log(`\u2705 Configuration exported to ${outputPath}`);
|
|
17189
16279
|
}
|
|
17190
16280
|
return content;
|
|
@@ -17477,9 +16567,9 @@ var init_model_selector_ui = __esm({
|
|
|
17477
16567
|
var ModelCommand_exports = {};
|
|
17478
16568
|
__export(ModelCommand_exports, {
|
|
17479
16569
|
ModelCommand: () => ModelCommand,
|
|
17480
|
-
meta: () =>
|
|
16570
|
+
meta: () => meta2
|
|
17481
16571
|
});
|
|
17482
|
-
var ModelCommand,
|
|
16572
|
+
var ModelCommand, meta2;
|
|
17483
16573
|
var init_ModelCommand = __esm({
|
|
17484
16574
|
"src/slash-commands/categories/configuration/handlers/ModelCommand.ts"() {
|
|
17485
16575
|
init_base_command();
|
|
@@ -18740,7 +17830,7 @@ ${model.description}
|
|
|
18740
17830
|
}
|
|
18741
17831
|
}
|
|
18742
17832
|
};
|
|
18743
|
-
|
|
17833
|
+
meta2 = {
|
|
18744
17834
|
name: "model",
|
|
18745
17835
|
category: "configuration",
|
|
18746
17836
|
description: "Manages AI model configuration and selection",
|
|
@@ -18931,9 +18021,9 @@ var init_BaseCommand = __esm({
|
|
|
18931
18021
|
var ConfigCommand_exports = {};
|
|
18932
18022
|
__export(ConfigCommand_exports, {
|
|
18933
18023
|
ConfigCommand: () => ConfigCommand,
|
|
18934
|
-
meta: () =>
|
|
18024
|
+
meta: () => meta3
|
|
18935
18025
|
});
|
|
18936
|
-
var ConfigCommand,
|
|
18026
|
+
var ConfigCommand, meta3;
|
|
18937
18027
|
var init_ConfigCommand = __esm({
|
|
18938
18028
|
"src/slash-commands/categories/configuration/handlers/ConfigCommand.ts"() {
|
|
18939
18029
|
init_BaseCommand();
|
|
@@ -19122,8 +18212,8 @@ var init_ConfigCommand = __esm({
|
|
|
19122
18212
|
validate: (v) => typeof v === "string"
|
|
19123
18213
|
}
|
|
19124
18214
|
};
|
|
19125
|
-
globalConfigPath =
|
|
19126
|
-
localConfigPath =
|
|
18215
|
+
globalConfigPath = path10__namespace.default.join(os__namespace.default.homedir(), ".maria", "config.json");
|
|
18216
|
+
localConfigPath = path10__namespace.default.join(process.cwd(), ".maria-config.json");
|
|
19127
18217
|
async execute(_args, context2) {
|
|
19128
18218
|
try {
|
|
19129
18219
|
const _startTime = Date.now();
|
|
@@ -19509,7 +18599,7 @@ var init_ConfigCommand = __esm({
|
|
|
19509
18599
|
}
|
|
19510
18600
|
async saveConfiguration(_config, _scope) {
|
|
19511
18601
|
const _configPath = _scope === "global" ? this.globalConfigPath : this.localConfigPath;
|
|
19512
|
-
await fsp__namespace.default.mkdir(
|
|
18602
|
+
await fsp__namespace.default.mkdir(path10__namespace.default.dirname(_configPath), { recursive: true });
|
|
19513
18603
|
await fsp__namespace.default.writeFile(_configPath, JSON.stringify(_config, null, 2), "utf-8");
|
|
19514
18604
|
this.setCache(`_config:${_scope}`, _config, 300);
|
|
19515
18605
|
}
|
|
@@ -19633,7 +18723,7 @@ var init_ConfigCommand = __esm({
|
|
|
19633
18723
|
};
|
|
19634
18724
|
}
|
|
19635
18725
|
};
|
|
19636
|
-
|
|
18726
|
+
meta3 = {
|
|
19637
18727
|
name: "config",
|
|
19638
18728
|
category: "configuration",
|
|
19639
18729
|
description: "Manages MARIA configuration settings",
|
|
@@ -19924,25 +19014,8 @@ async function displayFinalStartupScreen(_selectedProvider, _selectedModel) {
|
|
|
19924
19014
|
);
|
|
19925
19015
|
const cwd = systemInfo.cwd.replace(os__namespace.homedir(), "~");
|
|
19926
19016
|
console.log(chalk17__default.default.gray("cwd: ") + chalk17__default.default.white(cwd));
|
|
19927
|
-
|
|
19928
|
-
|
|
19929
|
-
if (authManager2 && await authManager2.isAuthenticated()) {
|
|
19930
|
-
try {
|
|
19931
|
-
const user = await authManager2.getCurrentUser();
|
|
19932
|
-
console.log(chalk17__default.default.green(`Signed in: ${user.email}`));
|
|
19933
|
-
console.log(chalk17__default.default.yellow("Tip: /help \xB7 /help code \xB7 /usage"));
|
|
19934
|
-
} catch {
|
|
19935
|
-
console.log(chalk17__default.default.green("Signed in"));
|
|
19936
|
-
console.log(chalk17__default.default.yellow("Tip: /help \xB7 /help code \xB7 /usage"));
|
|
19937
|
-
}
|
|
19938
|
-
} else {
|
|
19939
|
-
console.log(chalk17__default.default.gray("Not signed in"));
|
|
19940
|
-
console.log(chalk17__default.default.yellow("Tip: /login \xB7 /help \xB7 /help code"));
|
|
19941
|
-
}
|
|
19942
|
-
} catch {
|
|
19943
|
-
console.log(chalk17__default.default.gray("Not signed in"));
|
|
19944
|
-
console.log(chalk17__default.default.yellow("Tip: /login \xB7 /help \xB7 /help code"));
|
|
19945
|
-
}
|
|
19017
|
+
console.log(chalk17__default.default.gray("Not signed in"));
|
|
19018
|
+
console.log(chalk17__default.default.yellow("Tip: /login \xB7 /help \xB7 /help code"));
|
|
19946
19019
|
console.log("");
|
|
19947
19020
|
}
|
|
19948
19021
|
function displayRoundedInputBox() {
|
|
@@ -26625,11 +25698,11 @@ var init_ConfigService = __esm({
|
|
|
26625
25698
|
_saveDebounceTimer = null;
|
|
26626
25699
|
_isDirty = false;
|
|
26627
25700
|
constructor(configDir = process.env.MARIA_CONFIG_DIR || "~/.maria") {
|
|
26628
|
-
this._configPath =
|
|
25701
|
+
this._configPath = path10__namespace.join(
|
|
26629
25702
|
this.expandHome(configDir),
|
|
26630
25703
|
"session.config.json"
|
|
26631
25704
|
);
|
|
26632
|
-
this._userConfigPath =
|
|
25705
|
+
this._userConfigPath = path10__namespace.join(
|
|
26633
25706
|
this.expandHome(configDir),
|
|
26634
25707
|
"user.config.json"
|
|
26635
25708
|
);
|
|
@@ -26704,8 +25777,8 @@ var init_ConfigService = __esm({
|
|
|
26704
25777
|
/**
|
|
26705
25778
|
* ネストされた設定値の取得
|
|
26706
25779
|
*/
|
|
26707
|
-
getNestedValue(
|
|
26708
|
-
const keys =
|
|
25780
|
+
getNestedValue(path14) {
|
|
25781
|
+
const keys = path14.split(".");
|
|
26709
25782
|
let value = this._config;
|
|
26710
25783
|
for (const key2 of keys) {
|
|
26711
25784
|
if (value && typeof value === "object" && key2 in value) {
|
|
@@ -26735,8 +25808,8 @@ var init_ConfigService = __esm({
|
|
|
26735
25808
|
/**
|
|
26736
25809
|
* ネストされた設定値の更新
|
|
26737
25810
|
*/
|
|
26738
|
-
async setNestedValue(
|
|
26739
|
-
const keys =
|
|
25811
|
+
async setNestedValue(path14, value) {
|
|
25812
|
+
const keys = path14.split(".");
|
|
26740
25813
|
const lastKey = keys.pop();
|
|
26741
25814
|
let target = this._config;
|
|
26742
25815
|
for (const key2 of keys) {
|
|
@@ -26749,7 +25822,7 @@ var init_ConfigService = __esm({
|
|
|
26749
25822
|
target[lastKey] = value;
|
|
26750
25823
|
this.validateConfig();
|
|
26751
25824
|
this.emitChange({
|
|
26752
|
-
path:
|
|
25825
|
+
path: path14,
|
|
26753
25826
|
oldValue,
|
|
26754
25827
|
newValue: value,
|
|
26755
25828
|
timestamp: /* @__PURE__ */ new Date()
|
|
@@ -26763,7 +25836,7 @@ var init_ConfigService = __esm({
|
|
|
26763
25836
|
async save() {
|
|
26764
25837
|
if (!this._isDirty) return;
|
|
26765
25838
|
try {
|
|
26766
|
-
const configDir =
|
|
25839
|
+
const configDir = path10__namespace.dirname(this._userConfigPath);
|
|
26767
25840
|
await fsp__namespace.mkdir(configDir, { recursive: true });
|
|
26768
25841
|
await fsp__namespace.writeFile(
|
|
26769
25842
|
this._userConfigPath,
|
|
@@ -26794,8 +25867,8 @@ var init_ConfigService = __esm({
|
|
|
26794
25867
|
setupAutoSave() {
|
|
26795
25868
|
process.on("exit", () => {
|
|
26796
25869
|
if (this._isDirty) {
|
|
26797
|
-
const
|
|
26798
|
-
|
|
25870
|
+
const fs13 = __require("fs");
|
|
25871
|
+
fs13.writeFileSync(
|
|
26799
25872
|
this._userConfigPath,
|
|
26800
25873
|
JSON.stringify(this._config, null, 2),
|
|
26801
25874
|
"utf-8"
|
|
@@ -26806,13 +25879,13 @@ var init_ConfigService = __esm({
|
|
|
26806
25879
|
/**
|
|
26807
25880
|
* 変更リスナーの登録
|
|
26808
25881
|
*/
|
|
26809
|
-
onChange(
|
|
26810
|
-
if (!this._listeners.has(
|
|
26811
|
-
this._listeners.set(
|
|
25882
|
+
onChange(path14, listener) {
|
|
25883
|
+
if (!this._listeners.has(path14)) {
|
|
25884
|
+
this._listeners.set(path14, []);
|
|
26812
25885
|
}
|
|
26813
|
-
this._listeners.get(
|
|
25886
|
+
this._listeners.get(path14).push(listener);
|
|
26814
25887
|
return () => {
|
|
26815
|
-
const listeners = this._listeners.get(
|
|
25888
|
+
const listeners = this._listeners.get(path14);
|
|
26816
25889
|
if (listeners) {
|
|
26817
25890
|
const index = listeners.indexOf(listener);
|
|
26818
25891
|
if (index !== -1) {
|
|
@@ -26863,7 +25936,7 @@ var init_ConfigService = __esm({
|
|
|
26863
25936
|
*/
|
|
26864
25937
|
expandHome(filePath) {
|
|
26865
25938
|
if (filePath.startsWith("~/")) {
|
|
26866
|
-
return
|
|
25939
|
+
return path10__namespace.join(process.env.HOME || "", filePath.slice(2));
|
|
26867
25940
|
}
|
|
26868
25941
|
return filePath;
|
|
26869
25942
|
}
|
|
@@ -27301,7 +26374,7 @@ var init_ValidationService = __esm({
|
|
|
27301
26374
|
);
|
|
27302
26375
|
this._schemas.set(
|
|
27303
26376
|
"filePath",
|
|
27304
|
-
zod.z.string().min(1).max(this._config.maxFilePathLength).refine((
|
|
26377
|
+
zod.z.string().min(1).max(this._config.maxFilePathLength).refine((path14) => !this.containsPathTraversal(path14), {
|
|
27305
26378
|
message: "Path traversal detected"
|
|
27306
26379
|
})
|
|
27307
26380
|
);
|
|
@@ -27440,11 +26513,11 @@ var init_ValidationService = __esm({
|
|
|
27440
26513
|
/**
|
|
27441
26514
|
* ファイルパス検証
|
|
27442
26515
|
*/
|
|
27443
|
-
validateFilePath(
|
|
26516
|
+
validateFilePath(path14) {
|
|
27444
26517
|
try {
|
|
27445
26518
|
const schema = this._schemas.get("filePath");
|
|
27446
|
-
const result = schema.parse(
|
|
27447
|
-
if (this.isSystemPath(
|
|
26519
|
+
const result = schema.parse(path14);
|
|
26520
|
+
if (this.isSystemPath(path14)) {
|
|
27448
26521
|
return {
|
|
27449
26522
|
valid: false,
|
|
27450
26523
|
errors: [
|
|
@@ -27590,8 +26663,8 @@ var init_ValidationService = __esm({
|
|
|
27590
26663
|
/**
|
|
27591
26664
|
* パストラバーサルの検出
|
|
27592
26665
|
*/
|
|
27593
|
-
containsPathTraversal(
|
|
27594
|
-
return /\.\.[/\\]/.test(
|
|
26666
|
+
containsPathTraversal(path14) {
|
|
26667
|
+
return /\.\.[/\\]/.test(path14) || path14.includes("..\\") || path14.includes("../");
|
|
27595
26668
|
}
|
|
27596
26669
|
/**
|
|
27597
26670
|
* 危険なコマンドの判定
|
|
@@ -27618,7 +26691,7 @@ var init_ValidationService = __esm({
|
|
|
27618
26691
|
/**
|
|
27619
26692
|
* システムパスの判定
|
|
27620
26693
|
*/
|
|
27621
|
-
isSystemPath(
|
|
26694
|
+
isSystemPath(path14) {
|
|
27622
26695
|
const systemPaths = [
|
|
27623
26696
|
"/etc",
|
|
27624
26697
|
"/sys",
|
|
@@ -27632,7 +26705,7 @@ var init_ValidationService = __esm({
|
|
|
27632
26705
|
"/sbin"
|
|
27633
26706
|
];
|
|
27634
26707
|
return systemPaths.some(
|
|
27635
|
-
(sysPath) =>
|
|
26708
|
+
(sysPath) => path14.toLowerCase().startsWith(sysPath.toLowerCase())
|
|
27636
26709
|
);
|
|
27637
26710
|
}
|
|
27638
26711
|
/**
|
|
@@ -30321,13 +29394,13 @@ var init_CommandRegistry = __esm({
|
|
|
30321
29394
|
* @returns Array of unique categories
|
|
30322
29395
|
*/
|
|
30323
29396
|
getCategories() {
|
|
30324
|
-
const
|
|
29397
|
+
const categories2 = /* @__PURE__ */ new Set();
|
|
30325
29398
|
for (const registration of this.handlers.values()) {
|
|
30326
29399
|
if (registration.handler.category) {
|
|
30327
|
-
|
|
29400
|
+
categories2.add(registration.handler.category);
|
|
30328
29401
|
}
|
|
30329
29402
|
}
|
|
30330
|
-
return Array.from(
|
|
29403
|
+
return Array.from(categories2);
|
|
30331
29404
|
}
|
|
30332
29405
|
/**
|
|
30333
29406
|
* Get command help text
|
|
@@ -31200,14 +30273,14 @@ var init_CoreHandlers = __esm({
|
|
|
31200
30273
|
let message = chalk17__default.default.cyan(`\u{1F916} MARIA v3.5.0 - Available Commands
|
|
31201
30274
|
|
|
31202
30275
|
`);
|
|
31203
|
-
const
|
|
30276
|
+
const categories2 = {
|
|
31204
30277
|
core: ["/help", "/clear", "/exit", "/version", "/history"],
|
|
31205
30278
|
conversation: ["/chat", "/context", "/memory"],
|
|
31206
30279
|
development: ["/code", "/test", "/review", "/debug", "/deploy"],
|
|
31207
30280
|
business: ["/business", "/pilot", "/dashboard"],
|
|
31208
30281
|
system: ["/status", "/config", "/logs", "/approve"]
|
|
31209
30282
|
};
|
|
31210
|
-
for (const [category, cmds] of Object.entries(
|
|
30283
|
+
for (const [category, cmds] of Object.entries(categories2)) {
|
|
31211
30284
|
message += chalk17__default.default.yellow(`
|
|
31212
30285
|
${category.toUpperCase()}:
|
|
31213
30286
|
`);
|
|
@@ -31226,7 +30299,7 @@ Type '/help <command>' for detailed information about a specific command.`
|
|
|
31226
30299
|
return {
|
|
31227
30300
|
success: true,
|
|
31228
30301
|
message,
|
|
31229
|
-
data: { commands, categories },
|
|
30302
|
+
data: { commands, categories: categories2 },
|
|
31230
30303
|
metadata: {
|
|
31231
30304
|
processingTime,
|
|
31232
30305
|
timestamp: /* @__PURE__ */ new Date()
|
|
@@ -32368,15 +31441,15 @@ var init_SessionOrchestrator = __esm({
|
|
|
32368
31441
|
/**
|
|
32369
31442
|
* 設定の取得
|
|
32370
31443
|
*/
|
|
32371
|
-
getConfig(
|
|
32372
|
-
return this._configService?.getNestedValue(
|
|
31444
|
+
getConfig(path14) {
|
|
31445
|
+
return this._configService?.getNestedValue(path14);
|
|
32373
31446
|
}
|
|
32374
31447
|
/**
|
|
32375
31448
|
* 設定の更新
|
|
32376
31449
|
*/
|
|
32377
|
-
async setConfig(
|
|
31450
|
+
async setConfig(path14, value) {
|
|
32378
31451
|
if (this._configService) {
|
|
32379
|
-
await this._configService.setNestedValue(
|
|
31452
|
+
await this._configService.setNestedValue(path14, value);
|
|
32380
31453
|
}
|
|
32381
31454
|
}
|
|
32382
31455
|
/**
|
|
@@ -32494,11 +31567,11 @@ var init_interactive_session = __esm({
|
|
|
32494
31567
|
getStats() {
|
|
32495
31568
|
return this.orchestrator.getSessionStats();
|
|
32496
31569
|
}
|
|
32497
|
-
getConfig(
|
|
32498
|
-
return this.orchestrator.getConfig(
|
|
31570
|
+
getConfig(path14) {
|
|
31571
|
+
return this.orchestrator.getConfig(path14);
|
|
32499
31572
|
}
|
|
32500
|
-
async setConfig(
|
|
32501
|
-
await this.orchestrator.setConfig(
|
|
31573
|
+
async setConfig(path14, value) {
|
|
31574
|
+
await this.orchestrator.setConfig(path14, value);
|
|
32502
31575
|
}
|
|
32503
31576
|
};
|
|
32504
31577
|
}
|
|
@@ -32510,7 +31583,7 @@ var init_package = __esm({
|
|
|
32510
31583
|
"package.json"() {
|
|
32511
31584
|
package_default = {
|
|
32512
31585
|
name: "@bonginkan/maria",
|
|
32513
|
-
version: "4.2.
|
|
31586
|
+
version: "4.2.7",
|
|
32514
31587
|
description: "\u{1F680} MARIA v4.2.0 - Enterprise AI Development Platform with 100% Command Availability. Features 74 production-ready commands with comprehensive fallback implementation, local LLM support, and zero external dependencies. Includes natural language coding, AI safety evaluation, intelligent evolution system, episodic memory with PII masking, and real-time monitoring dashboard. Built with TypeScript AST-powered code generation, OAuth2.0 + PKCE authentication, quantum-resistant cryptography, and enterprise-grade performance.",
|
|
32515
31588
|
keywords: [
|
|
32516
31589
|
"ai",
|
|
@@ -32737,19 +31810,18 @@ var init_package = __esm({
|
|
|
32737
31810
|
node: ">=20.10.0"
|
|
32738
31811
|
},
|
|
32739
31812
|
scripts: {
|
|
32740
|
-
|
|
32741
|
-
"
|
|
32742
|
-
"
|
|
32743
|
-
|
|
32744
|
-
"
|
|
32745
|
-
"build:
|
|
32746
|
-
|
|
32747
|
-
|
|
31813
|
+
"ensure:manifest": "tsx scripts/generate-ready-manifest.ts",
|
|
31814
|
+
"copy:manifest": `node -e "const{copyFileSync,existsSync,mkdirSync}=require('fs');const{join,dirname}=require('path');const s=join(process.cwd(),'src/slash-commands/READY.manifest.json');const d=join(process.cwd(),'dist/READY.manifest.json');if(!existsSync(s)){console.error('\u274C READY.manifest.json not found. Run: pnpm generate:manifest');process.exit(1);}mkdirSync(dirname(d),{recursive:true});copyFileSync(s,d);console.log('\u2705 READY.manifest.json copied to dist/');"`,
|
|
31815
|
+
"verify:manifest": "tsx scripts/verify-manifest-inclusion.ts",
|
|
31816
|
+
build: "pnpm ensure:manifest && cross-env NODE_ENV=production tsup && pnpm copy:manifest && pnpm verify:manifest",
|
|
31817
|
+
"build:dev": "pnpm ensure:manifest && cross-env NODE_ENV=development tsup && pnpm copy:manifest && pnpm verify:manifest",
|
|
31818
|
+
"build:analyze": "pnpm ensure:manifest && cross-env ANALYZE=true NODE_ENV=production tsup && pnpm copy:manifest && pnpm verify:manifest",
|
|
31819
|
+
"build:fast": "cross-env NODE_ENV=production tsup --minify false --sourcemap false",
|
|
31820
|
+
dev: "cross-env NODE_ENV=development tsup --watch",
|
|
31821
|
+
clean: "rimraf dist",
|
|
32748
31822
|
"gen:cmd-types": "tsx scripts/gen/command-types.mts",
|
|
32749
|
-
prebuild: "pnpm run clean && pnpm gen:cmd-types && pnpm
|
|
32750
|
-
"ensure:manifest": "test -f src/slash-commands/READY.manifest.json || npm run generate:manifest",
|
|
31823
|
+
prebuild: "pnpm run clean && pnpm gen:cmd-types && pnpm ensure:manifest && pnpm vscode:sync",
|
|
32751
31824
|
"build:docker": "NODE_ENV=production tsup",
|
|
32752
|
-
postbuild: "chmod +x dist/cli.cjs dist/bin/maria.cjs 2>/dev/null || true",
|
|
32753
31825
|
test: "vitest",
|
|
32754
31826
|
"test:coverage": "vitest --coverage",
|
|
32755
31827
|
"test:smoke": "vitest run src/__tests__/smoke.test.ts",
|
|
@@ -32760,7 +31832,7 @@ var init_package = __esm({
|
|
|
32760
31832
|
"test:integration:ci": "vitest run --config vitest.integration.config.ts --reporter=json --reporter=verbose",
|
|
32761
31833
|
"test:contract": "vitest run tests/contract/**/*.test.ts",
|
|
32762
31834
|
"test:deps": "cross-env MOCK_DEPS=true vitest run tests/contract/**/*.test.ts",
|
|
32763
|
-
"generate:manifest": "tsx scripts/generate-ready-manifest.ts",
|
|
31835
|
+
"generate:manifest": "tsx scripts/generate-ready-manifest.ts && tsx scripts/generate-enhanced-manifest.ts",
|
|
32764
31836
|
"health:report": "tsx scripts/command-health-report.ts",
|
|
32765
31837
|
"ims:deploy": "tsx scripts/deploy-ims-config.ts",
|
|
32766
31838
|
"ims:secrets": "tsx scripts/setup-ims-secrets.ts",
|
|
@@ -32768,19 +31840,19 @@ var init_package = __esm({
|
|
|
32768
31840
|
"ims:dashboard": "tsx scripts/ims-dashboard.ts",
|
|
32769
31841
|
"ci:smoke": "pnpm -s build && pnpm -s test:smoke",
|
|
32770
31842
|
"verify:build": "tsx scripts/verify-manifest-inclusion.ts",
|
|
32771
|
-
lint:
|
|
32772
|
-
"lint:errors-only":
|
|
32773
|
-
"lint:ci":
|
|
32774
|
-
"lint:fix":
|
|
32775
|
-
"lint:fix:errors":
|
|
31843
|
+
lint: 'eslint --cache "src/**/*.{ts,tsx}"',
|
|
31844
|
+
"lint:errors-only": 'eslint --cache --quiet "src/**/*.{ts,tsx}"',
|
|
31845
|
+
"lint:ci": 'eslint --cache --max-warnings=0 "src/**/*.{ts,tsx}"',
|
|
31846
|
+
"lint:fix": 'eslint --cache --fix "src/**/*.{ts,tsx}"',
|
|
31847
|
+
"lint:fix:errors": 'eslint --cache --quiet --fix "src/**/*.{ts,tsx}"',
|
|
32776
31848
|
"lint:report": "eslint src --ext .ts,.tsx --format json > lint-report.json",
|
|
32777
|
-
"lint:summary":
|
|
31849
|
+
"lint:summary": 'eslint --cache --format codeframe "src/**/*.{ts,tsx}"',
|
|
32778
31850
|
"lint:strict": "eslint src --ext .ts,.tsx --max-warnings 0",
|
|
32779
|
-
"type-check": "
|
|
32780
|
-
"type-check:syntax": "
|
|
31851
|
+
"type-check": "tsc -p tsconfig.json --noEmit",
|
|
31852
|
+
"type-check:syntax": "tsc -p tsconfig.json --noEmit",
|
|
32781
31853
|
"type-check:full": "tsc --noEmit",
|
|
32782
31854
|
precommit: "lint-staged",
|
|
32783
|
-
"quality-gate":
|
|
31855
|
+
"quality-gate": `pnpm lint:errors-only && pnpm type-check:syntax && node -e "console.log('\u2705 Quality gates passed')"`,
|
|
32784
31856
|
"quality-gate:ci": "pnpm lint:errors-only && pnpm type-check:syntax",
|
|
32785
31857
|
"quality-check": "bash scripts/check-quality-gates.sh",
|
|
32786
31858
|
"ready:baseline": "tsx scripts/check-ready-baseline.ts",
|
|
@@ -32826,6 +31898,7 @@ var init_package = __esm({
|
|
|
32826
31898
|
"release:alpha": "pnpm publish --tag alpha",
|
|
32827
31899
|
"release:beta": "pnpm publish --tag beta",
|
|
32828
31900
|
"version:sync": "node scripts/sync-versions.js",
|
|
31901
|
+
"vscode:sync": "tsx scripts/sync-vscode-version.ts",
|
|
32829
31902
|
"test:arch": "depcruise --config .dependency-cruiser.cjs 'src/**/*.ts?(x)'",
|
|
32830
31903
|
"check:public-api": 'grep -REn "export (\\*|\\{|default)" src | grep -v "^src/index.ts:" || true',
|
|
32831
31904
|
"check:deps": 'depcruise --config .dependency-cruiser.cjs "src/**/*.ts?(x)"',
|
|
@@ -32886,6 +31959,7 @@ var init_package = __esm({
|
|
|
32886
31959
|
"express-validator": "^7.2.1",
|
|
32887
31960
|
figlet: "^1.7.0",
|
|
32888
31961
|
"file-type": "^21.0.0",
|
|
31962
|
+
"firebase-admin": "^13.5.0",
|
|
32889
31963
|
"fs-extra": "^11.2.0",
|
|
32890
31964
|
"fuse.js": "^7.1.0",
|
|
32891
31965
|
globby: "^14.1.0",
|
|
@@ -32951,6 +32025,7 @@ var init_package = __esm({
|
|
|
32951
32025
|
"cli-highlight": "^2.1.11",
|
|
32952
32026
|
compression: "^1.8.1",
|
|
32953
32027
|
cors: "^2.8.5",
|
|
32028
|
+
"cross-env": "^10.0.0",
|
|
32954
32029
|
"dependency-cruiser": "^16.10.4",
|
|
32955
32030
|
eslint: "^8.56.0",
|
|
32956
32031
|
"eslint-config-prettier": "^9.1.0",
|
|
@@ -32969,6 +32044,7 @@ var init_package = __esm({
|
|
|
32969
32044
|
prettier: "^3.2.4",
|
|
32970
32045
|
"react-devtools-core": "^6.1.5",
|
|
32971
32046
|
recast: "^0.23.11",
|
|
32047
|
+
rimraf: "^6.0.1",
|
|
32972
32048
|
"rollup-plugin-visualizer": "^6.0.3",
|
|
32973
32049
|
sqlite: "^5.1.1",
|
|
32974
32050
|
sqlite3: "^5.1.7",
|
|
@@ -33480,9 +32556,9 @@ Chat:
|
|
|
33480
32556
|
}
|
|
33481
32557
|
if (cmd === "login" || cmd === "signin" || cmd === "auth") {
|
|
33482
32558
|
try {
|
|
33483
|
-
const { LoginCommand
|
|
33484
|
-
if (
|
|
33485
|
-
const loginCmd = new
|
|
32559
|
+
const { LoginCommand } = await import('./slash-commands/categories/auth/LoginCommand.js').catch(() => ({}));
|
|
32560
|
+
if (LoginCommand) {
|
|
32561
|
+
const loginCmd = new LoginCommand();
|
|
33486
32562
|
const result = await loginCmd.execute();
|
|
33487
32563
|
return true;
|
|
33488
32564
|
} else {
|
|
@@ -33892,7 +32968,7 @@ async function handleCodeCommand(prompt) {
|
|
|
33892
32968
|
console.log(response2);
|
|
33893
32969
|
const { language, code, extension } = extractCodeInfo(response2);
|
|
33894
32970
|
const filename = generateCodeFilename(prompt, language, extension);
|
|
33895
|
-
const filepath =
|
|
32971
|
+
const filepath = path10__namespace.resolve(process.cwd(), filename);
|
|
33896
32972
|
await fsp__namespace.writeFile(filepath, code, "utf-8");
|
|
33897
32973
|
console.log(
|
|
33898
32974
|
chalk17__default.default.green("\n\u2705 **Code Saved**\n") + chalk17__default.default.white(`\u{1F4C1} **File (Click to open):**
|
|
@@ -33918,7 +32994,7 @@ async function handleCodeCommand(prompt) {
|
|
|
33918
32994
|
try {
|
|
33919
32995
|
const { language, code, extension } = extractCodeInfo(fallbackCode);
|
|
33920
32996
|
const filename = generateCodeFilename(prompt, language, extension);
|
|
33921
|
-
const filepath =
|
|
32997
|
+
const filepath = path10__namespace.resolve(process.cwd(), filename);
|
|
33922
32998
|
await fsp__namespace.writeFile(filepath, code, "utf-8");
|
|
33923
32999
|
console.log(
|
|
33924
33000
|
chalk17__default.default.green("\n\u2705 **Template Code Saved**\n") + chalk17__default.default.white(`\u{1F4C1} **File (Click to open):**
|
|
@@ -34271,7 +33347,7 @@ function createCLI2() {
|
|
|
34271
33347
|
if (options.server) {
|
|
34272
33348
|
console.log(chalk17__default.default.green("\u{1F680} Starting MARIA server mode..."));
|
|
34273
33349
|
try {
|
|
34274
|
-
const serverPath =
|
|
33350
|
+
const serverPath = path10__namespace.join(process.cwd(), "server.mjs");
|
|
34275
33351
|
const { spawn } = await import('child_process');
|
|
34276
33352
|
const serverProcess = spawn("node", [serverPath], {
|
|
34277
33353
|
stdio: "inherit",
|