forgeos 0.1.0-alpha.2 → 0.1.0-alpha.3
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 +38 -3
- package/README.md +6 -5
- package/package.json +5 -4
- 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 +183 -50
- package/src/forge/_generated/agentQuickstart.md +3 -1
- package/src/forge/_generated/agentTools.json +2 -0
- package/src/forge/_generated/agentTools.md +16 -0
- package/src/forge/_generated/agentTools.ts +12 -0
- package/src/forge/_generated/aiContext.ts +67 -1
- package/src/forge/_generated/aiModels.json +2 -2
- package/src/forge/_generated/aiModels.ts +17 -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 +7 -5
- package/src/forge/_generated/api.json +2 -2
- package/src/forge/_generated/api.ts +1 -1
- package/src/forge/_generated/appGraph.json +2 -2
- package/src/forge/_generated/appGraph.ts +288 -180
- package/src/forge/_generated/appMap.md +21 -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 +1 -1
- package/src/forge/_generated/clientApi.ts +1 -1
- package/src/forge/_generated/clientManifest.json +2 -2
- package/src/forge/_generated/clientManifest.ts +3 -3
- package/src/forge/_generated/clientTypes.ts +1 -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 +18 -3
- package/src/forge/_generated/envSchema.json +1 -1
- package/src/forge/_generated/envSchema.ts +1 -1
- 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 +16 -2
- package/src/forge/_generated/makeTemplates.json +2 -2
- package/src/forge/_generated/makeTemplates.ts +6 -1
- package/src/forge/_generated/mockMap.json +1 -1
- package/src/forge/_generated/mockMap.ts +1 -1
- package/src/forge/_generated/operationPlaybooks.md +34 -14
- package/src/forge/_generated/packageGraph.json +2 -2
- package/src/forge/_generated/packageGraph.ts +8808 -4723
- 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 +2 -2
- package/src/forge/_generated/runtimeMatrix.ts +8684 -1939
- package/src/forge/_generated/runtimeRegistry.ts +1 -1
- package/src/forge/_generated/runtimeRules.md +13 -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 +1 -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 +17 -7
- 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/cli/ai.ts +186 -1
- package/src/forge/cli/commands.ts +5 -0
- package/src/forge/cli/parse.ts +30 -3
- package/src/forge/compiler/agent-contract/build.ts +281 -8
- package/src/forge/compiler/agent-contract/types.ts +41 -0
- package/src/forge/compiler/ai-registry/build.ts +62 -1
- package/src/forge/compiler/ai-registry/constants.ts +1 -1
- package/src/forge/compiler/ai-registry/parse.ts +98 -4
- package/src/forge/compiler/app-graph/forge-apis.ts +1 -0
- package/src/forge/compiler/dev-manifest/build.ts +3 -0
- package/src/forge/compiler/make-registry/build.ts +13 -0
- package/src/forge/compiler/orchestrator/plan.ts +11 -0
- package/src/forge/compiler/orchestrator/serialize.ts +68 -0
- package/src/forge/compiler/types/ai-registry.ts +25 -1
- package/src/forge/compiler/types/app-graph.ts +1 -0
- package/src/forge/compiler/types/cli.ts +1 -0
- package/src/forge/compiler/types/dev-manifest.ts +3 -0
- package/src/forge/dev/server.ts +508 -1
- package/src/forge/make/index.ts +126 -3
- package/src/forge/make/templates.ts +188 -0
- package/src/forge/make/types.ts +1 -0
- package/src/forge/runtime/ai/context.ts +210 -5
- package/src/forge/runtime/ai/types.ts +70 -0
- package/src/forge/runtime/context/create-context.ts +30 -6
- package/src/forge/server.ts +82 -0
- package/src/forge/version.ts +1 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=dde1c607540ce0e2bbe022af128639deef1eb84a01e094935fa3ac7e193f6ea6
|
|
2
2
|
export const makeRegistry = {
|
|
3
3
|
"commands": [
|
|
4
4
|
"forge make list --json",
|
|
5
5
|
"forge make explain <primitive> --json",
|
|
6
6
|
"forge make ui --framework vite --dry-run --json",
|
|
7
|
+
"forge make ai-chat support --dry-run --json",
|
|
7
8
|
"forge make resource <name> --fields title:text,status:enum(open,closed) --dry-run --json",
|
|
8
9
|
"forge make resource <name> --fields title:text --with-ui --yes",
|
|
9
10
|
"forge make apply <planId>",
|
|
10
11
|
"forge make rollback <planId>"
|
|
11
12
|
],
|
|
12
|
-
"generatorVersion": "0.1.0-alpha.
|
|
13
|
+
"generatorVersion": "0.1.0-alpha.3",
|
|
13
14
|
"planDirectory": ".forge/make-plans",
|
|
14
15
|
"primitives": [
|
|
15
16
|
{
|
|
@@ -139,6 +140,19 @@ export const makeRegistry = {
|
|
|
139
140
|
"name": "ui",
|
|
140
141
|
"summary": "Add a Vite React frontend shell with ForgeProvider devAuth and a generated client bridge."
|
|
141
142
|
},
|
|
143
|
+
{
|
|
144
|
+
"creates": [
|
|
145
|
+
"src/ai/<name>Agent.ts",
|
|
146
|
+
"web/components/<Name>AiChat.tsx",
|
|
147
|
+
"web/app/<name>-ai/page.tsx when web/app exists"
|
|
148
|
+
],
|
|
149
|
+
"examples": [
|
|
150
|
+
"forge make ai-chat support --yes"
|
|
151
|
+
],
|
|
152
|
+
"modifies": [],
|
|
153
|
+
"name": "ai-chat",
|
|
154
|
+
"summary": "Add a Forge AI agent and React chat component backed by /ai/agents/run."
|
|
155
|
+
},
|
|
142
156
|
{
|
|
143
157
|
"creates": [
|
|
144
158
|
"src/commands/*",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
2
|
-
{"schemaVersion":"0.1.0","templates":[{"name":"schema-table","outputPattern":"src/forge/schema.ts","sourceKind":"schema"},{"name":"policy","outputPattern":"src/policies.ts","sourceKind":"policy"},{"name":"command","outputPattern":"src/commands/<name>.ts","sourceKind":"runtime"},{"name":"query","outputPattern":"src/queries/<name>.ts","sourceKind":"runtime"},{"name":"livequery","outputPattern":"src/queries/live<Name>.ts","sourceKind":"runtime"},{"name":"action","outputPattern":"src/actions/<name>.ts","sourceKind":"runtime"},{"name":"workflow","outputPattern":"src/workflows/<name>.ts","sourceKind":"runtime"},{"name":"component","outputPattern":"web/components/<name>.tsx","sourceKind":"frontend"},{"name":"page","outputPattern":"web/app/<route>/page.tsx","sourceKind":"frontend"},{"name":"ui","outputPattern":"web/src/App.tsx","sourceKind":"frontend"},{"name":"placeholder-test","outputPattern":"tests/make-generated/<name>.test.ts","sourceKind":"test"}]}
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=10dbc136889e8edfea67f3f41e7820590b0c52914b15184dfab1d58579353bd9
|
|
2
|
+
{"schemaVersion":"0.1.0","templates":[{"name":"schema-table","outputPattern":"src/forge/schema.ts","sourceKind":"schema"},{"name":"policy","outputPattern":"src/policies.ts","sourceKind":"policy"},{"name":"command","outputPattern":"src/commands/<name>.ts","sourceKind":"runtime"},{"name":"query","outputPattern":"src/queries/<name>.ts","sourceKind":"runtime"},{"name":"livequery","outputPattern":"src/queries/live<Name>.ts","sourceKind":"runtime"},{"name":"action","outputPattern":"src/actions/<name>.ts","sourceKind":"runtime"},{"name":"workflow","outputPattern":"src/workflows/<name>.ts","sourceKind":"runtime"},{"name":"component","outputPattern":"web/components/<name>.tsx","sourceKind":"frontend"},{"name":"page","outputPattern":"web/app/<route>/page.tsx","sourceKind":"frontend"},{"name":"ui","outputPattern":"web/src/App.tsx","sourceKind":"frontend"},{"name":"ai-chat","outputPattern":"web/components/<name>AiChat.tsx","sourceKind":"frontend"},{"name":"placeholder-test","outputPattern":"tests/make-generated/<name>.test.ts","sourceKind":"test"}]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=d77484c9887220010cac51e14aaa010154cd261244eea7bf22a2aaaedca6afb4
|
|
2
2
|
export const makeTemplates = {
|
|
3
3
|
"schemaVersion": "0.1.0",
|
|
4
4
|
"templates": [
|
|
@@ -52,6 +52,11 @@ export const makeTemplates = {
|
|
|
52
52
|
"outputPattern": "web/src/App.tsx",
|
|
53
53
|
"sourceKind": "frontend"
|
|
54
54
|
},
|
|
55
|
+
{
|
|
56
|
+
"name": "ai-chat",
|
|
57
|
+
"outputPattern": "web/components/<name>AiChat.tsx",
|
|
58
|
+
"sourceKind": "frontend"
|
|
59
|
+
},
|
|
55
60
|
{
|
|
56
61
|
"name": "placeholder-test",
|
|
57
62
|
"outputPattern": "tests/make-generated/<name>.test.ts",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=ce79e45d4228d202a492670aa76f238986b5500c8bb53774b328c216a1ccc6d8
|
|
2
2
|
{"entries":[{"mockFile":"src/forge/_generated/testkits/ai.anthropic.mock.ts","packageName":"@ai-sdk/anthropic"},{"mockFile":"src/forge/_generated/testkits/ai.openai.mock.ts","packageName":"@ai-sdk/openai"},{"mockFile":"src/forge/_generated/testkits/ai.gateway.mock.ts","packageName":"ai"},{"mockFile":"src/forge/_generated/testkits/zod.mock.ts","packageName":"zod"}]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=4c569da5df387f6bb7fe7fd94d42b4cc6b05f5218ab0bc129d9637c184625057
|
|
2
2
|
export const mockMap = {
|
|
3
3
|
"@ai-sdk/anthropic": "src/forge/_generated/testkits/ai.anthropic.mock.ts",
|
|
4
4
|
"@ai-sdk/openai": "src/forge/_generated/testkits/ai.openai.mock.ts",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @forge-generated generator=0.1.0-alpha.
|
|
1
|
+
// @forge-generated generator=0.1.0-alpha.3 input=c6d07cc92a729a46f2ff02a05c005e7fe0d71a3a5800be6f670a3fca2db04d6f content=58dad7f03d9e378e327fddb0676d079950c8f000752667cffb022f3b7e217265
|
|
2
2
|
# Operation Playbooks
|
|
3
3
|
|
|
4
4
|
## Choose the right workflow
|
|
@@ -39,6 +39,24 @@
|
|
|
39
39
|
4. Check that _forge_live_invalidations has revisions newer than the last sent snapshot.
|
|
40
40
|
5. Reconnect with Last-Event-ID or ?lastRevision=<revision> to verify resume behavior.
|
|
41
41
|
|
|
42
|
+
## Add an AI tool
|
|
43
|
+
|
|
44
|
+
1. Add a server-only file under src/ai or src/tools.
|
|
45
|
+
2. Export aiTool({ description, inputSchema, outputSchema, risk, needsApproval, handler }).
|
|
46
|
+
3. Use zod schemas for inputSchema and outputSchema.
|
|
47
|
+
4. Access secrets through the tool context, not process.env.
|
|
48
|
+
5. Mark destructive or external side effects with risk and needsApproval.
|
|
49
|
+
6. Run forge generate and inspect src/forge/_generated/aiRegistry.json.
|
|
50
|
+
|
|
51
|
+
## Add an agent
|
|
52
|
+
|
|
53
|
+
1. Export agent({ provider, model, instructions, tools, stopWhen }) from server-only source.
|
|
54
|
+
2. Prefer AI SDK ToolLoopAgent semantics through ctx.agent.run or ctx.ai.runAgent instead of custom loops.
|
|
55
|
+
3. Use stopWhen with stepCount or terminal tool calls to prevent unbounded loops.
|
|
56
|
+
4. Run agents only in actions, workflows, endpoints, or server code.
|
|
57
|
+
5. Run forge inspect all --json and confirm agentContract.ai.agents lists the agent.
|
|
58
|
+
6. Use forge ai trace <traceId> --json to inspect agent runs and tool calls.
|
|
59
|
+
|
|
42
60
|
## Add a table
|
|
43
61
|
|
|
44
62
|
1. Edit src/forge/schema.ts.
|
|
@@ -67,13 +85,14 @@
|
|
|
67
85
|
## Safely refactor a feature
|
|
68
86
|
|
|
69
87
|
1. Run forge refactor rename field <table.field> <table.field> --dry-run --json.
|
|
70
|
-
2.
|
|
71
|
-
3.
|
|
72
|
-
4.
|
|
73
|
-
5.
|
|
74
|
-
6.
|
|
75
|
-
7.
|
|
76
|
-
8. Run forge
|
|
88
|
+
2. Run forge refactor rename command <oldName> <newName> --dry-run --json when renaming runtime entrypoints.
|
|
89
|
+
3. Rename codemods are AST-aware for extract-action, rename command, rename field, and rename table.
|
|
90
|
+
4. Field renames are scoped to the target table, so tickets.priority only rewrites references linked to tickets.
|
|
91
|
+
5. Review filesToModify, migrationPlan, diagnostics, and risk.
|
|
92
|
+
6. Use --allow-high-risk only for intentional high-risk refactors.
|
|
93
|
+
7. Apply with forge refactor rename field <table.field> <table.field> --yes.
|
|
94
|
+
8. Run forge generate.
|
|
95
|
+
9. Run forge verify --strict.
|
|
77
96
|
|
|
78
97
|
## Plan impact-based tests
|
|
79
98
|
|
|
@@ -126,12 +145,13 @@
|
|
|
126
145
|
## Add or update frontend
|
|
127
146
|
|
|
128
147
|
1. Run forge make ui --framework vite --dry-run --json when the app does not have a web root.
|
|
129
|
-
2.
|
|
130
|
-
3.
|
|
131
|
-
4.
|
|
132
|
-
5.
|
|
133
|
-
6. Run forge
|
|
134
|
-
7. Run forge
|
|
148
|
+
2. Run forge make ai-chat support --dry-run --json to add a chat surface backed by /ai/agents/chat streaming and /ai/agents/run JSON automation.
|
|
149
|
+
3. Use web/lib/forge.ts as the generated client bridge.
|
|
150
|
+
4. Mount ForgeProvider once in the web app provider/layout layer; use devAuth for local development.
|
|
151
|
+
5. Use useQuery, useCommand, and useLiveQuery instead of raw /commands or /queries fetches.
|
|
152
|
+
6. Run forge generate so frontendGraph and agentContract include routes and bindings.
|
|
153
|
+
7. Run forge inspect capabilities --json to confirm UI actions map to runtime capabilities.
|
|
154
|
+
8. Run forge dev --once --json and forge doctor --json.
|
|
135
155
|
|
|
136
156
|
## Self-host
|
|
137
157
|
|