@futdevpro/fsm-dynamo 1.15.15 → 1.15.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.
Files changed (139) hide show
  1. package/.dynamo/pipeline.cicd.config.json +128 -0
  2. package/build/_collections/utils/require-env.util.d.ts +3 -3
  3. package/build/_collections/utils/require-env.util.js +2 -2
  4. package/build/_models/interfaces/environment/global-settings.interface.d.ts +1 -1
  5. package/build/_modules/ai/_collections/ai-model-registry.util.d.ts +24 -0
  6. package/build/_modules/ai/_collections/ai-model-registry.util.d.ts.map +1 -0
  7. package/build/_modules/ai/_collections/ai-model-registry.util.js +31 -0
  8. package/build/_modules/ai/_collections/ai-model-registry.util.js.map +1 -0
  9. package/build/_modules/ai/_enums/ai-message-role.enum.d.ts +3 -1
  10. package/build/_modules/ai/_enums/ai-message-role.enum.d.ts.map +1 -1
  11. package/build/_modules/ai/_enums/ai-message-role.enum.js +2 -0
  12. package/build/_modules/ai/_enums/ai-message-role.enum.js.map +1 -1
  13. package/build/_modules/ai/_enums/ai-model-type.enum.d.ts +3 -1
  14. package/build/_modules/ai/_enums/ai-model-type.enum.d.ts.map +1 -1
  15. package/build/_modules/ai/_enums/ai-model-type.enum.js +2 -0
  16. package/build/_modules/ai/_enums/ai-model-type.enum.js.map +1 -1
  17. package/build/_modules/ai/_models/ai-call-settings.interface.d.ts +21 -0
  18. package/build/_modules/ai/_models/ai-call-settings.interface.d.ts.map +1 -1
  19. package/build/_modules/ai/_models/ai-call-settings.interface.js +21 -0
  20. package/build/_modules/ai/_models/ai-call-settings.interface.js.map +1 -1
  21. package/build/_modules/ai/_models/ai-llm-response.interface.d.ts +5 -0
  22. package/build/_modules/ai/_models/ai-llm-response.interface.d.ts.map +1 -1
  23. package/build/_modules/ai/_models/ai-message.interface.d.ts +5 -0
  24. package/build/_modules/ai/_models/ai-message.interface.d.ts.map +1 -1
  25. package/build/_modules/ai/_models/ai-model-capabilities.interface.d.ts +28 -0
  26. package/build/_modules/ai/_models/ai-model-capabilities.interface.d.ts.map +1 -0
  27. package/build/_modules/ai/_models/ai-model-capabilities.interface.js +3 -0
  28. package/build/_modules/ai/_models/ai-model-capabilities.interface.js.map +1 -0
  29. package/build/_modules/ai/_models/ai-model-info.interface.d.ts +62 -0
  30. package/build/_modules/ai/_models/ai-model-info.interface.d.ts.map +1 -0
  31. package/build/_modules/ai/_models/ai-model-info.interface.js +3 -0
  32. package/build/_modules/ai/_models/ai-model-info.interface.js.map +1 -0
  33. package/build/_modules/ai/_models/ai-model-settings-schema.interface.d.ts +52 -0
  34. package/build/_modules/ai/_models/ai-model-settings-schema.interface.d.ts.map +1 -0
  35. package/build/_modules/ai/_models/ai-model-settings-schema.interface.js +3 -0
  36. package/build/_modules/ai/_models/ai-model-settings-schema.interface.js.map +1 -0
  37. package/build/_modules/ai/_models/ai-tool-call.interface.d.ts +19 -0
  38. package/build/_modules/ai/_models/ai-tool-call.interface.d.ts.map +1 -0
  39. package/build/_modules/ai/_models/ai-tool-call.interface.js +3 -0
  40. package/build/_modules/ai/_models/ai-tool-call.interface.js.map +1 -0
  41. package/build/_modules/ai/_models/ai-tool-handler.type.d.ts +11 -0
  42. package/build/_modules/ai/_models/ai-tool-handler.type.d.ts.map +1 -0
  43. package/build/_modules/ai/_models/ai-tool-handler.type.js +3 -0
  44. package/build/_modules/ai/_models/ai-tool-handler.type.js.map +1 -0
  45. package/build/_modules/ai/_models/ai-tool-result.interface.d.ts +17 -0
  46. package/build/_modules/ai/_models/ai-tool-result.interface.d.ts.map +1 -0
  47. package/build/_modules/ai/_models/ai-tool-result.interface.js +3 -0
  48. package/build/_modules/ai/_models/ai-tool-result.interface.js.map +1 -0
  49. package/build/_modules/ai/_models/ai-tool.interface.d.ts +17 -0
  50. package/build/_modules/ai/_models/ai-tool.interface.d.ts.map +1 -0
  51. package/build/_modules/ai/_models/ai-tool.interface.js +3 -0
  52. package/build/_modules/ai/_models/ai-tool.interface.js.map +1 -0
  53. package/build/_modules/ai/_modules/anthropic/_collections/aai-models.const.d.ts +14 -0
  54. package/build/_modules/ai/_modules/anthropic/_collections/aai-models.const.d.ts.map +1 -0
  55. package/build/_modules/ai/_modules/anthropic/_collections/aai-models.const.js +80 -0
  56. package/build/_modules/ai/_modules/anthropic/_collections/aai-models.const.js.map +1 -0
  57. package/build/_modules/ai/_modules/anthropic/_enums/aai-model.enum.d.ts +4 -0
  58. package/build/_modules/ai/_modules/anthropic/_enums/aai-model.enum.d.ts.map +1 -1
  59. package/build/_modules/ai/_modules/anthropic/_enums/aai-model.enum.js +7 -0
  60. package/build/_modules/ai/_modules/anthropic/_enums/aai-model.enum.js.map +1 -1
  61. package/build/_modules/ai/_modules/anthropic/index.d.ts +1 -0
  62. package/build/_modules/ai/_modules/anthropic/index.d.ts.map +1 -1
  63. package/build/_modules/ai/_modules/anthropic/index.js +2 -0
  64. package/build/_modules/ai/_modules/anthropic/index.js.map +1 -1
  65. package/build/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.d.ts +12 -0
  66. package/build/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.d.ts.map +1 -0
  67. package/build/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.js +35 -0
  68. package/build/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.js.map +1 -0
  69. package/build/_modules/ai/_modules/fdp-ai/index.d.ts +1 -0
  70. package/build/_modules/ai/_modules/fdp-ai/index.d.ts.map +1 -1
  71. package/build/_modules/ai/_modules/fdp-ai/index.js +2 -0
  72. package/build/_modules/ai/_modules/fdp-ai/index.js.map +1 -1
  73. package/build/_modules/ai/_modules/google-ai/_collections/gai-models.const.d.ts +13 -0
  74. package/build/_modules/ai/_modules/google-ai/_collections/gai-models.const.d.ts.map +1 -0
  75. package/build/_modules/ai/_modules/google-ai/_collections/gai-models.const.js +97 -0
  76. package/build/_modules/ai/_modules/google-ai/_collections/gai-models.const.js.map +1 -0
  77. package/build/_modules/ai/_modules/google-ai/_enums/gai-model.enum.d.ts +4 -0
  78. package/build/_modules/ai/_modules/google-ai/_enums/gai-model.enum.d.ts.map +1 -1
  79. package/build/_modules/ai/_modules/google-ai/_enums/gai-model.enum.js +8 -1
  80. package/build/_modules/ai/_modules/google-ai/_enums/gai-model.enum.js.map +1 -1
  81. package/build/_modules/ai/_modules/google-ai/index.d.ts +1 -0
  82. package/build/_modules/ai/_modules/google-ai/index.d.ts.map +1 -1
  83. package/build/_modules/ai/_modules/google-ai/index.js +2 -0
  84. package/build/_modules/ai/_modules/google-ai/index.js.map +1 -1
  85. package/build/_modules/ai/_modules/local-ai/_collections/lai-models.const.d.ts +13 -0
  86. package/build/_modules/ai/_modules/local-ai/_collections/lai-models.const.d.ts.map +1 -0
  87. package/build/_modules/ai/_modules/local-ai/_collections/lai-models.const.js +53 -0
  88. package/build/_modules/ai/_modules/local-ai/_collections/lai-models.const.js.map +1 -0
  89. package/build/_modules/ai/_modules/local-ai/index.d.ts +1 -0
  90. package/build/_modules/ai/_modules/local-ai/index.d.ts.map +1 -1
  91. package/build/_modules/ai/_modules/local-ai/index.js +2 -0
  92. package/build/_modules/ai/_modules/local-ai/index.js.map +1 -1
  93. package/build/_modules/ai/_modules/open-ai/_collections/oai-models.const.d.ts +13 -0
  94. package/build/_modules/ai/_modules/open-ai/_collections/oai-models.const.d.ts.map +1 -0
  95. package/build/_modules/ai/_modules/open-ai/_collections/oai-models.const.js +240 -0
  96. package/build/_modules/ai/_modules/open-ai/_collections/oai-models.const.js.map +1 -0
  97. package/build/_modules/ai/_modules/open-ai/_enums/oai-model.enum.d.ts +8 -0
  98. package/build/_modules/ai/_modules/open-ai/_enums/oai-model.enum.d.ts.map +1 -1
  99. package/build/_modules/ai/_modules/open-ai/_enums/oai-model.enum.js +10 -0
  100. package/build/_modules/ai/_modules/open-ai/_enums/oai-model.enum.js.map +1 -1
  101. package/build/_modules/ai/_modules/open-ai/index.d.ts +1 -0
  102. package/build/_modules/ai/_modules/open-ai/index.d.ts.map +1 -1
  103. package/build/_modules/ai/_modules/open-ai/index.js +1 -0
  104. package/build/_modules/ai/_modules/open-ai/index.js.map +1 -1
  105. package/build/_modules/ai/index.d.ts +8 -0
  106. package/build/_modules/ai/index.d.ts.map +1 -1
  107. package/build/_modules/ai/index.js +8 -0
  108. package/build/_modules/ai/index.js.map +1 -1
  109. package/package.json +1 -1
  110. package/src/_collections/utils/require-env.util.ts +3 -3
  111. package/src/_models/interfaces/environment/global-settings.interface.ts +1 -1
  112. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -0
  113. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -0
  114. package/src/_modules/ai/_enums/ai-message-role.enum.ts +2 -0
  115. package/src/_modules/ai/_enums/ai-model-type.enum.ts +2 -0
  116. package/src/_modules/ai/_models/ai-call-settings.interface.ts +21 -0
  117. package/src/_modules/ai/_models/ai-llm-response.interface.ts +5 -0
  118. package/src/_modules/ai/_models/ai-message.interface.ts +5 -0
  119. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +27 -0
  120. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -0
  121. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -0
  122. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -0
  123. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -0
  124. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -0
  125. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -0
  126. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +78 -0
  127. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +8 -0
  128. package/src/_modules/ai/_modules/anthropic/index.ts +3 -0
  129. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +33 -0
  130. package/src/_modules/ai/_modules/fdp-ai/index.ts +3 -0
  131. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +95 -0
  132. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +9 -1
  133. package/src/_modules/ai/_modules/google-ai/index.ts +3 -0
  134. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +51 -0
  135. package/src/_modules/ai/_modules/local-ai/index.ts +3 -0
  136. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +241 -0
  137. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +11 -0
  138. package/src/_modules/ai/_modules/open-ai/index.ts +1 -0
  139. package/src/_modules/ai/index.ts +8 -0
@@ -0,0 +1,63 @@
1
+ import { DyFM_AI_Provider } from '../_enums/ai-provider.enum';
2
+ import { DyFM_AI_ModelType } from '../_enums/ai-model-type.enum';
3
+ import { DyFM_AI_ModelCapabilities } from './ai-model-capabilities.interface';
4
+ import { DyFM_AI_ModelSettingsSchema } from './ai-model-settings-schema.interface';
5
+
6
+ /**
7
+ * Lifecycle status of a model in the provider's catalogue.
8
+ *
9
+ * `ga` — generally available, recommended for new work.
10
+ * `preview` — available but pre-GA (API/behaviour may change).
11
+ * `deprecated` — still callable but on a sunset path; prefer {@link DyFM_AI_ModelInfo.successorId}.
12
+ */
13
+ export type DyFM_AI_ModelStatus = 'ga' | 'preview' | 'deprecated';
14
+
15
+ /**
16
+ * Single-model descriptor for the provider model registry.
17
+ *
18
+ * The provider registries (`DyFM_OAI_Models`, `DyFM_AAI_Models`, …) are arrays
19
+ * of these — an SDK-free, data-only source of truth for which models exist and
20
+ * what each can do. The bare model enums (`DyFM_OAI_Model`, …) remain the typed
21
+ * id keys; a registry entry's `id` references one of those values.
22
+ *
23
+ * Note: model line-ups churn fast (see the 2026-06 research) — keep the registry
24
+ * current and rely on `status`/`successorId` rather than silently breaking on a
25
+ * retired id.
26
+ */
27
+ export interface DyFM_AI_ModelInfo {
28
+ /** Exact API model string (e.g. 'gpt-5.5', 'claude-opus-4-8', 'gemini-3.5-flash'). */
29
+ id: string;
30
+ /** The provider that serves this model. */
31
+ provider: DyFM_AI_Provider;
32
+ /** The kind of model (chat / embedding / image / audio). */
33
+ modelType: DyFM_AI_ModelType;
34
+ /** What this specific model can DO (feature gates). */
35
+ capabilities: DyFM_AI_ModelCapabilities;
36
+ /**
37
+ * RESERVED (FR-048) — which tuning PARAMETERS this model accepts/rejects.
38
+ *
39
+ * Sibling of {@link capabilities}. NOT populated by FR-047 and NOT yet
40
+ * consumed by any reconciler — reserved space for the future per-model
41
+ * agnostic settings system. Each model accepts a different settings surface
42
+ * (e.g. Opus 4.7+ rejects temperature/topP/topK; reasoning models add
43
+ * reasoningEffort), and that knowledge must be curated continuously like the
44
+ * model registry itself.
45
+ *
46
+ * See: `__agent/feature-requests/FR-048-per-model-agnostic-settings.md`
47
+ */
48
+ settingsSchema?: DyFM_AI_ModelSettingsSchema;
49
+ /** Input context window in tokens, if applicable. */
50
+ contextWindow?: number;
51
+ /** Maximum output tokens, if applicable. */
52
+ maxOutputTokens?: number;
53
+ /** Lifecycle status; defaults to `ga` when omitted. */
54
+ status?: DyFM_AI_ModelStatus;
55
+ /** When `deprecated`/sunsetting, the recommended replacement model id. */
56
+ successorId?: string;
57
+ /** When `deprecated`, the earliest known shutdown date (ISO yyyy-mm-dd). */
58
+ sunsetDate?: string;
59
+ /** Human-readable name for UI (e.g. 'GPT-5.5', 'Claude Opus 4.8'). */
60
+ displayName?: string;
61
+ /** Provider-specific tier label (e.g. 'flagship', 'mini', 'Opus', 'Sonnet', 'Haiku'). */
62
+ tier?: string;
63
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * RESERVED — per-model settings schema (FR-048; NOT implemented by FR-047).
3
+ *
4
+ * Sibling of {@link DyFM_AI_ModelCapabilities}: capabilities describe what a
5
+ * model can DO; this describes which tuning PARAMETERS it accepts, their
6
+ * bounds, and which it REJECTS. A flat {@link DyFM_AI_CallSettings} bag cannot
7
+ * express this, yet sending an unsupported param can hard-fail a call (e.g.
8
+ * Anthropic Opus 4.7+ rejects `temperature`/`top_p`/`top_k` with HTTP 400).
9
+ *
10
+ * This type reserves the architectural space and documents intent. The
11
+ * registry consts do NOT populate `settingsSchema` yet, and no reconciler
12
+ * consumes it yet — both are FR-048 work. The exact shape may evolve when
13
+ * FR-048 is built; treat this as a forward placeholder, not a frozen contract.
14
+ *
15
+ * See: `__agent/feature-requests/FR-048-per-model-agnostic-settings.md`
16
+ * `documentations/guidelines/development/ai-per-model-settings.md`
17
+ */
18
+ export interface DyFM_AI_ModelSettingsSchema {
19
+ /** Agnostic setting keys this model ACCEPTS (e.g. 'temperature','topP','maxTokens','reasoningEffort'). */
20
+ supported?: string[];
21
+ /**
22
+ * Agnostic setting keys this model REJECTS — sending them errors.
23
+ * Example: Opus 4.7+ → ['temperature','topP','topK'] (HTTP 400 on non-default).
24
+ * The future reconciler drops these (debug-log, never silently).
25
+ */
26
+ unsupported?: string[];
27
+ /** Per-key value constraints (range / enum / default). */
28
+ constraints?: Record<string, DyFM_AI_SettingConstraint>;
29
+ /**
30
+ * Provider/model-specific knobs NOT present on the agnostic CallSettings
31
+ * (e.g. OpenAI 'reasoningEffort', Gemini 'thinkingConfig'). The provider
32
+ * translator maps these to the native param.
33
+ */
34
+ extraParams?: string[];
35
+ }
36
+
37
+ /**
38
+ * RESERVED (FR-048) — value constraint for a single tuning parameter.
39
+ * Forward placeholder; shape may evolve when FR-048 is built.
40
+ */
41
+ export interface DyFM_AI_SettingConstraint {
42
+ /** Minimum numeric value (inclusive), if applicable. */
43
+ min?: number;
44
+ /** Maximum numeric value (inclusive), if applicable. */
45
+ max?: number;
46
+ /** Default value the provider applies when omitted. */
47
+ default?: unknown;
48
+ /** Allowed discrete values (enum-like params, e.g. reasoningEffort). */
49
+ allowed?: unknown[];
50
+ /** Free-text note (Hunglish ok) — e.g. provider quirk, version gate. */
51
+ note?: string;
52
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A normalized tool invocation requested by the model.
3
+ *
4
+ * Each provider's native shape is normalized into this at the translator boundary:
5
+ * - OpenAI: message.tool_calls[] → { id, name, arguments: JSON.parse(function.arguments) }
6
+ * - Anthropic: content[] { type:'tool_use', id, name, input } → { id, name, arguments: input }
7
+ * - Gemini: parts[].functionCall { id, name, args } → { id, name, arguments: args }
8
+ *
9
+ * `arguments` is ALWAYS a parsed object (OpenAI's JSON string is parsed at the boundary).
10
+ */
11
+ export interface DyFM_AI_ToolCall {
12
+ /** Provider call id — echoed back when returning the result. */
13
+ id: string;
14
+ /** The invoked tool's name. */
15
+ name: string;
16
+ /** Parsed arguments object. */
17
+ arguments: Record<string, unknown>;
18
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Handler for a single function-calling tool — receives the parsed arguments
3
+ * (JSON already parsed) and returns the tool result as a string (which is fed
4
+ * back to the model). Generalized from the proven legacy `FDPNTS_GPT_ToolHandler`.
5
+ */
6
+ export type DyFM_AI_ToolHandler = (args: Record<string, unknown>) => Promise<string> | string;
7
+
8
+ /**
9
+ * Tool-name → handler registration for the `requestWithTools` agent-loop.
10
+ */
11
+ export type DyFM_AI_ToolHandlers = Record<string, DyFM_AI_ToolHandler>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The result of executing a tool, fed back to the model.
3
+ *
4
+ * Translated per provider:
5
+ * - OpenAI: { role:'tool', tool_call_id: toolCallId, content }
6
+ * - Anthropic: content block { type:'tool_result', tool_use_id: toolCallId, content, is_error: isError }
7
+ * - Gemini: part { functionResponse: { id: toolCallId, name, response: { result: content } } }
8
+ */
9
+ export interface DyFM_AI_ToolResult {
10
+ /** Must echo the originating {@link DyFM_AI_ToolCall.id}. */
11
+ toolCallId: string;
12
+ /** The tool's output (or an error message — see {@link isError}). */
13
+ content: string;
14
+ /** True when the tool failed; the model is told so it can correct. */
15
+ isError?: boolean;
16
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Provider-neutral tool (function) definition for native function calling.
3
+ *
4
+ * One agnostic shape, translated per provider by the execution layer:
5
+ * - OpenAI-wire: → { type:'function', function:{ name, description, parameters } }
6
+ * - Anthropic: → { name, description, input_schema: parameters }
7
+ * - Gemini: → tools:[{ functionDeclarations:[{ name, description, parameters }] }]
8
+ */
9
+ export interface DyFM_AI_Tool {
10
+ /** Function name. No spaces / special chars (Gemini constraint). */
11
+ name: string;
12
+ /** What the tool does — the model uses this to decide when to call it. */
13
+ description: string;
14
+ /** JSON Schema (object schema) describing the arguments. Translated to each provider's param shape. */
15
+ parameters: object;
16
+ }
@@ -0,0 +1,78 @@
1
+ import { DyFM_AI_Provider } from '../../../_enums/ai-provider.enum';
2
+ import { DyFM_AI_ModelType } from '../../../_enums/ai-model-type.enum';
3
+ import { DyFM_AI_ModelInfo } from '../../../_models/ai-model-info.interface';
4
+ import { DyFM_AAI_Model } from '../_enums/aai-model.enum';
5
+
6
+ /**
7
+ * Anthropic Claude model registry — verified 2026-06-01 against platform.claude.com docs.
8
+ *
9
+ * All Claude models are chat (Messages API) models — Anthropic has NO embeddings API.
10
+ * Tool use is universal (content-block `tool_use` / `tool_result` wire format).
11
+ * Anthropic has no dedicated JSON-mode flag (structured output is done via tools),
12
+ * so `jsonMode` is false across the board.
13
+ *
14
+ * Param note (translator): Opus 4.7+ reject `temperature`/`top_p`/`top_k` with 400 —
15
+ * not modelled here, handled in the Anthropic call translator.
16
+ */
17
+ export const DyFM_AAI_Models: DyFM_AI_ModelInfo[] = [
18
+ {
19
+ id: DyFM_AAI_Model.claude_opus_4_8,
20
+ provider: DyFM_AI_Provider.Anthropic,
21
+ modelType: DyFM_AI_ModelType.Chat,
22
+ displayName: 'Claude Opus 4.8',
23
+ tier: 'Opus',
24
+ status: 'ga',
25
+ contextWindow: 1_000_000,
26
+ maxOutputTokens: 128_000,
27
+ capabilities: {
28
+ functionCalling: true,
29
+ vision: true,
30
+ streaming: true,
31
+ jsonMode: false,
32
+ audioInput: false,
33
+ audioOutput: false,
34
+ imageGeneration: false,
35
+ embeddings: false,
36
+ },
37
+ },
38
+ {
39
+ id: DyFM_AAI_Model.claude_sonnet_4_6,
40
+ provider: DyFM_AI_Provider.Anthropic,
41
+ modelType: DyFM_AI_ModelType.Chat,
42
+ displayName: 'Claude Sonnet 4.6',
43
+ tier: 'Sonnet',
44
+ status: 'ga',
45
+ contextWindow: 1_000_000,
46
+ maxOutputTokens: 64_000,
47
+ capabilities: {
48
+ functionCalling: true,
49
+ vision: true,
50
+ streaming: true,
51
+ jsonMode: false,
52
+ audioInput: false,
53
+ audioOutput: false,
54
+ imageGeneration: false,
55
+ embeddings: false,
56
+ },
57
+ },
58
+ {
59
+ id: DyFM_AAI_Model.claude_haiku_4_5,
60
+ provider: DyFM_AI_Provider.Anthropic,
61
+ modelType: DyFM_AI_ModelType.Chat,
62
+ displayName: 'Claude Haiku 4.5',
63
+ tier: 'Haiku',
64
+ status: 'ga',
65
+ contextWindow: 200_000,
66
+ maxOutputTokens: 64_000,
67
+ capabilities: {
68
+ functionCalling: true,
69
+ vision: true,
70
+ streaming: true,
71
+ jsonMode: false,
72
+ audioInput: false,
73
+ audioOutput: false,
74
+ imageGeneration: false,
75
+ embeddings: false,
76
+ },
77
+ },
78
+ ];
@@ -1,5 +1,13 @@
1
1
  // Based on @anthropic-ai/sdk model identifiers
2
2
  export enum DyFM_AAI_Model {
3
+ // Current GA (verified 2026-06). From the 4.6 generation the ids are
4
+ // dateless-but-pinned snapshots — there is NO `-latest` alias for these.
5
+ claude_opus_4_8 = 'claude-opus-4-8',
6
+ claude_sonnet_4_6 = 'claude-sonnet-4-6',
7
+ claude_haiku_4_5 = 'claude-haiku-4-5',
8
+ claude_haiku_4_5_20251001 = 'claude-haiku-4-5-20251001',
9
+
10
+ // Legacy / retired (kept for back-compat; NOT in the active registry)
3
11
  claude_3_5_sonnet_latest = 'claude-3-5-sonnet-latest',
4
12
  claude_3_5_sonnet_20241022 = 'claude-3-5-sonnet-20241022',
5
13
  claude_3_5_haiku_latest = 'claude-3-5-haiku-latest',
@@ -1,3 +1,6 @@
1
+ // COLLECTIONS
2
+ export * from './_collections/aai-models.const';
3
+
1
4
  // ENUMS
2
5
  export * from './_enums/aai-model.enum';
3
6
 
@@ -0,0 +1,33 @@
1
+ import { DyFM_AI_Provider } from '../../../_enums/ai-provider.enum';
2
+ import { DyFM_AI_ModelType } from '../../../_enums/ai-model-type.enum';
3
+ import { DyFM_AI_ModelInfo } from '../../../_models/ai-model-info.interface';
4
+ import { DyFM_FdpAI_Model } from '../_enums/fdpai-model.enum';
5
+
6
+ /**
7
+ * FDP-AI model registry.
8
+ *
9
+ * FDP-AI is an internal, OpenAI-wire-compatible HTTP gateway (`/chat/completions`),
10
+ * so tool calling follows the OpenAI format. Capabilities ultimately depend on the
11
+ * backing gateway/model — `functionCalling` is declared true on the assumption the
12
+ * gateway forwards OpenAI-style tools; confirm against the live FDP-AI deployment.
13
+ * Context window is gateway-defined and therefore left unset.
14
+ */
15
+ export const DyFM_FdpAI_Models: DyFM_AI_ModelInfo[] = [
16
+ {
17
+ id: DyFM_FdpAI_Model.fdpBase1,
18
+ provider: DyFM_AI_Provider.FdpAI,
19
+ modelType: DyFM_AI_ModelType.Chat,
20
+ displayName: 'FDP Base 1',
21
+ status: 'ga',
22
+ capabilities: {
23
+ functionCalling: true, // OpenAI-wire compatible — verify against the live gateway
24
+ vision: false,
25
+ streaming: true,
26
+ jsonMode: false,
27
+ audioInput: false,
28
+ audioOutput: false,
29
+ imageGeneration: false,
30
+ embeddings: false,
31
+ },
32
+ },
33
+ ];
@@ -1,3 +1,6 @@
1
+ // COLLECTIONS
2
+ export * from './_collections/fdpai-models.const';
3
+
1
4
  // ENUMS
2
5
  export * from './_enums/fdpai-model.enum';
3
6
 
@@ -0,0 +1,95 @@
1
+ import { DyFM_AI_Provider } from '../../../_enums/ai-provider.enum';
2
+ import { DyFM_AI_ModelType } from '../../../_enums/ai-model-type.enum';
3
+ import { DyFM_AI_ModelInfo } from '../../../_models/ai-model-info.interface';
4
+ import { DyFM_GAI_Model } from '../_enums/gai-model.enum';
5
+
6
+ /**
7
+ * Google Gemini model registry — verified 2026-06-01 against ai.google.dev docs.
8
+ *
9
+ * SDK note: depend on `@google/genai` (the old `@google/generative-ai` was sunset
10
+ * 2025-11-30). Tool use via `functionDeclarations`; tool results are returned under
11
+ * a `user`-role `functionResponse` part (no dedicated tool role).
12
+ *
13
+ * Video input is a real Gemini capability but is not yet modelled in
14
+ * {@link DyFM_AI_ModelCapabilities} — `vision` covers image input only.
15
+ */
16
+ export const DyFM_GAI_Models: DyFM_AI_ModelInfo[] = [
17
+ {
18
+ id: DyFM_GAI_Model.gemini_3_5_flash,
19
+ provider: DyFM_AI_Provider.Google,
20
+ modelType: DyFM_AI_ModelType.Chat,
21
+ displayName: 'Gemini 3.5 Flash',
22
+ tier: 'flash',
23
+ status: 'ga',
24
+ contextWindow: 1_048_576,
25
+ maxOutputTokens: 65_536,
26
+ capabilities: {
27
+ functionCalling: true,
28
+ vision: true,
29
+ streaming: true,
30
+ jsonMode: true,
31
+ audioInput: true,
32
+ audioOutput: false,
33
+ imageGeneration: false,
34
+ embeddings: false,
35
+ },
36
+ },
37
+ {
38
+ id: DyFM_GAI_Model.gemini_3_1_pro_preview,
39
+ provider: DyFM_AI_Provider.Google,
40
+ modelType: DyFM_AI_ModelType.Chat,
41
+ displayName: 'Gemini 3.1 Pro (preview)',
42
+ tier: 'pro',
43
+ status: 'preview',
44
+ contextWindow: 1_048_576,
45
+ maxOutputTokens: 65_536,
46
+ capabilities: {
47
+ functionCalling: true,
48
+ vision: true,
49
+ streaming: true,
50
+ jsonMode: true,
51
+ audioInput: true,
52
+ audioOutput: false,
53
+ imageGeneration: false,
54
+ embeddings: false,
55
+ },
56
+ },
57
+ {
58
+ id: DyFM_GAI_Model.gemini_3_1_flash_lite,
59
+ provider: DyFM_AI_Provider.Google,
60
+ modelType: DyFM_AI_ModelType.Chat,
61
+ displayName: 'Gemini 3.1 Flash-Lite',
62
+ tier: 'flash-lite',
63
+ status: 'ga',
64
+ contextWindow: 1_048_576,
65
+ maxOutputTokens: 65_536,
66
+ capabilities: {
67
+ functionCalling: true,
68
+ vision: true,
69
+ streaming: true,
70
+ jsonMode: true,
71
+ audioInput: true,
72
+ audioOutput: false,
73
+ imageGeneration: false,
74
+ embeddings: false,
75
+ },
76
+ },
77
+ {
78
+ id: DyFM_GAI_Model.gemini_embedding_2,
79
+ provider: DyFM_AI_Provider.Google,
80
+ modelType: DyFM_AI_ModelType.Embedding,
81
+ displayName: 'Gemini Embedding 2',
82
+ status: 'ga',
83
+ contextWindow: 8_192,
84
+ capabilities: {
85
+ functionCalling: false,
86
+ vision: true, // multimodal embedding (text / image / audio)
87
+ streaming: false,
88
+ jsonMode: false,
89
+ audioInput: true,
90
+ audioOutput: false,
91
+ imageGeneration: false,
92
+ embeddings: true,
93
+ },
94
+ },
95
+ ];
@@ -1,5 +1,13 @@
1
- // Based on @google/generative-ai model identifiers
1
+ // Based on the @google/genai SDK model identifiers
2
+ // (the older @google/generative-ai SDK was sunset 2025-11-30).
2
3
  export enum DyFM_GAI_Model {
4
+ // Current (verified 2026-06)
5
+ gemini_3_5_flash = 'gemini-3.5-flash',
6
+ gemini_3_1_pro_preview = 'gemini-3.1-pro-preview',
7
+ gemini_3_1_flash_lite = 'gemini-3.1-flash-lite',
8
+ gemini_embedding_2 = 'gemini-embedding-2',
9
+
10
+ // Legacy (deprecated / removed from the active line-up)
3
11
  gemini_1_5_pro_latest = 'gemini-1.5-pro-latest',
4
12
  gemini_1_5_flash_latest = 'gemini-1.5-flash-latest',
5
13
  text_embedding_004 = 'text-embedding-004',
@@ -1,3 +1,6 @@
1
+ // COLLECTIONS
2
+ export * from './_collections/gai-models.const';
3
+
1
4
  // ENUMS
2
5
  export * from './_enums/gai-model.enum';
3
6
 
@@ -0,0 +1,51 @@
1
+ import { DyFM_AI_Provider } from '../../../_enums/ai-provider.enum';
2
+ import { DyFM_AI_ModelType } from '../../../_enums/ai-model-type.enum';
3
+ import { DyFM_AI_ModelInfo } from '../../../_models/ai-model-info.interface';
4
+ import { DyFM_LAI_Model } from '../_enums/lai-model.enum';
5
+
6
+ /**
7
+ * Local-AI model registry.
8
+ *
9
+ * Local models are served by a self-hosted, OpenAI-wire-compatible server
10
+ * (lm-studio / ollama / vllm). These are GENERIC descriptors — the real
11
+ * capabilities depend entirely on the model the user has loaded at runtime.
12
+ * In particular `functionCalling` is left FALSE here because many local models
13
+ * do not support tool calling; it must be confirmed per loaded model rather than
14
+ * assumed. Context window is model-defined and therefore left unset.
15
+ */
16
+ export const DyFM_LAI_Models: DyFM_AI_ModelInfo[] = [
17
+ {
18
+ id: DyFM_LAI_Model.generic_llm,
19
+ provider: DyFM_AI_Provider.LocalAI,
20
+ modelType: DyFM_AI_ModelType.Chat,
21
+ displayName: 'Local generic LLM',
22
+ status: 'ga',
23
+ capabilities: {
24
+ functionCalling: false, // runtime/model-dependent — confirm per loaded model
25
+ vision: false,
26
+ streaming: true,
27
+ jsonMode: false,
28
+ audioInput: false,
29
+ audioOutput: false,
30
+ imageGeneration: false,
31
+ embeddings: false,
32
+ },
33
+ },
34
+ {
35
+ id: DyFM_LAI_Model.text_embedding,
36
+ provider: DyFM_AI_Provider.LocalAI,
37
+ modelType: DyFM_AI_ModelType.Embedding,
38
+ displayName: 'Local text embedding',
39
+ status: 'ga',
40
+ capabilities: {
41
+ functionCalling: false,
42
+ vision: false,
43
+ streaming: false,
44
+ jsonMode: false,
45
+ audioInput: false,
46
+ audioOutput: false,
47
+ imageGeneration: false,
48
+ embeddings: true,
49
+ },
50
+ },
51
+ ];
@@ -1,3 +1,6 @@
1
+ // COLLECTIONS
2
+ export * from './_collections/lai-models.const';
3
+
1
4
  // ENUMS
2
5
  export * from './_enums/lai-model.enum';
3
6