get_task_details.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "use strict";
  2. const DEFAULT_BASE_URL = process.env.TASK_BOARD_API_BASE || "http://127.0.0.1:3001";
  3. const DEFAULT_TOKEN = process.env.TASK_BOARD_ADMIN_TOKEN || "dev-task-board-token";
  4. async function getTaskDetails(taskId, options = {}) {
  5. const baseUrl = options.baseUrl || DEFAULT_BASE_URL;
  6. const token = options.token || DEFAULT_TOKEN;
  7. const response = await fetch(`${baseUrl.replace(/\/+$/, "")}/api/admin/nodes/${encodeURIComponent(taskId)}`, {
  8. headers: {
  9. "Content-Type": "application/json",
  10. Authorization: `Bearer ${token}`,
  11. },
  12. });
  13. const payload = await response.json().catch(() => ({}));
  14. if (!response.ok) {
  15. const message = payload.error || `Request failed: ${response.status}`;
  16. throw new Error(message);
  17. }
  18. return payload;
  19. }
  20. async function main() {
  21. const taskId = String(process.argv[2] || "").trim();
  22. if (!taskId) {
  23. console.error("Usage: node get_task_details.js <taskId>");
  24. process.exit(1);
  25. }
  26. try {
  27. const details = await getTaskDetails(taskId);
  28. process.stdout.write(`${JSON.stringify(details, null, 2)}\n`);
  29. } catch (error) {
  30. console.error(String(error.message || error));
  31. process.exit(1);
  32. }
  33. }
  34. if (require.main === module) {
  35. void main();
  36. }
  37. module.exports = {
  38. getTaskDetails,
  39. };