@llm4ts/flow 0.1.0

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 (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -0
  3. package/dist/AzureDevOpsTool.d.ts +60 -0
  4. package/dist/AzureDevOpsTool.d.ts.map +1 -0
  5. package/dist/AzureDevOpsTool.js +163 -0
  6. package/dist/AzureDevOpsTool.js.map +1 -0
  7. package/dist/Bench.d.ts +133 -0
  8. package/dist/Bench.d.ts.map +1 -0
  9. package/dist/Bench.js +272 -0
  10. package/dist/Bench.js.map +1 -0
  11. package/dist/BenchReport.d.ts +9 -0
  12. package/dist/BenchReport.d.ts.map +1 -0
  13. package/dist/BenchReport.js +360 -0
  14. package/dist/BenchReport.js.map +1 -0
  15. package/dist/CapabilityGuard.d.ts +6 -0
  16. package/dist/CapabilityGuard.d.ts.map +1 -0
  17. package/dist/CapabilityGuard.js +25 -0
  18. package/dist/CapabilityGuard.js.map +1 -0
  19. package/dist/Chat.d.ts +15 -0
  20. package/dist/Chat.d.ts.map +1 -0
  21. package/dist/Chat.js +36 -0
  22. package/dist/Chat.js.map +1 -0
  23. package/dist/Classified.d.ts +14 -0
  24. package/dist/Classified.d.ts.map +1 -0
  25. package/dist/Classified.js +48 -0
  26. package/dist/Classified.js.map +1 -0
  27. package/dist/CostLedger.d.ts +55 -0
  28. package/dist/CostLedger.d.ts.map +1 -0
  29. package/dist/CostLedger.js +126 -0
  30. package/dist/CostLedger.js.map +1 -0
  31. package/dist/CostTracker.d.ts +13 -0
  32. package/dist/CostTracker.d.ts.map +1 -0
  33. package/dist/CostTracker.js +116 -0
  34. package/dist/CostTracker.js.map +1 -0
  35. package/dist/Equiv.d.ts +163 -0
  36. package/dist/Equiv.d.ts.map +1 -0
  37. package/dist/Equiv.js +256 -0
  38. package/dist/Equiv.js.map +1 -0
  39. package/dist/EquivReport.d.ts +16 -0
  40. package/dist/EquivReport.d.ts.map +1 -0
  41. package/dist/EquivReport.js +77 -0
  42. package/dist/EquivReport.js.map +1 -0
  43. package/dist/Flow.d.ts +25 -0
  44. package/dist/Flow.d.ts.map +1 -0
  45. package/dist/Flow.js +39 -0
  46. package/dist/Flow.js.map +1 -0
  47. package/dist/FlowContext.d.ts +23 -0
  48. package/dist/FlowContext.d.ts.map +1 -0
  49. package/dist/FlowContext.js +4 -0
  50. package/dist/FlowContext.js.map +1 -0
  51. package/dist/FlowError.d.ts +80 -0
  52. package/dist/FlowError.d.ts.map +1 -0
  53. package/dist/FlowError.js +92 -0
  54. package/dist/FlowError.js.map +1 -0
  55. package/dist/FlowEvents.d.ts +101 -0
  56. package/dist/FlowEvents.d.ts.map +1 -0
  57. package/dist/FlowEvents.js +103 -0
  58. package/dist/FlowEvents.js.map +1 -0
  59. package/dist/FlowRecorder.d.ts +26 -0
  60. package/dist/FlowRecorder.d.ts.map +1 -0
  61. package/dist/FlowRecorder.js +74 -0
  62. package/dist/FlowRecorder.js.map +1 -0
  63. package/dist/GitHubTool.d.ts +53 -0
  64. package/dist/GitHubTool.d.ts.map +1 -0
  65. package/dist/GitHubTool.js +191 -0
  66. package/dist/GitHubTool.js.map +1 -0
  67. package/dist/GitTool.d.ts +46 -0
  68. package/dist/GitTool.d.ts.map +1 -0
  69. package/dist/GitTool.js +97 -0
  70. package/dist/GitTool.js.map +1 -0
  71. package/dist/Interaction.d.ts +21 -0
  72. package/dist/Interaction.d.ts.map +1 -0
  73. package/dist/Interaction.js +9 -0
  74. package/dist/Interaction.js.map +1 -0
  75. package/dist/McpServer.d.ts +18 -0
  76. package/dist/McpServer.d.ts.map +1 -0
  77. package/dist/McpServer.js +122 -0
  78. package/dist/McpServer.js.map +1 -0
  79. package/dist/Mermaid.d.ts +7 -0
  80. package/dist/Mermaid.d.ts.map +1 -0
  81. package/dist/Mermaid.js +98 -0
  82. package/dist/Mermaid.js.map +1 -0
  83. package/dist/Pack.d.ts +40 -0
  84. package/dist/Pack.d.ts.map +1 -0
  85. package/dist/Pack.js +141 -0
  86. package/dist/Pack.js.map +1 -0
  87. package/dist/Package.d.ts +2 -0
  88. package/dist/Package.d.ts.map +1 -0
  89. package/dist/Package.js +2 -0
  90. package/dist/Package.js.map +1 -0
  91. package/dist/Persistence.d.ts +32 -0
  92. package/dist/Persistence.d.ts.map +1 -0
  93. package/dist/Persistence.js +85 -0
  94. package/dist/Persistence.js.map +1 -0
  95. package/dist/Plan.d.ts +26 -0
  96. package/dist/Plan.d.ts.map +1 -0
  97. package/dist/Plan.js +101 -0
  98. package/dist/Plan.js.map +1 -0
  99. package/dist/PlanExecution.d.ts +7 -0
  100. package/dist/PlanExecution.d.ts.map +1 -0
  101. package/dist/PlanExecution.js +19 -0
  102. package/dist/PlanExecution.js.map +1 -0
  103. package/dist/Planner.d.ts +32 -0
  104. package/dist/Planner.d.ts.map +1 -0
  105. package/dist/Planner.js +97 -0
  106. package/dist/Planner.js.map +1 -0
  107. package/dist/PrSummary.d.ts +15 -0
  108. package/dist/PrSummary.d.ts.map +1 -0
  109. package/dist/PrSummary.js +29 -0
  110. package/dist/PrSummary.js.map +1 -0
  111. package/dist/PriceList.d.ts +11 -0
  112. package/dist/PriceList.d.ts.map +1 -0
  113. package/dist/PriceList.js +79 -0
  114. package/dist/PriceList.js.map +1 -0
  115. package/dist/Provenance.d.ts +27 -0
  116. package/dist/Provenance.d.ts.map +1 -0
  117. package/dist/Provenance.js +38 -0
  118. package/dist/Provenance.js.map +1 -0
  119. package/dist/Replay.d.ts +29 -0
  120. package/dist/Replay.d.ts.map +1 -0
  121. package/dist/Replay.js +181 -0
  122. package/dist/Replay.js.map +1 -0
  123. package/dist/Review.d.ts +71 -0
  124. package/dist/Review.d.ts.map +1 -0
  125. package/dist/Review.js +204 -0
  126. package/dist/Review.js.map +1 -0
  127. package/dist/ReviewCache.d.ts +6 -0
  128. package/dist/ReviewCache.d.ts.map +1 -0
  129. package/dist/ReviewCache.js +28 -0
  130. package/dist/ReviewCache.js.map +1 -0
  131. package/dist/Reviewer.d.ts +12 -0
  132. package/dist/Reviewer.d.ts.map +1 -0
  133. package/dist/Reviewer.js +30 -0
  134. package/dist/Reviewer.js.map +1 -0
  135. package/dist/SpecChecks.d.ts +17 -0
  136. package/dist/SpecChecks.d.ts.map +1 -0
  137. package/dist/SpecChecks.js +107 -0
  138. package/dist/SpecChecks.js.map +1 -0
  139. package/dist/Survey.d.ts +32 -0
  140. package/dist/Survey.d.ts.map +1 -0
  141. package/dist/Survey.js +119 -0
  142. package/dist/Survey.js.map +1 -0
  143. package/dist/TransientRetry.d.ts +16 -0
  144. package/dist/TransientRetry.d.ts.map +1 -0
  145. package/dist/TransientRetry.js +102 -0
  146. package/dist/TransientRetry.js.map +1 -0
  147. package/dist/Workspace.d.ts +39 -0
  148. package/dist/Workspace.d.ts.map +1 -0
  149. package/dist/Workspace.js +192 -0
  150. package/dist/Workspace.js.map +1 -0
  151. package/dist/WorkspaceLayout.d.ts +3 -0
  152. package/dist/WorkspaceLayout.d.ts.map +1 -0
  153. package/dist/WorkspaceLayout.js +19 -0
  154. package/dist/WorkspaceLayout.js.map +1 -0
  155. package/dist/WorkspaceTools.d.ts +4 -0
  156. package/dist/WorkspaceTools.d.ts.map +1 -0
  157. package/dist/WorkspaceTools.js +130 -0
  158. package/dist/WorkspaceTools.js.map +1 -0
  159. package/package.json +91 -0
  160. package/src/AzureDevOpsTool.ts +291 -0
  161. package/src/Bench.ts +340 -0
  162. package/src/BenchReport.ts +447 -0
  163. package/src/CapabilityGuard.ts +43 -0
  164. package/src/Chat.ts +60 -0
  165. package/src/Classified.ts +67 -0
  166. package/src/CostLedger.ts +171 -0
  167. package/src/CostTracker.ts +170 -0
  168. package/src/Equiv.ts +378 -0
  169. package/src/EquivReport.ts +92 -0
  170. package/src/Flow.ts +72 -0
  171. package/src/FlowContext.ts +23 -0
  172. package/src/FlowError.ts +112 -0
  173. package/src/FlowEvents.ts +147 -0
  174. package/src/FlowRecorder.ts +116 -0
  175. package/src/GitHubTool.ts +315 -0
  176. package/src/GitTool.ts +214 -0
  177. package/src/Interaction.ts +23 -0
  178. package/src/McpServer.ts +168 -0
  179. package/src/Mermaid.ts +112 -0
  180. package/src/Pack.ts +213 -0
  181. package/src/Package.ts +1 -0
  182. package/src/Persistence.ts +198 -0
  183. package/src/Plan.ts +119 -0
  184. package/src/PlanExecution.ts +46 -0
  185. package/src/Planner.ts +134 -0
  186. package/src/PrSummary.ts +37 -0
  187. package/src/PriceList.ts +91 -0
  188. package/src/Provenance.ts +85 -0
  189. package/src/Replay.ts +265 -0
  190. package/src/Review.ts +337 -0
  191. package/src/ReviewCache.ts +45 -0
  192. package/src/Reviewer.ts +31 -0
  193. package/src/SpecChecks.ts +143 -0
  194. package/src/Survey.ts +144 -0
  195. package/src/TransientRetry.ts +238 -0
  196. package/src/Workspace.ts +255 -0
  197. package/src/WorkspaceLayout.ts +22 -0
  198. package/src/WorkspaceTools.ts +188 -0
@@ -0,0 +1,191 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import { Capabilities } from "@llm4ts/core/Capability";
4
+ import { ProcessError } from "./FlowError.js";
5
+ import { guarded } from "./CapabilityGuard.js";
6
+ export class IssueRef extends Schema.Class("IssueRef")({
7
+ owner: Schema.String,
8
+ repo: Schema.String,
9
+ number: Schema.Int
10
+ }) {
11
+ get shortRef() {
12
+ return `${this.owner}/${this.repo}#${this.number}`;
13
+ }
14
+ }
15
+ export const parseIssueRef = (input) => {
16
+ const match = /^([^/\s]+)\/([^#\s]+)#(\d+)$/.exec(input.trim());
17
+ const owner = match?.[1];
18
+ const repo = match?.[2];
19
+ const number = Number.parseInt(match?.[3] ?? "", 10);
20
+ return owner === undefined || repo === undefined || !Number.isInteger(number) || number <= 0
21
+ ? undefined
22
+ : IssueRef.make({ owner, repo, number });
23
+ };
24
+ export class Issue extends Schema.Class("Issue")({
25
+ title: Schema.String,
26
+ body: Schema.String,
27
+ author: Schema.String
28
+ }) {
29
+ }
30
+ export class PullRequest extends Schema.Class("PullRequest")({
31
+ owner: Schema.String,
32
+ repo: Schema.String,
33
+ number: Schema.Int,
34
+ url: Schema.String
35
+ }) {
36
+ get shortRef() {
37
+ return `${this.owner}/${this.repo}#${this.number}`;
38
+ }
39
+ }
40
+ export const BuildOutcome = Schema.Literals(["Success", "Failure", "Pending", "TimedOut"]);
41
+ export const parsePullRequestUrl = (url) => {
42
+ const match = /^https?:\/\/[^/]+\/([^/]+)\/([^/]+)\/pull\/(\d+).*$/.exec(url.trim());
43
+ const owner = match?.[1];
44
+ const repo = match?.[2];
45
+ const number = Number.parseInt(match?.[3] ?? "", 10);
46
+ return owner === undefined || repo === undefined || !Number.isInteger(number)
47
+ ? undefined
48
+ : PullRequest.make({
49
+ owner,
50
+ repo,
51
+ number,
52
+ url: url.trim()
53
+ });
54
+ };
55
+ export const prViewArgs = ["pr", "view", "--json", "url", "--jq", ".url"];
56
+ export const prCreateArgs = (title, body, base, draft) => [
57
+ "pr",
58
+ "create",
59
+ "--title",
60
+ title,
61
+ "--body",
62
+ body,
63
+ ...(base === undefined ? [] : ["--base", base]),
64
+ ...(draft ? ["--draft"] : [])
65
+ ];
66
+ export const issueViewArgs = (ref) => [
67
+ "issue",
68
+ "view",
69
+ String(ref.number),
70
+ "--repo",
71
+ `${ref.owner}/${ref.repo}`,
72
+ "--json",
73
+ "title,body,author"
74
+ ];
75
+ export const issueCommentArgs = (ref, body) => [
76
+ "issue",
77
+ "comment",
78
+ String(ref.number),
79
+ "--repo",
80
+ `${ref.owner}/${ref.repo}`,
81
+ "--body",
82
+ body
83
+ ];
84
+ export const prCommentArgs = (pr, body) => [
85
+ "pr",
86
+ "comment",
87
+ String(pr.number),
88
+ "--repo",
89
+ `${pr.owner}/${pr.repo}`,
90
+ "--body",
91
+ body
92
+ ];
93
+ export const prPatchArgs = (pr, title, body) => [
94
+ "api",
95
+ "--method",
96
+ "PATCH",
97
+ `repos/${pr.owner}/${pr.repo}/pulls/${pr.number}`,
98
+ "-f",
99
+ `title=${title}`,
100
+ "-f",
101
+ `body=${body}`
102
+ ];
103
+ export const prChecksArgs = (pr) => [
104
+ "pr",
105
+ "view",
106
+ String(pr.number),
107
+ "--repo",
108
+ `${pr.owner}/${pr.repo}`,
109
+ "--json",
110
+ "statusCheckRollup"
111
+ ];
112
+ class GhAuthor extends Schema.Class("GhAuthor")({
113
+ login: Schema.String
114
+ }) {
115
+ }
116
+ class GhIssue extends Schema.Class("GhIssue")({
117
+ title: Schema.String,
118
+ body: Schema.String,
119
+ author: GhAuthor
120
+ }) {
121
+ }
122
+ class GhCheck extends Schema.Class("GhCheck")({
123
+ status: Schema.optionalKey(Schema.String),
124
+ conclusion: Schema.optionalKey(Schema.String),
125
+ state: Schema.optionalKey(Schema.String)
126
+ }) {
127
+ }
128
+ class GhChecks extends Schema.Class("GhChecks")({
129
+ statusCheckRollup: Schema.Array(GhCheck).pipe(Schema.withConstructorDefault(Effect.succeed(Object.freeze([]))))
130
+ }) {
131
+ }
132
+ export const parseIssue = (json) => Schema.decodeUnknownEffect(Schema.fromJsonString(GhIssue))(json).pipe(Effect.map((issue) => new Issue({
133
+ title: issue.title,
134
+ body: issue.body,
135
+ author: issue.author.login
136
+ })), Effect.mapError((error) => ProcessError.make({
137
+ message: "gh issue view",
138
+ detail: `invalid issue JSON: ${String(error)}`
139
+ })));
140
+ export const outcomeFromChecksJson = (json) => Schema.decodeUnknownEffect(Schema.fromJsonString(GhChecks))(json).pipe(Effect.map((parsed) => {
141
+ const pending = parsed.statusCheckRollup.some((check) => (check.status !== undefined && check.status.toUpperCase() !== "COMPLETED") ||
142
+ ["PENDING", "EXPECTED"].includes(check.state?.toUpperCase() ?? ""));
143
+ const failed = parsed.statusCheckRollup.some((check) => ["FAILURE", "TIMED_OUT", "CANCELLED", "ACTION_REQUIRED", "STARTUP_FAILURE"].includes(check.conclusion?.toUpperCase() ?? "") || ["FAILURE", "ERROR"].includes(check.state?.toUpperCase() ?? ""));
144
+ return pending ? "Pending" : failed ? "Failure" : "Success";
145
+ }), Effect.mapError((error) => ProcessError.make({
146
+ message: "gh pr checks",
147
+ detail: `invalid checks JSON: ${String(error)}`
148
+ })));
149
+ const output = (result) => result.stdout.join("\n").trim();
150
+ export const makeGitHubTool = (process, workDir, events) => {
151
+ const run = (args, allowFailure = false) => process.run(["gh", ...args], workDir, {}).pipe(Effect.mapError((error) => ProcessError.make({
152
+ message: `gh ${args.join(" ")}`,
153
+ detail: error.message
154
+ })), Effect.flatMap((result) => result.exitCode === 0 || allowFailure
155
+ ? Effect.succeed(result)
156
+ : Effect.fail(ProcessError.make({
157
+ message: `gh ${args.join(" ")}`,
158
+ detail: [...result.stdout, ...result.stderr].join("\n").trim() ||
159
+ `exit code ${result.exitCode}`
160
+ }))));
161
+ const read = (operation, effect) => guarded(Capabilities.GhRead, operation, events, effect);
162
+ const write = (operation, effect) => guarded(Capabilities.GhWrite, operation, events, effect);
163
+ const findOpenPr = run(prViewArgs, true).pipe(Effect.map((result) => result.exitCode === 0
164
+ ? output(result)
165
+ .split(/\r?\n/)
166
+ .map(parsePullRequestUrl)
167
+ .find((item) => item !== undefined)
168
+ : undefined));
169
+ return {
170
+ createPr: (title, body, base, draft = false) => write("gh pr create", Effect.flatMap(findOpenPr, (existing) => existing === undefined
171
+ ? run(prCreateArgs(title, body, base, draft)).pipe(Effect.flatMap((result) => {
172
+ const pr = output(result)
173
+ .split(/\r?\n/)
174
+ .map(parsePullRequestUrl)
175
+ .find((item) => item !== undefined);
176
+ return pr === undefined
177
+ ? Effect.fail(ProcessError.make({
178
+ message: "gh pr create",
179
+ detail: `could not parse a PR URL from: ${output(result)}`
180
+ }))
181
+ : Effect.succeed(pr);
182
+ }))
183
+ : Effect.succeed(existing))),
184
+ readIssue: (ref) => read("gh issue view", run(issueViewArgs(ref)).pipe(Effect.flatMap((result) => parseIssue(output(result))))),
185
+ writeIssueComment: (ref, body) => write("gh issue comment", run(issueCommentArgs(ref, body)).pipe(Effect.asVoid)),
186
+ writePrComment: (pr, body) => write("gh pr comment", run(prCommentArgs(pr, body)).pipe(Effect.asVoid)),
187
+ updatePr: (pr, title, body) => write("gh pr edit", run(prPatchArgs(pr, title, body)).pipe(Effect.asVoid)),
188
+ prChecks: (pr) => read("gh pr checks", run(prChecksArgs(pr)).pipe(Effect.flatMap((result) => outcomeFromChecksJson(output(result)))))
189
+ };
190
+ };
191
+ //# sourceMappingURL=GitHubTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubTool.js","sourceRoot":"","sources":["../src/GitHubTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import type { ProcessExecutorShape } from "@llm4ts/core/ProcessExecutor";
4
+ import { type FlowError } from "./FlowError.ts";
5
+ import type { FlowEventsShape } from "./FlowEvents.ts";
6
+ declare const BranchCreated_base: Schema.Class<BranchCreated, Schema.TaggedStruct<"Created", {}>, {}>;
7
+ export declare class BranchCreated extends BranchCreated_base {
8
+ }
9
+ declare const BranchAlreadyExists_base: Schema.Class<BranchAlreadyExists, Schema.TaggedStruct<"AlreadyExists", {}>, {}>;
10
+ export declare class BranchAlreadyExists extends BranchAlreadyExists_base {
11
+ }
12
+ export declare const CreateBranch: Schema.Union<readonly [typeof BranchCreated, typeof BranchAlreadyExists]>;
13
+ export type CreateBranch = typeof CreateBranch.Type;
14
+ declare const Committed_base: Schema.Class<Committed, Schema.TaggedStruct<"Committed", {}>, {}>;
15
+ export declare class Committed extends Committed_base {
16
+ }
17
+ declare const NothingToCommit_base: Schema.Class<NothingToCommit, Schema.TaggedStruct<"NothingToCommit", {}>, {}>;
18
+ export declare class NothingToCommit extends NothingToCommit_base {
19
+ }
20
+ export declare const CommitResult: Schema.Union<readonly [typeof Committed, typeof NothingToCommit]>;
21
+ export type CommitResult = typeof CommitResult.Type;
22
+ export interface GitToolShape {
23
+ readonly init: Effect.Effect<void, FlowError>;
24
+ readonly initBare: Effect.Effect<void, FlowError>;
25
+ readonly config: (key: string, value: string) => Effect.Effect<void, FlowError>;
26
+ readonly status: Effect.Effect<string, FlowError>;
27
+ readonly currentBranch: Effect.Effect<string, FlowError>;
28
+ readonly diff: Effect.Effect<string, FlowError>;
29
+ readonly diffAll: Effect.Effect<string, FlowError>;
30
+ readonly defaultBase: Effect.Effect<string, FlowError>;
31
+ readonly diffVsBase: (base: string, threeDot?: boolean) => Effect.Effect<string, FlowError>;
32
+ readonly changedFilesVsBase: (base: string, threeDot?: boolean) => Effect.Effect<ReadonlyArray<string>, FlowError>;
33
+ readonly addRemote: (name: string, url: string) => Effect.Effect<void, FlowError>;
34
+ readonly checkout: (name: string) => Effect.Effect<void, FlowError>;
35
+ readonly checkoutOrCreate: (name: string) => Effect.Effect<void, FlowError>;
36
+ readonly createBranch: (name: string) => Effect.Effect<CreateBranch, FlowError>;
37
+ readonly commitAll: (message: string) => Effect.Effect<CommitResult, FlowError>;
38
+ readonly push: (remote: string, branch: string) => Effect.Effect<void, FlowError>;
39
+ readonly checkpoint: Effect.Effect<string, FlowError>;
40
+ readonly rollback: (checkpoint: string) => Effect.Effect<void, FlowError>;
41
+ readonly addWorktree: (path: string, branch: string) => Effect.Effect<void, FlowError>;
42
+ readonly removeWorktree: (path: string) => Effect.Effect<void, FlowError>;
43
+ }
44
+ export declare const makeGitTool: (process: ProcessExecutorShape, workDir: string, events: FlowEventsShape) => GitToolShape;
45
+ export {};
46
+ //# sourceMappingURL=GitTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitTool.d.ts","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import { Capabilities } from "@llm4ts/core/Capability";
4
+ import { ProcessError } from "./FlowError.js";
5
+ import { guarded } from "./CapabilityGuard.js";
6
+ export class BranchCreated extends Schema.TaggedClass()("Created", {}) {
7
+ }
8
+ export class BranchAlreadyExists extends Schema.TaggedClass()("AlreadyExists", {}) {
9
+ }
10
+ export const CreateBranch = Schema.Union([BranchCreated, BranchAlreadyExists]);
11
+ export class Committed extends Schema.TaggedClass()("Committed", {}) {
12
+ }
13
+ export class NothingToCommit extends Schema.TaggedClass()("NothingToCommit", {}) {
14
+ }
15
+ export const CommitResult = Schema.Union([Committed, NothingToCommit]);
16
+ const nonInteractiveEnvironment = Object.freeze({
17
+ GIT_TERMINAL_PROMPT: "0",
18
+ GIT_SSH_COMMAND: "ssh -o BatchMode=yes"
19
+ });
20
+ const text = (lines) => lines.join("\n").trim();
21
+ const problem = (result) => {
22
+ const detail = text([...result.stdout, ...result.stderr]);
23
+ return detail.length === 0 ? `process exited with code ${result.exitCode}` : detail;
24
+ };
25
+ export const makeGitTool = (process, workDir, events) => {
26
+ const run = (args) => process.run(["git", ...args], workDir, nonInteractiveEnvironment).pipe(Effect.mapError((error) => ProcessError.make({
27
+ message: `git ${args.join(" ")}`,
28
+ detail: error.message
29
+ })));
30
+ const runOrFail = (args) => Effect.flatMap(run(args), (result) => result.exitCode === 0
31
+ ? Effect.succeed(text(result.stdout))
32
+ : Effect.fail(ProcessError.make({
33
+ message: `git ${args.join(" ")}`,
34
+ detail: problem(result)
35
+ })));
36
+ const gate = (capability, operation, effect) => guarded(capability, operation, events, effect);
37
+ const write = (operation, effect) => gate(Capabilities.GitWrite, operation, effect);
38
+ const read = (operation, effect) => gate(Capabilities.GitRead, operation, effect);
39
+ const createBranch = (name) => write("git checkout -b", Effect.flatMap(run(["checkout", "-b", name]), (result) => result.exitCode === 0
40
+ ? Effect.succeed(new BranchCreated())
41
+ : text(result.stderr).includes("already exists")
42
+ ? Effect.succeed(new BranchAlreadyExists())
43
+ : Effect.fail(ProcessError.make({
44
+ message: `git checkout -b ${name}`,
45
+ detail: problem(result)
46
+ }))));
47
+ const checkout = (name) => write("git checkout", runOrFail(["checkout", name]).pipe(Effect.asVoid));
48
+ const addAll = runOrFail(["add", "-A"]).pipe(Effect.asVoid);
49
+ const commitAllEffect = (message) => Effect.gen(function* () {
50
+ yield* addAll;
51
+ const result = yield* run(["commit", "-m", message]);
52
+ if (result.exitCode === 0) {
53
+ return new Committed();
54
+ }
55
+ if (problem(result).includes("nothing to commit")) {
56
+ return new NothingToCommit();
57
+ }
58
+ return yield* ProcessError.make({
59
+ message: "git commit",
60
+ detail: problem(result)
61
+ });
62
+ });
63
+ return {
64
+ init: write("git init", runOrFail(["-c", "init.defaultBranch=main", "init"]).pipe(Effect.asVoid)),
65
+ initBare: write("git init --bare", runOrFail(["-c", "init.defaultBranch=main", "init", "--bare"]).pipe(Effect.asVoid)),
66
+ config: (key, value) => write("git config", runOrFail(["config", key, value]).pipe(Effect.asVoid)),
67
+ status: read("git status", runOrFail(["status", "--short"])),
68
+ currentBranch: read("git currentBranch", runOrFail(["rev-parse", "--abbrev-ref", "HEAD"])),
69
+ diff: read("git diff", runOrFail(["diff"])),
70
+ diffAll: read("git diffAll", runOrFail(["add", "--intent-to-add", "-A"]).pipe(Effect.andThen(runOrFail(["diff"])))),
71
+ defaultBase: read("git defaultBase", Effect.flatMap(run(["symbolic-ref", "refs/remotes/origin/HEAD"]), (symbolic) => {
72
+ const value = text(symbolic.stdout);
73
+ if (symbolic.exitCode === 0 && value.length > 0) {
74
+ return Effect.succeed(value.replace(/^refs\/remotes\//, ""));
75
+ }
76
+ return Effect.flatMap(run(["rev-parse", "--verify", "--quiet", "origin/main"]), (main) => main.exitCode === 0
77
+ ? Effect.succeed("origin/main")
78
+ : run(["rev-parse", "--verify", "--quiet", "origin/master"]).pipe(Effect.map((master) => (master.exitCode === 0 ? "origin/master" : "main"))));
79
+ })),
80
+ diffVsBase: (base, threeDot = true) => read("git diffVsBase", runOrFail(["diff", `${base}${threeDot ? "..." : ".."}HEAD`])),
81
+ changedFilesVsBase: (base, threeDot = true) => read("git changedFilesVsBase", runOrFail(["diff", "--name-only", `${base}${threeDot ? "..." : ".."}HEAD`]).pipe(Effect.map((output) => output
82
+ .split(/\r?\n/)
83
+ .map((line) => line.trim())
84
+ .filter((line) => line.length > 0)))),
85
+ addRemote: (name, url) => write("git addRemote", runOrFail(["remote", "add", name, url]).pipe(Effect.asVoid)),
86
+ checkout,
87
+ createBranch,
88
+ checkoutOrCreate: (name) => Effect.flatMap(createBranch(name), (created) => created._tag === "Created" ? Effect.void : checkout(name)),
89
+ commitAll: (message) => write("git commitAll", commitAllEffect(message)),
90
+ push: (remote, branch) => gate(Capabilities.GitPush, "git push", runOrFail(["push", "-u", remote, branch]).pipe(Effect.asVoid)),
91
+ checkpoint: read("git checkpoint", runOrFail(["rev-parse", "HEAD"])),
92
+ rollback: (checkpoint) => write("git rollback", runOrFail(["reset", "--hard", checkpoint]).pipe(Effect.asVoid)),
93
+ addWorktree: (path, branch) => write("git worktree add", runOrFail(["worktree", "add", path, branch]).pipe(Effect.asVoid)),
94
+ removeWorktree: (path) => write("git worktree remove", runOrFail(["worktree", "remove", path]).pipe(Effect.asVoid))
95
+ };
96
+ };
97
+ //# sourceMappingURL=GitTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitTool.js","sourceRoot":"","sources":["../src/GitTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import type { FlowError } from "./FlowError.ts";
4
+ export interface InteractionShape {
5
+ readonly ask: (question: string) => Effect.Effect<string, FlowError>;
6
+ }
7
+ declare const ApprovalAllowed_base: Schema.Class<ApprovalAllowed, Schema.TaggedStruct<"Allow", {}>, {}>;
8
+ export declare class ApprovalAllowed extends ApprovalAllowed_base {
9
+ }
10
+ declare const ApprovalDenied_base: Schema.Class<ApprovalDenied, Schema.TaggedStruct<"Deny", {
11
+ readonly reason: Schema.String;
12
+ }>, {}>;
13
+ export declare class ApprovalDenied extends ApprovalDenied_base {
14
+ }
15
+ export declare const ApprovalDecision: Schema.Union<readonly [typeof ApprovalAllowed, typeof ApprovalDenied]>;
16
+ export type ApprovalDecision = typeof ApprovalDecision.Type;
17
+ export interface ApprovalPolicy {
18
+ readonly decide: (toolName: string, input: Schema.Json) => Effect.Effect<ApprovalDecision, FlowError>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=Interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interaction.d.ts","sourceRoot":"","sources":["../src/Interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACrE;;AAED,qBAAa,eAAgB,SAAQ,oBAAkD;CAAG;;;;AAE1F,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,gBAAgB,wEAAkD,CAAA;AAC/E,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,IAAI,KACf,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;CAChD"}
@@ -0,0 +1,9 @@
1
+ import * as Schema from "effect/Schema";
2
+ export class ApprovalAllowed extends Schema.TaggedClass()("Allow", {}) {
3
+ }
4
+ export class ApprovalDenied extends Schema.TaggedClass()("Deny", {
5
+ reason: Schema.String
6
+ }) {
7
+ }
8
+ export const ApprovalDecision = Schema.Union([ApprovalAllowed, ApprovalDenied]);
9
+ //# sourceMappingURL=Interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interaction.js","sourceRoot":"","sources":["../src/Interaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAOvC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;CAAG;AAE1F,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,MAAM,EAAE;IAC/E,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import type { FlowError } from "./FlowError.ts";
4
+ import { type ApprovalPolicy, type InteractionShape } from "./Interaction.ts";
5
+ export interface McpTool {
6
+ readonly name: string;
7
+ readonly description: string;
8
+ readonly inputSchema: Schema.Json;
9
+ readonly call: (arguments_: Schema.Json) => Effect.Effect<string, FlowError>;
10
+ }
11
+ export declare const McpProtocolVersion = "2025-06-18";
12
+ export declare const McpServerName = "llm4ts";
13
+ export declare const McpServerVersion = "1.0";
14
+ export declare const askUserTool: (interaction: InteractionShape) => McpTool;
15
+ export declare const approvalTool: (policy: ApprovalPolicy) => McpTool;
16
+ export declare const handleMcpRequest: (request: Schema.Json, tools: readonly McpTool[]) => Effect.Effect<Schema.Json | undefined, never, never>;
17
+ export declare const handleMcpLine: (line: string, tools: ReadonlyArray<McpTool>) => Effect.Effect<string | undefined>;
18
+ //# sourceMappingURL=McpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.d.ts","sourceRoot":"","sources":["../src/McpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE9F,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAC7E;AAED,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAC9C,eAAO,MAAM,aAAa,WAAW,CAAA;AACrC,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AAkCrC,eAAO,MAAM,WAAW,GAAI,aAAa,gBAAgB,KAAG,OAe1D,CAAA;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,cAAc,KAAG,OA0BpD,CAAA;AAuCF,eAAO,MAAM,gBAAgB,2GAkB3B,CAAA;AAQF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,OAAO,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAQlC,CAAA"}
@@ -0,0 +1,122 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import { ApprovalAllowed } from "./Interaction.js";
4
+ export const McpProtocolVersion = "2025-06-18";
5
+ export const McpServerName = "llm4ts";
6
+ export const McpServerVersion = "1.0";
7
+ const objectField = (value, name) => {
8
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
9
+ return undefined;
10
+ }
11
+ const field = Reflect.get(value, name);
12
+ return Schema.is(Schema.Json)(field) ? field : undefined;
13
+ };
14
+ const stringField = (value, name) => {
15
+ const field = objectField(value, name);
16
+ return typeof field === "string" ? field : undefined;
17
+ };
18
+ const params = (request) => objectField(request, "params") ?? {};
19
+ const result = (id, value) => ({
20
+ jsonrpc: "2.0",
21
+ id,
22
+ result: value
23
+ });
24
+ const error = (id, code, message) => ({
25
+ jsonrpc: "2.0",
26
+ id,
27
+ error: { code, message }
28
+ });
29
+ const toolContent = (text, isError) => ({
30
+ content: [{ type: "text", text }],
31
+ isError
32
+ });
33
+ export const askUserTool = (interaction) => ({
34
+ name: "ask_user",
35
+ description: "Ask the human operator a question and wait for their answer. Use when a decision or clarification is required.",
36
+ inputSchema: {
37
+ type: "object",
38
+ properties: {
39
+ question: {
40
+ type: "string",
41
+ description: "The question to put to the human operator."
42
+ }
43
+ },
44
+ required: ["question"]
45
+ },
46
+ call: (arguments_) => interaction.ask(stringField(arguments_, "question") ?? "")
47
+ });
48
+ export const approvalTool = (policy) => ({
49
+ name: "approve",
50
+ description: "Decide whether the agent may run a pending tool call and return its permission verdict.",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ tool_name: { type: "string" },
55
+ input: { type: "object" }
56
+ },
57
+ required: ["tool_name"]
58
+ },
59
+ call: (arguments_) => {
60
+ const input = objectField(arguments_, "input") ?? {};
61
+ return policy
62
+ .decide(stringField(arguments_, "tool_name") ?? "", input)
63
+ .pipe(Effect.map((decision) => JSON.stringify(decision instanceof ApprovalAllowed
64
+ ? { behavior: "allow", updatedInput: input }
65
+ : { behavior: "deny", message: decision.reason })));
66
+ }
67
+ });
68
+ const initializeResult = (request) => ({
69
+ protocolVersion: stringField(params(request), "protocolVersion") ?? McpProtocolVersion,
70
+ capabilities: { tools: {} },
71
+ serverInfo: {
72
+ name: McpServerName,
73
+ version: McpServerVersion
74
+ }
75
+ });
76
+ const toolsListResult = (tools) => ({
77
+ tools: tools.map((tool) => ({
78
+ name: tool.name,
79
+ description: tool.description,
80
+ inputSchema: tool.inputSchema
81
+ }))
82
+ });
83
+ const toolsCall = (id, request, tools) => {
84
+ const requestParams = params(request);
85
+ const name = stringField(requestParams, "name") ?? "";
86
+ const tool = tools.find((candidate) => candidate.name === name);
87
+ if (tool === undefined) {
88
+ return Effect.succeed(error(id, -32602, `unknown tool: ${name}`));
89
+ }
90
+ return Effect.result(tool.call(objectField(requestParams, "arguments") ?? {})).pipe(Effect.map((outcome) => outcome._tag === "Success"
91
+ ? result(id, toolContent(outcome.success, false))
92
+ : result(id, toolContent(`tool '${name}' failed: ${outcome.failure.message}`, true))));
93
+ };
94
+ export const handleMcpRequest = Effect.fn("@llm4ts/flow/McpServer.handle")(function* (request, tools) {
95
+ const id = objectField(request, "id");
96
+ if (id === undefined) {
97
+ return undefined;
98
+ }
99
+ switch (stringField(request, "method") ?? "") {
100
+ case "initialize":
101
+ return result(id, initializeResult(request));
102
+ case "tools/list":
103
+ return result(id, toolsListResult(tools));
104
+ case "tools/call":
105
+ return yield* toolsCall(id, request, tools);
106
+ default:
107
+ return error(id, -32601, `method not found: ${stringField(request, "method") ?? ""}`);
108
+ }
109
+ });
110
+ const parseError = () => ({
111
+ jsonrpc: "2.0",
112
+ id: null,
113
+ error: { code: -32700, message: "Parse error" }
114
+ });
115
+ export const handleMcpLine = (line, tools) => {
116
+ const parsed = Schema.decodeUnknownOption(Schema.fromJsonString(Schema.Json))(line);
117
+ if (parsed._tag === "None") {
118
+ return Effect.succeed(JSON.stringify(parseError()));
119
+ }
120
+ return handleMcpRequest(parsed.value, tools).pipe(Effect.map((response) => (response === undefined ? undefined : JSON.stringify(response))));
121
+ };
122
+ //# sourceMappingURL=McpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../src/McpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type FlowEvent } from "./FlowEvents.ts";
2
+ import type { TraceLine } from "./FlowRecorder.ts";
3
+ export declare const renderMermaid: (events: ReadonlyArray<FlowEvent>) => string;
4
+ export declare const renderMermaidTrace: (lines: ReadonlyArray<TraceLine>) => string;
5
+ export declare const mermaidLiveUrl: (diagram: string) => string;
6
+ export declare const mermaidDocument: (diagram: string) => string;
7
+ //# sourceMappingURL=Mermaid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mermaid.d.ts","sourceRoot":"","sources":["../src/Mermaid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAIlD,eAAO,MAAM,aAAa,GAAI,QAAQ,aAAa,CAAC,SAAS,CAAC,KAAG,MA6BhE,CAAA;AA2CD,eAAO,MAAM,kBAAkB,GAAI,OAAO,aAAa,CAAC,SAAS,CAAC,KAAG,MAMlE,CAAA;AAwBH,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,MACA,CAAA;AAEjD,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MAC0C,CAAA"}