@decionis/agent-safe-pipeline 0.1.3 → 0.1.4

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.
Files changed (68) hide show
  1. package/README.md +318 -16
  2. package/dist/Index.d.ts +1 -0
  3. package/dist/Index.d.ts.map +1 -1
  4. package/dist/Index.js +1 -0
  5. package/dist/Index.js.map +1 -1
  6. package/dist/approval/PresenceApprovalCoordinator.d.ts +25 -0
  7. package/dist/approval/PresenceApprovalCoordinator.d.ts.map +1 -1
  8. package/dist/approval/PresenceApprovalCoordinator.js +54 -6
  9. package/dist/approval/PresenceApprovalCoordinator.js.map +1 -1
  10. package/dist/audit/AuditRecorder.d.ts +122 -0
  11. package/dist/audit/AuditRecorder.d.ts.map +1 -0
  12. package/dist/audit/AuditRecorder.js +312 -0
  13. package/dist/audit/AuditRecorder.js.map +1 -0
  14. package/dist/decision/DecionisGate.d.ts +91 -2
  15. package/dist/decision/DecionisGate.d.ts.map +1 -1
  16. package/dist/decision/DecionisGate.js +793 -44
  17. package/dist/decision/DecionisGate.js.map +1 -1
  18. package/dist/decision/DecisionAuthority.d.ts +50 -1
  19. package/dist/decision/DecisionAuthority.d.ts.map +1 -1
  20. package/dist/decision/DecisionAuthority.js.map +1 -1
  21. package/dist/decision/FixtureDecisionAuthority.d.ts +27 -1
  22. package/dist/decision/FixtureDecisionAuthority.d.ts.map +1 -1
  23. package/dist/decision/FixtureDecisionAuthority.js +47 -0
  24. package/dist/decision/FixtureDecisionAuthority.js.map +1 -1
  25. package/dist/decision/ImmutableGateDecision.d.ts.map +1 -1
  26. package/dist/decision/ImmutableGateDecision.js +18 -0
  27. package/dist/decision/ImmutableGateDecision.js.map +1 -1
  28. package/dist/execution/ActionRegistry.d.ts +37 -0
  29. package/dist/execution/ActionRegistry.d.ts.map +1 -1
  30. package/dist/execution/ActionRegistry.js +75 -1
  31. package/dist/execution/ActionRegistry.js.map +1 -1
  32. package/dist/execution/AuthorizationVerifier.d.ts +29 -0
  33. package/dist/execution/AuthorizationVerifier.d.ts.map +1 -1
  34. package/dist/execution/AuthorizationVerifier.js +126 -25
  35. package/dist/execution/AuthorizationVerifier.js.map +1 -1
  36. package/dist/execution/SafeExecutor.d.ts +72 -7
  37. package/dist/execution/SafeExecutor.d.ts.map +1 -1
  38. package/dist/execution/SafeExecutor.js +253 -17
  39. package/dist/execution/SafeExecutor.js.map +1 -1
  40. package/dist/intent/CanonicalIntentHasher.d.ts +1 -1
  41. package/dist/intent/CanonicalIntentHasher.d.ts.map +1 -1
  42. package/dist/intent/CanonicalIntentHasher.js +6 -2
  43. package/dist/intent/CanonicalIntentHasher.js.map +1 -1
  44. package/dist/intent/ExecutionIntent.d.ts +14 -2
  45. package/dist/intent/ExecutionIntent.d.ts.map +1 -1
  46. package/dist/intent/ExecutionIntent.js +7 -0
  47. package/dist/intent/ExecutionIntent.js.map +1 -1
  48. package/dist/intent/IntentCapture.d.ts +5 -0
  49. package/dist/intent/IntentCapture.d.ts.map +1 -1
  50. package/dist/intent/IntentCapture.js +12 -1
  51. package/dist/intent/IntentCapture.js.map +1 -1
  52. package/dist/shadow/ShadowPipeline.d.ts +75 -5
  53. package/dist/shadow/ShadowPipeline.d.ts.map +1 -1
  54. package/dist/shadow/ShadowPipeline.js +157 -7
  55. package/dist/shadow/ShadowPipeline.js.map +1 -1
  56. package/dist/testing/Index.d.ts +12 -0
  57. package/dist/testing/Index.d.ts.map +1 -0
  58. package/dist/testing/Index.js +12 -0
  59. package/dist/testing/Index.js.map +1 -0
  60. package/dist/testing/LocalAuthority.d.ts +203 -0
  61. package/dist/testing/LocalAuthority.d.ts.map +1 -0
  62. package/dist/testing/LocalAuthority.js +799 -0
  63. package/dist/testing/LocalAuthority.js.map +1 -0
  64. package/dist/testing/LocalPresence.d.ts +210 -0
  65. package/dist/testing/LocalPresence.d.ts.map +1 -0
  66. package/dist/testing/LocalPresence.js +473 -0
  67. package/dist/testing/LocalPresence.js.map +1 -0
  68. package/package.json +40 -4
@@ -1 +1 @@
1
- {"version":3,"file":"SafeExecutor.js","sourceRoot":"","sources":["../../src/execution/SafeExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SafeExecutor.js","sourceRoot":"","sources":["../../src/execution/SafeExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AuthorityIntentBinding, CapturedIntent, ExecutionIntent } from "./ExecutionIntent.js";
1
+ import { type AuthorityIntentBinding, type CapturedIntent, type ExecutionIntent } from "./ExecutionIntent.js";
2
2
  import type { JsonValue } from "./JsonValue.js";
3
3
  export interface CanonicalLimits {
4
4
  readonly maxDepth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CanonicalIntentHasher.d.ts","sourceRoot":"","sources":["../../src/intent/CanonicalIntentHasher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAEtB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAS7C,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc;IAqBhD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;WAoDjC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,sBAAsB;WA8B1D,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAIjD,OAAO,CAAC,MAAM,CAAC,YAAY;IAW3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"CanonicalIntentHasher.d.ts","sourceRoot":"","sources":["../../src/intent/CanonicalIntentHasher.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAEtB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAS7C,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc;IAqBhD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;WAoDjC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,sBAAsB;WAiC1D,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAIjD,OAAO,CAAC,MAAM,CAAC,YAAY;IAW3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,aAAa;CAoBtB"}
@@ -1,4 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { RESERVED_CONTEXT_IDEMPOTENCY_KEY, } from "./ExecutionIntent.js";
2
3
  const FORBIDDEN_KEYS = new Set(["__proto__", "constructor", "prototype"]);
3
4
  export class CanonicalIntentHasher {
4
5
  limits;
@@ -85,7 +86,6 @@ export class CanonicalIntentHasher {
85
86
  protocol_version: intent.version,
86
87
  tenant_id: intent.tenantId,
87
88
  intent_id: intent.intentId,
88
- idempotency_key: intent.idempotencyKey,
89
89
  captured_at: intent.capturedAt,
90
90
  expires_at: intent.expiresAt,
91
91
  actor: {
@@ -99,10 +99,14 @@ export class CanonicalIntentHasher {
99
99
  resource: intent.target,
100
100
  parameters: intent.parameters,
101
101
  },
102
- context: intent.context,
102
+ // The idempotency key stays hash-bound by riding in the trusted context.
103
+ context: { ...intent.context, [RESERVED_CONTEXT_IDEMPOTENCY_KEY]: intent.idempotencyKey },
103
104
  downstream_target: {
104
105
  system: intent.downstreamTarget.system,
105
106
  operation: intent.downstreamTarget.operation,
107
+ ...(intent.downstreamTarget.environment === undefined
108
+ ? {}
109
+ : { environment: intent.downstreamTarget.environment }),
106
110
  ...(intent.downstreamTarget.endpoint === undefined
107
111
  ? {}
108
112
  : { endpoint: intent.downstreamTarget.endpoint }),
@@ -1 +1 @@
1
- {"version":3,"file":"CanonicalIntentHasher.js","sourceRoot":"","sources":["../../src/intent/CanonicalIntentHasher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CanonicalIntentHasher.js","sourceRoot":"","sources":["../../src/intent/CanonicalIntentHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,gCAAgC,GAIjC,MAAM,sBAAsB,CAAC;AAG9B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAS1E,MAAM,OAAO,qBAAqB;IACf,MAAM,CAAkB;IAEzC,YAAmB,MAAiC;QAClD,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE;YAChC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,KAAK;YACvC,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,KAAK;YAC/C,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,GAAG,GAAG,IAAI;SACzC,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,MAAuB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,OAA+B,EAAE,CAAC,EAAE,GAAG,EAAE;YAC1D,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC,OAA+B,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,eAAe;YACf,UAAU,EAAE,UAAU,MAAM,EAAE;YAC9B,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB,CAAC,KAAc;QACtC,MAAM,OAAO,GAIR,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;QACxC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC7E,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACnE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5E,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBACtD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC,CAAC;oBACb,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;wBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;oBAC5E,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAY,CAAC;YAClE,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,CAAC;gBACb,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAC5E,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAG,OAAO,CAAC,KAAiC,CAAC,GAAG,CAAC;oBACtD,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;oBACxB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAuB;QAC7C,OAAO;YACL,gBAAgB,EAAE,MAAM,CAAC,OAAO;YAChC,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,KAAK,EAAE;gBACL,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;gBACnB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACvB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3F;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,MAAM;gBACnB,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;YACD,yEAAyE;YACzE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,gCAAgC,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE;YACzF,iBAAiB,EAAE;gBACjB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM;gBACtC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS;gBAC5C,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,KAAK,SAAS;oBACnD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBACzD,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,KAAK,SAAS;oBAChD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;aACpD;SACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAgB;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,KAAgB;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,UAAU,GAA8B,EAAE,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,UAAU,CAAI,KAAQ;QACnC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;gBACpE,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,KAAgB,EAAE,KAAa,EAAE,KAAiB;QACtE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACzF,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClE,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF"}
@@ -14,8 +14,15 @@ export declare const IntentActorSchema: z.ZodObject<{
14
14
  export declare const DownstreamTargetSchema: z.ZodObject<{
15
15
  system: z.ZodString;
16
16
  operation: z.ZodString;
17
+ environment: z.ZodOptional<z.ZodString>;
17
18
  endpoint: z.ZodOptional<z.ZodString>;
18
19
  }, z.core.$strict>;
20
+ /**
21
+ * The trusted idempotency key travels inside the hashed wire `context` under
22
+ * this reserved key, because the Decionis `ExecutionIntentBinding` contract
23
+ * has no top-level idempotency field and rejects unknown properties.
24
+ */
25
+ export declare const RESERVED_CONTEXT_IDEMPOTENCY_KEY = "idempotency_key";
19
26
  export declare const TrustedIntentContextSchema: z.ZodObject<{
20
27
  tenantId: z.ZodString;
21
28
  actor: z.ZodObject<{
@@ -27,6 +34,7 @@ export declare const TrustedIntentContextSchema: z.ZodObject<{
27
34
  downstreamTarget: z.ZodObject<{
28
35
  system: z.ZodString;
29
36
  operation: z.ZodString;
37
+ environment: z.ZodOptional<z.ZodString>;
30
38
  endpoint: z.ZodOptional<z.ZodString>;
31
39
  }, z.core.$strict>;
32
40
  context: z.ZodDefault<z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>>;
@@ -51,6 +59,7 @@ export declare const ExecutionIntentSchema: z.ZodObject<{
51
59
  downstreamTarget: z.ZodObject<{
52
60
  system: z.ZodString;
53
61
  operation: z.ZodString;
62
+ environment: z.ZodOptional<z.ZodString>;
54
63
  endpoint: z.ZodOptional<z.ZodString>;
55
64
  }, z.core.$strict>;
56
65
  context: z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>;
@@ -68,11 +77,11 @@ export interface CapturedIntent {
68
77
  readonly intentHash: `sha256:${string}`;
69
78
  readonly byteLength: number;
70
79
  }
80
+ /** Exact wire shape of the Decionis `ExecutionIntentBinding` contract. */
71
81
  export interface AuthorityIntentBinding {
72
82
  readonly protocol_version: "agent-safe.intent/1";
73
83
  readonly tenant_id: string;
74
84
  readonly intent_id: string;
75
- readonly idempotency_key: string;
76
85
  readonly captured_at: string;
77
86
  readonly expires_at: string;
78
87
  readonly actor: {
@@ -86,10 +95,13 @@ export interface AuthorityIntentBinding {
86
95
  readonly resource: string;
87
96
  readonly parameters: JsonObject;
88
97
  };
89
- readonly context: JsonObject;
98
+ readonly context: JsonObject & {
99
+ readonly idempotency_key: string;
100
+ };
90
101
  readonly downstream_target: {
91
102
  readonly system: string;
92
103
  readonly operation: string;
104
+ readonly environment?: string;
93
105
  readonly endpoint?: string;
94
106
  };
95
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionIntent.d.ts","sourceRoot":"","sources":["../../src/intent/ExecutionIntent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAUnE,eAAO,MAAM,mBAAmB;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;kBAOnB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;kBAMxB,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;kBAS5B,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;kBAgBvB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH"}
1
+ {"version":3,"file":"ExecutionIntent.d.ts","sourceRoot":"","sources":["../../src/intent/ExecutionIntent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAUnE,eAAO,MAAM,mBAAmB;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;kBAOnB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;kBAOxB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,oBAAoB,CAAC;AAElE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;kBAS5B,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;kBAgBvB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH"}
@@ -26,9 +26,16 @@ export const DownstreamTargetSchema = z
26
26
  .object({
27
27
  system: boundedId,
28
28
  operation: boundedId,
29
+ environment: boundedId.optional(),
29
30
  endpoint: z.string().trim().min(1).max(500).optional(),
30
31
  })
31
32
  .strict();
33
+ /**
34
+ * The trusted idempotency key travels inside the hashed wire `context` under
35
+ * this reserved key, because the Decionis `ExecutionIntentBinding` contract
36
+ * has no top-level idempotency field and rejects unknown properties.
37
+ */
38
+ export const RESERVED_CONTEXT_IDEMPOTENCY_KEY = "idempotency_key";
32
39
  export const TrustedIntentContextSchema = z
33
40
  .object({
34
41
  tenantId: z.string().uuid(),
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionIntent.js","sourceRoot":"","sources":["../../src/intent/ExecutionIntent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionIntent.js","sourceRoot":"","sources":["../../src/intent/ExecutionIntent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import type { AuditRecorder } from "../audit/AuditRecorder.js";
1
2
  import { type AgentProposal, type CapturedIntent, type TrustedIntentContext } from "./ExecutionIntent.js";
2
3
  import { CanonicalIntentHasher } from "./CanonicalIntentHasher.js";
3
4
  export interface IntentCaptureOptions {
5
+ readonly audit?: AuditRecorder;
4
6
  readonly hasher?: CanonicalIntentHasher;
5
7
  readonly clock?: () => Date;
6
8
  readonly createId?: () => string;
@@ -11,7 +13,10 @@ export declare class IntentCapture {
11
13
  private readonly clock;
12
14
  private readonly createId;
13
15
  private readonly ttlSeconds;
16
+ private readonly audit;
14
17
  constructor(options?: IntentCaptureOptions);
15
18
  capture(proposalInput: AgentProposal, trustedInput: TrustedIntentContext): CapturedIntent;
19
+ /** Captures an intent and waits for the optional bounded audit sink once. */
20
+ captureAndAudit(proposalInput: AgentProposal, trustedInput: TrustedIntentContext): Promise<CapturedIntent>;
16
21
  }
17
22
  //# sourceMappingURL=IntentCapture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntentCapture.d.ts","sourceRoot":"","sources":["../../src/intent/IntentCapture.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAEjB,OAAO,CAAC,EAAE,oBAAoB;IAO1C,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,GAAG,cAAc;CAwBjG"}
1
+ {"version":3,"file":"IntentCapture.d.ts","sourceRoot":"","sources":["../../src/intent/IntentCapture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;gBAE/B,OAAO,CAAC,EAAE,oBAAoB;IAQ1C,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,GAAG,cAAc;IA4BhG,6EAA6E;IAChE,eAAe,CAC1B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC;CAK3B"}
@@ -1,22 +1,27 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { AgentProposalSchema, ExecutionIntentSchema, TrustedIntentContextSchema, } from "./ExecutionIntent.js";
2
+ import { AgentProposalSchema, ExecutionIntentSchema, RESERVED_CONTEXT_IDEMPOTENCY_KEY, TrustedIntentContextSchema, } from "./ExecutionIntent.js";
3
3
  import { CanonicalIntentHasher } from "./CanonicalIntentHasher.js";
4
4
  export class IntentCapture {
5
5
  hasher;
6
6
  clock;
7
7
  createId;
8
8
  ttlSeconds;
9
+ audit;
9
10
  constructor(options) {
10
11
  this.hasher = options?.hasher ?? new CanonicalIntentHasher();
11
12
  this.clock = options?.clock ?? (() => new Date());
12
13
  this.createId = options?.createId ?? randomUUID;
13
14
  this.ttlSeconds = Math.min(Math.max(options?.ttlSeconds ?? 60, 1), 300);
15
+ this.audit = options?.audit;
14
16
  }
15
17
  capture(proposalInput, trustedInput) {
16
18
  this.hasher.assertInputBounded(proposalInput);
17
19
  this.hasher.assertInputBounded(trustedInput);
18
20
  const proposal = AgentProposalSchema.parse(proposalInput);
19
21
  const trusted = TrustedIntentContextSchema.parse(trustedInput);
22
+ if (Object.hasOwn(trusted.context, RESERVED_CONTEXT_IDEMPOTENCY_KEY)) {
23
+ throw new Error("INTENT_CONTEXT_KEY_RESERVED");
24
+ }
20
25
  const capturedAt = this.clock();
21
26
  const expiresAt = new Date(capturedAt.valueOf() + this.ttlSeconds * 1_000);
22
27
  const intent = ExecutionIntentSchema.parse({
@@ -36,5 +41,11 @@ export class IntentCapture {
36
41
  });
37
42
  return this.hasher.capture(intent);
38
43
  }
44
+ /** Captures an intent and waits for the optional bounded audit sink once. */
45
+ async captureAndAudit(proposalInput, trustedInput) {
46
+ const captured = this.capture(proposalInput, trustedInput);
47
+ await this.audit?.record({ eventType: "INTENT_CAPTURED", captured });
48
+ return captured;
49
+ }
39
50
  }
40
51
  //# sourceMappingURL=IntentCapture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntentCapture.js","sourceRoot":"","sources":["../../src/intent/IntentCapture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,GAI3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AASnE,MAAM,OAAO,aAAa;IACP,MAAM,CAAwB;IAC9B,KAAK,CAAa;IAClB,QAAQ,CAAe;IACvB,UAAU,CAAS;IAEpC,YAAmB,OAA8B;QAC/C,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,UAAU,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC;IAEM,OAAO,CAAC,aAA4B,EAAE,YAAkC;QAC7E,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;YACpC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;YACxF,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"IntentCapture.js","sourceRoot":"","sources":["../../src/intent/IntentCapture.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,83 @@
1
- import type { DecisionAuthority, GateDecision } from "../decision/DecisionAuthority.js";
1
+ import type { AuditRecorder } from "../audit/AuditRecorder.js";
2
+ import type { DecisionAuthority, DecisionVerdict } from "../decision/DecisionAuthority.js";
2
3
  import type { CapturedIntent } from "../intent/ExecutionIntent.js";
4
+ export type ShadowObservationStatus = "OBSERVED" | "UNAVAILABLE" | "TIMED_OUT" | "INVALID" | "ABORTED";
5
+ /**
6
+ * Non-authoritative record of what the authority would have decided.
7
+ *
8
+ * The shape deliberately has no `authorization` or `failClosed` field, so it
9
+ * is not structurally assignable to `GateDecision`, and it carries explicit
10
+ * `mode: "SHADOW"` and `authority: "OBSERVATIONAL"` markers that
11
+ * `SafeExecutor` rejects at runtime after any cast or JSON round trip.
12
+ */
13
+ export interface ShadowObservation {
14
+ readonly mode: "SHADOW";
15
+ readonly authority: "OBSERVATIONAL";
16
+ readonly status: ShadowObservationStatus;
17
+ readonly intentHash: string;
18
+ /** Policy verdict when the authority answered; `null` when it did not or failed closed. */
19
+ readonly verdict: DecisionVerdict | null;
20
+ readonly decisionId: string | null;
21
+ readonly dossierId: string | null;
22
+ readonly reasonCodes: readonly string[];
23
+ /** `true` when the authority returned a grant that this pipeline discarded. */
24
+ readonly grantDiscarded: boolean;
25
+ readonly durationMs: number;
26
+ }
27
+ export type ShadowProductionOutcome<TResult> = {
28
+ readonly status: "COMPLETED";
29
+ readonly result: TResult;
30
+ } | {
31
+ readonly status: "FAILED";
32
+ readonly error: unknown;
33
+ };
34
+ /** Production outcome available immediately; the observation settles on its own bound. */
35
+ export interface ShadowRun<TResult> {
36
+ readonly mode: "SHADOW";
37
+ readonly production: ShadowProductionOutcome<TResult>;
38
+ readonly observation: Promise<ShadowObservation>;
39
+ }
3
40
  export interface ShadowComparison<TResult> {
4
41
  readonly mode: "SHADOW";
5
- readonly productionResult: TResult;
6
- readonly hypotheticalDecision: GateDecision;
42
+ readonly production: ShadowProductionOutcome<TResult>;
43
+ readonly observation: ShadowObservation;
44
+ }
45
+ export interface ShadowPipelineOptions {
46
+ /** Optional recorder; every observation is emitted as an `OBSERVATIONAL` `SHADOW_EVALUATED` event. */
47
+ readonly audit?: AuditRecorder;
48
+ /** Independent bound on the hypothetical evaluation. Default 2000 ms, clamped to [1, 15000]. */
49
+ readonly timeoutMs?: number;
50
+ /** Injectable epoch-millisecond clock for deterministic duration tests. */
51
+ readonly clock?: () => number;
52
+ }
53
+ export interface ShadowObserveOptions {
54
+ /** Cancels the observation only; production execution is never cancelled by this pipeline. */
55
+ readonly signal?: AbortSignal;
7
56
  }
57
+ /**
58
+ * Runs an existing production execution unchanged while asking an authority
59
+ * what it would have decided. The observation is failure-isolated, bounded,
60
+ * and never carries execution authority.
61
+ */
8
62
  export declare class ShadowPipeline {
9
63
  private readonly authority;
10
- constructor(authority: DecisionAuthority);
11
- compare<TResult>(captured: CapturedIntent, existingExecution: () => Promise<TResult> | TResult): Promise<ShadowComparison<TResult>>;
64
+ private readonly audit;
65
+ private readonly timeoutMs;
66
+ private readonly clock;
67
+ constructor(authority: DecisionAuthority, options?: ShadowPipelineOptions);
68
+ /**
69
+ * Invokes `existingExecution` exactly once and returns as soon as it settles.
70
+ * Its result or thrown error is preserved verbatim. The observation promise
71
+ * never rejects and never delays production.
72
+ */
73
+ observe<TResult>(captured: CapturedIntent, existingExecution: () => Promise<TResult> | TResult, options?: ShadowObserveOptions): Promise<ShadowRun<TResult>>;
74
+ /** `observe`, then wait for the bounded observation so both sides can be compared inline. */
75
+ compare<TResult>(captured: CapturedIntent, existingExecution: () => Promise<TResult> | TResult, options?: ShadowObserveOptions): Promise<ShadowComparison<TResult>>;
76
+ private evaluate;
77
+ private record;
78
+ private static empty;
79
+ /** Validates a decision from any authority; the grant, if any, is discarded and reported. */
80
+ private static classify;
81
+ private static isBoundedIdentifier;
12
82
  }
13
83
  //# sourceMappingURL=ShadowPipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShadowPipeline.d.ts","sourceRoot":"","sources":["../../src/shadow/ShadowPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,WAAW,gBAAgB,CAAC,OAAO;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC;CAC7C;AAED,qBAAa,cAAc;IACN,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAEnD,OAAO,CAAC,OAAO,EAC1B,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAClD,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAOtC"}
1
+ {"version":3,"file":"ShadowPipeline.d.ts","sourceRoot":"","sources":["../../src/shadow/ShadowPipeline.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,164 @@
1
+ const DEFAULT_TIMEOUT_MS = 2_000;
2
+ const MAX_TIMEOUT_MS = 15_000;
3
+ const MAX_REASON_CODES = 50;
4
+ const MAX_IDENTIFIER_LENGTH = 200;
5
+ const VERDICTS = new Set(["ALLOW", "ESCALATE", "BLOCK"]);
6
+ /**
7
+ * Runs an existing production execution unchanged while asking an authority
8
+ * what it would have decided. The observation is failure-isolated, bounded,
9
+ * and never carries execution authority.
10
+ */
1
11
  export class ShadowPipeline {
2
12
  authority;
3
- constructor(authority) {
13
+ audit;
14
+ timeoutMs;
15
+ clock;
16
+ constructor(authority, options = {}) {
4
17
  this.authority = authority;
18
+ if (authority.evaluationMode === "ENFORCEMENT") {
19
+ throw new Error("SHADOW_AUTHORITY_MUST_BE_OBSERVATIONAL");
20
+ }
21
+ if (options.timeoutMs !== undefined && !Number.isFinite(options.timeoutMs)) {
22
+ throw new Error("SHADOW_TIMEOUT_INVALID");
23
+ }
24
+ this.audit = options.audit;
25
+ this.timeoutMs = Math.min(Math.max(options.timeoutMs ?? DEFAULT_TIMEOUT_MS, 1), MAX_TIMEOUT_MS);
26
+ this.clock = options.clock ?? Date.now;
5
27
  }
6
- async compare(captured, existingExecution) {
7
- const [productionResult, hypotheticalDecision] = await Promise.all([
8
- existingExecution(),
9
- this.authority.evaluate(captured),
10
- ]);
11
- return { mode: "SHADOW", productionResult, hypotheticalDecision };
28
+ /**
29
+ * Invokes `existingExecution` exactly once and returns as soon as it settles.
30
+ * Its result or thrown error is preserved verbatim. The observation promise
31
+ * never rejects and never delays production.
32
+ */
33
+ async observe(captured, existingExecution, options = {}) {
34
+ const observation = this.evaluate(captured, options.signal);
35
+ let production;
36
+ try {
37
+ production = { status: "COMPLETED", result: await existingExecution() };
38
+ }
39
+ catch (error) {
40
+ production = { status: "FAILED", error };
41
+ }
42
+ return Object.freeze({ mode: "SHADOW", production: Object.freeze(production), observation });
43
+ }
44
+ /** `observe`, then wait for the bounded observation so both sides can be compared inline. */
45
+ async compare(captured, existingExecution, options = {}) {
46
+ const run = await this.observe(captured, existingExecution, options);
47
+ return Object.freeze({
48
+ mode: "SHADOW",
49
+ production: run.production,
50
+ observation: await run.observation,
51
+ });
52
+ }
53
+ evaluate(captured, signal) {
54
+ const startedAt = this.clock();
55
+ const settled = new Promise((resolve) => {
56
+ let done = false;
57
+ const finish = (classified) => {
58
+ if (done)
59
+ return;
60
+ done = true;
61
+ clearTimeout(timer);
62
+ signal?.removeEventListener("abort", onAbort);
63
+ resolve(classified);
64
+ };
65
+ const onAbort = () => finish(ShadowPipeline.empty("ABORTED"));
66
+ const timer = setTimeout(() => finish(ShadowPipeline.empty("TIMED_OUT")), this.timeoutMs);
67
+ if (signal?.aborted === true) {
68
+ onAbort();
69
+ return;
70
+ }
71
+ signal?.addEventListener("abort", onAbort, { once: true });
72
+ // Promise.resolve().then isolates a synchronously throwing authority.
73
+ void Promise.resolve()
74
+ .then(async () => await this.authority.evaluate(captured))
75
+ .then((decision) => finish(ShadowPipeline.classify(captured, decision)), () => finish(ShadowPipeline.empty("UNAVAILABLE")));
76
+ });
77
+ return settled.then(async (classified) => {
78
+ const observation = Object.freeze({
79
+ mode: "SHADOW",
80
+ authority: "OBSERVATIONAL",
81
+ intentHash: captured.intentHash,
82
+ ...classified,
83
+ reasonCodes: Object.freeze([...classified.reasonCodes]),
84
+ durationMs: Math.max(0, this.clock() - startedAt),
85
+ });
86
+ await this.record(captured, observation);
87
+ return observation;
88
+ });
89
+ }
90
+ async record(captured, observation) {
91
+ if (this.audit === undefined)
92
+ return;
93
+ await this.audit.record({
94
+ eventType: "SHADOW_EVALUATED",
95
+ authority: "OBSERVATIONAL",
96
+ captured,
97
+ ...(observation.verdict === null ? {} : { verdict: observation.verdict }),
98
+ ...(observation.decisionId === null ? {} : { decisionId: observation.decisionId }),
99
+ ...(observation.dossierId === null ? {} : { dossierId: observation.dossierId }),
100
+ reasonCodes: [`SHADOW_${observation.status}`, ...observation.reasonCodes].slice(0, MAX_REASON_CODES),
101
+ durationMs: observation.durationMs,
102
+ });
103
+ }
104
+ static empty(status, reasonCodes = []) {
105
+ return {
106
+ status,
107
+ verdict: null,
108
+ decisionId: null,
109
+ dossierId: null,
110
+ reasonCodes,
111
+ grantDiscarded: false,
112
+ };
113
+ }
114
+ /** Validates a decision from any authority; the grant, if any, is discarded and reported. */
115
+ static classify(captured, decision) {
116
+ const candidate = decision;
117
+ if (candidate === null ||
118
+ typeof candidate !== "object" ||
119
+ typeof candidate.verdict !== "string" ||
120
+ !VERDICTS.has(candidate.verdict) ||
121
+ !ShadowPipeline.isBoundedIdentifier(candidate.decisionId) ||
122
+ !(candidate.dossierId === null || ShadowPipeline.isBoundedIdentifier(candidate.dossierId)) ||
123
+ !Array.isArray(candidate.reasonCodes) ||
124
+ candidate.reasonCodes.length > MAX_REASON_CODES ||
125
+ !candidate.reasonCodes.every((code) => ShadowPipeline.isBoundedIdentifier(code))) {
126
+ return ShadowPipeline.empty("INVALID", ["SHADOW_DECISION_MALFORMED"]);
127
+ }
128
+ if (candidate.intentHash !== captured.intentHash) {
129
+ return ShadowPipeline.empty("INVALID", ["SHADOW_BINDING_MISMATCH"]);
130
+ }
131
+ const grantDiscarded = candidate.authorization !== null && typeof candidate.authorization === "object";
132
+ if (candidate.failClosed === true) {
133
+ // The authority did not answer the policy question; report unavailability, not a verdict.
134
+ return {
135
+ status: "UNAVAILABLE",
136
+ verdict: null,
137
+ decisionId: candidate.decisionId,
138
+ dossierId: candidate.dossierId,
139
+ reasonCodes: [...candidate.reasonCodes],
140
+ grantDiscarded,
141
+ };
142
+ }
143
+ return {
144
+ status: "OBSERVED",
145
+ verdict: candidate.verdict,
146
+ decisionId: candidate.decisionId,
147
+ dossierId: candidate.dossierId,
148
+ reasonCodes: [...candidate.reasonCodes],
149
+ grantDiscarded,
150
+ };
151
+ }
152
+ static isBoundedIdentifier(value) {
153
+ if (typeof value !== "string" || value.length < 1 || value.length > MAX_IDENTIFIER_LENGTH) {
154
+ return false;
155
+ }
156
+ for (let index = 0; index < value.length; index += 1) {
157
+ const codeUnit = value.charCodeAt(index);
158
+ if (codeUnit <= 0x1f || codeUnit === 0x7f)
159
+ return false;
160
+ }
161
+ return true;
12
162
  }
13
163
  }
14
164
  //# sourceMappingURL=ShadowPipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShadowPipeline.js","sourceRoot":"","sources":["../../src/shadow/ShadowPipeline.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,cAAc;IACW;IAApC,YAAoC,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAE7D,KAAK,CAAC,OAAO,CAClB,QAAwB,EACxB,iBAAmD;QAEnD,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjE,iBAAiB,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"ShadowPipeline.js","sourceRoot":"","sources":["../../src/shadow/ShadowPipeline.ts"],"names":[],"mappings":"AAiEA,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAO1E;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAMN;IALF,KAAK,CAA4B;IACjC,SAAS,CAAS;IAClB,KAAK,CAAe;IAErC,YACmB,SAA4B,EAC7C,UAAiC,EAAE;QADlB,cAAS,GAAT,SAAS,CAAmB;QAG7C,IAAI,SAAS,CAAC,cAAc,KAAK,aAAa,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAClB,QAAwB,EACxB,iBAAmD,EACnD,UAAgC,EAAE;QAElC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,UAA4C,CAAC;QACjD,IAAI,CAAC;YACH,UAAU,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,EAAE,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,6FAA6F;IACtF,KAAK,CAAC,OAAO,CAClB,QAAwB,EACxB,iBAAmD,EACnD,UAAgC,EAAE;QAElC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,MAAM,GAAG,CAAC,WAAW;SACnC,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,QAAwB,EAAE,MAAoB;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YAClD,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,MAAM,MAAM,GAAG,CAAC,UAAsB,EAAQ,EAAE;gBAC9C,IAAI,IAAI;oBAAE,OAAO;gBACjB,IAAI,GAAG,IAAI,CAAC;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1F,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,sEAAsE;YACtE,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACzD,IAAI,CACH,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EACjE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAClD,CAAC;QACN,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACvC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;gBACnD,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,eAAe;gBAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,GAAG,UAAU;gBACb,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBACvD,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;aAClD,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzC,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,QAAwB,EAAE,WAA8B;QAC3E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,kBAAkB;YAC7B,SAAS,EAAE,eAAe;YAC1B,QAAQ;YACR,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;YACzE,GAAG,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;YAClF,GAAG,CAAC,WAAW,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/E,WAAW,EAAE,CAAC,UAAU,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAC7E,CAAC,EACD,gBAAgB,CACjB;YACD,UAAU,EAAE,WAAW,CAAC,UAAU;SACnC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,MAA+B,EAAE,cAAwB,EAAE;QAC9E,OAAO;YACL,MAAM;YACN,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,WAAW;YACX,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,6FAA6F;IACrF,MAAM,CAAC,QAAQ,CAAC,QAAwB,EAAE,QAAsB;QACtE,MAAM,SAAS,GAAG,QAAoD,CAAC;QACvE,IACE,SAAS,KAAK,IAAI;YAClB,OAAO,SAAS,KAAK,QAAQ;YAC7B,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;YACrC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAChC,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1F,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;YACrC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,gBAAgB;YAC/C,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAChF,CAAC;YACD,OAAO,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,cAAc,GAClB,SAAS,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,CAAC;QAClF,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAClC,0FAA0F;YAC1F,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;gBACvC,cAAc;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;YACvC,cAAc;SACf,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,KAAc;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Local testing entry: loopback doubles for Decionis and Presence plus the
3
+ * development fixture primitives. Import from
4
+ * `@decionis/agent-safe-pipeline/testing`. Nothing here is production
5
+ * authority; the fixture authority refuses to construct under
6
+ * `NODE_ENV=production`, and the local servers bind only to loopback.
7
+ */
8
+ export { FixtureAuthorizationVerifier, FixtureDecisionAuthority, createFixtureAuthorityPair, type FixtureAuthorityPair, type FixtureCommitRecord, type FixtureVerdictResolver, type UnsafeFixtureAuthorityOptions, } from "../decision/FixtureDecisionAuthority.js";
9
+ export { InMemoryReplayStore } from "../execution/ReplayStore.js";
10
+ export { LocalPresence, LOCAL_PRESENCE_API_KEY, readBody, type LocalAuthenticator, type LocalCeremonyResponse, type LocalPresenceOptions, type LocalPresenceRequestRecord, type LocalReceipt, type LocalReceiptBinding, type LocalReceiptVerification, type LocalVerificationRecord, type LocalVerificationStatus, } from "./LocalPresence.js";
11
+ export { AUTONOMOUS_LIMIT_MINOR, HUMAN_LIMIT_MINOR, LocalAuthority, LOCAL_AUTHORITY_API_KEY, hashBinding, stableStringify, type LocalAuthorityOptions, type LocalAuthorityPolicy, type LocalAuthorityRequestRecord, type LocalGrantRecord, type LocalManagedEscalationRecord, type LocalRouteOverride, } from "./LocalAuthority.js";
12
+ //# sourceMappingURL=Index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../src/testing/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Local testing entry: loopback doubles for Decionis and Presence plus the
3
+ * development fixture primitives. Import from
4
+ * `@decionis/agent-safe-pipeline/testing`. Nothing here is production
5
+ * authority; the fixture authority refuses to construct under
6
+ * `NODE_ENV=production`, and the local servers bind only to loopback.
7
+ */
8
+ export { FixtureAuthorizationVerifier, FixtureDecisionAuthority, createFixtureAuthorityPair, } from "../decision/FixtureDecisionAuthority.js";
9
+ export { InMemoryReplayStore } from "../execution/ReplayStore.js";
10
+ export { LocalPresence, LOCAL_PRESENCE_API_KEY, readBody, } from "./LocalPresence.js";
11
+ export { AUTONOMOUS_LIMIT_MINOR, HUMAN_LIMIT_MINOR, LocalAuthority, LOCAL_AUTHORITY_API_KEY, hashBinding, stableStringify, } from "./LocalAuthority.js";
12
+ //# sourceMappingURL=Index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/testing/Index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,GAK3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,QAAQ,GAUT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,eAAe,GAOhB,MAAM,qBAAqB,CAAC"}