@armoriq/sdk-dev 0.8.8 → 0.8.9
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/_version.d.ts +1 -1
- package/dist/_version.js +1 -1
- package/dist/client.d.ts +0 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +27 -63
- package/dist/client.js.map +1 -1
- package/dist/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +8 -4
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/google_adk.d.ts.map +1 -1
- package/dist/integrations/google_adk.js +11 -20
- package/dist/integrations/google_adk.js.map +1 -1
- package/dist/integrations/langchain.d.ts +1 -3
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +32 -32
- package/dist/integrations/langchain.js.map +1 -1
- package/dist/integrations/strands.d.ts.map +1 -1
- package/dist/integrations/strands.js +3 -12
- package/dist/integrations/strands.js.map +1 -1
- package/dist/observability/content-capture.d.ts +1 -1
- package/dist/observability/content-capture.d.ts.map +1 -1
- package/dist/observability/content-capture.js +74 -20
- package/dist/observability/content-capture.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/otel-config.d.ts.map +1 -1
- package/dist/observability/otel-config.js +2 -3
- package/dist/observability/otel-config.js.map +1 -1
- package/dist/observability/otel-runtime.d.ts +18 -5
- package/dist/observability/otel-runtime.d.ts.map +1 -1
- package/dist/observability/otel-runtime.js +93 -29
- package/dist/observability/otel-runtime.js.map +1 -1
- package/dist/observability/otel-session.d.ts +16 -3
- package/dist/observability/otel-session.d.ts.map +1 -1
- package/dist/observability/otel-session.js +74 -22
- package/dist/observability/otel-session.js.map +1 -1
- package/dist/observability/otel-shutdown.d.ts +2 -0
- package/dist/observability/otel-shutdown.d.ts.map +1 -1
- package/dist/observability/otel-shutdown.js +73 -9
- package/dist/observability/otel-shutdown.js.map +1 -1
- package/dist/observability/otel-spool-export.d.ts +3 -2
- package/dist/observability/otel-spool-export.d.ts.map +1 -1
- package/dist/observability/otel-spool-export.js +6 -1
- package/dist/observability/otel-spool-export.js.map +1 -1
- package/dist/observability/policy-lease.d.ts +1 -1
- package/dist/observability/policy-lease.d.ts.map +1 -1
- package/dist/observability/policy-lease.js +1 -1
- package/dist/observability/policy-lease.js.map +1 -1
- package/dist/observability/sensitive-text.d.ts +8 -0
- package/dist/observability/sensitive-text.d.ts.map +1 -0
- package/dist/observability/sensitive-text.js +96 -0
- package/dist/observability/sensitive-text.js.map +1 -0
- package/dist/proxy_error.d.ts +3 -0
- package/dist/proxy_error.d.ts.map +1 -0
- package/dist/proxy_error.js +20 -0
- package/dist/proxy_error.js.map +1 -0
- package/dist/session.d.ts +18 -9
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +81 -43
- package/dist/session.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-lease.d.ts","sourceRoot":"","sources":["../../src/observability/policy-lease.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;CACtC;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAcD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CA+C9D;AAwBD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAU3F;AAoBD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQ7B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,IAAI,
|
|
1
|
+
{"version":3,"file":"policy-lease.d.ts","sourceRoot":"","sources":["../../src/observability/policy-lease.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;CACtC;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAcD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CA+C9D;AAwBD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAU3F;AAoBD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQ7B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,mBAAmB,IAAI,WAAW,CAYjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE1D"}
|
|
@@ -130,7 +130,7 @@ async function readStoredPolicyLease(store, binding, signal) {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
function writeStoredPolicyLease(store, lease, binding, signal) {
|
|
133
|
-
|
|
133
|
+
return withinStoreDeadline(() => store.write(serializePolicyLease(lease, binding)), signal);
|
|
134
134
|
}
|
|
135
135
|
function fallbackPolicyLease() {
|
|
136
136
|
return Object.freeze({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-lease.js","sourceRoot":"","sources":["../../src/observability/policy-lease.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policy-lease.js","sourceRoot":"","sources":["../../src/observability/policy-lease.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type Span = readonly [number, number];
|
|
2
|
+
export declare function emailSpans(value: string): Span[];
|
|
3
|
+
export declare function jwtSpans(value: string): Span[];
|
|
4
|
+
export declare function signedUrlSpans(value: string): Span[];
|
|
5
|
+
export declare function replaceSpans(value: string, spans: readonly Span[], replacement: string): string;
|
|
6
|
+
export declare function containsCredential(value: string): boolean;
|
|
7
|
+
export declare function containsEmail(value: string): boolean;
|
|
8
|
+
//# sourceMappingURL=sensitive-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensitive-text.d.ts","sourceRoot":"","sources":["../../src/observability/sensitive-text.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAyB7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAYhD;AAQD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAe9C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CASpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ/F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emailSpans = emailSpans;
|
|
4
|
+
exports.jwtSpans = jwtSpans;
|
|
5
|
+
exports.signedUrlSpans = signedUrlSpans;
|
|
6
|
+
exports.replaceSpans = replaceSpans;
|
|
7
|
+
exports.containsCredential = containsCredential;
|
|
8
|
+
exports.containsEmail = containsEmail;
|
|
9
|
+
const CREDENTIAL_TOKEN = /(?:(?<![A-Za-z0-9])(?:ak|sk|pk|rk|ghp|github_pat)_[A-Za-z0-9_-]{12,}\b|-----BEGIN [A-Z0-9 ]+-----)/i;
|
|
10
|
+
const WORD_CHAR = /\w/;
|
|
11
|
+
const EMAIL_LOCAL_CHAR = /[A-Za-z0-9._%+-]/;
|
|
12
|
+
const EMAIL_DOMAIN = /[A-Z0-9.-]+\.[A-Z]{2,}\b/iy;
|
|
13
|
+
const JWT_START = /(?<![A-Za-z0-9])eyJ/gi;
|
|
14
|
+
const JWT_SEGMENT_CHAR = /[A-Za-z0-9_-]/;
|
|
15
|
+
const JWT_TAIL = /\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/y;
|
|
16
|
+
const URL_RUN = /[^\s"'<>]+/g;
|
|
17
|
+
const URL_SCHEME = /https?:\/\//i;
|
|
18
|
+
const URL_SIGNATURE = /[?&](?:x-amz-signature|signature|sig|token|access_token)=/i;
|
|
19
|
+
function wordBoundary(value, index) {
|
|
20
|
+
return WORD_CHAR.test(value[index - 1] ?? '') !== WORD_CHAR.test(value[index] ?? '');
|
|
21
|
+
}
|
|
22
|
+
function emailStart(value, from, at) {
|
|
23
|
+
let start = at;
|
|
24
|
+
while (start > from && EMAIL_LOCAL_CHAR.test(value[start - 1]))
|
|
25
|
+
start -= 1;
|
|
26
|
+
while (start < at && !wordBoundary(value, start))
|
|
27
|
+
start += 1;
|
|
28
|
+
return start;
|
|
29
|
+
}
|
|
30
|
+
function emailSpans(value) {
|
|
31
|
+
const spans = [];
|
|
32
|
+
let searched = 0;
|
|
33
|
+
for (let at = value.indexOf('@'); at >= 0; at = value.indexOf('@', Math.max(at + 1, searched))) {
|
|
34
|
+
const start = emailStart(value, searched, at);
|
|
35
|
+
if (start === at)
|
|
36
|
+
continue;
|
|
37
|
+
EMAIL_DOMAIN.lastIndex = at + 1;
|
|
38
|
+
if (!EMAIL_DOMAIN.test(value))
|
|
39
|
+
continue;
|
|
40
|
+
spans.push([start, EMAIL_DOMAIN.lastIndex]);
|
|
41
|
+
searched = EMAIL_DOMAIN.lastIndex;
|
|
42
|
+
}
|
|
43
|
+
return spans;
|
|
44
|
+
}
|
|
45
|
+
function segmentEnd(value, from) {
|
|
46
|
+
let end = from;
|
|
47
|
+
while (end < value.length && JWT_SEGMENT_CHAR.test(value[end]))
|
|
48
|
+
end += 1;
|
|
49
|
+
return end;
|
|
50
|
+
}
|
|
51
|
+
function jwtSpans(value) {
|
|
52
|
+
const spans = [];
|
|
53
|
+
let examined = 0;
|
|
54
|
+
JWT_START.lastIndex = 0;
|
|
55
|
+
for (let match = JWT_START.exec(value); match; match = JWT_START.exec(value)) {
|
|
56
|
+
if (match.index < examined)
|
|
57
|
+
continue;
|
|
58
|
+
const headerEnd = segmentEnd(value, match.index + 3);
|
|
59
|
+
examined = headerEnd;
|
|
60
|
+
if (headerEnd - match.index < 8)
|
|
61
|
+
continue;
|
|
62
|
+
JWT_TAIL.lastIndex = headerEnd;
|
|
63
|
+
if (!JWT_TAIL.test(value))
|
|
64
|
+
continue;
|
|
65
|
+
spans.push([match.index, JWT_TAIL.lastIndex]);
|
|
66
|
+
JWT_START.lastIndex = JWT_TAIL.lastIndex;
|
|
67
|
+
}
|
|
68
|
+
return spans;
|
|
69
|
+
}
|
|
70
|
+
function signedUrlSpans(value) {
|
|
71
|
+
const spans = [];
|
|
72
|
+
URL_RUN.lastIndex = 0;
|
|
73
|
+
for (let run = URL_RUN.exec(value); run; run = URL_RUN.exec(value)) {
|
|
74
|
+
const scheme = URL_SCHEME.exec(run[0]);
|
|
75
|
+
if (!scheme || !URL_SIGNATURE.test(run[0].slice(scheme.index + scheme[0].length)))
|
|
76
|
+
continue;
|
|
77
|
+
spans.push([run.index + scheme.index, run.index + run[0].length]);
|
|
78
|
+
}
|
|
79
|
+
return spans;
|
|
80
|
+
}
|
|
81
|
+
function replaceSpans(value, spans, replacement) {
|
|
82
|
+
let result = '';
|
|
83
|
+
let copied = 0;
|
|
84
|
+
for (const [start, end] of spans) {
|
|
85
|
+
result += value.slice(copied, start) + replacement;
|
|
86
|
+
copied = end;
|
|
87
|
+
}
|
|
88
|
+
return result + value.slice(copied);
|
|
89
|
+
}
|
|
90
|
+
function containsCredential(value) {
|
|
91
|
+
return CREDENTIAL_TOKEN.test(value) || jwtSpans(value).length > 0;
|
|
92
|
+
}
|
|
93
|
+
function containsEmail(value) {
|
|
94
|
+
return emailSpans(value).length > 0;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=sensitive-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensitive-text.js","sourceRoot":"","sources":["../../src/observability/sensitive-text.ts"],"names":[],"mappings":";;AAyBA,gCAYC;AAQD,4BAeC;AAED,wCASC;AAED,oCAQC;AAED,gDAEC;AAED,sCAEC;AAvFD,MAAM,gBAAgB,GAAG,qGAAqG,CAAC;AAE/H,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAClD,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAC1C,MAAM,gBAAgB,GAAG,eAAe,CAAC;AACzC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AACvD,MAAM,OAAO,GAAG,aAAa,CAAC;AAC9B,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,aAAa,GAAG,4DAA4D,CAAC;AAEnF,SAAS,YAAY,CAAC,KAAa,EAAE,KAAa;IAChD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,IAAY,EAAE,EAAU;IACzD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,OAAO,KAAK,GAAG,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAC3E,OAAO,KAAK,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QAC3B,YAAY,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACxC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,IAAY;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,IAAI,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAa;IACpC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,CAAC,KAAK,GAAG,QAAQ;YAAE,SAAS;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,QAAQ,GAAG,SAAS,CAAC;QACrB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;YAAE,SAAS;QAC1C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAAE,SAAS;QAC5F,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa,EAAE,KAAsB,EAAE,WAAmB;IACrF,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;QACnD,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IACD,OAAO,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy_error.d.ts","sourceRoot":"","sources":["../src/proxy_error.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAGhF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.proxyUnreachable = proxyUnreachable;
|
|
4
|
+
exports.proxyRejected = proxyRejected;
|
|
5
|
+
const MAX_BODY = 300;
|
|
6
|
+
function bodyText(body) {
|
|
7
|
+
if (body === undefined || body === null || body === '')
|
|
8
|
+
return '';
|
|
9
|
+
const text = typeof body === 'string' ? body.trim() : JSON.stringify(body);
|
|
10
|
+
return text.length > MAX_BODY ? `${text.slice(0, MAX_BODY)}...` : text;
|
|
11
|
+
}
|
|
12
|
+
function proxyUnreachable(url, error) {
|
|
13
|
+
const e = error;
|
|
14
|
+
return `could not reach proxy ${url} (${e?.message || e?.code || String(error)})`;
|
|
15
|
+
}
|
|
16
|
+
function proxyRejected(url, status, body) {
|
|
17
|
+
const detail = bodyText(body);
|
|
18
|
+
return `proxy ${url} returned HTTP ${status}${detail ? `: ${detail}` : ''}`;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=proxy_error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy_error.js","sourceRoot":"","sources":["../src/proxy_error.ts"],"names":[],"mappings":";;AAQA,4CAGC;AAED,sCAGC;AAhBD,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,SAAS,QAAQ,CAAC,IAAa;IAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAW,EAAE,KAAc;IAC1D,MAAM,CAAC,GAAG,KAAwD,CAAC;IACnE,OAAO,yBAAyB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACpF,CAAC;AAED,SAAgB,aAAa,CAAC,GAAW,EAAE,MAAc,EAAE,IAAa;IACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,SAAS,GAAG,kBAAkB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* 1. Observe mode (default, local) — MCP stays on the agent side:
|
|
7
7
|
* session.startPlan(toolCalls);
|
|
8
|
-
* const decision = session.enforce(toolName, toolArgs);
|
|
8
|
+
* const decision = await session.enforce(toolName, toolArgs);
|
|
9
9
|
* // ... framework calls MCP directly ...
|
|
10
|
-
* await session.report(toolName, toolArgs, result);
|
|
10
|
+
* await session.report(toolName, toolArgs, result, { toolCallId: decision.toolCallId });
|
|
11
11
|
*
|
|
12
12
|
* 2. Proxy mode — routes through the Armoriq proxy:
|
|
13
13
|
* session.startPlan(toolCalls);
|
|
@@ -17,7 +17,7 @@ import { ArmorIQClient } from './client';
|
|
|
17
17
|
import { IntentToken, ToolCall } from './models';
|
|
18
18
|
import { ToolNameParser } from './plan_builder';
|
|
19
19
|
import { OtelSession, type ObservabilityOptions, type OtelTerminalStatus, type TelemetryContent } from './observability';
|
|
20
|
-
import type { OperationInput } from './observability/otel-session';
|
|
20
|
+
import type { OperationInput, PolicyResult } from './observability/otel-session';
|
|
21
21
|
export type SessionMode = 'local' | 'proxy' | 'sdk';
|
|
22
22
|
export interface SessionOptions {
|
|
23
23
|
toolNameParser?: ToolNameParser;
|
|
@@ -107,7 +107,13 @@ export interface EnforceResult {
|
|
|
107
107
|
* Defaults to an empty list when the backend does not supply any.
|
|
108
108
|
*/
|
|
109
109
|
obligations?: PolicyObligation[];
|
|
110
|
+
toolCallId?: string;
|
|
111
|
+
enforcementFailed?: boolean;
|
|
112
|
+
reasonCode?: string;
|
|
110
113
|
}
|
|
114
|
+
export declare function isEnforcementFailure(decision: Pick<EnforceResult, 'enforcementFailed'>): boolean;
|
|
115
|
+
export declare function enforcementFailureResult(): PolicyResult;
|
|
116
|
+
export declare function policyResultFor(decision: EnforceResult): PolicyResult;
|
|
111
117
|
/**
|
|
112
118
|
* Normalize a policy-authoring default-enforcement-action value into the
|
|
113
119
|
* SDK-facing terminal enum. Mirrors the backend's enforce-boundary normalization
|
|
@@ -116,7 +122,10 @@ export interface EnforceResult {
|
|
|
116
122
|
* Anything unknown fails closed to `block`.
|
|
117
123
|
*/
|
|
118
124
|
export declare function normalizeDefaultAction(value: unknown): 'allow' | 'block' | 'hold';
|
|
119
|
-
export interface
|
|
125
|
+
export interface ToolCallOptions {
|
|
126
|
+
toolCallId?: string;
|
|
127
|
+
}
|
|
128
|
+
export interface ReportOptions extends ToolCallOptions {
|
|
120
129
|
status?: 'success' | 'failed' | 'error';
|
|
121
130
|
errorMessage?: string;
|
|
122
131
|
durationMs?: number;
|
|
@@ -128,7 +137,7 @@ export interface ReportOptions {
|
|
|
128
137
|
/** A framework lifecycle already owns the native OTel tool span. */
|
|
129
138
|
emitOtel?: boolean;
|
|
130
139
|
}
|
|
131
|
-
interface PolicyTelemetryOptions {
|
|
140
|
+
interface PolicyTelemetryOptions extends ToolCallOptions {
|
|
132
141
|
/** Framework adapters own richer policy span context and suppress the core span. */
|
|
133
142
|
emitOtel?: boolean;
|
|
134
143
|
}
|
|
@@ -188,7 +197,7 @@ export declare class ArmorIQSession {
|
|
|
188
197
|
private getIntentTokenCall;
|
|
189
198
|
startPlan(toolCalls: ToolCallInput[], goal?: string): Promise<IntentToken>;
|
|
190
199
|
private _startPlanImpl;
|
|
191
|
-
enforceLocal(toolName: string, toolArgs: Record<string, unknown
|
|
200
|
+
enforceLocal(toolName: string, toolArgs: Record<string, unknown>, options?: ToolCallOptions): EnforceResult;
|
|
192
201
|
private _enforceLocalImpl;
|
|
193
202
|
/**
|
|
194
203
|
* A server named in the tool itself wins; the plan's action map only answers
|
|
@@ -207,18 +216,18 @@ export declare class ArmorIQSession {
|
|
|
207
216
|
/** `toolsSnapshotHash` when this client has an inventory; conmap answers `inventoryUnknown` if it holds no snapshot under it. */
|
|
208
217
|
private snapshotHashField;
|
|
209
218
|
private inventoryFields;
|
|
210
|
-
enforceSdk(toolName: string, toolArgs: Record<string, unknown>, userEmail?: string): Promise<EnforceResult>;
|
|
219
|
+
enforceSdk(toolName: string, toolArgs: Record<string, unknown>, userEmail?: string, options?: ToolCallOptions): Promise<EnforceResult>;
|
|
211
220
|
private _enforceSdkImpl;
|
|
212
221
|
/** Declare the tool definitions this session's model calls carry; the OpenAI instrumentation does this automatically. */
|
|
213
222
|
declareModelTools(tools: unknown[]): void;
|
|
214
|
-
enforce(toolName: string, toolArgs: Record<string, unknown
|
|
223
|
+
enforce(toolName: string, toolArgs: Record<string, unknown>, options?: ToolCallOptions): Promise<EnforceResult>;
|
|
215
224
|
private _enforceImpl;
|
|
216
225
|
check(toolName: string, toolArgs: Record<string, unknown>, userEmail?: string, telemetry?: PolicyTelemetryOptions): Promise<EnforceResult>;
|
|
217
226
|
private recordPolicyDecision;
|
|
218
227
|
private trackPolicyTelemetry;
|
|
219
228
|
private drainPolicyTelemetry;
|
|
220
229
|
report(toolName: string, toolArgs: Record<string, unknown>, result: unknown, opts?: ReportOptions): Promise<void>;
|
|
221
|
-
dispatch(toolName: string, toolArgs: Record<string, unknown
|
|
230
|
+
dispatch(toolName: string, toolArgs: Record<string, unknown>, options?: ToolCallOptions): Promise<unknown>;
|
|
222
231
|
private handleHold;
|
|
223
232
|
/**
|
|
224
233
|
* Poll a held delegation until it is decided; non-blocking (async).
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* 1. Observe mode (default, local) — MCP stays on the agent side:
|
|
8
8
|
* session.startPlan(toolCalls);
|
|
9
|
-
* const decision = session.enforce(toolName, toolArgs);
|
|
9
|
+
* const decision = await session.enforce(toolName, toolArgs);
|
|
10
10
|
* // ... framework calls MCP directly ...
|
|
11
|
-
* await session.report(toolName, toolArgs, result);
|
|
11
|
+
* await session.report(toolName, toolArgs, result, { toolCallId: decision.toolCallId });
|
|
12
12
|
*
|
|
13
13
|
* 2. Proxy mode — routes through the Armoriq proxy:
|
|
14
14
|
* session.startPlan(toolCalls);
|
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.ArmorIQSession = void 0;
|
|
19
|
+
exports.isEnforcementFailure = isEnforcementFailure;
|
|
20
|
+
exports.enforcementFailureResult = enforcementFailureResult;
|
|
21
|
+
exports.policyResultFor = policyResultFor;
|
|
19
22
|
exports.normalizeDefaultAction = normalizeDefaultAction;
|
|
20
23
|
const crypto_1 = require("crypto");
|
|
21
24
|
const tool_push_1 = require("./tool_push");
|
|
@@ -24,10 +27,52 @@ const openai_1 = require("./integrations/openai");
|
|
|
24
27
|
const tool_registry_1 = require("./tool_registry");
|
|
25
28
|
const crypto_verify_1 = require("./crypto_verify");
|
|
26
29
|
const exceptions_1 = require("./exceptions");
|
|
30
|
+
const proxy_error_1 = require("./proxy_error");
|
|
27
31
|
const models_1 = require("./models");
|
|
28
32
|
const plan_builder_1 = require("./plan_builder");
|
|
29
33
|
const observability_1 = require("./observability");
|
|
30
34
|
const _version_1 = require("./_version");
|
|
35
|
+
function withToolCallId(decision, options) {
|
|
36
|
+
return { ...decision, toolCallId: options.toolCallId || mintToolCallId() };
|
|
37
|
+
}
|
|
38
|
+
function mintToolCallId() {
|
|
39
|
+
return `call-${Array.from({ length: 20 }, () => String.fromCharCode(97 + (0, crypto_1.randomInt)(26))).join('')}`;
|
|
40
|
+
}
|
|
41
|
+
function isEnforcementFailure(decision) {
|
|
42
|
+
return decision.enforcementFailed === true;
|
|
43
|
+
}
|
|
44
|
+
function textField(value) {
|
|
45
|
+
return typeof value === 'string' ? value : undefined;
|
|
46
|
+
}
|
|
47
|
+
function enforceEndpointFailure(response) {
|
|
48
|
+
if (response.status < 400)
|
|
49
|
+
return undefined;
|
|
50
|
+
const data = response.data ?? {};
|
|
51
|
+
return {
|
|
52
|
+
allowed: false,
|
|
53
|
+
action: 'block',
|
|
54
|
+
reason: data.reason ?? data.message ?? `enforce-rejected: HTTP ${response.status}`,
|
|
55
|
+
enforcementFailed: true,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function enforcementFailureResult() {
|
|
59
|
+
return { error: new Error('policy evaluation failed'), policyReasonCode: 'enforcement_error' };
|
|
60
|
+
}
|
|
61
|
+
function policyResultFor(decision) {
|
|
62
|
+
if (isEnforcementFailure(decision))
|
|
63
|
+
return enforcementFailureResult();
|
|
64
|
+
const policy = decision;
|
|
65
|
+
return {
|
|
66
|
+
decision: decision.allowed ? 'allow' : decision.action === 'hold' ? 'hold' : 'block',
|
|
67
|
+
policyName: decision.matchedPolicy,
|
|
68
|
+
...(textField(policy.policyId) ? { policyId: textField(policy.policyId) } : {}),
|
|
69
|
+
policyVersion: textField(policy.policyVersion),
|
|
70
|
+
policySource: textField(policy.policySource),
|
|
71
|
+
policyReasonCode: decision.reasonCode ?? decision.reason,
|
|
72
|
+
defaultAction: textField(policy.defaultAction),
|
|
73
|
+
matchedRuleId: textField(policy.matchedRuleId),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
31
76
|
function isValidUuid(value) {
|
|
32
77
|
return (typeof value === 'string' &&
|
|
33
78
|
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value));
|
|
@@ -63,7 +108,7 @@ function realIdentity(value) {
|
|
|
63
108
|
return !value || value === MULTIUSER_PLACEHOLDER ? undefined : value;
|
|
64
109
|
}
|
|
65
110
|
const AUDIT_LABEL = /^[A-Za-z0-9][A-Za-z0-9._:/+-]{0,127}$/;
|
|
66
|
-
const AUDIT_SECRET = /(
|
|
111
|
+
const AUDIT_SECRET = /(?:(?<![A-Za-z0-9])eyJ[A-Za-z0-9_-]{5,}\.|(?<![A-Za-z0-9])(?:ak|sk|pk|rk|ghp|github_pat)_[A-Za-z0-9_-]{8,}\b|bearer|secret|password|credential|private[_-]?key)/i;
|
|
67
112
|
function safeAuditLabel(value) {
|
|
68
113
|
return typeof value === 'string' && AUDIT_LABEL.test(value) && !AUDIT_SECRET.test(value)
|
|
69
114
|
? value
|
|
@@ -78,6 +123,7 @@ function auditPersistencePayload(input) {
|
|
|
78
123
|
const action = safeAuditLabel(input.action);
|
|
79
124
|
return {
|
|
80
125
|
plan_id: safeAuditLabel(input.token?.planId),
|
|
126
|
+
...(input.agentId ? { agent_id: safeAuditLabel(input.agentId) } : {}),
|
|
81
127
|
step_index: Number.isFinite(input.stepIndex) && input.stepIndex >= 0 ? Math.floor(input.stepIndex) : 0,
|
|
82
128
|
action,
|
|
83
129
|
tool: action,
|
|
@@ -313,8 +359,8 @@ class ArmorIQSession {
|
|
|
313
359
|
return token;
|
|
314
360
|
}
|
|
315
361
|
// ─── Policy enforcement ────────────────────────────────────────
|
|
316
|
-
enforceLocal(toolName, toolArgs) {
|
|
317
|
-
const decision = this._enforceLocalImpl(toolName, toolArgs);
|
|
362
|
+
enforceLocal(toolName, toolArgs, options = {}) {
|
|
363
|
+
const decision = withToolCallId(this._enforceLocalImpl(toolName, toolArgs), options);
|
|
318
364
|
this.trackPolicyTelemetry(this.recordPolicyDecision(toolName, toolArgs, decision));
|
|
319
365
|
return decision;
|
|
320
366
|
}
|
|
@@ -487,8 +533,8 @@ class ArmorIQSession {
|
|
|
487
533
|
}
|
|
488
534
|
return fields;
|
|
489
535
|
}
|
|
490
|
-
async enforceSdk(toolName, toolArgs, userEmail) {
|
|
491
|
-
const decision = await this._enforceSdkImpl(toolName, toolArgs, userEmail);
|
|
536
|
+
async enforceSdk(toolName, toolArgs, userEmail, options = {}) {
|
|
537
|
+
const decision = withToolCallId(await this._enforceSdkImpl(toolName, toolArgs, userEmail), options);
|
|
492
538
|
await this.recordPolicyDecision(toolName, toolArgs, decision);
|
|
493
539
|
return decision;
|
|
494
540
|
}
|
|
@@ -527,6 +573,9 @@ class ArmorIQSession {
|
|
|
527
573
|
headers: { 'X-API-Key': internals.apiKey, 'Content-Type': 'application/json' },
|
|
528
574
|
timeout: 10000,
|
|
529
575
|
});
|
|
576
|
+
const failure = enforceEndpointFailure(response);
|
|
577
|
+
if (failure)
|
|
578
|
+
return failure;
|
|
530
579
|
const data = response.data ?? {};
|
|
531
580
|
if (data.inventoryUnknown === true)
|
|
532
581
|
(0, tool_push_1.requestPush)(this.client);
|
|
@@ -562,6 +611,7 @@ class ArmorIQSession {
|
|
|
562
611
|
allowed: false,
|
|
563
612
|
action: 'block',
|
|
564
613
|
reason: `enforce-unavailable: ${e.message}`,
|
|
614
|
+
enforcementFailed: true,
|
|
565
615
|
};
|
|
566
616
|
}
|
|
567
617
|
}
|
|
@@ -569,8 +619,8 @@ class ArmorIQSession {
|
|
|
569
619
|
declareModelTools(tools) {
|
|
570
620
|
(0, openai_1.declareModelTools)(this.client, tools);
|
|
571
621
|
}
|
|
572
|
-
async enforce(toolName, toolArgs) {
|
|
573
|
-
const decision = await this._enforceImpl(toolName, toolArgs);
|
|
622
|
+
async enforce(toolName, toolArgs, options = {}) {
|
|
623
|
+
const decision = withToolCallId(await this._enforceImpl(toolName, toolArgs), options);
|
|
574
624
|
await this.recordPolicyDecision(toolName, toolArgs, decision);
|
|
575
625
|
return decision;
|
|
576
626
|
}
|
|
@@ -591,6 +641,7 @@ class ArmorIQSession {
|
|
|
591
641
|
};
|
|
592
642
|
}
|
|
593
643
|
const internals = this.client._sessionInternals();
|
|
644
|
+
const invokeUrl = `${internals.defaultProxyEndpoint}/invoke`;
|
|
594
645
|
try {
|
|
595
646
|
const payload = {
|
|
596
647
|
enforce_only: true,
|
|
@@ -608,9 +659,13 @@ class ArmorIQSession {
|
|
|
608
659
|
if (this.currentToken.policySnapshot) {
|
|
609
660
|
payload.policy_snapshot = this.currentToken.policySnapshot;
|
|
610
661
|
}
|
|
611
|
-
const response = await internals.httpClient
|
|
662
|
+
const response = await internals.httpClient
|
|
663
|
+
.post(invokeUrl, payload, {
|
|
612
664
|
headers: { 'X-API-Key': internals.apiKey, 'Content-Type': 'application/json' },
|
|
613
665
|
timeout: 10000,
|
|
666
|
+
})
|
|
667
|
+
.catch((error) => {
|
|
668
|
+
throw new Error((0, proxy_error_1.proxyUnreachable)(invokeUrl, error));
|
|
614
669
|
});
|
|
615
670
|
const data = response.data ?? {};
|
|
616
671
|
const rawPolicy = data.matched_policy ?? data.matchedPolicy;
|
|
@@ -618,10 +673,14 @@ class ArmorIQSession {
|
|
|
618
673
|
// Fail closed: only an explicit allow from a 2xx response permits the call.
|
|
619
674
|
// Any error status (403 or otherwise) or an ambiguous body blocks.
|
|
620
675
|
if (response.status >= 400) {
|
|
676
|
+
const rejected = `enforce-rejected: ${(0, proxy_error_1.proxyRejected)(invokeUrl, response.status, response.data)}`;
|
|
677
|
+
if (response.status !== 403) {
|
|
678
|
+
return { allowed: false, action: 'block', reason: rejected, enforcementFailed: true };
|
|
679
|
+
}
|
|
621
680
|
return {
|
|
622
681
|
allowed: false,
|
|
623
682
|
action: data.action ?? 'block',
|
|
624
|
-
reason: data.reason ?? data.message ??
|
|
683
|
+
reason: data.reason ?? data.message ?? rejected,
|
|
625
684
|
matchedPolicy: policyName,
|
|
626
685
|
};
|
|
627
686
|
}
|
|
@@ -642,6 +701,7 @@ class ArmorIQSession {
|
|
|
642
701
|
allowed: false,
|
|
643
702
|
action: 'block',
|
|
644
703
|
reason: `enforce-unavailable: ${e.message}`,
|
|
704
|
+
enforcementFailed: true,
|
|
645
705
|
};
|
|
646
706
|
}
|
|
647
707
|
}
|
|
@@ -657,6 +717,7 @@ class ArmorIQSession {
|
|
|
657
717
|
decision = {
|
|
658
718
|
...decision,
|
|
659
719
|
action: 'block',
|
|
720
|
+
reasonCode: decision.reason,
|
|
660
721
|
reason: (decision.reason ?? 'requires approval') +
|
|
661
722
|
' — switch ARMORIQ_MODE=proxy to enable approval workflows for this action.',
|
|
662
723
|
};
|
|
@@ -668,40 +729,14 @@ class ArmorIQSession {
|
|
|
668
729
|
decision = await this.handleHold(toolName, toolArgs, decision, userEmail);
|
|
669
730
|
}
|
|
670
731
|
}
|
|
671
|
-
if (telemetry.emitOtel
|
|
672
|
-
|
|
673
|
-
|
|
732
|
+
if (telemetry.emitOtel === false)
|
|
733
|
+
return { ...decision, toolCallId: telemetry.toolCallId };
|
|
734
|
+
decision = withToolCallId(decision, telemetry);
|
|
735
|
+
await this.recordPolicyDecision(toolName, toolArgs, decision);
|
|
674
736
|
return decision;
|
|
675
737
|
}
|
|
676
738
|
async recordPolicyDecision(toolName, toolArgs, decision) {
|
|
677
|
-
|
|
678
|
-
return;
|
|
679
|
-
const policy = decision;
|
|
680
|
-
const failed = typeof decision.reason === 'string' && decision.reason.startsWith('enforce-unavailable:');
|
|
681
|
-
const policyDecision = decision.allowed
|
|
682
|
-
? 'allow'
|
|
683
|
-
: decision.action === 'hold'
|
|
684
|
-
? 'hold'
|
|
685
|
-
: decision.action === 'block'
|
|
686
|
-
? 'block'
|
|
687
|
-
: undefined;
|
|
688
|
-
await this.otel.recordPolicy({ toolName, arguments: toolArgs }, {
|
|
689
|
-
...(!failed && policyDecision ? { decision: policyDecision } : {}),
|
|
690
|
-
policyName: decision.matchedPolicy,
|
|
691
|
-
...(typeof policy.policyId === 'string' ? { policyId: policy.policyId } : {}),
|
|
692
|
-
...(typeof policy.policyVersion === 'string'
|
|
693
|
-
? { policyVersion: policy.policyVersion }
|
|
694
|
-
: {}),
|
|
695
|
-
...(typeof policy.policySource === 'string' ? { policySource: policy.policySource } : {}),
|
|
696
|
-
...(typeof policy.matchedRuleId === 'string'
|
|
697
|
-
? { matchedRuleId: policy.matchedRuleId }
|
|
698
|
-
: {}),
|
|
699
|
-
policyReasonCode: decision.reason,
|
|
700
|
-
...(failed ? { error: new Error('policy evaluation failed') } : {}),
|
|
701
|
-
...(typeof policy.defaultAction === 'string'
|
|
702
|
-
? { defaultAction: policy.defaultAction }
|
|
703
|
-
: {}),
|
|
704
|
-
});
|
|
739
|
+
await this.otel?.recordPolicy({ toolName, toolCallId: decision.toolCallId, arguments: toolArgs }, policyResultFor(decision));
|
|
705
740
|
}
|
|
706
741
|
trackPolicyTelemetry(operation) {
|
|
707
742
|
const tracked = operation
|
|
@@ -735,6 +770,7 @@ class ArmorIQSession {
|
|
|
735
770
|
const token = this.currentToken;
|
|
736
771
|
await internals.httpClient.post(`${internals.backendEndpoint}/iap/audit`, auditPersistencePayload({
|
|
737
772
|
token,
|
|
773
|
+
agentId: realIdentity(internals.agentId),
|
|
738
774
|
stepIndex: this.stepIndex,
|
|
739
775
|
action,
|
|
740
776
|
mcp: resolvedMcp,
|
|
@@ -760,6 +796,7 @@ class ArmorIQSession {
|
|
|
760
796
|
if (o.emitOtel !== false) {
|
|
761
797
|
await this.otel?.recordTool({
|
|
762
798
|
toolName,
|
|
799
|
+
toolCallId: o.toolCallId,
|
|
763
800
|
itemOrdinal: reportItemOrdinal,
|
|
764
801
|
arguments: toolArgs,
|
|
765
802
|
operation: reportOperation,
|
|
@@ -772,7 +809,7 @@ class ArmorIQSession {
|
|
|
772
809
|
}
|
|
773
810
|
}
|
|
774
811
|
}
|
|
775
|
-
async dispatch(toolName, toolArgs) {
|
|
812
|
+
async dispatch(toolName, toolArgs, options = {}) {
|
|
776
813
|
let dispatchResult;
|
|
777
814
|
let dispatchStatus = 'ok';
|
|
778
815
|
let dispatchError;
|
|
@@ -785,6 +822,7 @@ class ArmorIQSession {
|
|
|
785
822
|
const resolvedMcp = this.resolveMcp(toolName, mcp, action);
|
|
786
823
|
nativeTool = await this.otel?.beginTool({
|
|
787
824
|
toolName: action,
|
|
825
|
+
toolCallId: options.toolCallId,
|
|
788
826
|
itemOrdinal: this.stepIndex,
|
|
789
827
|
arguments: toolArgs,
|
|
790
828
|
operation: {
|