forgeos 0.1.0-alpha.65 → 0.1.0-alpha.67

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 (284) hide show
  1. package/.npmignore +19 -19
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +24 -0
  4. package/LICENSE +21 -21
  5. package/README.md +525 -525
  6. package/adapters/java/README.md +68 -68
  7. package/adapters/java/pom.xml +47 -47
  8. package/adapters/java/src/main/java/dev/forgeos/adapter/Auth.java +20 -20
  9. package/adapters/java/src/main/java/dev/forgeos/adapter/Diagnostic.java +16 -16
  10. package/adapters/java/src/main/java/dev/forgeos/adapter/Entry.java +38 -38
  11. package/adapters/java/src/main/java/dev/forgeos/adapter/EntryKind.java +16 -16
  12. package/adapters/java/src/main/java/dev/forgeos/adapter/ErrorInfo.java +4 -4
  13. package/adapters/java/src/main/java/dev/forgeos/adapter/Forge.java +94 -94
  14. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeCall.java +12 -12
  15. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeContext.java +11 -11
  16. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHandler.java +8 -8
  17. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeHttpHandler.java +179 -179
  18. package/adapters/java/src/main/java/dev/forgeos/adapter/ForgeRegistry.java +121 -121
  19. package/adapters/java/src/main/java/dev/forgeos/adapter/Json.java +14 -14
  20. package/adapters/java/src/main/java/dev/forgeos/adapter/Manifest.java +14 -14
  21. package/adapters/java/src/main/java/dev/forgeos/adapter/RequestEnvelope.java +6 -6
  22. package/adapters/java/src/main/java/dev/forgeos/adapter/ResponseEnvelope.java +25 -25
  23. package/adapters/java/src/main/java/dev/forgeos/adapter/Risk.java +18 -18
  24. package/adapters/java/src/main/java/dev/forgeos/adapter/Schemas.java +36 -36
  25. package/adapters/java/src/main/java/dev/forgeos/adapter/Service.java +65 -65
  26. package/adapters/java/src/main/java/dev/forgeos/adapter/TransactionMode.java +18 -18
  27. package/adapters/java/src/main/java/dev/forgeos/adapter/TypedForgeHandler.java +6 -6
  28. package/adapters/java-spring-boot-starter/README.md +32 -32
  29. package/adapters/java-spring-boot-starter/pom.xml +49 -49
  30. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeCommand.java +22 -22
  31. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeExternalService.java +15 -15
  32. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeQuery.java +16 -16
  33. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeServiceBeanCondition.java +18 -18
  34. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringAutoConfiguration.java +16 -16
  35. package/adapters/java-spring-boot-starter/src/main/java/dev/forgeos/adapter/spring/ForgeSpringRuntime.java +104 -104
  36. package/adapters/java-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +1 -1
  37. package/bin/forge.mjs +38 -38
  38. package/docs/agent-fabric.md +131 -0
  39. package/examples/java-billing/pom.xml +60 -60
  40. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/CreateInvoiceInput.java +4 -4
  41. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Invoice.java +11 -11
  42. package/examples/java-billing/src/main/java/dev/forgeos/examples/billing/Main.java +127 -127
  43. package/package.json +5 -4
  44. package/packages/eslint-plugin-forge/index.ts +15 -15
  45. package/packages/eslint-plugin-forge/package.json +10 -10
  46. package/packages/eslint-plugin-forge/src/check-source.ts +95 -95
  47. package/packages/eslint-plugin-forge/src/load-artifacts.ts +24 -24
  48. package/packages/eslint-plugin-forge/src/rule-no-forge-guard-violation.ts +93 -93
  49. package/schemas/agent-fabric/v0.1/control-event.schema.json +281 -281
  50. package/scripts/field-test-forgeos.mjs +1021 -1021
  51. package/src/forge/_generated/releaseManifest.json +1 -1
  52. package/src/forge/_generated/releaseManifest.ts +3 -3
  53. package/src/forge/agent-adapters/index.ts +7 -3
  54. package/src/forge/agent-adapters/types.ts +1 -0
  55. package/src/forge/agent-fabric/attached-snapshot.ts +55 -0
  56. package/src/forge/agent-fabric/attached-task-contract.ts +105 -0
  57. package/src/forge/agent-fabric/attached-task-service.ts +127 -0
  58. package/src/forge/agent-fabric/attached-task-store.ts +109 -0
  59. package/src/forge/agent-fabric/codex-adversarial-review.ts +229 -0
  60. package/src/forge/agent-fabric/codex-sdk-worker.ts +163 -0
  61. package/src/forge/agent-fabric/index.ts +19 -0
  62. package/src/forge/agent-fabric/local-adaptive-digest-worker.mjs +26 -26
  63. package/src/forge/agent-fabric/local-change-review-service.ts +374 -0
  64. package/src/forge/agent-fabric/local-task-server.ts +324 -249
  65. package/src/forge/agent-fabric/managed-environment.ts +205 -0
  66. package/src/forge/agent-fabric/managed-run-contract.ts +102 -0
  67. package/src/forge/agent-fabric/managed-run-service.ts +392 -0
  68. package/src/forge/agent-fabric/managed-run-store.ts +135 -0
  69. package/src/forge/agent-fabric/managed-workspace.ts +214 -0
  70. package/src/forge/agent-fabric/readiness.ts +26 -0
  71. package/src/forge/agent-fabric/workflow-engine.ts +218 -0
  72. package/src/forge/agent-fabric/workflow-task-actions.ts +104 -0
  73. package/src/forge/agent-fabric/workflow-templates.ts +11 -0
  74. package/src/forge/agent-memory/bridge.ts +309 -47
  75. package/src/forge/agent-memory/context-pack.ts +8 -1
  76. package/src/forge/agent-memory/hook-runner.ts +38 -19
  77. package/src/forge/agent-memory/mcp.ts +500 -286
  78. package/src/forge/agent-memory/sources/codex-hook-runner.mjs +343 -234
  79. package/src/forge/agent-memory/sources/codex.ts +49 -7
  80. package/src/forge/agent-memory/types.ts +11 -0
  81. package/src/forge/bench.ts +154 -154
  82. package/src/forge/cair/action-journal.ts +61 -61
  83. package/src/forge/cair/action-parser.ts +314 -314
  84. package/src/forge/cair/action-validator.ts +40 -40
  85. package/src/forge/cair/actions.ts +1818 -1818
  86. package/src/forge/cair/format.ts +77 -77
  87. package/src/forge/cair/index.ts +106 -106
  88. package/src/forge/cair/query.ts +478 -478
  89. package/src/forge/cair/snapshot.ts +315 -315
  90. package/src/forge/cair/types.ts +248 -248
  91. package/src/forge/cli/ai.ts +816 -816
  92. package/src/forge/cli/codex-app-server.ts +877 -877
  93. package/src/forge/cli/fabric.ts +205 -131
  94. package/src/forge/cli/index.ts +26 -26
  95. package/src/forge/cli/main.ts +259 -245
  96. package/src/forge/cli/next-actions.ts +23 -23
  97. package/src/forge/cli/parse.ts +3574 -3542
  98. package/src/forge/cli/release.ts +309 -309
  99. package/src/forge/cli/self-host.ts +510 -510
  100. package/src/forge/compiler/ai-registry/parse.ts +219 -219
  101. package/src/forge/compiler/app-graph/classify.ts +10 -10
  102. package/src/forge/compiler/app-graph/dup-symbol.ts +29 -29
  103. package/src/forge/compiler/app-graph/extract.ts +231 -231
  104. package/src/forge/compiler/app-graph/forge-apis.ts +25 -25
  105. package/src/forge/compiler/app-graph/index.ts +11 -11
  106. package/src/forge/compiler/app-graph/module-graph.ts +151 -151
  107. package/src/forge/compiler/app-graph/parser.ts +71 -71
  108. package/src/forge/compiler/app-graph/symbols.ts +48 -48
  109. package/src/forge/compiler/app-graph/types.ts +43 -43
  110. package/src/forge/compiler/app-graph/versions.ts +14 -14
  111. package/src/forge/compiler/cache/index.ts +17 -17
  112. package/src/forge/compiler/cache/key.ts +46 -46
  113. package/src/forge/compiler/cache/scheduler.ts +72 -72
  114. package/src/forge/compiler/cache/store.ts +78 -78
  115. package/src/forge/compiler/classifier/capabilities.ts +64 -64
  116. package/src/forge/compiler/classifier/classify.ts +76 -76
  117. package/src/forge/compiler/classifier/contexts.ts +188 -188
  118. package/src/forge/compiler/classifier/index.ts +18 -18
  119. package/src/forge/compiler/classifier/runtime-matrix.ts +45 -45
  120. package/src/forge/compiler/classifier/secrets.ts +31 -31
  121. package/src/forge/compiler/classifier/signals.ts +95 -95
  122. package/src/forge/compiler/client-sdk/build-manifest.ts +210 -210
  123. package/src/forge/compiler/data-graph/sql/serialize.ts +89 -89
  124. package/src/forge/compiler/data-graph/sql/types.ts +38 -38
  125. package/src/forge/compiler/diagnostics/index.ts +57 -57
  126. package/src/forge/compiler/emitter/artifact-kind.ts +14 -14
  127. package/src/forge/compiler/emitter/barrel.ts +47 -47
  128. package/src/forge/compiler/emitter/constants.ts +7 -7
  129. package/src/forge/compiler/emitter/emit.ts +223 -223
  130. package/src/forge/compiler/emitter/index.ts +24 -24
  131. package/src/forge/compiler/emitter/lock.ts +61 -61
  132. package/src/forge/compiler/external-manifest/registry.ts +205 -205
  133. package/src/forge/compiler/external-manifest/types.ts +91 -91
  134. package/src/forge/compiler/external-manifest/validate.ts +373 -373
  135. package/src/forge/compiler/frontend-graph/build.ts +623 -623
  136. package/src/forge/compiler/guards/artifacts.ts +96 -96
  137. package/src/forge/compiler/guards/check-import-guards.ts +106 -106
  138. package/src/forge/compiler/guards/index.ts +11 -11
  139. package/src/forge/compiler/guards/propagate-contexts.ts +57 -57
  140. package/src/forge/compiler/index.ts +17 -17
  141. package/src/forge/compiler/integration/index.ts +17 -17
  142. package/src/forge/compiler/integration/snapshot.ts +54 -54
  143. package/src/forge/compiler/integration/templates/convex.ts +70 -70
  144. package/src/forge/compiler/orchestrator/discover.ts +214 -214
  145. package/src/forge/compiler/orchestrator/guards.ts +5 -5
  146. package/src/forge/compiler/orchestrator/index.ts +27 -27
  147. package/src/forge/compiler/orchestrator/orphans.ts +51 -51
  148. package/src/forge/compiler/orchestrator/profile.ts +23 -23
  149. package/src/forge/compiler/orchestrator/serialize.ts +979 -979
  150. package/src/forge/compiler/orchestrator/verify.ts +35 -35
  151. package/src/forge/compiler/package-graph/capabilities-stub.ts +33 -33
  152. package/src/forge/compiler/package-graph/checksum.ts +107 -107
  153. package/src/forge/compiler/package-graph/exports-discovery.ts +91 -91
  154. package/src/forge/compiler/package-graph/extract-dts.ts +32 -32
  155. package/src/forge/compiler/package-graph/index.ts +24 -24
  156. package/src/forge/compiler/package-graph/jsdoc.ts +50 -50
  157. package/src/forge/compiler/package-graph/oracle.ts +326 -326
  158. package/src/forge/compiler/package-graph/read-file.ts +21 -21
  159. package/src/forge/compiler/package-graph/resolve.ts +131 -131
  160. package/src/forge/compiler/package-manager/adapter.ts +240 -240
  161. package/src/forge/compiler/package-manager/commands.ts +51 -51
  162. package/src/forge/compiler/package-manager/detect.ts +65 -65
  163. package/src/forge/compiler/package-manager/executor.ts +146 -146
  164. package/src/forge/compiler/package-manager/index.ts +22 -22
  165. package/src/forge/compiler/package-manager/parse-spec.ts +16 -16
  166. package/src/forge/compiler/primitives/compare.ts +26 -26
  167. package/src/forge/compiler/primitives/hash.ts +29 -29
  168. package/src/forge/compiler/primitives/header.ts +43 -43
  169. package/src/forge/compiler/primitives/index.ts +45 -45
  170. package/src/forge/compiler/primitives/paths.ts +24 -24
  171. package/src/forge/compiler/primitives/serialize.ts +66 -66
  172. package/src/forge/compiler/primitives/sort.ts +87 -87
  173. package/src/forge/compiler/recipes/helpers.ts +37 -37
  174. package/src/forge/compiler/sandbox/artifact-sanitize.ts +26 -26
  175. package/src/forge/compiler/sandbox/backends/child.ts +123 -123
  176. package/src/forge/compiler/sandbox/backends/docker.ts +173 -173
  177. package/src/forge/compiler/sandbox/index.ts +51 -51
  178. package/src/forge/compiler/sandbox/inspect.ts +143 -143
  179. package/src/forge/compiler/sandbox/inspector-entry.ts +115 -115
  180. package/src/forge/compiler/sandbox/limits.ts +31 -31
  181. package/src/forge/compiler/sandbox/scrub-env.ts +60 -60
  182. package/src/forge/compiler/sandbox/secret-scan.ts +54 -54
  183. package/src/forge/compiler/sandbox/serialize.ts +106 -106
  184. package/src/forge/compiler/sandbox/types.ts +7 -7
  185. package/src/forge/compiler/test-graph/build.ts +285 -285
  186. package/src/forge/compiler/types/app-graph.ts +87 -87
  187. package/src/forge/compiler/types/capability.ts +29 -29
  188. package/src/forge/compiler/types/classification.ts +9 -9
  189. package/src/forge/compiler/types/diagnostic.ts +2 -2
  190. package/src/forge/compiler/types/frontend-graph.ts +81 -81
  191. package/src/forge/compiler/types/import-guards.ts +19 -19
  192. package/src/forge/compiler/types/index.ts +98 -98
  193. package/src/forge/compiler/types/json.ts +3 -3
  194. package/src/forge/compiler/types/lock.ts +37 -37
  195. package/src/forge/compiler/types/runtime-matrix.ts +16 -16
  196. package/src/forge/compiler/types/runtime.ts +30 -30
  197. package/src/forge/compiler/types/sandbox.ts +24 -24
  198. package/src/forge/delta/broker-runner.mjs +5 -0
  199. package/src/forge/delta/broker.ts +429 -0
  200. package/src/forge/delta/classifier.ts +52 -52
  201. package/src/forge/delta/explain.ts +238 -238
  202. package/src/forge/delta/git-observer.ts +24 -0
  203. package/src/forge/delta/ids.ts +40 -40
  204. package/src/forge/delta/index.ts +25 -25
  205. package/src/forge/delta/process-identity.ts +31 -0
  206. package/src/forge/delta/queue-status.ts +190 -0
  207. package/src/forge/delta/redaction.ts +50 -50
  208. package/src/forge/delta/schema.ts +135 -135
  209. package/src/forge/delta/session.ts +142 -142
  210. package/src/forge/delta/status.ts +82 -145
  211. package/src/forge/delta/store.ts +77 -32
  212. package/src/forge/delta/timeline.ts +178 -178
  213. package/src/forge/dev/types.ts +63 -63
  214. package/src/forge/dev/watch.ts +119 -119
  215. package/src/forge/intent/index.ts +509 -509
  216. package/src/forge/make/types.ts +153 -153
  217. package/src/forge/refactor/index.ts +1937 -1937
  218. package/src/forge/refactor/runtime-rename.ts +598 -598
  219. package/src/forge/repair/rules/index.ts +476 -476
  220. package/src/forge/review/types.ts +211 -211
  221. package/src/forge/runtime/db/generated-client.ts +305 -305
  222. package/src/forge/runtime/db/pglite-adapter.ts +33 -11
  223. package/src/forge/runtime/runner/run-entry.ts +236 -236
  224. package/src/forge/version.ts +1 -1
  225. package/templates/agent-workroom/AGENTS.md +29 -29
  226. package/templates/agent-workroom/README.md +34 -34
  227. package/templates/agent-workroom/forge.config.ts +3 -3
  228. package/templates/agent-workroom/package.json +34 -34
  229. package/templates/agent-workroom/pnpm-workspace.yaml +2 -2
  230. package/templates/agent-workroom/src/actions/indexAgentSignal.ts +10 -10
  231. package/templates/agent-workroom/src/commands/openWorkroom.ts +61 -61
  232. package/templates/agent-workroom/src/commands/recordAgentSignal.ts +119 -119
  233. package/templates/agent-workroom/src/commands/recordCheckRun.ts +52 -52
  234. package/templates/agent-workroom/src/forge/schema.ts +54 -54
  235. package/templates/agent-workroom/src/policies.ts +6 -6
  236. package/templates/agent-workroom/src/queries/listWorkrooms.ts +11 -11
  237. package/templates/agent-workroom/src/queries/liveWorkroom.ts +63 -63
  238. package/templates/agent-workroom/tsconfig.json +16 -16
  239. package/templates/agent-workroom/web/index.html +13 -13
  240. package/templates/agent-workroom/web/package.json +21 -21
  241. package/templates/agent-workroom/web/src/App.tsx +345 -345
  242. package/templates/agent-workroom/web/src/main.tsx +13 -13
  243. package/templates/agent-workroom/web/src/styles.css +545 -545
  244. package/templates/agent-workroom/web/tsconfig.json +27 -27
  245. package/templates/b2b-support-web/package.json +37 -37
  246. package/templates/b2b-support-web/pnpm-workspace.yaml +2 -2
  247. package/templates/b2b-support-web/web/package.json +21 -21
  248. package/templates/minimal-web/package.json +34 -34
  249. package/templates/minimal-web/pnpm-workspace.yaml +2 -2
  250. package/templates/minimal-web/web/index.html +13 -13
  251. package/templates/minimal-web/web/src/styles.css +190 -190
  252. package/templates/nuxt-web/.vscode/settings.json +14 -14
  253. package/templates/nuxt-web/.yarnrc.yml +1 -1
  254. package/templates/nuxt-web/README.md +30 -30
  255. package/templates/nuxt-web/forge.config.ts +3 -3
  256. package/templates/nuxt-web/package.json +34 -34
  257. package/templates/nuxt-web/pnpm-workspace.yaml +2 -2
  258. package/templates/nuxt-web/src/actions/logNoteCreated.ts +11 -11
  259. package/templates/nuxt-web/src/commands/createNote.ts +26 -26
  260. package/templates/nuxt-web/src/forge/schema.ts +12 -12
  261. package/templates/nuxt-web/src/policies.ts +6 -6
  262. package/templates/nuxt-web/src/queries/listNotes.ts +8 -8
  263. package/templates/nuxt-web/src/queries/liveNotes.ts +8 -8
  264. package/templates/nuxt-web/tsconfig.json +17 -17
  265. package/templates/nuxt-web/web/app.vue +67 -67
  266. package/templates/nuxt-web/web/components/LiveNotes.vue +89 -89
  267. package/templates/nuxt-web/web/components/NoteComposer.vue +100 -100
  268. package/templates/nuxt-web/web/composables/forge.ts +13 -13
  269. package/templates/nuxt-web/web/composables/useNotes.ts +24 -24
  270. package/templates/nuxt-web/web/nuxt.config.ts +11 -11
  271. package/templates/nuxt-web/web/package.json +19 -19
  272. package/templates/nuxt-web/web/plugins/forge.client.ts +10 -10
  273. package/templates/nuxt-web/web/plugins/forge.server.ts +10 -10
  274. package/templates/nuxt-web/web/server/api/forge-health.get.ts +7 -7
  275. package/templates/nuxt-web/web/tsconfig.json +6 -6
  276. package/templates/vendor-access/.vscode/settings.json +14 -14
  277. package/templates/vendor-access/README.md +30 -30
  278. package/templates/vendor-access/package.json +35 -35
  279. package/templates/vendor-access/pnpm-workspace.yaml +2 -2
  280. package/templates/vendor-access/tsconfig.json +17 -17
  281. package/templates/vendor-access/web/index.html +13 -13
  282. package/templates/vendor-access/web/package.json +21 -21
  283. package/templates/vendor-access/web/src/styles.css +682 -682
  284. package/templates/vendor-access/web/tsconfig.json +18 -18
@@ -1,14 +1,14 @@
1
- package dev.forgeos.adapter;
2
-
3
- import java.util.List;
4
- import java.util.Map;
5
-
6
- public record Manifest(
7
- String forgeProtocol,
8
- String language,
9
- String framework,
10
- Service service,
11
- List<Entry> entries,
12
- Map<String, Object> schemas
13
- ) {
14
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ import java.util.List;
4
+ import java.util.Map;
5
+
6
+ public record Manifest(
7
+ String forgeProtocol,
8
+ String language,
9
+ String framework,
10
+ Service service,
11
+ List<Entry> entries,
12
+ Map<String, Object> schemas
13
+ ) {
14
+ }
@@ -1,6 +1,6 @@
1
- package dev.forgeos.adapter;
2
-
3
- import com.fasterxml.jackson.databind.JsonNode;
4
-
5
- public record RequestEnvelope(JsonNode args, Auth auth, ForgeCall forge) {
6
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ import com.fasterxml.jackson.databind.JsonNode;
4
+
5
+ public record RequestEnvelope(JsonNode args, Auth auth, ForgeCall forge) {
6
+ }
@@ -1,25 +1,25 @@
1
- package dev.forgeos.adapter;
2
-
3
- import java.util.List;
4
-
5
- public record ResponseEnvelope(
6
- boolean ok,
7
- Object result,
8
- List<Diagnostic> diagnostics,
9
- ErrorInfo error,
10
- String traceId
11
- ) {
12
- public static ResponseEnvelope ok(Object result, String traceId) {
13
- return new ResponseEnvelope(true, result, null, null, traceId);
14
- }
15
-
16
- public static ResponseEnvelope error(String code, String message, String traceId) {
17
- return new ResponseEnvelope(
18
- false,
19
- null,
20
- List.of(Diagnostic.error(code, message == null || message.isBlank() ? code : message)),
21
- new ErrorInfo(code, message == null || message.isBlank() ? code : message),
22
- traceId
23
- );
24
- }
25
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ import java.util.List;
4
+
5
+ public record ResponseEnvelope(
6
+ boolean ok,
7
+ Object result,
8
+ List<Diagnostic> diagnostics,
9
+ ErrorInfo error,
10
+ String traceId
11
+ ) {
12
+ public static ResponseEnvelope ok(Object result, String traceId) {
13
+ return new ResponseEnvelope(true, result, null, null, traceId);
14
+ }
15
+
16
+ public static ResponseEnvelope error(String code, String message, String traceId) {
17
+ return new ResponseEnvelope(
18
+ false,
19
+ null,
20
+ List.of(Diagnostic.error(code, message == null || message.isBlank() ? code : message)),
21
+ new ErrorInfo(code, message == null || message.isBlank() ? code : message),
22
+ traceId
23
+ );
24
+ }
25
+ }
@@ -1,18 +1,18 @@
1
- package dev.forgeos.adapter;
2
-
3
- public enum Risk {
4
- READ("read"),
5
- WRITE("write"),
6
- DESTRUCTIVE("destructive"),
7
- EXTERNAL("external");
8
-
9
- private final String value;
10
-
11
- Risk(String value) {
12
- this.value = value;
13
- }
14
-
15
- public String value() {
16
- return value;
17
- }
18
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ public enum Risk {
4
+ READ("read"),
5
+ WRITE("write"),
6
+ DESTRUCTIVE("destructive"),
7
+ EXTERNAL("external");
8
+
9
+ private final String value;
10
+
11
+ Risk(String value) {
12
+ this.value = value;
13
+ }
14
+
15
+ public String value() {
16
+ return value;
17
+ }
18
+ }
@@ -1,36 +1,36 @@
1
- package dev.forgeos.adapter;
2
-
3
- import java.util.LinkedHashMap;
4
- import java.util.List;
5
- import java.util.Map;
6
-
7
- public final class Schemas {
8
- private Schemas() {
9
- }
10
-
11
- public static Map<String, Object> object(Map<String, Object> properties, String... required) {
12
- Map<String, Object> schema = new LinkedHashMap<>();
13
- schema.put("type", "object");
14
- schema.put("properties", properties);
15
- if (required.length > 0) {
16
- schema.put("required", List.of(required));
17
- }
18
- return schema;
19
- }
20
-
21
- public static Map<String, Object> string() {
22
- return Map.of("type", "string");
23
- }
24
-
25
- public static Map<String, Object> bool() {
26
- return Map.of("type", "boolean");
27
- }
28
-
29
- public static Map<String, Object> number() {
30
- return Map.of("type", "number");
31
- }
32
-
33
- public static Map<String, Object> array(Object items) {
34
- return Map.of("type", "array", "items", items);
35
- }
36
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ import java.util.LinkedHashMap;
4
+ import java.util.List;
5
+ import java.util.Map;
6
+
7
+ public final class Schemas {
8
+ private Schemas() {
9
+ }
10
+
11
+ public static Map<String, Object> object(Map<String, Object> properties, String... required) {
12
+ Map<String, Object> schema = new LinkedHashMap<>();
13
+ schema.put("type", "object");
14
+ schema.put("properties", properties);
15
+ if (required.length > 0) {
16
+ schema.put("required", List.of(required));
17
+ }
18
+ return schema;
19
+ }
20
+
21
+ public static Map<String, Object> string() {
22
+ return Map.of("type", "string");
23
+ }
24
+
25
+ public static Map<String, Object> bool() {
26
+ return Map.of("type", "boolean");
27
+ }
28
+
29
+ public static Map<String, Object> number() {
30
+ return Map.of("type", "number");
31
+ }
32
+
33
+ public static Map<String, Object> array(Object items) {
34
+ return Map.of("type", "array", "items", items);
35
+ }
36
+ }
@@ -1,65 +1,65 @@
1
- package dev.forgeos.adapter;
2
-
3
- public final class Service {
4
- private final String name;
5
- private final String transport;
6
- private String baseUrl;
7
- private String command;
8
- private String health;
9
-
10
- public Service(String name, String transport, String baseUrl, String command, String health) {
11
- this.name = name;
12
- this.transport = transport;
13
- this.baseUrl = baseUrl;
14
- this.command = command;
15
- this.health = health;
16
- }
17
-
18
- public String name() {
19
- return name;
20
- }
21
-
22
- public String getName() {
23
- return name;
24
- }
25
-
26
- public String transport() {
27
- return transport;
28
- }
29
-
30
- public String getTransport() {
31
- return transport;
32
- }
33
-
34
- public String baseUrl() {
35
- return baseUrl;
36
- }
37
-
38
- public String getBaseUrl() {
39
- return baseUrl;
40
- }
41
-
42
- public String command() {
43
- return command;
44
- }
45
-
46
- public String getCommand() {
47
- return command;
48
- }
49
-
50
- public String health() {
51
- return health;
52
- }
53
-
54
- public String getHealth() {
55
- return health;
56
- }
57
-
58
- void setBaseUrl(String baseUrl) {
59
- this.baseUrl = baseUrl;
60
- }
61
-
62
- void setHealth(String health) {
63
- this.health = health;
64
- }
65
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ public final class Service {
4
+ private final String name;
5
+ private final String transport;
6
+ private String baseUrl;
7
+ private String command;
8
+ private String health;
9
+
10
+ public Service(String name, String transport, String baseUrl, String command, String health) {
11
+ this.name = name;
12
+ this.transport = transport;
13
+ this.baseUrl = baseUrl;
14
+ this.command = command;
15
+ this.health = health;
16
+ }
17
+
18
+ public String name() {
19
+ return name;
20
+ }
21
+
22
+ public String getName() {
23
+ return name;
24
+ }
25
+
26
+ public String transport() {
27
+ return transport;
28
+ }
29
+
30
+ public String getTransport() {
31
+ return transport;
32
+ }
33
+
34
+ public String baseUrl() {
35
+ return baseUrl;
36
+ }
37
+
38
+ public String getBaseUrl() {
39
+ return baseUrl;
40
+ }
41
+
42
+ public String command() {
43
+ return command;
44
+ }
45
+
46
+ public String getCommand() {
47
+ return command;
48
+ }
49
+
50
+ public String health() {
51
+ return health;
52
+ }
53
+
54
+ public String getHealth() {
55
+ return health;
56
+ }
57
+
58
+ void setBaseUrl(String baseUrl) {
59
+ this.baseUrl = baseUrl;
60
+ }
61
+
62
+ void setHealth(String health) {
63
+ this.health = health;
64
+ }
65
+ }
@@ -1,18 +1,18 @@
1
- package dev.forgeos.adapter;
2
-
3
- public enum TransactionMode {
4
- READ_ONLY("read-only"),
5
- EXTERNAL_MANAGED("external-managed"),
6
- FORGE_MANAGED("forge-managed"),
7
- SAGA("saga");
8
-
9
- private final String value;
10
-
11
- TransactionMode(String value) {
12
- this.value = value;
13
- }
14
-
15
- public String value() {
16
- return value;
17
- }
18
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ public enum TransactionMode {
4
+ READ_ONLY("read-only"),
5
+ EXTERNAL_MANAGED("external-managed"),
6
+ FORGE_MANAGED("forge-managed"),
7
+ SAGA("saga");
8
+
9
+ private final String value;
10
+
11
+ TransactionMode(String value) {
12
+ this.value = value;
13
+ }
14
+
15
+ public String value() {
16
+ return value;
17
+ }
18
+ }
@@ -1,6 +1,6 @@
1
- package dev.forgeos.adapter;
2
-
3
- @FunctionalInterface
4
- public interface TypedForgeHandler<In, Out> {
5
- Out handle(ForgeContext context, In input) throws Exception;
6
- }
1
+ package dev.forgeos.adapter;
2
+
3
+ @FunctionalInterface
4
+ public interface TypedForgeHandler<In, Out> {
5
+ Out handle(ForgeContext context, In input) throws Exception;
6
+ }
@@ -1,32 +1,32 @@
1
- # Forge Java Spring Boot Starter
2
-
3
- `adapters/java-spring-boot-starter` is the first Spring integration layer for
4
- Forge external runtimes. It discovers a bean annotated with
5
- `@ForgeExternalService`, registers methods annotated with `@ForgeCommand` and
6
- `@ForgeQuery`, and exposes a `ForgeRegistry` bean.
7
-
8
- ```java
9
- @Service
10
- @ForgeExternalService(name = "billing", baseUrl = "http://127.0.0.1:8080")
11
- public class BillingService {
12
- @ForgeCommand(
13
- name = "createInvoice",
14
- policy = "billing.manage",
15
- tenantScoped = true,
16
- needsApproval = true,
17
- effects = {"invoice.created"})
18
- public Invoice createInvoice(ForgeContext context, CreateInvoiceInput input) {
19
- return new Invoice("inv_java_1", input.title(), context.auth().tenantId());
20
- }
21
-
22
- @ForgeQuery(name = "listInvoices", policy = "billing.manage", tenantScoped = true)
23
- public List<Invoice> listInvoices(ForgeContext context) {
24
- return List.of(new Invoice("inv_java_1", "Spring invoice", context.auth().tenantId()));
25
- }
26
- }
27
- ```
28
-
29
- The starter intentionally keeps HTTP endpoint wiring thin in this first version.
30
- Applications can inject the generated `ForgeRegistry` and serve it with the core
31
- adapter, or add their own Spring MVC bridge. Full MVC/Actuator auto-endpoints
32
- are a follow-up layer.
1
+ # Forge Java Spring Boot Starter
2
+
3
+ `adapters/java-spring-boot-starter` is the first Spring integration layer for
4
+ Forge external runtimes. It discovers a bean annotated with
5
+ `@ForgeExternalService`, registers methods annotated with `@ForgeCommand` and
6
+ `@ForgeQuery`, and exposes a `ForgeRegistry` bean.
7
+
8
+ ```java
9
+ @Service
10
+ @ForgeExternalService(name = "billing", baseUrl = "http://127.0.0.1:8080")
11
+ public class BillingService {
12
+ @ForgeCommand(
13
+ name = "createInvoice",
14
+ policy = "billing.manage",
15
+ tenantScoped = true,
16
+ needsApproval = true,
17
+ effects = {"invoice.created"})
18
+ public Invoice createInvoice(ForgeContext context, CreateInvoiceInput input) {
19
+ return new Invoice("inv_java_1", input.title(), context.auth().tenantId());
20
+ }
21
+
22
+ @ForgeQuery(name = "listInvoices", policy = "billing.manage", tenantScoped = true)
23
+ public List<Invoice> listInvoices(ForgeContext context) {
24
+ return List.of(new Invoice("inv_java_1", "Spring invoice", context.auth().tenantId()));
25
+ }
26
+ }
27
+ ```
28
+
29
+ The starter intentionally keeps HTTP endpoint wiring thin in this first version.
30
+ Applications can inject the generated `ForgeRegistry` and serve it with the core
31
+ adapter, or add their own Spring MVC bridge. Full MVC/Actuator auto-endpoints
32
+ are a follow-up layer.
@@ -1,49 +1,49 @@
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</groupId>
8
- <artifactId>forge-java-spring-boot-starter</artifactId>
9
- <version>0.1.0-alpha.11</version>
10
- <name>Forge Java Spring Boot Starter</name>
11
- <description>Spring Boot integration for Forge external runtimes.</description>
12
-
13
- <properties>
14
- <maven.compiler.release>17</maven.compiler.release>
15
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16
- <spring.boot.version>3.3.5</spring.boot.version>
17
- </properties>
18
-
19
- <dependencies>
20
- <dependency>
21
- <groupId>dev.forgeos</groupId>
22
- <artifactId>forge-java-adapter</artifactId>
23
- <version>0.1.0-alpha.11</version>
24
- </dependency>
25
- <dependency>
26
- <groupId>org.springframework.boot</groupId>
27
- <artifactId>spring-boot-autoconfigure</artifactId>
28
- <version>${spring.boot.version}</version>
29
- </dependency>
30
- <dependency>
31
- <groupId>org.springframework</groupId>
32
- <artifactId>spring-context</artifactId>
33
- <version>6.1.14</version>
34
- </dependency>
35
- </dependencies>
36
-
37
- <build>
38
- <plugins>
39
- <plugin>
40
- <groupId>org.apache.maven.plugins</groupId>
41
- <artifactId>maven-compiler-plugin</artifactId>
42
- <version>3.13.0</version>
43
- <configuration>
44
- <release>${maven.compiler.release}</release>
45
- </configuration>
46
- </plugin>
47
- </plugins>
48
- </build>
49
- </project>
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</groupId>
8
+ <artifactId>forge-java-spring-boot-starter</artifactId>
9
+ <version>0.1.0-alpha.11</version>
10
+ <name>Forge Java Spring Boot Starter</name>
11
+ <description>Spring Boot integration for Forge external runtimes.</description>
12
+
13
+ <properties>
14
+ <maven.compiler.release>17</maven.compiler.release>
15
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16
+ <spring.boot.version>3.3.5</spring.boot.version>
17
+ </properties>
18
+
19
+ <dependencies>
20
+ <dependency>
21
+ <groupId>dev.forgeos</groupId>
22
+ <artifactId>forge-java-adapter</artifactId>
23
+ <version>0.1.0-alpha.11</version>
24
+ </dependency>
25
+ <dependency>
26
+ <groupId>org.springframework.boot</groupId>
27
+ <artifactId>spring-boot-autoconfigure</artifactId>
28
+ <version>${spring.boot.version}</version>
29
+ </dependency>
30
+ <dependency>
31
+ <groupId>org.springframework</groupId>
32
+ <artifactId>spring-context</artifactId>
33
+ <version>6.1.14</version>
34
+ </dependency>
35
+ </dependencies>
36
+
37
+ <build>
38
+ <plugins>
39
+ <plugin>
40
+ <groupId>org.apache.maven.plugins</groupId>
41
+ <artifactId>maven-compiler-plugin</artifactId>
42
+ <version>3.13.0</version>
43
+ <configuration>
44
+ <release>${maven.compiler.release}</release>
45
+ </configuration>
46
+ </plugin>
47
+ </plugins>
48
+ </build>
49
+ </project>
@@ -1,22 +1,22 @@
1
- package dev.forgeos.adapter.spring;
2
-
3
- import dev.forgeos.adapter.Risk;
4
- import dev.forgeos.adapter.TransactionMode;
5
- import java.lang.annotation.ElementType;
6
- import java.lang.annotation.Retention;
7
- import java.lang.annotation.RetentionPolicy;
8
- import java.lang.annotation.Target;
9
-
10
- @Target(ElementType.METHOD)
11
- @Retention(RetentionPolicy.RUNTIME)
12
- public @interface ForgeCommand {
13
- String name();
14
- String description() default "";
15
- String path() default "";
16
- String policy() default "";
17
- boolean tenantScoped() default false;
18
- TransactionMode transaction() default TransactionMode.EXTERNAL_MANAGED;
19
- Risk risk() default Risk.WRITE;
20
- boolean needsApproval() default false;
21
- String[] effects() default {};
22
- }
1
+ package dev.forgeos.adapter.spring;
2
+
3
+ import dev.forgeos.adapter.Risk;
4
+ import dev.forgeos.adapter.TransactionMode;
5
+ import java.lang.annotation.ElementType;
6
+ import java.lang.annotation.Retention;
7
+ import java.lang.annotation.RetentionPolicy;
8
+ import java.lang.annotation.Target;
9
+
10
+ @Target(ElementType.METHOD)
11
+ @Retention(RetentionPolicy.RUNTIME)
12
+ public @interface ForgeCommand {
13
+ String name();
14
+ String description() default "";
15
+ String path() default "";
16
+ String policy() default "";
17
+ boolean tenantScoped() default false;
18
+ TransactionMode transaction() default TransactionMode.EXTERNAL_MANAGED;
19
+ Risk risk() default Risk.WRITE;
20
+ boolean needsApproval() default false;
21
+ String[] effects() default {};
22
+ }
@@ -1,15 +1,15 @@
1
- package dev.forgeos.adapter.spring;
2
-
3
- import java.lang.annotation.ElementType;
4
- import java.lang.annotation.Retention;
5
- import java.lang.annotation.RetentionPolicy;
6
- import java.lang.annotation.Target;
7
-
8
- @Target(ElementType.TYPE)
9
- @Retention(RetentionPolicy.RUNTIME)
10
- public @interface ForgeExternalService {
11
- String name();
12
- String baseUrl() default "";
13
- String framework() default "spring-boot";
14
- String health() default "/health";
15
- }
1
+ package dev.forgeos.adapter.spring;
2
+
3
+ import java.lang.annotation.ElementType;
4
+ import java.lang.annotation.Retention;
5
+ import java.lang.annotation.RetentionPolicy;
6
+ import java.lang.annotation.Target;
7
+
8
+ @Target(ElementType.TYPE)
9
+ @Retention(RetentionPolicy.RUNTIME)
10
+ public @interface ForgeExternalService {
11
+ String name();
12
+ String baseUrl() default "";
13
+ String framework() default "spring-boot";
14
+ String health() default "/health";
15
+ }
@@ -1,16 +1,16 @@
1
- package dev.forgeos.adapter.spring;
2
-
3
- import java.lang.annotation.ElementType;
4
- import java.lang.annotation.Retention;
5
- import java.lang.annotation.RetentionPolicy;
6
- import java.lang.annotation.Target;
7
-
8
- @Target(ElementType.METHOD)
9
- @Retention(RetentionPolicy.RUNTIME)
10
- public @interface ForgeQuery {
11
- String name();
12
- String description() default "";
13
- String path() default "";
14
- String policy() default "";
15
- boolean tenantScoped() default false;
16
- }
1
+ package dev.forgeos.adapter.spring;
2
+
3
+ import java.lang.annotation.ElementType;
4
+ import java.lang.annotation.Retention;
5
+ import java.lang.annotation.RetentionPolicy;
6
+ import java.lang.annotation.Target;
7
+
8
+ @Target(ElementType.METHOD)
9
+ @Retention(RetentionPolicy.RUNTIME)
10
+ public @interface ForgeQuery {
11
+ String name();
12
+ String description() default "";
13
+ String path() default "";
14
+ String policy() default "";
15
+ boolean tenantScoped() default false;
16
+ }