dsh-codex-community 0.0.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.md +90 -0
- package/CONTRIBUTING.en.md +54 -0
- package/CONTRIBUTING.md +54 -0
- package/LICENSE +201 -0
- package/NOTICE +12 -0
- package/README.en.md +98 -0
- package/README.md +98 -0
- package/SECURITY.md +41 -0
- package/SUPPORT.md +17 -0
- package/THIRD_PARTY_NOTICES.md +25 -0
- package/codex-community.patch.yml +13 -0
- package/dist/client/index.js +1037 -0
- package/dist/host/index.mjs +98 -0
- package/dist/internal/authorization-bridge.mjs +662 -0
- package/dist/internal/authorization-commit-tracker.mjs +49 -0
- package/dist/internal/codex-authorization.mjs +202 -0
- package/dist/internal/codex-credential-store.mjs +164 -0
- package/dist/internal/codex-identifiers.mjs +4 -0
- package/dist/internal/codex-pi-provider.mjs +137 -0
- package/dist/internal/codex-provider-runtime.mjs +256 -0
- package/dist/internal/codex-route-adapter.mjs +133 -0
- package/dist/internal/codex-session-resources.mjs +64 -0
- package/dist/internal/failure-normalizer.mjs +456 -0
- package/dist/internal/image-policy.mjs +45 -0
- package/dist/internal/quota-observer.mjs +142 -0
- package/dist/internal/reliability.mjs +12 -0
- package/dist/internal/remote-image-input.mjs +801 -0
- package/dist/internal/session-preference-command.mjs +52 -0
- package/dist/internal/session-preferences.mjs +93 -0
- package/dist/internal/stream-resilience.mjs +273 -0
- package/docs/README.en.md +15 -0
- package/docs/README.md +15 -0
- package/docs/architecture.en.md +106 -0
- package/docs/architecture.md +106 -0
- package/docs/compatibility.en.md +53 -0
- package/docs/compatibility.md +53 -0
- package/docs/configuration.en.md +61 -0
- package/docs/configuration.md +61 -0
- package/docs/contribution-sources.en.md +35 -0
- package/docs/contribution-sources.md +35 -0
- package/docs/github-about.md +15 -0
- package/docs/releases/v0.0.1.acceptance.json +160 -0
- package/docs/releases/v0.0.1.md +174 -0
- package/docs/releasing.en.md +290 -0
- package/docs/releasing.md +290 -0
- package/docs/testing.en.md +85 -0
- package/docs/testing.md +85 -0
- package/docs/troubleshooting.en.md +47 -0
- package/docs/troubleshooting.md +47 -0
- package/package.json +144 -0
- package/types/client.d.ts +160 -0
- package/types/index.d.ts +22 -0
- package/types/reliability.d.ts +78 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installAuthorizationRpc,
|
|
3
|
+
registerCodexLoginCommand,
|
|
4
|
+
registerCodexUsageCommand,
|
|
5
|
+
} from "../internal/authorization-bridge.mjs"
|
|
6
|
+
import { createAuthorizationCommitTracker } from "../internal/authorization-commit-tracker.mjs"
|
|
7
|
+
import {
|
|
8
|
+
Config,
|
|
9
|
+
installCodexProviderRuntime,
|
|
10
|
+
} from "../internal/codex-provider-runtime.mjs"
|
|
11
|
+
import { createQuotaObserver } from "../internal/quota-observer.mjs"
|
|
12
|
+
import { createReadImageUrlMiddleware } from "../internal/remote-image-input.mjs"
|
|
13
|
+
import { createCodexSessionResourceManager } from "../internal/codex-session-resources.mjs"
|
|
14
|
+
import { registerCodexSessionCommand } from "../internal/session-preference-command.mjs"
|
|
15
|
+
import { createSessionPreferences } from "../internal/session-preferences.mjs"
|
|
16
|
+
import { stabilizeCodexStream } from "../internal/stream-resilience.mjs"
|
|
17
|
+
|
|
18
|
+
export const name = "dsh-codex"
|
|
19
|
+
export const inject = ["llm", "authorization", "credentials"]
|
|
20
|
+
|
|
21
|
+
export { Config }
|
|
22
|
+
|
|
23
|
+
export function apply(ctx, config = {}) {
|
|
24
|
+
const entry = Config(config)
|
|
25
|
+
const authorizationCommitTracker = createAuthorizationCommitTracker()
|
|
26
|
+
const sessionPreferences = createSessionPreferences({ defaultTransport: "auto" })
|
|
27
|
+
const sessionResources = createCodexSessionResourceManager()
|
|
28
|
+
const runtime = installCodexProviderRuntime(ctx, entry, {
|
|
29
|
+
authorizationCommitTracker,
|
|
30
|
+
sessionPreferences,
|
|
31
|
+
sessionResources,
|
|
32
|
+
})
|
|
33
|
+
ctx.effect(
|
|
34
|
+
() => () => {
|
|
35
|
+
try {
|
|
36
|
+
sessionPreferences.dispose()
|
|
37
|
+
} finally {
|
|
38
|
+
sessionResources.dispose()
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"dsh-codex: session resources",
|
|
42
|
+
)
|
|
43
|
+
ctx.on(
|
|
44
|
+
"agent/disposed",
|
|
45
|
+
({ agent }) => {
|
|
46
|
+
const sessionId = String(agent.id)
|
|
47
|
+
try {
|
|
48
|
+
sessionPreferences.remove(sessionId)
|
|
49
|
+
} finally {
|
|
50
|
+
sessionResources.reset(sessionId)
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{ global: true },
|
|
54
|
+
)
|
|
55
|
+
const quotaObserver = createQuotaObserver()
|
|
56
|
+
ctx.on(
|
|
57
|
+
"llm/stream",
|
|
58
|
+
(options, next) => stabilizeCodexStream(options, next, {
|
|
59
|
+
partialResponseRecovery: runtime.getConfig().partialResponseRecovery,
|
|
60
|
+
onQuota: ({ resetAt }) => quotaObserver.observeQuota({
|
|
61
|
+
observedAt: Date.now(),
|
|
62
|
+
...(resetAt === undefined ? {} : { resetAt }),
|
|
63
|
+
}),
|
|
64
|
+
onSuccess: () => quotaObserver.observeSuccess(Date.now()),
|
|
65
|
+
onRecovery: ({ model, code, requestId }) => {
|
|
66
|
+
const request = requestId === undefined ? "" : ` request=${requestId}`
|
|
67
|
+
ctx.logger.warn(`dsh-codex: preserved partial ${model} response after ${code}; full-request replay disabled${request}`)
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
{ global: true },
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
ctx.inject(["connection"], (connectionCtx) => {
|
|
74
|
+
installAuthorizationRpc(connectionCtx, {
|
|
75
|
+
commitTracker: authorizationCommitTracker,
|
|
76
|
+
quotaObserver,
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
ctx.inject(["commands"], (commandCtx) => {
|
|
80
|
+
registerCodexSessionCommand(commandCtx, sessionPreferences, {
|
|
81
|
+
resetSession: (sessionId) => sessionResources.reset(sessionId),
|
|
82
|
+
})
|
|
83
|
+
registerCodexLoginCommand(commandCtx, { commitTracker: authorizationCommitTracker })
|
|
84
|
+
registerCodexUsageCommand(commandCtx, quotaObserver)
|
|
85
|
+
})
|
|
86
|
+
ctx.inject(["tools", "attachments"], (imageCtx) => {
|
|
87
|
+
const middleware = createReadImageUrlMiddleware(imageCtx)
|
|
88
|
+
imageCtx.on(
|
|
89
|
+
"tools/execute",
|
|
90
|
+
middleware,
|
|
91
|
+
{ global: true },
|
|
92
|
+
)
|
|
93
|
+
imageCtx.effect(
|
|
94
|
+
() => () => middleware.dispose(),
|
|
95
|
+
"dsh-codex: remote image work",
|
|
96
|
+
)
|
|
97
|
+
})
|
|
98
|
+
}
|