@eduwork/dsh-oidc 0.1.0 → 0.2.1
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/CHANGELOG.en.md +40 -1
- package/CHANGELOG.md +40 -1
- package/README.en.md +23 -21
- package/README.md +17 -15
- package/THIRD_PARTY_NOTICES.en.md +7 -5
- package/THIRD_PARTY_NOTICES.md +7 -5
- package/cordis.patch.yml +2 -1
- package/docs/EDUWORK-MIGRATION.en.md +14 -2
- package/docs/EDUWORK-MIGRATION.md +14 -2
- package/docs/account-extensions.en.md +40 -0
- package/docs/account-extensions.md +42 -0
- package/docs/architecture.en.md +9 -9
- package/docs/architecture.md +11 -10
- package/docs/compatibility.en.md +11 -2
- package/docs/compatibility.md +11 -2
- package/docs/desktop-host.en.md +69 -0
- package/docs/desktop-host.md +79 -0
- package/docs/development.en.md +42 -0
- package/docs/development.md +42 -0
- package/docs/dsh-integration.en.md +23 -7
- package/docs/dsh-integration.md +23 -7
- package/docs/ecnu-reference.en.md +3 -3
- package/docs/ecnu-reference.md +3 -3
- package/docs/enterprise-profile.en.md +19 -11
- package/docs/enterprise-profile.md +18 -10
- package/docs/getting-started.en.md +12 -12
- package/docs/getting-started.md +16 -14
- package/docs/key-binding-protocol.en.md +2 -2
- package/docs/key-binding-protocol.md +2 -2
- package/docs/oidc-interoperability.en.md +3 -3
- package/docs/oidc-interoperability.md +2 -2
- package/docs/public-resource-protocol.en.md +51 -0
- package/docs/public-resource-protocol.md +50 -0
- package/docs/release-checklist.en.md +4 -2
- package/docs/release-checklist.md +4 -2
- package/docs/server-integration-contract.en.md +124 -8
- package/docs/server-integration-contract.md +136 -8
- package/examples/ecnu.enterprise-profile.example.json +2 -2
- package/examples/enterprise-profile.example.json +78 -77
- package/examples/identity-only.example.json +10 -0
- package/examples/resources-discovery.example.json +20 -0
- package/lib/callback-page.js +42 -0
- package/lib/client.js +935 -295
- package/lib/desktop-oidc.js +205 -0
- package/lib/index.js +148 -18
- package/lib/oidc.js +314 -58
- package/lib/profile.js +53 -24
- package/lib/provider/core.js +76 -15
- package/lib/provider/index.js +33 -20
- package/lib/provider/transform-adapter.js +31 -10
- package/lib/resources.js +23 -0
- package/lib/typert-schemas.js +34 -3
- package/lib/typert.host.js +42 -36
- package/lib/typert.remote-client.js +41 -35
- package/package.json +100 -29
- package/protocol/openapi.yaml +2 -2
- package/protocol/resources.openapi.yaml +51 -0
- package/schema/enterprise-profile.v1alpha1.schema.json +193 -188
package/lib/typert.host.js
CHANGED
|
@@ -1,38 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
accountResult, baseURLSchema, beginResult, configurationResult, jsonParameter, managementResult,
|
|
3
|
-
modelCatalogModeSchema, profileIdSchema, reconcileOptionsSchema, restartResult, runtimeModelsSchema,
|
|
4
|
-
} from './typert-schemas.js'
|
|
5
|
-
|
|
6
|
-
const pkg = '@eduwork/dsh-oidc'
|
|
7
|
-
const source = { file: 'lib/index.js', line: 1, column: 1 }
|
|
8
|
-
const profile = () => jsonParameter('profileID', profileIdSchema, `${pkg}#ProfileID`)
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import {
|
|
2
|
+
accountResult, baseURLSchema, beginResult, configurationResult, configurationTargetSchema, openConfigurationResult, jsonParameter, managementResult, loginIdSchema, loginResult,
|
|
3
|
+
modelCatalogModeSchema, profileIdSchema, reconcileOptionsSchema, restartResult, runtimeModelsSchema, resourcesResult, enterpriseSelectionResult, enterpriseSelectionOptionsSchema,
|
|
4
|
+
} from './typert-schemas.js'
|
|
5
|
+
|
|
6
|
+
const pkg = '@eduwork/dsh-oidc'
|
|
7
|
+
const source = { file: 'lib/index.js', line: 1, column: 1 }
|
|
8
|
+
const profile = () => jsonParameter('profileID', profileIdSchema, `${pkg}#ProfileID`)
|
|
9
|
+
const login = () => jsonParameter('loginID', loginIdSchema, `${pkg}#LoginID`)
|
|
10
|
+
const options = () => jsonParameter('options', reconcileOptionsSchema, `${pkg}#ReconcileOptions`)
|
|
11
|
+
const baseURL = () => jsonParameter('baseURL', baseURLSchema, `${pkg}#BaseURL`)
|
|
12
|
+
const modelMode = () => jsonParameter('modelMode', modelCatalogModeSchema, `${pkg}#ModelCatalogMode`)
|
|
13
|
+
const models = () => jsonParameter('models', runtimeModelsSchema, `${pkg}#RuntimeModels`)
|
|
14
|
+
const descriptor = (method, parameters, result) => ({
|
|
15
|
+
id: `${pkg}#oidcAccounts/${method}`, service: 'oidcAccounts', namespace: 'oidcAccounts', method,
|
|
16
|
+
invocation: { kind: 'direct' }, parameters, result, sourceLocation: source,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
export const TYPERT = {
|
|
20
|
+
package: pkg, face: 'host', schemas: [],
|
|
21
|
+
invocations: [
|
|
21
22
|
descriptor('configuration', [], configurationResult),
|
|
22
|
-
descriptor('
|
|
23
|
-
descriptor('
|
|
23
|
+
descriptor('openConfiguration', [jsonParameter('target', configurationTargetSchema, `${pkg}#ConfigurationTarget`)], openConfigurationResult),
|
|
24
|
+
descriptor('status', [profile()], accountResult),
|
|
25
|
+
descriptor('resources', [profile()], resourcesResult),
|
|
26
|
+
descriptor('begin', [profile()], beginResult),
|
|
27
|
+
descriptor('loginStatus', [login()], loginResult),
|
|
28
|
+
descriptor('cancelLogin', [login()], loginResult),
|
|
24
29
|
descriptor('reconcile', [profile(), options()], accountResult),
|
|
25
|
-
descriptor('
|
|
26
|
-
descriptor('
|
|
27
|
-
descriptor('
|
|
28
|
-
descriptor('
|
|
29
|
-
descriptor('
|
|
30
|
-
descriptor('
|
|
31
|
-
descriptor('
|
|
32
|
-
descriptor('
|
|
33
|
-
descriptor('
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
descriptor('selectEnterpriseModel', [profile(), jsonParameter('options', enterpriseSelectionOptionsSchema, `${pkg}#EnterpriseSelectionOptions`)], enterpriseSelectionResult),
|
|
31
|
+
descriptor('logout', [profile()], accountResult),
|
|
32
|
+
descriptor('management', [], managementResult),
|
|
33
|
+
descriptor('activate', [profile()], managementResult),
|
|
34
|
+
descriptor('configure', [profile()], managementResult),
|
|
35
|
+
descriptor('addCustom', [baseURL()], managementResult),
|
|
36
|
+
descriptor('updateCustom', [profile(), baseURL()], managementResult),
|
|
37
|
+
descriptor('removeProfile', [profile()], managementResult),
|
|
38
|
+
descriptor('configureModels', [profile(), modelMode(), models()], managementResult),
|
|
39
|
+
descriptor('restart', [], restartResult),
|
|
40
|
+
],
|
|
41
|
+
model: { services: [], events: [], objects: [] },
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default TYPERT
|
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
accountResult, baseURLSchema, beginResult, configurationResult, jsonParameter, managementResult,
|
|
3
|
-
modelCatalogModeSchema, profileIdSchema, reconcileOptionsSchema, restartResult, runtimeModelsSchema,
|
|
4
|
-
} from './typert-schemas.js'
|
|
5
|
-
|
|
6
|
-
const pkg = '@eduwork/dsh-oidc'
|
|
7
|
-
const source = { file: 'lib/index.js', line: 1, column: 1 }
|
|
8
|
-
const profile = () => jsonParameter('profileID', profileIdSchema, `${pkg}#ProfileID`)
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import {
|
|
2
|
+
accountResult, baseURLSchema, beginResult, configurationResult, configurationTargetSchema, openConfigurationResult, jsonParameter, managementResult, loginIdSchema, loginResult,
|
|
3
|
+
modelCatalogModeSchema, profileIdSchema, reconcileOptionsSchema, restartResult, runtimeModelsSchema, resourcesResult, enterpriseSelectionResult, enterpriseSelectionOptionsSchema,
|
|
4
|
+
} from './typert-schemas.js'
|
|
5
|
+
|
|
6
|
+
const pkg = '@eduwork/dsh-oidc'
|
|
7
|
+
const source = { file: 'lib/index.js', line: 1, column: 1 }
|
|
8
|
+
const profile = () => jsonParameter('profileID', profileIdSchema, `${pkg}#ProfileID`)
|
|
9
|
+
const login = () => jsonParameter('loginID', loginIdSchema, `${pkg}#LoginID`)
|
|
10
|
+
const options = () => jsonParameter('options', reconcileOptionsSchema, `${pkg}#ReconcileOptions`)
|
|
11
|
+
const baseURL = () => jsonParameter('baseURL', baseURLSchema, `${pkg}#BaseURL`)
|
|
12
|
+
const modelMode = () => jsonParameter('modelMode', modelCatalogModeSchema, `${pkg}#ModelCatalogMode`)
|
|
13
|
+
const models = () => jsonParameter('models', runtimeModelsSchema, `${pkg}#RuntimeModels`)
|
|
14
|
+
const descriptor = (method, parameters, result) => ({
|
|
15
|
+
id: `${pkg}#oidcAccounts/${method}`, service: 'oidcAccounts', namespace: 'oidcAccounts', method,
|
|
16
|
+
invocation: { kind: 'direct' }, parameters, result, sourceLocation: source,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
export const TYPERT_REMOTE = {
|
|
20
|
+
package: pkg,
|
|
21
|
+
descriptors: [
|
|
21
22
|
descriptor('configuration', [], configurationResult),
|
|
22
|
-
descriptor('
|
|
23
|
-
descriptor('
|
|
23
|
+
descriptor('openConfiguration', [jsonParameter('target', configurationTargetSchema, `${pkg}#ConfigurationTarget`)], openConfigurationResult),
|
|
24
|
+
descriptor('status', [profile()], accountResult),
|
|
25
|
+
descriptor('resources', [profile()], resourcesResult),
|
|
26
|
+
descriptor('begin', [profile()], beginResult),
|
|
27
|
+
descriptor('loginStatus', [login()], loginResult),
|
|
28
|
+
descriptor('cancelLogin', [login()], loginResult),
|
|
24
29
|
descriptor('reconcile', [profile(), options()], accountResult),
|
|
25
|
-
descriptor('
|
|
26
|
-
descriptor('
|
|
27
|
-
descriptor('
|
|
28
|
-
descriptor('
|
|
29
|
-
descriptor('
|
|
30
|
-
descriptor('
|
|
31
|
-
descriptor('
|
|
32
|
-
descriptor('
|
|
33
|
-
descriptor('
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
descriptor('selectEnterpriseModel', [profile(), jsonParameter('options', enterpriseSelectionOptionsSchema, `${pkg}#EnterpriseSelectionOptions`)], enterpriseSelectionResult),
|
|
31
|
+
descriptor('logout', [profile()], accountResult),
|
|
32
|
+
descriptor('management', [], managementResult),
|
|
33
|
+
descriptor('activate', [profile()], managementResult),
|
|
34
|
+
descriptor('configure', [profile()], managementResult),
|
|
35
|
+
descriptor('addCustom', [baseURL()], managementResult),
|
|
36
|
+
descriptor('updateCustom', [profile(), baseURL()], managementResult),
|
|
37
|
+
descriptor('removeProfile', [profile()], managementResult),
|
|
38
|
+
descriptor('configureModels', [profile(), modelMode(), models()], managementResult),
|
|
39
|
+
descriptor('restart', [], restartResult),
|
|
40
|
+
],
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default TYPERT_REMOTE
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eduwork/dsh-oidc",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Standards-based OIDC identity, enterprise API-key binding, declarative branding, and OpenAI-compatible model integration for DeepSeek Harness",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"examples/**/*.json",
|
|
32
32
|
"schema/**/*.json",
|
|
33
33
|
"protocol/openapi.yaml",
|
|
34
|
+
"protocol/resources.openapi.yaml",
|
|
34
35
|
"README.md",
|
|
35
36
|
"README.en.md",
|
|
36
37
|
"CODE_OF_CONDUCT.md",
|
|
@@ -81,10 +82,12 @@
|
|
|
81
82
|
"check:secrets": "node scripts/check-secrets.mjs",
|
|
82
83
|
"check:licenses": "node scripts/check-licenses.mjs",
|
|
83
84
|
"check:docs": "node scripts/check-doc-links.mjs",
|
|
84
|
-
"check:dsh": "node scripts/check-dsh-rc1.mjs",
|
|
85
|
+
"check:dsh": "npm run check:lock && node scripts/check-dsh-rc1.mjs",
|
|
85
86
|
"check:build": "node scripts/smoke-build.mjs",
|
|
86
87
|
"check": "npm run typecheck && npm run check:dsh && npm run build && npm run check:build && npm test && npm run check:schemas && npm run check:docs && npm run check:secrets && npm run check:licenses && npm pack --dry-run",
|
|
87
|
-
"prepare": "npm run build"
|
|
88
|
+
"prepare": "npm run build",
|
|
89
|
+
"check:browser": "node scripts/check-account-menu-browser.mjs",
|
|
90
|
+
"check:lock": "node scripts/check-dependency-lock.mjs"
|
|
88
91
|
},
|
|
89
92
|
"engines": {
|
|
90
93
|
"node": ">=22.0.0"
|
|
@@ -106,36 +109,104 @@
|
|
|
106
109
|
},
|
|
107
110
|
"peerDependencies": {
|
|
108
111
|
"@deepseek-ai/cordis": "4.0.2",
|
|
109
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1",
|
|
110
|
-
"@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
|
|
111
|
-
"@deepseek-ai/dsh-authorization": "0.1.2-rc.1",
|
|
112
|
-
"@deepseek-ai/dsh-brand": "0.1.2-rc.1",
|
|
113
|
-
"@deepseek-ai/dsh-client-ui-
|
|
114
|
-
"@deepseek-ai/dsh-client-ui-
|
|
115
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
|
|
116
|
-
"@deepseek-ai/dsh-client-ui-settings-general": "0.1.2-rc.1",
|
|
117
|
-
"@deepseek-ai/dsh-client-ui-settings-models": "0.1.2-rc.1",
|
|
118
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.2-rc.1",
|
|
119
|
-
"@deepseek-ai/dsh-client-ui-theme": "0.1.2-rc.1",
|
|
120
|
-
"@deepseek-ai/dsh-credentials": "0.1.2-rc.1",
|
|
121
|
-
"@deepseek-ai/dsh-fs": "0.1.2-rc.1",
|
|
122
|
-
"@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1",
|
|
123
|
-
"@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
|
|
124
|
-
"@deepseek-ai/dsh-launch-environment": "0.1.2-rc.1",
|
|
125
|
-
"@deepseek-ai/dsh-llm": "0.1.2-rc.1",
|
|
126
|
-
"@deepseek-ai/dsh-llm-pi-ai": "0.1.2-rc.1",
|
|
127
|
-
"@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
|
|
128
|
-
"@deepseek-ai/dsh-scope": "0.1.2-rc.1",
|
|
129
|
-
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
130
|
-
"@deepseek-ai/dsh-settings": "0.1.2-rc.1",
|
|
131
|
-
"@deepseek-ai/dsh-timeout": "0.1.2-rc.1",
|
|
132
|
-
"@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
|
|
133
|
-
"@earendil-works/pi-ai": "^0.84.2",
|
|
134
|
-
"react": "^18.2.0"
|
|
112
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-authorization": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-brand": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-client-ui-settings-general": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-client-ui-settings-models": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-client-ui-theme": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-credentials": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-fs": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-invariants": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-launch-environment": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-llm": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-sandbox": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-scope": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-settings": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-timeout": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.3-alpha.2 || 0.1.5-alpha.1 || 0.1.5-rc.1",
|
|
136
|
+
"@earendil-works/pi-ai": "^0.84.2 || ^0.85.1",
|
|
137
|
+
"react": "^18.2.0",
|
|
138
|
+
"react-dom": "^18.2.0"
|
|
135
139
|
},
|
|
136
140
|
"devDependencies": {
|
|
141
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
142
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
143
|
+
"@deepseek-ai/dsh-agent-default-model": "0.1.5-rc.1",
|
|
144
|
+
"@deepseek-ai/dsh-agent-presets": "0.1.5-rc.1",
|
|
145
|
+
"@deepseek-ai/dsh-api-gateway": "0.1.5-rc.1",
|
|
146
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.5-rc.1",
|
|
147
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.1",
|
|
148
|
+
"@deepseek-ai/dsh-atomic-write": "0.1.5-rc.1",
|
|
149
|
+
"@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
|
|
150
|
+
"@deepseek-ai/dsh-authorization": "0.1.5-rc.1",
|
|
151
|
+
"@deepseek-ai/dsh-brand": "0.1.5-rc.1",
|
|
152
|
+
"@deepseek-ai/dsh-chunked-list": "0.1.5-rc.1",
|
|
153
|
+
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
154
|
+
"@deepseek-ai/dsh-client-file-upload": "0.1.5-rc.1",
|
|
155
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.1",
|
|
156
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.1.5-rc.1",
|
|
157
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
|
|
158
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
|
|
159
|
+
"@deepseek-ai/dsh-client-ui-settings-general": "0.1.5-rc.1",
|
|
160
|
+
"@deepseek-ai/dsh-client-ui-settings-models": "0.1.5-rc.1",
|
|
161
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.5-rc.1",
|
|
162
|
+
"@deepseek-ai/dsh-client-ui-theme": "0.1.5-rc.1",
|
|
163
|
+
"@deepseek-ai/dsh-code-runtime": "0.1.5-rc.1",
|
|
164
|
+
"@deepseek-ai/dsh-commands": "0.1.5-rc.1",
|
|
165
|
+
"@deepseek-ai/dsh-credentials": "0.1.5-rc.1",
|
|
166
|
+
"@deepseek-ai/dsh-deque": "0.1.5-rc.1",
|
|
167
|
+
"@deepseek-ai/dsh-file-reference": "0.1.5-rc.1",
|
|
168
|
+
"@deepseek-ai/dsh-fs": "0.1.5-rc.1",
|
|
169
|
+
"@deepseek-ai/dsh-home-paths": "0.1.5-rc.1",
|
|
170
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.5-rc.1",
|
|
171
|
+
"@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
|
|
172
|
+
"@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
|
|
173
|
+
"@deepseek-ai/dsh-launch-environment": "0.1.5-rc.1",
|
|
174
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
175
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.1.5-rc.1",
|
|
176
|
+
"@deepseek-ai/dsh-native-command": "0.1.5-rc.1",
|
|
177
|
+
"@deepseek-ai/dsh-sandbox": "0.1.5-rc.1",
|
|
178
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.1",
|
|
179
|
+
"@deepseek-ai/dsh-scope": "0.1.5-rc.1",
|
|
180
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
181
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.5-rc.1",
|
|
182
|
+
"@deepseek-ai/dsh-session-projection": "0.1.5-rc.1",
|
|
183
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.1.5-rc.1",
|
|
184
|
+
"@deepseek-ai/dsh-session-query": "0.1.5-rc.1",
|
|
185
|
+
"@deepseek-ai/dsh-session-title": "0.1.5-rc.1",
|
|
186
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
187
|
+
"@deepseek-ai/dsh-skill": "0.1.5-rc.1",
|
|
188
|
+
"@deepseek-ai/dsh-storage": "0.1.5-rc.1",
|
|
189
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.5-rc.1",
|
|
190
|
+
"@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
|
|
191
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
192
|
+
"@deepseek-ai/dsh-timeout": "0.1.5-rc.1",
|
|
193
|
+
"@deepseek-ai/dsh-tool-todo": "0.1.5-rc.1",
|
|
194
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.1",
|
|
195
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.1",
|
|
196
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.5-rc.1",
|
|
197
|
+
"@deepseek-ai/dsh-user-approval": "0.1.5-rc.1",
|
|
198
|
+
"@deepseek-ai/dsh-util-crypto": "0.1.5-rc.1",
|
|
199
|
+
"@deepseek-ai/dsh-util-time": "0.1.5-rc.1",
|
|
200
|
+
"@deepseek-ai/dsh-util-values": "0.1.5-rc.1",
|
|
201
|
+
"@deepseek-ai/dsh-util-workspace-path": "0.1.5-rc.1",
|
|
202
|
+
"@deepseek-ai/dsh-workspace": "0.1.5-rc.1",
|
|
203
|
+
"@earendil-works/pi-ai": "0.85.1",
|
|
137
204
|
"@types/react": "^18.3.28",
|
|
205
|
+
"@types/react-dom": "^18.3.7",
|
|
138
206
|
"ajv": "^8.17.1",
|
|
207
|
+
"playwright-core": "1.63.0",
|
|
208
|
+
"react": "18.3.1",
|
|
209
|
+
"react-dom": "18.3.1",
|
|
139
210
|
"tsdown": "0.22.14",
|
|
140
211
|
"typescript": "^5.9.3",
|
|
141
212
|
"yaml": "^2.8.1"
|
package/protocol/openapi.yaml
CHANGED
|
@@ -123,8 +123,8 @@ components:
|
|
|
123
123
|
properties:
|
|
124
124
|
protocol_version:
|
|
125
125
|
type: string
|
|
126
|
-
|
|
127
|
-
description: Optional during v1 adoption;
|
|
126
|
+
enum: [worker.user-center.v1, worker-user-center/v1, eduwork-resources/v1]
|
|
127
|
+
description: Optional during v1 adoption; all three version labels share the deployed credential lifecycle wire.
|
|
128
128
|
subject:
|
|
129
129
|
$ref: '#/components/schemas/InformationalSubject'
|
|
130
130
|
provider:
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
openapi: 3.1.0
|
|
2
|
+
info:
|
|
3
|
+
title: EduWork Identity and Resource Protocol
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: >-
|
|
6
|
+
Optional resource integration for a local single-user OIDC client.
|
|
7
|
+
Management uses worker-user-center-v1 bootstrap and credential operations. Quota and activity heartbeat are institution extensions, absent from this contract.
|
|
8
|
+
Model discovery uses the resulting runtime API key, never the
|
|
9
|
+
identity token. Pure OIDC deployments may omit resource integration.
|
|
10
|
+
license: { name: MIT, identifier: MIT }
|
|
11
|
+
servers:
|
|
12
|
+
- url: https://ai.example.edu/open/api/v1
|
|
13
|
+
security:
|
|
14
|
+
- runtimeKey: []
|
|
15
|
+
paths:
|
|
16
|
+
/models:
|
|
17
|
+
get:
|
|
18
|
+
operationId: listResourceModels
|
|
19
|
+
responses:
|
|
20
|
+
'200':
|
|
21
|
+
description: Available model identifiers; reviewed capabilities remain in the client Profile
|
|
22
|
+
content:
|
|
23
|
+
application/json:
|
|
24
|
+
schema:
|
|
25
|
+
type: object
|
|
26
|
+
required: [data]
|
|
27
|
+
properties:
|
|
28
|
+
data:
|
|
29
|
+
type: array
|
|
30
|
+
minItems: 1
|
|
31
|
+
maxItems: 128
|
|
32
|
+
items:
|
|
33
|
+
type: object
|
|
34
|
+
required: [id]
|
|
35
|
+
properties:
|
|
36
|
+
id: { type: string, minLength: 1, maxLength: 256 }
|
|
37
|
+
'401': { description: Runtime key is invalid or expired }
|
|
38
|
+
'403': { description: Model discovery is not permitted; keep the reviewed catalog }
|
|
39
|
+
'404': { description: Discovery not supported; client keeps reviewed model catalog }
|
|
40
|
+
'429': { $ref: '#/components/responses/RateLimited' }
|
|
41
|
+
'5XX': { $ref: '#/components/responses/Unavailable' }
|
|
42
|
+
components:
|
|
43
|
+
responses:
|
|
44
|
+
RateLimited:
|
|
45
|
+
description: Temporarily limited; current client reports unavailable and allows a later manual refresh
|
|
46
|
+
headers:
|
|
47
|
+
Retry-After: { schema: { type: string }, description: Seconds or HTTP date for a future retry; never a refresh-token grant }
|
|
48
|
+
Unavailable:
|
|
49
|
+
description: Temporary resource failure; do not clear identity or the model key
|
|
50
|
+
securitySchemes:
|
|
51
|
+
runtimeKey: { type: http, scheme: bearer, description: Model runtime credential }
|