@aexhq/sdk 0.22.0 → 0.23.0
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/dist/_contracts/models.d.ts +7 -0
- package/dist/_contracts/models.js +3 -0
- package/dist/_contracts/run-custody.js +24 -1
- package/dist/cli.mjs +16 -1
- package/dist/cli.mjs.sha256 +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -27,6 +27,9 @@ export declare const MODEL_PROVIDER_IDS: {
|
|
|
27
27
|
readonly "claude-3-5-sonnet-latest": {
|
|
28
28
|
readonly anthropic: "claude-3-5-sonnet-latest";
|
|
29
29
|
};
|
|
30
|
+
readonly "claude-sonnet-4-6": {
|
|
31
|
+
readonly anthropic: "claude-sonnet-4-6";
|
|
32
|
+
};
|
|
30
33
|
readonly "deepseek-v4-flash": {
|
|
31
34
|
readonly deepseek: "deepseek-v4-flash";
|
|
32
35
|
};
|
|
@@ -93,6 +96,8 @@ export declare const Models: {
|
|
|
93
96
|
readonly CLAUDE_3_5_HAIKU_LATEST: "claude-3-5-haiku-latest";
|
|
94
97
|
/** Claude 3.5 Sonnet (latest) — Anthropic. */
|
|
95
98
|
readonly CLAUDE_3_5_SONNET_LATEST: "claude-3-5-sonnet-latest";
|
|
99
|
+
/** Claude Sonnet 4.6 — Anthropic (1M context, reasoning-capable). */
|
|
100
|
+
readonly CLAUDE_SONNET_4_6: "claude-sonnet-4-6";
|
|
96
101
|
/** DeepSeek V4 Flash — DeepSeek (non-thinking, fast). */
|
|
97
102
|
readonly DEEPSEEK_V4_FLASH: "deepseek-v4-flash";
|
|
98
103
|
/** DeepSeek V4 Pro — DeepSeek (reasoning-heavy). */
|
|
@@ -148,6 +153,8 @@ export declare const RunModels: {
|
|
|
148
153
|
readonly CLAUDE_3_5_HAIKU_LATEST: "claude-3-5-haiku-latest";
|
|
149
154
|
/** Claude 3.5 Sonnet (latest) — Anthropic. */
|
|
150
155
|
readonly CLAUDE_3_5_SONNET_LATEST: "claude-3-5-sonnet-latest";
|
|
156
|
+
/** Claude Sonnet 4.6 — Anthropic (1M context, reasoning-capable). */
|
|
157
|
+
readonly CLAUDE_SONNET_4_6: "claude-sonnet-4-6";
|
|
151
158
|
/** DeepSeek V4 Flash — DeepSeek (non-thinking, fast). */
|
|
152
159
|
readonly DEEPSEEK_V4_FLASH: "deepseek-v4-flash";
|
|
153
160
|
/** DeepSeek V4 Pro — DeepSeek (reasoning-heavy). */
|
|
@@ -20,6 +20,7 @@ export const MODEL_PROVIDER_IDS = {
|
|
|
20
20
|
"claude-haiku-4-5": { anthropic: "claude-haiku-4-5" },
|
|
21
21
|
"claude-3-5-haiku-latest": { anthropic: "claude-3-5-haiku-latest" },
|
|
22
22
|
"claude-3-5-sonnet-latest": { anthropic: "claude-3-5-sonnet-latest" },
|
|
23
|
+
"claude-sonnet-4-6": { anthropic: "claude-sonnet-4-6" },
|
|
23
24
|
"deepseek-v4-flash": { deepseek: "deepseek-v4-flash" },
|
|
24
25
|
"deepseek-v4-pro": { deepseek: "deepseek-v4-pro" },
|
|
25
26
|
"deepseek-chat": { deepseek: "deepseek-chat" },
|
|
@@ -63,6 +64,8 @@ export const Models = {
|
|
|
63
64
|
CLAUDE_3_5_HAIKU_LATEST: "claude-3-5-haiku-latest",
|
|
64
65
|
/** Claude 3.5 Sonnet (latest) — Anthropic. */
|
|
65
66
|
CLAUDE_3_5_SONNET_LATEST: "claude-3-5-sonnet-latest",
|
|
67
|
+
/** Claude Sonnet 4.6 — Anthropic (1M context, reasoning-capable). */
|
|
68
|
+
CLAUDE_SONNET_4_6: "claude-sonnet-4-6",
|
|
66
69
|
/** DeepSeek V4 Flash — DeepSeek (non-thinking, fast). */
|
|
67
70
|
DEEPSEEK_V4_FLASH: "deepseek-v4-flash",
|
|
68
71
|
/** DeepSeek V4 Pro — DeepSeek (reasoning-heavy). */
|
|
@@ -445,7 +445,16 @@ const forbiddenStringPatterns = Object.freeze([
|
|
|
445
445
|
{ reason: "vault_id", regex: /\b(?:vault|vlt|secret)[_:-][A-Za-z0-9][A-Za-z0-9_-]{7,}\b/i },
|
|
446
446
|
{
|
|
447
447
|
reason: "private_resource_handle",
|
|
448
|
-
|
|
448
|
+
// `<keyword><sep><id>` opaque handles (`session_a1B2c3D4e5`, `file_9f8e7d…`).
|
|
449
|
+
// The keyword set overlaps ordinary English (agent/file/skill/resource/…), so
|
|
450
|
+
// the bare shape also matched documentation prose that simply chains those
|
|
451
|
+
// words with `_`/`-` (`agent_decision_failure`, `file_grounded`,
|
|
452
|
+
// `session_handoff_contract`, `agent-judgment` — read straight out of a
|
|
453
|
+
// skill-pack doc in tool-result text). The `accept` predicate keeps the shape
|
|
454
|
+
// but requires the id segment to look minted rather than spelled — i.e. carry
|
|
455
|
+
// a digit — so genuine handles stay flagged while dictionary-word prose does not.
|
|
456
|
+
regex: /\b(?:machine|session|agent|file|skill|env|resource|handle|token_hash|bearer_hash)[_:-][A-Za-z0-9][A-Za-z0-9_-]{7,}\b/i,
|
|
457
|
+
accept: isMintedResourceHandle
|
|
449
458
|
},
|
|
450
459
|
{
|
|
451
460
|
reason: "high_entropy_token",
|
|
@@ -487,6 +496,20 @@ function isHighEntropySecretRun(run) {
|
|
|
487
496
|
}
|
|
488
497
|
return highEntropyShannonBits(run) >= 3.0;
|
|
489
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Decide whether a `<keyword><sep><id>` shape-match is a genuinely minted private
|
|
501
|
+
* handle rather than dictionary-word prose. The id segment (everything after the
|
|
502
|
+
* first `_`/`-`/`:`) must carry a digit — the property that separates a minted
|
|
503
|
+
* opaque handle (`session_a1B2c3D4e5`, `file_9f8e7d6c5b4a`, `machine_1234567890`)
|
|
504
|
+
* from a chain of English words (`agent_decision_failure`, `file_grounded`). This
|
|
505
|
+
* mirrors `isHighEntropySecretRun`'s letter+digit requirement: a prefixless secret
|
|
506
|
+
* blob and a minted handle both carry digits; prose does not.
|
|
507
|
+
*/
|
|
508
|
+
function isMintedResourceHandle(match) {
|
|
509
|
+
const separatorIndex = match.search(/[_:-]/);
|
|
510
|
+
const id = match.slice(separatorIndex + 1);
|
|
511
|
+
return /\d/.test(id);
|
|
512
|
+
}
|
|
490
513
|
function highEntropyCharClassCount(value) {
|
|
491
514
|
let count = 0;
|
|
492
515
|
if (/[a-z]/.test(value))
|
package/dist/cli.mjs
CHANGED
|
@@ -162,6 +162,7 @@ var MODEL_PROVIDER_IDS = {
|
|
|
162
162
|
"claude-haiku-4-5": { anthropic: "claude-haiku-4-5" },
|
|
163
163
|
"claude-3-5-haiku-latest": { anthropic: "claude-3-5-haiku-latest" },
|
|
164
164
|
"claude-3-5-sonnet-latest": { anthropic: "claude-3-5-sonnet-latest" },
|
|
165
|
+
"claude-sonnet-4-6": { anthropic: "claude-sonnet-4-6" },
|
|
165
166
|
"deepseek-v4-flash": { deepseek: "deepseek-v4-flash" },
|
|
166
167
|
"deepseek-v4-pro": { deepseek: "deepseek-v4-pro" },
|
|
167
168
|
"deepseek-chat": { deepseek: "deepseek-chat" },
|
|
@@ -901,7 +902,16 @@ var forbiddenStringPatterns = Object.freeze([
|
|
|
901
902
|
{ reason: "vault_id", regex: /\b(?:vault|vlt|secret)[_:-][A-Za-z0-9][A-Za-z0-9_-]{7,}\b/i },
|
|
902
903
|
{
|
|
903
904
|
reason: "private_resource_handle",
|
|
904
|
-
|
|
905
|
+
// `<keyword><sep><id>` opaque handles (`session_a1B2c3D4e5`, `file_9f8e7d…`).
|
|
906
|
+
// The keyword set overlaps ordinary English (agent/file/skill/resource/…), so
|
|
907
|
+
// the bare shape also matched documentation prose that simply chains those
|
|
908
|
+
// words with `_`/`-` (`agent_decision_failure`, `file_grounded`,
|
|
909
|
+
// `session_handoff_contract`, `agent-judgment` — read straight out of a
|
|
910
|
+
// skill-pack doc in tool-result text). The `accept` predicate keeps the shape
|
|
911
|
+
// but requires the id segment to look minted rather than spelled — i.e. carry
|
|
912
|
+
// a digit — so genuine handles stay flagged while dictionary-word prose does not.
|
|
913
|
+
regex: /\b(?:machine|session|agent|file|skill|env|resource|handle|token_hash|bearer_hash)[_:-][A-Za-z0-9][A-Za-z0-9_-]{7,}\b/i,
|
|
914
|
+
accept: isMintedResourceHandle
|
|
905
915
|
},
|
|
906
916
|
{
|
|
907
917
|
reason: "high_entropy_token",
|
|
@@ -931,6 +941,11 @@ function isHighEntropySecretRun(run) {
|
|
|
931
941
|
}
|
|
932
942
|
return highEntropyShannonBits(run) >= 3;
|
|
933
943
|
}
|
|
944
|
+
function isMintedResourceHandle(match) {
|
|
945
|
+
const separatorIndex = match.search(/[_:-]/);
|
|
946
|
+
const id = match.slice(separatorIndex + 1);
|
|
947
|
+
return /\d/.test(id);
|
|
948
|
+
}
|
|
934
949
|
function highEntropyCharClassCount(value) {
|
|
935
950
|
let count = 0;
|
|
936
951
|
if (/[a-z]/.test(value))
|
package/dist/cli.mjs.sha256
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
37cb8db75fb0852134f1feae2b14bcea847d968f9fe13862c508f916366d1f85 cli.mjs
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aexhq/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "TypeScript SDK for running autonomous agent sessions across providers (Anthropic, OpenAI, DeepSeek, Gemini, Mistral) behind one interface.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"examples"
|
|
27
27
|
],
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@aexhq/contracts": "0.
|
|
29
|
+
"@aexhq/contracts": "0.23.0"
|
|
30
30
|
},
|
|
31
31
|
"engines": {
|
|
32
32
|
"node": ">=20"
|