forgeos 0.1.0-alpha.7 → 0.1.0-alpha.71
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/skills/forge-agent-fabric/SKILL.md +178 -0
- package/.agents/skills/forge-agent-fabric/references/managed-workflows.md +95 -0
- package/.agents/skills/forge-agent-fabric/references/repository-analysis.md +102 -0
- package/.agents/skills/forge-agent-fabric/scripts/fabric.mjs +46 -0
- package/.agents/skills/forge-agent-fabric/scripts/repository.mjs +44 -0
- package/.npmignore +10 -0
- package/AGENTS.md +142 -90
- package/CHANGELOG.md +870 -9
- package/LICENSE +21 -0
- package/README.md +121 -6
- 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/adapters/java/README.md +68 -0
- package/adapters/java/pom.xml +47 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Auth.java +20 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Diagnostic.java +16 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Entry.java +38 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/EntryKind.java +16 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ErrorInfo.java +4 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Forge.java +94 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeCall.java +12 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeContext.java +11 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHandler.java +8 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHttpHandler.java +179 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeRegistry.java +121 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Json.java +14 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Manifest.java +14 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/RequestEnvelope.java +6 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/ResponseEnvelope.java +25 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Risk.java +18 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Schemas.java +36 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/Service.java +65 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/TransactionMode.java +18 -0
- package/adapters/java/src/main/java/dev/forgeos/adapter/TypedForgeHandler.java +6 -0
- package/adapters/java-spring-boot-starter/README.md +32 -0
- package/adapters/java-spring-boot-starter/pom.xml +49 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeCommand.java +22 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeExternalService.java +15 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeQuery.java +16 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeServiceBeanCondition.java +18 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringAutoConfiguration.java +16 -0
- package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringRuntime.java +104 -0
- package/adapters/java-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +1 -0
- package/bin/forge.mjs +18 -0
- package/docs/agent-fabric-programs.md +151 -0
- package/docs/agent-fabric.md +582 -0
- package/docs/architecture/agent-fabric/PORTABLE_PROJECTS_PLAN.md +136 -0
- package/docs/architecture/agent-fabric/README.md +180 -0
- package/docs/architecture/agent-fabric/REPOSITORY_MANIFEST_PLAN.md +284 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_ADR.md +81 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS.md +39 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_CORRECTIONS_EVIDENCE.md +53 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_EVIDENCE.md +49 -0
- package/docs/architecture/agent-fabric/WORKFLOW_PROGRAM_V2_PLAN.md +590 -0
- package/docs/cair-protocol.md +103 -0
- package/docs/changelog.md +1070 -0
- package/docs/forge-protocol.md +189 -0
- package/docs/repository-agent-benchmark.md +179 -0
- package/docs/repository-analysis.md +139 -0
- package/docs/repository-context-quality.md +179 -0
- package/docs/repository-runtime-observation.md +82 -0
- package/examples/agent-fabric-v2/README.md +70 -0
- package/examples/agent-fabric-v2/item-child.workflow.ts +11 -0
- package/examples/agent-fabric-v2/make-request.mjs +4 -0
- package/examples/agent-fabric-v2/map-child.workflow.ts +10 -0
- package/examples/agent-fabric-v2/migrate.workflow.ts +35 -0
- package/examples/agent-fabric-v2/registry.example.json +256 -0
- package/examples/agent-fabric-v2/run-ui-fixture.ts +48 -0
- package/examples/agent-fabric-v2/ui-audit.workflow.ts +28 -0
- package/examples/agent-fabric-v2/ui-fixture-worker.cjs +36 -0
- package/examples/agent-fabric-v2/visual-population.json +13 -0
- package/examples/agent-fabric-v2/workers/check.mjs +2 -0
- package/examples/agent-fabric-v2/workers/common.mjs +7 -0
- package/examples/agent-fabric-v2/workers/discover.mjs +2 -0
- package/examples/agent-fabric-v2/workers/migrate.mjs +4 -0
- package/examples/agent-fabric-v2/workers/review.mjs +3 -0
- package/examples/go-billing/go.mod +7 -0
- package/examples/go-billing/main.go +120 -0
- package/examples/java-billing/pom.xml +60 -0
- package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/CreateInvoiceInput.java +4 -0
- package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Invoice.java +11 -0
- package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Main.java +127 -0
- package/package.json +60 -5
- package/schemas/agent-fabric/v0.1/control-event.schema.json +281 -0
- package/schemas/forge-manifest.schema.json +389 -0
- package/scripts/field-test-forgeos.mjs +1021 -0
- package/scripts/install-agent-fabric-skill.mjs +105 -0
- package/src/forge/_generated/releaseManifest.json +1 -2
- package/src/forge/_generated/releaseManifest.ts +3 -3
- package/src/forge/agent-adapters/index.ts +1592 -125
- package/src/forge/agent-adapters/types.ts +225 -1
- package/src/forge/agent-fabric/adapter.ts +131 -0
- package/src/forge/agent-fabric/attached-snapshot.ts +55 -0
- package/src/forge/agent-fabric/attached-task-contract.ts +105 -0
- package/src/forge/agent-fabric/attached-task-service.ts +127 -0
- package/src/forge/agent-fabric/attached-task-store.ts +109 -0
- package/src/forge/agent-fabric/authority.ts +298 -0
- package/src/forge/agent-fabric/canonical.ts +135 -0
- package/src/forge/agent-fabric/codex-adversarial-review.ts +229 -0
- package/src/forge/agent-fabric/codex-sdk-worker.ts +203 -0
- package/src/forge/agent-fabric/conductor.ts +754 -0
- package/src/forge/agent-fabric/dictionary.ts +12 -0
- package/src/forge/agent-fabric/errors.ts +32 -0
- package/src/forge/agent-fabric/hardened-conductor.ts +485 -0
- package/src/forge/agent-fabric/hardened-reducer.ts +211 -0
- package/src/forge/agent-fabric/index.ts +48 -0
- package/src/forge/agent-fabric/journal.ts +116 -0
- package/src/forge/agent-fabric/local-adaptive-digest-worker.mjs +26 -0
- package/src/forge/agent-fabric/local-adaptive-harness.ts +343 -0
- package/src/forge/agent-fabric/local-adaptive-service.ts +398 -0
- package/src/forge/agent-fabric/local-adaptive-worker.ts +146 -0
- package/src/forge/agent-fabric/local-approval-window.ts +211 -0
- package/src/forge/agent-fabric/local-change-review-service.ts +374 -0
- package/src/forge/agent-fabric/local-coding-worker.ts +285 -0
- package/src/forge/agent-fabric/local-control-store.ts +239 -0
- package/src/forge/agent-fabric/local-effect-broker.ts +348 -0
- package/src/forge/agent-fabric/local-evolution-approval.ts +81 -0
- package/src/forge/agent-fabric/local-evolution-profile.ts +87 -0
- package/src/forge/agent-fabric/local-evolution-registry.ts +427 -0
- package/src/forge/agent-fabric/local-evolution-service.ts +200 -0
- package/src/forge/agent-fabric/local-intelligence.ts +281 -0
- package/src/forge/agent-fabric/local-paths.ts +18 -0
- package/src/forge/agent-fabric/local-task-contract.ts +203 -0
- package/src/forge/agent-fabric/local-task-inbox.ts +543 -0
- package/src/forge/agent-fabric/local-task-server.ts +374 -0
- package/src/forge/agent-fabric/local-task-service.ts +982 -0
- package/src/forge/agent-fabric/local-verification.ts +551 -0
- package/src/forge/agent-fabric/managed-environment.ts +205 -0
- package/src/forge/agent-fabric/managed-run-contract.ts +103 -0
- package/src/forge/agent-fabric/managed-run-service.ts +401 -0
- package/src/forge/agent-fabric/managed-run-store.ts +165 -0
- package/src/forge/agent-fabric/managed-workspace.ts +253 -0
- package/src/forge/agent-fabric/p0a.ts +104 -0
- package/src/forge/agent-fabric/p0b-model-adapter.ts +434 -0
- package/src/forge/agent-fabric/planning.ts +155 -0
- package/src/forge/agent-fabric/program-api.ts +37 -0
- package/src/forge/agent-fabric/program-contract.ts +283 -0
- package/src/forge/agent-fabric/program-dsl.ts +126 -0
- package/src/forge/agent-fabric/program-evidence.ts +22 -0
- package/src/forge/agent-fabric/program-image.ts +15 -0
- package/src/forge/agent-fabric/program-lock.ts +50 -0
- package/src/forge/agent-fabric/program-owner.ts +16 -0
- package/src/forge/agent-fabric/program-scheduler.ts +38 -0
- package/src/forge/agent-fabric/program-service.ts +793 -0
- package/src/forge/agent-fabric/program-store.ts +142 -0
- package/src/forge/agent-fabric/program-structure.ts +65 -0
- package/src/forge/agent-fabric/program-types.ts +110 -0
- package/src/forge/agent-fabric/program-view.ts +12 -0
- package/src/forge/agent-fabric/program-worker.ts +108 -0
- package/src/forge/agent-fabric/project-profile.ts +50 -0
- package/src/forge/agent-fabric/project-registry.ts +120 -0
- package/src/forge/agent-fabric/project-runtime.ts +85 -0
- package/src/forge/agent-fabric/readiness.ts +26 -0
- package/src/forge/agent-fabric/reducer.ts +863 -0
- package/src/forge/agent-fabric/repository-context.ts +83 -0
- package/src/forge/agent-fabric/resource-ledger.ts +266 -0
- package/src/forge/agent-fabric/serialized-local-adapter.ts +60 -0
- package/src/forge/agent-fabric/types.ts +424 -0
- package/src/forge/agent-fabric/validation.ts +500 -0
- package/src/forge/agent-fabric/workflow-engine.ts +218 -0
- package/src/forge/agent-fabric/workflow-task-actions.ts +104 -0
- package/src/forge/agent-fabric/workflow-templates.ts +11 -0
- package/src/forge/agent-memory/bridge.ts +1728 -0
- package/src/forge/agent-memory/context-pack.ts +284 -0
- package/src/forge/agent-memory/hook-runner.ts +331 -0
- package/src/forge/agent-memory/mcp.ts +597 -0
- package/src/forge/agent-memory/normalize.ts +498 -0
- package/src/forge/agent-memory/redaction.ts +103 -0
- package/src/forge/agent-memory/sources/claude-code.ts +51 -0
- package/src/forge/agent-memory/sources/codex-hook-runner.mjs +343 -0
- package/src/forge/agent-memory/sources/codex.ts +161 -0
- package/src/forge/agent-memory/sources/cursor.ts +35 -0
- package/src/forge/agent-memory/types.ts +215 -0
- package/src/forge/bench.ts +248 -0
- package/src/forge/brownfield-import/index.ts +896 -0
- package/src/forge/brownfield-import/types.ts +127 -0
- package/src/forge/cair/action-journal.ts +61 -0
- package/src/forge/cair/action-parser.ts +314 -0
- package/src/forge/cair/action-validator.ts +40 -0
- package/src/forge/cair/actions.ts +1818 -0
- package/src/forge/cair/format.ts +77 -0
- package/src/forge/cair/index.ts +118 -0
- package/src/forge/cair/query.ts +478 -0
- package/src/forge/cair/snapshot.ts +315 -0
- package/src/forge/cair/types.ts +255 -0
- package/src/forge/cli/adaptive.ts +51 -0
- package/src/forge/cli/ai.ts +16 -1
- package/src/forge/cli/auth.ts +459 -15
- package/src/forge/cli/authmd.ts +441 -0
- package/src/forge/cli/baseline.ts +112 -0
- package/src/forge/cli/build.ts +20 -4
- package/src/forge/cli/changed.ts +418 -0
- package/src/forge/cli/codex-app-server.ts +877 -0
- package/src/forge/cli/commands.ts +1859 -20
- package/src/forge/cli/db.ts +209 -2
- package/src/forge/cli/deploy.ts +1339 -0
- package/src/forge/cli/deps.ts +150 -23
- package/src/forge/cli/dev.ts +1137 -53
- package/src/forge/cli/docs.ts +265 -0
- package/src/forge/cli/doctor.ts +297 -0
- package/src/forge/cli/env-placeholders.ts +62 -0
- package/src/forge/cli/evolution.ts +40 -0
- package/src/forge/cli/fabric.ts +253 -0
- package/src/forge/cli/field-test.ts +568 -0
- package/src/forge/cli/golden-path.ts +487 -0
- package/src/forge/cli/handoff.ts +336 -0
- package/src/forge/cli/index.ts +1 -0
- package/src/forge/cli/last-run.ts +84 -0
- package/src/forge/cli/main.ts +196 -3
- package/src/forge/cli/new.ts +169 -17
- package/src/forge/cli/next-actions.ts +23 -0
- package/src/forge/cli/output.ts +398 -6
- package/src/forge/cli/parse.ts +1377 -38
- package/src/forge/cli/progress.ts +51 -0
- package/src/forge/cli/query.ts +32 -0
- package/src/forge/cli/release.ts +35 -11
- package/src/forge/cli/repository.ts +151 -0
- package/src/forge/cli/run.ts +42 -0
- package/src/forge/cli/secrets.ts +137 -1
- package/src/forge/cli/seed.ts +581 -0
- package/src/forge/cli/self-host.ts +56 -14
- package/src/forge/cli/studio.ts +2282 -0
- package/src/forge/cli/verify.ts +1458 -32
- package/src/forge/cli/windows.ts +23 -0
- package/src/forge/cli/workos.ts +3509 -0
- package/src/forge/compiler/agent-contract/build.ts +728 -64
- package/src/forge/compiler/agent-contract/types.ts +45 -2
- package/src/forge/compiler/ai-registry/parse.ts +71 -2
- package/src/forge/compiler/api-surface/build.ts +47 -0
- package/src/forge/compiler/app-graph/build.ts +112 -9
- package/src/forge/compiler/app-graph/extract.ts +107 -0
- 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/app-graph/tsconfig-hash.ts +41 -4
- package/src/forge/compiler/app-graph/versions.ts +1 -1
- 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 +59 -0
- package/src/forge/compiler/client-sdk/render-client.ts +295 -13
- package/src/forge/compiler/data-graph/build.ts +29 -1
- package/src/forge/compiler/data-graph/parse.ts +20 -4
- package/src/forge/compiler/data-graph/sql/ddl.ts +144 -31
- package/src/forge/compiler/data-graph/sql/serialize.ts +4 -0
- package/src/forge/compiler/data-graph/sql/types.ts +1 -0
- package/src/forge/compiler/diagnostics/codes.ts +38 -0
- package/src/forge/compiler/diagnostics/create.ts +28 -2
- package/src/forge/compiler/diagnostics/index.ts +2 -0
- package/src/forge/compiler/emitter/barrel.ts +3 -0
- package/src/forge/compiler/emitter/render.ts +9 -0
- package/src/forge/compiler/external-manifest/registry.ts +217 -0
- package/src/forge/compiler/external-manifest/types.ts +91 -0
- package/src/forge/compiler/external-manifest/validate.ts +373 -0
- package/src/forge/compiler/frontend-graph/build.ts +142 -14
- package/src/forge/compiler/integration/add.ts +991 -33
- package/src/forge/compiler/integration/plan.ts +43 -12
- package/src/forge/compiler/integration/render.ts +29 -0
- package/src/forge/compiler/integration/snapshot.ts +2 -0
- package/src/forge/compiler/integration/templates/convex.ts +70 -0
- package/src/forge/compiler/integration/templates/index.ts +1 -0
- package/src/forge/compiler/integration/templates/render.ts +38 -0
- package/src/forge/compiler/integration/templates/types.ts +3 -0
- package/src/forge/compiler/integration/templates/workos.ts +1439 -0
- package/src/forge/compiler/make-registry/build.ts +8 -9
- package/src/forge/compiler/orchestrator/fast-check.ts +4 -0
- package/src/forge/compiler/orchestrator/generate-lock.ts +14 -3
- package/src/forge/compiler/orchestrator/manifest.ts +1 -1
- package/src/forge/compiler/orchestrator/plan-profile.ts +23 -0
- package/src/forge/compiler/orchestrator/plan.ts +249 -10
- package/src/forge/compiler/orchestrator/profile.ts +65 -0
- package/src/forge/compiler/orchestrator/run.ts +101 -33
- package/src/forge/compiler/orchestrator/serialize.ts +33 -8
- package/src/forge/compiler/orchestrator/types.ts +1 -1
- package/src/forge/compiler/package-graph/compiler.ts +3 -1
- package/src/forge/compiler/package-graph/constants.ts +1 -1
- package/src/forge/compiler/package-graph/dts-extractor.ts +14 -1
- package/src/forge/compiler/package-manager/adapter.ts +4 -1
- package/src/forge/compiler/package-manager/commands.ts +4 -0
- package/src/forge/compiler/package-manager/executor.ts +30 -1
- package/src/forge/compiler/package-manager/version.ts +36 -12
- package/src/forge/compiler/package-upgrades/planner.ts +155 -18
- package/src/forge/compiler/package-upgrades/types.ts +2 -0
- package/src/forge/compiler/policy-registry/build.ts +47 -2
- package/src/forge/compiler/policy-registry/parse.ts +32 -2
- package/src/forge/compiler/recipes/definitions.ts +63 -0
- package/src/forge/compiler/recipes/index.ts +2 -0
- package/src/forge/compiler/recipes/profiles.ts +81 -0
- package/src/forge/compiler/recipes/registry.ts +6 -0
- package/src/forge/compiler/test-graph/build.ts +11 -3
- package/src/forge/compiler/types/app-graph.ts +8 -2
- package/src/forge/compiler/types/cli.ts +76 -1
- package/src/forge/compiler/types/dev-manifest.ts +4 -0
- package/src/forge/compiler/types/emit.ts +2 -0
- package/src/forge/compiler/types/frontend-graph.ts +2 -2
- package/src/forge/compiler/types/integration.ts +1 -0
- package/src/forge/compiler/types/package-graph.ts +6 -0
- package/src/forge/compiler/types/policy-registry.ts +3 -1
- package/src/forge/delta/broker-runner.mjs +5 -0
- package/src/forge/delta/broker.ts +429 -0
- package/src/forge/delta/classifier.ts +52 -0
- package/src/forge/delta/explain.ts +238 -0
- package/src/forge/delta/git-observer.ts +67 -0
- package/src/forge/delta/ids.ts +44 -0
- package/src/forge/delta/index.ts +25 -0
- package/src/forge/delta/process-identity.ts +37 -0
- package/src/forge/delta/queue-status.ts +190 -0
- package/src/forge/delta/recorder.ts +540 -0
- package/src/forge/delta/redaction.ts +50 -0
- package/src/forge/delta/schema.ts +240 -0
- package/src/forge/delta/session.ts +142 -0
- package/src/forge/delta/status.ts +1139 -0
- package/src/forge/delta/store.ts +3329 -0
- package/src/forge/delta/timeline.ts +178 -0
- package/src/forge/dev/server.ts +1061 -22
- package/src/forge/dev/types.ts +15 -1
- package/src/forge/dev/watch.ts +17 -7
- package/src/forge/dev-console/cycle.ts +285 -33
- package/src/forge/dev-console/types.ts +47 -1
- package/src/forge/impact/index.ts +222 -30
- package/src/forge/impact/types.ts +33 -1
- package/src/forge/intent/index.ts +35 -16
- package/src/forge/make/fields.ts +26 -0
- package/src/forge/make/index.ts +42 -6
- package/src/forge/make/templates.ts +211 -4
- package/src/forge/make/types.ts +2 -1
- package/src/forge/policy.ts +1 -1
- package/src/forge/react/index.ts +160 -2
- package/src/forge/refactor/index.ts +1 -0
- package/src/forge/repair/rules/index.ts +2 -2
- package/src/forge/repository-analysis/adapters/common.ts +72 -0
- package/src/forge/repository-analysis/adapters/docker.ts +185 -0
- package/src/forge/repository-analysis/adapters/java.ts +133 -0
- package/src/forge/repository-analysis/adapters/typescript.ts +350 -0
- package/src/forge/repository-analysis/adapters/vue.ts +71 -0
- package/src/forge/repository-analysis/analyze.ts +434 -0
- package/src/forge/repository-analysis/benchmark.ts +336 -0
- package/src/forge/repository-analysis/cache-gc.ts +154 -0
- package/src/forge/repository-analysis/check-selection.ts +123 -0
- package/src/forge/repository-analysis/context-node.ts +17 -0
- package/src/forge/repository-analysis/context.ts +456 -0
- package/src/forge/repository-analysis/http-resolution.ts +135 -0
- package/src/forge/repository-analysis/identity.ts +45 -0
- package/src/forge/repository-analysis/index.ts +18 -0
- package/src/forge/repository-analysis/nuxt-resolution.ts +188 -0
- package/src/forge/repository-analysis/quality.ts +60 -0
- package/src/forge/repository-analysis/retrieval.ts +309 -0
- package/src/forge/repository-analysis/runtime-artifacts.ts +195 -0
- package/src/forge/repository-analysis/runtime-observation.ts +325 -0
- package/src/forge/repository-analysis/scanner.ts +174 -0
- package/src/forge/repository-analysis/storage.ts +193 -0
- package/src/forge/repository-analysis/test-associations.ts +59 -0
- package/src/forge/repository-analysis/types.ts +99 -0
- package/src/forge/repository-manifest/index.ts +178 -0
- package/src/forge/repository-manifest/types.ts +63 -0
- package/src/forge/review/index.ts +162 -12
- package/src/forge/review/types.ts +15 -0
- package/src/forge/runtime/ai/providers.ts +19 -4
- package/src/forge/runtime/auth/config.ts +17 -0
- package/src/forge/runtime/auth/evaluate.ts +15 -2
- package/src/forge/runtime/auth/resolve.ts +61 -6
- package/src/forge/runtime/auth/types.ts +1 -0
- package/src/forge/runtime/db/factory.ts +1 -3
- package/src/forge/runtime/db/generated-client.ts +13 -2
- package/src/forge/runtime/db/memory-adapter.ts +139 -32
- package/src/forge/runtime/db/pglite-adapter.ts +285 -2
- package/src/forge/runtime/executor.ts +129 -16
- package/src/forge/runtime/external/bridge.ts +663 -0
- package/src/forge/runtime/runner/run-entry.ts +16 -7
- package/src/forge/runtime/telemetry/buffer.ts +4 -1
- package/src/forge/runtime/telemetry/scrubber.ts +35 -5
- package/src/forge/runtime/webhooks/security.ts +12 -7
- package/src/forge/server.ts +71 -7
- package/src/forge/ui/index.ts +831 -19
- package/src/forge/ui/types.ts +3 -1
- package/src/forge/version.ts +1 -1
- package/src/forge/vue/index.ts +422 -0
- package/src/forge/workspace/baseline.ts +112 -0
- package/src/forge/workspace/change-summary.ts +292 -0
- package/src/forge/workspace/forge-cli.ts +42 -0
- package/src/forge/workspace/git-summary.ts +393 -0
- package/templates/agent-workroom/AGENTS.md +29 -0
- package/templates/agent-workroom/README.md +34 -0
- package/templates/agent-workroom/forge.config.ts +3 -0
- package/templates/agent-workroom/package.json +34 -0
- package/templates/agent-workroom/pnpm-workspace.yaml +2 -0
- package/templates/agent-workroom/src/actions/indexAgentSignal.ts +10 -0
- package/templates/agent-workroom/src/commands/openWorkroom.ts +61 -0
- package/templates/agent-workroom/src/commands/recordAgentSignal.ts +119 -0
- package/templates/agent-workroom/src/commands/recordCheckRun.ts +52 -0
- package/templates/agent-workroom/src/forge/schema.ts +54 -0
- package/templates/agent-workroom/src/policies.ts +6 -0
- package/templates/agent-workroom/src/queries/listWorkrooms.ts +11 -0
- package/templates/agent-workroom/src/queries/liveWorkroom.ts +63 -0
- package/templates/agent-workroom/tsconfig.json +16 -0
- package/templates/agent-workroom/web/index.html +13 -0
- package/templates/agent-workroom/web/package.json +21 -0
- package/templates/agent-workroom/web/src/App.tsx +345 -0
- package/templates/agent-workroom/web/src/lib/forge.ts +20 -0
- package/templates/agent-workroom/web/src/main.tsx +13 -0
- package/templates/agent-workroom/web/src/styles.css +545 -0
- package/templates/agent-workroom/web/tsconfig.json +27 -0
- package/templates/agent-workroom/web/vite.config.ts +36 -0
- package/templates/b2b-support-web/package.json +2 -0
- package/templates/b2b-support-web/pnpm-workspace.yaml +2 -0
- package/templates/b2b-support-web/web/app/page.tsx +2 -2
- package/templates/b2b-support-web/web/lib/forge.ts +9 -2
- package/templates/b2b-support-web/web/next.config.ts +24 -0
- package/templates/b2b-support-web/web/package.json +1 -1
- package/templates/minimal-web/package.json +2 -1
- package/templates/minimal-web/pnpm-workspace.yaml +2 -0
- package/templates/minimal-web/web/index.html +1 -0
- package/templates/minimal-web/web/src/App.tsx +12 -6
- package/templates/minimal-web/web/src/lib/forge.ts +9 -2
- package/templates/minimal-web/web/src/styles.css +34 -0
- package/templates/minimal-web/web/vite.config.ts +36 -0
- package/templates/nuxt-web/.vscode/settings.json +14 -0
- package/templates/nuxt-web/.yarnrc.yml +1 -0
- package/templates/nuxt-web/README.md +30 -0
- package/templates/nuxt-web/forge.config.ts +3 -0
- package/templates/nuxt-web/package.json +37 -0
- package/templates/nuxt-web/pnpm-workspace.yaml +2 -0
- package/templates/nuxt-web/src/actions/logNoteCreated.ts +11 -0
- package/templates/nuxt-web/src/commands/createNote.ts +26 -0
- package/templates/nuxt-web/src/forge/schema.ts +12 -0
- package/templates/nuxt-web/src/policies.ts +6 -0
- package/templates/nuxt-web/src/queries/listNotes.ts +8 -0
- package/templates/nuxt-web/src/queries/liveNotes.ts +8 -0
- package/templates/nuxt-web/tsconfig.json +17 -0
- package/templates/nuxt-web/web/app.vue +67 -0
- package/templates/nuxt-web/web/components/LiveNotes.vue +89 -0
- package/templates/nuxt-web/web/components/NoteComposer.vue +100 -0
- package/templates/nuxt-web/web/composables/forge.ts +13 -0
- package/templates/nuxt-web/web/composables/useNotes.ts +24 -0
- package/templates/nuxt-web/web/nuxt.config.ts +11 -0
- package/templates/nuxt-web/web/package.json +22 -0
- package/templates/nuxt-web/web/plugins/forge.client.ts +10 -0
- package/templates/nuxt-web/web/plugins/forge.server.ts +10 -0
- package/templates/nuxt-web/web/server/api/forge-health.get.ts +7 -0
- package/templates/nuxt-web/web/tsconfig.json +6 -0
- package/templates/vendor-access/.vscode/settings.json +14 -0
- package/templates/vendor-access/README.md +30 -0
- package/templates/vendor-access/forge.config.ts +3 -0
- package/templates/vendor-access/package.json +35 -0
- package/templates/vendor-access/pnpm-workspace.yaml +2 -0
- package/templates/vendor-access/src/commands/addEvidence.ts +42 -0
- package/templates/vendor-access/src/commands/approveAccessRequest.ts +43 -0
- package/templates/vendor-access/src/commands/createAccessRequest.ts +49 -0
- package/templates/vendor-access/src/commands/seedVendorAccessDemo.ts +200 -0
- package/templates/vendor-access/src/forge/schema.ts +74 -0
- package/templates/vendor-access/src/policies.ts +11 -0
- package/templates/vendor-access/src/queries/listVendorAccessDashboard.ts +24 -0
- package/templates/vendor-access/src/queries/liveVendorAccessDashboard.ts +24 -0
- package/templates/vendor-access/tsconfig.json +17 -0
- package/templates/vendor-access/web/index.html +13 -0
- package/templates/vendor-access/web/package.json +21 -0
- package/templates/vendor-access/web/src/App.tsx +573 -0
- package/templates/vendor-access/web/src/lib/forge.ts +20 -0
- package/templates/vendor-access/web/src/main.tsx +205 -0
- package/templates/vendor-access/web/src/styles.css +682 -0
- package/templates/vendor-access/web/tsconfig.json +18 -0
- package/templates/vendor-access/web/vite.config.ts +36 -0
- package/src/forge/_generated/actionSubscriptions.json +0 -2
- package/src/forge/_generated/actionSubscriptions.ts +0 -10
- package/src/forge/_generated/agentAdapterManifest.json +0 -2
- package/src/forge/_generated/agentAdapterManifest.ts +0 -73
- package/src/forge/_generated/agentContract.json +0 -2
- package/src/forge/_generated/agentContract.ts +0 -7829
- package/src/forge/_generated/agentQuickstart.md +0 -34
- package/src/forge/_generated/agentTools.json +0 -2
- package/src/forge/_generated/agentTools.md +0 -16
- package/src/forge/_generated/agentTools.ts +0 -12
- package/src/forge/_generated/aiContext.ts +0 -125
- package/src/forge/_generated/aiModels.json +0 -2
- package/src/forge/_generated/aiModels.ts +0 -51
- package/src/forge/_generated/aiProviders.json +0 -2
- package/src/forge/_generated/aiProviders.ts +0 -23
- package/src/forge/_generated/aiRegistry.json +0 -2
- package/src/forge/_generated/aiRegistry.ts +0 -31
- package/src/forge/_generated/api.json +0 -2
- package/src/forge/_generated/api.ts +0 -8
- package/src/forge/_generated/appGraph.json +0 -2
- package/src/forge/_generated/appGraph.ts +0 -14937
- package/src/forge/_generated/appMap.md +0 -55
- package/src/forge/_generated/artifactManifest.json +0 -2
- package/src/forge/_generated/artifactManifest.ts +0 -7
- package/src/forge/_generated/authClaims.json +0 -2
- package/src/forge/_generated/authClaims.ts +0 -13
- package/src/forge/_generated/authConfig.json +0 -2
- package/src/forge/_generated/authConfig.ts +0 -17
- package/src/forge/_generated/authContext.ts +0 -23
- package/src/forge/_generated/authRegistry.json +0 -2
- package/src/forge/_generated/authRegistry.ts +0 -25
- package/src/forge/_generated/buildInfo.json +0 -2
- package/src/forge/_generated/buildInfo.ts +0 -9
- package/src/forge/_generated/capabilityMap.json +0 -2
- package/src/forge/_generated/capabilityMap.md +0 -15
- package/src/forge/_generated/capabilityMap.ts +0 -17
- package/src/forge/_generated/client.ts +0 -282
- package/src/forge/_generated/clientApi.ts +0 -9
- package/src/forge/_generated/clientManifest.json +0 -2
- package/src/forge/_generated/clientManifest.ts +0 -39
- package/src/forge/_generated/clientTypes.ts +0 -78
- package/src/forge/_generated/configRegistry.json +0 -2
- package/src/forge/_generated/configRegistry.ts +0 -4
- package/src/forge/_generated/dataGraph.json +0 -2
- package/src/forge/_generated/dataGraph.ts +0 -8
- package/src/forge/_generated/db.json +0 -2
- package/src/forge/_generated/db.ts +0 -2
- package/src/forge/_generated/dbSecurityManifest.json +0 -2
- package/src/forge/_generated/dbSecurityManifest.ts +0 -15
- package/src/forge/_generated/dbSessionContext.json +0 -2
- package/src/forge/_generated/dbSessionContext.ts +0 -39
- package/src/forge/_generated/deployManifest.json +0 -2
- package/src/forge/_generated/deployManifest.ts +0 -14
- package/src/forge/_generated/devManifest.json +0 -2
- package/src/forge/_generated/devManifest.ts +0 -62
- package/src/forge/_generated/envSchema.json +0 -2
- package/src/forge/_generated/envSchema.ts +0 -59
- package/src/forge/_generated/frontendGraph.json +0 -2
- package/src/forge/_generated/frontendGraph.ts +0 -27
- package/src/forge/_generated/importGuards.json +0 -2
- package/src/forge/_generated/importGuards.ts +0 -686
- package/src/forge/_generated/index.ts +0 -68
- package/src/forge/_generated/liveProductionManifest.json +0 -2
- package/src/forge/_generated/liveProductionManifest.ts +0 -23
- package/src/forge/_generated/liveProtocol.json +0 -2
- package/src/forge/_generated/liveProtocol.ts +0 -21
- package/src/forge/_generated/liveQueryRegistry.json +0 -2
- package/src/forge/_generated/liveQueryRegistry.ts +0 -9
- package/src/forge/_generated/liveTransportConfig.json +0 -2
- package/src/forge/_generated/liveTransportConfig.ts +0 -19
- package/src/forge/_generated/makeRegistry.json +0 -2
- package/src/forge/_generated/makeRegistry.ts +0 -177
- package/src/forge/_generated/makeTemplates.json +0 -2
- package/src/forge/_generated/makeTemplates.ts +0 -66
- package/src/forge/_generated/mockMap.json +0 -2
- package/src/forge/_generated/mockMap.ts +0 -7
- package/src/forge/_generated/operationPlaybooks.md +0 -167
- package/src/forge/_generated/packageGraph.json +0 -2
- package/src/forge/_generated/packageGraph.ts +0 -249334
- package/src/forge/_generated/packageUpgradeRegistry.json +0 -2
- package/src/forge/_generated/packageUpgradeRegistry.ts +0 -15
- package/src/forge/_generated/permissionMatrix.json +0 -2
- package/src/forge/_generated/permissionMatrix.ts +0 -7
- package/src/forge/_generated/policyRegistry.json +0 -2
- package/src/forge/_generated/policyRegistry.ts +0 -11
- package/src/forge/_generated/queryRegistry.json +0 -2
- package/src/forge/_generated/queryRegistry.ts +0 -9
- package/src/forge/_generated/react.d.ts +0 -22
- package/src/forge/_generated/react.ts +0 -29
- package/src/forge/_generated/reactManifest.json +0 -2
- package/src/forge/_generated/reactManifest.ts +0 -19
- package/src/forge/_generated/rlsPolicies.json +0 -2
- package/src/forge/_generated/rlsPolicies.sql +0 -34
- package/src/forge/_generated/rlsPolicies.ts +0 -6
- package/src/forge/_generated/runtimeGraph.json +0 -2
- package/src/forge/_generated/runtimeGraph.ts +0 -8
- package/src/forge/_generated/runtimeMatrix.json +0 -2
- package/src/forge/_generated/runtimeMatrix.ts +0 -334130
- package/src/forge/_generated/runtimeRegistry.ts +0 -2
- package/src/forge/_generated/runtimeRules.md +0 -91
- package/src/forge/_generated/secretRegistry.json +0 -2
- package/src/forge/_generated/secretRegistry.ts +0 -50
- package/src/forge/_generated/secretsContext.ts +0 -11
- package/src/forge/_generated/serverApi.ts +0 -10
- package/src/forge/_generated/sourceMapManifest.json +0 -2
- package/src/forge/_generated/sourceMapManifest.ts +0 -7
- package/src/forge/_generated/sqlPlan.json +0 -2
- package/src/forge/_generated/sqlPlan.ts +0 -88
- package/src/forge/_generated/subscriptionManifest.json +0 -2
- package/src/forge/_generated/subscriptionManifest.ts +0 -7
- package/src/forge/_generated/symbolicationManifest.json +0 -2
- package/src/forge/_generated/symbolicationManifest.ts +0 -17
- package/src/forge/_generated/telemetryRegistry.json +0 -2
- package/src/forge/_generated/telemetryRegistry.ts +0 -9
- package/src/forge/_generated/telemetrySinks.json +0 -2
- package/src/forge/_generated/telemetrySinks.ts +0 -11
- package/src/forge/_generated/tenantScope.json +0 -2
- package/src/forge/_generated/tenantScope.ts +0 -8
- package/src/forge/_generated/testGraph.json +0 -2
- package/src/forge/_generated/testGraph.ts +0 -3452
- package/src/forge/_generated/testPlanRegistry.json +0 -2
- package/src/forge/_generated/testPlanRegistry.ts +0 -33
- package/src/forge/_generated/uiRoutes.json +0 -2
- package/src/forge/_generated/uiRoutes.ts +0 -16
- package/src/forge/_generated/uiScenarios.json +0 -2
- package/src/forge/_generated/uiScenarios.ts +0 -30
- package/src/forge/_generated/uiTestManifest.json +0 -2
- package/src/forge/_generated/uiTestManifest.ts +0 -27
- package/src/forge/_generated/workflowRegistry.json +0 -2
- package/src/forge/_generated/workflowRegistry.ts +0 -9
- package/src/forge/_generated/workflowSubscriptions.json +0 -2
- package/src/forge/_generated/workflowSubscriptions.ts +0 -10
|
@@ -15,6 +15,64 @@ export interface PackageSignals {
|
|
|
15
15
|
nativeAddonEvidence: string[];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
export interface SignalProfile {
|
|
19
|
+
calls: number;
|
|
20
|
+
totalMs: number;
|
|
21
|
+
entrypoints: number;
|
|
22
|
+
exports: number;
|
|
23
|
+
textFragments: number;
|
|
24
|
+
corpusBytes: number;
|
|
25
|
+
packageCount: number;
|
|
26
|
+
topPackages: SignalPackageProfile[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface SignalPackageProfile {
|
|
30
|
+
packageName: string;
|
|
31
|
+
calls: number;
|
|
32
|
+
totalMs: number;
|
|
33
|
+
entrypoints: number;
|
|
34
|
+
exports: number;
|
|
35
|
+
textFragments: number;
|
|
36
|
+
corpusBytes: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
let activeProfile: SignalProfile | undefined;
|
|
40
|
+
let activePackageProfiles: Map<string, SignalPackageProfile> | undefined;
|
|
41
|
+
|
|
42
|
+
export function resetSignalProfile(): void {
|
|
43
|
+
activeProfile = {
|
|
44
|
+
calls: 0,
|
|
45
|
+
totalMs: 0,
|
|
46
|
+
entrypoints: 0,
|
|
47
|
+
exports: 0,
|
|
48
|
+
textFragments: 0,
|
|
49
|
+
corpusBytes: 0,
|
|
50
|
+
packageCount: 0,
|
|
51
|
+
topPackages: [],
|
|
52
|
+
};
|
|
53
|
+
activePackageProfiles = new Map();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function getSignalProfile(): SignalProfile | undefined {
|
|
57
|
+
if (!activeProfile) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const topPackages = [...(activePackageProfiles?.values() ?? [])]
|
|
61
|
+
.sort((a, b) => b.totalMs - a.totalMs)
|
|
62
|
+
.slice(0, 10)
|
|
63
|
+
.map((entry) => ({ ...entry }));
|
|
64
|
+
return {
|
|
65
|
+
...activeProfile,
|
|
66
|
+
packageCount: activePackageProfiles?.size ?? 0,
|
|
67
|
+
topPackages,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function clearSignalProfile(): void {
|
|
72
|
+
activeProfile = undefined;
|
|
73
|
+
activePackageProfiles = undefined;
|
|
74
|
+
}
|
|
75
|
+
|
|
18
76
|
const NODE_BUILTIN_PATTERNS = [
|
|
19
77
|
/\bnode:/,
|
|
20
78
|
/\brequire\s*\(\s*["'](?:fs|child_process|net|http|https|dns|tls|os|crypto)["']/,
|
|
@@ -89,9 +147,12 @@ function collectEnvVars(text: string): string[] {
|
|
|
89
147
|
}
|
|
90
148
|
|
|
91
149
|
export function gatherSignals(api: PackageApi): PackageSignals {
|
|
150
|
+
const started = activeProfile ? performance.now() : 0;
|
|
92
151
|
const texts: string[] = [];
|
|
152
|
+
let exportCount = 0;
|
|
93
153
|
for (const ep of api.entrypoints) {
|
|
94
154
|
for (const exp of ep.exports) {
|
|
155
|
+
exportCount += 1;
|
|
95
156
|
texts.push(exp.signature);
|
|
96
157
|
if (exp.overloads) texts.push(...exp.overloads);
|
|
97
158
|
if (exp.declarations) texts.push(...exp.declarations);
|
|
@@ -112,7 +173,7 @@ export function gatherSignals(api: PackageApi): PackageSignals {
|
|
|
112
173
|
const nativeAddonEvidence = collectMatches(corpus, NATIVE_ADDON_PATTERNS);
|
|
113
174
|
const envVars = collectEnvVars(corpus);
|
|
114
175
|
|
|
115
|
-
|
|
176
|
+
const result = {
|
|
116
177
|
usesNodeBuiltins: nodeBuiltins.length > 0,
|
|
117
178
|
nodeBuiltins,
|
|
118
179
|
usesNetwork: networkEvidence.length > 0,
|
|
@@ -126,4 +187,33 @@ export function gatherSignals(api: PackageApi): PackageSignals {
|
|
|
126
187
|
usesNativeAddon: nativeAddonEvidence.length > 0,
|
|
127
188
|
nativeAddonEvidence,
|
|
128
189
|
};
|
|
190
|
+
|
|
191
|
+
if (activeProfile) {
|
|
192
|
+
const durationMs = performance.now() - started;
|
|
193
|
+
activeProfile.calls += 1;
|
|
194
|
+
activeProfile.totalMs += durationMs;
|
|
195
|
+
activeProfile.entrypoints += api.entrypoints.length;
|
|
196
|
+
activeProfile.exports += exportCount;
|
|
197
|
+
activeProfile.textFragments += texts.length;
|
|
198
|
+
activeProfile.corpusBytes += corpus.length;
|
|
199
|
+
|
|
200
|
+
const packageProfile = activePackageProfiles?.get(api.name) ?? {
|
|
201
|
+
packageName: api.name,
|
|
202
|
+
calls: 0,
|
|
203
|
+
totalMs: 0,
|
|
204
|
+
entrypoints: 0,
|
|
205
|
+
exports: 0,
|
|
206
|
+
textFragments: 0,
|
|
207
|
+
corpusBytes: 0,
|
|
208
|
+
};
|
|
209
|
+
packageProfile.calls += 1;
|
|
210
|
+
packageProfile.totalMs += durationMs;
|
|
211
|
+
packageProfile.entrypoints += api.entrypoints.length;
|
|
212
|
+
packageProfile.exports += exportCount;
|
|
213
|
+
packageProfile.textFragments += texts.length;
|
|
214
|
+
packageProfile.corpusBytes += corpus.length;
|
|
215
|
+
activePackageProfiles?.set(api.name, packageProfile);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return result;
|
|
129
219
|
}
|
|
@@ -16,11 +16,17 @@ export interface ClientManifest {
|
|
|
16
16
|
queries: string;
|
|
17
17
|
commands: string;
|
|
18
18
|
liveQueries: string;
|
|
19
|
+
externalQueries: string;
|
|
20
|
+
externalCommands: string;
|
|
19
21
|
};
|
|
20
22
|
react: {
|
|
21
23
|
entrypoint: string;
|
|
22
24
|
hooks: string[];
|
|
23
25
|
};
|
|
26
|
+
vue: {
|
|
27
|
+
entrypoint: string;
|
|
28
|
+
composables: string[];
|
|
29
|
+
};
|
|
24
30
|
excluded: {
|
|
25
31
|
actions: string[];
|
|
26
32
|
workflows: string[];
|
|
@@ -41,6 +47,18 @@ export interface ReactManifest {
|
|
|
41
47
|
clientSafe: true;
|
|
42
48
|
}
|
|
43
49
|
|
|
50
|
+
export interface VueManifest {
|
|
51
|
+
schemaVersion: string;
|
|
52
|
+
generatorVersion: string;
|
|
53
|
+
inputHash: string;
|
|
54
|
+
entrypoint: string;
|
|
55
|
+
composables: string[];
|
|
56
|
+
queries: string[];
|
|
57
|
+
commands: string[];
|
|
58
|
+
liveQueries: string[];
|
|
59
|
+
clientSafe: true;
|
|
60
|
+
}
|
|
61
|
+
|
|
44
62
|
const SERVER_ADAPTER_SUFFIX = ".server.ts";
|
|
45
63
|
|
|
46
64
|
function collectServerAdapters(classified: ClassifiedPackage[]): string[] {
|
|
@@ -101,6 +119,8 @@ export function buildClientManifest(
|
|
|
101
119
|
queries: "POST /queries/:name",
|
|
102
120
|
commands: "POST /commands/:name",
|
|
103
121
|
liveQueries: "GET /live/:name",
|
|
122
|
+
externalQueries: "POST /external/:service/queries/:name",
|
|
123
|
+
externalCommands: "POST /external/:service/commands/:name",
|
|
104
124
|
},
|
|
105
125
|
react: {
|
|
106
126
|
entrypoint: "src/forge/_generated/react.ts",
|
|
@@ -113,6 +133,17 @@ export function buildClientManifest(
|
|
|
113
133
|
"useLiveQuery",
|
|
114
134
|
],
|
|
115
135
|
},
|
|
136
|
+
vue: {
|
|
137
|
+
entrypoint: "src/forge/_generated/vue.ts",
|
|
138
|
+
composables: [
|
|
139
|
+
"provideForge",
|
|
140
|
+
"useForgeClient",
|
|
141
|
+
"useForgeAuth",
|
|
142
|
+
"useForgeQuery",
|
|
143
|
+
"useForgeCommand",
|
|
144
|
+
"useForgeLiveQuery",
|
|
145
|
+
],
|
|
146
|
+
},
|
|
116
147
|
excluded: {
|
|
117
148
|
actions,
|
|
118
149
|
workflows,
|
|
@@ -149,3 +180,31 @@ export function buildReactManifest(clientManifest: ClientManifest): ReactManifes
|
|
|
149
180
|
clientSafe: true,
|
|
150
181
|
};
|
|
151
182
|
}
|
|
183
|
+
|
|
184
|
+
export function buildVueManifest(clientManifest: ClientManifest): VueManifest {
|
|
185
|
+
const composables = [
|
|
186
|
+
"provideForge",
|
|
187
|
+
"useForgeClient",
|
|
188
|
+
"useForgeAuth",
|
|
189
|
+
"useForgeQuery",
|
|
190
|
+
"useForgeCommand",
|
|
191
|
+
"useForgeLiveQuery",
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
schemaVersion: "1.0.0",
|
|
196
|
+
generatorVersion: GENERATOR_VERSION,
|
|
197
|
+
inputHash: hashStable(
|
|
198
|
+
canonicalJson({
|
|
199
|
+
clientInputHash: clientManifest.inputHash,
|
|
200
|
+
composables,
|
|
201
|
+
}),
|
|
202
|
+
),
|
|
203
|
+
entrypoint: "src/forge/_generated/vue.ts",
|
|
204
|
+
composables,
|
|
205
|
+
queries: clientManifest.queries,
|
|
206
|
+
commands: clientManifest.commands,
|
|
207
|
+
liveQueries: clientManifest.liveQueries,
|
|
208
|
+
clientSafe: true,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import type { ClientManifest, ReactManifest } from "./build-manifest.ts";
|
|
1
|
+
import type { ClientManifest, ReactManifest, VueManifest } from "./build-manifest.ts";
|
|
2
2
|
|
|
3
3
|
export function renderClientTypesTs(): string {
|
|
4
4
|
return `export type ForgeStaticAuth = {
|
|
5
5
|
userId?: string;
|
|
6
6
|
tenantId?: string;
|
|
7
|
+
organizationId?: string;
|
|
8
|
+
organizationMembershipId?: string;
|
|
7
9
|
role?: string;
|
|
10
|
+
roles?: string[];
|
|
11
|
+
permissions?: string[];
|
|
12
|
+
claims?: Record<string, unknown>;
|
|
8
13
|
token?: string;
|
|
9
14
|
getToken?: () => string | Promise<string>;
|
|
10
15
|
headers?: Record<string, string>;
|
|
@@ -14,7 +19,12 @@ export function renderClientTypesTs(): string {
|
|
|
14
19
|
export type ForgeResolvedAuth = {
|
|
15
20
|
userId?: string;
|
|
16
21
|
tenantId?: string;
|
|
22
|
+
organizationId?: string;
|
|
23
|
+
organizationMembershipId?: string;
|
|
17
24
|
role?: string;
|
|
25
|
+
roles?: string[];
|
|
26
|
+
permissions?: string[];
|
|
27
|
+
claims?: Record<string, unknown>;
|
|
18
28
|
token?: string;
|
|
19
29
|
getToken?: () => string | Promise<string>;
|
|
20
30
|
headers?: Record<string, string>;
|
|
@@ -52,6 +62,22 @@ export class ForgeError extends Error {
|
|
|
52
62
|
export type QueryName = keyof typeof import("./api.ts").api.queries;
|
|
53
63
|
export type CommandName = keyof typeof import("./api.ts").api.commands;
|
|
54
64
|
export type LiveQueryName = keyof typeof import("./api.ts").api.liveQueries;
|
|
65
|
+
export type ExternalCommandName = string;
|
|
66
|
+
export type ExternalQueryName = string;
|
|
67
|
+
export type ExternalRuntimeRefObject = {
|
|
68
|
+
service: string;
|
|
69
|
+
name: string;
|
|
70
|
+
kind?: "command" | "query";
|
|
71
|
+
language?: string;
|
|
72
|
+
framework?: string;
|
|
73
|
+
transport?: string;
|
|
74
|
+
};
|
|
75
|
+
export type ExternalCommandRef =
|
|
76
|
+
| ExternalCommandName
|
|
77
|
+
| ExternalRuntimeRefObject;
|
|
78
|
+
export type ExternalQueryRef =
|
|
79
|
+
| ExternalQueryName
|
|
80
|
+
| ExternalRuntimeRefObject;
|
|
55
81
|
|
|
56
82
|
export type LiveSnapshot<T> = {
|
|
57
83
|
subscriptionId: string;
|
|
@@ -60,6 +86,22 @@ export type LiveSnapshot<T> = {
|
|
|
60
86
|
traceId?: string;
|
|
61
87
|
};
|
|
62
88
|
|
|
89
|
+
export type ForgeCommandResult<T = unknown> =
|
|
90
|
+
| {
|
|
91
|
+
ok: true;
|
|
92
|
+
result: T;
|
|
93
|
+
status: number;
|
|
94
|
+
traceId?: string;
|
|
95
|
+
diagnostics?: { code: string; message: string }[];
|
|
96
|
+
}
|
|
97
|
+
| {
|
|
98
|
+
ok: false;
|
|
99
|
+
error: { code: string; message: string; details?: unknown };
|
|
100
|
+
status: number;
|
|
101
|
+
traceId?: string;
|
|
102
|
+
diagnostics?: { code: string; message: string }[];
|
|
103
|
+
};
|
|
104
|
+
|
|
63
105
|
export type LiveQueryOptions = {
|
|
64
106
|
signal?: AbortSignal;
|
|
65
107
|
};
|
|
@@ -70,6 +112,9 @@ export type ForgeClient = {
|
|
|
70
112
|
readonly lastTraceId?: string;
|
|
71
113
|
query<Name extends QueryName>(name: Name, args: unknown): Promise<unknown>;
|
|
72
114
|
command<Name extends CommandName>(name: Name, args: unknown): Promise<unknown>;
|
|
115
|
+
commandResult<Name extends CommandName>(name: Name, args: unknown): Promise<ForgeCommandResult<unknown>>;
|
|
116
|
+
externalQuery<Name extends ExternalQueryRef>(name: Name, args: unknown): Promise<unknown>;
|
|
117
|
+
externalCommand<Name extends ExternalCommandRef>(name: Name, args: unknown): Promise<unknown>;
|
|
73
118
|
liveQuery<Name extends LiveQueryName>(
|
|
74
119
|
name: Name,
|
|
75
120
|
args: unknown,
|
|
@@ -85,8 +130,11 @@ export function renderClientTs(): string {
|
|
|
85
130
|
return `import { api } from "./api.ts";
|
|
86
131
|
import type {
|
|
87
132
|
ForgeAuthProvider,
|
|
133
|
+
ForgeCommandResult,
|
|
88
134
|
ForgeClient,
|
|
89
135
|
ForgeClientConfig,
|
|
136
|
+
ExternalCommandRef,
|
|
137
|
+
ExternalQueryRef,
|
|
90
138
|
LiveQueryOptions,
|
|
91
139
|
LiveSnapshot,
|
|
92
140
|
} from "./clientTypes.ts";
|
|
@@ -98,10 +146,16 @@ export type {
|
|
|
98
146
|
ForgeAuthProvider,
|
|
99
147
|
ForgeClient,
|
|
100
148
|
ForgeClientConfig,
|
|
149
|
+
ForgeCommandResult,
|
|
101
150
|
ForgeStaticAuth,
|
|
102
151
|
QueryName,
|
|
103
152
|
CommandName,
|
|
104
153
|
LiveQueryName,
|
|
154
|
+
ExternalCommandName,
|
|
155
|
+
ExternalQueryName,
|
|
156
|
+
ExternalRuntimeRefObject,
|
|
157
|
+
ExternalCommandRef,
|
|
158
|
+
ExternalQueryRef,
|
|
105
159
|
ForgeResolvedAuth,
|
|
106
160
|
LiveQueryOptions,
|
|
107
161
|
LiveSnapshot,
|
|
@@ -134,7 +188,12 @@ async function resolveAuthHeaders(
|
|
|
134
188
|
typeof value === "string" &&
|
|
135
189
|
key !== "userId" &&
|
|
136
190
|
key !== "tenantId" &&
|
|
191
|
+
key !== "organizationId" &&
|
|
192
|
+
key !== "organizationMembershipId" &&
|
|
137
193
|
key !== "role" &&
|
|
194
|
+
key !== "roles" &&
|
|
195
|
+
key !== "permissions" &&
|
|
196
|
+
key !== "claims" &&
|
|
138
197
|
key !== "token"
|
|
139
198
|
) {
|
|
140
199
|
headers[key] = value;
|
|
@@ -147,9 +206,25 @@ async function resolveAuthHeaders(
|
|
|
147
206
|
if (resolved.tenantId) {
|
|
148
207
|
headers["x-forge-tenant-id"] = resolved.tenantId;
|
|
149
208
|
}
|
|
209
|
+
if (resolved.organizationId) {
|
|
210
|
+
headers["x-forge-organization-id"] = resolved.organizationId;
|
|
211
|
+
headers["x-forge-tenant-id"] ??= resolved.organizationId;
|
|
212
|
+
}
|
|
213
|
+
if (resolved.organizationMembershipId) {
|
|
214
|
+
headers["x-forge-organization-membership-id"] = resolved.organizationMembershipId;
|
|
215
|
+
}
|
|
150
216
|
if (resolved.role) {
|
|
151
217
|
headers["x-forge-role"] = resolved.role;
|
|
152
218
|
}
|
|
219
|
+
if (Array.isArray(resolved.roles)) {
|
|
220
|
+
headers["x-forge-roles"] = JSON.stringify(resolved.roles);
|
|
221
|
+
}
|
|
222
|
+
if (Array.isArray(resolved.permissions)) {
|
|
223
|
+
headers["x-forge-permissions"] = JSON.stringify(resolved.permissions);
|
|
224
|
+
}
|
|
225
|
+
if (resolved.claims && typeof resolved.claims === "object") {
|
|
226
|
+
headers["x-forge-claims"] = JSON.stringify(resolved.claims);
|
|
227
|
+
}
|
|
153
228
|
|
|
154
229
|
return headers;
|
|
155
230
|
}
|
|
@@ -179,6 +254,16 @@ function parseJsonPayload(body: unknown): {
|
|
|
179
254
|
};
|
|
180
255
|
}
|
|
181
256
|
|
|
257
|
+
function normalizeExternalRef(
|
|
258
|
+
ref: ExternalCommandRef | ExternalQueryRef,
|
|
259
|
+
): { service: string; name: string } {
|
|
260
|
+
if (typeof ref === "string") {
|
|
261
|
+
const [service, ...entryParts] = ref.split(".");
|
|
262
|
+
return { service: service ?? "", name: entryParts.join(".") };
|
|
263
|
+
}
|
|
264
|
+
return { service: ref.service, name: ref.name };
|
|
265
|
+
}
|
|
266
|
+
|
|
182
267
|
class ForgeHttpClient implements ForgeClient {
|
|
183
268
|
lastTraceId?: string;
|
|
184
269
|
|
|
@@ -192,6 +277,18 @@ class ForgeHttpClient implements ForgeClient {
|
|
|
192
277
|
return this.invoke("commands", name, args);
|
|
193
278
|
}
|
|
194
279
|
|
|
280
|
+
commandResult(name: string, args: unknown): Promise<ForgeCommandResult<unknown>> {
|
|
281
|
+
return this.invokeResult("commands", name, args);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
externalQuery(name: ExternalQueryRef, args: unknown): Promise<unknown> {
|
|
285
|
+
return this.invokeExternal("queries", name, args);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
externalCommand(name: ExternalCommandRef, args: unknown): Promise<unknown> {
|
|
289
|
+
return this.invokeExternal("commands", name, args);
|
|
290
|
+
}
|
|
291
|
+
|
|
195
292
|
liveQuery(
|
|
196
293
|
name: string,
|
|
197
294
|
args: unknown,
|
|
@@ -223,10 +320,117 @@ class ForgeHttpClient implements ForgeClient {
|
|
|
223
320
|
name: string,
|
|
224
321
|
args: unknown,
|
|
225
322
|
): Promise<unknown> {
|
|
323
|
+
const result = await this.invokeResult(kind, name, args);
|
|
324
|
+
if (!result.ok) {
|
|
325
|
+
throw new ForgeError(result.error.message, {
|
|
326
|
+
code: result.error.code,
|
|
327
|
+
traceId: result.traceId,
|
|
328
|
+
status: result.status,
|
|
329
|
+
details: result.error.details ?? result.diagnostics,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
return result.result;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
private async invokeResult(
|
|
336
|
+
kind: "queries" | "commands",
|
|
337
|
+
name: string,
|
|
338
|
+
args: unknown,
|
|
339
|
+
): Promise<ForgeCommandResult<unknown>> {
|
|
226
340
|
const baseUrl = this.config.url.replace(/\\/$/, "");
|
|
227
341
|
const url = \`\${baseUrl}/\${kind}/\${encodeURIComponent(name)}\`;
|
|
228
342
|
const authHeaders = await resolveAuthHeaders(this.config.auth);
|
|
229
343
|
|
|
344
|
+
let response: Response;
|
|
345
|
+
try {
|
|
346
|
+
response = await fetch(url, {
|
|
347
|
+
method: "POST",
|
|
348
|
+
headers: {
|
|
349
|
+
"Content-Type": "application/json",
|
|
350
|
+
...authHeaders,
|
|
351
|
+
},
|
|
352
|
+
body: JSON.stringify({ args }),
|
|
353
|
+
});
|
|
354
|
+
} catch (error) {
|
|
355
|
+
return {
|
|
356
|
+
ok: false,
|
|
357
|
+
status: 0,
|
|
358
|
+
error: {
|
|
359
|
+
code: "FORGE_NETWORK_ERROR",
|
|
360
|
+
message: error instanceof Error ? error.message : "network request failed",
|
|
361
|
+
details: error,
|
|
362
|
+
},
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
let body: unknown;
|
|
367
|
+
try {
|
|
368
|
+
body = await response.json();
|
|
369
|
+
} catch {
|
|
370
|
+
return {
|
|
371
|
+
ok: false,
|
|
372
|
+
status: response.status,
|
|
373
|
+
error: {
|
|
374
|
+
code: "FORGE_HTTP_ERROR",
|
|
375
|
+
message: \`HTTP \${response.status}\`,
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
const payload = parseJsonPayload(body);
|
|
381
|
+
this.lastTraceId = payload.traceId;
|
|
382
|
+
|
|
383
|
+
if (!response.ok || payload.ok === false) {
|
|
384
|
+
const diagnostic = payload.diagnostics?.find((entry) => entry.code);
|
|
385
|
+
const code =
|
|
386
|
+
payload.error?.code ?? diagnostic?.code ?? "FORGE_REQUEST_FAILED";
|
|
387
|
+
const message =
|
|
388
|
+
payload.error?.message ??
|
|
389
|
+
diagnostic?.message ??
|
|
390
|
+
\`Request failed with status \${response.status}\`;
|
|
391
|
+
return {
|
|
392
|
+
ok: false,
|
|
393
|
+
status: response.status,
|
|
394
|
+
traceId: payload.traceId,
|
|
395
|
+
diagnostics: payload.diagnostics,
|
|
396
|
+
error: {
|
|
397
|
+
code,
|
|
398
|
+
message,
|
|
399
|
+
details: payload.error?.details ?? payload.diagnostics,
|
|
400
|
+
},
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return {
|
|
405
|
+
ok: true,
|
|
406
|
+
result: payload.result,
|
|
407
|
+
status: response.status,
|
|
408
|
+
traceId: payload.traceId,
|
|
409
|
+
diagnostics: payload.diagnostics,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
private async invokeExternal(
|
|
414
|
+
kind: "queries" | "commands",
|
|
415
|
+
name: ExternalCommandRef | ExternalQueryRef,
|
|
416
|
+
args: unknown,
|
|
417
|
+
): Promise<unknown> {
|
|
418
|
+
const normalized = normalizeExternalRef(name);
|
|
419
|
+
const serviceName = normalized.service;
|
|
420
|
+
const entryName = normalized.name;
|
|
421
|
+
if (!serviceName || !entryName) {
|
|
422
|
+
throw new ForgeError(\`External runtime name must be service.entry\`, {
|
|
423
|
+
code: "FORGE_EXTERNAL_RUNTIME_NOT_FOUND",
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
const baseUrl = this.config.url.replace(/\\/$/, "");
|
|
427
|
+
const url = \`\${baseUrl}/external/\${encodeURIComponent(serviceName)}/\${kind}/\${encodeURIComponent(entryName)}\`;
|
|
428
|
+
return this.invokeUrl(url, args);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
private async invokeUrl(url: string, args: unknown): Promise<unknown> {
|
|
432
|
+
const authHeaders = await resolveAuthHeaders(this.config.auth);
|
|
433
|
+
|
|
230
434
|
const response = await fetch(url, {
|
|
231
435
|
method: "POST",
|
|
232
436
|
headers: {
|
|
@@ -297,19 +501,24 @@ class ForgeHttpClient implements ForgeClient {
|
|
|
297
501
|
const reader = response.body.getReader();
|
|
298
502
|
let buffer = "";
|
|
299
503
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
504
|
+
try {
|
|
505
|
+
while (!signal.aborted) {
|
|
506
|
+
const { done, value } = await reader.read();
|
|
507
|
+
if (done) {
|
|
508
|
+
break;
|
|
509
|
+
}
|
|
510
|
+
buffer += decoder.decode(value, { stream: true });
|
|
511
|
+
let boundary = buffer.indexOf("\\n\\n");
|
|
512
|
+
while (boundary !== -1) {
|
|
513
|
+
const frame = buffer.slice(0, boundary);
|
|
514
|
+
buffer = buffer.slice(boundary + 2);
|
|
515
|
+
this.handleSseFrame(frame, onSnapshot, onError);
|
|
516
|
+
boundary = buffer.indexOf("\\n\\n");
|
|
517
|
+
}
|
|
312
518
|
}
|
|
519
|
+
} finally {
|
|
520
|
+
await reader.cancel().catch(() => undefined);
|
|
521
|
+
reader.releaseLock();
|
|
313
522
|
}
|
|
314
523
|
}
|
|
315
524
|
|
|
@@ -383,8 +592,11 @@ export type {
|
|
|
383
592
|
ForgeReactAuthProvider,
|
|
384
593
|
ForgeReactClient,
|
|
385
594
|
ForgeReactError,
|
|
595
|
+
ForgeCommandCallResult,
|
|
386
596
|
UseCommandOptions,
|
|
387
597
|
UseCommandResult,
|
|
598
|
+
UseCommandResultHook,
|
|
599
|
+
UseCommandResultOptions,
|
|
388
600
|
UseLiveQueryOptions,
|
|
389
601
|
UseLiveQueryResult,
|
|
390
602
|
UseQueryOptions,
|
|
@@ -398,6 +610,7 @@ export const useForgeClient = forgeReact.useForgeClient;
|
|
|
398
610
|
export const useAuth = forgeReact.useAuth;
|
|
399
611
|
export const useQuery = forgeReact.useQuery;
|
|
400
612
|
export const useCommand = forgeReact.useCommand;
|
|
613
|
+
export const useCommandResult = forgeReact.useCommandResult;
|
|
401
614
|
export const useLiveQuery = forgeReact.useLiveQuery;
|
|
402
615
|
`;
|
|
403
616
|
}
|
|
@@ -410,8 +623,11 @@ export function renderReactDts(): string {
|
|
|
410
623
|
ForgeReactAuthProvider,
|
|
411
624
|
ForgeReactClient,
|
|
412
625
|
ForgeReactError,
|
|
626
|
+
ForgeCommandCallResult,
|
|
413
627
|
UseCommandOptions,
|
|
414
628
|
UseCommandResult,
|
|
629
|
+
UseCommandResultHook,
|
|
630
|
+
UseCommandResultOptions,
|
|
415
631
|
UseLiveQueryOptions,
|
|
416
632
|
UseLiveQueryResult,
|
|
417
633
|
UseQueryOptions,
|
|
@@ -423,6 +639,7 @@ export declare const useForgeClient: import("forge/react").ForgeReactBindings["u
|
|
|
423
639
|
export declare const useAuth: import("forge/react").ForgeReactBindings["useAuth"];
|
|
424
640
|
export declare const useQuery: import("forge/react").ForgeReactBindings["useQuery"];
|
|
425
641
|
export declare const useCommand: import("forge/react").ForgeReactBindings["useCommand"];
|
|
642
|
+
export declare const useCommandResult: import("forge/react").ForgeReactBindings["useCommandResult"];
|
|
426
643
|
export declare const useLiveQuery: import("forge/react").ForgeReactBindings["useLiveQuery"];
|
|
427
644
|
`;
|
|
428
645
|
}
|
|
@@ -430,3 +647,68 @@ export declare const useLiveQuery: import("forge/react").ForgeReactBindings["use
|
|
|
430
647
|
export function renderReactManifestTs(manifest: ReactManifest): string {
|
|
431
648
|
return `export const reactManifest = ${JSON.stringify(manifest, null, 2)} as const;\n`;
|
|
432
649
|
}
|
|
650
|
+
|
|
651
|
+
export function renderVueTs(): string {
|
|
652
|
+
return `import { createForgeVueBindings } from "forge/vue";
|
|
653
|
+
import { createForgeClient } from "./client.ts";
|
|
654
|
+
|
|
655
|
+
export type {
|
|
656
|
+
ForgeDevAuthConfig,
|
|
657
|
+
ForgeVueAuth,
|
|
658
|
+
ForgeVueAuthProvider,
|
|
659
|
+
ForgeVueBindings,
|
|
660
|
+
ForgeVueClient,
|
|
661
|
+
ForgeVueClientConfig,
|
|
662
|
+
ForgeVueError,
|
|
663
|
+
ForgeVuePluginOptions,
|
|
664
|
+
UseForgeCommandOptions,
|
|
665
|
+
UseForgeCommandResult,
|
|
666
|
+
UseForgeLiveQueryOptions,
|
|
667
|
+
UseForgeLiveQueryResult,
|
|
668
|
+
UseForgeQueryOptions,
|
|
669
|
+
UseForgeQueryResult,
|
|
670
|
+
} from "forge/vue";
|
|
671
|
+
|
|
672
|
+
const forgeVue = createForgeVueBindings(createForgeClient);
|
|
673
|
+
|
|
674
|
+
export const ForgeVuePlugin = forgeVue.ForgeVuePlugin;
|
|
675
|
+
export const provideForge = forgeVue.provideForge;
|
|
676
|
+
export const useForgeClient = forgeVue.useForgeClient;
|
|
677
|
+
export const useForgeAuth = forgeVue.useForgeAuth;
|
|
678
|
+
export const useForgeQuery = forgeVue.useForgeQuery;
|
|
679
|
+
export const useForgeCommand = forgeVue.useForgeCommand;
|
|
680
|
+
export const useForgeLiveQuery = forgeVue.useForgeLiveQuery;
|
|
681
|
+
`;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
export function renderVueDts(): string {
|
|
685
|
+
return `export type {
|
|
686
|
+
ForgeDevAuthConfig,
|
|
687
|
+
ForgeVueAuth,
|
|
688
|
+
ForgeVueAuthProvider,
|
|
689
|
+
ForgeVueBindings,
|
|
690
|
+
ForgeVueClient,
|
|
691
|
+
ForgeVueClientConfig,
|
|
692
|
+
ForgeVueError,
|
|
693
|
+
ForgeVuePluginOptions,
|
|
694
|
+
UseForgeCommandOptions,
|
|
695
|
+
UseForgeCommandResult,
|
|
696
|
+
UseForgeLiveQueryOptions,
|
|
697
|
+
UseForgeLiveQueryResult,
|
|
698
|
+
UseForgeQueryOptions,
|
|
699
|
+
UseForgeQueryResult,
|
|
700
|
+
} from "forge/vue";
|
|
701
|
+
|
|
702
|
+
export declare const ForgeVuePlugin: import("forge/vue").ForgeVueBindings["ForgeVuePlugin"];
|
|
703
|
+
export declare const provideForge: import("forge/vue").ForgeVueBindings["provideForge"];
|
|
704
|
+
export declare const useForgeClient: import("forge/vue").ForgeVueBindings["useForgeClient"];
|
|
705
|
+
export declare const useForgeAuth: import("forge/vue").ForgeVueBindings["useForgeAuth"];
|
|
706
|
+
export declare const useForgeQuery: import("forge/vue").ForgeVueBindings["useForgeQuery"];
|
|
707
|
+
export declare const useForgeCommand: import("forge/vue").ForgeVueBindings["useForgeCommand"];
|
|
708
|
+
export declare const useForgeLiveQuery: import("forge/vue").ForgeVueBindings["useForgeLiveQuery"];
|
|
709
|
+
`;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
export function renderVueManifestTs(manifest: VueManifest): string {
|
|
713
|
+
return `export const vueManifest = ${JSON.stringify(manifest, null, 2)} as const;\n`;
|
|
714
|
+
}
|