@knowttl/mg-axi 0.1.1 → 0.1.2
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/README.md +149 -38
- package/dist/api.js +134 -8
- package/dist/bin/mg-axi-hook.js +31 -0
- package/dist/catalogue.js +390 -2
- package/dist/cli.js +116 -8
- package/dist/docs.js +45 -5
- package/dist/doctor.js +2 -2
- package/dist/entra-access-reviews.js +11 -4
- package/dist/entra-apps.js +13 -8
- package/dist/entra-audit-logs.js +8 -4
- package/dist/entra-auth-methods.js +8 -4
- package/dist/entra-certificate-auth.js +12 -8
- package/dist/entra-conditional-access.js +9 -4
- package/dist/entra-contacts.js +19 -12
- package/dist/entra-contracts.js +7 -4
- package/dist/entra-custom-security-attributes.js +19 -12
- package/dist/entra-data-policy-operations.js +7 -4
- package/dist/entra-delegated-admin.js +55 -6
- package/dist/entra-deleted-items.js +6 -4
- package/dist/entra-directory-objects.js +6 -4
- package/dist/entra-directory.js +19 -12
- package/dist/entra-domains.js +13 -8
- package/dist/entra-entitlement-management.js +12 -4
- package/dist/entra-group-pim.js +431 -0
- package/dist/entra-groups.js +13 -8
- package/dist/entra-lifecycle-workflows.js +136 -9
- package/dist/entra-organization.js +13 -8
- package/dist/entra-risk-prevention.js +436 -0
- package/dist/entra-risk.js +213 -5
- package/dist/entra-roles.js +10 -4
- package/dist/entra-subscriptions.js +6 -4
- package/dist/entra-users.js +7 -4
- package/dist/graph-session.js +29 -5
- package/dist/hook.js +84 -0
- package/dist/list-totals.js +52 -0
- package/dist/setup.js +5 -0
- package/docs/coverage.md +79 -13
- package/inventory/operations.json +2 -2
- package/package.json +4 -3
- package/skills/mg-axi/SKILL.md +56 -1
package/dist/setup.js
CHANGED
|
@@ -53,10 +53,15 @@ const READ_FAMILY_PREFIXES = [
|
|
|
53
53
|
["entra service-principal", "application/service-principal and consent grants"],
|
|
54
54
|
["entra risky-user", "risk"],
|
|
55
55
|
["entra risk-detection", "risk"],
|
|
56
|
+
["entra risky-service-principal", "risk"],
|
|
57
|
+
["entra service-principal-risk-detection", "risk"],
|
|
56
58
|
["entra conditional-access", "Conditional Access"],
|
|
57
59
|
["entra identity-provider", "identity-provider"],
|
|
58
60
|
["entra federation-configuration", "federation configurations"],
|
|
59
61
|
["entra data-policy-operation", "data policy operations"],
|
|
62
|
+
["entra fraud-protection-provider", "risk prevention"],
|
|
63
|
+
["entra web-application-firewall-provider", "risk prevention"],
|
|
64
|
+
["entra web-application-firewall-verification", "risk prevention"],
|
|
60
65
|
["entra access-review", "access-review"],
|
|
61
66
|
["entra entitlement catalog", "entitlement catalogs and access packages"],
|
|
62
67
|
["entra entitlement access-package", "entitlement catalogs and access packages"],
|
package/docs/coverage.md
CHANGED
|
@@ -10,9 +10,9 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
10
10
|
|
|
11
11
|
## Counts
|
|
12
12
|
|
|
13
|
-
- implemented read leaves:
|
|
13
|
+
- implemented read leaves: 233 (231 named Entra reads plus reviewed raw api get and doctor health check)
|
|
14
14
|
- implemented write leaves: 5 (named gated mutations below)
|
|
15
|
-
- local leaves:
|
|
15
|
+
- local leaves: 7 (home, profile, login and setup views)
|
|
16
16
|
- inventory named-command: 0
|
|
17
17
|
- inventory reviewed-raw-read: 0
|
|
18
18
|
- inventory scheduled: 8440
|
|
@@ -38,6 +38,16 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
38
38
|
| `mg-axi entra role-assignment list` | `GET:/roleManagement/directory/roleAssignments` | scheduled | READ-09 |
|
|
39
39
|
| `mg-axi entra pim eligible list` | `GET:/roleManagement/directory/roleEligibilityScheduleInstances` | scheduled | READ-09 |
|
|
40
40
|
| `mg-axi entra pim active list` | `GET:/roleManagement/directory/roleAssignmentScheduleInstances` | scheduled | READ-09 |
|
|
41
|
+
| `mg-axi entra pim group-assignment-schedule list` | `GET:/identityGovernance/privilegedAccess/group/assignmentSchedules` | scheduled | EXT-02 |
|
|
42
|
+
| `mg-axi entra pim group-assignment-schedule show` | `GET:/identityGovernance/privilegedAccess/group/assignmentSchedules/{privilegedAccessGroupAssignmentSchedule-id}` | scheduled | EXT-02 |
|
|
43
|
+
| `mg-axi entra pim group-assignment-instance list` | `GET:/identityGovernance/privilegedAccess/group/assignmentScheduleInstances` | scheduled | EXT-02 |
|
|
44
|
+
| `mg-axi entra pim group-assignment-instance show` | `GET:/identityGovernance/privilegedAccess/group/assignmentScheduleInstances/{privilegedAccessGroupAssignmentScheduleInstance-id}` | scheduled | EXT-02 |
|
|
45
|
+
| `mg-axi entra pim group-eligibility-schedule list` | `GET:/identityGovernance/privilegedAccess/group/eligibilitySchedules` | scheduled | EXT-02 |
|
|
46
|
+
| `mg-axi entra pim group-eligibility-schedule show` | `GET:/identityGovernance/privilegedAccess/group/eligibilitySchedules/{privilegedAccessGroupEligibilitySchedule-id}` | scheduled | EXT-02 |
|
|
47
|
+
| `mg-axi entra pim group-eligibility-instance list` | `GET:/identityGovernance/privilegedAccess/group/eligibilityScheduleInstances` | scheduled | EXT-02 |
|
|
48
|
+
| `mg-axi entra pim group-eligibility-instance show` | `GET:/identityGovernance/privilegedAccess/group/eligibilityScheduleInstances/{privilegedAccessGroupEligibilityScheduleInstance-id}` | scheduled | EXT-02 |
|
|
49
|
+
| `mg-axi entra pim group-eligibility-request list` | `GET:/identityGovernance/privilegedAccess/group/eligibilityScheduleRequests` | scheduled | EXT-02 |
|
|
50
|
+
| `mg-axi entra pim group-eligibility-request show` | `GET:/identityGovernance/privilegedAccess/group/eligibilityScheduleRequests/{privilegedAccessGroupEligibilityScheduleRequest-id}` | scheduled | EXT-02 |
|
|
41
51
|
| `mg-axi entra device list` | `GET:/devices` | scheduled | READ-10 |
|
|
42
52
|
| `mg-axi entra device show` | `GET:/devices/{device-id}` | scheduled | READ-10 |
|
|
43
53
|
| `mg-axi entra administrative-unit list` | `GET:/directory/administrativeUnits` | scheduled | READ-10 |
|
|
@@ -116,6 +126,12 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
116
126
|
| `mg-axi entra delegated-admin-relationship show-request` | `GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/requests/{delegatedAdminRelationshipRequest-id}` | scheduled | EXT-04 |
|
|
117
127
|
| `mg-axi entra delegated-admin-customer list-service-management-details` | `GET:/tenantRelationships/delegatedAdminCustomers/{delegatedAdminCustomer-id}/serviceManagementDetails` | scheduled | EXT-04 |
|
|
118
128
|
| `mg-axi entra delegated-admin-customer show-service-management-detail` | `GET:/tenantRelationships/delegatedAdminCustomers/{delegatedAdminCustomer-id}/serviceManagementDetails/{delegatedAdminServiceManagementDetail-id}` | scheduled | EXT-04 |
|
|
129
|
+
| `mg-axi entra delegated-admin-customer count` | `GET:/tenantRelationships/delegatedAdminCustomers/$count` | scheduled | EXT-04 |
|
|
130
|
+
| `mg-axi entra delegated-admin-customer count-service-management-details` | `GET:/tenantRelationships/delegatedAdminCustomers/{delegatedAdminCustomer-id}/serviceManagementDetails/$count` | scheduled | EXT-04 |
|
|
131
|
+
| `mg-axi entra delegated-admin-relationship count` | `GET:/tenantRelationships/delegatedAdminRelationships/$count` | scheduled | EXT-04 |
|
|
132
|
+
| `mg-axi entra delegated-admin-relationship count-access-assignments` | `GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/accessAssignments/$count` | scheduled | EXT-04 |
|
|
133
|
+
| `mg-axi entra delegated-admin-relationship count-operations` | `GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/operations/$count` | scheduled | EXT-04 |
|
|
134
|
+
| `mg-axi entra delegated-admin-relationship count-requests` | `GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/requests/$count` | scheduled | EXT-04 |
|
|
119
135
|
| `mg-axi entra multi-tenant-organization show` | `GET:/tenantRelationships/multiTenantOrganization` | scheduled | EXT-04 |
|
|
120
136
|
| `mg-axi entra multi-tenant-organization join-request show` | `GET:/tenantRelationships/multiTenantOrganization/joinRequest` | scheduled | EXT-04 |
|
|
121
137
|
| `mg-axi entra multi-tenant-organization tenant list` | `GET:/tenantRelationships/multiTenantOrganization/tenants` | scheduled | EXT-04 |
|
|
@@ -137,6 +153,12 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
137
153
|
| `mg-axi entra risky-user show` | `GET:/identityProtection/riskyUsers/{riskyUser-id}` | scheduled | READ-06 |
|
|
138
154
|
| `mg-axi entra risk-detection list` | `GET:/identityProtection/riskDetections` | scheduled | READ-06 |
|
|
139
155
|
| `mg-axi entra risk-detection show` | `GET:/identityProtection/riskDetections/{riskDetection-id}` | scheduled | READ-06 |
|
|
156
|
+
| `mg-axi entra risky-service-principal list` | `GET:/identityProtection/riskyServicePrincipals` | scheduled | READ-06 |
|
|
157
|
+
| `mg-axi entra risky-service-principal show` | `GET:/identityProtection/riskyServicePrincipals/{riskyServicePrincipal-id}` | scheduled | READ-06 |
|
|
158
|
+
| `mg-axi entra risky-service-principal history list` | `GET:/identityProtection/riskyServicePrincipals/{riskyServicePrincipal-id}/history` | scheduled | READ-06 |
|
|
159
|
+
| `mg-axi entra risky-service-principal history show` | `GET:/identityProtection/riskyServicePrincipals/{riskyServicePrincipal-id}/history/{riskyServicePrincipalHistoryItem-id}` | scheduled | READ-06 |
|
|
160
|
+
| `mg-axi entra service-principal-risk-detection list` | `GET:/identityProtection/servicePrincipalRiskDetections` | scheduled | READ-06 |
|
|
161
|
+
| `mg-axi entra service-principal-risk-detection show` | `GET:/identityProtection/servicePrincipalRiskDetections/{servicePrincipalRiskDetection-id}` | scheduled | READ-06 |
|
|
140
162
|
| `mg-axi entra conditional-access policy list` | `GET:/identity/conditionalAccess/policies` | scheduled | READ-03 |
|
|
141
163
|
| `mg-axi entra conditional-access policy show` | `GET:/identity/conditionalAccess/policies/{conditionalAccessPolicy-id}` | scheduled | READ-03 |
|
|
142
164
|
| `mg-axi entra conditional-access named-location list` | `GET:/identity/conditionalAccess/namedLocations` | scheduled | READ-03 |
|
|
@@ -163,6 +185,16 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
163
185
|
| `mg-axi entra data-policy-operation list` | `GET:/dataPolicyOperations` | scheduled | EXT-03 |
|
|
164
186
|
| `mg-axi entra data-policy-operation show` | `GET:/dataPolicyOperations/{dataPolicyOperation-id}` | scheduled | EXT-03 |
|
|
165
187
|
| `mg-axi entra data-policy-operation count` | `GET:/dataPolicyOperations/$count` | scheduled | EXT-03 |
|
|
188
|
+
| `mg-axi entra fraud-protection-provider list` | `GET:/identity/riskPrevention/fraudProtectionProviders` | scheduled | EXT-03 |
|
|
189
|
+
| `mg-axi entra fraud-protection-provider show` | `GET:/identity/riskPrevention/fraudProtectionProviders/{fraudProtectionProvider-id}` | scheduled | EXT-03 |
|
|
190
|
+
| `mg-axi entra fraud-protection-provider count` | `GET:/identity/riskPrevention/fraudProtectionProviders/$count` | scheduled | EXT-03 |
|
|
191
|
+
| `mg-axi entra web-application-firewall-provider list` | `GET:/identity/riskPrevention/webApplicationFirewallProviders` | scheduled | EXT-03 |
|
|
192
|
+
| `mg-axi entra web-application-firewall-provider show` | `GET:/identity/riskPrevention/webApplicationFirewallProviders/{webApplicationFirewallProvider-id}` | scheduled | EXT-03 |
|
|
193
|
+
| `mg-axi entra web-application-firewall-provider count` | `GET:/identity/riskPrevention/webApplicationFirewallProviders/$count` | scheduled | EXT-03 |
|
|
194
|
+
| `mg-axi entra web-application-firewall-verification list` | `GET:/identity/riskPrevention/webApplicationFirewallVerifications` | scheduled | EXT-03 |
|
|
195
|
+
| `mg-axi entra web-application-firewall-verification show` | `GET:/identity/riskPrevention/webApplicationFirewallVerifications/{webApplicationFirewallVerificationModel-id}` | scheduled | EXT-03 |
|
|
196
|
+
| `mg-axi entra web-application-firewall-verification count` | `GET:/identity/riskPrevention/webApplicationFirewallVerifications/$count` | scheduled | EXT-03 |
|
|
197
|
+
| `mg-axi entra web-application-firewall-verification provider show` | `GET:/identity/riskPrevention/webApplicationFirewallVerifications/{webApplicationFirewallVerificationModel-id}/provider` | scheduled | EXT-03 |
|
|
166
198
|
| `mg-axi entra access-review definition list` | `GET:/identityGovernance/accessReviews/definitions` | scheduled | EXT-02 |
|
|
167
199
|
| `mg-axi entra access-review definition show` | `GET:/identityGovernance/accessReviews/definitions/{accessReviewScheduleDefinition-id}` | scheduled | EXT-02 |
|
|
168
200
|
| `mg-axi entra access-review instance list` | `GET:/identityGovernance/accessReviews/definitions/{accessReviewScheduleDefinition-id}/instances` | scheduled | EXT-02 |
|
|
@@ -215,6 +247,15 @@ list below is the implemented truth and never counts scheduled work as complete.
|
|
|
215
247
|
| `mg-axi entra lifecycle task-report count` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/taskReports/$count` | scheduled | EXT-02 |
|
|
216
248
|
| `mg-axi entra lifecycle task-report task show` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/taskReports/{taskReport-id}/task` | scheduled | EXT-02 |
|
|
217
249
|
| `mg-axi entra lifecycle task-report task-definition show` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/taskReports/{taskReport-id}/taskDefinition` | scheduled | EXT-02 |
|
|
250
|
+
| `mg-axi entra lifecycle run user-processing-result list` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/userProcessingResults` | scheduled | EXT-02 |
|
|
251
|
+
| `mg-axi entra lifecycle run user-processing-result show` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/userProcessingResults/{userProcessingResult-id}` | scheduled | EXT-02 |
|
|
252
|
+
| `mg-axi entra lifecycle run user-processing-result count` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/userProcessingResults/$count` | scheduled | EXT-02 |
|
|
253
|
+
| `mg-axi entra lifecycle run subject-processing-result list` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/subjectProcessingResults` | scheduled | EXT-02 |
|
|
254
|
+
| `mg-axi entra lifecycle run subject-processing-result show` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/subjectProcessingResults/{subjectProcessingResult-id}` | scheduled | EXT-02 |
|
|
255
|
+
| `mg-axi entra lifecycle run subject-processing-result count` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/subjectProcessingResults/$count` | scheduled | EXT-02 |
|
|
256
|
+
| `mg-axi entra lifecycle run task-processing-result list` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/taskProcessingResults` | scheduled | EXT-02 |
|
|
257
|
+
| `mg-axi entra lifecycle run task-processing-result show` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/taskProcessingResults/{taskProcessingResult-id}` | scheduled | EXT-02 |
|
|
258
|
+
| `mg-axi entra lifecycle run task-processing-result count` | `GET:/identityGovernance/lifecycleWorkflows/workflows/{workflow-id}/runs/{run-id}/taskProcessingResults/$count` | scheduled | EXT-02 |
|
|
218
259
|
| `mg-axi api get` | reviewed raw reads (see src/api.ts) | reviewed-raw-read catalogue | API-01 |
|
|
219
260
|
| `mg-axi doctor` | bounded `GET:/users` health check | uses the named user-list read | PACK-01 |
|
|
220
261
|
|
|
@@ -305,6 +346,28 @@ Workforce context only; no external-customer support is claimed.
|
|
|
305
346
|
| `beta:GET:/dataPolicyOperations/$count` | scheduled (deferred) | EXT-03 | Deferred by firstmate data-policy-operations scope to a later EXT-03 data-policy-operations beta subfamily: the three approved reads cover v1.0 only; beta data-policy operations need separate review. |
|
|
306
347
|
| `beta:GET:/dataPolicyOperations/{dataPolicyOperation-id}` | scheduled (deferred) | EXT-03 | Deferred by firstmate data-policy-operations scope to a later EXT-03 data-policy-operations beta subfamily: the three approved reads cover v1.0 only; beta data-policy operations need separate review. |
|
|
307
348
|
|
|
349
|
+
## EXT-03 risk-prevention scope decisions
|
|
350
|
+
|
|
351
|
+
This change covers the ten v1.0 workforce risk-prevention reads above (fraud-protection-provider list, show and count; web-application-firewall-provider list, show and count; web-application-firewall-verification list, show, count and provider show).
|
|
352
|
+
The eleven beta operations below remain scheduled with an explicit deferred disposition to a later EXT-03 subfamily; no new commands or raw access are approved.
|
|
353
|
+
Risk-prevention reads support v1.0 only; beta needs its own review.
|
|
354
|
+
API keys, client secrets and other key material (Arkose privateKey/publicKey, HUMAN serverToken, Akamai clientSecret/clientToken/accessToken, Cloudflare apiToken) are never selectable and never projected; application profiles are refused before credentials because Graph documents no supported application permission.
|
|
355
|
+
Workforce context only; no external-customer support is claimed.
|
|
356
|
+
|
|
357
|
+
| Inventory operation | Disposition | Owning slice | Deferral reason |
|
|
358
|
+
|---|---|---|---|
|
|
359
|
+
| `beta:GET:/identity/riskPrevention` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
360
|
+
| `beta:GET:/identity/riskPrevention/fraudProtectionProviders` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
361
|
+
| `beta:GET:/identity/riskPrevention/fraudProtectionProviders/$count` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
362
|
+
| `beta:GET:/identity/riskPrevention/fraudProtectionProviders/{fraudProtectionProvider-id}` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
363
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallProviders` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
364
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallProviders/$count` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
365
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallProviders/{webApplicationFirewallProvider-id}` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
366
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallVerifications` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
367
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallVerifications/$count` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
368
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallVerifications/{webApplicationFirewallVerificationModel-id}` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
369
|
+
| `beta:GET:/identity/riskPrevention/webApplicationFirewallVerifications/{webApplicationFirewallVerificationModel-id}/provider` | scheduled (deferred) | EXT-03 | Deferred by firstmate risk-prevention scope to a later EXT-03 risk-prevention beta subfamily: the ten approved reads cover v1.0 only; beta risk prevention needs separate review. |
|
|
370
|
+
|
|
308
371
|
## EXT-03 invitations scope decisions
|
|
309
372
|
|
|
310
373
|
Firstmate decision (mg-ext-03b inbox 001): do not implement these reads and add no scope.
|
|
@@ -707,19 +770,13 @@ Beta contracts need their own review; delta-token sync needs its own change-trac
|
|
|
707
770
|
|
|
708
771
|
## EXT-04 delegated-admin scope decisions
|
|
709
772
|
|
|
710
|
-
Firstmate scope: approve narrowing this change to the
|
|
773
|
+
Firstmate scope: approve narrowing this change to the eighteen v1.0 delegated-admin reads above (customer list/show/count, relationship list/show/count, access-assignment list/show/count, operation list/show/count, request list/show/count and service-management-detail list/show/count).
|
|
711
774
|
The operations below remain scheduled with an explicit deferred disposition to a later EXT-04 subfamily; no new commands or raw access are approved.
|
|
712
|
-
|
|
775
|
+
The tenantRelationship container root needs its own projection review; multi-tenant-organization reads shipped in the section below, and tenant-lookup functions ship as tenant-information show under the mg-ext-04e function-argument contract.
|
|
713
776
|
|
|
714
777
|
| Inventory operation | Disposition | Owning slice | Deferral reason |
|
|
715
778
|
|---|---|---|---|
|
|
716
779
|
| `v1.0:GET:/tenantRelationships` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin root subfamily: the tenantRelationship container singleton needs its own projection review beyond the approved customer and relationship list/show reads. |
|
|
717
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminCustomers/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
718
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminCustomers/{delegatedAdminCustomer-id}/serviceManagementDetails/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
719
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminRelationships/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
720
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/accessAssignments/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
721
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/operations/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
722
|
-
| `v1.0:GET:/tenantRelationships/delegatedAdminRelationships/{delegatedAdminRelationship-id}/requests/$count` | scheduled (deferred) | EXT-04 | Deferred by firstmate delegated-admin scope to a later EXT-04 delegated-admin counts subfamily: scalar counts need a separate query and response contract from the approved list/show reads. |
|
|
723
780
|
|
|
724
781
|
## EXT-04 multi-tenant-organization scope decisions
|
|
725
782
|
|
|
@@ -730,6 +787,15 @@ The single-member read below remains scheduled with an explicit deferred disposi
|
|
|
730
787
|
|---|---|---|---|
|
|
731
788
|
| `v1.0:GET:/tenantRelationships/multiTenantOrganization/tenants/{multiTenantOrganizationMember-id}` | scheduled (deferred) | EXT-04 | Deferred by firstmate multi-tenant-organization scope to a later EXT-04 multi-tenant-organization subfamily: documented least privilege is the write scope MultiTenantOrganization.ReadWrite.All in both delegated and application modes, so no named command or raw access is approved for the single-member read. |
|
|
732
789
|
|
|
790
|
+
## EXT-04 reports scope decisions
|
|
791
|
+
|
|
792
|
+
Firstmate scope: approve deferring the v1.0 relying-party summary read below; no named command or raw access is approved for it.
|
|
793
|
+
The relying-party summary read below remains scheduled with an explicit deferred disposition: its period function argument needs a new session-guard function-argument binding beyond the three allowlisted tenant-lookup/commerce routes, and the request-path guard must stay byte-identical to origin/main apart from READ_SCOPES additions, so no named command or raw access is approved for it until its own guard review lands.
|
|
794
|
+
|
|
795
|
+
| Inventory operation | Disposition | Owning slice | Deferral reason |
|
|
796
|
+
|---|---|---|---|
|
|
797
|
+
| `v1.0:GET:/reports/getRelyingPartyDetailedSummary(period='{period}')` | scheduled (deferred) | EXT-04 | Deferred by firstmate reports scope to a later EXT-04 reports subfamily: the period function argument needs a new session-guard function-argument binding beyond the three allowlisted tenant-lookup/commerce routes, and the request-path guard must stay byte-identical to origin/main apart from READ_SCOPES additions, so no named command or raw access is approved for the relying-party summary read. |
|
|
798
|
+
|
|
733
799
|
## EXT-04 tenant-lookup scope decisions
|
|
734
800
|
|
|
735
801
|
Firstmate scope: approve the mg-ext-04e function-argument contract with the three v1.0 reads it unblocks (tenant-information show by domain name or tenant ID, subscription show by commerce subscription ID).
|
|
@@ -1006,9 +1072,9 @@ Approval and subject reads carry personal data and stay scheduled for later part
|
|
|
1006
1072
|
|
|
1007
1073
|
## EXT-02 lifecycle-workflows scope decisions
|
|
1008
1074
|
|
|
1009
|
-
This change covers the
|
|
1010
|
-
|
|
1011
|
-
No new commands or raw access are approved for any lifecycle-workflows row outside the
|
|
1075
|
+
This change covers the thirty-three v1.0 lifecycle-workflows first-, second-, third- and fourth-part reads above (workflow, workflow-template and task-definition list/show/count reads, the tenant settings show, top-level run and user/subject processing-result list/show/count reads, task-report list/show/count reads with the task and taskDefinition singles, plus run-nested user/subject/task processing-result list/show/count reads).
|
|
1076
|
+
Third-level processing results, taskProcessingResults sub-reads under a user or subject result, reprocessed runs, subject sub-reads, workflow tasks, template tasks, versions, insights, deleted items and custom task extensions stay scheduled for follow-up parts with no new commands or raw access approved; so do the six summary functions (the run user/subject summaries plus the four top-level ones), which stay deferred because they need bracketed start/end arguments outside the session-guard function-binding allowlist while the request-path guard cannot change beyond READ_SCOPES additions. Every beta operation and every mutation (no workflow create/update/delete/activate/run, no settings update, no restore) stays out.
|
|
1077
|
+
No new commands or raw access are approved for any lifecycle-workflows row outside the thirty-three above.
|
|
1012
1078
|
|
|
1013
1079
|
## Named writes
|
|
1014
1080
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/inventory/operations.json
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 75858703 bytes
|
|
4
|
+
sha256: 8a83f2035abe014feb57473cb716c8c69ddeebf9205bf7fd547f2fbc3033e378
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knowttl/mg-axi",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Agent-facing Microsoft Graph CLI, read-only by default",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"mg-axi": "dist/bin/mg-axi.js"
|
|
7
|
+
"mg-axi": "dist/bin/mg-axi.js",
|
|
8
|
+
"mg-axi-hook": "dist/bin/mg-axi-hook.js"
|
|
8
9
|
},
|
|
9
10
|
"publishConfig": {
|
|
10
11
|
"access": "public"
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
"packageManager": "pnpm@10.34.6",
|
|
28
29
|
"scripts": {
|
|
29
30
|
"build": "tsc -p tsconfig.json",
|
|
30
|
-
"test": "node --test test/*.test.mjs",
|
|
31
|
+
"test": "node --test --test-concurrency=4 test/*.test.mjs",
|
|
31
32
|
"lint": "tsc --noEmit -p tsconfig.json",
|
|
32
33
|
"docs:generate": "node tools/generate-docs.mjs",
|
|
33
34
|
"docs:check": "node tools/generate-docs.mjs --check"
|
package/skills/mg-axi/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mg-axi
|
|
3
3
|
description: >
|
|
4
|
-
Inspect Microsoft Entra users, authentication methods, groups, roles, devices, administrative units, organization and branding, domains and DNS records, certificate authentication, commercial subscriptions, on-premises synchronization, terms-of-use agreements and acceptances, directory objects, organizational contacts, group lifecycle policies, group setting templates, attribute sets and custom security attributes, partner contracts, delegated administration, multi-tenant organization, tenant information, sign-ins and audit logs, applications and consent grants, risk, Conditional Access, identity providers, federation configurations, deleted directory items, data policy operations, access reviews, entitlement catalogs and access packages, entitlement assignments and requests, lifecycle workflows, templates, task definitions, settings, runs, processing results and task reports, reviewed raw reads and run 5 gated writes (account enable/disable, session revocation, group-membership add, risky-user dismissal, CA policy update) through token-efficient TOON output.
|
|
4
|
+
Inspect Microsoft Entra users, authentication methods, groups, roles, devices, administrative units, organization and branding, domains and DNS records, certificate authentication, commercial subscriptions, on-premises synchronization, terms-of-use agreements and acceptances, directory objects, organizational contacts, group lifecycle policies, group setting templates, attribute sets and custom security attributes, partner contracts, delegated administration, multi-tenant organization, tenant information, sign-ins and audit logs, applications and consent grants, risk, Conditional Access, identity providers, federation configurations, deleted directory items, data policy operations, risk prevention, access reviews, entitlement catalogs and access packages, entitlement assignments and requests, lifecycle workflows, templates, task definitions, settings, runs, processing results and task reports, reviewed raw reads and run 5 gated writes (account enable/disable, session revocation, group-membership add, risky-user dismissal, CA policy update) through token-efficient TOON output.
|
|
5
5
|
user-invocable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -38,6 +38,7 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
38
38
|
| `mg-axi profile show` | native | local |
|
|
39
39
|
| `mg-axi login` | native | local |
|
|
40
40
|
| `mg-axi setup` | native | local |
|
|
41
|
+
| `mg-axi setup hooks` | native | local |
|
|
41
42
|
| `mg-axi doctor` | native | read |
|
|
42
43
|
| `mg-axi entra user list` | native | read |
|
|
43
44
|
| `mg-axi entra user show` | native | read |
|
|
@@ -55,6 +56,16 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
55
56
|
| `mg-axi entra role-assignment list` | native | read |
|
|
56
57
|
| `mg-axi entra pim eligible list` | native | read |
|
|
57
58
|
| `mg-axi entra pim active list` | native | read |
|
|
59
|
+
| `mg-axi entra pim group-assignment-schedule list` | native | read |
|
|
60
|
+
| `mg-axi entra pim group-assignment-schedule show` | native | read |
|
|
61
|
+
| `mg-axi entra pim group-assignment-instance list` | native | read |
|
|
62
|
+
| `mg-axi entra pim group-assignment-instance show` | native | read |
|
|
63
|
+
| `mg-axi entra pim group-eligibility-schedule list` | native | read |
|
|
64
|
+
| `mg-axi entra pim group-eligibility-schedule show` | native | read |
|
|
65
|
+
| `mg-axi entra pim group-eligibility-instance list` | native | read |
|
|
66
|
+
| `mg-axi entra pim group-eligibility-instance show` | native | read |
|
|
67
|
+
| `mg-axi entra pim group-eligibility-request list` | native | read |
|
|
68
|
+
| `mg-axi entra pim group-eligibility-request show` | native | read |
|
|
58
69
|
| `mg-axi entra device list` | native | read |
|
|
59
70
|
| `mg-axi entra device show` | native | read |
|
|
60
71
|
| `mg-axi entra administrative-unit list` | native | read |
|
|
@@ -133,6 +144,12 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
133
144
|
| `mg-axi entra delegated-admin-relationship show-request` | native | read |
|
|
134
145
|
| `mg-axi entra delegated-admin-customer list-service-management-details` | native | read |
|
|
135
146
|
| `mg-axi entra delegated-admin-customer show-service-management-detail` | native | read |
|
|
147
|
+
| `mg-axi entra delegated-admin-customer count` | native | read |
|
|
148
|
+
| `mg-axi entra delegated-admin-customer count-service-management-details` | native | read |
|
|
149
|
+
| `mg-axi entra delegated-admin-relationship count` | native | read |
|
|
150
|
+
| `mg-axi entra delegated-admin-relationship count-access-assignments` | native | read |
|
|
151
|
+
| `mg-axi entra delegated-admin-relationship count-operations` | native | read |
|
|
152
|
+
| `mg-axi entra delegated-admin-relationship count-requests` | native | read |
|
|
136
153
|
| `mg-axi entra multi-tenant-organization show` | native | read |
|
|
137
154
|
| `mg-axi entra multi-tenant-organization join-request show` | native | read |
|
|
138
155
|
| `mg-axi entra multi-tenant-organization tenant list` | native | read |
|
|
@@ -155,6 +172,12 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
155
172
|
| `mg-axi entra risky-user dismiss` | native | write |
|
|
156
173
|
| `mg-axi entra risk-detection list` | native | read |
|
|
157
174
|
| `mg-axi entra risk-detection show` | native | read |
|
|
175
|
+
| `mg-axi entra risky-service-principal list` | native | read |
|
|
176
|
+
| `mg-axi entra risky-service-principal show` | native | read |
|
|
177
|
+
| `mg-axi entra risky-service-principal history list` | native | read |
|
|
178
|
+
| `mg-axi entra risky-service-principal history show` | native | read |
|
|
179
|
+
| `mg-axi entra service-principal-risk-detection list` | native | read |
|
|
180
|
+
| `mg-axi entra service-principal-risk-detection show` | native | read |
|
|
158
181
|
| `mg-axi entra conditional-access policy list` | native | read |
|
|
159
182
|
| `mg-axi entra conditional-access policy show` | native | read |
|
|
160
183
|
| `mg-axi entra conditional-access policy update` | native | write |
|
|
@@ -182,6 +205,16 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
182
205
|
| `mg-axi entra data-policy-operation list` | native | read |
|
|
183
206
|
| `mg-axi entra data-policy-operation show` | native | read |
|
|
184
207
|
| `mg-axi entra data-policy-operation count` | native | read |
|
|
208
|
+
| `mg-axi entra fraud-protection-provider list` | native | read |
|
|
209
|
+
| `mg-axi entra fraud-protection-provider show` | native | read |
|
|
210
|
+
| `mg-axi entra fraud-protection-provider count` | native | read |
|
|
211
|
+
| `mg-axi entra web-application-firewall-provider list` | native | read |
|
|
212
|
+
| `mg-axi entra web-application-firewall-provider show` | native | read |
|
|
213
|
+
| `mg-axi entra web-application-firewall-provider count` | native | read |
|
|
214
|
+
| `mg-axi entra web-application-firewall-verification list` | native | read |
|
|
215
|
+
| `mg-axi entra web-application-firewall-verification show` | native | read |
|
|
216
|
+
| `mg-axi entra web-application-firewall-verification count` | native | read |
|
|
217
|
+
| `mg-axi entra web-application-firewall-verification provider show` | native | read |
|
|
185
218
|
| `mg-axi entra access-review definition list` | native | read |
|
|
186
219
|
| `mg-axi entra access-review definition show` | native | read |
|
|
187
220
|
| `mg-axi entra access-review instance list` | native | read |
|
|
@@ -234,6 +267,15 @@ See `docs/coverage.md` for the per-operation disposition records.
|
|
|
234
267
|
| `mg-axi entra lifecycle task-report count` | native | read |
|
|
235
268
|
| `mg-axi entra lifecycle task-report task show` | native | read |
|
|
236
269
|
| `mg-axi entra lifecycle task-report task-definition show` | native | read |
|
|
270
|
+
| `mg-axi entra lifecycle run user-processing-result list` | native | read |
|
|
271
|
+
| `mg-axi entra lifecycle run user-processing-result show` | native | read |
|
|
272
|
+
| `mg-axi entra lifecycle run user-processing-result count` | native | read |
|
|
273
|
+
| `mg-axi entra lifecycle run subject-processing-result list` | native | read |
|
|
274
|
+
| `mg-axi entra lifecycle run subject-processing-result show` | native | read |
|
|
275
|
+
| `mg-axi entra lifecycle run subject-processing-result count` | native | read |
|
|
276
|
+
| `mg-axi entra lifecycle run task-processing-result list` | native | read |
|
|
277
|
+
| `mg-axi entra lifecycle run task-processing-result show` | native | read |
|
|
278
|
+
| `mg-axi entra lifecycle run task-processing-result count` | native | read |
|
|
237
279
|
| `mg-axi api get` | native | read |
|
|
238
280
|
<!-- command-registry:end -->
|
|
239
281
|
|
|
@@ -275,6 +317,19 @@ npx -y @knowttl/mg-axi entra user list --profile soc --limit 10
|
|
|
275
317
|
Configuration defaults to `~/.mg-axi/config.json`; `MG_AXI_CONFIG` selects a separate file.
|
|
276
318
|
`mg-axi setup` shows the selected path and writes nothing.
|
|
277
319
|
|
|
320
|
+
Agent discovery has two install paths, and either suffices alone.
|
|
321
|
+
For ambient context at every agent session start instead of the skill, install the CLI globally and opt into the session hook:
|
|
322
|
+
|
|
323
|
+
```sh
|
|
324
|
+
npm install --global @knowttl/mg-axi
|
|
325
|
+
mg-axi setup hooks
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
This installs a `SessionStart` hook for Claude Code, Codex and OpenCode that prints a short local-only summary (configured profile names with tenant labels, auth-cache presence, write posture and version).
|
|
329
|
+
The hook makes no network, Graph or sign-in call, and prints a short `not configured` record with exit 0 when unconfigured.
|
|
330
|
+
Restart the agent session after running the installer.
|
|
331
|
+
No other ordinary command installs hooks, plugins or configuration.
|
|
332
|
+
|
|
278
333
|
## Selecting a profile
|
|
279
334
|
|
|
280
335
|
Read leaves accept `--profile <name>`.
|