@ftarganski/omni-ai 0.1.1 → 1.1.6

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 (34) hide show
  1. package/README.md +1485 -0
  2. package/dist/{chunk-PPTEJ2FH.js → chunk-6KQE3NUV.js} +18 -10
  3. package/dist/{chunk-6APAA6WD.js → chunk-A7SDO64L.js} +54 -54
  4. package/dist/{chunk-AWMSN7OB.js → chunk-AU3KUCI7.js} +47 -45
  5. package/dist/{chunk-S5MK6LBH.js → chunk-BU7KK25R.js} +33 -18
  6. package/dist/{chunk-6OPRALDC.js → chunk-E2JJOPZB.js} +30 -18
  7. package/dist/{chunk-6YFFZMXY.js → chunk-GQL6DDF4.js} +7 -4
  8. package/dist/{chunk-TFU437SW.js → chunk-IVDHCLGS.js} +5 -4
  9. package/dist/{chunk-M4QJF7CV.js → chunk-JQRNMPWC.js} +11 -6
  10. package/dist/{chunk-3RZELMF2.js → chunk-LEW34E32.js} +27 -18
  11. package/dist/{chunk-JTXDF5KG.js → chunk-MQWOX2ZJ.js} +11 -6
  12. package/dist/{chunk-5WELBZWN.js → chunk-WRBBQFKB.js} +10 -8
  13. package/dist/{chunk-Y4EYGADJ.js → chunk-YRGG3PAL.js} +15 -10
  14. package/dist/{chunk-AG6NZIJ3.js → chunk-ZSNUHWSC.js} +10 -10
  15. package/dist/cli/bin.js +297 -254
  16. package/dist/{src-6MUVU5ML.js → dist-KBUP5623.js} +2 -2
  17. package/dist/{src-ZHTGR7T6.js → dist-Z76P5KV4.js} +2 -2
  18. package/dist/index.js +1 -1
  19. package/dist/mcp.js +15 -18
  20. package/dist/memory.js +27 -32
  21. package/dist/provider-anthropic.js +10 -10
  22. package/dist/provider-google.js +15 -14
  23. package/dist/provider-openai.js +15 -10
  24. package/dist/skills/backend.js +1 -1
  25. package/dist/skills/code.js +1 -1
  26. package/dist/skills/frontend.js +1 -1
  27. package/dist/skills/fs.js +1 -1
  28. package/dist/skills/git.js +1 -1
  29. package/dist/skills/http.js +1 -1
  30. package/dist/skills/index.js +9 -9
  31. package/dist/skills/multimodal.js +1 -1
  32. package/dist/skills/qa.js +1 -1
  33. package/dist/skills/ux.js +1 -1
  34. package/package.json +20 -17
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  OpenAIProvider
4
- } from "./chunk-Y4EYGADJ.js";
5
- import "./chunk-AWMSN7OB.js";
4
+ } from "./chunk-YRGG3PAL.js";
5
+ import "./chunk-AU3KUCI7.js";
6
6
  export {
7
7
  OpenAIProvider
8
8
  };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  AnthropicProvider
4
- } from "./chunk-AG6NZIJ3.js";
5
- import "./chunk-AWMSN7OB.js";
4
+ } from "./chunk-ZSNUHWSC.js";
5
+ import "./chunk-AU3KUCI7.js";
6
6
  export {
7
7
  AnthropicProvider
8
8
  };
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  loadConfig,
19
19
  parallel,
20
20
  registerProvider
21
- } from "./chunk-6APAA6WD.js";
21
+ } from "./chunk-A7SDO64L.js";
22
22
  export {
23
23
  Agent,
24
24
  AgentConfigSchema,
package/dist/mcp.js CHANGED
@@ -1,4 +1,4 @@
1
- // ../mcp/src/server.ts
1
+ // ../../packages/mcp/dist/server.js
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { z } from "zod";
@@ -19,22 +19,18 @@ function createMcpServer(skills, options) {
19
19
  config: options?.ctx?.config ?? {}
20
20
  };
21
21
  for (const skill of skills) {
22
- server.registerTool(
23
- skill.name,
24
- { description: skill.description, inputSchema: z.record(z.unknown()) },
25
- async (args) => {
26
- try {
27
- const result = await skill.execute(args, ctx);
28
- const text = typeof result === "string" ? result : JSON.stringify(result);
29
- return { content: [{ type: "text", text }] };
30
- } catch (err) {
31
- return {
32
- content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
33
- isError: true
34
- };
35
- }
22
+ server.registerTool(skill.name, { description: skill.description, inputSchema: z.record(z.unknown()) }, async (args) => {
23
+ try {
24
+ const result = await skill.execute(args, ctx);
25
+ const text = typeof result === "string" ? result : JSON.stringify(result);
26
+ return { content: [{ type: "text", text }] };
27
+ } catch (err) {
28
+ return {
29
+ content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
30
+ isError: true
31
+ };
36
32
  }
37
- );
33
+ });
38
34
  }
39
35
  return server;
40
36
  }
@@ -48,7 +44,7 @@ async function serveStdioMcp(skills, options) {
48
44
  return serveMcp(skills, transport, options);
49
45
  }
50
46
 
51
- // ../mcp/src/skill.ts
47
+ // ../../packages/mcp/dist/skill.js
52
48
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
53
49
  var McpSkill = class {
54
50
  name;
@@ -64,7 +60,8 @@ var McpSkill = class {
64
60
  const result = await this.client.callTool({ name: this.name, arguments: args });
65
61
  const content = result.content;
66
62
  const first = content?.[0];
67
- if (first?.type === "text") return first.text;
63
+ if (first?.type === "text")
64
+ return first.text;
68
65
  return JSON.stringify(content);
69
66
  }
70
67
  };
package/dist/memory.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  contentToString
3
- } from "./chunk-6APAA6WD.js";
3
+ } from "./chunk-A7SDO64L.js";
4
4
 
5
- // ../memory/src/utils.ts
5
+ // ../../packages/memory/dist/utils.js
6
6
  function estimateTokens(messages) {
7
7
  return messages.reduce((sum, m) => sum + Math.ceil(contentToString(m.content).length / 4), 0);
8
8
  }
9
9
 
10
- // ../memory/src/compactors/observation-masking.ts
10
+ // ../../packages/memory/dist/compactors/observation-masking.js
11
11
  var TOOL_RESULT_PREFIX = "[Tool ";
12
12
  function isToolResult(msg) {
13
13
  return msg.role === "user" && contentToString(msg.content).startsWith(TOOL_RESULT_PREFIX);
@@ -27,10 +27,12 @@ var ObservationMaskingCompactor = class {
27
27
  return estimateTokens(messages) > maxTokens * this.threshold;
28
28
  }
29
29
  async compact(messages, _provider) {
30
- if (messages.length <= this.lastMessages) return messages;
30
+ if (messages.length <= this.lastMessages)
31
+ return messages;
31
32
  const cutoff = messages.length - this.lastMessages;
32
33
  return messages.map((msg, i) => {
33
- if (i >= cutoff || !isToolResult(msg)) return msg;
34
+ if (i >= cutoff || !isToolResult(msg))
35
+ return msg;
34
36
  const str = contentToString(msg.content);
35
37
  const tokenCount = Math.ceil(str.length / 4);
36
38
  const match = /^\[Tool ([^\]]+) result\]:/.exec(str);
@@ -43,7 +45,7 @@ var ObservationMaskingCompactor = class {
43
45
  }
44
46
  };
45
47
 
46
- // ../memory/src/compactors/summary.ts
48
+ // ../../packages/memory/dist/compactors/summary.js
47
49
  function formatForSummary(messages) {
48
50
  return messages.map((m) => {
49
51
  const label = m.role === "assistant" ? "Assistant" : "User/Tool";
@@ -65,7 +67,8 @@ var SummaryCompactor = class {
65
67
  return estimateTokens(messages) > maxTokens * this.threshold;
66
68
  }
67
69
  async compact(messages, provider) {
68
- if (messages.length <= this.lastMessages) return messages;
70
+ if (messages.length <= this.lastMessages)
71
+ return messages;
69
72
  const cutoff = messages.length - this.lastMessages;
70
73
  const toSummarize = messages.slice(0, cutoff);
71
74
  const toKeep = messages.slice(cutoff);
@@ -96,7 +99,7 @@ ${summaryResponse.content}`
96
99
  }
97
100
  };
98
101
 
99
- // ../memory/src/stores/in-memory.ts
102
+ // ../../packages/memory/dist/stores/in-memory.js
100
103
  function sessionKey(session) {
101
104
  return `${session.resourceId}:${session.threadId}`;
102
105
  }
@@ -125,7 +128,7 @@ var InMemoryStore = class {
125
128
  }
126
129
  };
127
130
 
128
- // ../memory/src/vector.ts
131
+ // ../../packages/memory/dist/vector.js
129
132
  function cosineSimilarity(a, b) {
130
133
  let dot = 0;
131
134
  let normA = 0;
@@ -157,16 +160,14 @@ var VectorIndex = class {
157
160
  }
158
161
  };
159
162
 
160
- // ../memory/src/stores/semantic-memory-store.ts
163
+ // ../../packages/memory/dist/stores/semantic-memory-store.js
161
164
  var SemanticMemoryStore = class {
162
165
  provider;
163
166
  inner;
164
167
  cache = /* @__PURE__ */ new Map();
165
168
  constructor(provider, inner) {
166
169
  if (!provider.embed) {
167
- throw new Error(
168
- `Provider "${provider.name}" does not support embeddings \u2014 use a provider with capabilities.embedding = true`
169
- );
170
+ throw new Error(`Provider "${provider.name}" does not support embeddings \u2014 use a provider with capabilities.embedding = true`);
170
171
  }
171
172
  this.provider = provider;
172
173
  this.inner = inner ?? new InMemoryStore();
@@ -178,7 +179,8 @@ var SemanticMemoryStore = class {
178
179
  for (const m of messages) {
179
180
  try {
180
181
  const resp = await this.provider.embed?.({ input: m.content });
181
- if (resp) cached.push({ content: m.content, vector: resp.embeddings[0] });
182
+ if (resp)
183
+ cached.push({ content: m.content, vector: resp.embeddings[0] });
182
184
  } catch {
183
185
  }
184
186
  }
@@ -192,7 +194,8 @@ var SemanticMemoryStore = class {
192
194
  }
193
195
  try {
194
196
  const resp = await this.provider.embed?.({ input: query });
195
- if (!resp) return this.inner.search?.(session, query, topK) ?? [];
197
+ if (!resp)
198
+ return this.inner.search?.(session, query, topK) ?? [];
196
199
  const queryVector = resp.embeddings[0];
197
200
  return cached.map((e) => ({ content: e.content, score: cosineSimilarity(queryVector, e.vector) })).sort((a, b) => b.score - a.score).slice(0, topK);
198
201
  } catch {
@@ -216,7 +219,7 @@ function sessionKey2(session) {
216
219
  return `${session.resourceId}:${session.threadId}`;
217
220
  }
218
221
 
219
- // ../memory/src/stores/sqlite.ts
222
+ // ../../packages/memory/dist/stores/sqlite.js
220
223
  import Database from "better-sqlite3";
221
224
  var SQLiteMemoryStore = class {
222
225
  db;
@@ -261,10 +264,8 @@ var SQLiteMemoryStore = class {
261
264
  `);
262
265
  }
263
266
  async saveMessages(session, messages) {
264
- const insert = this.db.prepare(
265
- `INSERT INTO messages (resource_id, thread_id, role, content, timestamp)
266
- VALUES (@resourceId, @threadId, @role, @content, @timestamp)`
267
- );
267
+ const insert = this.db.prepare(`INSERT INTO messages (resource_id, thread_id, role, content, timestamp)
268
+ VALUES (@resourceId, @threadId, @role, @content, @timestamp)`);
268
269
  const insertMany = this.db.transaction((entries) => {
269
270
  for (const e of entries) {
270
271
  insert.run({ ...session, role: e.role, content: e.content, timestamp: e.timestamp });
@@ -274,24 +275,20 @@ var SQLiteMemoryStore = class {
274
275
  }
275
276
  async loadMessages(session, limit) {
276
277
  const n = limit ?? this.defaultLimit;
277
- const rows = this.db.prepare(
278
- `SELECT role, content, timestamp FROM (
278
+ const rows = this.db.prepare(`SELECT role, content, timestamp FROM (
279
279
  SELECT role, content, timestamp FROM messages
280
280
  WHERE resource_id = ? AND thread_id = ?
281
281
  ORDER BY id DESC LIMIT ?
282
- ) ORDER BY timestamp ASC`
283
- ).all(session.resourceId, session.threadId, n);
282
+ ) ORDER BY timestamp ASC`).all(session.resourceId, session.threadId, n);
284
283
  return rows;
285
284
  }
286
285
  async search(session, query, topK = 5) {
287
- const rows = this.db.prepare(
288
- `SELECT m.content, rank AS score
286
+ const rows = this.db.prepare(`SELECT m.content, rank AS score
289
287
  FROM messages_fts fts
290
288
  JOIN messages m ON m.id = fts.rowid
291
289
  WHERE fts.content MATCH ?
292
290
  AND m.resource_id = ? AND m.thread_id = ?
293
- ORDER BY rank LIMIT ?`
294
- ).all(query, session.resourceId, session.threadId, topK);
291
+ ORDER BY rank LIMIT ?`).all(query, session.resourceId, session.threadId, topK);
295
292
  return rows.map((r) => ({ content: r.content, score: r.score }));
296
293
  }
297
294
  async getWorkingMemory(session) {
@@ -299,11 +296,9 @@ var SQLiteMemoryStore = class {
299
296
  return row?.content ?? null;
300
297
  }
301
298
  async setWorkingMemory(session, content) {
302
- this.db.prepare(
303
- `INSERT INTO working_memory (resource_id, thread_id, content, updated_at)
299
+ this.db.prepare(`INSERT INTO working_memory (resource_id, thread_id, content, updated_at)
304
300
  VALUES (?, ?, ?, ?)
305
- ON CONFLICT (resource_id, thread_id) DO UPDATE SET content = excluded.content, updated_at = excluded.updated_at`
306
- ).run(session.resourceId, session.threadId, content, Date.now());
301
+ ON CONFLICT (resource_id, thread_id) DO UPDATE SET content = excluded.content, updated_at = excluded.updated_at`).run(session.resourceId, session.threadId, content, Date.now());
307
302
  }
308
303
  async close() {
309
304
  this.db.close();
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  registerProvider
3
- } from "./chunk-6APAA6WD.js";
3
+ } from "./chunk-A7SDO64L.js";
4
4
 
5
- // ../provider-anthropic/src/provider.ts
5
+ // ../../packages/provider-anthropic/dist/provider.js
6
6
  import Anthropic from "@anthropic-ai/sdk";
7
7
 
8
- // ../provider-anthropic/src/mappers.ts
8
+ // ../../packages/provider-anthropic/dist/mappers.js
9
9
  function toAnthropicContentPart(part) {
10
- if (part.type === "text") return { type: "text", text: part.text };
10
+ if (part.type === "text")
11
+ return { type: "text", text: part.text };
11
12
  return {
12
13
  type: "image",
13
14
  source: { type: "base64", media_type: part.mimeType, data: part.data }
@@ -29,7 +30,8 @@ function toAnthropicTools(tools) {
29
30
  function extractSystemPrompt(request) {
30
31
  const systemMsg = request.messages.find((m) => m.role === "system");
31
32
  const raw = request.systemPrompt ?? systemMsg?.content;
32
- if (raw === void 0) return void 0;
33
+ if (raw === void 0)
34
+ return void 0;
33
35
  return typeof raw === "string" ? raw : raw.map((p) => p.type === "text" ? p.text : "").join("");
34
36
  }
35
37
  function fromAnthropicResponse(response, providerName) {
@@ -58,7 +60,7 @@ function fromAnthropicResponse(response, providerName) {
58
60
  };
59
61
  }
60
62
 
61
- // ../provider-anthropic/src/provider.ts
63
+ // ../../packages/provider-anthropic/dist/provider.js
62
64
  var AnthropicProvider = class {
63
65
  name;
64
66
  capabilities = {
@@ -78,9 +80,7 @@ var AnthropicProvider = class {
78
80
  async complete(request) {
79
81
  const model = request.model ?? this.defaultModel;
80
82
  if (request.temperature !== void 0 && request.temperature > 1) {
81
- throw new Error(
82
- `Anthropic models require temperature <= 1.0 (got ${request.temperature}). Update the agent YAML or use an OpenAI provider for higher temperature values.`
83
- );
83
+ throw new Error(`Anthropic models require temperature <= 1.0 (got ${request.temperature}). Update the agent YAML or use an OpenAI provider for higher temperature values.`);
84
84
  }
85
85
  const system = extractSystemPrompt(request);
86
86
  const messages = toAnthropicMessages(request.messages);
@@ -104,7 +104,7 @@ var AnthropicProvider = class {
104
104
  }
105
105
  };
106
106
 
107
- // ../provider-anthropic/src/index.ts
107
+ // ../../packages/provider-anthropic/dist/index.js
108
108
  registerProvider("anthropic", (config) => {
109
109
  if (!config.apiKey) {
110
110
  throw new Error(`Provider "${config.name}" (anthropic) requires ANTHROPIC_API_KEY to be set in the environment.`);
@@ -1,23 +1,26 @@
1
1
  import {
2
2
  registerProvider
3
- } from "./chunk-6APAA6WD.js";
3
+ } from "./chunk-A7SDO64L.js";
4
4
 
5
- // ../provider-google/src/provider.ts
5
+ // ../../packages/provider-google/dist/provider.js
6
6
  import { GoogleGenerativeAI } from "@google/generative-ai";
7
7
 
8
- // ../provider-google/src/mappers.ts
8
+ // ../../packages/provider-google/dist/mappers.js
9
9
  function toGeminiPart(part) {
10
- if (part.type === "text") return { text: part.text };
10
+ if (part.type === "text")
11
+ return { text: part.text };
11
12
  return { inlineData: { mimeType: part.mimeType, data: part.data } };
12
13
  }
13
14
  function contentToParts(content) {
14
- if (typeof content === "string") return [{ text: content }];
15
+ if (typeof content === "string")
16
+ return [{ text: content }];
15
17
  return content.map(toGeminiPart);
16
18
  }
17
19
  function extractSystemInstruction(request) {
18
20
  const systemMsg = request.messages.find((m) => m.role === "system");
19
21
  const raw = request.systemPrompt ?? systemMsg?.content;
20
- if (raw === void 0) return void 0;
22
+ if (raw === void 0)
23
+ return void 0;
21
24
  return typeof raw === "string" ? raw : raw.map((p) => p.type === "text" ? p.text : "").join("");
22
25
  }
23
26
  function toGeminiContents(messages) {
@@ -63,7 +66,7 @@ function fromGeminiResponse(response, modelName, providerName) {
63
66
  };
64
67
  }
65
68
 
66
- // ../provider-google/src/provider.ts
69
+ // ../../packages/provider-google/dist/provider.js
67
70
  var GoogleProvider = class {
68
71
  name;
69
72
  capabilities = {
@@ -115,17 +118,15 @@ var GoogleProvider = class {
115
118
  const modelName = "text-embedding-004";
116
119
  const model = this.client.getGenerativeModel({ model: modelName });
117
120
  const inputs = Array.isArray(request.input) ? request.input : [request.input];
118
- const embeddings = await Promise.all(
119
- inputs.map(async (text) => {
120
- const result = await model.embedContent(text);
121
- return result.embedding.values;
122
- })
123
- );
121
+ const embeddings = await Promise.all(inputs.map(async (text) => {
122
+ const result = await model.embedContent(text);
123
+ return result.embedding.values;
124
+ }));
124
125
  return { embeddings, model: modelName, provider: this.name };
125
126
  }
126
127
  };
127
128
 
128
- // ../provider-google/src/index.ts
129
+ // ../../packages/provider-google/dist/index.js
129
130
  registerProvider("google", (config) => {
130
131
  if (!config.apiKey) {
131
132
  throw new Error(`Provider "${config.name}" (google) requires GOOGLE_API_KEY to be set in the environment.`);
@@ -1,20 +1,22 @@
1
1
  import {
2
2
  registerProvider
3
- } from "./chunk-6APAA6WD.js";
3
+ } from "./chunk-A7SDO64L.js";
4
4
 
5
- // ../provider-openai/src/provider.ts
5
+ // ../../packages/provider-openai/dist/provider.js
6
6
  import OpenAI from "openai";
7
7
 
8
- // ../provider-openai/src/mappers.ts
8
+ // ../../packages/provider-openai/dist/mappers.js
9
9
  function toOpenAIUserContentPart(part) {
10
- if (part.type === "text") return { type: "text", text: part.text };
10
+ if (part.type === "text")
11
+ return { type: "text", text: part.text };
11
12
  return {
12
13
  type: "image_url",
13
14
  image_url: { url: `data:${part.mimeType};base64,${part.data}` }
14
15
  };
15
16
  }
16
17
  function contentAsString(content) {
17
- if (typeof content === "string") return content;
18
+ if (typeof content === "string")
19
+ return content;
18
20
  return content.map((p) => p.type === "text" ? p.text : "").join("");
19
21
  }
20
22
  function toOpenAIMessages(messages) {
@@ -64,7 +66,7 @@ function fromOpenAIResponse(response, providerName) {
64
66
  };
65
67
  }
66
68
 
67
- // ../provider-openai/src/provider.ts
69
+ // ../../packages/provider-openai/dist/provider.js
68
70
  var OpenAIProvider = class {
69
71
  name;
70
72
  capabilities = {
@@ -115,9 +117,12 @@ var OpenAIProvider = class {
115
117
  if (!toolCallAccum[idx]) {
116
118
  toolCallAccum[idx] = { id: "", name: "", args: "" };
117
119
  }
118
- if (tc.id) toolCallAccum[idx].id = tc.id;
119
- if (tc.function?.name) toolCallAccum[idx].name = tc.function.name;
120
- if (tc.function?.arguments) toolCallAccum[idx].args += tc.function.arguments;
120
+ if (tc.id)
121
+ toolCallAccum[idx].id = tc.id;
122
+ if (tc.function?.name)
123
+ toolCallAccum[idx].name = tc.function.name;
124
+ if (tc.function?.arguments)
125
+ toolCallAccum[idx].args += tc.function.arguments;
121
126
  }
122
127
  }
123
128
  if (chunk.usage) {
@@ -166,7 +171,7 @@ var OpenAIProvider = class {
166
171
  }
167
172
  };
168
173
 
169
- // ../provider-openai/src/index.ts
174
+ // ../../packages/provider-openai/dist/index.js
170
175
  registerProvider("openai", (config) => {
171
176
  if (!config.apiKey) {
172
177
  throw new Error(`Provider "${config.name}" (openai) requires OPENAI_API_KEY to be set in the environment.`);
@@ -3,7 +3,7 @@ import {
3
3
  analyzeGraphqlSchemaSkill,
4
4
  analyzeNestjsModuleSkill,
5
5
  findCodePatternSkill
6
- } from "../chunk-3RZELMF2.js";
6
+ } from "../chunk-LEW34E32.js";
7
7
  export {
8
8
  analyzeDynamoSchemaSkill,
9
9
  analyzeGraphqlSchemaSkill,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  searchCodeSkill
3
- } from "../chunk-M4QJF7CV.js";
3
+ } from "../chunk-JQRNMPWC.js";
4
4
  export {
5
5
  searchCodeSkill
6
6
  };
@@ -2,7 +2,7 @@ import {
2
2
  analyzeComponentSkill,
3
3
  analyzeModuleStructureSkill,
4
4
  findComponentPatternSkill
5
- } from "../chunk-S5MK6LBH.js";
5
+ } from "../chunk-BU7KK25R.js";
6
6
  export {
7
7
  analyzeComponentSkill,
8
8
  analyzeModuleStructureSkill,
package/dist/skills/fs.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  listDirectorySkill,
3
3
  readFileSkill,
4
4
  writeFileSkill
5
- } from "../chunk-TFU437SW.js";
5
+ } from "../chunk-IVDHCLGS.js";
6
6
  export {
7
7
  listDirectorySkill,
8
8
  readFileSkill,
@@ -3,7 +3,7 @@ import {
3
3
  gitDiffSkill,
4
4
  gitLogSkill,
5
5
  gitStatusSkill
6
- } from "../chunk-6OPRALDC.js";
6
+ } from "../chunk-E2JJOPZB.js";
7
7
  export {
8
8
  gitCommitMessageSkill,
9
9
  gitDiffSkill,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  httpRequestSkill
3
- } from "../chunk-6YFFZMXY.js";
3
+ } from "../chunk-GQL6DDF4.js";
4
4
  export {
5
5
  httpRequestSkill
6
6
  };
@@ -3,39 +3,39 @@ import {
3
3
  analyzeGraphqlSchemaSkill,
4
4
  analyzeNestjsModuleSkill,
5
5
  findCodePatternSkill
6
- } from "../chunk-3RZELMF2.js";
6
+ } from "../chunk-LEW34E32.js";
7
7
  import {
8
8
  analyzeComponentSkill,
9
9
  analyzeModuleStructureSkill,
10
10
  findComponentPatternSkill
11
- } from "../chunk-S5MK6LBH.js";
11
+ } from "../chunk-BU7KK25R.js";
12
12
  import {
13
13
  analyzeTestCoverageSkill,
14
14
  findTestPatternSkill
15
- } from "../chunk-PPTEJ2FH.js";
15
+ } from "../chunk-6KQE3NUV.js";
16
16
  import {
17
17
  listDirectorySkill,
18
18
  readFileSkill,
19
19
  writeFileSkill
20
- } from "../chunk-TFU437SW.js";
20
+ } from "../chunk-IVDHCLGS.js";
21
21
  import {
22
22
  searchCodeSkill
23
- } from "../chunk-M4QJF7CV.js";
23
+ } from "../chunk-JQRNMPWC.js";
24
24
  import {
25
25
  auditAccessibilitySkill
26
- } from "../chunk-JTXDF5KG.js";
26
+ } from "../chunk-MQWOX2ZJ.js";
27
27
  import {
28
28
  gitCommitMessageSkill,
29
29
  gitDiffSkill,
30
30
  gitLogSkill,
31
31
  gitStatusSkill
32
- } from "../chunk-6OPRALDC.js";
32
+ } from "../chunk-E2JJOPZB.js";
33
33
  import {
34
34
  httpRequestSkill
35
- } from "../chunk-6YFFZMXY.js";
35
+ } from "../chunk-GQL6DDF4.js";
36
36
  import {
37
37
  analyzeImageSkill
38
- } from "../chunk-5WELBZWN.js";
38
+ } from "../chunk-WRBBQFKB.js";
39
39
  export {
40
40
  analyzeComponentSkill,
41
41
  analyzeDynamoSchemaSkill,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  analyzeImageSkill
3
- } from "../chunk-5WELBZWN.js";
3
+ } from "../chunk-WRBBQFKB.js";
4
4
  export {
5
5
  analyzeImageSkill
6
6
  };
package/dist/skills/qa.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  analyzeTestCoverageSkill,
3
3
  findTestPatternSkill
4
- } from "../chunk-PPTEJ2FH.js";
4
+ } from "../chunk-6KQE3NUV.js";
5
5
  export {
6
6
  analyzeTestCoverageSkill,
7
7
  findTestPatternSkill
package/dist/skills/ux.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  auditAccessibilitySkill
3
- } from "../chunk-JTXDF5KG.js";
3
+ } from "../chunk-MQWOX2ZJ.js";
4
4
  export {
5
5
  auditAccessibilitySkill
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ftarganski/omni-ai",
3
- "version": "0.1.1",
3
+ "version": "1.1.6",
4
4
  "description": "Provider-agnostic AI agents and skills framework",
5
5
  "type": "module",
6
6
  "exports": {
@@ -73,12 +73,28 @@
73
73
  "omni": "./dist/cli/bin.js"
74
74
  },
75
75
  "files": [
76
- "dist"
76
+ "dist",
77
+ "README.md"
77
78
  ],
78
79
  "publishConfig": {
79
80
  "access": "public"
80
81
  },
82
+ "scripts": {
83
+ "build": "tsup",
84
+ "dev": "tsup --watch",
85
+ "lint": "biome check src/",
86
+ "prepack": "node -e \"require('fs').copyFileSync('../../README.md', './README.md')\"",
87
+ "postpack": "node -e \"try{require('fs').unlinkSync('./README.md')}catch(e){}\""
88
+ },
81
89
  "dependencies": {
90
+ "@omni-ai/cli": "workspace:*",
91
+ "@omni-ai/core": "workspace:*",
92
+ "@omni-ai/memory": "workspace:*",
93
+ "@omni-ai/mcp": "workspace:*",
94
+ "@omni-ai/provider-anthropic": "workspace:*",
95
+ "@omni-ai/provider-google": "workspace:*",
96
+ "@omni-ai/provider-openai": "workspace:*",
97
+ "@omni-ai/skills": "workspace:*",
82
98
  "@inquirer/prompts": "^7.0.0",
83
99
  "chalk": "^5.3.0",
84
100
  "chokidar": "^4.0.0",
@@ -87,15 +103,7 @@
87
103
  "express": "^4.21.0",
88
104
  "glob": "^11.0.0",
89
105
  "yaml": "^2.7.0",
90
- "zod": "^3.24.0",
91
- "@omni-ai/cli": "0.1.0",
92
- "@omni-ai/core": "0.1.0",
93
- "@omni-ai/memory": "0.1.0",
94
- "@omni-ai/mcp": "0.1.0",
95
- "@omni-ai/provider-anthropic": "0.1.0",
96
- "@omni-ai/provider-google": "0.1.0",
97
- "@omni-ai/provider-openai": "0.1.0",
98
- "@omni-ai/skills": "0.1.0"
106
+ "zod": "^3.24.0"
99
107
  },
100
108
  "peerDependencies": {
101
109
  "@anthropic-ai/sdk": "^0.39.0",
@@ -127,10 +135,5 @@
127
135
  "@types/node": "^22.0.0",
128
136
  "tsup": "^8.0.0",
129
137
  "typescript": "^5.7.0"
130
- },
131
- "scripts": {
132
- "build": "tsup",
133
- "dev": "tsup --watch",
134
- "lint": "biome check src/"
135
138
  }
136
- }
139
+ }