@aion0/forge 0.9.14 → 0.9.15
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 -8
- package/app/api/connectors/route.ts +20 -1
- package/package.json +1 -1
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
# Forge v0.9.
|
|
1
|
+
# Forge v0.9.15
|
|
2
2
|
|
|
3
3
|
Released: 2026-05-27
|
|
4
4
|
|
|
5
|
-
## Changes since v0.9.
|
|
5
|
+
## Changes since v0.9.14
|
|
6
6
|
|
|
7
7
|
### Other
|
|
8
|
-
- fix(
|
|
9
|
-
- feat(chat): trigger_pipeline schema validation + self-evolving rules
|
|
10
|
-
- feat(chat): pipeline input schemas + Forge context tools
|
|
11
|
-
- refactor(chat): LLM layer on Vercel AI SDK (provider-agnostic streaming)
|
|
12
|
-
- feat(chat): trigger_pipeline + dispatch_task builtin tools
|
|
8
|
+
- fix(connectors): derive mode label from tool protocols
|
|
13
9
|
|
|
14
10
|
|
|
15
|
-
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.9.
|
|
11
|
+
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.9.14...v0.9.15
|
|
@@ -51,6 +51,25 @@ function expandEntry(entry: ConnectorEntry, settings: Record<string, any> | unde
|
|
|
51
51
|
return out;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/** Pure UI label derived from tool protocols. The actual dispatch goes by
|
|
55
|
+
* each tool's `protocol` field (see lib/chat/tool-dispatcher.ts switch) —
|
|
56
|
+
* this is just so the ConnectorsTab pill stops calling a connector
|
|
57
|
+
* browser-side when every one of its tools is server-side (e.g. gitlab,
|
|
58
|
+
* whose tools all use protocol: http). The legacy connector-level `mode`
|
|
59
|
+
* field is ignored. */
|
|
60
|
+
function deriveModeLabel(entries: ConnectorEntry[]): 'server-side' | 'browser-side' | 'mixed' {
|
|
61
|
+
const ps = new Set<string>();
|
|
62
|
+
for (const e of entries) {
|
|
63
|
+
for (const t of Object.values(e.tools || {})) {
|
|
64
|
+
ps.add((t as any).protocol || 'browser');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (ps.size === 0) return 'browser-side';
|
|
68
|
+
const allServer = [...ps].every((p) => p === 'http' || p === 'shell');
|
|
69
|
+
const allBrowser = [...ps].every((p) => p === 'browser');
|
|
70
|
+
return allServer ? 'server-side' : allBrowser ? 'browser-side' : 'mixed';
|
|
71
|
+
}
|
|
72
|
+
|
|
54
73
|
function toConnectorPayload(def: ConnectorDefinition, config: Record<string, any> | undefined, installed: boolean) {
|
|
55
74
|
const entries = getConnectorEntries(def).map(e => expandEntry(e, config));
|
|
56
75
|
|
|
@@ -69,7 +88,7 @@ function toConnectorPayload(def: ConnectorDefinition, config: Record<string, any
|
|
|
69
88
|
version: def.version,
|
|
70
89
|
author: def.author || 'forge',
|
|
71
90
|
description: def.description || '',
|
|
72
|
-
mode:
|
|
91
|
+
mode: deriveModeLabel(entries),
|
|
73
92
|
installed,
|
|
74
93
|
...(hostMatch ? { host_match: hostMatch } : {}),
|
|
75
94
|
...(loginRedirect ? { login_redirect: loginRedirect } : {}),
|
package/package.json
CHANGED