specweave 0.30.10 → 0.30.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 (95) hide show
  1. package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +1 -1
  2. package/dist/plugins/specweave-ado/lib/ado-client-v2.js +46 -12
  3. package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +1 -1
  4. package/dist/src/cli/commands/init.d.ts.map +1 -1
  5. package/dist/src/cli/commands/init.js +12 -2
  6. package/dist/src/cli/commands/init.js.map +1 -1
  7. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts +5 -1
  8. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts.map +1 -1
  9. package/dist/src/cli/helpers/init/living-docs-preflight.js +80 -28
  10. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  11. package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
  12. package/dist/src/cli/helpers/init/repository-setup.js +64 -2
  13. package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
  14. package/dist/src/cli/helpers/project-count-fetcher.js +33 -2
  15. package/dist/src/cli/helpers/project-count-fetcher.js.map +1 -1
  16. package/dist/src/cli/workers/brownfield-worker.d.ts +13 -0
  17. package/dist/src/cli/workers/brownfield-worker.d.ts.map +1 -1
  18. package/dist/src/cli/workers/brownfield-worker.js +154 -0
  19. package/dist/src/cli/workers/brownfield-worker.js.map +1 -1
  20. package/dist/src/cli/workers/living-docs-worker.js +272 -11
  21. package/dist/src/cli/workers/living-docs-worker.js.map +1 -1
  22. package/dist/src/core/background/brownfield-launcher.d.ts +2 -1
  23. package/dist/src/core/background/brownfield-launcher.d.ts.map +1 -1
  24. package/dist/src/core/background/brownfield-launcher.js.map +1 -1
  25. package/dist/src/core/background/types.d.ts +10 -2
  26. package/dist/src/core/background/types.d.ts.map +1 -1
  27. package/dist/src/core/discrepancy/brownfield-types.d.ts +3 -1
  28. package/dist/src/core/discrepancy/brownfield-types.d.ts.map +1 -1
  29. package/dist/src/core/living-docs/feature-archiver.d.ts +39 -0
  30. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
  31. package/dist/src/core/living-docs/feature-archiver.js +197 -0
  32. package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
  33. package/dist/src/core/llm/availability-messages.d.ts +33 -0
  34. package/dist/src/core/llm/availability-messages.d.ts.map +1 -0
  35. package/dist/src/core/llm/availability-messages.js +170 -0
  36. package/dist/src/core/llm/availability-messages.js.map +1 -0
  37. package/dist/src/core/llm/index.d.ts +34 -0
  38. package/dist/src/core/llm/index.d.ts.map +1 -0
  39. package/dist/src/core/llm/index.js +35 -0
  40. package/dist/src/core/llm/index.js.map +1 -0
  41. package/dist/src/core/llm/provider-factory.d.ts +48 -0
  42. package/dist/src/core/llm/provider-factory.d.ts.map +1 -0
  43. package/dist/src/core/llm/provider-factory.js +274 -0
  44. package/dist/src/core/llm/provider-factory.js.map +1 -0
  45. package/dist/src/core/llm/providers/anthropic-provider.d.ts +66 -0
  46. package/dist/src/core/llm/providers/anthropic-provider.d.ts.map +1 -0
  47. package/dist/src/core/llm/providers/anthropic-provider.js +195 -0
  48. package/dist/src/core/llm/providers/anthropic-provider.js.map +1 -0
  49. package/dist/src/core/llm/providers/azure-openai-provider.d.ts +47 -0
  50. package/dist/src/core/llm/providers/azure-openai-provider.d.ts.map +1 -0
  51. package/dist/src/core/llm/providers/azure-openai-provider.js +116 -0
  52. package/dist/src/core/llm/providers/azure-openai-provider.js.map +1 -0
  53. package/dist/src/core/llm/providers/bedrock-provider.d.ts +44 -0
  54. package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -0
  55. package/dist/src/core/llm/providers/bedrock-provider.js +149 -0
  56. package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -0
  57. package/dist/src/core/llm/providers/claude-code-provider.d.ts +115 -0
  58. package/dist/src/core/llm/providers/claude-code-provider.d.ts.map +1 -0
  59. package/dist/src/core/llm/providers/claude-code-provider.js +379 -0
  60. package/dist/src/core/llm/providers/claude-code-provider.js.map +1 -0
  61. package/dist/src/core/llm/providers/ollama-provider.d.ts +40 -0
  62. package/dist/src/core/llm/providers/ollama-provider.d.ts.map +1 -0
  63. package/dist/src/core/llm/providers/ollama-provider.js +116 -0
  64. package/dist/src/core/llm/providers/ollama-provider.js.map +1 -0
  65. package/dist/src/core/llm/providers/openai-provider.d.ts +44 -0
  66. package/dist/src/core/llm/providers/openai-provider.d.ts.map +1 -0
  67. package/dist/src/core/llm/providers/openai-provider.js +119 -0
  68. package/dist/src/core/llm/providers/openai-provider.js.map +1 -0
  69. package/dist/src/core/llm/providers/vertex-ai-provider.d.ts +46 -0
  70. package/dist/src/core/llm/providers/vertex-ai-provider.d.ts.map +1 -0
  71. package/dist/src/core/llm/providers/vertex-ai-provider.js +123 -0
  72. package/dist/src/core/llm/providers/vertex-ai-provider.js.map +1 -0
  73. package/dist/src/core/llm/types.d.ts +181 -0
  74. package/dist/src/core/llm/types.d.ts.map +1 -0
  75. package/dist/src/core/llm/types.js +56 -0
  76. package/dist/src/core/llm/types.js.map +1 -0
  77. package/dist/src/importers/item-converter.d.ts.map +1 -1
  78. package/dist/src/importers/item-converter.js +69 -12
  79. package/dist/src/importers/item-converter.js.map +1 -1
  80. package/dist/src/integrations/ado/ado-client.d.ts +22 -0
  81. package/dist/src/integrations/ado/ado-client.d.ts.map +1 -1
  82. package/dist/src/integrations/ado/ado-client.js +89 -37
  83. package/dist/src/integrations/ado/ado-client.js.map +1 -1
  84. package/dist/src/living-docs/enterprise-analyzer.d.ts +160 -0
  85. package/dist/src/living-docs/enterprise-analyzer.d.ts.map +1 -0
  86. package/dist/src/living-docs/enterprise-analyzer.js +836 -0
  87. package/dist/src/living-docs/enterprise-analyzer.js.map +1 -0
  88. package/dist/src/living-docs/fs-id-allocator.d.ts +5 -0
  89. package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
  90. package/dist/src/living-docs/fs-id-allocator.js +12 -5
  91. package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
  92. package/package.json +1 -1
  93. package/plugins/specweave/commands/specweave-archive.md +69 -2
  94. package/plugins/specweave-ado/lib/ado-client-v2.js +43 -8
  95. package/plugins/specweave-ado/lib/ado-client-v2.ts +52 -12
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Azure OpenAI Provider
3
+ *
4
+ * Implements LLMProvider interface for Azure-hosted OpenAI models.
5
+ * Uses openai SDK with Azure configuration.
6
+ *
7
+ * Best for: Enterprise environments with Azure compliance requirements
8
+ */
9
+ import type { LLMProvider, AnalyzeOptions, AnalyzeResult, StructuredOptions } from '../types.js';
10
+ import { Logger } from '../../../utils/logger.js';
11
+ export interface AzureOpenAIProviderConfig {
12
+ apiKey: string;
13
+ endpoint: string;
14
+ deployment: string;
15
+ apiVersion?: string;
16
+ maxTokens?: number;
17
+ temperature?: number;
18
+ logger?: Logger;
19
+ }
20
+ export declare class AzureOpenAIProvider implements LLMProvider {
21
+ readonly name: "azure-openai";
22
+ readonly defaultModel: string;
23
+ private apiKey;
24
+ private endpoint;
25
+ private deployment;
26
+ private apiVersion;
27
+ private maxTokens;
28
+ private temperature;
29
+ private logger;
30
+ private client;
31
+ constructor(config: AzureOpenAIProviderConfig);
32
+ private getClient;
33
+ analyze(prompt: string, options?: AnalyzeOptions): Promise<AnalyzeResult>;
34
+ analyzeStructured<T>(prompt: string, options: StructuredOptions<T>): Promise<{
35
+ data: T;
36
+ usage: AnalyzeResult['usage'];
37
+ estimatedCost: number;
38
+ }>;
39
+ estimateCost(inputTokens: number, outputTokens: number): number;
40
+ isAvailable(): Promise<boolean>;
41
+ getStatus(): Promise<{
42
+ available: boolean;
43
+ latencyMs?: number;
44
+ error?: string;
45
+ }>;
46
+ }
47
+ //# sourceMappingURL=azure-openai-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAoB,YAAW,WAAW;IACrD,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,yBAAyB;YAW/B,SAAS;IAajB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAQzD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAcvF"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Azure OpenAI Provider
3
+ *
4
+ * Implements LLMProvider interface for Azure-hosted OpenAI models.
5
+ * Uses openai SDK with Azure configuration.
6
+ *
7
+ * Best for: Enterprise environments with Azure compliance requirements
8
+ */
9
+ import { consoleLogger } from '../../../utils/logger.js';
10
+ export class AzureOpenAIProvider {
11
+ constructor(config) {
12
+ this.name = 'azure-openai';
13
+ this.apiKey = config.apiKey;
14
+ this.endpoint = config.endpoint.replace(/\/$/, '');
15
+ this.deployment = config.deployment;
16
+ this.apiVersion = config.apiVersion || '2024-02-15-preview';
17
+ this.defaultModel = config.deployment;
18
+ this.maxTokens = config.maxTokens || 4096;
19
+ this.temperature = config.temperature ?? 0.3;
20
+ this.logger = config.logger || consoleLogger;
21
+ }
22
+ async getClient() {
23
+ if (!this.client) {
24
+ const { AzureOpenAI } = await import('openai');
25
+ this.client = new AzureOpenAI({
26
+ apiKey: this.apiKey,
27
+ endpoint: this.endpoint,
28
+ apiVersion: this.apiVersion,
29
+ deployment: this.deployment,
30
+ });
31
+ }
32
+ return this.client;
33
+ }
34
+ async analyze(prompt, options = {}) {
35
+ const startTime = Date.now();
36
+ const client = await this.getClient();
37
+ const messages = [];
38
+ if (options.systemPrompt) {
39
+ messages.push({ role: 'system', content: options.systemPrompt });
40
+ }
41
+ messages.push({ role: 'user', content: prompt });
42
+ const response = await client.chat.completions.create({
43
+ max_tokens: options.maxTokens || this.maxTokens,
44
+ temperature: options.temperature ?? this.temperature,
45
+ messages,
46
+ });
47
+ const content = response.choices[0]?.message?.content || '';
48
+ const usage = {
49
+ inputTokens: response.usage?.prompt_tokens || 0,
50
+ outputTokens: response.usage?.completion_tokens || 0,
51
+ totalTokens: response.usage?.total_tokens || 0,
52
+ };
53
+ return {
54
+ content,
55
+ usage,
56
+ estimatedCost: this.estimateCost(usage.inputTokens, usage.outputTokens),
57
+ model: this.deployment,
58
+ durationMs: Date.now() - startTime,
59
+ wasRetry: false,
60
+ };
61
+ }
62
+ async analyzeStructured(prompt, options) {
63
+ const client = await this.getClient();
64
+ const messages = [
65
+ {
66
+ role: 'system',
67
+ content: `Respond in JSON format matching: ${JSON.stringify(options.schema)}`,
68
+ },
69
+ { role: 'user', content: prompt },
70
+ ];
71
+ const response = await client.chat.completions.create({
72
+ max_tokens: options.maxTokens || this.maxTokens,
73
+ temperature: 0.1,
74
+ messages,
75
+ response_format: { type: 'json_object' },
76
+ });
77
+ const content = response.choices[0]?.message?.content || '{}';
78
+ const usage = {
79
+ inputTokens: response.usage?.prompt_tokens || 0,
80
+ outputTokens: response.usage?.completion_tokens || 0,
81
+ totalTokens: response.usage?.total_tokens || 0,
82
+ };
83
+ return {
84
+ data: JSON.parse(content),
85
+ usage,
86
+ estimatedCost: this.estimateCost(usage.inputTokens, usage.outputTokens),
87
+ };
88
+ }
89
+ estimateCost(inputTokens, outputTokens) {
90
+ // Azure pricing varies by region and agreement
91
+ // Using GPT-4o defaults as baseline
92
+ const pricing = { inputPer1M: 5, outputPer1M: 15 };
93
+ return (inputTokens / 1000000) * pricing.inputPer1M +
94
+ (outputTokens / 1000000) * pricing.outputPer1M;
95
+ }
96
+ async isAvailable() {
97
+ const status = await this.getStatus();
98
+ return status.available;
99
+ }
100
+ async getStatus() {
101
+ const startTime = Date.now();
102
+ try {
103
+ const client = await this.getClient();
104
+ // Azure doesn't have models.list, try a minimal completion
105
+ await client.chat.completions.create({
106
+ max_tokens: 1,
107
+ messages: [{ role: 'user', content: 'hi' }],
108
+ });
109
+ return { available: true, latencyMs: Date.now() - startTime };
110
+ }
111
+ catch (error) {
112
+ return { available: false, error: error.message };
113
+ }
114
+ }
115
+ }
116
+ //# sourceMappingURL=azure-openai-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-openai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * AWS Bedrock Provider
3
+ *
4
+ * Implements LLMProvider interface for AWS Bedrock models.
5
+ * Supports Claude, Titan, and other Bedrock models.
6
+ *
7
+ * Best for: AWS-native environments, existing AWS infrastructure
8
+ *
9
+ * NOTE: Requires @aws-sdk/client-bedrock-runtime
10
+ */
11
+ import type { LLMProvider, AnalyzeOptions, AnalyzeResult, StructuredOptions } from '../types.js';
12
+ import { Logger } from '../../../utils/logger.js';
13
+ export interface BedrockProviderConfig {
14
+ region?: string;
15
+ model?: string;
16
+ maxTokens?: number;
17
+ temperature?: number;
18
+ logger?: Logger;
19
+ }
20
+ export declare class BedrockProvider implements LLMProvider {
21
+ readonly name: "bedrock";
22
+ readonly defaultModel: string;
23
+ private region;
24
+ private maxTokens;
25
+ private temperature;
26
+ private logger;
27
+ private client;
28
+ constructor(config: BedrockProviderConfig);
29
+ private getClient;
30
+ analyze(prompt: string, options?: AnalyzeOptions): Promise<AnalyzeResult>;
31
+ analyzeStructured<T>(prompt: string, options: StructuredOptions<T>): Promise<{
32
+ data: T;
33
+ usage: AnalyzeResult['usage'];
34
+ estimatedCost: number;
35
+ }>;
36
+ estimateCost(inputTokens: number, outputTokens: number, model?: string): number;
37
+ isAvailable(): Promise<boolean>;
38
+ getStatus(): Promise<{
39
+ available: boolean;
40
+ latencyMs?: number;
41
+ error?: string;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=bedrock-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,qBAAqB;YAQ3B,SAAS;IAQjB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyE7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAgBvF"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * AWS Bedrock Provider
3
+ *
4
+ * Implements LLMProvider interface for AWS Bedrock models.
5
+ * Supports Claude, Titan, and other Bedrock models.
6
+ *
7
+ * Best for: AWS-native environments, existing AWS infrastructure
8
+ *
9
+ * NOTE: Requires @aws-sdk/client-bedrock-runtime
10
+ */
11
+ import { consoleLogger } from '../../../utils/logger.js';
12
+ export class BedrockProvider {
13
+ constructor(config) {
14
+ this.name = 'bedrock';
15
+ this.region = config.region || process.env.AWS_REGION || 'us-east-1';
16
+ this.defaultModel = config.model || 'anthropic.claude-3-5-sonnet-20241022-v2:0';
17
+ this.maxTokens = config.maxTokens || 4096;
18
+ this.temperature = config.temperature ?? 0.3;
19
+ this.logger = config.logger || consoleLogger;
20
+ }
21
+ async getClient() {
22
+ if (!this.client) {
23
+ const { BedrockRuntimeClient } = await import('@aws-sdk/client-bedrock-runtime');
24
+ this.client = new BedrockRuntimeClient({ region: this.region });
25
+ }
26
+ return this.client;
27
+ }
28
+ async analyze(prompt, options = {}) {
29
+ const startTime = Date.now();
30
+ const model = options.model || this.defaultModel;
31
+ const client = await this.getClient();
32
+ const { InvokeModelCommand } = await import('@aws-sdk/client-bedrock-runtime');
33
+ // Format depends on model provider
34
+ const isAnthropic = model.startsWith('anthropic.');
35
+ const isTitan = model.startsWith('amazon.titan');
36
+ let body;
37
+ if (isAnthropic) {
38
+ body = JSON.stringify({
39
+ anthropic_version: 'bedrock-2023-05-31',
40
+ max_tokens: options.maxTokens || this.maxTokens,
41
+ temperature: options.temperature ?? this.temperature,
42
+ system: options.systemPrompt,
43
+ messages: [{ role: 'user', content: prompt }],
44
+ });
45
+ }
46
+ else if (isTitan) {
47
+ body = JSON.stringify({
48
+ inputText: options.systemPrompt ? `${options.systemPrompt}\n\n${prompt}` : prompt,
49
+ textGenerationConfig: {
50
+ maxTokenCount: options.maxTokens || this.maxTokens,
51
+ temperature: options.temperature ?? this.temperature,
52
+ },
53
+ });
54
+ }
55
+ else {
56
+ throw new Error(`Unsupported Bedrock model: ${model}`);
57
+ }
58
+ const command = new InvokeModelCommand({
59
+ modelId: model,
60
+ contentType: 'application/json',
61
+ accept: 'application/json',
62
+ body,
63
+ });
64
+ const response = await client.send(command);
65
+ const responseBody = JSON.parse(new TextDecoder().decode(response.body));
66
+ let content;
67
+ let inputTokens = 0;
68
+ let outputTokens = 0;
69
+ if (isAnthropic) {
70
+ content = responseBody.content?.[0]?.text || '';
71
+ inputTokens = responseBody.usage?.input_tokens || 0;
72
+ outputTokens = responseBody.usage?.output_tokens || 0;
73
+ }
74
+ else if (isTitan) {
75
+ content = responseBody.results?.[0]?.outputText || '';
76
+ inputTokens = responseBody.inputTextTokenCount || 0;
77
+ outputTokens = responseBody.results?.[0]?.tokenCount || 0;
78
+ }
79
+ else {
80
+ content = '';
81
+ }
82
+ return {
83
+ content,
84
+ usage: {
85
+ inputTokens,
86
+ outputTokens,
87
+ totalTokens: inputTokens + outputTokens,
88
+ },
89
+ estimatedCost: this.estimateCost(inputTokens, outputTokens, model),
90
+ model,
91
+ durationMs: Date.now() - startTime,
92
+ wasRetry: false,
93
+ };
94
+ }
95
+ async analyzeStructured(prompt, options) {
96
+ const jsonPrompt = `${prompt}
97
+
98
+ Respond with valid JSON matching: ${JSON.stringify(options.schema)}
99
+ Return ONLY the JSON object.`;
100
+ const result = await this.analyze(jsonPrompt, {
101
+ ...options,
102
+ temperature: 0.1,
103
+ });
104
+ let jsonContent = result.content.trim();
105
+ if (jsonContent.startsWith('```')) {
106
+ jsonContent = jsonContent.replace(/^```json?\n?/, '').replace(/\n?```$/, '');
107
+ }
108
+ return {
109
+ data: JSON.parse(jsonContent),
110
+ usage: result.usage,
111
+ estimatedCost: result.estimatedCost,
112
+ };
113
+ }
114
+ estimateCost(inputTokens, outputTokens, model) {
115
+ // Bedrock Claude pricing (slightly higher than direct)
116
+ const modelId = model || this.defaultModel;
117
+ if (modelId.includes('claude-3-5-sonnet')) {
118
+ return (inputTokens / 1000000) * 3 + (outputTokens / 1000000) * 15;
119
+ }
120
+ if (modelId.includes('claude-3-haiku')) {
121
+ return (inputTokens / 1000000) * 0.25 + (outputTokens / 1000000) * 1.25;
122
+ }
123
+ if (modelId.includes('titan')) {
124
+ return (inputTokens / 1000000) * 0.8 + (outputTokens / 1000000) * 1.6;
125
+ }
126
+ return (inputTokens / 1000000) * 3 + (outputTokens / 1000000) * 15;
127
+ }
128
+ async isAvailable() {
129
+ const status = await this.getStatus();
130
+ return status.available;
131
+ }
132
+ async getStatus() {
133
+ const startTime = Date.now();
134
+ try {
135
+ const client = await this.getClient();
136
+ const { ListFoundationModelsCommand } = await import('@aws-sdk/client-bedrock-runtime');
137
+ // Note: ListFoundationModels is on the Bedrock client, not Runtime
138
+ // For status check, we just verify credentials work
139
+ return {
140
+ available: !!client,
141
+ latencyMs: Date.now() - startTime,
142
+ };
143
+ }
144
+ catch (error) {
145
+ return { available: false, error: error.message };
146
+ }
147
+ }
148
+ }
149
+ //# sourceMappingURL=bedrock-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Claude Code Native Provider
3
+ *
4
+ * Uses the Claude Code CLI (`claude --print`) as an LLM provider.
5
+ * This leverages the user's existing MAX subscription - NO API KEY NEEDED!
6
+ *
7
+ * How it works:
8
+ * 1. User is authenticated to Claude Code (MAX subscription)
9
+ * 2. Auth is cached in ~/.claude/ (Unix) or %USERPROFILE%\.claude\ (Windows)
10
+ * 3. We spawn `claude --print` subprocesses
11
+ * 4. These use the cached auth automatically
12
+ * 5. Result: Full Claude capabilities at no extra cost!
13
+ *
14
+ * Cross-platform support:
15
+ * - macOS: Uses `which claude` for detection
16
+ * - Linux: Uses `which claude` or `command -v claude`
17
+ * - Windows: Uses `where claude` for detection
18
+ *
19
+ * Best for:
20
+ * - Claude MAX subscribers
21
+ * - Background processing without API costs
22
+ * - Full Claude capabilities (Opus, Sonnet, Haiku)
23
+ */
24
+ import type { LLMProvider, LLMProviderType, AnalyzeOptions, AnalyzeResult, StructuredOptions } from '../types.js';
25
+ import { Logger } from '../../../utils/logger.js';
26
+ export interface ClaudeCodeProviderConfig {
27
+ /** Model alias: 'opus' (default), 'sonnet', 'haiku' or full model ID */
28
+ model?: string;
29
+ /** Max tokens for response */
30
+ maxTokens?: number;
31
+ /** Temperature (0-1) */
32
+ temperature?: number;
33
+ /** Timeout in ms (default: 120000 = 2 min) */
34
+ timeout?: number;
35
+ /** Logger instance */
36
+ logger?: Logger;
37
+ /** Working directory for claude command */
38
+ cwd?: string;
39
+ /**
40
+ * Skip permission prompts for non-interactive background processing.
41
+ * Uses --dangerously-skip-permissions flag.
42
+ * Default: true (required for background/detached processes)
43
+ */
44
+ skipPermissions?: boolean;
45
+ }
46
+ /**
47
+ * Claude Code Native Provider
48
+ *
49
+ * Uses `claude --print` CLI for LLM calls - leverages MAX subscription!
50
+ */
51
+ export declare class ClaudeCodeProvider implements LLMProvider {
52
+ readonly name: LLMProviderType;
53
+ readonly defaultModel: string;
54
+ private model;
55
+ private maxTokens;
56
+ private timeout;
57
+ private logger;
58
+ private cwd?;
59
+ private skipPermissions;
60
+ constructor(config?: ClaudeCodeProviderConfig);
61
+ /**
62
+ * Execute claude --print command
63
+ *
64
+ * Cross-platform: Works on Windows, macOS, and Linux
65
+ * Background-safe: Uses --dangerously-skip-permissions for non-interactive use
66
+ */
67
+ private executeClaudeCommand;
68
+ /**
69
+ * Analyze text using Claude Code CLI
70
+ */
71
+ analyze(prompt: string, options?: AnalyzeOptions): Promise<AnalyzeResult>;
72
+ /**
73
+ * Analyze with structured JSON output
74
+ */
75
+ analyzeStructured<T>(prompt: string, options: StructuredOptions<T>): Promise<{
76
+ data: T;
77
+ usage: AnalyzeResult['usage'];
78
+ estimatedCost: number;
79
+ }>;
80
+ /**
81
+ * Estimate cost - always 0 for MAX subscription!
82
+ */
83
+ estimateCost(): number;
84
+ /**
85
+ * Check if Claude Code CLI is available and authenticated
86
+ */
87
+ isAvailable(): Promise<boolean>;
88
+ /**
89
+ * Get provider status
90
+ */
91
+ getStatus(): Promise<{
92
+ available: boolean;
93
+ latencyMs?: number;
94
+ error?: string;
95
+ }>;
96
+ }
97
+ /**
98
+ * Check if Claude Code CLI is installed and authenticated
99
+ *
100
+ * Cross-platform support:
101
+ * - Windows: Uses `where claude` and checks %USERPROFILE%\.claude\
102
+ * - macOS/Linux: Uses `which claude` and checks ~/.claude/
103
+ */
104
+ export declare function isClaudeCodeAvailable(): Promise<boolean>;
105
+ /**
106
+ * Get detailed Claude Code availability info
107
+ */
108
+ export declare function getClaudeCodeStatus(): Promise<{
109
+ available: boolean;
110
+ cliInstalled: boolean;
111
+ authExists: boolean;
112
+ error?: string;
113
+ platform: string;
114
+ }>;
115
+ //# sourceMappingURL=claude-code-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/claude-code-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AASjE,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAuBD;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAiB;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,eAAe,CAAU;gBAErB,MAAM,GAAE,wBAA6B;IAWjD;;;;;OAKG;YACW,oBAAoB;IA6FlC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDnF;;OAEG;IACG,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAgD7E;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAsBvF;AAgDD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAyB9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAuCD"}