hub-launch 1.0.3
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 +144 -0
- package/README.md +195 -0
- package/bin/hublaunch +20 -0
- package/dist/commands/checkout.d.ts +7 -0
- package/dist/commands/checkout.d.ts.map +1 -0
- package/dist/commands/checkout.js +164 -0
- package/dist/commands/checkout.js.map +1 -0
- package/dist/commands/clean.d.ts +7 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +206 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/close.d.ts +7 -0
- package/dist/commands/close.d.ts.map +1 -0
- package/dist/commands/close.js +109 -0
- package/dist/commands/close.js.map +1 -0
- package/dist/commands/create.d.ts +7 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +367 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/diff.d.ts +7 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +98 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/execute.d.ts +7 -0
- package/dist/commands/execute.d.ts.map +1 -0
- package/dist/commands/execute.js +376 -0
- package/dist/commands/execute.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/interactive.d.ts +12 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +1071 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/launch.d.ts +16 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +684 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/login.d.ts +40 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +469 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logs.d.ts +22 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +105 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/merge.d.ts +7 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.js +240 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/preview.d.ts +7 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +160 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/project.d.ts +18 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +352 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/respond.d.ts +7 -0
- package/dist/commands/respond.d.ts.map +1 -0
- package/dist/commands/respond.js +112 -0
- package/dist/commands/respond.js.map +1 -0
- package/dist/commands/setPriority.d.ts +7 -0
- package/dist/commands/setPriority.d.ts.map +1 -0
- package/dist/commands/setPriority.js +112 -0
- package/dist/commands/setPriority.js.map +1 -0
- package/dist/commands/track.d.ts +7 -0
- package/dist/commands/track.d.ts.map +1 -0
- package/dist/commands/track.js +140 -0
- package/dist/commands/track.js.map +1 -0
- package/dist/commands/upload.d.ts +21 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +145 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/view.d.ts +7 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +168 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/watch.d.ts +7 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +438 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/worktree.d.ts +7 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +122 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/config/command-names.d.ts +16 -0
- package/dist/config/command-names.d.ts.map +1 -0
- package/dist/config/command-names.js +17 -0
- package/dist/config/command-names.js.map +1 -0
- package/dist/config/constants.d.ts +12 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +12 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/index.d.ts +47 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +175 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +148 -0
- package/dist/index.js.map +1 -0
- package/dist/services/api/HulaApiClient.d.ts +170 -0
- package/dist/services/api/HulaApiClient.d.ts.map +1 -0
- package/dist/services/api/HulaApiClient.js +233 -0
- package/dist/services/api/HulaApiClient.js.map +1 -0
- package/dist/services/diff/DiffService.d.ts +44 -0
- package/dist/services/diff/DiffService.d.ts.map +1 -0
- package/dist/services/diff/DiffService.js +126 -0
- package/dist/services/diff/DiffService.js.map +1 -0
- package/dist/services/editor/EditorService.d.ts +53 -0
- package/dist/services/editor/EditorService.d.ts.map +1 -0
- package/dist/services/editor/EditorService.js +161 -0
- package/dist/services/editor/EditorService.js.map +1 -0
- package/dist/services/git/GitService.d.ts +124 -0
- package/dist/services/git/GitService.d.ts.map +1 -0
- package/dist/services/git/GitService.js +423 -0
- package/dist/services/git/GitService.js.map +1 -0
- package/dist/services/git/WorktreeService.d.ts +144 -0
- package/dist/services/git/WorktreeService.d.ts.map +1 -0
- package/dist/services/git/WorktreeService.js +505 -0
- package/dist/services/git/WorktreeService.js.map +1 -0
- package/dist/services/github/ActionsService.d.ts +66 -0
- package/dist/services/github/ActionsService.d.ts.map +1 -0
- package/dist/services/github/ActionsService.js +114 -0
- package/dist/services/github/ActionsService.js.map +1 -0
- package/dist/services/github/AssetUploadService.d.ts +103 -0
- package/dist/services/github/AssetUploadService.d.ts.map +1 -0
- package/dist/services/github/AssetUploadService.js +299 -0
- package/dist/services/github/AssetUploadService.js.map +1 -0
- package/dist/services/github/BatchCopilotDetectionService.d.ts +58 -0
- package/dist/services/github/BatchCopilotDetectionService.d.ts.map +1 -0
- package/dist/services/github/BatchCopilotDetectionService.js +321 -0
- package/dist/services/github/BatchCopilotDetectionService.js.map +1 -0
- package/dist/services/github/CopilotDetectionService.d.ts +40 -0
- package/dist/services/github/CopilotDetectionService.d.ts.map +1 -0
- package/dist/services/github/CopilotDetectionService.js +280 -0
- package/dist/services/github/CopilotDetectionService.js.map +1 -0
- package/dist/services/github/CopilotService.d.ts +27 -0
- package/dist/services/github/CopilotService.d.ts.map +1 -0
- package/dist/services/github/CopilotService.js +249 -0
- package/dist/services/github/CopilotService.js.map +1 -0
- package/dist/services/github/DeploymentDetectionService.d.ts +38 -0
- package/dist/services/github/DeploymentDetectionService.d.ts.map +1 -0
- package/dist/services/github/DeploymentDetectionService.js +104 -0
- package/dist/services/github/DeploymentDetectionService.js.map +1 -0
- package/dist/services/github/GithubAppService.d.ts +40 -0
- package/dist/services/github/GithubAppService.d.ts.map +1 -0
- package/dist/services/github/GithubAppService.js +187 -0
- package/dist/services/github/GithubAppService.js.map +1 -0
- package/dist/services/github/IssueService.d.ts +65 -0
- package/dist/services/github/IssueService.d.ts.map +1 -0
- package/dist/services/github/IssueService.js +231 -0
- package/dist/services/github/IssueService.js.map +1 -0
- package/dist/services/github/LabelService.d.ts +36 -0
- package/dist/services/github/LabelService.d.ts.map +1 -0
- package/dist/services/github/LabelService.js +122 -0
- package/dist/services/github/LabelService.js.map +1 -0
- package/dist/services/github/PRService.d.ts +77 -0
- package/dist/services/github/PRService.d.ts.map +1 -0
- package/dist/services/github/PRService.js +287 -0
- package/dist/services/github/PRService.js.map +1 -0
- package/dist/services/github/ProjectService.d.ts +144 -0
- package/dist/services/github/ProjectService.d.ts.map +1 -0
- package/dist/services/github/ProjectService.js +804 -0
- package/dist/services/github/ProjectService.js.map +1 -0
- package/dist/services/hooks/HookExecutor.d.ts +66 -0
- package/dist/services/hooks/HookExecutor.d.ts.map +1 -0
- package/dist/services/hooks/HookExecutor.js +227 -0
- package/dist/services/hooks/HookExecutor.js.map +1 -0
- package/dist/services/hooks/index.d.ts +2 -0
- package/dist/services/hooks/index.d.ts.map +1 -0
- package/dist/services/hooks/index.js +2 -0
- package/dist/services/hooks/index.js.map +1 -0
- package/dist/services/logs/LogFormatterService.d.ts +17 -0
- package/dist/services/logs/LogFormatterService.d.ts.map +1 -0
- package/dist/services/logs/LogFormatterService.js +35 -0
- package/dist/services/logs/LogFormatterService.js.map +1 -0
- package/dist/services/logs/TempFileService.d.ts +27 -0
- package/dist/services/logs/TempFileService.d.ts.map +1 -0
- package/dist/services/logs/TempFileService.js +90 -0
- package/dist/services/logs/TempFileService.js.map +1 -0
- package/dist/services/logs/index.d.ts +3 -0
- package/dist/services/logs/index.d.ts.map +1 -0
- package/dist/services/logs/index.js +4 -0
- package/dist/services/logs/index.js.map +1 -0
- package/dist/services/plan/PlanService.d.ts +70 -0
- package/dist/services/plan/PlanService.d.ts.map +1 -0
- package/dist/services/plan/PlanService.js +211 -0
- package/dist/services/plan/PlanService.js.map +1 -0
- package/dist/services/polling/GitHubDirectPollingAdapter.d.ts +16 -0
- package/dist/services/polling/GitHubDirectPollingAdapter.d.ts.map +1 -0
- package/dist/services/polling/GitHubDirectPollingAdapter.js +87 -0
- package/dist/services/polling/GitHubDirectPollingAdapter.js.map +1 -0
- package/dist/services/polling/HulaServerPollingAdapter.d.ts +23 -0
- package/dist/services/polling/HulaServerPollingAdapter.d.ts.map +1 -0
- package/dist/services/polling/HulaServerPollingAdapter.js +78 -0
- package/dist/services/polling/HulaServerPollingAdapter.js.map +1 -0
- package/dist/services/polling/IStatusPollingAdapter.d.ts +29 -0
- package/dist/services/polling/IStatusPollingAdapter.d.ts.map +1 -0
- package/dist/services/polling/IStatusPollingAdapter.js +2 -0
- package/dist/services/polling/IStatusPollingAdapter.js.map +1 -0
- package/dist/services/polling/StatusPollingAdapterFactory.d.ts +14 -0
- package/dist/services/polling/StatusPollingAdapterFactory.d.ts.map +1 -0
- package/dist/services/polling/StatusPollingAdapterFactory.js +41 -0
- package/dist/services/polling/StatusPollingAdapterFactory.js.map +1 -0
- package/dist/services/polling/index.d.ts +5 -0
- package/dist/services/polling/index.d.ts.map +1 -0
- package/dist/services/polling/index.js +5 -0
- package/dist/services/polling/index.js.map +1 -0
- package/dist/services/preview/PreviewService.d.ts +86 -0
- package/dist/services/preview/PreviewService.d.ts.map +1 -0
- package/dist/services/preview/PreviewService.js +439 -0
- package/dist/services/preview/PreviewService.js.map +1 -0
- package/dist/services/tracking/ProjectTrackingAdapter.d.ts +41 -0
- package/dist/services/tracking/ProjectTrackingAdapter.d.ts.map +1 -0
- package/dist/services/tracking/ProjectTrackingAdapter.js +230 -0
- package/dist/services/tracking/ProjectTrackingAdapter.js.map +1 -0
- package/dist/services/tracking/RemoteTrackingAdapter.d.ts +62 -0
- package/dist/services/tracking/RemoteTrackingAdapter.d.ts.map +1 -0
- package/dist/services/tracking/RemoteTrackingAdapter.js +242 -0
- package/dist/services/tracking/RemoteTrackingAdapter.js.map +1 -0
- package/dist/services/tracking/TrackingAdapterFactory.d.ts +25 -0
- package/dist/services/tracking/TrackingAdapterFactory.d.ts.map +1 -0
- package/dist/services/tracking/TrackingAdapterFactory.js +55 -0
- package/dist/services/tracking/TrackingAdapterFactory.js.map +1 -0
- package/dist/services/tracking/TrackingService.d.ts +104 -0
- package/dist/services/tracking/TrackingService.d.ts.map +1 -0
- package/dist/services/tracking/TrackingService.js +256 -0
- package/dist/services/tracking/TrackingService.js.map +1 -0
- package/dist/services/tracking/UntrackedIssuesService.d.ts +20 -0
- package/dist/services/tracking/UntrackedIssuesService.d.ts.map +1 -0
- package/dist/services/tracking/UntrackedIssuesService.js +148 -0
- package/dist/services/tracking/UntrackedIssuesService.js.map +1 -0
- package/dist/services/tracking/local-file-migration.d.ts +16 -0
- package/dist/services/tracking/local-file-migration.d.ts.map +1 -0
- package/dist/services/tracking/local-file-migration.js +86 -0
- package/dist/services/tracking/local-file-migration.js.map +1 -0
- package/dist/templates/planning-instructions.md +752 -0
- package/dist/templates/proceed-instructions.md +453 -0
- package/dist/templates/scripts/hula-fix-commit.sh +110 -0
- package/dist/templates/scripts/hula-fix-setup.sh +145 -0
- package/dist/templates/scripts/hula-launch-run.sh +89 -0
- package/dist/templates/scripts/hula-merge-local.sh +138 -0
- package/dist/templates/scripts/hula-merge-remote.sh +74 -0
- package/dist/templates/scripts/hula-read-config.sh +38 -0
- package/dist/templates/scripts/hula-verify-gather.sh +135 -0
- package/dist/templates/scripts/hula-verify-post.sh +84 -0
- package/dist/templates/skills/hula-confirm/SKILL.md +361 -0
- package/dist/templates/skills/hula-create/SKILL.md +211 -0
- package/dist/templates/skills/hula-fix/SKILL.md +224 -0
- package/dist/templates/skills/hula-launch/SKILL.md +159 -0
- package/dist/templates/skills/hula-log/SKILL.md +105 -0
- package/dist/templates/skills/hula-merge/SKILL.md +387 -0
- package/dist/templates/skills/hula-plan/SKILL.md +148 -0
- package/dist/templates/skills/hula-upload/SKILL.md +115 -0
- package/dist/templates/skills/hula-verify/SKILL.md +754 -0
- package/dist/types/common.schema.d.ts +46 -0
- package/dist/types/common.schema.d.ts.map +1 -0
- package/dist/types/common.schema.js +60 -0
- package/dist/types/common.schema.js.map +1 -0
- package/dist/types/config.schema.d.ts +443 -0
- package/dist/types/config.schema.d.ts.map +1 -0
- package/dist/types/config.schema.js +126 -0
- package/dist/types/config.schema.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/issue.schema.d.ts +136 -0
- package/dist/types/issue.schema.d.ts.map +1 -0
- package/dist/types/issue.schema.js +49 -0
- package/dist/types/issue.schema.js.map +1 -0
- package/dist/types/pr.schema.d.ts +118 -0
- package/dist/types/pr.schema.d.ts.map +1 -0
- package/dist/types/pr.schema.js +40 -0
- package/dist/types/pr.schema.js.map +1 -0
- package/dist/types/tracking.schema.d.ts +340 -0
- package/dist/types/tracking.schema.d.ts.map +1 -0
- package/dist/types/tracking.schema.js +56 -0
- package/dist/types/tracking.schema.js.map +1 -0
- package/dist/utils/browser-launcher.d.ts +60 -0
- package/dist/utils/browser-launcher.d.ts.map +1 -0
- package/dist/utils/browser-launcher.js +263 -0
- package/dist/utils/browser-launcher.js.map +1 -0
- package/dist/utils/cache.d.ts +44 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +94 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/config-parser.d.ts +16 -0
- package/dist/utils/config-parser.d.ts.map +1 -0
- package/dist/utils/config-parser.js +210 -0
- package/dist/utils/config-parser.js.map +1 -0
- package/dist/utils/editor.d.ts +21 -0
- package/dist/utils/editor.d.ts.map +1 -0
- package/dist/utils/editor.js +213 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/git-utils.d.ts +5 -0
- package/dist/utils/git-utils.d.ts.map +1 -0
- package/dist/utils/git-utils.js +18 -0
- package/dist/utils/git-utils.js.map +1 -0
- package/dist/utils/github-cli.d.ts +62 -0
- package/dist/utils/github-cli.d.ts.map +1 -0
- package/dist/utils/github-cli.js +492 -0
- package/dist/utils/github-cli.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +118 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/open-url.d.ts +19 -0
- package/dist/utils/open-url.d.ts.map +1 -0
- package/dist/utils/open-url.js +37 -0
- package/dist/utils/open-url.js.map +1 -0
- package/dist/utils/project-resolver.d.ts +13 -0
- package/dist/utils/project-resolver.d.ts.map +1 -0
- package/dist/utils/project-resolver.js +35 -0
- package/dist/utils/project-resolver.js.map +1 -0
- package/dist/utils/prompts.d.ts +80 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +326 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/shell.d.ts +54 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +152 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/validators.d.ts +32 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +64 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectService.js","sourceRoot":"","sources":["../../../src/services/github/ProjectService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context passed to hook scripts
|
|
3
|
+
*/
|
|
4
|
+
export interface HookContext {
|
|
5
|
+
issueNumber?: number;
|
|
6
|
+
prNumber?: number;
|
|
7
|
+
deploymentUrl?: string;
|
|
8
|
+
prTitle?: string;
|
|
9
|
+
prUrl?: string;
|
|
10
|
+
targetBranch?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Result from hook execution
|
|
15
|
+
*/
|
|
16
|
+
export interface HookResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
hookPath: string;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Executes project-specific hooks with proper error handling
|
|
23
|
+
* Hooks are optional and failures don't block main operations
|
|
24
|
+
*/
|
|
25
|
+
export declare class HookExecutor {
|
|
26
|
+
private projectRoot;
|
|
27
|
+
constructor(projectRoot?: string);
|
|
28
|
+
/**
|
|
29
|
+
* Check if a hook file uses Playwright and ensure it's available
|
|
30
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
31
|
+
* @returns Promise<boolean> - true if Playwright is not needed or is available, false otherwise
|
|
32
|
+
*/
|
|
33
|
+
private checkPlaywrightForHook;
|
|
34
|
+
/**
|
|
35
|
+
* Execute a hook script if it exists (synchronous/blocking)
|
|
36
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
37
|
+
* @param context - Context object passed to the hook as JSON
|
|
38
|
+
* @returns Promise<boolean> - true if hook executed successfully, false otherwise
|
|
39
|
+
*/
|
|
40
|
+
execute(hookPath: string, context?: HookContext): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Execute hook in background (non-blocking)
|
|
43
|
+
* Used for long-running operations like browser automation
|
|
44
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
45
|
+
* @param context - Context object passed to the hook as JSON
|
|
46
|
+
*/
|
|
47
|
+
executeBackground(hookPath: string, context?: HookContext): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Kill any running background hook processes
|
|
50
|
+
* Can be called manually to clean up orphaned processes
|
|
51
|
+
*/
|
|
52
|
+
static cleanup(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a hook exists
|
|
55
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
56
|
+
* @returns boolean - true if hook file exists
|
|
57
|
+
*/
|
|
58
|
+
exists(hookPath: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Get the full path of a hook
|
|
61
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
62
|
+
* @returns string - Full absolute path to the hook
|
|
63
|
+
*/
|
|
64
|
+
getFullPath(hookPath: string): string;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=HookExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookExecutor.d.ts","sourceRoot":"","sources":["../../../src/services/hooks/HookExecutor.ts"],"names":[],"mappings":"AA6DA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0BD;;;GAGG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,WAAW;gBAAX,WAAW,GAAE,MAAsB;IAEvD;;;;OAIG;YACW,sBAAsB;IAkBpC;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C5E;;;;;OAKG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDnF;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;IAItB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQjC;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAGtC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, unlinkSync } from 'fs';
|
|
2
|
+
import { resolve, normalize, isAbsolute, join } from 'path';
|
|
3
|
+
import { spawn, execFile } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import { logger } from '../../utils/logger.js';
|
|
7
|
+
import { requirePlaywright } from '../../utils/browser-launcher.js';
|
|
8
|
+
const execFileAsync = promisify(execFile);
|
|
9
|
+
// PID file location for tracking background hook processes
|
|
10
|
+
const PID_FILE = join(homedir(), '.hublaunch', 'background-hook.pid');
|
|
11
|
+
/**
|
|
12
|
+
* Kill any previously running background hook process
|
|
13
|
+
*/
|
|
14
|
+
function killPreviousBackgroundProcess() {
|
|
15
|
+
try {
|
|
16
|
+
if (existsSync(PID_FILE)) {
|
|
17
|
+
const pidData = readFileSync(PID_FILE, 'utf-8').trim();
|
|
18
|
+
const pids = pidData.split('\n').filter(Boolean).map(Number);
|
|
19
|
+
for (const pid of pids) {
|
|
20
|
+
if (pid && !isNaN(pid)) {
|
|
21
|
+
try {
|
|
22
|
+
// Check if process exists and kill it
|
|
23
|
+
process.kill(pid, 0); // Check if process exists
|
|
24
|
+
process.kill(pid, 'SIGTERM'); // Terminate it
|
|
25
|
+
logger.debug(`Killed previous background hook process (PID: ${pid})`);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Process doesn't exist or we don't have permission - that's fine
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Remove the PID file
|
|
33
|
+
unlinkSync(PID_FILE);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger.debug(`Error cleaning up previous process: ${error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Save the PID of a background hook process
|
|
42
|
+
*/
|
|
43
|
+
function saveBackgroundPid(pid) {
|
|
44
|
+
try {
|
|
45
|
+
// Ensure .hublaunch directory exists
|
|
46
|
+
const hublaunchDir = join(homedir(), '.hublaunch');
|
|
47
|
+
if (!existsSync(hublaunchDir)) {
|
|
48
|
+
return; // Don't create directory just for PID file
|
|
49
|
+
}
|
|
50
|
+
writeFileSync(PID_FILE, pid.toString(), 'utf-8');
|
|
51
|
+
logger.debug(`Saved background hook PID: ${pid}`);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.debug(`Error saving PID: ${error}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validate that a path is safe (within project root, no traversal)
|
|
59
|
+
*/
|
|
60
|
+
function isPathSafe(hookPath, projectRoot) {
|
|
61
|
+
// Reject absolute paths
|
|
62
|
+
if (isAbsolute(hookPath)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// Normalize and resolve the path
|
|
66
|
+
const normalizedPath = normalize(hookPath);
|
|
67
|
+
// Check for path traversal attempts
|
|
68
|
+
if (normalizedPath.includes('..')) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
// Verify the resolved path is within project root
|
|
72
|
+
const resolvedPath = resolve(projectRoot, normalizedPath);
|
|
73
|
+
const resolvedRoot = resolve(projectRoot);
|
|
74
|
+
return resolvedPath.startsWith(resolvedRoot);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Executes project-specific hooks with proper error handling
|
|
78
|
+
* Hooks are optional and failures don't block main operations
|
|
79
|
+
*/
|
|
80
|
+
export class HookExecutor {
|
|
81
|
+
projectRoot;
|
|
82
|
+
constructor(projectRoot = process.cwd()) {
|
|
83
|
+
this.projectRoot = projectRoot;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a hook file uses Playwright and ensure it's available
|
|
87
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
88
|
+
* @returns Promise<boolean> - true if Playwright is not needed or is available, false otherwise
|
|
89
|
+
*/
|
|
90
|
+
async checkPlaywrightForHook(hookPath) {
|
|
91
|
+
const fullPath = resolve(this.projectRoot, hookPath);
|
|
92
|
+
const hookContent = readFileSync(fullPath, 'utf-8');
|
|
93
|
+
// Check for Playwright imports using regex to match actual import statements
|
|
94
|
+
const playwrightImportPattern = /^.*import.*from\s+['"]playwright['"]/m;
|
|
95
|
+
const playwrightTestImportPattern = /^.*import.*from\s+['"]@playwright\/test['"]/m;
|
|
96
|
+
const usesPlaywright = playwrightImportPattern.test(hookContent) || playwrightTestImportPattern.test(hookContent);
|
|
97
|
+
if (!usesPlaywright) {
|
|
98
|
+
return true; // No Playwright needed, proceed
|
|
99
|
+
}
|
|
100
|
+
return await requirePlaywright({
|
|
101
|
+
featureDescription: `The hook "${hookPath}" requires Chromium for browser automation.`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Execute a hook script if it exists (synchronous/blocking)
|
|
106
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
107
|
+
* @param context - Context object passed to the hook as JSON
|
|
108
|
+
* @returns Promise<boolean> - true if hook executed successfully, false otherwise
|
|
109
|
+
*/
|
|
110
|
+
async execute(hookPath, context = {}) {
|
|
111
|
+
// Validate path safety
|
|
112
|
+
if (!isPathSafe(hookPath, this.projectRoot)) {
|
|
113
|
+
logger.error(`Invalid hook path (path traversal detected): ${hookPath}`);
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const fullPath = resolve(this.projectRoot, hookPath);
|
|
117
|
+
if (!existsSync(fullPath)) {
|
|
118
|
+
logger.debug(`Hook not found: ${hookPath}`);
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
// Check if hook uses Playwright and ensure it's available
|
|
122
|
+
const canProceed = await this.checkPlaywrightForHook(hookPath);
|
|
123
|
+
if (!canProceed) {
|
|
124
|
+
logger.warning(`Skipping hook "${hookPath}" - Playwright not available`);
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
logger.info(`Running hook: ${hookPath}`);
|
|
128
|
+
try {
|
|
129
|
+
// Serialize context as JSON string for passing to script
|
|
130
|
+
const contextJson = JSON.stringify(context);
|
|
131
|
+
// Execute with npx tsx using execFile
|
|
132
|
+
// shell: true is required for Windows to find npx.cmd
|
|
133
|
+
await execFileAsync('npx', ['tsx', fullPath, contextJson], {
|
|
134
|
+
cwd: this.projectRoot,
|
|
135
|
+
shell: true,
|
|
136
|
+
});
|
|
137
|
+
logger.success(`✓ Hook completed: ${hookPath}`);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
logger.error(`Hook failed: ${hookPath}`);
|
|
142
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
143
|
+
// Hooks are optional - don't fail the main operation
|
|
144
|
+
logger.warning('Continuing despite hook failure...');
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Execute hook in background (non-blocking)
|
|
150
|
+
* Used for long-running operations like browser automation
|
|
151
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
152
|
+
* @param context - Context object passed to the hook as JSON
|
|
153
|
+
*/
|
|
154
|
+
async executeBackground(hookPath, context = {}) {
|
|
155
|
+
// Validate path safety
|
|
156
|
+
if (!isPathSafe(hookPath, this.projectRoot)) {
|
|
157
|
+
logger.error(`Invalid hook path (path traversal detected): ${hookPath}`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const fullPath = resolve(this.projectRoot, hookPath);
|
|
161
|
+
if (!existsSync(fullPath)) {
|
|
162
|
+
logger.debug(`Hook not found: ${hookPath}`);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Check if hook uses Playwright and ensure it's available
|
|
166
|
+
const canProceed = await this.checkPlaywrightForHook(hookPath);
|
|
167
|
+
if (!canProceed) {
|
|
168
|
+
logger.warning(`Skipping background hook "${hookPath}" - Playwright not available`);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Kill any previously running background hook process to prevent
|
|
172
|
+
// multiple browser instances from accumulating
|
|
173
|
+
killPreviousBackgroundProcess();
|
|
174
|
+
logger.info(`Running hook in background: ${hookPath}`);
|
|
175
|
+
try {
|
|
176
|
+
const contextJson = JSON.stringify(context);
|
|
177
|
+
// Execute in background using spawn
|
|
178
|
+
// shell: true is required for Windows to find npx.cmd
|
|
179
|
+
// but on Unix it causes brace expansion of JSON arguments
|
|
180
|
+
const child = spawn('npx', ['tsx', fullPath, contextJson], {
|
|
181
|
+
detached: true,
|
|
182
|
+
stdio: 'inherit', // Changed from "ignore" to see output
|
|
183
|
+
cwd: this.projectRoot,
|
|
184
|
+
shell: process.platform === 'win32',
|
|
185
|
+
});
|
|
186
|
+
// Save the PID so we can kill it later if needed
|
|
187
|
+
if (child.pid) {
|
|
188
|
+
saveBackgroundPid(child.pid);
|
|
189
|
+
}
|
|
190
|
+
// Detach from parent process
|
|
191
|
+
child.unref();
|
|
192
|
+
logger.success(`✓ Hook started in background: ${hookPath}`);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
logger.error(`Failed to start hook: ${hookPath}`);
|
|
196
|
+
logger.debug(error instanceof Error ? error.message : String(error));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Kill any running background hook processes
|
|
201
|
+
* Can be called manually to clean up orphaned processes
|
|
202
|
+
*/
|
|
203
|
+
static cleanup() {
|
|
204
|
+
killPreviousBackgroundProcess();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Check if a hook exists
|
|
208
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
209
|
+
* @returns boolean - true if hook file exists
|
|
210
|
+
*/
|
|
211
|
+
exists(hookPath) {
|
|
212
|
+
if (!isPathSafe(hookPath, this.projectRoot)) {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
const fullPath = resolve(this.projectRoot, hookPath);
|
|
216
|
+
return existsSync(fullPath);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get the full path of a hook
|
|
220
|
+
* @param hookPath - Path to the hook script (relative to project root)
|
|
221
|
+
* @returns string - Full absolute path to the hook
|
|
222
|
+
*/
|
|
223
|
+
getFullPath(hookPath) {
|
|
224
|
+
return resolve(this.projectRoot, hookPath);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=HookExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookExecutor.js","sourceRoot":"","sources":["../../../src/services/hooks/HookExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for formatting log data for display
|
|
3
|
+
*/
|
|
4
|
+
export declare class LogFormatterService {
|
|
5
|
+
/**
|
|
6
|
+
* Format plain text log content with headers and metadata
|
|
7
|
+
*
|
|
8
|
+
* @param content - Raw log content from server
|
|
9
|
+
* @param metadata - Metadata to include in headers (trackingName, lines)
|
|
10
|
+
* @returns Formatted log content with headers and footers
|
|
11
|
+
*/
|
|
12
|
+
formatPlainText(content: string, metadata: {
|
|
13
|
+
trackingName: string;
|
|
14
|
+
lines: number;
|
|
15
|
+
}): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=LogFormatterService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogFormatterService.d.ts","sourceRoot":"","sources":["../../../src/services/logs/LogFormatterService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAChD,MAAM;CA0BV"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for formatting log data for display
|
|
3
|
+
*/
|
|
4
|
+
export class LogFormatterService {
|
|
5
|
+
/**
|
|
6
|
+
* Format plain text log content with headers and metadata
|
|
7
|
+
*
|
|
8
|
+
* @param content - Raw log content from server
|
|
9
|
+
* @param metadata - Metadata to include in headers (trackingName, lines)
|
|
10
|
+
* @returns Formatted log content with headers and footers
|
|
11
|
+
*/
|
|
12
|
+
formatPlainText(content, metadata) {
|
|
13
|
+
const lines = [];
|
|
14
|
+
// Header section
|
|
15
|
+
lines.push("═".repeat(80));
|
|
16
|
+
lines.push(`Log Viewer - HULA SERVER`);
|
|
17
|
+
lines.push("═".repeat(80));
|
|
18
|
+
lines.push("");
|
|
19
|
+
lines.push(`Tracking Name: ${metadata.trackingName}`);
|
|
20
|
+
lines.push(`Retrieved: ${new Date().toISOString()}`);
|
|
21
|
+
lines.push(`Lines: last ${metadata.lines}`);
|
|
22
|
+
lines.push("");
|
|
23
|
+
lines.push("─".repeat(80));
|
|
24
|
+
lines.push("");
|
|
25
|
+
// Log content
|
|
26
|
+
lines.push(content);
|
|
27
|
+
// Footer
|
|
28
|
+
lines.push("");
|
|
29
|
+
lines.push("─".repeat(80));
|
|
30
|
+
lines.push("End of logs");
|
|
31
|
+
lines.push("═".repeat(80));
|
|
32
|
+
return lines.join("\n");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=LogFormatterService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogFormatterService.js","sourceRoot":"","sources":["../../../src/services/logs/LogFormatterService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;;;;OAMG;IACH,eAAe,CACb,OAAe,EACf,QAAiD;QAEjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,iBAAiB;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,cAAc;QACd,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpB,SAAS;QACT,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for managing temporary log files
|
|
3
|
+
*/
|
|
4
|
+
export declare class TempFileService {
|
|
5
|
+
private readonly tempDir;
|
|
6
|
+
constructor(tempDir?: string);
|
|
7
|
+
/**
|
|
8
|
+
* Create a temporary file with the given content
|
|
9
|
+
* @param content - File content
|
|
10
|
+
* @param requestId - Request ID for the filename
|
|
11
|
+
* @returns Path to the created file
|
|
12
|
+
*/
|
|
13
|
+
createTempFile(content: string, requestId: string): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Sanitize a string for use in a filename
|
|
16
|
+
*/
|
|
17
|
+
private sanitizeFilename;
|
|
18
|
+
/**
|
|
19
|
+
* Clean up a temporary file
|
|
20
|
+
*/
|
|
21
|
+
cleanup(filePath: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Clean up old log files (older than specified hours)
|
|
24
|
+
*/
|
|
25
|
+
cleanupOldFiles(maxAgeHours?: number): Promise<number>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=TempFileService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TempFileService.d.ts","sourceRoot":"","sources":["../../../src/services/logs/TempFileService.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAI5B;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBzE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;OAEG;IACG,eAAe,CAAC,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAiCjE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import fs from "fs/promises";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import os from "os";
|
|
4
|
+
/**
|
|
5
|
+
* Service for managing temporary log files
|
|
6
|
+
*/
|
|
7
|
+
export class TempFileService {
|
|
8
|
+
tempDir;
|
|
9
|
+
constructor(tempDir) {
|
|
10
|
+
this.tempDir = tempDir ?? os.tmpdir();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a temporary file with the given content
|
|
14
|
+
* @param content - File content
|
|
15
|
+
* @param requestId - Request ID for the filename
|
|
16
|
+
* @returns Path to the created file
|
|
17
|
+
*/
|
|
18
|
+
async createTempFile(content, requestId) {
|
|
19
|
+
const timestamp = Date.now();
|
|
20
|
+
const sanitizedId = this.sanitizeFilename(requestId);
|
|
21
|
+
const filename = `log-${sanitizedId}-${timestamp}.log`;
|
|
22
|
+
const filePath = path.join(this.tempDir, filename);
|
|
23
|
+
await fs.mkdir(this.tempDir, { recursive: true });
|
|
24
|
+
await fs.writeFile(filePath, content, "utf-8");
|
|
25
|
+
// Make file read-only (may not work on all platforms)
|
|
26
|
+
try {
|
|
27
|
+
await fs.chmod(filePath, 0o444);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Ignore chmod errors on platforms that don't support it
|
|
31
|
+
}
|
|
32
|
+
return filePath;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sanitize a string for use in a filename
|
|
36
|
+
*/
|
|
37
|
+
sanitizeFilename(name) {
|
|
38
|
+
// Remove or replace unsafe characters
|
|
39
|
+
return name
|
|
40
|
+
.replace(/[^a-zA-Z0-9-_]/g, "-")
|
|
41
|
+
.replace(/-+/g, "-")
|
|
42
|
+
.substring(0, 50); // Limit length
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Clean up a temporary file
|
|
46
|
+
*/
|
|
47
|
+
async cleanup(filePath) {
|
|
48
|
+
try {
|
|
49
|
+
// Remove read-only flag before deleting
|
|
50
|
+
await fs.chmod(filePath, 0o644);
|
|
51
|
+
await fs.unlink(filePath);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Ignore errors during cleanup
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Clean up old log files (older than specified hours)
|
|
59
|
+
*/
|
|
60
|
+
async cleanupOldFiles(maxAgeHours = 24) {
|
|
61
|
+
let cleaned = 0;
|
|
62
|
+
const maxAgeMs = maxAgeHours * 60 * 60 * 1000;
|
|
63
|
+
const now = Date.now();
|
|
64
|
+
try {
|
|
65
|
+
const files = await fs.readdir(this.tempDir);
|
|
66
|
+
for (const file of files) {
|
|
67
|
+
if (!file.startsWith("log-") || !file.endsWith(".log")) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const filePath = path.join(this.tempDir, file);
|
|
71
|
+
try {
|
|
72
|
+
const stats = await fs.stat(filePath);
|
|
73
|
+
const age = now - stats.mtimeMs;
|
|
74
|
+
if (age > maxAgeMs) {
|
|
75
|
+
await this.cleanup(filePath);
|
|
76
|
+
cleaned++;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore errors for individual files
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Ignore errors during cleanup
|
|
86
|
+
}
|
|
87
|
+
return cleaned;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=TempFileService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TempFileService.js","sourceRoot":"","sources":["../../../src/services/logs/TempFileService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/logs/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/logs/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan file information
|
|
3
|
+
*/
|
|
4
|
+
export interface PlanFile {
|
|
5
|
+
path: string;
|
|
6
|
+
filename: string;
|
|
7
|
+
title: string;
|
|
8
|
+
content: string;
|
|
9
|
+
createdAt: Date;
|
|
10
|
+
size: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parsed plan data
|
|
14
|
+
*/
|
|
15
|
+
export interface ParsedPlan {
|
|
16
|
+
title: string;
|
|
17
|
+
body: string;
|
|
18
|
+
metadata: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Service for plan file operations
|
|
22
|
+
* Single Responsibility: Plan file management
|
|
23
|
+
*/
|
|
24
|
+
export declare class PlanService {
|
|
25
|
+
private planPath;
|
|
26
|
+
constructor(planPath: string);
|
|
27
|
+
/**
|
|
28
|
+
* List all plan files
|
|
29
|
+
*/
|
|
30
|
+
listPlans(): Promise<PlanFile[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Select a plan file interactively
|
|
33
|
+
*/
|
|
34
|
+
selectPlan(preference: 'alwaysLatest' | 'chooseRecentPlan', maxChoices?: number): Promise<PlanFile>;
|
|
35
|
+
/**
|
|
36
|
+
* Parse a plan file
|
|
37
|
+
*/
|
|
38
|
+
parsePlan(filePath: string): Promise<ParsedPlan>;
|
|
39
|
+
/**
|
|
40
|
+
* Get the most recent plan file
|
|
41
|
+
*/
|
|
42
|
+
getLatestPlan(): Promise<PlanFile | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Search plans by title or content
|
|
45
|
+
*/
|
|
46
|
+
searchPlans(query: string): Promise<PlanFile[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Get plan by filename or path
|
|
49
|
+
* Searches config planPath, then direct path
|
|
50
|
+
*/
|
|
51
|
+
getPlanByFilename(filenameOrPath: string): Promise<PlanFile | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a plan by direct file path (absolute or relative)
|
|
54
|
+
*/
|
|
55
|
+
getPlanByDirectPath(filePath: string): Promise<PlanFile | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Get the relative path for a plan (relative to repo root)
|
|
58
|
+
*/
|
|
59
|
+
getRelativePath(planPath: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Check if a plan file exists at the given path
|
|
62
|
+
*/
|
|
63
|
+
exists(planPath: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Delete a local plan file (e.g. after it has been uploaded to origin/main)
|
|
66
|
+
* Non-throwing: logs warning on failure, returns success boolean.
|
|
67
|
+
*/
|
|
68
|
+
deletePlan(planPath: string): boolean;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=PlanService.d.ts.map
|