@vm0/cli 9.278.0 → 9.278.1
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-HUDTEGLK.js → agent-4F3XAJWN.js} +12 -6
- package/agent-4F3XAJWN.js.map +1 -0
- package/{banking-BMZONEXP.js → banking-CWQFQKZB.js} +61 -7
- package/banking-CWQFQKZB.js.map +1 -0
- package/{browser-LQP445CU.js → browser-BI6UFWPH.js} +4 -5
- package/browser-BI6UFWPH.js.map +1 -0
- package/{chat-UF7QAWUT.js → chat-MKIW4FPP.js} +24 -16
- package/chat-MKIW4FPP.js.map +1 -0
- package/chunk-2SJTFDC2.js +189 -0
- package/chunk-2SJTFDC2.js.map +1 -0
- package/chunk-4FTIKZKP.js +64 -0
- package/chunk-4FTIKZKP.js.map +1 -0
- package/chunk-7UZXNER2.js +568 -0
- package/chunk-7UZXNER2.js.map +1 -0
- package/chunk-A6ZRMNM3.js +102 -0
- package/chunk-A6ZRMNM3.js.map +1 -0
- package/{chunk-QC63TUJC.js → chunk-C62A6LD6.js} +2 -2
- package/chunk-CCTF3YVW.js +52 -0
- package/chunk-CCTF3YVW.js.map +1 -0
- package/chunk-CD2BLKGC.js +188 -0
- package/chunk-CD2BLKGC.js.map +1 -0
- package/chunk-CEJGHPF3.js +55 -0
- package/chunk-CEJGHPF3.js.map +1 -0
- package/chunk-DUA6CF7E.js +2053 -0
- package/chunk-DUA6CF7E.js.map +1 -0
- package/chunk-E2TQAKNL.js +1300 -0
- package/chunk-E2TQAKNL.js.map +1 -0
- package/{chunk-5ZZI2LSO.js → chunk-GHKWW4NC.js} +5 -5
- package/chunk-GV3PG6CZ.js +114 -0
- package/chunk-GV3PG6CZ.js.map +1 -0
- package/chunk-GY7D76EZ.js +81 -0
- package/chunk-GY7D76EZ.js.map +1 -0
- package/chunk-HHHHZMTA.js +434 -0
- package/chunk-HHHHZMTA.js.map +1 -0
- package/chunk-HZYOJTEE.js +1275 -0
- package/chunk-HZYOJTEE.js.map +1 -0
- package/chunk-J3ZRXVI6.js +740 -0
- package/chunk-J3ZRXVI6.js.map +1 -0
- package/chunk-JJWFO27K.js +31 -0
- package/chunk-JJWFO27K.js.map +1 -0
- package/chunk-JV6LM2YC.js +39 -0
- package/chunk-JV6LM2YC.js.map +1 -0
- package/chunk-KER77KJB.js +105 -0
- package/chunk-KER77KJB.js.map +1 -0
- package/{chunk-V5ZVB7RJ.js → chunk-KKO2XGLQ.js} +1 -6
- package/chunk-KKO2XGLQ.js.map +1 -0
- package/chunk-LIYPTQAO.js +198 -0
- package/chunk-LIYPTQAO.js.map +1 -0
- package/chunk-LYLDVUHT.js +131 -0
- package/chunk-LYLDVUHT.js.map +1 -0
- package/chunk-PFWBO2VK.js +801 -0
- package/chunk-PFWBO2VK.js.map +1 -0
- package/chunk-RTCRU35A.js +194 -0
- package/chunk-RTCRU35A.js.map +1 -0
- package/{chunk-F2AM4RWA.js → chunk-RTEEWZUT.js} +2 -2
- package/{chunk-F2AM4RWA.js.map → chunk-RTEEWZUT.js.map} +1 -1
- package/{chunk-BRV4D3P2.js → chunk-RUKMHBNQ.js} +2 -2
- package/chunk-SA4DYSBR.js +31 -0
- package/chunk-SA4DYSBR.js.map +1 -0
- package/chunk-SJPOFQJU.js +792 -0
- package/chunk-SJPOFQJU.js.map +1 -0
- package/{chunk-V7A6ZFHR.js → chunk-SMPSKBAP.js} +25 -774
- package/chunk-SMPSKBAP.js.map +1 -0
- package/{chunk-E53W6UVQ.js → chunk-T2X2EGV2.js} +4 -4
- package/chunk-T2X2EGV2.js.map +1 -0
- package/chunk-U2GQH6AD.js +309 -0
- package/chunk-U2GQH6AD.js.map +1 -0
- package/chunk-U6A2RPHO.js +66 -0
- package/chunk-U6A2RPHO.js.map +1 -0
- package/chunk-UIXUGVZB.js +362 -0
- package/chunk-UIXUGVZB.js.map +1 -0
- package/chunk-XRZKJACM.js +49 -0
- package/chunk-XRZKJACM.js.map +1 -0
- package/chunk-YDS3X7KB.js +202 -0
- package/chunk-YDS3X7KB.js.map +1 -0
- package/{chunk-A6TMOGPR.js → chunk-ZKNJW4K6.js} +1412 -334
- package/chunk-ZKNJW4K6.js.map +1 -0
- package/chunk-ZXSCBS77.js +90 -0
- package/chunk-ZXSCBS77.js.map +1 -0
- package/{computer-use-RRD7BCCK.js → computer-use-6AEVW47F.js} +9 -7
- package/computer-use-6AEVW47F.js.map +1 -0
- package/{connector-XX7UU6XE.js → connector-XDQ6JEBU.js} +25 -13
- package/connector-XDQ6JEBU.js.map +1 -0
- package/{credit-GDNNAQRO.js → credit-JPQA5XPA.js} +8 -10
- package/credit-JPQA5XPA.js.map +1 -0
- package/{developer-support-IISP5UBI.js → developer-support-V7NZOU2P.js} +27 -7
- package/developer-support-V7NZOU2P.js.map +1 -0
- package/{doctor-IZM2TJOH.js → doctor-FJO24TG3.js} +13 -11
- package/doctor-FJO24TG3.js.map +1 -0
- package/{feishu-XB7SQBSI.js → feishu-PNOAM33Q.js} +99 -9
- package/feishu-PNOAM33Q.js.map +1 -0
- package/{finance-OGWHKQLU.js → finance-55OJ6GYP.js} +49 -9
- package/finance-55OJ6GYP.js.map +1 -0
- package/{generate-AA2PVOYQ.js → generate-XUKBK523.js} +26 -21
- package/generate-XUKBK523.js.map +1 -0
- package/{github-VJVIBTVF.js → github-V4MD2PMM.js} +83 -8
- package/github-V4MD2PMM.js.map +1 -0
- package/{goal-7SYVHDTK.js → goal-FS5FJKVU.js} +69 -13
- package/goal-FS5FJKVU.js.map +1 -0
- package/{host-UVQMIOBA.js → host-GITTJ6PR.js} +124 -10
- package/host-GITTJ6PR.js.map +1 -0
- package/{logs-PIS4X24E.js → logs-EEUIGYUD.js} +51 -11
- package/logs-EEUIGYUD.js.map +1 -0
- package/{mail-L33OSQ2R.js → mail-G4SAJSBD.js} +39 -8
- package/mail-G4SAJSBD.js.map +1 -0
- package/{maps-D5XTXU5U.js → maps-7ANNU3BX.js} +65 -11
- package/maps-7ANNU3BX.js.map +1 -0
- package/{model-ZFMRECDM.js → model-DSPDCJLB.js} +6 -6
- package/model-DSPDCJLB.js.map +1 -0
- package/{model-provider-EZZ2DRYZ.js → model-provider-RZQ45PNG.js} +6 -6
- package/model-provider-RZQ45PNG.js.map +1 -0
- package/package.json +1 -1
- package/{people-search-PFTIO2QS.js → people-search-I7PUMF5M.js} +22 -6
- package/people-search-I7PUMF5M.js.map +1 -0
- package/{phone-6SG5ZUNL.js → phone-SSAPGMTW.js} +90 -9
- package/phone-SSAPGMTW.js.map +1 -0
- package/{recognize-LLU6J3SW.js → recognize-D7VORZBN.js} +27 -9
- package/recognize-D7VORZBN.js.map +1 -0
- package/{resource-FGUSXS4G.js → resource-76IV3TMW.js} +21 -7
- package/resource-76IV3TMW.js.map +1 -0
- package/{scrape-BAUZ2YFD.js → scrape-JBDLNTLB.js} +22 -6
- package/scrape-JBDLNTLB.js.map +1 -0
- package/{search-DLO5RXRM.js → search-UNZNUTZX.js} +29 -9
- package/search-UNZNUTZX.js.map +1 -0
- package/{slack-CVATPKP3.js → slack-AAH6GG2W.js} +103 -11
- package/slack-AAH6GG2W.js.map +1 -0
- package/{teams-ZZYO6YIK.js → teams-6OPXE4TX.js} +90 -9
- package/teams-6OPXE4TX.js.map +1 -0
- package/{telegram-VY7T4YAR.js → telegram-RRZG73RT.js} +101 -10
- package/telegram-RRZG73RT.js.map +1 -0
- package/{upgrade-GFA4ZUU4.js → upgrade-I5IL4UQL.js} +3 -4
- package/upgrade-I5IL4UQL.js.map +1 -0
- package/{video-STFG7BET.js → video-HV44W4X7.js} +5 -4
- package/video-HV44W4X7.js.map +1 -0
- package/{weather-ISJEHJWR.js → weather-EQ7CSADB.js} +70 -16
- package/weather-EQ7CSADB.js.map +1 -0
- package/{web-YN4CVHK7.js → web-6LIMWEOZ.js} +5 -5
- package/web-6LIMWEOZ.js.map +1 -0
- package/{web-search-PC7IECND.js → web-search-AT7WONZN.js} +22 -6
- package/web-search-AT7WONZN.js.map +1 -0
- package/{whoami-KXFXZGM6.js → whoami-RKTLLSI4.js} +16 -7
- package/whoami-RKTLLSI4.js.map +1 -0
- package/{workflow-O7YZHB7A.js → workflow-ZH32P622.js} +135 -39
- package/workflow-ZH32P622.js.map +1 -0
- package/zero.js +40 -40
- package/agent-HUDTEGLK.js.map +0 -1
- package/banking-BMZONEXP.js.map +0 -1
- package/browser-LQP445CU.js.map +0 -1
- package/chat-UF7QAWUT.js.map +0 -1
- package/chunk-2W73DZDW.js +0 -32
- package/chunk-2W73DZDW.js.map +0 -1
- package/chunk-6PN6QGIM.js +0 -11405
- package/chunk-6PN6QGIM.js.map +0 -1
- package/chunk-A6TMOGPR.js.map +0 -1
- package/chunk-ANOLYIPL.js +0 -10
- package/chunk-ANOLYIPL.js.map +0 -1
- package/chunk-E53W6UVQ.js.map +0 -1
- package/chunk-V5ZVB7RJ.js.map +0 -1
- package/chunk-V7A6ZFHR.js.map +0 -1
- package/computer-use-RRD7BCCK.js.map +0 -1
- package/connector-XX7UU6XE.js.map +0 -1
- package/credit-GDNNAQRO.js.map +0 -1
- package/developer-support-IISP5UBI.js.map +0 -1
- package/doctor-IZM2TJOH.js.map +0 -1
- package/feishu-XB7SQBSI.js.map +0 -1
- package/finance-OGWHKQLU.js.map +0 -1
- package/generate-AA2PVOYQ.js.map +0 -1
- package/github-VJVIBTVF.js.map +0 -1
- package/goal-7SYVHDTK.js.map +0 -1
- package/host-UVQMIOBA.js.map +0 -1
- package/logs-PIS4X24E.js.map +0 -1
- package/mail-L33OSQ2R.js.map +0 -1
- package/maps-D5XTXU5U.js.map +0 -1
- package/model-ZFMRECDM.js.map +0 -1
- package/model-provider-EZZ2DRYZ.js.map +0 -1
- package/people-search-PFTIO2QS.js.map +0 -1
- package/phone-6SG5ZUNL.js.map +0 -1
- package/recognize-LLU6J3SW.js.map +0 -1
- package/resource-FGUSXS4G.js.map +0 -1
- package/scrape-BAUZ2YFD.js.map +0 -1
- package/search-DLO5RXRM.js.map +0 -1
- package/slack-CVATPKP3.js.map +0 -1
- package/teams-ZZYO6YIK.js.map +0 -1
- package/telegram-VY7T4YAR.js.map +0 -1
- package/upgrade-GFA4ZUU4.js.map +0 -1
- package/video-STFG7BET.js.map +0 -1
- package/weather-ISJEHJWR.js.map +0 -1
- package/web-YN4CVHK7.js.map +0 -1
- package/web-search-PC7IECND.js.map +0 -1
- package/whoami-KXFXZGM6.js.map +0 -1
- package/workflow-O7YZHB7A.js.map +0 -1
- /package/{chunk-QC63TUJC.js.map → chunk-C62A6LD6.js.map} +0 -0
- /package/{chunk-5ZZI2LSO.js.map → chunk-GHKWW4NC.js.map} +0 -0
- /package/{chunk-BRV4D3P2.js.map → chunk-RUKMHBNQ.js.map} +0 -0
|
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
getZeroConnectorCatalogPermissions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-U2GQH6AD.js";
|
|
7
7
|
import {
|
|
8
8
|
UNKNOWN_PERMISSION_GRANT
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SMPSKBAP.js";
|
|
10
10
|
import {
|
|
11
11
|
source_default
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GHKWW4NC.js";
|
|
13
13
|
import {
|
|
14
14
|
init_esm_shims
|
|
15
15
|
} from "./chunk-AUWSMG4F.js";
|
|
@@ -208,4 +208,4 @@ export {
|
|
|
208
208
|
loadConnectorPermissionInfos,
|
|
209
209
|
connectorPermissionGrantsToFirewallPolicies
|
|
210
210
|
};
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
//# sourceMappingURL=chunk-T2X2EGV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils/format-utils.ts","../src/commands/zero/shared/firewall-permissions.ts","../../../packages/connectors/src/firewall-metadata/policy.ts","../../../packages/connectors/src/firewall-metadata/policy-resolver.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport type { FirewallPolicyValue } from \"@vm0/connectors/firewall-types\";\n\nexport function policyIcon(policy: FirewallPolicyValue): string {\n if (policy === \"allow\") return chalk.green(\"✓\");\n if (policy === \"ask\") return chalk.yellow(\"?\");\n return chalk.dim(\"✗\");\n}\n","import {\n permissionGrantsToFirewallPolicies,\n resolveFirewallMetadataPolicies,\n} from \"@vm0/connectors/firewall-metadata/policy\";\nimport type {\n FirewallPolicies,\n FirewallPolicyValue,\n} from \"@vm0/connectors/firewall-types\";\nimport {\n getZeroConnectorCatalogPermissions,\n type ZeroConnectorCatalogPermissionDetail,\n} from \"../../../lib/api/domains/zero-connectors\";\nimport type { ZeroUserPermissionGrant } from \"../../../lib/api/domains/zero-agents\";\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","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":[]}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __createRequire } from "node:module";
|
|
3
|
+
const require = __createRequire(import.meta.url);
|
|
4
|
+
import {
|
|
5
|
+
zeroAgentCustomConnectorsContract,
|
|
6
|
+
zeroAgentInstructionsContract,
|
|
7
|
+
zeroAgentsByIdContract,
|
|
8
|
+
zeroAgentsMainContract,
|
|
9
|
+
zeroConnectorCheckContract,
|
|
10
|
+
zeroConnectorManualGrantContract,
|
|
11
|
+
zeroConnectorsBySlugContract,
|
|
12
|
+
zeroConnectorsMainContract,
|
|
13
|
+
zeroCustomConnectorByIdContract,
|
|
14
|
+
zeroCustomConnectorOAuth2Contract,
|
|
15
|
+
zeroCustomConnectorValuesContract,
|
|
16
|
+
zeroCustomConnectorsContract,
|
|
17
|
+
zeroUserConnectorsContract,
|
|
18
|
+
zeroUserPermissionGrantsContract
|
|
19
|
+
} from "./chunk-HZYOJTEE.js";
|
|
20
|
+
import {
|
|
21
|
+
zeroConnectorCatalogContract
|
|
22
|
+
} from "./chunk-HHHHZMTA.js";
|
|
23
|
+
import {
|
|
24
|
+
getClientConfig,
|
|
25
|
+
handleError,
|
|
26
|
+
initClient
|
|
27
|
+
} from "./chunk-GHKWW4NC.js";
|
|
28
|
+
import {
|
|
29
|
+
init_esm_shims
|
|
30
|
+
} from "./chunk-AUWSMG4F.js";
|
|
31
|
+
|
|
32
|
+
// src/lib/api/domains/zero-agents.ts
|
|
33
|
+
init_esm_shims();
|
|
34
|
+
async function createZeroAgent(body) {
|
|
35
|
+
const config = await getClientConfig();
|
|
36
|
+
const client = initClient(zeroAgentsMainContract, config);
|
|
37
|
+
const result = await client.create({ body });
|
|
38
|
+
if (result.status === 201) return result.body;
|
|
39
|
+
handleError(result, "Failed to create zero agent");
|
|
40
|
+
}
|
|
41
|
+
async function listZeroAgents() {
|
|
42
|
+
const config = await getClientConfig();
|
|
43
|
+
const client = initClient(zeroAgentsMainContract, config);
|
|
44
|
+
const result = await client.list({ headers: {} });
|
|
45
|
+
if (result.status === 200) return result.body;
|
|
46
|
+
handleError(result, "Failed to list zero agents");
|
|
47
|
+
}
|
|
48
|
+
async function getZeroAgent(id) {
|
|
49
|
+
const config = await getClientConfig();
|
|
50
|
+
const client = initClient(zeroAgentsByIdContract, config);
|
|
51
|
+
const result = await client.get({ params: { id } });
|
|
52
|
+
if (result.status === 200) return result.body;
|
|
53
|
+
handleError(result, `Zero agent "${id}" not found`);
|
|
54
|
+
}
|
|
55
|
+
async function updateZeroAgent(id, body) {
|
|
56
|
+
const config = await getClientConfig();
|
|
57
|
+
const client = initClient(zeroAgentsByIdContract, config);
|
|
58
|
+
const result = await client.update({ params: { id }, body });
|
|
59
|
+
if (result.status === 200) return result.body;
|
|
60
|
+
handleError(result, `Failed to update zero agent "${id}"`);
|
|
61
|
+
}
|
|
62
|
+
async function deleteZeroAgent(id) {
|
|
63
|
+
const config = await getClientConfig();
|
|
64
|
+
const client = initClient(zeroAgentsByIdContract, config);
|
|
65
|
+
const result = await client.delete({ params: { id } });
|
|
66
|
+
if (result.status === 204) return;
|
|
67
|
+
handleError(result, `Zero agent "${id}" not found`);
|
|
68
|
+
}
|
|
69
|
+
async function getZeroAgentInstructions(id) {
|
|
70
|
+
const config = await getClientConfig();
|
|
71
|
+
const client = initClient(zeroAgentInstructionsContract, config);
|
|
72
|
+
const result = await client.get({ params: { id } });
|
|
73
|
+
if (result.status === 200) return result.body;
|
|
74
|
+
handleError(result, `Failed to get instructions for zero agent "${id}"`);
|
|
75
|
+
}
|
|
76
|
+
async function getZeroAgentUserConnectors(id) {
|
|
77
|
+
const config = await getClientConfig();
|
|
78
|
+
const client = initClient(zeroUserConnectorsContract, config);
|
|
79
|
+
const result = await client.get({ params: { id } });
|
|
80
|
+
if (result.status === 200) {
|
|
81
|
+
return result.body.enabledConnectorSlugs;
|
|
82
|
+
}
|
|
83
|
+
handleError(
|
|
84
|
+
result,
|
|
85
|
+
`Failed to get connector permissions for zero agent "${id}"`
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
async function getZeroAgentCustomConnectors(id) {
|
|
89
|
+
const config = await getClientConfig();
|
|
90
|
+
const client = initClient(zeroAgentCustomConnectorsContract, config);
|
|
91
|
+
const result = await client.get({ params: { id } });
|
|
92
|
+
if (result.status === 200) return result.body.enabledIds;
|
|
93
|
+
handleError(
|
|
94
|
+
result,
|
|
95
|
+
`Failed to get custom connector permissions for zero agent "${id}"`
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
async function addZeroAgentCustomConnector(id, customConnectorId) {
|
|
99
|
+
const config = await getClientConfig();
|
|
100
|
+
const client = initClient(zeroAgentCustomConnectorsContract, config);
|
|
101
|
+
const result = await client.update({
|
|
102
|
+
params: { id },
|
|
103
|
+
body: {
|
|
104
|
+
enabledIds: [customConnectorId],
|
|
105
|
+
operation: "add"
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
if (result.status === 200) return;
|
|
109
|
+
handleError(
|
|
110
|
+
result,
|
|
111
|
+
`Failed to authorize custom connector "${customConnectorId}" for zero agent "${id}"`
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
async function listZeroUserPermissionGrants(agentId) {
|
|
115
|
+
const config = await getClientConfig();
|
|
116
|
+
const client = initClient(zeroUserPermissionGrantsContract, config);
|
|
117
|
+
const result = await client.list({ query: { agentId } });
|
|
118
|
+
if (result.status === 200) {
|
|
119
|
+
return result.body;
|
|
120
|
+
}
|
|
121
|
+
handleError(
|
|
122
|
+
result,
|
|
123
|
+
`Failed to get permission grants for zero agent "${agentId}"`
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
async function updateZeroAgentInstructions(id, content) {
|
|
127
|
+
const config = await getClientConfig();
|
|
128
|
+
const client = initClient(zeroAgentInstructionsContract, config);
|
|
129
|
+
const result = await client.update({
|
|
130
|
+
params: { id },
|
|
131
|
+
body: { content }
|
|
132
|
+
});
|
|
133
|
+
if (result.status === 200) return;
|
|
134
|
+
handleError(result, `Failed to update instructions for zero agent "${id}"`);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// src/lib/api/domains/zero-connectors.ts
|
|
138
|
+
init_esm_shims();
|
|
139
|
+
async function listZeroConnectors() {
|
|
140
|
+
const config = await getClientConfig();
|
|
141
|
+
const client = initClient(zeroConnectorsMainContract, config);
|
|
142
|
+
const result = await client.list({ headers: {} });
|
|
143
|
+
if (result.status === 200) {
|
|
144
|
+
return result.body;
|
|
145
|
+
}
|
|
146
|
+
handleError(result, "Failed to list connectors");
|
|
147
|
+
}
|
|
148
|
+
async function listZeroConnectorCatalog() {
|
|
149
|
+
const config = await getClientConfig();
|
|
150
|
+
const client = initClient(zeroConnectorCatalogContract, config);
|
|
151
|
+
const result = await client.list({ headers: {} });
|
|
152
|
+
if (result.status === 200) {
|
|
153
|
+
return result.body;
|
|
154
|
+
}
|
|
155
|
+
handleError(result, "Failed to list connector catalog");
|
|
156
|
+
}
|
|
157
|
+
async function listZeroConnectorCatalogStatus() {
|
|
158
|
+
const config = await getClientConfig();
|
|
159
|
+
const client = initClient(zeroConnectorCatalogContract, config);
|
|
160
|
+
const result = await client.status({ headers: {} });
|
|
161
|
+
if (result.status === 200) {
|
|
162
|
+
return result.body;
|
|
163
|
+
}
|
|
164
|
+
handleError(result, "Failed to list connector catalog status");
|
|
165
|
+
}
|
|
166
|
+
async function getZeroConnectorCatalogPermissions(connectorSlug) {
|
|
167
|
+
const config = await getClientConfig();
|
|
168
|
+
const client = initClient(zeroConnectorCatalogContract, config);
|
|
169
|
+
const result = await client.permissions({
|
|
170
|
+
params: { connectorSlug }
|
|
171
|
+
});
|
|
172
|
+
if (result.status === 200) {
|
|
173
|
+
const permissions = result.body.permissions;
|
|
174
|
+
if (permissions.connectorSlug !== connectorSlug) {
|
|
175
|
+
throw new Error(
|
|
176
|
+
`Permission metadata connector slug mismatch: expected ${connectorSlug}, got ${permissions.connectorSlug}`
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
return permissions;
|
|
180
|
+
}
|
|
181
|
+
if (result.status === 404) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
handleError(
|
|
185
|
+
result,
|
|
186
|
+
`Failed to get connector permission metadata for "${connectorSlug}"`
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
async function diagnoseZeroConnectorCheck(request) {
|
|
190
|
+
const config = await getClientConfig();
|
|
191
|
+
const client = initClient(zeroConnectorCheckContract, {
|
|
192
|
+
...config,
|
|
193
|
+
validateResponse: true
|
|
194
|
+
});
|
|
195
|
+
const result = await client.check({ body: request });
|
|
196
|
+
if (result.status === 200) {
|
|
197
|
+
return result.body;
|
|
198
|
+
}
|
|
199
|
+
handleError(result, "Failed to diagnose connector");
|
|
200
|
+
}
|
|
201
|
+
async function getZeroConnector(connectorSlug) {
|
|
202
|
+
const config = await getClientConfig();
|
|
203
|
+
const client = initClient(zeroConnectorsBySlugContract, config);
|
|
204
|
+
const result = await client.get({
|
|
205
|
+
params: { connectorSlug }
|
|
206
|
+
});
|
|
207
|
+
if (result.status === 200) {
|
|
208
|
+
return result.body;
|
|
209
|
+
}
|
|
210
|
+
if (result.status === 404) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
handleError(result, `Failed to get connector "${connectorSlug}"`);
|
|
214
|
+
}
|
|
215
|
+
async function connectZeroConnectorManualGrant(connectorSlug, authMethod, values) {
|
|
216
|
+
const config = await getClientConfig();
|
|
217
|
+
const client = initClient(zeroConnectorManualGrantContract, config);
|
|
218
|
+
const result = await client.connect({
|
|
219
|
+
params: { connectorSlug },
|
|
220
|
+
body: { authMethod, values }
|
|
221
|
+
});
|
|
222
|
+
if (result.status === 200) {
|
|
223
|
+
return result.body;
|
|
224
|
+
}
|
|
225
|
+
handleError(result, `Failed to connect connector "${connectorSlug}"`);
|
|
226
|
+
}
|
|
227
|
+
async function listZeroCustomConnectors() {
|
|
228
|
+
const config = await getClientConfig();
|
|
229
|
+
const client = initClient(zeroCustomConnectorsContract, config);
|
|
230
|
+
const result = await client.list({ headers: {} });
|
|
231
|
+
if (result.status === 200) {
|
|
232
|
+
return result.body.connectors;
|
|
233
|
+
}
|
|
234
|
+
handleError(result, "Failed to list custom connectors");
|
|
235
|
+
}
|
|
236
|
+
async function createZeroCustomConnector(body) {
|
|
237
|
+
const config = await getClientConfig();
|
|
238
|
+
const client = initClient(zeroCustomConnectorsContract, config);
|
|
239
|
+
const result = await client.create({ body, headers: {} });
|
|
240
|
+
if (result.status === 201) {
|
|
241
|
+
return result.body;
|
|
242
|
+
}
|
|
243
|
+
handleError(result, "Failed to create custom connector");
|
|
244
|
+
}
|
|
245
|
+
async function getZeroCustomConnector(id) {
|
|
246
|
+
const config = await getClientConfig();
|
|
247
|
+
const client = initClient(zeroCustomConnectorByIdContract, config);
|
|
248
|
+
const result = await client.get({ params: { id }, headers: {} });
|
|
249
|
+
if (result.status === 200) {
|
|
250
|
+
return result.body;
|
|
251
|
+
}
|
|
252
|
+
if (result.status === 404) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
handleError(result, `Failed to get custom connector "${id}"`);
|
|
256
|
+
}
|
|
257
|
+
async function setZeroCustomConnectorValues(id, values) {
|
|
258
|
+
const config = await getClientConfig();
|
|
259
|
+
const client = initClient(zeroCustomConnectorValuesContract, config);
|
|
260
|
+
const result = await client.set({
|
|
261
|
+
params: { id },
|
|
262
|
+
headers: {},
|
|
263
|
+
body: { values: [...values] }
|
|
264
|
+
});
|
|
265
|
+
if (result.status === 200) {
|
|
266
|
+
return result.body;
|
|
267
|
+
}
|
|
268
|
+
handleError(result, `Failed to set values for custom connector "${id}"`);
|
|
269
|
+
}
|
|
270
|
+
async function startZeroCustomConnectorOAuth2(id, agentId) {
|
|
271
|
+
const config = await getClientConfig();
|
|
272
|
+
const client = initClient(zeroCustomConnectorOAuth2Contract, config);
|
|
273
|
+
const result = await client.start({
|
|
274
|
+
params: { id },
|
|
275
|
+
headers: {},
|
|
276
|
+
body: agentId ? { agentId } : {}
|
|
277
|
+
});
|
|
278
|
+
if (result.status === 200) {
|
|
279
|
+
return result.body.authorizationUrl;
|
|
280
|
+
}
|
|
281
|
+
handleError(result, `Failed to start OAuth for custom connector "${id}"`);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export {
|
|
285
|
+
createZeroAgent,
|
|
286
|
+
listZeroAgents,
|
|
287
|
+
getZeroAgent,
|
|
288
|
+
updateZeroAgent,
|
|
289
|
+
deleteZeroAgent,
|
|
290
|
+
getZeroAgentInstructions,
|
|
291
|
+
getZeroAgentUserConnectors,
|
|
292
|
+
getZeroAgentCustomConnectors,
|
|
293
|
+
addZeroAgentCustomConnector,
|
|
294
|
+
listZeroUserPermissionGrants,
|
|
295
|
+
updateZeroAgentInstructions,
|
|
296
|
+
listZeroConnectors,
|
|
297
|
+
listZeroConnectorCatalog,
|
|
298
|
+
listZeroConnectorCatalogStatus,
|
|
299
|
+
getZeroConnectorCatalogPermissions,
|
|
300
|
+
diagnoseZeroConnectorCheck,
|
|
301
|
+
getZeroConnector,
|
|
302
|
+
connectZeroConnectorManualGrant,
|
|
303
|
+
listZeroCustomConnectors,
|
|
304
|
+
createZeroCustomConnector,
|
|
305
|
+
getZeroCustomConnector,
|
|
306
|
+
setZeroCustomConnectorValues,
|
|
307
|
+
startZeroCustomConnectorOAuth2
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=chunk-U2GQH6AD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/api/domains/zero-agents.ts","../src/lib/api/domains/zero-connectors.ts"],"sourcesContent":["import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroAgentsMainContract,\n zeroAgentsByIdContract,\n zeroAgentInstructionsContract,\n type ZeroAgentResponse,\n type ZeroAgentRequest,\n type ZeroAgentInstructionsResponse,\n} from \"@vm0/api-contracts/contracts/zero-agents\";\nimport {\n zeroUserPermissionGrantsContract,\n type UserPermissionGrantResponse,\n} from \"@vm0/api-contracts/contracts/zero-user-permission-grants\";\nimport type { ConnectorSlug } from \"@vm0/api-contracts/contracts/connector-identity\";\nimport { zeroUserConnectorsContract } from \"@vm0/api-contracts/contracts/user-connectors\";\nimport { zeroAgentCustomConnectorsContract } from \"@vm0/api-contracts/contracts/zero-agent-custom-connectors\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type ZeroUserPermissionGrant = UserPermissionGrantResponse;\n\nexport async function createZeroAgent(\n body: ZeroAgentRequest,\n): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsMainContract, config);\n const result = await client.create({ body });\n if (result.status === 201) return result.body;\n handleError(result, \"Failed to create zero agent\");\n}\n\nexport async function listZeroAgents(): Promise<ZeroAgentResponse[]> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsMainContract, config);\n const result = await client.list({ headers: {} });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to list zero agents\");\n}\n\nexport async function getZeroAgent(id: string): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Zero agent \"${id}\" not found`);\n}\n\nexport async function updateZeroAgent(\n id: string,\n body: ZeroAgentRequest,\n): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.update({ params: { id }, body });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to update zero agent \"${id}\"`);\n}\n\nexport async function deleteZeroAgent(id: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.delete({ params: { id } });\n if (result.status === 204) return;\n handleError(result, `Zero agent \"${id}\" not found`);\n}\n\nexport async function getZeroAgentInstructions(\n id: string,\n): Promise<ZeroAgentInstructionsResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentInstructionsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to get instructions for zero agent \"${id}\"`);\n}\n\nexport async function getZeroAgentUserConnectors(\n id: string,\n): Promise<ConnectorSlug[]> {\n const config = await getClientConfig();\n const client = initClient(zeroUserConnectorsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) {\n return result.body.enabledConnectorSlugs;\n }\n handleError(\n result,\n `Failed to get connector permissions for zero agent \"${id}\"`,\n );\n}\n\nexport async function getZeroAgentCustomConnectors(\n id: string,\n): Promise<string[]> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentCustomConnectorsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body.enabledIds;\n handleError(\n result,\n `Failed to get custom connector permissions for zero agent \"${id}\"`,\n );\n}\n\nexport async function addZeroAgentCustomConnector(\n id: string,\n customConnectorId: string,\n): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentCustomConnectorsContract, config);\n const result = await client.update({\n params: { id },\n body: {\n enabledIds: [customConnectorId],\n operation: \"add\",\n },\n });\n if (result.status === 200) return;\n handleError(\n result,\n `Failed to authorize custom connector \"${customConnectorId}\" for zero agent \"${id}\"`,\n );\n}\n\nexport async function listZeroUserPermissionGrants(\n agentId: string,\n): Promise<ZeroUserPermissionGrant[]> {\n const config = await getClientConfig();\n const client = initClient(zeroUserPermissionGrantsContract, config);\n const result = await client.list({ query: { agentId } });\n if (result.status === 200) {\n return result.body;\n }\n handleError(\n result,\n `Failed to get permission grants for zero agent \"${agentId}\"`,\n );\n}\n\nexport async function updateZeroAgentInstructions(\n id: string,\n content: string,\n): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentInstructionsContract, config);\n const result = await client.update({\n params: { id },\n body: { content },\n });\n if (result.status === 200) return;\n handleError(result, `Failed to update instructions for zero agent \"${id}\"`);\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport type {\n ConnectorAuthMethodId,\n ConnectorSlug,\n} from \"@vm0/api-contracts/contracts/connector-identity\";\nimport {\n zeroConnectorManualGrantContract,\n zeroConnectorsBySlugContract,\n zeroConnectorsMainContract,\n} from \"@vm0/api-contracts/contracts/zero-connectors\";\nimport {\n zeroConnectorCatalogContract,\n type PublicConnectorCatalogListResponse,\n type PublicConnectorCatalogPermissionDetail,\n type PublicConnectorCatalogStatusItem,\n type PublicConnectorCatalogStatusResponse,\n} from \"@vm0/api-contracts/contracts/zero-connector-catalog\";\nimport {\n zeroConnectorCheckContract,\n type ConnectorCheckDiagnosticResult,\n type ConnectorCheckRequest,\n} from \"@vm0/api-contracts/contracts/zero-connector-check\";\nimport {\n zeroCustomConnectorByIdContract,\n zeroCustomConnectorOAuth2Contract,\n zeroCustomConnectorValuesContract,\n zeroCustomConnectorsContract,\n type CreateCustomConnectorBody,\n type CustomConnectorValueInput,\n type CustomConnectorResponse,\n} from \"@vm0/api-contracts/contracts/zero-custom-connectors\";\nimport type {\n ConnectorListResponse,\n ConnectorResponse,\n} from \"@vm0/api-contracts/contracts/connector-schemas\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type ZeroConnector = ConnectorResponse;\ntype ZeroConnectorListResponse = ConnectorListResponse;\nexport type ZeroConnectorCatalogItem =\n PublicConnectorCatalogListResponse[\"connectors\"][number];\nexport type ZeroConnectorCatalogStatus = PublicConnectorCatalogStatusItem;\ntype ZeroConnectorCatalogListResponse = PublicConnectorCatalogListResponse;\ntype ZeroConnectorCatalogStatusResponse = PublicConnectorCatalogStatusResponse;\nexport type ZeroConnectorCatalogPermissionDetail =\n PublicConnectorCatalogPermissionDetail;\nexport type ZeroConnectorCheckDiagnosticResult = ConnectorCheckDiagnosticResult;\n\n/**\n * List all connectors for the authenticated user (zero proxy)\n */\nexport async function listZeroConnectors(): Promise<ZeroConnectorListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorsMainContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connectors\");\n}\n\nexport async function listZeroConnectorCatalog(): Promise<ZeroConnectorCatalogListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connector catalog\");\n}\n\nexport async function listZeroConnectorCatalogStatus(): Promise<ZeroConnectorCatalogStatusResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.status({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connector catalog status\");\n}\n\nexport async function getZeroConnectorCatalogPermissions(\n connectorSlug: string,\n): Promise<ZeroConnectorCatalogPermissionDetail | null> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.permissions({\n params: { connectorSlug },\n });\n\n if (result.status === 200) {\n const permissions = result.body.permissions;\n if (permissions.connectorSlug !== connectorSlug) {\n throw new Error(\n `Permission metadata connector slug mismatch: expected ${connectorSlug}, got ${permissions.connectorSlug}`,\n );\n }\n return permissions;\n }\n\n if (result.status === 404) {\n return null;\n }\n\n handleError(\n result,\n `Failed to get connector permission metadata for \"${connectorSlug}\"`,\n );\n}\n\nexport async function diagnoseZeroConnectorCheck(\n request: ConnectorCheckRequest,\n): Promise<ZeroConnectorCheckDiagnosticResult> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCheckContract, {\n ...config,\n validateResponse: true,\n });\n\n const result = await client.check({ body: request });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to diagnose connector\");\n}\n\n/**\n * Get a connector by slug (zero proxy)\n * Returns null if not connected (404 response)\n */\nexport async function getZeroConnector(\n connectorSlug: ConnectorSlug,\n): Promise<ZeroConnector | null> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorsBySlugContract, config);\n\n const result = await client.get({\n params: { connectorSlug },\n });\n\n if (result.status === 200) {\n return result.body;\n }\n\n if (result.status === 404) {\n return null;\n }\n\n handleError(result, `Failed to get connector \"${connectorSlug}\"`);\n}\n\nexport async function connectZeroConnectorManualGrant(\n connectorSlug: ConnectorSlug,\n authMethod: ConnectorAuthMethodId,\n values: Record<string, string>,\n): Promise<ZeroConnector> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorManualGrantContract, config);\n\n const result = await client.connect({\n params: { connectorSlug },\n body: { authMethod, values },\n });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, `Failed to connect connector \"${connectorSlug}\"`);\n}\n\nexport async function listZeroCustomConnectors(): Promise<\n CustomConnectorResponse[]\n> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorsContract, config);\n\n const result = await client.list({ headers: {} });\n if (result.status === 200) {\n return result.body.connectors;\n }\n\n handleError(result, \"Failed to list custom connectors\");\n}\n\nexport async function createZeroCustomConnector(\n body: CreateCustomConnectorBody,\n): Promise<CustomConnectorResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorsContract, config);\n\n const result = await client.create({ body, headers: {} });\n if (result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to create custom connector\");\n}\n\nexport async function getZeroCustomConnector(\n id: string,\n): Promise<CustomConnectorResponse | null> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorByIdContract, config);\n\n const result = await client.get({ params: { id }, headers: {} });\n if (result.status === 200) {\n return result.body;\n }\n if (result.status === 404) {\n return null;\n }\n\n handleError(result, `Failed to get custom connector \"${id}\"`);\n}\n\nexport async function setZeroCustomConnectorValues(\n id: string,\n values: readonly CustomConnectorValueInput[],\n): Promise<CustomConnectorResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorValuesContract, config);\n\n const result = await client.set({\n params: { id },\n headers: {},\n body: { values: [...values] },\n });\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, `Failed to set values for custom connector \"${id}\"`);\n}\n\nexport async function startZeroCustomConnectorOAuth2(\n id: string,\n agentId: string | undefined,\n): Promise<string> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorOAuth2Contract, config);\n\n const result = await client.start({\n params: { id },\n headers: {},\n body: agentId ? { agentId } : {},\n });\n if (result.status === 200) {\n return result.body.authorizationUrl;\n }\n\n handleError(result, `Failed to start OAuth for custom connector \"${id}\"`);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __createRequire } from "node:module";
|
|
3
|
+
const require = __createRequire(import.meta.url);
|
|
4
|
+
import {
|
|
5
|
+
authHeadersSchema
|
|
6
|
+
} from "./chunk-JV6LM2YC.js";
|
|
7
|
+
import {
|
|
8
|
+
apiErrorSchema,
|
|
9
|
+
external_exports,
|
|
10
|
+
initContract
|
|
11
|
+
} from "./chunk-GHKWW4NC.js";
|
|
12
|
+
import {
|
|
13
|
+
init_esm_shims
|
|
14
|
+
} from "./chunk-AUWSMG4F.js";
|
|
15
|
+
|
|
16
|
+
// ../../packages/api-contracts/src/contracts/zero-recognition.ts
|
|
17
|
+
init_esm_shims();
|
|
18
|
+
var c = initContract();
|
|
19
|
+
var ZERO_RECOGNITION_MAX_FILE_BYTES = 20 * 1024 * 1024;
|
|
20
|
+
var ZERO_RECOGNITION_MAX_PROMPT_CHARS = 8192;
|
|
21
|
+
var ZERO_RECOGNITION_MAX_TEXT_CHARS = 32768;
|
|
22
|
+
var zeroRecognitionImageMimeTypeSchema = external_exports.enum([
|
|
23
|
+
"image/png",
|
|
24
|
+
"image/jpeg",
|
|
25
|
+
"image/webp"
|
|
26
|
+
]);
|
|
27
|
+
var zeroRecognitionRequestSchema = external_exports.object({
|
|
28
|
+
fileId: external_exports.string().uuid(),
|
|
29
|
+
prompt: external_exports.string().trim().min(1).max(ZERO_RECOGNITION_MAX_PROMPT_CHARS)
|
|
30
|
+
});
|
|
31
|
+
var zeroRecognitionResponseSchema = external_exports.object({
|
|
32
|
+
text: external_exports.string().trim().min(1).max(ZERO_RECOGNITION_MAX_TEXT_CHARS),
|
|
33
|
+
metadata: external_exports.object({
|
|
34
|
+
creditsCharged: external_exports.number().int().nonnegative()
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
var recognitionResponses = {
|
|
38
|
+
200: zeroRecognitionResponseSchema,
|
|
39
|
+
400: apiErrorSchema,
|
|
40
|
+
401: apiErrorSchema,
|
|
41
|
+
402: apiErrorSchema,
|
|
42
|
+
403: apiErrorSchema,
|
|
43
|
+
404: apiErrorSchema,
|
|
44
|
+
413: apiErrorSchema,
|
|
45
|
+
500: apiErrorSchema,
|
|
46
|
+
502: apiErrorSchema,
|
|
47
|
+
503: apiErrorSchema
|
|
48
|
+
};
|
|
49
|
+
var zeroRecognitionContract = c.router({
|
|
50
|
+
recognize: {
|
|
51
|
+
method: "POST",
|
|
52
|
+
path: "/api/zero/recognize",
|
|
53
|
+
headers: authHeadersSchema,
|
|
54
|
+
body: zeroRecognitionRequestSchema,
|
|
55
|
+
responses: recognitionResponses,
|
|
56
|
+
summary: "Recognize one owned image through a managed multimodal model"
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
ZERO_RECOGNITION_MAX_FILE_BYTES,
|
|
62
|
+
ZERO_RECOGNITION_MAX_PROMPT_CHARS,
|
|
63
|
+
zeroRecognitionImageMimeTypeSchema,
|
|
64
|
+
zeroRecognitionContract
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-U6A2RPHO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/api-contracts/src/contracts/zero-recognition.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const ZERO_RECOGNITION_MAX_FILE_BYTES = 20 * 1024 * 1024;\nexport const ZERO_RECOGNITION_MAX_PROMPT_CHARS = 8_192;\nexport const ZERO_RECOGNITION_MAX_TEXT_CHARS = 32_768;\n\nexport const zeroRecognitionImageMimeTypeSchema = z.enum([\n \"image/png\",\n \"image/jpeg\",\n \"image/webp\",\n]);\n\nexport const zeroRecognitionRequestSchema = z.object({\n fileId: z.string().uuid(),\n prompt: z.string().trim().min(1).max(ZERO_RECOGNITION_MAX_PROMPT_CHARS),\n});\n\nexport const zeroRecognitionResponseSchema = z.object({\n text: z.string().trim().min(1).max(ZERO_RECOGNITION_MAX_TEXT_CHARS),\n metadata: z.object({\n creditsCharged: z.number().int().nonnegative(),\n }),\n});\n\nexport type ZeroRecognitionImageMimeType = z.infer<\n typeof zeroRecognitionImageMimeTypeSchema\n>;\nexport type ZeroRecognitionRequest = z.infer<\n typeof zeroRecognitionRequestSchema\n>;\nexport type ZeroRecognitionResponse = z.infer<\n typeof zeroRecognitionResponseSchema\n>;\n\nconst recognitionResponses = {\n 200: zeroRecognitionResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroRecognitionContract = c.router({\n recognize: {\n method: \"POST\",\n path: \"/api/zero/recognize\",\n headers: authHeadersSchema,\n body: zeroRecognitionRequestSchema,\n responses: recognitionResponses,\n summary: \"Recognize one owned image through a managed multimodal model\",\n },\n});\n\nexport type ZeroRecognitionContract = typeof zeroRecognitionContract;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAKA,IAAM,IAAI,aAAa;AAEhB,IAAM,kCAAkC,KAAK,OAAO;AACpD,IAAM,oCAAoC;AAC1C,IAAM,kCAAkC;AAExC,IAAM,qCAAqC,iBAAE,KAAK;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,+BAA+B,iBAAE,OAAO;AAAA,EACnD,QAAQ,iBAAE,OAAO,EAAE,KAAK;AAAA,EACxB,QAAQ,iBAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,iCAAiC;AACxE,CAAC;AAEM,IAAM,gCAAgC,iBAAE,OAAO;AAAA,EACpD,MAAM,iBAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,+BAA+B;AAAA,EAClE,UAAU,iBAAE,OAAO;AAAA,IACjB,gBAAgB,iBAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EAC/C,CAAC;AACH,CAAC;AAYD,IAAM,uBAAuB;AAAA,EAC3B,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAEO,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACF,CAAC;","names":[]}
|