@vess-id/ai-identity 0.16.0-alpha.2 → 0.16.0-alpha.21
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/agent/agent-did-manager.d.ts +48 -1
- package/dist/agent/agent-did-manager.d.ts.map +1 -1
- package/dist/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/config/index.d.ts +54 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/did/agent.d.ts +7 -1
- package/dist/did/agent.d.ts.map +1 -1
- package/dist/identity/user-identity-manager.d.ts +55 -1
- package/dist/identity/user-identity-manager.d.ts.map +1 -1
- package/dist/index.d.mts +1336 -22738
- package/dist/index.d.ts +25 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30496 -3235
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30482 -3233
- package/dist/index.mjs.map +1 -1
- package/dist/registry/action-registry-json.d.ts +54 -22447
- package/dist/registry/action-registry-json.d.ts.map +1 -1
- package/dist/registry/action-registry.d.ts +34 -0
- package/dist/registry/action-registry.d.ts.map +1 -1
- package/dist/registry/action-risk.d.ts +64 -18
- package/dist/registry/action-risk.d.ts.map +1 -1
- package/dist/registry/action-summary.d.ts +23 -0
- package/dist/registry/action-summary.d.ts.map +1 -1
- package/dist/registry/index.d.ts +3 -3
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/providers.d.ts +22 -1
- package/dist/registry/providers.d.ts.map +1 -1
- package/dist/registry/resource-types.d.ts +17 -4
- package/dist/registry/resource-types.d.ts.map +1 -1
- package/dist/resolver/approval-time-resolution.d.ts +72 -0
- package/dist/resolver/approval-time-resolution.d.ts.map +1 -0
- package/dist/resolver/canonical-resource-id.d.ts +13 -0
- package/dist/resolver/canonical-resource-id.d.ts.map +1 -1
- package/dist/resolver/hierarchical-match.d.ts +60 -0
- package/dist/resolver/hierarchical-match.d.ts.map +1 -0
- package/dist/resolver/salient-digest.d.ts +48 -0
- package/dist/resolver/salient-digest.d.ts.map +1 -0
- package/dist/resolver/target-resolver.d.ts +25 -0
- package/dist/resolver/target-resolver.d.ts.map +1 -1
- package/dist/tool/tool-manager.d.ts.map +1 -1
- package/dist/types/connector-plugin.d.ts +72 -2
- package/dist/types/connector-plugin.d.ts.map +1 -1
- package/dist/types/grant.d.ts +27 -4
- package/dist/types/grant.d.ts.map +1 -1
- package/dist/types/intent.d.ts +2 -2
- package/dist/types/intent.d.ts.map +1 -1
- package/dist/types/permission-mode.d.ts +1 -1
- package/dist/types/permission-mode.d.ts.map +1 -1
- package/dist/types/permission-vc.d.ts +94 -0
- package/dist/types/permission-vc.d.ts.map +1 -1
- package/dist/types/target-binding.d.ts +29 -1
- package/dist/types/target-binding.d.ts.map +1 -1
- package/dist/types/vc.d.ts +11 -1
- package/dist/types/vc.d.ts.map +1 -1
- package/dist/utils/sdjwt-client.d.ts +242 -5
- package/dist/utils/sdjwt-client.d.ts.map +1 -1
- package/dist/utils/sdjwt-disclosure.d.ts.map +1 -1
- package/dist/vc/api-vc-manager.d.ts +5 -0
- package/dist/vc/api-vc-manager.d.ts.map +1 -1
- package/dist/vc/vc-manager.d.ts.map +1 -1
- package/dist/vp/vp-manager.d.ts +35 -0
- package/dist/vp/vp-manager.d.ts.map +1 -1
- package/package.json +14 -3
- package/dist/constraint/__tests__/fixtures/constraint.fixtures.d.ts +0 -56
- package/dist/constraint/__tests__/fixtures/constraint.fixtures.d.ts.map +0 -1
- package/dist/internal-signature/__tests__/canonical.spec.d.ts +0 -2
- package/dist/internal-signature/__tests__/canonical.spec.d.ts.map +0 -1
- package/dist/internal-signature/__tests__/signer-roundtrip.spec.d.ts +0 -2
- package/dist/internal-signature/__tests__/signer-roundtrip.spec.d.ts.map +0 -1
- package/dist/internal-signature/__tests__/signer.spec.d.ts +0 -2
- package/dist/internal-signature/__tests__/signer.spec.d.ts.map +0 -1
- package/dist/monitoring/metrics-manager.d.ts +0 -74
- package/dist/monitoring/metrics-manager.d.ts.map +0 -1
- package/dist/policy/__tests__/cedar-engine.spec.d.ts +0 -17
- package/dist/policy/__tests__/cedar-engine.spec.d.ts.map +0 -1
- package/dist/policy/__tests__/cedar-entities.spec.d.ts +0 -14
- package/dist/policy/__tests__/cedar-entities.spec.d.ts.map +0 -1
- package/dist/policy/__tests__/decision-enum.spec.d.ts +0 -16
- package/dist/policy/__tests__/decision-enum.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-input-validator.spec.d.ts +0 -10
- package/dist/registry/__tests__/action-input-validator.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-registry-freebusy.spec.d.ts +0 -13
- package/dist/registry/__tests__/action-registry-freebusy.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-registry-inbox.spec.d.ts +0 -9
- package/dist/registry/__tests__/action-registry-inbox.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-registry-scheduling.spec.d.ts +0 -13
- package/dist/registry/__tests__/action-registry-scheduling.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-registry-validation.spec.d.ts +0 -13
- package/dist/registry/__tests__/action-registry-validation.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-risk-registry-driven.spec.d.ts +0 -15
- package/dist/registry/__tests__/action-risk-registry-driven.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/action-risk.spec.d.ts +0 -17
- package/dist/registry/__tests__/action-risk.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/guidance-examples.spec.d.ts +0 -2
- package/dist/registry/__tests__/guidance-examples.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/high-risk-resource-binding-invariant.spec.d.ts +0 -30
- package/dist/registry/__tests__/high-risk-resource-binding-invariant.spec.d.ts.map +0 -1
- package/dist/registry/__tests__/reauth-constants.spec.d.ts +0 -2
- package/dist/registry/__tests__/reauth-constants.spec.d.ts.map +0 -1
- package/dist/types/__tests__/cedar-policy.spec.d.ts +0 -8
- package/dist/types/__tests__/cedar-policy.spec.d.ts.map +0 -1
- package/dist/types/__tests__/permission-vc-v3.spec.d.ts +0 -9
- package/dist/types/__tests__/permission-vc-v3.spec.d.ts.map +0 -1
- package/dist/types/__tests__/phase1-vc-factory.spec.d.ts +0 -9
- package/dist/types/__tests__/phase1-vc-factory.spec.d.ts.map +0 -1
- package/dist/types/__tests__/policy-ref.spec.d.ts +0 -9
- package/dist/types/__tests__/policy-ref.spec.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-registry-json.d.ts","sourceRoot":"","sources":["../../src/registry/action-registry-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAu/G3B,CAAA"}
|
|
1
|
+
{"version":3,"file":"action-registry-json.d.ts","sourceRoot":"","sources":["../../src/registry/action-registry-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAY,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,KAAK,mBAAmB,GAAG,UAAU,GAAG;IACtC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAA;IACrD,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3C,eAAe,EAAE,cAAc,GAAG;QAAE,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;KAAE,CAAA;CAC9F,CAAA;AAED;;;;;;;GAOG;AACH,KAAK,uBAAuB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,cAAc,CAAC,GAAG;IAChF,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;CAC1D,CAAA;AA+CD,eAAO,MAAM,eAAe,EAAE,uBAk4d7B,CAAA"}
|
|
@@ -11,12 +11,38 @@ export interface ActionMeta {
|
|
|
11
11
|
resource_type: ResourceType;
|
|
12
12
|
required_relations: Relation[];
|
|
13
13
|
required_scopes: string[];
|
|
14
|
+
/**
|
|
15
|
+
* OAuth provider 別の required_scopes。同じ action を複数の provider 接続で
|
|
16
|
+
* 実行できる場合(calendar.* が Google / Microsoft 双方で動く)に、実行
|
|
17
|
+
* provider のスコープ集合を引くためのマップ。キーは OAuth provider 名
|
|
18
|
+
* ('google' | 'microsoft' など。action 接頭辞の 'calendar' ではない)。
|
|
19
|
+
* 該当キーが無い provider は `required_scopes` にフォールバックする。
|
|
20
|
+
*
|
|
21
|
+
* 値は必ず 1 要素にすること。消費側の判定が grant-suggestion は `.some()`、
|
|
22
|
+
* oauth.service / tool-auth は `.every()` と割れているため、2 要素以上書くと
|
|
23
|
+
* 「grant には提案されるが call_tool は insufficient_scope」という
|
|
24
|
+
* registry checklist が警告する承認不整合になる。
|
|
25
|
+
*/
|
|
26
|
+
required_scopes_by_provider?: Record<string, string[]>;
|
|
14
27
|
capability?: string;
|
|
15
28
|
input_schema?: JsonSchema;
|
|
16
29
|
constraints?: Record<string, unknown>;
|
|
17
30
|
effects?: string[];
|
|
18
31
|
risk: RiskLevel;
|
|
19
32
|
target_bindings?: TargetBindings;
|
|
33
|
+
/**
|
|
34
|
+
* Approval-critical ("salient") parameter names (P1 / #1205). The fields whose
|
|
35
|
+
* values ARE the substance of the human's OOB approval — recipients, subject,
|
|
36
|
+
* body, target owner/repo/id, file path, channel, command, etc. — as opposed to
|
|
37
|
+
* incidental params (pagination, format flags, idempotency keys). The issuer
|
|
38
|
+
* hashes exactly these at claimVC and bakes the digest into the signed VC; the
|
|
39
|
+
* PEP re-hashes the executed params and refuses adoption on mismatch. Every
|
|
40
|
+
* approval-gated (high/critical-risk) action MUST declare a non-empty set —
|
|
41
|
+
* enforced by `__tests__/salient-completeness.spec.ts`. Consumed via
|
|
42
|
+
* `salientFieldsFor()` in `resolver/salient-digest.ts` (the single source of
|
|
43
|
+
* truth, so a future Cedar policy override can layer on top).
|
|
44
|
+
*/
|
|
45
|
+
approval_salient_fields?: string[];
|
|
20
46
|
version: string;
|
|
21
47
|
}
|
|
22
48
|
export interface CapabilityMeta {
|
|
@@ -62,6 +88,14 @@ export declare function indexActions(reg: ActionRegistry): Map<string, ActionMet
|
|
|
62
88
|
export declare function indexCapabilities(reg: ActionRegistry): Map<string, CapabilityMeta>;
|
|
63
89
|
/** 指定アクションの required_scopes を取得(無ければ空配列) */
|
|
64
90
|
export declare function getRequiredScopes(regIndex: Map<string, ActionMeta>, action: string): string[];
|
|
91
|
+
/**
|
|
92
|
+
* 実行 provider に対応する required_scopes を取得する。
|
|
93
|
+
* `required_scopes_by_provider` に該当キーが無ければ `required_scopes` を返すため、
|
|
94
|
+
* provider を渡さない既存呼び出しと同じ結果になる。
|
|
95
|
+
*
|
|
96
|
+
* @param provider OAuth provider 名('google' | 'microsoft' など)
|
|
97
|
+
*/
|
|
98
|
+
export declare function getRequiredScopesForProvider(regIndex: Map<string, ActionMeta>, action: string, provider?: string): string[];
|
|
65
99
|
/** 指定アクションの required_relations(OR解釈)を取得(無ければ空配列) */
|
|
66
100
|
export declare function getRequiredRelations(regIndex: Map<string, ActionMeta>, action: string): Relation[];
|
|
67
101
|
//# sourceMappingURL=action-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-registry.d.ts","sourceRoot":"","sources":["../../src/registry/action-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,CAAA;AACzB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEzE,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,YAAY,CAAA;IAC3B,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,UAAU,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,EAAE,SAAS,CAAA;IACf,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;CAChC;AAID,OAAO,GAAqB,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"action-registry.d.ts","sourceRoot":"","sources":["../../src/registry/action-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,CAAA;AACzB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEzE,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,YAAY,CAAA;IAC3B,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;;;;;;OAWG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,UAAU,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,EAAE,SAAS,CAAA;IACf,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC;;;;;;;;;;;OAWG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;CAChC;AAID,OAAO,GAAqB,MAAM,KAAK,CAAA;AAgHvC;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,GAAG,CAc/B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG;IACzD,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAkEA;AAiBD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAW1F;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAOzE;AAID,mCAAmC;AACnC,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAIzE;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAIlF;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7F;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAYV;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,EAAE,MAAM,GACb,QAAQ,EAAE,CAEZ"}
|
|
@@ -3,26 +3,38 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Spec refs:
|
|
5
5
|
* - docs/specs/2026-05-27-action-risk-registry-driven.md §3
|
|
6
|
-
* - docs/specs/2026-05-24-cedar-unification-design.md §7.2 (original
|
|
7
|
-
* suffix heuristic,
|
|
6
|
+
* - docs/specs/2026-05-24-cedar-unification-design.md §7.2 (the original
|
|
7
|
+
* Phase 1 suffix heuristic, removed — see below)
|
|
8
8
|
*
|
|
9
9
|
* Resolution order:
|
|
10
10
|
* 1. If the action exists in ACTION_REGISTRY and declares a `risk`, return
|
|
11
11
|
* that value — ACTION_REGISTRY is the single source of truth (matching
|
|
12
12
|
* CLAUDE.md). This is what Cedar `context.action.risk_level` binds to,
|
|
13
13
|
* so a developer's hand-curated `risk: 'high'` is now authoritative.
|
|
14
|
-
* 2. Otherwise
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* - everything else → 'medium' (fail-safe)
|
|
14
|
+
* 2. Otherwise the action is one we have never registered and therefore
|
|
15
|
+
* cannot judge: return UNCLASSIFIED_ACTION_RISK ('high', fail-closed).
|
|
16
|
+
* **The name is not evidence.** We deliberately do NOT infer risk from
|
|
17
|
+
* the shape of the action string.
|
|
19
18
|
*
|
|
20
|
-
* The suffix heuristic
|
|
21
|
-
*
|
|
19
|
+
* The suffix heuristic is gone. It used to read the last dotted segment and
|
|
20
|
+
* call read/list/get-class names 'low', which meant an action nobody
|
|
21
|
+
* registered was auto-permitted by the Cedar default tier's unconditional
|
|
22
|
+
* low/medium clause with no approval prompt — purely because it was *named*
|
|
23
|
+
* like a read. That is anti-correlated with safety: an unreviewed action got
|
|
24
|
+
* less scrutiny than a reviewed one. It was reachable in practice, not just
|
|
25
|
+
* in theory: `gmail.message.read`/`search`/`send`/`delete`/`trash` are
|
|
26
|
+
* registered but `gmail.message.list` is NOT, and a `list` is exactly what an
|
|
27
|
+
* LLM emits over MCP. #1285 had already made unclassifiable names fail closed;
|
|
28
|
+
* read-shaped names were the remaining inconsistency, and now every registry
|
|
29
|
+
* miss lands on the same fail-closed answer.
|
|
30
|
+
*
|
|
31
|
+
* This is not lost capability: the way to declare an action low-risk is to
|
|
32
|
+
* register it, which is reviewable, greppable, and exactly what all 172
|
|
33
|
+
* current actions already do.
|
|
22
34
|
*
|
|
23
35
|
* Lookup is case-insensitive: input is lowercased before the registry Map
|
|
24
36
|
* lookup (registry keys are all lowercase), so `gmail.message.TRASH` still
|
|
25
|
-
* hits the registry `high
|
|
37
|
+
* hits the registry `high`.
|
|
26
38
|
*/
|
|
27
39
|
/**
|
|
28
40
|
* Risk tiers an action can declare. Aligned with the registry JSON-schema
|
|
@@ -37,27 +49,61 @@
|
|
|
37
49
|
* `'critical'` at least as strictly as `'high'` — never compare
|
|
38
50
|
* `=== 'high'` alone.
|
|
39
51
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
52
|
+
* Only a registry entry can declare 'critical'; the unregistered fallback
|
|
53
|
+
* never yields it.
|
|
42
54
|
*/
|
|
43
55
|
export type ActionRisk = 'low' | 'medium' | 'high' | 'critical';
|
|
56
|
+
/**
|
|
57
|
+
* Risk assigned to an action we cannot classify — any action absent from
|
|
58
|
+
* ACTION_REGISTRY, plus malformed / empty input.
|
|
59
|
+
*
|
|
60
|
+
* This is `'high'`, not `'medium'`, and the distinction is load-bearing.
|
|
61
|
+
* `'medium'` reads like a cautious middle ground but is on the permissive
|
|
62
|
+
* side of every gate downstream:
|
|
63
|
+
*
|
|
64
|
+
* - The Cedar default policy permits `["low","medium"]` unconditionally,
|
|
65
|
+
* without consulting `context.approval.granted`
|
|
66
|
+
* (`api/src/grant/services/system-policy.service.ts:105`), so a medium
|
|
67
|
+
* action is approved with no prompt at all.
|
|
68
|
+
* - Gate-2 only pins an invocation to its delegated resource when the risk
|
|
69
|
+
* is high or critical (`api/src/tool/services/tool-executor.service.ts`),
|
|
70
|
+
* so a medium action also escapes resource narrowing.
|
|
71
|
+
*
|
|
72
|
+
* An action nobody registered therefore got *less* scrutiny than one that was.
|
|
73
|
+
* The rest of the codebase already treats unknown as dangerous — agentd
|
|
74
|
+
* (`agentd/src/core/execution-engine.ts`), the approval UI's own table, the
|
|
75
|
+
* remote-mcp tool gate, and the approval-request validator all reject or
|
|
76
|
+
* escalate. This constant brings the SDK resolver in line. (#1285)
|
|
77
|
+
*
|
|
78
|
+
* The same reasoning is why the read/list-suffix branch was removed: an
|
|
79
|
+
* unregistered `gmail.message.list` resolved to 'low' and hit that very same
|
|
80
|
+
* unconditional permit clause, so it was auto-approved with no prompt while
|
|
81
|
+
* an identically unregistered `unknown.connector.sync` correctly required one.
|
|
82
|
+
* The only thing separating them was how the name read. Every registry miss
|
|
83
|
+
* now lands here.
|
|
84
|
+
*/
|
|
85
|
+
export declare const UNCLASSIFIED_ACTION_RISK: ActionRisk;
|
|
44
86
|
/**
|
|
45
87
|
* Resolve the risk level for a dotted action name.
|
|
46
88
|
*
|
|
47
89
|
* Registry-driven: a registered action returns its declared `risk`
|
|
48
|
-
* (authoritative)
|
|
90
|
+
* (authoritative). Anything else is an action we have never registered and
|
|
91
|
+
* therefore cannot judge, so it fails closed at UNCLASSIFIED_ACTION_RISK —
|
|
92
|
+
* regardless of how the name reads.
|
|
49
93
|
*
|
|
50
94
|
* Examples:
|
|
51
95
|
* resolveActionRisk('os.secret.read') → 'high' (registry)
|
|
96
|
+
* resolveActionRisk('slack.channel.read') → 'low' (registry)
|
|
52
97
|
* resolveActionRisk('gmail.message.trash') → 'high' (registry)
|
|
53
98
|
* resolveActionRisk('jira.issue.transition') → 'high' (registry)
|
|
54
|
-
* resolveActionRisk('unknown.connector.send') → 'high' (
|
|
55
|
-
* resolveActionRisk('
|
|
56
|
-
*
|
|
99
|
+
* resolveActionRisk('unknown.connector.send') → 'high' (unregistered)
|
|
100
|
+
* resolveActionRisk('gmail.message.list') → 'high' (unregistered —
|
|
101
|
+
* a read-shaped name is
|
|
102
|
+
* not a low-risk claim)
|
|
103
|
+
* resolveActionRisk('unknown.connector.sync') → 'high' (unregistered, #1285)
|
|
57
104
|
*
|
|
58
105
|
* Defensive defaults:
|
|
59
|
-
* - empty / falsy input → '
|
|
60
|
-
* - unknown suffix → 'medium'
|
|
106
|
+
* - empty / falsy input → 'high' (fail-closed; never throws)
|
|
61
107
|
*/
|
|
62
108
|
export declare function resolveActionRisk(action: string | undefined | null): ActionRisk;
|
|
63
109
|
//# sourceMappingURL=action-risk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-risk.d.ts","sourceRoot":"","sources":["../../src/registry/action-risk.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"action-risk.d.ts","sourceRoot":"","sources":["../../src/registry/action-risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,wBAAwB,EAAE,UAAmB,CAAA;AAmB1D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAW/E"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
export interface ActionParamDisplay {
|
|
2
2
|
label: string;
|
|
3
3
|
value: string;
|
|
4
|
+
/** Original raw value before enrichment (UUID等). undefined if not enriched. */
|
|
5
|
+
rawValue?: string;
|
|
4
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* displayFields 1 項目の表示元。
|
|
9
|
+
*
|
|
10
|
+
* - `key` — params[key] を読む単純なケース (string / number など)
|
|
11
|
+
* - `extract` — alias / nested / null など複合 shape を吸収する場合 (jira.* など)
|
|
12
|
+
*
|
|
13
|
+
* extract を指定したケースは key を併用してもよい (fallback として使われる)。
|
|
14
|
+
* 戻り値が undefined / null (Unassign 表現の null は除く) のときは表示しない。
|
|
15
|
+
*/
|
|
16
|
+
interface ActionDisplayField {
|
|
17
|
+
label: string;
|
|
18
|
+
key?: string;
|
|
19
|
+
extract?: (params: Record<string, any>) => unknown;
|
|
20
|
+
}
|
|
21
|
+
interface ActionDisplayConfig {
|
|
22
|
+
summaryTemplate: (params: Record<string, any>) => string;
|
|
23
|
+
displayFields: ActionDisplayField[];
|
|
24
|
+
}
|
|
25
|
+
export declare const ACTION_DISPLAY_CONFIGS: Record<string, ActionDisplayConfig>;
|
|
26
|
+
export declare const SUMMARY_TEMPLATE_PENDING_PRODUCT_WORDING: Record<string, string>;
|
|
5
27
|
/**
|
|
6
28
|
* actionParams の JSON 文字列として許容する最大バイト数 (10,000 文字)。
|
|
7
29
|
* この定数自体はサイズ検証を行わない。検証 (超過時に BadRequestException) は
|
|
@@ -11,4 +33,5 @@ export interface ActionParamDisplay {
|
|
|
11
33
|
export declare const ACTION_PARAMS_MAX_SIZE = 10000;
|
|
12
34
|
export declare function generateActionSummary(action: string, params: Record<string, any> | undefined | null, maxLength?: number): string;
|
|
13
35
|
export declare function generateActionParamsDisplay(action: string, params: Record<string, any> | undefined | null): ActionParamDisplay[];
|
|
36
|
+
export {};
|
|
14
37
|
//# sourceMappingURL=action-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-summary.d.ts","sourceRoot":"","sources":["../../src/registry/action-summary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-summary.d.ts","sourceRoot":"","sources":["../../src/registry/action-summary.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;GAQG;AACH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAA;CACnD;AAED,UAAU,mBAAmB;IAC3B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAA;IACxD,aAAa,EAAE,kBAAkB,EAAE,CAAA;CACpC;AA4HD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAg5FtE,CAAA;AAcD,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6C3E,CAAA;AAmOD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAE5C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EAC9C,SAAS,SAAK,GACb,MAAM,CAiBR;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAC7C,kBAAkB,EAAE,CA8BtB"}
|
package/dist/registry/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export type { ReBACChecker, ABACPolicyEngine, AbacInput, AbacDecision, CredentialStore, CredentialRef, VpVerifier, VerifiedVcClaims, ResourceRef, ResourceScope, DecisionTrace, PlanDelegationInput, PlanDelegationResult, CheckPermissionInput, CheckPermissionResult, } from './access-orchestrator';
|
|
2
2
|
export { resolveActionsFromSelection, planDelegationForVC, checkPermissionWithVP, AllowAllAbac, SimpleRebac, DummyCreds, DummyVpVerifier, } from './access-orchestrator';
|
|
3
|
-
export { Relation, ResourceType, JsonSchema, ActionMeta, CapabilityMeta, ActionRegistry, createAjv, validateRegistryObject, loadActionRegistryFromFile, loadActionRegistryFromObject, indexActions, indexCapabilities, getRequiredScopes, getRequiredRelations, } from './action-registry';
|
|
3
|
+
export { type Relation, type ResourceType, type JsonSchema, type ActionMeta, type CapabilityMeta, type ActionRegistry, createAjv, validateRegistryObject, loadActionRegistryFromFile, loadActionRegistryFromObject, indexActions, indexCapabilities, getRequiredScopes, getRequiredScopesForProvider, getRequiredRelations, } from './action-registry';
|
|
4
4
|
export * from "./action-registry-json";
|
|
5
5
|
export * from "./resource-type-labels";
|
|
6
6
|
export { validateActionInput } from './action-input-validator';
|
|
7
7
|
export type { ValidateActionInputResult } from './action-input-validator';
|
|
8
|
-
export { CanonicalProvider, AnyProvider, CANONICAL_PROVIDERS, PROVIDER_ALIASES, resolveProvider, isCanonicalProvider, isValidProvider, } from './providers';
|
|
9
|
-
export { RESOURCE_TYPES, UnifiedResourceType, LEGACY_RESOURCE_TYPE_MAP, resolveResourceType, } from './resource-types';
|
|
8
|
+
export { type CanonicalProvider, type AnyProvider, CANONICAL_PROVIDERS, PROVIDER_ALIASES, resolveProvider, isCanonicalProvider, isValidProvider, } from './providers';
|
|
9
|
+
export { RESOURCE_TYPES, type UnifiedResourceType, LEGACY_RESOURCE_TYPE_MAP, resolveResourceType, } from './resource-types';
|
|
10
10
|
export { canonicalizeAction, getActionAliases, getAllActionForms, isActionEquivalent, } from './action-aliases';
|
|
11
11
|
export { VALID_MCP_ACTIONS, VALID_MCP_TOOLS, getAllValidMcpActionNames, getValidMcpActionNames, normalizeMcpActionName, } from './action-normalizer';
|
|
12
12
|
export { REAUTH_REQUIRED_ACTION, APPROVAL_REQUIRED_ACTION, GATEWAY_ERROR_CODE, } from './reauth-constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,SAAS,EACT,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAC1B,cAAc,wBAAwB,CAAA;AAKtC,cAAc,wBAAwB,CAAA;AAMtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAGzE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* All packages (API, remote-mcp, SDK) should import provider constants from here.
|
|
5
5
|
*/
|
|
6
6
|
/** Canonical provider identifiers */
|
|
7
|
-
export type CanonicalProvider = 'slack' | 'github' | 'gmail' | 'calendar' | 'jira' | 'hubspot' | 'os';
|
|
7
|
+
export type CanonicalProvider = 'slack' | 'github' | 'gmail' | 'calendar' | 'drive' | 'jira' | 'hubspot' | 'os';
|
|
8
8
|
/** All valid provider identifiers */
|
|
9
9
|
export type AnyProvider = CanonicalProvider;
|
|
10
10
|
/** Ordered list of canonical providers */
|
|
@@ -29,4 +29,25 @@ export declare function isCanonicalProvider(value: string): value is CanonicalPr
|
|
|
29
29
|
* Check if a string is a valid provider (canonical).
|
|
30
30
|
*/
|
|
31
31
|
export declare function isValidProvider(value: string): value is AnyProvider;
|
|
32
|
+
/** OAuth プロバイダのインスタンス多重度。tool 名前空間(CANONICAL_PROVIDERS)ではなく
|
|
33
|
+
* oauth_tokens.provider と同じ語彙でキーを張る。設計 §9.1。 */
|
|
34
|
+
export type InstanceMode = 'single' | 'multi';
|
|
35
|
+
/** multi プロバイダが 2 本目を追加する方法。
|
|
36
|
+
* 'input' = authorize 前にホストを入力(Backlog: 認可 URL 自体がホスト依存)
|
|
37
|
+
* 'discover' = authorize 後にトークン応答から導出(Jira cloudId / Slack team_id) */
|
|
38
|
+
export type InstanceAddMode = 'input' | 'discover';
|
|
39
|
+
export type ProviderInstanceDeclaration = {
|
|
40
|
+
instance_mode: 'single';
|
|
41
|
+
} | {
|
|
42
|
+
instance_mode: 'multi';
|
|
43
|
+
add_mode: InstanceAddMode;
|
|
44
|
+
tenant_ref_pattern: string;
|
|
45
|
+
};
|
|
46
|
+
/** OAuth プロバイダのキー。SDK は api の OAuthProvider enum を import できない
|
|
47
|
+
* (依存の向きが api → SDK の一方向)ので、ここでリテラル union を持つ。
|
|
48
|
+
* api 側との一致は api の spec が実行時に固定する。
|
|
49
|
+
* 🔴 'backlog' は Backlog PR ④ で追加済み — enum + DB enum migration(1788100000000)と同一コミット(§9.1.1)。
|
|
50
|
+
* 🔴 'inbox'(INTERNAL_GRANT_PROVIDER)は OAuth プロバイダではないので入れない(§6.3)。 */
|
|
51
|
+
export type OAuthProviderKey = 'slack' | 'github' | 'google' | 'microsoft' | 'jira' | 'linear' | 'hubspot' | 'backlog';
|
|
52
|
+
export declare const PROVIDER_INSTANCE_MODES: Readonly<Record<OAuthProviderKey, ProviderInstanceDeclaration>>;
|
|
32
53
|
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/registry/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/registry/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;AAE/G,qCAAqC;AACrC,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAE3C,0CAA0C;AAC1C,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EASlD,CAAA;AAEV,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAe,CAAA;AAExF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,oBAAoB,UAAQ,GAC3B,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEnE;AAMD;iDACiD;AACjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE7C;;wEAEwE;AACxE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,CAAA;AAElD,MAAM,MAAM,2BAA2B,GACnC;IAAE,aAAa,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAA;AAErF;;;;wEAIwE;AACxE,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,CAAA;AAIb,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAoBnG,CAAA"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Unified ResourceType definitions — single source of truth.
|
|
3
3
|
*
|
|
4
4
|
* Format: `provider:resource` (e.g., 'slack:channel', 'github:repo')
|
|
5
|
-
*
|
|
5
|
+
* Two segments only (`provider:resource`); a third segment is NOT used (the former
|
|
6
|
+
* 'google:drive:file' placeholder was retired, design 2026-09-19 §6.3).
|
|
6
7
|
*/
|
|
7
8
|
/** All known resource types in canonical `provider:resource` format */
|
|
8
9
|
export declare const RESOURCE_TYPES: {
|
|
@@ -12,8 +13,6 @@ export declare const RESOURCE_TYPES: {
|
|
|
12
13
|
readonly GITHUB_REPO: "github:repo";
|
|
13
14
|
readonly GITHUB_ORG: "github:org";
|
|
14
15
|
readonly GITHUB_ISSUE: "github:issue";
|
|
15
|
-
readonly GOOGLE_DRIVE_FILE: "google:drive:file";
|
|
16
|
-
readonly GOOGLE_DRIVE_FOLDER: "google:drive:folder";
|
|
17
16
|
readonly GMAIL_THREAD: "gmail:thread";
|
|
18
17
|
readonly GMAIL_LABEL: "gmail:label";
|
|
19
18
|
readonly JIRA_PROJECT: "jira:project";
|
|
@@ -27,8 +26,22 @@ export declare const RESOURCE_TYPES: {
|
|
|
27
26
|
readonly HUBSPOT_ENGAGEMENT: "hubspot:engagement";
|
|
28
27
|
readonly HUBSPOT_WORKFLOW: "hubspot:workflow";
|
|
29
28
|
readonly HUBSPOT_ACCOUNT: "hubspot:account";
|
|
29
|
+
readonly BACKLOG_SPACE: "backlog:space";
|
|
30
|
+
readonly BACKLOG_USER: "backlog:user";
|
|
31
|
+
readonly BACKLOG_PROJECT: "backlog:project";
|
|
32
|
+
readonly BACKLOG_ISSUE: "backlog:issue";
|
|
33
|
+
readonly BACKLOG_WIKI: "backlog:wiki";
|
|
34
|
+
readonly BACKLOG_DOCUMENT: "backlog:document";
|
|
35
|
+
readonly BACKLOG_REPOSITORY: "backlog:repository";
|
|
36
|
+
readonly BACKLOG_PULLREQUEST: "backlog:pullrequest";
|
|
37
|
+
readonly BACKLOG_TEAM: "backlog:team";
|
|
38
|
+
readonly BACKLOG_WATCHING: "backlog:watching";
|
|
39
|
+
readonly BACKLOG_NOTIFICATION: "backlog:notification";
|
|
30
40
|
readonly OS_SECRET: "os:secret";
|
|
31
41
|
readonly OS_PROCESS: "os:process";
|
|
42
|
+
readonly DRIVE_FILE: "drive:file";
|
|
43
|
+
readonly DRIVE_SHAREDDRIVE: "drive:shareddrive";
|
|
44
|
+
readonly DRIVE_ACCOUNT: "drive:account";
|
|
32
45
|
readonly ANY: "*";
|
|
33
46
|
};
|
|
34
47
|
export type UnifiedResourceType = typeof RESOURCE_TYPES[keyof typeof RESOURCE_TYPES];
|
|
@@ -40,7 +53,7 @@ export declare const LEGACY_RESOURCE_TYPE_MAP: Readonly<Record<string, string>>;
|
|
|
40
53
|
/**
|
|
41
54
|
* Resolve a resource type string to its canonical form.
|
|
42
55
|
*
|
|
43
|
-
* Handles CamelCase (SlackChannel), legacy prefixes (gh:repo
|
|
56
|
+
* Handles CamelCase (SlackChannel), legacy prefixes (gh:repo),
|
|
44
57
|
* and already-canonical formats (slack:channel).
|
|
45
58
|
*/
|
|
46
59
|
export declare function resolveResourceType(resourceType: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-types.d.ts","sourceRoot":"","sources":["../../src/registry/resource-types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resource-types.d.ts","sourceRoot":"","sources":["../../src/registry/resource-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uEAAuE;AACvE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDjB,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDrE,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval-time parameter resolution declarations (P1 / #1205, Step 4.6, HOLE 2).
|
|
3
|
+
*
|
|
4
|
+
* Some approval-salient parameters name a resource whose EXECUTION-EFFECTIVE
|
|
5
|
+
* value is a different string than what the approver typed — the server
|
|
6
|
+
* resolves it live at execution time. The canonical example is a Slack
|
|
7
|
+
* `channel`: the approver sees `#general` but the API acts on the native
|
|
8
|
+
* conversation id `C09…`, resolved via a LIVE Slack lookup whose name→id
|
|
9
|
+
* mapping is NOT stable (channels can be renamed/recreated).
|
|
10
|
+
*
|
|
11
|
+
* Hashing the NAME (what the human saw) fails to bind the value the API
|
|
12
|
+
* actually acts on, and re-resolving at execution time re-opens a TOCTOU
|
|
13
|
+
* window (the id behind `#general` can change after approval). The fix
|
|
14
|
+
* (plan Step 4.6, option c) is to resolve the execution-effective value ONCE
|
|
15
|
+
* at APPROVAL time and FREEZE it into the persisted actionParams, so the
|
|
16
|
+
* issuance digest, the PEP digest, and the connector all agree on the SAME
|
|
17
|
+
* resolved id — and execution-time normalization sees an already-id value and
|
|
18
|
+
* no-ops.
|
|
19
|
+
*
|
|
20
|
+
* This module is the SINGLE SOURCE OF TRUTH for WHICH (action, field) pairs are
|
|
21
|
+
* resolver-backed and by WHAT resolver kind. The actual resolution (a live API
|
|
22
|
+
* call needing an OAuth token) lives in the API layer
|
|
23
|
+
* (`ApprovalTimeParamResolverService`), which reads these declarations. Keeping
|
|
24
|
+
* the declaration here — beside `salientFieldsFor` — lets any participant reason
|
|
25
|
+
* about which salient fields are frozen-at-approval without importing API code.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Reserved, NON-salient key under which the frozen name→id mapping is recorded
|
|
29
|
+
* inside the persisted actionParams. It is intentionally NOT a declared salient
|
|
30
|
+
* field for any action, so {@link salientFieldsFor}-driven digests ignore it
|
|
31
|
+
* (canonicalization rule 1 selects only declared salient keys) and it never
|
|
32
|
+
* perturbs the frozen digest. It exists so the approval UI can still display the
|
|
33
|
+
* human-readable name while the bound/executed `channel` value is the id, and so
|
|
34
|
+
* the name→id decision is recorded for audit.
|
|
35
|
+
*
|
|
36
|
+
* Shape: `{ [field: string]: { name: string; id: string } }`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const RESOLVED_PARAMS_KEY: "__resolvedParams";
|
|
39
|
+
/**
|
|
40
|
+
* Return a SHALLOW copy of `params` with the reserved {@link RESOLVED_PARAMS_KEY}
|
|
41
|
+
* removed, for response-shaping when the raw actionParams are serialized OUT to a
|
|
42
|
+
* client (approval-detail / claim responses). Defense-in-depth (#1205 Step 4.6):
|
|
43
|
+
* every current display consumer already filters the key, but a future client
|
|
44
|
+
* that iterates `data.actionParams` directly should never see the internal
|
|
45
|
+
* name→id mapping.
|
|
46
|
+
*
|
|
47
|
+
* IMPORTANT — this is PURELY response-shaping. It must NEVER be applied to the
|
|
48
|
+
* PERSISTED value (the DB keeps the mapping for display-name rendering), and it
|
|
49
|
+
* has NO effect on the digest or the executed value, both of which read the
|
|
50
|
+
* stored entity — not the response DTO. The frozen `channel` id (and every other
|
|
51
|
+
* real param) is preserved verbatim; only the reserved metadata key is dropped.
|
|
52
|
+
*
|
|
53
|
+
* Passes through `null` / `undefined` unchanged so callers can use it inline on
|
|
54
|
+
* an optional column.
|
|
55
|
+
*/
|
|
56
|
+
export declare function stripResolvedParams<T extends Record<string, unknown> | null | undefined>(params: T): T;
|
|
57
|
+
/** The kind of live resolution a resolver-backed field requires. */
|
|
58
|
+
export type ApprovalResolverKind = 'slack-channel';
|
|
59
|
+
/** A single resolver-backed field declaration for an action. */
|
|
60
|
+
export interface ResolverBackedField {
|
|
61
|
+
/** The actionParams key whose value is resolved+frozen at approval time. */
|
|
62
|
+
field: string;
|
|
63
|
+
/** Which resolver performs the name→id resolution. */
|
|
64
|
+
kind: ApprovalResolverKind;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolver-backed salient fields declared for `action`, or `undefined` when the
|
|
68
|
+
* action has none (the common case — most actions carry no live-resolved
|
|
69
|
+
* fields, so approval-time resolution is skipped entirely).
|
|
70
|
+
*/
|
|
71
|
+
export declare function resolverBackedFieldsFor(action: string): ResolverBackedField[] | undefined;
|
|
72
|
+
//# sourceMappingURL=approval-time-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-time-resolution.d.ts","sourceRoot":"","sources":["../../src/resolver/approval-time-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAG,kBAA2B,CAAA;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACtF,MAAM,EAAE,CAAC,GACR,CAAC,CAKH;AAED,oEAAoE;AACpE,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAA;AAElD,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,IAAI,EAAE,oBAAoB,CAAA;CAC3B;AAgDD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAGzF"}
|
|
@@ -34,4 +34,17 @@
|
|
|
34
34
|
* meaning and is ignored for qualification.
|
|
35
35
|
*/
|
|
36
36
|
export declare function canonicalResourceId(action: string, params: Record<string, unknown> | undefined, ctx?: Record<string, string>): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* §8.2.1 — `requestTenantRef` の生産者。`canonicalResourceId` と同じ入力
|
|
39
|
+
* (action + parameters)・同じ registry index・同じ {@link TargetResolver} で
|
|
40
|
+
* `tenant_ref` 束縛を解決する。束縛の無い action(このコミット時点では全 action)は
|
|
41
|
+
* undefined を返す。
|
|
42
|
+
*
|
|
43
|
+
* api の tool-executor はこれを `resolvedResourceId` の隣で呼び、
|
|
44
|
+
* `CheckGrantPermissionDto.requestTenantRef` に渡す。
|
|
45
|
+
*
|
|
46
|
+
* undefined は「テナント未指定」= 既定コネクションに委ねる、の意味であって
|
|
47
|
+
* 「拒否」ではない(fallback 'connection_default')。
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveTenantRef(standardizedAction: string, params?: Record<string, unknown>): string | undefined;
|
|
37
50
|
//# sourceMappingURL=canonical-resource-id.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-resource-id.d.ts","sourceRoot":"","sources":["../../src/resolver/canonical-resource-id.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"canonical-resource-id.d.ts","sourceRoot":"","sources":["../../src/resolver/canonical-resource-id.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAwDpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,GAAG,SAAS,CA2BpB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 「承認済みの親 id は、このリクエストの子 id を覆うか?」を決める **唯一の**
|
|
3
|
+
* provider 別テーブル。
|
|
4
|
+
*
|
|
5
|
+
* ## なぜ SDK に出したか
|
|
6
|
+
*
|
|
7
|
+
* この判定は **2 つの独立した強制点**に存在する:
|
|
8
|
+
*
|
|
9
|
+
* 1. api の Gate-2 —— `packages/api/src/tool/services/resource-resolver.ts` の
|
|
10
|
+
* `ResourceResolverRegistry`(`supportsHierarchicalMatch()` で opt-in)。
|
|
11
|
+
* 2. agentd の OOB 再実行チェック —— `packages/agentd/src/core/execution-engine.ts`
|
|
12
|
+
* の `approvedResourceMatches`。
|
|
13
|
+
*
|
|
14
|
+
* 片方だけが階層マッチを知っていると、**Gate-2 は ALLOW、agentd は REJECT** に
|
|
15
|
+
* なり、承認が永久に解決しない。これが #1009(Jira)で実際に起きた障害で、
|
|
16
|
+
* `resourceIdHierarchicallyMatches` はその修正だった —— ただし Jira 専用
|
|
17
|
+
* (`r.provider === 'jira'` 直書き)。api 側はその後 Backlog / Calendar を
|
|
18
|
+
* 階層マッチに加えたので、Backlog で **同じ形の障害が再発**していた:
|
|
19
|
+
* project(`PROJ`)で承認 → issue(`PROJ-12`)で再実行 → Gate-2 ALLOW /
|
|
20
|
+
* agentd REJECT。
|
|
21
|
+
*
|
|
22
|
+
* このモジュールは `execution-engine.ts` の TODO(provider-generic)が指示した
|
|
23
|
+
* 通り「interface を SDK に出して両方に食わせる」ものであり、`provider ===` の
|
|
24
|
+
* 分岐を増やす代替である。
|
|
25
|
+
*
|
|
26
|
+
* ## 🔴 extractor は provider ごとに **別物のまま**(統合してはいけない)
|
|
27
|
+
*
|
|
28
|
+
* | provider | pattern | 差分 |
|
|
29
|
+
* |---|---|---|
|
|
30
|
+
* | jira | `^([A-Z][A-Z0-9_]+)-\d+$` | 先頭は英字、2 文字以上 |
|
|
31
|
+
* | backlog | `^([A-Z0-9_]+)-\d+$` | 数字始まり可、1 文字可 |
|
|
32
|
+
*
|
|
33
|
+
* この関数は「子 id から **親を導いて grant を広げる**」方向に働く。つまり
|
|
34
|
+
* pattern が緩いほど、承認された範囲より **広く** 許可が当たる。2 つを 1 つに
|
|
35
|
+
* まとめるのは(どちらに寄せても)セキュリティ上の変更であって、リファクタでは
|
|
36
|
+
* ない。共有するのは **形(interface)だけ**で、pattern は provider が持つ。
|
|
37
|
+
*
|
|
38
|
+
* ## 既定は「階層なし」
|
|
39
|
+
*
|
|
40
|
+
* 表に載っていない provider(slack, github, os, …)は `null` を返し、呼び出し側は
|
|
41
|
+
* 素の文字列一致に落ちる —— fail-closed。新しい階層 provider を増やすときは、
|
|
42
|
+
* この 1 箇所に 1 行足すだけでよい。
|
|
43
|
+
*/
|
|
44
|
+
export type HierarchicalParentExtractor = (childResourceId: string) => string | null;
|
|
45
|
+
/**
|
|
46
|
+
* provider が親→子の階層マッチを持つならその extractor を、持たないなら `null`。
|
|
47
|
+
*
|
|
48
|
+
* @param provider `'jira'` / `'backlog'` など。未知・未定義は `null`(= 階層なし)。
|
|
49
|
+
*/
|
|
50
|
+
export declare function getHierarchicalParentExtractor(provider: string | undefined | null): HierarchicalParentExtractor | null;
|
|
51
|
+
/**
|
|
52
|
+
* 承認済み id `approvedId` が、リクエストの id `candidateId` を覆うか。
|
|
53
|
+
*
|
|
54
|
+
* - 完全一致は常に true。
|
|
55
|
+
* - それ以外は、provider が階層を持つときに限り、`candidateId` から親を導いて
|
|
56
|
+
* `approvedId` と比較する(**親 → 子の一方向のみ**)。
|
|
57
|
+
* - 階層を持たない provider は完全一致だけ = 既存挙動のまま。
|
|
58
|
+
*/
|
|
59
|
+
export declare function hierarchicalResourceIdMatches(provider: string | undefined | null, approvedId: string, candidateId: string): boolean;
|
|
60
|
+
//# sourceMappingURL=hierarchical-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchical-match.d.ts","sourceRoot":"","sources":["../../src/resolver/hierarchical-match.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;AA2BpF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAClC,2BAA2B,GAAG,IAAI,CAMpC;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT"}
|