veryfront 0.1.498 → 0.1.500

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 (152) hide show
  1. package/esm/cli/auth/provider-store.d.ts +1 -1
  2. package/esm/cli/auth/provider-store.js +1 -1
  3. package/esm/cli/commands/doctor/ai-checks.js +1 -1
  4. package/esm/cli/skills/core-skills.js +1 -1
  5. package/esm/deno.d.ts +4 -0
  6. package/esm/deno.js +9 -5
  7. package/esm/extensions/{ext-anthropic → ext-llm-anthropic}/src/anthropic-provider.d.ts +5 -5
  8. package/esm/extensions/ext-llm-anthropic/src/anthropic-provider.d.ts.map +1 -0
  9. package/esm/extensions/{ext-anthropic → ext-llm-anthropic}/src/anthropic-provider.js +2 -2
  10. package/esm/extensions/{ext-anthropic → ext-llm-anthropic}/src/index.d.ts +3 -3
  11. package/esm/extensions/ext-llm-anthropic/src/index.d.ts.map +1 -0
  12. package/esm/extensions/{ext-anthropic → ext-llm-anthropic}/src/index.js +8 -8
  13. package/esm/extensions/{ext-google → ext-llm-google}/src/google-provider.d.ts +6 -6
  14. package/esm/extensions/ext-llm-google/src/google-provider.d.ts.map +1 -0
  15. package/esm/extensions/{ext-google → ext-llm-google}/src/google-provider.js +2 -2
  16. package/esm/extensions/{ext-google → ext-llm-google}/src/index.d.ts +3 -3
  17. package/esm/extensions/ext-llm-google/src/index.d.ts.map +1 -0
  18. package/esm/extensions/ext-llm-google/src/index.js +26 -0
  19. package/esm/extensions/{ext-openai → ext-llm-openai}/src/index.d.ts +3 -3
  20. package/esm/extensions/ext-llm-openai/src/index.d.ts.map +1 -0
  21. package/esm/extensions/ext-llm-openai/src/index.js +28 -0
  22. package/esm/extensions/{ext-openai → ext-llm-openai}/src/openai-provider.d.ts +7 -7
  23. package/esm/extensions/ext-llm-openai/src/openai-provider.d.ts.map +1 -0
  24. package/esm/extensions/{ext-openai → ext-llm-openai}/src/openai-provider.js +2 -2
  25. package/esm/src/agent/agent-service-server.d.ts +9 -1
  26. package/esm/src/agent/agent-service-server.d.ts.map +1 -1
  27. package/esm/src/agent/agent-service-server.js +14 -1
  28. package/esm/src/agent/hosted-agent-service-runtime.d.ts +10 -1
  29. package/esm/src/agent/hosted-agent-service-runtime.d.ts.map +1 -1
  30. package/esm/src/agent/hosted-agent-service-runtime.js +18 -1
  31. package/esm/src/agent/hosted-stream-terminal-error.js +1 -1
  32. package/esm/src/agent/index.d.ts +3 -2
  33. package/esm/src/agent/index.d.ts.map +1 -1
  34. package/esm/src/agent/index.js +3 -2
  35. package/esm/src/agent/runtime-agent-definition-files.d.ts.map +1 -1
  36. package/esm/src/agent/runtime-agent-definition-files.js +8 -3
  37. package/esm/src/agent/veryfront-cloud-agent-service.d.ts +41 -0
  38. package/esm/src/agent/veryfront-cloud-agent-service.d.ts.map +1 -0
  39. package/esm/src/agent/veryfront-cloud-agent-service.js +501 -0
  40. package/esm/src/chat/provider-errors.js +3 -3
  41. package/esm/src/config/schemas/config.schema.d.ts +24 -0
  42. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  43. package/esm/src/config/schemas/config.schema.js +48 -0
  44. package/esm/src/discovery/index.d.ts +1 -0
  45. package/esm/src/discovery/index.d.ts.map +1 -1
  46. package/esm/src/discovery/index.js +1 -0
  47. package/esm/src/discovery/project-discovery-config.d.ts +30 -0
  48. package/esm/src/discovery/project-discovery-config.d.ts.map +1 -0
  49. package/esm/src/discovery/project-discovery-config.js +33 -0
  50. package/esm/src/embedding/resolve.js +5 -5
  51. package/esm/src/embedding/veryfront-cloud/provider.js +3 -3
  52. package/esm/src/extensions/builtin-extensions.d.ts +2 -2
  53. package/esm/src/extensions/builtin-extensions.d.ts.map +1 -1
  54. package/esm/src/extensions/builtin-extensions.js +26 -27
  55. package/esm/src/extensions/interfaces/index.d.ts +9 -5
  56. package/esm/src/extensions/interfaces/index.d.ts.map +1 -1
  57. package/esm/src/extensions/interfaces/index.js +7 -3
  58. package/esm/src/extensions/{interfaces → llm}/embedding-provider.d.ts +1 -1
  59. package/esm/src/extensions/llm/embedding-provider.d.ts.map +1 -0
  60. package/esm/src/extensions/{interfaces → llm}/embedding-provider.js +1 -1
  61. package/esm/src/extensions/llm/index.d.ts +16 -0
  62. package/esm/src/extensions/llm/index.d.ts.map +1 -0
  63. package/esm/src/extensions/llm/index.js +13 -0
  64. package/esm/src/extensions/llm/llm-provider-registry.d.ts +11 -0
  65. package/esm/src/extensions/llm/llm-provider-registry.d.ts.map +1 -0
  66. package/esm/src/extensions/{registries/ai-provider-registry.js → llm/llm-provider-registry.js} +6 -6
  67. package/esm/src/extensions/{interfaces/ai-provider.d.ts → llm/llm-provider.d.ts} +16 -16
  68. package/esm/src/extensions/llm/llm-provider.d.ts.map +1 -0
  69. package/esm/src/extensions/{interfaces/ai-provider.js → llm/llm-provider.js} +4 -4
  70. package/esm/src/extensions/loader.d.ts +1 -1
  71. package/esm/src/extensions/loader.js +1 -1
  72. package/esm/src/extensions/orchestrate.d.ts +1 -1
  73. package/esm/src/extensions/orchestrate.d.ts.map +1 -1
  74. package/esm/src/extensions/recommendations.js +4 -4
  75. package/esm/src/provider/local/env.d.ts +1 -1
  76. package/esm/src/provider/local/env.js +1 -1
  77. package/esm/src/provider/model-registry.d.ts.map +1 -1
  78. package/esm/src/provider/model-registry.js +9 -9
  79. package/esm/src/provider/shared/index.d.ts +1 -1
  80. package/esm/src/provider/shared/index.js +1 -1
  81. package/esm/src/provider/veryfront-cloud/openai.js +4 -4
  82. package/esm/src/provider/veryfront-cloud/provider.js +2 -2
  83. package/esm/src/server/bootstrap.d.ts.map +1 -1
  84. package/esm/src/server/bootstrap.js +4 -5
  85. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
  86. package/esm/src/server/handlers/request/api/project-discovery.js +6 -22
  87. package/esm/src/server/index.d.ts +1 -1
  88. package/esm/src/server/index.d.ts.map +1 -1
  89. package/esm/src/server/index.js +1 -1
  90. package/esm/src/server/service-server.d.ts +18 -0
  91. package/esm/src/server/service-server.d.ts.map +1 -1
  92. package/esm/src/server/service-server.js +318 -0
  93. package/esm/src/utils/version-constant.d.ts +1 -1
  94. package/esm/src/utils/version-constant.js +1 -1
  95. package/esm/src/workflow/schemas/workflow.schema.d.ts +1 -1
  96. package/package.json +6 -1
  97. package/src/cli/auth/provider-store.ts +1 -1
  98. package/src/cli/commands/doctor/ai-checks.ts +1 -1
  99. package/src/cli/skills/core-skills.ts +1 -1
  100. package/src/deno.js +9 -5
  101. package/src/extensions/{ext-anthropic → ext-llm-anthropic}/src/anthropic-provider.ts +5 -5
  102. package/src/extensions/ext-llm-anthropic/src/index.ts +34 -0
  103. package/src/extensions/{ext-google → ext-llm-google}/src/google-provider.ts +6 -6
  104. package/src/extensions/ext-llm-google/src/index.ts +31 -0
  105. package/src/extensions/ext-llm-openai/src/index.ts +33 -0
  106. package/src/extensions/{ext-openai → ext-llm-openai}/src/openai-provider.ts +7 -7
  107. package/src/src/agent/agent-service-server.ts +26 -0
  108. package/src/src/agent/hosted-agent-service-runtime.ts +42 -0
  109. package/src/src/agent/hosted-stream-terminal-error.ts +1 -1
  110. package/src/src/agent/index.ts +16 -0
  111. package/src/src/agent/runtime-agent-definition-files.ts +8 -3
  112. package/src/src/agent/veryfront-cloud-agent-service.ts +798 -0
  113. package/src/src/chat/provider-errors.ts +3 -3
  114. package/src/src/config/schemas/config.schema.ts +48 -0
  115. package/src/src/discovery/index.ts +4 -0
  116. package/src/src/discovery/project-discovery-config.ts +89 -0
  117. package/src/src/embedding/resolve.ts +6 -6
  118. package/src/src/embedding/veryfront-cloud/provider.ts +4 -4
  119. package/src/src/extensions/builtin-extensions.ts +32 -33
  120. package/src/src/extensions/interfaces/index.ts +11 -7
  121. package/src/src/extensions/{interfaces → llm}/embedding-provider.ts +1 -1
  122. package/src/src/extensions/llm/index.ts +17 -0
  123. package/src/src/extensions/{registries/ai-provider-registry.ts → llm/llm-provider-registry.ts} +12 -12
  124. package/src/src/extensions/{interfaces/ai-provider.ts → llm/llm-provider.ts} +15 -15
  125. package/src/src/extensions/loader.ts +1 -1
  126. package/src/src/extensions/orchestrate.ts +1 -1
  127. package/src/src/extensions/recommendations.ts +4 -4
  128. package/src/src/provider/local/env.ts +1 -1
  129. package/src/src/provider/model-registry.ts +11 -10
  130. package/src/src/provider/shared/index.ts +1 -1
  131. package/src/src/provider/veryfront-cloud/openai.ts +4 -4
  132. package/src/src/provider/veryfront-cloud/provider.ts +2 -2
  133. package/src/src/server/bootstrap.ts +7 -5
  134. package/src/src/server/handlers/request/api/project-discovery.ts +6 -27
  135. package/src/src/server/index.ts +4 -0
  136. package/src/src/server/service-server.ts +428 -0
  137. package/src/src/utils/version-constant.ts +1 -1
  138. package/esm/extensions/ext-anthropic/src/anthropic-provider.d.ts.map +0 -1
  139. package/esm/extensions/ext-anthropic/src/index.d.ts.map +0 -1
  140. package/esm/extensions/ext-google/src/google-provider.d.ts.map +0 -1
  141. package/esm/extensions/ext-google/src/index.d.ts.map +0 -1
  142. package/esm/extensions/ext-google/src/index.js +0 -26
  143. package/esm/extensions/ext-openai/src/index.d.ts.map +0 -1
  144. package/esm/extensions/ext-openai/src/index.js +0 -28
  145. package/esm/extensions/ext-openai/src/openai-provider.d.ts.map +0 -1
  146. package/esm/src/extensions/interfaces/ai-provider.d.ts.map +0 -1
  147. package/esm/src/extensions/interfaces/embedding-provider.d.ts.map +0 -1
  148. package/esm/src/extensions/registries/ai-provider-registry.d.ts +0 -11
  149. package/esm/src/extensions/registries/ai-provider-registry.d.ts.map +0 -1
  150. package/src/extensions/ext-anthropic/src/index.ts +0 -34
  151. package/src/extensions/ext-google/src/index.ts +0 -31
  152. package/src/extensions/ext-openai/src/index.ts +0 -33
@@ -7,7 +7,7 @@ export interface ParsedProviderError {
7
7
 
8
8
  const DEFAULT_EXTERNAL_SERVICE_ERROR = {
9
9
  code: "EXTERNAL_SERVICE_ERROR",
10
- message: "AI provider service error",
10
+ message: "LLM provider service error",
11
11
  } as const;
12
12
 
13
13
  function isErrorRecord(value: unknown): value is Record<string, unknown> {
@@ -81,7 +81,7 @@ function parseKnownProviderBody(body: unknown): ParsedProviderError | null {
81
81
  code: "OVERLOADED_ERROR",
82
82
  message: typeof body.message === "string"
83
83
  ? body.message
84
- : "The AI provider is currently overloaded",
84
+ : "The LLM provider is currently overloaded",
85
85
  };
86
86
  }
87
87
 
@@ -193,7 +193,7 @@ function parseProviderErrorInner(error: unknown, seen: WeakSet<object>): ParsedP
193
193
  return { code: "INSUFFICIENT_CREDITS", message: "Insufficient AI credits", status: 402 };
194
194
  }
195
195
  if (normalizedMessage.includes("overload") || normalizedMessage.includes("capacity")) {
196
- return { code: "OVERLOADED_ERROR", message: "The AI provider is currently overloaded" };
196
+ return { code: "OVERLOADED_ERROR", message: "The LLM provider is currently overloaded" };
197
197
  }
198
198
  if (
199
199
  normalizedMessage.includes("rate limit") ||
@@ -426,6 +426,54 @@ export const veryfrontConfigSchema = z
426
426
  })
427
427
  .partial()
428
428
  .optional(),
429
+ resources: z
430
+ .object({
431
+ discovery: z
432
+ .object({
433
+ enabled: z.boolean().optional(),
434
+ paths: z.array(z.string()).optional(),
435
+ })
436
+ .partial()
437
+ .optional(),
438
+ })
439
+ .partial()
440
+ .optional(),
441
+ prompts: z
442
+ .object({
443
+ discovery: z
444
+ .object({
445
+ enabled: z.boolean().optional(),
446
+ paths: z.array(z.string()).optional(),
447
+ })
448
+ .partial()
449
+ .optional(),
450
+ })
451
+ .partial()
452
+ .optional(),
453
+ workflows: z
454
+ .object({
455
+ discovery: z
456
+ .object({
457
+ enabled: z.boolean().optional(),
458
+ paths: z.array(z.string()).optional(),
459
+ })
460
+ .partial()
461
+ .optional(),
462
+ })
463
+ .partial()
464
+ .optional(),
465
+ tasks: z
466
+ .object({
467
+ discovery: z
468
+ .object({
469
+ enabled: z.boolean().optional(),
470
+ paths: z.array(z.string()).optional(),
471
+ })
472
+ .partial()
473
+ .optional(),
474
+ })
475
+ .partial()
476
+ .optional(),
429
477
  mcp: z
430
478
  .object({
431
479
  enabled: z.boolean().optional(),
@@ -19,6 +19,10 @@ export type {
19
19
 
20
20
  // Re-export main discovery function
21
21
  export { discoverAll } from "./discovery-engine.js";
22
+ export {
23
+ createProjectDiscoveryConfig,
24
+ DEFAULT_PROJECT_DISCOVERY_DIRS,
25
+ } from "./project-discovery-config.js";
22
26
 
23
27
  // Re-export utilities
24
28
  export { clearTrackedAgents, filenameToId, filePathToPattern } from "./discovery-utils.js";
@@ -0,0 +1,89 @@
1
+ import type { VeryfrontConfig } from "../config/index.js";
2
+ import type { FileSystemAdapter } from "../platform/adapters/base.js";
3
+ import type { DiscoveryConfig } from "./types.js";
4
+
5
+ export const DEFAULT_PROJECT_DISCOVERY_DIRS = {
6
+ toolDirs: ["tools"],
7
+ agentDirs: ["agents"],
8
+ skillDirs: ["skills"],
9
+ resourceDirs: ["resources"],
10
+ promptDirs: ["prompts"],
11
+ workflowDirs: ["workflows"],
12
+ taskDirs: ["tasks"],
13
+ };
14
+
15
+ type DiscoverySettings = {
16
+ enabled?: boolean;
17
+ paths?: string[];
18
+ };
19
+
20
+ type ProjectDiscoveryConfigInput = {
21
+ projectDir: string;
22
+ config?: VeryfrontConfig | null;
23
+ fsAdapter?: FileSystemAdapter;
24
+ verbose?: boolean;
25
+ };
26
+
27
+ export type ProjectDiscoveryConfig = DiscoveryConfig & {
28
+ toolDirs: string[];
29
+ agentDirs: string[];
30
+ skillDirs: string[];
31
+ resourceDirs: string[];
32
+ promptDirs: string[];
33
+ workflowDirs: string[];
34
+ taskDirs: string[];
35
+ };
36
+
37
+ function isDiscoveryEnabled(discovery: DiscoverySettings | undefined): boolean {
38
+ return discovery?.enabled ?? true;
39
+ }
40
+
41
+ function resolveDiscoveryPaths(
42
+ discovery: DiscoverySettings | undefined,
43
+ defaultPaths: string[],
44
+ ): string[] {
45
+ if (!isDiscoveryEnabled(discovery)) {
46
+ return [];
47
+ }
48
+ return discovery?.paths ?? defaultPaths;
49
+ }
50
+
51
+ export function createProjectDiscoveryConfig(
52
+ input: ProjectDiscoveryConfigInput,
53
+ ): ProjectDiscoveryConfig {
54
+ const aiConfig = input.config?.ai;
55
+
56
+ return {
57
+ baseDir: input.projectDir,
58
+ toolDirs: resolveDiscoveryPaths(
59
+ aiConfig?.tools?.discovery,
60
+ DEFAULT_PROJECT_DISCOVERY_DIRS.toolDirs,
61
+ ),
62
+ agentDirs: resolveDiscoveryPaths(
63
+ aiConfig?.agents?.discovery,
64
+ DEFAULT_PROJECT_DISCOVERY_DIRS.agentDirs,
65
+ ),
66
+ skillDirs: resolveDiscoveryPaths(
67
+ aiConfig?.skills?.discovery,
68
+ DEFAULT_PROJECT_DISCOVERY_DIRS.skillDirs,
69
+ ),
70
+ resourceDirs: resolveDiscoveryPaths(
71
+ aiConfig?.resources?.discovery,
72
+ DEFAULT_PROJECT_DISCOVERY_DIRS.resourceDirs,
73
+ ),
74
+ promptDirs: resolveDiscoveryPaths(
75
+ aiConfig?.prompts?.discovery,
76
+ DEFAULT_PROJECT_DISCOVERY_DIRS.promptDirs,
77
+ ),
78
+ workflowDirs: resolveDiscoveryPaths(
79
+ aiConfig?.workflows?.discovery,
80
+ DEFAULT_PROJECT_DISCOVERY_DIRS.workflowDirs,
81
+ ),
82
+ taskDirs: resolveDiscoveryPaths(
83
+ aiConfig?.tasks?.discovery,
84
+ DEFAULT_PROJECT_DISCOVERY_DIRS.taskDirs,
85
+ ),
86
+ fsAdapter: input.fsAdapter,
87
+ verbose: input.verbose ?? false,
88
+ };
89
+ }
@@ -3,8 +3,8 @@ import { getGoogleGenAIEnvConfig, getOpenAIEnvConfig } from "../config/env.js";
3
3
  import { createLocalEmbeddingModel } from "../provider/local/embedding-runtime-adapter.js";
4
4
  import type { EmbeddingRuntime } from "../provider/types.js";
5
5
  import { tryResolve } from "../extensions/contracts.js";
6
- import type { AIProviderRegistry } from "../extensions/interfaces/index.js";
7
- import { AIProviderRegistryName } from "../extensions/interfaces/index.js";
6
+ import type { LLMProviderRegistry } from "../extensions/interfaces/index.js";
7
+ import { LLMProviderRegistryName } from "../extensions/interfaces/index.js";
8
8
  import { createVeryfrontCloudEmbeddingModel } from "./veryfront-cloud/provider.js";
9
9
 
10
10
  type EmbeddingProviderFactory = (modelId: string) => EmbeddingRuntime;
@@ -43,7 +43,7 @@ function autoInitializeFromEnv(): void {
43
43
  }),
44
44
  );
45
45
  }
46
- const registry = tryResolve<AIProviderRegistry>(AIProviderRegistryName);
46
+ const registry = tryResolve<LLMProviderRegistry>(LLMProviderRegistryName);
47
47
  const provider = registry?.get("openai");
48
48
  if (provider?.createEmbedding) {
49
49
  return provider.createEmbedding(id, {
@@ -55,7 +55,7 @@ function autoInitializeFromEnv(): void {
55
55
  createError({
56
56
  type: "config",
57
57
  message:
58
- "OpenAI provider not installed. Add @veryfront/ext-openai to use openai/* embedding models.",
58
+ "OpenAI provider not installed. Add @veryfront/ext-llm-openai to use openai/* embedding models.",
59
59
  }),
60
60
  );
61
61
  });
@@ -73,7 +73,7 @@ function autoInitializeFromEnv(): void {
73
73
  }),
74
74
  );
75
75
  }
76
- const registry = tryResolve<AIProviderRegistry>(AIProviderRegistryName);
76
+ const registry = tryResolve<LLMProviderRegistry>(LLMProviderRegistryName);
77
77
  const provider = registry?.get("google");
78
78
  if (provider?.createEmbedding) {
79
79
  return provider.createEmbedding(id, {
@@ -84,7 +84,7 @@ function autoInitializeFromEnv(): void {
84
84
  createError({
85
85
  type: "config",
86
86
  message:
87
- "Google provider not installed. Add @veryfront/ext-google to use google/* embedding models.",
87
+ "Google provider not installed. Add @veryfront/ext-llm-google to use google/* embedding models.",
88
88
  }),
89
89
  );
90
90
  });
@@ -1,8 +1,8 @@
1
1
  import { createError, toError } from "../../errors/veryfront-error.js";
2
2
  import type { EmbeddingRuntime } from "../../provider/types.js";
3
3
  import { tryResolve } from "../../extensions/contracts.js";
4
- import type { AIProviderRegistry } from "../../extensions/interfaces/index.js";
5
- import { AIProviderRegistryName } from "../../extensions/interfaces/index.js";
4
+ import type { LLMProviderRegistry } from "../../extensions/interfaces/index.js";
5
+ import { LLMProviderRegistryName } from "../../extensions/interfaces/index.js";
6
6
  import {
7
7
  createVeryfrontCloudFetch,
8
8
  getVeryfrontCloudGatewayBaseUrl,
@@ -26,7 +26,7 @@ export function createVeryfrontCloudEmbeddingModel(modelId: string): EmbeddingRu
26
26
  });
27
27
 
28
28
  case "google": {
29
- const registry = tryResolve<AIProviderRegistry>(AIProviderRegistryName);
29
+ const registry = tryResolve<LLMProviderRegistry>(LLMProviderRegistryName);
30
30
  const google = registry?.get("google");
31
31
  if (google?.createEmbedding) {
32
32
  return google.createEmbedding(upstreamModelId, {
@@ -40,7 +40,7 @@ export function createVeryfrontCloudEmbeddingModel(modelId: string): EmbeddingRu
40
40
  createError({
41
41
  type: "config",
42
42
  message:
43
- "Google provider not installed. Add @veryfront/ext-google to use google/* embedding models via veryfront-cloud.",
43
+ "Google provider not installed. Add @veryfront/ext-llm-google to use google/* embedding models via veryfront-cloud.",
44
44
  }),
45
45
  );
46
46
  }
@@ -1,69 +1,68 @@
1
1
  import type { ResolvedExtension } from "./types.js";
2
2
  import { register, tryResolve } from "./contracts.js";
3
- import type { AIProvider, AIProviderRegistry } from "./interfaces/index.js";
4
- import { AIProviderRegistryName } from "./interfaces/index.js";
5
- import { createAIProviderRegistry } from "./registries/ai-provider-registry.js";
6
- import { OpenAIProvider } from "../../extensions/ext-openai/src/index.js";
7
- import { AnthropicProvider } from "../../extensions/ext-anthropic/src/index.js";
8
- import { GoogleProvider } from "../../extensions/ext-google/src/index.js";
3
+ import type { LLMProvider, LLMProviderRegistry } from "./llm/index.js";
4
+ import { createLLMProviderRegistry, LLMProviderRegistryName } from "./llm/index.js";
5
+ import { OpenAIProvider } from "../../extensions/ext-llm-openai/src/index.js";
6
+ import { AnthropicProvider } from "../../extensions/ext-llm-anthropic/src/index.js";
7
+ import { GoogleProvider } from "../../extensions/ext-llm-google/src/index.js";
9
8
  import extEsbuild from "../../extensions/ext-esbuild/src/index.js";
10
9
  import extBabel from "../../extensions/ext-babel/src/index.js";
11
10
  import extMdx from "../../extensions/ext-mdx/src/index.js";
12
11
  import extTailwind from "../../extensions/ext-tailwind/src/index.js";
13
12
  import extNodeCompat from "../../extensions/ext-node-compat/src/index.js";
14
13
 
15
- type BuiltinAIProviderDefinition = {
14
+ type BuiltinLLMProviderDefinition = {
16
15
  extensionName: string;
17
16
  origin: string;
18
- provider: () => AIProvider;
17
+ provider: () => LLMProvider;
19
18
  };
20
19
 
21
- const BUILTIN_AI_PROVIDERS: BuiltinAIProviderDefinition[] = [
20
+ const BUILTIN_LLM_PROVIDERS: BuiltinLLMProviderDefinition[] = [
22
21
  {
23
- extensionName: "ext-openai",
24
- origin: "veryfront/ext-openai",
22
+ extensionName: "ext-llm-openai",
23
+ origin: "veryfront/ext-llm-openai",
25
24
  provider: () => new OpenAIProvider(),
26
25
  },
27
26
  {
28
- extensionName: "ext-anthropic",
29
- origin: "veryfront/ext-anthropic",
27
+ extensionName: "ext-llm-anthropic",
28
+ origin: "veryfront/ext-llm-anthropic",
30
29
  provider: () => new AnthropicProvider(),
31
30
  },
32
31
  {
33
- extensionName: "ext-google",
34
- origin: "veryfront/ext-google",
32
+ extensionName: "ext-llm-google",
33
+ origin: "veryfront/ext-llm-google",
35
34
  provider: () => new GoogleProvider(),
36
35
  },
37
36
  ];
38
37
 
39
- function getOrCreateAIProviderRegistry(): AIProviderRegistry {
40
- const existing = tryResolve<AIProviderRegistry>(AIProviderRegistryName);
38
+ function getOrCreateLLMProviderRegistry(): LLMProviderRegistry {
39
+ const existing = tryResolve<LLMProviderRegistry>(LLMProviderRegistryName);
41
40
  if (existing) return existing;
42
41
 
43
- const registry = createAIProviderRegistry();
44
- register(AIProviderRegistryName, registry);
42
+ const registry = createLLMProviderRegistry();
43
+ register(LLMProviderRegistryName, registry);
45
44
  return registry;
46
45
  }
47
46
 
48
- function registerBuiltinAIProvider(
49
- registry: AIProviderRegistry,
50
- provider: AIProvider,
47
+ function registerBuiltinLLMProvider(
48
+ registry: LLMProviderRegistry,
49
+ provider: LLMProvider,
51
50
  ): boolean {
52
51
  if (registry.has(provider.id)) return false;
53
52
  registry.register(provider);
54
53
  return true;
55
54
  }
56
55
 
57
- export function ensureBuiltinAIProviders(): AIProviderRegistry {
58
- const registry = getOrCreateAIProviderRegistry();
59
- for (const definition of BUILTIN_AI_PROVIDERS) {
60
- registerBuiltinAIProvider(registry, definition.provider());
56
+ export function ensureBuiltinLLMProviders(): LLMProviderRegistry {
57
+ const registry = getOrCreateLLMProviderRegistry();
58
+ for (const definition of BUILTIN_LLM_PROVIDERS) {
59
+ registerBuiltinLLMProvider(registry, definition.provider());
61
60
  }
62
61
  return registry;
63
62
  }
64
63
 
65
- function createBuiltinAIProviderExtension(
66
- definition: BuiltinAIProviderDefinition,
64
+ function createBuiltinLLMProviderExtension(
65
+ definition: BuiltinLLMProviderDefinition,
67
66
  ): ResolvedExtension {
68
67
  const provider = definition.provider();
69
68
  let didRegister = false;
@@ -74,17 +73,17 @@ function createBuiltinAIProviderExtension(
74
73
  extension: {
75
74
  name: definition.extensionName,
76
75
  version: "0.1.0",
77
- capabilities: [{ type: "contract", name: `AIProvider:${provider.id}` }],
76
+ capabilities: [{ type: "contract", name: `LLMProvider:${provider.id}` }],
78
77
  setup(ctx) {
79
- const registry = ctx.require<AIProviderRegistry>(AIProviderRegistryName);
80
- didRegister = registerBuiltinAIProvider(registry, provider);
78
+ const registry = ctx.require<LLMProviderRegistry>(LLMProviderRegistryName);
79
+ didRegister = registerBuiltinLLMProvider(registry, provider);
81
80
  if (didRegister) {
82
81
  ctx.logger.info(`[${definition.extensionName}] ${provider.id} provider registered`);
83
82
  }
84
83
  },
85
84
  teardown() {
86
85
  if (didRegister) {
87
- const registry = tryResolve<AIProviderRegistry>(AIProviderRegistryName);
86
+ const registry = tryResolve<LLMProviderRegistry>(LLMProviderRegistryName);
88
87
  registry?.unregister(provider.id);
89
88
  didRegister = false;
90
89
  }
@@ -120,6 +119,6 @@ export function createBuiltinExtensions(): ResolvedExtension[] {
120
119
  origin: "veryfront/ext-node-compat",
121
120
  extension: extNodeCompat(),
122
121
  },
123
- ...BUILTIN_AI_PROVIDERS.map(createBuiltinAIProviderExtension),
122
+ ...BUILTIN_LLM_PROVIDERS.map(createBuiltinLLMProviderExtension),
124
123
  ];
125
124
  }
@@ -1,7 +1,11 @@
1
1
  /**
2
- * Barrel export for all extension contract interfaces.
2
+ * Back-compat barrel for extension contract interfaces.
3
3
  *
4
- * Every export is a pure TypeScript type -- no runtime code is emitted.
4
+ * Re-exports the category-folder modules under `../{ai,auth,cache,...}/`.
5
+ * Most entries are interface re-exports (erased at runtime); the
6
+ * `LLMProviderRegistryName` re-export is a runtime value (a const).
7
+ * This file will be deleted once all consumers migrate to the
8
+ * `veryfront/extensions/<category>` paths.
5
9
  *
6
10
  * @module extensions/interfaces
7
11
  */
@@ -76,12 +80,12 @@ export type {
76
80
  // Tracing exporter
77
81
  export type { SpanData, TracerProvider, TracingExporter } from "./tracing-exporter.js";
78
82
 
79
- // AI provider (registry + per-provider contract)
80
- export type { AIProvider, AIProviderConfig, AIProviderRegistry } from "./ai-provider.js";
81
- export { AIProviderRegistryName } from "./ai-provider.js";
83
+ // LLM provider (registry + per-provider contract) — moved to ../llm/
84
+ export type { LLMProvider, LLMProviderConfig, LLMProviderRegistry } from "../llm/index.js";
85
+ export { LLMProviderRegistryName } from "../llm/index.js";
82
86
 
83
- // Embedding provider
84
- export type { EmbeddingOptions, EmbeddingProvider, EmbeddingResult } from "./embedding-provider.js";
87
+ // Embedding provider — moved to ../llm/
88
+ export type { EmbeddingOptions, EmbeddingProvider, EmbeddingResult } from "../llm/index.js";
85
89
 
86
90
  // Code parser
87
91
  export type {
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Default implementation: `@veryfront/ext-embeddings`
5
5
  *
6
- * @module extensions/interfaces/embedding-provider
6
+ * @module extensions/llm/embedding-provider
7
7
  */
8
8
 
9
9
  /** Options passed to {@link EmbeddingProvider.embed}. */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * LLM category barrel — provider, embedding, and registry contracts.
3
+ *
4
+ * Interfaces re-exported with `export type { ... }` because Deno `--no-check`
5
+ * transpiles each file in isolation and would otherwise emit a runtime value
6
+ * re-export that fails ESM resolution. Reserve plain `export { ... }` for
7
+ * runtime values.
8
+ *
9
+ * @module extensions/llm
10
+ */
11
+ import "../../../_dnt.polyfills.js";
12
+
13
+
14
+ export { LLMProviderRegistryName } from "./llm-provider.js";
15
+ export type { LLMProvider, LLMProviderConfig, LLMProviderRegistry } from "./llm-provider.js";
16
+ export type { EmbeddingOptions, EmbeddingProvider, EmbeddingResult } from "./embedding-provider.js";
17
+ export { createLLMProviderRegistry } from "./llm-provider-registry.js";
@@ -1,18 +1,18 @@
1
1
  /**
2
- * Default Map-backed implementation of the AIProviderRegistry contract.
2
+ * Default Map-backed implementation of the LLMProviderRegistry contract.
3
3
  *
4
4
  * Preserves insertion order via Map (used by `list()`). Duplicate ids are
5
5
  * first-write-wins so higher-priority extensions keep their provider binding.
6
6
  *
7
- * @module extensions/registries/ai-provider-registry
7
+ * @module extensions/llm/llm-provider-registry
8
8
  */
9
9
 
10
- import type { AIProvider, AIProviderRegistry } from "../interfaces/ai-provider.js";
10
+ import type { LLMProvider, LLMProviderRegistry } from "./llm-provider.js";
11
11
 
12
- class AIProviderRegistryImpl implements AIProviderRegistry {
13
- private readonly providers = new Map<string, AIProvider>();
12
+ class LLMProviderRegistryImpl implements LLMProviderRegistry {
13
+ private readonly providers = new Map<string, LLMProvider>();
14
14
 
15
- register(provider: AIProvider): void {
15
+ register(provider: LLMProvider): void {
16
16
  if (this.providers.has(provider.id)) {
17
17
  return;
18
18
  }
@@ -23,16 +23,16 @@ class AIProviderRegistryImpl implements AIProviderRegistry {
23
23
  this.providers.delete(id);
24
24
  }
25
25
 
26
- get(id: string): AIProvider | undefined {
26
+ get(id: string): LLMProvider | undefined {
27
27
  return this.providers.get(id);
28
28
  }
29
29
 
30
- require(id: string): AIProvider {
30
+ require(id: string): LLMProvider {
31
31
  const p = this.providers.get(id);
32
32
  if (p) return p;
33
33
  const known = [...this.providers.keys()].join(", ") || "(none)";
34
34
  throw new Error(
35
- `No AIProvider registered for "${id}". Known providers: ${known}.`,
35
+ `No LLMProvider registered for "${id}". Known providers: ${known}.`,
36
36
  );
37
37
  }
38
38
 
@@ -40,11 +40,11 @@ class AIProviderRegistryImpl implements AIProviderRegistry {
40
40
  return this.providers.has(id);
41
41
  }
42
42
 
43
- list(): AIProvider[] {
43
+ list(): LLMProvider[] {
44
44
  return [...this.providers.values()];
45
45
  }
46
46
  }
47
47
 
48
- export function createAIProviderRegistry(): AIProviderRegistry {
49
- return new AIProviderRegistryImpl();
48
+ export function createLLMProviderRegistry(): LLMProviderRegistry {
49
+ return new LLMProviderRegistryImpl();
50
50
  }
@@ -1,19 +1,19 @@
1
1
  /**
2
2
  * Contract interface for LLM provider extensions.
3
3
  *
4
- * A single `AIProviderRegistry` impl lives in the contract registry under
5
- * {@link AIProviderRegistryName}. Each provider extension resolves the
4
+ * A single `LLMProviderRegistry` impl lives in the contract registry under
5
+ * {@link LLMProviderRegistryName}. Each provider extension resolves the
6
6
  * registry in its `setup()` and calls `registry.register(provider)`.
7
7
  * Core consumers (model-registry, veryfront-cloud) resolve the registry
8
8
  * and dispatch on provider id parsed from `"provider/model"` strings.
9
9
  *
10
- * @module extensions/interfaces/ai-provider
10
+ * @module extensions/llm/llm-provider
11
11
  */
12
12
 
13
13
  import type { EmbeddingRuntime, ModelRuntime } from "../../provider/types.js";
14
14
 
15
15
  /** Config passed to any provider's create* method. */
16
- export interface AIProviderConfig {
16
+ export interface LLMProviderConfig {
17
17
  /** API credential — maps to OpenAI `apiKey`, Anthropic `authToken`, Google `apiKey` internally. */
18
18
  credential: string;
19
19
  /** Override the provider's base URL (e.g. Azure OpenAI, self-hosted gateway). */
@@ -28,27 +28,27 @@ export interface AIProviderConfig {
28
28
 
29
29
  /**
30
30
  * An LLM provider implementation. Extensions register one of these with the
31
- * {@link AIProviderRegistry} during setup(). `createModel` is required;
31
+ * {@link LLMProviderRegistry} during setup(). `createModel` is required;
32
32
  * `createEmbedding` and `createResponses` are optional and absent on
33
33
  * providers that don't support them.
34
34
  */
35
- export interface AIProvider {
35
+ export interface LLMProvider {
36
36
  /** Stable id used in model strings: "openai" / "anthropic" / "google". */
37
37
  readonly id: string;
38
- createModel(modelId: string, config: AIProviderConfig): ModelRuntime;
39
- createEmbedding?(modelId: string, config: AIProviderConfig): EmbeddingRuntime;
40
- createResponses?(modelId: string, config: AIProviderConfig): ModelRuntime;
38
+ createModel(modelId: string, config: LLMProviderConfig): ModelRuntime;
39
+ createEmbedding?(modelId: string, config: LLMProviderConfig): EmbeddingRuntime;
40
+ createResponses?(modelId: string, config: LLMProviderConfig): ModelRuntime;
41
41
  }
42
42
 
43
43
  /** Registry contract. Single impl created at bootstrap. */
44
- export interface AIProviderRegistry {
45
- register(provider: AIProvider): void;
44
+ export interface LLMProviderRegistry {
45
+ register(provider: LLMProvider): void;
46
46
  unregister(id: string): void;
47
- get(id: string): AIProvider | undefined;
48
- require(id: string): AIProvider;
49
- list(): AIProvider[];
47
+ get(id: string): LLMProvider | undefined;
48
+ require(id: string): LLMProvider;
49
+ list(): LLMProvider[];
50
50
  has(id: string): boolean;
51
51
  }
52
52
 
53
53
  /** Contract name used for `resolve()` / `provide()`. */
54
- export const AIProviderRegistryName = "AIProviderRegistry" as const;
54
+ export const LLMProviderRegistryName = "LLMProviderRegistry" as const;
@@ -22,7 +22,7 @@ export class ExtensionLoader {
22
22
  /**
23
23
  * Register contracts that will be re-applied after each `setupAll()`
24
24
  * teardown pass. Used by `orchestrateExtensions()` to seed infrastructure
25
- * (e.g. `AIProviderRegistry`) before per-extension `setup()` runs.
25
+ * (e.g. `LLMProviderRegistry`) before per-extension `setup()` runs.
26
26
  */
27
27
  primeContracts(contracts: Record<string, unknown>): void {
28
28
  this.primed = { ...this.primed, ...contracts };
@@ -34,7 +34,7 @@ export interface OrchestrateOptions {
34
34
  primeContracts?: Record<string, unknown>;
35
35
  /** Built-in extensions shipped with the framework. Lowest priority — any
36
36
  * project, package, or config extension with the same name overrides them.
37
- * Users can disable them via `{ name: "ext-anthropic", enabled: false }`. */
37
+ * Users can disable them via `{ name: "ext-llm-anthropic", enabled: false }`. */
38
38
  builtinExtensions?: ResolvedExtension[];
39
39
  /** @internal Override discovery functions in tests. */
40
40
  discovery?: {
@@ -16,10 +16,10 @@ const recommendations = new Map<string, string>([
16
16
  ["DatabaseClient", "@veryfront/ext-postgres"],
17
17
  ["AuthProvider", "@veryfront/ext-jwt"],
18
18
  ["TracingExporter", "@veryfront/ext-opentelemetry"],
19
- ["AIProviderRegistry", "@veryfront/ext-openai"],
20
- ["AIProvider:openai", "@veryfront/ext-openai"],
21
- ["AIProvider:anthropic", "@veryfront/ext-anthropic"],
22
- ["AIProvider:google", "@veryfront/ext-google"],
19
+ ["LLMProviderRegistry", "@veryfront/ext-llm-openai"],
20
+ ["LLMProvider:openai", "@veryfront/ext-llm-openai"],
21
+ ["LLMProvider:anthropic", "@veryfront/ext-llm-anthropic"],
22
+ ["LLMProvider:google", "@veryfront/ext-llm-google"],
23
23
  ["EmbeddingProvider", "@veryfront/ext-embeddings"],
24
24
  ["CodeParser", "@veryfront/ext-babel"],
25
25
  ["SchemaValidator", "@veryfront/ext-zod"],
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Cross-platform environment helpers for local AI provider.
2
+ * Cross-platform environment helpers for local LLM provider.
3
3
  *
4
4
  * Uses the platform compat layer so all local-AI checks go through
5
5
  * a single function — no duplicated env access patterns.