ecomcoder-cli 1.2.4 → 1.2.7

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Docs Search Command
3
- * Search Shopify theme documentation using Gemini File Search
3
+ * Search Shopify theme documentation using Pinecone Assistant
4
4
  */
5
5
  export declare function run(argv?: string[]): Promise<void>;
6
6
  //# sourceMappingURL=docs-search.d.ts.map
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Docs Search Command
3
- * Search Shopify theme documentation using Gemini File Search
3
+ * Search Shopify theme documentation using Pinecone Assistant
4
4
  */
5
5
  import { parseArgs, hasHelpFlag } from '../lib/args-parser.js';
6
- import { getGeminiCredentials } from '../lib/api-client.js';
7
- import { searchDocs } from '../lib/gemini-client.js';
6
+ import { getPineconeCredentials } from '../lib/api-client.js';
7
+ import { searchDocsPinecone } from '../lib/pinecone-client.js';
8
8
  function showHelp() {
9
9
  console.log(`
10
10
  Search Shopify Theme Documentation
@@ -34,8 +34,8 @@ export async function run(argv = process.argv.slice(2)) {
34
34
  process.exit(1);
35
35
  }
36
36
  try {
37
- const { apiKey } = await getGeminiCredentials();
38
- const answer = await searchDocs(apiKey, query);
37
+ const { apiKey } = await getPineconeCredentials();
38
+ const answer = await searchDocsPinecone(apiKey, query);
39
39
  console.log(JSON.stringify({ success: true, answer }));
40
40
  }
41
41
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"docs-search.js","sourceRoot":"","sources":["../../src/commands/docs-search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"docs-search.js","sourceRoot":"","sources":["../../src/commands/docs-search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -18,10 +18,18 @@ export declare function getCredentials(sessionId: string, backendUrlOverride?: s
18
18
  */
19
19
  export declare function getSessionId(explicitSessionId?: string): string;
20
20
  /**
21
- * Fetch Gemini credentials from the backend
21
+ * Fetch Pinecone credentials from the backend
22
22
  * Used for docs search functionality
23
23
  */
24
- export declare function getGeminiCredentials(backendUrlOverride?: string): Promise<{
24
+ export declare function getPineconeCredentials(backendUrlOverride?: string): Promise<{
25
25
  apiKey: string;
26
26
  }>;
27
+ /**
28
+ * Fetch Supabase credentials from the backend
29
+ * Used for logging assistant queries
30
+ */
31
+ export declare function getSupabaseCredentials(backendUrlOverride?: string): Promise<{
32
+ url: string;
33
+ anonKey: string;
34
+ }>;
27
35
  //# sourceMappingURL=api-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAyC7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBnG"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAyC7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBrG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBnH"}
@@ -57,27 +57,51 @@ export function getSessionId(explicitSessionId) {
57
57
  return sessionId;
58
58
  }
59
59
  /**
60
- * Fetch Gemini credentials from the backend
60
+ * Fetch Pinecone credentials from the backend
61
61
  * Used for docs search functionality
62
62
  */
63
- export async function getGeminiCredentials(backendUrlOverride) {
63
+ export async function getPineconeCredentials(backendUrlOverride) {
64
64
  const backendURL = backendUrlOverride || process.env.BACKEND_URL;
65
65
  if (!backendURL) {
66
66
  throw new Error('BACKEND_URL not set');
67
67
  }
68
68
  try {
69
- const response = await fetch(`${backendURL}/api/internal/gemini-credentials`);
69
+ const response = await fetch(`${backendURL}/api/internal/pinecone-credentials`);
70
70
  if (!response.ok) {
71
- throw new Error(`Failed to get Gemini credentials: ${response.status}`);
71
+ throw new Error(`Failed to get Pinecone credentials: ${response.status}`);
72
72
  }
73
73
  const data = await response.json();
74
74
  if (!data.apiKey) {
75
- throw new Error('Invalid Gemini credentials returned');
75
+ throw new Error('Invalid Pinecone credentials returned');
76
76
  }
77
77
  return { apiKey: data.apiKey };
78
78
  }
79
79
  catch (error) {
80
- throw new Error(`Failed to fetch Gemini credentials: ${error instanceof Error ? error.message : 'Unknown error'}`);
80
+ throw new Error(`Failed to fetch Pinecone credentials: ${error instanceof Error ? error.message : 'Unknown error'}`);
81
+ }
82
+ }
83
+ /**
84
+ * Fetch Supabase credentials from the backend
85
+ * Used for logging assistant queries
86
+ */
87
+ export async function getSupabaseCredentials(backendUrlOverride) {
88
+ const backendURL = backendUrlOverride || process.env.BACKEND_URL;
89
+ if (!backendURL) {
90
+ throw new Error('BACKEND_URL not set');
91
+ }
92
+ try {
93
+ const response = await fetch(`${backendURL}/api/internal/supabase-credentials`);
94
+ if (!response.ok) {
95
+ throw new Error(`Failed to get Supabase credentials: ${response.status}`);
96
+ }
97
+ const data = await response.json();
98
+ if (!data.url || !data.anonKey) {
99
+ throw new Error('Invalid Supabase credentials returned');
100
+ }
101
+ return { url: data.url, anonKey: data.anonKey };
102
+ }
103
+ catch (error) {
104
+ throw new Error(`Failed to fetch Supabase credentials: ${error instanceof Error ? error.message : 'Unknown error'}`);
81
105
  }
82
106
  }
83
107
  //# sourceMappingURL=api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function searchDocsPinecone(apiKey: string, query: string): Promise<string>;
2
+ //# sourceMappingURL=pinecone-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinecone-client.d.ts","sourceRoot":"","sources":["../../src/lib/pinecone-client.ts"],"names":[],"mappings":"AAqEA,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CvF"}
@@ -0,0 +1,97 @@
1
+ import { Pinecone } from '@pinecone-database/pinecone';
2
+ import { createClient } from '@supabase/supabase-js';
3
+ import { getSupabaseCredentials } from './api-client.js';
4
+ // Cached Supabase client for logging (fetched once, reused)
5
+ let loggingClient = null;
6
+ let credentialsFetched = false;
7
+ let credentialsFetchPromise = null;
8
+ // Initialize Supabase client (lazy, fetches from backend once)
9
+ async function initLoggingClient() {
10
+ if (credentialsFetched)
11
+ return;
12
+ // If already fetching, wait for that fetch
13
+ if (credentialsFetchPromise) {
14
+ await credentialsFetchPromise;
15
+ return;
16
+ }
17
+ credentialsFetchPromise = (async () => {
18
+ try {
19
+ const { url, anonKey } = await getSupabaseCredentials();
20
+ loggingClient = createClient(url, anonKey);
21
+ }
22
+ catch {
23
+ // Silent fail - logging is optional
24
+ loggingClient = null;
25
+ }
26
+ credentialsFetched = true;
27
+ })();
28
+ await credentialsFetchPromise;
29
+ }
30
+ // Fire-and-forget logging - does NOT block the main response
31
+ function logToSupabase(data) {
32
+ // Non-blocking: wrap in async IIFE, fire and forget
33
+ (async () => {
34
+ try {
35
+ await initLoggingClient();
36
+ if (!loggingClient)
37
+ return;
38
+ await loggingClient.from('assistant_logs').insert({
39
+ session_id: process.env.SESSION_ID || 'unknown',
40
+ query: data.query,
41
+ response: data.response,
42
+ citations: data.citations,
43
+ prompt_tokens: data.prompt_tokens,
44
+ completion_tokens: data.completion_tokens,
45
+ total_tokens: data.total_tokens,
46
+ latency_ms: data.latency_ms,
47
+ success: data.success,
48
+ error_message: data.error_message || null,
49
+ });
50
+ }
51
+ catch {
52
+ // Silent fail - never blocks or throws
53
+ }
54
+ })();
55
+ }
56
+ export async function searchDocsPinecone(apiKey, query) {
57
+ const start = Date.now();
58
+ try {
59
+ const pc = new Pinecone({ apiKey });
60
+ const assistant = pc.Assistant('shopify-docs-assistant');
61
+ const chatResp = await assistant.chat({
62
+ messages: [{ role: 'user', content: query }],
63
+ });
64
+ const latencyMs = Date.now() - start;
65
+ const content = chatResp?.message?.content ?? 'ERROR: No response from Pinecone Assistant';
66
+ // Log async (non-blocking - response returns immediately)
67
+ logToSupabase({
68
+ query,
69
+ response: content,
70
+ citations: chatResp?.citations ?? null,
71
+ prompt_tokens: chatResp?.usage?.promptTokens ?? null,
72
+ completion_tokens: chatResp?.usage?.completionTokens ?? null,
73
+ total_tokens: chatResp?.usage?.totalTokens ?? null,
74
+ latency_ms: latencyMs,
75
+ success: true,
76
+ });
77
+ return content;
78
+ }
79
+ catch (error) {
80
+ const latencyMs = Date.now() - start;
81
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error';
82
+ // Log failed query (non-blocking)
83
+ logToSupabase({
84
+ query,
85
+ response: null,
86
+ citations: null,
87
+ prompt_tokens: null,
88
+ completion_tokens: null,
89
+ total_tokens: null,
90
+ latency_ms: latencyMs,
91
+ success: false,
92
+ error_message: errorMsg,
93
+ });
94
+ return `ERROR: ${errorMsg}`;
95
+ }
96
+ }
97
+ //# sourceMappingURL=pinecone-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinecone-client.js","sourceRoot":"","sources":["../../src/lib/pinecone-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "ecomcoder-cli",
3
- "version": "1.2.4",
3
+ "version": "1.2.7",
4
4
  "type": "module",
5
5
  "description": "CLI tools for EcomCoder - Shopify development utilities",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "bin": {
9
- "ecomcoder": "bin/ecomcoder"
9
+ "ecomcoder": "bin/ecomcoder.js"
10
10
  },
11
11
  "scripts": {
12
12
  "build": "tsc",
@@ -42,7 +42,7 @@
42
42
  "access": "public"
43
43
  },
44
44
  "dependencies": {
45
- "@google/genai": "^1.33.0",
45
+ "@pinecone-database/pinecone": "^6.1.3",
46
46
  "@supabase/supabase-js": "^2.87.0"
47
47
  },
48
48
  "devDependencies": {
File without changes