Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,21 +47,21 @@ public String getInstructions() {
private String getDefaultInstructions() {
return """
# Aleatoric HTTP Router Instructions
This is the default instruction set.
To customize, create 'aleatoric-instructions.md' in your project's resources folder.
\s
This is the default instruction set.\s
To customize, create 'aleatoricism.md' in your project's resources folder.
\s
## HTTP Method Handling
\s
The router will automatically handle:
- GET: Retrieve resources
- POST: Create resources
- PUT: Replace resources
- PATCH: Update resources
- DELETE: Remove resources
\s
Each request will be processed by the AI model which will decide the appropriate business operation.
""";
\s""";
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@

import io.github.scitia.aleatoricism.flows.execution.ExecutionContext;
import io.github.scitia.aleatoricism.flows.execution.FlowExecutionException;
import jakarta.validation.Valid;

/**
* Smallest executable unit in a business graph.
*/
@FunctionalInterface
public interface Waypoint<I, O, S> {

O handle(I input, ExecutionContext<S> context) throws Exception;
O handle(@Valid I input, ExecutionContext<S> context) throws Exception;

default O execute(I input, ExecutionContext<S> context) {
default O execute(@Valid I input, ExecutionContext<S> context) {
try {
return handle(input, context);
} catch (FlowExecutionException exception) {
Expand Down
18 changes: 12 additions & 6 deletions aleatoricism-spring-boot-sample-app/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@ This sample app includes domain flows for quotes and agile scrum workflows. The

```json
{
"name": "Sprint 12",
"goal": "Ship planning improvements",
"startDate": "2026-06-01",
"endDate": "2026-06-14",
"capacity": 30,
"team": "alpha"
"name": "Name",
"goal": "Goal",
"issues": [
{
"name": "Issue 1",
"description": "Description 1",
"reporter": "Reporter 1",
"estimation": 5,
"acceptanceCriteria": ["Criterion 1"]
}
]
}
```

9 changes: 0 additions & 9 deletions aleatoricism-spring-boot-sample-app/docker-compose.yml

This file was deleted.

26 changes: 14 additions & 12 deletions aleatoricism-spring-boot-sample-app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<h2.version>2.2.224</h2.version>
<sonar.scanner.version>3.10.0.2594</sonar.scanner.version>
<copilot.sdk.version>0.2.2-java.1</copilot.sdk.version>
<lombok.version>1.18.46</lombok.version>
<mapstruct.version>1.6.3</mapstruct.version>
<maven.compiler.plugin.version>3.13.0</maven.compiler.plugin.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -44,24 +47,23 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.46</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-docker-compose</artifactId>
<optional>true</optional>
<scope>runtime</scope>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.224</version>
<version>${h2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.6.3</version>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>

Expand All @@ -79,18 +81,18 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.6.3</version>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.46</version>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.scitia.app.sprint.domain;
package io.github.scitia.app.sprint.domain.issue;

import io.github.scitia.app.sprint.domain.sprint.Sprint;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.github.scitia.app.sprint.domain.issue;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;

import java.util.List;

public record IssueDto(
@NotNull @NotBlank String name,
@NotNull @NotBlank String description,
@NotNull @NotBlank String reporter,
@Positive Integer estimation,
@NotEmpty List<String> acceptanceCriteria
) {
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package io.github.scitia.app.sprint.mapper;
package io.github.scitia.app.sprint.domain.issue;

import io.github.scitia.app.sprint.api.IssueDto;
import io.github.scitia.app.sprint.domain.Issue;
import org.springframework.stereotype.Component;

@Component
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.github.scitia.app.sprint.domain.issue;

import org.springframework.data.jpa.repository.JpaRepository;

public interface IssueRepository extends JpaRepository<Issue, Long> {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.scitia.app.sprint.domain;
package io.github.scitia.app.sprint.domain.sprint;

import io.github.scitia.app.sprint.domain.issue.Issue;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package io.github.scitia.app.sprint.api;
package io.github.scitia.app.sprint.domain.sprint;

import io.github.scitia.app.sprint.domain.issue.IssueDto;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package io.github.scitia.app.sprint.mapper;
package io.github.scitia.app.sprint.domain.sprint;

import io.github.scitia.app.sprint.api.IssueDto;
import io.github.scitia.app.sprint.api.SprintDto;
import io.github.scitia.app.sprint.domain.Sprint;
import io.github.scitia.app.sprint.domain.issue.IssueDto;
import io.github.scitia.app.sprint.domain.issue.IssueMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.scitia.app.sprint.infrastructure;
package io.github.scitia.app.sprint.domain.sprint;

import io.github.scitia.app.sprint.domain.Sprint;
import org.springframework.data.jpa.repository.JpaRepository;

public interface SprintRepository extends JpaRepository<Sprint, Long> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package io.github.scitia.app.sprint.flow;

import io.github.scitia.aleatoricism.flows.annotation.BusinessFlow;
import io.github.scitia.aleatoricism.flows.engine.BusinessFlowBuilder;
import io.github.scitia.aleatoricism.flows.engine.Flow;
import io.github.scitia.app.sprint.api.SprintPlanningRequest;
import io.github.scitia.app.sprint.domain.Sprint;
import io.github.scitia.app.sprint.flow.plan.AddIssuesToSprintWaypoint;
import io.github.scitia.app.sprint.flow.plan.CreateSprintEntityWaypoint;
import io.github.scitia.app.sprint.flow.plan.PersistSprintWaypoint;
import io.github.scitia.app.sprint.flow.plan.ValidateSprintPlanningRequestWaypoint;
import lombok.Getter;
import io.github.scitia.app.sprint.flow.api.SprintPlanningRequest;
import io.github.scitia.app.sprint.domain.sprint.Sprint;
import io.github.scitia.app.sprint.flow.plan.waypoint.AddIssuesToSprintWaypoint;
import io.github.scitia.app.sprint.flow.plan.waypoint.CreateSprintEntityWaypoint;
import io.github.scitia.app.sprint.flow.plan.waypoint.PersistSprintWaypoint;
import io.github.scitia.app.sprint.flow.plan.waypoint.ValidateSprintPlanningRequestWaypoint;
import io.github.scitia.app.sprint.flow.plan.store.SprintPlanningStore;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

Expand All @@ -19,17 +19,19 @@
public class SprintFlows {

private final PersistSprintWaypoint persistSprintWaypoint;

@Setter
@Getter
public static class ExampleStore {
private SprintPlanningRequest sprintPlanningRequest;
}
private final ValidateSprintPlanningRequestWaypoint validationWaypoint;

@Bean(name = "sprint-planning-flow")
public Flow<SprintPlanningRequest, Sprint, ?> sprintPlanningFlow() {
@BusinessFlow(
name = "sprint-planning-flow",
description = """
Flow to plan a new sprint, including validation,
creation, and persistence of the sprint and its associated issues.
"""
)
public Flow<SprintPlanningRequest, Sprint, SprintPlanningStore> sprintPlanningFlow() {
return BusinessFlowBuilder.define()
.start(new ValidateSprintPlanningRequestWaypoint(), ExampleStore::new)
.start(validationWaypoint, SprintPlanningStore::new)
.then(new CreateSprintEntityWaypoint())
.then(new AddIssuesToSprintWaypoint())
.then(persistSprintWaypoint)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.github.scitia.app.sprint.flow.api;

import io.github.scitia.app.sprint.domain.issue.IssueDto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

import java.util.List;

public record SprintPlanningRequest(
@NotNull @NotBlank String name,
@NotNull @NotBlank String goal,
@NotEmpty List<IssueDto> issues
) {
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package io.github.scitia.app.sprint.flow.plan.store;

import io.github.scitia.app.sprint.flow.api.SprintPlanningRequest;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
public class SprintPlanningStore {
private SprintPlanningRequest sprintPlanningRequest;
}
Loading
Loading