@waymakeros/cli 2.0.0
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/README.md +158 -0
- package/dist/cli/cli.d.ts +7 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +703 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +14 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +507 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +297 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/kanban.d.ts +12 -0
- package/dist/cli/commands/kanban.d.ts.map +1 -0
- package/dist/cli/commands/kanban.js +71 -0
- package/dist/cli/commands/kanban.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +12 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +170 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +12 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +222 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/daemon.d.ts +106 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +393 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +90 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +238 -0
- package/dist/index.js.map +1 -0
- package/dist/simple-server.d.ts +7 -0
- package/dist/simple-server.d.ts.map +1 -0
- package/dist/simple-server.js +157 -0
- package/dist/simple-server.js.map +1 -0
- package/dist/sync/commander-client.d.ts +161 -0
- package/dist/sync/commander-client.d.ts.map +1 -0
- package/dist/sync/commander-client.js +405 -0
- package/dist/sync/commander-client.js.map +1 -0
- package/dist/sync/config-manager.d.ts +48 -0
- package/dist/sync/config-manager.d.ts.map +1 -0
- package/dist/sync/config-manager.js +169 -0
- package/dist/sync/config-manager.js.map +1 -0
- package/dist/sync/file-watcher.d.ts +53 -0
- package/dist/sync/file-watcher.d.ts.map +1 -0
- package/dist/sync/file-watcher.js +228 -0
- package/dist/sync/file-watcher.js.map +1 -0
- package/dist/sync/folder-service.d.ts +110 -0
- package/dist/sync/folder-service.d.ts.map +1 -0
- package/dist/sync/folder-service.js +298 -0
- package/dist/sync/folder-service.js.map +1 -0
- package/dist/sync/folder-status-mapper.d.ts +106 -0
- package/dist/sync/folder-status-mapper.d.ts.map +1 -0
- package/dist/sync/folder-status-mapper.js +235 -0
- package/dist/sync/folder-status-mapper.js.map +1 -0
- package/dist/sync/layer-resolver.d.ts +54 -0
- package/dist/sync/layer-resolver.d.ts.map +1 -0
- package/dist/sync/layer-resolver.js +206 -0
- package/dist/sync/layer-resolver.js.map +1 -0
- package/dist/sync/markdown-parser.d.ts +49 -0
- package/dist/sync/markdown-parser.d.ts.map +1 -0
- package/dist/sync/markdown-parser.js +202 -0
- package/dist/sync/markdown-parser.js.map +1 -0
- package/dist/sync/reverse-sync.d.ts +139 -0
- package/dist/sync/reverse-sync.d.ts.map +1 -0
- package/dist/sync/reverse-sync.js +773 -0
- package/dist/sync/reverse-sync.js.map +1 -0
- package/dist/sync/sync-engine.d.ts +157 -0
- package/dist/sync/sync-engine.d.ts.map +1 -0
- package/dist/sync/sync-engine.js +875 -0
- package/dist/sync/sync-engine.js.map +1 -0
- package/dist/sync/sync-index.d.ts +150 -0
- package/dist/sync/sync-index.d.ts.map +1 -0
- package/dist/sync/sync-index.js +287 -0
- package/dist/sync/sync-index.js.map +1 -0
- package/dist/sync/trinity-mapper.d.ts +62 -0
- package/dist/sync/trinity-mapper.d.ts.map +1 -0
- package/dist/sync/trinity-mapper.js +548 -0
- package/dist/sync/trinity-mapper.js.map +1 -0
- package/dist/sync/types.d.ts +176 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +6 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/tools/apply-framework.d.ts +7 -0
- package/dist/tools/apply-framework.d.ts.map +1 -0
- package/dist/tools/apply-framework.js +30 -0
- package/dist/tools/apply-framework.js.map +1 -0
- package/dist/tools/commander-comment-create.d.ts +7 -0
- package/dist/tools/commander-comment-create.d.ts.map +1 -0
- package/dist/tools/commander-comment-create.js +100 -0
- package/dist/tools/commander-comment-create.js.map +1 -0
- package/dist/tools/commander-comment-list.d.ts +7 -0
- package/dist/tools/commander-comment-list.d.ts.map +1 -0
- package/dist/tools/commander-comment-list.js +110 -0
- package/dist/tools/commander-comment-list.js.map +1 -0
- package/dist/tools/commander-document-create.d.ts +7 -0
- package/dist/tools/commander-document-create.d.ts.map +1 -0
- package/dist/tools/commander-document-create.js +168 -0
- package/dist/tools/commander-document-create.js.map +1 -0
- package/dist/tools/commander-document-get.d.ts +7 -0
- package/dist/tools/commander-document-get.d.ts.map +1 -0
- package/dist/tools/commander-document-get.js +104 -0
- package/dist/tools/commander-document-get.js.map +1 -0
- package/dist/tools/commander-document-list.d.ts +7 -0
- package/dist/tools/commander-document-list.d.ts.map +1 -0
- package/dist/tools/commander-document-list.js +117 -0
- package/dist/tools/commander-document-list.js.map +1 -0
- package/dist/tools/commander-document-update.d.ts +7 -0
- package/dist/tools/commander-document-update.d.ts.map +1 -0
- package/dist/tools/commander-document-update.js +133 -0
- package/dist/tools/commander-document-update.js.map +1 -0
- package/dist/tools/commander-folder-create.d.ts +7 -0
- package/dist/tools/commander-folder-create.d.ts.map +1 -0
- package/dist/tools/commander-folder-create.js +157 -0
- package/dist/tools/commander-folder-create.js.map +1 -0
- package/dist/tools/commander-folder-delete.d.ts +7 -0
- package/dist/tools/commander-folder-delete.d.ts.map +1 -0
- package/dist/tools/commander-folder-delete.js +85 -0
- package/dist/tools/commander-folder-delete.js.map +1 -0
- package/dist/tools/commander-folder-get.d.ts +7 -0
- package/dist/tools/commander-folder-get.d.ts.map +1 -0
- package/dist/tools/commander-folder-get.js +94 -0
- package/dist/tools/commander-folder-get.js.map +1 -0
- package/dist/tools/commander-folder-list.d.ts +7 -0
- package/dist/tools/commander-folder-list.d.ts.map +1 -0
- package/dist/tools/commander-folder-list.js +96 -0
- package/dist/tools/commander-folder-list.js.map +1 -0
- package/dist/tools/commander-folder-update.d.ts +7 -0
- package/dist/tools/commander-folder-update.d.ts.map +1 -0
- package/dist/tools/commander-folder-update.js +120 -0
- package/dist/tools/commander-folder-update.js.map +1 -0
- package/dist/tools/commander-framework-apply.d.ts +7 -0
- package/dist/tools/commander-framework-apply.d.ts.map +1 -0
- package/dist/tools/commander-framework-apply.js +110 -0
- package/dist/tools/commander-framework-apply.js.map +1 -0
- package/dist/tools/commander-framework-categories.d.ts +7 -0
- package/dist/tools/commander-framework-categories.d.ts.map +1 -0
- package/dist/tools/commander-framework-categories.js +90 -0
- package/dist/tools/commander-framework-categories.js.map +1 -0
- package/dist/tools/commander-framework-get.d.ts +7 -0
- package/dist/tools/commander-framework-get.d.ts.map +1 -0
- package/dist/tools/commander-framework-get.js +124 -0
- package/dist/tools/commander-framework-get.js.map +1 -0
- package/dist/tools/commander-framework-list.d.ts +7 -0
- package/dist/tools/commander-framework-list.d.ts.map +1 -0
- package/dist/tools/commander-framework-list.js +103 -0
- package/dist/tools/commander-framework-list.js.map +1 -0
- package/dist/tools/commander-goal-create.d.ts +7 -0
- package/dist/tools/commander-goal-create.d.ts.map +1 -0
- package/dist/tools/commander-goal-create.js +130 -0
- package/dist/tools/commander-goal-create.js.map +1 -0
- package/dist/tools/commander-goal-get.d.ts +7 -0
- package/dist/tools/commander-goal-get.d.ts.map +1 -0
- package/dist/tools/commander-goal-get.js +83 -0
- package/dist/tools/commander-goal-get.js.map +1 -0
- package/dist/tools/commander-goal-list.d.ts +7 -0
- package/dist/tools/commander-goal-list.d.ts.map +1 -0
- package/dist/tools/commander-goal-list.js +111 -0
- package/dist/tools/commander-goal-list.js.map +1 -0
- package/dist/tools/commander-goal-update.d.ts +7 -0
- package/dist/tools/commander-goal-update.d.ts.map +1 -0
- package/dist/tools/commander-goal-update.js +110 -0
- package/dist/tools/commander-goal-update.js.map +1 -0
- package/dist/tools/commander-key-result-create.d.ts +7 -0
- package/dist/tools/commander-key-result-create.d.ts.map +1 -0
- package/dist/tools/commander-key-result-create.js +134 -0
- package/dist/tools/commander-key-result-create.js.map +1 -0
- package/dist/tools/commander-key-result-update.d.ts +7 -0
- package/dist/tools/commander-key-result-update.d.ts.map +1 -0
- package/dist/tools/commander-key-result-update.js +119 -0
- package/dist/tools/commander-key-result-update.js.map +1 -0
- package/dist/tools/commander-layer-create.d.ts +7 -0
- package/dist/tools/commander-layer-create.d.ts.map +1 -0
- package/dist/tools/commander-layer-create.js +167 -0
- package/dist/tools/commander-layer-create.js.map +1 -0
- package/dist/tools/commander-layer-delete.d.ts +7 -0
- package/dist/tools/commander-layer-delete.d.ts.map +1 -0
- package/dist/tools/commander-layer-delete.js +141 -0
- package/dist/tools/commander-layer-delete.js.map +1 -0
- package/dist/tools/commander-layer-list.d.ts +7 -0
- package/dist/tools/commander-layer-list.d.ts.map +1 -0
- package/dist/tools/commander-layer-list.js +102 -0
- package/dist/tools/commander-layer-list.js.map +1 -0
- package/dist/tools/commander-presentation.d.ts +7 -0
- package/dist/tools/commander-presentation.d.ts.map +1 -0
- package/dist/tools/commander-presentation.js +185 -0
- package/dist/tools/commander-presentation.js.map +1 -0
- package/dist/tools/commander-project-create.d.ts +7 -0
- package/dist/tools/commander-project-create.d.ts.map +1 -0
- package/dist/tools/commander-project-create.js +130 -0
- package/dist/tools/commander-project-create.js.map +1 -0
- package/dist/tools/commander-project-get.d.ts +7 -0
- package/dist/tools/commander-project-get.d.ts.map +1 -0
- package/dist/tools/commander-project-get.js +107 -0
- package/dist/tools/commander-project-get.js.map +1 -0
- package/dist/tools/commander-project-list.d.ts +7 -0
- package/dist/tools/commander-project-list.d.ts.map +1 -0
- package/dist/tools/commander-project-list.js +104 -0
- package/dist/tools/commander-project-list.js.map +1 -0
- package/dist/tools/commander-project-update.d.ts +7 -0
- package/dist/tools/commander-project-update.d.ts.map +1 -0
- package/dist/tools/commander-project-update.js +126 -0
- package/dist/tools/commander-project-update.js.map +1 -0
- package/dist/tools/commander-project.d.ts +7 -0
- package/dist/tools/commander-project.d.ts.map +1 -0
- package/dist/tools/commander-project.js +144 -0
- package/dist/tools/commander-project.js.map +1 -0
- package/dist/tools/commander-role-assign.d.ts +7 -0
- package/dist/tools/commander-role-assign.d.ts.map +1 -0
- package/dist/tools/commander-role-assign.js +115 -0
- package/dist/tools/commander-role-assign.js.map +1 -0
- package/dist/tools/commander-role-create.d.ts +7 -0
- package/dist/tools/commander-role-create.d.ts.map +1 -0
- package/dist/tools/commander-role-create.js +130 -0
- package/dist/tools/commander-role-create.js.map +1 -0
- package/dist/tools/commander-role-get.d.ts +7 -0
- package/dist/tools/commander-role-get.d.ts.map +1 -0
- package/dist/tools/commander-role-get.js +108 -0
- package/dist/tools/commander-role-get.js.map +1 -0
- package/dist/tools/commander-role-list.d.ts +7 -0
- package/dist/tools/commander-role-list.d.ts.map +1 -0
- package/dist/tools/commander-role-list.js +106 -0
- package/dist/tools/commander-role-list.js.map +1 -0
- package/dist/tools/commander-role-update.d.ts +7 -0
- package/dist/tools/commander-role-update.d.ts.map +1 -0
- package/dist/tools/commander-role-update.js +126 -0
- package/dist/tools/commander-role-update.js.map +1 -0
- package/dist/tools/commander-search.d.ts +7 -0
- package/dist/tools/commander-search.d.ts.map +1 -0
- package/dist/tools/commander-search.js +146 -0
- package/dist/tools/commander-search.js.map +1 -0
- package/dist/tools/commander-sheet-create.d.ts +7 -0
- package/dist/tools/commander-sheet-create.d.ts.map +1 -0
- package/dist/tools/commander-sheet-create.js +160 -0
- package/dist/tools/commander-sheet-create.js.map +1 -0
- package/dist/tools/commander-sheet-get.d.ts +7 -0
- package/dist/tools/commander-sheet-get.d.ts.map +1 -0
- package/dist/tools/commander-sheet-get.js +128 -0
- package/dist/tools/commander-sheet-get.js.map +1 -0
- package/dist/tools/commander-sheet-list.d.ts +7 -0
- package/dist/tools/commander-sheet-list.d.ts.map +1 -0
- package/dist/tools/commander-sheet-list.js +108 -0
- package/dist/tools/commander-sheet-list.js.map +1 -0
- package/dist/tools/commander-sheet-update.d.ts +7 -0
- package/dist/tools/commander-sheet-update.d.ts.map +1 -0
- package/dist/tools/commander-sheet-update.js +163 -0
- package/dist/tools/commander-sheet-update.js.map +1 -0
- package/dist/tools/commander-status-list.d.ts +7 -0
- package/dist/tools/commander-status-list.d.ts.map +1 -0
- package/dist/tools/commander-status-list.js +103 -0
- package/dist/tools/commander-status-list.js.map +1 -0
- package/dist/tools/commander-task-assign.d.ts +7 -0
- package/dist/tools/commander-task-assign.d.ts.map +1 -0
- package/dist/tools/commander-task-assign.js +91 -0
- package/dist/tools/commander-task-assign.js.map +1 -0
- package/dist/tools/commander-task-create.d.ts +7 -0
- package/dist/tools/commander-task-create.d.ts.map +1 -0
- package/dist/tools/commander-task-create.js +142 -0
- package/dist/tools/commander-task-create.js.map +1 -0
- package/dist/tools/commander-task-delete.d.ts +7 -0
- package/dist/tools/commander-task-delete.d.ts.map +1 -0
- package/dist/tools/commander-task-delete.js +88 -0
- package/dist/tools/commander-task-delete.js.map +1 -0
- package/dist/tools/commander-task-list-mine.d.ts +7 -0
- package/dist/tools/commander-task-list-mine.d.ts.map +1 -0
- package/dist/tools/commander-task-list-mine.js +109 -0
- package/dist/tools/commander-task-list-mine.js.map +1 -0
- package/dist/tools/commander-task-read.d.ts +10 -0
- package/dist/tools/commander-task-read.d.ts.map +1 -0
- package/dist/tools/commander-task-read.js +96 -0
- package/dist/tools/commander-task-read.js.map +1 -0
- package/dist/tools/commander-task-update.d.ts +7 -0
- package/dist/tools/commander-task-update.d.ts.map +1 -0
- package/dist/tools/commander-task-update.js +159 -0
- package/dist/tools/commander-task-update.js.map +1 -0
- package/dist/tools/commander-taskboard-tasks.d.ts +7 -0
- package/dist/tools/commander-taskboard-tasks.d.ts.map +1 -0
- package/dist/tools/commander-taskboard-tasks.js +97 -0
- package/dist/tools/commander-taskboard-tasks.js.map +1 -0
- package/dist/tools/commander-team-add-member.d.ts +7 -0
- package/dist/tools/commander-team-add-member.d.ts.map +1 -0
- package/dist/tools/commander-team-add-member.js +104 -0
- package/dist/tools/commander-team-add-member.js.map +1 -0
- package/dist/tools/commander-team-create.d.ts +7 -0
- package/dist/tools/commander-team-create.d.ts.map +1 -0
- package/dist/tools/commander-team-create.js +117 -0
- package/dist/tools/commander-team-create.js.map +1 -0
- package/dist/tools/commander-team-list.d.ts +7 -0
- package/dist/tools/commander-team-list.d.ts.map +1 -0
- package/dist/tools/commander-team-list.js +94 -0
- package/dist/tools/commander-team-list.js.map +1 -0
- package/dist/tools/commander-team-remove-member.d.ts +7 -0
- package/dist/tools/commander-team-remove-member.d.ts.map +1 -0
- package/dist/tools/commander-team-remove-member.js +98 -0
- package/dist/tools/commander-team-remove-member.js.map +1 -0
- package/dist/tools/commander-user-get.d.ts +7 -0
- package/dist/tools/commander-user-get.d.ts.map +1 -0
- package/dist/tools/commander-user-get.js +101 -0
- package/dist/tools/commander-user-get.js.map +1 -0
- package/dist/tools/commander-user-invite.d.ts +7 -0
- package/dist/tools/commander-user-invite.d.ts.map +1 -0
- package/dist/tools/commander-user-invite.js +119 -0
- package/dist/tools/commander-user-invite.js.map +1 -0
- package/dist/tools/commander-user-list.d.ts +7 -0
- package/dist/tools/commander-user-list.d.ts.map +1 -0
- package/dist/tools/commander-user-list.js +108 -0
- package/dist/tools/commander-user-list.js.map +1 -0
- package/dist/tools/commander-workspace-create.d.ts +7 -0
- package/dist/tools/commander-workspace-create.d.ts.map +1 -0
- package/dist/tools/commander-workspace-create.js +124 -0
- package/dist/tools/commander-workspace-create.js.map +1 -0
- package/dist/tools/commander-workspace-list.d.ts +7 -0
- package/dist/tools/commander-workspace-list.d.ts.map +1 -0
- package/dist/tools/commander-workspace-list.js +95 -0
- package/dist/tools/commander-workspace-list.js.map +1 -0
- package/dist/tools/commander-workspace-update.d.ts +7 -0
- package/dist/tools/commander-workspace-update.d.ts.map +1 -0
- package/dist/tools/commander-workspace-update.js +118 -0
- package/dist/tools/commander-workspace-update.js.map +1 -0
- package/dist/tools/commander-workspace.d.ts +7 -0
- package/dist/tools/commander-workspace.d.ts.map +1 -0
- package/dist/tools/commander-workspace.js +131 -0
- package/dist/tools/commander-workspace.js.map +1 -0
- package/dist/tools/create-kanban.d.ts +7 -0
- package/dist/tools/create-kanban.d.ts.map +1 -0
- package/dist/tools/create-kanban.js +32 -0
- package/dist/tools/create-kanban.js.map +1 -0
- package/dist/tools/create-table.d.ts +7 -0
- package/dist/tools/create-table.d.ts.map +1 -0
- package/dist/tools/create-table.js +188 -0
- package/dist/tools/create-table.js.map +1 -0
- package/dist/tools/search-knowledge.d.ts +7 -0
- package/dist/tools/search-knowledge.d.ts.map +1 -0
- package/dist/tools/search-knowledge.js +33 -0
- package/dist/tools/search-knowledge.js.map +1 -0
- package/dist/tools/waymaker-kanban-view.d.ts +7 -0
- package/dist/tools/waymaker-kanban-view.d.ts.map +1 -0
- package/dist/tools/waymaker-kanban-view.js +255 -0
- package/dist/tools/waymaker-kanban-view.js.map +1 -0
- package/dist/tools/waymaker-sync-configure.d.ts +13 -0
- package/dist/tools/waymaker-sync-configure.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-configure.js +291 -0
- package/dist/tools/waymaker-sync-configure.js.map +1 -0
- package/dist/tools/waymaker-sync-file.d.ts +7 -0
- package/dist/tools/waymaker-sync-file.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-file.js +79 -0
- package/dist/tools/waymaker-sync-file.js.map +1 -0
- package/dist/tools/waymaker-sync-poll.d.ts +8 -0
- package/dist/tools/waymaker-sync-poll.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-poll.js +398 -0
- package/dist/tools/waymaker-sync-poll.js.map +1 -0
- package/dist/tools/waymaker-sync-start.d.ts +7 -0
- package/dist/tools/waymaker-sync-start.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-start.js +56 -0
- package/dist/tools/waymaker-sync-start.js.map +1 -0
- package/dist/tools/waymaker-sync-status.d.ts +7 -0
- package/dist/tools/waymaker-sync-status.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-status.js +45 -0
- package/dist/tools/waymaker-sync-status.js.map +1 -0
- package/dist/tools/waymaker-sync-stop.d.ts +7 -0
- package/dist/tools/waymaker-sync-stop.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-stop.js +56 -0
- package/dist/tools/waymaker-sync-stop.js.map +1 -0
- package/dist/tools/waymaker-sync-workspace.d.ts +26 -0
- package/dist/tools/waymaker-sync-workspace.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-workspace.js +148 -0
- package/dist/tools/waymaker-sync-workspace.js.map +1 -0
- package/dist/tools/waymaker-sync-workspace.tool.d.ts +9 -0
- package/dist/tools/waymaker-sync-workspace.tool.d.ts.map +1 -0
- package/dist/tools/waymaker-sync-workspace.tool.js +68 -0
- package/dist/tools/waymaker-sync-workspace.tool.js.map +1 -0
- package/dist/types/tool.d.ts +13 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +2 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/daemon-health.d.ts +21 -0
- package/dist/utils/daemon-health.d.ts.map +1 -0
- package/dist/utils/daemon-health.js +40 -0
- package/dist/utils/daemon-health.js.map +1 -0
- package/dist/utils/fetch-ipv4.d.ts +36 -0
- package/dist/utils/fetch-ipv4.d.ts.map +1 -0
- package/dist/utils/fetch-ipv4.js +91 -0
- package/dist/utils/fetch-ipv4.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waymaker Sync - Commander Client
|
|
3
|
+
* Wrapper around Commander edge functions for sync operations
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import { fetchIPv4PostJson } from '../utils/fetch-ipv4.js';
|
|
9
|
+
// Environment configuration
|
|
10
|
+
const WAYMAKER_APPS_URL = process.env.WAYMAKER_APPS_URL || 'https://apps.waymakerone.com';
|
|
11
|
+
const WAYMAKER_API_KEY = process.env.WAYMAKER_API_KEY;
|
|
12
|
+
/**
|
|
13
|
+
* Get auth token from ~/.waymaker/auth.json (OAuth flow)
|
|
14
|
+
* Auto-refreshes if token expires within 5 minutes
|
|
15
|
+
*/
|
|
16
|
+
function getOAuthToken() {
|
|
17
|
+
const authPath = path.join(process.env.HOME || '', '.waymaker', 'auth.json');
|
|
18
|
+
if (!fs.existsSync(authPath)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const authData = JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
23
|
+
const expiresAt = new Date(authData.expiresAt);
|
|
24
|
+
const now = new Date();
|
|
25
|
+
const fiveMinutesFromNow = new Date(now.getTime() + 5 * 60 * 1000);
|
|
26
|
+
// Token still valid and not expiring soon
|
|
27
|
+
if (expiresAt > fiveMinutesFromNow) {
|
|
28
|
+
return authData.accessToken;
|
|
29
|
+
}
|
|
30
|
+
// Token expired or expiring soon - try to refresh
|
|
31
|
+
if (authData.refreshToken) {
|
|
32
|
+
console.error('[CommanderClient] Token expiring soon, attempting refresh...');
|
|
33
|
+
const refreshed = refreshOAuthToken(authData.refreshToken, authPath);
|
|
34
|
+
if (refreshed) {
|
|
35
|
+
// Re-read the updated auth file
|
|
36
|
+
const newAuthData = JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
37
|
+
console.error('[CommanderClient] ✅ Token refreshed successfully');
|
|
38
|
+
return newAuthData.accessToken;
|
|
39
|
+
}
|
|
40
|
+
console.error('[CommanderClient] ⚠️ Token refresh failed, using existing token');
|
|
41
|
+
}
|
|
42
|
+
// Return existing token if still valid (even if expiring soon)
|
|
43
|
+
if (expiresAt > now) {
|
|
44
|
+
return authData.accessToken;
|
|
45
|
+
}
|
|
46
|
+
console.error('[CommanderClient] ❌ Token expired. Run: waymaker auth login');
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Ignore auth file read errors
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Refresh OAuth token using refresh token (synchronous for simplicity)
|
|
56
|
+
*/
|
|
57
|
+
function refreshOAuthToken(refreshToken, authPath) {
|
|
58
|
+
try {
|
|
59
|
+
// Use synchronous HTTP request for token refresh
|
|
60
|
+
// This is a workaround since getOAuthToken is sync
|
|
61
|
+
const url = new URL('https://apps.waymakerone.com/functions/v1/mcp-oauth-token');
|
|
62
|
+
const postData = JSON.stringify({
|
|
63
|
+
grant_type: 'refresh_token',
|
|
64
|
+
refresh_token: refreshToken,
|
|
65
|
+
});
|
|
66
|
+
// Synchronous request using execSync to call curl
|
|
67
|
+
const result = execSync(`curl -s -X POST "${url.toString()}" -H "Content-Type: application/json" -d '${postData}'`, { encoding: 'utf-8', timeout: 10000 });
|
|
68
|
+
const tokens = JSON.parse(result);
|
|
69
|
+
if (tokens.access_token) {
|
|
70
|
+
// Calculate new expiry (1 hour from now)
|
|
71
|
+
const expiresAt = new Date(Date.now() + (tokens.expires_in || 3600) * 1000);
|
|
72
|
+
// Update auth file
|
|
73
|
+
const authData = {
|
|
74
|
+
accessToken: tokens.access_token,
|
|
75
|
+
refreshToken: tokens.refresh_token || refreshToken,
|
|
76
|
+
expiresAt: expiresAt.toISOString(),
|
|
77
|
+
tokenType: tokens.token_type || 'Bearer',
|
|
78
|
+
};
|
|
79
|
+
fs.writeFileSync(authPath, JSON.stringify(authData, null, 2));
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error('[CommanderClient] Token refresh error:', error);
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export class CommanderClient {
|
|
90
|
+
apiKey;
|
|
91
|
+
baseUrl;
|
|
92
|
+
constructor(apiKey) {
|
|
93
|
+
// Priority: explicit apiKey > env var > OAuth token
|
|
94
|
+
this.apiKey = apiKey || WAYMAKER_API_KEY || getOAuthToken() || '';
|
|
95
|
+
this.baseUrl = WAYMAKER_APPS_URL;
|
|
96
|
+
if (!this.apiKey) {
|
|
97
|
+
throw new Error('Authentication required. Either:\n' +
|
|
98
|
+
' 1. Run: waymaker auth login (recommended)\n' +
|
|
99
|
+
' 2. Set WAYMAKER_API_KEY environment variable');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a new task in Commander
|
|
104
|
+
*/
|
|
105
|
+
async createTask(params) {
|
|
106
|
+
const response = await this.callEdgeFunction('commander-task-operations', {
|
|
107
|
+
action: 'create-task',
|
|
108
|
+
boardId: params.taskboard_id, // Edge function expects boardId
|
|
109
|
+
name: params.title, // Edge function expects name (maps to title in DB)
|
|
110
|
+
description: params.content, // Edge function expects description
|
|
111
|
+
statusSectionId: params.section_id, // Edge function expects statusSectionId
|
|
112
|
+
priority: params.priority,
|
|
113
|
+
assigneeId: params.assignee, // Edge function expects assigneeId
|
|
114
|
+
layerId: params.layer_id, // Edge function expects layerId
|
|
115
|
+
});
|
|
116
|
+
return response.task; // Edge function returns { success: true, task: enrichedTask }
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update an existing task
|
|
120
|
+
*/
|
|
121
|
+
async updateTask(params) {
|
|
122
|
+
// Build updates object with database column names
|
|
123
|
+
const updates = {
|
|
124
|
+
id: params.task_id, // Edge function expects 'id' not 'taskId'
|
|
125
|
+
};
|
|
126
|
+
if (params.title !== undefined)
|
|
127
|
+
updates.title = params.title;
|
|
128
|
+
if (params.content !== undefined)
|
|
129
|
+
updates.description = params.content;
|
|
130
|
+
if (params.priority !== undefined)
|
|
131
|
+
updates.priority = params.priority;
|
|
132
|
+
if (params.assignee !== undefined)
|
|
133
|
+
updates.assignee_id = params.assignee;
|
|
134
|
+
if (params.status !== undefined)
|
|
135
|
+
updates.status = params.status;
|
|
136
|
+
if (params.layer_id !== undefined)
|
|
137
|
+
updates.layer_id = params.layer_id;
|
|
138
|
+
const response = await this.callEdgeFunction('commander-task-operations', {
|
|
139
|
+
action: 'update-task',
|
|
140
|
+
...updates,
|
|
141
|
+
});
|
|
142
|
+
return response.task; // Edge function returns { success: true, task: enrichedTask }
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get a task by ID
|
|
146
|
+
*/
|
|
147
|
+
async getTask(taskId) {
|
|
148
|
+
const response = await this.callEdgeFunction('commander-task-operations', {
|
|
149
|
+
action: 'get-task',
|
|
150
|
+
taskId,
|
|
151
|
+
});
|
|
152
|
+
return response.data.task;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Delete a task
|
|
156
|
+
*/
|
|
157
|
+
async deleteTask(taskId) {
|
|
158
|
+
await this.callEdgeFunction('commander-task-operations', {
|
|
159
|
+
action: 'delete-task',
|
|
160
|
+
taskId,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* List all tasks in a taskboard
|
|
165
|
+
*/
|
|
166
|
+
async listTasks(taskboardId) {
|
|
167
|
+
const response = await this.callEdgeFunction('commander-task-operations', {
|
|
168
|
+
action: 'list-tasks',
|
|
169
|
+
taskboardId,
|
|
170
|
+
});
|
|
171
|
+
return response.data.tasks || [];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create a new document in Commander (legacy - uses documents table)
|
|
175
|
+
* @deprecated Use createMarkdownDocument for .md files
|
|
176
|
+
*/
|
|
177
|
+
async createDocument(params) {
|
|
178
|
+
const response = await this.callEdgeFunction('commander-document-operations', {
|
|
179
|
+
action: 'create',
|
|
180
|
+
data: {
|
|
181
|
+
title: params.title,
|
|
182
|
+
text_content: params.content, // Send as text_content for markdown
|
|
183
|
+
document_type: 'markdown', // Set document type for synced documents
|
|
184
|
+
file_extension: params.file_extension, // Store original file extension
|
|
185
|
+
source_app: 'waymaker-sync', // Mark as synced from IDE
|
|
186
|
+
project_id: params.project_id,
|
|
187
|
+
workspace_id: params.workspace_id,
|
|
188
|
+
organization_id: params.organization_id,
|
|
189
|
+
folder_id: params.folder_id,
|
|
190
|
+
sync_metadata: params.metadata || {}, // Use sync_metadata column name
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
return response.data;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Create a markdown document in Commander (uses markdown_documents table)
|
|
197
|
+
* This ensures documents open with MarkdownView.tsx with proper toolbar icons
|
|
198
|
+
* Uses upsert to handle re-syncs after clearing the sync index
|
|
199
|
+
*/
|
|
200
|
+
async createMarkdownDocument(params) {
|
|
201
|
+
const response = await this.callMarkdownEdgeFunction('markdown-operations', {
|
|
202
|
+
action: 'upsert', // Use upsert to handle duplicates on re-sync
|
|
203
|
+
data: {
|
|
204
|
+
title: params.title,
|
|
205
|
+
content: params.content,
|
|
206
|
+
workspace_id: params.workspace_id,
|
|
207
|
+
organization_id: params.organization_id,
|
|
208
|
+
project_id: params.project_id,
|
|
209
|
+
folder_id: params.folder_id,
|
|
210
|
+
description: params.description,
|
|
211
|
+
source_app: 'waymaker-sync',
|
|
212
|
+
sync_enabled: true,
|
|
213
|
+
sync_source: params.metadata,
|
|
214
|
+
status: 'private',
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
return response;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Update a markdown document in Commander (uses markdown_documents table)
|
|
221
|
+
*/
|
|
222
|
+
async updateMarkdownDocument(params) {
|
|
223
|
+
const response = await this.callMarkdownEdgeFunction('markdown-operations', {
|
|
224
|
+
action: 'update',
|
|
225
|
+
data: {
|
|
226
|
+
id: params.document_id,
|
|
227
|
+
title: params.title,
|
|
228
|
+
content: params.content,
|
|
229
|
+
folder_id: params.folder_id,
|
|
230
|
+
description: params.description,
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
return response;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Update an existing document
|
|
237
|
+
*/
|
|
238
|
+
async updateDocument(params) {
|
|
239
|
+
const response = await this.callEdgeFunction('commander-document-operations', {
|
|
240
|
+
action: 'update',
|
|
241
|
+
data: {
|
|
242
|
+
id: params.document_id,
|
|
243
|
+
title: params.title,
|
|
244
|
+
text_content: params.content, // Send as text_content for markdown updates
|
|
245
|
+
document_type: 'markdown', // Ensure document type stays markdown
|
|
246
|
+
file_extension: params.file_extension, // Update file extension if provided
|
|
247
|
+
workspace_id: params.workspace_id, // Allow updating workspace_id
|
|
248
|
+
organization_id: params.organization_id, // Allow updating organization_id
|
|
249
|
+
folder_id: params.folder_id,
|
|
250
|
+
sync_metadata: params.metadata, // Use sync_metadata column name
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
return response.data;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Get a document by ID
|
|
257
|
+
*/
|
|
258
|
+
async getDocument(documentId) {
|
|
259
|
+
const response = await this.callEdgeFunction('commander-document-operations', {
|
|
260
|
+
action: 'get-document',
|
|
261
|
+
documentId,
|
|
262
|
+
});
|
|
263
|
+
return response.data.document;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Delete a document
|
|
267
|
+
*/
|
|
268
|
+
async deleteDocument(documentId) {
|
|
269
|
+
await this.callEdgeFunction('commander-document-operations', {
|
|
270
|
+
action: 'delete-document',
|
|
271
|
+
documentId,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Create a new layer (epic) in Commander
|
|
276
|
+
*/
|
|
277
|
+
async createLayer(params) {
|
|
278
|
+
const response = await this.callEdgeFunction('commander-layer-operations', {
|
|
279
|
+
action: 'create-layer',
|
|
280
|
+
name: params.name,
|
|
281
|
+
taskboardId: params.taskboard_id,
|
|
282
|
+
description: params.description,
|
|
283
|
+
metadata: params.metadata || {},
|
|
284
|
+
});
|
|
285
|
+
return response.data.layer;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Update an existing layer
|
|
289
|
+
*/
|
|
290
|
+
async updateLayer(params) {
|
|
291
|
+
const response = await this.callEdgeFunction('commander-layer-operations', {
|
|
292
|
+
action: 'update-layer',
|
|
293
|
+
layerId: params.layer_id,
|
|
294
|
+
name: params.name,
|
|
295
|
+
description: params.description,
|
|
296
|
+
metadata: params.metadata,
|
|
297
|
+
});
|
|
298
|
+
return response.data.layer;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get a layer by ID
|
|
302
|
+
*/
|
|
303
|
+
async getLayer(layerId) {
|
|
304
|
+
const response = await this.callEdgeFunction('commander-layer-operations', {
|
|
305
|
+
action: 'get-layer',
|
|
306
|
+
layerId,
|
|
307
|
+
});
|
|
308
|
+
return response.data.layer;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Delete a layer
|
|
312
|
+
*/
|
|
313
|
+
async deleteLayer(layerId) {
|
|
314
|
+
await this.callEdgeFunction('commander-layer-operations', {
|
|
315
|
+
action: 'delete-layer',
|
|
316
|
+
layerId,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Generic edge function caller
|
|
321
|
+
*/
|
|
322
|
+
async callEdgeFunction(functionName, body) {
|
|
323
|
+
const url = `${this.baseUrl}/functions/v1/${functionName}`;
|
|
324
|
+
console.error(`[CommanderClient] POST ${url}`);
|
|
325
|
+
console.error(`[CommanderClient] Action: ${body.action || 'unknown'}`);
|
|
326
|
+
try {
|
|
327
|
+
const response = await fetchIPv4PostJson(url, body, { 'Authorization': `Bearer ${this.apiKey}` });
|
|
328
|
+
console.error(`[CommanderClient] Response: ${response.status} ${response.statusText}`);
|
|
329
|
+
if (!response.ok) {
|
|
330
|
+
console.error(`[CommanderClient] Error body: ${response.body.substring(0, 500)}`);
|
|
331
|
+
throw new Error(`Edge function ${functionName} failed: ${response.status} ${response.statusText}\n${response.body}`);
|
|
332
|
+
}
|
|
333
|
+
const result = response.json();
|
|
334
|
+
if (!result.success) {
|
|
335
|
+
console.error(`[CommanderClient] API error: ${result.message || 'Unknown error'}`);
|
|
336
|
+
throw new Error(`Edge function ${functionName} returned error: ${result.message || 'Unknown error'}`);
|
|
337
|
+
}
|
|
338
|
+
console.error(`[CommanderClient] Success: ${functionName}`);
|
|
339
|
+
return result;
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
console.error(`[CommanderClient] Exception: ${error instanceof Error ? error.message : String(error)}`);
|
|
343
|
+
if (error instanceof Error) {
|
|
344
|
+
throw error;
|
|
345
|
+
}
|
|
346
|
+
throw new Error(`Unknown error calling ${functionName}: ${String(error)}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Edge function caller for markdown-operations (different response format)
|
|
351
|
+
* Returns { data: {...} } instead of { success: true, data: {...} }
|
|
352
|
+
*/
|
|
353
|
+
async callMarkdownEdgeFunction(functionName, body) {
|
|
354
|
+
const url = `${this.baseUrl}/functions/v1/${functionName}`;
|
|
355
|
+
console.error(`[CommanderClient] POST ${url} (markdown)`);
|
|
356
|
+
console.error(`[CommanderClient] Action: ${body.action || 'unknown'}`);
|
|
357
|
+
try {
|
|
358
|
+
const response = await fetchIPv4PostJson(url, body, { 'Authorization': `Bearer ${this.apiKey}` });
|
|
359
|
+
console.error(`[CommanderClient] Response: ${response.status} ${response.statusText}`);
|
|
360
|
+
if (!response.ok) {
|
|
361
|
+
console.error(`[CommanderClient] Error body: ${response.body.substring(0, 500)}`);
|
|
362
|
+
throw new Error(`Edge function ${functionName} failed: ${response.status} ${response.statusText}\n${response.body}`);
|
|
363
|
+
}
|
|
364
|
+
const result = response.json();
|
|
365
|
+
// markdown-operations returns { data: {...} } or { error: '...' }
|
|
366
|
+
if (result.error) {
|
|
367
|
+
console.error(`[CommanderClient] API error: ${result.error}`);
|
|
368
|
+
throw new Error(`Edge function ${functionName} returned error: ${result.error}`);
|
|
369
|
+
}
|
|
370
|
+
console.error(`[CommanderClient] Success: ${functionName}`);
|
|
371
|
+
return result.data;
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
console.error(`[CommanderClient] Exception: ${error instanceof Error ? error.message : String(error)}`);
|
|
375
|
+
if (error instanceof Error) {
|
|
376
|
+
throw error;
|
|
377
|
+
}
|
|
378
|
+
throw new Error(`Unknown error calling ${functionName}: ${String(error)}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Search for tasks by metadata
|
|
383
|
+
*/
|
|
384
|
+
async searchTasksByMetadata(params) {
|
|
385
|
+
const tasks = await this.listTasks(params.taskboard_id);
|
|
386
|
+
// Filter tasks by metadata
|
|
387
|
+
return tasks.filter(task => {
|
|
388
|
+
if (!task.metadata)
|
|
389
|
+
return false;
|
|
390
|
+
return task.metadata[params.metadata_key] === params.metadata_value;
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Find task by file path (stored in metadata)
|
|
395
|
+
*/
|
|
396
|
+
async findTaskByFilePath(params) {
|
|
397
|
+
const tasks = await this.searchTasksByMetadata({
|
|
398
|
+
taskboard_id: params.taskboard_id,
|
|
399
|
+
metadata_key: 'file_path',
|
|
400
|
+
metadata_value: params.file_path,
|
|
401
|
+
});
|
|
402
|
+
return tasks.length > 0 ? tasks[0] : null;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=commander-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commander-client.js","sourceRoot":"","sources":["../../src/sync/commander-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waymaker Sync - Configuration Manager
|
|
3
|
+
* Handles reading, validating, and managing .commander/config.json
|
|
4
|
+
*/
|
|
5
|
+
import { WaymakerSyncConfig } from './types.js';
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
private configPath;
|
|
8
|
+
private config;
|
|
9
|
+
constructor(projectPath: string);
|
|
10
|
+
/**
|
|
11
|
+
* Load configuration from .commander/config.json
|
|
12
|
+
*/
|
|
13
|
+
load(): Promise<WaymakerSyncConfig>;
|
|
14
|
+
/**
|
|
15
|
+
* Save configuration to .commander/config.json
|
|
16
|
+
*/
|
|
17
|
+
save(config: WaymakerSyncConfig): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Create initial configuration
|
|
20
|
+
*/
|
|
21
|
+
createInitialConfig(params: {
|
|
22
|
+
workspace_id: string;
|
|
23
|
+
project_id: string;
|
|
24
|
+
organization_id: string;
|
|
25
|
+
taskboard_id?: string;
|
|
26
|
+
}): Promise<WaymakerSyncConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Validate configuration structure and required fields
|
|
29
|
+
*/
|
|
30
|
+
private validateConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Get current configuration (throws if not loaded)
|
|
33
|
+
*/
|
|
34
|
+
getConfig(): WaymakerSyncConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Update specific configuration fields
|
|
37
|
+
*/
|
|
38
|
+
updateConfig(updates: Partial<WaymakerSyncConfig>): Promise<WaymakerSyncConfig>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if configuration file exists
|
|
41
|
+
*/
|
|
42
|
+
exists(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get configuration file path
|
|
45
|
+
*/
|
|
46
|
+
getConfigPath(): string;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/sync/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAmC;gBAErC,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyBzC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE;QAChC,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyC/B;;OAEG;IACH,OAAO,CAAC,cAAc;IA6CtB;;OAEG;IACH,SAAS,IAAI,kBAAkB;IAO/B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOrF;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waymaker Sync - Configuration Manager
|
|
3
|
+
* Handles reading, validating, and managing .commander/config.json
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
export class ConfigManager {
|
|
8
|
+
configPath;
|
|
9
|
+
config = null;
|
|
10
|
+
constructor(projectPath) {
|
|
11
|
+
this.configPath = path.join(projectPath, '.commander', 'config.json');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load configuration from .commander/config.json
|
|
15
|
+
*/
|
|
16
|
+
async load() {
|
|
17
|
+
try {
|
|
18
|
+
if (!fs.existsSync(this.configPath)) {
|
|
19
|
+
throw new Error(`Configuration file not found: ${this.configPath}\n` +
|
|
20
|
+
'Run "waymaker sync init" to create configuration.');
|
|
21
|
+
}
|
|
22
|
+
const configData = fs.readFileSync(this.configPath, 'utf-8');
|
|
23
|
+
const config = JSON.parse(configData);
|
|
24
|
+
// Validate configuration
|
|
25
|
+
this.validateConfig(config);
|
|
26
|
+
this.config = config;
|
|
27
|
+
return config;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error instanceof Error) {
|
|
31
|
+
throw new Error(`Failed to load configuration: ${error.message}`);
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Save configuration to .commander/config.json
|
|
38
|
+
*/
|
|
39
|
+
async save(config) {
|
|
40
|
+
try {
|
|
41
|
+
// Ensure directory exists
|
|
42
|
+
const configDir = path.dirname(this.configPath);
|
|
43
|
+
if (!fs.existsSync(configDir)) {
|
|
44
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
// Update timestamp
|
|
47
|
+
config.updated_at = new Date().toISOString();
|
|
48
|
+
// Write configuration
|
|
49
|
+
fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
50
|
+
this.config = config;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof Error) {
|
|
54
|
+
throw new Error(`Failed to save configuration: ${error.message}`);
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create initial configuration
|
|
61
|
+
*/
|
|
62
|
+
async createInitialConfig(params) {
|
|
63
|
+
const config = {
|
|
64
|
+
workspace_id: params.workspace_id,
|
|
65
|
+
project_id: params.project_id,
|
|
66
|
+
organization_id: params.organization_id,
|
|
67
|
+
sync: {
|
|
68
|
+
enabled: true,
|
|
69
|
+
mode: 'bidirectional',
|
|
70
|
+
watch_patterns: [
|
|
71
|
+
'/docs/02-working/tasks/**/*.md',
|
|
72
|
+
'/docs/02-working/prompts/active/**/*.md',
|
|
73
|
+
'/docs/01-planning/epics/**/*.md',
|
|
74
|
+
'/docs/02-working/sessions/completed/**/*.md',
|
|
75
|
+
],
|
|
76
|
+
ignore_patterns: [
|
|
77
|
+
'**/node_modules/**',
|
|
78
|
+
'**/.git/**',
|
|
79
|
+
'**/dist/**',
|
|
80
|
+
'**/build/**',
|
|
81
|
+
'**/.env',
|
|
82
|
+
],
|
|
83
|
+
taskboard_id: params.taskboard_id || null,
|
|
84
|
+
sync_interval_ms: 5000,
|
|
85
|
+
},
|
|
86
|
+
app: {
|
|
87
|
+
app_id: null,
|
|
88
|
+
framework: null,
|
|
89
|
+
build_command: null,
|
|
90
|
+
output_dir: null,
|
|
91
|
+
},
|
|
92
|
+
created_at: new Date().toISOString(),
|
|
93
|
+
updated_at: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
await this.save(config);
|
|
96
|
+
return config;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validate configuration structure and required fields
|
|
100
|
+
*/
|
|
101
|
+
validateConfig(config) {
|
|
102
|
+
const errors = [];
|
|
103
|
+
// Required fields
|
|
104
|
+
if (!config.workspace_id) {
|
|
105
|
+
errors.push('workspace_id is required');
|
|
106
|
+
}
|
|
107
|
+
if (!config.project_id) {
|
|
108
|
+
errors.push('project_id is required');
|
|
109
|
+
}
|
|
110
|
+
if (!config.organization_id) {
|
|
111
|
+
errors.push('organization_id is required');
|
|
112
|
+
}
|
|
113
|
+
// Sync configuration
|
|
114
|
+
if (!config.sync) {
|
|
115
|
+
errors.push('sync configuration is required');
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
if (config.sync.mode !== 'bidirectional' &&
|
|
119
|
+
config.sync.mode !== 'ide-to-commander' &&
|
|
120
|
+
config.sync.mode !== 'commander-to-ide') {
|
|
121
|
+
errors.push('sync.mode must be one of: bidirectional, ide-to-commander, commander-to-ide');
|
|
122
|
+
}
|
|
123
|
+
if (!Array.isArray(config.sync.watch_patterns)) {
|
|
124
|
+
errors.push('sync.watch_patterns must be an array');
|
|
125
|
+
}
|
|
126
|
+
if (!Array.isArray(config.sync.ignore_patterns)) {
|
|
127
|
+
errors.push('sync.ignore_patterns must be an array');
|
|
128
|
+
}
|
|
129
|
+
if (typeof config.sync.sync_interval_ms !== 'number' || config.sync.sync_interval_ms < 1000) {
|
|
130
|
+
errors.push('sync.sync_interval_ms must be a number >= 1000');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (errors.length > 0) {
|
|
134
|
+
throw new Error('Configuration validation failed:\n' +
|
|
135
|
+
errors.map(e => ` - ${e}`).join('\n'));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get current configuration (throws if not loaded)
|
|
140
|
+
*/
|
|
141
|
+
getConfig() {
|
|
142
|
+
if (!this.config) {
|
|
143
|
+
throw new Error('Configuration not loaded. Call load() first.');
|
|
144
|
+
}
|
|
145
|
+
return this.config;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Update specific configuration fields
|
|
149
|
+
*/
|
|
150
|
+
async updateConfig(updates) {
|
|
151
|
+
const current = this.getConfig();
|
|
152
|
+
const updated = { ...current, ...updates };
|
|
153
|
+
await this.save(updated);
|
|
154
|
+
return updated;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if configuration file exists
|
|
158
|
+
*/
|
|
159
|
+
exists() {
|
|
160
|
+
return fs.existsSync(this.configPath);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get configuration file path
|
|
164
|
+
*/
|
|
165
|
+
getConfigPath() {
|
|
166
|
+
return this.configPath;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=config-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/sync/config-manager.ts"],"names":[],"mappings":"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"}
|