task-o-matic 0.0.9 → 0.0.10

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.
@@ -31,6 +31,11 @@ export { PRDService } from "../services/prd";
31
31
  * Handles project initialization, PRD management, task generation, and task splitting
32
32
  */
33
33
  export { WorkflowService } from "../services/workflow";
34
+ /**
35
+ * BenchmarkService - AI model benchmarking
36
+ * Handles running benchmarks, storing results, and comparing models
37
+ */
38
+ export { BenchmarkService } from "../services/benchmark";
34
39
  /**
35
40
  * Result types for workflow service operations
36
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD;;GAEG;AACH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAMnC;;;GAGG;AACH,cAAc,UAAU,CAAC;AAEzB;;GAEG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAM5D;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EACL,sBAAsB,EACtB,wCAAwC,GACzC,MAAM,4BAA4B,CAAC;AAMpC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD;;GAEG;AACH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAMnC;;;GAGG;AACH,cAAc,UAAU,CAAC;AAEzB;;GAEG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAM5D;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EACL,sBAAsB,EACtB,wCAAwC,GACzC,MAAM,4BAA4B,CAAC;AAMpC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/dist/lib/index.js CHANGED
@@ -32,7 +32,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
32
32
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.runValidations = exports.isValidAIProvider = exports.createStreamingOptionsWithCustomHandlers = exports.createStreamingOptions = exports.formatStackInfo = exports.PromptBuilder = exports.ContextBuilder = exports.ModelProvider = exports.AIOperations = exports.configManager = exports.ConfigManager = exports.FileSystemStorage = exports.buildAIConfig = exports.resetServiceInstances = exports.getContextBuilder = exports.getStorage = exports.getModelProvider = exports.getAIOperations = exports.WorkflowService = exports.PRDService = exports.TaskService = void 0;
35
+ exports.runValidations = exports.isValidAIProvider = exports.createStreamingOptionsWithCustomHandlers = exports.createStreamingOptions = exports.formatStackInfo = exports.PromptBuilder = exports.ContextBuilder = exports.ModelProvider = exports.AIOperations = exports.configManager = exports.ConfigManager = exports.FileSystemStorage = exports.buildAIConfig = exports.resetServiceInstances = exports.getContextBuilder = exports.getStorage = exports.getModelProvider = exports.getAIOperations = exports.BenchmarkService = exports.WorkflowService = exports.PRDService = exports.TaskService = void 0;
36
36
  // ============================================================================
37
37
  // Main Services - Business Logic Layer
38
38
  // ============================================================================
@@ -54,6 +54,12 @@ Object.defineProperty(exports, "PRDService", { enumerable: true, get: function (
54
54
  */
55
55
  var workflow_1 = require("../services/workflow");
56
56
  Object.defineProperty(exports, "WorkflowService", { enumerable: true, get: function () { return workflow_1.WorkflowService; } });
57
+ /**
58
+ * BenchmarkService - AI model benchmarking
59
+ * Handles running benchmarks, storing results, and comparing models
60
+ */
61
+ var benchmark_1 = require("../services/benchmark");
62
+ Object.defineProperty(exports, "BenchmarkService", { enumerable: true, get: function () { return benchmark_1.BenchmarkService; } });
57
63
  // ============================================================================
58
64
  // Core Types - Type Definitions
59
65
  // ============================================================================
@@ -44,15 +44,24 @@ describe("HookRegistry", () => {
44
44
  });
45
45
  it("should not fail if a listener throws", async () => {
46
46
  const task = { id: "1", title: "Test Task" };
47
- hooks_1.hooks.on("task:created", () => {
48
- throw new Error("Oops");
49
- });
50
- let secondCalled = false;
51
- hooks_1.hooks.on("task:created", () => {
52
- secondCalled = true;
53
- });
54
- // Should not throw
55
- await hooks_1.hooks.emit("task:created", { task });
56
- node_assert_1.default.strictEqual(secondCalled, true);
47
+ // Suppress console.error for this test
48
+ const originalConsoleError = console.error;
49
+ console.error = () => { };
50
+ try {
51
+ hooks_1.hooks.on("task:created", () => {
52
+ throw new Error("Oops");
53
+ });
54
+ let secondCalled = false;
55
+ hooks_1.hooks.on("task:created", () => {
56
+ secondCalled = true;
57
+ });
58
+ // Should not throw
59
+ await hooks_1.hooks.emit("task:created", { task });
60
+ node_assert_1.default.strictEqual(secondCalled, true);
61
+ }
62
+ finally {
63
+ // Restore console.error
64
+ console.error = originalConsoleError;
65
+ }
57
66
  });
58
67
  });
@@ -59,4 +59,37 @@ describe("Task Loop Git Integration", () => {
59
59
  assert_1.default.strictEqual(result.message, `feat: complete task ${mockTaskTitle}`);
60
60
  assert_1.default.deepStrictEqual(result.files, []);
61
61
  });
62
+ it("should handle git command failures gracefully", async () => {
63
+ const gitState = {
64
+ beforeHead: "abc",
65
+ afterHead: "def",
66
+ hasUncommittedChanges: false,
67
+ };
68
+ const mockExec = async () => {
69
+ throw new Error("Git failed");
70
+ };
71
+ const result = await (0, task_loop_execution_1.extractCommitInfo)("1", mockTaskTitle, mockExecutionMessage, gitState, mockExec);
72
+ assert_1.default.strictEqual(result.message, `feat: complete task ${mockTaskTitle}`);
73
+ assert_1.default.deepStrictEqual(result.files, []);
74
+ });
75
+ it("should handle invalid AI JSON response", async () => {
76
+ const gitState = {
77
+ beforeHead: "abc",
78
+ afterHead: "abc",
79
+ hasUncommittedChanges: true,
80
+ };
81
+ const mockExec = async (cmd) => {
82
+ if (cmd.includes("git diff"))
83
+ return { stdout: "diff", stderr: "" };
84
+ if (cmd.includes("git status"))
85
+ return { stdout: " M file.ts", stderr: "" };
86
+ return { stdout: "", stderr: "" };
87
+ };
88
+ const mockAiOps = {
89
+ streamText: async () => "Not JSON",
90
+ };
91
+ const result = await (0, task_loop_execution_1.extractCommitInfo)("1", mockTaskTitle, mockExecutionMessage, gitState, mockExec, mockAiOps);
92
+ assert_1.default.strictEqual(result.message, `feat: complete task ${mockTaskTitle}`);
93
+ assert_1.default.deepStrictEqual(result.files, ["file.ts"]);
94
+ });
62
95
  });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/test/validation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const validation_1 = require("../lib/validation");
8
+ describe("Validation Utils", () => {
9
+ describe("isValidAIProvider", () => {
10
+ it("should return true for valid providers", () => {
11
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("openrouter"), true);
12
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("openai"), true);
13
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("anthropic"), true);
14
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("custom"), true);
15
+ });
16
+ it("should return false for invalid providers", () => {
17
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("invalid"), false);
18
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)(""), false);
19
+ assert_1.default.strictEqual((0, validation_1.isValidAIProvider)("gpt-4"), false);
20
+ });
21
+ });
22
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "task-o-matic",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "AI-powered task management CLI",
5
5
  "keywords": [
6
6
  "task-management",