@dsh-enhanced/coding-subscription-provider 0.1.4 → 0.1.6
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/README.md +60 -214
- package/cordis.patch.yml +3 -0
- package/lib/adapter.d.ts +1 -2
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +71 -31
- package/lib/adapter.js.map +1 -1
- package/lib/codex-direct-auth.d.ts +2 -1
- package/lib/codex-direct-auth.d.ts.map +1 -1
- package/lib/codex-direct-auth.js +33 -11
- package/lib/codex-direct-auth.js.map +1 -1
- package/lib/codex-direct-responses.d.ts +8 -1
- package/lib/codex-direct-responses.d.ts.map +1 -1
- package/lib/codex-direct-responses.js +191 -14
- package/lib/codex-direct-responses.js.map +1 -1
- package/lib/config.d.ts +3 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +9 -3
- package/lib/config.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/process.d.ts +14 -3
- package/lib/process.d.ts.map +1 -1
- package/lib/process.js +458 -61
- package/lib/process.js.map +1 -1
- package/lib/prompt.d.ts +12 -1
- package/lib/prompt.d.ts.map +1 -1
- package/lib/prompt.js +221 -5
- package/lib/prompt.js.map +1 -1
- package/lib/providers.d.ts +15 -2
- package/lib/providers.d.ts.map +1 -1
- package/lib/providers.js +134 -16
- package/lib/providers.js.map +1 -1
- package/lib/session-cwd.d.ts.map +1 -1
- package/lib/session-cwd.js +18 -3
- package/lib/session-cwd.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
package/lib/providers.js
CHANGED
|
@@ -1,32 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex 0.147 feature keys that can expose a provider-owned executor, lifecycle
|
|
3
|
+
* hook, skill/plugin instruction, or capability-discovery path. Keep this list
|
|
4
|
+
* mirrored by scripts/capture-cli-fixtures.mjs and covered by the exact argv
|
|
5
|
+
* tests below. The protocol decoder remains the final fail-closed boundary.
|
|
6
|
+
*/
|
|
7
|
+
export const CODEX_DISABLED_NATIVE_FEATURES = [
|
|
8
|
+
'shell_tool',
|
|
9
|
+
'shell_zsh_fork',
|
|
10
|
+
'unified_exec_zsh_fork',
|
|
11
|
+
'shell_snapshot',
|
|
12
|
+
'deferred_executor',
|
|
13
|
+
'js_repl',
|
|
14
|
+
'js_repl_tools_only',
|
|
15
|
+
'view_image',
|
|
16
|
+
'hooks',
|
|
17
|
+
'code_mode',
|
|
18
|
+
'code_mode_buffered_exec',
|
|
19
|
+
'code_mode_host',
|
|
20
|
+
'code_mode_only',
|
|
21
|
+
'web_search_request',
|
|
22
|
+
'web_search_cached',
|
|
23
|
+
'search_tool',
|
|
24
|
+
'memories',
|
|
25
|
+
'external_agent_memory_import',
|
|
26
|
+
'apply_patch_freeform',
|
|
27
|
+
'apply_patch_streaming_events',
|
|
28
|
+
'exec_permission_approvals',
|
|
29
|
+
'request_rule',
|
|
30
|
+
'multi_agent',
|
|
31
|
+
'multi_agent_v2',
|
|
32
|
+
'multi_agent_mode',
|
|
33
|
+
'collaboration_modes',
|
|
34
|
+
'apps',
|
|
35
|
+
'enable_mcp_apps',
|
|
36
|
+
'mcp_2026_07_28',
|
|
37
|
+
'apps_mcp_path_override',
|
|
38
|
+
'tool_search',
|
|
39
|
+
'deferred_tool_world_state',
|
|
40
|
+
'non_prefixed_mcp_tool_names',
|
|
41
|
+
'unavailable_dummy_tools',
|
|
42
|
+
'tool_suggest',
|
|
43
|
+
'recommended_plugins',
|
|
44
|
+
'plugins',
|
|
45
|
+
'executor_capability_discovery',
|
|
46
|
+
'plugin_hooks',
|
|
47
|
+
'in_app_browser',
|
|
48
|
+
'browser_use',
|
|
49
|
+
'browser_use_full_cdp_access',
|
|
50
|
+
'browser_use_external',
|
|
51
|
+
'computer_use',
|
|
52
|
+
'remote_plugin',
|
|
53
|
+
'plugin_sharing',
|
|
54
|
+
'image_generation',
|
|
55
|
+
'skill_mcp_dependency_install',
|
|
56
|
+
'skill_search',
|
|
57
|
+
'skill_env_var_dependency_prompt',
|
|
58
|
+
'standalone_web_search',
|
|
59
|
+
'default_mode_request_user_input',
|
|
60
|
+
'request_permissions_tool',
|
|
61
|
+
'token_budget',
|
|
62
|
+
'current_time_reminder',
|
|
63
|
+
'terminal_visualization_instructions',
|
|
64
|
+
'guardian_approval',
|
|
65
|
+
'guardianv2',
|
|
66
|
+
'goals',
|
|
67
|
+
'tool_call_mcp_elicitation',
|
|
68
|
+
'auth_elicitation',
|
|
69
|
+
'artifact',
|
|
70
|
+
'workspace_dependencies',
|
|
71
|
+
];
|
|
72
|
+
const codexDisabledNativeFeatureArgs = CODEX_DISABLED_NATIVE_FEATURES
|
|
73
|
+
.flatMap(feature => ['--disable', feature]);
|
|
74
|
+
/** Codex config paths that suppress repository-, skill-, and host-owned prompt/tool injection. */
|
|
75
|
+
export const CODEX_NATIVE_BOUNDARY_CONFIG_OVERRIDES = [
|
|
76
|
+
'project_doc_max_bytes=0',
|
|
77
|
+
'skills.include_instructions=false',
|
|
78
|
+
'skills.bundled.enabled=false',
|
|
79
|
+
'orchestrator.skills.enabled=false',
|
|
80
|
+
'orchestrator.mcp.enabled=false',
|
|
81
|
+
'include_apps_instructions=false',
|
|
82
|
+
'include_permissions_instructions=false',
|
|
83
|
+
'include_environment_context=false',
|
|
84
|
+
'include_collaboration_mode_instructions=false',
|
|
85
|
+
'tools.update_plan.enabled=false',
|
|
86
|
+
'tools.experimental_request_user_input.enabled=false',
|
|
87
|
+
'web_search="disabled"',
|
|
88
|
+
'agents.enabled=false',
|
|
89
|
+
];
|
|
90
|
+
const codexNativeBoundaryConfigArgs = CODEX_NATIVE_BOUNDARY_CONFIG_OVERRIDES
|
|
91
|
+
.flatMap(value => ['--config', value]);
|
|
1
92
|
export const providerPresets = {
|
|
2
93
|
codex: {
|
|
3
94
|
id: 'codex',
|
|
4
95
|
command: 'codex',
|
|
5
|
-
// Codex owns its own authenticated subscription session.
|
|
6
|
-
|
|
96
|
+
// Codex owns its own authenticated subscription session. Ignore local config/rules,
|
|
97
|
+
// remove known model-visible native capabilities, and keep residual built-ins read-only.
|
|
98
|
+
// The stdout decoder still rejects any native tool lifecycle event that escapes
|
|
99
|
+
// these best-effort launch boundaries.
|
|
100
|
+
args: [
|
|
101
|
+
'exec', '--json', '--ephemeral', '--ignore-user-config', '--ignore-rules',
|
|
102
|
+
// The cwd has already been reconstructed from the live Host session and
|
|
103
|
+
// compared by canonical realpath. The standard assistant workspace is
|
|
104
|
+
// intentionally not required to be a Git repository.
|
|
105
|
+
'--skip-git-repo-check',
|
|
106
|
+
...codexDisabledNativeFeatureArgs,
|
|
107
|
+
...codexNativeBoundaryConfigArgs,
|
|
108
|
+
'--sandbox', 'read-only',
|
|
109
|
+
],
|
|
7
110
|
output: 'ndjson',
|
|
8
111
|
},
|
|
9
112
|
claude: {
|
|
10
113
|
id: 'claude',
|
|
11
114
|
command: 'claude',
|
|
12
|
-
//
|
|
115
|
+
// Disable Claude-native tools; DSH calls return through the outer JSON bridge.
|
|
13
116
|
args: ['-p', '--output-format', 'stream-json', '--verbose', '--include-partial-messages', '--no-session-persistence', '--safe-mode', '--permission-mode', 'dontAsk', '--tools', ''],
|
|
14
117
|
output: 'ndjson',
|
|
15
118
|
},
|
|
16
119
|
cursor: {
|
|
17
120
|
id: 'cursor',
|
|
18
121
|
command: 'cursor-agent',
|
|
19
|
-
//
|
|
20
|
-
|
|
122
|
+
// Ask mode is the strongest current headless boundary. Intentionally never
|
|
123
|
+
// pass --force or another approval bypass; read-only search may still occur.
|
|
124
|
+
args: ['--print', '--output-format', 'stream-json', '--mode=ask'],
|
|
21
125
|
output: 'ndjson',
|
|
22
126
|
},
|
|
23
127
|
grok: {
|
|
24
128
|
id: 'grok',
|
|
25
129
|
command: 'grok',
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
// meta-tools to produce an actually empty tool set for this text-only route.
|
|
130
|
+
// Grok treats an empty --tools value as no filter, so allow then deny its
|
|
131
|
+
// always-on MCP meta-tools to produce an actually empty native tool set. DSH
|
|
132
|
+
// calls use the outer JSON bridge instead of Grok's internal executor.
|
|
30
133
|
args: [
|
|
31
134
|
'--output-format', 'streaming-json', '--permission-mode', 'dontAsk',
|
|
32
135
|
'--no-auto-update', '--no-memory', '--no-subagents', '--disable-web-search', '--verbatim',
|
|
@@ -35,11 +138,15 @@ export const providerPresets = {
|
|
|
35
138
|
output: 'ndjson',
|
|
36
139
|
},
|
|
37
140
|
};
|
|
38
|
-
export function buildInvocation(provider, options) {
|
|
141
|
+
export function buildInvocation(provider, options, _platform = process.platform) {
|
|
39
142
|
const preset = providerPresets[provider];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
143
|
+
// Grok 1.0.5 reopens its --prompt-file path instead of consuming the inherited
|
|
144
|
+
// stdin stream. `/dev/stdin` can therefore fail with ENXIO under child_process,
|
|
145
|
+
// so use the same private-file transport on every supported platform.
|
|
146
|
+
const promptTransport = provider === 'grok'
|
|
147
|
+
? 'secure-temporary-file'
|
|
148
|
+
: 'stdin';
|
|
149
|
+
const args = [...preset.args];
|
|
43
150
|
if (options.model && options.model !== 'default')
|
|
44
151
|
args.push('--model', options.model);
|
|
45
152
|
if (provider === 'codex' && options.reasoningEffort) {
|
|
@@ -54,8 +161,19 @@ export function buildInvocation(provider, options) {
|
|
|
54
161
|
if (options.maxTurns !== undefined && (provider === 'claude' || provider === 'grok')) {
|
|
55
162
|
args.push('--max-turns', String(options.maxTurns));
|
|
56
163
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
164
|
+
// Use the documented positional sentinel even though some Codex releases
|
|
165
|
+
// also infer stdin when PROMPT is omitted. Keeping it last prevents a future
|
|
166
|
+
// parser change from treating a following option as prompt content.
|
|
167
|
+
if (provider === 'codex')
|
|
168
|
+
args.push('-');
|
|
169
|
+
return {
|
|
170
|
+
provider,
|
|
171
|
+
command: options.command ?? preset.command,
|
|
172
|
+
args,
|
|
173
|
+
prompt: options.prompt,
|
|
174
|
+
promptTransport,
|
|
175
|
+
cwd: options.cwd,
|
|
176
|
+
shell: false,
|
|
177
|
+
};
|
|
60
178
|
}
|
|
61
179
|
//# sourceMappingURL=providers.js.map
|
package/lib/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
package/lib/session-cwd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-cwd.d.ts","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAEpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/E;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAIhD;
|
|
1
|
+
{"version":3,"file":"session-cwd.d.ts","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAEpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/E;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAIhD;AAkBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,eAAe,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,EAAE,wBAAwB,CAAA;CACpC,GAAG,MAAM,CAsBT"}
|
package/lib/session-cwd.js
CHANGED
|
@@ -16,21 +16,36 @@ function canonicalDirectory(path) {
|
|
|
16
16
|
throw new TrustedSessionCwdError();
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
function ownEnumerableDataField(value, key) {
|
|
20
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
21
|
+
if (descriptor === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value'))
|
|
24
|
+
throw new TrustedSessionCwdError();
|
|
25
|
+
return descriptor;
|
|
26
|
+
}
|
|
19
27
|
/**
|
|
20
28
|
* Resolves the only cwd a local coding process may receive for this request.
|
|
21
29
|
* A same-module marker or the Host-owned exact live-agent proof is mandatory;
|
|
22
30
|
* copied request fields or a persisted/stale session id cannot select a path.
|
|
23
31
|
*/
|
|
24
32
|
export function resolveTrustedSessionCwd(input) {
|
|
25
|
-
const sessionId = input.request
|
|
26
|
-
if (sessionId
|
|
33
|
+
const sessionId = ownEnumerableDataField(input.request, 'sessionId')?.value;
|
|
34
|
+
if (typeof sessionId !== 'string' || sessionId.length === 0 || sessionId.length > 512) {
|
|
27
35
|
throw new TrustedSessionCwdError();
|
|
28
36
|
}
|
|
29
37
|
const session = input.sessions?.get(sessionId);
|
|
30
38
|
if (session === undefined || session.id !== sessionId || typeof session.header.cwd !== 'string') {
|
|
31
39
|
throw new TrustedSessionCwdError();
|
|
32
40
|
}
|
|
33
|
-
const
|
|
41
|
+
const purpose = ownEnumerableDataField(input.request, 'purpose');
|
|
42
|
+
const hasPurpose = purpose !== undefined;
|
|
43
|
+
const loopOwned = hasPurpose
|
|
44
|
+
? purpose.value === 'compaction'
|
|
45
|
+
&& input.attestor?.claimCompaction?.(input.request, session) === true
|
|
46
|
+
&& Object.isFrozen(input.request)
|
|
47
|
+
: Object.isFrozen(input.request)
|
|
48
|
+
&& (isAgentLoopRequest(input.request) || input.attestor?.claim(input.request, session) === true);
|
|
34
49
|
if (!loopOwned)
|
|
35
50
|
throw new TrustedSessionCwdError();
|
|
36
51
|
const configuredCwd = canonicalDirectory(input.configuredCwd);
|
package/lib/session-cwd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-cwd.js","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAA;AAY/E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,wEAAwE,CAAC,CAAA;IACjF,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"session-cwd.js","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAA;AAY/E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,wEAAwE,CAAC,CAAA;IACjF,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,GAAW;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9D,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACrG,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAKxC;IACC,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,KAAqC,CAAA;IAC3G,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtF,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChG,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAChE,MAAM,UAAU,GAAG,OAAO,KAAK,SAAS,CAAA;IACxC,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,YAAY;eAC3B,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI;eAClE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;eAC3B,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAA;IACpG,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzD,IAAI,aAAa,KAAK,UAAU;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpE,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.1.
|
|
1
|
+
export declare const version = "0.1.6";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '0.1.
|
|
1
|
+
export const version = '0.1.6';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-enhanced/coding-subscription-provider",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Use locally authenticated coding subscriptions as DeepSeek Harness model providers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@deepseek-ai/schemastery": "3.18.1",
|
|
51
|
-
"@dsh-enhanced/llm-route-capabilities": "0.1.
|
|
51
|
+
"@dsh-enhanced/llm-route-capabilities": "0.1.6"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"@deepseek-ai/cordis": "^4.0.1",
|