@jungjaehoon/mama-os 0.1.1
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/CHANGELOG.md +67 -0
- package/README.md +643 -0
- package/dist/agent/agent-loop.d.ts +98 -0
- package/dist/agent/agent-loop.d.ts.map +1 -0
- package/dist/agent/agent-loop.js +417 -0
- package/dist/agent/agent-loop.js.map +1 -0
- package/dist/agent/auto-recall.d.ts +48 -0
- package/dist/agent/auto-recall.d.ts.map +1 -0
- package/dist/agent/auto-recall.js +178 -0
- package/dist/agent/auto-recall.js.map +1 -0
- package/dist/agent/claude-cli-wrapper.d.ts +130 -0
- package/dist/agent/claude-cli-wrapper.d.ts.map +1 -0
- package/dist/agent/claude-cli-wrapper.js +227 -0
- package/dist/agent/claude-cli-wrapper.js.map +1 -0
- package/dist/agent/claude-client.d.ts +50 -0
- package/dist/agent/claude-client.d.ts.map +1 -0
- package/dist/agent/claude-client.js +214 -0
- package/dist/agent/claude-client.js.map +1 -0
- package/dist/agent/gateway-tool-executor.d.ts +75 -0
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -0
- package/dist/agent/gateway-tool-executor.js +348 -0
- package/dist/agent/gateway-tool-executor.js.map +1 -0
- package/dist/agent/index.d.ts +13 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +18 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/mcp-executor.d.ts +75 -0
- package/dist/agent/mcp-executor.d.ts.map +1 -0
- package/dist/agent/mcp-executor.js +307 -0
- package/dist/agent/mcp-executor.js.map +1 -0
- package/dist/agent/session-pool.d.ts +148 -0
- package/dist/agent/session-pool.d.ts.map +1 -0
- package/dist/agent/session-pool.js +272 -0
- package/dist/agent/session-pool.js.map +1 -0
- package/dist/agent/streaming-callback-manager.d.ts +85 -0
- package/dist/agent/streaming-callback-manager.d.ts.map +1 -0
- package/dist/agent/streaming-callback-manager.js +103 -0
- package/dist/agent/streaming-callback-manager.js.map +1 -0
- package/dist/agent/types.d.ts +437 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +29 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/api/cron-handler.d.ts +44 -0
- package/dist/api/cron-handler.d.ts.map +1 -0
- package/dist/api/cron-handler.js +195 -0
- package/dist/api/cron-handler.js.map +1 -0
- package/dist/api/error-handler.d.ts +22 -0
- package/dist/api/error-handler.d.ts.map +1 -0
- package/dist/api/error-handler.js +104 -0
- package/dist/api/error-handler.js.map +1 -0
- package/dist/api/heartbeat-handler.d.ts +49 -0
- package/dist/api/heartbeat-handler.d.ts.map +1 -0
- package/dist/api/heartbeat-handler.js +91 -0
- package/dist/api/heartbeat-handler.js.map +1 -0
- package/dist/api/index.d.ts +61 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +145 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types.d.ts +156 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +62 -0
- package/dist/api/types.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +11 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth-manager.d.ts +59 -0
- package/dist/auth/oauth-manager.d.ts.map +1 -0
- package/dist/auth/oauth-manager.js +237 -0
- package/dist/auth/oauth-manager.js.map +1 -0
- package/dist/auth/types.d.ts +92 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +23 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +155 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +89 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +19 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +134 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts +24 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +1073 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +85 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +10 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +65 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/config/config-manager.d.ts +51 -0
- package/dist/cli/config/config-manager.d.ts.map +1 -0
- package/dist/cli/config/config-manager.js +216 -0
- package/dist/cli/config/config-manager.js.map +1 -0
- package/dist/cli/config/types.d.ts +172 -0
- package/dist/cli/config/types.d.ts.map +1 -0
- package/dist/cli/config/types.js +48 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +92 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/pid-manager.d.ts +66 -0
- package/dist/cli/utils/pid-manager.d.ts.map +1 -0
- package/dist/cli/utils/pid-manager.js +167 -0
- package/dist/cli/utils/pid-manager.js.map +1 -0
- package/dist/concurrency/index.d.ts +13 -0
- package/dist/concurrency/index.d.ts.map +1 -0
- package/dist/concurrency/index.js +22 -0
- package/dist/concurrency/index.js.map +1 -0
- package/dist/concurrency/lane-manager.d.ts +113 -0
- package/dist/concurrency/lane-manager.d.ts.map +1 -0
- package/dist/concurrency/lane-manager.js +245 -0
- package/dist/concurrency/lane-manager.js.map +1 -0
- package/dist/concurrency/session-key.d.ts +41 -0
- package/dist/concurrency/session-key.d.ts.map +1 -0
- package/dist/concurrency/session-key.js +61 -0
- package/dist/concurrency/session-key.js.map +1 -0
- package/dist/concurrency/types.d.ts +69 -0
- package/dist/concurrency/types.d.ts.map +1 -0
- package/dist/concurrency/types.js +16 -0
- package/dist/concurrency/types.js.map +1 -0
- package/dist/gateways/channel-history.d.ts +102 -0
- package/dist/gateways/channel-history.d.ts.map +1 -0
- package/dist/gateways/channel-history.js +181 -0
- package/dist/gateways/channel-history.js.map +1 -0
- package/dist/gateways/context-injector.d.ts +74 -0
- package/dist/gateways/context-injector.d.ts.map +1 -0
- package/dist/gateways/context-injector.js +121 -0
- package/dist/gateways/context-injector.js.map +1 -0
- package/dist/gateways/discord.d.ts +122 -0
- package/dist/gateways/discord.d.ts.map +1 -0
- package/dist/gateways/discord.js +602 -0
- package/dist/gateways/discord.js.map +1 -0
- package/dist/gateways/index.d.ts +30 -0
- package/dist/gateways/index.d.ts.map +1 -0
- package/dist/gateways/index.js +49 -0
- package/dist/gateways/index.js.map +1 -0
- package/dist/gateways/message-router.d.ts +116 -0
- package/dist/gateways/message-router.d.ts.map +1 -0
- package/dist/gateways/message-router.js +315 -0
- package/dist/gateways/message-router.js.map +1 -0
- package/dist/gateways/message-splitter.d.ts +54 -0
- package/dist/gateways/message-splitter.d.ts.map +1 -0
- package/dist/gateways/message-splitter.js +146 -0
- package/dist/gateways/message-splitter.js.map +1 -0
- package/dist/gateways/plugin-loader.d.ts +76 -0
- package/dist/gateways/plugin-loader.d.ts.map +1 -0
- package/dist/gateways/plugin-loader.js +221 -0
- package/dist/gateways/plugin-loader.js.map +1 -0
- package/dist/gateways/session-store.d.ts +77 -0
- package/dist/gateways/session-store.d.ts.map +1 -0
- package/dist/gateways/session-store.js +233 -0
- package/dist/gateways/session-store.js.map +1 -0
- package/dist/gateways/slack.d.ts +90 -0
- package/dist/gateways/slack.d.ts.map +1 -0
- package/dist/gateways/slack.js +281 -0
- package/dist/gateways/slack.js.map +1 -0
- package/dist/gateways/telegram.d.ts +79 -0
- package/dist/gateways/telegram.d.ts.map +1 -0
- package/dist/gateways/telegram.js +207 -0
- package/dist/gateways/telegram.js.map +1 -0
- package/dist/gateways/types.d.ts +340 -0
- package/dist/gateways/types.d.ts.map +1 -0
- package/dist/gateways/types.js +6 -0
- package/dist/gateways/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/memory-logger.d.ts +47 -0
- package/dist/memory/memory-logger.d.ts.map +1 -0
- package/dist/memory/memory-logger.js +126 -0
- package/dist/memory/memory-logger.js.map +1 -0
- package/dist/onboarding/all-tools.d.ts +18 -0
- package/dist/onboarding/all-tools.d.ts.map +1 -0
- package/dist/onboarding/all-tools.js +149 -0
- package/dist/onboarding/all-tools.js.map +1 -0
- package/dist/onboarding/autonomous-discovery-tools.d.ts +13 -0
- package/dist/onboarding/autonomous-discovery-tools.d.ts.map +1 -0
- package/dist/onboarding/autonomous-discovery-tools.js +268 -0
- package/dist/onboarding/autonomous-discovery-tools.js.map +1 -0
- package/dist/onboarding/bootstrap-template.d.ts +5 -0
- package/dist/onboarding/bootstrap-template.d.ts.map +1 -0
- package/dist/onboarding/bootstrap-template.js +142 -0
- package/dist/onboarding/bootstrap-template.js.map +1 -0
- package/dist/onboarding/complete-autonomous-prompt.d.ts +13 -0
- package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -0
- package/dist/onboarding/complete-autonomous-prompt.js +1220 -0
- package/dist/onboarding/complete-autonomous-prompt.js.map +1 -0
- package/dist/onboarding/onboarding-state.d.ts +70 -0
- package/dist/onboarding/onboarding-state.d.ts.map +1 -0
- package/dist/onboarding/onboarding-state.js +184 -0
- package/dist/onboarding/onboarding-state.js.map +1 -0
- package/dist/onboarding/personality-quiz.d.ts +35 -0
- package/dist/onboarding/personality-quiz.d.ts.map +1 -0
- package/dist/onboarding/personality-quiz.js +219 -0
- package/dist/onboarding/personality-quiz.js.map +1 -0
- package/dist/onboarding/phase-5-summary.d.ts +22 -0
- package/dist/onboarding/phase-5-summary.d.ts.map +1 -0
- package/dist/onboarding/phase-5-summary.js +151 -0
- package/dist/onboarding/phase-5-summary.js.map +1 -0
- package/dist/onboarding/phase-6-security.d.ts +33 -0
- package/dist/onboarding/phase-6-security.d.ts.map +1 -0
- package/dist/onboarding/phase-6-security.js +473 -0
- package/dist/onboarding/phase-6-security.js.map +1 -0
- package/dist/onboarding/phase-7-integrations.d.ts +66 -0
- package/dist/onboarding/phase-7-integrations.d.ts.map +1 -0
- package/dist/onboarding/phase-7-integrations.js +619 -0
- package/dist/onboarding/phase-7-integrations.js.map +1 -0
- package/dist/onboarding/phase-8-demo.d.ts +43 -0
- package/dist/onboarding/phase-8-demo.d.ts.map +1 -0
- package/dist/onboarding/phase-8-demo.js +346 -0
- package/dist/onboarding/phase-8-demo.js.map +1 -0
- package/dist/onboarding/phase-9-finalization.d.ts +22 -0
- package/dist/onboarding/phase-9-finalization.d.ts.map +1 -0
- package/dist/onboarding/phase-9-finalization.js +375 -0
- package/dist/onboarding/phase-9-finalization.js.map +1 -0
- package/dist/onboarding/ritual-prompt.d.ts +2 -0
- package/dist/onboarding/ritual-prompt.d.ts.map +1 -0
- package/dist/onboarding/ritual-prompt.js +285 -0
- package/dist/onboarding/ritual-prompt.js.map +1 -0
- package/dist/onboarding/ritual-tools.d.ts +13 -0
- package/dist/onboarding/ritual-tools.d.ts.map +1 -0
- package/dist/onboarding/ritual-tools.js +93 -0
- package/dist/onboarding/ritual-tools.js.map +1 -0
- package/dist/runners/cli-runner.d.ts +59 -0
- package/dist/runners/cli-runner.d.ts.map +1 -0
- package/dist/runners/cli-runner.js +190 -0
- package/dist/runners/cli-runner.js.map +1 -0
- package/dist/runners/index.d.ts +11 -0
- package/dist/runners/index.d.ts.map +1 -0
- package/dist/runners/index.js +15 -0
- package/dist/runners/index.js.map +1 -0
- package/dist/runners/types.d.ts +81 -0
- package/dist/runners/types.d.ts.map +1 -0
- package/dist/runners/types.js +31 -0
- package/dist/runners/types.js.map +1 -0
- package/dist/scheduler/cron-scheduler.d.ts +115 -0
- package/dist/scheduler/cron-scheduler.d.ts.map +1 -0
- package/dist/scheduler/cron-scheduler.js +320 -0
- package/dist/scheduler/cron-scheduler.js.map +1 -0
- package/dist/scheduler/heartbeat.d.ts +53 -0
- package/dist/scheduler/heartbeat.d.ts.map +1 -0
- package/dist/scheduler/heartbeat.js +160 -0
- package/dist/scheduler/heartbeat.js.map +1 -0
- package/dist/scheduler/index.d.ts +22 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +31 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/job-lock.d.ts +85 -0
- package/dist/scheduler/job-lock.d.ts.map +1 -0
- package/dist/scheduler/job-lock.js +137 -0
- package/dist/scheduler/job-lock.js.map +1 -0
- package/dist/scheduler/recovery.d.ts +78 -0
- package/dist/scheduler/recovery.d.ts.map +1 -0
- package/dist/scheduler/recovery.js +124 -0
- package/dist/scheduler/recovery.js.map +1 -0
- package/dist/scheduler/schedule-store.d.ts +112 -0
- package/dist/scheduler/schedule-store.d.ts.map +1 -0
- package/dist/scheduler/schedule-store.js +259 -0
- package/dist/scheduler/schedule-store.js.map +1 -0
- package/dist/scheduler/token-keep-alive.d.ts +49 -0
- package/dist/scheduler/token-keep-alive.d.ts.map +1 -0
- package/dist/scheduler/token-keep-alive.js +102 -0
- package/dist/scheduler/token-keep-alive.js.map +1 -0
- package/dist/scheduler/types.d.ts +96 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +21 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/setup/setup-prompt.d.ts +2 -0
- package/dist/setup/setup-prompt.d.ts.map +1 -0
- package/dist/setup/setup-prompt.js +138 -0
- package/dist/setup/setup-prompt.js.map +1 -0
- package/dist/setup/setup-server.d.ts +8 -0
- package/dist/setup/setup-server.d.ts.map +1 -0
- package/dist/setup/setup-server.js +71 -0
- package/dist/setup/setup-server.js.map +1 -0
- package/dist/setup/setup-tools.d.ts +13 -0
- package/dist/setup/setup-tools.d.ts.map +1 -0
- package/dist/setup/setup-tools.js +103 -0
- package/dist/setup/setup-tools.js.map +1 -0
- package/dist/setup/setup-websocket.d.ts +6 -0
- package/dist/setup/setup-websocket.d.ts.map +1 -0
- package/dist/setup/setup-websocket.js +312 -0
- package/dist/setup/setup-websocket.js.map +1 -0
- package/dist/skills/index.d.ts +10 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +26 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-executor.d.ts +48 -0
- package/dist/skills/skill-executor.d.ts.map +1 -0
- package/dist/skills/skill-executor.js +483 -0
- package/dist/skills/skill-executor.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +40 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +225 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-matcher.d.ts +33 -0
- package/dist/skills/skill-matcher.d.ts.map +1 -0
- package/dist/skills/skill-matcher.js +190 -0
- package/dist/skills/skill-matcher.js.map +1 -0
- package/dist/skills/types.d.ts +123 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +12 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/browser-tool.d.ts +149 -0
- package/dist/tools/browser-tool.d.ts.map +1 -0
- package/dist/tools/browser-tool.js +257 -0
- package/dist/tools/browser-tool.js.map +1 -0
- package/package.json +84 -0
- package/public/favicon.ico +0 -0
- package/public/setup.html +1026 -0
- package/public/viewer/icons/icon-192.png +0 -0
- package/public/viewer/icons/icon-512.png +0 -0
- package/public/viewer/js/modules/chat.js +1587 -0
- package/public/viewer/js/modules/dashboard.js +275 -0
- package/public/viewer/js/modules/graph.js +997 -0
- package/public/viewer/js/modules/memory.js +353 -0
- package/public/viewer/js/modules/settings.js +255 -0
- package/public/viewer/js/utils/api.js +169 -0
- package/public/viewer/js/utils/dom.js +92 -0
- package/public/viewer/js/utils/format.js +192 -0
- package/public/viewer/manifest.json +26 -0
- package/public/viewer/sw.js +131 -0
- package/public/viewer/viewer.css +500 -0
- package/public/viewer/viewer.html +1535 -0
- package/scripts/postinstall.js +118 -0
- package/templates/skills/document-analyze.md +63 -0
- package/templates/skills/heartbeat-report.md +75 -0
- package/templates/skills/image-translate.md +67 -0
- package/templates/workspace/skill-forge/DESIGN.md +115 -0
- package/templates/workspace/skill-forge/agents/architect.ts +295 -0
- package/templates/workspace/skill-forge/agents/developer.ts +364 -0
- package/templates/workspace/skill-forge/agents/qa.ts +313 -0
- package/templates/workspace/skill-forge/claude-api.ts +353 -0
- package/templates/workspace/skill-forge/discord-ui.ts +580 -0
- package/templates/workspace/skill-forge/error-handler.ts +354 -0
- package/templates/workspace/skill-forge/mama-integration.ts +357 -0
- package/templates/workspace/skill-forge/orchestrator.ts +495 -0
- package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/README.md +24 -0
- package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/index.ts +79 -0
- package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/types.ts +17 -0
- package/templates/workspace/skill-forge/package.json +21 -0
- package/templates/workspace/skill-forge/state/session.json +132 -0
- package/templates/workspace/skill-forge/test-e2e.ts +139 -0
- package/templates/workspace/skill-forge/tsconfig.json +20 -0
- package/templates/workspace/skill-forge/types.ts +159 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* API module exports
|
|
4
|
+
*
|
|
5
|
+
* Provides HTTP API for cron job management and heartbeat functionality.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.ApiError = exports.validateRequired = exports.asyncHandler = exports.DEFAULT_HEARTBEAT_PROMPT = exports.InMemoryHeartbeatTracker = exports.ScheduleStoreAdapter = exports.InMemoryLogStore = void 0;
|
|
26
|
+
exports.createApiServer = createApiServer;
|
|
27
|
+
exports.createApiRouters = createApiRouters;
|
|
28
|
+
const express_1 = __importDefault(require("express"));
|
|
29
|
+
const cron_handler_js_1 = require("./cron-handler.js");
|
|
30
|
+
const heartbeat_handler_js_1 = require("./heartbeat-handler.js");
|
|
31
|
+
const error_handler_js_1 = require("./error-handler.js");
|
|
32
|
+
// Re-export types
|
|
33
|
+
__exportStar(require("./types.js"), exports);
|
|
34
|
+
var cron_handler_js_2 = require("./cron-handler.js");
|
|
35
|
+
Object.defineProperty(exports, "InMemoryLogStore", { enumerable: true, get: function () { return cron_handler_js_2.InMemoryLogStore; } });
|
|
36
|
+
Object.defineProperty(exports, "ScheduleStoreAdapter", { enumerable: true, get: function () { return cron_handler_js_2.ScheduleStoreAdapter; } });
|
|
37
|
+
var heartbeat_handler_js_2 = require("./heartbeat-handler.js");
|
|
38
|
+
Object.defineProperty(exports, "InMemoryHeartbeatTracker", { enumerable: true, get: function () { return heartbeat_handler_js_2.InMemoryHeartbeatTracker; } });
|
|
39
|
+
Object.defineProperty(exports, "DEFAULT_HEARTBEAT_PROMPT", { enumerable: true, get: function () { return heartbeat_handler_js_2.DEFAULT_HEARTBEAT_PROMPT; } });
|
|
40
|
+
var error_handler_js_2 = require("./error-handler.js");
|
|
41
|
+
Object.defineProperty(exports, "asyncHandler", { enumerable: true, get: function () { return error_handler_js_2.asyncHandler; } });
|
|
42
|
+
Object.defineProperty(exports, "validateRequired", { enumerable: true, get: function () { return error_handler_js_2.validateRequired; } });
|
|
43
|
+
Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return error_handler_js_2.ApiError; } });
|
|
44
|
+
/**
|
|
45
|
+
* Create and configure the API server
|
|
46
|
+
*/
|
|
47
|
+
function createApiServer(options) {
|
|
48
|
+
const { scheduler, port = 3848, logStore = new cron_handler_js_1.InMemoryLogStore(), heartbeatTracker = new heartbeat_handler_js_1.InMemoryHeartbeatTracker(), onHeartbeat, } = options;
|
|
49
|
+
const app = (0, express_1.default)();
|
|
50
|
+
// Middleware
|
|
51
|
+
app.use(express_1.default.json());
|
|
52
|
+
// Set Content-Type header for API responses only
|
|
53
|
+
app.use('/api', (_req, res, next) => {
|
|
54
|
+
res.setHeader('Content-Type', 'application/json');
|
|
55
|
+
next();
|
|
56
|
+
});
|
|
57
|
+
// Mount API routers
|
|
58
|
+
const cronRouter = (0, cron_handler_js_1.createCronRouter)(scheduler, logStore);
|
|
59
|
+
const heartbeatRouter = (0, heartbeat_handler_js_1.createHeartbeatRouter)({
|
|
60
|
+
scheduler,
|
|
61
|
+
logStore,
|
|
62
|
+
tracker: heartbeatTracker,
|
|
63
|
+
onHeartbeat,
|
|
64
|
+
});
|
|
65
|
+
app.use('/api/cron', cronRouter);
|
|
66
|
+
app.use('/api/heartbeat', heartbeatRouter);
|
|
67
|
+
// Health check endpoint
|
|
68
|
+
app.get('/health', (_req, res) => {
|
|
69
|
+
res.json({ status: 'ok', timestamp: Date.now() });
|
|
70
|
+
});
|
|
71
|
+
// Note: Error handlers are mounted in start() to allow adding custom routes first
|
|
72
|
+
let server = null;
|
|
73
|
+
let actualPort = port;
|
|
74
|
+
let errorHandlersMounted = false;
|
|
75
|
+
return {
|
|
76
|
+
app,
|
|
77
|
+
get server() {
|
|
78
|
+
return server;
|
|
79
|
+
},
|
|
80
|
+
get port() {
|
|
81
|
+
return actualPort;
|
|
82
|
+
},
|
|
83
|
+
async start() {
|
|
84
|
+
// Mount error handlers right before starting
|
|
85
|
+
if (!errorHandlersMounted) {
|
|
86
|
+
app.use(error_handler_js_1.notFoundHandler);
|
|
87
|
+
app.use(error_handler_js_1.errorHandler);
|
|
88
|
+
errorHandlersMounted = true;
|
|
89
|
+
}
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
try {
|
|
92
|
+
// SECURITY: Bind to localhost only to prevent remote access
|
|
93
|
+
const host = process.env.MAMA_API_HOST || '127.0.0.1';
|
|
94
|
+
server = app.listen(port, host, () => {
|
|
95
|
+
actualPort = server.address().port;
|
|
96
|
+
console.log(`API server listening on http://${host}:${actualPort}`);
|
|
97
|
+
if (host === '0.0.0.0') {
|
|
98
|
+
console.warn('⚠️ WARNING: API server exposed to all interfaces!');
|
|
99
|
+
console.warn(' Set MAMA_API_HOST=127.0.0.1 for local-only access');
|
|
100
|
+
}
|
|
101
|
+
resolve();
|
|
102
|
+
});
|
|
103
|
+
server.on('error', reject);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
reject(error);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
async stop() {
|
|
111
|
+
return new Promise((resolve, reject) => {
|
|
112
|
+
if (!server) {
|
|
113
|
+
resolve();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
server.close((err) => {
|
|
117
|
+
if (err) {
|
|
118
|
+
reject(err);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
server = null;
|
|
122
|
+
resolve();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Create API routers without starting a server
|
|
131
|
+
* Useful for integrating into an existing Express app
|
|
132
|
+
*/
|
|
133
|
+
function createApiRouters(options) {
|
|
134
|
+
const { scheduler, logStore = new cron_handler_js_1.InMemoryLogStore(), heartbeatTracker = new heartbeat_handler_js_1.InMemoryHeartbeatTracker(), onHeartbeat, } = options;
|
|
135
|
+
return {
|
|
136
|
+
cronRouter: (0, cron_handler_js_1.createCronRouter)(scheduler, logStore),
|
|
137
|
+
heartbeatRouter: (0, heartbeat_handler_js_1.createHeartbeatRouter)({
|
|
138
|
+
scheduler,
|
|
139
|
+
logStore,
|
|
140
|
+
tracker: heartbeatTracker,
|
|
141
|
+
onHeartbeat,
|
|
142
|
+
}),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Heartbeat API
|
|
3
|
+
*/
|
|
4
|
+
import type { CronJob, JobResult } from '../scheduler/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* API representation of a cron job
|
|
7
|
+
*/
|
|
8
|
+
export interface ApiCronJob {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
cron_expr: string;
|
|
12
|
+
prompt: string;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
last_run: number | null;
|
|
15
|
+
next_run: number | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Request body for creating a cron job
|
|
19
|
+
*/
|
|
20
|
+
export interface CreateCronJobRequest {
|
|
21
|
+
name: string;
|
|
22
|
+
cron_expr: string;
|
|
23
|
+
prompt: string;
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Request body for updating a cron job
|
|
28
|
+
*/
|
|
29
|
+
export interface UpdateCronJobRequest {
|
|
30
|
+
name?: string;
|
|
31
|
+
cron_expr?: string;
|
|
32
|
+
prompt?: string;
|
|
33
|
+
enabled?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Response for cron job list
|
|
37
|
+
*/
|
|
38
|
+
export interface ListCronJobsResponse {
|
|
39
|
+
jobs: ApiCronJob[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Response for single cron job
|
|
43
|
+
*/
|
|
44
|
+
export interface GetCronJobResponse {
|
|
45
|
+
job: ApiCronJob;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Response for cron job creation
|
|
49
|
+
*/
|
|
50
|
+
export interface CreateCronJobResponse {
|
|
51
|
+
id: string;
|
|
52
|
+
created: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Response for cron job update
|
|
56
|
+
*/
|
|
57
|
+
export interface UpdateCronJobResponse {
|
|
58
|
+
updated: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Response for cron job deletion
|
|
62
|
+
*/
|
|
63
|
+
export interface DeleteCronJobResponse {
|
|
64
|
+
deleted: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Response for immediate job execution
|
|
68
|
+
*/
|
|
69
|
+
export interface RunCronJobResponse {
|
|
70
|
+
execution_id: string;
|
|
71
|
+
started: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Execution log entry
|
|
75
|
+
*/
|
|
76
|
+
export interface ExecutionLog {
|
|
77
|
+
id: string;
|
|
78
|
+
started_at: number;
|
|
79
|
+
finished_at: number | null;
|
|
80
|
+
status: 'running' | 'success' | 'failed';
|
|
81
|
+
output: string | null;
|
|
82
|
+
error: string | null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Response for execution logs
|
|
86
|
+
*/
|
|
87
|
+
export interface GetLogsResponse {
|
|
88
|
+
logs: ExecutionLog[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Query parameters for logs endpoint
|
|
92
|
+
*/
|
|
93
|
+
export interface GetLogsQuery {
|
|
94
|
+
limit?: number;
|
|
95
|
+
offset?: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Last execution info for heartbeat status
|
|
99
|
+
*/
|
|
100
|
+
export interface LastExecution {
|
|
101
|
+
id: string;
|
|
102
|
+
started_at: number;
|
|
103
|
+
status: 'success' | 'failed';
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Response for heartbeat status
|
|
107
|
+
*/
|
|
108
|
+
export interface HeartbeatStatusResponse {
|
|
109
|
+
status: 'active' | 'inactive';
|
|
110
|
+
active_jobs: number;
|
|
111
|
+
last_execution: LastExecution | null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Request body for manual heartbeat trigger
|
|
115
|
+
*/
|
|
116
|
+
export interface TriggerHeartbeatRequest {
|
|
117
|
+
prompt?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Response for heartbeat trigger
|
|
121
|
+
*/
|
|
122
|
+
export interface TriggerHeartbeatResponse {
|
|
123
|
+
execution_id: string;
|
|
124
|
+
started: boolean;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* API error codes
|
|
128
|
+
*/
|
|
129
|
+
export type ApiErrorCode = 'BAD_REQUEST' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'JOB_RUNNING' | 'INTERNAL_ERROR';
|
|
130
|
+
/**
|
|
131
|
+
* API error response
|
|
132
|
+
*/
|
|
133
|
+
export interface ApiErrorResponse {
|
|
134
|
+
error: string;
|
|
135
|
+
code?: ApiErrorCode;
|
|
136
|
+
details?: Record<string, unknown>;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Custom API error class
|
|
140
|
+
*/
|
|
141
|
+
export declare class ApiError extends Error {
|
|
142
|
+
readonly statusCode: number;
|
|
143
|
+
readonly code: ApiErrorCode;
|
|
144
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
145
|
+
constructor(message: string, statusCode: number, code?: ApiErrorCode, details?: Record<string, unknown> | undefined);
|
|
146
|
+
toResponse(): ApiErrorResponse;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Convert internal CronJob to API format
|
|
150
|
+
*/
|
|
151
|
+
export declare function toApiCronJob(job: CronJob): ApiCronJob;
|
|
152
|
+
/**
|
|
153
|
+
* Convert JobResult to ExecutionLog format
|
|
154
|
+
*/
|
|
155
|
+
export declare function toExecutionLog(id: string, result: JobResult): ExecutionLog;
|
|
156
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type definitions for Heartbeat API
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApiError = void 0;
|
|
7
|
+
exports.toApiCronJob = toApiCronJob;
|
|
8
|
+
exports.toExecutionLog = toExecutionLog;
|
|
9
|
+
/**
|
|
10
|
+
* Custom API error class
|
|
11
|
+
*/
|
|
12
|
+
class ApiError extends Error {
|
|
13
|
+
statusCode;
|
|
14
|
+
code;
|
|
15
|
+
details;
|
|
16
|
+
constructor(message, statusCode, code = 'INTERNAL_ERROR', details) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.statusCode = statusCode;
|
|
19
|
+
this.code = code;
|
|
20
|
+
this.details = details;
|
|
21
|
+
this.name = 'ApiError';
|
|
22
|
+
}
|
|
23
|
+
toResponse() {
|
|
24
|
+
return {
|
|
25
|
+
error: this.message,
|
|
26
|
+
code: this.code,
|
|
27
|
+
details: this.details,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ApiError = ApiError;
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Conversion Utilities
|
|
34
|
+
// ============================================================================
|
|
35
|
+
/**
|
|
36
|
+
* Convert internal CronJob to API format
|
|
37
|
+
*/
|
|
38
|
+
function toApiCronJob(job) {
|
|
39
|
+
return {
|
|
40
|
+
id: job.id,
|
|
41
|
+
name: job.name,
|
|
42
|
+
cron_expr: job.cronExpr,
|
|
43
|
+
prompt: job.prompt,
|
|
44
|
+
enabled: job.enabled,
|
|
45
|
+
last_run: job.lastRun ? job.lastRun.getTime() : null,
|
|
46
|
+
next_run: job.nextRun ? job.nextRun.getTime() : null,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Convert JobResult to ExecutionLog format
|
|
51
|
+
*/
|
|
52
|
+
function toExecutionLog(id, result) {
|
|
53
|
+
return {
|
|
54
|
+
id,
|
|
55
|
+
started_at: result.startedAt.getTime(),
|
|
56
|
+
finished_at: result.completedAt.getTime(),
|
|
57
|
+
status: result.success ? 'success' : 'failed',
|
|
58
|
+
output: result.response || null,
|
|
59
|
+
error: result.error || null,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA0MH,oCAUC;AAKD,wCASC;AAtDD;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAGf;IACA;IACA;IAJlB,YACE,OAAe,EACC,UAAkB,EAClB,OAAqB,gBAAgB,EACrC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAiC;QACrC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;IAED,UAAU;QACR,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAlBD,4BAkBC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAY;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QACpD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAU,EAAE,MAAiB;IAC1D,OAAO;QACL,EAAE;QACF,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QACtC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC7C,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth module - OAuth Token Management for MAMA Standalone
|
|
3
|
+
*/
|
|
4
|
+
export { OAuthManager } from './oauth-manager.js';
|
|
5
|
+
export type { ClaudeCredentialsFile, ClaudeAiOAuth, OAuthToken, TokenRefreshResponse, TokenStatus, OAuthManagerOptions, CachedToken, OAuthErrorCode, } from './types.js';
|
|
6
|
+
export { OAuthError } from './types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth module - OAuth Token Management for MAMA Standalone
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OAuthError = exports.OAuthManager = void 0;
|
|
7
|
+
var oauth_manager_js_1 = require("./oauth-manager.js");
|
|
8
|
+
Object.defineProperty(exports, "OAuthManager", { enumerable: true, get: function () { return oauth_manager_js_1.OAuthManager; } });
|
|
9
|
+
var types_js_1 = require("./types.js");
|
|
10
|
+
Object.defineProperty(exports, "OAuthError", { enumerable: true, get: function () { return types_js_1.OAuthError; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AAarB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Token Manager for MAMA Standalone
|
|
3
|
+
*
|
|
4
|
+
* Manages Claude Pro OAuth tokens from ~/.claude/.credentials.json
|
|
5
|
+
* - Reads tokens from Claude Code credentials file
|
|
6
|
+
* - Caches tokens with TTL
|
|
7
|
+
* - Auto-refreshes tokens before expiry
|
|
8
|
+
* - Writes refreshed tokens back to file
|
|
9
|
+
*/
|
|
10
|
+
import type { TokenStatus, OAuthManagerOptions } from './types.js';
|
|
11
|
+
export declare class OAuthManager {
|
|
12
|
+
private readonly credentialsPath;
|
|
13
|
+
private readonly cacheTtlMs;
|
|
14
|
+
private readonly refreshBufferMs;
|
|
15
|
+
private readonly fetchFn;
|
|
16
|
+
private cache;
|
|
17
|
+
constructor(options?: OAuthManagerOptions);
|
|
18
|
+
/**
|
|
19
|
+
* Get a valid access token, refreshing if necessary
|
|
20
|
+
*
|
|
21
|
+
* @returns Access token string
|
|
22
|
+
* @throws OAuthError if token cannot be obtained
|
|
23
|
+
*/
|
|
24
|
+
getToken(): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Get token status information
|
|
27
|
+
*
|
|
28
|
+
* @returns Token status including validity, expiry, and subscription info
|
|
29
|
+
*/
|
|
30
|
+
getStatus(): Promise<TokenStatus>;
|
|
31
|
+
/**
|
|
32
|
+
* Force refresh the token
|
|
33
|
+
*
|
|
34
|
+
* @returns New access token
|
|
35
|
+
* @throws OAuthError if refresh fails
|
|
36
|
+
*/
|
|
37
|
+
forceRefresh(): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Clear the token cache
|
|
40
|
+
*/
|
|
41
|
+
clearCache(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Check if token needs refresh (expires within buffer time)
|
|
44
|
+
*/
|
|
45
|
+
private needsRefresh;
|
|
46
|
+
/**
|
|
47
|
+
* Read credentials from file
|
|
48
|
+
*/
|
|
49
|
+
private readCredentials;
|
|
50
|
+
/**
|
|
51
|
+
* Refresh the OAuth token
|
|
52
|
+
*/
|
|
53
|
+
private refreshToken;
|
|
54
|
+
/**
|
|
55
|
+
* Write refreshed credentials to file
|
|
56
|
+
*/
|
|
57
|
+
private writeCredentials;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=oauth-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-manager.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAKV,WAAW,EACX,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,KAAK,CAA4B;gBAE7B,OAAO,GAAE,mBAAwB;IAO7C;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IA4CjC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IA4BvC;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAerC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;YACW,eAAe;IAyC7B;;OAEG;YACW,YAAY;IA4C1B;;OAEG;YACW,gBAAgB;CAiC/B"}
|