@vm0/cli 9.272.3 → 9.272.5
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/{agent-F64C2ATY.js → agent-F7F3KM3B.js} +6 -6
- package/{banking-5KPGIHH6.js → banking-Y2JIG3JF.js} +4 -4
- package/{browser-2QHUTBEC.js → browser-TABNG7ZN.js} +4 -4
- package/{chat-N535BKBW.js → chat-M3XVQGDJ.js} +5 -5
- package/{chunk-PQ4CD7RN.js → chunk-2D4YK5MB.js} +6 -13
- package/chunk-2D4YK5MB.js.map +1 -0
- package/{chunk-MO5N6DLH.js → chunk-FRY7RS3B.js} +4 -4
- package/chunk-FRY7RS3B.js.map +1 -0
- package/{chunk-3P5LSOOY.js → chunk-G7HGHBG7.js} +2 -2
- package/{chunk-E4425LE5.js → chunk-I3CP2OUW.js} +10 -23
- package/chunk-I3CP2OUW.js.map +1 -0
- package/{chunk-E7OSQSSO.js → chunk-IPXIHHOL.js} +22 -28
- package/chunk-IPXIHHOL.js.map +1 -0
- package/{chunk-QBONSSC2.js → chunk-IY4OMWHD.js} +2 -2
- package/{chunk-FAKZNGMW.js → chunk-Q3UIEGE5.js} +2 -2
- package/{chunk-EJP3XA5L.js → chunk-TDK3LW6K.js} +2 -2
- package/{chunk-6EVGCQBA.js → chunk-V2OXQR2E.js} +1 -6
- package/chunk-V2OXQR2E.js.map +1 -0
- package/{chunk-GPZP2KSC.js → chunk-VKBLJ52A.js} +2 -2
- package/{chunk-AEXSBI4X.js → chunk-Y45ZWVQI.js} +2 -2
- package/{computer-use-5CZADQE7.js → computer-use-TIJIZFTW.js} +4 -4
- package/{connector-WTBJ2ZAE.js → connector-MV4W2TL3.js} +7 -7
- package/{credit-W2U4AVQC.js → credit-TFFLQJ4B.js} +5 -5
- package/{developer-support-6PHDMLFR.js → developer-support-ISES5JUK.js} +4 -4
- package/{doctor-T5PIALKR.js → doctor-INXB5N7P.js} +5 -5
- package/{feishu-BI5P7WS6.js → feishu-NU46JSRH.js} +4 -4
- package/{finance-NBFOYANP.js → finance-BRRDCIM7.js} +4 -4
- package/{generate-K2EL2AWV.js → generate-5GWWO5AC.js} +6 -12
- package/generate-5GWWO5AC.js.map +1 -0
- package/{github-M7IVQ7E2.js → github-5M2RPPAF.js} +4 -4
- package/{goal-RHGHUVAZ.js → goal-366JCEZF.js} +4 -4
- package/{host-6EZNVYXK.js → host-2PW2BBJ7.js} +4 -4
- package/{logs-JAQ3UY73.js → logs-IZ5XKEF7.js} +7 -7
- package/{mail-CONS7YLP.js → mail-2SVI6SYB.js} +6 -6
- package/{maps-IP5PYXOG.js → maps-CL3R7Q6C.js} +4 -4
- package/{model-EH3FH7JE.js → model-QVUHZ6II.js} +5 -5
- package/{model-provider-73ZSONFY.js → model-provider-A645NSWD.js} +5 -5
- package/{org-KHY6YKHO.js → org-I2U7ZAUE.js} +4 -4
- package/package.json +1 -1
- package/{people-search-C4PKDB3B.js → people-search-23KPL2H5.js} +4 -4
- package/{phone-MCDYKFPI.js → phone-L6OSBGCW.js} +4 -4
- package/{preference-CCUWDRU2.js → preference-X6YKDMP6.js} +4 -4
- package/{resource-HTSS7I77.js → resource-BIXVRVVH.js} +5 -5
- package/{scrape-U67KM4JI.js → scrape-GDKZGREN.js} +4 -4
- package/{search-MO2UNRCL.js → search-JZVPSX5Q.js} +7 -7
- package/{secret-K6MYNKSW.js → secret-RSI5UHKQ.js} +4 -4
- package/{slack-F73N2OCS.js → slack-WEEKZY6Y.js} +4 -4
- package/{teams-JLMKYH34.js → teams-77B556LR.js} +4 -4
- package/{telegram-4XAUJHQV.js → telegram-DB7XHFWN.js} +4 -4
- package/{upgrade-4Q76V7VY.js → upgrade-NJYXFKAA.js} +3 -3
- package/{variable-PEZTUIJ2.js → variable-MP3KMM4Q.js} +4 -4
- package/{video-YHZ4Y7BW.js → video-DGITYEHG.js} +3 -3
- package/{weather-4ITYJTCK.js → weather-G45LEI52.js} +4 -4
- package/{web-XU757UB4.js → web-YFPEWYIY.js} +4 -4
- package/{web-search-I54LUMYE.js → web-search-4SB63KNV.js} +4 -4
- package/{whoami-A4ZDSNID.js → whoami-MCELWKLL.js} +6 -6
- package/{workflow-KGKEZHTW.js → workflow-SQECJ4GO.js} +5 -5
- package/zero.js +43 -43
- package/chunk-6EVGCQBA.js.map +0 -1
- package/chunk-E4425LE5.js.map +0 -1
- package/chunk-E7OSQSSO.js.map +0 -1
- package/chunk-MO5N6DLH.js.map +0 -1
- package/chunk-PQ4CD7RN.js.map +0 -1
- package/generate-K2EL2AWV.js.map +0 -1
- /package/{agent-F64C2ATY.js.map → agent-F7F3KM3B.js.map} +0 -0
- /package/{banking-5KPGIHH6.js.map → banking-Y2JIG3JF.js.map} +0 -0
- /package/{browser-2QHUTBEC.js.map → browser-TABNG7ZN.js.map} +0 -0
- /package/{chat-N535BKBW.js.map → chat-M3XVQGDJ.js.map} +0 -0
- /package/{chunk-3P5LSOOY.js.map → chunk-G7HGHBG7.js.map} +0 -0
- /package/{chunk-QBONSSC2.js.map → chunk-IY4OMWHD.js.map} +0 -0
- /package/{chunk-FAKZNGMW.js.map → chunk-Q3UIEGE5.js.map} +0 -0
- /package/{chunk-EJP3XA5L.js.map → chunk-TDK3LW6K.js.map} +0 -0
- /package/{chunk-GPZP2KSC.js.map → chunk-VKBLJ52A.js.map} +0 -0
- /package/{chunk-AEXSBI4X.js.map → chunk-Y45ZWVQI.js.map} +0 -0
- /package/{computer-use-5CZADQE7.js.map → computer-use-TIJIZFTW.js.map} +0 -0
- /package/{connector-WTBJ2ZAE.js.map → connector-MV4W2TL3.js.map} +0 -0
- /package/{credit-W2U4AVQC.js.map → credit-TFFLQJ4B.js.map} +0 -0
- /package/{developer-support-6PHDMLFR.js.map → developer-support-ISES5JUK.js.map} +0 -0
- /package/{doctor-T5PIALKR.js.map → doctor-INXB5N7P.js.map} +0 -0
- /package/{feishu-BI5P7WS6.js.map → feishu-NU46JSRH.js.map} +0 -0
- /package/{finance-NBFOYANP.js.map → finance-BRRDCIM7.js.map} +0 -0
- /package/{github-M7IVQ7E2.js.map → github-5M2RPPAF.js.map} +0 -0
- /package/{goal-RHGHUVAZ.js.map → goal-366JCEZF.js.map} +0 -0
- /package/{host-6EZNVYXK.js.map → host-2PW2BBJ7.js.map} +0 -0
- /package/{logs-JAQ3UY73.js.map → logs-IZ5XKEF7.js.map} +0 -0
- /package/{mail-CONS7YLP.js.map → mail-2SVI6SYB.js.map} +0 -0
- /package/{maps-IP5PYXOG.js.map → maps-CL3R7Q6C.js.map} +0 -0
- /package/{model-EH3FH7JE.js.map → model-QVUHZ6II.js.map} +0 -0
- /package/{model-provider-73ZSONFY.js.map → model-provider-A645NSWD.js.map} +0 -0
- /package/{org-KHY6YKHO.js.map → org-I2U7ZAUE.js.map} +0 -0
- /package/{people-search-C4PKDB3B.js.map → people-search-23KPL2H5.js.map} +0 -0
- /package/{phone-MCDYKFPI.js.map → phone-L6OSBGCW.js.map} +0 -0
- /package/{preference-CCUWDRU2.js.map → preference-X6YKDMP6.js.map} +0 -0
- /package/{resource-HTSS7I77.js.map → resource-BIXVRVVH.js.map} +0 -0
- /package/{scrape-U67KM4JI.js.map → scrape-GDKZGREN.js.map} +0 -0
- /package/{search-MO2UNRCL.js.map → search-JZVPSX5Q.js.map} +0 -0
- /package/{secret-K6MYNKSW.js.map → secret-RSI5UHKQ.js.map} +0 -0
- /package/{slack-F73N2OCS.js.map → slack-WEEKZY6Y.js.map} +0 -0
- /package/{teams-JLMKYH34.js.map → teams-77B556LR.js.map} +0 -0
- /package/{telegram-4XAUJHQV.js.map → telegram-DB7XHFWN.js.map} +0 -0
- /package/{upgrade-4Q76V7VY.js.map → upgrade-NJYXFKAA.js.map} +0 -0
- /package/{variable-PEZTUIJ2.js.map → variable-MP3KMM4Q.js.map} +0 -0
- /package/{video-YHZ4Y7BW.js.map → video-DGITYEHG.js.map} +0 -0
- /package/{weather-4ITYJTCK.js.map → weather-G45LEI52.js.map} +0 -0
- /package/{web-XU757UB4.js.map → web-YFPEWYIY.js.map} +0 -0
- /package/{web-search-I54LUMYE.js.map → web-search-4SB63KNV.js.map} +0 -0
- /package/{whoami-A4ZDSNID.js.map → whoami-MCELWKLL.js.map} +0 -0
- /package/{workflow-KGKEZHTW.js.map → workflow-SQECJ4GO.js.map} +0 -0
|
@@ -15385,7 +15385,7 @@ function createCliClientHeaderInjector(options) {
|
|
|
15385
15385
|
};
|
|
15386
15386
|
}
|
|
15387
15387
|
var addDefaultCliClientHeaders = createCliClientHeaderInjector({
|
|
15388
|
-
clientVersion: "9.272.
|
|
15388
|
+
clientVersion: "9.272.5"
|
|
15389
15389
|
});
|
|
15390
15390
|
function addCliClientHeaders(headers) {
|
|
15391
15391
|
addDefaultCliClientHeaders(headers);
|
|
@@ -16805,4 +16805,4 @@ export {
|
|
|
16805
16805
|
apiErrorSchema,
|
|
16806
16806
|
withErrorHandler
|
|
16807
16807
|
};
|
|
16808
|
-
//# sourceMappingURL=chunk-
|
|
16808
|
+
//# sourceMappingURL=chunk-G7HGHBG7.js.map
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
UNKNOWN_PERMISSION_GRANT,
|
|
6
6
|
getZeroConnectorCatalogPermissions
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IPXIHHOL.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-GPYQ24DR.js";
|
|
@@ -77,9 +77,6 @@ function createFirewallMetadataPolicyResolver(metadata, overlay) {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// ../../packages/connectors/src/firewall-metadata/policy.ts
|
|
80
|
-
function metadataConnectorSlug(metadata) {
|
|
81
|
-
return metadata.connectorRef ?? metadata.type;
|
|
82
|
-
}
|
|
83
80
|
function expandFirewallMetadataDefaultPolicy(metadata) {
|
|
84
81
|
const resolver = createFirewallMetadataPolicyResolver(metadata);
|
|
85
82
|
const policies = {};
|
|
@@ -99,12 +96,11 @@ function findFirewallMetadataPermission(metadata, name) {
|
|
|
99
96
|
function resolveFirewallMetadataPolicies(stored, metadata) {
|
|
100
97
|
let resolved = stored;
|
|
101
98
|
for (const detail of metadata) {
|
|
102
|
-
const connectorSlug = metadataConnectorSlug(detail);
|
|
103
99
|
const defaults = expandFirewallMetadataDefaultPolicy(detail);
|
|
104
|
-
const existing = resolved?.[connectorSlug];
|
|
100
|
+
const existing = resolved?.[detail.connectorSlug];
|
|
105
101
|
resolved = {
|
|
106
102
|
...resolved,
|
|
107
|
-
[connectorSlug]: {
|
|
103
|
+
[detail.connectorSlug]: {
|
|
108
104
|
policies: { ...defaults.policies, ...existing?.policies },
|
|
109
105
|
...existing?.unknownPolicy !== void 0 ? { unknownPolicy: existing.unknownPolicy } : { unknownPolicy: defaults.unknownPolicy }
|
|
110
106
|
}
|
|
@@ -115,16 +111,16 @@ function resolveFirewallMetadataPolicies(stored, metadata) {
|
|
|
115
111
|
function permissionGrantsToFirewallPolicies(grants) {
|
|
116
112
|
const policies = {};
|
|
117
113
|
for (const grant of grants) {
|
|
118
|
-
const current = policies[grant.
|
|
114
|
+
const current = policies[grant.connectorSlug] ?? { policies: {} };
|
|
119
115
|
if (grant.permission === UNKNOWN_PERMISSION_GRANT) {
|
|
120
|
-
policies[grant.
|
|
116
|
+
policies[grant.connectorSlug] = {
|
|
121
117
|
...current,
|
|
122
118
|
unknownPolicy: grant.action
|
|
123
119
|
};
|
|
124
120
|
continue;
|
|
125
121
|
}
|
|
126
122
|
current.policies[grant.permission] = grant.action;
|
|
127
|
-
policies[grant.
|
|
123
|
+
policies[grant.connectorSlug] = current;
|
|
128
124
|
}
|
|
129
125
|
return Object.keys(policies).length > 0 ? policies : null;
|
|
130
126
|
}
|
|
@@ -185,9 +181,7 @@ async function loadConnectorPermissionInfos(args) {
|
|
|
185
181
|
);
|
|
186
182
|
const resolvedPolicies = resolveFirewallMetadataPolicies(
|
|
187
183
|
args.storedPolicies,
|
|
188
|
-
defaultPolicyMetadata
|
|
189
|
-
return { ...metadata, connectorRef: connectorSlug };
|
|
190
|
-
})
|
|
184
|
+
defaultPolicyMetadata
|
|
191
185
|
);
|
|
192
186
|
return args.displayConnectorSlugs.map((connectorSlug) => {
|
|
193
187
|
return connectorPermissionInfo({
|
|
@@ -198,17 +192,10 @@ async function loadConnectorPermissionInfos(args) {
|
|
|
198
192
|
});
|
|
199
193
|
}
|
|
200
194
|
function connectorPermissionGrantsToFirewallPolicies(grants) {
|
|
201
|
-
return permissionGrantsToFirewallPolicies(
|
|
202
|
-
grants.map(({ connectorSlug, ...grant }) => {
|
|
203
|
-
return { ...grant, connectorRef: connectorSlug };
|
|
204
|
-
})
|
|
205
|
-
);
|
|
195
|
+
return permissionGrantsToFirewallPolicies(grants);
|
|
206
196
|
}
|
|
207
197
|
function hasConnectorFirewallMetadataPermission(metadata, permission) {
|
|
208
|
-
return findFirewallMetadataPermission(
|
|
209
|
-
{ ...metadata, connectorRef: metadata.connectorSlug },
|
|
210
|
-
permission
|
|
211
|
-
) !== null;
|
|
198
|
+
return findFirewallMetadataPermission(metadata, permission) !== null;
|
|
212
199
|
}
|
|
213
200
|
|
|
214
201
|
export {
|
|
@@ -216,4 +203,4 @@ export {
|
|
|
216
203
|
connectorPermissionGrantsToFirewallPolicies,
|
|
217
204
|
hasConnectorFirewallMetadataPermission
|
|
218
205
|
};
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
206
|
+
//# sourceMappingURL=chunk-I3CP2OUW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/zero/shared/firewall-permissions.ts","../../../packages/connectors/src/firewall-metadata/policy.ts","../../../packages/connectors/src/firewall-metadata/policy-resolver.ts"],"sourcesContent":["import {\n findFirewallMetadataPermission,\n permissionGrantsToFirewallPolicies,\n resolveFirewallMetadataPolicies,\n} from \"@vm0/connectors/firewall-metadata/policy\";\nimport type {\n FirewallPolicies,\n FirewallPolicyValue,\n} from \"@vm0/connectors/firewall-types\";\nimport { getZeroConnectorCatalogPermissions } from \"../../../lib/api\";\nimport type { ZeroUserPermissionGrant } from \"../../../lib/api/domains/zero-agents\";\nimport type { ZeroConnectorCatalogPermissionDetail } from \"../../../lib/api/domains/zero-connectors\";\n\nexport interface ConnectorPermissionInfo {\n readonly connectorSlug: string;\n readonly hasPermissions: boolean;\n readonly hasPolicyEntry: boolean;\n readonly permissions: readonly ZeroConnectorCatalogPermissionDetail[\"permissions\"][number][];\n readonly policies: Readonly<Record<string, FirewallPolicyValue>> | null;\n readonly unknownPolicy: FirewallPolicyValue;\n readonly allowed: number;\n readonly total: number;\n}\n\ntype PermissionMetadataBySlug = Map<\n string,\n ZeroConnectorCatalogPermissionDetail | null\n>;\n\nasync function loadPermissionMetadataBySlug(\n connectorSlugs: readonly string[],\n): Promise<PermissionMetadataBySlug> {\n const uniqueConnectorSlugs = [...new Set(connectorSlugs)];\n const entries = await Promise.all(\n uniqueConnectorSlugs.map(async (connectorSlug) => {\n return [\n connectorSlug,\n await getZeroConnectorCatalogPermissions(connectorSlug),\n ] as const;\n }),\n );\n return new Map(entries);\n}\n\nfunction connectorPermissionInfo(args: {\n readonly connectorSlug: string;\n readonly metadata: ZeroConnectorCatalogPermissionDetail | null;\n readonly resolvedPolicies: FirewallPolicies | null;\n}): ConnectorPermissionInfo {\n if (!args.metadata) {\n return {\n connectorSlug: args.connectorSlug,\n hasPermissions: false,\n hasPolicyEntry: false,\n permissions: [],\n policies: null,\n unknownPolicy: \"allow\",\n allowed: 0,\n total: 0,\n };\n }\n\n const connectorPolicy = args.resolvedPolicies?.[args.metadata.connectorSlug];\n const policies =\n connectorPolicy && Object.keys(connectorPolicy.policies).length > 0\n ? connectorPolicy.policies\n : null;\n const total = args.metadata.permissions.length;\n const allowed = policies\n ? args.metadata.permissions.filter((permission) => {\n return policies[permission.name] === \"allow\";\n }).length\n : 0;\n\n return {\n connectorSlug: args.connectorSlug,\n hasPermissions: true,\n hasPolicyEntry: connectorPolicy !== undefined,\n permissions: args.metadata.permissions,\n policies,\n unknownPolicy: connectorPolicy?.unknownPolicy ?? \"allow\",\n allowed,\n total,\n };\n}\n\nexport async function loadConnectorPermissionInfos(args: {\n readonly displayConnectorSlugs: readonly string[];\n readonly defaultPolicyConnectorSlugs: readonly string[];\n readonly storedPolicies: FirewallPolicies | null;\n}): Promise<ConnectorPermissionInfo[]> {\n const metadataBySlug = await loadPermissionMetadataBySlug([\n ...args.displayConnectorSlugs,\n ...args.defaultPolicyConnectorSlugs,\n ]);\n const defaultPolicyMetadata = args.defaultPolicyConnectorSlugs.flatMap(\n (connectorSlug) => {\n const metadata = metadataBySlug.get(connectorSlug);\n return metadata ? [metadata] : [];\n },\n );\n const resolvedPolicies = resolveFirewallMetadataPolicies(\n args.storedPolicies,\n defaultPolicyMetadata,\n );\n\n return args.displayConnectorSlugs.map((connectorSlug) => {\n return connectorPermissionInfo({\n connectorSlug,\n metadata: metadataBySlug.get(connectorSlug) ?? null,\n resolvedPolicies,\n });\n });\n}\n\nexport function connectorPermissionGrantsToFirewallPolicies(\n grants: readonly ZeroUserPermissionGrant[],\n): FirewallPolicies | null {\n return permissionGrantsToFirewallPolicies(grants);\n}\n\nexport function hasConnectorFirewallMetadataPermission(\n metadata: ZeroConnectorCatalogPermissionDetail,\n permission: string,\n): boolean {\n return findFirewallMetadataPermission(metadata, permission) !== null;\n}\n","import {\n UNKNOWN_PERMISSION_GRANT,\n type FirewallPolicies,\n type FirewallPolicy,\n type FirewallPolicyValue,\n} from \"../firewall-types\";\nimport { createFirewallMetadataPolicyResolver } from \"./policy-resolver\";\n\nexport type {\n FirewallMetadataPolicyListState,\n FirewallMetadataPolicyOverlay,\n FirewallMetadataPolicyResolver,\n} from \"./policy-resolver\";\n\nexport interface FirewallPermissionPolicyMetadataPermission {\n readonly name: string;\n readonly description?: string;\n}\n\nexport interface FirewallPermissionPolicyCategoryMetadata {\n readonly categories: Readonly<Record<string, string>>;\n readonly displayOrder: readonly string[];\n}\n\nexport type FirewallPermissionPolicyDefaultOverrides = Readonly<\n Partial<Record<FirewallPolicyValue, readonly string[]>>\n>;\n\nexport interface FirewallPermissionPolicyDefaultMetadata {\n readonly permissionDefault: FirewallPolicyValue;\n readonly permissionOverrides?: FirewallPermissionPolicyDefaultOverrides;\n readonly unknownPolicy: FirewallPolicyValue;\n}\n\ninterface FirewallPermissionPolicyMetadataBase {\n readonly label: string;\n readonly permissionCount: number;\n readonly permissions: readonly FirewallPermissionPolicyMetadataPermission[];\n readonly categories?: FirewallPermissionPolicyCategoryMetadata | null;\n readonly defaultPolicy: FirewallPermissionPolicyDefaultMetadata;\n}\n\nexport interface FirewallPermissionPolicyMetadata extends FirewallPermissionPolicyMetadataBase {\n readonly connectorSlug: string;\n}\n\nexport interface FirewallMetadataPermissionGroup<T extends { name: string }> {\n readonly category: string;\n readonly permissions: T[];\n}\n\nexport type FirewallPermissionGrantAction = Extract<\n FirewallPolicyValue,\n \"allow\" | \"deny\"\n>;\n\nexport interface FirewallPermissionGrant {\n readonly connectorSlug: string;\n readonly permission: string;\n readonly action: FirewallPermissionGrantAction;\n}\n\nexport { createFirewallMetadataPolicyResolver };\n\nexport function expandFirewallMetadataDefaultPolicy(\n metadata: FirewallPermissionPolicyMetadata,\n): FirewallPolicy {\n const resolver = createFirewallMetadataPolicyResolver(metadata);\n const policies: Record<string, FirewallPolicyValue> = {};\n\n for (const permission of metadata.permissions) {\n policies[permission.name] = resolver.permission(permission.name);\n }\n\n return {\n policies,\n unknownPolicy: resolver.unknown(),\n };\n}\n\nexport function findFirewallMetadataPermission(\n metadata: FirewallPermissionPolicyMetadata,\n name: string,\n): FirewallPermissionPolicyMetadata[\"permissions\"][number] | null {\n return (\n metadata.permissions.find((permission) => {\n return permission.name === name;\n }) ?? null\n );\n}\n\nexport function groupFirewallMetadataPermissionsByCategory<\n T extends { name: string },\n>(\n permissions: readonly T[],\n metadata: FirewallPermissionPolicyMetadata,\n): FirewallMetadataPermissionGroup<T>[] | null {\n if (!metadata.categories) {\n return null;\n }\n\n const grouped = new Map<string, T[]>();\n for (const category of metadata.categories.displayOrder) {\n grouped.set(category, []);\n }\n\n for (const permission of permissions) {\n const category = metadata.categories.categories[permission.name];\n if (!category) {\n continue;\n }\n grouped.get(category)?.push(permission);\n }\n\n return [...grouped.entries()]\n .filter(([, groupPermissions]) => {\n return groupPermissions.length > 0;\n })\n .map(([category, groupPermissions]) => {\n return { category, permissions: groupPermissions };\n });\n}\n\nexport function resolveFirewallMetadataPolicies(\n stored: FirewallPolicies | null,\n metadata: readonly FirewallPermissionPolicyMetadata[],\n): FirewallPolicies | null {\n let resolved: FirewallPolicies | null = stored;\n for (const detail of metadata) {\n const defaults = expandFirewallMetadataDefaultPolicy(detail);\n const existing = resolved?.[detail.connectorSlug];\n resolved = {\n ...resolved,\n [detail.connectorSlug]: {\n policies: { ...defaults.policies, ...existing?.policies },\n ...(existing?.unknownPolicy !== undefined\n ? { unknownPolicy: existing.unknownPolicy }\n : { unknownPolicy: defaults.unknownPolicy }),\n },\n };\n }\n return resolved;\n}\n\nexport function permissionGrantsToFirewallPolicies(\n grants: readonly FirewallPermissionGrant[],\n): FirewallPolicies | null {\n const policies: FirewallPolicies = {};\n for (const grant of grants) {\n const current = policies[grant.connectorSlug] ?? { policies: {} };\n if (grant.permission === UNKNOWN_PERMISSION_GRANT) {\n policies[grant.connectorSlug] = {\n ...current,\n unknownPolicy: grant.action,\n };\n continue;\n }\n current.policies[grant.permission] = grant.action;\n policies[grant.connectorSlug] = current;\n }\n return Object.keys(policies).length > 0 ? policies : null;\n}\n","import type { FirewallPolicyValue } from \"../firewall-types\";\n\ninterface FirewallMetadataPolicyResolverMetadata {\n readonly defaultPolicy: {\n readonly permissionDefault: FirewallPolicyValue;\n readonly permissionOverrides?: Readonly<\n Partial<Record<FirewallPolicyValue, readonly string[]>>\n >;\n readonly unknownPolicy: FirewallPolicyValue;\n };\n}\n\nexport interface FirewallMetadataPolicyOverlay {\n readonly permissionDefault?: FirewallPolicyValue;\n readonly permissionOverrides?: Readonly<Record<string, FirewallPolicyValue>>;\n readonly unknownPolicy?: FirewallPolicyValue;\n}\n\nexport type FirewallMetadataPolicyListState = FirewallPolicyValue | \"mixed\";\n\n/**\n * Resolves generated metadata defaults with an optional sparse policy overlay.\n * Permission name validation belongs to callers; unknown endpoints use unknown().\n */\nexport interface FirewallMetadataPolicyResolver {\n permission(name: string): FirewallPolicyValue;\n unknown(): FirewallPolicyValue;\n list(permissionNames: readonly string[]): FirewallMetadataPolicyListState;\n isPermissionOverridden(name: string): boolean;\n isUnknownOverridden(): boolean;\n}\n\nfunction buildMetadataOverrideLookup(\n metadata: FirewallMetadataPolicyResolverMetadata,\n): ReadonlyMap<string, FirewallPolicyValue> {\n const overrides = metadata.defaultPolicy.permissionOverrides;\n const lookup = new Map<string, FirewallPolicyValue>();\n if (!overrides) {\n return lookup;\n }\n\n for (const permission of overrides.allow ?? []) {\n lookup.set(permission, \"allow\");\n }\n for (const permission of overrides.deny ?? []) {\n lookup.set(permission, \"deny\");\n }\n for (const permission of overrides.ask ?? []) {\n lookup.set(permission, \"ask\");\n }\n\n return lookup;\n}\n\nfunction getOwnPermissionOverride(\n overrides: Readonly<Record<string, FirewallPolicyValue>> | undefined,\n name: string,\n): FirewallPolicyValue | undefined {\n if (!overrides || !Object.prototype.hasOwnProperty.call(overrides, name)) {\n return undefined;\n }\n return overrides[name];\n}\n\nexport function createFirewallMetadataPolicyResolver(\n metadata: FirewallMetadataPolicyResolverMetadata,\n overlay?: FirewallMetadataPolicyOverlay,\n): FirewallMetadataPolicyResolver {\n const metadataOverrides = buildMetadataOverrideLookup(metadata);\n\n function metadataPermission(name: string): FirewallPolicyValue {\n return (\n metadataOverrides.get(name) ?? metadata.defaultPolicy.permissionDefault\n );\n }\n\n function permission(name: string): FirewallPolicyValue {\n return (\n getOwnPermissionOverride(overlay?.permissionOverrides, name) ??\n overlay?.permissionDefault ??\n metadataPermission(name)\n );\n }\n\n return {\n permission,\n unknown: () => {\n return overlay?.unknownPolicy ?? metadata.defaultPolicy.unknownPolicy;\n },\n list: (permissionNames) => {\n let first: FirewallPolicyValue | null = null;\n for (const name of permissionNames) {\n const current = permission(name);\n if (first === null) {\n first = current;\n continue;\n }\n if (first !== current) {\n return \"mixed\";\n }\n }\n return first ?? \"mixed\";\n },\n isPermissionOverridden: (name) => {\n return permission(name) !== metadataPermission(name);\n },\n isUnknownOverridden: () => {\n return (\n (overlay?.unknownPolicy ?? metadata.defaultPolicy.unknownPolicy) !==\n metadata.defaultPolicy.unknownPolicy\n );\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
updateOrgModelPoliciesRequestSchema,
|
|
22
22
|
upsertModelProviderRequestSchema,
|
|
23
23
|
upsertModelProviderResponseSchema
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-G7HGHBG7.js";
|
|
25
25
|
import {
|
|
26
26
|
__commonJS,
|
|
27
27
|
__esm,
|
|
@@ -3527,6 +3527,10 @@ var workflowSnapshotSchema = external_exports.object({
|
|
|
3527
3527
|
var goalSnapshotSchema = external_exports.object({
|
|
3528
3528
|
objectiveBrief: external_exports.string().min(1)
|
|
3529
3529
|
});
|
|
3530
|
+
var chatEventAnnotationSchema = external_exports.object({
|
|
3531
|
+
kind: external_exports.enum(["slack", "feishu", "teams", "telegram", "github"]),
|
|
3532
|
+
href: external_exports.string().url().optional()
|
|
3533
|
+
}).strict();
|
|
3530
3534
|
var chatEventBaseSchema = external_exports.object({
|
|
3531
3535
|
id: external_exports.string(),
|
|
3532
3536
|
threadId: external_exports.string(),
|
|
@@ -3534,8 +3538,7 @@ var chatEventBaseSchema = external_exports.object({
|
|
|
3534
3538
|
runId: external_exports.string().optional(),
|
|
3535
3539
|
runGroupId: external_exports.string().optional(),
|
|
3536
3540
|
triggerSource: triggerSourceSchema.optional(),
|
|
3537
|
-
|
|
3538
|
-
feishuChatOpenUrl: external_exports.string().url().optional(),
|
|
3541
|
+
annotation: chatEventAnnotationSchema.optional(),
|
|
3539
3542
|
isGoalRun: external_exports.boolean().optional(),
|
|
3540
3543
|
runEventId: external_exports.string().optional(),
|
|
3541
3544
|
goalSnapshot: goalSnapshotSchema.optional(),
|
|
@@ -3582,8 +3585,7 @@ var inputGoalEventSchema = chatEventBaseSchema.extend({
|
|
|
3582
3585
|
runId: external_exports.never().optional(),
|
|
3583
3586
|
runGroupId: external_exports.never().optional(),
|
|
3584
3587
|
triggerSource: external_exports.never().optional(),
|
|
3585
|
-
|
|
3586
|
-
feishuChatOpenUrl: external_exports.never().optional(),
|
|
3588
|
+
annotation: external_exports.never().optional(),
|
|
3587
3589
|
isGoalRun: external_exports.never().optional(),
|
|
3588
3590
|
runEventId: external_exports.never().optional(),
|
|
3589
3591
|
goalSnapshot: goalSnapshotSchema,
|
|
@@ -3648,15 +3650,6 @@ var runCancelledEventSchema = chatEventBaseSchema.extend({
|
|
|
3648
3650
|
error: external_exports.string().optional(),
|
|
3649
3651
|
runLifecycleEvent: external_exports.literal("cancelled")
|
|
3650
3652
|
}).strict();
|
|
3651
|
-
var legacyQueueAutomationPausedEventSchema = chatEventBaseSchema.extend({
|
|
3652
|
-
eventType: external_exports.literal("queue.automation_paused"),
|
|
3653
|
-
content: external_exports.null(),
|
|
3654
|
-
pauseReason: external_exports.string().nullable()
|
|
3655
|
-
}).strict();
|
|
3656
|
-
var legacyQueueAutomationResumedEventSchema = chatEventBaseSchema.extend({
|
|
3657
|
-
eventType: external_exports.literal("queue.automation_resumed"),
|
|
3658
|
-
content: external_exports.null()
|
|
3659
|
-
}).strict();
|
|
3660
3653
|
var controlInterruptEventSchema = chatEventBaseSchema.extend({
|
|
3661
3654
|
eventType: external_exports.literal("control.interrupt"),
|
|
3662
3655
|
content: external_exports.null(),
|
|
@@ -3707,11 +3700,6 @@ var chatEventSchema = external_exports.discriminatedUnion("eventType", [
|
|
|
3707
3700
|
goalChangedEventSchema,
|
|
3708
3701
|
usageRecordedEventSchema
|
|
3709
3702
|
]);
|
|
3710
|
-
var chatEventResponseSchema = external_exports.discriminatedUnion("eventType", [
|
|
3711
|
-
...chatEventSchema.options,
|
|
3712
|
-
legacyQueueAutomationPausedEventSchema,
|
|
3713
|
-
legacyQueueAutomationResumedEventSchema
|
|
3714
|
-
]);
|
|
3715
3703
|
if (CHAT_EVENT_TYPES.length !== chatEventSchema.options.length) {
|
|
3716
3704
|
throw new Error(
|
|
3717
3705
|
"ChatEvent schema must cover every registered event catalog leaf"
|
|
@@ -4315,7 +4303,7 @@ var chatThreadEventsContract = c12.router({
|
|
|
4315
4303
|
}),
|
|
4316
4304
|
responses: {
|
|
4317
4305
|
200: external_exports.object({
|
|
4318
|
-
events: external_exports.array(
|
|
4306
|
+
events: external_exports.array(chatEventSchema)
|
|
4319
4307
|
}),
|
|
4320
4308
|
400: apiErrorSchema,
|
|
4321
4309
|
401: apiErrorSchema,
|
|
@@ -4330,7 +4318,7 @@ var chatThreadEventsContract = c12.router({
|
|
|
4330
4318
|
headers: authHeadersSchema,
|
|
4331
4319
|
pathParams: chatThreadEventPathParamsSchema,
|
|
4332
4320
|
responses: {
|
|
4333
|
-
200:
|
|
4321
|
+
200: chatEventSchema,
|
|
4334
4322
|
401: apiErrorSchema,
|
|
4335
4323
|
404: apiErrorSchema
|
|
4336
4324
|
},
|
|
@@ -4435,9 +4423,6 @@ var artifactsContract = c12.router({
|
|
|
4435
4423
|
summary: "Delete a resumable image artifact edit snapshot for the caller"
|
|
4436
4424
|
}
|
|
4437
4425
|
});
|
|
4438
|
-
function isCanonicalChatEventResponse(event) {
|
|
4439
|
-
return event.eventType !== "queue.automation_paused" && event.eventType !== "queue.automation_resumed";
|
|
4440
|
-
}
|
|
4441
4426
|
|
|
4442
4427
|
// ../../packages/api-contracts/src/contracts/zero-agents.ts
|
|
4443
4428
|
var c13 = initContract();
|
|
@@ -5409,11 +5394,20 @@ var connectorCatalogCompatibilityReasonSchema = external_exports.enum([
|
|
|
5409
5394
|
"missing-platform-configuration"
|
|
5410
5395
|
]);
|
|
5411
5396
|
var connectorCatalogFilteredAuthMethodSchema = external_exports.object({
|
|
5412
|
-
|
|
5397
|
+
connectorSlug: connectorSlugSchema.optional(),
|
|
5398
|
+
// TODO(#24186): Remove after the prepared Platform receiver is required.
|
|
5413
5399
|
connectorRef: connectorSlugSchema,
|
|
5414
5400
|
authMethodId: connectorAuthMethodIdSchema,
|
|
5415
5401
|
reasons: external_exports.array(connectorCatalogCompatibilityReasonSchema).min(1)
|
|
5416
|
-
})
|
|
5402
|
+
}).refine(
|
|
5403
|
+
({ connectorSlug, connectorRef }) => {
|
|
5404
|
+
return connectorSlug === void 0 || connectorSlug === connectorRef;
|
|
5405
|
+
},
|
|
5406
|
+
{
|
|
5407
|
+
message: "connectorSlug and connectorRef must match",
|
|
5408
|
+
path: ["connectorSlug"]
|
|
5409
|
+
}
|
|
5410
|
+
);
|
|
5417
5411
|
var connectorCatalogFilteredAuthMethodsSchema = external_exports.array(
|
|
5418
5412
|
connectorCatalogFilteredAuthMethodSchema
|
|
5419
5413
|
);
|
|
@@ -8071,7 +8065,7 @@ async function listZeroChatEvents(options) {
|
|
|
8071
8065
|
}
|
|
8072
8066
|
});
|
|
8073
8067
|
if (result.status === 200) {
|
|
8074
|
-
return result.body.events
|
|
8068
|
+
return result.body.events;
|
|
8075
8069
|
}
|
|
8076
8070
|
handleError(result, "Failed to list chat events");
|
|
8077
8071
|
}
|
|
@@ -13445,4 +13439,4 @@ export {
|
|
|
13445
13439
|
getHostedSiteFiles,
|
|
13446
13440
|
getHostedSiteDeployments
|
|
13447
13441
|
};
|
|
13448
|
-
//# sourceMappingURL=chunk-
|
|
13442
|
+
//# sourceMappingURL=chunk-IPXIHHOL.js.map
|