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=53abf93e3b82e98f1dad118f3dc94ecffcc2a39bc531ba5f7acd4f8e78c296e2
|
|
2
2
|
# App Map
|
|
3
3
|
|
|
4
4
|
## Data
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"artifacts":[],"diagnostics":[],"releaseId":"forgeos@0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=fdaeef45a250947455994bd89d8ddc3afc75f4713645206815535c377828c5b2
|
|
2
|
+
{"artifacts":[],"diagnostics":[],"releaseId":"forgeos@0.1.0-alpha.9+unknown","schemaVersion":"0.1.0"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=ab6868232b5248df7ab5e760dd70e94e14f2c23ba47565cc915c666d5033a82a
|
|
2
2
|
export const artifactManifest = {
|
|
3
3
|
"artifacts": [],
|
|
4
4
|
"diagnostics": [],
|
|
5
|
-
"releaseId": "forgeos@0.1.0-alpha.
|
|
5
|
+
"releaseId": "forgeos@0.1.0-alpha.9+unknown",
|
|
6
6
|
"schemaVersion": "0.1.0"
|
|
7
7
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=c9bda2f6e9efc218ecd5cf8504fc1115b75c98927021cd1a6a48b49c7df32798
|
|
2
2
|
{"claims":{"email":"email","name":"name","permissions":"permissions","role":"role","roles":"roles","tenantId":"tenant_id","userId":"sub"},"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=de95cece618768716693e2af73b236224507426781ce72787dfd87ce4bf286c2
|
|
2
2
|
export const authClaims = {
|
|
3
3
|
"claims": {
|
|
4
4
|
"email": "email",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=7e85a943f955729dbee32461491b254b819595d84ce79d8e56bc522066654bba
|
|
2
2
|
{"algorithmsEnv":"FORGE_AUTH_ALGORITHMS","audienceEnv":"FORGE_AUTH_AUDIENCE","defaultMode":"dev-headers","issuerEnv":"FORGE_AUTH_ISSUER","jwksUriEnv":"FORGE_AUTH_JWKS_URI","modeEnv":"FORGE_AUTH_MODE","modes":["dev-headers","jwt","oidc","disabled"],"requiresTenant":false,"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=ffd5e95a6107ad58380a0a171f1602594eca9c5bef9feb12f9d4568013e3e9d2
|
|
2
2
|
export const authConfig = {
|
|
3
3
|
"algorithmsEnv": "FORGE_AUTH_ALGORITHMS",
|
|
4
4
|
"audienceEnv": "FORGE_AUTH_AUDIENCE",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=cf170e035d456c3ac698211e5b5a5b65a5743332654a8d5987281c050002cf99
|
|
2
2
|
export type AuthContext =
|
|
3
3
|
| {
|
|
4
4
|
kind: "user";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=0b60f773fa78808792114ca707760eaf310233136c684ee57e1df018a24f8d4c
|
|
2
2
|
{"algorithmsEnv":"FORGE_AUTH_ALGORITHMS","audienceEnv":"FORGE_AUTH_AUDIENCE","claims":{"email":"email","name":"name","permissions":"permissions","role":"role","roles":"roles","tenantId":"tenant_id","userId":"sub"},"defaultMode":"dev-headers","issuerEnv":"FORGE_AUTH_ISSUER","jwksUriEnv":"FORGE_AUTH_JWKS_URI","modes":["dev-headers","jwt","oidc","disabled"],"requiresTenant":false,"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=737febf357ddca0e97368d301087ceced8b4223b213fde817240434825a77b1e
|
|
2
2
|
export const authRegistry = {
|
|
3
3
|
"algorithmsEnv": "FORGE_AUTH_ALGORITHMS",
|
|
4
4
|
"audienceEnv": "FORGE_AUTH_AUDIENCE",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"generatedHash":"
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=3b2bfa2da677704c4c60b73e5eadb6a394eeb204fc0b7e0d963b99c42efc2b5f
|
|
2
|
+
{"generatedHash":"f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36","gitSha":"unknown","packageName":"forgeos","packageVersion":"0.1.0-alpha.9","releaseId":"forgeos@0.1.0-alpha.9+unknown","schemaVersion":"0.1.0"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=4e4f528f6c24fe589e0ebc583207c753bc8f35a028f25f71e23f2998f71928a4
|
|
2
2
|
export const buildInfo = {
|
|
3
|
-
"generatedHash": "
|
|
3
|
+
"generatedHash": "f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36",
|
|
4
4
|
"gitSha": "unknown",
|
|
5
5
|
"packageName": "forgeos",
|
|
6
|
-
"packageVersion": "0.1.0-alpha.
|
|
7
|
-
"releaseId": "forgeos@0.1.0-alpha.
|
|
6
|
+
"packageVersion": "0.1.0-alpha.9",
|
|
7
|
+
"releaseId": "forgeos@0.1.0-alpha.9+unknown",
|
|
8
8
|
"schemaVersion": "0.1.0"
|
|
9
9
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"diagnostics":[],"entries":[],"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=caa7dbae914e526b51be0ca2711d4d657da39265bbf109cdccdcdecd8a8e1b60
|
|
2
|
+
{"diagnostics":[],"entries":[],"generatorVersion":"0.1.0-alpha.9","project":{"name":"forgeos","type":"forgeos-app"},"schemaVersion":"0.1.0","summary":{"backendOnly":0,"covered":0,"frontendOnly":0,"warnings":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=b43b8f016935ebd1e3e8eb40b01ae80c052ab5907ece3edfca511372c7f0bd60
|
|
2
2
|
# Capability Map
|
|
3
3
|
|
|
4
4
|
Project: forgeos
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=75079d90a4b0baa1d2ba06285bf2d218b5d222ca433bf8441e7c5c842ec04650
|
|
2
2
|
export const capabilityMap = {
|
|
3
3
|
"diagnostics": [],
|
|
4
4
|
"entries": [],
|
|
5
|
-
"generatorVersion": "0.1.0-alpha.
|
|
5
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
6
6
|
"project": {
|
|
7
7
|
"name": "forgeos",
|
|
8
8
|
"type": "forgeos-app"
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=beb8a95a58b094f5f4f5407dc18f0e22f9f88c30747976a374dacea44feef3f2
|
|
2
2
|
import { api } from "./api.ts";
|
|
3
3
|
import type {
|
|
4
4
|
ForgeAuthProvider,
|
|
5
5
|
ForgeClient,
|
|
6
6
|
ForgeClientConfig,
|
|
7
|
+
ExternalCommandRef,
|
|
8
|
+
ExternalQueryRef,
|
|
7
9
|
LiveQueryOptions,
|
|
8
10
|
LiveSnapshot,
|
|
9
11
|
} from "./clientTypes.ts";
|
|
@@ -19,6 +21,11 @@ export type {
|
|
|
19
21
|
QueryName,
|
|
20
22
|
CommandName,
|
|
21
23
|
LiveQueryName,
|
|
24
|
+
ExternalCommandName,
|
|
25
|
+
ExternalQueryName,
|
|
26
|
+
ExternalRuntimeRefObject,
|
|
27
|
+
ExternalCommandRef,
|
|
28
|
+
ExternalQueryRef,
|
|
22
29
|
ForgeResolvedAuth,
|
|
23
30
|
LiveQueryOptions,
|
|
24
31
|
LiveSnapshot,
|
|
@@ -96,6 +103,16 @@ function parseJsonPayload(body: unknown): {
|
|
|
96
103
|
};
|
|
97
104
|
}
|
|
98
105
|
|
|
106
|
+
function normalizeExternalRef(
|
|
107
|
+
ref: ExternalCommandRef | ExternalQueryRef,
|
|
108
|
+
): { service: string; name: string } {
|
|
109
|
+
if (typeof ref === "string") {
|
|
110
|
+
const [service, ...entryParts] = ref.split(".");
|
|
111
|
+
return { service: service ?? "", name: entryParts.join(".") };
|
|
112
|
+
}
|
|
113
|
+
return { service: ref.service, name: ref.name };
|
|
114
|
+
}
|
|
115
|
+
|
|
99
116
|
class ForgeHttpClient implements ForgeClient {
|
|
100
117
|
lastTraceId?: string;
|
|
101
118
|
|
|
@@ -109,6 +126,14 @@ class ForgeHttpClient implements ForgeClient {
|
|
|
109
126
|
return this.invoke("commands", name, args);
|
|
110
127
|
}
|
|
111
128
|
|
|
129
|
+
externalQuery(name: ExternalQueryRef, args: unknown): Promise<unknown> {
|
|
130
|
+
return this.invokeExternal("queries", name, args);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
externalCommand(name: ExternalCommandRef, args: unknown): Promise<unknown> {
|
|
134
|
+
return this.invokeExternal("commands", name, args);
|
|
135
|
+
}
|
|
136
|
+
|
|
112
137
|
liveQuery(
|
|
113
138
|
name: string,
|
|
114
139
|
args: unknown,
|
|
@@ -185,6 +210,68 @@ class ForgeHttpClient implements ForgeClient {
|
|
|
185
210
|
return payload.result;
|
|
186
211
|
}
|
|
187
212
|
|
|
213
|
+
private async invokeExternal(
|
|
214
|
+
kind: "queries" | "commands",
|
|
215
|
+
name: ExternalCommandRef | ExternalQueryRef,
|
|
216
|
+
args: unknown,
|
|
217
|
+
): Promise<unknown> {
|
|
218
|
+
const normalized = normalizeExternalRef(name);
|
|
219
|
+
const serviceName = normalized.service;
|
|
220
|
+
const entryName = normalized.name;
|
|
221
|
+
if (!serviceName || !entryName) {
|
|
222
|
+
throw new ForgeError(`External runtime name must be service.entry`, {
|
|
223
|
+
code: "FORGE_EXTERNAL_RUNTIME_NOT_FOUND",
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
const baseUrl = this.config.url.replace(/\/$/, "");
|
|
227
|
+
const url = `${baseUrl}/external/${encodeURIComponent(serviceName)}/${kind}/${encodeURIComponent(entryName)}`;
|
|
228
|
+
return this.invokeUrl(url, args);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
private async invokeUrl(url: string, args: unknown): Promise<unknown> {
|
|
232
|
+
const authHeaders = await resolveAuthHeaders(this.config.auth);
|
|
233
|
+
|
|
234
|
+
const response = await fetch(url, {
|
|
235
|
+
method: "POST",
|
|
236
|
+
headers: {
|
|
237
|
+
"Content-Type": "application/json",
|
|
238
|
+
...authHeaders,
|
|
239
|
+
},
|
|
240
|
+
body: JSON.stringify({ args }),
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
let body: unknown;
|
|
244
|
+
try {
|
|
245
|
+
body = await response.json();
|
|
246
|
+
} catch {
|
|
247
|
+
throw new ForgeError(`HTTP ${response.status}`, {
|
|
248
|
+
code: "FORGE_HTTP_ERROR",
|
|
249
|
+
status: response.status,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const payload = parseJsonPayload(body);
|
|
254
|
+
this.lastTraceId = payload.traceId;
|
|
255
|
+
|
|
256
|
+
if (!response.ok || payload.ok === false) {
|
|
257
|
+
const diagnostic = payload.diagnostics?.find((entry) => entry.code);
|
|
258
|
+
const code =
|
|
259
|
+
payload.error?.code ?? diagnostic?.code ?? "FORGE_REQUEST_FAILED";
|
|
260
|
+
const message =
|
|
261
|
+
payload.error?.message ??
|
|
262
|
+
diagnostic?.message ??
|
|
263
|
+
`Request failed with status ${response.status}`;
|
|
264
|
+
throw new ForgeError(message, {
|
|
265
|
+
code,
|
|
266
|
+
traceId: payload.traceId,
|
|
267
|
+
status: response.status,
|
|
268
|
+
details: payload.error?.details ?? payload.diagnostics,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return payload.result;
|
|
273
|
+
}
|
|
274
|
+
|
|
188
275
|
private async openLiveQuery(
|
|
189
276
|
name: string,
|
|
190
277
|
args: unknown,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=f76d5aedd5c0f5bd80995094379b6dce0fbf0f8873c038119ca2251a44e4113d
|
|
2
2
|
import { api } from "./api.ts";
|
|
3
3
|
|
|
4
4
|
/** Client-side typed API surface (queries, commands; no server adapters). */
|
|
@@ -6,4 +6,5 @@ export const clientApi = {
|
|
|
6
6
|
queries: api.queries,
|
|
7
7
|
commands: api.commands,
|
|
8
8
|
liveQueries: api.liveQueries,
|
|
9
|
+
external: api.external,
|
|
9
10
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"commands":[],"excluded":{"actions":[],"serverAdapters":["ai.anthropic.server.ts","ai.gateway.server.ts","ai.openai.server.ts"],"serverPackages":["@ai-sdk/anthropic","@ai-sdk/openai","ai"],"workflows":[]},"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=84241ef0c937097931b8f16bac39135d2e3ec0fdce13f2faec602c2d738fa988
|
|
2
|
+
{"commands":[],"excluded":{"actions":[],"serverAdapters":["ai.anthropic.server.ts","ai.gateway.server.ts","ai.openai.server.ts"],"serverPackages":["@ai-sdk/anthropic","@ai-sdk/openai","ai"],"workflows":[]},"generatorVersion":"0.1.0-alpha.9","inputHash":"6cc5c31ceafa2db21dca968b5a8551984929d30a5e456947c7655a5965dfbed3","liveQueries":[],"queries":[],"react":{"entrypoint":"src/forge/_generated/react.ts","hooks":["ForgeProvider","useForgeClient","useAuth","useQuery","useCommand","useLiveQuery"]},"schemaVersion":"1.0.0","transport":{"commands":"POST /commands/:name","externalCommands":"POST /external/:service/commands/:name","externalQueries":"POST /external/:service/queries/:name","liveQueries":"GET /live/:name","queries":"POST /queries/:name"}}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=b8935ae04c9e7efafc731f68db266d0adc62feea82f758ae6abdc0644b4ea0ff
|
|
2
2
|
export const clientManifest = {
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
|
-
"generatorVersion": "0.1.0-alpha.
|
|
5
|
-
"inputHash": "
|
|
4
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
5
|
+
"inputHash": "6cc5c31ceafa2db21dca968b5a8551984929d30a5e456947c7655a5965dfbed3",
|
|
6
6
|
"queries": [],
|
|
7
7
|
"commands": [],
|
|
8
8
|
"liveQueries": [],
|
|
9
9
|
"transport": {
|
|
10
10
|
"queries": "POST /queries/:name",
|
|
11
11
|
"commands": "POST /commands/:name",
|
|
12
|
-
"liveQueries": "GET /live/:name"
|
|
12
|
+
"liveQueries": "GET /live/:name",
|
|
13
|
+
"externalQueries": "POST /external/:service/queries/:name",
|
|
14
|
+
"externalCommands": "POST /external/:service/commands/:name"
|
|
13
15
|
},
|
|
14
16
|
"react": {
|
|
15
17
|
"entrypoint": "src/forge/_generated/react.ts",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=b893b27f895193111546b90974f4ad1540aef6ede0d9ab3a11972a1dce2519e2
|
|
2
2
|
export type ForgeStaticAuth = {
|
|
3
3
|
userId?: string;
|
|
4
4
|
tenantId?: string;
|
|
@@ -50,6 +50,22 @@ export class ForgeError extends Error {
|
|
|
50
50
|
export type QueryName = keyof typeof import("./api.ts").api.queries;
|
|
51
51
|
export type CommandName = keyof typeof import("./api.ts").api.commands;
|
|
52
52
|
export type LiveQueryName = keyof typeof import("./api.ts").api.liveQueries;
|
|
53
|
+
export type ExternalCommandName = string;
|
|
54
|
+
export type ExternalQueryName = string;
|
|
55
|
+
export type ExternalRuntimeRefObject = {
|
|
56
|
+
service: string;
|
|
57
|
+
name: string;
|
|
58
|
+
kind?: "command" | "query";
|
|
59
|
+
language?: string;
|
|
60
|
+
framework?: string;
|
|
61
|
+
transport?: string;
|
|
62
|
+
};
|
|
63
|
+
export type ExternalCommandRef =
|
|
64
|
+
| ExternalCommandName
|
|
65
|
+
| ExternalRuntimeRefObject;
|
|
66
|
+
export type ExternalQueryRef =
|
|
67
|
+
| ExternalQueryName
|
|
68
|
+
| ExternalRuntimeRefObject;
|
|
53
69
|
|
|
54
70
|
export type LiveSnapshot<T> = {
|
|
55
71
|
subscriptionId: string;
|
|
@@ -68,6 +84,8 @@ export type ForgeClient = {
|
|
|
68
84
|
readonly lastTraceId?: string;
|
|
69
85
|
query<Name extends QueryName>(name: Name, args: unknown): Promise<unknown>;
|
|
70
86
|
command<Name extends CommandName>(name: Name, args: unknown): Promise<unknown>;
|
|
87
|
+
externalQuery<Name extends ExternalQueryRef>(name: Name, args: unknown): Promise<unknown>;
|
|
88
|
+
externalCommand<Name extends ExternalCommandRef>(name: Name, args: unknown): Promise<unknown>;
|
|
71
89
|
liveQuery<Name extends LiveQueryName>(
|
|
72
90
|
name: Name,
|
|
73
91
|
args: 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=48ddd915b14870e3230c517f0d28dfa3bf01e62ce885807bf4b66172c4378ad5
|
|
2
2
|
{"configs":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=c67952f1bae9aeedf0c0188f162d06dfb747b265c3c6ee7fdb1ef75782e76f3b
|
|
2
2
|
export const configRegistry = {
|
|
3
3
|
"configs": []
|
|
4
4
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"analyzerVersion":"0.1.0","generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=1ec1e81e43f2b5723c1ad6cb002a38cb0a51fa1612b478d68edd7aeda1dab923
|
|
2
|
+
{"analyzerVersion":"0.1.0","generatorVersion":"0.1.0-alpha.9","inputHash":"d32670173917f0bc753936a6605c4345a1a51a9dfd187e3171e5bff881bcef1a","schemaVersion":"1.0.0","tables":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=0797b891f6a3703d87a8e73875f852074ef840634e4ba2628de3363140336fd9
|
|
2
2
|
export const dataGraph = {
|
|
3
3
|
"analyzerVersion": "0.1.0",
|
|
4
|
-
"generatorVersion": "0.1.0-alpha.
|
|
5
|
-
"inputHash": "
|
|
4
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
5
|
+
"inputHash": "d32670173917f0bc753936a6605c4345a1a51a9dfd187e3171e5bff881bcef1a",
|
|
6
6
|
"schemaVersion": "1.0.0",
|
|
7
7
|
"tables": []
|
|
8
8
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=15ac2222f939e36b4d437bd5e54aa65ec9c2027a53825883f8a4b9e2710d65d3
|
|
2
2
|
{"tableMap":{}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=34af9d0c4498776568d3d0171658539c0a25ebe08af51c34526617eb944fe106
|
|
2
2
|
export const tableMap = {} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=2990ae1c7d12671f2204605202c9e7d982b0156793644525ae0f7df2c0e18f6e
|
|
2
2
|
{"authoritativeAdapters":["postgres"],"diagnostics":[],"nonAuthoritativeAdapters":["pglite","memory"],"provider":"postgres","schemaVersion":"0.1.0","tables":[],"tenantIsolation":"postgres-rls"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=7c04c09131fcff86b3da6eae92a195c39c0bb2c0be618f597422f7a38dda024c
|
|
2
2
|
export const dbSecurityManifest = {
|
|
3
3
|
"authoritativeAdapters": [
|
|
4
4
|
"postgres"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=ab172af9fb4ae301ead04afe571f772b22425daf1cebd6833bde50a543cbb42c
|
|
2
2
|
{"diagnostics":[],"method":"set_config","schemaVersion":"0.1.0","settings":[{"name":"forge.tenant_id","required":true,"source":"ctx.auth","transactionScoped":true},{"name":"forge.user_id","required":false,"source":"ctx.auth","transactionScoped":true},{"name":"forge.role","required":false,"source":"ctx.auth","transactionScoped":true},{"name":"forge.roles","required":false,"source":"ctx.auth","transactionScoped":true},{"name":"forge.permissions","required":false,"source":"ctx.auth","transactionScoped":true}],"transactionScoped":true}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=e54bf648fe6662c29d0d9c42922a496c64c84a75baf369274e75ff48da670d2a
|
|
2
2
|
export const dbSessionContext = {
|
|
3
3
|
"diagnostics": [],
|
|
4
4
|
"method": "set_config",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"attributes":{"deployment.environment":"local","forge.deploy_id":"local-forgeos@0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=c9534eebdcf2532178bb3fcc88eed40d3cae5585e2990057c2466c00f43ccc59
|
|
2
|
+
{"attributes":{"deployment.environment":"local","forge.deploy_id":"local-forgeos@0.1.0-alpha.9+unknown","forge.generated_hash":"f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36","forge.release_id":"forgeos@0.1.0-alpha.9+unknown","service.version":"forgeos@0.1.0-alpha.9+unknown"},"deployId":"local-forgeos@0.1.0-alpha.9+unknown","environment":"local","releaseId":"forgeos@0.1.0-alpha.9+unknown","schemaVersion":"0.1.0"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=a1fdacf7731699d2bfe45c3c1817a083210e13dad967865ee3fce3977c16d63f
|
|
2
2
|
export const deployManifest = {
|
|
3
3
|
"attributes": {
|
|
4
4
|
"deployment.environment": "local",
|
|
5
|
-
"forge.deploy_id": "local-forgeos@0.1.0-alpha.
|
|
6
|
-
"forge.generated_hash": "
|
|
7
|
-
"forge.release_id": "forgeos@0.1.0-alpha.
|
|
8
|
-
"service.version": "forgeos@0.1.0-alpha.
|
|
5
|
+
"forge.deploy_id": "local-forgeos@0.1.0-alpha.9+unknown",
|
|
6
|
+
"forge.generated_hash": "f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36",
|
|
7
|
+
"forge.release_id": "forgeos@0.1.0-alpha.9+unknown",
|
|
8
|
+
"service.version": "forgeos@0.1.0-alpha.9+unknown"
|
|
9
9
|
},
|
|
10
|
-
"deployId": "local-forgeos@0.1.0-alpha.
|
|
10
|
+
"deployId": "local-forgeos@0.1.0-alpha.9+unknown",
|
|
11
11
|
"environment": "local",
|
|
12
|
-
"releaseId": "forgeos@0.1.0-alpha.
|
|
12
|
+
"releaseId": "forgeos@0.1.0-alpha.9+unknown",
|
|
13
13
|
"schemaVersion": "0.1.0"
|
|
14
14
|
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"analyzerVersion":"0.1.0","diagnostics":[],"entries":[],"generatorVersion":"0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=861e4f1e6fc03ac5b8fe2ffe5fc2136ccb2d93599a7cb239b9dac62047298a0a
|
|
2
|
+
{"analyzerVersion":"0.1.0","diagnostics":[],"entries":[],"generatorVersion":"0.1.0-alpha.9","inputHash":"b97878bb21357f18fd0c14c6eae7d814d8d438cda27fd26969061e7c8a89c29a","routes":[{"method":"GET","path":"/","purpose":"home"},{"method":"POST","path":"/ai/agents/chat","purpose":"ai-agent-chat"},{"method":"POST","path":"/ai/agents/run","purpose":"ai-agent-run"},{"method":"GET","path":"/ai/providers","purpose":"ai-providers"},{"method":"GET","path":"/entries","purpose":"entries"},{"method":"GET","path":"/health","purpose":"health"},{"method":"GET","path":"/queries","purpose":"queries"},{"method":"GET","path":"/workflows","purpose":"workflows"},{"method":"POST","path":"/workflows/process","purpose":"workflow-process"},{"method":"GET","path":"/workflows/runs","purpose":"workflow-runs"}],"schemaVersion":"1.0.0","workflows":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=d3427b3c256de8d2306104da13f5bb08b16c447ca39861c0d688691dbb1b6100
|
|
2
2
|
export const devManifest = {
|
|
3
3
|
"analyzerVersion": "0.1.0",
|
|
4
4
|
"diagnostics": [],
|
|
5
5
|
"entries": [],
|
|
6
|
-
"generatorVersion": "0.1.0-alpha.
|
|
7
|
-
"inputHash": "
|
|
6
|
+
"generatorVersion": "0.1.0-alpha.9",
|
|
7
|
+
"inputHash": "b97878bb21357f18fd0c14c6eae7d814d8d438cda27fd26969061e7c8a89c29a",
|
|
8
8
|
"routes": [
|
|
9
9
|
{
|
|
10
10
|
"method": "GET",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=9ce97ae302f03954033b56f247fbdc2189372ad0fdd9297d929793ffc70965d9
|
|
2
2
|
{"variables":[{"integration":"ai-gateway","kind":"secret","name":"AI_GATEWAY_API_KEY","public":false,"required":true,"source":"recipe"},{"integration":"ai-provider-anthropic","kind":"secret","name":"ANTHROPIC_API_KEY","public":false,"required":true,"source":"recipe"},{"kind":"config","name":"FORGE_AUTH_ALGORITHMS","required":false,"source":"auth"},{"kind":"config","name":"FORGE_AUTH_AUDIENCE","required":false,"source":"auth"},{"kind":"config","name":"FORGE_AUTH_ISSUER","required":false,"source":"auth"},{"kind":"config","name":"FORGE_AUTH_JWKS_URI","required":false,"source":"auth"},{"kind":"config","name":"FORGE_AUTH_MODE","required":false,"source":"auth"},{"integration":"ai-provider-openai","kind":"secret","name":"OPENAI_API_KEY","public":false,"required":true,"source":"recipe"}]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=a3d1351f5a64cfe2964d5140049c55de5620e2abfb8187bbb244990852cfbbef
|
|
2
2
|
export const envSchema = {
|
|
3
3
|
"variables": [
|
|
4
4
|
{
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=ba0a471b93cddb0b5ea4b56699f84049ec20a8276c1e44efe3a003012248375c
|
|
2
|
+
{"diagnostics":[],"inputHash":"85c3c58e20a742fa7b446ed1f6f1adcc8f8b5571145599328e5c170e066a9bca","protocolVersion":"1.0","registryPath":".forge/external-manifests.json","schemaVersion":"0.1.0","services":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=7aeff47a93a78a4713ba01405a41681c466d0a0145579996e8ad71054d4d822d
|
|
2
|
+
export const externalServices = {
|
|
3
|
+
"diagnostics": [],
|
|
4
|
+
"inputHash": "85c3c58e20a742fa7b446ed1f6f1adcc8f8b5571145599328e5c170e066a9bca",
|
|
5
|
+
"protocolVersion": "1.0",
|
|
6
|
+
"registryPath": ".forge/external-manifests.json",
|
|
7
|
+
"schemaVersion": "0.1.0",
|
|
8
|
+
"services": []
|
|
9
|
+
} as const;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=c9761a223a8d510711c5e18e835a8bca78cede975c218a5f437c016a2ffc1a25
|
|
2
2
|
{"bridgeFiles":[],"clientBindings":[],"components":[],"diagnostics":[],"framework":"none","present":false,"providers":[],"routes":[],"schemaVersion":"0.1.0","webManifest":{"bridge":{"files":[],"valid":false},"env":{"apiUrl":"NEXT_PUBLIC_FORGE_URL"},"framework":"none","present":false,"scripts":{},"urls":{"api":"http://127.0.0.1:3765"}}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=8c2052b427d11b806490a59ef256bbb8e8816bc90db57525b0f68a0596e1e7c4
|
|
2
2
|
export const frontendGraph = {
|
|
3
3
|
"bridgeFiles": [],
|
|
4
4
|
"clientBindings": [],
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.9 input=f9063a03ef56a20a89f1418951bede5ab5ed87d800bb0512a0d0445309642a36 content=e032fc411a614945d1f7e2b314c9de2d08c09559b510caba67341001d4f084de
|
|
2
2
|
{"entries":[{"alias":"ai-provider-anthropic","compatible":["server","action","workflow","endpoint","test","build"],"incompatible":["shared","client","query","liveQuery","command","edge"],"packageName":"@ai-sdk/anthropic","rationale":{"action":"allowed by integration recipe","build":"allowed by integration recipe","client":"denied by integration recipe","command":"denied by integration recipe","edge":"denied by integration recipe","endpoint":"allowed by integration recipe","liveQuery":"denied by integration recipe","query":"denied by integration recipe","server":"allowed by integration recipe","shared":"denied by integration recipe","test":"allowed by integration recipe","workflow":"allowed by integration recipe"}},{"alias":"ai-provider-openai","compatible":["server","action","workflow","endpoint","test","build"],"incompatible":["shared","client","query","liveQuery","command","edge"],"packageName":"@ai-sdk/openai","rationale":{"action":"allowed by integration recipe","build":"allowed by integration recipe","client":"denied by integration recipe","command":"denied by integration recipe","edge":"denied by integration recipe","endpoint":"allowed by integration recipe","liveQuery":"denied by integration recipe","query":"denied by integration recipe","server":"allowed by integration recipe","shared":"denied by integration recipe","test":"allowed by integration recipe","workflow":"allowed by integration recipe"}},{"alias":"@changesets/changelog-github","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@changesets/changelog-github","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@changesets/cli","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@changesets/cli","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@electric-sql/pglite","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@electric-sql/pglite","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@types/bun","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@types/bun","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@types/node","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@types/node","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@types/react","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@types/react","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"@types/react-test-renderer","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"@types/react-test-renderer","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"ai-gateway","compatible":["server","action","workflow","endpoint","test","build"],"incompatible":["shared","client","query","liveQuery","command","edge"],"packageName":"ai","rationale":{"action":"allowed by integration recipe","build":"allowed by integration recipe","client":"denied by integration recipe","command":"denied by integration recipe","edge":"denied by integration recipe","endpoint":"allowed by integration recipe","liveQuery":"denied by integration recipe","query":"denied by integration recipe","server":"allowed by integration recipe","shared":"denied by integration recipe","test":"allowed by integration recipe","workflow":"allowed by integration recipe"}},{"alias":"fast-check","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"fast-check","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"jose","compatible":["client","server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","query","liveQuery","command"],"packageName":"jose","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"client may perform network egress","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"shared context requires pure code without network/fs/process","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"postgres","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"postgres","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"react","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"react","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"react-test-renderer","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"react-test-renderer","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"tree-sitter","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"tree-sitter","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"tree-sitter-typescript","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"tree-sitter-typescript","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"tsx","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"tsx","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"insufficient signals for client compatibility","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"typescript","compatible":["server","action","workflow","endpoint","edge","test","build"],"incompatible":["shared","client","query","liveQuery","command"],"packageName":"typescript","rationale":{"action":"server-side context allows IO capabilities","build":"test/build contexts allow broad compatibility","client":"node builtins/process not allowed in client","command":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","edge":"edge-compatible by heuristic","endpoint":"server-side context allows IO capabilities","liveQuery":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","query":"capability is `unknown`; cannot prove determinism (static analysis cannot prove absence of network/fs)","server":"server-side context allows IO capabilities","shared":"insufficient signals to prove shared-safe purity","test":"test/build contexts allow broad compatibility","workflow":"server-side context allows IO capabilities"}},{"alias":"zod","compatible":["shared","client","server","query","liveQuery","command","action","workflow","endpoint","edge","test","build"],"incompatible":[],"packageName":"zod","rationale":{"action":"allowed by integration recipe","build":"allowed by integration recipe","client":"allowed by integration recipe","command":"allowed by integration recipe","edge":"allowed by integration recipe","endpoint":"allowed by integration recipe","liveQuery":"allowed by integration recipe","query":"allowed by integration recipe","server":"allowed by integration recipe","shared":"allowed by integration recipe","test":"allowed by integration recipe","workflow":"allowed by integration recipe"}}],"moduleContexts":[],"schemaVersion":"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=e432d0f4305ef18d98e0d14b95def5b007ce3ac3498ac5ce46c10dd6f14b5502
|
|
2
2
|
export const importGuards = {
|
|
3
3
|
"schemaVersion": "1",
|
|
4
4
|
"entries": [
|