@tarquinen/opencode-dcp 0.3.16 → 0.3.17

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,9 +1,3 @@
1
- /**
2
- * Minimize message structure for AI analysis - keep only what's needed
3
- * to determine if tool calls are obsolete
4
- * Also replaces callIDs of already-pruned tools with "<already-pruned>"
5
- * and protected tools with "<protected>"
6
- */
7
1
  function minimizeMessages(messages, alreadyPrunedIds, protectedToolCallIds) {
8
2
  const prunedIdsSet = alreadyPrunedIds ? new Set(alreadyPrunedIds.map(id => id.toLowerCase())) : new Set();
9
3
  const protectedIdsSet = protectedToolCallIds ? new Set(protectedToolCallIds.map(id => id.toLowerCase())) : new Set();
@@ -11,20 +5,16 @@ function minimizeMessages(messages, alreadyPrunedIds, protectedToolCallIds) {
11
5
  const minimized = {
12
6
  role: msg.info?.role
13
7
  };
14
- // Keep essential parts only
15
8
  if (msg.parts) {
16
9
  minimized.parts = msg.parts
17
10
  .filter((part) => {
18
- // Completely remove step markers - they add no value for janitor
19
11
  if (part.type === 'step-start' || part.type === 'step-finish') {
20
12
  return false;
21
13
  }
22
14
  return true;
23
15
  })
24
16
  .map((part) => {
25
- // For text parts, keep the text content (needed for user intent & retention requests)
26
17
  if (part.type === 'text') {
27
- // Filter out ignored messages (e.g., DCP summary UI messages)
28
18
  if (part.ignored) {
29
19
  return null;
30
20
  }
@@ -33,7 +23,6 @@ function minimizeMessages(messages, alreadyPrunedIds, protectedToolCallIds) {
33
23
  text: part.text
34
24
  };
35
25
  }
36
- // For tool parts, keep what's needed for pruning decisions
37
26
  if (part.type === 'tool') {
38
27
  const callIDLower = part.callID?.toLowerCase();
39
28
  const isAlreadyPruned = prunedIdsSet.has(callIDLower);
@@ -50,56 +39,41 @@ function minimizeMessages(messages, alreadyPrunedIds, protectedToolCallIds) {
50
39
  toolCallID: displayCallID,
51
40
  tool: part.tool
52
41
  };
53
- // Keep the actual output - janitor needs to see what was returned
54
42
  if (part.state?.output) {
55
43
  toolPart.output = part.state.output;
56
44
  }
57
- // Include minimal input for deduplication context
58
- // Only keep resource identifiers, not full nested structures
59
45
  if (part.state?.input) {
60
46
  const input = part.state.input;
61
- // For write/edit tools, keep file path AND content (what was changed matters)
62
- // These tools: write, edit, multiedit, patch
63
47
  if (input.filePath && (part.tool === 'write' || part.tool === 'edit' || part.tool === 'multiedit' || part.tool === 'patch')) {
64
- toolPart.input = input; // Keep full input (content, oldString, newString, etc.)
48
+ toolPart.input = input;
65
49
  }
66
- // For read-only file operations, just keep the file path
67
50
  else if (input.filePath) {
68
51
  toolPart.input = { filePath: input.filePath };
69
52
  }
70
- // For batch operations, summarize instead of full array
71
53
  else if (input.tool_calls && Array.isArray(input.tool_calls)) {
72
54
  toolPart.input = {
73
55
  batch_summary: `${input.tool_calls.length} tool calls`,
74
56
  tools: input.tool_calls.map((tc) => tc.tool)
75
57
  };
76
58
  }
77
- // For other operations, keep minimal input
78
59
  else {
79
60
  toolPart.input = input;
80
61
  }
81
62
  }
82
63
  return toolPart;
83
64
  }
84
- // Skip all other part types (they're not relevant to pruning)
85
65
  return null;
86
66
  })
87
- .filter(Boolean); // Remove nulls
67
+ .filter(Boolean);
88
68
  }
89
69
  return minimized;
90
70
  }).filter(msg => {
91
- // Filter out messages that have no parts (e.g., only contained ignored messages)
92
71
  return msg.parts && msg.parts.length > 0;
93
72
  });
94
73
  }
95
- export function buildAnalysisPrompt(unprunedToolCallIds, messages, alreadyPrunedIds, protectedToolCallIds, reason // Optional reason from tool call
96
- ) {
97
- // Minimize messages to reduce token usage, passing already-pruned and protected IDs for replacement
74
+ export function buildAnalysisPrompt(unprunedToolCallIds, messages, alreadyPrunedIds, protectedToolCallIds, reason) {
98
75
  const minimizedMessages = minimizeMessages(messages, alreadyPrunedIds, protectedToolCallIds);
99
- // Stringify with pretty-printing, then replace escaped newlines with actual newlines
100
- // This makes the logged prompts much more readable
101
76
  const messagesJson = JSON.stringify(minimizedMessages, null, 2).replace(/\\n/g, '\n');
102
- // Build optional context section if reason provided
103
77
  const reasonContext = reason
104
78
  ? `\nContext: The AI has requested pruning with the following reason: "${reason}"\nUse this context to inform your decisions about what is most relevant to keep.`
105
79
  : '';
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../lib/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../lib/prompt.ts"],"names":[],"mappings":"AAAA,SAAS,gBAAgB,CAAC,QAAe,EAAE,gBAA2B,EAAE,oBAA+B;IACnG,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IACzG,MAAM,eAAe,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IAEpH,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,SAAS,GAAQ;YACnB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI;SACvB,CAAA;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;iBACtB,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;gBAClB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC5D,OAAO,KAAK,CAAA;gBAChB,CAAC;gBACD,OAAO,IAAI,CAAA;YACf,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACf,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACf,OAAO,IAAI,CAAA;oBACf,CAAC;oBACD,OAAO;wBACH,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;qBAClB,CAAA;gBACL,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;oBAC9C,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;oBACrD,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;oBAEpD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;oBAC/B,IAAI,eAAe,EAAE,CAAC;wBAClB,aAAa,GAAG,kBAAkB,CAAA;oBACtC,CAAC;yBAAM,IAAI,WAAW,EAAE,CAAC;wBACrB,aAAa,GAAG,aAAa,CAAA;oBACjC,CAAC;oBAED,MAAM,QAAQ,GAAQ;wBAClB,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,aAAa;wBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;qBAClB,CAAA;oBAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;wBACrB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;oBACvC,CAAC;oBAED,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;wBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;wBAE9B,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;4BAC1H,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;wBAC1B,CAAC;6BACI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACtB,QAAQ,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAA;wBACjD,CAAC;6BACI,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC3D,QAAQ,CAAC,KAAK,GAAG;gCACb,aAAa,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,aAAa;gCACtD,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;6BACpD,CAAA;wBACL,CAAC;6BACI,CAAC;4BACF,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;wBAC1B,CAAC;oBACL,CAAC;oBAED,OAAO,QAAQ,CAAA;gBACnB,CAAC;gBAED,OAAO,IAAI,CAAA;YACf,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,SAAS,CAAA;IACpB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACZ,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,mBAA6B,EAC7B,QAAe,EACf,gBAA2B,EAC3B,oBAA+B,EAC/B,MAAe;IAEf,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;IAE5F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAErF,MAAM,aAAa,GAAG,MAAM;QACxB,CAAC,CAAC,uEAAuE,MAAM,mFAAmF;QAClK,CAAC,CAAC,EAAE,CAAA;IAER,OAAO;EACT,aAAa;;;;;;;;;;;;;mDAaoC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;EAS/E,YAAY;;;;;;EAMZ,CAAA;AACF,CAAC"}
@@ -1,26 +1,3 @@
1
- /**
2
- * Token counting utilities using gpt-tokenizer
3
- *
4
- * Uses gpt-tokenizer to provide token counts for text content.
5
- * Works with any LLM provider - provides accurate counts for OpenAI models
6
- * and reasonable approximations for other providers.
7
- *
8
- * NOTE: gpt-tokenizer is lazily imported to avoid loading the 53MB package
9
- * during plugin initialization. The package is only loaded when tokenization
10
- * is actually needed.
11
- */
12
- /**
13
- * Batch estimates tokens for multiple text samples
14
- *
15
- * @param texts - Array of text strings to tokenize
16
- * @returns Array of token counts
17
- */
18
1
  export declare function estimateTokensBatch(texts: string[]): Promise<number[]>;
19
- /**
20
- * Formats token count for display (e.g., 1500 -> "1.5K", 50 -> "50")
21
- *
22
- * @param tokens - Number of tokens
23
- * @returns Formatted string
24
- */
25
2
  export declare function formatTokenCount(tokens: number): string;
26
3
  //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../lib/tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAS5E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD"}
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../lib/tokenizer.ts"],"names":[],"mappings":"AAAA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO5E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD"}
@@ -1,37 +1,12 @@
1
- /**
2
- * Token counting utilities using gpt-tokenizer
3
- *
4
- * Uses gpt-tokenizer to provide token counts for text content.
5
- * Works with any LLM provider - provides accurate counts for OpenAI models
6
- * and reasonable approximations for other providers.
7
- *
8
- * NOTE: gpt-tokenizer is lazily imported to avoid loading the 53MB package
9
- * during plugin initialization. The package is only loaded when tokenization
10
- * is actually needed.
11
- */
12
- /**
13
- * Batch estimates tokens for multiple text samples
14
- *
15
- * @param texts - Array of text strings to tokenize
16
- * @returns Array of token counts
17
- */
18
1
  export async function estimateTokensBatch(texts) {
19
2
  try {
20
- // Lazy import - only load the 53MB gpt-tokenizer package when actually needed
21
3
  const { encode } = await import('gpt-tokenizer');
22
4
  return texts.map(text => encode(text).length);
23
5
  }
24
6
  catch {
25
- // Fallback to character-based estimation if tokenizer fails
26
7
  return texts.map(text => Math.round(text.length / 4));
27
8
  }
28
9
  }
29
- /**
30
- * Formats token count for display (e.g., 1500 -> "1.5K", 50 -> "50")
31
- *
32
- * @param tokens - Number of tokens
33
- * @returns Formatted string
34
- */
35
10
  export function formatTokenCount(tokens) {
36
11
  if (tokens >= 1000) {
37
12
  return `${(tokens / 1000).toFixed(1)}K`.replace('.0K', 'K');
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../lib/tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAe;IACrD,IAAI,CAAC;QACD,8EAA8E;QAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;QAChD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,4DAA4D;QAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../lib/tokenizer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAe;IACrD,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;QAChD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;AAC5B,CAAC"}
@@ -1,23 +1,8 @@
1
1
  export declare const PACKAGE_NAME = "@tarquinen/opencode-dcp";
2
2
  export declare const NPM_REGISTRY_URL = "https://registry.npmjs.org/@tarquinen/opencode-dcp/latest";
3
- /**
4
- * Gets the local package version from package.json
5
- * Note: In compiled output, this file is at dist/lib/version-checker.js
6
- * so we need to go up two levels to reach package.json
7
- */
8
3
  export declare function getLocalVersion(): string;
9
- /**
10
- * Fetches the latest version from npm registry
11
- */
12
4
  export declare function getNpmVersion(): Promise<string | null>;
13
- /**
14
- * Compares semver versions. Returns true if remote > local
15
- */
16
5
  export declare function isOutdated(local: string, remote: string): boolean;
17
- /**
18
- * Checks for updates and shows a toast if outdated.
19
- * Fire-and-forget: does not throw, logs errors silently.
20
- */
21
6
  export declare function checkForUpdates(client: any, logger?: {
22
7
  info: (component: string, message: string, data?: any) => void;
23
8
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../lib/version-checker.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,4BAA4B,CAAA;AACrD,eAAO,MAAM,gBAAgB,8DAAsD,CAAA;AAMnF;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWjE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7I"}
1
+ {"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../lib/version-checker.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,4BAA4B,CAAA;AACrD,eAAO,MAAM,gBAAgB,8DAAsD,CAAA;AAKnF,wBAAgB,eAAe,IAAI,MAAM,CAQxC;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWjE;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7I"}
@@ -1,17 +1,10 @@
1
- // version-checker.ts - Checks for DCP updates on npm and shows toast notification
2
1
  import { readFileSync } from 'fs';
3
2
  import { join, dirname } from 'path';
4
3
  import { fileURLToPath } from 'url';
5
4
  export const PACKAGE_NAME = '@tarquinen/opencode-dcp';
6
5
  export const NPM_REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
7
- // ESM-compatible __dirname
8
6
  const __filename = fileURLToPath(import.meta.url);
9
7
  const __dirname = dirname(__filename);
10
- /**
11
- * Gets the local package version from package.json
12
- * Note: In compiled output, this file is at dist/lib/version-checker.js
13
- * so we need to go up two levels to reach package.json
14
- */
15
8
  export function getLocalVersion() {
16
9
  try {
17
10
  const pkgPath = join(__dirname, '../../package.json');
@@ -22,13 +15,10 @@ export function getLocalVersion() {
22
15
  return '0.0.0';
23
16
  }
24
17
  }
25
- /**
26
- * Fetches the latest version from npm registry
27
- */
28
18
  export async function getNpmVersion() {
29
19
  try {
30
20
  const controller = new AbortController();
31
- const timeout = setTimeout(() => controller.abort(), 5000); // 5s timeout
21
+ const timeout = setTimeout(() => controller.abort(), 5000);
32
22
  const res = await fetch(NPM_REGISTRY_URL, {
33
23
  signal: controller.signal,
34
24
  headers: { 'Accept': 'application/json' }
@@ -43,9 +33,6 @@ export async function getNpmVersion() {
43
33
  return null;
44
34
  }
45
35
  }
46
- /**
47
- * Compares semver versions. Returns true if remote > local
48
- */
49
36
  export function isOutdated(local, remote) {
50
37
  const parseVersion = (v) => v.split('.').map(n => parseInt(n, 10) || 0);
51
38
  const [localParts, remoteParts] = [parseVersion(local), parseVersion(remote)];
@@ -59,10 +46,6 @@ export function isOutdated(local, remote) {
59
46
  }
60
47
  return false;
61
48
  }
62
- /**
63
- * Checks for updates and shows a toast if outdated.
64
- * Fire-and-forget: does not throw, logs errors silently.
65
- */
66
49
  export async function checkForUpdates(client, logger) {
67
50
  try {
68
51
  const local = getLocalVersion();
@@ -86,7 +69,6 @@ export async function checkForUpdates(client, logger) {
86
69
  });
87
70
  }
88
71
  catch {
89
- // Silently fail - version check is non-critical
90
72
  }
91
73
  }
92
74
  //# sourceMappingURL=version-checker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../lib/version-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../lib/version-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAA;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,YAAY,SAAS,CAAA;AAEnF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,UAAU,eAAe;IAC3B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACtD,OAAO,GAAG,CAAC,OAAO,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAA;IAClB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;QAE1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YACtC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC5C,CAAC,CAAA;QACF,YAAY,CAAC,OAAO,CAAC,CAAA;QAErB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA0B,CAAA;QACrD,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAc;IACpD,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/E,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IAE7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAW,EAAE,MAA2E;IAC1H,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAA;QAEjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;YAChF,OAAM;QACV,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACrD,OAAM;QACV,CAAC;QAED,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAE3D,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE;gBACF,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,IAAI,KAAK,OAAO,GAAG,4BAA4B,YAAY,IAAI,GAAG,EAAE;gBAC7E,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,IAAI;aACjB;SACJ,CAAC,CAAA;IACN,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@tarquinen/opencode-dcp",
4
- "version": "0.3.16",
4
+ "version": "0.3.17",
5
5
  "type": "module",
6
6
  "description": "OpenCode plugin that optimizes token usage by pruning obsolete tool outputs from conversation context",
7
7
  "main": "./dist/index.js",