orka-cli 1.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.
Files changed (288) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/CONTRIBUTING.md +59 -0
  3. package/README.md +208 -0
  4. package/dist/agents/base-agent.d.ts +48 -0
  5. package/dist/agents/base-agent.d.ts.map +1 -0
  6. package/dist/agents/base-agent.js +59 -0
  7. package/dist/agents/base-agent.js.map +1 -0
  8. package/dist/agents/builder.d.ts +53 -0
  9. package/dist/agents/builder.d.ts.map +1 -0
  10. package/dist/agents/builder.js +147 -0
  11. package/dist/agents/builder.js.map +1 -0
  12. package/dist/agents/coordinator.d.ts +45 -0
  13. package/dist/agents/coordinator.d.ts.map +1 -0
  14. package/dist/agents/coordinator.js +201 -0
  15. package/dist/agents/coordinator.js.map +1 -0
  16. package/dist/agents/index.d.ts +8 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +7 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/reviewer.d.ts +39 -0
  21. package/dist/agents/reviewer.d.ts.map +1 -0
  22. package/dist/agents/reviewer.js +119 -0
  23. package/dist/agents/reviewer.js.map +1 -0
  24. package/dist/agents/scout.d.ts +35 -0
  25. package/dist/agents/scout.d.ts.map +1 -0
  26. package/dist/agents/scout.js +76 -0
  27. package/dist/agents/scout.js.map +1 -0
  28. package/dist/agents/tester.d.ts +25 -0
  29. package/dist/agents/tester.d.ts.map +1 -0
  30. package/dist/agents/tester.js +76 -0
  31. package/dist/agents/tester.js.map +1 -0
  32. package/dist/cli/board.d.ts +28 -0
  33. package/dist/cli/board.d.ts.map +1 -0
  34. package/dist/cli/board.js +178 -0
  35. package/dist/cli/board.js.map +1 -0
  36. package/dist/cli/cost.d.ts +31 -0
  37. package/dist/cli/cost.d.ts.map +1 -0
  38. package/dist/cli/cost.js +85 -0
  39. package/dist/cli/cost.js.map +1 -0
  40. package/dist/cli/credentials.d.ts +23 -0
  41. package/dist/cli/credentials.d.ts.map +1 -0
  42. package/dist/cli/credentials.js +77 -0
  43. package/dist/cli/credentials.js.map +1 -0
  44. package/dist/cli/dry-run.d.ts +3 -0
  45. package/dist/cli/dry-run.d.ts.map +1 -0
  46. package/dist/cli/dry-run.js +21 -0
  47. package/dist/cli/dry-run.js.map +1 -0
  48. package/dist/cli/extras.d.ts +21 -0
  49. package/dist/cli/extras.d.ts.map +1 -0
  50. package/dist/cli/extras.js +39 -0
  51. package/dist/cli/extras.js.map +1 -0
  52. package/dist/cli/fix.d.ts +11 -0
  53. package/dist/cli/fix.d.ts.map +1 -0
  54. package/dist/cli/fix.js +72 -0
  55. package/dist/cli/fix.js.map +1 -0
  56. package/dist/cli/git-session.d.ts +21 -0
  57. package/dist/cli/git-session.d.ts.map +1 -0
  58. package/dist/cli/git-session.js +62 -0
  59. package/dist/cli/git-session.js.map +1 -0
  60. package/dist/cli/index.d.ts +4 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +546 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/init.d.ts +16 -0
  65. package/dist/cli/init.d.ts.map +1 -0
  66. package/dist/cli/init.js +75 -0
  67. package/dist/cli/init.js.map +1 -0
  68. package/dist/cli/login.d.ts +9 -0
  69. package/dist/cli/login.d.ts.map +1 -0
  70. package/dist/cli/login.js +114 -0
  71. package/dist/cli/login.js.map +1 -0
  72. package/dist/cli/logs.d.ts +16 -0
  73. package/dist/cli/logs.d.ts.map +1 -0
  74. package/dist/cli/logs.js +37 -0
  75. package/dist/cli/logs.js.map +1 -0
  76. package/dist/cli/memory-learner.d.ts +7 -0
  77. package/dist/cli/memory-learner.d.ts.map +1 -0
  78. package/dist/cli/memory-learner.js +36 -0
  79. package/dist/cli/memory-learner.js.map +1 -0
  80. package/dist/cli/memory.d.ts +13 -0
  81. package/dist/cli/memory.d.ts.map +1 -0
  82. package/dist/cli/memory.js +52 -0
  83. package/dist/cli/memory.js.map +1 -0
  84. package/dist/cli/plugin.d.ts +5 -0
  85. package/dist/cli/plugin.d.ts.map +1 -0
  86. package/dist/cli/plugin.js +42 -0
  87. package/dist/cli/plugin.js.map +1 -0
  88. package/dist/cli/resume.d.ts +18 -0
  89. package/dist/cli/resume.d.ts.map +1 -0
  90. package/dist/cli/resume.js +84 -0
  91. package/dist/cli/resume.js.map +1 -0
  92. package/dist/cli/rollback.d.ts +11 -0
  93. package/dist/cli/rollback.d.ts.map +1 -0
  94. package/dist/cli/rollback.js +12 -0
  95. package/dist/cli/rollback.js.map +1 -0
  96. package/dist/cli/rules.d.ts +7 -0
  97. package/dist/cli/rules.d.ts.map +1 -0
  98. package/dist/cli/rules.js +20 -0
  99. package/dist/cli/rules.js.map +1 -0
  100. package/dist/cli/run.d.ts +35 -0
  101. package/dist/cli/run.d.ts.map +1 -0
  102. package/dist/cli/run.js +294 -0
  103. package/dist/cli/run.js.map +1 -0
  104. package/dist/cli/session.d.ts +5 -0
  105. package/dist/cli/session.d.ts.map +1 -0
  106. package/dist/cli/session.js +46 -0
  107. package/dist/cli/session.js.map +1 -0
  108. package/dist/cli/ui/Board.d.ts +22 -0
  109. package/dist/cli/ui/Board.d.ts.map +1 -0
  110. package/dist/cli/ui/Board.js +40 -0
  111. package/dist/cli/ui/Board.js.map +1 -0
  112. package/dist/cli/ui/StatusBar.d.ts +10 -0
  113. package/dist/cli/ui/StatusBar.d.ts.map +1 -0
  114. package/dist/cli/ui/StatusBar.js +6 -0
  115. package/dist/cli/ui/StatusBar.js.map +1 -0
  116. package/dist/config.d.ts +4 -0
  117. package/dist/config.d.ts.map +1 -0
  118. package/dist/config.js +79 -0
  119. package/dist/config.js.map +1 -0
  120. package/dist/core/bus.d.ts +19 -0
  121. package/dist/core/bus.d.ts.map +1 -0
  122. package/dist/core/bus.js +25 -0
  123. package/dist/core/bus.js.map +1 -0
  124. package/dist/core/context.d.ts +10 -0
  125. package/dist/core/context.d.ts.map +1 -0
  126. package/dist/core/context.js +42 -0
  127. package/dist/core/context.js.map +1 -0
  128. package/dist/core/dispatcher.d.ts +25 -0
  129. package/dist/core/dispatcher.d.ts.map +1 -0
  130. package/dist/core/dispatcher.js +76 -0
  131. package/dist/core/dispatcher.js.map +1 -0
  132. package/dist/core/errors.d.ts +8 -0
  133. package/dist/core/errors.d.ts.map +1 -0
  134. package/dist/core/errors.js +13 -0
  135. package/dist/core/errors.js.map +1 -0
  136. package/dist/core/file-ownership.d.ts +25 -0
  137. package/dist/core/file-ownership.d.ts.map +1 -0
  138. package/dist/core/file-ownership.js +81 -0
  139. package/dist/core/file-ownership.js.map +1 -0
  140. package/dist/core/index.d.ts +9 -0
  141. package/dist/core/index.d.ts.map +1 -0
  142. package/dist/core/index.js +6 -0
  143. package/dist/core/index.js.map +1 -0
  144. package/dist/core/mcp-client-pool.d.ts +9 -0
  145. package/dist/core/mcp-client-pool.d.ts.map +1 -0
  146. package/dist/core/mcp-client-pool.js +26 -0
  147. package/dist/core/mcp-client-pool.js.map +1 -0
  148. package/dist/core/mcp-client.d.ts +27 -0
  149. package/dist/core/mcp-client.d.ts.map +1 -0
  150. package/dist/core/mcp-client.js +63 -0
  151. package/dist/core/mcp-client.js.map +1 -0
  152. package/dist/core/plugin-loader.d.ts +41 -0
  153. package/dist/core/plugin-loader.d.ts.map +1 -0
  154. package/dist/core/plugin-loader.js +62 -0
  155. package/dist/core/plugin-loader.js.map +1 -0
  156. package/dist/core/plugin-sdk.d.ts +5 -0
  157. package/dist/core/plugin-sdk.d.ts.map +1 -0
  158. package/dist/core/plugin-sdk.js +2 -0
  159. package/dist/core/plugin-sdk.js.map +1 -0
  160. package/dist/core/state.d.ts +77 -0
  161. package/dist/core/state.d.ts.map +1 -0
  162. package/dist/core/state.js +357 -0
  163. package/dist/core/state.js.map +1 -0
  164. package/dist/core/task.d.ts +13 -0
  165. package/dist/core/task.d.ts.map +1 -0
  166. package/dist/core/task.js +87 -0
  167. package/dist/core/task.js.map +1 -0
  168. package/dist/git/__tests__/helpers.d.ts +3 -0
  169. package/dist/git/__tests__/helpers.d.ts.map +1 -0
  170. package/dist/git/__tests__/helpers.js +18 -0
  171. package/dist/git/__tests__/helpers.js.map +1 -0
  172. package/dist/git/branch.d.ts +7 -0
  173. package/dist/git/branch.d.ts.map +1 -0
  174. package/dist/git/branch.js +62 -0
  175. package/dist/git/branch.js.map +1 -0
  176. package/dist/git/commit.d.ts +3 -0
  177. package/dist/git/commit.d.ts.map +1 -0
  178. package/dist/git/commit.js +21 -0
  179. package/dist/git/commit.js.map +1 -0
  180. package/dist/git/conflict.d.ts +19 -0
  181. package/dist/git/conflict.d.ts.map +1 -0
  182. package/dist/git/conflict.js +86 -0
  183. package/dist/git/conflict.js.map +1 -0
  184. package/dist/git/index.d.ts +7 -0
  185. package/dist/git/index.d.ts.map +1 -0
  186. package/dist/git/index.js +7 -0
  187. package/dist/git/index.js.map +1 -0
  188. package/dist/git/merge.d.ts +16 -0
  189. package/dist/git/merge.d.ts.map +1 -0
  190. package/dist/git/merge.js +101 -0
  191. package/dist/git/merge.js.map +1 -0
  192. package/dist/git/safety.d.ts +16 -0
  193. package/dist/git/safety.d.ts.map +1 -0
  194. package/dist/git/safety.js +64 -0
  195. package/dist/git/safety.js.map +1 -0
  196. package/dist/git/utils.d.ts +8 -0
  197. package/dist/git/utils.d.ts.map +1 -0
  198. package/dist/git/utils.js +39 -0
  199. package/dist/git/utils.js.map +1 -0
  200. package/dist/mcp-server/index.d.ts +2 -0
  201. package/dist/mcp-server/index.d.ts.map +1 -0
  202. package/dist/mcp-server/index.js +39 -0
  203. package/dist/mcp-server/index.js.map +1 -0
  204. package/dist/mcp-server/tools.d.ts +70 -0
  205. package/dist/mcp-server/tools.d.ts.map +1 -0
  206. package/dist/mcp-server/tools.js +112 -0
  207. package/dist/mcp-server/tools.js.map +1 -0
  208. package/dist/models/item.d.ts +6 -0
  209. package/dist/models/item.d.ts.map +1 -0
  210. package/dist/models/item.js +2 -0
  211. package/dist/models/item.js.map +1 -0
  212. package/dist/orchestration/glue.d.ts +31 -0
  213. package/dist/orchestration/glue.d.ts.map +1 -0
  214. package/dist/orchestration/glue.js +204 -0
  215. package/dist/orchestration/glue.js.map +1 -0
  216. package/dist/orchestration/index.d.ts +3 -0
  217. package/dist/orchestration/index.d.ts.map +1 -0
  218. package/dist/orchestration/index.js +3 -0
  219. package/dist/orchestration/index.js.map +1 -0
  220. package/dist/orchestration/runtime.d.ts +35 -0
  221. package/dist/orchestration/runtime.d.ts.map +1 -0
  222. package/dist/orchestration/runtime.js +165 -0
  223. package/dist/orchestration/runtime.js.map +1 -0
  224. package/dist/providers/base-provider.d.ts +28 -0
  225. package/dist/providers/base-provider.d.ts.map +1 -0
  226. package/dist/providers/base-provider.js +2 -0
  227. package/dist/providers/base-provider.js.map +1 -0
  228. package/dist/providers/claude.d.ts +10 -0
  229. package/dist/providers/claude.d.ts.map +1 -0
  230. package/dist/providers/claude.js +93 -0
  231. package/dist/providers/claude.js.map +1 -0
  232. package/dist/providers/gemini.d.ts +16 -0
  233. package/dist/providers/gemini.d.ts.map +1 -0
  234. package/dist/providers/gemini.js +101 -0
  235. package/dist/providers/gemini.js.map +1 -0
  236. package/dist/providers/index.d.ts +21 -0
  237. package/dist/providers/index.d.ts.map +1 -0
  238. package/dist/providers/index.js +68 -0
  239. package/dist/providers/index.js.map +1 -0
  240. package/dist/providers/mcp-provider.d.ts +11 -0
  241. package/dist/providers/mcp-provider.d.ts.map +1 -0
  242. package/dist/providers/mcp-provider.js +42 -0
  243. package/dist/providers/mcp-provider.js.map +1 -0
  244. package/dist/providers/mock.d.ts +10 -0
  245. package/dist/providers/mock.d.ts.map +1 -0
  246. package/dist/providers/mock.js +66 -0
  247. package/dist/providers/mock.js.map +1 -0
  248. package/dist/providers/model-registry.d.ts +9 -0
  249. package/dist/providers/model-registry.d.ts.map +1 -0
  250. package/dist/providers/model-registry.js +153 -0
  251. package/dist/providers/model-registry.js.map +1 -0
  252. package/dist/providers/ollama.d.ts +11 -0
  253. package/dist/providers/ollama.d.ts.map +1 -0
  254. package/dist/providers/ollama.js +141 -0
  255. package/dist/providers/ollama.js.map +1 -0
  256. package/dist/providers/openai.d.ts +17 -0
  257. package/dist/providers/openai.d.ts.map +1 -0
  258. package/dist/providers/openai.js +109 -0
  259. package/dist/providers/openai.js.map +1 -0
  260. package/dist/providers/zai.d.ts +6 -0
  261. package/dist/providers/zai.d.ts.map +1 -0
  262. package/dist/providers/zai.js +17 -0
  263. package/dist/providers/zai.js.map +1 -0
  264. package/dist/server/api.d.ts +5 -0
  265. package/dist/server/api.d.ts.map +1 -0
  266. package/dist/server/api.js +153 -0
  267. package/dist/server/api.js.map +1 -0
  268. package/dist/server/index.d.ts +14 -0
  269. package/dist/server/index.d.ts.map +1 -0
  270. package/dist/server/index.js +98 -0
  271. package/dist/server/index.js.map +1 -0
  272. package/dist/server/middleware.d.ts +6 -0
  273. package/dist/server/middleware.d.ts.map +1 -0
  274. package/dist/server/middleware.js +35 -0
  275. package/dist/server/middleware.js.map +1 -0
  276. package/dist/server/tunnel.d.ts +7 -0
  277. package/dist/server/tunnel.d.ts.map +1 -0
  278. package/dist/server/tunnel.js +44 -0
  279. package/dist/server/tunnel.js.map +1 -0
  280. package/dist/server/websocket.d.ts +11 -0
  281. package/dist/server/websocket.d.ts.map +1 -0
  282. package/dist/server/websocket.js +48 -0
  283. package/dist/server/websocket.js.map +1 -0
  284. package/dist/types.d.ts +90 -0
  285. package/dist/types.d.ts.map +1 -0
  286. package/dist/types.js +2 -0
  287. package/dist/types.js.map +1 -0
  288. package/package.json +62 -0
@@ -0,0 +1,546 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { existsSync } from 'node:fs';
4
+ import { appendFileSync } from 'node:fs';
5
+ import { mkdir } from 'node:fs/promises';
6
+ import { dirname, join, resolve } from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { spawnSync } from 'node:child_process';
9
+ import { renderBoard } from './board.js';
10
+ import { clearCredential, loadCredentials } from './credentials.js';
11
+ import { fetchModels, PROVIDER_DEFAULT_MODEL } from '../providers/model-registry.js';
12
+ import { CostTracker } from './cost.js';
13
+ import { resolveConflicts } from './fix.js';
14
+ import { initProject } from './init.js';
15
+ import { importClaudeCodeCredentials, loginClaudeApiKey, loginGemini, loginOpenAI, loginOpenCode, loginZai, getWhoamiLines } from './login.js';
16
+ import { showLogs } from './logs.js';
17
+ import { MemoryManager } from './memory.js';
18
+ import { addPlugin, listPlugins, removePlugin } from './plugin.js';
19
+ import { resumeLastSession } from './resume.js';
20
+ import { loadRules } from './rules.js';
21
+ import { rollbackSession } from './rollback.js';
22
+ import { runGoalSession } from './run.js';
23
+ import { readSession, updateSessionStatus } from './session.js';
24
+ import { OrkaError } from '../core/errors.js';
25
+ import { startServer } from '../server/index.js';
26
+ function expandHome(path) {
27
+ if (path.startsWith('~/')) {
28
+ return join(process.env.HOME ?? '', path.slice(2));
29
+ }
30
+ return path;
31
+ }
32
+ export function createProgram() {
33
+ const program = new Command();
34
+ program
35
+ .name('orka')
36
+ .description('Multi-agent orchestration CLI')
37
+ .version('1.0.0');
38
+ program
39
+ .command('init')
40
+ .description('Generate initial Orka config files in the current project')
41
+ .option('-p, --profile <profile>', 'Profile preset: hybrid | ollama', 'hybrid')
42
+ .option('--force', 'Overwrite existing orka.config.yaml', false)
43
+ .option('-w, --wizard', 'Use interactive wizard', false)
44
+ .action(async (options) => {
45
+ if (options.profile !== 'hybrid' && options.profile !== 'ollama') {
46
+ throw new Error('Profile tidak valid. Gunakan: hybrid atau ollama.');
47
+ }
48
+ const result = await initProject({
49
+ profile: options.profile,
50
+ force: options.force,
51
+ wizard: options.wizard,
52
+ });
53
+ process.stdout.write(`Config generated: ${result.configPath}\n`);
54
+ process.stdout.write(`Profile: ${result.profile}\n`);
55
+ process.stdout.write(result.overwritten ? 'Existing config overwritten.\n' : 'New config created.\n');
56
+ });
57
+ program
58
+ .command('run')
59
+ .description('Run orchestration session (auto-plan by default, or manual with --files)')
60
+ .argument('<goal>', 'High-level goal for the session')
61
+ .option('-f, --files <paths...>', 'Optional manual target files for a single-task run')
62
+ .option('--db <path>', 'SQLite database path')
63
+ .option('--no-git', 'Disable git session branch and auto-commit')
64
+ .option('-b, --builders <count>', 'Number of builder agents', (value) => Number.parseInt(value, 10))
65
+ .option('--mock', 'Gunakan mock provider tanpa API call (untuk testing)')
66
+ .option('--provider <name>', 'Override semua role ke satu provider (claude|openai|gemini|ollama|zai)')
67
+ .option('--dry-run', 'Tampilkan rencana eksekusi tanpa memanggil LLM')
68
+ .option('--no-ink', 'Nonaktifkan Ink TUI board (berguna untuk CI)')
69
+ .option('--role-models <json>', 'Per-role model override, JSON: \'{"coordinator":"...","builder":"..."}\'')
70
+ .option('--project-dir <path>', 'Project directory untuk output file')
71
+ .option('--session-id <id>', 'Session ID untuk tracking')
72
+ .option('--serve', 'Jalankan HTTP server bersamaan (akses dashboard di browser)')
73
+ .option('--serve-port <number>', 'Port HTTP server saat --serve dipakai', '4242')
74
+ .option('--serve-static <path>', 'Path ke GUI build untuk --serve')
75
+ .option('--tunnel', 'Expose via Cloudflare Tunnel saat --serve dipakai')
76
+ .action(async (goal, options) => {
77
+ const projectDir = resolve(options.projectDir ? expandHome(options.projectDir) : process.cwd());
78
+ const dbPath = options.db ?? join(projectDir, '.orka', 'state.db');
79
+ await mkdir(dirname(dbPath), { recursive: true });
80
+ let serverHandle = null;
81
+ if (options.serve) {
82
+ serverHandle = startServer({
83
+ port: parseInt(options.servePort, 10),
84
+ projectDir,
85
+ dbPath,
86
+ staticDir: options.serveStatic,
87
+ tunnel: options.tunnel,
88
+ });
89
+ await new Promise((res) => setTimeout(res, 300));
90
+ }
91
+ const useInk = options.ink && process.stdout.isTTY === true;
92
+ const abort = new AbortController();
93
+ const [result] = await Promise.all([
94
+ runGoalSession({
95
+ goal,
96
+ files: options.files,
97
+ projectDir,
98
+ dbPath,
99
+ sessionId: options.sessionId,
100
+ builders: options.builders,
101
+ useGit: options.git,
102
+ mock: options.mock,
103
+ provider: options.provider,
104
+ dryRun: options.dryRun,
105
+ roleModels: options.roleModels
106
+ ? JSON.parse(options.roleModels)
107
+ : undefined,
108
+ onGlueReady: serverHandle ? (glue) => serverHandle.setGlue(glue) : undefined,
109
+ keepStoreOpen: !!serverHandle,
110
+ }).finally(() => abort.abort()),
111
+ useInk
112
+ ? renderBoard({ dbPath, watch: true, ink: true, signal: abort.signal })
113
+ : Promise.resolve(),
114
+ ]);
115
+ if (!useInk) {
116
+ process.stdout.write(`Session ${result.sessionId}\n`);
117
+ for (const task of result.tasks) {
118
+ process.stdout.write(`- ${task.id}: ${task.status}\n`);
119
+ }
120
+ process.stdout.write(`Messages: ${result.messages}\n`);
121
+ }
122
+ if (result.paused)
123
+ process.stdout.write('Session di-pause. Jalankan `orka resume` untuk melanjutkan.\n');
124
+ process.exitCode = result.success ? 0 : 1;
125
+ });
126
+ program
127
+ .command('rollback')
128
+ .description('Rollback last Orka git session back to base commit')
129
+ .option('--delete-branch', 'Delete session branch after rollback', false)
130
+ .action(async (options) => {
131
+ const result = await rollbackSession({
132
+ deleteBranch: options.deleteBranch,
133
+ });
134
+ process.stdout.write(`Rolled back session branch: ${result.sessionBranch}\n`);
135
+ process.stdout.write(`Returned to branch: ${result.originalBranch}\n`);
136
+ process.stdout.write(`Base commit: ${result.baseCommit}\n`);
137
+ });
138
+ program
139
+ .command('board')
140
+ .description('Show session board in terminal (text/ink TUI)')
141
+ .option('-s, --session <id>', 'Session id to display')
142
+ .option('--db <path>', 'SQLite database path')
143
+ .option('-w, --watch', 'Refresh board continuously', false)
144
+ .option('--ink', 'Render with Ink interactive UI', false)
145
+ .action(async (options) => {
146
+ await renderBoard({
147
+ sessionId: options.session,
148
+ dbPath: options.db,
149
+ watch: options.watch,
150
+ ink: options.ink,
151
+ });
152
+ });
153
+ program
154
+ .command('logs')
155
+ .description('Show session event logs from state database')
156
+ .option('-s, --session <id>', 'Session id to filter')
157
+ .option('-t, --type <type>', 'Message type filter (e.g. task:completed)')
158
+ .option('--db <path>', 'SQLite database path')
159
+ .action(async (options) => {
160
+ await showLogs({
161
+ sessionId: options.session,
162
+ type: options.type,
163
+ dbPath: options.db,
164
+ });
165
+ });
166
+ program
167
+ .command('pause')
168
+ .description('Pause active session orchestration')
169
+ .option('-s, --session <id>', 'Session id to pause')
170
+ .option('--db <path>', 'SQLite database path')
171
+ .action((options) => {
172
+ const session = updateSessionStatus('paused', process.cwd(), options.db, options.session);
173
+ process.stdout.write(`Session #${session.id} di-pause.\n`);
174
+ process.stdout.write('Jalankan `orka resume` untuk melanjutkan.\n');
175
+ });
176
+ program
177
+ .command('resume')
178
+ .description('Resume last session by resetting interrupted tasks to pending')
179
+ .option('-s, --session <id>', 'Session id to resume')
180
+ .option('--db <path>', 'SQLite database path')
181
+ .action(async (options) => {
182
+ const result = await resumeLastSession(process.cwd(), options.db);
183
+ const session = readSession(process.cwd(), options.db, options.session ?? result.sessionId);
184
+ if (!session) {
185
+ throw new Error('Session untuk resume tidak ditemukan.');
186
+ }
187
+ process.stdout.write(`Session ${result.sessionId}\n`);
188
+ process.stdout.write(`Skip: ${result.state.skip.length}\n`);
189
+ process.stdout.write(`Interrupted: ${result.state.interrupted.length}\n`);
190
+ process.stdout.write(`Review: ${result.state.review.length}\n`);
191
+ process.stdout.write(`Pending: ${result.state.pending.length}\n`);
192
+ process.stdout.write(`Rejected: ${result.state.rejected.length}\n`);
193
+ if (result.releasedLocks.length > 0) {
194
+ process.stdout.write(`Released locks: ${result.releasedLocks.join(', ')}\n`);
195
+ }
196
+ process.stdout.write(`Remaining: ${result.remaining}\n`);
197
+ if (result.remaining > 0) {
198
+ const resumed = await runGoalSession({
199
+ goal: session.goal,
200
+ sessionId: session.id,
201
+ resume: true,
202
+ dbPath: options.db,
203
+ useGit: false,
204
+ });
205
+ process.stdout.write(`Resumed session ${resumed.sessionId} -> ${resumed.success ? 'success' : 'incomplete'}\n`);
206
+ }
207
+ });
208
+ program
209
+ .command('cost')
210
+ .description('Show token and estimated cost summary from message usage')
211
+ .option('--db <path>', 'SQLite database path')
212
+ .action(async (options) => {
213
+ const projectDir = resolve(process.cwd());
214
+ const dbPath = options.db ?? join(projectDir, '.orka', 'state.db');
215
+ if (!existsSync(dbPath)) {
216
+ process.stdout.write('State DB tidak ditemukan. Jalankan orka run terlebih dahulu.\n');
217
+ return;
218
+ }
219
+ const { StateStore } = await import('../core/index.js');
220
+ const store = new StateStore(dbPath);
221
+ try {
222
+ const tracker = new CostTracker();
223
+ const costRecords = store.getCostRecords();
224
+ if (costRecords.length > 0) {
225
+ for (const record of costRecords) {
226
+ tracker.record({
227
+ agentId: record.agentId,
228
+ provider: record.provider,
229
+ model: record.model,
230
+ inputTokens: record.inputTokens,
231
+ outputTokens: record.outputTokens,
232
+ });
233
+ }
234
+ }
235
+ else {
236
+ for (const message of store.getMessages()) {
237
+ const usage = message.payload.usage;
238
+ if (!usage) {
239
+ continue;
240
+ }
241
+ tracker.record({
242
+ agentId: message.agentId,
243
+ provider: usage.provider ?? 'claude',
244
+ model: usage.model ?? 'claude-sonnet-4-20250514',
245
+ inputTokens: usage.inputTokens ?? 0,
246
+ outputTokens: usage.outputTokens ?? 0,
247
+ });
248
+ }
249
+ }
250
+ process.stdout.write(`${tracker.formatDisplay()}\n`);
251
+ }
252
+ finally {
253
+ store.close();
254
+ }
255
+ });
256
+ program
257
+ .command('fix')
258
+ .description('Resolve git conflict files (llm|ours|theirs)')
259
+ .argument('[file]', 'Conflicted file path')
260
+ .option('--strategy <mode>', 'Conflict strategy: llm | ours | theirs', 'llm')
261
+ .action(async (file, options) => {
262
+ const result = await resolveConflicts({
263
+ file,
264
+ strategy: options.strategy,
265
+ });
266
+ if (result.resolvedFiles.length > 0) {
267
+ process.stdout.write(`Resolved: ${result.resolvedFiles.join(', ')}\n`);
268
+ }
269
+ if (result.skippedFiles.length > 0) {
270
+ process.stdout.write(`Skipped: ${result.skippedFiles.join(', ')}\n`);
271
+ }
272
+ if (result.resolvedFiles.length === 0 && result.skippedFiles.length === 0) {
273
+ process.stdout.write('Tidak ada conflict aktif untuk di-resolve.\n');
274
+ }
275
+ });
276
+ const rulesCommand = program
277
+ .command('rules')
278
+ .description('Manage project and global rules');
279
+ rulesCommand
280
+ .command('show')
281
+ .description('Show active project and global rules')
282
+ .action(() => {
283
+ const projectDir = resolve(process.cwd());
284
+ const projectPath = join(projectDir, 'orka.rules.md');
285
+ const globalPath = expandHome('~/.orka/rules.md');
286
+ const rules = loadRules(projectDir, globalPath);
287
+ process.stdout.write(`# Project Rules (${projectPath})\n`);
288
+ process.stdout.write(`${rules.project.trim() || '(empty)'}\n\n`);
289
+ process.stdout.write(`# Global Rules (${globalPath})\n`);
290
+ process.stdout.write(`${rules.global.trim() || '(empty)'}\n`);
291
+ });
292
+ rulesCommand
293
+ .command('edit')
294
+ .description('Open project rules file using $EDITOR')
295
+ .action(() => {
296
+ const projectPath = join(resolve(process.cwd()), 'orka.rules.md');
297
+ if (!existsSync(projectPath)) {
298
+ appendFileSync(projectPath, '## Project Rules\n\n', 'utf-8');
299
+ }
300
+ const editor = process.env.EDITOR ?? 'vi';
301
+ const result = spawnSync(editor, [projectPath], { stdio: 'inherit' });
302
+ if (result.error) {
303
+ throw result.error;
304
+ }
305
+ });
306
+ const memoryCommand = program
307
+ .command('memory')
308
+ .description('Manage local memory notes');
309
+ memoryCommand
310
+ .command('show')
311
+ .description('Show memory entries')
312
+ .action(() => {
313
+ const memoryPath = join(resolve(process.cwd()), 'orka.memory.md');
314
+ const manager = new MemoryManager(memoryPath);
315
+ process.stdout.write(`${manager.show()}\n`);
316
+ });
317
+ memoryCommand
318
+ .command('add')
319
+ .description('Add memory entry')
320
+ .argument('<entry>', 'Memory note')
321
+ .action((entry) => {
322
+ const memoryPath = join(resolve(process.cwd()), 'orka.memory.md');
323
+ const manager = new MemoryManager(memoryPath);
324
+ manager.add(entry);
325
+ process.stdout.write(`Ditambahkan: ${entry}\n`);
326
+ });
327
+ memoryCommand
328
+ .command('clear')
329
+ .description('Clear all memory entries')
330
+ .action(() => {
331
+ const memoryPath = join(resolve(process.cwd()), 'orka.memory.md');
332
+ const manager = new MemoryManager(memoryPath);
333
+ manager.clear();
334
+ process.stdout.write('Memory dihapus.\n');
335
+ });
336
+ const pluginCommand = program
337
+ .command('plugin')
338
+ .description('Manage installed plugins');
339
+ pluginCommand
340
+ .command('add')
341
+ .description('Add plugin by name (npm) or path (./local)')
342
+ .argument('<name>', 'Plugin name or relative path')
343
+ .action((name) => {
344
+ addPlugin(name, process.cwd());
345
+ process.stdout.write(`Plugin "${name}" ditambahkan.\n`);
346
+ process.stdout.write(`⚠ Plugin berjalan dengan akses penuh Node.js. Hanya pasang plugin yang kamu percaya.\n`);
347
+ });
348
+ pluginCommand
349
+ .command('remove')
350
+ .description('Remove plugin')
351
+ .argument('<name>', 'Plugin name')
352
+ .action((name) => {
353
+ removePlugin(name, process.cwd());
354
+ process.stdout.write(`Plugin "${name}" dihapus.\n`);
355
+ });
356
+ pluginCommand
357
+ .command('list')
358
+ .description('List installed plugins')
359
+ .action(() => {
360
+ const plugins = listPlugins(process.cwd());
361
+ if (plugins.length === 0) {
362
+ process.stdout.write('Belum ada plugin terpasang.\n');
363
+ }
364
+ else {
365
+ for (const p of plugins) {
366
+ process.stdout.write(` ${p.name}${p.version ? `@${p.version}` : ''}\n`);
367
+ }
368
+ }
369
+ });
370
+ program
371
+ .command('login')
372
+ .description('Simpan credential provider ke ~/.orka/credentials.json')
373
+ .requiredOption('-p, --provider <name>', 'Provider: claude | openai | zai | gemini | opencode')
374
+ .action(async (opts) => {
375
+ const { default: rl } = await import('node:readline/promises');
376
+ const iface = rl.createInterface({ input: process.stdin, output: process.stdout });
377
+ try {
378
+ if (opts.provider === 'claude') {
379
+ const imported = await importClaudeCodeCredentials();
380
+ if (!imported) {
381
+ const key = await iface.question('Masukkan Anthropic API key (sk-ant-...): ');
382
+ await loginClaudeApiKey(key.trim());
383
+ }
384
+ process.stdout.write('Login Claude berhasil.\n');
385
+ }
386
+ else if (opts.provider === 'openai') {
387
+ const key = await iface.question('Masukkan OpenAI API key (sk-...): ');
388
+ await loginOpenAI(key.trim());
389
+ process.stdout.write('Login OpenAI berhasil.\n');
390
+ }
391
+ else if (opts.provider === 'zai') {
392
+ const key = await iface.question('Masukkan Z.ai API key: ');
393
+ await loginZai(key.trim());
394
+ process.stdout.write('Login Z.ai berhasil.\n');
395
+ }
396
+ else if (opts.provider === 'gemini') {
397
+ const key = await iface.question('Masukkan Google API key (AIza...): ');
398
+ await loginGemini(key.trim());
399
+ process.stdout.write('Login Gemini berhasil.\n');
400
+ }
401
+ else if (opts.provider === 'opencode') {
402
+ const key = await iface.question('Masukkan OpenCode API key (sk-...): ');
403
+ await loginOpenCode(key.trim());
404
+ process.stdout.write('Login OpenCode berhasil dan terverifikasi.\n');
405
+ }
406
+ else {
407
+ throw new OrkaError('provider_not_configured', `Provider tidak dikenal: ${opts.provider}. Gunakan: claude, openai, zai, gemini, atau opencode`);
408
+ }
409
+ }
410
+ finally {
411
+ iface.close();
412
+ }
413
+ });
414
+ program
415
+ .command('logout')
416
+ .description('Hapus credential provider')
417
+ .requiredOption('-p, --provider <name>', 'Provider: claude | openai | zai | gemini | opencode')
418
+ .action((opts) => {
419
+ const validLogout = ['claude', 'openai', 'zai', 'gemini', 'opencode'];
420
+ if (!validLogout.includes(opts.provider)) {
421
+ throw new OrkaError('provider_not_configured', `Provider tidak dikenal: ${opts.provider}. Gunakan: claude, openai, zai, gemini, atau opencode`);
422
+ }
423
+ clearCredential(opts.provider);
424
+ process.stdout.write(`Credential ${opts.provider} dihapus.\n`);
425
+ });
426
+ program
427
+ .command('whoami')
428
+ .description('Tampilkan status credential per provider')
429
+ .action(() => {
430
+ for (const line of getWhoamiLines())
431
+ process.stdout.write(`${line}\n`);
432
+ });
433
+ program
434
+ .command('models')
435
+ .description('Tampilkan model yang tersedia dari provider (fetch langsung dari API)')
436
+ .option('-p, --provider <name>', 'Provider spesifik: claude | openai | zai | gemini | opencode | ollama')
437
+ .action(async (opts) => {
438
+ const creds = loadCredentials();
439
+ const providers = opts.provider
440
+ ? [opts.provider]
441
+ : ['claude', 'openai', 'zai', 'gemini', 'opencode', 'ollama'];
442
+ for (const p of providers) {
443
+ let apiKey = '';
444
+ if (p === 'claude')
445
+ apiKey = creds?.claude?.type === 'apikey' ? creds.claude.apiKey : '';
446
+ else if (p === 'openai')
447
+ apiKey = creds?.openai?.type === 'apikey' ? creds.openai.apiKey : '';
448
+ else if (p === 'zai')
449
+ apiKey = creds?.zai?.type === 'apikey' ? creds.zai.apiKey : '';
450
+ else if (p === 'gemini')
451
+ apiKey = creds?.gemini?.type === 'apikey' ? creds.gemini.apiKey : '';
452
+ else if (p === 'opencode')
453
+ apiKey = creds?.opencode?.type === 'apikey' ? creds.opencode.apiKey : '';
454
+ if (!apiKey && p !== 'ollama') {
455
+ process.stdout.write(`\n${p}: — tidak dikonfigurasi (jalankan orka login --provider ${p})\n`);
456
+ continue;
457
+ }
458
+ process.stdout.write(`\nFetching ${p} models...\n`);
459
+ const models = await fetchModels(p, apiKey);
460
+ if (models.length === 0) {
461
+ process.stdout.write(`${p}: tidak ada model ditemukan (fallback atau API tidak tersedia)\n`);
462
+ }
463
+ else {
464
+ const defaultModel = PROVIDER_DEFAULT_MODEL[p];
465
+ process.stdout.write(`${p} (${models.length} model, default: ${defaultModel}):\n`);
466
+ for (const m of models) {
467
+ const marker = m === defaultModel ? ' ← default' : '';
468
+ process.stdout.write(` - ${m}${marker}\n`);
469
+ }
470
+ }
471
+ }
472
+ });
473
+ program
474
+ .command('status')
475
+ .description('Show current session status board')
476
+ .option('-s, --session <id>', 'Session id to display')
477
+ .option('--db <path>', 'SQLite database path')
478
+ .option('-w, --watch', 'Refresh board continuously', false)
479
+ .option('--ink', 'Render with Ink interactive UI', false)
480
+ .action(async (options) => {
481
+ try {
482
+ await renderBoard({
483
+ sessionId: options.session,
484
+ dbPath: options.db,
485
+ watch: options.watch,
486
+ ink: options.ink,
487
+ });
488
+ }
489
+ catch (error) {
490
+ const message = error instanceof Error ? error.message : String(error);
491
+ process.stdout.write(`${message}\n`);
492
+ }
493
+ });
494
+ program
495
+ .command('serve')
496
+ .description('Jalankan Orka sebagai HTTP server dengan web dashboard')
497
+ .option('-p, --port <number>', 'Port server', '4242')
498
+ .option('--project <path>', 'Project directory', process.cwd())
499
+ .option('--db <path>', 'SQLite database path')
500
+ .option('--static <path>', 'Path ke web dashboard build (gui/dist)')
501
+ .option('--tunnel', 'Expose via Cloudflare Tunnel (akses dari iPad/remote)')
502
+ .action((opts) => {
503
+ const projectDir = resolve(opts.project);
504
+ const dbPath = opts.db ?? join(projectDir, '.orka', 'state.db');
505
+ startServer({
506
+ port: parseInt(opts.port, 10),
507
+ projectDir,
508
+ dbPath,
509
+ staticDir: opts.static,
510
+ tunnel: opts.tunnel,
511
+ });
512
+ });
513
+ program
514
+ .command('mcp-server')
515
+ .description('Start Orka as an MCP server (stdio transport)')
516
+ .option('--db <path>', 'Path to state database')
517
+ .action(async (options) => {
518
+ const { startMcpServer } = await import('../mcp-server/index.js');
519
+ await startMcpServer(options.db);
520
+ });
521
+ const originalParseAsync = program.parseAsync.bind(program);
522
+ program.parseAsync = async (...args) => {
523
+ return originalParseAsync(...args).catch((err) => {
524
+ if (err instanceof OrkaError) {
525
+ process.stderr.write(`Error: ${err.userMessage}\n`);
526
+ }
527
+ else if (process.env.ORKA_DEBUG === '1') {
528
+ process.stderr.write((err instanceof Error && err.stack ? err.stack : String(err)) + '\n');
529
+ }
530
+ else {
531
+ const msg = err instanceof Error ? err.message : String(err);
532
+ process.stderr.write(`Error: ${msg}\n`);
533
+ process.stderr.write('Set ORKA_DEBUG=1 untuk detail lengkap.\n');
534
+ }
535
+ throw err;
536
+ });
537
+ };
538
+ return program;
539
+ }
540
+ const isDirectRun = process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url);
541
+ if (isDirectRun) {
542
+ createProgram().parseAsync().catch(() => {
543
+ process.exit(1);
544
+ });
545
+ }
546
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { OrkaConfig } from '../types.js';
2
+ export type InitProfile = 'hybrid' | 'ollama';
3
+ export interface InitOptions {
4
+ projectDir?: string;
5
+ profile?: InitProfile;
6
+ force?: boolean;
7
+ wizard?: boolean;
8
+ }
9
+ export interface InitResult {
10
+ configPath: string;
11
+ profile: InitProfile;
12
+ overwritten: boolean;
13
+ }
14
+ export declare function buildInitConfig(profile: InitProfile): OrkaConfig;
15
+ export declare function initProject(options?: InitOptions): Promise<InitResult>;
16
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE7C,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,WAAW,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAuBhE;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BhF"}