@brainfile/cli 0.11.1 → 0.12.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.
Files changed (75) hide show
  1. package/brainfile.md +82 -5
  2. package/dist/cli.js +30 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +15 -2
  5. package/dist/commands/archive.d.ts.map +1 -1
  6. package/dist/commands/archive.js +351 -23
  7. package/dist/commands/archive.js.map +1 -1
  8. package/dist/commands/auth.d.ts +26 -0
  9. package/dist/commands/auth.d.ts.map +1 -0
  10. package/dist/commands/auth.js +141 -0
  11. package/dist/commands/auth.js.map +1 -0
  12. package/dist/tui/BrainfileTUI.d.ts.map +1 -1
  13. package/dist/tui/BrainfileTUI.js +69 -36
  14. package/dist/tui/BrainfileTUI.js.map +1 -1
  15. package/dist/tui/components/ArchivePanel.d.ts +3 -2
  16. package/dist/tui/components/ArchivePanel.d.ts.map +1 -1
  17. package/dist/tui/components/ArchivePanel.js +7 -6
  18. package/dist/tui/components/ArchivePanel.js.map +1 -1
  19. package/dist/tui/components/Header.d.ts +4 -1
  20. package/dist/tui/components/Header.d.ts.map +1 -1
  21. package/dist/tui/components/Header.js +25 -1
  22. package/dist/tui/components/Header.js.map +1 -1
  23. package/dist/tui/components/HelpOverlay.d.ts +3 -1
  24. package/dist/tui/components/HelpOverlay.d.ts.map +1 -1
  25. package/dist/tui/components/HelpOverlay.js +38 -1
  26. package/dist/tui/components/HelpOverlay.js.map +1 -1
  27. package/dist/tui/components/MainPanelTabs.d.ts +3 -2
  28. package/dist/tui/components/MainPanelTabs.d.ts.map +1 -1
  29. package/dist/tui/components/MainPanelTabs.js +20 -1
  30. package/dist/tui/components/MainPanelTabs.js.map +1 -1
  31. package/dist/tui/components/RulesPanel.d.ts +3 -2
  32. package/dist/tui/components/RulesPanel.d.ts.map +1 -1
  33. package/dist/tui/components/RulesPanel.js +20 -6
  34. package/dist/tui/components/RulesPanel.js.map +1 -1
  35. package/dist/tui/components/StackedTaskList.d.ts +26 -0
  36. package/dist/tui/components/StackedTaskList.d.ts.map +1 -0
  37. package/dist/tui/components/StackedTaskList.js +120 -0
  38. package/dist/tui/components/StackedTaskList.js.map +1 -0
  39. package/dist/tui/components/StatusBar.d.ts +3 -2
  40. package/dist/tui/components/StatusBar.d.ts.map +1 -1
  41. package/dist/tui/components/StatusBar.js +6 -3
  42. package/dist/tui/components/StatusBar.js.map +1 -1
  43. package/dist/tui/components/TaskCard.d.ts +3 -1
  44. package/dist/tui/components/TaskCard.d.ts.map +1 -1
  45. package/dist/tui/components/TaskCard.js +3 -2
  46. package/dist/tui/components/TaskCard.js.map +1 -1
  47. package/dist/tui/components/index.d.ts +2 -0
  48. package/dist/tui/components/index.d.ts.map +1 -1
  49. package/dist/tui/components/index.js +4 -1
  50. package/dist/tui/components/index.js.map +1 -1
  51. package/dist/tui/hooks/useKeyboardNavigation.d.ts +6 -2
  52. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
  53. package/dist/tui/hooks/useKeyboardNavigation.js +88 -40
  54. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
  55. package/dist/tui/types.d.ts +9 -0
  56. package/dist/tui/types.d.ts.map +1 -1
  57. package/dist/tui/types.js +7 -1
  58. package/dist/tui/types.js.map +1 -1
  59. package/dist/utils/auth-store.d.ts +69 -0
  60. package/dist/utils/auth-store.d.ts.map +1 -0
  61. package/dist/utils/auth-store.js +308 -0
  62. package/dist/utils/auth-store.js.map +1 -0
  63. package/dist/utils/config.d.ts +89 -0
  64. package/dist/utils/config.d.ts.map +1 -0
  65. package/dist/utils/config.js +211 -0
  66. package/dist/utils/config.js.map +1 -0
  67. package/dist/utils/github-auth.d.ts +56 -0
  68. package/dist/utils/github-auth.d.ts.map +1 -0
  69. package/dist/utils/github-auth.js +341 -0
  70. package/dist/utils/github-auth.js.map +1 -0
  71. package/dist/utils/linear-auth.d.ts +59 -0
  72. package/dist/utils/linear-auth.d.ts.map +1 -0
  73. package/dist/utils/linear-auth.js +295 -0
  74. package/dist/utils/linear-auth.js.map +1 -0
  75. package/package.json +3 -2
package/brainfile.md CHANGED
@@ -12,14 +12,91 @@ columns:
12
12
  title: To Do
13
13
  tasks:
14
14
  - id: task-1
15
- title: Test
16
- description: "Working on the CLI project"
15
+ title: Implement dark mode toggle
16
+ description: "Add a toggle for switching between light and dark themes"
17
+ priority: high
18
+ tags:
19
+ - ui
20
+ - feature
21
+ subtasks:
22
+ - id: task-1-1
23
+ title: Create theme context
24
+ completed: true
25
+ - id: task-1-2
26
+ title: Add toggle component
27
+ completed: false
28
+ - id: task-1-3
29
+ title: Persist preference
30
+ completed: false
31
+ - id: task-2
32
+ title: Fix login timeout issue
33
+ description: "Users report being logged out after 5 minutes"
34
+ priority: critical
35
+ tags:
36
+ - bug
37
+ - auth
38
+ dueDate: "2025-12-01"
39
+ - id: task-3
40
+ title: Update API documentation
41
+ priority: low
42
+ tags:
43
+ - docs
44
+ - id: task-4
45
+ title: Refactor database queries
46
+ description: "Optimize slow queries in the dashboard module"
17
47
  priority: medium
18
- tags: []
48
+ tags:
49
+ - performance
50
+ - backend
51
+ subtasks:
52
+ - id: task-4-1
53
+ title: Identify slow queries
54
+ completed: true
55
+ - id: task-4-2
56
+ title: Add indexes
57
+ completed: true
58
+ - id: task-4-3
59
+ title: Test performance
60
+ completed: false
61
+ - id: task-5
62
+ title: Add unit tests for auth module
63
+ priority: high
64
+ tags:
65
+ - testing
66
+ dueDate: "2025-12-15"
19
67
  - id: in-progress
20
68
  title: In Progress
21
- tasks: []
69
+ tasks:
70
+ - id: task-6
71
+ title: Responsive TUI layout
72
+ description: "Implement narrow mode for terminals under 80 columns"
73
+ priority: high
74
+ tags:
75
+ - tui
76
+ - feature
77
+ subtasks:
78
+ - id: task-6-1
79
+ title: Add layout breakpoints
80
+ completed: true
81
+ - id: task-6-2
82
+ title: Create StackedTaskList
83
+ completed: true
84
+ - id: task-6-3
85
+ title: Update MainPanelTabs
86
+ completed: true
87
+ - id: task-6-4
88
+ title: Test narrow mode
89
+ completed: false
22
90
  - id: done
23
91
  title: Done
24
- tasks: []
92
+ tasks:
93
+ - id: task-7
94
+ title: TUI borderless redesign
95
+ priority: medium
96
+ tags:
97
+ - tui
98
+ - id: task-8
99
+ title: Terminal resize detection
100
+ tags:
101
+ - tui
25
102
  ---
package/dist/cli.js CHANGED
@@ -15,13 +15,14 @@ const patch_1 = require("./commands/patch");
15
15
  const delete_1 = require("./commands/delete");
16
16
  const archive_1 = require("./commands/archive");
17
17
  const restore_1 = require("./commands/restore");
18
+ const auth_1 = require("./commands/auth");
18
19
  const subtask_1 = require("./commands/subtask");
19
20
  const mcp_1 = require("./commands/mcp");
20
21
  const hooks_1 = require("./commands/hooks");
21
22
  // Read version from package.json
22
23
  const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', 'package.json'), 'utf8'));
23
24
  // Known subcommands to distinguish from file paths
24
- const SUBCOMMANDS = ['init', 'list', 'add', 'move', 'patch', 'delete', 'archive', 'restore', 'subtask', 'template', 'lint', 'tui', 'hooks', 'mcp', 'help'];
25
+ const SUBCOMMANDS = ['init', 'list', 'add', 'move', 'patch', 'delete', 'archive', 'restore', 'subtask', 'template', 'lint', 'tui', 'hooks', 'mcp', 'auth', 'help'];
25
26
  // Check if first arg looks like a file path (not a subcommand or flag)
26
27
  function shouldLaunchTUI() {
27
28
  const args = process.argv.slice(2);
@@ -112,9 +113,12 @@ else {
112
113
  .action(delete_1.deleteCommand);
113
114
  program
114
115
  .command('archive')
115
- .description('Move a task to the archive')
116
+ .description('Archive a task (locally or to GitHub/Linear)')
116
117
  .option('-f, --file <path>', 'Path to brainfile.md file', 'brainfile.md')
117
- .option('-t, --task <id>', 'Task ID to archive (required)')
118
+ .option('-t, --task <id>', 'Task ID to archive')
119
+ .option('--to <destination>', 'Archive destination: local, github, or linear')
120
+ .option('--all', 'Archive all tasks from local archive to external service')
121
+ .option('--dry-run', 'Preview what would be created without making changes')
118
122
  .action(archive_1.archiveCommand);
119
123
  program
120
124
  .command('restore')
@@ -193,6 +197,29 @@ else {
193
197
  .command('list [tool]')
194
198
  .description('List installed brainfile hooks')
195
199
  .action((tool) => (0, hooks_1.listCommand)({ tool }));
200
+ // Add auth command group
201
+ const authCommand = program
202
+ .command('auth')
203
+ .description('Manage authentication for external services (GitHub, Linear)');
204
+ authCommand
205
+ .command('github')
206
+ .description('Authenticate with GitHub')
207
+ .option('--token <token>', 'Personal Access Token (or use OAuth device flow)')
208
+ .action(auth_1.githubAuthCommand);
209
+ authCommand
210
+ .command('linear')
211
+ .description('Authenticate with Linear')
212
+ .option('--token <token>', 'Linear API key (required)')
213
+ .action(auth_1.linearAuthCommand);
214
+ authCommand
215
+ .command('status')
216
+ .description('Show authentication status for all providers')
217
+ .action(auth_1.authStatusCommand);
218
+ authCommand
219
+ .command('logout [provider]')
220
+ .description('Log out from a provider (github, linear, or --all)')
221
+ .option('--all', 'Log out from all providers')
222
+ .action(auth_1.authLogoutCommand);
196
223
  program
197
224
  .command('mcp')
198
225
  .description('Start MCP server for AI assistant integration')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,2BAA8C;AAC9C,+BAA4B;AAC5B,0CAA8C;AAC9C,wCAA4C;AAC5C,0CAA8C;AAC9C,kDAAsD;AACtD,0CAA8C;AAC9C,0CAA8C;AAC9C,wCAA4C;AAC5C,4CAAgD;AAChD,8CAAkD;AAClD,gDAAoD;AACpD,gDAAoD;AACpD,gDAAoD;AACpD,wCAA4C;AAC5C,4CAO0B;AAE1B,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC5D,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE3J,uEAAuE;AACvE,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,kCAAkC;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,kDAAkD;IAClD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;YACrE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,uDAAuD;IACvD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,sFAAsF;IACtF,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,yEAAyE;IACzE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;AACnC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpB,IAAA,gBAAU,EAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;KAAM,CAAC;IAER,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,qOAAqO,CAAC;SAClP,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEhC,oBAAoB;IACpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;SAC5C,MAAM,CAAC,kBAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;SAC3C,MAAM,CAAC,kBAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;SACtD,MAAM,CAAC,wBAAwB,EAAE,8CAA8C,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SAC/D,MAAM,CAAC,gBAAU,CAAC,CAAC;IAEtB,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;SAC1C,MAAM,CAAC,0BAA0B,EAAE,sBAAsB,CAAC;SAC1D,MAAM,CAAC,wBAAwB,EAAE,6DAA6D,CAAC;SAC/F,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;SAC7C,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;SAC7C,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;SAC7C,MAAM,CAAC,oBAAY,CAAC,CAAC;IAExB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,6BAA6B,CAAC;SAChD,MAAM,CAAC,sBAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,wBAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;SACpE,MAAM,CAAC,wBAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;SACnD,MAAM,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;SAC5D,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;SACpD,MAAM,CAAC,wBAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;SACpE,MAAM,CAAC,kBAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,YAAY,EAAE,8BAA8B,CAAC;SACpD,MAAM,CAAC,yBAAyB,EAAE,2BAA2B,CAAC;SAC9D,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;SAC3D,MAAM,CAAC,sBAAsB,EAAE,uCAAuC,CAAC;SACvE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,0BAAe,CAAC,CAAC;IAE3B,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,OAAO,EAAE,wCAAwC,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,kDAAkD,CAAC;SACrE,MAAM,CAAC,kBAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,gBAAU,CAAC,CAAC;IAEtB,0BAA0B;IAC1B,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC,CAAC;IAEpD,YAAY;SACT,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,wBAAgB,CAAC,CAAC;IAE5B,YAAY;SACT,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,2BAAmB,CAAC,CAAC;IAE/B,YAAY;SACT,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,2BAAmB,CAAC,CAAC;IAE/B,YAAY;SACT,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,EAAE,MAAM,CAAC;SACxE,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7E,YAAY;SACT,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,EAAE,MAAM,CAAC;SACnF,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE/E,YAAY;SACT,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAgB,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;SACxE,MAAM,CAAC,gBAAU,CAAC,CAAC;IAEtB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,CAAC,CAAC,kCAAkC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,20 @@
1
+ /**
2
+ * Archive command for Brainfile CLI
3
+ *
4
+ * Supports archiving to:
5
+ * - local: Move to local archive section (default)
6
+ * - github: Create closed GitHub Issue
7
+ * - linear: Create completed Linear issue
8
+ *
9
+ * @packageDocumentation
10
+ */
1
11
  interface ArchiveOptions {
2
12
  file: string;
3
- task: string;
13
+ task?: string;
14
+ to?: 'local' | 'github' | 'linear';
15
+ all?: boolean;
16
+ dryRun?: boolean;
4
17
  }
5
- export declare function archiveCommand(options: ArchiveOptions): void;
18
+ export declare function archiveCommand(options: ArchiveOptions): Promise<void>;
6
19
  export {};
7
20
  //# sourceMappingURL=archive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAaA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,QAwDrD"}
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+BH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBA0D3D"}
@@ -1,4 +1,14 @@
1
1
  "use strict";
2
+ /**
3
+ * Archive command for Brainfile CLI
4
+ *
5
+ * Supports archiving to:
6
+ * - local: Move to local archive section (default)
7
+ * - github: Create closed GitHub Issue
8
+ * - linear: Create completed Linear issue
9
+ *
10
+ * @packageDocumentation
11
+ */
2
12
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
13
  if (k2 === undefined) k2 = k;
4
14
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -42,11 +52,17 @@ const path = __importStar(require("path"));
42
52
  const core_1 = require("@brainfile/core");
43
53
  const chalk_1 = __importDefault(require("chalk"));
44
54
  const errorHandler_1 = require("../utils/errorHandler");
45
- function archiveCommand(options) {
55
+ const config_1 = require("../utils/config");
56
+ const github_auth_1 = require("../utils/github-auth");
57
+ const linear_auth_1 = require("../utils/linear-auth");
58
+ // ============================================================================
59
+ // Main Command
60
+ // ============================================================================
61
+ async function archiveCommand(options) {
46
62
  try {
47
- // Validate required options
48
- if (!options.task) {
49
- (0, errorHandler_1.missingRequiredError)('--task', 'brainfile archive --task <task-id>');
63
+ // Validate: need either --task or --all
64
+ if (!options.task && !options.all) {
65
+ (0, errorHandler_1.missingRequiredError)('--task or --all', 'brainfile archive --task <task-id>');
50
66
  }
51
67
  // Resolve file path
52
68
  const filePath = path.resolve(options.file);
@@ -61,31 +77,343 @@ function archiveCommand(options) {
61
77
  (0, errorHandler_1.parseError)(result.error);
62
78
  }
63
79
  const board = result.board;
64
- // Find the task
65
- const taskInfo = (0, core_1.findTaskById)(board, options.task);
66
- if (!taskInfo) {
67
- (0, errorHandler_1.taskNotFoundError)(options.task, board);
80
+ // Determine destination
81
+ const brainfileDestination = board.archive?.destination;
82
+ const destination = options.to ||
83
+ (0, config_1.getEffectiveArchiveDestination)(brainfileDestination);
84
+ // Validate destination auth if needed
85
+ if (destination === 'github' && !(await (0, github_auth_1.isGitHubAuthenticated)())) {
86
+ console.log(chalk_1.default.red('✗') + ' Not authenticated with GitHub.');
87
+ console.log('');
88
+ console.log('Run: ' + chalk_1.default.cyan('brainfile auth github'));
89
+ process.exit(1);
68
90
  }
69
- const { task, column } = taskInfo;
70
- // Archive task using core operation
71
- const archiveResult = (0, core_1.archiveTask)(board, column.id, options.task);
72
- if (!archiveResult.success) {
73
- (0, errorHandler_1.operationError)(archiveResult.error);
91
+ if (destination === 'linear' && !(await (0, linear_auth_1.isLinearAuthenticated)())) {
92
+ console.log(chalk_1.default.red('✗') + ' Not authenticated with Linear.');
93
+ console.log('');
94
+ console.log('Run: ' + chalk_1.default.cyan('brainfile auth linear --token <api-key>'));
95
+ process.exit(1);
74
96
  }
75
- // Serialize and write back
76
- const updatedContent = core_1.Brainfile.serialize(archiveResult.board);
97
+ // Handle --all flag (archive all from local archive to external)
98
+ if (options.all) {
99
+ await archiveAllToExternal(filePath, board, destination, options.dryRun);
100
+ return;
101
+ }
102
+ // Single task archive
103
+ if (options.task) {
104
+ await archiveSingleTask(filePath, board, options.task, destination, options.dryRun);
105
+ }
106
+ }
107
+ catch (error) {
108
+ (0, errorHandler_1.handleError)(error);
109
+ }
110
+ }
111
+ // ============================================================================
112
+ // Single Task Archive
113
+ // ============================================================================
114
+ async function archiveSingleTask(filePath, board, taskId, destination, dryRun) {
115
+ // Find the task
116
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
117
+ if (!taskInfo) {
118
+ (0, errorHandler_1.taskNotFoundError)(taskId, board);
119
+ return;
120
+ }
121
+ const { task, column } = taskInfo;
122
+ if (dryRun) {
123
+ console.log(chalk_1.default.yellow('DRY RUN') + ' - No changes will be made');
124
+ console.log('');
125
+ }
126
+ // Archive based on destination
127
+ if (destination === 'local') {
128
+ await archiveToLocal(filePath, board, task, column.id, column.title, dryRun);
129
+ }
130
+ else if (destination === 'github') {
131
+ await archiveToGitHub(filePath, board, task, column.id, column.title, dryRun);
132
+ }
133
+ else if (destination === 'linear') {
134
+ await archiveToLinear(filePath, board, task, column.id, column.title, dryRun);
135
+ }
136
+ }
137
+ // ============================================================================
138
+ // Local Archive
139
+ // ============================================================================
140
+ async function archiveToLocal(filePath, board, task, columnId, columnTitle, dryRun) {
141
+ if (dryRun) {
142
+ console.log(`Would archive task ${chalk_1.default.cyan(task.id)} to local archive`);
143
+ return;
144
+ }
145
+ const archiveResult = (0, core_1.archiveTask)(board, columnId, task.id);
146
+ if (!archiveResult.success) {
147
+ (0, errorHandler_1.operationError)(archiveResult.error);
148
+ return;
149
+ }
150
+ // Write back
151
+ const updatedContent = core_1.Brainfile.serialize(archiveResult.board);
152
+ fs.writeFileSync(filePath, updatedContent, 'utf-8');
153
+ // Success message
154
+ console.log(chalk_1.default.green('✓') + ' Task archived locally');
155
+ console.log('');
156
+ console.log(chalk_1.default.gray(` Task: ${task.id} - ${task.title}`));
157
+ console.log(chalk_1.default.gray(` From: ${columnTitle}`));
158
+ console.log(chalk_1.default.gray(` To: Local Archive`));
159
+ console.log('');
160
+ console.log(chalk_1.default.gray('Use "brainfile restore" to restore this task.'));
161
+ }
162
+ // ============================================================================
163
+ // GitHub Archive
164
+ // ============================================================================
165
+ async function archiveToGitHub(filePath, board, task, columnId, columnTitle, dryRun) {
166
+ const config = (0, config_1.getArchiveConfig)();
167
+ const github = config.github;
168
+ if (!github?.owner || !github?.repo) {
169
+ console.log(chalk_1.default.red('✗') + ' GitHub owner/repo not configured.');
170
+ console.log('');
171
+ console.log('Set up GitHub config:');
172
+ console.log(chalk_1.default.cyan(' brainfile config set archive.github.owner <owner>'));
173
+ console.log(chalk_1.default.cyan(' brainfile config set archive.github.repo <repo>'));
174
+ console.log('');
175
+ console.log('Or add to ~/.config/brainfile/config.json:');
176
+ console.log(chalk_1.default.gray(JSON.stringify({ archive: { github: { owner: 'myorg', repo: 'myrepo' } } }, null, 2)));
177
+ process.exit(1);
178
+ }
179
+ // Format task for GitHub
180
+ const payload = (0, core_1.formatTaskForGitHub)(task, {
181
+ includeMeta: true,
182
+ includeSubtasks: true,
183
+ includeRelatedFiles: true,
184
+ boardTitle: board.title,
185
+ fromColumn: columnTitle,
186
+ extraLabels: github.labels,
187
+ });
188
+ if (dryRun) {
189
+ console.log(`Would create GitHub Issue in ${chalk_1.default.cyan(`${github.owner}/${github.repo}`)}:`);
190
+ console.log('');
191
+ console.log(chalk_1.default.bold('Title:'), payload.title);
192
+ console.log(chalk_1.default.bold('Labels:'), payload.labels?.join(', ') || 'none');
193
+ console.log(chalk_1.default.bold('State:'), payload.state);
194
+ console.log('');
195
+ console.log(chalk_1.default.bold('Body:'));
196
+ console.log(chalk_1.default.gray(payload.body.substring(0, 500) + (payload.body.length > 500 ? '...' : '')));
197
+ return;
198
+ }
199
+ console.log(`Creating GitHub Issue in ${chalk_1.default.cyan(`${github.owner}/${github.repo}`)}...`);
200
+ const result = await (0, github_auth_1.createGitHubIssue)({
201
+ owner: github.owner,
202
+ repo: github.repo,
203
+ title: payload.title,
204
+ body: payload.body,
205
+ labels: payload.labels,
206
+ state: payload.state,
207
+ });
208
+ if (!result.success) {
209
+ console.log(chalk_1.default.red('✗') + ` Failed to create issue: ${result.error}`);
210
+ process.exit(1);
211
+ }
212
+ // Remove task from board (delete, not archive locally)
213
+ const deleteResult = (0, core_1.deleteTask)(board, columnId, task.id);
214
+ if (deleteResult.success) {
215
+ const updatedContent = core_1.Brainfile.serialize(deleteResult.board);
77
216
  fs.writeFileSync(filePath, updatedContent, 'utf-8');
78
- // Success message
79
- console.log(chalk_1.default.green('Task archived successfully!'));
217
+ }
218
+ // Success message
219
+ console.log('');
220
+ console.log(chalk_1.default.green('✓') + ` Created GitHub Issue #${result.issueNumber} (closed)`);
221
+ console.log('');
222
+ console.log(chalk_1.default.gray(` Task: ${task.id} - ${task.title}`));
223
+ console.log(chalk_1.default.gray(` From: ${columnTitle}`));
224
+ console.log(chalk_1.default.gray(` To: ${result.issueUrl}`));
225
+ console.log('');
226
+ console.log(`View: ${chalk_1.default.underline(result.issueUrl)}`);
227
+ }
228
+ // ============================================================================
229
+ // Linear Archive
230
+ // ============================================================================
231
+ async function archiveToLinear(filePath, board, task, columnId, columnTitle, dryRun) {
232
+ const config = (0, config_1.getArchiveConfig)();
233
+ let teamId = config.linear?.teamId;
234
+ // If no teamId configured, try to get it interactively
235
+ if (!teamId) {
236
+ const teams = await (0, linear_auth_1.getLinearTeams)();
237
+ if (teams.length === 0) {
238
+ console.log(chalk_1.default.red('✗') + ' No Linear teams found or not authenticated.');
239
+ process.exit(1);
240
+ }
241
+ if (teams.length === 1) {
242
+ teamId = teams[0].id;
243
+ console.log(chalk_1.default.gray(`Using team: ${teams[0].name}`));
244
+ }
245
+ else {
246
+ console.log(chalk_1.default.red('✗') + ' Multiple Linear teams found. Please configure a default:');
247
+ console.log('');
248
+ console.log('Available teams:');
249
+ teams.forEach((t) => console.log(` ${t.key}: ${t.name} (${t.id})`));
250
+ console.log('');
251
+ console.log('Set the default team:');
252
+ console.log(chalk_1.default.cyan(` brainfile config set archive.linear.teamId <team-id>`));
253
+ process.exit(1);
254
+ }
255
+ }
256
+ // Format task for Linear
257
+ const payload = (0, core_1.formatTaskForLinear)(task, {
258
+ includeMeta: true,
259
+ includeSubtasks: true,
260
+ includeRelatedFiles: true,
261
+ boardTitle: board.title,
262
+ fromColumn: columnTitle,
263
+ stateName: 'Done',
264
+ });
265
+ if (dryRun) {
266
+ console.log(`Would create Linear Issue in team ${chalk_1.default.cyan(teamId)}:`);
80
267
  console.log('');
81
- console.log(chalk_1.default.gray(` Task: ${task.id} - ${task.title}`));
82
- console.log(chalk_1.default.gray(` From: ${column.title}`));
83
- console.log(chalk_1.default.gray(` To: Archive`));
268
+ console.log(chalk_1.default.bold('Title:'), payload.title);
269
+ console.log(chalk_1.default.bold('Priority:'), payload.priority || 'none');
270
+ console.log(chalk_1.default.bold('Labels:'), payload.labelNames?.join(', ') || 'none');
271
+ console.log(chalk_1.default.bold('State:'), payload.stateName);
84
272
  console.log('');
85
- console.log(chalk_1.default.gray('Use "brainfile restore" to restore this task.'));
273
+ console.log(chalk_1.default.bold('Description:'));
274
+ console.log(chalk_1.default.gray(payload.description.substring(0, 500) + (payload.description.length > 500 ? '...' : '')));
275
+ return;
86
276
  }
87
- catch (error) {
88
- (0, errorHandler_1.handleError)(error);
277
+ console.log('Creating Linear Issue...');
278
+ const result = await (0, linear_auth_1.createLinearIssue)({
279
+ teamId,
280
+ title: payload.title,
281
+ description: payload.description,
282
+ priority: payload.priority,
283
+ labelNames: payload.labelNames,
284
+ stateName: payload.stateName,
285
+ });
286
+ if (!result.success) {
287
+ console.log(chalk_1.default.red('✗') + ` Failed to create issue: ${result.error}`);
288
+ process.exit(1);
289
+ }
290
+ // Remove task from board
291
+ const deleteResult = (0, core_1.deleteTask)(board, columnId, task.id);
292
+ if (deleteResult.success) {
293
+ const updatedContent = core_1.Brainfile.serialize(deleteResult.board);
294
+ fs.writeFileSync(filePath, updatedContent, 'utf-8');
295
+ }
296
+ // Success message
297
+ console.log('');
298
+ console.log(chalk_1.default.green('✓') + ` Created Linear Issue ${result.issueId} (Done)`);
299
+ console.log('');
300
+ console.log(chalk_1.default.gray(` Task: ${task.id} - ${task.title}`));
301
+ console.log(chalk_1.default.gray(` From: ${columnTitle}`));
302
+ console.log(chalk_1.default.gray(` To: ${result.issueUrl}`));
303
+ console.log('');
304
+ console.log(`View: ${chalk_1.default.underline(result.issueUrl)}`);
305
+ }
306
+ // ============================================================================
307
+ // Archive All (from local archive to external)
308
+ // ============================================================================
309
+ async function archiveAllToExternal(filePath, board, destination, dryRun) {
310
+ if (destination === 'local') {
311
+ console.log(chalk_1.default.yellow('Note:') + ' --all with --to=local has no effect (tasks are already archived)');
312
+ return;
313
+ }
314
+ const archivedTasks = board.archive || [];
315
+ if (archivedTasks.length === 0) {
316
+ console.log('No tasks in local archive to export.');
317
+ return;
318
+ }
319
+ console.log(`Found ${archivedTasks.length} task(s) in local archive.`);
320
+ console.log('');
321
+ if (dryRun) {
322
+ console.log(chalk_1.default.yellow('DRY RUN') + ' - No changes will be made');
323
+ console.log('');
324
+ for (const task of archivedTasks) {
325
+ console.log(` Would archive: ${task.id} - ${task.title}`);
326
+ }
327
+ return;
328
+ }
329
+ let successCount = 0;
330
+ let failCount = 0;
331
+ let updatedBoard = board;
332
+ for (const task of archivedTasks) {
333
+ console.log(`Archiving ${task.id}...`);
334
+ try {
335
+ if (destination === 'github') {
336
+ const config = (0, config_1.getArchiveConfig)();
337
+ const github = config.github;
338
+ if (!github?.owner || !github?.repo) {
339
+ console.log(chalk_1.default.red('✗') + ' GitHub not configured');
340
+ failCount++;
341
+ continue;
342
+ }
343
+ const payload = (0, core_1.formatTaskForGitHub)(task, {
344
+ includeMeta: true,
345
+ boardTitle: board.title,
346
+ fromColumn: 'Archive',
347
+ });
348
+ const result = await (0, github_auth_1.createGitHubIssue)({
349
+ owner: github.owner,
350
+ repo: github.repo,
351
+ title: payload.title,
352
+ body: payload.body,
353
+ labels: payload.labels,
354
+ state: 'closed',
355
+ });
356
+ if (result.success) {
357
+ // Remove from archive
358
+ updatedBoard = {
359
+ ...updatedBoard,
360
+ archive: updatedBoard.archive?.filter((t) => t.id !== task.id),
361
+ };
362
+ console.log(chalk_1.default.green(' ✓') + ` Created #${result.issueNumber}`);
363
+ successCount++;
364
+ }
365
+ else {
366
+ console.log(chalk_1.default.red(' ✗') + ` Failed: ${result.error}`);
367
+ failCount++;
368
+ }
369
+ }
370
+ else if (destination === 'linear') {
371
+ const config = (0, config_1.getArchiveConfig)();
372
+ const teamId = config.linear?.teamId;
373
+ if (!teamId) {
374
+ console.log(chalk_1.default.red('✗') + ' Linear teamId not configured');
375
+ failCount++;
376
+ continue;
377
+ }
378
+ const payload = (0, core_1.formatTaskForLinear)(task, {
379
+ includeMeta: true,
380
+ boardTitle: board.title,
381
+ fromColumn: 'Archive',
382
+ stateName: 'Done',
383
+ });
384
+ const result = await (0, linear_auth_1.createLinearIssue)({
385
+ teamId,
386
+ title: payload.title,
387
+ description: payload.description,
388
+ priority: payload.priority,
389
+ stateName: 'Done',
390
+ });
391
+ if (result.success) {
392
+ // Remove from archive
393
+ updatedBoard = {
394
+ ...updatedBoard,
395
+ archive: updatedBoard.archive?.filter((t) => t.id !== task.id),
396
+ };
397
+ console.log(chalk_1.default.green(' ✓') + ` Created ${result.issueId}`);
398
+ successCount++;
399
+ }
400
+ else {
401
+ console.log(chalk_1.default.red(' ✗') + ` Failed: ${result.error}`);
402
+ failCount++;
403
+ }
404
+ }
405
+ }
406
+ catch (error) {
407
+ console.log(chalk_1.default.red(' ✗') + ` Error: ${error}`);
408
+ failCount++;
409
+ }
410
+ }
411
+ // Write updated board
412
+ if (successCount > 0) {
413
+ const updatedContent = core_1.Brainfile.serialize(updatedBoard);
414
+ fs.writeFileSync(filePath, updatedContent, 'utf-8');
89
415
  }
416
+ console.log('');
417
+ console.log(`Done: ${chalk_1.default.green(successCount + ' succeeded')}, ${chalk_1.default.red(failCount + ' failed')}`);
90
418
  }
91
419
  //# sourceMappingURL=archive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,wCAwDC;AA1ED,uCAAyB;AACzB,2CAA6B;AAC7B,0CAAuE;AACvE,kDAA0B;AAC1B,wDAO+B;AAO/B,SAAgB,cAAc,CAAC,OAAuB;IACpD,IAAI,CAAC;QACH,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,mCAAoB,EAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QACvE,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAA,gCAAiB,EAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,gBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,IAAA,yBAAU,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAA,gCAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAElC,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAA,kBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAA,6BAAc,EAAC,aAAa,CAAC,KAAM,CAAC,CAAC;QACvC,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,gBAAS,CAAC,SAAS,CAAC,aAAa,CAAC,KAAM,CAAC,CAAC;QACjE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAEpD,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAE3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,0BAAW,EAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"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"}