@jamesaphoenix/tx-cli 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/cli-exit.d.ts +15 -0
  2. package/dist/cli-exit.d.ts.map +1 -0
  3. package/dist/cli-exit.js +18 -0
  4. package/dist/cli-exit.js.map +1 -0
  5. package/dist/cli.d.ts +8 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +349 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/attempt.d.ts +9 -0
  10. package/dist/commands/attempt.d.ts.map +1 -0
  11. package/dist/commands/attempt.js +93 -0
  12. package/dist/commands/attempt.js.map +1 -0
  13. package/dist/commands/bulk.d.ts +8 -0
  14. package/dist/commands/bulk.d.ts.map +1 -0
  15. package/dist/commands/bulk.js +168 -0
  16. package/dist/commands/bulk.js.map +1 -0
  17. package/dist/commands/claim.d.ts +39 -0
  18. package/dist/commands/claim.d.ts.map +1 -0
  19. package/dist/commands/claim.js +96 -0
  20. package/dist/commands/claim.js.map +1 -0
  21. package/dist/commands/compact.d.ts +17 -0
  22. package/dist/commands/compact.d.ts.map +1 -0
  23. package/dist/commands/compact.js +167 -0
  24. package/dist/commands/compact.js.map +1 -0
  25. package/dist/commands/coordinator.d.ts +12 -0
  26. package/dist/commands/coordinator.d.ts.map +1 -0
  27. package/dist/commands/coordinator.js +124 -0
  28. package/dist/commands/coordinator.js.map +1 -0
  29. package/dist/commands/cycle.d.ts +12 -0
  30. package/dist/commands/cycle.d.ts.map +1 -0
  31. package/dist/commands/cycle.js +109 -0
  32. package/dist/commands/cycle.js.map +1 -0
  33. package/dist/commands/daemon.d.ts +16 -0
  34. package/dist/commands/daemon.d.ts.map +1 -0
  35. package/dist/commands/daemon.js +635 -0
  36. package/dist/commands/daemon.js.map +1 -0
  37. package/dist/commands/dashboard.d.ts +12 -0
  38. package/dist/commands/dashboard.d.ts.map +1 -0
  39. package/dist/commands/dashboard.js +105 -0
  40. package/dist/commands/dashboard.js.map +1 -0
  41. package/dist/commands/dashboard.test.d.ts +2 -0
  42. package/dist/commands/dashboard.test.d.ts.map +1 -0
  43. package/dist/commands/dashboard.test.js +99 -0
  44. package/dist/commands/dashboard.test.js.map +1 -0
  45. package/dist/commands/dep.d.ts +9 -0
  46. package/dist/commands/dep.d.ts.map +1 -0
  47. package/dist/commands/dep.js +50 -0
  48. package/dist/commands/dep.js.map +1 -0
  49. package/dist/commands/doc.d.ts +10 -0
  50. package/dist/commands/doc.d.ts.map +1 -0
  51. package/dist/commands/doc.js +397 -0
  52. package/dist/commands/doc.js.map +1 -0
  53. package/dist/commands/doctor.d.ts +9 -0
  54. package/dist/commands/doctor.d.ts.map +1 -0
  55. package/dist/commands/doctor.js +168 -0
  56. package/dist/commands/doctor.js.map +1 -0
  57. package/dist/commands/graph.d.ts +58 -0
  58. package/dist/commands/graph.d.ts.map +1 -0
  59. package/dist/commands/graph.js +441 -0
  60. package/dist/commands/graph.js.map +1 -0
  61. package/dist/commands/hierarchy.d.ts +9 -0
  62. package/dist/commands/hierarchy.d.ts.map +1 -0
  63. package/dist/commands/hierarchy.js +68 -0
  64. package/dist/commands/hierarchy.js.map +1 -0
  65. package/dist/commands/hooks.d.ts +56 -0
  66. package/dist/commands/hooks.d.ts.map +1 -0
  67. package/dist/commands/hooks.js +365 -0
  68. package/dist/commands/hooks.js.map +1 -0
  69. package/dist/commands/invariant.d.ts +9 -0
  70. package/dist/commands/invariant.d.ts.map +1 -0
  71. package/dist/commands/invariant.js +126 -0
  72. package/dist/commands/invariant.js.map +1 -0
  73. package/dist/commands/learning.d.ts +16 -0
  74. package/dist/commands/learning.d.ts.map +1 -0
  75. package/dist/commands/learning.js +362 -0
  76. package/dist/commands/learning.js.map +1 -0
  77. package/dist/commands/migrate.d.ts +9 -0
  78. package/dist/commands/migrate.d.ts.map +1 -0
  79. package/dist/commands/migrate.js +56 -0
  80. package/dist/commands/migrate.js.map +1 -0
  81. package/dist/commands/orchestrator.d.ts +11 -0
  82. package/dist/commands/orchestrator.d.ts.map +1 -0
  83. package/dist/commands/orchestrator.js +129 -0
  84. package/dist/commands/orchestrator.js.map +1 -0
  85. package/dist/commands/stats.d.ts +8 -0
  86. package/dist/commands/stats.d.ts.map +1 -0
  87. package/dist/commands/stats.js +128 -0
  88. package/dist/commands/stats.js.map +1 -0
  89. package/dist/commands/sync-platform.d.ts +12 -0
  90. package/dist/commands/sync-platform.d.ts.map +1 -0
  91. package/dist/commands/sync-platform.js +74 -0
  92. package/dist/commands/sync-platform.js.map +1 -0
  93. package/dist/commands/sync.d.ts +8 -0
  94. package/dist/commands/sync.d.ts.map +1 -0
  95. package/dist/commands/sync.js +128 -0
  96. package/dist/commands/sync.js.map +1 -0
  97. package/dist/commands/task.d.ts +15 -0
  98. package/dist/commands/task.d.ts.map +1 -0
  99. package/dist/commands/task.js +233 -0
  100. package/dist/commands/task.js.map +1 -0
  101. package/dist/commands/test.d.ts +16 -0
  102. package/dist/commands/test.d.ts.map +1 -0
  103. package/dist/commands/test.js +112 -0
  104. package/dist/commands/test.js.map +1 -0
  105. package/dist/commands/trace.d.ts +39 -0
  106. package/dist/commands/trace.d.ts.map +1 -0
  107. package/dist/commands/trace.js +620 -0
  108. package/dist/commands/trace.js.map +1 -0
  109. package/dist/commands/validate.d.ts +9 -0
  110. package/dist/commands/validate.d.ts.map +1 -0
  111. package/dist/commands/validate.js +94 -0
  112. package/dist/commands/validate.js.map +1 -0
  113. package/dist/commands/worker.d.ts +10 -0
  114. package/dist/commands/worker.d.ts.map +1 -0
  115. package/dist/commands/worker.js +204 -0
  116. package/dist/commands/worker.js.map +1 -0
  117. package/dist/help.d.ts +3 -0
  118. package/dist/help.d.ts.map +1 -0
  119. package/dist/help.js +1366 -0
  120. package/dist/help.js.map +1 -0
  121. package/dist/output.d.ts +12 -0
  122. package/dist/output.d.ts.map +1 -0
  123. package/dist/output.js +76 -0
  124. package/dist/output.js.map +1 -0
  125. package/dist/tx +0 -0
  126. package/dist/utils/parse.d.ts +45 -0
  127. package/dist/utils/parse.d.ts.map +1 -0
  128. package/dist/utils/parse.js +79 -0
  129. package/dist/utils/parse.js.map +1 -0
  130. package/dist/utils/parse.test.d.ts +2 -0
  131. package/dist/utils/parse.test.d.ts.map +1 -0
  132. package/dist/utils/parse.test.js +140 -0
  133. package/dist/utils/parse.test.js.map +1 -0
  134. package/dist/version.d.ts +2 -0
  135. package/dist/version.d.ts.map +1 -0
  136. package/dist/version.js +10 -0
  137. package/dist/version.js.map +1 -0
  138. package/package.json +58 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Validate command: Pre-flight database health checks
3
+ */
4
+ import { Effect } from "effect";
5
+ import { ValidationService } from "@jamesaphoenix/tx-core";
6
+ import { toJson } from "../output.js";
7
+ function flag(flags, ...names) {
8
+ return names.some(n => flags[n] === true);
9
+ }
10
+ /**
11
+ * Format a severity level with appropriate styling.
12
+ */
13
+ function formatSeverity(severity) {
14
+ switch (severity) {
15
+ case "error":
16
+ return "\u274c ERROR";
17
+ case "warning":
18
+ return "\u26a0 WARN";
19
+ case "info":
20
+ return "\u2139 INFO";
21
+ default:
22
+ return severity.toUpperCase();
23
+ }
24
+ }
25
+ /**
26
+ * Format a check result for display.
27
+ */
28
+ function formatCheck(check) {
29
+ const status = check.passed ? "\u2713" : "\u2717";
30
+ const lines = [];
31
+ let summary = `${status} ${check.name}`;
32
+ if (check.fixed !== undefined && check.fixed > 0) {
33
+ summary += ` (${check.fixed} fixed)`;
34
+ }
35
+ lines.push(summary);
36
+ for (const issue of check.issues) {
37
+ lines.push(` ${formatSeverity(issue.severity)}: ${issue.message}`);
38
+ }
39
+ return lines.join("\n");
40
+ }
41
+ /**
42
+ * Format the overall validation result.
43
+ */
44
+ function formatResult(result) {
45
+ const lines = [];
46
+ // Header
47
+ lines.push("tx validate - Database Health Check");
48
+ lines.push("=".repeat(40));
49
+ lines.push("");
50
+ // Individual checks
51
+ for (const check of result.checks) {
52
+ lines.push(formatCheck(check));
53
+ lines.push("");
54
+ }
55
+ // Summary
56
+ lines.push("-".repeat(40));
57
+ if (result.valid) {
58
+ lines.push("\u2705 Database is valid");
59
+ }
60
+ else {
61
+ lines.push("\u274c Validation failed");
62
+ }
63
+ const { error, warning, info } = result.issueCount;
64
+ const parts = [];
65
+ if (error > 0)
66
+ parts.push(`${error} error(s)`);
67
+ if (warning > 0)
68
+ parts.push(`${warning} warning(s)`);
69
+ if (info > 0)
70
+ parts.push(`${info} info`);
71
+ if (parts.length > 0) {
72
+ lines.push(` Issues: ${parts.join(", ")}`);
73
+ }
74
+ if (result.fixedCount > 0) {
75
+ lines.push(` Fixed: ${result.fixedCount} issue(s)`);
76
+ }
77
+ return lines.join("\n");
78
+ }
79
+ export const validate = (_pos, flags) => Effect.gen(function* () {
80
+ const svc = yield* ValidationService;
81
+ const fix = flag(flags, "fix");
82
+ const result = yield* svc.validate({ fix });
83
+ if (flag(flags, "json")) {
84
+ console.log(toJson(result));
85
+ }
86
+ else {
87
+ console.log(formatResult(result));
88
+ }
89
+ // Exit with code 1 if validation failed (errors found)
90
+ if (!result.valid) {
91
+ process.exit(1);
92
+ }
93
+ });
94
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Worker commands: start, stop, status, list
3
+ *
4
+ * CLI commands for managing worker processes (PRD-018).
5
+ */
6
+ import { Effect } from "effect";
7
+ import { WorkerService } from "@jamesaphoenix/tx-core";
8
+ import { type Flags } from "../utils/parse.js";
9
+ export declare const worker: (pos: string[], flags: Flags) => Effect.Effect<void, import("@jamesaphoenix/tx-core").ValidationError | import("@jamesaphoenix/tx-core").DatabaseError | import("@jamesaphoenix/tx-core").TaskNotFoundError | import("@jamesaphoenix/tx-core").StaleDataError | import("@jamesaphoenix/tx-core").RegistrationError | import("@jamesaphoenix/tx-core").WorkerNotFoundError, import("@jamesaphoenix/tx-core").TaskService | import("@jamesaphoenix/tx-core").ReadyService | import("@jamesaphoenix/tx-core").AttemptService | WorkerService | import("@jamesaphoenix/tx-core").ClaimService>;
10
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,aAAa,EAA+D,MAAM,wBAAwB,CAAA;AAGnH,OAAO,EAAE,KAAK,KAAK,EAA0B,MAAM,mBAAmB,CAAA;AA8BtE,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,8hBA6K9C,CAAA"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Worker commands: start, stop, status, list
3
+ *
4
+ * CLI commands for managing worker processes (PRD-018).
5
+ */
6
+ import { Effect } from "effect";
7
+ import { WorkerService, runWorkerProcess } from "@jamesaphoenix/tx-core";
8
+ import { toJson } from "../output.js";
9
+ import { commandHelp } from "../help.js";
10
+ import { flag, opt, parseIntOpt } from "../utils/parse.js";
11
+ /**
12
+ * Format a worker for display.
13
+ */
14
+ function formatWorker(w) {
15
+ const lines = [
16
+ `Worker: ${w.id}`,
17
+ ` Name: ${w.name}`,
18
+ ` Status: ${w.status}`,
19
+ ` Hostname: ${w.hostname}`,
20
+ ` PID: ${w.pid}`,
21
+ ` Capabilities: ${w.capabilities.join(", ") || "(none)"}`,
22
+ ];
23
+ if (w.currentTaskId) {
24
+ lines.push(` Current Task: ${w.currentTaskId}`);
25
+ }
26
+ lines.push(` Registered: ${w.registeredAt.toISOString()}`);
27
+ lines.push(` Last Heartbeat: ${w.lastHeartbeatAt.toISOString()}`);
28
+ return lines.join("\n");
29
+ }
30
+ /**
31
+ * Format a worker as a single line for list display.
32
+ */
33
+ function formatWorkerLine(w) {
34
+ const taskInfo = w.currentTaskId ? ` → ${w.currentTaskId}` : "";
35
+ return ` ${w.id} [${w.status}] ${w.name}${taskInfo}`;
36
+ }
37
+ export const worker = (pos, flags) => Effect.gen(function* () {
38
+ const subcommand = pos[0];
39
+ if (!subcommand || subcommand === "help") {
40
+ console.log(commandHelp["worker"]);
41
+ return;
42
+ }
43
+ // Check for --help on subcommand
44
+ if (flag(flags, "help", "h")) {
45
+ const helpKey = `worker ${subcommand}`;
46
+ if (commandHelp[helpKey]) {
47
+ console.log(commandHelp[helpKey]);
48
+ return;
49
+ }
50
+ }
51
+ const svc = yield* WorkerService;
52
+ if (subcommand === "start") {
53
+ // Parse options
54
+ const name = opt(flags, "name", "n");
55
+ const capabilitiesOpt = opt(flags, "capabilities", "c");
56
+ const capabilities = capabilitiesOpt
57
+ ? capabilitiesOpt.split(",").map(c => c.trim())
58
+ : ["tx-implementer"];
59
+ const heartbeatParsed = parseIntOpt(flags, "heartbeat", "heartbeat");
60
+ let heartbeatIntervalSeconds = 30;
61
+ if (heartbeatParsed !== undefined) {
62
+ if (heartbeatParsed < 1) {
63
+ console.error(`Invalid heartbeat value: '${heartbeatParsed}'. Must be a positive integer.`);
64
+ process.exit(1);
65
+ }
66
+ heartbeatIntervalSeconds = heartbeatParsed;
67
+ }
68
+ // Build config
69
+ const config = {
70
+ name,
71
+ capabilities,
72
+ heartbeatIntervalSeconds
73
+ };
74
+ if (flag(flags, "json")) {
75
+ console.log(toJson({
76
+ action: "starting",
77
+ name: name ?? "worker-<auto>",
78
+ capabilities,
79
+ heartbeatIntervalSeconds
80
+ }));
81
+ }
82
+ else {
83
+ console.log("Starting worker...");
84
+ console.log(` Name: ${name ?? "worker-<auto>"}`);
85
+ console.log(` Capabilities: ${capabilities.join(", ")}`);
86
+ console.log(` Heartbeat interval: ${heartbeatIntervalSeconds}s`);
87
+ console.log("");
88
+ console.log("Worker will run until SIGTERM or SIGINT is received.");
89
+ }
90
+ // Run the worker process - this blocks until shutdown
91
+ yield* runWorkerProcess(config);
92
+ if (flag(flags, "json")) {
93
+ console.log(toJson({ action: "stopped" }));
94
+ }
95
+ else {
96
+ console.log("Worker stopped.");
97
+ }
98
+ }
99
+ else if (subcommand === "stop") {
100
+ // Worker stop is typically handled by sending SIGTERM to the worker process.
101
+ // Since each worker is a separate process, this command shows guidance.
102
+ // In a more advanced setup, we'd store worker PIDs and send signals.
103
+ const graceful = flag(flags, "graceful", "g");
104
+ if (flag(flags, "json")) {
105
+ console.log(toJson({
106
+ message: "Worker stop is signal-based",
107
+ instruction: "Send SIGTERM to the worker process for graceful shutdown",
108
+ graceful
109
+ }));
110
+ }
111
+ else {
112
+ console.log("Worker stop:");
113
+ console.log("");
114
+ console.log(" Workers are stopped by sending SIGTERM to the worker process.");
115
+ console.log(" The worker will finish its current task before exiting.");
116
+ console.log("");
117
+ console.log(" To stop a worker:");
118
+ console.log(" kill -SIGTERM <worker-pid>");
119
+ console.log("");
120
+ console.log(" To find worker PIDs, run:");
121
+ console.log(" tx worker list --json");
122
+ }
123
+ }
124
+ else if (subcommand === "status") {
125
+ // Show status of a specific worker or all workers
126
+ const workerId = pos[1];
127
+ if (workerId) {
128
+ // Show status of a specific worker
129
+ const workers = yield* svc.list();
130
+ const worker = workers.find(w => w.id === workerId);
131
+ if (!worker) {
132
+ console.error(`Worker not found: ${workerId}`);
133
+ process.exit(1);
134
+ }
135
+ if (flag(flags, "json")) {
136
+ console.log(toJson(worker));
137
+ }
138
+ else {
139
+ console.log(formatWorker(worker));
140
+ }
141
+ }
142
+ else {
143
+ // Show summary of all workers
144
+ const workers = yield* svc.list();
145
+ const byStatus = {
146
+ starting: workers.filter(w => w.status === "starting").length,
147
+ idle: workers.filter(w => w.status === "idle").length,
148
+ busy: workers.filter(w => w.status === "busy").length,
149
+ stopping: workers.filter(w => w.status === "stopping").length,
150
+ dead: workers.filter(w => w.status === "dead").length
151
+ };
152
+ if (flag(flags, "json")) {
153
+ console.log(toJson({
154
+ totalWorkers: workers.length,
155
+ byStatus
156
+ }));
157
+ }
158
+ else {
159
+ console.log("Worker Status Summary:");
160
+ console.log(` Total workers: ${workers.length}`);
161
+ console.log("");
162
+ console.log(" By status:");
163
+ console.log(` Starting: ${byStatus.starting}`);
164
+ console.log(` Idle: ${byStatus.idle}`);
165
+ console.log(` Busy: ${byStatus.busy}`);
166
+ console.log(` Stopping: ${byStatus.stopping}`);
167
+ console.log(` Dead: ${byStatus.dead}`);
168
+ }
169
+ }
170
+ }
171
+ else if (subcommand === "list") {
172
+ // List all workers with optional status filter
173
+ const statusOpt = opt(flags, "status", "s");
174
+ const statusFilter = statusOpt
175
+ ? statusOpt.split(",").map(s => s.trim())
176
+ : undefined;
177
+ const allWorkers = yield* svc.list();
178
+ const workers = statusFilter
179
+ ? allWorkers.filter(w => statusFilter.includes(w.status))
180
+ : allWorkers;
181
+ if (flag(flags, "json")) {
182
+ console.log(toJson(workers));
183
+ }
184
+ else {
185
+ if (workers.length === 0) {
186
+ console.log("No workers found.");
187
+ }
188
+ else {
189
+ console.log("Workers:");
190
+ for (const w of workers) {
191
+ console.log(formatWorkerLine(w));
192
+ }
193
+ console.log("");
194
+ console.log(`Total: ${workers.length} worker(s)`);
195
+ }
196
+ }
197
+ }
198
+ else {
199
+ console.error(`Unknown worker subcommand: ${subcommand}`);
200
+ console.error(`Run 'tx worker --help' for usage information`);
201
+ process.exit(1);
202
+ }
203
+ });
204
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"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"}
package/dist/help.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare const HELP_TEXT: string;
2
+ export declare const commandHelp: Record<string, string>;
3
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,QAoGF,CAAA;AAEpB,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4yC9C,CAAA"}