@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 +4 -15
- package/lib/agents/known-models.json +104 -0
- package/lib/agents/known-models.ts +7 -65
- package/package.json +1 -1
- package/publish.sh +17 -0
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
# Forge v0.10.
|
|
1
|
+
# Forge v0.10.58
|
|
2
2
|
|
|
3
|
-
Released: 2026-06-
|
|
3
|
+
Released: 2026-06-10
|
|
4
4
|
|
|
5
|
-
## Changes since v0.10.
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
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
|
|