@castlemilk/omega 0.6.10 → 0.6.12

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 (165) hide show
  1. package/dist/cli.js +1748 -61
  2. package/dist/server/dist/app.d.ts.map +1 -1
  3. package/dist/server/dist/app.js +2 -0
  4. package/dist/server/dist/app.js.map +1 -1
  5. package/dist/server/dist/lib/run-task.js +2 -2
  6. package/dist/server/dist/lib/run-task.js.map +1 -1
  7. package/dist/server/dist/routes/metrics.d.ts.map +1 -1
  8. package/dist/server/dist/routes/metrics.js +76 -2
  9. package/dist/server/dist/routes/metrics.js.map +1 -1
  10. package/dist/server/dist/routes/prompt-versions.d.ts +4 -0
  11. package/dist/server/dist/routes/prompt-versions.d.ts.map +1 -0
  12. package/dist/server/dist/routes/prompt-versions.js +40 -0
  13. package/dist/server/dist/routes/prompt-versions.js.map +1 -0
  14. package/dist/server/dist/routes/tasks.js.map +1 -1
  15. package/dist/server/node_modules/@grpc/proto-loader/build/bin/proto-loader-gen-types.js +0 -0
  16. package/dist/server/node_modules/@omega/agent/dist/executor.d.ts.map +1 -1
  17. package/dist/server/node_modules/@omega/agent/dist/executor.js +52 -10
  18. package/dist/server/node_modules/@omega/agent/dist/executor.js.map +1 -1
  19. package/dist/server/node_modules/@omega/agent/dist/index.d.ts +1 -0
  20. package/dist/server/node_modules/@omega/agent/dist/index.d.ts.map +1 -1
  21. package/dist/server/node_modules/@omega/agent/dist/index.js +1 -0
  22. package/dist/server/node_modules/@omega/agent/dist/index.js.map +1 -1
  23. package/dist/server/node_modules/@omega/agent/dist/planner.d.ts +6 -1
  24. package/dist/server/node_modules/@omega/agent/dist/planner.d.ts.map +1 -1
  25. package/dist/server/node_modules/@omega/agent/dist/planner.js +24 -5
  26. package/dist/server/node_modules/@omega/agent/dist/planner.js.map +1 -1
  27. package/dist/server/node_modules/@omega/agent/dist/prompt-context.d.ts +10 -0
  28. package/dist/server/node_modules/@omega/agent/dist/prompt-context.d.ts.map +1 -0
  29. package/dist/server/node_modules/@omega/agent/dist/prompt-context.js +138 -0
  30. package/dist/server/node_modules/@omega/agent/dist/prompt-context.js.map +1 -0
  31. package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.d.ts +22 -0
  32. package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.d.ts.map +1 -0
  33. package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.js +53 -0
  34. package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.js.map +1 -0
  35. package/dist/server/node_modules/@omega/agent/dist/prompts.d.ts +4 -2
  36. package/dist/server/node_modules/@omega/agent/dist/prompts.d.ts.map +1 -1
  37. package/dist/server/node_modules/@omega/agent/dist/prompts.js +31 -2
  38. package/dist/server/node_modules/@omega/agent/dist/prompts.js.map +1 -1
  39. package/dist/server/node_modules/@omega/agent/package.json +4 -0
  40. package/dist/server/node_modules/@omega/core/dist/provider.d.ts +12 -2
  41. package/dist/server/node_modules/@omega/core/dist/provider.d.ts.map +1 -1
  42. package/dist/server/node_modules/@omega/db/dist/index.d.ts +1 -0
  43. package/dist/server/node_modules/@omega/db/dist/index.d.ts.map +1 -1
  44. package/dist/server/node_modules/@omega/db/dist/index.js +1 -0
  45. package/dist/server/node_modules/@omega/db/dist/index.js.map +1 -1
  46. package/dist/server/node_modules/@omega/db/dist/prompt-versions.d.ts +19 -0
  47. package/dist/server/node_modules/@omega/db/dist/prompt-versions.d.ts.map +1 -0
  48. package/dist/server/node_modules/@omega/db/dist/prompt-versions.js +32 -0
  49. package/dist/server/node_modules/@omega/db/dist/prompt-versions.js.map +1 -0
  50. package/dist/server/node_modules/@omega/db/generated/client/edge.js +19 -4
  51. package/dist/server/node_modules/@omega/db/generated/client/index-browser.js +16 -1
  52. package/dist/server/node_modules/@omega/db/generated/client/index.d.ts +1511 -93
  53. package/dist/server/node_modules/@omega/db/generated/client/index.js +19 -4
  54. package/dist/server/node_modules/@omega/db/generated/client/libquery_engine-darwin-arm64.dylib.node +0 -0
  55. package/dist/server/node_modules/@omega/db/generated/client/package.json +1 -1
  56. package/dist/server/node_modules/@omega/db/generated/client/schema.prisma +14 -0
  57. package/dist/server/node_modules/@omega/db/generated/client/wasm.js +19 -4
  58. package/dist/server/node_modules/@omega/db/prisma/migrations/20260703010000_add_agent_run_usage/migration.sql +4 -0
  59. package/dist/server/node_modules/@omega/db/prisma/migrations/20260703020000_add_prompt_versions/migration.sql +16 -0
  60. package/dist/server/node_modules/@omega/providers/dist/anthropic.d.ts +2 -2
  61. package/dist/server/node_modules/@omega/providers/dist/anthropic.d.ts.map +1 -1
  62. package/dist/server/node_modules/@omega/providers/dist/anthropic.js +16 -1
  63. package/dist/server/node_modules/@omega/providers/dist/anthropic.js.map +1 -1
  64. package/dist/server/node_modules/@omega/providers/dist/gemini.d.ts +2 -2
  65. package/dist/server/node_modules/@omega/providers/dist/gemini.d.ts.map +1 -1
  66. package/dist/server/node_modules/@omega/providers/dist/gemini.js +14 -1
  67. package/dist/server/node_modules/@omega/providers/dist/gemini.js.map +1 -1
  68. package/dist/server/node_modules/@omega/providers/dist/kimi.d.ts +3 -3
  69. package/dist/server/node_modules/@omega/providers/dist/kimi.d.ts.map +1 -1
  70. package/dist/server/node_modules/@omega/providers/dist/ollama.d.ts +2 -2
  71. package/dist/server/node_modules/@omega/providers/dist/ollama.d.ts.map +1 -1
  72. package/dist/server/node_modules/@omega/providers/dist/ollama.js +13 -1
  73. package/dist/server/node_modules/@omega/providers/dist/ollama.js.map +1 -1
  74. package/dist/server/node_modules/@omega/providers/dist/openai.d.ts +3 -3
  75. package/dist/server/node_modules/@omega/providers/dist/openai.d.ts.map +1 -1
  76. package/dist/server/node_modules/@omega/providers/dist/openai.js +24 -3
  77. package/dist/server/node_modules/@omega/providers/dist/openai.js.map +1 -1
  78. package/dist/server/node_modules/@omega/providers/dist/providers.test.js +13 -9
  79. package/dist/server/node_modules/@omega/providers/dist/providers.test.js.map +1 -1
  80. package/dist/server/node_modules/mime/cli.js +0 -0
  81. package/dist/server/node_modules/mime/src/build.js +0 -0
  82. package/dist/server/node_modules/wrap-ansi/index.js +0 -0
  83. package/dist/server/pglite-data/base/5/1247 +0 -0
  84. package/dist/server/pglite-data/base/5/1249 +0 -0
  85. package/dist/server/pglite-data/base/5/1249_fsm +0 -0
  86. package/dist/server/pglite-data/base/5/1259 +0 -0
  87. package/dist/server/pglite-data/base/5/1259_fsm +0 -0
  88. package/dist/server/pglite-data/base/5/1259_vm +0 -0
  89. package/dist/server/pglite-data/base/5/16384 +0 -0
  90. package/dist/server/pglite-data/base/5/16392 +0 -0
  91. package/dist/server/pglite-data/base/5/16394 +0 -0
  92. package/dist/server/pglite-data/base/5/16404 +0 -0
  93. package/dist/server/pglite-data/base/5/16406 +0 -0
  94. package/dist/server/pglite-data/base/5/16406_fsm +0 -0
  95. package/dist/server/pglite-data/base/5/16421 +0 -0
  96. package/dist/server/pglite-data/base/5/16423 +0 -0
  97. package/dist/server/pglite-data/base/5/16437 +0 -0
  98. package/dist/server/pglite-data/base/5/16439 +0 -0
  99. package/dist/server/pglite-data/base/5/16439_fsm +0 -0
  100. package/dist/server/pglite-data/base/5/16449 +0 -0
  101. package/dist/server/pglite-data/base/5/16451 +0 -0
  102. package/dist/server/pglite-data/base/5/16462 +0 -0
  103. package/dist/server/pglite-data/base/5/16464 +0 -0
  104. package/dist/server/pglite-data/base/5/16478 +0 -0
  105. package/dist/server/pglite-data/base/5/16480 +0 -0
  106. package/dist/server/pglite-data/base/5/16510 +0 -0
  107. package/dist/server/pglite-data/base/5/16511 +0 -0
  108. package/dist/server/pglite-data/base/5/16512 +0 -0
  109. package/dist/server/pglite-data/base/5/16513 +0 -0
  110. package/dist/server/pglite-data/base/5/16514 +0 -0
  111. package/dist/server/pglite-data/base/5/24576 +0 -0
  112. package/dist/server/pglite-data/base/5/24576_fsm +0 -0
  113. package/dist/server/pglite-data/base/5/24589 +0 -0
  114. package/dist/server/pglite-data/base/5/24591 +0 -0
  115. package/dist/server/pglite-data/base/5/24592 +0 -0
  116. package/dist/server/pglite-data/base/5/2579 +0 -0
  117. package/dist/server/pglite-data/base/5/2604 +0 -0
  118. package/dist/server/pglite-data/base/5/2604_fsm +0 -0
  119. package/dist/server/pglite-data/base/5/2606 +0 -0
  120. package/dist/server/pglite-data/base/5/2608 +0 -0
  121. package/dist/server/pglite-data/base/5/2608_fsm +0 -0
  122. package/dist/server/pglite-data/base/5/2610 +0 -0
  123. package/dist/server/pglite-data/base/5/2620 +0 -0
  124. package/dist/server/pglite-data/base/5/2656 +0 -0
  125. package/dist/server/pglite-data/base/5/2657 +0 -0
  126. package/dist/server/pglite-data/base/5/2658 +0 -0
  127. package/dist/server/pglite-data/base/5/2659 +0 -0
  128. package/dist/server/pglite-data/base/5/2662 +0 -0
  129. package/dist/server/pglite-data/base/5/2663 +0 -0
  130. package/dist/server/pglite-data/base/5/2664 +0 -0
  131. package/dist/server/pglite-data/base/5/2665 +0 -0
  132. package/dist/server/pglite-data/base/5/2666 +0 -0
  133. package/dist/server/pglite-data/base/5/2667 +0 -0
  134. package/dist/server/pglite-data/base/5/2673 +0 -0
  135. package/dist/server/pglite-data/base/5/2674 +0 -0
  136. package/dist/server/pglite-data/base/5/2678 +0 -0
  137. package/dist/server/pglite-data/base/5/2679 +0 -0
  138. package/dist/server/pglite-data/base/5/2699 +0 -0
  139. package/dist/server/pglite-data/base/5/2701 +0 -0
  140. package/dist/server/pglite-data/base/5/2702 +0 -0
  141. package/dist/server/pglite-data/base/5/2703 +0 -0
  142. package/dist/server/pglite-data/base/5/2704 +0 -0
  143. package/dist/server/pglite-data/base/5/32768 +0 -0
  144. package/dist/server/pglite-data/base/5/32779 +0 -0
  145. package/dist/server/pglite-data/base/5/32780 +0 -0
  146. package/dist/server/pglite-data/base/5/32781 +0 -0
  147. package/dist/server/pglite-data/base/5/32783 +0 -0
  148. package/dist/server/pglite-data/base/5/3455 +0 -0
  149. package/dist/server/pglite-data/base/5/pg_internal.init +0 -0
  150. package/dist/server/pglite-data/global/pg_control +0 -0
  151. package/dist/server/pglite-data/global/pg_internal.init +0 -0
  152. package/dist/server/pglite-data/pg_wal/000000010000000000000001 +0 -0
  153. package/dist/server/pglite-data/pg_xact/0000 +0 -0
  154. package/dist/server/pglite-data/postmaster.pid +1 -1
  155. package/dist/server/src/app.ts +2 -0
  156. package/dist/server/src/lib/run-task.ts +2 -2
  157. package/dist/server/src/routes/metrics.ts +81 -2
  158. package/dist/server/src/routes/prompt-versions.ts +46 -0
  159. package/dist/server/src/routes/tasks.ts +2 -2
  160. package/dist/web/dist/assets/index-BVjHH_u_.js +40 -0
  161. package/dist/web/dist/assets/index-BkzWwMOJ.js +40 -0
  162. package/dist/web/dist/assets/index-D4rY_mY0.css +1 -0
  163. package/dist/web/dist/assets/index-DHQbiQAM.css +1 -0
  164. package/dist/web/dist/index.html +2 -2
  165. package/package.json +14 -13
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIzE,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc;IAIlC,OAAO,KAAK,OAAO,GAElB;IAEK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBhE"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI3F,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc;IAIlC,OAAO,KAAK,OAAO,GAElB;IAEK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkC1E"}
@@ -32,7 +32,19 @@ export class OllamaProvider {
32
32
  throw new Error(`Ollama request failed: ${res.status.toString()} ${res.statusText}`);
33
33
  }
34
34
  const data = (await res.json());
35
- return data.message?.content ?? '';
35
+ const usage = data.prompt_eval_count !== undefined || data.eval_count !== undefined
36
+ ? {
37
+ promptTokens: data.prompt_eval_count,
38
+ completionTokens: data.eval_count,
39
+ totalTokens: data.prompt_eval_count !== undefined && data.eval_count !== undefined
40
+ ? data.prompt_eval_count + data.eval_count
41
+ : undefined,
42
+ }
43
+ : undefined;
44
+ return {
45
+ content: data.message?.content ?? '',
46
+ usage,
47
+ };
36
48
  }
37
49
  }
38
50
  //# sourceMappingURL=ollama.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,OAAO,cAAc;IAChB,MAAM,CAAiB;IAEhC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoC,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAAkB;QAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;gBAC9C,QAAQ,EAAE;oBACR,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;iBAClC;gBACD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;aACzF,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuC,CAAC;QACtE,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,OAAO,cAAc;IAChB,MAAM,CAAiB;IAEhC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoC,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAAkB;QAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;gBAC9C,QAAQ,EAAE;oBACR,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;iBAClC;gBACD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;aACzF,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwF,CAAC;QACvH,MAAM,KAAK,GACT,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YACnE,CAAC,CAAC;gBACE,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,gBAAgB,EAAE,IAAI,CAAC,UAAU;gBACjC,WAAW,EACT,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;oBACnE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;oBAC1C,CAAC,CAAC,SAAS;aAChB;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;YACpC,KAAK;SACN,CAAC;IACJ,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
- import type { Provider, ProviderConfig, SendOptions, ToolDefinition } from '@omega/core';
1
+ import type { Provider, ProviderConfig, SendOptions, ToolDefinition, ProviderResponse } from '@omega/core';
2
2
  export declare class OpenAIProvider implements Provider {
3
3
  readonly config: ProviderConfig;
4
4
  constructor(config: ProviderConfig);
5
5
  protected get baseUrl(): string;
6
6
  protected readonly supportsTemperature: boolean;
7
7
  listModels(): Promise<string[]>;
8
- send(prompt: string, opts?: SendOptions): Promise<string>;
9
- sendWithTools(prompt: string, tools: ToolDefinition[], opts?: SendOptions): Promise<string>;
8
+ send(prompt: string, opts?: SendOptions): Promise<ProviderResponse>;
9
+ sendWithTools(prompt: string, tools: ToolDefinition[], opts?: SendOptions): Promise<ProviderResponse>;
10
10
  protected authHeaders(): Record<string, string>;
11
11
  }
12
12
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIzF,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc;IAIlC,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAQ;IAEjD,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BzD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA2DjG,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhD"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAS,MAAM,aAAa,CAAC;AA+BlH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc;IAIlC,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAQ;IAEjD,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BnE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyD3G,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhD"}
@@ -1,4 +1,13 @@
1
1
  const DEFAULT_BASE_URL = 'https://api.openai.com/v1';
2
+ function toUsage(data) {
3
+ if (!data.usage)
4
+ return undefined;
5
+ return {
6
+ promptTokens: data.usage.prompt_tokens,
7
+ completionTokens: data.usage.completion_tokens,
8
+ totalTokens: data.usage.total_tokens,
9
+ };
10
+ }
2
11
  export class OpenAIProvider {
3
12
  config;
4
13
  constructor(config) {
@@ -39,7 +48,11 @@ export class OpenAIProvider {
39
48
  throw new Error(`OpenAI request failed: ${res.status.toString()} ${res.statusText}`);
40
49
  }
41
50
  const data = (await res.json());
42
- return data.choices?.[0]?.message?.content ?? '';
51
+ return {
52
+ content: data.choices?.[0]?.message?.content ?? '',
53
+ usage: toUsage(data),
54
+ model: data.model,
55
+ };
43
56
  }
44
57
  async sendWithTools(prompt, tools, opts) {
45
58
  const res = await fetch(`${this.baseUrl}/chat/completions`, {
@@ -86,9 +99,17 @@ export class OpenAIProvider {
86
99
  })(),
87
100
  }))
88
101
  .filter((tc) => tc.id && tc.name);
89
- return JSON.stringify({ tool_calls: normalized });
102
+ return {
103
+ content: JSON.stringify({ tool_calls: normalized }),
104
+ usage: toUsage(data),
105
+ model: data.model,
106
+ };
90
107
  }
91
- return message?.content ?? '';
108
+ return {
109
+ content: message?.content ?? '',
110
+ usage: toUsage(data),
111
+ model: data.model,
112
+ };
92
113
  }
93
114
  authHeaders() {
94
115
  return this.config.apiKey ? { Authorization: `Bearer ${this.config.apiKey}` } : {};
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,11 @@ describe('createProvider', () => {
25
25
  enabled: true,
26
26
  };
27
27
  it('creates an OpenAI provider and sends a chat request', async () => {
28
- fetchSpy.mockResolvedValue(jsonResponse({ choices: [{ message: { content: 'Hello' } }] }));
28
+ fetchSpy.mockResolvedValue(jsonResponse({ choices: [{ message: { content: 'Hello' } }], usage: { prompt_tokens: 10, completion_tokens: 5, total_tokens: 15 } }));
29
29
  const provider = createProvider(openaiConfig);
30
30
  const result = await provider.send('hi');
31
- expect(result).toBe('Hello');
31
+ expect(result.content).toBe('Hello');
32
+ expect(result.usage).toEqual({ promptTokens: 10, completionTokens: 5, totalTokens: 15 });
32
33
  expect(fetchSpy).toHaveBeenCalledWith('https://api.openai.com/v1/chat/completions', expect.objectContaining({
33
34
  method: 'POST',
34
35
  headers: expect.objectContaining({ Authorization: 'Bearer sk-test' }),
@@ -55,10 +56,11 @@ describe('createProvider', () => {
55
56
  enabled: true,
56
57
  };
57
58
  it('creates an Anthropic provider and sends a message', async () => {
58
- fetchSpy.mockResolvedValue(jsonResponse({ content: [{ type: 'text', text: 'Hi there' }] }));
59
+ fetchSpy.mockResolvedValue(jsonResponse({ content: [{ type: 'text', text: 'Hi there' }], usage: { input_tokens: 8, output_tokens: 2 } }));
59
60
  const provider = createProvider(anthropicConfig);
60
61
  const result = await provider.send('hello', { system: 'You are helpful', temperature: 0.5 });
61
- expect(result).toBe('Hi there');
62
+ expect(result.content).toBe('Hi there');
63
+ expect(result.usage).toEqual({ promptTokens: 8, completionTokens: 2, totalTokens: 10 });
62
64
  expect(fetchSpy).toHaveBeenCalledWith('https://api.anthropic.com/v1/messages', expect.objectContaining({
63
65
  method: 'POST',
64
66
  headers: expect.objectContaining({
@@ -80,10 +82,11 @@ describe('createProvider', () => {
80
82
  enabled: true,
81
83
  };
82
84
  it('creates an Ollama provider and sends a chat request', async () => {
83
- fetchSpy.mockResolvedValue(jsonResponse({ message: { content: 'Howdy' } }));
85
+ fetchSpy.mockResolvedValue(jsonResponse({ message: { content: 'Howdy' }, prompt_eval_count: 12, eval_count: 3 }));
84
86
  const provider = createProvider(ollamaConfig);
85
87
  const result = await provider.send('hey');
86
- expect(result).toBe('Howdy');
88
+ expect(result.content).toBe('Howdy');
89
+ expect(result.usage).toEqual({ promptTokens: 12, completionTokens: 3, totalTokens: 15 });
87
90
  expect(fetchSpy).toHaveBeenCalledWith('http://localhost:11434/api/chat', expect.objectContaining({
88
91
  method: 'POST',
89
92
  body: expect.stringContaining('"stream":false'),
@@ -104,10 +107,11 @@ describe('createProvider', () => {
104
107
  enabled: true,
105
108
  };
106
109
  it('creates a Gemini provider and generates content', async () => {
107
- fetchSpy.mockResolvedValue(jsonResponse({ candidates: [{ content: { parts: [{ text: 'Greetings' }] } }] }));
110
+ fetchSpy.mockResolvedValue(jsonResponse({ candidates: [{ content: { parts: [{ text: 'Greetings' }] } }], usageMetadata: { promptTokenCount: 6, candidatesTokenCount: 1, totalTokenCount: 7 } }));
108
111
  const provider = createProvider(geminiConfig);
109
112
  const result = await provider.send('hello', { system: 'Be polite', temperature: 0.7 });
110
- expect(result).toBe('Greetings');
113
+ expect(result.content).toBe('Greetings');
114
+ expect(result.usage).toEqual({ promptTokens: 6, completionTokens: 1, totalTokens: 7 });
111
115
  expect(fetchSpy).toHaveBeenCalledWith(expect.stringContaining('/models/gemini-1.5-flash:generateContent'), expect.objectContaining({ method: 'POST' }));
112
116
  const url = fetchSpy.mock.calls[0][0];
113
117
  expect(url).toContain('key=gemini-key');
@@ -135,7 +139,7 @@ describe('createProvider', () => {
135
139
  enabled: true,
136
140
  };
137
141
  const result = await createProvider(genericConfig).send('hi');
138
- expect(result).toBe('Generic');
142
+ expect(result.content).toBe('Generic');
139
143
  expect(fetchSpy).toHaveBeenCalledWith('http://localhost:8080/v1/chat/completions', expect.objectContaining({
140
144
  headers: expect.objectContaining({ Authorization: 'Bearer generic-key' }),
141
145
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"providers.test.js","sourceRoot":"","sources":["../src/providers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.test.js","sourceRoot":"","sources":["../src/providers.test.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
File without changes
File without changes
Binary file
@@ -1,6 +1,6 @@
1
1
  -42
2
2
  /pglite/data
3
- 1783047423
3
+ 1783076477
4
4
  5432
5
5
 
6
6
 
@@ -6,6 +6,7 @@ import { taskRoutes } from './routes/tasks.js';
6
6
  import { providerRoutes } from './routes/providers.js';
7
7
  import { routerRoutes } from './routes/router.js';
8
8
  import { metricsRoutes } from './routes/metrics.js';
9
+ import { promptVersionRoutes } from './routes/prompt-versions.js';
9
10
 
10
11
  export const app: express.Express = express();
11
12
 
@@ -17,6 +18,7 @@ app.use('/tasks', taskRoutes(prisma));
17
18
  app.use('/providers', providerRoutes(prisma));
18
19
  app.use('/router', routerRoutes(prisma));
19
20
  app.use('/metrics', metricsRoutes(prisma));
21
+ app.use('/prompt-versions', promptVersionRoutes(prisma));
20
22
 
21
23
  app.use((err: unknown, _req: express.Request, res: express.Response, _next: express.NextFunction) => {
22
24
  console.error(err);
@@ -80,12 +80,12 @@ export async function runTask(prisma: PrismaClient, taskId: string) {
80
80
  const prompt = [task.title, task.description].filter(Boolean).join('\n\n');
81
81
 
82
82
  try {
83
- const result = await provider.send(prompt, { model: modelName });
83
+ const response = await provider.send(prompt, { model: modelName });
84
84
  const updated = await prisma.task.update({
85
85
  where: { id: taskId },
86
86
  data: {
87
87
  status: 'done',
88
- result,
88
+ result: response.content,
89
89
  provider: providerName,
90
90
  model: modelName,
91
91
  error: null,
@@ -9,6 +9,27 @@ const __filename = fileURLToPath(import.meta.url);
9
9
  const root = path.resolve(__filename, '..', '..', '..', '..');
10
10
  const reportsDir = path.join(root, '.omega', 'reports');
11
11
 
12
+ async function listReports(pattern: RegExp): Promise<{ file: string; modifiedAt: string }[]> {
13
+ try {
14
+ const files = await fs.readdir(reportsDir);
15
+ const matches = files.filter((f) => pattern.test(f)).sort().reverse();
16
+ const results: { file: string; modifiedAt: string }[] = [];
17
+ for (const file of matches) {
18
+ const stat = await fs.stat(path.join(reportsDir, file));
19
+ results.push({ file, modifiedAt: stat.mtime.toISOString() });
20
+ }
21
+ return results;
22
+ } catch {
23
+ return [];
24
+ }
25
+ }
26
+
27
+ async function readReport(file: string): Promise<unknown> {
28
+ const raw = await fs.readFile(path.join(reportsDir, file), 'utf-8');
29
+ if (file.endsWith('.json')) return JSON.parse(raw) as unknown;
30
+ return raw;
31
+ }
32
+
12
33
  async function latestReport(pattern: RegExp): Promise<{ file: string; data: unknown } | undefined> {
13
34
  try {
14
35
  const files = await fs.readdir(reportsDir);
@@ -18,8 +39,7 @@ async function latestReport(pattern: RegExp): Promise<{ file: string; data: unkn
18
39
  .reverse();
19
40
  const latest = matches[0];
20
41
  if (!latest) return undefined;
21
- const raw = await fs.readFile(path.join(reportsDir, latest), 'utf-8');
22
- const data = latest.endsWith('.json') ? (JSON.parse(raw) as unknown) : raw;
42
+ const data = await readReport(latest);
23
43
  return { file: latest, data };
24
44
  } catch {
25
45
  return undefined;
@@ -78,6 +98,8 @@ export function metricsRoutes(prisma: PrismaClient): Router {
78
98
  )
79
99
  : 0;
80
100
 
101
+ const totalTokens = agentRuns.reduce((sum, r) => sum + (r.totalTokens ?? 0), 0);
102
+
81
103
  const recentRuns = agentRuns.map((r) => ({
82
104
  id: r.id,
83
105
  taskId: r.taskId,
@@ -88,11 +110,15 @@ export function metricsRoutes(prisma: PrismaClient): Router {
88
110
  validationSummary: r.validationSummary,
89
111
  publishedVersion: r.publishedVersion,
90
112
  durationMs: durationMs(r.createdAt, r.updatedAt),
113
+ promptTokens: r.promptTokens,
114
+ completionTokens: r.completionTokens,
115
+ totalTokens: r.totalTokens,
91
116
  createdAt: r.createdAt,
92
117
  }));
93
118
 
94
119
  const e2eReport = await latestReport(/^e2e-raw-/);
95
120
  const benchmarkReport = await latestReport(/^benchmark-/);
121
+ const abReport = await latestReport(/^ab-/);
96
122
 
97
123
  res.json({
98
124
  taskCounts,
@@ -100,13 +126,66 @@ export function metricsRoutes(prisma: PrismaClient): Router {
100
126
  providerUsage,
101
127
  modelUsage,
102
128
  avgDurationMs,
129
+ totalTokens,
103
130
  recentRuns,
104
131
  latestReports: {
105
132
  e2e: e2eReport,
106
133
  benchmark: benchmarkReport,
134
+ ab: abReport,
107
135
  },
108
136
  });
109
137
  }));
110
138
 
139
+ r.get('/reports', asyncHandler(async (_req, res) => {
140
+ const e2e = await listReports(/^e2e-raw-/);
141
+ const benchmark = await listReports(/^benchmark-/);
142
+ res.json({ e2e, benchmark });
143
+ }));
144
+
145
+ r.get('/reports/benchmark', asyncHandler(async (_req, res) => {
146
+ const reports = await listReports(/^benchmark-/);
147
+ res.json(reports);
148
+ }));
149
+
150
+ r.get('/reports/benchmark/:file', asyncHandler(async (req, res) => {
151
+ const file = path.basename(req.params.file);
152
+ if (!file.startsWith('benchmark-')) {
153
+ res.status(400).json({ error: 'Invalid benchmark report filename' });
154
+ return;
155
+ }
156
+ try {
157
+ const data = await readReport(file);
158
+ res.json(data);
159
+ } catch {
160
+ res.status(404).json({ error: 'Report not found' });
161
+ }
162
+ }));
163
+
164
+ r.get('/reports/ab', asyncHandler(async (_req, res) => {
165
+ const reports = await listReports(/^ab-/);
166
+ res.json(reports);
167
+ }));
168
+
169
+ r.get('/reports/ab/:file', asyncHandler(async (req, res) => {
170
+ const file = path.basename(req.params.file);
171
+ if (!file.startsWith('ab-')) {
172
+ res.status(400).json({ error: 'Invalid A/B report filename' });
173
+ return;
174
+ }
175
+ try {
176
+ const data = await readReport(file);
177
+ res.json(data);
178
+ } catch {
179
+ res.status(404).json({ error: 'Report not found' });
180
+ }
181
+ }));
182
+
183
+ r.get('/reports/latest', asyncHandler(async (_req, res) => {
184
+ const e2eReport = await latestReport(/^e2e-raw-/);
185
+ const benchmarkReport = await latestReport(/^benchmark-/);
186
+ const abReport = await latestReport(/^ab-/);
187
+ res.json({ e2e: e2eReport, benchmark: benchmarkReport, ab: abReport });
188
+ }));
189
+
111
190
  return r;
112
191
  }