forgeos 0.1.0-alpha.7 → 0.1.0-alpha.9
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/AGENTS.md +1 -1
- package/CHANGELOG.md +14 -0
- package/adapters/go/README.md +23 -0
- package/adapters/go/go.mod +3 -0
- package/adapters/go/http.go +149 -0
- package/adapters/go/registry.go +234 -0
- package/adapters/go/types.go +136 -0
- package/docs/changelog.md +82 -0
- package/docs/forge-protocol.md +155 -0
- package/examples/go-billing/go.mod +7 -0
- package/examples/go-billing/main.go +120 -0
- package/package.json +5 -1
- package/schemas/forge-manifest.schema.json +57 -0
- package/src/forge/_generated/actionSubscriptions.json +2 -2
- package/src/forge/_generated/actionSubscriptions.ts +3 -3
- package/src/forge/_generated/agentAdapterManifest.json +2 -2
- package/src/forge/_generated/agentAdapterManifest.ts +3 -3
- package/src/forge/_generated/agentContract.json +2 -2
- package/src/forge/_generated/agentContract.ts +5 -2
- package/src/forge/_generated/agentQuickstart.md +1 -1
- package/src/forge/_generated/agentTools.json +2 -2
- package/src/forge/_generated/agentTools.md +1 -1
- package/src/forge/_generated/agentTools.ts +2 -2
- package/src/forge/_generated/aiContext.ts +1 -1
- package/src/forge/_generated/aiModels.json +1 -1
- package/src/forge/_generated/aiModels.ts +1 -1
- package/src/forge/_generated/aiProviders.json +1 -1
- package/src/forge/_generated/aiProviders.ts +1 -1
- package/src/forge/_generated/aiRegistry.json +2 -2
- package/src/forge/_generated/aiRegistry.ts +3 -3
- package/src/forge/_generated/api.json +2 -2
- package/src/forge/_generated/api.ts +7 -2
- package/src/forge/_generated/appGraph.json +2 -2
- package/src/forge/_generated/appGraph.ts +661 -254
- package/src/forge/_generated/appMap.md +1 -1
- package/src/forge/_generated/artifactManifest.json +2 -2
- package/src/forge/_generated/artifactManifest.ts +2 -2
- package/src/forge/_generated/authClaims.json +1 -1
- package/src/forge/_generated/authClaims.ts +1 -1
- package/src/forge/_generated/authConfig.json +1 -1
- package/src/forge/_generated/authConfig.ts +1 -1
- package/src/forge/_generated/authContext.ts +1 -1
- package/src/forge/_generated/authRegistry.json +1 -1
- package/src/forge/_generated/authRegistry.ts +1 -1
- package/src/forge/_generated/buildInfo.json +2 -2
- package/src/forge/_generated/buildInfo.ts +4 -4
- package/src/forge/_generated/capabilityMap.json +2 -2
- package/src/forge/_generated/capabilityMap.md +1 -1
- package/src/forge/_generated/capabilityMap.ts +2 -2
- package/src/forge/_generated/client.ts +88 -1
- package/src/forge/_generated/clientApi.ts +2 -1
- package/src/forge/_generated/clientManifest.json +2 -2
- package/src/forge/_generated/clientManifest.ts +6 -4
- package/src/forge/_generated/clientTypes.ts +19 -1
- package/src/forge/_generated/configRegistry.json +1 -1
- package/src/forge/_generated/configRegistry.ts +1 -1
- package/src/forge/_generated/dataGraph.json +2 -2
- package/src/forge/_generated/dataGraph.ts +3 -3
- package/src/forge/_generated/db.json +1 -1
- package/src/forge/_generated/db.ts +1 -1
- package/src/forge/_generated/dbSecurityManifest.json +1 -1
- package/src/forge/_generated/dbSecurityManifest.ts +1 -1
- package/src/forge/_generated/dbSessionContext.json +1 -1
- package/src/forge/_generated/dbSessionContext.ts +1 -1
- package/src/forge/_generated/deployManifest.json +2 -2
- package/src/forge/_generated/deployManifest.ts +7 -7
- package/src/forge/_generated/devManifest.json +2 -2
- package/src/forge/_generated/devManifest.ts +3 -3
- package/src/forge/_generated/envSchema.json +1 -1
- package/src/forge/_generated/envSchema.ts +1 -1
- package/src/forge/_generated/externalServices.json +2 -0
- package/src/forge/_generated/externalServices.ts +9 -0
- package/src/forge/_generated/frontendGraph.json +1 -1
- package/src/forge/_generated/frontendGraph.ts +1 -1
- package/src/forge/_generated/importGuards.json +1 -1
- package/src/forge/_generated/importGuards.ts +1 -1
- package/src/forge/_generated/index.ts +2 -1
- package/src/forge/_generated/liveProductionManifest.json +1 -1
- package/src/forge/_generated/liveProductionManifest.ts +1 -1
- package/src/forge/_generated/liveProtocol.json +1 -1
- package/src/forge/_generated/liveProtocol.ts +1 -1
- package/src/forge/_generated/liveQueryRegistry.json +2 -2
- package/src/forge/_generated/liveQueryRegistry.ts +3 -3
- package/src/forge/_generated/liveTransportConfig.json +1 -1
- package/src/forge/_generated/liveTransportConfig.ts +1 -1
- package/src/forge/_generated/makeRegistry.json +2 -2
- package/src/forge/_generated/makeRegistry.ts +2 -2
- package/src/forge/_generated/makeTemplates.json +1 -1
- package/src/forge/_generated/makeTemplates.ts +1 -1
- package/src/forge/_generated/mockMap.json +1 -1
- package/src/forge/_generated/mockMap.ts +1 -1
- package/src/forge/_generated/operationPlaybooks.md +1 -1
- package/src/forge/_generated/packageGraph.json +2 -2
- package/src/forge/_generated/packageGraph.ts +2 -2
- package/src/forge/_generated/packageUpgradeRegistry.json +2 -2
- package/src/forge/_generated/packageUpgradeRegistry.ts +2 -2
- package/src/forge/_generated/permissionMatrix.json +2 -2
- package/src/forge/_generated/permissionMatrix.ts +3 -3
- package/src/forge/_generated/policyRegistry.json +2 -2
- package/src/forge/_generated/policyRegistry.ts +3 -3
- package/src/forge/_generated/queryRegistry.json +2 -2
- package/src/forge/_generated/queryRegistry.ts +3 -3
- package/src/forge/_generated/react.d.ts +1 -1
- package/src/forge/_generated/react.ts +1 -1
- package/src/forge/_generated/reactManifest.json +2 -2
- package/src/forge/_generated/reactManifest.ts +3 -3
- package/src/forge/_generated/releaseManifest.json +2 -2
- package/src/forge/_generated/releaseManifest.ts +3 -3
- package/src/forge/_generated/rlsPolicies.json +1 -1
- package/src/forge/_generated/rlsPolicies.sql +1 -1
- package/src/forge/_generated/rlsPolicies.ts +1 -1
- package/src/forge/_generated/runtimeGraph.json +2 -2
- package/src/forge/_generated/runtimeGraph.ts +3 -3
- package/src/forge/_generated/runtimeMatrix.json +1 -1
- package/src/forge/_generated/runtimeMatrix.ts +1 -1
- package/src/forge/_generated/runtimeRegistry.ts +1 -1
- package/src/forge/_generated/runtimeRules.md +1 -1
- package/src/forge/_generated/secretRegistry.json +1 -1
- package/src/forge/_generated/secretRegistry.ts +1 -1
- package/src/forge/_generated/secretsContext.ts +1 -1
- package/src/forge/_generated/serverApi.ts +2 -1
- package/src/forge/_generated/sourceMapManifest.json +2 -2
- package/src/forge/_generated/sourceMapManifest.ts +2 -2
- package/src/forge/_generated/sqlPlan.json +1 -1
- package/src/forge/_generated/sqlPlan.ts +1 -1
- package/src/forge/_generated/subscriptionManifest.json +2 -2
- package/src/forge/_generated/subscriptionManifest.ts +3 -3
- package/src/forge/_generated/symbolicationManifest.json +2 -2
- package/src/forge/_generated/symbolicationManifest.ts +2 -2
- package/src/forge/_generated/telemetryRegistry.json +2 -2
- package/src/forge/_generated/telemetryRegistry.ts +3 -3
- package/src/forge/_generated/telemetrySinks.json +2 -2
- package/src/forge/_generated/telemetrySinks.ts +2 -2
- package/src/forge/_generated/tenantScope.json +2 -2
- package/src/forge/_generated/tenantScope.ts +3 -3
- package/src/forge/_generated/testGraph.json +2 -2
- package/src/forge/_generated/testGraph.ts +57 -3
- package/src/forge/_generated/testPlanRegistry.json +2 -2
- package/src/forge/_generated/testPlanRegistry.ts +2 -2
- package/src/forge/_generated/uiRoutes.json +1 -1
- package/src/forge/_generated/uiRoutes.ts +1 -1
- package/src/forge/_generated/uiScenarios.json +1 -1
- package/src/forge/_generated/uiScenarios.ts +1 -1
- package/src/forge/_generated/uiTestManifest.json +2 -2
- package/src/forge/_generated/uiTestManifest.ts +2 -2
- package/src/forge/_generated/workflowRegistry.json +2 -2
- package/src/forge/_generated/workflowRegistry.ts +3 -3
- package/src/forge/_generated/workflowSubscriptions.json +2 -2
- package/src/forge/_generated/workflowSubscriptions.ts +3 -3
- package/src/forge/bench.ts +248 -0
- package/src/forge/cli/ai.ts +16 -1
- package/src/forge/cli/build.ts +1 -1
- package/src/forge/cli/commands.ts +118 -0
- package/src/forge/cli/main.ts +3 -1
- package/src/forge/cli/parse.ts +84 -0
- package/src/forge/cli/run.ts +41 -0
- package/src/forge/cli/verify.ts +201 -24
- package/src/forge/compiler/agent-contract/build.ts +121 -7
- package/src/forge/compiler/agent-contract/types.ts +30 -1
- package/src/forge/compiler/api-surface/build.ts +47 -0
- package/src/forge/compiler/app-graph/build.ts +33 -5
- package/src/forge/compiler/app-graph/module-graph.ts +73 -78
- package/src/forge/compiler/app-graph/parser.ts +24 -24
- package/src/forge/compiler/app-graph/profile.ts +26 -0
- package/src/forge/compiler/classifier/capabilities.ts +3 -2
- package/src/forge/compiler/classifier/classify.ts +32 -8
- package/src/forge/compiler/classifier/secrets.ts +3 -2
- package/src/forge/compiler/classifier/signals.ts +91 -1
- package/src/forge/compiler/client-sdk/build-manifest.ts +4 -0
- package/src/forge/compiler/client-sdk/render-client.ts +105 -0
- package/src/forge/compiler/diagnostics/codes.ts +12 -0
- package/src/forge/compiler/external-manifest/registry.ts +204 -0
- package/src/forge/compiler/external-manifest/types.ts +89 -0
- package/src/forge/compiler/external-manifest/validate.ts +335 -0
- package/src/forge/compiler/orchestrator/plan-profile.ts +23 -0
- package/src/forge/compiler/orchestrator/plan.ts +52 -11
- package/src/forge/compiler/orchestrator/profile.ts +65 -0
- package/src/forge/compiler/orchestrator/run.ts +97 -31
- package/src/forge/compiler/orchestrator/serialize.ts +13 -6
- package/src/forge/compiler/policy-registry/build.ts +44 -1
- package/src/forge/compiler/test-graph/build.ts +11 -3
- package/src/forge/compiler/types/cli.ts +3 -0
- package/src/forge/dev/server.ts +68 -0
- package/src/forge/runtime/external/bridge.ts +553 -0
- package/src/forge/version.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=5f5fc13ec652c3a010599d8cddab945e0ad11c360bd91b21a90494b0aa0ed4d5
|
|
2
2
|
export const agentContract = {
|
|
3
3
|
"actions": [],
|
|
4
4
|
"ai": {
|
|
@@ -53,6 +53,8 @@ export const agentContract = {
|
|
|
53
53
|
],
|
|
54
54
|
"transport": {
|
|
55
55
|
"commands": "POST /commands/:name",
|
|
56
|
+
"externalCommands": "POST /external/:service/commands/:name",
|
|
57
|
+
"externalQueries": "POST /external/:service/queries/:name",
|
|
56
58
|
"liveQueries": "GET /live/:name",
|
|
57
59
|
"queries": "POST /queries/:name"
|
|
58
60
|
}
|
|
@@ -6948,6 +6950,7 @@ export const agentContract = {
|
|
|
6948
6950
|
],
|
|
6949
6951
|
"selfHost": true
|
|
6950
6952
|
},
|
|
6953
|
+
"externalServices": [],
|
|
6951
6954
|
"frontend": {
|
|
6952
6955
|
"bridgeFiles": [],
|
|
6953
6956
|
"clientBindings": [],
|
|
@@ -6976,7 +6979,7 @@ export const agentContract = {
|
|
|
6976
6979
|
}
|
|
6977
6980
|
}
|
|
6978
6981
|
},
|
|
6979
|
-
"generatorVersion": "0.1.0-alpha.
|
|
6982
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
6980
6983
|
"integrations": [
|
|
6981
6984
|
{
|
|
6982
6985
|
"alias": "ai-gateway",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=b7a94d564a961fdda392055d6f091aa61e7e6d9da2fb04f4f508803d75b3f1f3
|
|
2
2
|
# Agent Quickstart
|
|
3
3
|
|
|
4
4
|
Run:
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"agents":[],"autoTools":[],"explicitTools":[],"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=28e672c1c5d1bac97ce888c5e333786efa111d665f46bf3f44804ee396e7a1f5
|
|
2
|
+
{"agents":[],"autoTools":[],"explicitTools":[],"generatorVersion":"0.1.0-alpha.9","project":{"name":"forgeos","type":"forgeos-app"},"schemaVersion":"0.1.0"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=0e1a5df20243e64c3535e1601214f8306f67a4b56ddd47b71be1a1c5a09cb3a0
|
|
2
2
|
# Agent Tools
|
|
3
3
|
|
|
4
4
|
Project: forgeos
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=a9f04ab5fb8c65fd73879b0f34e1100844f01afe49ef47ba43e65c21927c8ef9
|
|
2
2
|
export const agentTools = {
|
|
3
3
|
"agents": [],
|
|
4
4
|
"autoTools": [],
|
|
5
5
|
"explicitTools": [],
|
|
6
|
-
"generatorVersion": "0.1.0-alpha.
|
|
6
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
7
7
|
"project": {
|
|
8
8
|
"name": "forgeos",
|
|
9
9
|
"type": "forgeos-app"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=080be6d83e86fc0b867b41cf138f09387a3265be3c2b382692aafe3cecba0b2d
|
|
2
2
|
export type ForgeAiProvider = "openai" | "anthropic" | "gateway";
|
|
3
3
|
|
|
4
4
|
export type ForgeFlexibleSchema<T> = unknown & {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=745dfcf4fc74238ee14d45f3ed7ce7a831bc30980918f094d4b2731ddb540a36
|
|
2
2
|
{"models":[{"inputCostPer1kTokensUsd":0.0008,"model":"claude-3-5-haiku-20241022","outputCostPer1kTokensUsd":0.004,"provider":"anthropic"},{"inputCostPer1kTokensUsd":0.003,"model":"claude-3-5-sonnet-20241022","outputCostPer1kTokensUsd":0.015,"provider":"anthropic"},{"model":"claude-sonnet-4.5","provider":"anthropic"},{"model":"anthropic/claude-sonnet-4.5","provider":"gateway"},{"inputCostPer1kTokensUsd":0.0025,"model":"openai/gpt-4o","outputCostPer1kTokensUsd":0.01,"provider":"gateway"},{"model":"openai/gpt-5.4","provider":"gateway"},{"inputCostPer1kTokensUsd":0.0025,"model":"gpt-4o","outputCostPer1kTokensUsd":0.01,"provider":"openai"},{"inputCostPer1kTokensUsd":0.00015,"model":"gpt-4o-mini","outputCostPer1kTokensUsd":0.0006,"provider":"openai"},{"model":"gpt-5.4","provider":"openai"}]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=540a13e48caff6d5d20bc6f73964ce6c9801635a85ba7104896092026525c29a
|
|
2
2
|
export const aiModels = {
|
|
3
3
|
"models": [
|
|
4
4
|
{
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=ac01d993b0647b5f91ca81847839eb087b0c65379cae567d3efcc8e427661801
|
|
2
2
|
{"providers":[{"id":"anthropic","integration":"ai-provider-anthropic","packageName":"@ai-sdk/anthropic","secretName":"ANTHROPIC_API_KEY"},{"id":"gateway","integration":"ai-gateway","packageName":"ai","secretName":"AI_GATEWAY_API_KEY"},{"id":"openai","integration":"ai-provider-openai","packageName":"@ai-sdk/openai","secretName":"OPENAI_API_KEY"}]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=f64ed237a464321c0b04236ca0f6eba798e18892ac6eb30f02fbaac1bcedb1e7
|
|
2
2
|
export const aiProviders = {
|
|
3
3
|
"providers": [
|
|
4
4
|
{
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"agents":[],"analyzerVersion":"1.1.0","diagnostics":[],"generations":[],"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=91dafb11c4451021b240a82ca3b6b736febd0cb2a3091ac4952600cc80e3bd9c
|
|
2
|
+
{"agents":[],"analyzerVersion":"1.1.0","diagnostics":[],"generations":[],"generatorVersion":"0.1.0-alpha.9","inputHash":"93b2b6a3750d834204174e2eaa778d4c150b23858b7491de15e270b8fbc64f59","providers":[{"id":"anthropic","integration":"ai-provider-anthropic","packageName":"@ai-sdk/anthropic","secretName":"ANTHROPIC_API_KEY"},{"id":"gateway","integration":"ai-gateway","packageName":"ai","secretName":"AI_GATEWAY_API_KEY"},{"id":"openai","integration":"ai-provider-openai","packageName":"@ai-sdk/openai","secretName":"OPENAI_API_KEY"}],"schemaVersion":"1","tools":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=9ff90b9b387e3e9654f4bc2318b21d5e6ccd7800ecfe6f2671db04db52b6cfaa
|
|
2
2
|
export const aiRegistry = {
|
|
3
3
|
"agents": [],
|
|
4
4
|
"analyzerVersion": "1.1.0",
|
|
5
5
|
"diagnostics": [],
|
|
6
6
|
"generations": [],
|
|
7
|
-
"generatorVersion": "0.1.0-alpha.
|
|
8
|
-
"inputHash": "
|
|
7
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
8
|
+
"inputHash": "93b2b6a3750d834204174e2eaa778d4c150b23858b7491de15e270b8fbc64f59",
|
|
9
9
|
"providers": [
|
|
10
10
|
{
|
|
11
11
|
"id": "anthropic",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"actions":{},"commands":{},"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=0124fe2f406a2b9d7ffd0a9c10f2c72d56960f9441023cdebf38bb80c45dd814
|
|
2
|
+
{"actions":{},"commands":{},"external":{"commands":{},"queries":{},"services":{}},"generatorVersion":"0.1.0-alpha.9","inputHash":"3526c7789c1c2477e94accc0bbff5c11143f92c3601890785e4ba13d8a8b5d12","liveQueries":{},"queries":{},"schemaVersion":"1.0.0","workflows":{}}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=27d3a4a014087190b216b9bec68a5b3fe79e6856c4f15a863447472e68f919bd
|
|
2
2
|
export const api = {
|
|
3
3
|
"queries": {},
|
|
4
4
|
"commands": {},
|
|
5
5
|
"liveQueries": {},
|
|
6
6
|
"actions": {},
|
|
7
|
-
"workflows": {}
|
|
7
|
+
"workflows": {},
|
|
8
|
+
"external": {
|
|
9
|
+
"services": {},
|
|
10
|
+
"commands": {},
|
|
11
|
+
"queries": {}
|
|
12
|
+
}
|
|
8
13
|
} as const;
|