@armoriq/sdk-dev 0.8.7 → 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 +28 -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 +23 -22
- 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 +84 -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":";;AAwDA,4CA+CC;AAwBD,gDAEC;AAED,oDAUC;AAoBD,sDAYC;AAED,wDAOC;AAED,kDAYC;AAED,wCAEC;AAxMD,mCAAoC;AA4CpC,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAc,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAErD,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,OAAkC,CAAC;IACjD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAA0B,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAK,QAAmB,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7G,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1F,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,KAAK,IAAI,CAAC;IACnE,MAAM,6BAA6B,GAAG,KAAK,CAAC,6BAA6B,KAAK,IAAI,CAAC;IACnF,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,oCAAoC,CAAC,CAAC;IACrG,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,WAAW,KAAK,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtH,MAAM,sBAAsB,GAAG,WAAW,KAAK,KAAK;WAC/C,WAAW,KAAK,UAAU;WAC1B,qBAAqB;WACrB,6BAA6B;WAC7B,iBAAiB,CAAC;IACvB,MAAM,iBAAiB,GAAG,YAAY,CAAC;QACrC,WAAW,EAAE,WAA0B;QACvC,qBAAqB;QACrB,6BAA6B;QAC7B,iBAAiB;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,WAA0B;QACvC,QAAQ,EAAE,QAAkB;QAC5B,SAAS,EAAE,MAAM;QACjB,aAAa,EAAE,IAAI;QACnB,qBAAqB;QACrB,6BAA6B;QAC7B,sBAAsB;QACtB,iBAAiB;QACjB,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,OAAe;IACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,KAKrB;IACC,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU;QAAE,OAAO,uBAAuB,CAAC;IACrE,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB;QAAE,OAAO,gBAAgB,CAAC;IACvF,IAAI,CAAC,KAAK,CAAC,qBAAqB;QAAE,OAAO,+BAA+B,CAAC;IACzE,IAAI,CAAC,KAAK,CAAC,6BAA6B;QAAE,OAAO,2BAA2B,CAAC;IAC7E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,kBAAkB,CAAC,eAAuB,EAAE,MAAc;IACxE,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAkB,EAAE,OAAe;IACtE,OAAO;QACL,OAAO;QACP,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;QACxC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,6BAA6B,EAAE,KAAK,CAAC,6BAA6B;QAClE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,IAAI;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAsB,EACtB,MAAmB;IAEnB,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,CAAC,KAAS,EAAE,EAAE;YAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,KAAuB,EACvB,OAAe,EACf,MAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACrE,IAAK,MAAwD,EAAE,OAAO,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAChG,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CACpC,KAAuB,EACvB,KAAkB,EAClB,OAAe,EACf,MAAmB;IAEnB,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9F,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,UAAmB;QAChC,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC1C,aAAa,EAAE,KAAK;QACpB,qBAAqB,EAAE,KAAK;QAC5B,6BAA6B,EAAE,KAAK;QACpC,sBAAsB,EAAE,KAAK;QAC7B,iBAAiB,EAAE,oBAA6B;QAChD,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,KAAkB;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,WAAW,EAEX,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG,OAAO,CAEhG;AAoBD,wBAAgB,wBAAwB,IAAI,YAAY,CAEvD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,CAarE;AASD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAajF;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAC;IACjE,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,sBAAuB,SAAQ,eAAe;IACtD,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,KAAK,aAAa,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAuEjF,qBAAa,cAAc;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA4B;IACnE,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAc;IAG1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAuB;IAIlD,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAA0B;IAG/C,OAAO,CAAC,cAAc,CAA0B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,IAAI,CAA4B;IACxC,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAGxC;IACJ,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAoC;IACjF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D;;;;;;;;;;;OAWG;IACH,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc;IA2CxD,gEAAgE;IAChE,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,CAEpC;IAED;;;;;OAKG;IACG,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;YAMnC,YAAY;YASZ,kBAAkB;IAO1B,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAUlE,cAAc;IA+G5B,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,eAAoB,GAC5B,aAAa;IAMhB,OAAO,CAAC,iBAAiB;IAkJzB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAKlB;;;;;;OAMG;IACH,iIAAiI;IACjI,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IAejB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC;YASX,eAAe;IAyF7B,yHAAyH;IACzH,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAInC,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC;YAMX,YAAY;IAsFpB,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,sBAA2B,GACrC,OAAO,CAAC,aAAa,CAAC;YA6BX,oBAAoB;IAWlC,OAAO,CAAC,oBAAoB;YAOd,oBAAoB;IAM5B,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,IAAI,CAAC;IA8EV,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC;YA6CL,UAAU;IA4FxB;;;;;;OAMG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACrE,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAkE/C,OAAO,CAAC,gBAAgB;YAuBV,2BAA2B;IAgDzC,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;;;;;OAMG;YACW,gBAAgB;IAY9B,wEAAwE;IACxE,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAgC/B,KAAK,IAAI,IAAI;IASb;;;;;;;;;;;;OAYG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BpE,IAAI,iBAAiB,IAAI,WAAW,GAAG,SAAS,CAE/C;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;;;;;;OAOG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzC;;;;;;;;;;OAUG;IACG,KAAK,CACT,MAAM,GAAE,kBAAyB,EACjC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,IAAI,CAAC;IAYhB,wEAAwE;IAClE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
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,
|
|
@@ -602,12 +653,19 @@ class ArmorIQSession {
|
|
|
602
653
|
intent_token: this.currentToken.rawToken,
|
|
603
654
|
plan: (this.currentToken.rawToken ?? {}).plan,
|
|
604
655
|
};
|
|
656
|
+
const agentId = realIdentity(internals.agentId);
|
|
657
|
+
if (agentId)
|
|
658
|
+
payload.agent_id = agentId;
|
|
605
659
|
if (this.currentToken.policySnapshot) {
|
|
606
660
|
payload.policy_snapshot = this.currentToken.policySnapshot;
|
|
607
661
|
}
|
|
608
|
-
const response = await internals.httpClient
|
|
662
|
+
const response = await internals.httpClient
|
|
663
|
+
.post(invokeUrl, payload, {
|
|
609
664
|
headers: { 'X-API-Key': internals.apiKey, 'Content-Type': 'application/json' },
|
|
610
665
|
timeout: 10000,
|
|
666
|
+
})
|
|
667
|
+
.catch((error) => {
|
|
668
|
+
throw new Error((0, proxy_error_1.proxyUnreachable)(invokeUrl, error));
|
|
611
669
|
});
|
|
612
670
|
const data = response.data ?? {};
|
|
613
671
|
const rawPolicy = data.matched_policy ?? data.matchedPolicy;
|
|
@@ -615,10 +673,14 @@ class ArmorIQSession {
|
|
|
615
673
|
// Fail closed: only an explicit allow from a 2xx response permits the call.
|
|
616
674
|
// Any error status (403 or otherwise) or an ambiguous body blocks.
|
|
617
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
|
+
}
|
|
618
680
|
return {
|
|
619
681
|
allowed: false,
|
|
620
682
|
action: data.action ?? 'block',
|
|
621
|
-
reason: data.reason ?? data.message ??
|
|
683
|
+
reason: data.reason ?? data.message ?? rejected,
|
|
622
684
|
matchedPolicy: policyName,
|
|
623
685
|
};
|
|
624
686
|
}
|
|
@@ -639,6 +701,7 @@ class ArmorIQSession {
|
|
|
639
701
|
allowed: false,
|
|
640
702
|
action: 'block',
|
|
641
703
|
reason: `enforce-unavailable: ${e.message}`,
|
|
704
|
+
enforcementFailed: true,
|
|
642
705
|
};
|
|
643
706
|
}
|
|
644
707
|
}
|
|
@@ -654,6 +717,7 @@ class ArmorIQSession {
|
|
|
654
717
|
decision = {
|
|
655
718
|
...decision,
|
|
656
719
|
action: 'block',
|
|
720
|
+
reasonCode: decision.reason,
|
|
657
721
|
reason: (decision.reason ?? 'requires approval') +
|
|
658
722
|
' — switch ARMORIQ_MODE=proxy to enable approval workflows for this action.',
|
|
659
723
|
};
|
|
@@ -665,40 +729,14 @@ class ArmorIQSession {
|
|
|
665
729
|
decision = await this.handleHold(toolName, toolArgs, decision, userEmail);
|
|
666
730
|
}
|
|
667
731
|
}
|
|
668
|
-
if (telemetry.emitOtel
|
|
669
|
-
|
|
670
|
-
|
|
732
|
+
if (telemetry.emitOtel === false)
|
|
733
|
+
return { ...decision, toolCallId: telemetry.toolCallId };
|
|
734
|
+
decision = withToolCallId(decision, telemetry);
|
|
735
|
+
await this.recordPolicyDecision(toolName, toolArgs, decision);
|
|
671
736
|
return decision;
|
|
672
737
|
}
|
|
673
738
|
async recordPolicyDecision(toolName, toolArgs, decision) {
|
|
674
|
-
|
|
675
|
-
return;
|
|
676
|
-
const policy = decision;
|
|
677
|
-
const failed = typeof decision.reason === 'string' && decision.reason.startsWith('enforce-unavailable:');
|
|
678
|
-
const policyDecision = decision.allowed
|
|
679
|
-
? 'allow'
|
|
680
|
-
: decision.action === 'hold'
|
|
681
|
-
? 'hold'
|
|
682
|
-
: decision.action === 'block'
|
|
683
|
-
? 'block'
|
|
684
|
-
: undefined;
|
|
685
|
-
await this.otel.recordPolicy({ toolName, arguments: toolArgs }, {
|
|
686
|
-
...(!failed && policyDecision ? { decision: policyDecision } : {}),
|
|
687
|
-
policyName: decision.matchedPolicy,
|
|
688
|
-
...(typeof policy.policyId === 'string' ? { policyId: policy.policyId } : {}),
|
|
689
|
-
...(typeof policy.policyVersion === 'string'
|
|
690
|
-
? { policyVersion: policy.policyVersion }
|
|
691
|
-
: {}),
|
|
692
|
-
...(typeof policy.policySource === 'string' ? { policySource: policy.policySource } : {}),
|
|
693
|
-
...(typeof policy.matchedRuleId === 'string'
|
|
694
|
-
? { matchedRuleId: policy.matchedRuleId }
|
|
695
|
-
: {}),
|
|
696
|
-
policyReasonCode: decision.reason,
|
|
697
|
-
...(failed ? { error: new Error('policy evaluation failed') } : {}),
|
|
698
|
-
...(typeof policy.defaultAction === 'string'
|
|
699
|
-
? { defaultAction: policy.defaultAction }
|
|
700
|
-
: {}),
|
|
701
|
-
});
|
|
739
|
+
await this.otel?.recordPolicy({ toolName, toolCallId: decision.toolCallId, arguments: toolArgs }, policyResultFor(decision));
|
|
702
740
|
}
|
|
703
741
|
trackPolicyTelemetry(operation) {
|
|
704
742
|
const tracked = operation
|
|
@@ -732,6 +770,7 @@ class ArmorIQSession {
|
|
|
732
770
|
const token = this.currentToken;
|
|
733
771
|
await internals.httpClient.post(`${internals.backendEndpoint}/iap/audit`, auditPersistencePayload({
|
|
734
772
|
token,
|
|
773
|
+
agentId: realIdentity(internals.agentId),
|
|
735
774
|
stepIndex: this.stepIndex,
|
|
736
775
|
action,
|
|
737
776
|
mcp: resolvedMcp,
|
|
@@ -757,6 +796,7 @@ class ArmorIQSession {
|
|
|
757
796
|
if (o.emitOtel !== false) {
|
|
758
797
|
await this.otel?.recordTool({
|
|
759
798
|
toolName,
|
|
799
|
+
toolCallId: o.toolCallId,
|
|
760
800
|
itemOrdinal: reportItemOrdinal,
|
|
761
801
|
arguments: toolArgs,
|
|
762
802
|
operation: reportOperation,
|
|
@@ -769,7 +809,7 @@ class ArmorIQSession {
|
|
|
769
809
|
}
|
|
770
810
|
}
|
|
771
811
|
}
|
|
772
|
-
async dispatch(toolName, toolArgs) {
|
|
812
|
+
async dispatch(toolName, toolArgs, options = {}) {
|
|
773
813
|
let dispatchResult;
|
|
774
814
|
let dispatchStatus = 'ok';
|
|
775
815
|
let dispatchError;
|
|
@@ -782,6 +822,7 @@ class ArmorIQSession {
|
|
|
782
822
|
const resolvedMcp = this.resolveMcp(toolName, mcp, action);
|
|
783
823
|
nativeTool = await this.otel?.beginTool({
|
|
784
824
|
toolName: action,
|
|
825
|
+
toolCallId: options.toolCallId,
|
|
785
826
|
itemOrdinal: this.stepIndex,
|
|
786
827
|
arguments: toolArgs,
|
|
787
828
|
operation: {
|