atabey-mcp 0.0.19 → 0.0.21

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.
Files changed (70) hide show
  1. package/README.md +2 -2
  2. package/dist/atabey/src/cli/platforms/core.d.ts +4 -0
  3. package/dist/atabey/src/cli/platforms/core.js +12 -8
  4. package/dist/atabey/src/cli/platforms/core.js.map +1 -1
  5. package/dist/atabey/src/cli/platforms/index.d.ts +1 -1
  6. package/dist/atabey/src/cli/platforms/index.js +1 -1
  7. package/dist/atabey/src/cli/platforms/index.js.map +1 -1
  8. package/dist/atabey/src/cli/utils/memory.d.ts +13 -7
  9. package/dist/atabey/src/cli/utils/memory.js +48 -16
  10. package/dist/atabey/src/cli/utils/memory.js.map +1 -1
  11. package/dist/atabey/src/modules/engines/agent-loop.d.ts +34 -0
  12. package/dist/atabey/src/modules/engines/agent-loop.js +102 -0
  13. package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -0
  14. package/dist/atabey-mcp/src/mcp/constants.d.ts +3 -45
  15. package/dist/atabey-mcp/src/mcp/constants.js +3 -62
  16. package/dist/atabey-mcp/src/mcp/constants.js.map +1 -1
  17. package/dist/atabey-mcp/src/mcp/index.js +19 -35
  18. package/dist/atabey-mcp/src/mcp/index.js.map +1 -1
  19. package/dist/atabey-mcp/src/mcp/routes/api-agents.d.ts +3 -0
  20. package/dist/atabey-mcp/src/mcp/routes/api-agents.js +97 -0
  21. package/dist/atabey-mcp/src/mcp/routes/api-agents.js.map +1 -0
  22. package/dist/atabey-mcp/src/mcp/routes/api-common.d.ts +3 -0
  23. package/dist/atabey-mcp/src/mcp/routes/api-common.js +63 -0
  24. package/dist/atabey-mcp/src/mcp/routes/api-common.js.map +1 -0
  25. package/dist/atabey-mcp/src/mcp/routes/api-config.d.ts +3 -0
  26. package/dist/atabey-mcp/src/mcp/routes/api-config.js +639 -0
  27. package/dist/atabey-mcp/src/mcp/routes/api-config.js.map +1 -0
  28. package/dist/atabey-mcp/src/mcp/routes/api-governance.d.ts +3 -0
  29. package/dist/atabey-mcp/src/mcp/routes/api-governance.js +271 -0
  30. package/dist/atabey-mcp/src/mcp/routes/api-governance.js.map +1 -0
  31. package/dist/atabey-mcp/src/mcp/routes/api-orchestrator.d.ts +3 -0
  32. package/dist/atabey-mcp/src/mcp/routes/api-orchestrator.js +145 -0
  33. package/dist/atabey-mcp/src/mcp/routes/api-orchestrator.js.map +1 -0
  34. package/dist/atabey-mcp/src/mcp/routes/api-workspace.d.ts +3 -0
  35. package/dist/atabey-mcp/src/mcp/routes/api-workspace.js +274 -0
  36. package/dist/atabey-mcp/src/mcp/routes/api-workspace.js.map +1 -0
  37. package/dist/atabey-mcp/src/mcp/routes/index.d.ts +2 -0
  38. package/dist/atabey-mcp/src/mcp/routes/index.js +18 -1436
  39. package/dist/atabey-mcp/src/mcp/routes/index.js.map +1 -1
  40. package/dist/atabey-mcp/src/mcp/routes/types.d.ts +18 -0
  41. package/dist/atabey-mcp/src/mcp/routes/types.js +23 -0
  42. package/dist/atabey-mcp/src/mcp/routes/types.js.map +1 -0
  43. package/dist/atabey-mcp/src/mcp/tools/framework/orchestrate.d.ts +1 -1
  44. package/dist/atabey-mcp/src/mcp/tools/framework/orchestrate.js +11 -4
  45. package/dist/atabey-mcp/src/mcp/tools/framework/orchestrate.js.map +1 -1
  46. package/dist/atabey-mcp/src/mcp/utils/client-config.js +1 -1
  47. package/dist/atabey-mcp/src/mcp/utils/client-config.js.map +1 -1
  48. package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.d.ts +8 -0
  49. package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js +46 -0
  50. package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js.map +1 -0
  51. package/dist/atabey-mcp/src/mcp/utils/consent.d.ts +25 -0
  52. package/dist/atabey-mcp/src/mcp/utils/consent.js +60 -0
  53. package/dist/atabey-mcp/src/mcp/utils/consent.js.map +1 -0
  54. package/dist/atabey-mcp/src/mcp/utils/finops.d.ts +7 -11
  55. package/dist/atabey-mcp/src/mcp/utils/finops.js +24 -26
  56. package/dist/atabey-mcp/src/mcp/utils/finops.js.map +1 -1
  57. package/dist/atabey-mcp/src/mcp/utils/framework-config.d.ts +27 -0
  58. package/dist/atabey-mcp/src/mcp/utils/framework-config.js +81 -0
  59. package/dist/atabey-mcp/src/mcp/utils/framework-config.js.map +1 -0
  60. package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.d.ts +14 -0
  61. package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js +98 -0
  62. package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js.map +1 -0
  63. package/dist/atabey-mcp/src/mcp/utils/web-config.js +17 -35
  64. package/dist/atabey-mcp/src/mcp/utils/web-config.js.map +1 -1
  65. package/dist/dashboard/assets/{index-DHuA2rua.js → index-BUUxi_j8.js} +75 -75
  66. package/dist/dashboard/index.html +1 -1
  67. package/dist/shared/src/constants.d.ts +30 -1
  68. package/dist/shared/src/constants.js +25 -2
  69. package/dist/shared/src/constants.js.map +1 -1
  70. package/package.json +13 -2
@@ -0,0 +1,27 @@
1
+ export interface FinOpsConfigSection {
2
+ tracking?: boolean;
3
+ enforcement?: boolean;
4
+ monthlyBudgetUsd?: number;
5
+ agentMaxBudgetUsd?: number;
6
+ team?: string;
7
+ alertThresholds?: number[];
8
+ costPer1kTokensUsd?: number;
9
+ }
10
+ export interface ComplianceConfigSection {
11
+ retentionEnabled?: boolean;
12
+ consentLogging?: boolean;
13
+ piiMasking?: boolean;
14
+ dataProcessingBasis?: "consent" | "legitimate_interest" | "contract";
15
+ }
16
+ export interface FrameworkConfig {
17
+ profile?: string;
18
+ orchestrator?: {
19
+ autoStart?: boolean;
20
+ intervalMs?: number;
21
+ };
22
+ finops?: FinOpsConfigSection;
23
+ compliance?: ComplianceConfigSection;
24
+ }
25
+ export declare function loadFrameworkConfig(projectRoot: string): FrameworkConfig;
26
+ export declare function resolveFinOpsConfig(projectRoot: string): Required<FinOpsConfigSection>;
27
+ export declare function resolveComplianceConfig(projectRoot: string): Required<ComplianceConfigSection>;
@@ -0,0 +1,81 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ const PROFILE_FINOPS_DEFAULTS = {
4
+ freelancer: {
5
+ tracking: true,
6
+ enforcement: false,
7
+ monthlyBudgetUsd: 0,
8
+ agentMaxBudgetUsd: 0,
9
+ },
10
+ team: {
11
+ tracking: true,
12
+ enforcement: false,
13
+ monthlyBudgetUsd: 0,
14
+ agentMaxBudgetUsd: 25,
15
+ },
16
+ enterprise: {
17
+ tracking: true,
18
+ enforcement: true,
19
+ monthlyBudgetUsd: 500,
20
+ agentMaxBudgetUsd: 50,
21
+ },
22
+ };
23
+ const PROFILE_COMPLIANCE_DEFAULTS = {
24
+ freelancer: {
25
+ retentionEnabled: true,
26
+ consentLogging: true,
27
+ piiMasking: true,
28
+ dataProcessingBasis: "legitimate_interest",
29
+ },
30
+ team: {
31
+ retentionEnabled: true,
32
+ consentLogging: true,
33
+ piiMasking: true,
34
+ dataProcessingBasis: "contract",
35
+ },
36
+ enterprise: {
37
+ retentionEnabled: true,
38
+ consentLogging: true,
39
+ piiMasking: true,
40
+ dataProcessingBasis: "consent",
41
+ },
42
+ };
43
+ export function loadFrameworkConfig(projectRoot) {
44
+ const configPath = path.join(projectRoot, ".atabey", "config.json");
45
+ if (!fs.existsSync(configPath))
46
+ return {};
47
+ try {
48
+ return JSON.parse(fs.readFileSync(configPath, "utf8"));
49
+ }
50
+ catch {
51
+ return {};
52
+ }
53
+ }
54
+ export function resolveFinOpsConfig(projectRoot) {
55
+ const raw = loadFrameworkConfig(projectRoot);
56
+ const profile = raw.profile || "freelancer";
57
+ const profileDefaults = PROFILE_FINOPS_DEFAULTS[profile] || PROFILE_FINOPS_DEFAULTS.freelancer;
58
+ const section = raw.finops || {};
59
+ return {
60
+ tracking: section.tracking ?? profileDefaults.tracking ?? true,
61
+ enforcement: section.enforcement ?? profileDefaults.enforcement ?? false,
62
+ monthlyBudgetUsd: section.monthlyBudgetUsd ?? profileDefaults.monthlyBudgetUsd ?? 0,
63
+ agentMaxBudgetUsd: section.agentMaxBudgetUsd ?? profileDefaults.agentMaxBudgetUsd ?? 0,
64
+ team: section.team ?? (process.env.ATABEY_BUDGET_TEAM || "default"),
65
+ alertThresholds: section.alertThresholds ?? [50, 80, 90, 100],
66
+ costPer1kTokensUsd: section.costPer1kTokensUsd ?? 0.003,
67
+ };
68
+ }
69
+ export function resolveComplianceConfig(projectRoot) {
70
+ const raw = loadFrameworkConfig(projectRoot);
71
+ const profile = raw.profile || "freelancer";
72
+ const profileDefaults = PROFILE_COMPLIANCE_DEFAULTS[profile] || PROFILE_COMPLIANCE_DEFAULTS.freelancer;
73
+ const section = raw.compliance || {};
74
+ return {
75
+ retentionEnabled: section.retentionEnabled ?? profileDefaults.retentionEnabled ?? true,
76
+ consentLogging: section.consentLogging ?? profileDefaults.consentLogging ?? true,
77
+ piiMasking: section.piiMasking ?? profileDefaults.piiMasking ?? true,
78
+ dataProcessingBasis: section.dataProcessingBasis ?? profileDefaults.dataProcessingBasis ?? "legitimate_interest",
79
+ };
80
+ }
81
+ //# sourceMappingURL=framework-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-config.js","sourceRoot":"","sources":["../../../../../src/mcp/utils/framework-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function isOrchestratorActive(): boolean;
2
+ export declare function shouldAutoStartOrchestrator(projectRoot: string): boolean;
3
+ export declare function getOrchestratorIntervalMs(projectRoot: string): number;
4
+ /**
5
+ * Start the headless Hermes orchestrator (AgentLoop + timeout recovery).
6
+ * Safe to call multiple times — no-ops if already running.
7
+ */
8
+ export declare function bootstrapOrchestrator(projectRoot: string, options?: {
9
+ force?: boolean;
10
+ }): Promise<{
11
+ started: boolean;
12
+ message: string;
13
+ }>;
14
+ export declare function shutdownOrchestrator(): Promise<void>;
@@ -0,0 +1,98 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { ORCHESTRATOR } from "atabey-shared/constants.js";
4
+ let timeoutHandle = null;
5
+ let orchestratorActive = false;
6
+ export function isOrchestratorActive() {
7
+ return orchestratorActive;
8
+ }
9
+ function readConfig(projectRoot) {
10
+ const configPath = path.join(projectRoot, ".atabey", "config.json");
11
+ if (!fs.existsSync(configPath))
12
+ return null;
13
+ try {
14
+ return JSON.parse(fs.readFileSync(configPath, "utf8"));
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ export function shouldAutoStartOrchestrator(projectRoot) {
21
+ const envVal = process.env[ORCHESTRATOR.AUTO_START_ENV];
22
+ if (envVal !== undefined) {
23
+ return envVal !== "false" && envVal !== "0";
24
+ }
25
+ const config = readConfig(projectRoot);
26
+ if (config?.orchestrator?.autoStart === false)
27
+ return false;
28
+ return ORCHESTRATOR.DEFAULT_AUTO_START;
29
+ }
30
+ export function getOrchestratorIntervalMs(projectRoot) {
31
+ const envVal = process.env[ORCHESTRATOR.INTERVAL_MS_ENV];
32
+ if (envVal) {
33
+ const parsed = parseInt(envVal, 10);
34
+ if (!isNaN(parsed) && parsed > 0)
35
+ return parsed;
36
+ }
37
+ const config = readConfig(projectRoot);
38
+ if (config?.orchestrator?.intervalMs && config.orchestrator.intervalMs > 0) {
39
+ return config.orchestrator.intervalMs;
40
+ }
41
+ return ORCHESTRATOR.DEFAULT_INTERVAL_MS;
42
+ }
43
+ function resolveActiveAgents(projectRoot) {
44
+ const config = readConfig(projectRoot);
45
+ if (!config?.agents?.length)
46
+ return [];
47
+ return config.agents.map((a) => (a.startsWith("@") ? a : `@${a}`));
48
+ }
49
+ /**
50
+ * Start the headless Hermes orchestrator (AgentLoop + timeout recovery).
51
+ * Safe to call multiple times — no-ops if already running.
52
+ */
53
+ export async function bootstrapOrchestrator(projectRoot, options) {
54
+ if (!options?.force && !shouldAutoStartOrchestrator(projectRoot)) {
55
+ return { started: false, message: "Orchestrator auto-start disabled." };
56
+ }
57
+ process.env.ATABEY_PROJECT_ROOT = projectRoot;
58
+ const { AgentLoop } = await import("atabey/src/modules/engines/agent-loop.js");
59
+ if (AgentLoop.isRunning() || orchestratorActive) {
60
+ orchestratorActive = true;
61
+ return { started: true, message: "Orchestrator already running." };
62
+ }
63
+ const intervalMs = getOrchestratorIntervalMs(projectRoot);
64
+ const activeAgents = resolveActiveAgents(projectRoot);
65
+ AgentLoop.start(activeAgents, intervalMs);
66
+ if (!timeoutHandle) {
67
+ const { Storage } = await import("atabey/src/shared/storage.js");
68
+ timeoutHandle = setInterval(() => {
69
+ try {
70
+ const agents = Storage.getAllAgents();
71
+ for (const agent of agents) {
72
+ if (agent.state === "EXECUTING" && agent.last_updated) {
73
+ const lastUpdatedTime = Date.parse(agent.last_updated);
74
+ if (!isNaN(lastUpdatedTime) && Date.now() - lastUpdatedTime > 30 * 60 * 1000) {
75
+ Storage.updateAgentStatus(agent.name, "READY", "Idle (Recovered from Timeout)");
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch {
81
+ /* ignore recovery errors */
82
+ }
83
+ }, 60_000);
84
+ }
85
+ orchestratorActive = true;
86
+ process.stderr.write(`[atabey-mcp] Orchestrator auto-started (AgentLoop, ${intervalMs}ms)\n`);
87
+ return { started: true, message: "Orchestrator auto-started." };
88
+ }
89
+ export async function shutdownOrchestrator() {
90
+ const { AgentLoop } = await import("atabey/src/modules/engines/agent-loop.js");
91
+ AgentLoop.stop();
92
+ orchestratorActive = false;
93
+ if (timeoutHandle) {
94
+ clearInterval(timeoutHandle);
95
+ timeoutHandle = null;
96
+ }
97
+ }
98
+ //# sourceMappingURL=orchestrator-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-bootstrap.js","sourceRoot":"","sources":["../../../../../src/mcp/utils/orchestrator-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
3
  import { getFrameworkDir } from "atabey/src/cli/utils/memory.js";
4
+ import { bootstrapOrchestrator, isOrchestratorActive, shutdownOrchestrator, } from "./orchestrator-bootstrap.js";
4
5
  let cachedConfig = null;
5
- let isOrchestratorRunning = false;
6
- let activeOrchestratorAbortController = null;
7
6
  function getConfigPath() {
8
7
  const dir = getFrameworkDir();
9
8
  if (!fs.existsSync(dir)) {
@@ -28,7 +27,6 @@ export function loadWebConfig() {
28
27
  // fallback
29
28
  }
30
29
  }
31
- // Default config uses the parent folder as fallback project path
32
30
  cachedConfig = {
33
31
  projectPath: path.resolve(getFrameworkDir(), "../"),
34
32
  activeProvider: "gemini",
@@ -41,7 +39,6 @@ export function loadWebConfig() {
41
39
  export function saveWebConfig(config) {
42
40
  const current = loadWebConfig();
43
41
  const updated = { ...current, ...config };
44
- // Apply API keys to process.env so existing code modules can read them
45
42
  if (updated.geminiApiKey)
46
43
  process.env.GEMINI_API_KEY = updated.geminiApiKey;
47
44
  if (updated.anthropicApiKey)
@@ -58,50 +55,35 @@ export function saveWebConfig(config) {
58
55
  * Orchestrator active state helpers
59
56
  */
60
57
  export function getOrchestratorState() {
58
+ const config = loadWebConfig();
61
59
  return {
62
- running: isOrchestratorRunning,
63
- projectPath: loadWebConfig().projectPath,
64
- activeProvider: loadWebConfig().activeProvider
60
+ running: isOrchestratorActive(),
61
+ projectPath: config.projectPath,
62
+ activeProvider: config.activeProvider,
65
63
  };
66
64
  }
67
65
  export function startOrchestratorLoop() {
68
- if (isOrchestratorRunning) {
69
- return { success: false, message: "Orchestrator is already running." };
70
- }
71
66
  const config = loadWebConfig();
72
67
  if (!fs.existsSync(config.projectPath)) {
73
68
  return { success: false, message: `Project path does not exist: ${config.projectPath}` };
74
69
  }
75
- isOrchestratorRunning = true;
76
- activeOrchestratorAbortController = new AbortController();
77
- // Trigger orchestration loop asynchronously
78
- import("atabey/src/cli/commands/orchestrate.js").then(async ({ orchestrateCommand }) => {
79
- try {
80
- // Pass target path and abort signal
81
- process.env.ATABEY_TEST_DIR = config.projectPath;
82
- // Run loop
83
- await orchestrateCommand({ signal: activeOrchestratorAbortController?.signal });
84
- }
85
- catch (e) {
86
- process.stderr.write(`Orchestrator Loop Error: ${e.message}\n`);
70
+ bootstrapOrchestrator(config.projectPath, { force: true })
71
+ .then((result) => {
72
+ if (!result.started) {
73
+ process.stderr.write(`[atabey-mcp] Orchestrator start skipped: ${result.message}\n`);
87
74
  }
88
- finally {
89
- isOrchestratorRunning = false;
90
- }
91
- }).catch(e => {
92
- isOrchestratorRunning = false;
93
- process.stderr.write(`Failed to load orchestrate command: ${e.message}\n`);
75
+ })
76
+ .catch((e) => {
77
+ process.stderr.write(`Orchestrator Loop Error: ${e.message}\n`);
94
78
  });
95
79
  return { success: true, message: "Orchestrator started successfully." };
96
80
  }
97
81
  export function stopOrchestratorLoop() {
98
- if (!isOrchestratorRunning) {
99
- return { success: false, message: "Orchestrator is not running." };
100
- }
101
- if (activeOrchestratorAbortController) {
102
- activeOrchestratorAbortController.abort();
103
- }
104
- isOrchestratorRunning = false;
82
+ shutdownOrchestrator()
83
+ .then(() => undefined)
84
+ .catch((e) => {
85
+ process.stderr.write(`Orchestrator stop error: ${e.message}\n`);
86
+ });
105
87
  return { success: true, message: "Orchestrator stopped." };
106
88
  }
107
89
  //# sourceMappingURL=web-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-config.js","sourceRoot":"","sources":["../../../../../src/mcp/utils/web-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-config.js","sourceRoot":"","sources":["../../../../../src/mcp/utils/web-config.ts"],"names":[],"mappings":"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"}