forgeos 0.1.0-alpha.4 → 0.1.0-alpha.41

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.
Files changed (416) hide show
  1. package/.npmignore +10 -0
  2. package/AGENTS.md +142 -90
  3. package/CHANGELOG.md +433 -0
  4. package/LICENSE +21 -0
  5. package/README.md +67 -8
  6. package/adapters/go/README.md +23 -0
  7. package/adapters/go/go.mod +3 -0
  8. package/adapters/go/http.go +149 -0
  9. package/adapters/go/registry.go +234 -0
  10. package/adapters/go/types.go +136 -0
  11. package/adapters/java/README.md +68 -0
  12. package/adapters/java/pom.xml +34 -0
  13. package/adapters/java/src/main/java/dev/forgeos/adapter/Auth.java +20 -0
  14. package/adapters/java/src/main/java/dev/forgeos/adapter/Diagnostic.java +16 -0
  15. package/adapters/java/src/main/java/dev/forgeos/adapter/Entry.java +38 -0
  16. package/adapters/java/src/main/java/dev/forgeos/adapter/EntryKind.java +16 -0
  17. package/adapters/java/src/main/java/dev/forgeos/adapter/ErrorInfo.java +4 -0
  18. package/adapters/java/src/main/java/dev/forgeos/adapter/Forge.java +94 -0
  19. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeCall.java +12 -0
  20. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeContext.java +11 -0
  21. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHandler.java +8 -0
  22. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHttpHandler.java +179 -0
  23. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeRegistry.java +121 -0
  24. package/adapters/java/src/main/java/dev/forgeos/adapter/Json.java +14 -0
  25. package/adapters/java/src/main/java/dev/forgeos/adapter/Manifest.java +14 -0
  26. package/adapters/java/src/main/java/dev/forgeos/adapter/RequestEnvelope.java +6 -0
  27. package/adapters/java/src/main/java/dev/forgeos/adapter/ResponseEnvelope.java +25 -0
  28. package/adapters/java/src/main/java/dev/forgeos/adapter/Risk.java +18 -0
  29. package/adapters/java/src/main/java/dev/forgeos/adapter/Schemas.java +36 -0
  30. package/adapters/java/src/main/java/dev/forgeos/adapter/Service.java +65 -0
  31. package/adapters/java/src/main/java/dev/forgeos/adapter/TransactionMode.java +18 -0
  32. package/adapters/java/src/main/java/dev/forgeos/adapter/TypedForgeHandler.java +6 -0
  33. package/adapters/java-spring-boot-starter/README.md +32 -0
  34. package/adapters/java-spring-boot-starter/pom.xml +36 -0
  35. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeCommand.java +22 -0
  36. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeExternalService.java +15 -0
  37. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeQuery.java +16 -0
  38. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeServiceBeanCondition.java +18 -0
  39. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringAutoConfiguration.java +16 -0
  40. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringRuntime.java +104 -0
  41. package/adapters/java-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +1 -0
  42. package/bin/forge.mjs +18 -0
  43. package/docs/cair-protocol.md +103 -0
  44. package/docs/changelog.md +548 -0
  45. package/docs/forge-protocol.md +189 -0
  46. package/examples/go-billing/go.mod +7 -0
  47. package/examples/go-billing/main.go +120 -0
  48. package/examples/java-billing/pom.xml +52 -0
  49. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/CreateInvoiceInput.java +4 -0
  50. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Invoice.java +11 -0
  51. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Main.java +127 -0
  52. package/package.json +31 -3
  53. package/schemas/forge-manifest.schema.json +57 -0
  54. package/src/forge/_generated/releaseManifest.json +1 -2
  55. package/src/forge/_generated/releaseManifest.ts +3 -3
  56. package/src/forge/agent-adapters/index.ts +1584 -125
  57. package/src/forge/agent-adapters/types.ts +224 -1
  58. package/src/forge/agent-memory/bridge.ts +1333 -0
  59. package/src/forge/agent-memory/context-pack.ts +277 -0
  60. package/src/forge/agent-memory/hook-runner.ts +312 -0
  61. package/src/forge/agent-memory/mcp.ts +224 -0
  62. package/src/forge/agent-memory/normalize.ts +498 -0
  63. package/src/forge/agent-memory/redaction.ts +103 -0
  64. package/src/forge/agent-memory/sources/claude-code.ts +51 -0
  65. package/src/forge/agent-memory/sources/codex-hook-runner.mjs +273 -0
  66. package/src/forge/agent-memory/sources/codex.ts +119 -0
  67. package/src/forge/agent-memory/sources/cursor.ts +35 -0
  68. package/src/forge/agent-memory/types.ts +204 -0
  69. package/src/forge/bench.ts +248 -0
  70. package/src/forge/brownfield-import/index.ts +801 -0
  71. package/src/forge/brownfield-import/types.ts +127 -0
  72. package/src/forge/cair/action-journal.ts +61 -0
  73. package/src/forge/cair/action-parser.ts +314 -0
  74. package/src/forge/cair/action-validator.ts +40 -0
  75. package/src/forge/cair/actions.ts +1818 -0
  76. package/src/forge/cair/format.ts +77 -0
  77. package/src/forge/cair/index.ts +106 -0
  78. package/src/forge/cair/query.ts +478 -0
  79. package/src/forge/cair/snapshot.ts +315 -0
  80. package/src/forge/cair/types.ts +248 -0
  81. package/src/forge/cli/ai.ts +339 -21
  82. package/src/forge/cli/auth.ts +348 -10
  83. package/src/forge/cli/authmd.ts +441 -0
  84. package/src/forge/cli/baseline.ts +112 -0
  85. package/src/forge/cli/build.ts +20 -4
  86. package/src/forge/cli/changed.ts +437 -0
  87. package/src/forge/cli/codex-app-server.ts +877 -0
  88. package/src/forge/cli/commands.ts +1620 -20
  89. package/src/forge/cli/db.ts +209 -2
  90. package/src/forge/cli/deploy.ts +887 -0
  91. package/src/forge/cli/deps.ts +82 -13
  92. package/src/forge/cli/dev.ts +961 -46
  93. package/src/forge/cli/docs.ts +265 -0
  94. package/src/forge/cli/doctor.ts +297 -0
  95. package/src/forge/cli/field-test.ts +329 -0
  96. package/src/forge/cli/handoff.ts +336 -0
  97. package/src/forge/cli/index.ts +1 -0
  98. package/src/forge/cli/last-run.ts +84 -0
  99. package/src/forge/cli/main.ts +107 -3
  100. package/src/forge/cli/new.ts +152 -13
  101. package/src/forge/cli/next-actions.ts +23 -0
  102. package/src/forge/cli/output.ts +389 -6
  103. package/src/forge/cli/parse.ts +1050 -34
  104. package/src/forge/cli/progress.ts +51 -0
  105. package/src/forge/cli/query.ts +32 -0
  106. package/src/forge/cli/release.ts +35 -11
  107. package/src/forge/cli/rls.ts +43 -4
  108. package/src/forge/cli/run.ts +41 -0
  109. package/src/forge/cli/security.ts +112 -0
  110. package/src/forge/cli/self-host.ts +56 -14
  111. package/src/forge/cli/studio.ts +2218 -0
  112. package/src/forge/cli/verify.ts +1455 -32
  113. package/src/forge/cli/windows.ts +23 -0
  114. package/src/forge/cli/workos.ts +1020 -0
  115. package/src/forge/compiler/agent-contract/build.ts +670 -64
  116. package/src/forge/compiler/agent-contract/types.ts +45 -2
  117. package/src/forge/compiler/ai-registry/parse.ts +71 -2
  118. package/src/forge/compiler/api-surface/build.ts +47 -0
  119. package/src/forge/compiler/app-graph/build.ts +112 -9
  120. package/src/forge/compiler/app-graph/extract.ts +107 -0
  121. package/src/forge/compiler/app-graph/module-graph.ts +73 -78
  122. package/src/forge/compiler/app-graph/parser.ts +24 -24
  123. package/src/forge/compiler/app-graph/profile.ts +26 -0
  124. package/src/forge/compiler/app-graph/versions.ts +1 -1
  125. package/src/forge/compiler/classifier/capabilities.ts +3 -2
  126. package/src/forge/compiler/classifier/classify.ts +32 -8
  127. package/src/forge/compiler/classifier/secrets.ts +3 -2
  128. package/src/forge/compiler/classifier/signals.ts +91 -1
  129. package/src/forge/compiler/client-sdk/build-manifest.ts +59 -0
  130. package/src/forge/compiler/client-sdk/render-client.ts +295 -13
  131. package/src/forge/compiler/data-graph/parse.ts +20 -4
  132. package/src/forge/compiler/data-graph/sql/ddl.ts +144 -31
  133. package/src/forge/compiler/data-graph/sql/serialize.ts +4 -0
  134. package/src/forge/compiler/data-graph/sql/types.ts +1 -0
  135. package/src/forge/compiler/diagnostics/codes.ts +30 -0
  136. package/src/forge/compiler/diagnostics/create.ts +21 -2
  137. package/src/forge/compiler/diagnostics/index.ts +2 -0
  138. package/src/forge/compiler/emitter/barrel.ts +3 -0
  139. package/src/forge/compiler/emitter/render.ts +9 -0
  140. package/src/forge/compiler/external-manifest/registry.ts +205 -0
  141. package/src/forge/compiler/external-manifest/types.ts +91 -0
  142. package/src/forge/compiler/external-manifest/validate.ts +373 -0
  143. package/src/forge/compiler/frontend-graph/build.ts +142 -14
  144. package/src/forge/compiler/integration/add.ts +618 -24
  145. package/src/forge/compiler/integration/plan.ts +43 -12
  146. package/src/forge/compiler/integration/render.ts +29 -0
  147. package/src/forge/compiler/integration/snapshot.ts +2 -0
  148. package/src/forge/compiler/integration/templates/convex.ts +70 -0
  149. package/src/forge/compiler/integration/templates/index.ts +1 -0
  150. package/src/forge/compiler/integration/templates/render.ts +38 -0
  151. package/src/forge/compiler/integration/templates/types.ts +3 -0
  152. package/src/forge/compiler/integration/templates/workos.ts +1219 -0
  153. package/src/forge/compiler/make-registry/build.ts +8 -9
  154. package/src/forge/compiler/orchestrator/fast-check.ts +4 -0
  155. package/src/forge/compiler/orchestrator/generate-lock.ts +14 -3
  156. package/src/forge/compiler/orchestrator/manifest.ts +1 -1
  157. package/src/forge/compiler/orchestrator/plan-profile.ts +23 -0
  158. package/src/forge/compiler/orchestrator/plan.ts +247 -10
  159. package/src/forge/compiler/orchestrator/profile.ts +65 -0
  160. package/src/forge/compiler/orchestrator/run.ts +97 -31
  161. package/src/forge/compiler/orchestrator/serialize.ts +33 -8
  162. package/src/forge/compiler/orchestrator/types.ts +1 -1
  163. package/src/forge/compiler/package-graph/compiler.ts +3 -1
  164. package/src/forge/compiler/package-graph/constants.ts +1 -1
  165. package/src/forge/compiler/package-manager/adapter.ts +4 -1
  166. package/src/forge/compiler/package-manager/commands.ts +4 -0
  167. package/src/forge/compiler/package-manager/executor.ts +30 -1
  168. package/src/forge/compiler/package-manager/version.ts +36 -12
  169. package/src/forge/compiler/package-upgrades/planner.ts +155 -18
  170. package/src/forge/compiler/package-upgrades/types.ts +2 -0
  171. package/src/forge/compiler/policy-registry/build.ts +47 -2
  172. package/src/forge/compiler/policy-registry/parse.ts +32 -2
  173. package/src/forge/compiler/recipes/definitions.ts +63 -0
  174. package/src/forge/compiler/recipes/index.ts +2 -0
  175. package/src/forge/compiler/recipes/registry.ts +6 -0
  176. package/src/forge/compiler/test-graph/build.ts +11 -3
  177. package/src/forge/compiler/types/app-graph.ts +8 -2
  178. package/src/forge/compiler/types/cli.ts +75 -1
  179. package/src/forge/compiler/types/dev-manifest.ts +4 -0
  180. package/src/forge/compiler/types/emit.ts +2 -0
  181. package/src/forge/compiler/types/frontend-graph.ts +2 -2
  182. package/src/forge/compiler/types/integration.ts +1 -0
  183. package/src/forge/compiler/types/package-graph.ts +6 -0
  184. package/src/forge/compiler/types/policy-registry.ts +3 -1
  185. package/src/forge/delta/classifier.ts +52 -0
  186. package/src/forge/delta/explain.ts +238 -0
  187. package/src/forge/delta/git-observer.ts +43 -0
  188. package/src/forge/delta/ids.ts +44 -0
  189. package/src/forge/delta/index.ts +25 -0
  190. package/src/forge/delta/recorder.ts +540 -0
  191. package/src/forge/delta/redaction.ts +50 -0
  192. package/src/forge/delta/schema.ts +240 -0
  193. package/src/forge/delta/session.ts +142 -0
  194. package/src/forge/delta/status.ts +1202 -0
  195. package/src/forge/delta/store.ts +3284 -0
  196. package/src/forge/delta/timeline.ts +178 -0
  197. package/src/forge/dev/server.ts +808 -17
  198. package/src/forge/dev/types.ts +15 -1
  199. package/src/forge/dev/watch.ts +17 -7
  200. package/src/forge/dev-console/cycle.ts +280 -33
  201. package/src/forge/dev-console/types.ts +47 -1
  202. package/src/forge/impact/index.ts +204 -9
  203. package/src/forge/impact/types.ts +33 -1
  204. package/src/forge/intent/index.ts +35 -16
  205. package/src/forge/make/fields.ts +26 -0
  206. package/src/forge/make/index.ts +40 -6
  207. package/src/forge/make/templates.ts +155 -2
  208. package/src/forge/make/types.ts +2 -1
  209. package/src/forge/policy.ts +1 -1
  210. package/src/forge/react/index.ts +160 -2
  211. package/src/forge/refactor/index.ts +1 -0
  212. package/src/forge/repair/rules/index.ts +2 -2
  213. package/src/forge/review/index.ts +158 -12
  214. package/src/forge/review/types.ts +15 -0
  215. package/src/forge/runtime/auth/config.ts +17 -0
  216. package/src/forge/runtime/auth/evaluate.ts +15 -2
  217. package/src/forge/runtime/auth/resolve.ts +61 -6
  218. package/src/forge/runtime/auth/types.ts +1 -0
  219. package/src/forge/runtime/db/factory.ts +1 -3
  220. package/src/forge/runtime/db/generated-client.ts +13 -2
  221. package/src/forge/runtime/db/memory-adapter.ts +139 -32
  222. package/src/forge/runtime/db/pglite-adapter.ts +263 -2
  223. package/src/forge/runtime/db/postgres-adapter.ts +6 -3
  224. package/src/forge/runtime/executor.ts +129 -16
  225. package/src/forge/runtime/external/bridge.ts +649 -0
  226. package/src/forge/runtime/runner/run-entry.ts +16 -7
  227. package/src/forge/runtime/telemetry/buffer.ts +4 -1
  228. package/src/forge/runtime/telemetry/scrubber.ts +35 -5
  229. package/src/forge/runtime/webhooks/security.ts +12 -7
  230. package/src/forge/server.ts +17 -3
  231. package/src/forge/ui/index.ts +209 -0
  232. package/src/forge/ui/types.ts +1 -0
  233. package/src/forge/version.ts +1 -1
  234. package/src/forge/vue/index.ts +422 -0
  235. package/src/forge/workspace/baseline.ts +112 -0
  236. package/src/forge/workspace/change-summary.ts +250 -0
  237. package/src/forge/workspace/forge-cli.ts +42 -0
  238. package/src/forge/workspace/git-summary.ts +391 -0
  239. package/templates/agent-workroom/AGENTS.md +29 -0
  240. package/templates/agent-workroom/README.md +34 -0
  241. package/templates/agent-workroom/forge.config.ts +3 -0
  242. package/templates/agent-workroom/package.json +33 -0
  243. package/templates/agent-workroom/src/actions/indexAgentSignal.ts +10 -0
  244. package/templates/agent-workroom/src/commands/openWorkroom.ts +61 -0
  245. package/templates/agent-workroom/src/commands/recordAgentSignal.ts +119 -0
  246. package/templates/agent-workroom/src/commands/recordCheckRun.ts +52 -0
  247. package/templates/agent-workroom/src/forge/schema.ts +54 -0
  248. package/templates/agent-workroom/src/policies.ts +6 -0
  249. package/templates/agent-workroom/src/queries/listWorkrooms.ts +11 -0
  250. package/templates/agent-workroom/src/queries/liveWorkroom.ts +63 -0
  251. package/templates/agent-workroom/tsconfig.json +16 -0
  252. package/templates/agent-workroom/web/index.html +12 -0
  253. package/templates/agent-workroom/web/package.json +21 -0
  254. package/templates/agent-workroom/web/src/App.tsx +345 -0
  255. package/templates/agent-workroom/web/src/lib/forge.ts +13 -0
  256. package/templates/agent-workroom/web/src/main.tsx +13 -0
  257. package/templates/agent-workroom/web/src/styles.css +545 -0
  258. package/templates/agent-workroom/web/tsconfig.json +27 -0
  259. package/templates/b2b-support-web/package.json +1 -0
  260. package/templates/b2b-support-web/web/package.json +1 -1
  261. package/templates/minimal-web/package.json +1 -1
  262. package/templates/minimal-web/web/package.json +2 -2
  263. package/templates/nuxt-web/.vscode/settings.json +14 -0
  264. package/templates/nuxt-web/README.md +30 -0
  265. package/templates/nuxt-web/forge.config.ts +3 -0
  266. package/templates/nuxt-web/package.json +33 -0
  267. package/templates/nuxt-web/src/actions/logNoteCreated.ts +11 -0
  268. package/templates/nuxt-web/src/commands/createNote.ts +26 -0
  269. package/templates/nuxt-web/src/forge/schema.ts +12 -0
  270. package/templates/nuxt-web/src/policies.ts +6 -0
  271. package/templates/nuxt-web/src/queries/listNotes.ts +8 -0
  272. package/templates/nuxt-web/src/queries/liveNotes.ts +8 -0
  273. package/templates/nuxt-web/tsconfig.json +17 -0
  274. package/templates/nuxt-web/web/app.vue +67 -0
  275. package/templates/nuxt-web/web/components/LiveNotes.vue +89 -0
  276. package/templates/nuxt-web/web/components/NoteComposer.vue +100 -0
  277. package/templates/nuxt-web/web/composables/forge.ts +13 -0
  278. package/templates/nuxt-web/web/composables/useNotes.ts +24 -0
  279. package/templates/nuxt-web/web/nuxt.config.ts +11 -0
  280. package/templates/nuxt-web/web/package.json +18 -0
  281. package/templates/nuxt-web/web/plugins/forge.client.ts +10 -0
  282. package/templates/nuxt-web/web/plugins/forge.server.ts +10 -0
  283. package/templates/nuxt-web/web/server/api/forge-health.get.ts +7 -0
  284. package/templates/nuxt-web/web/tsconfig.json +6 -0
  285. package/src/forge/_generated/actionSubscriptions.json +0 -2
  286. package/src/forge/_generated/actionSubscriptions.ts +0 -10
  287. package/src/forge/_generated/agentAdapterManifest.json +0 -2
  288. package/src/forge/_generated/agentAdapterManifest.ts +0 -73
  289. package/src/forge/_generated/agentContract.json +0 -2
  290. package/src/forge/_generated/agentContract.ts +0 -7829
  291. package/src/forge/_generated/agentQuickstart.md +0 -34
  292. package/src/forge/_generated/agentTools.json +0 -2
  293. package/src/forge/_generated/agentTools.md +0 -16
  294. package/src/forge/_generated/agentTools.ts +0 -12
  295. package/src/forge/_generated/aiContext.ts +0 -125
  296. package/src/forge/_generated/aiModels.json +0 -2
  297. package/src/forge/_generated/aiModels.ts +0 -51
  298. package/src/forge/_generated/aiProviders.json +0 -2
  299. package/src/forge/_generated/aiProviders.ts +0 -23
  300. package/src/forge/_generated/aiRegistry.json +0 -2
  301. package/src/forge/_generated/aiRegistry.ts +0 -31
  302. package/src/forge/_generated/api.json +0 -2
  303. package/src/forge/_generated/api.ts +0 -8
  304. package/src/forge/_generated/appGraph.json +0 -2
  305. package/src/forge/_generated/appGraph.ts +0 -14919
  306. package/src/forge/_generated/appMap.md +0 -55
  307. package/src/forge/_generated/artifactManifest.json +0 -2
  308. package/src/forge/_generated/artifactManifest.ts +0 -7
  309. package/src/forge/_generated/authClaims.json +0 -2
  310. package/src/forge/_generated/authClaims.ts +0 -13
  311. package/src/forge/_generated/authConfig.json +0 -2
  312. package/src/forge/_generated/authConfig.ts +0 -17
  313. package/src/forge/_generated/authContext.ts +0 -23
  314. package/src/forge/_generated/authRegistry.json +0 -2
  315. package/src/forge/_generated/authRegistry.ts +0 -25
  316. package/src/forge/_generated/buildInfo.json +0 -2
  317. package/src/forge/_generated/buildInfo.ts +0 -9
  318. package/src/forge/_generated/capabilityMap.json +0 -2
  319. package/src/forge/_generated/capabilityMap.md +0 -15
  320. package/src/forge/_generated/capabilityMap.ts +0 -17
  321. package/src/forge/_generated/client.ts +0 -282
  322. package/src/forge/_generated/clientApi.ts +0 -9
  323. package/src/forge/_generated/clientManifest.json +0 -2
  324. package/src/forge/_generated/clientManifest.ts +0 -39
  325. package/src/forge/_generated/clientTypes.ts +0 -78
  326. package/src/forge/_generated/configRegistry.json +0 -2
  327. package/src/forge/_generated/configRegistry.ts +0 -4
  328. package/src/forge/_generated/dataGraph.json +0 -2
  329. package/src/forge/_generated/dataGraph.ts +0 -8
  330. package/src/forge/_generated/db.json +0 -2
  331. package/src/forge/_generated/db.ts +0 -2
  332. package/src/forge/_generated/dbSecurityManifest.json +0 -2
  333. package/src/forge/_generated/dbSecurityManifest.ts +0 -15
  334. package/src/forge/_generated/dbSessionContext.json +0 -2
  335. package/src/forge/_generated/dbSessionContext.ts +0 -39
  336. package/src/forge/_generated/deployManifest.json +0 -2
  337. package/src/forge/_generated/deployManifest.ts +0 -14
  338. package/src/forge/_generated/devManifest.json +0 -2
  339. package/src/forge/_generated/devManifest.ts +0 -62
  340. package/src/forge/_generated/envSchema.json +0 -2
  341. package/src/forge/_generated/envSchema.ts +0 -59
  342. package/src/forge/_generated/frontendGraph.json +0 -2
  343. package/src/forge/_generated/frontendGraph.ts +0 -27
  344. package/src/forge/_generated/importGuards.json +0 -2
  345. package/src/forge/_generated/importGuards.ts +0 -686
  346. package/src/forge/_generated/index.ts +0 -68
  347. package/src/forge/_generated/liveProductionManifest.json +0 -2
  348. package/src/forge/_generated/liveProductionManifest.ts +0 -23
  349. package/src/forge/_generated/liveProtocol.json +0 -2
  350. package/src/forge/_generated/liveProtocol.ts +0 -21
  351. package/src/forge/_generated/liveQueryRegistry.json +0 -2
  352. package/src/forge/_generated/liveQueryRegistry.ts +0 -9
  353. package/src/forge/_generated/liveTransportConfig.json +0 -2
  354. package/src/forge/_generated/liveTransportConfig.ts +0 -19
  355. package/src/forge/_generated/makeRegistry.json +0 -2
  356. package/src/forge/_generated/makeRegistry.ts +0 -177
  357. package/src/forge/_generated/makeTemplates.json +0 -2
  358. package/src/forge/_generated/makeTemplates.ts +0 -66
  359. package/src/forge/_generated/mockMap.json +0 -2
  360. package/src/forge/_generated/mockMap.ts +0 -7
  361. package/src/forge/_generated/operationPlaybooks.md +0 -167
  362. package/src/forge/_generated/packageGraph.json +0 -2
  363. package/src/forge/_generated/packageGraph.ts +0 -249334
  364. package/src/forge/_generated/packageUpgradeRegistry.json +0 -2
  365. package/src/forge/_generated/packageUpgradeRegistry.ts +0 -15
  366. package/src/forge/_generated/permissionMatrix.json +0 -2
  367. package/src/forge/_generated/permissionMatrix.ts +0 -7
  368. package/src/forge/_generated/policyRegistry.json +0 -2
  369. package/src/forge/_generated/policyRegistry.ts +0 -11
  370. package/src/forge/_generated/queryRegistry.json +0 -2
  371. package/src/forge/_generated/queryRegistry.ts +0 -9
  372. package/src/forge/_generated/react.d.ts +0 -22
  373. package/src/forge/_generated/react.ts +0 -29
  374. package/src/forge/_generated/reactManifest.json +0 -2
  375. package/src/forge/_generated/reactManifest.ts +0 -19
  376. package/src/forge/_generated/rlsPolicies.json +0 -2
  377. package/src/forge/_generated/rlsPolicies.sql +0 -34
  378. package/src/forge/_generated/rlsPolicies.ts +0 -6
  379. package/src/forge/_generated/runtimeGraph.json +0 -2
  380. package/src/forge/_generated/runtimeGraph.ts +0 -8
  381. package/src/forge/_generated/runtimeMatrix.json +0 -2
  382. package/src/forge/_generated/runtimeMatrix.ts +0 -334130
  383. package/src/forge/_generated/runtimeRegistry.ts +0 -2
  384. package/src/forge/_generated/runtimeRules.md +0 -91
  385. package/src/forge/_generated/secretRegistry.json +0 -2
  386. package/src/forge/_generated/secretRegistry.ts +0 -50
  387. package/src/forge/_generated/secretsContext.ts +0 -11
  388. package/src/forge/_generated/serverApi.ts +0 -10
  389. package/src/forge/_generated/sourceMapManifest.json +0 -2
  390. package/src/forge/_generated/sourceMapManifest.ts +0 -7
  391. package/src/forge/_generated/sqlPlan.json +0 -2
  392. package/src/forge/_generated/sqlPlan.ts +0 -88
  393. package/src/forge/_generated/subscriptionManifest.json +0 -2
  394. package/src/forge/_generated/subscriptionManifest.ts +0 -7
  395. package/src/forge/_generated/symbolicationManifest.json +0 -2
  396. package/src/forge/_generated/symbolicationManifest.ts +0 -17
  397. package/src/forge/_generated/telemetryRegistry.json +0 -2
  398. package/src/forge/_generated/telemetryRegistry.ts +0 -9
  399. package/src/forge/_generated/telemetrySinks.json +0 -2
  400. package/src/forge/_generated/telemetrySinks.ts +0 -11
  401. package/src/forge/_generated/tenantScope.json +0 -2
  402. package/src/forge/_generated/tenantScope.ts +0 -8
  403. package/src/forge/_generated/testGraph.json +0 -2
  404. package/src/forge/_generated/testGraph.ts +0 -3430
  405. package/src/forge/_generated/testPlanRegistry.json +0 -2
  406. package/src/forge/_generated/testPlanRegistry.ts +0 -33
  407. package/src/forge/_generated/uiRoutes.json +0 -2
  408. package/src/forge/_generated/uiRoutes.ts +0 -16
  409. package/src/forge/_generated/uiScenarios.json +0 -2
  410. package/src/forge/_generated/uiScenarios.ts +0 -30
  411. package/src/forge/_generated/uiTestManifest.json +0 -2
  412. package/src/forge/_generated/uiTestManifest.ts +0 -27
  413. package/src/forge/_generated/workflowRegistry.json +0 -2
  414. package/src/forge/_generated/workflowRegistry.ts +0 -9
  415. package/src/forge/_generated/workflowSubscriptions.json +0 -2
  416. package/src/forge/_generated/workflowSubscriptions.ts +0 -10
@@ -0,0 +1,189 @@
1
+ # Forge External Runtime Protocol
2
+
3
+ Forge apps can import and call services written outside TypeScript through a
4
+ `forge.manifest.json` compatible manifest. The manifest is the source of truth
5
+ for external commands and queries:
6
+
7
+ - validate and import external service metadata;
8
+ - expose external services in generated inspect/API/agent artifacts;
9
+ - execute external commands and queries through the Forge runtime bridge.
10
+
11
+ This lets Java/Spring, Go, Rust, C#, Python, and other runtimes join the Forge
12
+ contract without requiring the Forge compiler to parse every language AST.
13
+
14
+ ## Manifest
15
+
16
+ External services publish JSON that matches
17
+ `schemas/forge-manifest.schema.json`.
18
+
19
+ ```json
20
+ {
21
+ "forgeProtocol": "1.0",
22
+ "language": "java",
23
+ "framework": "spring-boot",
24
+ "service": {
25
+ "name": "billing",
26
+ "transport": "http",
27
+ "baseUrl": "http://localhost:8080",
28
+ "health": "/actuator/health"
29
+ },
30
+ "entries": [
31
+ {
32
+ "name": "createInvoice",
33
+ "kind": "command",
34
+ "path": "/invoices",
35
+ "policy": "billing.write",
36
+ "transaction": "external-managed",
37
+ "risk": "write",
38
+ "needsApproval": true,
39
+ "effects": ["invoice.created"]
40
+ },
41
+ {
42
+ "name": "listInvoices",
43
+ "kind": "query",
44
+ "path": "/invoices",
45
+ "policy": "billing.read",
46
+ "transaction": "read-only",
47
+ "risk": "read",
48
+ "tenantScoped": true
49
+ }
50
+ ]
51
+ }
52
+ ```
53
+
54
+ Queries must stay read-only. Commands can declare write, destructive, or
55
+ external risk. Policies are metadata until the runtime bridge enforces them for
56
+ the external transport.
57
+
58
+ ## CLI
59
+
60
+ Validate a manifest:
61
+
62
+ ```bash
63
+ forge manifest validate ./forge.manifest.json --json
64
+ ```
65
+
66
+ Import or update a service in the app registry:
67
+
68
+ ```bash
69
+ forge manifest import ./forge.manifest.json --json
70
+ ```
71
+
72
+ Imports are stored in `.forge/external-manifests.json`. A root
73
+ `forge.manifest.json` is also discovered automatically for single-service
74
+ experiments.
75
+
76
+ ## Generated Artifacts
77
+
78
+ After `forge generate`, external services are emitted to:
79
+
80
+ - `src/forge/_generated/externalServices.json`
81
+ - `src/forge/_generated/api.json` under `external`
82
+ - `src/forge/_generated/agentContract.json`
83
+ - `src/forge/_generated/agentTools.json`
84
+ - `src/forge/_generated/capabilityMap.json`
85
+
86
+ External auto-tools use `execution: "external-runtime-endpoint"`. Forge exposes
87
+ runtime bridge endpoints for these tools:
88
+
89
+ ```text
90
+ POST /external/:service/commands/:name
91
+ POST /external/:service/queries/:name
92
+ ```
93
+
94
+ The generated client exposes the same bridge through:
95
+
96
+ ```ts
97
+ await client.externalCommand("billing.createInvoice", args);
98
+ await client.externalQuery(api.external.queries["billing.listInvoices"], args);
99
+ ```
100
+
101
+ Command entries can also be invoked from the CLI with a qualified external
102
+ name:
103
+
104
+ ```bash
105
+ forge run billing.createInvoice --args '{"title":"Invoice"}'
106
+ forge query billing.listInvoices --args '{}'
107
+ forge run query billing.listInvoices --args '{}'
108
+ ```
109
+
110
+ ## Java Adapter
111
+
112
+ Forge ships a minimal Java adapter under `adapters/java`. The adapter is a small
113
+ SDK for JVM services that want to join the Forge external runtime protocol
114
+ without requiring Forge to parse Java source code.
115
+
116
+ ```java
117
+ ForgeRegistry app = Forge.service("billing",
118
+ Forge.framework("java/jdk-http"),
119
+ Forge.baseUrl("http://127.0.0.1:8788"));
120
+
121
+ app.command("createInvoice",
122
+ Forge.handle(CreateInvoiceInput.class, Billing::createInvoice),
123
+ Forge.policy("billing.manage"),
124
+ Forge.tenantScoped(true),
125
+ Forge.needsApproval(true));
126
+
127
+ app.query("listInvoices",
128
+ Forge.handle(EmptyInput.class, Billing::listInvoices),
129
+ Forge.policy("billing.manage"),
130
+ Forge.tenantScoped(true),
131
+ Forge.readOnly());
132
+ ```
133
+
134
+ The adapter exposes `GET /manifest`, `GET /health`, `POST /commands/:name`, and
135
+ `POST /queries/:name`. The `examples/java-billing` app demonstrates manifest
136
+ export, HTTP serving, policy enforcement through the Forge bridge, generated
137
+ client calls, and agent tool registration.
138
+
139
+ Spring Boot users can start from `adapters/java-spring-boot-starter`, which
140
+ provides `@ForgeExternalService`, `@ForgeCommand`, and `@ForgeQuery` annotations
141
+ plus a `ForgeRegistry` auto-configuration hook.
142
+
143
+ ## Runtime Bridge
144
+
145
+ Forge accepts the normal JSON body:
146
+
147
+ ```json
148
+ { "args": {} }
149
+ ```
150
+
151
+ For HTTP services, Forge forwards a JSON envelope:
152
+
153
+ ```json
154
+ {
155
+ "args": {},
156
+ "auth": { "kind": "user", "userId": "u1", "tenantId": "t1", "role": "member" },
157
+ "forge": {
158
+ "service": "billing",
159
+ "entry": "createInvoice",
160
+ "kind": "command",
161
+ "traceId": "trace_..."
162
+ }
163
+ }
164
+ ```
165
+
166
+ Forge also forwards runtime headers such as `x-forge-trace-id`,
167
+ `x-forge-auth-kind`, `x-forge-user-id`, `x-forge-tenant-id`, `x-forge-role`,
168
+ and the inbound `Authorization` header when present.
169
+
170
+ External services can return either a Forge envelope:
171
+
172
+ ```json
173
+ { "ok": true, "result": { "id": "inv_1" } }
174
+ ```
175
+
176
+ or a raw JSON value, which Forge treats as the result for successful HTTP
177
+ responses. Error envelopes should include `ok: false`, `diagnostics`, or
178
+ `error`.
179
+
180
+ Supported runtime transports:
181
+
182
+ - `http`: calls `service.baseUrl + entry.path`.
183
+ - `stdio`: starts `service.command`, writes the JSON envelope to stdin, and
184
+ reads a JSON envelope or raw JSON result from stdout.
185
+ - `grpc`: accepted in manifests for forward compatibility, but not executable
186
+ by the built-in runtime bridge yet.
187
+
188
+ Manifest `policy` values are added to Forge policy bindings during generation.
189
+ Use a named Forge policy, or `public`, `user`, or `system`.
@@ -0,0 +1,7 @@
1
+ module github.com/Stahldavid/forge/examples/go-billing
2
+
3
+ go 1.22
4
+
5
+ require github.com/Stahldavid/forge/adapters/go v0.0.0
6
+
7
+ replace github.com/Stahldavid/forge/adapters/go => ../../adapters/go
@@ -0,0 +1,120 @@
1
+ package main
2
+
3
+ import (
4
+ "context"
5
+ "errors"
6
+ "flag"
7
+ "log"
8
+ "net/http"
9
+ "os"
10
+
11
+ forge "github.com/Stahldavid/forge/adapters/go"
12
+ )
13
+
14
+ type CreateInvoiceInput struct {
15
+ Title string `json:"title"`
16
+ }
17
+
18
+ type Invoice struct {
19
+ ID string `json:"id"`
20
+ Title string `json:"title,omitempty"`
21
+ Tenant string `json:"tenant"`
22
+ TraceID string `json:"traceId,omitempty"`
23
+ AuthKind string `json:"authKind,omitempty"`
24
+ UserID string `json:"userId,omitempty"`
25
+ }
26
+
27
+ func main() {
28
+ addr := flag.String("addr", "127.0.0.1:8787", "address for the external billing service")
29
+ baseURL := flag.String("base-url", "", "base URL written into the Forge manifest")
30
+ manifest := flag.Bool("manifest", false, "write forge.manifest.json to stdout and exit")
31
+ flag.Parse()
32
+
33
+ if *baseURL == "" {
34
+ *baseURL = "http://" + *addr
35
+ }
36
+
37
+ app := newBillingApp(*baseURL)
38
+ if *manifest {
39
+ if err := app.WriteManifest(os.Stdout, *baseURL); err != nil {
40
+ log.Fatal(err)
41
+ }
42
+ return
43
+ }
44
+
45
+ log.Printf("go billing external service listening on http://%s", *addr)
46
+ if err := http.ListenAndServe(*addr, app.HTTPHandler()); err != nil {
47
+ log.Fatal(err)
48
+ }
49
+ }
50
+
51
+ func newBillingApp(baseURL string) *forge.Registry {
52
+ app := forge.New("billing",
53
+ forge.Framework("go/net-http"),
54
+ forge.BaseURL(baseURL),
55
+ forge.Health("/health"),
56
+ )
57
+
58
+ app.Command("createInvoice", forge.Handle(createInvoice),
59
+ forge.Description("Create an invoice in the external Go billing service."),
60
+ forge.Policy("billing.manage"),
61
+ forge.TenantScoped(true),
62
+ forge.TransactionMode(forge.TransactionExternalManaged),
63
+ forge.EntryRisk(forge.RiskWrite),
64
+ forge.NeedsApproval(true),
65
+ forge.Effects("invoice.created"),
66
+ forge.InputSchema(forge.Object(map[string]any{
67
+ "title": forge.String(),
68
+ }, "title")),
69
+ forge.OutputSchema(invoiceSchema()),
70
+ )
71
+
72
+ app.Query("listInvoices", forge.Handle(listInvoices),
73
+ forge.Description("List invoices visible to the current tenant."),
74
+ forge.Policy("billing.manage"),
75
+ forge.TenantScoped(true),
76
+ forge.ReadOnly(),
77
+ forge.OutputSchema(forge.Array(invoiceSchema())),
78
+ )
79
+
80
+ return app
81
+ }
82
+
83
+ func createInvoice(ctx context.Context, call *forge.Context, input CreateInvoiceInput) (Invoice, error) {
84
+ if input.Title == "" {
85
+ return Invoice{}, errors.New("title is required")
86
+ }
87
+ if call.Auth.TenantID == "" {
88
+ return Invoice{}, errors.New("tenant id is required")
89
+ }
90
+ return Invoice{
91
+ ID: "inv_go_1",
92
+ Title: input.Title,
93
+ Tenant: call.Auth.TenantID,
94
+ TraceID: call.Forge.TraceID,
95
+ AuthKind: call.Auth.Kind,
96
+ UserID: call.Auth.UserID,
97
+ }, nil
98
+ }
99
+
100
+ func listInvoices(ctx context.Context, call *forge.Context, input struct{}) ([]Invoice, error) {
101
+ if call.Auth.TenantID == "" {
102
+ return nil, errors.New("tenant id is required")
103
+ }
104
+ return []Invoice{{
105
+ ID: "inv_go_1",
106
+ Title: "Go adapter invoice",
107
+ Tenant: call.Auth.TenantID,
108
+ }}, nil
109
+ }
110
+
111
+ func invoiceSchema() forge.Schema {
112
+ return forge.Object(map[string]any{
113
+ "id": forge.String(),
114
+ "title": forge.String(),
115
+ "tenant": forge.String(),
116
+ "traceId": forge.String(),
117
+ "authKind": forge.String(),
118
+ "userId": forge.String(),
119
+ }, "id", "tenant")
120
+ }
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+ <modelVersion>4.0.0</modelVersion>
6
+
7
+ <groupId>dev.forgeos.examples</groupId>
8
+ <artifactId>java-billing</artifactId>
9
+ <version>0.1.0-alpha.11</version>
10
+ <name>Forge Java Billing Example</name>
11
+
12
+ <properties>
13
+ <maven.compiler.release>17</maven.compiler.release>
14
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15
+ </properties>
16
+
17
+ <dependencies>
18
+ <dependency>
19
+ <groupId>dev.forgeos</groupId>
20
+ <artifactId>forge-java-adapter</artifactId>
21
+ <version>0.1.0-alpha.11</version>
22
+ </dependency>
23
+ </dependencies>
24
+
25
+ <build>
26
+ <plugins>
27
+ <plugin>
28
+ <groupId>org.apache.maven.plugins</groupId>
29
+ <artifactId>maven-shade-plugin</artifactId>
30
+ <version>3.6.0</version>
31
+ <executions>
32
+ <execution>
33
+ <phase>package</phase>
34
+ <goals>
35
+ <goal>shade</goal>
36
+ </goals>
37
+ <configuration>
38
+ <createDependencyReducedPom>false</createDependencyReducedPom>
39
+ <shadedArtifactAttached>true</shadedArtifactAttached>
40
+ <shadedClassifierName>all</shadedClassifierName>
41
+ <transformers>
42
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
43
+ <mainClass>dev.forgeos.examples.billing.Main</mainClass>
44
+ </transformer>
45
+ </transformers>
46
+ </configuration>
47
+ </execution>
48
+ </executions>
49
+ </plugin>
50
+ </plugins>
51
+ </build>
52
+ </project>
@@ -0,0 +1,4 @@
1
+ package dev.forgeos.examples.billing;
2
+
3
+ public record CreateInvoiceInput(String title) {
4
+ }
@@ -0,0 +1,11 @@
1
+ package dev.forgeos.examples.billing;
2
+
3
+ public record Invoice(
4
+ String id,
5
+ String title,
6
+ String tenant,
7
+ String traceId,
8
+ String authKind,
9
+ String userId
10
+ ) {
11
+ }
@@ -0,0 +1,127 @@
1
+ package dev.forgeos.examples.billing;
2
+
3
+ import com.sun.net.httpserver.HttpServer;
4
+ import dev.forgeos.adapter.Forge;
5
+ import dev.forgeos.adapter.ForgeContext;
6
+ import dev.forgeos.adapter.ForgeHttpHandler;
7
+ import dev.forgeos.adapter.ForgeRegistry;
8
+ import dev.forgeos.adapter.Risk;
9
+ import dev.forgeos.adapter.Schemas;
10
+ import dev.forgeos.adapter.TransactionMode;
11
+ import java.util.Map;
12
+
13
+ public final class Main {
14
+ private Main() {
15
+ }
16
+
17
+ public static void main(String[] args) throws Exception {
18
+ Options options = Options.parse(args);
19
+ ForgeRegistry app = newBillingApp(options.baseUrl());
20
+
21
+ if (options.manifest()) {
22
+ app.writeManifest(System.out, options.baseUrl());
23
+ return;
24
+ }
25
+
26
+ String[] addressParts = options.addr().split(":", 2);
27
+ String host = addressParts[0];
28
+ int port = Integer.parseInt(addressParts.length > 1 ? addressParts[1] : "8788");
29
+ HttpServer server = ForgeHttpHandler.listen(app, host, port);
30
+ System.err.printf("java billing external service listening on http://%s%n", options.addr());
31
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> server.stop(0)));
32
+ }
33
+
34
+ static ForgeRegistry newBillingApp(String baseUrl) {
35
+ ForgeRegistry app = Forge.service("billing",
36
+ Forge.framework("java/jdk-http"),
37
+ Forge.baseUrl(baseUrl),
38
+ Forge.health("/health")
39
+ );
40
+
41
+ app.command("createInvoice", Forge.handle(CreateInvoiceInput.class, Main::createInvoice),
42
+ Forge.description("Create an invoice in the external Java billing service."),
43
+ Forge.policy("billing.manage"),
44
+ Forge.tenantScoped(true),
45
+ Forge.transaction(TransactionMode.EXTERNAL_MANAGED),
46
+ Forge.risk(Risk.WRITE),
47
+ Forge.needsApproval(true),
48
+ Forge.effects("invoice.created"),
49
+ Forge.inputSchema(Schemas.object(Map.of("title", Schemas.string()), "title")),
50
+ Forge.outputSchema(invoiceSchema())
51
+ );
52
+
53
+ app.query("listInvoices", Forge.handle(EmptyInput.class, Main::listInvoices),
54
+ Forge.description("List invoices visible to the current tenant."),
55
+ Forge.policy("billing.manage"),
56
+ Forge.tenantScoped(true),
57
+ Forge.readOnly(),
58
+ Forge.outputSchema(Schemas.array(invoiceSchema()))
59
+ );
60
+
61
+ return app;
62
+ }
63
+
64
+ static Invoice createInvoice(ForgeContext context, CreateInvoiceInput input) {
65
+ if (input.title() == null || input.title().isBlank()) {
66
+ throw new IllegalArgumentException("title is required");
67
+ }
68
+ if (context.auth().tenantId() == null || context.auth().tenantId().isBlank()) {
69
+ throw new IllegalArgumentException("tenant id is required");
70
+ }
71
+ return new Invoice(
72
+ "inv_java_1",
73
+ input.title(),
74
+ context.auth().tenantId(),
75
+ context.forge().traceId(),
76
+ context.auth().kind(),
77
+ context.auth().userId()
78
+ );
79
+ }
80
+
81
+ static Invoice[] listInvoices(ForgeContext context, EmptyInput input) {
82
+ if (context.auth().tenantId() == null || context.auth().tenantId().isBlank()) {
83
+ throw new IllegalArgumentException("tenant id is required");
84
+ }
85
+ return new Invoice[] {
86
+ new Invoice("inv_java_1", "Java adapter invoice", context.auth().tenantId(), null, null, null)
87
+ };
88
+ }
89
+
90
+ static Map<String, Object> invoiceSchema() {
91
+ return Schemas.object(Map.of(
92
+ "id", Schemas.string(),
93
+ "title", Schemas.string(),
94
+ "tenant", Schemas.string(),
95
+ "traceId", Schemas.string(),
96
+ "authKind", Schemas.string(),
97
+ "userId", Schemas.string()
98
+ ), "id", "tenant");
99
+ }
100
+
101
+ record EmptyInput() {
102
+ }
103
+
104
+ record Options(String addr, String baseUrl, boolean manifest) {
105
+ static Options parse(String[] args) {
106
+ String addr = "127.0.0.1:8788";
107
+ String baseUrl = null;
108
+ boolean manifest = false;
109
+
110
+ for (int index = 0; index < args.length; index += 1) {
111
+ String arg = args[index];
112
+ if ("--manifest".equals(arg)) {
113
+ manifest = true;
114
+ } else if ("--addr".equals(arg) && index + 1 < args.length) {
115
+ addr = args[++index];
116
+ } else if ("--base-url".equals(arg) && index + 1 < args.length) {
117
+ baseUrl = args[++index];
118
+ }
119
+ }
120
+
121
+ if (baseUrl == null || baseUrl.isBlank()) {
122
+ baseUrl = "http://" + addr;
123
+ }
124
+ return new Options(addr, baseUrl, manifest);
125
+ }
126
+ }
127
+ }
package/package.json CHANGED
@@ -1,14 +1,31 @@
1
1
  {
2
2
  "name": "forgeos",
3
- "version": "0.1.0-alpha.4",
3
+ "version": "0.1.0-alpha.41",
4
4
  "description": "Agent-native application framework and compiler for building Forge apps without a mandatory dashboard.",
5
5
  "type": "module",
6
+ "license": "MIT",
6
7
  "files": [
8
+ "adapters/",
9
+ "!adapters/**/target/**",
10
+ "!adapters/**/*.class",
11
+ "!adapters/**/*.jar",
7
12
  "bin/",
13
+ "docs/cair-protocol.md",
14
+ "docs/forge-protocol.md",
15
+ "examples/go-billing/",
16
+ "examples/java-billing/",
17
+ "!examples/**/target/**",
18
+ "!examples/**/*.class",
19
+ "!examples/**/*.jar",
8
20
  "packages/eslint-plugin-forge/",
21
+ "schemas/",
9
22
  "src/",
23
+ "!src/forge/_generated/**",
24
+ "src/forge/_generated/releaseManifest.json",
25
+ "src/forge/_generated/releaseManifest.ts",
10
26
  "templates/",
11
27
  "README.md",
28
+ "LICENSE",
12
29
  "CHANGELOG.md",
13
30
  "CONTRIBUTING.md",
14
31
  "AGENTS.md",
@@ -19,11 +36,16 @@
19
36
  "src"
20
37
  ]
21
38
  },
39
+ "workspaces": [
40
+ ".",
41
+ "packages/*"
42
+ ],
22
43
  "bin": {
23
44
  "forge": "bin/forge.mjs"
24
45
  },
25
46
  "exports": {
26
47
  "./react": "./src/forge/react/index.ts",
48
+ "./vue": "./src/forge/vue/index.ts",
27
49
  "./server": "./src/forge/server.ts",
28
50
  "./policy": "./src/forge/policy.ts"
29
51
  },
@@ -32,12 +54,14 @@
32
54
  "build": "tsc --noEmit",
33
55
  "typecheck": "tsc --noEmit",
34
56
  "changeset": "changeset",
35
- "version-packages": "changeset version",
36
- "release": "changeset publish --tag alpha",
57
+ "version-packages": "node scripts/version-packages.mjs",
58
+ "release": "changeset publish",
37
59
  "release:pack": "npm pack --dry-run",
38
60
  "release:smoke": "node scripts/smoke-packed-package.mjs",
39
61
  "release:evidence": "node scripts/write-release-evidence.mjs",
62
+ "release:verify-public-alpha": "node scripts/verify-public-alpha.mjs",
40
63
  "security:evidence": "node scripts/write-security-evidence.mjs",
64
+ "security:deps": "node scripts/write-dependency-audit-evidence.mjs",
41
65
  "release:publish-alpha": "node scripts/publish-trusted-alpha.mjs",
42
66
  "release:publish-local-alpha": "node scripts/publish-local-alpha.mjs",
43
67
  "field:test": "node scripts/field-test-forgeos.mjs",
@@ -86,6 +110,7 @@
86
110
  "tree-sitter-typescript": "^0.23.2",
87
111
  "tsx": "^4.20.6",
88
112
  "typescript": "^5.7.3",
113
+ "vue": "^3.5.38",
89
114
  "zod": "^3.25.76"
90
115
  },
91
116
  "devDependencies": {
@@ -97,5 +122,8 @@
97
122
  "@types/react-test-renderer": "^19.1.0",
98
123
  "fast-check": "^3.23.2",
99
124
  "react-test-renderer": "^19.2.7"
125
+ },
126
+ "overrides": {
127
+ "read-yaml-file": "^3.0.0"
100
128
  }
101
129
  }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://forgeos.dev/schemas/forge-manifest.schema.json",
4
+ "title": "Forge external runtime manifest",
5
+ "type": "object",
6
+ "required": ["forgeProtocol", "language", "service", "entries"],
7
+ "properties": {
8
+ "forgeProtocol": { "const": "1.0" },
9
+ "language": { "type": "string", "minLength": 1 },
10
+ "framework": { "type": "string", "minLength": 1 },
11
+ "service": {
12
+ "type": "object",
13
+ "required": ["name", "transport"],
14
+ "properties": {
15
+ "name": { "type": "string", "minLength": 1 },
16
+ "transport": { "enum": ["http", "grpc", "stdio"] },
17
+ "baseUrl": { "type": "string", "minLength": 1 },
18
+ "command": { "type": "string", "minLength": 1 },
19
+ "health": { "type": "string", "minLength": 1 }
20
+ },
21
+ "additionalProperties": false
22
+ },
23
+ "entries": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "required": ["name", "kind"],
28
+ "properties": {
29
+ "name": { "type": "string", "minLength": 1 },
30
+ "kind": { "enum": ["command", "query"] },
31
+ "description": { "type": "string" },
32
+ "path": { "type": "string", "minLength": 1 },
33
+ "method": { "enum": ["GET", "POST"] },
34
+ "inputSchema": {},
35
+ "outputSchema": {},
36
+ "policy": { "type": "string", "minLength": 1 },
37
+ "tenantScoped": { "type": "boolean" },
38
+ "transaction": {
39
+ "enum": ["read-only", "external-managed", "forge-managed", "saga"]
40
+ },
41
+ "risk": { "enum": ["read", "write", "destructive", "external"] },
42
+ "needsApproval": { "type": "boolean" },
43
+ "effects": {
44
+ "type": "array",
45
+ "items": { "type": "string" }
46
+ }
47
+ },
48
+ "additionalProperties": false
49
+ }
50
+ },
51
+ "schemas": {
52
+ "type": "object",
53
+ "additionalProperties": true
54
+ }
55
+ },
56
+ "additionalProperties": false
57
+ }
@@ -1,2 +1 @@
1
- // @forge-generated generator=0.1.0-alpha.4 input=4af795b70ec62dc5967f6e9b78865cfbc8afb09275e575845cf80a360b3b85e2 content=6116e8ec4b5ecea5b4d82b89eab4204402c49dd8a272c345cd340f45cbb179bb
2
- {"defaultProvider":"local","diagnostics":[],"env":{"deployEnv":"FORGE_DEPLOY_ENV","deployId":"FORGE_DEPLOY_ID","publicReleaseId":"NEXT_PUBLIC_FORGE_RELEASE_ID","releaseId":"FORGE_RELEASE_ID"},"gitSha":"unknown","optionalProviders":["local","sentry-compatible","sentry","glitchtip","bugsink","otel","custom"],"packageName":"forgeos","packageVersion":"0.1.0-alpha.4","releaseId":"forgeos@0.1.0-alpha.4+unknown","schemaVersion":"0.1.0"}
1
+ {"defaultProvider":"local","diagnostics":[],"env":{"deployEnv":"FORGE_DEPLOY_ENV","deployId":"FORGE_DEPLOY_ID","publicReleaseId":"NEXT_PUBLIC_FORGE_RELEASE_ID","releaseId":"FORGE_RELEASE_ID"},"gitSha":"unknown","optionalProviders":["local","sentry-compatible","sentry","glitchtip","bugsink","otel","custom"],"packageName":"forgeos","packageVersion":"0.1.0-alpha.41","releaseId":"forgeos@0.1.0-alpha.41+unknown","schemaVersion":"0.1.0"}
@@ -1,4 +1,4 @@
1
- // @forge-generated generator=0.1.0-alpha.4 input=4af795b70ec62dc5967f6e9b78865cfbc8afb09275e575845cf80a360b3b85e2 content=61c32102a9e8ac3ff328e692dc0e405359bc4c792779ae745b4300eec18481b8
1
+ // @forge-generated generator=0.1.0-alpha.41 input=472a35507fac4f297d64b66cb443aa712ceb113986ac03317278c6464c17cdd4 content=ba31c1269d2cbbe1fdb5c6dc20de16dabe1afbe97d1af2a72346806ad2d17e16
2
2
  export const releaseManifest = {
3
3
  "defaultProvider": "local",
4
4
  "diagnostics": [],
@@ -19,7 +19,7 @@ export const releaseManifest = {
19
19
  "custom"
20
20
  ],
21
21
  "packageName": "forgeos",
22
- "packageVersion": "0.1.0-alpha.4",
23
- "releaseId": "forgeos@0.1.0-alpha.4+unknown",
22
+ "packageVersion": "0.1.0-alpha.41",
23
+ "releaseId": "forgeos@0.1.0-alpha.41+unknown",
24
24
  "schemaVersion": "0.1.0"
25
25
  } as const;