@aion0/forge 0.10.56 → 0.10.58

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.
package/RELEASE_NOTES.md CHANGED
@@ -1,19 +1,8 @@
1
- # Forge v0.10.56
1
+ # Forge v0.10.58
2
2
 
3
- Released: 2026-06-09
3
+ Released: 2026-06-10
4
4
 
5
- ## Changes since v0.10.55
5
+ ## Changes since v0.10.57
6
6
 
7
- ### Other
8
- - revert(pipeline): retryNode strict semantics — don't touch 'skipped' nodes
9
- - fix(pipeline): retryNode walks upstream — auto-includes failed/skipped chain
10
- - fix(tasks): reconcile orphaned 'running' rows at boot; pipeline retry accepts 'skipped'
11
- - fix(chat): runTurn endTurn always runs — outer try/finally wraps full body
12
- - fix(chat): atomic turn claim — close race where two inputs both fork runTurn
13
- - feat(pipeline-ui): retry button on failed forEach iteration nodes
14
- - refactor(chat): single input queue — all sources route through enqueueChatInput
15
- - fix(chat): watch-triggered runChat merges into running turn, no concurrent fork
16
- - feat(activity): running_tasks in summary API + taskId/pipeline deeplinks
17
7
 
18
-
19
- **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.10.55...v0.10.56
8
+ **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.10.57...v0.10.58
@@ -0,0 +1,104 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/aiwatching/forge-public-info/main/models/registry.schema.json",
3
+ "version": 1,
4
+ "updatedAt": "2026-06-10",
5
+ "note": "Forge consumes this at startup via lib/public-info/fetch.ts (24h cache). 'agents' holds CLI agent types (claude-code, codex, aider); 'providers' holds API providers (anthropic, openai, etc). UI looks up by cliType for CLI profiles and by provider for API profiles.",
6
+ "agents": {
7
+ "claude-code": {
8
+ "displayName": "Claude Code",
9
+ "default": "claude-sonnet-4-6",
10
+ "aliases": [
11
+ { "id": "default", "label": "default (CLI decides)" },
12
+ { "id": "fable", "label": "fable (alias → latest fable)" },
13
+ { "id": "sonnet", "label": "sonnet (alias → latest sonnet)" },
14
+ { "id": "opus", "label": "opus (alias → latest opus)" },
15
+ { "id": "haiku", "label": "haiku (alias → latest haiku)" }
16
+ ],
17
+ "models": [
18
+ { "id": "claude-fable-5", "label": "Fable 5", "tier": "premium", "default": false },
19
+ { "id": "claude-opus-4-8", "label": "Opus 4.8", "tier": "premium", "default": false },
20
+ { "id": "claude-sonnet-4-6", "label": "Sonnet 4.6", "tier": "standard", "default": true },
21
+ { "id": "claude-haiku-4-5-20251001","label": "Haiku 4.5", "tier": "fast", "default": false }
22
+ ]
23
+ },
24
+ "codex": {
25
+ "displayName": "OpenAI Codex",
26
+ "default": "o4-mini",
27
+ "aliases": [
28
+ { "id": "default", "label": "default (CLI decides)" }
29
+ ],
30
+ "models": [
31
+ { "id": "o4-mini", "label": "o4-mini", "tier": "fast", "default": true },
32
+ { "id": "o3-mini", "label": "o3-mini", "tier": "fast", "default": false },
33
+ { "id": "gpt-4.1", "label": "GPT-4.1", "tier": "standard", "default": false }
34
+ ]
35
+ },
36
+ "aider": {
37
+ "displayName": "Aider",
38
+ "default": "default",
39
+ "aliases": [
40
+ { "id": "default", "label": "default (CLI decides)" }
41
+ ],
42
+ "models": []
43
+ }
44
+ },
45
+ "providers": {
46
+ "anthropic": {
47
+ "displayName": "Anthropic API",
48
+ "default": "claude-sonnet-4-6",
49
+ "aliases": [],
50
+ "models": [
51
+ { "id": "claude-fable-5", "label": "Fable 5", "tier": "premium", "default": false },
52
+ { "id": "claude-opus-4-8", "label": "Opus 4.8", "tier": "premium", "default": false },
53
+ { "id": "claude-sonnet-4-6", "label": "Sonnet 4.6", "tier": "standard", "default": true },
54
+ { "id": "claude-haiku-4-5-20251001", "label": "Haiku 4.5", "tier": "fast", "default": false }
55
+ ]
56
+ },
57
+ "openai": {
58
+ "displayName": "OpenAI API",
59
+ "default": "gpt-4.1",
60
+ "aliases": [],
61
+ "models": [
62
+ { "id": "gpt-4.1", "label": "GPT-4.1", "tier": "premium", "default": true },
63
+ { "id": "gpt-4o", "label": "GPT-4o", "tier": "standard", "default": false },
64
+ { "id": "o4-mini", "label": "o4-mini", "tier": "fast", "default": false },
65
+ { "id": "o3-mini", "label": "o3-mini", "tier": "fast", "default": false }
66
+ ]
67
+ },
68
+ "grok": {
69
+ "displayName": "Grok / xAI",
70
+ "default": "grok-4",
71
+ "aliases": [],
72
+ "models": [
73
+ { "id": "grok-4", "label": "Grok 4", "tier": "premium", "default": true },
74
+ { "id": "grok-3", "label": "Grok 3", "tier": "standard", "default": false },
75
+ { "id": "grok-3-mini", "label": "Grok 3 Mini", "tier": "fast", "default": false }
76
+ ]
77
+ },
78
+ "google": {
79
+ "displayName": "Google / Gemini",
80
+ "default": "gemini-2.5-pro",
81
+ "aliases": [],
82
+ "models": [
83
+ { "id": "gemini-2.5-pro", "label": "Gemini 2.5 Pro", "tier": "premium", "default": true },
84
+ { "id": "gemini-2.5-flash", "label": "Gemini 2.5 Flash", "tier": "standard", "default": false },
85
+ { "id": "gemini-2.0-flash", "label": "Gemini 2.0 Flash", "tier": "fast", "default": false }
86
+ ]
87
+ },
88
+ "deepseek": {
89
+ "displayName": "DeepSeek",
90
+ "default": "deepseek-chat",
91
+ "aliases": [],
92
+ "models": [
93
+ { "id": "deepseek-chat", "label": "DeepSeek Chat", "tier": "standard", "default": true },
94
+ { "id": "deepseek-reasoner", "label": "DeepSeek Reasoner", "tier": "premium", "default": false }
95
+ ]
96
+ },
97
+ "litellm": {
98
+ "displayName": "LiteLLM (OpenAI-compatible proxy)",
99
+ "default": "",
100
+ "aliases": [],
101
+ "models": []
102
+ }
103
+ }
104
+ }
@@ -4,72 +4,14 @@
4
4
  * when the network is unreachable, the file is malformed, or the
5
5
  * user is on first-run before the cache is populated.
6
6
  *
7
- * Keep this list reasonably current if the registry is permanently
8
- * unreachable, this is what users see. New models in the wild should
9
- * land in the public-info repo first (no code change required), and
10
- * trickle into this fallback whenever the next forge release happens.
7
+ * This is a build-time SNAPSHOT of forge-public-info/models/registry.json,
8
+ * refreshed automatically by `publish.sh` at each release do NOT hand-edit
9
+ * `known-models.json`. To change models, edit the public-info repo; running
10
+ * installs pick it up within the 24h cache, fresh/offline installs pick it up
11
+ * at the next forge release when the snapshot is re-pulled.
11
12
  */
12
13
 
13
14
  import type { ModelsRegistry } from '../public-info/types';
15
+ import snapshot from './known-models.json';
14
16
 
15
- export const KNOWN_MODELS_FALLBACK: ModelsRegistry = {
16
- version: 1,
17
- updatedAt: '2026-05-30',
18
- note: 'Bundled fallback — actual current list lives in forge-public-info/models/registry.json',
19
- agents: {
20
- 'claude-code': {
21
- displayName: 'Claude Code',
22
- default: 'claude-sonnet-4-6',
23
- aliases: [
24
- { id: 'default', label: 'default (CLI decides)' },
25
- { id: 'sonnet', label: 'sonnet (alias)' },
26
- { id: 'opus', label: 'opus (alias)' },
27
- { id: 'haiku', label: 'haiku (alias)' },
28
- ],
29
- models: [
30
- { id: 'claude-opus-4-8', label: 'Opus 4.8', tier: 'premium' },
31
- { id: 'claude-sonnet-4-6', label: 'Sonnet 4.6', tier: 'standard', default: true },
32
- { id: 'claude-haiku-4-5-20251001', label: 'Haiku 4.5', tier: 'fast' },
33
- ],
34
- },
35
- codex: {
36
- displayName: 'OpenAI Codex',
37
- default: 'o4-mini',
38
- aliases: [{ id: 'default', label: 'default (CLI decides)' }],
39
- models: [
40
- { id: 'o4-mini', label: 'o4-mini', tier: 'fast', default: true },
41
- { id: 'o3-mini', label: 'o3-mini', tier: 'fast' },
42
- { id: 'gpt-4.1', label: 'GPT-4.1', tier: 'standard' },
43
- ],
44
- },
45
- aider: {
46
- displayName: 'Aider',
47
- default: 'default',
48
- aliases: [{ id: 'default', label: 'default (CLI decides)' }],
49
- models: [],
50
- },
51
- },
52
- providers: {
53
- anthropic: {
54
- displayName: 'Anthropic API',
55
- default: 'claude-sonnet-4-6',
56
- aliases: [],
57
- models: [
58
- { id: 'claude-opus-4-8', label: 'Opus 4.8', tier: 'premium' },
59
- { id: 'claude-sonnet-4-6', label: 'Sonnet 4.6', tier: 'standard', default: true },
60
- { id: 'claude-haiku-4-5-20251001', label: 'Haiku 4.5', tier: 'fast' },
61
- ],
62
- },
63
- openai: {
64
- displayName: 'OpenAI API',
65
- default: 'gpt-4.1',
66
- aliases: [],
67
- models: [
68
- { id: 'gpt-4.1', label: 'GPT-4.1', tier: 'premium', default: true },
69
- { id: 'gpt-4o', label: 'GPT-4o', tier: 'standard' },
70
- { id: 'o4-mini', label: 'o4-mini', tier: 'fast' },
71
- { id: 'o3-mini', label: 'o3-mini', tier: 'fast' },
72
- ],
73
- },
74
- },
75
- };
17
+ export const KNOWN_MODELS_FALLBACK: ModelsRegistry = snapshot as ModelsRegistry;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aion0/forge",
3
- "version": "0.10.56",
3
+ "version": "0.10.58",
4
4
  "description": "Unified AI workflow platform — multi-model task orchestration, persistent sessions, web terminal, remote access",
5
5
  "type": "module",
6
6
  "scripts": {
package/publish.sh CHANGED
@@ -32,6 +32,23 @@ fi
32
32
  echo "Version: $CURRENT → $NEW_VERSION"
33
33
  echo ""
34
34
 
35
+ # Refresh the bundled model-registry snapshot from public-info.
36
+ # This is the offline/first-run fallback for lib/agents/known-models.ts —
37
+ # pulling it here keeps it from drifting against the live registry.
38
+ REGISTRY_URL="https://raw.githubusercontent.com/aiwatching/forge-public-info/main/models/registry.json"
39
+ SNAPSHOT_PATH="lib/agents/known-models.json"
40
+ echo "Refreshing model snapshot from $REGISTRY_URL ..."
41
+ TMP_SNAPSHOT=$(mktemp)
42
+ if curl -fsSL "$REGISTRY_URL" -o "$TMP_SNAPSHOT" && node -e "JSON.parse(require('fs').readFileSync('$TMP_SNAPSHOT','utf8'))"; then
43
+ mv "$TMP_SNAPSHOT" "$SNAPSHOT_PATH"
44
+ echo "✓ Updated $SNAPSHOT_PATH"
45
+ else
46
+ rm -f "$TMP_SNAPSHOT"
47
+ echo "✗ Failed to fetch/validate model registry — aborting publish (keeping old snapshot)."
48
+ exit 1
49
+ fi
50
+ echo ""
51
+
35
52
  # Update package.json
36
53
  sed -i '' "s/\"version\": \"$CURRENT\"/\"version\": \"$NEW_VERSION\"/" package.json
37
54